読者です 読者をやめる 読者になる 読者になる

Crystal があちこちに .crystal というディレクトリを作ってつらい

これは「Ruby脳にはCrystalつらい Advent Calendar 2015」の7日目の記事です。 qiita.com Crystal を何の気無しに使っていると、気がつくと .crystal というディレクトリがあちこちにできています。 Crystal はコンパイル時に .crystal というディレクトリを…

Crystal は配列の範囲外の参照がエラーになってつらい

これは「Ruby脳にはCrystalつらい Advent Calendar 2015」の6日目の記事です。 qiita.com 1日目の記事で配列が自動拡張されなくてつらいと書いたんですが、配列の範囲外の参照もエラーになります。 array = [0, 1, 2] array[3] [4337095] *CallStack::unwind…

Crystal は日本語のドキュメントがあってつらくない!

これは「Ruby脳にはCrystalつらい Advent Calendar 2015」の5日目の記事です。 qiita.com 5日目にして既にネタ切れでもう Ruby は関係ないしつらくもないんですけど、Crystal アドベントカレンダーで日本語ドキュメントがあることを知りました。 www.adventa…

Crystal でも深さが不定の配列が作れてつらくない…?

これは「Ruby脳にはCrystalつらい Advent Calendar 2015」の4日目の記事です。 qiita.com 昨日の記事で、Crystal は深さが不定の配列が作れなくてつらいと書いたんですが、 実際にできないわけないだろうから方法を調べて4日目の記事にしようと思ってたとこ…

Crystal は深さが不定の配列が作れなくてつらい

これは「Ruby脳にはCrystalつらい Advent Calendar 2015」の3日目の記事です。 qiita.com Ruby の配列は任意の型のオブジェクトが入りますが、Crystal は特定の型しか入りません。 空配列を作ろうとするとエラーになります。 array = [] #=> Syntax error in…

「理論から学ぶデータベース実践入門」読書会スペシャルを開催しました #nseg

理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL (WEB+DB PRESS plus)作者: 奥野幹也出版社/メーカー: 技術評論社発売日: 2015/03/10メディア: 単行本(ソフトカバー)この商品を含むブログ (13件) を見る 11/28 に NSEG 第69回勉…

Crystal は実行時エラーでソース位置がわからなくてつらい

これは「Ruby脳にはCrystalつらい Advent Calendar 2015」の2日目の記事です。 qiita.com Ruby だと実行時にエラーが発生すると、エラーが発生したプログラムの位置が出力されるのですが、 def hoge raise "hoge" end hoge % ruby hoge.rb hoge.rb:2:in `hog…

Crystal は配列が自動拡張されなくてつらい

これは「Ruby脳にはCrystalつらい Advent Calendar 2015」の1日目の記事です。 qiita.com Ruby だと配列の範囲外に値を代入すると、 array = [0, 1, 2] array[4] = 4 array #=> [0, 1, 2, nil, 4] のように、配列が自動拡張されるのですが、Crystal で同じこ…

ELECOM ワイヤレスBlueLEDマウス M-XG1 Bluetooth 5ボタン 握りの極み Mサイズ ブラック M-XG1BBBK

この前買ったマイクロソフトのマウスがハズレだったので購入。 ELECOM ワイヤレスBlueLEDマウス M-XG1 Bluetooth 5ボタン 握りの極み Mサイズ ブラック M-XG1BBBK出版社/メーカー: エレコム発売日: 2013/09/06メディア: Personal Computersこの商品を含むブ…

Microsoft Sculpt Comfort Mouse

6年以上使ってたマウスが調子悪くなってきて、ホイールを触ってないのに勝手にスクロールしたり、上にスクロールしようとしてるのに下にスクロールしたりとか、そろそろ限界ぽかったので新しいのを買いました。 マイクロソフト [人間工学]?ワイヤレス Blueto…

Crystal

前に Crystal の記事を書いて、 tmtms.hatenablog.com このスライドの中で、 と書いたんですが、現在は条件分岐中のメソッド定義はエラーになるようになっています。 if true def hoge end end % crystal hoge.cr Error in ./hoge.cr:2: can't declare def d…

Software Design 9月号の特集の記事を書きました

Software Design 9月号の特集の記事を書きました。もう三週間も前に発売になってますが…。 ソフトウェアデザイン 2015年 09 月号 [雑誌]出版社/メーカー: 技術評論社発売日: 2015/08/18メディア: 雑誌この商品を含むブログ (3件) を見る 第1特集「正規表現・…

Crystal - Ruby風静的型付きコンパイル言語

Ruby で複数人で大きめのプログラムを作ってると、型が欲しいと思うことが時々あるんですが、最近型つきRuby風言語の Crystal というのがあるのを知ってちょっと触ったりしてました。 YAPC::Asia 2015 で、まつもとさんの「絶対に型を書きたくないでござる」…

MySQLのタイムゾーン

YAPC::Asia 2015 のセッションで、MySQL のタイムゾーンの話が出ていましたが、以前タイムゾーン周りで少しはまったことがあったのを思い出したので書いてみます。 MySQLのデフォルトのタイムゾーンは mysqld 起動時のシステム設定です。TZ 環境変数の値か、…

誰も掴んでない TCP ポートを使うことができない

たとえば、次の例では 12345 ポートは netstat や lsof でも出てこないし、クライアントから接続することもできません。 # netstat -a | grep 12345 # lsof -i :12345 # telnet localhost 12345 Trying 127.0.0.1... telnet: Unable to connect to remote ho…

アジャイルジャパン2015 長野サテライト / NSEG 62

4/25 に NSEG 第62回勉強会として アジャイルジャパン2015 の長野サテライトを開催しました。 場所は株式会社ケイケンシステムさんの会議室をお借りしました。いつもありがとうございます。 長野サテライトは去年は開催されなかったので、二年ぶりです。参加…

MyNA(日本MySQLユーザ会)会 2015年4月

4/22(水) に MyNA会が開催されたので久々に参加しました。 というか、私の東京出張に合わせて開催されたみたいなので強制参加です。 ちょっと前に話題になった「=問題」についてしゃべってきました。 スライド: = from Masahiro Tomita www.slideshare.net…

「理論から学ぶデータベース実践入門 ― リレーショナルモデルによる効率的なSQL」

理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL (WEB+DB PRESS plus)作者: 奥野幹也出版社/メーカー: 技術評論社発売日: 2015/03/10メディア: 単行本(ソフトカバー)この商品を含むブログ (9件) を見る ひょんなことから著者の…

Ruby + jemalloc でメモリ使用量が増える場合

Ruby でスレッドを1000個ほど作るとプロセスサイズが 4GB ほどになります。 % ruby -e 'system "ps -o vsz -p #$$"; 1000.times{Thread.new{sleep}}; system "ps -o vsz -p #$$"' VSZ 46392 VSZ 4151572 jemalloc 使うと 2.5GB くらいになります。jemalloc …

Postfix mruby plugin

Postfix の mruby plugin を作ってみました。 tmtm/postfix-mruby 誰得かわからないんですけど、Postfix のルックアップテーブルで mruby スクリプトで結果を返すことができます。 たとえば、次のようなスクリプトを作れば、 class Hoge def lookup(key) key…

Postfix で独自のルックアップテーブルを作る

Postfix 3.0 から導入された動的データベースプラグイン機構を使用して、独自のルックアップテーブルを作ってみます。 Postfix を次のようにしてインストールしてあります。 重要なのは dynamicmaps=yes なので、これさえあれば他のパラメータ指定はなんでも…

Postfix 3.0 の主な変更

Postfix 3.0.0 がリリースされたのでアナウンス文を勝手に翻訳してみました。 原文: http://www.postfix.org/announcements/postfix-3.0.0.html Postfix stable release 3.0.0 が利用可能になりました。このリリースにより Postfix 2.8 のサポートは終了しま…

Ruby, MySQL のうるう秒の扱い

2015/7/1 にうるう秒が挿入されるということで、うるう秒の話題が盛り上がってるようなので自分も書いてみます。 Linux 上のプログラムが時刻で60秒を刻むには、うるう秒対応のタイムゾーンを使う必要があります。 通常はうるう秒を考慮していないタイムゾー…

2014年の振り返り

あけましておめでとうございます。 2014年も無事終了したので一年を振り返ってみます。 ブログ 1年間で27件の記事を書きました。2013年が24件だったので少し増えました。 はてなブックマークで2桁以上ブクマされたものを並べてるとこんな感じです。 278 メー…

Postfix Advent Calendar 2014

これはPostfix Advent Calendar 2014の26日目の記事…じゃなくてまとめです。 Postfix Advent Calendar 2014 - Qiita 11月下旬、今年もどっかのアドベントカレンダーに記事を書こうかとQiita の Advent Calendar 2014を眺めてたんですが、Postfix が無いこと…

Postfix から MySQL を使う

これは Postfix Advent Calendar 2014 の15日めの記事です。 Postfix Advent Calendar 2014 - Qiita ルックアップテーブル Postfix のルックアップテーブルは Linux だと通常は hash 形式のファイルですが、ファイルの代わりに MySQL, PostgreSQL, LDAP 等を…

7bit と 8bit の狭間で

これは Postfix Advent Calendar 2014 の6日目の記事です。 Postfix Advent Calendar 2014 - Qiita その昔、電子メールは 7bit データでした。 日本語は ASCII の範囲におさまらないのですが、ISO-2022-JP*1にエンコードすることで 7bit になるので、日本語…

Postfix の拡張メールアドレス

これは Postfix Advent Calendar 2014 の4日目の記事です。 Postfix Advent Calendar 2014 - Qiita Postfix では拡張メールアドレスを使うことができます。 tmtms@eample.com というメールアドレスがあった場合、tmtms+ext@example.com というメールアドレス…

Postfix の main.cf のフォーマットについて

これは Postfix Advent Calendar 2014 の2日目の記事です。 Postfix Advent Calendar 2014 - Qiita Postfix が登場する以前、MTA と言えば Sendmail でした。Sendmail の設定ファイル sendmail.cf は人間が読むことも書くことも難しくて、設定ファイルを簡単…

Postfixのパラメータ

Postfix 2.9 がリリースされたころに「Postfixのパラメータ」という記事を書きましたが、それ以降の変更について書いてみます。 新しいパラメータ、全然しらない…。 Postfix 2.9.11 パラメータ数 701 Postfix 2.10.5 パラメータ数 709 追加 postscreen_upstr…

MySQLユーザーがPostgreSQLを触ってみたメモ

最近なぜか MySQL を使う Ruby アプリを PostgreSQL に対応する羽目になっているのですが、今までほとんど MySQL 以外の RDBMS を触ってなかったので、色々ハマったりしたのでメモっときます。 なお PostgreSQL 歴が浅いので間違ってること書いてるかもしれ…

RSpec をやめて Test::Unit に戻る

最近の RSpec は、それまで obj.stub(hoge: value) と書けたものが、 allow(obj).to receive(:hoge).and_return value と書かないといけなくなったりとか、正気の沙汰とは思えないような変更をしたりするので、何年かぶりに Test::Unit を使ってみようとリハ…

Rubyのシグナルハンドラ

toRuby & guRuby 出張版 でシグナルについてやってたので、関連して書いてみます。 どのような時にシグナルハンドラを定義するのか どのような時にシグナルハンドラを定義するのかという話がありました。 UNIXのデーモンプログラムは、何が由来なのかわかり…

RubyHiroba 2014 に行きました

去年に引き続き RubyHiroba 2014 に行ってきました。 お目当ては toRuby & guRuby 出張版 です。 渋谷の一角の北関東。 咳さん(@m_seki)とか田中さん(@tanaka_akr)とか角さん(@kdmsnr)とか角谷さん(@kakutani)とか豪華メンバーが参加してました。 guRuby - …

メールアドレスの正規表現

たまにメールアドレスの形式を正規表現で表すのは不可能とかというのを目にするのですが、そんなことはありません。入れ子がなければたいていの文字列の形式は正規表現で表すことができます。 ということで、RFC5321, 5322 からメールアドレスの正規表現を書…

Dockerイメージを作る (NSEG#54)

NSEGの第54回勉強会で「Dockerイメージを作る」という発表をしました。 Dockerイメージを作る (SlideShare にもアップロードしました) スライドにも書きましたが、前回以降にやったことの自分用のまとめみたいな感じで、世間的に目新しい話題は特に無いです…

相手がいないのに ESTABLISHED になってる TCP ポート

最近 ParallelServer というライブラリを作ったのですが、その最中に奇妙な状態になってる TCP ポートを見つけたので、メモっておきます。 Ruby では TCP サーバーは次のような感じで作ることができます。お手軽ですね。 require 'socket' Socket.tcp_server…

#NSEG 第53回勉強会

NSEG 第53回勉強会に参加しました。 今回も会場はケイケンさんです。 今回のテーマは JavaScript でした。 自分が JavaScript を触り始めたのは結構前なんですけど、未だにちゃんと書ける自信がありません。 "0" == 0 == false なのに if ("0") { alert("hog…

JAWS-UG 長野支部 第1回勉強会

先月、JAWS-UG 長野支部が発足しましたが、その第1回勉強会があったので参加してきました。 会場は NSEG にも良く会場を提供して頂いてるケイケンさんの会議室でした。長野駅から徒歩数分で便利です。電源も WiFi もあってすばらしいです。 AWS のアカウント…

スクロールバーの矢印を表示する

最近は Xubuntu を使ってますが、テーマによるのかもしれませんが、スクロールバーの端の矢印が表示されなくなってて不便なので表示する方法を調べました。 Gtk3 $HOME/.config/gtk-3.0/gtk.css を次の内容で作成 .scrollbar { -GtkScrollbar-has-backward-s…

Ruby の Timeout.timeout に例外クラスを指定する時の注意

ちょっとハマったのでメモ。 Ruby の Timeout ライブラリを使うと、一定の時間が過ぎても終わらない処理を中断することができます。 require 'timeout' def hoge sleep end def main Timeout.timeout(3) do hoge end rescue Timeout::Error => e p 'main: ti…

Ubuntu の MySQL を標準以外のディレクトリで動かす

Ubuntu の MySQL の datadir は /var/lib/mysql です。これを別のディレクトリに変更して動かそうとするとエラーになります。 # mkdir /hoge # mysql_install_db --datadir=/hoge Installing MySQL system tables... 140614 8:57:23 [Warning] Can't create …

Git に対する Subversion の利点

気がついたら Git を初めて触ってからもう5年近くになってました。 それまで使ってた Subversion はもう全然使ってなくて、もう svn のサブコマンドは ls, log, co くらいしか使えません。Subversion のリポジトリを見ないといけないときは、とりあえず git …

Gitで最初のコミットをどうにかする

Git

最初のコミットの内容を変更したい Gitで最初のコミットの内容を変更したいと思って git rebase -i <最初のコミット> とやっても、最初のコミットは出てきません。 % git log --oneline 4f4f42c 二番目のコミット 9d4876c 最初のコミット % git rebase -i 9d…

「文字化けに関するトラブルシューティング」

ちょっと前の話ですが、こんなツイートを見かけました。 「『PDF ファイルが開かない場合の対処方法』という PDF ファイル 」pic.twitter.com/f4wixbH97r を見て、とっさに「文字化けに関するトラブルシューティング」を思い出した。 pic.twitter.com/vvbRWO…

Xubuntu 14.04

Ubuntu が Unity になって以来、デスクトップ環境を転々としている自分ですが、最近は Xubuntu を使っています。 しばらく前までは Linux Mint を使ってたのですが、会社の PC の OS が Windows 必須になってしまって、しかも PC のスペックがかなりヘボい(C…

「Dockerさわってみた」 #NSEG 50

(これは 5/18 に書きました) 第50回 NSEG 勉強会に参加して、Docker について話してきました。 Dockerさわってみた スライドに書いたとおり、Docker については触ってみた程度でそんなにちゃんとは理解してないです。 「詳しい人からのツッコミで教えてもら…

MySQL Talk in 長野を開催しました

もう二週間も経ってしまいましたが、3/15 に NSEG 第49回勉強会として「MySQL Talk in 長野」を開催しました。 本当は 2/15 に開催する予定だったのですが、例の大雪でひと月延伸となりました。 会場はいつも NSEG 勉強会で使わせていただいているケイケンさ…

nadoka のプラグインの作り方

nadoka のプラグインを作ってみようと思ったのですが、あまり情報がなくて苦労したので、自分が調べたことをメモとして残しておきます。 プラグインファイルの場所 rc ファイルの Plugins_dir に指定されている場所に置きます。 Ubuntu の場合は /usr/share/…

Postfix のデーモン

Postfix の master から起動されるデーモンの動きについて調べてみました。 Postfix は smtpd, qmgr, cleanup 等の複数のデーモンが連携して動作しています。 すべてのデーモンは master から起動されますが、master は各デーモンの起動と監視をしているだけ…