2012年9月14日金曜日

てんやのTips

ご存じみんな大好き「てんや」のTips紹介

企画、期間限定物はちょっと割高なので天丼をベースにカスタマイズするのが基本です。 

おれの基本は天丼+お好みナス乗せ。560円。 

また、定食にすると、天汁で食べた後、テーブルにある天丼のタレで小天丼も楽しめておトクです。

しかし定食にすると650円・・・ ま、迷うんじゃよ。

2012年9月13日木曜日

herokuでform_tagの:remote => trueが動かない


(絵と本文はちょっとだけ関係あります。無力感とか)


更新していない間、色々ありまして今はRuby on Railsをherokuで動かしてます
・・・何があったんじゃろか?
で一個どうしても解決できない問題があるのでここに挙げておこうと思います

[現象]

以下のhelperがherokuで正しく動作しない(実行時エラー)
<%= form_tag ('/sessions', :remote => true) do %>
ローカルのrails上では正しく動作している

[エラーの詳細]

% heroku logs
:
2012-09-11T03:50:31+00:00 app[web.1]: ActionView::Template::Error (/app/app/views/tables/_form.html.erb:1: syntax error, unexpected ',', expecting ')'
2012-09-11T03:50:31+00:00 app[web.1]: ...nd=  form_tag ('/sessions', :remote => true) do @output_...
2012-09-11T03:50:31+00:00 app[web.1]: ...                               ^
:
要は第二引数が有ることがダメだと言っているみたい。
一方ローカルでは期待通り下記のように変換され、正しくリクエストが発行できる
<form accept-charset="UTF-8" action="/sessions" data-remote="true" method="post">

[分かっている事]

% bundle status
% heroku run bundle status
の差分は以下の通り。後者は意図通りなので実質bundlerのみ。これはhelperの動作とは関係ないはず・・・
11c11
<   * bundler (1.1.5)
---
>   * bundler (1.2.0)
28a29
>   * pg (0.14.1)
41d41
<   * sqlite3 (1.3.6)

ちなみにheroku側のGemはこんな感じ。Railsは3.2.8なので問題ないはず・・・
* actionmailer (3.2.8)
* actionpack (3.2.8)
* activemodel (3.2.8)
* activerecord (3.2.8)
* activeresource (3.2.8)
* activesupport (3.2.8)
* arel (3.0.2)
* bcrypt-ruby (3.0.1)
* builder (3.0.0)
* bundler (1.2.0)
* coffee-rails (3.2.2)
* coffee-script (2.2.0)
* coffee-script-source (1.3.3)
* commonjs (0.2.6)
* erubis (2.7.0)
* execjs (1.4.0)
* hike (1.2.1)
* i18n (0.6.1)
* journey (1.0.4)
* jquery-rails (2.1.1)
* json (1.7.5)
* less (2.2.1)
* less-rails (2.2.3)
* libv8 (3.3.10.4)
* mail (2.4.4)
* mime-types (1.19)
* multi_json (1.3.6)
* pg (0.14.1)
* polyglot (0.3.3)
* rack (1.4.1)
* rack-cache (1.2)
* rack-ssl (1.3.2)
* rack-test (0.6.1)
* rails (3.2.8)
* railties (3.2.8)
* rake (0.9.2.2)
* rdoc (3.12)
* sass (3.2.1)
* sass-rails (3.2.5)
* sprockets (2.1.3)
* therubyracer (0.10.2)
* thor (0.16.0)
* tilt (1.3.3)
* treetop (1.4.10)
* twitter-bootstrap-rails (2.1.3)
* tzinfo (0.3.33)
* uglifier (1.3.0)


・・・全然分かりません。
じ、次回は解決編じゃぜ?!

2012年8月11日土曜日

ubuntuとかtomcatとかJDBCとかの小ネタ

諸事情によりubuntuでtomcatやらscreenやらJDBCやらいじることになり、その時のメモを公開しまス

ubuntuでssh経由のscreenを使用する


ubuntuではssh接続環境下では、screenは単純には動作しないようです。(12.04LTS)

ncurses-termのインストールが必要になります

$ apt-get screen install
$ apt-get ncurses-term install

これでssh接続下でscreenが実行可能になります

ncurses-termについては特別な設定は不要です
もちろん、.screenrcは適切に作成できている等はできているという前提です


tomcat7の導入

諸々のサイトでは普通に下記で良いとありますが

$ apt-get tomcat7 install

その後、ブラウザから
http://localhost:8080
にアクセスしてインストール成功の画面が出ても、tomcat7の場合は下記を入れないとそれぞれのリンクから先に進めません
というかなぜかこれが書いてある所があまりないようなのでここに記載

$ apt-get install tomcat7-admin
$ apt-get install tomcat7-docs
$ apt-get install tomcat7-examples

tomcatからMySQLへのアクセス

そこら中に説明がありますが、tomcat等からjdbc経由でMySQLにアクセスするためにdriver(com.mysql.jdbc.Driver.jar)が必要です
ただ、servletの場合、javacのclasspathにdriverのパスを指定してもムダです。コンパイルは通るのでブラウザ経由でServletにアクセスはできますが、driverのinstanceを生成するコードが実行されると、そんなクラス知らない、という例外が発生します

ここでは一般のjavaファイルを実行する場合を考えましょう。この場合何らかの外部パッケージを使用している場合は

$ java ~.java -classpath ~.jar

と、JVMに必要なjarファイルのパスを知らせます。これと同じ事でServletの場合は同様にtomcatがcom.mysql.jdbc.Driver.jarにアクセスできないといけません

という事で、正解は必要なファイルをWEB-INF/libに入れる、です
これも書いてある所が意外とすんなり見つからなかったのでここに記載

なお、Ubuntuの場合はSymbolic Linkでも機能します

JDBCのMySQL用DriverのInstance生成

この方法自体はあちこちで説明されています。そこでは呪文のように

Class.forName("com.mysql.jdbc.Driver").newInstance();

って見ますが、これは基本的に動的なクラス名からインスタンスを生成する時に使う方法です

たとえば、

String className = request.getParameter("class");
Class.forName(new String (className)).newInstance();

っていう感じの事をしたい時に使う手法です

本来、このMySQLドライバのインスタンス生成を行うケースではクラス名は分かっているので

new com.mysql.jdbc.Driver();

っていうお馴染みの方法でOK

こちらもなぜかこの事が書いてあるサイトが無いのでムダな抵抗でここに書いておきます

ちなみに、本com.mysql.jdbc.Driverはimportができないようですが、importできないイコールnewできない、ではありません

importは

new java.util.List();



new List();

という様にパッケージ名を省略できるようにするための仕組みです


2012年7月25日水曜日

ソフト開発スキルだけでは何も作れない?

すっかり行かなくなってしまった合コンですが、下記みたいなパターンが定番でした
女の子「何やってるんですかぁ~?」
自分「んぁー、TV?作ってるって感じ?」
女の子「えー、TV、なんか流れてくる感じの組み立てるの?」
自分「いやー、そーいうんじゃなくてソフト作ってます」
女の子「ソフト?」

っていうのがメンドくさくてしまいにはマジメに説明しなくなりましたが、まあ一般的にはソフトって何?っていう人はまだ多いでしょう(うちの嫁とか)

ソフトの事は分かる、という一般的でない人でも、ソフトの定義ってこういうのが主だと思います
  • プログラム言語に精通している(C言語とかJavaとかperlとか)
  • フローチャートとかオブジェクト指向とか
  • デザインパターンとかUMLとか
  • 仕様定義とか要件定義とか
  • 大規模開発とか構成管理ツールとかバグトラッキングツールとか
  • ウォーターフォールとかアジャイルとか
  • サーバとかクライアントとか
まあ業態により色々あると思いますが、ソフト関係者が想像されるのはこの辺なんじゃないでしょうか
という事を踏まえ、先の記事のようにこれからソフトスキルを軸足にして伸ばすべきスキルって何だろう、と考えた時に気づきました


「ソフト開発スキルだけじゃ一人じゃまともなもんなんも作れなくね?」


何らかの組み込みであろうが、PCやスマホのアプリ、はたまたクラウドアプリであろうが、何かしらユーザーを相手に機能するためには、ソフトに加え必ず
  • UIデザイン
  • データそのものとデータ管理方法
の二つが必要になります


まあ絵にするほどのもんでもありませんが。

これって当たり前だと思っている人もいるんだと思いますが、自分的にはちょっとした発見でした。
ソフト関係者でこれを意識している方は意外と少ないんじゃないかなー?

という事もあり、簡単なアイコンくらいなら作成できるようになろう、という事でGIMPの勉強をはじめた、という経緯です。

また、UIやデータハンドリングを考える上で参考になるかなぁという事で、情報デザインの勉強で下記の本を読んだりしています




次はこれにしようかなと





これで「データベースを有効活用しつつ、グラフィックデザインもシャレオツでUIも解りやすい」ナイスアプリが一人でも作れるようになって副収入がっぽがぽだぜ日本の発展に貢献したいとオモイマス

2012年7月12日木曜日

ゲシュタルト崩壊

(絵と本文は関係ありません)

2012年に5σ、すなわち99.9999%以上の確度での存在が確認されたヒッグス粒子
当時一般にはまだ理解不能の発見と見なされていたこの発表であったが、この世紀の発見は2050年代に有害な副産物を生成しない新たなクリーンエネルギーの発明へとつながり、気がつけば2070年代には先進国も含め世界中にこのエネルギーは普及し、全人類がその恩恵に預かっていた
だが、一部の科学者達はその世界的な普及に比例するかのごとくある不安を増大させていた
それはヒッグス粒子発見という世紀の発表に沸くわずか3年前、無名の宇宙物理学者ゲシュタルトが発表したある論文、
エネルギーの崩壊に関する論文であった
簡単に要約すると、以下のような内容である
我々地球人は、今まで自然に存在するものをなんらかの反応でエネルギーに変換し、利用していた
宇宙規模で普遍的に存在する現象、つまり燃焼、移動、電磁気、ひいては核反応も含め、これらの方法で生成された場合は均衡を保っているエネルギーだが、それ以上の変換効率を持つエネルギー変換を行うことで、生成されたエネルギーはある条件下で連鎖的に崩壊するような現象を起こす、という既知の数学理論を元にしたある種の予想であった
当のゲシュタルトはその論文を発表して1年もなく学会から姿を消し、誰知らず失踪してしまう
そもそも学会にまともに扱われる事もなかったこの論文、多くの学者達には見向きもされなかったが、何か感ずるものがあった一部の学者達はこの論文を何度も検証した
しかし2070年代まで論理の破綻や反証事実が見つかる事はなく、あろうことかある若い数学助手によりこの予想は証明されてしまう
だがその事実すら学会にまともに扱われる事はなかった

そして207x年、ゲシュタルトの予言したエネルギー崩壊は現実のものとなる

超エネルギー消費社会となった207x年、突如エネルギーの供給源が消える事が何を意味するか
文明とはかくも脆く崩壊するものなのか・・・


ごめんなさい。ゲシュタルト崩壊って言葉が厨二ワードっぽいんでつい

ゲシュタルト崩壊ってのは、ある単語(「あ」とか「家」とか)ずっとそれ見たり書いたりしてると、「あ」ってこんなんだっけ?「家」ってこんな文字だっけ?これなんだっけ?みたいなちょっと混乱して変な感じになる現象の事です。

ふつー

名前負けー

リンクはんのもかったるいんで適当にWikipediaで検索してください

っていうのは冷たいんで ほら
やさしいな俺

2012年7月6日金曜日

転機

というわけで仕事で悩んでいたり、不幸もあったのですが、今の自分のような状況を「転機」というという事を同期から聞きました

で、本を紹介されたので備忘がてら記載しておきます

トランジション―人生の転機

なるほどねー。転機すか
聞いた事あるわ

2012年7月3日火曜日

ソフトエンジニア?マネージャー?


(絵と本文は関係ありません)

自分はいわゆるソフトエンジニアです。フリーではなく会社に所属しています。

若手時代はオブジェクト指向やらデザインパターンやらを勉強しつつガリガリ設計、実装を行い、その辺の経験を一通りしたあとはリーディング、外部管理、仕様管理、というような(恐らく)非常に典型的なキャリアを通ってきました

で、今、次にどこに進むべきかという事を考えています

タイミング的にはマネージメントの方向に進んでいくというキャリアが会社的には妥当なんだと思います

ただ、流れといえばそうなんでしょうが、十ウン年磨いたスキルをあっさり捨ててマネージメントという新たなスキルを一から磨く、というのは本来ならば大きなチャレンジであり、決断が必要です。自分の強みも理解せずにただ流れに乗るようにそっちに転向しても溺れますよね普通・・・
そもそもエンジニアになったのも、ソフトが自分の強みだと思ったからですし

またこれはうちの会社だけの特徴なのかもしれませんが、いわゆるマネージメントの人数が多すぎるように思います。一方でソフトに直接関わらない人達が増え、組織としての技術力が右肩下がりとなり、それに伴って自身のスキルも鈍ってきているように感じます

という事もあり、こんな状況下でマネージメントの方向に進むのって会社ありきという印象をどうしても持ってしまいます。これから時代、個人のスキルを常に磨いていないとほんと路頭に迷いかねません

という事もあり、今は迷いつつもやはり今まで磨いてきたスキルを軸足にして、エンジニアとしてスキルアップしていく方が良いんじゃないかと思っています

まあ海外への大量の技術流出が進んでいる昨今、高いコストの日本でエンジニアを続けるのも茨の道なんですけどね・・・でもやっぱり何も無いところから何かを作る技術は日本はまだトップレベルですし、そういう所でがんばるしかないかなと思っています

よくキャリアは山登りに例えられます

なんでもかんでもというのは無理で、登る山を決めたら少しづつ着実に上を目指す、という姿勢が似てるって事なんでしょうかね

今の自分は山の中腹まで登ってきて、上を見たらなんか角度が急になってるー
しかも一方で他の(今までとは違う雰囲気の)山の麓へのリフト乗り場があるー

という場所に来ているようです

急勾配そうですが、まだこのまま今の山を登り続けようと思っている、という感じです

では、今後さらに急になる山をどうやって登り続けるのか?というあたりはまた後日のネタに