タグ

ブックマーク / blog.sushi.money (58)

  • DSLでAPIを書きたい!!APISchemaでらくらくAPI生活をはじめよう - hitode909の日記

    この記事は,はてなエンジニアアドベントカレンダー2015の5日目です. 前日はこの記事でした.スクリーンショットで振り返る・はてなブログ記事編集画面デザインの歴史 - Hatena Developer Blog 最近作った(といっても去年から作っている…),APISchemaというライブラリをご紹介します. APISchemaとは BMIを計算しよう スキーマを書こう メタデータ リソースの定義 エンドポイントの定義 スキーマを使う スキーマのパース ルーターを生成して,ルーティングをおこなう リクエストのバリデーションをおこなう レスポンスのバリデーションをおこなう APIのドキュメントを配信する 採用実績 関連 JSON Schema 便利グッズ まとめ APISchemaとは APISchemaは,DSLでHTTP APIの定義を書けるものです.以下のような機能を持っています. AP

    DSLでAPIを書きたい!!APISchemaでらくらくAPI生活をはじめよう - hitode909の日記
  • 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の日記
  • 集中線GIFメーカーをリリースしました!!! - hitode909の日記

    画像に集中線を入れてアニメーションGIFにしてくれるウェブサービスを作りました!!!集中線GIFメーカー!!! speedline.herokuapp.com 見慣れたおにぎりを持った男性の写真から,こんなGIFが作れます!!! 高級寿司が流れるだけでも,とにかく!!勢いがある!!!!! 歴史上の人物も!!!人は動いてないのに勢いがある!!!! 今すぐ無料でお使いいただけます!!!!! speedline.herokuapp.com 追記 意外とみなさまに使っていただいていて,サーバーが重くなっているようです.失敗しても,しばらくしてやり直すとうまくいくかもしれません.どんどん使ってください.

    集中線GIFメーカーをリリースしました!!! - hitode909の日記
  • YAPCでおもしろ発表してきた - hitode909の日記

    YAPCおもしろ発表してきた. はてなブログの開発を振り返って設計の進化と最高の設計を紹介するという話. speakerdeck.com なぜか大人気発表みたいになってて,会場満員で,すみませんこんなところに来ていただいてすみませんというかんじだった. 紹介したはこちら.予約投稿で仕込んであって,発表終わったら,こちらから買ってくださいとかやろうと思ってたけど,すっかり忘れてた. YAPCの発表で紹介した - hitode909の日記 質問たくさんいただいて,よいかんじにおさまったと思う. 「難しくて挫折するという問題がありますよね」「歯をい縛って実装しろって書いてあった」 #yapcasiaE— そらは (@sora_h) 2015, 8月 21 Q: 「コメントの良い書き方は?」 A: 「オブジェクト指向入門下巻に書いてあります」 ↓ 「買って読みます。」 #yapcasiaE

    YAPCでおもしろ発表してきた - hitode909の日記
  • YAPCの発表で紹介した本 - hitode909の日記

    YAPC発表で,良いを紹介しました オブジェクト指向入門 これは最高のです 下巻はいま在庫なかったので困る オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング) 作者: バートランド・メイヤー,酒匂寛 出版社/メーカー: 翔泳社 発売日: 2007/01/10 メディア: 単行(ソフトカバー) 購入: 11人 クリック: 307回 この商品を含むブログ (132件) を見る オブジェクト指向入門 第2版 方法論・実践 (IT Architects’Archive CLASSIC MODER) 作者: バートランド・メイヤー,酒匂寛 出版社/メーカー: 翔泳社 発売日: 2008/08/29 メディア: 単行(ソフトカバー) 購入: 5人 クリック: 97回 この商品を含むブログ (52件) を見る ドメイ

    YAPCの発表で紹介した本 - hitode909の日記
  • LGTM自撮りを簡単に作れるコマンドラインツール - hitode909の日記

    id:uiureoがGyazoに自撮りをくっつけるのを作っていて,自撮りいいなと思ったので,LGTM自撮りを簡単に作れるツールを作った. github.com 実行方法は簡単で,lgtmselfieを実行するだけ. ./lgtmselfie3回写真が撮られて,Gyazoにアップロードされる. 一人前のジェダイがライトセーバー自作するように,良いレビュワーはLGTM画像を自撮りするものである.どうぞご利用ください. GIF BOOK -コンテンツ制作者のためのGIFガイド 作者: 古屋蔵人,いしいこうた出版社/メーカー: ビー・エヌ・エヌ新社発売日: 2013/01/24メディア: ペーパーバック購入: 1人 クリック: 23回この商品を含むブログを見る

    LGTM自撮りを簡単に作れるコマンドラインツール - hitode909の日記
  • 気が狂った設計 - hitode909の日記

    大きめのこととか,自信のないところを触るときは,コード書く前に,こういう作戦考えてみたけどどうですかって聞いてみたり,こういうことやりたいんだけど一緒に考えませんかって,いっしょに話して設計考えたりするとよいと思う. 一緒に考えたすぐあとに気が狂った設計とか言い出したらおかしいので,未然に変な設計のままコード書いてしまうのを防げる. 特に辛い気持ちになるのが、「気が狂った設計」「クソコード」「(こんな実装は)有り得ない」といった言葉だ。 Pull Requestのレビューが辛くて会社をやめたい 単に言葉が強いのはよくないと思う.我が社にはそんな強い言葉でレビュー書く人はいない. 我が社には,普段から強い言葉を発する人もいなくて,みんな物腰柔らかな変な言葉を話している. 言葉使いや文体は,ずっと過ごしてると同僚から移ったりするので,普段からそういう言葉を話していると,全体の雰囲気も悪くなりそ

    気が狂った設計 - hitode909の日記
  • 最高のマウスストーカーを作った - hitode909の日記

    だいぶ前のはてなインターンの講義で,JavaScriptの講義をしたのだけど,そのときの課題で,マウスストーカーを作る,というのを出題した. 教科書は公開されていて,課題はこのへん. https://github.com/hatena/Hatena-Textbook/blob/public2014/javascript-event-driven.md#課題2 インターン生たちがいろんなおもしろマウスストーカーを作ってくれて,おもしろかったのだけど,せっかく出題したので,僕も作ってみた. このページでも有効になってるので,マウスのボタンを押してみてください.ご迷惑おかけします. http://mouse-stalkers.github.io/the-best-stalker-ever/ こういうファンシーな見た目. GIFだと見ずらいけど,☆が飛んでくるっていうマウスストーカー.マウスダウン

    最高のマウスストーカーを作った - hitode909の日記
  • きれいなコード - hitode909の日記

    これまで、きれいなコード書くにはどうしたらいいか考えてたけど、そんなことではいけないと思った。 ソフトウェアとして意味があるためには、誰もこれまでに書いたことがない、すばらしい働きをするコードでないといけない。 めちゃくちゃいい働きをするコードができたら、あとできれいにすればよい。誰にでもきれいにできるような些細なところはほっといて、質的に難しいところを解決したほうがいい。 どんなにコードがきれいでも、正しく動かなかったり、使用に耐えないくらい性能が低くてはしかたがない。また、普通に動くソフトウェアは世界中に普通にあるから、それを超えるすごい便利さとか、使いやすさとか、他にこんなのはないとか、なんかそういうのがないと、作る価値はないと思う。 ということを思った。最近難しいことをいろいろやってて、夕方にはくたびれてくる。そこそこいいけど、まだめちゃくちゃよくはないから、もう一声という感じ。

    きれいなコード - hitode909の日記
  • 動けば良い - hitode909の日記

    2泊3日の開発合宿なんかで,新しい物とか,プロトタイプとか作るときは,動けば良いっていう合言葉のもとでやってる. とにかくすばやく作りたくて,最速で作って動かそうとすると,いろいろあきらめることになって,動けば良いという合言葉のもと,引数のチェックとか,効率の良いストレージの設計とか,ことごとく無くなる. 手抜きで雑に作りたいわけじゃなくて,今作ってるものに意味があるのか知りたくて,すばやく作りたいのである. 丁寧に3日かけてゴミを作ってもゴミだけど,半日でゴミが完成したら,すぐに作戦変えられるし,半日でそこそこいいものができたら,これはいいって言って,もっとよくできる. 場合によってそれぞれで,合宿とかだと時間がないから,いきなり川とか泳いで渡ろうとするけど,時間があるときは,ちゃんと橋を架けてから渡ろうとすると思う. 弊チーム今回の合言葉です

    動けば良い - hitode909の日記
  • YAPC::Asia Tokyo 2014でPerlの静的解析やリファクタリングについて喋りました - hitode909の日記

    Perlでソースコードを解析して数値を発見したらとりあえず倍にすることで滅茶苦茶なFizzBuzzを生成するといった活動を紹介しました. スライドは以下です.160枚くらいあるので見るの疲れそう. Perlの静的解析入門とPerlリファクタリングツールApp::PRTのご紹介 // Speaker Deck お知らせ 静的解析友達募集中です #yapcasia— 趣味はマリンスポーツです (@hitode909) 2014年8月30日

    YAPC::Asia Tokyo 2014でPerlの静的解析やリファクタリングについて喋りました - hitode909の日記
  • テスト先に書きたい若者よ - hitode909の日記

    弊社では毎年インターンを受け入れているのだけど,いまもインターンが来てて,テスト先に書きたいけど油断すると先に実装を書いてしまう,とか話してた. 個人的には,テスト先に書くのが大事というよりかは,意識して仕様を先に考えるのが大事だと思っている.テストを先に書くと,先に仕様を考えざるを得ないので,良いスタイルが身につく. 僕がよくやるのは,関連しそうなクラスの絵をひと通りノートに書いてみて,その図だけで,うまく動くことを説明できるくらい考えてみる.その時点でおかしかったら,コード書いてもおかしくなる.ノートに方眼ついてるとクラス図書きやすい.UMLとかじゃなくても,自分で見て分かるくらいでもいいと思う. 紙でうまくいったら,外部仕様だけソースコードに書いてみる.クラス名と,メソッドの定義と,メソッドの上くらいに,ひと通りコメントでも書いてみて,この関数はこういうことをするんです,こういう引数

    テスト先に書きたい若者よ - hitode909の日記
  • 一つしかない想定で作ってあとから複数出現してめちゃくちゃになる - hitode909の日記

    ソフトウェア作ってて,最初は一つしかない想定で作るけど,あとから複数出現することになって改修するのが大変,ということがある. 最悪サーバーサイド もう終了したサービスであったのが,ユーザーは自分のアイテムを飾れる部屋を1つ持てるという仕様だったのが,複数の部屋を切り替えられるようにして,部屋ごとに置けるアイテムのシリーズが変わって,シリーズごとにグリッドの細かさも変わるとか.とにかく大変で,全部のテーブルにあとからシリーズidを持たせたり,クラスメソッドで済んでたのをシリーズidを持つオブジェクトのメソッドにしたり,ORMItemをRoomに渡すのをやめて,その層とは別に独立した画像合成用のItemとRoomを作ってやり取りするとか,最初からそうなってるときより大変なことになる. 最悪クライアントサイド クライアントサイドでも同じようなことはあって,HTML内に一つしか出現しない前提で作

    一つしかない想定で作ってあとから複数出現してめちゃくちゃになる - hitode909の日記
  • 最悪のコード - hitode909の日記

    最悪のコードよく見るけど、最悪のグッズにそんなに出会うのはおかしい。昨日も自分の書いた最悪のコードに出会ってしまってきびしかった。 最悪のコードそんなに悪くないけどとにかく最悪な気持ちになっていて不思議— 趣味はマリンスポーツです (@hitode909) 2014, 6月 2 畳でゴロゴロして最悪のコード眺めてただやる気が出るのを待ってる— 趣味はマリンスポーツです (@hitode909) 2014, 6月 2 世の中の全てのコードを良い順に並べて一番悪いから最悪ということではなくて、コードを書くのは難しい作業で、すぐに0点になって終わり、ということだと思う。錬金術もいろんな物を煮詰めたり干したり、がんばってやるけど、結局金は出てこないので最悪。 コードは正しく動いて、その後のいかなる変更も容易でないといけない。それができたら1点くらいにはなる。一貫した設計がされていて、どこになにがあ

    最悪のコード - hitode909の日記
  • ペンギン許さん - hitode909の日記

    たとえばペンギンクラスを作るとき、まずペンギンクラスを定義する。と言うと、いや待ってください、ペンギンは鳥ですから、鳥から継承させましょう、とかそういう話になる。 継承すると、ポリモーフィズムという技を使えて、鳥を受け取る関数に鳥でもペンギンでも渡せるようになったり、鳥の機能をペンギンが獲得して、足の数は?とか聞くと2とか返ってくる。 便利だけど、鳥でもペンギンでも共通して足の数を知りたいアプリケーション以外でそういうことをし始めると、きりがなくなって、哺乳類クラスが登場したり、生命の樹みたいになって最悪の継承ツリーが出来上がる。 アプリケーション的に意味ない限りは、クラスを作ったり継承したりしてはいけない。そのうち役立つかと思って作りたくなる気持ちは分かるけど、必要になってから作れば良い。大体の場合、後世の人たちが、このクラスなんであるんだろって迷うのにかかるコストの方が高い。

    ペンギン許さん - hitode909の日記
  • PerlリファクタリングツールをCPANにアップロードした - hitode909の日記

    Perlリファクタリングツール,適当にやったらCPANに公開できた.ご利用ください. App::PRT - Command line Perl Refacoring Tool - metacpan.org id:moznionをcollaboratorに入れたらいろいろ直したり教えてくれたりして便利だった.最高. CPANに公開するの,RubyGems.orgにgemを公開するよりややめんどうだった.やったことメモっておく. PAUSE: request_idからPAUSEのアカウント申請する 活動したい内容とか適当に書くと無視されるそうなのでちゃんと書く 名 hitode909じゃだめで hitode 909だといけた moznionをcollaboratorに呼ぶ Minillaっていうオーサリングツールを入れてパッケージとしての体裁を整える minil migrateして失敗したと

    PerlリファクタリングツールをCPANにアップロードした - hitode909の日記
  • 失敗する前提でデプロイする - hitode909の日記

    うちのチームでは,デプロイするたびに自動的にgitのtagを切るようにしてる.たとえば,いまデプロイしたら,deploy/2014-02-01-14-48とか. たまに,リリースした直後になんかミスってたことに気付いて,慌ててロールバックすることがある. tagを切ってるので,ひとつ前に戻せばいいのだけど,えっと,どれだっけとかいって探すので慌てるし,普段はタグ指定してデプロイしてないので,どうやって戻すか忘れる. デプロイ終わったときに,今回のデプロイを戻すには,これをしましょう,とか表示するようにした. デプロイ終わったらこんなのが出る.前回のデプロイが昨日だったら昨日くらいのタグが出る. ヒント:戻すときは以下のコマンドを実行しましょう cap -S revision=deploy/2014-01-31-15-17 deploy 実装方法としては,こんな感じに,デプロイ前に最新のタグ

    失敗する前提でデプロイする - hitode909の日記
  • 自作オブジェクトのイベントのやりとりにはjQuery.triggerではなくjQuery.triggerHandlerを使うほうがよいと思った - hitode909の日記

    DOMオブジェクトには昔からdispatchEventとか,addEventListenerとかあって,最近だと,node.jsのEventEmitterとか,jQueryのon, triggerを使って自作のオブジェクト間でアプリケーション的に定義されたイベントをやりとりできる. これまで,自作オブジェクトからイベントを発行するのに,jQueryのtriggerを使ってたけど,意図しない挙動をすることがあることが分かって,triggerHandlerを使うように変えた. jQuery.trigger()は,イベントタイプと一致する関数をレシーバが持ってるとき,その関数が呼ばれる. イベントのやりとりと,メソッドの呼び出しは独立しているというイメージがあったので,うっかり同名のメソッドを定義したときに,一見するとよく分からない挙動になって,難しい. なので,自作オブジェクトがイベントを発行

    自作オブジェクトのイベントのやりとりにはjQuery.triggerではなくjQuery.triggerHandlerを使うほうがよいと思った - hitode909の日記
  • CasperJSで気軽にJSのテストできる - hitode909の日記

    ウェブアプリケーションのJSのテストするのにCasperJS使ったら便利だった. CasperJSはPhantomJSにテスト用ユーティリティがついて便利になったやつ. JS,MVCできれいに書いてると,Modelの単体テストとかできるけど,昔ながらの感じだと,ここをクリックしたらこれが表示されること,みたいなテストを書くことになる.けどライブラリとかいろいろあってどれを使えばよいか分からなくて敷居が高い.CasperJSを使ったらこれだけで完結してテスト書ける. PhantomJSは単なるブラウザだけど,CasperJSはテストのフレームワークとか,DOMのテスト関数とかがついてる. 非同期なタスクの実行の仕組みも入ってて,casper.thenっていうのを順番に書いていくと,順番に呼んでくれて,click()して,casper.thenしたら,ページ遷移したら次のページに移動してる.ス

    CasperJSで気軽にJSのテストできる - hitode909の日記
  • ■ - hitode909の日記

    勉強会、最初はおもしろいかと思って始めてみて、そのときは元気だったから社外の人が来るのをいらっしゃいみたいな感じで出迎えたりたのしく談笑とかできてたけど、だんだん気が弱ってきて、人を見たくなくなって、そういう感じだと、なんでわざわざ、知らない人を呼ぶのか、つらいからやめよう、という雰囲気になって、積極的に開催できなくなった。けど、表向きには定期的に開催ということになってて、参加したいのですが次はいつですか、みたいな人が定期的に来て、いずれやりますとか、来週やりますとか言ってる。最初は、定期的にやると技術の交流ができてよいかと思ってたけど、負担が大きかった。当にJavaScript勉強したいわけではなくて最近の雰囲気を知りたいだけだという気がしていて、それだとちょっとHUBに飲みに行くとかのほうがいいと思う。

    ■ - hitode909の日記