タグ

ブックマーク / blog.takuros.net (28)

  • 実行計画が解れば怖くない。SQL実践入門 - プログラマでありたい

    技術評論社さんから、SQL実践入門を献いただきました。ありがとうございます。 SQL実践入門の主題 このの目的は、「パフォーマンスの良いSQLの書き方、特に大量データを処理するSQLの性能向上の方法を理解すること」とあります。そのパフォーマンス向上の為の解として、SQLが内部的にどう処理されているかを表す実行計画の読み解き方を、いろいろなケースを上げながらひたすら解説しています。そして、何故その実行計画になるのか、データ構造やDBの動きとともに説明しています。ということで、実行計画大事という基かつ当たり前のことを、正面から取り扱っている良質のSQLです。 SQL実践入門の構成 SQL実践入門の章立ては、下記の通りです。 第1章:DBMSのアーキテクチャ──この世にただ飯はあるか 第2章:SQLの基礎──母国語を話すがごとく 第3章:SQLにおける条件分岐──文から式へ 第4章:集約

    実行計画が解れば怖くない。SQL実践入門 - プログラマでありたい
  • Capybara+PhantomJS+Nokogiriを利用してスクレイピング - プログラマでありたい

    CapybaraとPhantomJS、Nokogiriを利用してのクローラー・スクレイピングの紹介です。 PhantomJSとは? PhantomJSは、ヘッドレスブラウザと呼ばれるWebKitのエミュレータです。ヘッドレスブラウザとは、GUIではなくCUIから利用できるブラウザでプログラムから呼ばれます。UIのテストツールとしてSeleniumのようなサービスがあります。Seleniumはブラウザを直接操作するので、環境依存や動作が重いといった幾つかの問題点があります。そこでよく利用されるのがPhantomJSです。Seleniumに比べて、軽量というメリットがあります。RubyからPhantomJSを扱うライブラリとして、Poltergeistがあります。 Capybaraとは? Capybaraは、WebシステムのUI層のテストをサポートするためのライブラリです。主にDSL機能とDr

    Capybara+PhantomJS+Nokogiriを利用してスクレイピング - プログラマでありたい
  • 作って覚える転置インデックス、「検索エンジン自作入門」 - プログラマでありたい

    先行発売で、検索エンジン自作入門を購入しました。まだペラペラと眺めている状況ですが、これが非常に面白いです。 「検索エンジン自作入門」は、集めた文章をいかに整理するかをテーマとして扱っているです。整理するという意味は、検索エンジンを利用するというライフハック的な意味ではありません。整理する為の検索エンジン自体を自分で作ることで理解するという、極めて硬派なです。 「検索エンジン自作入門」とは? 「検索エンジン自作入門」は、未踏IT人材発掘・育成事業にスーパークリエータに認定された山田浩之氏と、Senna/groongaの開発者の末永匡氏の共著です。検索エンジンについて語らせたら、日でこれ以上の人たちはいないだろうという組み合わせです。ということで、内容は非常に濃いのですが、難しい内容を解りやすく解説されています。 一方で、扱っている内容は非常にマニアックです。下に目次付けておくので見て

    作って覚える転置インデックス、「検索エンジン自作入門」 - プログラマでありたい
  • 『Rubyによるクローラー開発技法』を書きました - プログラマでありたい

    勉強会やスライドで紹介していましたが、Ruby×クローラーという題材で、『Rubyによるクローラー開発技法』というを書かせて頂きました。RubyEmacsの鬼であるるびきちさんとの共著です。 Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例 作者: るびきち,佐々木拓郎出版社/メーカー: SBクリエイティブ発売日: 2014/08/25メディア: 大型この商品を含むブログ (1件) を見る このを書いた理由 そもそものキッカケは、るびきちさんのエントリーにある通り、SBクリエイティブの編集者さんが、クローラーの作成経験のある人を探していて、私の書いた「オープンソースのRubyのWebクローラー"Anemone"を使ってみる」を読んで打診してくださったというのが始まりです。 私自身も、Webからデータを収集して分析するということは、趣味として長年やってきました。一

    『Rubyによるクローラー開発技法』を書きました - プログラマでありたい
  • Amazon Elastic Load Balancing (ELB)の内部構造および拡張・障害時の動き - プログラマでありたい

    諸般の理由により、AWSの各サービスの挙動を改めて復習中です。まずは、Amazon Elastic Load Balancing 、通称ELBについてです。ELBの内部の動作については、公開されている公式ドキュメントが割とあります。是非一度しっかりと目を通しておくとよいですよ。少なくともAWSマイスターシリーズのELBについては、読んでおくべきです。簡潔にかつ詳しく説明されているので、理解が格段に進むでしょう。というところで、現段階で私が理解しているELBのアーキテクチャをまとめてみました。 ELBの内部構造 ELBは、ELBエンドポイントとELBインスタンス(仮称)によって構成されます。ELBインスタンス(仮称)の正式名称は知らないので、その名前で呼ぶことにします。ELBインスタンスには、グローバルIPが付与されます。ELBエンドポイントは、myLB-xxx.elb.amazonaws.

    Amazon Elastic Load Balancing (ELB)の内部構造および拡張・障害時の動き - プログラマでありたい
  • プラレール・レイアウト・パターン。折り返し編 - プログラマでありたい

    プラレール用の電池の考察の記事を書いたように、最近はもっぱら子供とプラレールで遊んでいます。作っているとついつい、プラレールのレイアウトに凝りだしてしまいます。レイアウトを作る上で、無意識のうちに満たしたいと思っている要件があるようで、考えてみたら次の3点がありました。 自動で、ずっと走りつづける 切り替えポイントを使う 構築した全てのレールを利用する 自動で、ずっと走りつづける 1つ目の「自動で、ずっと走りつづける」という要件は、出発点と終点で終わらないということです。つまりループしているということです。この要件を満たす最低限の構成は、次のレイアウトです。 構成 1/2直線レール 4 曲線レール 8 切り替えポイントを使う 上記の例は、簡単ですね。ただ、この構成だと飽きるのが早いです。そこで2つ目の要件である「切り替えポイントを使う」が出てきます。具体的には、ターンアウトレールや8の

    プラレール・レイアウト・パターン。折り返し編 - プログラマでありたい
  • あらためてRuby製のクローラー、"anemone"を調べてみた - プログラマでありたい

    3年ほど前に、Ruby製のクローラー"anemone"を紹介しました。その当時から完成度が高く、Rubyでクローラーを使う場合はanemoneを利用してきました。最近、他に新しくて良いのがないか調べましたが、機能面の網羅性という意味でanemoneを超えるものは見つけられませんでした。そこで改めてanemoneのソースを読んでみたところ、クローラーが必要とする機能を必要最小限で実装され、やはり中々良い出来です。冬休みの宿題ではないですが、勉強の意味を兼ねてソースを追っていくことにします。 Anemoneが利用しているライブラリ一覧 anemoneが利用しているライブラリは、4種類に分類できます。 Ruby標準or一般的なライブラリ データ取得で利用しているライブラリ データ解析で利用しているライブラリ データ保存で利用しているライブラリ この分類別に構造をみるとわかりやすいので、順番に追っ

    あらためてRuby製のクローラー、"anemone"を調べてみた - プログラマでありたい
  • 複数並行可能なRubyのクローラー、「cosmicrawler」を試してみた - プログラマでありたい

    最近のRubyのクローラーは、EventMachineを使って並列化するのが流行のようです。EventMachineは、非同期処理をお手軽に実装できるフレームワークです。Rubyのスレッド機能との違いは、Reactorパターンを使いシングルスレッドで実装している点です。こちらのブログが詳しいので参考になります。 「見えないチカラ: 【翻訳】EventMachine入門」 EventMachineを使うと、イベント・ドリブンの処理を簡単に実装出来ます。使い方は簡単ですが、通常の同期処理やスレッドをつかった処理に比べると、どうしてもコードの記述量は多くなります。今回の例である並列化してクローラーを走らせるという用途であれば、短時間で多くのサイトにアクセスするのが目的です。イベント・ドリブンで並列化処理を実装するのが目的ではないはずです。その辺りの面倒くさい処理を実装したライブラリがcosmic

    複数並行可能なRubyのクローラー、「cosmicrawler」を試してみた - プログラマでありたい
  • 今まで読んで良かった本 100冊 - プログラマでありたい

    今まで読んできて良かったなぁというをまとめてみました。せっかくなので100冊をまとめて一挙公開です。趣旨としては名著を紹介する訳ではなく、考え方の上で参考になったを紹介するという方針です。しかしロクに記録していないし記憶も定かではないので、当に良いと思ったものでも抜けているものも多数あると思います。また技術書については、専門外の人には意味が無いので省いています。 一般的にを勧めるうえで、100冊並べるというのは一番効率が悪い方法です。書評ブログとしては、1冊もしくは類似の2〜3冊くらいを紹介するのが一番効率が良いのです。でも、私は意地悪なので、を1冊紹介してくださいと言われると、10冊紹介するようにしています。暇な時に眺めてください。 歴史関係の 私がジャンルとして一番好きなのは、歴史関係のです。時間が許す限り延々と読んでいたいですが、そうも言っていられないのが現実です。面白

    今まで読んで良かった本 100冊 - プログラマでありたい
  • 掃除機は、ダイソンよりルンバさんより、マキタの充電式クリーナー - プログラマでありたい

    小さな子供がいるので、事の時にパンくずなどをボロボロとこぼして家族のストレスの一因となっていました。そんな時に勧められて購入してみたのが、充電式クリーナーです。これが中々良かったです。勧めてくれた人は、以下の3点を強調していました。 充電式クリーナーのお勧めのポイント 軽くて使いやすい 手軽に使えて便利 ちょこっと使いが出来る まず軽さですが、重さが1kgと片手で簡単に扱えるレベルです。一般的な掃除機は3〜4kgが主流なので、それに較べて格段に軽く感じます。次に手軽さ。軽いということに加えて、コードレスというのが大きいです。従来だと、掃除機を運んで電源コードを挿して、別の部屋を掃除する時はまた電源コードを挿し直してという手順が必要でした。それが、コードレスだとささっと掃除出来ます。思った以上に便利です。 そして、最後のちょこっと使いが出来るという点ですが、上記2点の結果です。軽くて手軽な

    掃除機は、ダイソンよりルンバさんより、マキタの充電式クリーナー - プログラマでありたい
  • はてなブックマークとSEOと検索エンジンと@fladdictさん - プログラマでありたい

    体調わる子さんのブログのアクセス数とAmazonアフィリエイトの結果を見て、割りと驚愕を受けました。50万PVで6千円台とのことで、恐ろしく効率が悪いなぁと。 一方で、はてブの傾向を考えると納得いく部分もあります。はてブ経由のアクセスは、ハッキリ言って殆ど収益性はないのです。以前、はてブ1万ブックマークの顛末で軽く触れましたが、トップに載って数万アクセスを得ても全く物は買ってくれません。当に買ってくれません。ブコメの欲しいってなんだよと思うくらい買ってくれません。儲かってるんだろうなぁと羨ましがる必要が無いほど、買ってくれません。同様にGoogle Adsenseのクリック率も低いです。はてなの経営が大丈夫かと思う程、広告は踏まれません。それほどに訓練されているのが、はてなブックマークユーザです。 では、収益性が高いページというのは、どういったページなのでしょうか?それは、検索経由でア

    はてなブックマークとSEOと検索エンジンと@fladdictさん - プログラマでありたい
  • ワインの品種。まずは3つだけ覚えておけば大丈夫 - プログラマでありたい

    プログラマ系ブログですが、ワインの記事が好評で生き方に迷っています。さてワインを選ぼうとする時の最初の障壁は、品種だと思います。ワインのリストは大抵の場合、銘柄の他に生産地と品種が書いています。銘柄を知らないとしたら、生産地と品種(と値段)で選ぶしかありません。でも、ワインのブドウの品種は多すぎてとてもじゃないけど覚えられませんよね?そんな人に、最低限覚えておいて欲しい赤ワイン用の3つの品種を紹介します。 覚えておくと良い品種は、3種類だけ ワインのブドウの品種は、基的にはフランスのボルドー&ブルゴーニュの系列とイタリア&スペインの系列がメインです。そして、イタリア&スペインの品種はかなり細分化しているので最初は覚えるのを諦めて、フランス系の品種を覚えましょう。アメリカ・チリ・オーストラリア・ニュージランド・南アフリカで栽培される品種は、フランスとほぼ同じです。そうすると、品種をみるだけ

    ワインの品種。まずは3つだけ覚えておけば大丈夫 - プログラマでありたい
  • 私が旨いと思う、普段飲みの1,000円台のワイン - プログラマでありたい

    昨日、軽い感じで1000円台のワインの選び方を書いたら、かなりの反響を頂きました。一方で、内容がないとか、解ってないとか、店員に聞けとか、割とフルボッコだったので少しグヌヌとしております。私はマズいワインに当たらない確率を上げる方法を書いたつもりですが、その当たりは余り伝えられなかったようです。一方で、地域にとっては状況が違うの部分が多いので出来るだけ抽象的に書いたのは問題だったかもしれません。その分、ブコメで俺が考える最強のワインを披露してくれているので、まぁ良いかなと思います。 味覚については人それぞれなので、私が勧めるものも合う人も合わない人もいると思います。でも、折角なので私が定期的に購入してセラーに入れておいているワインを紹介します。好きなように突っ込んでください。 ナパ・セラーズ ピノ・ノワール アメリカ 楽天で見ると2,000〜3,000円くらいで売っているけど、たまにヤマヤ

  • 身も蓋も無い1,000円台のワインの選び方 - プログラマでありたい

    フランス人じゃないですが、日常的にワインを飲んでいます。しかし、お大尽ではないので、必然的にコストパフォーマンスの良いワインを探すことになります。だいたい1000円台のワインを飲むことが多いです。最近では選び方が解ってきたので、千円台のワインであれば比較的大外れすることもなくなりました。 大体のポイントをまとめてみると、身も蓋もない結果になりました。賛否両論だと思いますが、参考にして頂ければと思います。 スーパーで買わない まず1つ目ですが、スーパーで買わないということです。以前にも書きましたが、大手スーパーは大量仕入れが前提となります。それに答えられる生産者は、大量生産する生産者だけになります。大量生産の生産者は自前の畑だけではぶどうが足りないので、近隣の農家からぶどうを買い集めることになります。その構造になると、ぶどうを納める農家側の行動原理は、出来るだけ多く納めることになります。そう

    身も蓋も無い1,000円台のワインの選び方 - プログラマでありたい
  • 家庭内ストレージ/NASのあれこれ。保存方法からバックアップ対象まで - プログラマでありたい

    はてブを見てると、NASやクラウドドライブなどストレージ関係のエントリーが幾つかあがっていました。私は、家庭内ストレージには比較的うるさいので一言いわせて頂きます。 家庭内でのストレージの種類 まずは一般的に家庭内のストレージはどういった種類があるのか整理してみましょう。主に下記の5種類くらいに分類出来るのではないでしょうか? パソコンのローカルストレージ(HDD/SSD) スマフォ/タブレットのデータ領域 NASなどのネットワーク接続型共用ストレージ Dropboxなどローカル同期型のクラウドストレージ Amazon S3やBitcasaなどのローカル非同期型のクラウドストレージ ストレージを考える上でのポイントは、速度・容量・価格の3点です。 まず速度については、パソコンからファイルを読み取るスピードです。小さいサイズのファイルだと余り問題になりませんが、動画系など大きなファイルだとこ

    家庭内ストレージ/NASのあれこれ。保存方法からバックアップ対象まで - プログラマでありたい
  • 冷蔵庫の電気代の真実。小さい冷蔵庫より大きい冷蔵庫の方が電気代が安い - プログラマでありたい

    先日、引越を機に冷蔵庫を買い換えました。 ずっと140Lくらいの小さな冷蔵庫を使ってたのですが、一気に400Lクラスの冷蔵庫に買い換えました。購入にあたって色々選定する際に初めて知ったのですが、最近の冷蔵庫はサイズが大きいほど電気代が安いという衝撃の事実です。何を言ってんだお前と思われそうなので、下の表を見てください。パナソニックのサイトから、サイズごとにピックアップしてまとめました。(消費電力と電気代は、価格コムから引っ張ってます。) 製品名 容量 消費電力 電気代 NR-B145W 138L 300kWh/年 6,900 円 NR-F437T 426L 240kWh/年 5,520 円 NR-F607XV 603L 230kWh/年 5,290 円 大きい物ほど電気代が安くなる理由ですが、一つ一つの部品が良いものを使えるお陰のようですね。断熱材であったり圧縮機、インバータなどなど。もし

    冷蔵庫の電気代の真実。小さい冷蔵庫より大きい冷蔵庫の方が電気代が安い - プログラマでありたい
  • 金融機関の口座集約アプリの危険性について - プログラマでありたい

    先日、銀行口座の口座集約のとあるiOSアプリの記事について、危険だよなぁと何気なく呟いたら中の人からリプを貰いました。Twitterで呟いているのですが、文字だけでは解りにくいのでまとめてみます。ただ、そのアプリ固有の問題ではなく、構造的な問題なのでアプリ名は開示しません。(安全なので安心ですという論調は、どうかと思いますが。。。) 口座集約アプリの構造 口座集約のアプリは、アカウント・アグリゲーション(Account aggregation)サービスと言われています。サービスの実体は、複数の銀行の口座情報とID,Passwordを預かり、代行でログインして結果のhtmlを解析(スクレイピング)して利用明細や残高を集約するものです。口座とID,Password情報、解析エンジンをどこに置くかで、クライアント型とサーバ型に分類されます。 サーバ型アプリケーション まずサーバ型アプリケーション

    金融機関の口座集約アプリの危険性について - プログラマでありたい
  • 技術を伝えても、技術者の価値はなくならないという話 - プログラマでありたい

    増田で、この記事が話題になっていました。 正社員に仕事を教えたくない 私は今年で契約が切れるパート。同じ部署に昨年、数歳年下の新入社員が配属された。 彼女は私が少ない仕事から数年かけて学び、また効率的に処理できるように試行錯誤して会得したノウハウを、たくさんの仕事の中でどんどん吸収している。これまで私しか使えなかったソフトも、ほぼ同じくらい使えるようになった。 この記事書いた人の仕事の内容はよく解らないので元ネタに対するコメントは差し控えます。一方で、これを見ていたITエンジニアのクラスタっぽい人々が、技術職にとっては技術を伝えると自分の価値が無くなるよなぁ的な発言をしているのを幾つか見たののが興味深かったです。なので、ITエンジニアにとっての技術と、それを伝えるということを考えてみました。前提として、ITエンジニア技術についてです。製造業の技術流出は別の問題だと思うので、対象にしてい

    技術を伝えても、技術者の価値はなくならないという話 - プログラマでありたい
  • ちょっと内緒にしたいスポットインスタンスの話 - プログラマでありたい

    ちょっと内緒にしたいような気がしますが、知っていたら確実に得をするAWS EC2のチップスがスポットインスタンスの活用です。まずスポットインスタンスとは?AWSのインスタンススポットのページを読むと大体解りますが、簡単に説明するとAmazonで余剰のEC2のインスタンスを入札制で大幅に安い値段でを利用する仕組みです。デメリットとしては、スポットインスタンスのインスタンス価格が入札価格を上回った場合、情け容赦なくインスタンスがストップされることです。ということで、Amazonの推奨としては以下のように、通常のインスタンスを補完するような位置づけとなっています。 オプションのタスク 遅延可能なタスク コンピューティング能力を追加することで高速化できるタスク 他の方法ではアクセスできない大量のコンピューティングインスタンスが必要になるタスク しかし、制約があるものの圧倒的に安いです。オンデマンド

    ちょっと内緒にしたいスポットインスタンスの話 - プログラマでありたい
  • サーバ構築・デプロイの自動化の話。或いはChefとCapistranoの素敵な関係 - プログラマでありたい

    最近のChefのブレイクで、サーバの構築も自動化でという潮流になっています。そんな中でチラホラ見受けられるのが、アプリのリリースもChefでという考え方です。私は微妙に違うのではないかなぁと思っているので、ちょっと考えを整理してみました。併せてCapistranoの紹介もしてみます。 Chefの役割 まずChefについてです。Chefの役割としては、サーバの状態を管理するものです。ここで言うサーバの状態というのは、各種ミドルウェアのインストール状態&設定です。いわいるサーバ構成ですね。またChefを使う最大のメリットは、開発環境やステージング環境、番環境と全ての環境を同じスクリプトで構築するので、手作業によるミス等による微妙な差異が発生しなくなることです。 さてここで問題になるのが、サーバ上のアプリケーションのコードやデータベースのテーブル定義は、サーバの状態に入るのかという点です。入る

    サーバ構築・デプロイの自動化の話。或いはChefとCapistranoの素敵な関係 - プログラマでありたい