Rubyおもしろい

Rubyは括弧をつけなくてもメソッドを呼び出せます。メソッド名は普通は英小文字で始まります。ローカル変数も英小文字で始まります。 こんなRubyプログラムを実行すると(ifの条件部で代入しているのはtypoではありません)、 def hoge 123 end p hoge x = 456…

QNAPの外付けディスクに日次差分バックアップ

最近1ドライブのQNAP(TS-121)を使ってるんだけど、やっぱりバックアップしないと恐いので、USBの外付けディスクをつけてバックアップすることに。 QNAPのミラー機能はなんかよくわからないしいまいち信用できないので、rsync を仕込んでみた。 ssh で QNAP …

MySQL の max_connections, table_open_cache, open_files_limit の関係

昔書いた記事を久々に見てみたら何書いてあるかさっぱりわからなかったので、最新情報で書き直してみます。 tmtms.hatenablog.com 以下は MySQL 5.6, 5.7 について書かれています。 MySQL の max_connectoins, table_open_cache, open_files_limit パラメー…

第3回「オブジェクト指向設計実践ガイド」読書会に参加しました

10/4 NSEGの「オブジェクト指向設計実践ガイド」読書会の第3回に参加しました。参加者11名でした。盛況ですね。 nseg.connpass.com 今回は第3章を読みました。 コード例が単順すぎて、より良い設計として挙げられてるコードがいまいちピンとこないところもあ…

NoException

役に立たないライブラリを作るシリーズです。 最近例外を発生させない某言語が流行ってるらしいと聞いて作ってみました。 インストール % gem install tmtms-noexception なんと noexception という名前は既に取られてた! 使い方 こんな風な例外を発生させ…

AutoForker

Rubyで何の役に立つかわからなくて自分でも使わない誰得なライブラリを作るのが趣味なのですが、RubyKaigiに参加して高まったので一つ作ってみました。 というか実際にはRubyKaigi前に作ってあったけど名前が思いつかなくて放置していたのですが、RubyKaigi…

RubyKaigi2017

RubyKaigi2017に参加したのでメモ。 0日目 10時に家を出て6時間掛けて広島へ。 広島は台風の直撃コースでどうなるかと思いましたが新幹線はちゃんと定時に広島に到着しました。 広島より先が停電したらしく乗ってきた列車は広島止まりで、その後は結構遅れた…

NSEG #92

9/16 NSEG #92 に参加しました。参加者9人でした。 アベさんが「kotlin Null Safety」という発表をしました。 Kotlinでぬるぽを発生させる方法あれこれの紹介でした(?)。 http://rayflood.org/diary-temp/nseg92.html それ以外はネタが無かったので、「横浜…

第1回「オブジェクト指向設計実践ガイド」読書会に参加しました

9/6 NSEGの「オブジェクト指向設計実践ガイド」読書会の第1回に参加しました。参加者8名でした。 nseg.connpass.com 第1章は導入部って感じで具体的なことはあまり書かれていなかったのですが、胃が痛くなるようないい話が満載でした。 設計がないと、管理さ…

reveal-ck

ここ半年くらいプレゼンのスライドはreveal-ckというのを使ってます。 github.com reveal-ck は、ブラウザ上のプレゼンツール reveal.js を簡単に使えるようにしたものです。 LinuxでもFirefoxが色付き絵文字を使えるようになったのをきっかけに、Markdownで…

とちぎRuby会議07に参加しました

8/26に開催されたとちぎRuby会議07に参加してきたので雑感等。 昼飯の唐揚げのボリュームがすごい。 お弁当「小盛り」を頼んだのにこの大きさΣ(・□・;)アメリカ飯を思い出したよ!#toRuby pic.twitter.com/Z1yx77cxMh— ちょまど@MS本社チームになった (@c…

Gemの作り方

RightCSVで久々にGemを作ったので、最近のGemの作り方をメモっときます。 GitHub上にリポジトリを作って git clone 別に最初にやらなくてもいいですけど、どうせ GitHub で公開するのなら最初にやっといた方が楽です。READMEやLICENSEファイルも作ってくれま…

Rubyのnilを返さないCSVライブラリ

RubyのCSVライブラリは何故か空フィールドについてnilを返します(「"」で括られていると空文字列を返します)。 require 'csv' CSV.parse('a,,"","1,2"') do |row| p row end #=> ["a", nil, "", "1,2"] なのでそれを考慮していないと NoMethodError(いわゆる…

第15回 SQLアンチパターン読書会に参加しました

8/2 NSEGの「SQLアンチパターン読書会」の第15回に参加しました。 nseg.connpass.com 隔週の水曜日の夜に開催しています。だいたいいつも3〜4人くらいでこじんまりとやってます。今回は4人でした。 一人が1〜2ページくらいを音読して、気になったことをみん…

第14回 SQLアンチパターン読書会に参加しました

NSEGの「SQLアンチパターン読書会」の第14回に参加しました。 nseg.connpass.com 隔週の水曜日の夜に開催しています(が、今回は私の都合で1日ずらしてもらいました)。だいたいいつも3〜4人くらいでこじんまりとやってます。今回は5人でした。 一人が1〜2ペー…

第12回 SQLアンチパターン読書会に参加しました

NSEGの「SQLアンチパターン読書会」の第12回に参加しました。 nseg.connpass.com 隔週の水曜日の夜に開催しています。だいたいいつも3〜4人くらいでこじんまりとやってますが、今回は7人でした。 一人が1〜2ページくらいを音読して、気になったことをみんな…

MySQLの日本語コレーション

4月にMySQLの日本語コレーションについて語り合う場に呼ばれていろいろ話を聞いてきました。すぐにブログを書こうと思ったんですが、はや2ヶ月経過…。 ときどき、自分がMySQLの文字コードに関して発表する際に、次のようなスライドをいれてるんですが、 MySQ…

MySQL 5.7が何も言わずに起動できなかったのでメモ

MySQL 5.6と同じ方法でMySQL 5.7を起動しようとしたら何も言わずに黙って終了してしまって少しだけハマったのでメモ。 MySQL 5.6では次のようにして起動してました。 # /usr/local/mysql-5.6/bin/mysqld --no-defaults --user=mysql --basedir=/usr/local/my…

第11回 SQLアンチパターン読書会に参加しました

NSEGの「SQLアンチパターン読書会」の第11回に参加しました。遅刻して19時くらいに着きました。 nseg.connpass.com 隔週の水曜日の夜に開催しています。だいたいいつも3〜4人くらいでこじんまりとやってます。今回は4人でした。 一人が1〜2ページくらいを音…

第10回 SQLアンチパターン読書会に参加しました

5/24にNSEGの「SQLアンチパターン読書会」の第10回に参加しました。 nseg.connpass.com 隔週の水曜日の夜に開催しています。だいたいいつも3〜4人くらいでこじんまりとやってます。 一人が1〜2ページくらいを音読して、気になったことをみんなで話したりして…

MySQLユーザ会会 in 長野 を開催しました

5/13(土)に「MySQLユーザ会会 in 長野」を開催しました。 nseg.connpass.com 「会」が2つあるのは仕様です。「MySQLユーザ会」の会合で「MySQLユーザ会会」です。 開催経緯はこんなかんじです。 自分もMyNAとかに気軽に遊びに行きたい。— とみたまさひろ (@t…

ZIP中のファイル名の文字化け(Ruby編)

tmtms.hatenablog.com という記事を書きましたが、今回はRubyでZIPファイルを作る時の話を。 RubyでZIPファイルを作るには、rubyzip というライブラリを使います。 % gem install rubyzip 次のようにしてZIPにファイルを追加できます。 require 'zip' Zip::F…

ZIP中のファイル名の文字化け

こんな記事がありました。 gihyo.jp これはMacユーザー用の書籍の宣伝記事らしいのですが、「Windowsを使ってる人のためにMac側がひと手間かけてあげよう」なんて殊勝なことをマカーが言うとは時代も変わったもんです。([追記] はてブのコメントを見たらさ…

大江戸Ruby会議06

大江戸Ruby会議06 #oedo06 に行ってきたので雑感など。 会場 @sora_h さん生誕20周年記念ということで、会場も「ソラシティカンファレンスセンター」という場所でした。 Docker時代の分散RSpec環境の作り方 speakerdeck.com RSpecの実行に時間が掛かってたの…

Ruby製のEmacsライクなテキストエディタTextbringer

大江戸Ruby会議06で前田さんがRubyでEmacsライクなエディタTextbringerを作ったという発表をしていました。 発表資料 https://github.com/shugo/oedo06/blob/master/textbringer.md ブログ https://shugo.net/jit/20170320.html 最初はEmacs上の何かでプレゼ…

Sequelのトランザクション内でタイムアウトするとCOMMITされてしまう

ちょっと前にハマったのでメモ。 Sequelでトランザクションを使う時は次のように transaction メソッドにブロックを渡します。 require 'sequel' require 'logger' db = Sequel.connect('mysql2://user:passwd@localhost/test') db.loggers = [Logger.new($s…

ThinkPad T460s Ubuntu でトラックパッドを無効化

5ヶ月ほど ThinkPad T460s を Ubuntu(Xubuntu) で使ってます。 ちょっと前に さよならMac | めがねをかけるんだ という ThinkPad をdisった記事が話題になりましたが、自分はあんまり不満はありません。 ノートPCでLinuxを使う時の鬼門だった無線LANやサスペ…

Unicode Collation Algorithm

文字コードは面白いね! わーい! たのしー! MySQL で utf8mb4_unicode_ci コレーションを使用した時に「」=「」や「ハ」=「パ」になる問題があります。 この utf8mb4_unicode_ci ってなんぞや?と思ってマニュアルを見てみると、 MySQL は、http://www.un…

MySQLの文字コード事情

この前 MySQL Casual に登壇して、「MySQLの文字コード事情」と称して発表してきました。 終電の都合で途中退席しましたが楽しかったです。また機会があれば参加したいです。 発表スライドはこちら MySQLの文字コード事情 2017版 from Masahiro Tomita www.s…

ThinkPad T460s 購入

ちょっと前ですが ThinkPad T460s を買いました。 ThinkPad T460s キタ! pic.twitter.com/JMp8shnrTf— とみたまさひろ (@tmtms) October 7, 2016 軽いPCが欲しくて、1kg前後のPCを探したりしてたんですけど、ThinkPad T460s が 10万円以下で買えるようにな…