タグ

ブックマーク / syohex.hatenablog.com (20)

  • DeNAに入社しました - Shohei Yoshida's Diary

    7月 1日から DeNAで働くことになりました. オフィスは渋谷オフィスです. きっかけは私がストレス溜まりまくっていた時期に Twitterの名前欄に「求職中」と書いていた(非常識な行為で, 前の会社には申し訳なく思います)ときにお声がけをいただいたことです. 働いてみたいと思った理由は尊敬するエンジニアも多く, 多くの刺激を受けられ, 今の自分にとって非常に良い環境だと思ったからです. (もちろん環境はあくまで環境なので伸びるかどうかは自分次第だと思っていますが) その他の理由としては お金がある会社での働き方を知りたかった マネージメントの行われ方を知りたかった 前の会社ではお金がないということで従業員一同様々なことで苦労しました. 一人あたりの仕事の量であったり, 携わる仕事の内容であったり. 結局お金がないとそこまでやりたくない仕事も(少ないお金で)やらないといけないし, 新しい

    DeNAに入社しました - Shohei Yoshida's Diary
  • FreeBSDの posix_spawnの実装 - Shohei Yoshida's Diary

    http://blog.kazuhooku.com/2015/05/how-to-properly-spawn-external-command.html を見て, 再現コードを FreeBSDで実行してみたとき, 期待される挙動になったので FreeBSDでの実装を確認してみました. コード FreeBSD r282608のソースコードを対象にしています. posix_spawnは lib/libc/gen/posix_spawn.cで定義される. int posix_spawn(pid_t *pid, const char *path, const posix_spawn_file_actions_t *fa, const posix_spawnattr_t *sa, char * const argv[], char * const envp[]) { return do_posix

    FreeBSDの posix_spawnの実装 - Shohei Yoshida's Diary
  • LLDiverのエディタ対決に Emacs代表として参加しました. - Shohei Yoshida's Diary

    http://ll.jus.or.jp/2014/ エディタ対決に Emacs代表として参加してきました. ネガティブな発言が多めで、もっとポジティブなことを言うべき だったと反省しています. ごめんなさい. 資料 5分弱でということだったのでほとんど内容はありません. 以下脳内シミュレーションで話の内容を考えていたけど話さなかった ことや当日うまく話せなかったことについて. 拡張言語 Emacs Lisp 括弧だらけで, 機能的にも貧弱な言語ですが, 好きです. というか書くのが楽. 楽というのは論理的な意味でなく物理的な意味でです. 括弧が多いことなんて 慣れればどうにでもなります. 逆に物理的に書くのが大変と思うのは, pythonとか CoffeeScriptのようなインデントに意味がある言語. 自動インデントができない のが辛すぎる. パッケージ管理 package.elはとりあ

    LLDiverのエディタ対決に Emacs代表として参加しました. - Shohei Yoshida's Diary
  • シェルスクリプトを公開するとき, コマンド前にバックスラッシュをつけるべき - Shohei Yoshida's Diary

    oh-my-zsh の環境で、peco-select-history が動かない - Qiita 追記 2014年 7月 7日 シェルスクリプトと書いてしまい漠然すぎましたが, ここで述べている ことが問題になるのは, .bashrc, .zshrcに関数, alias設定等がコピー される場合や, sourceコマンドでファイルを読み込む場合です. non-interactiveに実行されるシェルスクリプトについては特に 問題ないです. 問題点 そうしないと, 公開されたコマンドを自分の環境に導入した場合, aliasにより正しく動かなく場合があるためです. aliasをつけがちな コマンド(ls, grep等)がシェルスクリプトに含まれていると 特に問題が起こる可能性が高くなります. 例 pecoを使って カレントディレクトリのファイルをページャで開く 例を考えてみましょう. 単純に考

    シェルスクリプトを公開するとき, コマンド前にバックスラッシュをつけるべき - Shohei Yoshida's Diary
  • Ubuntu12.10で gif screencastを作成する - Shohei Yoshida's Diary

    Macだといろいろ方法があるようなんですが、Linux環境ではわからなかったので 調べました。それについてのメモです。環境は Ubuntu 12.10とします。 開発中のパッケージも含めるといろいろあるようなんですが、そうでなく 普通にインストールできるパッケージを使った方法になります。 パッケージのインストール 必要となるパッケージは recodermydesktop mplayer imagemagick になります。それを初めにインストールしてください。 % sudo aptitude install gtk-recordmydesktop mplayer imagemagick screencastの撮影 recordmydesktopを使って screencastを撮影します。 特定のウインドウだけ撮影するときは、「ウインドウを選択」で該当の ウインドウを選択します。全体を撮る場

    Ubuntu12.10で gif screencastを作成する - Shohei Yoshida's Diary
  • keyfreqで Emacsの使い方を見直す - Shohei Yoshida's Diary

    コマンドの使用頻度を表示してくれる keyfreqの紹介 目的 効率的な移動コマンドをちゃんと使っているかとか, ユーティリティ 書いたけど, 全然使ってないとか判断するのに使えます. リポジトリ https://github.com/dacap/keyfreq インストール MELPAからインストールできます M-x package-install keyfreq 設定 (require 'keyfreq) ;; package.elからインストールした場合は不要 (keyfreq-mode 1) (keyfreq-autosave-mode 1) 表示例 M-x keyfreq-show で表示してくれます. 3039 24.20% self-insert-command SPC..~, ?.. 2509 19.98% next-line C-n, <down> 2127 16.94%

    keyfreqで Emacsの使い方を見直す - Shohei Yoshida's Diary
  • Emacsユーザが「実践Vim」を読んだ感想 - Shohei Yoshida's Diary

    はじめに 私はにわか Emacsユーザであり, 定期的に Vimへの乗り換えを試み, 挫折を繰り返していました. なんで最近は諦めて Emacsの使い方をまともに 覚えようという方向でやっていこうと決めたんですが, このを 読んでまた気持ちがぐらついてしまいました. Vimだからこその内容 Emacsやその他エディタではおそらくこの内容は書けなかったと思います. Emacsやその他エディタで Tipsを書くとなると, 「こうしたらこうできます」とか 「この拡張を入れたら、こんなことがお手軽にできるようになる」ということが 終始続くことになるでしょう. というのも Vim以外のエディタでは基的には ある地点しか見ることができないからです. ある地点でできるベストなことは どの段階でもおそらくベストです. しかし Vimは違います. それはある地点の 作業を次に活かせるからです. それが

    Emacsユーザが「実践Vim」を読んだ感想 - Shohei Yoshida's Diary
  • package.elを使う場合の設定ファイルの書き方 - Shohei Yoshida's Diary

    init-loader.el と package.el を導入して快適 Emacs ライフ - Qiita に影響されて書きます。 package.elの設定ははじめの方に書く ;; Emacs package system (require 'package) (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/")) (package-initialize) package.elを使っているような人であれば、上記のような設定がどこかしらに あると思うのですが、これは初めの方に書くべきです。具体的には早い段階で package-initializeを呼ぶべきだからです。 package.elはパッケージ管理だけのツールではない package.elを使ってパッケージをインストールした場

    package.elを使う場合の設定ファイルの書き方 - Shohei Yoshida's Diary
  • MELPAへのパッケージの登録の仕方 - Shohei Yoshida's Diary

    昨日の関西 Emacs勉強会でパッケージ管理の話がちらっと出たん ですけど、あんまり自分でパッケージを登録する人が少なそうだったん でその手順を簡単に示します。 recipeを書いて、pull requestを送る https://github.com/milkypostman/melpa 上記の MELPAのリポジトリを forkします。その中に recipesディレクトリに 目的のパッケージの レシピを追加して pull requestを送り、それが master ブランチにマージされたら、package.elからインストールできるように なります。 pull requestを送るに当たっては、とにかく他の recipeを参考にする ようにしてください。MELPAをリポジトリを管理している方はとても 寛容な方ですごく丁寧に受け答えしてくれるのですが、たくさんの pull request

    MELPAへのパッケージの登録の仕方 - Shohei Yoshida's Diary
  • emacs-jpはじめます - Shohei Yoshida's Diary

    http://emacs-jp.github.com/ https://github.com/emacs-jp/emacs-jp.github.com Emacsのコミュニティサイトみたいなのがあったらいいよね、って 2年前ぐらいから話していた気がするんですが、全く持って実現に 至れていませんでした。ですが、先週の @myuheさんの 以下の tweetからいろいろ議論が盛り上がり、ようやく行動に 移れたかなという感じになっています。 結局、日Emacserが集える場所とはどこだったのか。 2013-02-12 19:43:47 via twitcle 主な目的 質問、疑問に答える 添削 メンテナンスされていないパッケージを emacs-jp organizationで管理する などです。 こんな人はぜひ わからないことがある こんな拡張ないの ? こんな拡張書いたけど、見て欲しい こ

  • "set -e"に関するメモ - Shohei Yoshida's Diary

    シェルスクリプトで #!/bin/sh set -e とすると、コマンド実行時に戻り値が 0以外になれば即座に終了 するという便利な機能があります。しかし diffコマンドのように 戻り値 0は差分なし、1は差分あり、それ以外はエラーみたいな 感じで戻り値を利用されると、diffの部分で処理が終了してしまう という問題があります。 #!/bin/sh set -e diff test/old.txt test/new.txt > test.patch echo "finish" のような場合, diff自体は成功しますが、それ以降が実行されず "finish"と表示されないということが起きます。 解決方法 コマンドを ifや whileの条件として書くことで、この問題を回避できます。 #!/bin/sh set -e if diff test/old.txt test/new.txt >

    "set -e"に関するメモ - Shohei Yoshida's Diary
  • おすすめの helm拡張 - Shohei Yoshida's Diary

    この投稿はEmacs Advent Calendar 2012の 7日目の記事です。 拙作の helmプラグインを紹介しようかと思ったのですが、 そもそも helm(anything)を使っている人がものすごく多いって わけではなさそうなので、おすすめの拡張をいくつか紹介しようと 思います。 事前準備 helmは MELPA, el-get等でインストールできます。 package.elでのインストール方法を事前に示します。 以下の設定を ~/.emacs.d/init.el, ~/.emacs等に追加してください。 (require 'package) (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/")) (package-initialize) 以下のコマンドを実行します。 M

    おすすめの helm拡張 - Shohei Yoshida's Diary
  • cperl-modeでの引数の無名関数のインデント - Shohei Yoshida's Diary

    コールバックを引数で取るような関数で無名関数を使ったとき こんな感じにして欲しいところですが、 cperl-modeだとこんな感じか こんな感じに なってしまいます。どうやったら一番上になるんだって思って ソース見ていたらなんとかなりそうだったのでその手順を示します。 melpaから取得できる cperl-modeの場合 このためのフラグ cperl-indent-subs-speciallyが用意されているので それを設定するだけで対応できます。 (setq cperl-indent-subs-specially nil) ;; もしくは (custom-set-variables '(cperl-indent-subs-specially nil)) Emacs付属の cperl-modeの場合 Emacs付属の cperl-modeも一応開発が進んでいるようで、 melpaにはない修

    cperl-modeでの引数の無名関数のインデント - Shohei Yoshida's Diary
  • Emacsで人生を振り返る。 - Shohei Yoshida's Diary

    Macのスクリーンショットで1日の作業を記録して動画で振り返り - 西尾泰和のはてなダイアリー に着想を得て、capture-mylife.elというものを作ってみました。 まあ上記のことを実現する Emacsフロントエンドなだけですが・・・。 リポジトリ syohex/emacs-capture-mylife · GitHub 必要なもの キャプチャリング scrot or import(Linux) screencapture(MacOSX) nircmd.exe(Windows) 動画化 avconv or ffmpeg デスクトップ全体のキャプチャリングはすべて対応していますが、 アクティブな Windowのキャプチャリングについては scrotをインストール した Linux環境に限られます。importコマンドや xwdコマンドでも実現 できるはずなのですが、デスクトップ全体だ

    Emacsで人生を振り返る。 - Shohei Yoshida's Diary
  • expand-region.elの紹介 - Shohei Yoshida's Diary

    magnars/expand-region.el · GitHub expand-region.elの紹介。結構便利と思う人が多いんじゃないかなと 勝手に思っています。 追記 まだ大きく変更されていることがあるものなので、定期的にアップデートした方が よいと思います。 気になる方は githubプロジェクトをwatchしておくとよいでしょう。 設定 githubから cloneしてそこに load-pathを設定しておいてください。 ;; expand region (add-to-list 'load-path "~/.emacs.d/expand-region.el") (require 'expand-region) (global-set-key (kbd "C-@") 'er/expand-region) (global-set-key (kbd "C-M-@") 'er/co

    expand-region.elの紹介 - Shohei Yoshida's Diary
  • shell-popしたときに、カレントバッファのディレクトリに移動する - Shohei Yoshida's Diary

    EmacsWiki: Shell Pop shell-popは大変便利なのですが、ディレクトリの移動が面倒なことが あります。使い方は人それぞれだと思いますが、私の場合、カレントバッファに 関連した処理を実行したい場合に shell-popを使うので、popupした 際に自動でカレントバッファのディレクトリに移動できるようにしてみました。 コード ansi-termで動作することを確認しています。 zshに限りですが, 打ちかけのコマンドがある場合はコマンドスタックに積みます。 (defadvice shell-pop-up (around shell-pop-up-around activate) (let ((cwd default-directory)) ad-do-it (if (string-match "zsh" shell-pop-internal-mode-shell) (

    shell-popしたときに、カレントバッファのディレクトリに移動する - Shohei Yoshida's Diary
  • test-more.elを書いています - Shohei Yoshida's Diary

    Emacs Lisp版 Test::Moreを書き始めました。 コードの大部分は @nitro_idiotさんのcl-test-moreをベースにしています。 現状はかなり簡素化しています。 Emacsにはテストフレームワークがいくつか存在しているのですが、 しっくりこなかったので普段 Perlで利用するような感じでできたら いいかなと思って書きました。 リポジトリ syohex/emacs-test-more · GitHub 実装済み関数 ok is isnt diag is-print is-error is-type like skip pass fail 定義はすべて test-more:という prefixがついています。 サンプル まだ書きかけなので全然なのですが、以下のように利用します。 cl-test-more風です。 (require 'test-more) (test

    test-more.elを書いています - Shohei Yoshida's Diary
  • Text::AAlibを書いています。 - Shohei Yoshida's Diary

    XSを書く練習の続き。 前回はごりごりとXSで書くというものだったので、 今回はライブラリのバインディングにチャレンジ。 扱うライブラリは An ascii-art library というアスキーアートを作るためのライブラリ。 開発リポジトリ syohex/p5-Text-AAlib · GitHub 現状 必要最低限な機能だけとりあえず実装しました。 機能的にドキュメント読んだだけではよくわからないところが あるので、それについてはソースを読んで充実させていく予定です。 テストの書き方も今一つわかっていないので、他のライブラリの 実装も見て勉強する必要がありそうです。 #!perl use strict; use warnings; use Text::AAlib; use Imager; my $file = shift or die "Usage: $0 image"; my $im

    Text::AAlibを書いています。 - Shohei Yoshida's Diary
  • なぜ Data::MessagePackのテストが ARM環境でパスしなかったのか ? - Shohei Yoshida's Diary

    Data::MessagePackのテストが ARM環境でテストをパスしていませんでした. これはバージョン 0.38では解決された問題です. @__gfx__さんが msgpack体の問題を修正し, 私が PP版の 修正を行いました. 結論から言うと, ABIの問題です. ARMには OABIと EABIがあり, OABIの環境でテストをパスしていませんでした. それについて 示していきます. エンディアン ビッグエンディアン, リトルエンディアンという言葉はコンピュータに ついて勉強をしたことがある人であれば聞いたことがあると思います. 当然 msgpackもその 2つのエンディアンを考慮していました. でも ARM OABI環境ではそれだけでは対応できていませんでした. 具体例を示します. 以下のようなプログラムを用意します. #include <stdio.h> int main

    なぜ Data::MessagePackのテストが ARM環境でパスしなかったのか ? - Shohei Yoshida's Diary
  • すべての AV女優にマッチする正規表現 - Shohei Yoshida's Diary

    Regexp::Aseembleで遊んでみた. コード 正規表現作成プログラム #!perl use strict; use warnings; use autodie; use Regexp::Assemble; use Web::Scraper; use URI; binmode STDOUT, ":utf8"; my $cache_file = 'actresses.list'; main() unless caller; sub main { my $actresses_ref; unless (-e $cache_file) { $actresses_ref = get_actress_names(); open my $fh, '>:utf8', $cache_file; print {$fh} "$_\n" for @{$actresses_ref}; close $fh;

    すべての AV女優にマッチする正規表現 - Shohei Yoshida's Diary
  • 1