りょうじ

東京暮らし、子らの父で妻の夫。工学研究科情報工学専攻修士。職業プログラマー。 ゲーム好…

りょうじ

東京暮らし、子らの父で妻の夫。工学研究科情報工学専攻修士。職業プログラマー。 ゲーム好き、アニメ好きのはずが、最近はどちらにも時間を割り当てられない。

マガジン

  • プログラミング千夜一夜(コーディングナイト)

    プログラミングにまつわるあれこれの話をまとめます。

  • 技術メモ

  • プロメテウスの箱庭

    僕が考えるいろいろなことを、できるだけ残していくためのサンドボックス。 ここで燃やす小さな火があなたの何かを照らせたら、嬉しい。

  • ジョギング

  • モリア

    モリアのダンジョン改造記録。

最近の記事

while を単体テストする

興味深いポストを見た。曰く: 単体テストでテストできる対象は「評価できる値」で「比較できるもの」となるため、 while そのものをテストすることは難しい。(単体テストが `Assert.Equals` 的な(結果の)値の比較をするツールだという前提で) while 文の while は、単体で値を持つものではないからである。 ただ While 関数を実装することで間接的に確かめることはできそう。ざっくりとこんな感じ: While(b, S): void { while

    • 『ハケンアニメ!』辻村深月

      天才アニメ監督・王子千晴(おうじちはる)を支えるプロデューサー有科香屋子(ありしなかやこ)、辣腕プロデューサー行城理(ゆきしろおさむ)と気鋭の監督・斎藤瞳、観光課職員・宗森周平とアニメーター(原画)・並澤和奈(なみさわかずな)の組みあわせで綴られる3章がぐるっと円環をなして閉じるアニメ制作讃歌。このクール、覇権をとるのは王子監督の魔法少女「運命戦線リデルライト」か斎藤監督の「サウンドバック」か。 小心者で表面的にはおとなしく、しかし内心リア充どもめ! と攻撃的な3章の並澤の

      • 『赤い月の香り』千早茜

        怒りに駆られて赤い月を思い浮かべる朝倉満が、丘の上の森に住む物静かな調香師小川朔の屋敷で働くことになる。朔は匂いに敏感であらゆる香りをつくりだすことができる。かつてあった、そして今はない香りまでも。そんな彼に舞い込む色々な調香の依頼。依頼人たちがどのような想いで頼むのか、そして朔はなにを感じて請けるのか。朔を手伝う黒ずくめの城島、屋敷に住まう源じいさんとともに働きながら満が少しずつ自らを取り戻していく話。 静かに淡々と紡がれる言葉がしんとした森の中を感じさせるようで、この文

        • ラッチ──初期化は一回だけ

          関数に入ったとき、それが最初のときだけある処理をしたい。そんな要求がわりとある。 static bool initialized = false;if (!initialized) { // 初期化処理 initialized = true;}// 通常処理 これで十分目的は達しているのだけれど、まだコードがアセンブラで書かれていた古い時代に「自己書きかえ」という黒魔術があったという話がいまだに心に残っている。 前掲の疑似コードは(あまり意味はないけれど)次のように

        while を単体テストする

        マガジン

        • プログラミング千夜一夜(コーディングナイト)
          15本
        • 技術メモ
          72本
        • プロメテウスの箱庭
          150本
        • ジョギング
          7本
        • モリア
          5本
        • Diary 2020
          220本

        記事

          CS0579、属性の重複エラー

          クラスライブラリープロジェクトを作成してアプリケーションプロジェクトに参照を追加してビルドしたところ CS0579、属性が重複しているとエラーが出てビルドできなくなった。 System.Reflection.AssemblyVersionAttribute など、いや、バージョンはライブラリーとアプリケーションとで独立しているはずで重複とかおかしいでしょ? ネットを検索して情報をあさるも、重複した属性を変えようだとか必要ないものを生成しないよう設定しようだとか。 いやいや、

          CS0579、属性の重複エラー

          似たコード(ループ)の整理

          ざっくり以下のようなコードを組みたててから遠目に見ると、ほとんど同じだ、と気づく: if (packed){ var value = read(stream); while (count-- != 0) { yield return value; }}else{ while (count-- != 0) { yield return read(stream); }} 前半は先に読んだ値を count 回

          似たコード(ループ)の整理

          OpenMP でのループ途中脱出、是か非か

          結論:仕様 3.0 ではループ途中の中断は禁止されている。 つまりループ途中の break や throw によるループ脱出は不可。 #pragma omp parallel forfor (int i = 0; i < 1000000; ++i) { // no break nor throw (except catch it in this scope).} ループ本体で条件を都度確認して早期脱出する同僚コードを見て、それってダメだったよね? と朧げにあった記憶を再

          OpenMP でのループ途中脱出、是か非か

          他人に言えない失敗を積み重ねて「無難〜」なことしか言えなくなるんだなあ みつを

          他人に言えない失敗を積み重ねて「無難〜」なことしか言えなくなるんだなあ みつを

          「東京の台所」文章メモ

          https://digital.asahi.com/and/article/20220921/422524333/ 3行禁止 人は他人の長い文章を読もうとしない。無料ならなおさら。 書き出し命 書きだしで読者を掴む。読むと決めた時点でわかることを書かない。(私は、という主語を省くとか、〜について、など) 常套句注意 手垢にまみれた(👈)言い回しをやめる。 文末で最後の大勝負 とても素晴らしい記事でした、様のまとめ(感想文)をやめる。 記号をやめる 「!」「?」を文末

          「東京の台所」文章メモ

          今年ももう M/D か……

          一年で数回、「日付」と「経過日数の割合」がつりあう日があります。 それが 1/19、 3/15、 4/14、 8/13 の4日、直近では 4/14 です。 どういうことか。 もう少し噛みくだくと 4/14 は、年初 1/1 を一番目として一年間で 104 番目に当たります。(英語では day number と言うそう) 経過日数の割合 104/365 と日付表示の 4/14 それぞれを分数として見たとき、ほぼ一致する──そういう話です。 ※ およそ 0.2849315068

          今年ももう M/D か……

          あと何日?

          6、4、5、2、1の5つの数字に四則演算を挟んでどんな数字が作れるだろう? もちろん頭を働かせて色々試すのも楽しい。 けれどプログラマーだったらサラッと全通り、出してみたくなりますよね? 数字は固定なので変数は四則演算四つの4箇所。 つまり可能な組み合わせは4の4乗。256通りの数字が作れます。 こういうときは Python を使うのが便利。 四則演算4つの組み合わせは以下でサクッと作れます: itertools.product('+-*/', repeat=4)

          あと何日?

          ピザ錬成と DIY キット組み立て会

          9 月 25 日(日)、 Sony 大崎ブリッジターミナルでの DIY キット組み立て会に参加してピザを焼いてきました。 福利厚生の一環(?)でピザ窯を買ったので試運転してみませんか? とお声がけいただきほいほいと出かけた次第。 ピザ大崎のライフで材料を一揃い買い求め……たつもりが、イーストと塩を忘れた。そして昼のレジ混雑を甘く見たのが今回の反省点。(プラス、薄力粉はサイズ各種そろっていたけれど強力粉は1kg.しか選択肢がなかったことも想定外) ただイーストなし、ベンチタイ

          ピザ錬成と DIY キット組み立て会

          『人に伝わるプログラム』講演会

          去る9月20日、「人に伝わるプログラム」と題して講演しました。 「議論メシ編集部」さまにもご紹介いただきました。(感謝!) 日頃、コードを書きながら感じているあれこれを聞いてもらいたい! と、そんなおもいが嵩じたこと。自分から打って出ないかぎり、だれにも決して気づいてもらえないという常日頃のくすぶり。 なにより大学教授やベンチャー社長などなどそうそうたる肩書きが登壇・講演する中で一介の平社員が話をできる機会なんてなかなか得られるもんじゃない。こりゃあ楽しいぞ! というぼくの

          『人に伝わるプログラム』講演会

          クリティカルセクション

          マルチスレッドでの並行処理を書いているとき、共有リソース(主には共有変数)を同時に書きかえないよう排他アクセスする必要がある。 排他制御を実現するためにコンピューター・サイエンスではセマフォやミューテックスを使う、と習う。 Windows ではこれらより軽量なクリティカルセクション(CRITICAL_SECTION)オブジェクトが使える。 プロセスやセッションをまたいだ排他制御が不要──つまりプロセスの中だけ、スレッド間での排他にはクリティカルセクションで足りる。 使いか

          クリティカルセクション

          和と積

          C++ の話。配列やコンテナの値の総和を取りたい、けれど std::sum はない。ああ今日も車輪の再発明。 sumsum は std::accumulate アルゴリズムをつかって実装できる。 template<typename InputIter, typename Type = typename std::iterator_traits<InputIter>::value_type>inline auto sum(InputIter begin, InputIter

          終了ステータスコード

          定義プログラムがどのように終了したかを示すコード。 C プログラムの main 関数が return で戻す整数値。 main の戻り型は int のため「符号つき」におもえるけれど、 POSIX で定められている有効な値の範囲は 0 から 255 までの整数(符号なし)。 値の使いかたには「これ!」という決定的な文書は存在しない?(ご存じのかた、いらっしゃったら教えてください) 意味プログラム終了コード:0, 1, 2 Stack overflow の「Are the

          終了ステータスコード