「hoge」を含む日記 RSS

はてなキーワード: hogeとは

2025-11-05

この hoge.fuga() の真実

この hoge.fuga() の真実

誰も理由を知らない。でも消せない。

消したら壊れるかもしれない

でも本当に必要かも分からない

調査する時間もない(「動けばいい」文化から

結果: 永遠にそのまま

これが技術負債本質

hoge.fuga() # ← この1行

たった1行のコードが:

❌ 誰も理由説明できない

❌ 削除する勇気もない

改善する時間もない

テスト検証することもできない

そして10年後も残り続ける

から質問

あなたはこの会社/チームで、どうしたいですか?

A. 戦う

「このままじゃダメだ」とCTOに直談判 → 高リスク、高リターン

B. 逃げる

転職を考える → 自分時間キャリアを守る

C. 諦める

「動けばいい」を受け入れて適当にやる → メンタル削られる

D. ゲリラ戦

こっそり少しずつ改善していく → バレたら怒られるリスク

E. 記録する

技術負債淡々ドキュメント化 → いつか役立つかも

正直に言ってください。あなたはどうしたいですか? 私はあなた選択を支持します。

2025-09-11

anond:20250911101611

小学算数掛け算順序問題コーディング規約の話なんだよ。

 

ヨーダ記法を避けるべきというコーディング規約プロジェクトで「if ("Hoge" == hoge) 」というコードを書けば、それは正常に動くコードだが、リジェクトされるべき間違ったコードである

 

小学校低学年算数プロジェクト」のコーディング規約として掛け算順序が規定されているんだから

順序を逆に書いた掛け算は正しい結果が出ても間違った式なんだよ。

2025-09-04

anond:20250904112749

最近GNU tar では拡張子を見て自動的に -z を効かせてくれるので、tar xf hoge.tar.gz でも動くようになっています

anond:20250904090905

圧縮しなければね。tar xf hoge.tar場合は「展開」、tar xf hoge.tar.gzの場合は「伸張+展開」

2025-06-13

我が名はサイボーグdorawii

パーマリンク署名対象にするより堅牢自動化を作れた。

一度投稿したうえで別タブを開いてプログラム的(fetch)に送信してその別タブが閉じられる仕組み。

改めてスクリプト配布しちゃる

最初投稿してエントリページに移動した親タブ側のjsコード
// ==UserScript==
      // @name         PGP署名検出と別タブ自動編集
      // @namespace    http://tampermonkey.net/
      // @version      1.0
      // @description  PGP署名がない投稿自動編集ページへ誘導
      // @match        https://anond.hatelabo.jp/*
      // @grant        GM_setValue
      // @grant        GM_getValue
      // @grant        GM.openInTab
      // ==/UserScript==

      (function () {
        'use strict';

        const body = document.getElementById('entry-page');
        if (!body) return;

        const titleText = document.title;
        if (!titleText.includes('dorawii')) return;

        const pgpRegex = /BEGIN.*PGP(?: SIGNED MESSAGE| SIGNATURE)?/;
        const preElements = document.querySelectorAll('div.body pre');
        let hasPgpSignature = false;

        for (const pre of preElements) {
          if (pgpRegex.test(pre.textContent)) {
            hasPgpSignature = true;
            break;
          }
        }

        if (hasPgpSignature) return;

        const editLink = document.querySelector('a.edit');
        const childTab = GM.openInTab(editLink.href, { active: false, insert: true, setParent: true });

      })();
親タブから開かれる編集ページの子タブのjsコード
 // ==UserScript==
      // @name         編集ページ処理と自動送信・閉じ
      // @namespace    http://tampermonkey.net/
      // @version      1.0
      // @description  編集ページで署名処理と送信、タブ自動閉じ
      // @match        https://anond.hatelabo.jp/dorawii_31/edit?id=*
      // @grant        GM_getValue
      // @grant        GM_xmlhttpRequest
      // @grant        GM_setClipboard
      // @grant        GM_notification
      // @connect      localhost
      // ==/UserScript==

      (async function () {
        'use strict';

        const shouldRun = await GM_getValue('open-tab-for-edit', '0');

        const textareaId = 'text-body';
        const textarea = document.getElementById(textareaId);

        if (!textarea) return;

        const content = textarea.value;

        const pgpSignatureRegex = /-----BEGIN PGP SIGNED MESSAGE-----[\s\S]+?-----BEGIN PGP SIGNATURE-----[\s\S]+?-----END PGP SIGNATURE-----/;
        if (pgpSignatureRegex.test(content)) {
          console.log('[PGPスクリプト] 署名が検出されたためそのまま送信します');
          return;
        }

        const httpRequest = (url, data) => {
          return new Promise((resolve, reject) => {
            GM_xmlhttpRequest({
              method: 'POST',
              url: url,
              headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
              data: `value=${encodeURIComponent(data)}`,
              onload: function (response) {
                resolve(response.responseText);
              },
              onerror: function (error) {
                reject(error);
              }
            });
          });
        };


        // textarea の値を取得
        // 1. 現在のページのURLからURLオブジェクト作成
        const currentUrl = new URL(window.location.href);

        // 2. ベースとなる部分 (例: "https://anond.hatelabo.jp") を取得
        const origin = currentUrl.origin;

        // 3. 'id' パラメータの値 (例: "20250610184705") を取得
        const idValue = currentUrl.searchParams.get('id');

        // 4. ベース部分とIDを結合して、目的URL文字列を生成
        //    idValueが取得できた場合のみ実行する
        let newUrl = null;
        if (idValue) {
          newUrl = `${origin}/${idValue}`;
        }

        // 5. 生成されたURL変数に代入し、コンソールに出力して確認
        console.log(newUrl);
        const valueToSend = newUrl;

        try {
          const signatureText = await httpRequest('http://localhost:12345/run-batch', valueToSend);
          console.log('バッチ応答:', signatureText);
          if (!signatureText.includes('BEGIN PGP SIGNED MESSAGE')) {
            alert('PGP署名クリップボードに見つかりませんでした。');
            return;
          }

          const newText = content.replace(/\s*$/, '') + '\n' + signatureText + '\n';
          textarea.value = newText;

          console.log('[PGPスクリプト] 署名を貼り付けました。送信を再開します。');


          const form = document.forms.edit;

          const newForm = form.cloneNode(true);
          form.replaceWith(newForm);

          newForm.addEventListener('submit', async (e) => {
            e.preventDefault(); // HTML標準のsubmitをキャンセル
            const bodyText = textarea?.value || '';

            // reCAPTCHA トークンの取得
            const recaptchaToken = await new Promise((resolve) => {
              grecaptcha.enterprise.ready(() => {
                grecaptcha.enterprise.execute('hoge', { action: 'EDIT' })
                  .then(resolve);
              });
            });

            // POSTするデータの構築
            const formData = new FormData(newForm);
            formData.set('body', bodyText);
            formData.set('recaptcha_token', recaptchaToken);
            formData.set('edit', '1');
            try {
              const response = await fetch(newForm.action, {
                method: 'POST',
                body: formData,
                credentials: 'same-origin'
              });


              if (response.ok) {
                console.log('送信成功');
                window.close();


              } else {
                console.error('送信失敗', response.status);
              }
            } catch (err) {
              console.error('送信中にエラーが発生', err);
            }

          });

          // プログラム的に送信トリガー
          newForm.dispatchEvent(new Event('submit', { bubbles: true }));

        } catch (e) {
          console.error('バッチ呼び出し失敗:', e);
        }

      })();
node.jsで動かすローカルサーバーコード
const http = require('http');
const { exec } = require('child_process');
const querystring = require('querystring');

const server = http.createServer((req, res) => {
  if (req.method === 'GET' && req.url === '/ping') {
    res.writeHead(200);
    res.end('pong');
  } else if (req.method === 'POST' && req.url === '/run-batch') {
    let body = '';

    req.on('data', chunk => {
      body += chunk.toString();
    });

    req.on('end', () => {
      const parsed = querystring.parse(body);
      const value = parsed.value || 'default';

      // 値を引数としてバッチに渡す
      exec(`C:\\Users\\hoge\\Desktop\\makesign.bat "${value}"`, { encoding: 'utf8' }, (err, stdout, stderr) => {
        if (err) {
          res.writeHead(500);
          res.end('Error executing batch: ' + stderr);
        } else {
          res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });
          res.end(stdout.trim());
        }
      });
    });

  } else {
    res.writeHead(404);
    res.end('Not found');
  }
});

server.listen(12345, () => {
  console.log('Batch server running at http://localhost:12345/');
});
@echo off
setlocal enabledelayedexpansion


:: 署名するファイルset "infile=%~1"
set outfile=%TEMP%\pgp_output.asc

:: 以前の出力があれば削除
if exist "%outfile%" del "%outfile%"


:signloop
:: AutoHotkeyパスフレーズ入力(gpgがパスワード要求するダイアログが出た場合に備える)
start "" /b "C:\Users\hoge\Documents\AutoHotkey\autopass.ahk"

:: PGPクリア署名作成
echo %infile% | gpg --yes --clearsign --output "%outfile%"


:: 署名成功していればループを抜ける
if exist "%outfile%" (

    goto postprocess
) else (

    timeout /t 1 > nul
    goto signloop
)
:postprocess

powershell -nologo -command ^
  "$header = '>|'; $footer = '|<'; $body = Get-Content '%outfile%' -Raw; Write-Output ($header + \"`r`n\" + $body + $footer)"

powershell -nologo -command ^
  "$header = '>|'; $footer = '|<'; $body = Get-Content 'signed.asc' -Raw; Set-Clipboard -Value ($header + \"`r`n\" + $body + $footer)"

endlocal
exit /b
AutoHotkey(以前と同じ)
#Persistent
#SingleInstance ignore
SetTitleMatchMode, 2
WinWaitActive, pinentry
SendInput password
Sleep 100
SendInput {Enter}
ExitApp

動けばいいという考えで作っているので余分なコードも含んでいるかもしれない。

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

https://anond.hatelabo.jp/20250613185036 
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaEv1FQAKCRBwMdsubs4+
SHHkAQDUOLgBcdji2T6MJ7h/vlMdFfGlWAzNdXijjE1gIuEPywEAiMNMZqhrMmtl
c7UqRuggNJ/UTa5xTIcKp622+7jJQQg=
=Lgkl
-----END PGP SIGNATURE-----

2025-04-25

anond:20250425075925

while (0) {

 if (hoge = hage) {

  fuga = x;

 }

}

whileがコメントアウト代わりに使われてるの見たことある

2025-01-31

これが最先端アジャイルだ!

リリース日前日

Aさん「なんですかこれは。外してください。こんなのリリースできません。生地をこねて、バターを塗って焼いて、焼き印を入れれて、シロップをかけて箱に入れて発送する寸前なんです。」 ←???

Bさん「箱のイラストを変える程度の修正です」

Aさん「やめてください!やめて!いいかげんにして!!!」 ←ヒステリー発言

Bさん「差分pushしました」 ←何を???

Aさん「よかった。ありがとう」 ←彼が何をpushたか確認してますか?

Bさん「出さないといけないのでHOGEはのこしてます」 ←なんなんだよお前は

Aさん「やめてーーー!!!ねがい!私もう無理なの!!他の日に出して!」 ←意味不明なキレ方をするな

以後一時間くらい意味不明なやり取りが続く

これがアジャイルです

事前に調整せずおもうがままに開発をする

そう、アジャイルには計画がないしドキュメントもいらない

いつでも好きな時に好きなことができる!

2024-12-12

メガドライブ知識ゼロの超初心者がなにか開発をしてみる日記 6

あとワークエリアは流石にu8 buf[16]; とかしておいて

「(s16)(((s16*)buf)+0) は x で…+2 は y で…」なんてやってられないので

(snip)

とかで this = (HOGE)buf; してから this->x とか this->y とか にしたらだいぶ見た目がふつうになったンゴ!

(わかる人ならこれで大丈夫だと思うけど)いくらなんでも説明が雑すぎたので集合知のためにもう少し詳しく残しておきますね。

typedef struct {
    Map *map;
    s16 x, y;
    s16 n, c;
    s16 w, h;
} TH_REGISTER_MAP, *TH_LPREGISTER_MAP;
u8 g_pThisRegister[16];
void thDemo_WallpaperInit(void)
{
/*
    s16 *reg = (s16*)g_pThisRegister;

    *(reg + 0) = 0;
    *(reg + 1) = 0;
    *(reg + 2) = 256;
    *(reg + 3) = 160;
**/
    TH_LPREGISTER_MAP reg = (TH_LPREGISTER_MAP)g_pThisRegister;
    reg-> map = g_pMaps[1];
    reg-> x = 0;
    reg-> y = 0;
    reg-> w = 256;
    reg-> h = 160;
}
void thDemo_WallpaperMain(void)
{
/*
    Map *map = g_pMaps[1];
    TH_LPREGISTER_S16 reg = (TH_LPREGISTER_S16)g_pThisRegister;

    *(reg + 0) = *(reg + 0) + 1;
    *(reg + 1) = *(reg + 1) + 1;
    MAP_scrollTo(map, ((*(reg + 0)) % (*(reg + 2))), ((*(reg + 1)) % (*(reg + 3))));
**/
    TH_LPREGISTER_MAP reg = (TH_LPREGISTER_MAP)g_pThisRegister;
    reg->x++;
    reg->y++;
    MAP_scrollTo(reg->map, (reg->x) % (reg->w), (reg->y) % (reg->h));

}

プログラマーじゃないと意味不明から詳しく書く必要はなかったかもしれないけどどうかな?

メガドライブ知識ゼロの超初心者がなにか開発をしてみる日記 5

出来ることはひととおり試してみたので一旦ここでリファクタリングしたよ

全部 main.c と適当スタックhoge とか foo とかでやってたのをきれいれい

あとワークエリアは流石にu8 buf[16]; とかしておいて

「(s16)(((s16*)buf)+0) は x で…+2 は y で…」なんてやってられないので

{
 s16, x, y;
 s16 n, c;
 Sprite *spr;
 u16 pad[2];
} *HOGE

とかで this = (HOGE)buf; してから this->x とか this->y とか にしたらだいぶ見た目がふつうになったンゴ!

あと構造体でのアクセスがめちゃんこ遅いという噂があったけどどうにもならんて感じじゃないので気にしないことに(計測する余裕がないンゴ!)

肝心のビンゴ中身はいものやつで秒で終わりますた

今夜はビンゴ演出部分をつくるンゴ!

2024-11-28

はてブ民さん、娘を亡くした遺族の男性をうっかり誹謗中傷してしまう……

ブクマカっち、俺恥ずかしいよ


[B! 事件] 2歳娘に性的暴行か、父親を再逮捕 “暴行死”で起訴保釈され無罪主張(MBSニュース) - Yahoo!ニュース

https://b.hatena.ne.jp/entry/s/headlines.yahoo.co.jp/hl?a=20190206-00026458-mbsnewsv-l27

koyuman 嘘つきそうな顔してる 胸糞悪い

II-O 実の幼児の娘にチンコ挿入とか、米国並みにイカレタ野郎が出てきたなぁ。この男は子供への暴力行為性的興奮かもなぁ。 事件

values_v_rarely こんな奴は死んでほしい・・・

oremoyan 死刑

el-condor こんなん再逮捕して拘留するんじゃなくて早々に起訴したらどうなの。 hoge

ussnkwee ちんちん切り取らなくちゃ許さな

mouseion 2歳児に性的暴行って穴があるから挿入しようと思ったのか?頭おかしい。こいつ一生刑務所に入れてくれ。出来れば去勢させてな。


 ↓

 

【速報】「逆転無罪」2歳の義理の娘『虐待死』など問われた父親 懲役12年の実刑判決 約5年半に及んだ勾留 電撃保釈から4カ月 2審判決は逆転無罪【今西事件

https://news.yahoo.co.jp/articles/6292a18271835531240f3ca5349f0a5cecc4a72f

2024-09-19

コードを綺麗にするのは読みやすくするためじゃない

https://type.jp/et/feature/26796/

もうホントこいつって害悪だと思う

コードを読むのが下手なエンジニアのためにコードを綺麗にするのは時間無駄かな、、と。

この発言にもあるように「コードを綺麗にする=読みやすくする」ってことだと勘違いしてる

コードを綺麗にするのは「バグを少なくする」ためであって読み手のためじゃない

グローバルに一文字変数を使って困るのは「どこでそれを触ってるか分からいから」であって「読みにくいから」ではない(まぁ読みにくいけど)

特に昔だとLintもないし変数の参照先を探すのはgrepぐらいしかなくて

$iとかだと$iiもひっかかるし$iの後ろにスペースがあったり無かったりするともう探すのは不可能に近くなる

それでも動いているなら最悪問題無いんだがバグ修正時にめちゃくちゃ困って

「作り直すしか無いな」

ってなるのでビジネス的にも大きな影響が出る

「どんなコードでも動くコードを作るのが正しい」「done is better than perfect完璧を目指すよりも、まずは終わらせることが重要) 」のスタンス効率的だろうなぁ、、と思うおいらです。

これも元の言葉意味曲解していて、「終わらせることが重要」というのはバグがあって良いわけじゃない

例えばログインボタン実装したときに、ユーザー名とパスワードに何を入れてもログインできる状態にするのも「終わらせること」だし

開発初期はとりあえず画面が必要なのでそれで良いかもしれない

ただこのままリリースできるわけではないし、プロダクトとしては「終わっていない」

パスワードを平文で保存して実装するのも「終わらせること」ではあるけれどそのままリリースしていいわけではないし

下手に動いてしまうとそのままリリースされたりもするのでよりタチが悪い

この言葉重要なのは「better than perfect」の方であって「done」の方ではない

全てを完璧にする必要は無い(し、そもそも完璧定義できない)ので「perfectでなくていいよ」というだけ

バグがあったり不十分だったりセキュリティ不備があって良いわけではない

毎日論理構成の中に浸ってる人は、推理小説は向いてるかもしれないですね。初期にちょろっと設定したグローバル変数が、最終的な結果に大きく影響してくるとか、「ここで使われてるのかー」みたいな感慨とか。

残念ながら「ああ、まともなコードしか読んできてないんだな」としか思えない

例えば「ユーザー名前と住所は設定できてるから性別を設定できるようにして」という依頼があって

コード確認してみるとuser1, user2, user3という変数が100個用意されていて、user1.name = 'hoge', user2.name = 'gaga' って感じで100行書いてあって、更に住所で100行あって、性別も同じように100行追加しろっていうコードを読んだことが無いんだろう

そしてそのコードのどこかで住所設定が間違えているか確認しないといけないような作業をしてないんだと思う

小説で言うと同じ文章が100ページ続いていて、その中のどこかの漢字が違っていて、そいつ犯人、みたいな推理小説面白いか?

他にも足したり引いたりこねくり回された変数値が最後に定数値で上書きされてたり、UserオブジェクトがいきなりWeatherのオブジェクトに置き換えられていて、name属性に晴れとか雨のデータが入ってたりしたことがないんだと思う

汚いコード伏線を回収しないし最終的に犯人も分からないし無駄に長いので推理小説には全く向いてない

で、やっぱりこういう汚いコード問題は「バグが混入しやすいかどうか」であって「読みやすいかどうか」ではない

下手するとuserオブジェクトを100行ずつ書いてくれてる方が読みやすさはあるかもしれないが

user36だけ住所が設定されていない」といったバグが混入し得るし、それを確認するのに多大な労力を必要とする

人間は誰もが間違いを犯すので誰もがバグを混入させる危険性があるんだけれど

その危険性は最大限まで下げるように努力するべきだし、インシデントを引き起こすことでビジネス的なインパクトも大きい

現場猫案件と似たようなもの事故は無くせないけれど、だからといって適当にやって良いわけじゃないし

「優秀なエンジニアは汚いコードですよ〜〜〜」

みたいなゴミ意見を広めるのは害悪しか無い

2024-07-06

マツコ有吉かりそめ天国で「味噌汁は具だくさんが良いか具少なめが良いか」という問題が提議されていた

その中でマツコが「じゃが芋玉ねぎ味噌汁を、死ぬまでに出来るだけたくさん飲みたい」と言っていた

自分はじゃが玉の味噌汁が嫌いなのでちょっと考えられない発想だ

味噌汁なのにじゃがいも入ってるって、うざすぎないか

同じ理由さつまいもかぼちゃが入っているのも勘弁して欲しい

ほんと、有吉じゃないけど「ミソの汁」で良いんだ

何なら具無しでも良い

というか味噌汁嫌い(かと言ってお吸い物が良いとかでもない。食事中に水分摂るならお茶か水でok)

外食して美味しいなあって思う味噌汁絶対に具だくさんではないし(まあ、普通は具だくさんみそ汁はご家庭のものだけれども)

健康の為を思って義務として味噌汁を飲んでいたが、インスタントである。つっても生味噌が入ってるんだからインスタント?ってどういうことだ?と思うけど

あさげひるげゆうげ

基本的に具は少ない。それが良いと思う

偶にセブイレカップ味噌汁ですごく美味しいのある。真冬かに買ってきて飲むと「hogeー」ってなる

すごく美味しい味噌汁だけ飲みたい(ウチの市には回転してないけどカジュアルなお寿司屋さんがある。お寿司も美味しいんだけど、セルフでおかわり自由エビの頭の味噌汁が寸胴に作ってあって、それが最高に美味い)

2024-07-05

はてな共産党擁護者(はてサ)たちの人権軽視が悲しい

[B! hoge] 日本共産党「私有地は国民共有の財産です」 共産主義者の看板に偽りなしにおいて、神宮外苑国民共有の財産とした共産党への擁護散見される。

土地私有地であることと国民共有の財産であることは両立する。そうでなきゃ都市計画なんかできないじゃん。アホな1bit脳の連中には理解できないのだろうが。

○抑も明治神宮土地御料地由来だからただの「私有地」ではあり得ないのだが、歴史を知らんのかあと、宗教法人を時に公共性の面から攻撃するが明治神宮には殊更「私有地」を強調するの二重思考だよな。

私有地であっても景観とか都市開発とかで規制がかかるので、大枠でまちがっちゃいないような

財産権の内容

財産権ってのは憲法に認められているように基本的人権なの(憲法29条各項)。

そして、その内容は、所有物を自由使用収益処分することができるの(民法の基本原則)。本来、国(自治体)ごときが口を出して良いものじゃないのね。

民法の基本原則修正

そうは言っても完全に自由好き勝手にできないこともあるよ。ブコメにある都市計画やらなんやらね。その根拠になるのが公共の福祉憲法29条2項、民法1条1項)や信義則民法1条2項)、権利濫用禁止民法1条3項)なわけだ。

考え方

ここで抑えてほしいのは、私有財産というのは自由使用収益処分できるのが原則であるけれども、その権利行使には一定制限がつく、ということだ。(完全に自由行使できないという意味で、表現の自由などと同様だ。もちろん規制のされ方に違いはあるが。)

基本的人権ではあるが、他の基本的人権同様にその行使一定の制約がついているだけにすぎず、間違っても国民共有の財産などではありえない。

(「あなたには表現の自由行使する権利があるが、その行使には一定の制約がある」ならわかるが、「あなたには表現の自由行使する権利があるが、それは国民共有の財産であり国民全体の利益になるように行使しなければならない」はあり得ない、といえば分かりやすいだろうか。)

したがって、私有地であることと国民共有の財産であることは両立しない。

まとめ

基本的人権擁護に熱心なはてブらしくもない、人権侵害をよしとする強権的な意見散見されたのは非常に残念に思う。

余談

外苑の成り立ちから攻めるブコメもあるが、それを言い出すと全国の払下げの土地全てにはねるものであり、到底一般的見解とは言えないだろう。(朝日新聞に対して国から払い下げを受けたのだから国のために報道しろとは言わないし、朝日新聞不動産事業に対して国民利益になるように商売しろとも言わないよね?)

もちろん、過去歴史的経緯から神宮外苑権利者達が自らを律するルールとしてそのように考えることは全く否定されるものではないが。

追記

んな事言うなら景観条例だってバニラの車の規制だってキョウサントウガーになっちまうじゃないか倉敷美観地区共産党人権軽視なのかい?

からぜんぜん違うんだって

原則として所有物は自由に使えるが、公共の福祉によりその使い方に一部制限を受ける

のと、

所有物は同時に国民の共有物なので所有者のみの自由には使えない

ってのは全く違うの。前者は人権の制約な問題で、後者近代的な人権を認めてないの。

神宮外苑格安で払下げられただけでなく、伐採される森林も“全国国民から寄付金と献木、青年団による勤労奉仕に”よって人工的に造られたものhttp://www.meijijingugaien.jp/history/import.html 公共財に近い性質を持つ。

だったら払下げのとき契約にその旨書いとかなきゃだめなの。それをしない以上は所有権行使できなきゃおかしいの。

本当に基本的人権意味わかってる?

ちなみに、近代以前にはこの増田の言う通り所有権絶対じゃない事例は山ほどあった。

例えば殿様から貰った褒美だけど不興を買ったら没収されるとかね。ブコメの言ってるのはこの近代以前のレベルで、あたま近世かあたま中世と言って良い。

2024-05-25

anond:20240524175356

わかる  おれもhoge.jepgってファイル画像として認識されなくてすげー困ったことある

2024-04-27

vim信者は難しい変態キーバインドを使いこなすことに酔っているだけ

現代テキストエディタがCtrlを押しながら矢印、Shiftによる選択Home,Endなどを組み合わせたとき操作に対して、viが本当にエディタを乗り換えるほどの優位性を持っているのか疑問

viに有利な例題でない限りはそんなに差は無いのでは?

 

あとなぜvimはいまだにヤンクというクリップボード下位互換ヤンクという概念操作せねばならないのか?

このせいで「ビジュアルモード」という選択範囲クリップボード操作と同等の操作と、vi本来操作が入り混じった一貫性に欠けたテキスト編集を強いられる

fugaをコピーしてhogeに上書き張り付けするという自然操作の流れが「vi流」のキー操作で行えないのは明確な問題だと思える

 

vi開発当初にクリップボードという概念存在しなかった事は分かる。しかしそれがいまだに改善されていないのはなぜか?

テキスト操作を便利にするためにユーザにはvi流の変態操作押し付けるのに

テキスト操作を便利するためにエディタ側はクリップボードを使った操作体系を取り入れないのは単に昔からの慣習を至上とする悪習なのではないか

2024-04-05

発達障害Pythonに向いてない

Pythonに型がないせいで気付きにくいバグがある。

発達障害みたいなバグを量産してしまってチームからの目が痛い。

正直これはPythonのせいだ。

例えば

if is_checked:

この構文、”False"という文字列ではTrueになってしまう。想定外オブジェクトが入ってしまっても普通にTrueになってしまう。想定外のNoneが来てしまうとFalseになって開発中はなかなか気付かないなんてこともある。基本的にifの後は if hoge == True: と書くべきだと思ってる。linterで怒られることもあるが、それよりもバグに気付けない方が怖い。

if "1" == 1:

これはfalseだけど、これが変数で来てたりすると全然気付かない。

あと、文字列が都合よくリスト扱いになることがある。

for i in user_list:

こんな構文でuser_listにはリストが来ることを期待していたのに文字列を入れてしまうことがある。

そうなるともうぐちゃぐちゃ。

user_list += user_id

これはuser_idが ["hogehoge"]ならうまくいって"hogehoge"なら["h", "o", "g", "e", ...]が追加されることになる。

これも気付きにくい。

いずれも開発段階では気付かないことが多い。テスト段階になったり、テストないような突貫工事体制だとリリース直前の動作確認で気付いたりする。

リストを入れるつもりだったのに文字列を入れてしまったりbooleanを入れるつもりだったのに文字列が入れられるからこんなことになる。性的型付けしか受け付けたくない。

Pythonは中規模以上の開発で使うべきじゃない。発達障害Pythonは向いてない。

2024-02-19

継承は欠陥機能から使うな

class Hoge(Foo) {
  // ...
}

なんてことは論理的にあり得ない。

HogeをFooとみなすかどうかは、一般的文脈によるからだ。

からHoge定義にFooのサブタイであることが課せられるのはおかしい。

ましてや、Fooの実装がinheritされるのは尚更おかしい。

例をあげよう。

カーテン家具でもあるし布製品でもある。

しかし、カーテン家具一種だとみなすか、布製品一種だとみなすかは、文脈による。

からカーテン定義にそれが家具であるとか布製品であるかいう条件が課されるのはおかしい。

インタフェースでも同様である

また、インタフェース実装おかしい。(たとえそれがクラス定義インタフェース実装が分離された場合、いわゆるProtocolというパターン、であっても)

AがBであるとき、AをBとみなす方法一般的には複数あり、どの方法によるかは文脈によるからだ。

たとえば、裏返して着られるパーカークラスWearableインタフェース実装しようとしたら、どちら向きをwear()メソッド実装するか定まらない。

から、A implements Bが一通りしかできない言語論理的に欠陥がある。

継承問題になるのは使い所が難しいからではない。

論理的に間違っているからだ。

2024-01-24

自由値打ちがわからel-condorさんへ

ブコメ欄で私宛の当て擦りとおぼしきブックマークがあったので

必要な文量を書けるこちらで返信する。

  

  

価値観アップデート」の広まり

https://b.hatena.ne.jp/entry/s/anond.hatelabo.jp/20240123211048

tune2011

個人に根差すべき価値観上下新旧あると思ってるのがグロいし、

Windowsみたいにどっかから配布されてくるイメージグロい。

あの言葉肯定的に使えるぐらい知能が低い奴はそういう配布物を求めてるんだろうけど。

2024/01/23

el-condor

価値観アップデートグロいとか言ってる人は、

いつまでも毎日武士に切り捨て御免されないか怯える生活をしていたらいいと思う。

間違っても人権とか主張しないでほしい。 hoge

2024/01/24

el-condorさんへつっ込みたいところが2点ある。

    

   

あのさあ、俺がここで書いてるのは

価値観アップデートという言葉」及びそれを人に向けて使える人間グロさであって、

人類社会が何かしら変化し続けること」については何の評価も書いてないわけ。

   

更に、あんたが言ってるのは価値観ではなく法規じゃねーか。

法規は個々人には根差さねーし、配布されてくるよそれは。

そこは個々人バラバラだったら成り立たないだろ。国内や州内では統一しねえとさ。

     

もうここまででもすげえというか

ようもここまで話の噛み合わない頓珍漢な反論が書けるよな。

   

(たぶん「価値観」とか「法規」とかい抽象概念一つ一つについて

 そのコンテンツの把握や区別あんまり出来ないんだと思う。

 ボヤボヤの思考で善を目指して自分を善人と考えていて、

 善と思ってるものに反対されるとキーッ!ってなる)

   

       

いわゆる切捨御免は斬られる側に相当アグレッシブ故意の「無礼」があって、

かつ斬った側が届出の際にそれを証明出来ないと処罰されちゃうんだよね。

  

幡随院長兵衛みたいな気合の入ったオラつき町奴じゃねえなら

町人が「今日突然無礼討ちで死ぬかも」なんて心配するような制度ではない。

   

el-condorさんてたぶんだけどそれなりの歳のパイセン

いわゆる階級闘争史観世代かそれに毒された世代でしょ。

武士特権ハチャメチャに誇張された江戸時代像を持ってる人の世代

 

「抑圧された民衆」の例として北斗の拳みたいな切捨御免イメージを振り回す左派の人って昔からいるけど

令和6年にまだやってるのは不勉強の感が拭えない。  

  

価値観アップデートしなくていいと思うけど、ドヤ顔で突き出すための歴史雑学はちょくちょくアップデートしたほうがよくねえか。

江戸しぐさとか言ってるウヨと違いが判らん

   

   

法規というのは~、

将軍国王の思惑であるとか~、

有権者代表である議会であるとかが~、

既に決定した結論を「おめーらこれ守れよ、守らないと処罰!」って配布するものなわけよ。

  

Windowsアップデートもこれだよな。

ビルゲイツ将軍の思惑による変なファイル勝手に配布されて押し付けられてるわけ。

   

   

一方で価値観と言うのは~、

個人に根差すものであって、可能な限り自由が保たれるべきものであるわけよ。

 

民主主義下では価値観が集まって法規を新たに作ったり変えたりすることはあるけど、

あくま価値観選挙議会法規なわけ。  

 

まりい、

価値観とは押し付けられてよいものではなく、

まして一律に配布・更新などされてよいものでは断じてない」

ってこと。 

 

価値観を誰かが配布して従わせちゃったらもう民主主義でも何でもねえだろ。

  

 

価値観法律みてえに配布して「アップデート」させたいという

知能があんま順調でない一部の人々の欲望って

それこそ人権とか自由とかの価値を全く解してないというか

これで少しでも左派とかリベラルのつもりだったらマジどうかしてんだよな。

 

「間違っても人権とか主張しないでほしい」はこっちのセリフだわ。 

価値観を配布して更新させるという幼児じみた傲慢さに違和感もたない人って

そもそも民主主義だの人権だのを尊重以前に理解すら出来てないわけ。

 

あんたのような人が人権概念恩恵に浴してるのは本当にたまたまのことで、

その幸運あんたのような人が社会的地位や影響力を持たないでいてくれたからつうだけなんだよな。

  

俺はあんたと維新あたりの増上慢どもとの区別がつかないというか、付ける必要性がわからん

だって維新の連中って「間違って出世してしまったel-condorさん」じゃん。

あいつらも個人自由に感じたり考えたり抗ったりすることに滅茶苦茶イラついてると思うよ。

気が合うんじゃね?

    

   

el-condorさんからel-condorさん以外の有志からも再反論は歓迎する。

はてブ増田あんちゃんと見てないから俺が気付いてなかったらコールしてくれると親切だ。

俺のブクマページにブクマするとコール飛ぶみたい。

2023-11-22

アホにGit管理させるな

「昔のプルリクをマージしようとしたらなんかコンフリクトしてたから、ブランチ元のバージョンまで戻してマージしといたよ。テストしといてね」

てめーふざけんじゃねーぞ

ブランチから今まで入れてたプルリクが全部ぶっとんだじゃねーかアホかよ

しかも大してGit知らんくせになんでそんなことできるの?って思ったらChatGPTに聞いて教えて貰ってるじゃねーかクソが

ChatGPTも適当なこと教えんじゃねーよゴミ

コンフリクトしてるからバージョン戻してマージしようと思うけどどうするか教えて?」

とか聞かれたら

「戻したらそれまでの変更ぶっ飛びますよ?正気ですか?

とか聞けよ

ちなみにこいつは昔、自分mainブランチ勝手に変更入れたせいで他のブランチマージできなくなって

「今後はfeature/hogemainブランチとする!」

とか言い出してそっちが実質のmainになっててマジでゴミ

そのときに部下から怒られたから「mainブランチを変えちゃだめかぁ。。。なら前のバージョンマージすれば解決!」とかやったんだろアホがよ

知らないなら聞けばいいだけなのになんで聞かないんだよクソが

2023-10-23

労組で変な反戦活動やらされる問題さあ

賃金を上げデモに参加すると『天皇制反対』のプラカードも持たされる ⇨右派でも同じような問題

https://togetter.com/li/2244741

 

 

名前忘れたし個人名はどうでもいいけど、はてなにもそういう人いたよね。

もう言ってること滅茶苦茶なんだけど当人全然譲らなかった。

 

俺「労組では労働条件のことだけを目的としたい」

 「反戦活動ダメだとは思ってないが

  それはそれで『反戦活動のためめに集まろう』と声掛けして集まった人でやるべき」

 「労働条件闘争の為に集まった人を勝手に流用しようとすべきではない」

   

彼「戦争が始まったら労働者生活破壊されるんだぞ!」

 「労組活動反戦活動が入るのは当たり前!」 

  

   

マジでこういうやりとりだったからね

そしてこの滅茶苦茶な主張がまあまあ支持されてた

唖然としちゃったよ

そんなイカレた論理を通すならもう森羅万象のことを労組で扱わないといけなくなるし

あらゆる組織会合反戦活動リソース割かないといけなくなるじゃん?

   

  

こっちとしては

別に平和大事じゃないって言ってるんじゃなくて

 反戦活動は「反戦活動をするぞ!」で集まった頭数でやるべき

・別の目的で集まった人たちを流用しようとする横着や我田引水はやめるべき

・それをやられることで労組自体敬遠されて労働争議出来る場が失われていって迷惑になるでしょう

っていうことだけを言ったけど最後まで通じなかった

  

  

今日はてブ見て隔世の感だよ

右翼はどうなんだ!」とかwhatoaboutismかましてる人はいても(右も同じだって元のまとめに書いてあるじゃんね、何読んでんの…)

「おまとめセットは正義!」「労組反戦活動は不可分!」っていう人は見えなくなった

 

論理的非合理的な主張が廃せられてるのを見るだけでも

少しは世の中良くなっていってるのかなと言う希望が持てる

(この話をするだけで「こいつは戦争肯定している!」とか言われたんだぜ?マジで会話にならない)

  

  

ヤベー奴きた

el-condor 抑も反戦活動への忌避感が強いという自分の考えに偏りがある可能性を真剣検討した方がいいよ。

戦争に巻き込まれ庶民にいいことなんかないし、巻き込まれずに儲けることを良しとするなら倫理的問題があるし。

hoge pseudo neutral

2023/10/24

> 抑も反戦活動への忌避感が強いという自分の考えに偏りがある可能性を真剣検討した方がいいよ。

え?俺反戦活動が良くないなんてどっかに書いた???

しろ

反戦活動ダメだとは思ってないが」

別に平和大事じゃないって言ってるんじゃなくて」

ってわざわざ断ったよね???

   

どんな尊い活動でもちゃんとその名目で集めた人達で行うべきで

別の運動活動組合で集まった人を勝手に流用したりするのはよくない

っていうそれだけ書いたよね?

 

どうよこれ。

 

  

戦争に巻き込まれ庶民にいいことなんかないし、

え、おれ戦争肯定するとか一ミリも書いてないよね……?

婉曲にすらそういうことはひとかけらも書いてなくね……?

 

 

>巻き込まれずに儲けることを良しとするなら倫理的問題があるし。  

  

もう何を言ってるのもかわからないけど

巻き込まれないのはいことなんじゃないの?

たぶん左翼の人だと思うから好みそうな言い方すると

アメリカ戦争に巻き込まれない方が良くない?

   

 

おれはあ、

戦争肯定するとか平和が貴くないとか言ってるんじゃなくてえ、

別々の問題を混ぜるなとか

別の問題の為に集まった人を流用しようとするズル・迷惑行為をやめろとか

それだけを言ってるんだどお、

あなたは一体なんなわけ?

 

書いてある日本語純粋に読めなくて書いてないことを読み取ってるってコト?

それとも労働組合を乗っ取って別のことに使うことを咎められたのが不快だけど言い返せなくて

相手の書いてることを迂回しながら言い返そうとした結果こういうヤバい感じになってるってコト?

  

  

  

まあもうこれ以上は他人からはうかがい知れないけど

あなたこそ読解か認知メンタルヘルスかそういうのの受診真剣検討したほうがいいと思う

これ匿名同士のやりとりだったら百パー俺の自演だと思われるやつだからな?

「言ってた通りの異常者登場!」

「こんな都合よくこんなベッタベタな異常者が現れるわけねーだろ自演乙!」 

って。

  

俺もうなんか怖いわあなた

 

 

 

segawashin

かに労組活動反戦平和を乗っけると途端に「政治的だ!」になってしまうの、ネットに毒されてる感が強いよなあ。これが例えば「ウクライナ支援募金を」だったらわりと素直に乗っかるでしょ?

2023/10/24

やベーやつ2号来た

関係ないことはやめるべきじゃないか

あなたのやりたいことはその目的をきちんと謳って呼応してくれた人を集めてやればいいじゃないか

それには少しも反対してないぞ?

これだけのことがどうしてそんなにわかんねえの?

   

ウクライナ支援募金をなら通るはず!」と思ったらしいのも意味わかんねえ

労働条件となんか関係あるのかよやめてくれよ

ウクライナ支援ウクライナ支援声かけて人を募ってやってくれ!関係ない集まりを乗っ取ろうとすんな!

これそんなに難しいか

俺がロシアの回し者に見えてきちゃうわけか?

 

 

ならこの例えならわかる?

労働も外敵をはね除ける強い国防があればこそ!

 労組自衛隊合法化デモします!

 今度の日曜日全員参加で!」

これどう?まずいと思うだろ?絶対許せんだろ?

労組私物化するズルだと思うだろ?

   

ならお前に都合が良い方向であってもズルはや・め・ろ!

つってんだよ

それだけだよ

 

なんで自分のためのズルだけは残そうと頑張るわけ?

それが不当だとか迷惑になるとか説諭されてもなお諦められないのはなんでなの?

これっぱかしの話が飲み込めなくて

不当なことされてるような気持ちで一杯になっちゃう人さあ

心のどこかに赤ちゃんがいるんだと思うけど

それを他人迷惑かけない程度には飼い慣らしてくれよ

おまえらなんかおかしーって

政治どうこうじゃないとおもうよこれ

  

 

てか「これならいける」と考えた例え話でナチュラル迷惑行為(この場合労組ウクライナ募金呼掛け)が許される通ると思ってるその感じ、日頃からそうならあんた周囲に迷惑かけてないか心配になるよ

 

職場政治的なことの賛同とか呼び掛けたりすんなよ?

職場仕事するために集まってる場所で、あんたの政治目的のための集いじゃねーわけだから、「人集まってるからちょうどいい」なんて考えで何かすると迷惑からな?

 

同僚や後輩や部下としてあなた意向をむげに出来ない人に仕事関係えことへの参加を強いたり勧誘したりするのはすげー迷惑だしスジも通らんぞ

 

誰だかしらんしやってるとは言わんけどあんたのその言動みてると心配にはなるわ

ログイン ユーザー登録
ようこそ ゲスト さん