プログラマ行進曲第二章

主にソフトウェア関連の技術をネタにした記事を執筆するためのブログ

2015年9月まとめ

はじめに

前回のまとめはこちら。

takuan-osho.hatenablog.com

8月まとめは盛大に遅れたので今回は間に合わせたいと思いながら書いている状態。

やったこと

  • Sphinx+翻訳ハッカソンに参加。
    • 今回はSphinx自体をいじるのではなく、Gitの社内勉強会用資料をSphinxで作るために参加しました。
    • が、参加者の人と色々話していく内に、資料作りよりも前に課題の洗い出しとかが必要だと気づかされたので、あまり目立った成果は出ず。
  • 平日夜にすごいH本をちょびちょび読む会 18回目19回目に参加。
    • Haskellの話しはほとんどしなくなっていますが、圏論的な話しを元にFunctorの話しとかをゆるふわで色々聞けたり話せる機会があるって良いことだと実感する勉強会だなと毎回思います。
    • 直近の会ではMonoid、Homomorphism、Endomorphism、endofunctor、Monoidal Functor、Monoidal Categoryなど新しいことがドバっと出てきて、世界は広いなあと感じる次第。
  • 久々に一人旅をしました。
    • 八戸、奥入瀬渓流のあたりを旅行してきました。
    • なぜこの辺りに旅行したかというと、人生初の一人旅がここだったので、久し振りに訪れたくなったからです。
      • Foursquareによると、5年前の2010年5月に行っていたみたいですね。
    • 大自然が一杯の中でリフレッシュして、晩ご飯には美味しいビュッフェを堪能し、露天風呂で疲れた身体を癒やすことが出来、余った時間でOpenStackとかSwiftによるiOSアプリ開発の勉強が出来て体操よかったですね。
    • 旅行の様子を写真で紹介。

季節の関係か、残念ながら今回はうみねこの大群にはお目にかかれなそうですな。それでも参拝者がちゃんといる所はいいですね、

海でサーフィンしてる人もいる。

渓流眺めながら朝食。朝は寒い。

コントラストだけ上げて撮影してみた。

十和田湖に来てみた。

  • 写真だけだと伝わりづらい様子も以下の動画で今回は伝えられるので紹介。

所感

今月は主にシルバーウィークから始まった長期休暇中にOpenStackとSwiftの学習を集中的に行い、普段よりもずっと深いレベルまで学習することが出来たのがとてもよかったですね。

奥入瀬の静かな自然の中、お金を奮発して堪能したホテルで優雅に過ごしつつまったりと集中して勉強できる幸せを感じ、普段の生活もこの1/5でいいから幸せ感じて勉強したいと思いました。はい。

目に見える成果としては以下の通り。

これから

プログラミングの記事をアウトプットするのと、人前で発表する訓練積みたいところです。できれば多人数いる場所ではなく、こじんまりとした場所で練習したいですね。

2015年8月まとめ

はじめに

前回のまとめはこちら

takuan-osho.hatenablog.com

そしてもう9月が終わろうとしているのに8月まとめを書いていることに対して色々思うことはある。 9月まとめは今日中にやらないとまた死亡する。

私の今の場合、インプット優先するの、よくないですね、と思いました。

やったこと

自分のカレンダーを見ながら思い出すの、辛い…

  • Rebuild meetupに参加した。
    • After showのなんとも言えない空気感を体験して、現場にいる醍醐味を感じました。
  • YAPC Asia TOKYO 2015に参加した。
    • 未だブログに感想エントリ書いてないので、俺のYAPCは終わってない!
    • 今から書くのもどうだろうと思いつつ、うーんとなっているところ。
    • 簡単に今思い出せるだけの感想を言うと、ワンライナーのセッションが一番感心しました。
      • というのも、ある質問に対する登壇者の回答の仕方が素晴らしかったからです。
      • 気が向いたらそのことを含めて書くかも。
  • AnnictのMeetupという名の飲み会に参加した。
    • 最近忙しくて使用頻度が落ちているとはいえ、アニメ視聴記録用に重宝しているサービスなので参加できてよかったですね。
    • 参加した全員がAuthor or Contributerだったのには笑いました。
    • 色々開発の話しも聞けたので、時間を作ってちょくちょくPR投げられるようにしたいという思いを新たにしたところ。
  • 第23回Haskellもくもく会 @ 朝日ネットに参加。
    • こういう機会でHaskell勉強しているけれど、やはり遅々として進まないのでもう少しどうにかしたいところ。
    • とはいえ、あれもこれも手を広げすぎているので、少し抑えた方がいいのではないかと思いつつ、Haskell勉強したい欲はそれなりにあるのでどうしたものか、と考えています。
  • ゼーガペインのリセット祭としてサンライズフェスティバルに参加。
    • 行ってみたらセレブラントがたくさんいたので、熱の高まりを感じました。
    • 来年は10周年で大きな花火の予告がちらほら出ているので、今から楽しみです。

毎回やる度に、箇条書きの中でですます調とだである調が混じるという不具合勃発してますね。

所感

全てが後手後手に回ってしまって今更書いてしまうという体たらくなのが痛い。

これから

プログラミング系のアウトプットできていないのは7月から変わっていないので、どうしたものかと思案中。

Annictをローカルで動かそうと試してみてハマった箇所を記録してみた #annict

Annictというアニメ視聴記録サービスがあります。結構前から利用していて、私がアニメ視聴記録サービスに求めているものが結構あるので、個人的に重宝しているサービスです。Github会議の時に開発者の方とお話しする機会があった際、「こんな機能が欲しい*1んですよね!」と訴えるくらいには使っています。

さて、このAnnictというサービス、日本のアニメ視聴記録サービスとしては珍しい特徴(恐らく現時点では唯一?)があります。それはOSSであるということです。

github.com

今回はこのAnnictをローカルで動かそうとしたときにハマってしまったポイントをメモ代わりに残そうかと思います。

前提条件

開発環境はVagrantを使用して、Ubuntu 14.04を仮想マシンのOSに選びました。

Annictを動かすのに必要なツール類はこの記事が書かれた時点でのREADMEに書かれた指示通りにやっていてみました。

bundle installに失敗する

これはnative extensionを必要とするgemをインストールするときに事前に入れておかなければいけないソフトウェアを入れていなかったことが原因でした。具体的に言うとpgとかrmagickとかのgemをインストールするときの話しですね。

具体的に何を入れておけば問題なかったかどうかは色々試行錯誤しながらだったので全ては覚えていませんがrmagickを入れるためにsudo apt-get install libmagick++-devをして、pgを入れるためにpostgresqlだけでなくsudo apt-get install libpq-devをしたのは覚えています。

bundle exec rake db:createが失敗する

bundle installが成功したのも束の間、次はbundle exec rake db:createが失敗して途方に暮れるという事態に。

エラーを見ていてpostgresql周りの設定が出来ていないのだろうと当たりをつけて色々ググった結果、pg_hba.confという設定ファイルの設定の仕方に問題がありそうだということがなんとなく分かりました。

要するにRailsの知識ではなくてPostgreSQLの知識が足りなくて失敗していたということです。

で、根本原因を突き詰めると知識不足もあり果てしなく時間がかかりそうだったので、とりあえず急場しのぎとしてpg_hba.conf内のauth_methodがmd5になっている箇所をtrustに変更してみたら無事bundle exec rake db:createが通るようになり、続くbundle exec rake db:migratebundle exec rake db:seedも成功するようになって解決。

ただ、これはpg_hba.confの設定をよく分からずにやっているよろしくない例なので、今後設定の意味をちゃんと調べて安全なやり方でやってみたいところですね。

ポートフォワーディングしてもVirtualbox上の開発環境にアクセスできない

ここまで出来たから後はアクセスするだけだ!と思ったのも束の間、今度はbundle exec rails sしたVirtualbox内のRailsにホストマシンからアクセスできない状態に苦しめられました。

ここのポイントは「ポートフォワードを正しく設定しているのにアクセスできない」というところで、原因が本当に分からずに死にました。

色々調べて最終的に分かったことは、Rails 4.2からrails serverのデフォルトホストが変わったことが影響しているということでした。

これはRack側の変更の影響とのことですが、これにより仮想マシンで動かしているRailsにアクセスしようとしても依然と同じようにはアクセスできないため、この記事を書いている時点でのREADMEの説明だとアクセスできなくなっていたということが判明したので、Rails 4.2のリリースノートに書いてあるように-b 0.0.0.0オプションをつけてbundle exec rails sして解決しました。

で、コレに関しては既存のものを恐らく壊さないだろうし、私でも間違えずに貢献できそうだと思ったので、Pull Requestを送っていましたが、記事を書いている間にMergeされました!

Twitterの認証に失敗する

で、これでようやくRailsにアクセスできるようになって「やった!」と思ったら、認証にハマりました。

結論を言うと、これも結局Railsの知識とかではなく、Twitterのアプリケーション登録しているかどうかという話しでした。

Twitterのアプリ登録をして得たConsumer KeyとConsumer Secretを、一連の作業の中で出来たconfig/application.ymlの中の設定に書き込んで解決。

この時地味にハマるのが、Twitterのアプリ登録時にCallback URLを設定していないと認証するときにエラーになるということ。(参考記事)

…こう書いていると自分の知識の無さにへこみますね…

最後に

とりあえず画像変換サーバーのtomboを動かしてやっているわけではないので画像周りは表示されませんが、無事にローカルで動くようになったので、とりあえずよしとしたいです。

今後の開発者が試しやすくなるようにVagrantfileとかDockerfileとかdocker-compose.ymlとかを用意してPull Requestを送れるようになったら送ろうと考えて今四苦八苦しています。

今後も何かしらいじってみて貢献できたらいいなと思って利用していくつもりです。

*1:「アニメ視聴ステータスにHummingbirdでいうOn Holdにあたるステータスを追加して欲しい」という要望でしたが、これは後日、ありがたいことに「中断という視聴ステータスが追加」という形で実装されました

2015年7月まとめ

はじめに

前回のまとめをまず貼ることから。

takuan-osho.hatenablog.com

今回も当月中にまとめがアップできていないのである。

やったこと

  • gulpでslimやsassのコンパイル楽にする方法を覚えた。
    • 秘伝のタレ化してしまいがちなところに気をつけていれば有用なツールっぽい。
    • とはいえ、秘伝のタレになるくらいならnpmだけで対処した方がいいのかも?とか思う今日この頃。
  • react.jsの基本的なところはやっと覚えてきた。
  • 会社の懇親会に出た。
    • いつもこういうのには出てないので、たまには出るかと思って出てみたら意外とよかった。
    • ただ、コレに出る関係でHちょびよみに一回出られなかったのは痛かった。
  • Swiftの勉強会に再び参加。
  • 久しぶりにHちょびよみに参加。
    • 7/30の回でFuntorとApplicative Functorの箇所を学ぶ。
    • 本格的に始まる前に前回までのノートを写してもらう時間があったので非常に助かりましたね。遅れていた分を少しは取り戻せてよかったかな、と。

所感

なんとなく少しはまともに過ごせた気がする1ヶ月だったと思います。

これから

今回も7月まとめを8月にやっているという状態なので、どうにかしたいところ。

とはいえ、ブログ更新も少しずつまた出来るようになってきたので、少しアウトプットを意識してやってみたいですね。

特に、書いたコードのアウトプットが最近出来ていないのでそこをもう少しどうにかしたいです。

まず手始めに、「最近学んだgulpとか使って開発時に色々楽をする」というところから記事にする、という感じかと思ってます。

PyConJP 2015のプロポーザル一覧を把握しやすいようにざっくり整理してみた

何でこんなことしたか?

PyConJP 2015のプロポーザル一覧ページが種類別とかレベル別にソートできない仕様で、かつabstractも含まれている関係でページが縦長になっていて、投票したくなるプロポーザルを把握できなかったから少しスクレイピングしてデータ整理(リンク付きタイトルを抽出して一覧化)してみたかったというのが理由。

つまり自分用です。なので、リンク間違い・タイトル間違いあっても勘弁して下さい。 後、Twitter見てるとチュートリアルはもう既に採用されたものが何個か決まっているみたいですけど気にしないことにしました。

以下、自分なりに整理したプロポーザルです。ソートは適当。というかしていない。

個人的に把握しやすいように整理したプロポーザル一覧

talk(初級)

  1. セカイノカオ by チーム・カオ(ja)
  2. Integrating Django with Centralised Identity Management(en)
  3. Doing Math with Python(en)
  4. Sphinxで作る貢献しやすいドキュメント翻訳の仕組み(ja)
  5. PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう(ja)
  6. Pythonで3Dデータモデリング&3Dプリント(ja)
  7. Cyber attack: About DNS DDoS, and analysis it with Python(en)
  8. データベースドライバーひと巡り(ja)
  9. Translation of Python Programs into non-English Languages for Learners without English Proficiency (en)
  10. PyCon JP を支える技術 2015(ja)
  11. with modern_peripherals: Python and Flask(en)
  12. PyCharm Essentials(en)
  13. 野球Hack!~Pythonを用いたデータ分析と可視化(ja)
  14. MinecraftをPythonで遊ぶ(ja)
  15. なぜWeb画面自動テストはうまく行かないのか(ja)
  16. 14歳からの関数型プログラミング in Python(ja)
  17. 10年続くWebサービスでも使えるOpsのためのfabric入門(ja)
  18. pythonが支える、データ駆動型コンテンツの創出(ja)
  19. Infrastructure as Code with Ansible(en)
  20. Breaking backwards compatibility: The easy way! (en)
  21. Dissecting the Stack: How things were glued together(en)
  22. Teaching Data Structures with Python(en)
  23. Python, the next Brazilian generation(en)
  24. JSONSchema with Python(ja)
  25. Python3を利用して良かったこと(ja)
  26. Mezzanine, the best CMS on Python(en)
  27. エンジニアの技術力評価は難しい? - 相互評価制度を約4年やってみたけど、わりと良い感じかもしれない -(ja)
  28. はじめてのドローン・プログラミング(ja)
  29. Web2.0せんせーが進路相談!(ja)
  30. 日本のオープンデータプラットフォームをPythonでつくる(ja)
  31. Pythonで作る俺様サウンドエフェクター(ja)
  32. Gandi CLI: Open Source command line interface to manage domain names and hosting infrastructures(en)
  33. kaa - Python製テキストエディタ(ja)
  34. tse - Pythonによるテキスト整形ユーティリティ(ja)
  35. Learning by Experience, Devploying pyxbackup(en)
  36. Kivyの基礎: アプリケーション開発の楽しさを考える(ja)
  37. Ways to avoid overfitting when developing a trading strategy(en)
  38. Pythonで作るリコメンデーションシステム(ja)
  39. DevOps ツールの選びかた・使いかた 〜ヌーラボの場合〜(ja)
  40. PyLadies Tokyo-初心者女性向けPython体験ワークショップ開催の裏側(ja)
  41. PythonとYAMLでGCPをDeploy!「Google Cloud Deployment Manager」(ja)
  42. Rise of the Static Site Generator(en)
  43. Better Python DevOps Security(en)
  44. Karaoke-style Read-aloud System Using Speech Recognition and Text-to-Speech Technology(en)
  45. 強くなるためのプログラミング ープログラミングに関する様々なコンテストとそのはじめ方ー(ja)
  46. 失敗と成功のあいだ:ゼロからはじめる強化学習(ja)
  47. 土木でも使えるPython☆彡(ja)
  48. ユニットテストのあれやこれや(ja)
  49. クローラーと僕(ja)
  50. PyPIデビュー 2015(ja)
  51. On SageMathCloud - Doing Mathematics and Python programming on cloud.(en)
  52. Pythonによる科学技術計算入門(ja)

talk(中級)

  1. 組合せ最適化を体系的に知ってPythonで実行してみよう(ja)
  2. Sphinx autodoc: APIドキュメントの自動生成(ja)
  3. データ可視化技術の過去/現在/未来(ja)
  4. Python で作って学ぶ形態素解析(ja)
  5. Program Pepper in Python(en)
  6. Python3 WSGIアプリケーション入門(ja)
  7. Packaging最前線(ja)
  8. Tornado/Websocketを使ったモバイルゲームアプリケーションの事例紹介(ja)
  9. Web Scraping in Python(ja)
  10. Writing Fast Code(en)
  11. Pythonによる未知語・重要語キーワード抽出とその応用(ja)
  12. Tornado/ElasticSearchで実現する大量ツイートのリアルタイム関連文書判定(ja)
  13. Making Python coexist with others(en)
  14. Ansible x AWS -- Infrastructure as Code for Small Team(ja)
  15. Threads and Callbacks for Embedded Python(en)
  16. Building a Scalable Python gRPC Service using Kubernetes(en)
  17. NAO + iPadで実現するコミュニケーションロボット!tornado/websocketで実装するタブレットを使った対話ロボットアプリの事例(ja)
  18. Djangoとフロントエンドフレームワークの共存事例(ja)
  19. pandasによるデータ加工:テストのコツ・注意点やライブラリの紹介(ja)
  20. uWSGI/Dockerを利用したWebサービス運用事例(ja)
  21. How we realize SOA by Python(en)
  22. アドネットワークのデータ解析チームを支える技術(ja)
  23. Python × Bluemix でやったHack-a-thonでの超短期間認識系アプリ開発事例(ja)
  24. Introduction to Theano -- not only for deep learning(en)
  25. Data selection techniques in pandas(en)
  26. Pythonでマイクロサービス構造のWebサービスを実現する(ja)
  27. CFFI Is the Future(en)
  28. Mochiの紹介(ja)
  29. Python と型ヒント (Type Hints)(ja)
  30. 個人の写真から分かる過去と未来 ~機械学習を添えて~(ja)
  31. Introduction to nipype and creating stable NeuroImaging pipelines using it (en)
  32. Cython at rescue .(en)
  33. Machine Learning to solve grass root level problems .(en)
  34. pandas internals(en)
  35. Python and the Semantic Web: Building a Linked Data Fragment Server with Asynco and Redis(en)
  36. Pythonによる4足歩行ロボットの制御と強化学習による歩行動作獲得の実例(ja)
  37. fabricを用いたサーバーメトリクスの収集と可視化(ja)
  38. Cython による他言語の拡張(ja)
  39. 2015年決定版! 博士のPythonでハードウェアを扱う方法(ja)
  40. Scaling and Launching Python on AWS(en)
  41. Djangoのエントリポイントとアプリケーションの仕組み(ja)
  42. Pythonで作る、少し未来のオフィス(ja)
  43. Give your scripts the power of the Web! Web automation through Python(en)
  44. Let's prevent bugs by checking our types in Python(ja)
  45. Getting started with PySpark(en)
  46. Let it crash: what Python can learn from Erlang.(en)

talk(上級)

  1. Jumping the Python Ship: Better Alternatives To Python(en)

poster

  1. Sphinx-users.jp(ja)
  2. Python x Edison = New World!!(ja)
  3. ニューラルネットの実装が簡単なChainerを用いた音声からの感情識別(ja)

tutorial

  1. Sphinxハンズオン(ja)
  2. 【初心者向けPythonチュートリアル】Webスクレイピングに挑戦してみよう(ja)
  3. Pythonを使った機械学習入門(ja)
  4. Python x Edison x AWSではじめる IoT(ja)
  5. Effective Pandas(ja)
  6. エンジニアのためのベイズ推定入門:確率論的プログラミングのすすめ(ja)
  7. Machine Learning Bootstrap(ja)

どうやってプロポーザル一覧を整理したか?

全然高度なことしていないですが、メモ代わりに残しておきます。

  1. kimonolabsを活用して、プロポーザル一覧ページや各プロポーザル一覧のページのデータをスクレイピングしてjson化する
  2. 作ったjsonPythonで処理して、各プロポーザルの詳細ページへのリンク付きタイトルリストをmarkdown形式にするように吐き出す
  3. markdownを処理できるブログとかに貼り付ける

最初はスクレイピングも勉強がてらPythonでやってみようかと思っていましたが、該当ページのDOMの構造見てたら「面倒臭そう…」と感じてしまったのでkimonolabs使ってサボりました。が、目的は「PyConJP 2015のプロポーザル一覧を早くしやすくする」という所だったので、前処理で疲れ果てると本末転倒だからこれでいいかと思っています。

余談ですが、kimono便利なので、知らない人は活用してみるといいと思います。

思ったこと

公式ページ自体にソートっぽい機能があるといいなと思いました。

あと、投票していないので聴きたいtalkをさっさと投票しないといけないですね。

第1回 カジュアル Swift 勉強会 @ 青葉台に参加してきました

要約

第0回に引き続き、第1回目のSwift勉強会に参加してきて、発表した方がより自分のためになっただろうなあ、と思ったって話しです。

前回の話しは軽くこの記事で触れています

感想

今回は自分は発表しなかったので感想だけ。

今回も改めて思ったのは「少人数&議論多めな勉強会は得るものが多い」ということでした。

少人数であるのと議論多めにするという方針(+会場が自宅から行きやすい)が気に入っていて前回も参加したのですが、これくらいの人数だと一人一人の発言を拾った上で話しを突っ込んでいける余地があるので、気になったことを少し掘り下げられて気がしています。

個人的にこれやっておけばよかったなと思ったのは「今回も発表する。そして前回とは違い、資料はslideshareなどにアップする」ということでした。

というのも、今回の話しの中で「1.2の情報ってもう余り見かけないんですよね」とか「Swift 2以前に、1.1と1.2の違いをまず調べるのが大変」とか「本で書いてあるコードが1.2だと動かない」とかいう話しが少し出ていたので、前回の私の「市販のiOSアプリ開発本(Swift1.1)をSwift1.2で書き直した話」のスライドをアップしておけばそこから話しがもっと面白く展開できたと思うし、そもそも今回も自分で何かしら発表するようにしておけば発表駆動で勉強してきてフィードバックも得られて得るものが多かったのと思うので、次回は何かしらネタを出して発表しようと思いました。

小学生並みの感想文でしかないですが、次回も勉強会が開かれるのが楽しみです。

最近Swiftいじれていなくて、仕事の関係で主にHTML/CSS/JavaScriptをいじる時間で大半占められていますが、時間作ってSwiftいじりたいと思います。

2015年6月まとめ

はじめに

前回のまとめをまず貼る。

takuan-osho.hatenablog.com

9日前に遅まきながらまとめたエントリだが、6月文をまとめるのも23:20になってからなので未だに計画性というものが無い。

やったこと

  • 色々イベントに参加した

    • 第0回カジュアルSwift勉強会
      • ちょうどネタがあったので発表した。書籍に書かれているSwift1.1のコードをSwift1.2に書き直した時の話し。
      • 主催者の方のブログ記事読むと概要が分かります。
      • 本当はちゃんと資料用意してslideshareとかに上げたかったけれど、体調悪い日が続いて当日用意したレベルだったので、slideshareに上げられる形式では作れなかったのがイタイデスね…
    • Plone Symposium Tokyo 2015
      • 仕事でWordPressとかいじっていて、「無理矢理WordPress使ってないか、これ?」と思う機会があったので参加。
      • Ploneのことはほとんど知らなかったけど、当初の印象通り、ワークフローとかをきちっとやりたい場合にはPloneが向いてそう。
      • ただ、見た目がアレだし、4だとデフォルトではレスポンシブ(というかスマホ対応)になってないみたいなので、さっさとPlone 5が正式リリースされてくれませんかね?とは思いました。
    • Go Conference 2015 summer
      • 発表全てのレベルが高くて、100人越える勉強会にはなるべく参加しないようにしていたけれど、これは参加して良かったと思いました。
      • go generateとかASTとか使いこなしたいですね。
    • 第21回Haskellもくもく会 @ 朝日ネット
      • Haskellを家だと勉強しないので強制的に勉強できる空間に行きたかったので参加。2回目。
      • 目論見通り滅茶苦茶集中してすごいH本の写経できたので参加してよかった。惜しむらくは当日寝不足で疲れてなければ途中で返る羽目にはならなかっただろうということです。
  • アニメ

    • ラブライブの劇場版見に行った。近場に映画館が出来たのでちょうどよかったので。
    • 期待してなかったからか、割とよかった。
    • 最近アニメを楽しめていないのは相変わらずだった。
  • ゲーム

    • アニメが楽しめていないのとはうってかわって(?)ゲームを最近楽しんでいる。
    • といっても最近衝動買いしたCHAOS;CHILD(Vita版)をやっているだけだが。
    • ゼノブレイド止まっているのにCHAOS;CHILDの方に時間をたっぷり割いてさっさと1週目クリアしている辺り、能動的にやるゲームより受動的にやるゲームしか出来なくなっていることがよく分かる一幕だった。
    • それはそうと、CHAOS;CHILD、アニメ化決まっているみたいだけど、あれ、アニメが放映されるより前に原作遊んでおいた方が楽しめる作品だと思いました。アニメ放映された瞬間に致命的なネタバレが4つくらいは炸裂してそう。
  • 仕事

    • Middleman使って静的サイトやってます。
    • Ruby力低すぎて、自分がやりたい制御構文とかカスタムヘルパー作るのに四苦八苦。
    • そして相変わらずHTML/CSS難しい。
    • というかこの21世紀に何で人類はCSSというあんな貧弱なものを使っているのが謎。CSS、破綻するような描き方が容易に書けるから辛すぎる。

所感

もう今年も半分が過ぎたのかと思うと大変アレな気持ちになってくる。たいして時間を上手く使えていないので、無性に焦る気持ちを抑えられない。

そんなわけで現実逃避とストレス解消にゲームしている。

これから

生き抜く。遊ぶ。生き抜く。