タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。
私はクラウドのプロダクトチームで働いているが、何を隠そう一番苦手で克服できていないことが、コードリーディングだ。ものすごーく時間かかるし、時間かかったうえに読み間違えたりするし、しかもめっちゃ頭使うのに他の人はずっと速いので敗北感しか残らない。先日もマネージャの Pragna に相談したら、最初は2時間かかるけど、3か月もしたら5分で終わるわよ。って言われたけど、いや、そもそも俺4時間は最低かかるねんけどな、、、って感じ。 技術イケメンの皆さんのアドバイス よくよく私のキャリアを考えると、OSSにコントリビュートとかしていることはあったが、めっちゃくちゃ巨大でややこしいコードベースを読んで理解する必要が無いことが多かった。1からコードを書くのは得意だが、他の人のを読んでがっつり理解してとか、どうやったら出来るのかわからない。 当然自分の周りの技術イケメンの皆さんにコツを聞いていたのだが、ど
Code interpreter のキラーソリューションは表データの可視化っぽいけど、入力テキストとファイルソースによってテキスト生成とファイル出力ができるという点に着目すると色々活用の幅が広がる。 中でも、今までは入出力トークンに含まれる必要があったソースコードデータを外部ファイル化できるので、「リポジトリを丸ごと食わせる」などの従来トークン制限上実現できなかったことが外部システム連携なしで簡単に可能になったのが嬉しいポイントだった。 この特性を生かして最近OSSの静的コード解析というかコードリーディングをChatGPTにやってもらっている。 以下のサンプルでは脆弱性診実習用アプリ(通称「やられサイト」)のSQLインジェクションを発見してもらうという会話をした。 chat.openai.com 以下ではaws-load-balancer-controller や openai-pr-re
Kubernetesとその関連コードのコードリーディングをする上で知っておくと良さそうなことについて知ってる範囲で雑にまとめてみました 前提知識前提として最低限Kubernetesをある程度触っていて KubernetesはPodとかのリソースと呼ばれるものでコンテナだったりロードバランサーとかを管理するようになっていて実際にDeploymentでコンテナを立ててService/Ingressでコンテナで立てたアプリケーションを外部公開できてコンテナはPodという単位でコンテナをグループ化して同一Nodeで実行されるということを知っているくらいがわかっていればまぁ十分なんじゃないかとは思います あとはKubernetesはGoで書かれているので Goの基礎知識とVSCodeやGolandなどGoのコードを読む際に宣言にジャンプできるようなエディタくらいがあると良いと思います Kuberne
この記事では、Ruby製HTTPサーバーフレームワークであるWEBrickのソースコードリーディングを行います。 経緯 去る2020年11月26日、地域RubyコミュニティTama.rbの公開イベントとしてTama.rb OSSコードリーディング部 WEBrick編を開催しました。 こちらは、原作者の一人である高橋征義さん @takahashim をお招きしてソースコードをわいわい読み、その様子をZoomでライブ配信するという試みでした。 当日学んだWEBrick内部の全体の処理の流れを振り返りつつ整理していきたいと思います。 長い記事ですが、どうぞお付き合いください🙏 WEBrickとは? 引用: library webrick 汎用HTTPサーバーフレームワークです。HTTPサーバが簡単に作れます。 現在はCRuby本体に同梱のHTTPサーバーツールキットとして知られているWEBri
PostgreSQL Server PostgreSQL のアーキテクチャを頭に叩き込んでおこう. 上の図は PostgreSQL サーバーの主要なコンポーネントとそれらの関係を表している. PostgreSQL は,クライアントサーバーモデルに基づく共有メモリ型のアーキテクチャを採用している. サーバープロセス postgres は,クライアントからコネクション要求を受け取るとフォークしてバックエンドプロセス postgres を生成する. 生成されたバックエンドプロセスは,以降,そのクライアントとのやりとりを担う. クライアントは,バックエンドプロセスと通信してクエリを送信したり,結果を受け取ったりする. PostgreSQL のすべてのプロセス間で共有されるメモリ領域は,共有メモリと呼ばれる. 共有メモリは,主に低速なストレージへのアクセスを減らすバッファとして機能する. ストレージ
Node Sass could not find a binding for your current environmentというエラーメッセージをきっかけにnode-sassのソースコードを少し追ってみました。 起きた事象 フロントエンドのビルド環境としてNode v8で動いていたプロジェクトをNode v10にアップデートしました。その結果、次のような Node Sass could not find a binding for your current environment というエラーメッセージを吐いて落ちました。 どうやら使用していたモジュールのnode-sassでエラーが起きたようです。 Error: Missing binding /path/to/project/node_modules/node-sass/vendor/darwin-x64-64/binding.no
こんにちは。Nowcastでエンジニアをしている片山(@fozzhey)です。 NowcastではワークフローマネジメントツールとしてAirflowを採用しています。 Airflowは日本でもよく採用されており、実際に活用されている方も多いと思います。 しかし、Airflowを使うことはできるけど、実際にどういう仕組みで動いているのかは分からない方が多いのではないでしょうか? せっかくPythonで書かれているのに、Airflowのコードを読まないのはもったいない! ということで、この記事ではAirflowのコードリーディングを行いたいと思います。 なるべくコードやGithubのリンクを貼っていますが、手元のエディターでAirflowのリポジトリを開きながら読んでいただくとより理解が深まると思います。 コードリーディングの題材題材とするDAGとタスクこの記事ではAirflowが提供するサン
Kubernetes上にワークロードを展開するうえでServiceは欠かすことのできないリソースです。ServiceはPodに対するネットワークトラフィックを抽象化し、クラスタ内部/外部のロードバランサとして主に活躍します。 Serviceの細かい機能や設定に関しては公式のドキュメントに譲るとして、このドキュメントではServiceが作成される流れ[1]とルーティングへの影響を実装コードを読みながら解説します。 環境 このドキュメントではKubernetes v1.20を元に動作検証とコードリーディングをしています。また省略のため、クラスタの設定を次のとおりに設定してあります。 featureGateのEndpointSliceとEndpointSliceProxyingは有効 v1.20でのデフォルト設定 kube-proxyの起動パラメータproxy-modeはiptables 手元の
今回からは、紙面の都合で「RancherによるKubernetes活用完全ガイド」に掲載されなかったパートをご紹介します。 前回の記事では、Rancherのアーキテクチャの基本的なポイントを紹介しました。 Rancherのより詳細な動作/実装の仕組み、各Custom Resource Definition(以下、CRD)がどのように利用されているか、プロダクション環境で必須になるHAの仕組みなどは、2019年7月23日に発売された「RancherによるKubernetes活用完全ガイド(Think IT Books)」をぜひ確認していただければと思います。 今回から3回にわたって、Rancherをすでに利用されている方やRancherの動作原理をある程度理解されている方が、次につまずくポイントであるRancherの動作とコードのマッピング、Rancherのコードの読み方のヒントを紹介してい
この記事は freee Developers Advent Calendar 2020 の 21 日目です。 プロダクト基盤本部で本部長をしています浅羽と申します。プロダクト基盤は文字通りプロダクトの基盤を作っており、SRE、アカウントアグリゲーション基盤、セキュリティ、アプリケーションの基盤、品質、Eng企画と多岐にわたるチームになっています。普段は組織運営であったり困ったことに相談乗ったり、暇を見つけてコード書いたりしています。よろしくおねがいします! freeeではサービスの安定稼働を重視しており、SREではデプロイの高速化やカナリアリリースなどのような「仮にまずいリリースがでてもすぐに引っ込める」仕組みの開発をしています。もちろんサービス障害が発生しないようにQAチーム中心に対策していますが、失敗はある前提の元でいかにリカバリを素早くできるかも大切にしています。これはこれでどこかで
Amazon VPC CNI plugin for KubernetesのソースコードリーディングでEKSのネットワーキングについて理解を深める #1AWSkubernetesekscni はじめに この記事はAmazon EKS Advent Calendar 2019 11日目の記事です。 Amazon VPC CNI plugin for KubernetesのソースコードリーディングでEKSのネットワーキングについて理解を深める #1 (イマココ) Amazon VPC CNI plugin for KubernetesのソースコードリーディングでEKSのネットワーキングについて理解を深める #2 Amazon VPC CNI plugin for KubernetesのソースコードリーディングでEKSのネットワーキングについて理解を深める #3 巷ではEKSにNodeGroupを
SRE の田中 @kenzo0107 です。 Terraform コードリーディング会を実施した結果、 エンジニア組織全体でインフラの知識の底上げができた話です。 何故やることになったか? 弊社では以下のような背景がありました。 SRE チームが基本インフラ管理 会社の成長に比例し管理するインフラが増加⤴️ SRE チームの処理能力が頭打ちにとなる未来が予想され、 インフラ管理は以下体制への移行が求められていました。 上記の体制へ移行活動の一環として、 まず 「Terraform を知る」こと、ひいては 「AWS を知る」きっかけを作るべく、 Terraform コードリーディング会を開催することとしました。 勉強会の頻度や基本方針 週 1 回 30 分 × 15~6 回*1 自身の携わるプロジェクトの勉強会に参加*2 構成図を元にコードを読む範囲の構成を定める 以下を見ながら、設定の意味
内容 ツール git grep <keyword> git ls-files | grep <keyword> 辞書 言語のドキュメント Google 検索 書くもの ( エディター / 紙とペン / ホワイトボード ) コードを読むことの意味 現状の処理を理解する 的確な変更をするため 壊さないため 変更にかかる見積もりをするため テクニックを盗む どうやって実現しているんだろう? センスを磨く センスとは引き出しの多さ 目的設定の大切さ みんなでコードを読む準備 git clone https://github.com/cli/cli https://github.com/microsoft/vscode https://github.com/facebook/react-native 例題 -gh: label を編集するコードを探してみよう 課題 みんなでやってみよう gh: 特定
Next.jsのLinkとRouterの挙動がよく分からなかったので、Next.jsのコードリーディングをした。ページ遷移やページロードの仕組みが結構つかめたのでメモ。 LinkではクリックするとsingletonRouterのpushを呼んでいる pushはchangeメソッドを呼んでいる next/next-server/lib/router/router.ts change pathnameやqueryは、url、つまりLinkのhrefから抽出している routeはただpathnameから最後の/を消しただけ dynamic routeの場合(/posts/[id]みたいになっているやつ)なら、hrefとasを比べてパラメータを抜き出して、queryに突っ込んでいる このへんでgetRouteInfoを使って、routeとかpathnameからコンポーネントを特定しようとしてそう
リンクアンドモチベーションでエンジニアをしている野田です。 今回は、フロントエンド開発で利用しているVue Routerという画面遷移ライブラリが思った通りに動作しない事象があり、原因を探る中でVue Router内部のコードリーディングを行ったのでそのまとめを記載させていただきます。 背景 弊社プロダクトのフロントエンド開発を行う中で、データを保存しないまま画面遷移した場合に注意を促すモーダル(添付画像的なもの)の実装を行う必要がありました。 その際にキャンセルした場合は編集画面に留まり、問題ない場合は画面遷移をそのままさせる必要があったので、Vue RouterのBeforeRouteLeaveというナビゲーションガードでフックしてその分岐を実現しようとしました。 ところがモーダル表示後遷移する場合に、1回目は問題なく遷移できるのですが2回目は遷移しないという現象が起こっていました。特
BetterErrorsのコードリーディングをしました。 基本的にはRackミドルウェアでエラーハンドリングをして、エラーのバックトレースを表示。binding_of_callerがある場合はWeb上からirbでデバッグできるようにJSからRackミドルウェア向けにAPIを叩いてコマンドを実行・結果出力する、という感じです。 エラー表示するまで Railtieでは、productionではなくconsider_all_requests_localがtrueの場合のみBetterErrors::Middlewareを差し込みます。 module BetterErrors # @private class Railtie < Rails::Railtie initializer "better_errors.configure_rails_initialization" do if use_b
エンジニアリンググループの山口 (@no_clock) です。 クラウド電子カルテ「エムスリーデジカル」のシステム水平分割(参考)を実施するにあたり、 HTTP リクエストを分割システム群にルーティングするリバースプロキシを実装しました。実装規模は Go 言語で 500 行ほど。既に本番環境で運用しています。 この記事は、その際のコードリーディング内容を整理したものです。なお、 エムスリー Advent Calendar 2020 2 日目の記事です。 前提: 標準ライブラリ net/http/httputil ReverseProxy と WebSocket プロトコル net/http/httputil パッケージの ReverseProxy WebSocket プロトコル 本編: コードリーディング l.244-l.272: リクエストの透過 l.295-l.301: レスポンスの透
mermaid.js を使ってコードリーディングをするときに便利な機能をまとめてみる。 標準でクラスダイアグラムも使えるが、色々試した結果、応用の効くグラフを使う方法に落ち着いた。 スタイル 注目させたい関数の色やアウトラインを変更できる。 graph LR foo --> bar --> baz style bar color:#000,fill:#ccc,stroke:#333,stroke-width:4px graph LR foo --> bar --> baz style bar color:#000,fill:#ccc,stroke:#333,stroke-width:4px サブグラフ 名前空間やファイル名を表すのに便利。 graph LR subgraph Foo f1 --> f2 end f2 --> f3 subgraph Bar f3 --> f4 end gra
❯ tree -L 1 --dirsfirst . ├── dialects ├── License ├── README.md ├── association.go ├── association_test.go ├── callback.go ├── callback_create.go ├── callback_delete.go ├── callback_query.go ├── callback_query_preload.go ├── callback_row_query.go ├── callback_save.go ├── callback_system_test.go ├── callback_update.go ├── callbacks_test.go ├── create_test.go ├── customize_column_test.go ├── delete
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く