キーボード (と人間)の相性について

最近、Gateronの白軸キーボードを買いました。Cherry MXの白軸はクリック感のあるスイッチですが、Gateronはクリック感のないスイッチです。その代わり、キーが非常に軽い。35gなので、無接点方式と同じぐらいです。 それまでは青軸や黒軸を使っていました。…

ごぶさたとかいうレベルではなく

めっちゃ期間空いてました。自分でもびっくりするぐらいです。 何をしていたかといえば、体を壊してダウンしておりました。病名的には頸肩腕症候群です。しかし一番悪かった時期には、線維筋痛症なのかな?と思うほど全身が痛み、日がな一日ベッドの上でした…

CapsLockでIMEのトグルをさせたい(Sierra対応)

mac

体調はまだ万全とは言い難い状態ですが、だからといって別にプログラミングがしたくない訳ではなく、「Karabiner(Macアプリ)の代替としてHammerspoonが使える」という記事を巷で見たら「Lua勉強するべきかなあ」と思う程度には興味が残っていたりします。 …

ごぶさたしてました

例によってまた超久し振りだったりします。あーそういや前回(1年以上前)はRoRについてやってたっけなーと読み返してしみじみしてしまう程度には時間が空いてしまいました。そのRoRはといえば、2ヶ月そこらでプロジェクトが解散してしまいまして。それ以降…

Rubyの例外処理をPHPと比較してみるよ

というか、まあ比較しながらじゃないと私が分からないだけなんだけど。 catchとthrow Rubyにおいてcatch・throwはループ処理のメソッドで、例外処理とは全く関係ない。例外処理はraise・rescueメソッドを使う。 catch ループを抜け出す為のラベルとして使う…

画面ロード時にメッセージをフェイドアウト

前も使ってたんだけどいざもう一度使おうとしたら思い出せなくて、きっとまた忘れると思うのでメモっておく。JavaScript: $(function(){ $(".notice").fadeOut(6000); }); HTML: <p class="notice">ほげほげ</p> こんな感じで書いておくと、HTMLファイルロード時にnoticeクラスを指…

Simplenote restyledをいじる

iPhoneのメモアプリはSimplenoteを使っています。ちょっと前までWriteRoomを使ってたんだけど、SimpleText.wsと同期すると濁点つき日本語がおかしくなるので今は様子見中。SimpleText.wsすごく好きなので直ればいいんだけど、マルチバイトのお話だし海外サイ…

gemの使い方

しばらく音沙汰有りませんでしたが、お仕事でRubyをいじりはじめました。ということでメモメモ。 gem list インストールされているパッケージを一覧表示 gem install xxxxxx (-v=X.X.X) 指定パッケージのインストール(-vでバージョン指定) gem uninstall x…

Railsをはじめてみるよ

ということでRails。 CakePHPにもRoRのようなscaffold機能があったけど、いかんせん会社のカラム命名規則がおかしかったせいで自動作成周りの美味しい機能は全く使用しなかった(できなかったともいう)。 ということで、このへんの機能を触るのはほぼ初。実…

まずはプロジェクト作成

RadRailsを起動 Ruby エクスプローラー上で右クリック>新規>Rails プロジェクト プロジェクト名に「ToDo」あとはデフォルトでOK。「プロジェクト作成後にサーバーを自動開始」にチェックを入れておくと自動実行されるのでチェックに便利。 新規プロジェク…

scaffoldでテーブル自動生成

ウィンドウ>ビューの表示>ジェネレーター を選択し、「ジェネレーター」ビューを画面に表示する 生成プログラムに「scaffold」パラメーターに「Category category:string」を指定して右端の緑三角ボタンをクリック script/generate scaffold Category cate…

CRUDとかRESTfulとかrouteとか

CakePHPと同様、RoRもCRUD(Create, Read, Update, Delete)なディレクトリ構成でアクセスする。 RESTfulとはなんぞやについてはこちらを参照。もしくは資料のP.12〜13辺りに詳しい。RoRの場合はrakeコマンドを使用することでアプリケーションのメソッドに対…

バリデーションを追加してみる

db/models/category.rb を開き以下を記述。 class Category < ActiveRecord::Base # 未入力チェック validates_presence_of :category, :message => "が未入力です。" # 文字数チェック(20文字以内/半角全角共通) # 末尾のif文は「categoryが未入力ではな…

i18nで簡単日本語化(Rails2.2.x)

Rails 2.2以上の機能らしい。実行環境を2.1にバージョンダウンしたら使えなくて涙目。 i18nによる日本語化 - challenge Ruby on Rails i18nによる日本語化についてはこのページにまるまる書いてある。CakePHPの場合は国際化が結構面倒で結局日本語ベタコーデ…

リレーションシップを設定する

資料のP.23を参考に、次はitemテーブルを追加。先のcategoryテーブルとの関係は「多対1」となるので、モデルにもその辺りを設定しておく必要がある。この辺はCakePHPと同じくHABTM(hasOne, hasMany, belongsTo, hasAndBelongsToMany)なのでそんなに悩まな…

scaffoldで覚えておくと良いこと

script/generate scaffold item done:boolean priority:integer description:string due_date:date category_id:integer note_id:integer private:boolean exists app/models/ exists app/controllers/ exists app/helpers/ create app/views/items exists a…

コントローラで覚えておくと良いこと

Model.find(:all) と Model.all は同じこと。 なので、 Model.find(:all, :order => :category) は Model.all(:order => :category) と書いても動作する。 CakePHPでもfindとfindAll、saveとsaveAllとかあったっけ。

ビューで覚えておくと良いこと

<%= h category.category %> hをつけると自動的に内容をHTMLエスケープしてから出力してくれる。 <%= link_to "Destroy", category, :confirm => "Are you sure?", :method => :delete %> link_toに:confirmをつけると、選択リンクの処理を実行する前に確認…

ヘッダ出力

<% @heading = "データ一覧" %> とするだけで、<title>タグと<h1>タグに指定した文字列を出力してくれる。</h1>

処理完了メッセージをビューに投げる

layouts/application.html.erb <% if flash[:notice] %> <p class="notice"><%=h flash[:notice] %></p> <% end %> controllers/xxxxxx.rb # リダイレクト先で表示したいメッセージをセット flash[:notice] = "処理が完了しました。" # リダイレクト先を指定 format.html { redirec…

改行コードを表示に反映させる

app/helpers/application_helper.rb にこんな感じに記述。 module ApplicationHelper # HTMLで書けない文字の実体参照と改行コードのHTMLへの置換を行う def hbr(target) target = html_escape(target) target.gsub(/\r\n|\r|\n/, "<br />") end end 使用時は <%=h…

コントローラとビューでセッションを使ってやりとり

リンクを作成する。 <%= link_to t("link.New_note"), {:controller => "notes", :action => "new", :id =>@item.id} %> リンクをクリックするとコントローラにidが渡されるので、それをセッションに格納する。 # 渡されたIDを格納する session[:item_id] = …

Subclipseでハマる

問題:Subclipseを入れてもSVNが使えない。 具体的には SVNリポジトリに追加 ツリーを開こうとクリック 「unable to load default svn client」と怒られる ウィンドウ>設定>チーム>SVN>SVNインターフェースが「javaHL not avaiable」 libsvn-javaを入れ…

CakePHP+PostgreSQLのdatabase.php

"postgres", "connect" => "pg_connect", "host" => "localhost", "port" => "5432", "login" => "(ユーザ名)", "password" => "(パスワード)", "database" => "(データベース名)", "prefix" => ""); ?> "driver" => "postgresql" として「なんで動かんのじ…

ASのオブジェクトコピーの話

ActionScriptで a = b とした場合はシャローコピーとなり、bがaを参照する形になる。 参照ではなく完全にコピー(ディープコピー)したい場合は、 import flash.utils.ByteArray; function clone(source:Object):* { var myBA:ByteArray = new ByteArray(); …

Unable to bind to property "prop" on class "XML" (class is not an IEventDispatcher)

最近Flexと格闘している。だいぶ勉強したけどまだまだエラーが意味不明でギギギ。 特に意味不明だったのが、表題の通りXMLの属性取得時に出るワーニング。 Unable to bind to property "prop" on class "XML" (class is not an IEventDispatcher)具体的には…

表示している文字列の幅を取得する

「表示する文字列の幅に合わせて下のオブジェクトの幅を可変にしたい」という希望はまあまあよくあると思うんだけど、文字列の幅取得ってどうやるの?と行き詰った。 最初は lengthで文字数を取得 一文字の幅を適当に決めて、固定の幅×文字数 で指定する と…

メールマガジン用途で使うときの設定

fml

データベース連携している場合の話。 add/subscribeコマンドでメールアドレスを登録した際には、1アドレスに対して file = "members" file = "actives" の2行が必ず作成される。ドライバ(おもちゃのモデルをベースにして作成するファイル)でいじってればそ…

携帯電話に配信する為の設定

fml

/var/spool/ml/(ML名)/cf の一番下(LOCAL CONFIG)に以下を追加。 ## 携帯電話用設定 $HEADER_ADD_HOOK = q{ &DELETE_FIELD("Received"); &DELETE_FIELD("X-Mail-Count"); &DELETE_FIELD("X-ML-Info"); &DELETE_FIELD("X-MLServer"); &DELETE_FIELD("List-I…

本文下にいつもフッタを追加したい

fml

まずフッタ用のファイルを作成。文字コードはJISで。 -- メールマガジンの解除 : (MLのメールアドレス)?body=byeまあ中身はお好みで。 これを/var/spool/ml/(ML名)の下に配置。今回はファイル名を「footer」としました。 その後、例によって/var/spool/ml/(M…