「オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方」読んだ

内容としては、以下サイト様に同意。

d.hatena.ne.jp

あと、完全に好みの問題ではあるが、たまたま伊藤さんの tweet で仰ってたことが、この本の感想と同じだった。

コード例が少なくて、話が長いな・・・、と思った(申し訳ありません・・・)。
もっと写経し易い感じだと良かったなぁ、というのが率直な感想。
対象としている層はどこなのかな?というのも気になった。
初心者や、そのレベルくらいだとちょっときつそう。
中級くらいだと、ちょっと物足りない、という感じかも、とも思う。

「何となくJavaScriptを書いていた人が一歩先に進むための本」を読んだ

ちょっと前に、フロントエンド周りの流行についていくいかないでネット上では少し話題になっていたよう。
自分は地味な業務アプリしか作ってないので、まぁ今はいいか、と言い訳して勉強してこなかったけど、ちゃんとやろうと思った。
というか、直也さんのtweetが脳天に刺さっただけなんだけども。



JavaScriptをとりあえず勉強しよう、と思い立ち、とりあえずワンコインで買える以下の本を買って読んだ。

続きを読む

C# で組み合わせ

前提条件の説明がし辛いけど、10桁の文字列で、それぞれの桁に数字またはアルファベット、または*(意味的には、数字やアルファベットが設定されていない場合、としている)がいくつか選択肢として持っているとする。
このとき、全組み合わせを表示したい。

当然だけど、10桁全てをネストでループ回せばできる。
再帰を使えばすっきりかけるのではないか、と思ったが、再帰は難しくてよくわからない。
試行錯誤した結果、表示は出来るようにはなったがもっとよいやり方があるように思う。

class Program
{
    private static List<string> patterns = new List<string>();
    private static List<string>[] seed = new List<string>[10];

    static void Main(string[] args)
    {
        // テスト用の値設定
        seed[0] = new List<string> { "*" };
        seed[1] = new List<string>() { "1", "2", "3" };
        seed[2] = new List<string>() { "4", "5" };
        for (var i = 3; i < 7; i ++)
            seed[i] = new List<string> { "*" };
        seed[7] = new List<string>() { "6", "7", "8" };
        seed[8] = new List<string> { "*" };
        seed[9] = new List<string>() { "9", "0" };

        SetPattern();

        foreach (var pattern in patterns)
            Console.WriteLine(pattern);
    }

    public static void SetPattern(int key = 0, string pattern = "")
    {
        foreach (var val in seed[key])
        {
            if (key < seed.Length - 1)
                SetPattern(key + 1, pattern + val);
            else
                patterns.Add(pattern + val);
        }
    }
}

結果は以下。

*14****6*9
*14****6*0
*14****7*9
*14****7*0
*14****8*9
*14****8*0
*15****6*9
*15****6*0
*15****7*9
*15****7*0
*15****8*9
*15****8*0
*24****6*9
*24****6*0
*24****7*9
*24****7*0
*24****8*9
*24****8*0
*25****6*9
*25****6*0
*25****7*9
*25****7*0
*25****8*9
*25****8*0
*34****6*9
*34****6*0
*34****7*9
*34****7*0
*34****8*9
*34****8*0
*35****6*9
*35****6*0
*35****7*9
*35****7*0
*35****8*9
*35****8*0

Rails 4 技術者認定シルバー試験 に合格しました

お礼

まずは、以下のサイト様。
macera.hatenablog.com

このサイトを、一日何回も毎日ずっと見続けました。
この試験、あまりに情報が少なくて何を勉強して良いかわからず(問題集も評判悪いようですし)、不安で不安で、もう何回も見なおしました。
今回この日記を書こうと思ったのは、私のように不安でたまらない、という方の助けになれば、と思ったのがきっかけです。
ただ、もう Rails5 が出ちゃってるので、今からこの試験受ける人いるかな?という気はしますが・・・。

続きを読む

python を使うまで

データサイエンティスト養成読本 機械学習入門編 (Software Design plus)

データサイエンティスト養成読本 機械学習入門編 (Software Design plus)

まだ全て読んでいないが、python のインストール部分。
github にも上げられている。素敵。

github.com

Windowspython を使おうと思い、調べたところ、機械学習で使う分には IntelliJ の PyCharm Community で十分らしいことが分かり、インストールを行った。

www.jetbrains.com

ここで、font にとても悩んで時間を浪費した・・・。
フォントは以前から VL ゴシックをよく使わせて頂いている。

VL Gothic Font Family

で、今回も設定したのだが、なにが起こっているのか全く理解できないが、感覚的ににはマッピングがおかしくなっている、という表現がぴったり。
他のプログラミングに適したフォントも色々試したが、選択肢の候補にすら挙がってくれない始末(Show only 〜 のチェックを外してもだめ)。
Source Code Pro を使ってみたが、日本語が英数記号2つ分じゃないのでずれてイライライライラ!!!
で、結局 Ricty Diminished を入れた。漢字変換できないものも出てくるらしいが、とりあえずこのまま。
ただ、フォントサイズも 16以下だと文字が欠ける。結果としては 18 がベストかな。
以下、日本語部分は全て「日本語にはほ」と書いている。

VL ゴシック

f:id:yossk:20151208230719p:plain

Source Code Pro

f:id:yossk:20151208230613p:plain

Ricty Diminished 16 pt

f:id:yossk:20151208230809p:plain

Ricty Diminished 18 pt

f:id:yossk:20151208230822p:plain

いやぁ・・・時間使った・・・。

Hash で => を書かない

前に以下のような書き方出来たんだ〜って思ったら、Ruby 2.2.0 からだったようだ。

{ "key": :value }

github.com

Hash literal

* Symbol key followed by a colon can be quoted. [Feature #4276]

なんでコレに気が付いたかというと、Rails Tutorial 2章やって、Heroku にアップした際に、ローカルでは出なかったエラーが出たため。
Heroku は デフォルトでは 2.0.0 で動作するため。

railstutorial.jp

これは、Gemfile に Ruby のバージョンを書いとけばOK。devcenter.heroku.com

Gemfile

ruby '2.2.3'