タグ

hkataokaのブックマーク (2,297)

  • RESTful APIの記述標準化を目指す「Open API Initiative」をマイクロソフト、Google、IBMらが立ち上げ。Swaggerをベースに

    RESTful APIの記述標準化を目指す「Open API Initiative」をマイクロソフト、Google、IBMらが立ち上げ。Swaggerをベースに 10年以上前、XMLの登場に続いてXMLベースのAPIを記述する標準フォーマット「WSDL」が提唱されました。 WSDLにはAPIの仕様がマシンリーダブルな形で記述されており、APIを呼び出すためのプロトコルやデータフォーマットをあらかじめ知ることができます。WSDLを利用することで、APIをコールするためのコードを自動生成することが可能でした。 しかしXMLベースのAPIは期待されたほど普及せず、現在ではよりシンプルなRESTful APIが事実上の標準となっています。 そしてRESTful APIのためのWSDLとも言うべき、RESTful APIのインターフェイスを記述するための標準フォーマットを推進する団体「Open AP

    RESTful APIの記述標準化を目指す「Open API Initiative」をマイクロソフト、Google、IBMらが立ち上げ。Swaggerをベースに
    hkataoka
    hkataoka 2015/11/09
  • Airbnbのメインデータベースをどうやって2週間で分割したか | POSTD

    スケーリング=時速160㎞で走行しながら自動車の全ての部品を取り替えること -Mike Krieger  Instagramの共同設立者@ Airbnb OpenAir 2015 Airbnbのピーク時のアクセス数は、毎年夏のピーク時で見ると年率3.5倍で増加しています。 2015年夏の旅行シーズンを前に、Airbnbの基盤チームは、夏季のアクセスで予想されるデータ通信量に対処するため、データベースのスケーリングで忙殺されていました。中でも特に全体への影響が大きかったプロジェクトが、特定のテーブルを、アプリケーションの機能に従ってそれぞれのデータベースに分割することを目的としたプロジェクトでした。これは通常、アプリケーション層のフォームの変更やデータ移行、データの整合性を保証する堅牢性テストなど、最小限のダウンタイムで多大な技術投資を必要とするものです。何週間もかかるエンジニアリング時間

    Airbnbのメインデータベースをどうやって2週間で分割したか | POSTD
    hkataoka
    hkataoka 2015/11/03
  • ISUCON5 で優勝しました - 酒日記 はてな支店

    ISUCON5、予選を無事通過して10/31(土)に開催された選に参加し、優勝しました。 チームは ISUCON 1 の時の初代「fujiwara組」再結成ということで、@songmu, @sugyan とのカヤックの元同僚メンバーです。 最初に、毎回素晴らしいイベントを開催、運営していただいている @941 さんをはじめとした運営チームの皆様、出題の @tagomoris さん、@kamipo さん、他すべての協力いただいた皆様に感謝を申し上げます。当にありがとうございました! 競技開始からベンチ実行まで 作った #isucon pic.twitter.com/5RZkPUsaPu— fujiwara (@fujiwara) 2015, 10月 31 ロゴがなかったので作った。 競技開始、まずは3台で相互にsshできるようにするのに一瞬戸惑う。port 22は開いていて、会場からは接

    ISUCON5 で優勝しました - 酒日記 はてな支店
    hkataoka
    hkataoka 2015/11/02
  • ISUxi-perl6/lib/Isucon5/Web.pm6 at master · sugyan/ISUxi-perl6

    hkataoka
    hkataoka 2015/11/02
  • Perl6での6記号プログラムの作りかた - すぎゃーんメモ

    先日、 Perl6で記号Hello worldする - すぎゃーんメモ perl6なので6種類の記号だけでプログラムを書く - すぎゃーんメモ の2つの記事でPerl6の記号プログラムを紹介したけど、その作り方については何も言及していなかったので ちゃんと書いておこうと思います。 おさらい: Perl5における記号プログラムの基礎 Perl5における記号プログラミングの手法は古くから確立されていて、 記号だけのPerlプログラミングの基原理 - JPerl Advent Calendar 2010 Sym Track の記事にも全貌が載っていますが、要するに「任意のプログラム文字列を排他的論理和(XOR)を使って生成し、それを拡張正規表現を利用してevalする」という方法です。 01100000 => 0x60 ('`') ^) 00100001 => 0x21 ('!') ------

    Perl6での6記号プログラムの作りかた - すぎゃーんメモ
    hkataoka
    hkataoka 2015/10/27
  • Perl6 のフィボナッチ数列生成についての解説 - tokuhirom's blog

    mattn ブログで紹介されている Perl6 のフィボナッチ数列が奇妙に見える人が多いようなので、まともな解説。 ref. http://mattn.kaoriya.net/software/lang/perl6/20151026144119.htm フィボナッチ数列とは以下のような数列です。 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 最初の2つの数字が 1, 1 でして、その後のものは直前2つの数字を足したものです。 よって、Perl5 で記述した場合、先頭10個のフィボナッチ数列を求めるには以下のようになります。 use v5.16.0; sub fib { state %memo; # 一応 memoize ぐらいはしておく my $n = shift; $memo{$n} //= do { if ($n == 0 || $n == 1) { 1 } els

    hkataoka
    hkataoka 2015/10/27
  • Big Sky :: Perl6 の無限リストとダイナミックバインディングが最強すぎる

    Perl には x 演算子があり、x 3 といった具合に繰り返し回数を付ける事で連続した文字列を簡単に作り出すことが出来る。 say 1 x 3; # 111 say "foo" x 3; # foofoofoo これは Perl5 でもお馴染み。しかし Perl6 の Range は凄い。 say 1 xx 3; # (1 1 1) say "foo" xx 3; # (foo foo foo) 連続した配列要素が作り出せる。それどころか無限リストが作り出せる。 say 1 xx *; # (...) say "foo" xx *; # (...) もちろん無限数列も作れる。 (1 .. *)[^10].perl.say; # (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) fibonacci 数列もこんなに簡単。 (1, 1, *+* ...^ *)[^100].per

    Big Sky :: Perl6 の無限リストとダイナミックバインディングが最強すぎる
    hkataoka
    hkataoka 2015/10/26
  • 乱数の性質とセッショントークンの作成 - $shibayu36->blog;

    ユーザアカウントのログイン機能とか作ってると、何らかの形でセッション用のトークンを作成する機会がある。今まではこれは適当にランダムな値を利用していればいいんでしょと思っていたのだけど、ちょっと違ったのでメモ。 乱数の性質 http://akademeia.info/index.php?%CD%F0%BF%F4によると、乱数には三つの性質がある。 無作為性:統計的な偏りがなく、でたらめな数列になっているという性質。 予測不可能性:過去の数列から次の数を予測できないという性質。 再現不可能性:同じ数列を再現できないという性質。再現するためには、数列そのものを保存しておくしかない。 この時、少なくとも無作為性のみ満たされていると弱い擬似乱数、無作為性と予測不可能性が満たされていると強い擬似乱数、全てが満たされていれば真の乱数と呼ばれる。ソフトウェアだけでは、真の乱数を作ることができず、真の乱数に

    乱数の性質とセッショントークンの作成 - $shibayu36->blog;
    hkataoka
    hkataoka 2015/10/25
  • [翻訳] コードレビューについて

    この記事は::..: glen.nu :.: ramblings :.: on code review :.::の意訳記事です。@9len氏の許可を受けて投稿しています。 This article originally appeared in English at :..:: GLEN D SANFORD :.: RAMBLINGS :.: ON CODE REVIEW ::..: and has been translated with @9len’s permission for posting to this blog in Japanese. この記事は2014年3月に書いている。Twitterでユーザ検索チームを私が率いていたころの話だ。この記事は、コードレビューに関するセオリー・アプローチを体系化することを狙いとしていて、いくつかの基的なプラクティスの確立を狙っている。あな

    hkataoka
    hkataoka 2015/10/25
  • Gitのコミットメッセージの書き方 | POSTD

    (訳注:2015/10/31、いただいた翻訳フィードバックを元に記事を修正いたしました。) (訳注:2015/11/1、いただいた翻訳フィードバックを元に記事を再修正いたしました。) 訳: プロジェクトが長引くほど、私のGitのコミットメッセージは情報が薄くなっていく。 イントロダクション | 7つのルール | ヒント イントロダクション:なぜ良いコミットメッセージを書くことが重要か Gitのリボジトリのログをランダムに閲覧すると、ひどいコミットメッセージを目にすることがあります。例として、私が昔書いたSpringにコミットした これらのgem を見てみましょう。 $ git log --oneline -5 --author cbeams --before "Fri Mar 26 2009" e5f4b49 Re-adding ConfigurationPostProcessorTest

    Gitのコミットメッセージの書き方 | POSTD
    hkataoka
    hkataoka 2015/10/24
  • EthernetやCPUなどの話 | GREE Engineering

    こんにちわ。せじまです。今年に入ってからアクティビティトラッカーを二回壊しまして、新しい分野の製品って設計いろいろ難しいんだなと、しみじみ思う今日このごろです。 先日、社内勉強会で EthernetCPU などの話をしました。前回のCPUに関する話に続き、今回のスライドも幅広い方に読んでいただけそうな内容かと思いましたので、公開させていただくことにしました。前回のスライドを読んでない方は、できればそちらを読んでいただいてからの方が、より理解が深まるのではないかと思います。 忙しい人のために三行でまとめると 2020年代には、サーバのネットワークインターフェースが 40Gbps 超えてそうな予感 もし Ethernet でそれだけ大量のパケットをさばくなら、(標準化されてないけれど) Jumbo Frame 使わないと厳しいかも 2020年代には、NICやブロックデバイス等、CPUを取

    EthernetやCPUなどの話 | GREE Engineering
    hkataoka
    hkataoka 2015/10/23
  • perl6 の環境を手っ取り早く構築してサクッと Hello world する - その手の平は尻もつかめるさ

    記事はサクッと perl6 (rakudo) が動く環境を作って,ズバッと Hello world してみるというやつです. 早速行ってみましょう. 1. rakudobrew をインストールする rakudobrew をインストールします rakudobrew というのは perl5 で言うところの perlbrew/plenv,ruby で言うところの rvm/rbenv のようなものです. なぜこうした物を使うかというと,perl6 は開発が非常に活発な言語であるためにデイリーで変更が入っていて,直っていたり壊れていたりするためです. 2015年10月現在,perl6 をやるときは rakudo と MoarVM は HEAD を使うというのが紳士の嗜みとなっています *1. というわけで入れましょう. git clone https://github.com/tadzik/rak

    perl6 の環境を手っ取り早く構築してサクッと Hello world する - その手の平は尻もつかめるさ
    hkataoka
    hkataoka 2015/10/22
  • Big Sky :: Perl6 の grammar で俺言語「しょぼいスクリプト」を作った。

    Perl6 には Grammar という機能があるのですが、これがまた凄いんです。スキャナとトークナイザと処理系が引っ付いている様な物がデフォルトで提供されているんです。 通常はこれらが別の機能として提供されており、プログラミング言語を実装する過程でデータの受け渡しがシームレスではなく、実装を変えたりするのが非常に面倒だったりします。しかしこれが Perl6 という一つの処理系の中で提供されてしまっている為、来であれば数百ステップくらい掛かってしまう俺言語のコードが50ステップ程度で書けてしまいます。 use v6; grammar SyoboiScript::Grammar { token num { <[0..9]>+ } token ident { <[a..z]>+ } token op { '+' || '-' || '*' || '/' } token exp { <iden

    Big Sky :: Perl6 の grammar で俺言語「しょぼいスクリプト」を作った。
    hkataoka
    hkataoka 2015/10/20
  • highway という高速検索ツールを作りました · けんごのお屋敷

    いまや grep、ack、ag、pt、sift など様々な grep ツールが存在し、高速 grep ツール戦線が激化している昨今ですが、いかがお過ごしでしょう。私は普段から検索ツールには pt を使っていますが、ふとしたことから文字列探索アルゴリズムに興味がわいてきて highway という高速パターンマッチングツールを開発しました。pt や sift が流行りの Go 言語で実装されている中、我が道を行く highway は C 言語での実装にしました (単に Go 言語を知らないだけとも言う\(^o^)/)。 highway (github) highway とは マルチスレッドで動作する高速パターンマッチングツールです。速そうな名前をつけたくて「高速」でググったら「高速道路」がたくさん出てきたのでこの名前になりました。そりゃそうだ。 機能 基的な機能としては pt とほぼ同じです

    highway という高速検索ツールを作りました · けんごのお屋敷
    hkataoka
    hkataoka 2015/10/19
  • t_wadaさんが提案するJavaScript速習コースを実際に履修してみた - WEB SALAD

    はじめに もう2ヶ月前の話なのですが、日のTDD第一人者で、最近はpower-assert-jsの開発などJS界隈でも活躍されている@t_wadaさんが、Twitterでこんな提案をされていました。 『JavaScript: The Good Parts』と『WEB+DB PRESS Vol.87 第1特集』のあわせて250ページ未満でES6までの全体像をつかむ速習コースのご提案 http://t.co/doPQ7V4enw http://t.co/NKTGz3syk7— Takuto Wada (@t_wada) 2015, 8月 10 ちょうどこの頃、初めてのgemを作り終え、Ruby以外の言語に対する学習欲が高まっていたので、この提案に乗っかってみることにしました。 エントリでは、この速習コースを実際に履修した感想と、結果どうなったのかを書きたいと思います。 履修前の状態 ずっと

    t_wadaさんが提案するJavaScript速習コースを実際に履修してみた - WEB SALAD
    hkataoka
    hkataoka 2015/10/19
  • 更新系SQLを手で打つときに気をつけていること

    WHERE条件をつけまくる UPDATE user SET age = 35 WHERE id = 1 AND name = 'Songmu' AND age = 34 idだけで絞れるけど name も付けてレビュワーフレンドリー 変更前の値も条件に含める 34 -> 35になることがわかる 間違えていた時も戻せる ユーザー操作とのコンフリクトを検知 万が一履歴から誤爆しても更新されない(可能性が高い) SETとWHEREを一行にまとめてるのは変なところで小指が滑るのが怖いため WHERE条件応用編 UPDATE user SET weapon_id = (SELECT id FROM weapon WHERE id = 100 AND name = '村正') WHERE id = 1 AND name = 'Songmu' AND weapon_id = (SELECT id FRO

    hkataoka
    hkataoka 2015/10/17
  • WEB系各社で使われている監視ツールまとめ - mikedaの日記

    次世代 Web カンファレンスで監視について話すことになったので、ネタとしてWEB系各社で使っている監視ツールを調査中。 うちはこれ使ってるよ!!!ってのがあったら@mikedaにメンションください! Cookpad Zabbix 昔はNagios+muninだけど台数増えて性能的に破綻した ビューはそのままじゃ辛いのでmunin風に表示するのを自作 StatusCake DataDog。サービス系、サーバに紐付かない系の監視に。DashBoard便利 waker。通知用。PagerDuty高い、と言ってryot_a_raiが秒で作ったらしい Kibana imon。独自のリアルタイムなサービス稼働状況表示ツール NewRelic 試し中なもの Real-User Monitoring : JSでbeacon飛ばしてfluentd -> BigQuery。Google SpreadShee

    WEB系各社で使われている監視ツールまとめ - mikedaの日記
    hkataoka
    hkataoka 2015/10/17
  • Redis作者自身によるRedisとMemcachedの比較 | Yakst

    Redisの作者antirez氏自らによる、memcachedとRedisの長所短所の比較。特に、Redisを単なるキャッシュ用アプリケーションとしてmemcachedと比較することの間違いと、それぞれの向いている使用方法についての私見。 あなたが私と面識があるなら、私が競合製品があることが悪いと考える人間でないことはご存知でしょう。ユーザーに選択肢があることは当にいいことだと思っていますし、だからこそ他の技術とRedisを比較するようなことはほとんどしませんでした。 しかし、最適なソリューションを選ぶためには、ユーザーは正しく情報を持たねばならないのも確かです。 この記事を書くのは、有名なライブラリであるSidekiqの作者として知られるMike Perhamが、Redisのバックエンドストレージとしての使い方を書いた記事を読んだのがきっかけです。従って、私はMikeがRedisに「反

    Redis作者自身によるRedisとMemcachedの比較 | Yakst
    hkataoka
    hkataoka 2015/10/14
  • Perlのモジュールを静的解析してPlantUMLでクラス図をレンダリングするやつ - hitode909の日記

    仕事のコードで,子クラスがたくさんいる難しいクラスがいて,継承関係を整理したいけど,どこがどうなってるのか一見すると分からなかったので,静的解析してクラス図をレンダリングするやつを作った. github.com package2plantumlclassdiagramっていうコマンド(長い)に,このファイルたちをレンダリングしてくれ,って渡して,PlantUML形式のファイルを作る PlantUMLでPNGとかに変換 という手順で使う. % package2plantumlclassdiagram ~/Plack/lib/**/**.pm > plack.plantuml % GRAPHVIZ_DOT=$(which dot) plantuml -charset UTF-8 -tpng plack.plantuml Plackのソースコード全体をレンダリングするとこんなかんじで,継承してる

    Perlのモジュールを静的解析してPlantUMLでクラス図をレンダリングするやつ - hitode909の日記
    hkataoka
    hkataoka 2015/10/13
  • Elixir

    Kaizen Platform, Inc の社内勉強会での資料です。基的には以前発表した資料の切り貼りです

    Elixir
    hkataoka
    hkataoka 2015/10/10