サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大そうじへの備え
ayato.hateblo.jp
2015-06-29 社会人 6 年目の僕から新社会人だった頃の僕に教えてあげたい幾つかのこと 日記 最近、僕より若いか同い年くらいの前途ある若者と話をする機会があって、だいたい新社会人だとか学生だったりで将来とか仕事とかについて相談を受けたりすることがあるんだけど、そんな彼/彼女らを見ていると「出来ることなら昔の自分にも教えてあげたいことが沢山あるなー」という気持ちになってくる。ので、まぁもし僕が自分自身の若い頃に助言を出来るならこういうことを教えるだろうなーというようなことを書いてみる。ひいては今プログラマを目指している若者たちに対するおじさんからのメッセージになるといいかなと思う。 エディタをひとつ使いこなしたほうがいい ひとつだけでいいのでまともに何かを極めて欲しい。なんなら IDE でもいいけど、そのへんは自分が今使っている言語に合わせて変えて欲しい。サクラエディタや UnEdi
「 Clojure が素晴らしい言語であるのはなんとなくわかった。興味はあるんだけど、何処に実際に使っている人たちいるの?」とか「ちょっと分からないところがあるから聞いてみたいんだけど、 QA サイトに投稿するほどじゃないんだよなー」という人たちが一定数きっといると思うんだけど*1、そういう人たちは Slack の Clojure 使いが集まる場所に是非きてください。 以下のページから登録できます(ちょっと時間かかるけど、一日以内でだいたい招待されると思う)。 ここに #clojure-japan というチャンネルがあり、そこには日本語の通じる Clojure を日々業務で使っていたりする人が多くいます*2。 勿論、 #clojure, #clojurescript, #cider などといった特定のトピックに対応したチャンネルもあるので興味ある人は覗いてみてもいいかと思います(ローカルチ
一ヶ月くらい前に inf-clojure 導入記事を書いたのに、それ以来何も触れてなかったのでそろそろまた書いてみる。 一ヶ月くらい前に書いたってことはつまりあれから一ヶ月くらいは使っているわけですが、間に少し Cursive を使っていたのでまるまるじゃないですが、だいたい仕事中は inf-clojure 使っています。まぁ不満点はほぼほぼないです。 さくっとコードの全貌を置いておきます。 (add-to-list 'auto-mode-alist '("\\.boot$" . clojure-mode)) (add-to-list 'auto-mode-alist '("\\.cljs$'" . clojure-mode)) (add-to-list 'auto-mode-alist '("\\.cljx$'" . clojure-mode)) (add-to-list 'auto-m
めちゃくちゃ可愛いロゴが気になる Clojure のビルドツール Boot について色々と調べたので書き残しておく。 だらだら書いてたら長くなってしまったので Boot のインストール記事を分けた -> Boot を使いはじめる(インストールから基本的な使い方まで) - (define -ayalog '()) この記事を書いたモチベーション 日本語の記事を検索しても 1 件足りとも触れられている記事がなかった。 日本人の Clojure チョットデキル界隈の人は英語が堪能なので、英語の記事を読んで満足しているんだと思う。うん。 Boot とは Clojure のビルドフレームワークであり Clojure スクリプト*1をアドホックに評価するものです。 Boot は Clojure で書かれたスクリプトをビルドするために、プロジェクトの文脈で必要な全てのツールを含むランタイム環境を提供し
お仕事中に盛大にハマって、最終的に一緒にやってる Clojure チョットデキルマンに助けてもらった。 Clojure のライブラリを Leiningen や Boot に含める場合、次のような表記を用いる。 [group-id/name version] Leiningen や Boot はこれを group-id/name でひとつのライブラリとみなし、もし数あるライブラリの内部で使われているライブラリが重複した場合には、後勝ちで依存性が解決されていく*1。 なので例えば foo/piyo というライブラリが a/nyan 0.9, a/nyun 0.8 というライブラリを依存関係に含んでいて、 bar/puyo というライブラリが a/nyan 0.1, a/nyun 1.2 というライブラリを依存関係に含んでいる場合に、 foo/piyo -> bar/puyo という順番で依存
まえがき 日本で Clojure を使い始めた 1 人の Clojure プログラマとして、この 1 ヶ月で感じたこととか Clojure をとりまく環境とか書いておきたいなと思う。 日本では流行ってない? 2010 ~ 2011 年頃、空前の Clojure ブームがあったらしい。原因は「 Programming Clojure 」の翻訳本である「プログラミング Clojure」が 2010/01 に出版されたからだと思う。 プログラミングClojure 作者: Stuart Halloway,川合史朗出版社/メーカー: オーム社発売日: 2010/01/26メディア: 単行本(ソフトカバー)購入: 10人 クリック: 338回この商品を含むブログ (72件) を見る だいたい、日本語で Clojure の情報を検索しようとすると 2010 ~ 2011 年頃の古い記事が結構ヒットしてく
一個前の記事で言及している Boot についてです。 github.com ああ、ロゴが可愛いですね。本当に。 さて、さくさくっと 1 週間くらい触ってきて知見もそこそこにたまってきたので公開します。 目次 思いの外チュートリアルが長くなったので… インストールの仕方 簡単なチュートリアル 幾つかの TIPS 僕が Boot を使い始めてよかったと思った点 インストールの仕方 *nix/Mac 系なら boot.sh をダウンロードして次のようなコマンドを実行 $ mv boot.sh boot && chmod a+x boot && sudo mv boot /usr/local/binWindows なら*1 boot.exe をダウンロードして C:\> move boot.exe C:\Windows\System32Boot を一度実行すると Leiningen と同じように色
最近、自宅の ThinkPad X220 で Cider-mode を起動すると segfault が起こるようになった。一度起こるとマシンを再起動するまで JVM が起動できなくなってしまう*1。 まぁそういうきっかけがありつつ、開発しているときに Cider を起動するだけで 30 秒程待つ必要がある事実が嫌すぎて*2、原点回帰ということで inf-clojure に乗り換えることにした*3。 ちなみに僕が Cider-mode を嫌になった点を幾つか書いておきます。 1. 待ち時間が長い/起動が遅い これは Clojure 使うなら仕方ないことだけど、やっぱり REPL の起動に時間がかかる。基本的には reload を積極的に使うことで REPL の再起動をする必要はないのだけれど、それでもたまに再起動しないといけないときがある*4。そんなときに重いというのはネックだし、気軽に再起
まえがき だいたい 2 週間くらい Clojure を書いているとライブラリのバグを綺麗に踏み抜いたりマクロの沼に引きずりこまれたりと、まぁやたらとデバッグする機会があります。それで先日からライブラリを clone して書きなおして lein install して…などしていたのですが、一緒に Clojure 書いている Clojure チョットデキル人に「そんなことしなくてもいいよ」と色々教えてもらったのでだいたい現時点で僕が知っている幾つかのデバッグ方法を書いておこうと思う。ただし、これは Clojure 一般というよりは Emacs/Cider-mode という環境に依存している部分が多いと思うので他の環境を使っている人はもしかしたらかなり役に立たないかもしれません。アプローチそのものは他の IDE などでも実装されているかもしれませんが僕はよく知らないので悪しからず。 Print
無事に社会人歴 5 年を終え 6 年目の春をサイボウズスタートアップスという会社でスタートできたのでブログに書こうかなと思います。 時間がない人のために3行まとめ サイボウズスタートアップスという会社に Clojure 使いになるべく 入社しました 目次 なんとなく長くなりそうな気がしているので気になるところだけ読んでもらえればと。 転職しました 前職について 去年一年の活動について これからのこと 転職しました というわけで転職をしたわけなんですが、きっかけはたまたま見かけた求人情報でした。「これから Clojure を採用していこうと思っている」という旨の書かれた求人情報を見たときに、「本気で言ってるなら話でも聞きに行ってみようかな」と思い比較的軽い気持ちで面接を受けることにしました。 後述しますが、前職や前の現場に対する不満はほぼなく仕事もそれなりに楽しくやっていたので、転職と
github.com README すらまだ書いてないけど、とりあえず使えるものができたので npm にだけ登録してみた。 追記 javascripter.hatenablog.com 3 秒で不要になった。 Promise を直列で実行するのに、 Promise それ自身の特徴を使えば簡単にできることに気付かなかった。 reduce を reduce としてしかみてなく本質をみれば気付けたのに気付けなかったので修行足りてない。 何をするライブラリを作ったのか 簡単に言えば Promise を返す関数を順序を守って実行するものである。まぁ queue をためて前の関数の実行が終わったら次の関数を実行する、といったようなもの。 何故必要だったのか、あるいは作ったモチベーション 仕事をしていて AngularJS を使っているんだけど、 $http サービスの返す Promise をキャッシュ
最近ちょっと興味をもったテスト手法(技法?)があって、ちょこっとだけ調べたので書いてみます。 まえがき テストを書いていて何を指標にテスト書いたらいいか分からない、ということがありませんか? うん?コードカバレッジ 100% を目指してテストを書く?ええ、それは確かにひとつの指標としてはありかもしれせん。本当に動作するのか/しないのか、そのコードが生きているのか/死んでいるのか、それを確かめるひとつの手段にはなりえると思います。あるひとつの指標としてコードカバレッジ 100% を目指すことは決して間違いではないと思います。 ですが現実問題として "テストが意味を成していない*1" けど "コードカバレッジを満たしてしまう" ケースが同様に存在することも多いと思います*2。コードカバレッジ 100% がイコール「良いテスト」であるとは限りません。そのような場合にどう僕らは対処すべきか、そのひ
2015-02-09 A または B ではない 開発 日記 数日前の話だけど、ちょっとおもしろかったので書いてみる*1。 puts 'Hello' if (not A) and (not B) みたいなのをド・モルガンの法則で式変形すると puts 'Hello' unless A || B になるわけだけど、後者の方が読み難いよねっていう話になって、確かになんとなく直感に反するよねーという話をした。 コードの記述量で言えば後者の方がリーダブルだと思う。けど、ド・モルガンの法則を常に考えることが出来なければ、後者は一瞬で意図を取ることが出来ない。論理式、プログラムを書いているとちょいちょい出てくるし考える機会が出てくるけど、全員が全員論理式に強いわけじゃないので毎回書くときは慎重にならざるを得ない。出来るだけ考えずに読めるように、出来るだけ思考量を減らせるようにそういう風に考えて書いてい
ハッカーと画家については、以下の呟きがその素晴らしさを示していると思う。 前々から気になってたんだけど「ハッカーと画家を読んでLispをやるべきだと思った人」って本当にいるの? 私はそんな人は実は存在しないんじゃないかと疑ってるんだけど。 2011-12-10 10:36:24 via web すべてのプログラマが読むべき10冊 SICP、PAIP、CLtL2、On Lisp、LOL、実践Common Lisp、プログラミングGauche、Lisp in Small Pieces、The Art of the Metaobject Protocol、ハッカーと画家 2010-11-25 15:45:48 via Silver Bird 「ハッカーと画家」読んでLisp始めたり、有名なプログラマがスゲーと言ってたの見てSICP買ったりなので、テレビで「ダイエットにはバナナ」と聞いてスーパーに
最高に面白かった。軽く紹介したいと思う。 結論から書くと掛け値なしに良い本でした。 Rails 書く人は Railser と揶揄されがちですが、 Rails を普段書いてるけど Ruby はよく分からんという人にもオススメです(無粋なツッコミする人がいるので少し補足すると、 Rails を使っていると Rails が基本的な泥臭い仕事はやってくれるのでメタプログラミングや継承階層の仕組みについてめちゃくちゃ明るくある必要がないんです( IMO だし、知ってるに越したことはないけど)。例えばメソッドフック的なことだって before_action メソッドが肩代わりしてくれるので、そのような仕組みを自分で作る機会はグッと減ります。となると、そういうことをしたいときに Ruby はどう動いててどういう仕組みでそういうことを出来るのか、ということに思いを馳せる機会は減ると思います。そういう意味で
良い本だった。この本についてのレビューは色んな所にあると思うし、僕があまり何かを書く必要はないかなって気はする。 だけど、まぁちょろっと感想とか最近の JavaScript 周りについての所感というか、僕が感じているところについて合わせて書いてみる。 目次抜粋しようと思ったけど軽く鈍器なので、それなりに目次あってコピペするだけ無駄感あるので適当にリンク先参照してください。 パーフェクトJavaScript:書籍案内|技術評論社 感想的ななにか この本の前に僕は幾冊かの JavaScript 本を読んでいるので正直必要ないかなって思ってた。それから、 2011 年発売なのでちょっと古いかなって思ったけど全然そんなことなくてよかった。理由としては ECMA Script 5 の内容で書かれているからっていうのと、まだ 6 は策定中(だよね?)だから内容的には全然問題ないです。周辺のエコシステム
普段お仕事している中で何故かコードレビューをしている時間がわりとあって、暇さえあれば(暇がなくても)コードレビューしている。 そんな中でどういうところを見たらいいのか、あるいは見るべきなのかというのが自分の中である程度蓄積された気がするので書いてみる。あと最後に普段考えていることを少し書いた。 前提 現在の僕の参加しているプロジェクトはこんな感じ Rails プロジェクト( AngularJS 使ったりしている) Git 使ってる( Pull Request ベースの開発で以下が merge 条件) 2 人以上に approve される テストが通ること(継続的インテグレーションの実施) 静的コード解析は導入している( Rubocop, jshint, pre-commit など ) テストのカバレッジは計測していない(月一くらいで測ってるらしいんだけど、だからどうっていう話はない) プ
Slack で動く bot を作る(とりあえず発言だけ) - (define -ayalog '()) ということで今回もサクッと。 Slack で bot 作ってという無茶ぶりを某 naoiwata-san に言われたので、とりあえず API とか調べてたら思いの外簡単に出来そうだったのでやってみたという話です。軽くググると Heroku + Hubot あたりでやったという記事が幾つかあるので、多分世の中的にはそれでベターなんでしょうけど、なんとなくそれでやっても自分で作った感が皆無になってしまうのでわざわざ作ってみました。 とは言うものの、そんなに難しくないです。っていうか難しくないです。 まず Integrations から Outgoing WebHooks を選択して追加します。 https://my-account.slack.com/services/new この URL
2014-11-07 紛らわしい実装はすべきではないと学んだ話 JavaScript 日記 開発 話は今日の朝まで遡る。 一昨日くらいにプロダクトの AngularJS を 1.3 から 1.2 へとダウングレードしたんだけど*1、今朝になって何故か一部動かない部分があることに気が付いた。というか、同じチームの人から言われて調査することに。まぁ今まで動いてたのに急に動かなくなったから、原因は必然的にダウングレードしたことに絞られるわけだけど、調べていく中で ng-show が綺麗に動いていないことが分かった。具体的にはこういうコードを僕は書いてた。 <div ng-show="obj.foo"> <!-- some logic --> </div> なんだけど、最近その辺を少し修正してたから、そのオブジェクトを作ってる付近でバグを作ったかな?って疑った*2。このとき、この値には文字列の
以前、 underscore.js というものを紹介したことがあったのだけど、今回は Lazy.js という underscore.js like なライブラリを紹介したいと思う。 ホームページはこちらから。 Lazy.js - v0.3.2 インストールはコマンドプロンプトで npm install lazy.js --saveThat's all!! so really easy. 何故、 Lazy.js を使うのか イントロダクションを読めば分かるけど、 underscore.js で大きなコレクションを扱おうとするとパフォーマンスが気になってきます。そうなると、愚直な手続き的なコードを書かざるを得なくなる。 イントロダクションから抜粋すると例えばこういう例 //これは Lazy.js を使って Array を作っているけど些細な問題なので気にしないでください。 var array
そんな夢のようなスクリプトを書いてくれている人がいた。最高。 Uninstall all rbenv gems #!/usr/bin/env bash uninstall() { list=`gem list --no-versions` for gem in $list; do gem uninstall $gem -aIx done gem list gem install bundler } #rbenv versions --bare RBENVPATH=`rbenv root` echo $RBENVPATH RUBIES=`ls $RBENVPATH/versions` for ruby in $RUBIES; do echo '---------------------------------------' echo $ruby rbenv local $ruby unins
2014-07-25 学生時代、英語が嫌いだった僕が英語を話せるようになるまで 英語 僕は英語が嫌いでした。3ヶ月くらい前まで。学生*1の頃、僕は通知表をもらう度に"えんとつ"や"あひる"が英語の項目のところによく並んでいたし*2、真面目に受験勉強をするといったことを経験したことがないので僕の英語の実力は恐らく平均的な中学生以下です。でした。 そんな僕が英語を楽しいと感じて、なんとかネイティブと会話できるくらいになるために勉強してきたことをちょこっと書いてみます。興味がある人はどうぞ読んで参考にしてもらえればと。一口に「英語が出来るようになりたい」と言っても、実際には人によって何で勉強したくて、何が出来るようになりたいのか違います。例えば ネイティブと会話出来るようになりたい 日記を英語で書けるようになりたい 英語の歌を綺麗に歌えるようになりたい 技術書や小説のオリジナルを読めるようにな
通称「 LOL 」読み終わりました。完全に宗教の本でした。 もちろん、僕はまだ On Lisp を読んでいないし、まして Common Lisp を知らないので深く理解出来たわけではないのですが、 Common Lisp の実用性の高さとマクロの真髄を垣間見れた気がします*1。 簡単に紹介するなら Lisp on Forth on Lisp を書く本です(違 目次はこんな感じ。 第1章 クロージャ 第2章 マクロの基礎 第3章 リードマクロ 第4章 プログラムするプログラム 第5章 アナフォリックマクロ 第6章 マクロの効率 第7章 Lispを動かすForthを動かすLisp 付録 僕が一番感動したのはアナフォリックマクロの章で、まぁそもそも On Lisp を読めばいいんですけどまだ読んでいなかったので「こんなことが出来るのかー」っていう感動は一番大きかったです。 すっごいわざとらしい例
朝からこんな記事を見かけたのでちょっと読んだ。 Big Sky :: peco で migemo が使える様になった。 僕は普段、 Xubuntu しか使っていないし最近は日本語ファイルとかディレクトリとか作らないからあんまり嬉しくないんだけど、 peco というツールの存在を知れたのが良かった。 早速ざっくり install した。 peco/peco · GitHub go lang を入れるのは簡単だったけど、 $GOPATH をどこにするか少しだけ悩んで結局 $HOME/go にした。 あとは少し以下の設定を足したら結構いい感じになったので僕は満足している。 function peco-select-history() { local tac if which tac > /dev/null; then tac="tac" else tac="tail -r" fi BUFFER=
2014-06-10 「これは仕様通りだ」 in English. 日記 英語 It's working per spec. 便利表現です。会社で上司に何か言われたら英語で言い返しましょう。 "It's working per spec!! Please you're confirm it again!!" ayato0211 2014-06-10 09:14 コメントを書く ミサワえんたー!! »
都内に本社を構える某社に今年の春入社した某友人に Java を教えていた。教えていたというか、その子が会社から貰った問題を解いていて分からないぽい感じだったから教えていた。それはこういう問題だった。 成績の一覧をファイルから読み込んで、クラス毎の各教科の平均点を算出し、クラス名でアルファベット順にソートしてクラスごとの平均値を出力せよ。 成績の一覧のフォーマットについて詳細がなかったのでとりあえず、左から「クラス名」「出席番号順」「名前」「英語」「数学」「国語」と並んでいるCSVファイルだろうということにした。(項目に関しては記述があった)具体的な入力ファイル例としてはこんな感じ。 A, 01, HOGE, 090, 050, 100 B, 01, FUGA, 080, 100, 020 A, 02, FOO, 030, 020, 100で、具体的な出力例はこんな感じ。 クラス名 英語 数
How to create animated GIF images of a screencast? - Ask Ubuntu とりあえず、メモ。 sudo apt-get install imagemagick mplayer gtk-recordmydesktoprecordmydesktopでキャプチャする。*1 キャプチャしたら次々とコマンドを打っていく。まず動画をjpegファイルの集まりにしてしまう。 mplayer -ao null <video file name> -vo jpeg:outdir=output大量のjpegファイルをひとつのアニメGIFにする。 convert output/* output.gifこのままだとファイルがデカイので、小さくする。*2 convert output.gif -fuzz 10% -layers Optimize optimised
2014-05-08 環境が良くなって自分自身に起きた変化とか 開発 日記 今年に入ってから徐々にだけど、ツキが回ってきた感じがある。 Railsプロジェクトというものに入り始めてからだと思う。まぁまだ2つめだけど確実に自分を取り巻く環境は今までより良くなっていて、昔みたいな負の感情エネルギーを溜め込むことが少なくなった。少なくなったというか、仕事でのストレスはゼロに近いと思う。*1Railsを仕事でやり始めてから、経験出来たことを列挙してみると Gitを使ったチーム開発*2 アトラシアンのサービスフルセットで使える*3 テストがある 継続的インテグレーションされている!!*4 Scrum*5 コミュニケーションツールにHipChatやSkypeなどが普通に使われている 英語が公用語!! Chefとかナウいものが普通に使われている 社内勉強会的なものが行われている 定時で帰れる!!*6
2014-04-21 自宅で2週間仕事をしてみてわかったこと 開発 日記 ひとりぼっちは…寂しいもんな…。いいよ。一緒にいてやるよ。 by 佐倉杏子 そんな感じです。 ayato0211 2014-04-21 21:53 コメントを書く RSpecでパラメタライズドテストを書く »
次のページ
このページを最初にブックマークしてみませんか?
『(define -ayalog '())』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く