タグ

ブックマーク / hakobe932.hatenablog.com (26)

  • Visual Studio Code で編集中のテストコードを実行する - はこべにっき ♨

    TL;DR Visual Studio Codeではエディタからのコマンド実行がTasksという仕組みでできてとても便利。 背景 最近エディタをVisual Studio Codeに変えた。エディタのこだわりはそんなになくて、VimEmacs → Atom といった順番で2年に一度くらい乗り換えている。だいたいどのエディタにもVimキーバーインドエクステンションがあるのでなんとかなる。 Visual Studio CodeはAtomと同じElectronベースだけど、なぜかAtomよりサクサク動くので気に入っている。Microsoftのリソースパワーに感謝するしかない。 テストの話に移ると、テストを書くのはもちろんソフトウェア品質の担保やリグレッションの防止が目的だけれども、TDD的な文脈では開発のリズムを作るのも目的の一つだ。リズムよくテスト実行しつつ開発するには、エディタで開いて

    Visual Studio Code で編集中のテストコードを実行する - はこべにっき ♨
  • 手を動かして電子工学を学ぶ - はこべにっき ♨

    このエントリは、はてなデベロッパーアドベントカレンダーの20日目のエントリです。昨日の記事は id:aereal さんの連打を支える技術でした。明日の記事は id:astj さんです。 最近はWeb技術以外にもできることを増やそうと考えて、電子工学に入門しています。ほとんど何もしらないところからの入門ですから、理論を学びつつ手を動かして何か作ってみる作戦でいきたいところです。 しかし、自分の場合、手を動かすために丁度良い課題に取り組みたいものの、何をやればまったくわかりませんでした。 こんな風に困ってしまうことは、0から電子工学に学びはじめたい人にとっては、よくあるのではないでしょうか。そこで、このエントリでは、電子工学をはじめる人がとりあえず何か手を動かして学ぶための方法をご紹介したいと思います。 TL;DR Make: Electronics ―作ってわかる電気と電子回路の基礎を読み、

    手を動かして電子工学を学ぶ - はこべにっき ♨
    dann
    dann 2015/12/21
  • Scala in Perl Company という内容で発表しました #yapcasia【YAPC::Asia Tokyo 2014】 - はこべにっき ♨

    Scala In Perl Company : Hatena - YAPC::Asia Tokyo 2014 Scala in Perl Company という内容で発表しました。はてなではPerlを10年近く利用していますが、最近作っているMackerelというサービスの開発ではScalaを利用しています。この発表では、Perlによるソフトウェア進化の困難さと、Scalaでその課題がどのように解決できるかについて解説しました。 発表時間がたりず、ScalaでのWebアプリケーション開発についてはくわしく紹介できなかったのですが、資料にはその部分も含めています。雰囲気でもつたわればうれしいです。話しきれないところがいろいろあったので、まだ会場にいる方はぜひ声をかけてください!

    Scala in Perl Company という内容で発表しました #yapcasia【YAPC::Asia Tokyo 2014】 - はこべにっき ♨
    dann
    dann 2014/08/29
  • 作ってみたものの飽きそうなWebアプリはherokuで動かしておく - はこべにっき ♨

    合宿で heroku 使ってたチームがあって、とても便利そうだった。昔、Node.jsで画像アップローダをつくったんだけど(node.jsでtrayという画像アップローダを作った - はこべブログ ♨) 自分のVPSで雑に動かしていて、飽きてしまうとあんまり気にしなくなって、止まっても放置したりしてた。それくらいであれば、herokuで一旦動かすようにしておけば、可用性は担保されるだろうと思い立ち、herokuで動作させることにした。 動いている様子はこちら: http://imagetray.herokuapp.com/ 左上のマスに画像をドラッグ・アンド・ドロップすると画像がアップロードされる。誰かがアップロードするとリアルタイムに更新される。コードを更新したり、しばらくだれも使ってなかったりして、herokuホストがrestartされると、アップロードされた画像は消えてしまう、刹那

    作ってみたものの飽きそうなWebアプリはherokuで動かしておく - はこべにっき ♨
    dann
    dann 2013/12/31
  • zsh補完関数を自作すると便利 - はこべにっき ♨

    会社でコードを書いていると、いろんなプロジェクトのディレクトリ間を頻繁に移動します。毎回cdするのはだるいので、それを解消する便利なzsh用の関数と補完関数を書いたので紹介します。はてなエンジニアのひとと、zsh補完関数を書いてみたい人にはそこそこ役立つといった趣のエントリです。 会社のプロジェクトのリポジトリは、~/work/hatena というところに全部まとめています。だいたい以下のような感じです。 > ls ~/work/hatena Hatena-Antenna/ Hatena-Diary/ Hatena-Ugomemo/ git-hooks/ Hatena-Bookmark/ Hatena-Group/ Ridge/ iphone/ Hatena-Coco/ Hatena-Star/ android/ sketch/ 各プロジェクトのリポジトリには頻繁に移動するので、簡単なz

    zsh補完関数を自作すると便利 - はこべにっき ♨
    dann
    dann 2012/02/13
  • TitaniumのコードをGUIなしでエディタからすばやくbuildする - はこべにっき ♨

    最近ちまたではTitaniumが話題ですね。はてな技術勉強会で紹介されたのをきっかけに少しいじってみています。 Titanium開発では、通常Titanium DeveloperというGUIアプリケーションを使ってコードをbuildします。開発中は、どうしてもTitanium Developerとエディタとの行き来が必要で、なかなか不便です。 そこで、Titaniumのコードをvimなどのエディタから一発で、すばやくbuildできるようになるスクリプトを書いてみました。ついでにXCodeもTitanium Developerも(GUIの部分は)起動しなくてよくなります。 https://gist.github.com/715378 使い方 https://gist.github.com/715378 を Titaniumのプロジェクトの直下に置いて、 $ perl build.plのよう

    TitaniumのコードをGUIなしでエディタからすばやくbuildする - はこべにっき ♨
  • unite.vim の source をお好きなスクリプト言語で書ける unite-script - はこべにっき ♨

    2014/2/20 追記 unite-scriptがUnite.vim体に取り込まれました - はこべブログ ♨ にあるようにUnite.vimに取り込まれました。 紹介 11月20日に開催されたKansai.pmのLTでunite-scriptについて発表しました。 unite-scriptはunite.vim の sourceをお好きなスクリプト言語で書くためのsourceです。リポジトリはこちら。 https://github.com/hakobe/unite-script Kansai.pmのLTで発表した資料も公開しておきます。 Unite with scriptView more presentations from hakobe. 以下ちょっとくわしく。 unite.vim unite.vim は最近もりあがりを見せてきた vim のプラグインです。候補の一覧からアイテムを

    unite.vim の source をお好きなスクリプト言語で書ける unite-script - はこべにっき ♨
    dann
    dann 2010/11/23
  • YAPC::Asia で 「ページャ実装マニアックス」という題目で発表してきました - はこべにっき#

    YAPC::Asia 2010に参加して LT で発表しました。ページャ実装マニアックスという題目で、はてなにおけるページャ実装について紹介しました。 スライド内で大量のページャ実装を紹介していますが、もちろんまったく別の実装ということはないです。いくつかの共通クラスを継承してカスタマイズしたものを使っています。 スライド内でもいってるようで、単にページャといってもさまざまな要素がからんでいます。これを踏まえてページャをうまく抽象化できる実装が考えられると良いですね。 ページャ実装マニアックスView more presentations from hakobe.

    YAPC::Asia で 「ページャ実装マニアックス」という題目で発表してきました - はこべにっき#
  • Coro で Executor/CompletionService - はこべにっき ♨

    Java並行処理プログラミング ―その「基盤」と「最新API」を究める― をぱらぱらめくっていて出てきた、以下二つをCoroで実装してみた。 並行処理タスクの実行方法を抽象化した Executor タスクの生成とその消費を分離する CompletionService 実装とか例とかぺたぺた貼ってたらすごい長くなっちった。 gistにもあります > http://gist.github.com/191924 。 まとめ (長いので先に結論) ExecutorやCompletionServiceのようなパターンにそってプログラムをかくと、すっきりと並行処理プログラムを構成できて良い感じ。Coroでも簡単に実装できる。 これまでやられたことに名前を付けただけという話もあるけど、名前をつけて区別して理解しておくと、コード読むときの思考が整理されて良いとおもう。 Executor Executorと

    Coro で Executor/CompletionService - はこべにっき ♨
    dann
    dann 2009/09/26
    good wrapper
  • IRCクライアントでMyはてなやRSS FeedをウォッチするためのIRCdを書いた - はこべにっき ♨

    はてなのお気に入りアンテナをTwitter Clientで見れるゲートウェイ「Hatetter」作りました と同じようなことを,Twitterクライアントではなく,IRCクライアントでやりたかったのです. というわけで,Pigというのを書いてgithubにあげてあります. http://github.com/hakobe/pig MyはてなRSS Feedの新着項目を発言してくれるIRCdです.そのうち,Perlでごにょごにょした結果をIRCdになげるライトな感じのフレームワークになる予定です. 追記: Mooseの依存がひどいらしいのでとりあえずAny::Moose化したので,すこしは入れやすくなってる? Myはてなをウォッチ とりあえず以下のようにすると,IRCクライアントでMyはてながウォッチできます. $ git clone git://github.com/hakobe/pig

    IRCクライアントでMyはてなやRSS FeedをウォッチするためのIRCdを書いた - はこべにっき ♨
    dann
    dann 2009/05/24
  • 型グロブ - はこべにっき ♨

    型グロブはある名前を持つ変数をすべて持っているような特殊な型だ。*symという風に識別子に*をつけると得ることができる。*はワイルドカードの意味として使われてて、そこにはどんな記号でもはいるってことか。 型グロブをハッシュのように扱うと、各型のリファレンスを得ることができる。 *sym{SCALAR} # \$sym *sym{ARRAY} # \@sym *sym{HASH} # \%sym *sym{CODE} # \&sym *sym{GLOB} # \*sym *sym{IO} # ????? 型グロブから型グロブへの代入は、識別子のエイリアスを作ることになる。 $foo = 'hakobe'; @foo = (0,1,2); *bar = *foo; print "$bar\n"; print "@bar\n"; のようにすると、fooという名前の変数とbarという名前の変数はま

    型グロブ - はこべにっき ♨
    dann
    dann 2009/04/07
  • CoroはCoroutineのCoro - PerlでFiber - はこべにっき#

    Ruby勉強会@関西でFiberについて勉強してきた - はこべブログ ♨でPerlでもGeneratorをうまく書けるモジュールがないかなーとこぼしていたところ. perlではCoroでほぼ同じ事ができるが、どちらにしろCoroを使う利点は1個1個をresumeすることじゃなくて 非同期に実装することだと思うのでgenerator云々はちょっと用途が違う気もするです http://b.hatena.ne.jp/lestrrat/20090202#bookmark-11922880 というブコメをいただきました.id:lestrratさんありがとうございます. Coroについて調べてみたところ,Coro::Introによると The natural application for these is to include a scheduler, resulting in cooperati

    CoroはCoroutineのCoro - PerlでFiber - はこべにっき#
    dann
    dann 2009/02/02
    おぉ、Coroでこんなことできるのかぁ
  • Parse::RecDescentでJSONをパース - はこべにっき ♨

    JSON::Hatchet の構文解析子 - Tociyuki::DiaryのJSONパーサがすっきりと書けていたのものだから,ちょっとうちもJSONパースしたくなってので書いてみました.といってもLL構文のパーサを1から書くのも芸がない感じだったので.Parse::RecDescentというCPANモジュールを使ってJSONのパーシングをしてみました. Parse::RecDescentはその名のとおり,汎用の再帰下降型パーサです.LL(1)文法にのっとっていれば,パースが可能です.*1 id:tociyukiさんがの記事にあるBNFを流用させてもらい,JSONのパーサを書くと以下のようになりました. このように,BNFっぽいものを記述するだけでパースを行うことができてお手軽です.パターンとして正規表現を書くこともできて,スキャナーに相当することもやってくれてます. 構文規則に合わせてパ

    Parse::RecDescentでJSONをパース - はこべにっき ♨
  • perldoc perlxstutを読んだときのメモ - はこべにっき ♨

    正月番組をみながら[http://perldoc.perl.org/perlxstut.html#EXAMPLE-3:title=perldoc perlxstut]を読んだ.メモをとったのでせっかくだからはっつけておくよ. ちょっとメモがはしょり気味なのと,うちの理解があやしいところがあってこころもとないですが,perlxstut読むときの参考にでもなればばば. Example1 $ h2xs -A -n Mytest で雛形がつくれる.生成されたMytest.xsにXSのコードを書く 値を返さないHello, WorldだとCODE:以下にprintfを書くだけでOK void hello() CODE: printf("Hello, world!\n"); CODE: みたいな部分はXS特有の書き方.あとで展開されてCのコードになる. $ perl Makefile.PL $ mak

    perldoc perlxstutを読んだときのメモ - はこべにっき ♨
    dann
    dann 2009/01/03
  • XS(とC++)入門したい - はこべにっき ♨

    XSを使ってみたい.ついでにC++も勉強したい.とりあえず今日はShibuya.pm #9 のXSトークを何個か見てみた. PerlからXSの世界をながめてみる まずは,PerlからXSの世界をながめてみる.整数値は一度文字列化すると文字列表現がキャッシュされる.Devel::PeekでXSレベルの構造体をダンプするとわかるよ. コード #!/usr/bin/env perl use strict; use warnings; use Perl6::Say; use Devel::Peek; my $x = 100; say Dump $x; "$x\n"; # 文字列化 say Dump $x; 実行結果 SV = IV(0x80cebc) at 0x800b88 REFCNT = 1 FLAGS = (PADBUSY,PADMY,IOK,pIOK) IV = 100 SV = PVIV

    XS(とC++)入門したい - はこべにっき ♨
    dann
    dann 2008/12/31
  • 正規表現のoオプションにPerlの暗黒面を見た - はこべにっき ♨

    Perlの正規表現のoオプションてご存じでしょうか? うちはあまり使ったことがなかったのですが,効率のよい正規表現処理を行うときには便利なオプションです. oオプションを使うと,その正規表現のコンパイルが1回しか行われなくなります.たとえば,正規表現の評価が繰り返しのなかで現れると,コンパイルが何度も行われて効率が悪くなります.そういったときにoオプションを付与しておけば,正規表現コンパイルのオーバーヘッドを最小限にとどめることができます. chomp(my $pattern = <>); for my $n (0..100000000000) { # すごく回数の多いループ # oをつければ正規表現がコンパイルされるのははじめの1回だけなので安心 if ($n =~ m/^$pattern$/o) { say "match!"; } } 正規表現が静的な場合は,Perlはこのような最適化

    正規表現のoオプションにPerlの暗黒面を見た - はこべにっき ♨
    dann
    dann 2008/11/01
  • MapReduce::Liteで手軽に分散処理 - はこべにっき ♨

    Googleを支える技術 ?巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)」を読み終えたので,id:naoyaさんの作ったMapReduce::LiteでMapReduceを試してみた.以下は,MapReduce::Liteを使ってみたメモなど.あくまでもメモなので,くわしくMapReduceの勉強をしたいひとは,id:naoyaさんの記事(MapReduce - naoyaのはてなダイアリー)がおすすめです. MapReduceは,MapとReduceの二つを組み合わせて実現できる処理を,分散処理化するGoogle技術.すばらしい抽象化ですね. id:naoyaさんの作ったMpaReduce::Liteは,MapReduceの仕組みをPerl上で実現したモジュール.ただ,MapReduce::Liteでは,処理をマシンごとに割り当てて分散しているわけではなく,ス

    MapReduce::Liteで手軽に分散処理 - はこべにっき ♨
    dann
    dann 2008/08/05
  • git-vim入れた - はこべにっき#

    git-vim: GitHub - motemen/git-vim: My vim files for Git 参考: ブログならライブドアブログ(livedoor Blog) - 無料・デザイン豊富 vimの中からきもちよくgitを使うのによさそうだったので,git-vimインストールした.id:motemen++.これで,:GitCommit -aとかしてvimからコミットできるヨー. なんか,:call GitBranch()しないとちゃんと動作しないらしいので,statuslineで呼ぶようにしとくと良いらしいよ! set statusline=%<[%n]%m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).':'.&ff.']'}%y\ %(%{GitBranch()}\ %)\ %F%=[%{GetB()}]\ %l,%c%V%8P ステータスラインのせっ

    git-vim入れた - はこべにっき#
    dann
    dann 2008/07/28
  • 詳説 Perl in ゆの - はこべにっき#

    http://subtech.g.hatena.ne.jp/miyagawa/20080708/1215473551 絶望した!rubyと比較したときのperlの難解さに絶望した! #!/usr/bin/perl use strict; # ここはpackage main; BEGIN { # プログラムのはじめにサブルーチンを定義.なくても動いたりする # ()は プロトタイプ. 引数をとらないことを言明してる # Xクラスのコンストラクタ, 実体は$sのリファレンス sub X () { bless \(my $s = "ひだまり"), "X" } # _ == 1 にする sub _ () { 1 } } package X; # ここからXクラスの定義 my $i; # クロージャ変数だけど,スコープはファイルだよ use overload # X オブジェクトの / と < 演算

    詳説 Perl in ゆの - はこべにっき#
    dann
    dann 2008/07/08
  • 型がクラスの時はsubtypeじゃなくてclass_typeが使える. - はこべにっき ♨

    先週のKansai.pm #9でやったMooseプレゼンの補足です.このスライド,いろんな人に++されたりしまして,結構うれしかったYO. で,このスライドに関して,某IRCにてアドバイスをもらったりしました. 11:44 nothingmuch: hakobe: subtype Foo as Object is better written as class_type Foo 11:44 nothingmuch: faster, too 11:45 nothingmuch: e.g. class_type "URI"; class_type "DateTime"; Thank you very much for your advice, nothingmuch. このアドバイスによると,スライドにあった以下の型の定義は, subtype 'URI' => as 'Object' => w

    型がクラスの時はsubtypeじゃなくてclass_typeが使える. - はこべにっき ♨