$shibayu36->blog;

クラスター株式会社のソフトウェアエンジニアです。エンジニアリングや読書などについて書いています。

2015-01-01から1年間の記事一覧

2015年振り返り

今年はディレクターからエンジニアに戻ったり、引っ越しなどをして私生活が大きく変わったり、仕事がむちゃくちゃ忙しかったりと、何かと慌ただしい年だった。 ディレクターからエンジニアへ いろいろあってエンジニアに戻りたいということになったので、仕…

git-pr-releaseのjsonオプションを利用してリリース情報のサマリーをSlackに投稿する

git-pr-releaseには--jsonオプションがあって、これはリリースPRを作り、その情報を標準出力にJSONで出力してくれる。これを利用することでgit-pr-releaseと連携していろんな用途に利用できる。例えばこれを利用すると、以下のようにリリースPRのサマリー情…

「ドミトリーともきんす」という本を読んだ

ドミトリーともきんす作者:高野 文子中央公論新社Amazonふとしたきっかけでこの本を知ったので読んだ。非常に良かった。いろんな科学の現象や研究者の言葉を漫画形式でさらっと紹介してくれる本で、30分くらいで読めて楽しめる。僕は特にこの本の中の球面世…

git-pr-releaseでリリースPRの変更ファイルの情報を扱えるようになりました

git-pr-releaseというgithub上でリリース用の手順をまとめたPull Requestを簡単に作成できるツールがあります。 https://github.com/motemen/git-pr-release http://ninjinkun.hatenablog.com/entry/2014/06/03/175113 このリリースの手順を作る時に、そのリ…

「師弟登壇2015」ではてなの研修について発表しました

pepabo.connpass.com「師弟登壇2015」ではてなの研修について発表してきました。 speakerdeck.com 今回の発表は 実践で手を動かすのが一番勉強になる 出来るだけ早く知識を身に付け、チーム配属できるように工夫している をテーマに話しました。久々に発表し…

typescript-modeの時に、キー入力で自動でtypescript-insert-and-indentが実行されるのを止める

最近TypeScriptを書いているのだけど、エディタはいつもの慣れているEmacsを使って、typescript-mode.elを使っている。基本的には良いのだけど、なんか(とか{とか;を入力した時に変な挙動を起こしていて困っていた。調べてみると、この辺のキーにtypescript-…

Scala入門記

僕はこれまでまともに学習したプログラミング言語がPerlとJavaScriptしかなくて、静的言語的パラダイムや関数型パラダイムは概念は知っているものの、それがどう役に立つのか、逆にどういう面で課題がありどのように対処されているのか、などといったことを…

Web API: The Good Parts読んだ

APIの良い設計手法を学びたいと思って、「Web API: The Good Parts」読んだ。Web API: The Good Parts作者:水野 貴明オライリージャパンAmazonこの本は設計の美しいAPIはどのようなものかについていろいろ解説してくれる。APIにまつわることは様々な範囲で教…

暗号技術の要点を学ぶ - 「暗号技術入門」を読んだ

最近SSLやユーザアカウント管理の安全性とかに興味があって、その要素技術である暗号技術に興味が湧いてきたので、最近新板が出た「暗号技術入門」を読んだ。 暗号技術入門 第3版 秘密の国のアリス作者:結城 浩SBクリエイティブAmazon この本は、暗号学者が…

乱数の性質とセッショントークンの作成

ユーザアカウントのログイン機能とか作ってると、何らかの形でセッション用のトークンを作成する機会がある。今まではこれは適当にランダムな値を利用していればいいんでしょと思っていたのだけど、ちょっと違ったのでメモ。 乱数の性質 http://akademeia.in…

HTML5 スタンダード・デザインガイド読んだ

HTML5を利用するにあたって注意すべき点を学ぼうと思って、HTML5 スタンダード・デザインガイドを読んだ。HTML5 スタンダード・デザインガイド~Webサイト制作者のためのビジュアル・リファレンス&セマンティクスによるコンテンツデザインガイド~ [リフロ…

「体系的に学ぶ安全なWebアプリケーションの作り方」再読した

ユーザアカウント周りの実装で気をつけるべきことをもう一度学び直すために「体系的に学ぶ安全なWebアプリケーションの作り方」を再読した。体系的に学ぶ 安全なWebアプリケーションの作り方[固定版] 脆弱性が生まれる原理と対策の実践作者:徳丸 浩SBクリ…

プロジェクトを成功させるために最初におこなっていること

ディレクター時代に仕事でプロジェクトを受け持つ時にどうやったら成功させることが出来るのかについていろいろ考えていた。僕は開発フローをいろいろ考えるのが好きなのだけど、実際に自分がリーダーシップを取ってプロジェクトを進めることを経験すると、…

符号化文字集合と文字符号化方式 - 「プログラマのための文字コード技術入門」を読んだ

最近文字コード周りでハマった時に、文字コードというものをそもそもちゃんと分かってないと気づいた。そこで「プログラマのための文字コード技術入門」を読んで勉強してみた。プログラマのための文字コード技術入門 (WEB+DB PRESS plus) (WEB+DB PRESS plus…

ScalaのOptionとEitherで例外処理を行う方法

Scalaの例外処理はOptionとかEitherを利用するっぽいんだけど、調べてもいまいちその使い方が分からなかった。いろいろやってみたところ、だいぶ分かってきたので、後から自分で読み返せるようにメモ。 Optionを利用する Optionは値があるかないかわからない…

Amazon SESとSNSを利用してバウンスメールを自動的にハンドリングする

メールを送るアプリケーションを作成していると、使われていないメールアドレスで登録された時や、携帯のメールアドレス変更によって登録されているメールアドレスが使えない状態になって、メール送信時にバウンスメールとして返ってくることがある。この時…

Scalaスケーラブルプログラミングを読んだ

Scalaの勉強をしたかったので読んだ。Scalaスケーラブルプログラミング第2版作者:Martin Odersky,Lex Spoon,Bill VennersインプレスAmazonこの本はScalaの利用について、かなり詳しく書かれている本。Scalaの使い方にとどまらず、Scalaの内部についても触れ…

scalaでcase classをエイリアスする

Scalaではクラスをエイリアスしたいときはtypeというキーワードを利用する。 class Hoge() { def print(): Unit = { println("hoge") } } type Fuga = Hoge val fuga = new Fuga() fuga.print() しかしこのやり方だけではcase classのエイリアスは出来ない。…

#yapcasia 2015に参加しました

今年もYAPC::Asia 2015に参加しました。今年のYAPCも非常に面白いトークが多く、またいろいろな人と会話でき、非常に楽しめた。トークとしては、Effective ES6、Perlの上にも三年 〜 ずっとイケてるサービスを作り続ける技術 〜 、3分でサービスのOSを入れ替…

gitでpush前のcommitの一覧をリスト記法で取得する

github上でコードレビューをされた時、あるコメントに対する変更点を列挙して、「こういうふうに直しました」と言いたい時がある。こういう時にpush前のcommitをリスト記法で貼り付けたい。なんか出来ないかなと思ったら、以下のようにしたら出来た。 $ git …

変更した箇所だけTest::UsedModulesで不要なuseを検知する

blog.shibayu36.org以前こんなブログを書いたが、やはりCIでチェックしたいと考えた。全ファイルをチェックしようとすると時間がかかってしまうので毎回のテストでは実行したくない。しかし、毎回のテストで実行しないと結局はmerge前に検出するのが難しくな…

Test::Time::AtというCPANモジュールをリリースしました

社内でテスト時の時間操作を便利にするTest::Time::At というモジュールがあったので、それをCPAN化してリリースしました。テスト中の時間を止めて、sleepなどの操作をうまくハンドリングしてくれるモジュールにはTest::Time というモジュールがあります。こ…

Emacsで今編集しているPerlコードの無駄なuseを見つける

blog.shibayu36.org昨日作成したこの機能だが、結局やりたいことは今リファクタリングしたファイルで無駄なuseをしているものを消したいので、サクッと無駄なuseを抽出したいということだった。ということで現在編集中のファイルに対して、無駄なuseをしてい…

Perlで、あるファイルが必要のないモジュールをuseしてないか調べるスクリプト

Test::UsedModulesを使うと使っていないモジュールを検出できる。ユーティリティとしてリファクタリングのあとに、必要なくなったuseをサクッと調べられると、便利なのじゃないかと考えてcheck-perl-used-modulesというコマンドを作ってみた。check-perl-use…

Emacsを24.5に上げたらmarkdown-modeのインデントがおかしくなった

Emacsを24.3から24.5に上げたら、markdown-modeのインデントがおかしくなったのでメモ。 現象 リスト記法を使っている時に - hoge - fuga みたいに書くと思うのだけど、この時にfugaの行末からreturnを押すと - hoge - fuga のようになってしまって非常に使…

EmacsでTypeScript環境を整える

ScalaにつづいてTypeScriptも勉強しようと思ったので、まずはエディタのセットアップをした。 typescript-mode とりあえずtypescript-modeというのがあるので、それを入れる。M-x package-list-packagesしてtypescript-modeをインストールする。その後以下の…

sbtのlibraryDependenciesを少し追いかける

なんか%%とか%とかよく分からなかったので少し追いかけた。 %や%%とは groupID % artifactID % revisionという形式でlibraryDependenciesに追加することで、依存ライブラリを追加でき、sbtでビルドした時にダウンロードされる。さらに以下のような書き方もで…

チェーンポイズン読んだ

チェーン・ポイズン (講談社文庫) 作者: 本多孝好 出版社/メーカー: 講談社 発売日: 2012/01/17 メディア: 文庫 購入: 1人 クリック: 6回 この商品を含むブログ (15件) を見る 読んだ。非常に面白かった。 ラストのどんでん返しがスゴイ小説 - NAVER まとめ…

scalaで時間操作メモ

scalaの時間操作をする方法についてメモ。joda-timeというJavaのライブラリがあるので、それを利用する。 依存を追加 libraryDependenciesにjoda-timeを追加。さらにjoda-convertを追加しておかないと、コンパイル時にwarningsが出るので一緒に追加しておく…

gitで特定commitの日付を取得する

gitを利用して、特定commitの日付だけ取得したくなることがあったのでやってみた。 git logは--formatで出力形式を指定できる。また--dateオプションで日付形式を指定できる。そして-(数字)オプションでcommit数に制限をかけられる。 これらを利用すると、以…