タグ

プログラミングに関するn314のブックマーク (49)

  • Value Objectについて整理しよう - Software Transactional Memo

    Value Objectとは何であるか? マーチン・ファウラーのPatterns of Enterprise Application Architecture(PofEAA)やエヴァンス・エリックのDomain Driven Design: Tackling Complexity in the Heart of Software(DDD)が原典であるが、PofEAAではこう切り出している。 When programming, I often find it's useful to represent things as a compound. プログラミング時は物をcompound(合成物)として表現すると便利なことがしばしばある。 例えば2次元空間上での座標のように複数のメンバ(属性)を持つ物は便利である、と。しかしそれらを比較する方法は一意ではない、そこで Objects that a

    Value Objectについて整理しよう - Software Transactional Memo
    n314
    n314 2022/05/16
    ブコメ見て、確かに type alias がないから仕方なくやってるところがあるかも。
  • 状態、結合、複雑性、コード量の順に最適化する - valid,invalid

    There’s No Such Thing as Clean CodeのHacker Newsコメント経由でコードやシステム設計・最適化についての良いコメントを見つけた。どうやらHacker Newsで何度も引用されているらしいが日語で言及された記事が見つからなかったので取り上げてみる。 コメントは2016年のSandi MetzのThe Wrong Abstractionに関するもので、発言者のcurun1rいわく「私は設計の優先順位をこの順序で学習することで、優れた開発者になれた」。*1 4つの基準と優先順位のガイドライン 状態 > 結合 > 複雑性 > コード量 私は状態 (state)、結合 (coupling)、複雑性 (complexity)、コード量 (code) の順に削減することでコードを最適化する。 コードがよりステートレスになるなら、結合を増やすこともいとわない 結

    状態、結合、複雑性、コード量の順に最適化する - valid,invalid
  • 【C】srand(time(NULL))をしても同じ乱数が生成される

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

    【C】srand(time(NULL))をしても同じ乱数が生成される
    n314
    n314 2022/01/07
    “擬似乱数の結果の剰余を使うのが一般的にダメです。”
  • プログラムがメモリをどう使うかを理解する(1)

    この記事の狙い この記事は、端的に言えば この図が言わんとしていることを理解できるようになるための解説を目指しています。 昨今のプログラミング環境において、メモリの管理方法やその実態は、詳細を知らずとも目的を達成できるようになっています。といっても、実際にはメモリは無尽蔵に使えません。制約が厳しい環境下で動かさねばならないプログラムもありますし、多少潤沢に使える環境であっても、無駄に浪費するよりは、必要最低限のメモリで効率よく動作するプログラムの方が、多くの場面においては良いプログラムと言えるでしょう。 メモリのことなど知らなくてもプログラムを書けるのは一つの理想ではありますが、現実的にはその裏に隠されている(抽象化されている)仕組みを知っておいたほうが有利です。また、昨今のレトロゲームにおけるタイムアタックで駆使されるメモリ書き換えのテクニックなども、何故そういったことが可能なのかを知る

    プログラムがメモリをどう使うかを理解する(1)
    n314
    n314 2022/01/06
    “DEADBEEF”
  • 【公式】ぷよぷよeスポーツ×プログラミング

    ぷよぷよプログラミングとは プログラミング学習環境『Monaca Education』において、セガが展開するアクションパズルゲーム『ぷよぷよ』をプログラミング学習できる教材です。 製品版と同じ画像素材を利用して、世界中で使われるコンピュータ言語を使い、プロが使う開発環境で物のプログラミングをお楽しみください。 コンテンツは無料でご利用いただけます。

    【公式】ぷよぷよeスポーツ×プログラミング
  • できるだけ嘘を書かずに計算量やオーダーの説明をしようとした記事 - えびちゃんの日記

    計算量についてのお話です。対象は、プログラミング経験はあるが計算量のことを知らない初心者から、計算量のことを知っているつもりになっている中級者くらいです。 数式を見たくない人にとっては読むのが大変かもですが、深呼吸しつつ落ちついて読んでくれるとうれしいです。 それから、この記事が自分には合わないな〜と思ったときは、(別の記事を Qiita とかで検索するよりも)この記事の一番下の 参考文献 にあるを読むことをおすすめします。Amazon の試し読みで無料で読めます*1。 TL; DR 関数の増加度合いのことをオーダーと呼ぶよ 計算量は、入力サイズ(など)を受け取ってアルゴリズムの計算回数(など)を返す関数だよ その関数のオーダーについての議論がよく行われるよ オーダーを上から抑えるときは \(O\)、下から抑えるときは \(\Omega\) を使うよ オーダーを上下両方から抑えたいときは

    できるだけ嘘を書かずに計算量やオーダーの説明をしようとした記事 - えびちゃんの日記
  • LoggerをDIする事についての議論 - Qiita

    この記事の目的 Loggerを様々なクラスで使用するにあたり、ASP.NET MVC Coreでは、規定でDIを用いてILoggerインタフェースにLoggerを注入します。 しかしこれまで多くのシステムでは、Loggerクラスの静的メソッドを用いてLoggerインスタンスを取得し、以下のように使っていました。 static readonly log4net.Ilog _logger = log4net.LogManager.GetLogger("ErrorLog"); 上記のコードがどのレベルにあるか(クラスレベルか、システムグローバルか)はさておき、各クラスからはなんらかのグローバル変数かクラスの静的メンバを直接参照していたわけです。 しかし、クラスを特定のグローバルな何かに依存させるやり方は、そのクラスの可搬性を下げ、テストもしにくくしてしまいます。 その問題を解決する為にDIが導入

    LoggerをDIする事についての議論 - Qiita
    n314
    n314 2021/10/13
    なかなか面白い
  • プログラミング言語の未来はどうなるか | κeenのHappy Hacκing Blog

    κeenです。最近JEITAのソフトウェアエンジニアリング技術ワークショップ2020に参加したんですが、そこで五十嵐先生、柴田さん、Matzとパネルティスカッションをしました。その議論が面白かったので個人的に話を広げようと思います。 年末年始休暇に書き始めたんですが体調を崩したりと色々あって執筆に時間がかかってしまいました。 時間を置いて文章を書き足していったので継ぎ接ぎ感のある文体になってるかもしれませんがご容赦下さい。 というのを踏まえて以下をお読み下さい。 いくつか議題があったのですが、ここで拾うのは一番最後の「プログラミング言語の未来はどうなるか」という話題です。 アーカイブが1月末まで残るようです。もうあと数日しかありませんが間に合うかたはご覧下さい。 そのとき各人の回答を要約すると以下でした。 五十嵐先生:DSLを簡単に作れる言語というのが重要。それとプログラム検証、プログラム

    プログラミング言語の未来はどうなるか | κeenのHappy Hacκing Blog
  • スマホにカメラついてるんだからOCRできるでしょという気持ち - Progate Tech Blog

    どうも、 株式会社Progate で SoftwareEngineer チームのマネージャーをしています @satetsu888 です。記事は Progate AdventCalendar 2020 10日目です。 普段仕事ではエンジニア組織のことやプロダクトの技術戦略的なことを考えたり、ミーティングしたり採用活動したりタスクをお願いして回ったりなどを担当していますが、今日はそういうのとはなんの関係もないただの日常の話を書こうと思います。 ことの始まり 我が家では子どもの朝ごはんとして週に2,3回くらいの頻度でポケモンパンを買っています。 先日(2020/09/18 ~ 11/24) ポケモンパンについてるポイントを5点集めるとポケモンシールホルダーの抽選に1回応募できるキャンペーンがありました。(キャンペーン自体はすでに終了しています) いつも通りのペースでパンを買ってると何回か挑戦で

    スマホにカメラついてるんだからOCRできるでしょという気持ち - Progate Tech Blog
  • Semantic Versioningの闇 - knqyf263's blog

    今回も誰も興味ないシリーズなので今まで書いてこなかったのですが、Semantic Versioningに関して幻想を抱いている人がいる可能性があり、そういう方にどうしても現実を知っておいて欲しかったので書きました。3行要約(と可能なら余談)だけでも読んでいただけると幸いです。 3行要約 Semantic Versioning 2.0.0にはバージョン"比較"の定義はあるが、バージョン"制約"(>= 2.1.3みたいなやつ)の定義がない その結果、同じsemver準拠ライブラリでも制約の解釈が異なり結果が真逆になる というかそもそもsemver使ってるエコシステムが少なすぎる 背景 セキュリティアドバイザリでは特定のバージョンが脆弱であることを示すためにバージョン制約が使われることが多いです。例えば >=1.2.0 <1.2.6みたいなやつです。この場合、1.2.5は脆弱だが1.2.6は修正

    Semantic Versioningの闇 - knqyf263's blog
    n314
    n314 2020/11/11
    すごい。あと、そもそも範囲指定のバージョンで依存関係が指定されていると信頼できないイメージがある。
  • GAFAコーディング面接こんな感じでした - yambe2002’s diary

    このあいだ、GAFA数社のコーディング面接を受けて全落ちしました。後続のため、オンサイト面接がこんな感じだったよ、というのをストーリー風に仕立てて公開します。問題と会話はダミーですが、雰囲気はかなり近くできたと思います。なお実際の会話はすべて英語で、バーチャルでの実施でした。 メイン問題はLeetCodeのNo.1472をもとに作成。 https://leetcode.com/contest/weekly-contest-192/problems/design-browser-history/ ちなみに「ぼく」はIQ+30くらいの設定です。それではどうぞ。 入室と自己紹介 面接官「やあ!わたしはシンディ。会えて嬉しいよ!」 ぼく「こんにちは、シンディ。ぼくはyambe2002。調子はどう?」 面「超いい感じだよ。きみは?」 ぼ「ぼくも超いい感じさ」 面「それはよかった。わたしは部署Aのソフ

    GAFAコーディング面接こんな感じでした - yambe2002’s diary
  • 計算論的思考

    584 computer scientist m p u t a t i o n a l T h i n k i n g 情報処理 Vol.56 No.6 June 2015 翻 訳 1 3R 1 Reading, wRiting, aRithmetic 3R 基 専 応 般 計算論的思考 Wing 2006 2014 CACM 2014 1 8 2014 10 Microsoft Research Asia Wing ACM compute computer compute computational thinking computer computer science computer scientist Jeannette M. Wing Computational Thinking, Communications of the ACM, Vol.49, No.3, pp.33-35

  • エンジニアが厳選した 10 冊を、次世代のプログラミングを担う皆さんに

    メディア関係者向けお問い合わせ先 メールでのお問い合わせ: pr-jp@google.com メディア関係者以外からのお問い合わせにはお答えいたしかねます。 その他すべてのお問い合わせにつきましては、ヘルプセンターをご覧ください。

    エンジニアが厳選した 10 冊を、次世代のプログラミングを担う皆さんに
  • 私がコーディングで垂直方向にそろえるインデントをとる理由 | POSTD

    先週、 Hacker News上で興味深い議論が行われました 。テーマは Linux Kernelのコーディングスタイル についてです。 議論の中で私は、 コーディングで垂直方向にそろえるインデントをとるべきか というささやかな聖戦を仕掛けました。私は全面的に賛成です。理由を説明しましょう。 垂直方向にそろえるインデントをとるとは? 簡単な例を挙げてみます。 int robert_age = 32; int annalouise_age = 25; int bob_age = 250; int dorothy_age = 56; ちょっと見ただけで、「bob_age」がおかしいと分かるでしょう。また、目視であちこち探さなくても、全ての値が整数であることが簡単に確認できます。 この考え方は 一般的に 共有 されているわけではありません。ですので、なぜ 多くの 人たち がこれを有効なスタイルガ

    私がコーディングで垂直方向にそろえるインデントをとる理由 | POSTD
  • ソート可能なUUID互換のulidが便利そう - Qiita

    UUIDは重複しないIDを生成する手段として便利ですが、特にversion4(乱数によるUUID)を利用する場合は一意性を得るのと同時に乱雑さも得ることになりますので、UUIDに順序性を求めることができません。 UUID - Wikipedia https://ja.wikipedia.org/wiki/UUID UUID(Universally Unique Identifier)とは、ソフトウェア上でオブジェクトを一意に識別するための識別子である。UUIDは128ビットの数値だが、十六進法による550e8400-e29b-41d4-a716-446655440000というような文字列による表現が使われることが多い。元来は分散システム上で統制なしに作成できる識別子として設計されており、したがって将来にわたって重複や偶然の一致が起こらない前提で用いることができる。 UUIDだと実現できない

    ソート可能なUUID互換のulidが便利そう - Qiita
  • レトロゲームエンジン Pyxel でプログラミングを始めよう! - kitao's blog

    Pyxelの開発が一区切りしたので、改めて紹介記事を書いてみました。 [2020.4.4追記:最新版の紹介記事はこちらです] Pyxelって何? Pyxel(ピクセル)は、昔ながらのドット絵タイプのゲームを簡単に作れる「レトロゲームエンジン」です。 2018年7月30日にリリースされた、非常に新しいゲームエンジンなのですが、海外を中心に急速にユーザーが増えています。 github.com プロジェクトGitHubでオープンソースとして公開されており、公開4日でGitHubのデイリーランキングで全1億のプロジェクト中1位を獲得。ついでに作者である私もGoogle、Facebook、Microsoft等の企業アカウントを含む3100万人の開発者ランキングで1位になっています。(1位の座は48時間持ちませんでしたが…) GitHub上ではその後もスター数が増え続けており、現在は4000スターを

    レトロゲームエンジン Pyxel でプログラミングを始めよう! - kitao's blog
  • IchigoJamにプログラミングして家電を操作する学習リモコン基板

    IchigoJamにプログラミングして家電を操作する学習リモコン基板
    n314
    n314 2018/10/16
  • 初心者をググれカスと突き放すのは割と酷なのではないかという話 - koogawa blog

    こんにちは koogawa です。最近は Stack Overflow だけにとどまらず、エンジニア向けQAサイト teratail でも回答しております。teratail はスコアが上がっていくと色んなバッジをゲットできるので気に入っています。 teratail【テラテイル】|思考するエンジニアのためのQAプラットフォーム ところで今日は次の質問に回答しました。 teratail.com これ、めちゃくちゃ良い質問だと思うんです。何より自分がわからないことをちゃんと言語化できている。 すでに回答もいくつか付いていたので内容を見てみると。。 ぐぐる。これに尽きます 普通にググれば見つかるのに 何がわからんの? だいたいこんな感じでした。 うーん、皆さんなかなか手厳しい回答です。。これだと質問者の方も、ここで挫折してしまうのではないでしょうか。 回答してみた というわけで「自分ならどうググる

    初心者をググれカスと突き放すのは割と酷なのではないかという話 - koogawa blog
    n314
    n314 2018/05/23
    良いね。なんかHaskellの記事でもあったけど、思考の過程をそのまま文章にしてくれると大変助かる。
  • プライベートでコードを毎日書き続けて2年以上が過ぎた

    いつの間にか2年間継続してコードを書いていたので、その振り返りです。上のインコは日々僕を応援してくれる二羽のインコのうちの一羽です。この後をボロボロに噛みちぎっていきました。 1年目との違い去年こんなポストを書きました。 このとき、自分はコードを1年継続して書いたわけですが、その後また1年継続してコードを書いていました。 1年目とは「書きたい」と思うものも変わりました。また、習慣を維持する労力も小さくなり、コードを書くことそのもの以外の、登壇などの時間を取れるようになりました。 この1年で新たにやったことツール作成markdownをMediumポストにするCLIツールAWS SSMで管理されたパラメーターを環境変数にInjectするツールGoogle Cloud Platform API向けに使える、goonと同様のDatastoreクライアント基盤作成AWS上にTerraform+An

    プライベートでコードを毎日書き続けて2年以上が過ぎた
    n314
    n314 2018/02/26
    途中まで読んでいいなーと思ったけど、3:00に寝て7:30に起きる自信がまったくない…。
  • いろんな言語で「Optional(2018)年」やってみよう - Qiita

    元ネタ Optional(2018)年あけましておめでとうございます マジレスすると『Optional(2018)年』を恐れる必要はない Optional(2018)と表示された原因 Swift 2からSwift 3になった際に、DateComponents 構造体のyearやmonthプロパティがOptional 型になったため 他の言語でも同様の破壊的変更があった場合どうなるか?

    いろんな言語で「Optional(2018)年」やってみよう - Qiita
    n314
    n314 2018/01/10
    これバグがどうというよりもoptional系使える言語の特徴一覧って感じですごい。