タグ

codereadingに関するmanabouのブックマーク (127)

  • 逆引きNashorn – やりたいことからNashornのサンプルコードを引く – yusuke.blog

    機械校正ツールであるRedPen(ライブデモ)は、デフォルトで内蔵している沢山の校正ロジックに加え、ユーザーがカスタムロジックを実装することができます。 自分で実装するにはJavaでValidatorというクラスを拡張すれば良いのですが、間口を広げるためにJavaScriptでもロジックを実装できるようにしました。 RedPen自体はJavaで実装しており、JavaからV8などを呼び出すのは大変なのでJava8に内蔵されているJavaScriptエンジンであるNashornを使いました。 あちこちの情報をかき集めて工夫をしたので、ここにまとめておきます。 やりたいことと、実現するためのコードを逆引き的に並べています。実現方法は全部違うけれども、どのコードもHello Nashornと出力するだけです。 ・JavaScriptを呼び出す ・JavaScriptの関数をJavaから呼び出す ・

    逆引きNashorn – やりたいことからNashornのサンプルコードを引く – yusuke.blog
  • PythonとQGISを使って地理空間を可視化する – UFO目撃情報でのケーススタディ | POSTD

    イントロダクション このチュートリアルでは、とあるデータサイエンティストの典型的な1日の過ごし方をご案内しましょう。まず地理空間のデータセットを入手し、不要なものを整理し、補強し、可視化します。使用するツールはPython、BeautifulSoup、pandasとNominatimライブラリ、そして地理情報システムの組織で広く使われているオープンソースの地図ソフトウェア、 QGIS です。 データセットになるのは、全米UFO情報センター(NUFORC)の このページ に掲載されているアメリカ全土のUFO目撃情報です。目標は、過去12カ月間に目撃されたUFOの地図を可視化することです。可視化によりデータセットをはっきりと示し、調査して、目撃されたとされるUFOの行動をよりよく理解することができます。可視化は地図作成プログラム内で行われます。QGISは地理空間データの手軽な試験的分析に特に向

    PythonとQGISを使って地理空間を可視化する – UFO目撃情報でのケーススタディ | POSTD
  • コードリーディングする時にやってること - パルカワ2

    kenjiskywalker [1:15 PM] @hisaichi5518: でかいソフトウェアのコードリーディングする時のコツ何かある? hisaichi5518 [1:17 PM] メソッドの見つけ方覚える 手帳に図を描く くらい kenjiskywalker [1:17 PM] 手帳か〜 hisaichi5518 [1:17 PM] 手帳に図を描くのあんまやらないけどw kenjiskywalker [1:17 PM] メモどうしてんの? hisaichi5518 [1:17 PM] してません! kenjiskywalker [1:17 PM] 脳内スタック? hisaichi5518 [1:18 PM] そう だからすぐ忘れて読み直す kenjiskywalker [1:18 PM] 反復派じゃん hisaichi5518 [1:18 PM] 今日もまたデバイス読んでる ken

    コードリーディングする時にやってること - パルカワ2
  • Jenkinsコードリーディング - JDK自動インストールの謎を追え - Qiita

    TL;DR 自動インストールでインストールされるJDKのアーキテクチャは、各Nodeを登録するために起動するslave.jarのJREのアーキテクチャだよ Jenkinsのソースコードは構造のバランスがいい Jenkinsは週次リリースできるソフトウェアのアーキテクチャを学ぶ題材として最適 きっかけ Jenkinsの便利な機能に、JDKの自動インストールがある。プロジェクトに利用するJDKを設定すれば、実行するノードに自動でJDKをインストールしてくれる、という素晴らしい機能だ。WindowsLinuxだと32bit、64bitのJDKが配布されているので、どうやってインストールするJDKを判定してるんだろう、と思ってコードを読み始めた。 ゴール 自動インストールを実装しているクラスを見つけ、どのように実装されているか理解すること 実装クラスを見つける 実装を見つけるときは、ログを出力し

    Jenkinsコードリーディング - JDK自動インストールの謎を追え - Qiita
  • Rack のソースコード読んでる - 大学生からの Web 開発

    途中だけどあとちょっと書ききるのがめんどくさくなったので公開する。書き始めたのは今週月曜日なのにこの進捗っぷりは、バイトだったりやる気が出なかったりで。 「他人のソースコードを読むのは良い学習だ」っていうのは明らかで、行うべきだと思う。 でこのエントリを書きはじめるつい数分前まで id:shgam さんと リモートソースコード読書会的な感じで Rack のソースコードを読んでた。読書会っていってもたいそうなものじゃなくて、ハングアウトで通話しながら Cloud9 を介して、2人で一行一行を追いながら読んでいく感じ。Rack けっこう大きいし、低いレイヤーの直接触ったことがないライブラリだったので、読むのは苦労してる。「うーん……うーん……」と悩んで、コメントにある URL を開いたら CGI の仕様書のような内容でそれもちょっと読んでみたり……。 余談だけど Cloud9 すごかった。つい

    Rack のソースコード読んでる - 大学生からの Web 開発
  • ghqを読んだ - AnyType

    Goの勉強のため、普段からお世話になっているmotemen/ghqを読むことにした。なお、現在の僕のGoの知識はgotourを完走した程度だ。最初から現在のコミットを追いかけるのは骨が折れそうだったので、最初のコミットbad21c7df65ccefd74530d6fcc5f0707b63e0266から読むことにした。 Goのプログラムはmainパッケージのmain()から実行されるため、main.goのmain()から読む。 import { // ... "github.com/codegangsta/cli" } func main() { app := cli.NewApp() app.Name = "ghq" app.Usage = "Manage GitHub repository clones" app.Version = "0.1.0" app.Author = "motem

    ghqを読んだ - AnyType
  • Rubyのgemのソースコードを効率的に読む方法 - おんがえしの blog

    いきなり読み始めてもよいのですが、事前に軽く準備しておくと読みやすくなります。 読みたいソースコードをダウンロード bundle install --path vendor/bundle 検索用のインデックスを貼る 読む bgm.rbを例に説明します。 読みたいソースコードをダウンロード hitode909/bgm $ git clone git@github.com:hitode909/bgm.git $ cd bgm bundle install --path vendor/bundle $ bundle install --path vendor/bundle . . Installing json 1.8.2 Installing multi_xml 0.5.5 Installing httparty 0.13.3 Installing itunes-search-api 0.1.

    Rubyのgemのソースコードを効率的に読む方法 - おんがえしの blog
  • segmentio/dekuのコードリーディング

    VirtualDOM Advent Calendar 2014 9日目の記事。 segmentio/deku は最近出たばかりのVirtualDOMの実装ライブラリです。 小さくて読みやすく拡張性がある実装を目指していて、既にあるvirtual-domとは別に作り始めたのも微妙にComponent周りの考え方が違うからのようです。 読んだもの: deku 0.0.2 読んだ日付: 2014年12月9日 絶賛実装中な感じなので、これを見たからといってもどうという感じではないと思います。 基的なVirtual DOMの構造はあるので、そういう意味では読みやすいです。 基的な使い方 var component = require('segmentio/deku'); // Buttonのcomponentを作る // <button>とonClickした時のイベントがある var Butto

    segmentio/dekuのコードリーディング
  • Linux Kernel Hack入門編 - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ

    この記事はLinux Advent Calendar 2014の25日目ですヽ(=´▽`=)ノ 今回はLinux Kernel Hack入門編ということで入門的なことを書いてみたいと思います。 まず使用する環境ですけど最近出たばっかのFedora 21のWorkstationにしました。まあ、今回の内容的にはディストリビューションは問わないんですが、多くの人が馴染んでいるであろうfedora系というかパッケージマネージャがyumということでこれにしてみました。 自分は普段Arch Linuxなんですけど、こっちだとkernelのmake install時にちょっとしたスクリプトを書く必要があったりするのもあって、fedoraのほうが手軽かなというのもあります。 カーネルコード・リーディング ブラウザベースでコード・リーディング 読めるソースは大概メインラインのカーネルということになりますが

    Linux Kernel Hack入門編 - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ
  • https://azu.github.io/slide/niconicode/code-reading.pdf

  • メソッド定義場所を探してソースコードを読んでみよう - Qiita

    のように、基クラスを拡張できてしまいます。 これは開発者誰もがクラスにメソッド定義が行えて強力な一方、 ソースを見て動作を知りたいと思った時に、どこでメソッド定義されているのか探すのが大変です。 そこでRubyでは、Method#owner(), Method#source_location()という定義情報にアクセス出来るメソッドが用意されています。 それでは冒頭の「3.days」がどこで定義されているか調べてみましょう。 m = 3.method(:days) # Methodオブジェクトを取得できる m.owner # どのクラスで定義されているか取得する => Numeric m.source_location # 定義場所と行番号を返却 => ["/my/preoj/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.8/lib/ac

    メソッド定義場所を探してソースコードを読んでみよう - Qiita
  • libchanを読んだ - 世界線航跡蔵

    libchan を読んだのでまとめてみる。 libchanとは libchanはdockerに使われているライブラリの1つで、先月の DockerCon で発表された。 非同期かつ一方向の通信チャネルをインプロセスでもネットワーク越しでも扱えるというGoライブラリである。 一方向とはいうものの、チャネル自体をデータに添えて他のチャネル越しに送れる。なので、返信や待ち合わせが必要ならば自分宛のチャネルを送って相手に使ってもらい、自分はそのチャネルの上で待機していれば良い。 早い話がGo言語の機能であるチャネルをネットワーク対応したようなものだ、と書いてある。 DockerはこのDockerConではDocker 1.0に加えてlibcontainer, libchan, libswarm, Docker Hubを発表していて一応キーノートの話題の1つではあったものの、 個人的にはlibswa

    libchanを読んだ - 世界線航跡蔵
  • railsコマンドを追う - 旧gaaamiiのブログ

    Ruby on Railsというフレームワークを使うとrails new Hogeとかでアプリケーションのひな形ができちゃって、rails serverでサーバーが立ち上げられたりするわけですが、これは一体どうなってるんだというのを追っていけたらなと思います。誰にでもわかるように書きたいです。今回こそはくじけずに書ききりたい。 railsとbin/railsの違い railsはシステムにインストールされたrailsコマンドを呼ぶ(/Users/ユーザー名/.rbenv/shims/railsみたいな)。 bin/railsはそのプロジェクト下のbin/railsのコマンドを呼ぶ。 bin/rails Railsプロジェクトを作ると、binというディレクトリの中にrailsというファイルがある。これをエディタで開いてみる。 $ vim bin/rails 中身はこんな感じ。 #!/usr/b

    railsコマンドを追う - 旧gaaamiiのブログ
  • まずコードの可読性を最適化しよう | POSTD

    最近では 最適化 という言葉を使う場合、GPUメモリ消費やネットワークトラフィックの最適化、などと明示的に言わない限りは、 実行時間の最適化 という意味で使われるケースがほとんどです。 自分が何を最適化しようとしているかを知ろう 私がプログラムを始めた頃、プロセッサの処理能力は遅く、メモリサイズもとても限られていて、キロバイト単位で計算されていました。ですからメモリ容量をよく考え、メモリ消費を上手に最適化しなくてはなりませんでした。大学では最適化について2つの極論を教わりました。 メモリを犠牲にして実行スピードを最適化する。 または何度も計算を繰り返して、メモリ消費を最適化する。 最近では誰もメモリについては大して気にしていません(デモシーン製作者、組み込みシステムのエンジニア、一部の携帯電話ゲームのディベロッパなどは別です)。RAMだけでなく、ハードディスクの容量についても同様です。 W

    まずコードの可読性を最適化しよう | POSTD
  • 今日から始めるNode.jsコードリーディング - libuv / V8 JavaScriptエンジン / Node.jsによるスクリプトの実行 | Tokyo Otaku Mode Blog

    ソフトウェアを正しく理解する唯一の方法はコードを読むことです。 ドキュメントを読めばそのソフトウェアが何を実装しているか分かりますが、どのように実装されているかまでは分かりません。 開発中に何らかのトラブルに悩まされたときや、効率的なコーディングをしたいと思ったとき、下位レイヤのソフトウェアを理解しておけば素早く対処できるシーンが多くあります。 ただ、コードを読むことは簡単なタスクではありません。 現代的なソフトウェアはそれなりの規模のコードを含んでいることがほとんどです。アーキテクチャ間の差異を吸収するためのコードなど、質的な機能を理解する上ではあまり重要ではないコードも含まれています。 何らかの問題が発生してからコードを読もうと思っても、準備なしでは関連する箇所を探すだけでかなりの労力が必要な作業となります。 従って、普段からコードを読んでおくことが重要です。 また、コードを読むにあ

    今日から始めるNode.jsコードリーディング - libuv / V8 JavaScriptエンジン / Node.jsによるスクリプトの実行 | Tokyo Otaku Mode Blog
  • Linuxのpipeの実装を見てみる - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ

    Unix V6のpipe()と比べてLinuxのpipe()どう実装しているんですかねーなんて話を最近したのでちょっと見比べてみた。 V6のpipeははじめてのOSコードリーディング 読書会 (15)でやったところなんだけど、俺は風邪ひいて家で引きこもってたので・・・ V6のpipeの挙動は大体こんな感じ。 pipeはルートディスクのストレージ領域を4096B(8ブロック)使用し実現する 4KBのデータ領域はひとつのファイルとして扱われる(inodeが割り当てられる) オンメモリではなくてストレージを経由するが、バッファサイズが小さいのでブロックデバイスのバッファキャッシュが効きやすいようになっている pipeの受け手がデータを読みだす前に他の優先度の高いプロセスがブロックデバイスを使用するとキャッシュが効かなくなる可能性あり でも、データはストレージに書かれているので内容が壊れると言った

    Linuxのpipeの実装を見てみる - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ
  • atom-reading.md

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    atom-reading.md
  • 社内Cartonコードリーディング会第一回のメモ - $shibayu36->blog;

    最近社内でCartonを使う機会が増えてきているのですが、そもそもCarton自体が何やってるかちゃんと把握できてなくてハマったりするので、社内有志でコードリーディング会を開催しています。今回は第一回のときに出てきに作ったメモを公開します。そのままメモを公開しただけなのでかなり雑です。間違ってることも多いと思います。 今回の目的 carton install周りで何が起こっているかざっと把握する 疑問とか snapshotが環境によってずれることがあるけどどうして? --deployment, --cachedとかがついた時に何が変わるか cachedしてもcpanにfallbackしてたけどなぜ インストール先の切替はどうするのか そもそもversion固定どうやってるか 順序は関係なくversionが固定されるのか cpanfileはperlスクリプトとして認識されるのか local以

    社内Cartonコードリーディング会第一回のメモ - $shibayu36->blog;
  • 社内Cartonコードリーディング会第二回のメモ - $shibayu36->blog;

    社内Cartonコードリーディング会第一回のメモ - $shibayu36->blog; に引き続き、第二回を開催したので、その時の内容をメモしておきます。そのままメモを公開しただけなのでかなり雑です。間違ってることも多いと思います。 今回の趣旨 今回は、cpanfile.snapshotがどのように作られるのか、という点に絞ってコードリーディングをしていきました。 cpanfile.snapshotとMYMETA.json, install.jsonの関係 各モジュールのMYMETA.jsonやinstall.jsonを使ってcpanfile.snapshotを作成している MYMETA.json にはそのモジュールの cpanfile とか pod とかから得られそうな情報が載ってる モジュール名、作者、build requires、runtime requires、test requ

    社内Cartonコードリーディング会第二回のメモ - $shibayu36->blog;
  • そろそろ理解しておきたいのでDockerのソースコードをビジュアルに読む! - Qiita

    まずはツールの紹介 昨今、注目を浴びているアプリケーションコンテナを作ったり管理したりできるDocker。 そろそろ中身も理解しておきたいところ。特に最近はlibcontainerというのができて、lxc依存すら切り離されているとの噂。 ただ、結構ソースコードの量も大きくなっているので(2014/4月現在 テストコード除いて70000行弱)、 さっと大まかに理解するためのツールを書いてみました。 このツールはgoのastからパッケージの間の依存関係を読んで、graphvizの解釈するdot言語に吐き出すツールです。 たとえば、最近話題のgo-xslateの全体像をつかもうと思ったら、 のようにすることで、 拡大 こんな感じにパッケージ間の依存関係を図示することができます。 これだけでも何となくどんな構造になってるかわかってきそうですね。 不安定性の表示 govizにはdot言語の出力の他に

    そろそろ理解しておきたいのでDockerのソースコードをビジュアルに読む! - Qiita