Ruby
challenge mackerel plugin
Mackerelのカスタムメトリクスに挑戦
して撃沈。
何が起きたか
公式のヘルプ を見ながら写経してUbuntu 16.04のサーバー上でカスタムメトリクスを作成して設定したが、うまくいかない。エラーが出る。
YYYY/MM/DD 時分秒 INFO <metrics.plugin> command /path/to/sample-metrics.rb outputted to STDERR: "/path/to/sample-metrics.rb: 10: /home/osawa/sample-metrics.rb: Syntax error: \"}\" unexpected (expecting \"then\")\n"
改行が足りない?
rubyファイルを単独で実行すると動くので謎。
これだからRubyは。
とりあえず、Mackerelは初期設定のままのメトリクスだけでいいや。
Challenged Jekyll template and hate
Jekyllの画面(テンプレート)作った
結論から言うと、二度と使いたくない。
Pelicanの方がいいや。
やりたかったこと
- TOPページ:直近5件程の記事タイトルを表示する
- タグごとの記事一覧ページを作る
- タグの一覧ページ作る
- カテゴリごとの記事一覧ページを作る
- カテゴリの一覧ページ作る
- アーカイブ(年月)ごとの記事一覧ページを作る
- アーカイブ(年月)の一覧ページ作る
- Aboutの固定ページを作る
- サイドバーにカテゴリ、タグ、アーカイブ、Aboutのリンクを作る
できたこと
- TOPページ:直近5件程の記事タイトルを表示する
- タグごとの記事一覧ページを作る
- タグの一覧ページ作る
- カテゴリごとの記事一覧ページを作る
- カテゴリの一覧ページ作る
- Aboutの固定ページを作る
- サイドバーにカテゴリ、タグ、Aboutのリンクを作る
乗り越えた事
HexoやHugoは既存のテーマをそのまま使ったからなんとも言えないけど、Pelicanは一から作った際にも苦労しなかったカテゴリやタグの一覧ページを作るのにJekyllは苦労した。
標準で機能がついてなくて、pluginディレクトリにページを生成するモジュール?を書いて対応した。
公式に載っているコードをほぼそのまま使いまわしたんだけど、Rubyの世界というかJekyllではカテゴリやタグごとのページ生成は静的サイトジェネレーターの標準機能のうちには入らないらしい。
あきらめた事
アーカイブページ
上記のカテゴリやタグのページ生成のノリでいけるかと思ったけど無理だった。
正確には気持ちが切れた。
Pelicanの場合、記事リストをgroup by した結果をそのままfor分で使えるのだけれど、Jekyllが使っているテンプレートエンジンではできないらしく、いちいち変数にアサインしないといけない。そのくせ、変数にアサインする時はgroup by も sort もできるらしい。
あと、気づかなかったんだけど、記事のデータに投稿年月日の年や月のデータがないので結局こねくり回さないと、年や月でgroup byした記事リストの抽出がうまくできない。
この、年月ごとに記事リストを抽出したオブジェクトが簡単には生成できないので、サイドバーの表示もアーカイブリストの生成もうまくできそうにないので諦めた。
あと、ググって出てきた書き方が汚いというか美しくないというか、「え?こんな手続き型なめんどくさい記述をテンプレートで書くの?」みたいなのが散見されて嫌になった。
まったくもう。
参考
まとめ
Rubyを理解したら見直せるかもしれないけど、それまではもう触りたくない。
記事の投稿だけはして使い続けてみる。
2014年を振り返る サーバーサイドプログラミング
サーバーサイドプログラミング(Perl,PHP,Python,Ruby,etc…)について振り返る
まず、コンパイルする系の言語には全然手を出さなかったのでノーコメント。
Groovyはちょっとだけ久しぶりに触ったらバージョンが上がってて言語仕様変わってた箇所でトラブった。
Perl,Python,Rubyについては全然触れなくてフラストレーション。
PHPは少し触ってたけど、使用バージョンがPHP5.4→PHP5.5→PHP5.6といろいろ触ってその間の言語仕様の変更に惑わされたりした。
本当はテストコードがしっかり書けるようになりたかったけど、いろいろ自分が足りなくて駄目だった。
家にたまった古い書籍も含めて処分していきたいので2015年はバシバシコードを書捨てていきたい。
PHP7が来年だか再来年にリリースされることによって現場には相当バージョン違いのプロジェクトが出てしまうと思うので、できれば新規案件は
枯れたPerl5系かPython3系(サポートがだいぶ長引くことになった2系も場合によっては)でチャレンジしたい。
Rubyは…どうだろう。試しやプロトタイプにはいいのかも、ただしSinatra限定。ツールはRuby系が多いのでRubyでいろいろ学習してから他の言語のものを使うようにするといいのかもしれない。
2014年の目標達成進捗管理的な
新年、明けましておめでとうございました。良いお年を。
今回は、プログラムの勉強のために作成して使っているVM(Ubuntu)にredmineを動かす。という話。
事の発端は新年に目標を掲げるのは意味がない。なぜならば年が改まるとかそういうタイミングでしか掲げられないような目標は普段から取り組めない達成できない目標だから。
とか、意志薄弱な人間は日が経てば目標自体忘れて結果達成できない。とか、変にハードルの高い目標にしてしまって達成できなくて早々に諦めてしまうとか。
そういう話を聞いたので、ならば達成出来るように達成可能と思えるような目標をredmineでマイルストーンをチケットとして分解して期日を設定して進捗管理するのはどうだろうかと考えた。
要は2014年の目標はredmineで適当な目標の進捗管理を行い、その目標を達成できるよう行動する。のが目標。
という事で設定作業開始
環境:
- ホストOS:OS X10.9
- ゲストOS(今回使用する環境):Ubuntu13.10 32bit(ずっと64bitいれたと思っていた(T_T))
- nginx1.4.1(以前から使用していて今回はredmine向けに設定を変更します)
- ruby2.0.0dev(rbenv)
- unicorn4.7.0
- rails3.2.16
- redmine2.4.2
rbenvにruby2.0を追加してデフォルトにする
rbenvは元から入れていたので、今回は2.0を追加する作業だけ。折角だから最新を使おうってだけ。
参考:rbenvを利用して複数バージョンのRubyをインストール
※自分の環境ではrehashのみ、フルパス指定じゃないとエラーになる。なんでだろう。
rehashの時だけsh-rehashがうんたらってエラーになる。
ruby2.0の状態でgem update でアップデートしてbundler入れる。
MySQL側の準備
redmienユーザーの作成と
パスカルのなんとか
今回は、パスカルの三角定理?みたいなやつ
PHPでは、
Perlでは、
Pythonでは、
Rubyでは、
Rubyはもっとシンプルな書き方があるのかもしれない。
コーディングリハビリ06
リハビリその3
今回は、バブルソート
PHPでは、
Perlでは、
Pythonでは、
Rubyでは、
習熟度が低いのでPerlとPHPが同じ内容になる。
pythonが好みだけど毎回2つリストを生成してmapしてるのでコスト高そう。
すんなり1つのリストだけでできないものか……
コーディングリハビリ05
昨日の文字チェックをPHP以外で試す。
与えられた文字列が全てユニークな文字で構成されているかのチェック。
PHPは前回やっているので、今回は掲載無し。
Perlでは、
Pythonでは、
Rubyでは、
文字列のまま操作するなら指定の文字が同じ位置にあるのか先頭から検索と最後尾から検索でインデックスが同じか調べる。
配列で操作するなら、重複不可の配列を作って要素数が変わってないか調べる。
pythonが一番スッキリしているようだけど、やっぱりRubyかな
コーディングリハビリ02
リハビリその2
今回は、ファイル読み込みとその時の簡単な例外処理
読み込むテキストファイルの内容は以下の通り、
PHPでは、
Perlでは、
Pythonでは、
Rubyでは、
うるう年の判定処理は適当。pythonが一番しっくりくるかな。
コーディングリハビリ01
一定時間未満の習得状態だと、日々使ってないとすぐ書けなくなりますね。プログラミング言語というのは。
paizaなんかの超初級問題も関数のリファレンスとか見ながらじゃないと全く解けない。
という事でリハビリ。
今回は標準入力。
PHPでは、
Perlでは、
Pythonでは、
Rubyでは、
標準入力が「gets」だけで取れるRubyはダンディ。