Hatena::Groupteq

#!/usr/bin/env japanese

2015-06-02

11:57 |

test/会場

EllescogsEllescogs2019/05/03 21:28Benadryl And Amoxicillin Same Time Que Es Propecia <a href=http://cialusa.com>cialis no prescription</a> Il Viagra Poche Calorie

EllescogsEllescogs2019/05/11 11:21Cialis 10 Precio Arrow Lisinopril Without Prescription Amoxicillin Generic <a href=http://erxbid.com>cialis comprar barato</a> Viagra Per Le Donne

BbokqeuLakBbokqeuLak2019/05/20 07:10It is strongly advised that they remain focused on themselves until their sobriety is strong. <a href="https://viagraoktobuy.com/">is viagra available without a prescription</a> Music, spending time with family and to relax and enjoy your stable viagra and nitroglycerin erection.

トラックバック - http://teq.g.hatena.ne.jp/aereal/20150602

2011-06-18

移動します

23:42 | はてなブックマーク - 移動します - #!/usr/bin/env japanese

d:id:aereal+techで書きます

foo(&nil)

| 02:23 | はてなブックマーク -  foo(&nil) - #!/usr/bin/env japanese

nil.respond_to? :to_proc # -> false
[].map(&nil) # -> #<Enumerator: []:map>

なんでEnumeratorがかえってくるんだ? としばし悩んだ。

def foo
  block_given? ? yield : puts("not given")
end

foo(&nil) # -> "not given"
foo { puts "Hello" } # -> "Hello"

つまりブロック引数が渡っていなかったので、Enumerable#mapはEnumeratorを返しただけだった。&による暗黙の手続きオブジェクトへの変換の優先順位みたいなの、いまいちわかっていない。

LibraLibra2013/04/16 21:30Haha, shouldn't you be charging for that kind of knowdlege?!

VishalVishal2013/04/18 03:10THX that's a great anwser!

hrgsbhjrhrgsbhjr2013/04/20 10:06QpDt0f <a href="http://ehxttpfrzadv.com/">ehxttpfrzadv</a>

hrgsbhjrhrgsbhjr2013/04/20 10:06QpDt0f <a href="http://ehxttpfrzadv.com/">ehxttpfrzadv</a>

qmqsyhwzdkoqmqsyhwzdko2013/04/22 21:51MabD6y <a href="http://wkfwxzzlrrzh.com/">wkfwxzzlrrzh</a>

kzljlrykzljlry2013/04/23 05:20br1lPQ , [url=http://ntdirrmrdkoj.com/]ntdirrmrdkoj[/url], [link=http://filssfkmxqqr.com/]filssfkmxqqr[/link], http://kibrgksupmsy.com/

EllescogsEllescogs2019/04/27 06:54Priligy Dapoxetine 60 Mg <a href=http://curerxfor.com>viagra</a> Wirkung Viagra 100mg Online Viagra No Prescription Can I Buy Nexium In Canada

トラックバック - http://teq.g.hatena.ne.jp/aereal/20110618

2011-06-15

git-svnのある生活

| 21:16 | はてなブックマーク -  git-svnのある生活 - #!/usr/bin/env japanese

リポジトリをもってくる

% git svn clone -s svn+ssh://user@example.com/path/to/repos/trunk

作業用ブランチを切って作業

% git checkout -b working
% touch README
% git commit -a -m 'add README'

Subversionのリポジトリにコミット

% git checkout master
% git merge working
% git svn dcommit

Subversionのリポジトリから変更をもってくる

% git svn rebase

あるいは

トラックバック - http://teq.g.hatena.ne.jp/aereal/20110615

2011-06-12

他の言語から学ぶべきこと

| 07:06 | はてなブックマーク -  他の言語から学ぶべきこと - #!/usr/bin/env japanese

Ruby

Pros
  • if文などが式である (値をもつ)
  • ブロックの構文いいよね
  • すべてがオブジェクトなのいいよね
  • 豊富なリフレクションAPI
  • duck typing
Cons
  • Fileクラスとか雑然としている
    • IOとFileとDirとPathnameを統合すべきだとおもう
    • ファイルパスの表現としてのPathname, 実際のファイルシステムに対応するIO, File
  • UnboundMethodとMethodとProcって別れてるのわかりづらいしめんどくさい
    • 後述のScalaと同じくクラスベースのオブジェクト指向と関数型指向は両立させるのが難しいのでは
  • モンキーパッチするならサンドボックスほしいよね
  • モジュールの合成とかしたい

Scala

Pros
  • 関数型言語いいね
    • パターンマッチ
    • 部分適用
    • 高階関数
  • 型システムいいね
    • シグネチャごとにメソッドを生やせるのはべんり
Cons
  • implicit conversionダサい
    • 変換元のオブジェクトとは別の名前空間で定義できるのイヤ
    • 名前が意味をなしていないのがすごく気持ち悪い
    • だったら convert(src: String => AwesomeString(src)) みたいなかんじで変換マップみたいなのをつくって、それを参照するのでいいのでは
  • コンパニオンオブジェクトの使い道がいまいち
  • プレースホルダの仕様がキモすぎ (同じ識別子が同じスコープで別のオブジェクトを指す)

結論

  • すべてはオブジェクト
  • メタプログラミングしやすいAPI
  • 整理されたライブラリ
  • 関数もファーストクラスオブジェクト
  • 型シグネチャによる多重定義
  • 明示的なオブジェクトの変換
  • 略記法は慎重につくるべき

Perlのデフォルト変数の多用なんかは可読性を下げまくる。デフォルト変数の存在それ自体はよしとしても、それをライブラリとかで平然と使う文化みたいなのはコードを読むコストを上げていてダサい。(それでいてsigilを許容するのだから気が狂っている)

Perl (とScala) をあらゆる面で反面教師としながら、Better JavaScript, Better Rubyを心掛ける。

トラックバック - http://teq.g.hatena.ne.jp/aereal/20110612

2011-06-07

Swafというswf_rubyのラッパを書いた

| 01:28 | はてなブックマーク -  Swafというswf_rubyのラッパを書いた - #!/usr/bin/env japanese

swf_rubyという、SWFのバイナリを動的に書き換えるライブラリがあるのですが、インターフェースが少々低水準で再利用するときに冗長になりがちだったので、抽象化したインターフェースを書きました。

コードそれ自体は特に新規性はない (ラッパですし) のですが、git-flowをつかってみたり、bundlerで雛形をつくったり、そういうところでとても新鮮なツールに囲まれて書いたのでおもしろかったです。

いちおう高水準インターフェースという体で書きましたが、SWFのバイナリをいじるのはそんなにむずかしそうでもないかな、というかんじでしたので、メジャーバージョンアップでスクラッチからコードを書いてもいいかも、とかおもっています。そのほかにももっと洗練できるところがあるとおもいますので、定期的にバージョンアップしたいですね。

DawnDawn2012/07/03 21:01This makes everything so copmleelty painless.

ifkjcgcxifkjcgcx2012/07/04 10:16o157RP <a href="http://dfedyxukkwjp.com/">dfedyxukkwjp</a>

vijlxkvijlxk2012/07/05 09:19hlhDMB , [url=http://hqgrpfbruiky.com/]hqgrpfbruiky[/url], [link=http://clrjnhparapp.com/]clrjnhparapp[/link], http://kvmbvvfhvqlz.com/

rrmsmgcoirrmsmgcoi2012/07/06 02:58zcoS9L <a href="http://ssppjolcaswj.com/">ssppjolcaswj</a>

SailipDronsSailipDrons2017/05/25 01:09http://undeclaiming.xyz <a href="http://undeclaiming.xyz">norsk kasino</a> http://undeclaiming.xyz - norsk kasino

トラックバック - http://teq.g.hatena.ne.jp/aereal/20110607

2011-06-03

あたらしくGemをつくるときもBundlerで

| 01:22 | はてなブックマーク -  あたらしくGemをつくるときもBundlerで - #!/usr/bin/env japanese

% bundle gem mygem

これで mygem というディレクトリが作られてその配下にいろいろつくられます。

ちなみにかってにGitのリポジトリがつくられるので、Mercurialとかつかってる人やおれみたいにgit-flowをつかいたいよ、っていう人は rm -rf .git/ してからあらためてリポジトリをつくるなりすればよいとおもいます。

bundle gemでつくられたGemfileには基本的にさわらないほうがよいとおもいます。gemspecというメソッドがおなじディレクトリの *.gemspec を読みにいって、いいかんじに依存するgemとして扱ってくれます。

このいいかんじに、というのが肝で、Gem::Specification#add_development_dependencyというメソッドで依存するgemを指定しておくと、developmentというグループにgemを追加したことになります。なので、bundle install --without=development とすると開発環境でのみ必要なライブラリ (テストライブラリとか) はインストールされないので本番環境とかにインストールするときに使うとべんりですね。

jewelerとかとくらべると機能に見劣りがするのは否めませんが、ぼくはjewelerのなんでもかんでもやってしまうかんじがあまり好きではないですからbundle gemの生成するコンパクトな雛形は肌に合っているといえます。

とりあえずGemfileのgemspecメソッドだけでも覚えておいて損はないとおもいます。

トラックバック - http://teq.g.hatena.ne.jp/aereal/20110603

2011-05-26

CentOS 5.6にMySQL 5.5を入れる

| 22:00 | はてなブックマーク -  CentOS 5.6にMySQL 5.5を入れる - #!/usr/bin/env japanese

CentOSのリポジトリにはMySQL 5.0しかないので5.1以降を使うにはサードパーティのリポジトリを利用しなければならないんだけど、とりあえず公式のrpmから入れることにする。

MySQL-{client,devel,server,shared}-5.5.x.rhel5.$arch.rpm を落としてくる。

# rpm -ivh MySQL-*.rpm

MySQL-shared-*.rpm を入れていなくて (client, devel, serverで十分だとおもっていた) mysql2.gem のビルドに失敗してハマった……。

/usr/bin/ld: cannot find -lmysqlclient_r

こんなかんじのエラーメッセージが出ていた。

TimTim2012/11/29 15:50Furarelz? That's marvelously good to know.

bptpmyobhbgbptpmyobhbg2012/11/30 05:05OobAHB <a href="http://qrtxiavcxchp.com/">qrtxiavcxchp</a>

ztuiewztuiew2012/11/30 13:59Bi5sBH , [url=http://ciebsrhcpwrl.com/]ciebsrhcpwrl[/url], [link=http://sxhlvfkhyyvt.com/]sxhlvfkhyyvt[/link], http://ybyfiwiffdoi.com/

iwzbsuviwzbsuv2012/11/30 21:35D7bdYF <a href=\"http://cnvjplyqljja.com/\">cnvjplyqljja</a>

hnefbzhnefbz2012/12/02 03:22Ap7tDN , [url=http://osrpbyqqiggc.com/]osrpbyqqiggc[/url], [link=http://hqmgmmpgnclo.com/]hqmgmmpgnclo[/link], http://ardpujgfgqlk.com/

トラックバック - http://teq.g.hatena.ne.jp/aereal/20110526