読者です 読者をやめる 読者になる 読者になる

A Tour of Go で Go に入門した

Go

Go言語、ウォッチだけしててあまりまじめにやってなかったので昨日からチュートリアルみたいなのやってた。 A Tour of Go Go の基本的な文法の軽い解説がありつつ、ブラウザでコード実行しつつ学べるみたいな感じ。 途中でいくつか練習問題みたいなのがあっ…

HTTP/2.0と今後のWebアプリケーションの開発・運用について (#cross2014)

追記 @jovi0608 さんに非常に丁寧にコメントをいただきました。 https://gist.github.com/shigeki/ba7941d114344ddd4b01 本文 CROSS 2014の次世代Webセッションに参加した。 いろいろ刺激を受けたので、特に、Webアプリケーションを開発・運用する上で、今後…

2013年をとにかく忘年したい

2013年を忘年する様子です。 ブログは技術っぽいのだけだしてる。 今年は34本のブログを書いたっぽい。 去年は25本くらいだったからなんか増えてる感じっぽい。 インターネットしか趣味がない割に、あまりブログを書いていないことが可視化された。 1月 HubF…

とにかくややこしいことをしない ORM がほしくて Coteng とかいうCPANモジュールを作った

名前の通り、Teng::Lite みたいなモジュールを作った。 Teng::Lite でも良かったけど、なんとなくそれっぽい名前が思い浮かんだのでそれにした。 ORM というよりはやや重めのDBIラッパーかもしれない。 Coteng-0.07 - Lightweight Teng - metacpan.org - Per…

Docker + Mesos + Marathon + Graphite + Fluentd + Sensuを組み合わせたデプロイ管理ツールの話

開発合宿でDevOps界隈やモニタリング界隈で流行りのツールを組み合わせてBlue Green Deploymentできる何かを作りました。 同じチームで開発したid:shiba_yu36 先生やid:wtatsuru 先生が既にブログを書いてますが、自分の視点で書いてみます。(13/12/24追記:…

モニカジ京都に参加して、SensuとGraphiteの話をしました #monitoringcasual

Monitoring Casual Talk in Kyoto on Zusaar 先週のことだけど、モニカジ京都に参加した。 というか、主催者のid:shoichimasuharaさんとかいう人に雑に主催者に入れられた。 といってもなにもしてなくて、ただインターネットで暇そうな人間を勧誘しただけだ…

大学院の修了に失敗し、新卒入社にも失敗しました

※本エントリは中退を煽るものでは決してありません。 先月、大学院を中退しました。 コンテンツになりたいがために中退したととってもらってもよいですし、何か深遠な理由があって中退したととってもらってもよいです。 中退するにあたり、相談に乗ってくだ…

robustnessと何か

学部3回生くらいのときに授業か何かで英語の論文を読んでた時に、Robustnessとその類義語である何かの意味と違いについて学びを得た。 robustnessは頑強性、つまりシステムの一部が壊れても、システム全体の動作を損なわない能力を意味する。 何かは堅牢性、…

YAPC::Asia 2013ではてなのサーバ管理ツールの話のはなしをしました

YAPC::Asia 2013で"はてなのサーバ管理ツールの話"というはなしをします - ゆううきブログ YAPC::Asia Tokyo 2013で、アルバイトで開発してたサーバ管理ツールのはなしをしました。 前半がサーバ管理ツールの開発思想で、後半がサーバメトリクス可視化の実装…

Chefがつらい人のためのAnsibleのはなし

Chef使おうとしてるけどChefいろいろつらい. 具体的には以下がつらい. 独自概念多い chefのクライアントを対象ホストに入れなければならない knifeとか覚えないといけない外部ツールがある 最初からディレクトリ構成がわいわい (rails newしたときのあのき…

超高速なパケットI/Oフレームワーク netmap について

GPUを用いたSSLリバースプロキシの実装について - ゆううきブログ 100Gbpsソフトウェアルータの実現可能性に関する論文 - ゆううきブログ の続きで,最近論文読んだやつのプロジェクトの紹介です. 概要 今の汎用OSは高速なパケットI/Oを考慮してない. 20年…

YAPC::Asia 2013で"はてなのサーバ管理ツールの話"というはなしをします

"YAPC ASIA 2013"に応募してたトークが採択されました。 はてなのサーバ管理ツールの話 - YAPC::Asia Tokyo 2013 はてなの自社製サーバ管理ツールの思想と設計を紹介します。 はてなでは数千台のホストを運用しており、運用を効率化するためにサーバ管理ツー…

TCP 3-way handshakeのレイテンシ軽減のためのTCP_DEFER_ACCEPTソケットオプション

2013/10/22 追記した. Starletのコード読んでてlistening socketにTCP_DEFER_ACCEPTとかいうオプション渡してたので、これ何だって思って調べた. TCPに特に詳しいわけではないので理解に誤りがあるかもしれない. package Starlet::Server; ... # set defe…

Test::Classのテストメソッド内でsubtestを使うときに起こる問題の原因と対策

id:nobuokaさんがこういう感じの問題に直面していたので調査してみた。 Test::Class と subtest を組み合わせた場合に、とあるテストメソッドの subtest 内で例外が発生してしまうと、それ以降の別のテストメソッドの subtest も全部失敗してしまうっぽい? -…

Kyoto.pm 05で自作のサーバリソース可視化ツールのはなしをしました

nekokakさんを呼んで、7/13(土)にKyoto.pm 05 Tech Talkを開催します!!!!! - $shibayu36->blog; Kyoto.pm 05で自作のサーバリソース可視化ツールについて20分くらいしゃべりました。 簡単にいうと、既存のサーバリソース可視化ツールのサブシステムとし…

100Gbpsソフトウェアルータの実現可能性に関する論文

前回のGPUを用いたSSLリバースプロキシの実装について - ゆううきブログ に続いて,同じ研究グループが出している100Gbpsのソフトウェアルータの実現可能性に関する論文を読みました. Sangjin Han ; KAIST, Daejeon, South Korea ; Keon >Jang ; KyoungSoo …

GrowthForecastでサーバルームの室温監視

研究室のサーバールームの空調が弱くて,40コアくらいある計算サーバにフルで仕事させると室温が上がって,全サーバが落ちるみたいな事例が去年あったらしいので,室温のグラフ化とアラートメール送信をやれみたいなタスクが降ってきた. そこで,サーバルー…

CentOS 5.9でNICを2枚挿したときのネットワーク設定

10GbpsNIC環境でOSのネットワークスタックのパフォーマンスを測定しようとしたら意外と面倒だった.厳密には,面倒だったのはCentOS 6系での設定で結局あきらめた. 仕方がないからCentOS 5.9でやるとそれほどハマらずに設定できた. 2台のマシンがあり,オ…

GPUを用いたSSLリバースプロキシの実装について

近年,汎用計算の高速化のためのアクセラレータとして注目されているGPUを,ネットワーク処理に適用する一環として,サーバサイドのSSL処理に注目した論文を読んだので,内容を軽く紹介します. SSLShader - GPU-accelerated SSL Proxy SSLShader SSLShader:…

Kyoto.pm 04 Hackathonに参加しました

"Kyoto.pm 04 Hackathon"に参加しました. 畳部屋でかつ,人間をだめにするクッションの上で開発してました. とても快適でした. 作ったのはぼくの研究活動を快適にするための Net::Signaletというモジュールです. y-uuki/Net-Signalet · GitHub サーバク…

RRDtool 2.x

フルスクラッチ案件です. RRDtool 2.x - Re-Engineering RRDtool for the next 15 Years Vision clear internal APIs: 内部のコンポーネントを疎結合化する.RRDtool 1.xでもある程度は疎結合化されてはいるが,特にデータストレージ層の構造はそれほど機能…

OSS案件

元陸自で現はてなの人の話だ #monitoringcasual— kenjiskywalkerさん (@kenjiskywalker) 2013年3月8日 サーバ管理ツールはほしい #monitoringcasual— fujiwaraさん (@fujiwara) 2013年3月8日 うちにもあるけど結局サーバー管理ツールは自作になっちゃうんだ…

どのレイヤーの人

どのレイヤーの人と聞かれることがある. 最近はこんな感じのものを思い浮かべる. 赤い部分が興味がある感じの部分で,コード書けるところとパフォーマンスみれるところが好きな感じ. プロセッサは研究が終わったら飽きそうな気がする. UI/UXみたいなのは…

SPDYで複数のTCPコネクションをひとつにまとめるとはどういうことか

SPDYが流行っていて,複数のTCPコネクションを1つにまとめて高速化を図るらしいということは知っていた. しかし,単にTCPのコネクション数を抑えるだけならHTTP 1.1のKeep Aliveやpipeliningを使えばよいし,既存技術のどこが問題でSPDYはどう解決している…

Kansai.pmでORMのパフォーマンスチェッカの構想についてLTしてきた

Kansai.pm #15に参加してきた. JPA派遣講師として来ていただいた@yusukebeさんの話が今回の目玉だった. BoketeのValidationの話聞いて,そういえばPerlのValidationを真面目に考えたことなかったなと思って,FormのValidationにはForm::Validator::Lite,M…

研究室のサーバに流行りのGrowthForecastを導入してみた

GrowthForecast - Lightning fast Graphing / Visualization 研究室で各サーバと部屋の温度をグラフ化して,値が異常ならメールで通知しろみたいなタスクが降ってきた. もともと各サーバの統計値をMuninでグラフ化していたけれど,VMware VSphereが入ってる…

小さなモジュールの話

Webアプリケーションのコードとか初めて書いたとき,コピペコードを羅列してとにかく動かすということだけを考えてた. だんだんWebアプリケーションの仕組みとかわかってくると,ライブラリの仕様がよくわからなくてハマったときに,なんとか動かすためにラ…

Plack::Middlewareの書き方

前回,Plack::Middleware書いたので,Plack::Middlewareの書き方をメモしておく. Plack::Middlewareモジュールに最低限必要なのは基本的に2つしかない. Plack::Middlewareを継承することcallメソッドを実装しておくだけ. callメソッドの返り値はPSGI形式…

Plack::Middleware::OAuth::Lite的なものを書いてる

TwitterとかGitHubユーザに対して自前のWebアプリケーションでOAuth認証するためのPlack::Middlewareを書いてる. 同様の動作をするモジュールとしてすでに Plack::Middleware::OAuth があったけど,Session周りでよくわからないエラーがでてよくわからなか…

プロセッサのFLOPSにおける理論性能と実効性能に関する考察

1年くらい前に卒論で学んだことをほとんどアウトプットしてなかったので,研究テーマにクリティカルでない内容をちょいちょいアウトプットしていきたい. あくまで自分の理解を書いているだけなので内容に間違いがあるかもしれない. 今回はFLOPSの話. FLOP…

HubFlow使ってみた

HubFlowとは HubFlow: GitFlow For GitHub HubFlowはGitHubリポジトリでGitFlowを便利に使うためのGitコマンド拡張です. gitflowをforkして開発されています.datasift/gitflow · GitHub 今の時点では,大幅に便利になるというものではない感じです. git h…

忘年した2012年の記憶を掘り起こして忘年意味ないみたいな感じになった

忘年したけど,2012年振り返らないといけないみたいな気分になったので振り返る. 1,2月 だいたい卒論を書いていた. この辺はほとんど卒論しかやってなかったのは反省したい. 卒論で,SSEとかGPUとかSHA-1とかやってたので,その辺の簡単な知識はついたよ…

Linuxカーネルにおけるネットワークスタック周りのChangeLog勉強メモ (2.6.0 ~ 2.6.20)

最近,OSのネットワークスタックに興味があって,Linuxカーネルのネットワークスタック実装の変遷について調べてみた. 変更内容の粒度は割りと適当. TCPとかFireWallとかNIC周りは興味があるのでだいたい書いてる. Wireless系は興味ないので全部削ってる…

"CUBIC: A new TCP-friendly high-speed TCP variant"を読んだ

Linux2.6.19以降でデフォルトのTCP輻輳制御アルゴリズムとなった*1CUBIC-TCPの提案論文*2の前半部分についてまとめてみた. 文中に出現する「ウィンドウ」は特に断りがない限り,TCP輻輳ウィンドウを指すものとする. CUBIC-TCPの概要 CUBIC-TCPは高速ネット…

Perl屋さんに便利なVim Pluginを2つ書いた

この記事は Vim Advent Calendar 2012 の22日目の記事です. 21日目は @AmaiSaeta さんの 「このVim plugin達に感謝しなければ年を越せない!私が今年使い倒した2012年のベストを全部ご紹介! 」 でした. 最近,Vim Scriptを書き始めていて, 今回は,Perl的…

研究室ニートの読みたい論文リスト (TCP and GPU)

研究科や研究室という組織についてはあんまりよく思ってはいないけど,研究自体は嫌いではないので,最近徐々に論文読みたい感じになってきている. TCPまたはGPU関連で読みたい論文リストのメモ. TCP 2002 TCP Servers: Offloading TCP Processing in Inte…

TCP Performance Re-Visitedを読んだ

2003年の論文.Linux2.4のTCPスタック実装についてのパフォーマンス測定と解析. LinuxのTCP実装に関するちゃんとした測定はまだ誰もやってなくて,我々がちゃんとした測定をする,みたいな感じの一文が5箇所くらいあって,意識高い感じだった. Abstract 現…

TCP Offload through Connection Handoffを読んだ

最近,TCP Offload Engine周りの論文を読んでる. Abstract 本論文ではOSとNIC間のコネクションハンドオフ・インタフェースを提案する. このインタフェースを使用することにより,一部のTCPコネクションをホストCPUで処理しつつ,残りのTCPコネクションをNI…

kyoto.jsで"JavaScript on GitHub"という話をした

kyoto.jsでGitHub上の人気のJavaScriptたちを紹介しました。 id:hakobe932さん、kyoto.jsの開催おつかれさまでした。 仕事しながらだったので、他の方の発表はあまりよく見れてませんしたが、「JavaScript最高!」とかあってとてもおもしろい感じでした。 今…

Perlにおける括弧なし関数とその引数と||の結合強度

Perlで何気なく use File::Which qw(which); my $cmd = which "foobar" || croak "FAIELD"; とか書いてたら,which "foobar"の返り値はundefなのにも関わらず,croakに引っかからなかった. あれ?とか思ってたら単に,括弧なし関数の右からみた結合強度より…

AUTOLOADによる他クラスへのメソッドの委譲のテスト

最近,Net::Qiita http://search.cpan.org/~yuuki/Net-Qiita-0.03/lib/Net/Qiita.pm というモジュールを作った. そのモジュールの中で,Net::QiitaクラスのAUTOLOADで,Net::Qiita::Clientが持っているメソッドを動的に呼び出す(委譲するとかいうらしい)…

PacketShader: A GPU-Accelerated Software Routerを読んだ

論文のPDFはPacketShader: A GPU-Accelerated Software Router.ホームページは PacketShader - GPU-accelerated Software Router. ソフトウェアルータの処理をGPUにやらせるという話. IPv4とかIPv6のルーティング,IPSecやOpenFlowの暗号化処理などをGPU…

はてなデザイナーワークショップに参加していない話

昨日,はてなで デザイナーワークショップとかいうのが開催されていた.このワークショップに参加したとかという話ではなく,昨日ちょうど出社していたので,昼休みとか懇親会で参加者の人たちと軽く交流的なことをしていた.参加者の半分くらいは普段あまり…

最近使ったPerlのテスト系モジュール

最近Perlを書いていて,便利なテスト系モジュールをいくつか使ったのでメモ. Test::Moreのsubtestメソッド Test::Mock::LWP::Conditional Test::MockObject::Extends Test::Exception Test::Mock::Guard Test::Moreのsubtestメソッド RSpecのitメソッドみた…

Kyoto.pm Tech Talk #02に参加してきた

id:shibayu36 さん主催のKyoto.pm Tech Talk #02に参加してきた. インターン終了から1年ぶりにはてなを訪れたことになる. 久々にはてなの社員の方々や今年度のインターン参加者の方々とお話ができてテンション上がった. (実はインターン以来Perl触ってな…

プロジェクトオイラーの問題を1日1題解いて共有するWebサービスをつくった

先日開催されたCookpad主催のプログラミングコンテストに応募したWebアプリを公開しました. 応募当時はやっつけで書いてる部分も多かったのでもう少しまともにしてみました.DailyCodingソースコードはこちらで公開しています.@Linda_ppと僕の二人でつくり…

Vimで快適なRailsライフを

QiitaのRuby Advent Calendar 7/5担当分に書いた記事の転載です. 今日はRubyというかRailsの開発環境の話です. Railsでアプリ開発するときにVimで快適に作業するためのtipsを書きました. Rails開発に役に立つVimプラグインたち rails.vim : 多分定番プラ…

Gitのリビジョン番号(SHA-1のアレ)の正体をソースコードを読んで調べてみた

Git

Git Advent Calendar/Jun.6/18担当分の転載です. 今回はGitのリビジョン番号であるSHA-1のハッシュ値は何を元に生成されているのかを調べてみました. Gitではリビジョン番号としてSubversionのような連番ではなく,SHA-1のハッシュ値を使用しています. こ…

C++11でstaticな関数群を抽象化するための設計メモ

C++

C++を始めて3週間くらいになります.gccのエラーを読むのがしんどいです.そろそろTBBを使いたい. 前回(http://qiita.com/items/16532cbb20ce15e622ed) のSorterクラスの設計を少しまともにしてみた. http://github.com/y-uuki/cpp-sorter やったこと Temp…

MacでAVXプログラミングの環境を整えようとしたら意外に面倒だった

研究でAVXプログラミングすることになった. その時の環境構築メモ. AVXプログラミングをする上での注意点 AVX命令を使うには, Sandy Bridge世代以降のCPUが必要. Macの場合, 2011年以降に発売されたマシンが必要. gccのバージョン4.6以降からAVXがサポートさ…