タグ

ブックマーク / tarao.hatenablog.com (10)

  • 株式会社一休に入社しました - 貳佰伍拾陸夜日記

    転職のお知らせ、あるいは個人の日記です。 6月から以下のように所属変更となっています。 From 株式会社はてな To 株式会社一休 マネージャではなく、とくに役職のないソフトウェアエンジニアとして働きます。いわゆるIC (individual contributor)というやつです。 きっかけ はてなには新卒として入社して以来11年も勤めて、インターンやアルバイトとして関わった時期から数えると16年になります。出入りの激しいこの業界でずっと1社しか知らずに過ごすのは負い目に感じていました。また、年齢的にも今年で40歳になることもあって、そろそろ転職を経験しておかないとまずいという焦りもありました。 そんなときに、大学の同期でプライベートでも仲良くさせてもらっているid:suzakから声をかけてもらい、ちょっと真剣に転職を考えたのがきっかけでした。 できることではなくやりたいこと はてな

    株式会社一休に入社しました - 貳佰伍拾陸夜日記
    y_uuki
    y_uuki 2024/06/07
    おつかれさまでした!
  • 正規表現の名前つきキャプチャを便利にする - 貳佰伍拾陸夜日記

    Java 7から正規表現で名前つきキャプチャが使えて, Scalascala.util.matching.Regex.Matchでもそれに相当する機能がある(インタフェースや実装はJava標準のものとは別)けれど, ちょっと不便なところをどうにかしているうちに, インデックスによるキャプチャグループの上に独自に名前つきキャプチャグループを実装するような形になった. 使い方はREADMEを見てもらうとして, なぜこんなものがほしくなったのかという話を書いておく. 標準の名前つきキャプチャのよくないところ キャプチャグループの実体と名前の乖離 名前つきキャプチャは正規表現中で(?<name>pattern)のように書くことで, patternにマッチした部分をあとからnameで参照できる. たとえば, Webサーバのルーティング処理で, パス中に名前つきでパターンを書いておけば非常に便利そう

    正規表現の名前つきキャプチャを便利にする - 貳佰伍拾陸夜日記
    y_uuki
    y_uuki 2016/02/14
    "文化のせいにするのももったいないので, あえて空気は読まずに, べんりそうなものはどんどん公開していこう, とおもっている."
  • APIへのPUTやDELETEもブラウザから試す - 貳佰伍拾陸夜日記

    APIサーバを作っているととにかくcurlで叩いてレスポンスを| jq .して見て, とやっていてリクエストボディのJSONの中括弧や引用符の対応がとれてなくてイライラしたり, 必要なヘッダをつけ忘れていてハマったり, とにかく非効率な感じがしてきたので, ブラウザ上から操作できるようにして, リクエスト内容の編集も(コマンドラインよりは)簡単にできるようにしてみた. 特徴 スタンドアロンなサーバとして動くのでどんなAPIサーバに対しても使える API叩く先のホストをコマンドライン引数で指定するとそこへリバースプロキシする 結果のJSONを自動整形・ハイライトする そういうのやってくれる拡張入れてるときは余計なことはしないで拡張に任せる リクエスト内容のエクスポートが可能 パーマリンク curlコマンド HTTPプロトコル インストール golang環境を用意する 以下のコマンドを実行 $

    APIへのPUTやDELETEもブラウザから試す - 貳佰伍拾陸夜日記
    y_uuki
    y_uuki 2016/02/05
    これはよい
  • bullet-scala: N+1クエリ問題を回避する - 貳佰伍拾陸夜日記

    Scala関西 Summit 2015での発表で触れていたN+1クエリ問題をなんとかするためのライブラリを公開した. 発表は以下のもので, ここでは「関係モナド」という名前で紹介していたけれど, これは口頭でも説明したように便宜上てきとーにつけた名前であって, とくにそういう名前のよく知られたモナドがあるというわけでもなければ, そもそもモナドであるかどうかはあまり質的ではない. この発表のあとに, Rails (Active Record)でのbulletのようにN+1問題の検出をScalaでやる方法はないだろうか, と言っている人がいたので, そういうものを探していて辿りつけるとよかろうということで, bullet-scalaという名前にした. もちろんN+1問題の検出のためのライブラリというわけではないし, 動的に検出するのではなく原理的に問題が発生しないようにするものなので, 思

    bullet-scala: N+1クエリ問題を回避する - 貳佰伍拾陸夜日記
    y_uuki
    y_uuki 2015/08/15
  • Scalaで生SQL - SlickのSQL補間子にリストを渡す 他 - 貳佰伍拾陸夜日記

    ScalaSQLを書くのにSlickで便利にやる話. Slickでは生SQLを補間子(sql"...")で書けるけれど, リストが渡せなくてWHERE column IN ($list)できなかったり, 他にもいくつか不便なところがあったのでなんとかした. 最近になってScalaを書き始めたのでScala力を上げるための練習も兼ねている. なぜ生SQLか 社内では既にMackerelでSlickを使っていて, liftedな書き方をしているけれど, これはぱっと思いつくだけでも以下のような実運用上の課題があった. そもそもどの部分がクエリを表しているのかぱっと見わかりづらい 意図せず複雑なクエリになることがある 非Scalaエンジニアが読めない とくに最後のは, たとえばインフラ系のエンジニアが(クエリログを精査した結果などから)やばいクエリの出所を探そうと思ったときに全く手がつけられな

    Scalaで生SQL - SlickのSQL補間子にリストを渡す 他 - 貳佰伍拾陸夜日記
    y_uuki
    y_uuki 2015/05/03
    これでクエリが読めるぞ!!
  • Evil: EmacsをVimのごとく使う - 導入編 - 貳佰伍拾陸夜日記

    You underestimate the power of the dark side. Star Wars: Episode VI - Return of the Jedi EmacsはLispで自由自在に拡張でき, エディタの枠におさまらず, コンピュータ上でのあらゆる創造的活動のための環境として発達してきました. しかし, 少なくともファイルを閲覧し編集するという操作に関しては, vi/Vimが非常に優れたインタフェースであることもまた事実です. 両者はそれぞれが根強いファンを抱え, 長らく宗教戦争を繰り返してきました. この対立が止揚された結果として生まれたのがEvilです. Emacsのなんでもありな環境の上でVimをエミュレートすることで, EmacsでありながらVimの操作性を実現したのです. 稿では, Evilとは何かということに始まり, 具体的な導入方法について解説し

    Evil: EmacsをVimのごとく使う - 導入編 - 貳佰伍拾陸夜日記
    y_uuki
    y_uuki 2015/04/12
  • Caskはもう古い、これからはEl-Get - いまどきのEmacsパッケージ管理 - 貳佰伍拾陸夜日記

    秘伝のタレとなったEmacsの設定をgitで管理するなどして, 複数の環境で同じ設定を使うようにするのはかなり一般的になってきました. ただ, 使っている非標準パッケージも含めてきちんと管理しようと思うとけっこう大変です. とくに, 以下のような点はぜひとも実現したいところですが, (これまでは)なかなか難しい部分もありました. 使っているパッケージのインストールを自動化したい いろいろな配布元(GitHub, Emacs Wiki, 個人Webサイト, etc.)からインストールしたい きちんと動くことがわかっているパッケージバージョンに固定したい 新しいパッケージを簡単に試したい パッケージと設定の対応をわかりやすくしたい この目的のために, 最近はCaskを使うのが流行っているようですが, 上に挙げたポイントをすべて解決しているわけではありません. 筆者のまわりでも, Caskを使っ

    Caskはもう古い、これからはEl-Get - いまどきのEmacsパッケージ管理 - 貳佰伍拾陸夜日記
    y_uuki
    y_uuki 2015/02/22
    もう古い!!
  • Maybeに限らずJavaで直和型を実現できるか - 貳佰伍拾陸夜日記

    JavaでMaybeを説明した以下の記事について, id:tozimaさんと某所*1でやりとりしていたら, 有益な話が出てきたのではないか, ということになったので, 紹介. 基的にやりとりをそのまま*2抜粋したものに, 適宜補足を加えていきます. 発端 2012-06-29 04:29id:tozima こんな記事があった。 Java の語彙で Maybe を説明してみる - ぐるぐる~ 直和型のエンコーディングである、 でMaybeモナドを説明している、まっとうな記事です。気になったのは、上のエンコーディングを Java の上でやって、なにか変なことが起きないのかということ。例えば記事中では、 *3 みたいなことが、Javaでは禁止できない、ってことについて触れています。この他には変なことはおきないんでしょうか? 僕には全然Java的な言語への直感がないので教えてください!!! 「.

    Maybeに限らずJavaで直和型を実現できるか - 貳佰伍拾陸夜日記
  • 『BrandSafe はてな』のアドベリフィケーションのしくみについてアドテク系勉強会で発表しました - 貳佰伍拾陸夜日記

    BrandSafe はてなで使われている技術についてアドテク系の勉強会で発表してきました. 『BrandSafe はてな』のアドベリフィケーションのしくみ from Lintaro Ina 機械学習っぽいことをやっていますが, その手の分野はわりと門外漢ということもあって, 世の中のもっと先進的なアプローチと比べると簡単で地味な感じになっています. 弊社ではこういった分野に強みを持つ方も積極採用しておりますので, 「もっとこうしろよ!」なんて思った方は是非とも応募をご検討ください. 株式会社はてな エンジニア職募集ページはこちら

    『BrandSafe はてな』のアドベリフィケーションのしくみについてアドテク系勉強会で発表しました - 貳佰伍拾陸夜日記
  • Rubyで関数型プログラミング - 貳佰伍拾陸夜日記

    Rubyでの快適関数型プログラミングライフを追求するあまり, 使えるのか使えないのかよくわからないものを作ってしまったという話. Rubyに不慣れな人や関数型プログラミングに不慣れな人に対して酷なのはまだわかるとしても, C++(というかboostでの関数型プログラミング)に不慣れな人も全力で置いてきぼりにする誰得記事になってしまった...... 経緯 そもそもRubyはだいぶLispっぽくて, ブロックとイテレータを使うだけで関数型プログラミングになってしまう. たとえばこんな感じで: %w|1 2 3 4 5|.map{|x| x.to_i} %w|1 2 3 4 5|は'1'から'5'までの文字列からなる配列で, その配列のメソッドArray#map*1に対して, 受け取った引数を整数化するブロックを渡してやると, 1から5までの整数からなる配列が得られる. たとえば関数型プログラミ

    Rubyで関数型プログラミング - 貳佰伍拾陸夜日記
  • 1