プログラマー歴20年の艦これ提督が 作ったプログラムを入れると年収を査定してくれるからと 手持ちのプログラムを全て入れてしまい SMBCとNTTと警察庁、日銀、埼玉県庁で使っているソースコードGithubで世界中に公開してしまう
https://martinfowler.com/articles/branching-patterns.html 最新のソース管理システムには、ソースコードのブランチを簡単に作成できる強力なツールが用意されています。しかし、最終的にはこれらのブランチをマージしなければならず、多くのチームは混み合ったブランチに対処するのに膨大な時間を費やしています。複数の開発者の作業をインテグレーションし、本番リリースまでの道筋を整理することに集中して、チームが効果的にブランチを利用できるようにするためのパターンがいくつかあります。全体的なテーマとしては、ブランチを頻繁にインテグレーションし、最小限の労力で本番環境に展開できる健全なメインラインを作ることに注力すべきだということです。 ベースパターン ソースブランチング ✣ メインライン ✣ 健全なブランチ ✣ インテグレーションパターン メインラインイン
僕はコードを読むのは得意な方だけど、それが過ぎてコードを書かなくてもシニアソフトウェア開発者になってしまった。実はコードをちゃんと読めるソフトウェア開発者って希少価値が高いのではないか、と思ったので自分がどんな感じでシニアになったのかをまとめてみた。似た様な人の参考になれば幸いだ。 同意。僕は未だ書く方はほとんど機会なく成果もないけど、コードを読み尽くして、負荷試験や本番で挙動を把握し続け、メトリクスでとことん確かめていった結果、Sr. Engineer になれた。 https://t.co/KXtMdEaRr8 — Ryosuke Iwanaga (@riywo) April 16, 2021 コードを書かなくてもシニアソフトウェア開発者になれた 僕は今 Amazon の Sr. Systems Development Engineer という職種で働いている。いわゆるソフトウェア開発職
概要 チームによる継続的開発を前提としたコーディングのガイドライン。 特定の言語を対象としたものではないが、主に静的型付けのオブジェクト指向言語を想定している。 サンプルコードは別段の定めがなければSwiftで記載。 ガイドラインの目的 生産性を高め、メンテナンスコストを下げる バグが生まれづらくする 開発メンバー(特に新規参加者)がコードを理解しやすくする 初心者プログラマーの教育 内容の説明 タイトルの頭についた【数字】は重要度。 高いほどシステムに与える影響が大きいが、低いものの方が影響が小さく改修しやすいものが多い。 【5】変数のスコープを小さくする 変わり得る値は複雑さを生み誤解やバグに繋がるため、プログラムは変数が少ないほど問題が生まれづらい。 プログラミングの大原則として、変数は必要最低限を心がけ、むやみに増やさないようにする。 また、変数はスコープや寿命が大きいほど悪影響が
Sourcetrailは、開発者が他人の書いたソースコードを理解し、生産的にコーディングを行えるよう支援する。開発者は既存のソースコードを理解することに多大な時間を費やすが、一般的なコードエディタは、こういった作業にはほとんど役に立たない。 Sourcetrailの主要開発者であるEberhard Gräther氏は、「Google Chrome」のグラフィックスチームにインターンシップとして参加した2012年時点の経験を次のように語っている。 「割り当てられた単純に見えるタスクに着手し、具体的なコードの改善に取り組み始めるとすぐに、Chromiumの巨大なアーキテクチャを理解する機会が全くないことに気付いた。ドキュメントはあまり役に立たず、開発チームのメンバーは非常に友好的だったが、コードベースについて質問するインターンに邪魔されることを好まないことも分かった。そこで、ソースコードを読ん
三井住友銀行(SMBC)が行内で使っている業務システムのソースコードの一部が流出していたことが2021年1月29日、明らかになった。Twitterなどのソーシャルメディアで、2021年1月28日の夜ごろから流出の可能性が指摘されていた。三井住友銀行が1月29日に事実関係を調査し、行内システムのソースコードの一部と一致したことを確認した。 一部のソースコードが公開されていたのは米ギットハブが運営する「GitHub」。日本在住で三井住友銀行のシステム開発に関係した人物が投稿した可能性が浮上している。三井住友銀行は日経クロステックの取材に対し、「当行が利用しているシステムのソースコードが公開されていたのは事実。顧客情報の流出はなく、セキュリティーに影響を与えるものではないことは確認済み」(広報部)と説明している。 三井住友銀行によれば、公開されていたコードは複数ある事務支援系システムの1つに含ま
ツイッターでポロっとつぶやいたのだけど、ここでも記事をば。 某プログラマが34年前に発売された某有名ファミコンゲームのソースをgitに公開したので、以下にリンクを置いておく。 GitHub - omuanko/nnjhtrkn: Famous Ninja game for NESFamous Ninja game for NES. Contribute to omuanko/nnjhtrkn development by creating an account on GitHub. 某プログラマからの箴言は以下。 ■某プログラマ ちなみに びるど とおりますうご(www act65 を cpm86 エミュで 試してみた ソース見られるの恥ずかしい いまさらおそいか ちなみに act65は つけてないよ どっかで ひろってね ところで、イマドキな方には全く理解できないことがいろいろあるだろう
ある程度経験を積んだレビュワーがやりがちな失敗は、 指摘しやすいコーディング規約違反だけ指摘している というもの。 コードレビューで指摘するべき欠陥とは、必ずしも規約違反だけではなく、 仕様考慮もれや機能的なバグ、非機能的なセキュリティやパフォーマンス上の問題点も含まれる。 一つ関数に対して複数の視点でソースチェックをしないといけないが、 人間は同時に複数のことは考えられない。 そこでどうすればいいかと情報をあさっていたところ、 われらがIPAがセキュアプログラミング講座というWEBページで、 四回に分けてレビューすることを提唱していた。 1回目はどこに何があるか、 2回目は可読性が確保されているか、規約にのっとっているか 3回目は機能性 4回目はセキュリティ といった具合である。 IPAの講座では4回目はセキュリティに限定しているが、 担当していたプロダクトは、非機能面はセキュリティはも
[速報]10年にわたる著作権訴訟でGoogleがオラクルに勝訴、米連邦最高裁判所で判決。Java SEのコードのコピーはフェアユースの範囲 オラクルがGoogleに対して、Android OSがJavaの著作権を侵害しているとして訴えていた裁判で、米連邦最高裁判所はGoogleが著作権侵害をしていないとの判断を示し、Googleが勝訴しました。 以下は米連邦最高裁判所の動向を伝えているSCOTUSblogのツイートです。 BREAKING: In major copyright battle between tech giants, SCOTUS sides w/ Google over Oracle, finding that Google didnt commit copyright infringement when it reused lines of code in its An
はじめに こんにちは。コミュニケーションアプリ「LINE」の Android クライアントチームの石川です。 先日、コードの可読性についてのプレゼンテーション (https://speakerdeck.com/munetoshi/code-readability) を公開しました。 今後、このプレゼンテーションについてのちょっとした解説を、本ブログ上で不定期に連載していきます。 今回は、このプレゼンテーションの概要と、最初の章 "導入と原則" についての解説を行います。 このプレゼンテーションについて このプレゼンテーションは、コードの可読性を向上するためのアイディアをまとめたもので、以下の8つの章からなります。 導入と原則: 可読性の高いコードの重要性、プログラミング原則 命名: 名前の示す内容、文法、語の選択 コメント: ドキュメンテーション、インラインコメント 状態: 状態遷移の管理
はじめに OpenAIによって開発されたChatGPTが話題になっています。特に、2023年3月14日に公開された最新モデルであるGPT-4は、これまで私達がAIに持っていた認識を根底から覆したのではないでしょうか? 私は、「普通に人間とやりとりしているのと変わらんやん…」と率直に驚きました。 エンジニアの業務の中でも、自動コーディング支援、技術的課題の壁打ち相手、ドキュメント自動生成、学習支援等さまざまな用途に活用する可能性を皆さん検証している段階です。私もその波に乗っている真っ最中です。 そこで今回は、ソースコードリーディングをChatGPTをメンターにしたら爆速にできるのではないか?という仮説を検証してみました。 そしてどうせやるなら、ソースコードリーディングのハードルの高さナンバーワン(個人調べ)の「Linuxカーネル」を題材にしてみました。 なお、使用したモデルはGPT-4です。
はじめに 本記事は、 DeNA Advent Calendar 2020 の 11 日目の記事です。 突然ですが、「コンパイラのコードを読んでみよう」なんて言われても、「どうせ巨大で難解で複雑なロジックを理解しないと読めないんでしょ?」と思いませんか。 コンパイラの構造を理解しようとしても聞いたことのないような専門用語がずらりと並び、コードを読もうとしたらそれらをすべて完全に理解してないと一行も理解できないんじゃないか...。Go のコンパイラ gc のソースコードを読むまでは、私もそう思っていました。 しかし、あまりにも暇な休日のある日、思い立って gc のコードを読んでみました。すると、「コンパイル」という難解な響きの処理も、一つひとつを小さなタスクに分解することで、少しずつ読み進めることができると分かったのです! 何よりも感動したことは、 gc そのものが全て Go で書かれていて、
第1回:ToF距離センサの仕組み 第2回:加速度センサの仕組み 第3回:温度センサの仕組み 第4回:光学式マウスのチップを拝む 第5回:チップを拝む〜互換チップの世界〜 第6回:ソースコードを覗く〜GPIO編〜 しっかりとした正しい知識を基礎から学び、長く電子工作を楽しむことができるようになることを目的とした今回の連載。分かりやすく解説してくれるのは、金沢大学電子情報通信学類教授の秋田純一先生です。第6回から始まった新シリーズ「ソースコードを覗く」の2回目となる今回は、Arduinoのライブラリのソースコードを読んでいきます。それでは早速始めましょう! 目次 Arduinoのアナログ出力 アナログ出力とPWM analogWrite()のソースコードを覗いてみる 1. Arduinoのアナログ出力 Arduinoでは、アナログ出力ができるピンがあります。ここにLEDをつないで光らせるのに、
企業向けに「Red Hat Enterprise Linux(RHEL)」というLinuxディストリビューションを提供しているRed Hatが、これまで一般公開してきたRHELのソースコードの配布を顧客限定にすると発表しました。この発表に対して、自由ソフトウェアの理念を持つ開発者たちが批判の声を上げています。 Furthering the evolution of CentOS Stream https://www.redhat.com/en/blog/furthering-evolution-centos-stream 自由ソフトウェアとは下記の4つの「自由」を持つソフトウェアのこと。 ・どんな目的に対しても、プログラムを望むままに実行する自由 ・プログラムがどのように動作しているか研究し、必要に応じて改造する自由 ・ほかの人を助けられるよう、コピーを再配布する自由 ・改変した版を他に配
はじめに 対象とする読者について 本記事の対象者としては以下のような人を想定しています。 C#でこれからWin32APIを使ってみたい。 C言語のことがあまりよく分かっていない。 今までは適当に使っていたので一度きちんと理解したい。 自分が同じような状況であったため、一から調べて整理してみました。自分が理解した順番や内容で記載することで、また、具体的な使用例によってできることの広さや動作を感じ取ってもらうことで、理解の助けになればと思っています。 但し、分かっている人からすると冗長な説明になっている部分や好ましくない内容、正確性に欠ける内容などもあると思います。実際に使用する場合はその点にご留意願います。 Win32APIについて Windows API - Wikipedia Microsoft Windowsのシステムコール用APIのこと。特に32ビットプロセッサで動作するWindow
Microsoftのオペレーティングシステム「Windows XP」のものとされるソースコードがインターネット上に流出していることがわかりました(MSPoweruser)。流出したソースコードはWindows XPのものだけではなく、Windows Server 2003など以下に示すOSが含まれている模様です。 Windows XP Windows Server 2003 MS DOS 3.30 MS DOS 6.0 Windows 2000 Windows CE 3 Windows CE 4 Windows CE 5 Windows Embedded 7 Windows Embedded CE Windows NT 3.5 Windows NT 4 ソースコードは米国のインターネット掲示板4chanなどで拡散されていて、コンテンツ全体のサイズは43GBという膨大なサイズのようです。ソー
高機能で安全なサービスを提供してくれるソフトウェアは、ユーザーにとってはとてもありがたい存在です。しかし、そうしたソフトウェアの開発は複雑になりがちで、ソースコード量も増加する傾向があります。大規模な開発で重要な「関数や変数がどのように関係しているか」といった、ソースコード内の依存関係をわかりやすいグラフで可視化してくれる無料のオープンソースソフトウェアが「Sourcetrail」です。 Sourcetrail - The open-source cross-platform source explorer https://www.sourcetrail.com/ 現代のソフトウェアは高機能化の一途をたどっているため、開発者の扱うコードは大幅に増加しています。こうした流れから、機能ごとにサービスを分割し、サービス単位での管理を簡素化できる「マイクロサービスアーキテクチャ」が台頭していますが
Pythonのコードを改善するためのツールについて一通り試してみました。各ツールのインストール方法や使い方については Pythonのスタイルガイドとそれを守るための各種Lint・解析ツール5種まとめ! - Sider Blog に詳細にまとまっているのでおすすめです。 サンプルコード 以下のサンプルコードを対象に、各ツールの出力を確かめてみます。 import time import sys import fractions def func1(varA,varB): '''return sum of a and b''' varC = 42 return (varA + varB) print(func1(fractions.Fraction(1, 2), fractions.Fraction(1, 3))) 3 + 5 sys.exit(0) このスクリプトをsample.pyという名
大規模なソースコードを分析・閲覧する際に有用なのが、ソースコード専用の検索ツールだ。こういったツールは複数あるが、今回はGitリポジトリやGitHubなどのホスティングサービスとの連係機能を特徴とするオープンソースの検索ツール「Sourcegraph」を紹介する。 Webブラウザ上からGUIで操作できるソースコード検索ツール システム開発の現場において、クラスや関数がどこでどのように定義されているのかを調べたり、メッセージなどで表示される特定の文字列がどこで使われているかを調べたりするといった作業は割と頻繁に発生する。こういった作業はgrepなどの汎用検索ツールでも可能ではあるが、その場合たとえばソースコード以外のファイルに含まれる文字列も検索に引っかかるほか、その出力もやや見にくい。そこで活用したいのが、専用のソースコード検索ツールだ。 ソースコード検索ツールでは、対象のソースコードがど
マイクロソフトは、Windows 10に標準で含まれているCalc.exe(日本語版では「電卓」)のソースコードをオープンソースとしてGitHubで公開したことを明らかにしました(追記:オープンソース化は3月に行われていました。ちょっと記事にするのが遅かったようです。すいません)。 Calc.exeのオープンソース化の狙いは、最新のWindowsアプリケーションを開発するための見本として使ってもらうことにあるようです。 というのも右の画面を見ていただくと分かるように、電卓は半透明のウィンドウやウィンドウの横幅に合わせてコントロールの大きさが変化するなど、Windowsの最新のユーザーインターフェイス技術などを用いて作られているのです。 「Announcing the Open Sourcing of Windows Calculator」では次のように説明されています。 Reviewing
PostgreSQL Server PostgreSQL のアーキテクチャを頭に叩き込んでおこう. 上の図は PostgreSQL サーバーの主要なコンポーネントとそれらの関係を表している. PostgreSQL は,クライアントサーバーモデルに基づく共有メモリ型のアーキテクチャを採用している. サーバープロセス postgres は,クライアントからコネクション要求を受け取るとフォークしてバックエンドプロセス postgres を生成する. 生成されたバックエンドプロセスは,以降,そのクライアントとのやりとりを担う. クライアントは,バックエンドプロセスと通信してクエリを送信したり,結果を受け取ったりする. PostgreSQL のすべてのプロセス間で共有されるメモリ領域は,共有メモリと呼ばれる. 共有メモリは,主に低速なストレージへのアクセスを減らすバッファとして機能する. ストレージ
今回のコードの汚さには正直ちょっと自信あるよ。 下手すりゃIOCCCで優勝も狙えるかもしれないよ。 ということで、私がこれまで見てきた中で最も汚いソースコードを紹介します。 それは、とあるWebサイトのTwitterハッシュタグ埋め込みのコード。 よくあるやつですね。 普通であればタイムライン埋め込み使って一瞬で終わるやつです。 ただ、そこはけっこうお堅めのクライアントで、普通に埋め込むだけではできない要件が追加でありました。 すなわち、ハッシュタグを乗っ取る荒らし投稿などを絶対に表示させたくない、というものです。 具体的にはクライアントからNGワードのリストをもらって、それらの単語が含まれる投稿は表示しないようにします。 だいぶ昔の話なので実際はvarとか使ってたと思うんだけど、ざっくり書くとこんなかんじ。 const ngWords = [/* 省略 */]; let tweetLis
Qiita にはさまざまなコンテンツを埋め込み可能です。CodeSandbox も埋め込み可能なコンテンツの一つです。 従来の CodeSandbox はブラウザ上で動作するため React や Vue などのフロントエンドのみ対応していましたが、近年の CodeSandbox は Firecracker の microVM という仮想マシンによる処理の実行が可能になりました。それにより、フロントエンド以外のさまざまな言語の実行が可能となっています。 従来のブラウザ上で React や Vue を動かす sandbox を browser sandbox、最新の microVM で動作する sandbox を cloud sandbox と呼びます。(詳細はリンク先のドキュメントをご確認ください。) この cloud sandbox では、Rust や、 Python が公式にサポートして
mold is a faster drop-in replacement for existing Unix linkers. It is several times quicker than the LLVM lld linker, the second-fastest open-source linker, which I initially developed a few years ago. mold aims to enhance developer productivity by minimizing build time, particularly in rapid debug-edit-rebuild cycles. Here is a performance comparison of GNU ld, GNU gold, LLVM lld, and mold when l
chibicc: A Small C Compiler (The old master has moved to historical/old branch. This is a new one uploaded in September 2020.) chibicc is yet another small C compiler that implements most C11 features. Even though it still probably falls into the "toy compilers" category just like other small compilers do, chibicc can compile several real-world programs, including Git, SQLite, libpng and chibicc i
ブログなどでコードを記載しているサイトは多いです。その表示方法も様々で、行番号があるもの、ハイライトが付いているものなどがあります。そのコードをコピーしても余計な行番号が付いてきたりして、ストレスと感じたりします。 そこで使ってみたいのがcopy-code-blockです。自由度の高くコードのコピーが可能です。 copy-code-blockの使い方 コードハイライタと組み合わせた例です。 コピーボタンを押すと、コードだけがコピーできます。 <div class='cool-container'> <p class='cool-description'>Get ready for...</p> <ul class='cool-list'> <li class='cool-item'>rainbows</li> <li class='cool-item'>and</li> <li class
You're ALMOST THERE! Please read the following CHM Software License Agreement and accept the terms and conditions at the bottom of the page to download the Apple Lisa source code files. APPLE ACADEMIC LICENSE AGREEMENT Lisa OS Software version 3.1 IMPORTANT: Please read these terms carefully as they are an agreement between you and Apple Inc. about the Apple software, fonts, interfaces, content, d
by hughesjoseph 1981年にウィリアムスからリリースされた、世界初のスクロール型シューティングゲーム「ディフェンダー」のソースコードがGitHubで公開されています。ソースコードはWindowsやLinuxで実行可能な実行ファイルにアセンブルすることができるほか、ROMファイルに書き出すことで、MAMEなどのエミュレーターでゲームをプレイすることができます。 GitHub - mwenge/defender: Defender(1981) by Eugene Jarvis and Sam Dicker https://github.com/mwenge/defender ウィリアムスはピンボール台のメーカーとして非常に有名ですが、1980年代にはアーケードゲームをいくつかリリースしていました。その中でも特に大ヒットしたのが、「ディフェンダー」です。ゲームデザインを務めたのは
第1回:ToF距離センサの仕組み 第2回:加速度センサの仕組み 第3回:温度センサの仕組み 第4回:光学式マウスのチップを拝む 第5回:チップを拝む〜互換チップの世界〜 しっかりとした正しい知識を基礎から学び、長く電子工作を楽しむことができるようになることを目的とした今回の連載。分かりやすく解説してくれるのは、金沢大学電子情報通信学類教授の秋田純一先生です。第5回までは「チップを拝む」をお送りしてきましたが、今回からは新シリーズ「ソースコードを覗く」がスタート。初回は、Arduino等のライブラリのソースコードを階層的に読んで、APIとタイマ等のハードウエアリソースとの関係をつなげていきたいと思います。それでは早速始めましょう! 目次 Arduinoの便利さ? マイコンのデータシート Arduinoのソースコードを読む 1. Arduinoの便利さ? みなさん、Arduinoって使ったこと
Software Gems: The Computer History Museum Historical Source Code Series The Apple Macintosh combined brilliant design in hardware and in software. The drawing program MacPaint, which was released with the computer in January of 1984, was an example of that brilliance both in what it did, and in how it was implemented. For those who want to see how it worked “under the hood”, we are pleased, with
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く