2012年10月15日月曜日

てんやのなぞ


(絵と本文は関係あってこれはおれがてんやで天丼なす乗せを食べている所です。もちろんウソです)


てんやではいつもボーカルなしのカラオケがBGMでかかってる

2012年10月4日木曜日

逃亡編

(例によって絵と本文は関係ありません)
前編: herokuでform_tagの:remote => trueが動かない の続き

結論から行くと、なんとかなりました。
端的に言うと

:remoteの代りにformのactionでjQueryを使用してajaxを実行

です。

はい。逃げました。


そ、Solutionが多数用意されているというのもRailsの柔軟性の高さですね。
とかなんとか。

具体的には

view/layoutで参照されているlayout(一般的にはapplication.html.erb)に下記を定義
var doPost = function (url) {
    $.ajax({
    url: url,
    type: "post",
    data: "comment="+$("#comment").val(),
    dataType: "script"});
};
$("#comment")はjQueryによるSelectorです。
<% form_tag ... %>~<% end %>中に
<%= text_field_tag :comment %>
があれば、id="class"で上記のSelectorは正しく動く、はず。

で、あとは、form_tagのactionから上記のdoPostを呼ぶようにすればOK
<%= form_tag ("javascript: doPost(\"/sessions/\"") do %>
本当は、:remoteと完全に同じ挙動にするためには以下にしたかった

<%= form_tag ('#', :onsubmit => "doPost(\"/sessions/\"); return false;") do %>
でもやっぱり、form_tagが第二引数を取ってくれないので相変わらずエラーになるので逃げた。


逃げるが勝ち

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で検索してください

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