Seiichi Yonezawa

“How creativity is helped by failure”

AMPが熱い(かも)

今週の頭にリニューアル計画を発表したつもりですが、また急に飽き性が発作してしまい、モチベーションを失いつつあります。まあ、今はWebよりも実がありそうなコードとかプロジェクトを始めようと思っています。今となっては年末年始にそういった方針に舵を切ったつもりでした。しかし、また最近AMPというものを知り、今度こそこのサイトのリニューアルを果たしてみようかと思いました。ただし、今回は表面的な変化よりは内部の変化にあたりそうなので、勉強する内容も増えそうです。結局ただの日記を書き残す場所になりつつありますが、また更新するネタが増えるかもしれません。しかし、今はWebよりも別のことを始めたいんですけれども。

開発日記 #37

今週は1週間が長かった……。そんな気さえしてくるほど、前回更新から時間が経ったように感じていたのですが、作業そのものは特に進捗しませんでした。今週はおそらくあまり作業そのものをしていなかったようにも思えますが、グラフの方は少々詰まってきたのでまたほぼ0から書き直しみたいに始めました。まあ、いつかはやりたいと思ってたんですが、今まで整数ベースだったものを小数点で扱うようにするのに、ソースを修正するのはやや面倒だったのです。なかなか思うように自分の時間を過ごせていませんが、この調子でぼちぼち進めていく予定です。

あと、このサイトのリニューアル計画も水面下で進行中です。ようやくしっくりくるようなものを見つけたので、昼の少ない時間でこれも進めていますが、いずれ公開できたらいいなと思っています。

開発日記 #36

今週はグラフ生成の続き……をやるはずだったんですが、また思いつきでnanocとsinatra、そしてsequelのコンビネーションを試してみました。そして、テンプレートはネットで配布されているかなり古めの(euc-jpなんて単語久しぶりにみました)ものを適用しようとしたため、思った以上に時間がかかった上失敗に終わりました。結局今は単にnanocだけをデプロイしました。

また、GitLabがいつのまにかCIの機能を統合したお陰で以前よりもすごく簡単にCIを使えるはず……だったんですが、dockerに入れ替わったお陰でSSHの接続がうまくいかなくなりました。あとは公開鍵をビルド前に追加すればいいだけなのですが、どうやってやろうか考え中です。もしこれでうまくいけば、GitLabにプッシュするだけでデプロイが完了できるはずです。GitHubのプライベートリポジトリではいろいろと制約があるのですが、こうして完全に非公開でもCIと連動してくれてすごいラッキーな感じ。今週は管理しているブログをいろいろ整理しつつ、グラフをなんとか進めていきたいです。


なんだかすごく夜更かししてしまっているのですが、おそらくGitLabではリポジトリ毎に環境変数が設定できるようなので、SSH keys when using the Docker executor を参考にして、$SSH_PRIVATE_KEYをデプロイ先に使えるようにしてあげると無事デプロイすることが出来ました。これにて一件落着なのですが、正直今日は睡眠不足で1日過ごさなければならないと思うと憂鬱です。

開発日記 #35

座標を表示する方向性で、未だうまくいっていません。やはりwhileのループはデバッグが厄介で、ある程度ビジュアル化はして2件ほどバグっぽい挙動を直しましたけれど、根本の原因を特定できませんでした。

まず1つめは座標に対して変化量をそのまま代入していたので、左上に固まってしまっていました。
続いて2つめは四則演算に括弧を加えていなかったこと。
しかし、これで解決する予定だったのですが、また明日にもつれ込みそうです。
かなり泥沼化してきていますが、だんだん目的も曖昧になりつつあります。

webプログラミングではこういう部分で悩むことってほとんどないんですけども、これではせっかくのモチベーションも減退しつつあって辛い。

開発日記 #34

今日は昨日に引き続き座標を重複しないように分離するコードに挑戦していました。物理エンジンのライブラリを利用することも考えたのですが、操作が煩雑でわかりにくかったことと、ライブラリのメンテナが既にリタイア宣言をしていたのでエンジンを使わない方向性でいく予定でした。操作自体は一見そこまで複雑そうでもありません。傾斜や円などの形状を使うわけではないので、二つの面のデルタを比べて、座標に対してそれぞれ反対方向に広げるだけ……のはずなのですが、おそらく比較対象の座標がそれぞれ遠すぎたのか、遠く離れすぎてしまうようでした。こちらに関しては、今週中にはうまく動けるようにしたいですね。

で、もうひとつ。自宅サーバを改めて稼働させたのでまたGitLab復活しました。まだファイヤウォールなどの最低限ですが、とりあえずこれで安心です。考えもなくGitHubのプライベートリポジトリを利用していますが、一旦これもそろそろ自宅に移そうかなと考えています。それこそプライベートだし、GitHubのグラフに色をつけることはモチベーションの維持に必要でしたけど、最近はそうでもなくなりつつあるので……。

最後にOne More Thing...以前ngrokの投稿をしましたが、最近ネット周りの環境をなるべくセキュアにしたいと心がけているので、VPNを購読してみました。現在は日本国内にいながらカナダやUS経由で接続しています。Torを使えばよかったのですが、DigitalOceanを始めCloudFlareに毎回認証を要求されるのであくまでVPN経由です。また、メールアドレスもTutaNota(スペルをいつも間違える)に登録しました。これらの投稿をできれば近いうちにしたいなぁと思ってます。

開発日記 #33

この数日間、webではなく座標を生成する方法を模索していました。まだまだ目指している完成形にはほど遠い状況ですが、この画像はChunkyPNGを使用し、giflossyでサイズを減らしました。元のサイズは216KBでしたが、現在は31KB。素晴らしいですね。

また、今は座標生成の他にも名前生成なんてものも作りたいと思っています。こちらは数学的要素はグッと減るので作りやすいかなとは思っていますが、まだ想像の域なのでなんとも言えないところです。自分が作れそうだと思うものだったら、いくらでも集中できますが、逆だとなかなかそうはいかないので、まだまだ勉強が足りてないんだろうなぁと思う今日この頃です。

それからもうひとつ、以前の日記でこのサイトをRails 5にする宣言をしていましたが、バージョンだけRails 5にすることに成功しました。もともとそこまで大規模なサイトではなかったのでそこまで大変ではありませんでした。本来の手順ではテストを書いて、アップグレードして、動かなくなったテストを直す手順が必要だったのですが、別のブランチである程度それらしいエラーには遭遇していたので、このサイトもいずれそのエラーに見舞われるのかも。せっかく100コミット近く進めていましたが、1から書き直すのはなかなかうまくいかないものですね。

開発日記 #32

今日は振替休日ですが、作業内容的には昨日に引き続き自宅サーバをそろそろ本格的に活用し始めるための準備を行なっています。現状は昔Sinatraを使い始める前に遡りますが、Nanocを使っていました。今回は久しぶりにまたNanocを使いたくなり、Sinatraで動的なページを、Nanocで静的なページをそれぞれ生成しようと思いました。また、デプロイにはおなじみのCapistranoを使用します。無事、これらを使ったオーケストレーションには成功したものの、合間に利用しようとしたGitLabのインストールにどうしても失敗してしまう……というか、インストールが進まないという現象に悩まされています。


それから一度システム内の余分なパッケージを削除して、1時間以上放置して、ようやく完了しました。おそらくGitLabのインストールにはちょっとやそっとの時間では終わらないようです。そして、現在はSSL関連の設定がうまくいかなかったので、何やらGitLabの設定ファイルがうまく書き出せていないようです。そのあたりをもう少し調査します。


どうもうまくいかないと悩み続けてすっかり真夜中です。が、GitLabだけでなくNginxやCloudFlareと根掘り葉掘り進めて行くうちにルータのポートをHTTPしか開けていなかったことに気がつきました。サーバ側のファイヤウォールも確認していたのに、ルータのポートはすっかり開けた気でいました。なんて初歩的なミスなんでしょうか。しかし、これでようやく問題解決に一歩前進できました。


やはり原因はルータのポートだけでした!やるせなさを感じつつも、インストールをやり遂げた感を得ることができました。これで安心して眠れそうですが、あと数時間後に起きなければならないと思うとやはりやるせなさを感じてしまいます。しかし、これでGitHubとはまた別にプライベートなプロジェクトをどこからでもGit経由で管理できるようになりました。

開発日記 #31

今日はこの公開サーバとは別に、自宅で稼働させているサーバも公開してみようと思いました。しかし、LANで保護されているネットワークにわざわざ穴を開けるわけですので、セキュリティ上の懸念がありますがこのあたりの設定をちゃんと理解していれば問題はないでしょう。それこそ、昔は本を読んでもきちんと理解できなかったものですが、今ならなんとかわかる気がします。

今回はガイドのようなものを書くつもりはありませんが、ルータの設定画面が見辛いせいで設定項目がわかりにくく、有効にしたら通りました。そして、LAN内ではグローバルIP経由でレスポンスは返ってくるのに、WAN側からは見られなかったので、ルータにあるファイヤーウォールの項目を変更したらうまくいきました。ここまでで、3時間近くも無駄にしてしまいましたが、ようやく前に進めそうです。あとは動的IPアドレスなので、ドメインにうまく固定させる必要があるのですが、それをこれからやる予定です。


https://gist.github.com/nzwsch/43cfd1c1e4bb8532474a16ccebd4e549

その後の進捗ですが、上述のURLにあるスクリプトを利用して、CloudFlareのネームサーバを更新するようにしました。ドメイン経由の場合はCloudFlareを媒介するのでHTTPは安全にアクセスできるはずです。ただし、今のままだとCloudFlareサーバを経由しない設定なので、そこは追々修正するとして、最近Oracleに買収されたDynDNSやNoIPを利用しなくても動的IPで自宅サーバを活用できるのは素晴らしいです。あとはIPアドレス経由でアクセスした場合はドメインにリダイレクトさせて、Let's EncryptでSSL証明書を発行するなどすれば問題ないはずです。

開発日記 #30

今年の個人的にやりたいと思っていることのひとつは「家計簿をつける」です。去年まで貯金をしようと思っていたのが、旅行や自作PC等でなかなかうまく貯まりませんでした。経済などの分野にはあまり興味がないのですが、金銭のフローを可視化することによって、無駄な出費を抑えられるようになるそうです。

既にiOSやAndroidには家計簿や帳票をつける類ものがあるので、いわゆる車輪の再発明なわけですが、Excelよりは便利で家計簿よりも単純なものを作りたいと思っています。それこそ、今はJavaScriptとか他のモダンな言語も学習したいので、Railsの依存度を減らしたいと思ってるのですが、なかなかうまくいきませんね。かといって、いきなり新しい言語で手探りに始めるよりはまずプロトタイピングの意味合いも兼ねる……かもしれません。

そこで、金融系の単語といっても普段からある簡単な英単語ですが、Railsのモデルとして登録するのにやはりいろいろと調べるわけです。Asset資産を表していますが、どちらかというとCSSとかJavaScriptなイメージが先行しています。それはさておき、AssetPipelineで使われているであろうクラス名を使おうとすると普段見慣れないようなエラーが出ました。namespaceに登録する(モジュールを使う)ことで回避できたのですが、普段なら絶対に使わないであろうクラスです。他にもこのブログでもResourceというモデルを使おうと思ったのですが、

# routes.rb
resources :resources # ???

……という表記にならざるを得ないので却下しました。良い名前をうまく見つけたいのですが、やはり英語圏ではないために適切な名前を選ぶのは難しいものです。

あけましておめでとうございます

2017年最初の投稿です。あっという間に迎えた正月ですが、大晦日も含めて5連休でした。年末に組み立てていた自作PCのトラブルがあり、企画倒れになりつつも正月を満喫していたのですが、今日は腰を据えて作業をしました。もはや深夜ですけれども。

年越し前にやればよかったのですが、稼働中のサーバーを掃除しました。組み立ててからずっと分解してこなかったのですが、例によって埃でひどい状態になっていました。それでもファンを分解したり、配線を変えたりして以前よりも愛着が湧きました。ただ、何度かOSを入れ直そうとした時にHDDの調子が悪くなってしまいました。気のせいだといいのですが……。

このサイトはRails 5の書き直し状態になっていますが、他サイトをRails 4.2.7から5.0.1にアップグレードしました。といってもまだほとんど稼働していないので、設定ファイルを上書きしなおしたような感じです。Upgrading from Rails 4.2 to Rails 5.0に一通り目を通したのですが、やはりrails newrake app:updateするのとでは生成されるファイルが微妙に異なるようです。

また、もうひとつのサイトはRails 5からまたフルスクラッチで書き直してみました。こちらはずっとデザインが決まらなくて、未だにぶれ続けているのでまだまだ時間がかかりそうです。また、Twitter Bootstrapしか長らく使っていなかったのですが、他のCSSフレームワークも試しています。ただ、やっぱりRailsは管理画面のみで使いたかったり、動的画面がいいなぁとかいろいろ考えるとまだまだサイト制作から離れられず、あまり躍進できない気がします。

遅くなりましたが、今年の豊富はなるべくWeb以外のものに挑戦しようと思っています。webのみでも学習するネタはあるのですが、肝心のモチベーションを保ちづらいので、アップローダーをちょくちょく触りつつ、なるべく新しいことに挑戦していこうと思っています。今年もよろしくお願いします。