ASCIIコードの秘密

本当はエスケープシーケンスのことを調べていたのだが、その前にASCIIコードについて調べることになってしまった...。文字コードの基本として知っているつもりだったASCIIコードについて、あらためて見直してみると、実は本当の意味をよく分かっていなかった…

pentominoコマンドをgemに公開する最小の手順

前回のpentominoコマンドをgemに公開するまでの手順のメモ。次回公開する時に、悩まず・素早く・苦労最小限で公開できますように! 必要な環境 RubyGems.orgで1度でも何らかのgemを公開した環境であること。 つまり、RubyGems.orgにユーザー登録して、~/.gem…

途中経過を表示しながら解くpentominoコマンドに仕上げる

前回までにc言語なら0.9秒(さらなる高速化を追記した)でペントミノパズル(6×10)の全解を出力できるようになった。1秒切ったので、高速化についてはこれで満足。しかし、何かまだ満たされないものがある。 最速を狙ったコマンドは1度試せばそれで満たされ…

RubyとC言語でもペントミノバズルを解いてみる

前回からの続き。 明治ミルクチョコーレートパズルの解をすべて探す - ザリガニが見ていた...。 ペントミノの解を求めるプログラム高速化 - ザリガニが見ていた...。 ペントミノパズルを解くPythonコードは、順調に高速化の道を歩んできた。 3時間以上 → 50…

ペントミノの解を求めるプログラム高速化

前回までにペントミノの解をすべて、求められるようになった。実行してみると、完了するまでに20分くらいかかる。当初に比べればこれでもかなり高速化したのだけど、まだまだ高速化の余地はありそう。チャレンジしてみる。 最初は、6行10列のボードに敷き詰…

明治ミルクチョコーレートパズルの解をすべて探す

今年の正月明けは、明治ミルクチョコレートパズルの問題に夢中になった...。 正月の酔っ払い物理学者が数学者の皮を被った天使に出会うお話 | カメリオ開発者ブログ このパズルはチョコレートシリーズの中では甘めらしいのだが、各ピースがチョコレートで出…

タブを閉じてもログアウトしても実行し続けるジョブにしておく

前回までにバックグラウンドでジョブを複数管理できるようになった。ところで... ターミナルでタブを開く度に、あるいはsshでどこかの端末にログインする度に、 シェルが起動して、コマンドを入力・実行・出力する環境を整えてくれる。 そして、タブを閉じた…

裏と表のジョブを使い分ける

かつて... 今どきのターミナルはタブやウィンドウをいくつでも開けるから、 フォアグラウンドでコマンド実行中に何か別のことがしたくなったら、新たにタブを開いて、そこでコマンドを実行すれば十分用が足りる。 バックグラウンドでコマンドを実行できるこ…

通販の財布選びは難しい

10年来使ってきた二つ折り財布、自分にとっては使いやすく気に入っていたのだけど、さすがにガタが出始めた...。 ボックス型小銭入れのホックの付け根が破れた...。 二つ折りにした時のコーナーも激しく摩耗している...。 札入れの仕切りなし、カード入れ6カ…

引き戸の戸車の交換

DIY

去年の今頃、引き戸のレールがダメになって交換したのだけど... ドリルな気分で引き戸のレール交換 - ザリガニが見ていた...。 今度は戸車がダメになった。レールを交換した当初は、感動的な滑らかさで開け閉めできて喜んでいた。しかし、ここ最近はガタゴト…

with_indifferent_accessはなぜ文字列キーを使うのか?

前回からの続き。 ところで、最近のRubyは{abc:123}({:abc => 123}と同等)のようなハッシュ定義も可能になり、間違いなくシンボルキーが多用される時代なのに... with_indifferent_accessは、なぜ文字列キーを使うのか? シンボルは無駄にオブジェクトを生…

Rubyのハッシュにメソッドでアクセスするには?やらない方がいい?

JavaScriptな脳状態でRubyを触り始めると、ハッシュにアクセスする時にエラーで怒られる。 h={abc:123} => {:abc=>123} h.abc NoMethodError: undefined method `abc' for {:abc=>123}:Hash from (irb):15 from /usr/bin/irb:12:in `<main>' いかん、いかん、Ruby</main>…

Safariのレンダリングの失敗対策

mac

最近、たまにOSX10.10 Yosemiteを触っている(実験用の環境)のだけど、Safariを使っていてページの一部が完全にレンダリングされない状態が気に障る。 情報非開示にしたつもりはない(そんな設定ない!)のに、ページ左上の部分が黒塗りになる。 タブを切り…

Ruby1.8.7+bundler+mecab-rubyのインストール

和布蕪(めかぶ)は美味しい。あのコリコリ感とぬめり感が最高である。一方、MeCab*1も素晴らしいソフトウェアである。日本語を扱う時はどうしても欲しくなる。和布蕪はスーパーで買うけど、MeCabはHomebrewでインストールした。 まずはmecabで検索してみた…

プロンプトにRubyのバージョンを表示したい

rbenvによって、Rubyバージョンは素早く、簡単に切り替えられるようになった。 すると、作業中にいったい自分はどのRuby環境にいるのか、見失ってしまうことがある...。 そうならないように、コマンドプロンプトにRubyのバージョンを表示しておきたい。 やっ…

bundlerでgemバージョンを束ねる

Rails1.1.6の環境でどうにかscaffoldはできるようになった。その時の実行環境は以下の状態だった。 $ rbenv version 1.8.7-p375 (set by /Users/zari/.rbenv/version) $ gem list *** LOCAL GEMS *** actionmailer (1.2.5) actionpack (1.12.5) actionwebser…

rbenvは何をしているのか?

~/.rbenv/以下に複数のRubyバージョンをインストールして、それぞれのRuby環境を切り替える仕組みを提供する。 ~/.rbenv/ (rbenvがRubyを管理するルートフォルダ) ~/.rbenv/shims/ (rubyやgemがインストールするコマンドへのラッパーを保存しておくフォル…

古いRails環境を再起動するまで

古いRails環境というのは、具体的にはRails1.1.6である。実はこのブログの始まりは、Railsの学習の記録であった。むかしむかし、このブログ創世の頃、Railsはバージョン1.1.6がメジャーであった。そのため、自分のMacBookの中には、Rails1.1.6の実験プロジェ…

起動時の「接続に失敗しました」警告対策

mac

OSX 10.6.8のMacBookを起動した時に、いつの頃からか「接続に失敗しました」という警告が出るようになってしまった。 接続に失敗しましたサーバ"MacBook-Pro-Retina15(3)"が存在しないか、現在利用できません。 サーバーの名前またはIPアドレス、およびネッ…

bundle gemは何をしてくれるのか?

必要最小のgemパッケージの作り方は大体理解できた。 rubyコードをlib/とbin/に振り分けて、 .gemspecファイルに設定を記述して、 gem build、gem installしてテスト、 問題なければgem pushで公開。 とっても簡単である。初回のみ.gemspecファイルの追加とR…

RubyGems.orgで公開する手順

前回からの続き。 gemコマンドは、.gemファイルを元に、gemが管理する階層にライブラリやコマンドをインストールする。 前回手順7で試したとおり、.gemファイルさえあれば、それがどこにあってもインストールは可能なのだ。 但し、そのためには.gemファイル…

必要最小のgemの作り方とインストール

gemは、Rubyのライブラリ管理のコマンド。Rubyのライブラリを検索・インストール・アップデート・削除など、苦労最小で操作する仕組みを提供してくれる。今までgemを使って、多くの素晴らしいライブラリをインストールしてきた。しかし、自分が作ったものをg…

AppleUSBEthernetHost.kextは正しくインストールされていない対策

mac

症状 機能拡張を使用できません 機能拡張"/System/Library/Extensions/AppleUSBEthernetHost.kext"は正しくインストールされていないため使用できません。再インストールするか、製品の製造元にアップデートについて問い合わせてください。 対策 最新のiTune…

bashのアップデート

mac

OS X bash Update 1.0 – OS X Mavericks OS X bash Update 1.0 – OS X Mountain Lion OS X bash Update 1.0 - OS X Lion 環境変数に指定したテキストが、なぜか実行されてしまう問題の対策。 shellshock - What does env x='() { :;}; command' bash do and …

ログインシェルを変更する方法

作業環境 MacBook Pro Retina15 OSX 10.9.5 手順 システム環境設定 >> ユーザとグループを開く。 左下の鍵アイコンをクリックして、ロックを解除する。 ユーザを選択して二本指タップして、詳細オプションを開く。 二本指タップ = 右クリック = control-クリ…

日本の祝日に関するメモ書き

日本の祝日を出力するJPDateクラス(jcal.rb)を作成する上で調べたことを、忘れないようにメモ書き。 リンク先の各サイトの素晴らしく貴重な情報には、とても感謝しています。 カレンダーに関する知識 ユリウス日(Julian Day) 春分・秋分に関する知識 二十…

日本語を含んでもきっちり揃えるljust・rjust・centerにしておく

カレンダーコマンドを作るには、等幅フォントを使って、日付ごとの文字数を揃えておく必要がある。数値だけのカレンダーなら、簡単に揃えられる。しかし、そこに日本語の祝日が割り込んでくると、厄介なことになってくる...。 祝日の名称は、文字数が一定で…

日本の祝日を出力可能なJPDateクラスを作る

以前からの続き。 jcalコマンドで祝日もちゃんと表示されるようになったのだけど、中のコードはまだ混沌としている...。そもそも、祝日を計算するJPCalendarモジュールが、lookupメソッドで参照する方式なんて、全然いけてない。脳内が表計算アプリの影響を…

日本語が使えるirbにしておく

OSXに標準インストールされているirbは、残念ながら日本語が文字化けする。Rubyの方は標準で日本語が使えるようになったのに、何故なんだ?調べてみると、Ruby自体の日本語処理には問題ないのだけど、irbがコマンド入力を受け取る際に使っているライブラリ(…

jcalコマンドとして仕上げる

前回からの続き 数年分をリスト出力 さらに、数年分を並べてリスト表示するカレンダーも作ってみた。 ...中略... def list_cal(y, col) week_ja = %w(日 月 火 水 木 金 土) date366 = (Date.new(2004, 1, 1)..Date.new(2004, 12, 31)).to_a list366 = Array…