ページ

2010年12月29日水曜日

HTML5とjQuery基本

毎回忘れてググってるので俺用まとめ。


以下の記事とか参考に。

HTML4から変化したHTML5のマークアップ ここが違う!サンプルで見るHTML5(2)
http://codezine.jp/article/detail/5600

40分で覚える!jQuery速習講座
http://ascii.jp/elem/000/000/498/498710/


HTML5のマークアップは以下のように。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>タイトル</title>
<style>/* CSS */</style>
<script>/* JavaScriptコード */</script>
</head>
<body>
</body>
</html>
view raw HTML5.html hosted with ❤ by GitHub


jQueryを使おうと思った場合はこう。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>タイトル</title>
<script src="jquery-1.4.4.js"></script>
<p id="first">変更前</p>
<script>
$(function(){
$("p#first").html("<strong>変更後</strong>");
});
</script>
</head>
<body>
</body>
</html>
view raw jQuery.html hosted with ❤ by GitHub

jquery-1.4.4.js の部分を http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js に変えるとjQueryをダウンロードしたりしなくても使える。

2010年12月21日火曜日

【Mac】LaTeXを導入

書こうと思ったら以下の記事が最高にまとまってたので書くことなかった。

TeXShop - Mac OS X 10.6 Snow Leopard に TeX/LaTeX を導入
http://idita.blog11.fc2.com/blog-entry-185.html

僕は以前にもなんか色々やったりMacPortsでpTeX入れたりとか寄り道していたけど、たぶんこれ(↑)をやるだけでちゃんと動く。というかそれ以外しなくていい。

テスト用のHello Worldだけ書いておくと

\documentclass[12pt]{jarticle}
\begin{document}
\title{タイトル}
\author{テスト}
\date{\today}
\maketitle
\LaTeX
とか使いたくないです。
\end{document}
view raw hello.tex hosted with ❤ by GitHub

をTeXShopに書いて「タイプセット」をクリックして、しばらくしてPDFが生成されればちゃんとできてます。

できなかったらドンマイなので頑張ってください。

2010年12月4日土曜日

SinatraでSlimを使う

前々回前回ときて、今度はSlimをSinatraで使う。

まずインストール
gem install slim

SinatraにSlimが搭載されるのは次のリリースかららしいので、以下が必要。

require 'slim'

module Sinatra
  module Templates
    def slim(template, options={}, locals={})
      render :slim, template, options, locals
    end
  end
end

で、中身。

helloslim.rb
# -*- coding: utf-8 -*-
require 'rubygems'
require 'sinatra'
require 'haml'
require 'slim'
module Sinatra
module Templates
def slim(template, options={}, locals={})
render :slim, template, options, locals
end
end
end
helpers do
include Rack::Utils; alias_method :h, :escape_html
end
get '/' do
slim :index
end
post '/hello' do
slim :hello
end
view raw helloslim.rb hosted with ❤ by GitHub

views/layout.slim
html
body
h1 Hello World
== yield
view raw layout.slim hosted with ❤ by GitHub

views/index.slim
p あなたの名前は?
form action="/hello" method="POST"
input type="text" name="name"
input type="submit" value="送信"
view raw index.slim hosted with ❤ by GitHub

views/hello.slim
p こんにちは、#{h params[:name]}さん!
a href='/' 戻る
view raw hello.slim hosted with ❤ by GitHub

sassも使えるらしい。

SinatraでHamlを別ファイルに書く

前回書いたhello_haml.rbのビュー部分を別ファイルに書く。

本体となるhello.rbと、viewsフォルダに分ける。

viewsフォルダの中には
 layout.haml
 index.haml
 hello.haml

それぞれ以下のように書いてやればいい。

hello.rb
# -*- coding: utf-8 -*-
require 'rubygems'
require 'sinatra'
require 'haml'
helpers do
include Rack::Utils; alias_method :h, :escape_html
end
get '/' do
haml :index
end
post '/hello' do
haml :hello
end
view raw hello.rb hosted with ❤ by GitHub

views/layout.haml
%html
%body
%h1 Hello World
= yield
view raw layout.haml hosted with ❤ by GitHub

views/index.haml
%p あなたの名前は?
%form{:action=>"/hello", :method=>"POST"}
%input{:type=>"text", :name=>"name"}
%input{:type=>"submit", :value=>"送信"}
view raw index.haml hosted with ❤ by GitHub

views/hello.haml
%p== こんにちは、#{h params[:name]}さん!
%a{:href=> "/"} 戻る
view raw hello.haml hosted with ❤ by GitHub


前回のhello_haml.rbを含む全体をまとめたものとをgithubに上げておいた。
https://github.com/zakuni/hellohaml

Sinatra,erbのHello WorldをHamlを使って書き直す

Slimというよさげなものが出てきて、是非とも流行ってほしいところですが、Sinatraに搭載されるのは次のリリースかららしいですし、僕はまずHamlをSinatraで使うのも覚束ないので、練習がてらに、

ここ↓に載ってるSinatraとerbを使ってのHello Worldのerb部分をHamlで書き直してみた。
http://gihyo.jp/dev/serial/01/ruby/0009?page=2

これが元のコード
require 'rubygems'
require 'sinatra'
helpers do
include Rack::Utils; alias_method :h, :escape_html
end
template :layout do
"<html><body><h1>Hello World</h1><%= yield %></body></html>"
end
get '/' do
erb %{
<p>あなたの名前は?</p>
<form action='/hello' method='POST'>
<input type='text' name='name'>
<input type='submit' value='送信'>
</form>
}
end
post '/hello' do
erb %{
<p>こんにちは,<%= h params[:name] %>さん!</p>
<a href='/'>戻る</a>
}
end
view raw hello_erb.rb hosted with ❤ by GitHub


そしてこれがHamlを使って書き直したもの。
# -*- coding: utf-8 -*-
require 'rubygems'
require 'sinatra'
require 'haml'
helpers do
include Rack::Utils; alias_method :h, :escape_html
end
template :layout do "
%html
%body
%h1 Hello World
=yield
"
end
get '/' do
haml '
%p あなたの名前は?
%form{:action=>"/hello", :method=>"POST"}
%input{:type=>"text", :name=>"name"}
%input{:type=>"submit", :value=>"送信"}
'
end
post '/hello' do
haml '
%p== こんにちは、#{h params[:name]}さん!
%a{:href=> "/"} 戻る
'
end
view raw hello_haml.rb hosted with ❤ by GitHub

「template :layout」には、htmlタグとかみたいな、各ページに共通する、まさにテンプレ部分を書くらしい。
ページによって無効にしたいときは、「haml :layout => false」してやればいいようだ。
ちなみに各タグに¥nとかの改行コードをつけてやれば、erbみたいに1行で書くこともできるけど、やってみたら気持ち悪い&見辛かった、のでこういう風にした。

インデントは全体的にちょっと気持ち悪いけど、Hamlはインデントに意味を持たせてるから下手にいじるとエラーが出ちゃう。
SinatraでHamlを使うときは、きちんと別ファイルを作ってやるとかしたほうがよさげなのかな。

追記:
別ファイルに作ってやった
http://zakuni.blogspot.com/2010/12/sinatrahaml.html

2010年11月25日木曜日

[Mac]rb-appscriptでカーソルキーを叩く

app('System Events').keystroke('k')

とかやるとキーボードのkを叩けるが、カーソルキーはちょっと特殊で

keystroke(28.chr)  # 左
keystroke(29.chr)  # 右
keystroke(30.chr)  # 上
keystroke(31.chr)  # 下

とやってやればいい。

2010年11月4日木曜日

Objective-Cの文法とMacRubyでの書き方(続き)

続き

Cocoaに、NSMutableStringというクラスがある。
リファレンスを見ると、

inherits from NSString : NSObject

などと書かれているが、これはNSStringを継承しているということなので、NSStringのインスタンス変数やメソッドは全て使えるということ。

なので、NSStringのstringWithString:メソッドも使える。
書き方は、こう

NSMutableString* boku = [NSMutableString stringWithString:@"Doraemon"];

MacRubyで書くとしたら

boku = NSMtableString.stringWithString "Doraemon"

となる。

NSStringで作ったインスタンスの文字列は変更ができない。NSMutableStringのインスタンスでならできる。
で、文字列を後ろに追加するメソッドとかもある。

- (void)appendString:(NSString*)string

これをObjective-Cで使ってさっきのインスタンスに文字列を追加すると

[boku appendString:@"desu"];

MacRubyでは

boku.appendString "desu"

となる。


あとは、MacRubyのチュートリアルにも載っているNSWindowのinitWithContentRect:styleMask:backing:defer:メソッド

リファレンスで見ると

- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)windowStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)deferCreation

とかなってて一見意味不明だが、これも引数とかが増えただけで基本的に同じ。

- (返り値型)メソッド名:(引数型)引数名 ラベル:(引数型)引数名: ラベル(引数型)引数名: ラベル(引数型)引数名

コロンの数と引数の数が同じになることを覚えておくと多少わかりやすい。

Objective-Cで使うときは

NSWindow *window = [[NSWindow alloc] initWithContentRect:frame
     styleMask:NSBorderlessWindowMask
     backing:NSBackingStoreBuffered
     defer:false];

MacRubyで使うときは

window = NSWindow.alloc.initWithContentRect frame,
     styleMask:NSBorderlessWindowMask,
     backing:NSBackingStoreBuffered,
     defer:false

とかになる。改行してる部分を半角スペースにして一行で書いても同じはず。

Objective-Cの文法とMacRubyでの書き方

リファレンスの見方とかよくわかってなかったので自分用まとめ。間違ってるとこなどあれば教えてください。

Cocoaには、NSStringというクラスがあり、NSStringには、文字列を作成するstringWithString:というメソッドがある。
リファレンスを見ると

+ (id)stringWithString:(NSString *)aString

と書かれているが、これは

+ (返り値型)メソッド名:(引数型)引数

ということ。
最初の「+」は、クラスメソッドであることを示し、「-」になっているものは、インスタンスメソッドであることを示す。

これを実際に使って、obakeという変数に"Qtaro"という文字列を入れるには

NSString* obake;
obake = [NSString stringWithString:@"Qtaro"];

とか書く。

NSString* obake; ってのは、int i; みたいなものでNSStringクラスのインスタンスのための変数を確保するという、まあとにかくObjective-Cではそう書くものだと思っていればいいもの。「*」が必要。

obake = [NSString stringWithString:@"Qtaro"]; 

の部分が、Objective-C的なメソッドの呼び出し方で、

返り値 = [クラス名 メソッド名:引数]; 

になってる。インスタンスメソッドの場合は [インスタンス名 メソッド名:引数] になる。

上は二行で書いたけど、

NSString* obake = [NSString stringWithString:@"Qtaro"];

って一行で書くほうがたぶん普通なんでしょう。

で、これをMacRuby的文法で書こうと思ったら、

obake = NSString.stringWithString "Qtaro"

ってなる。

長いので続く

2010年10月31日日曜日

MacRubyでGUIつきでググる

検索結果のURLを開いてるだけ。


# -*- coding: utf-8 -*-
framework 'Cocoa'
framework 'WebKit'
application = NSApplication.sharedApplication
# create the window
width = 800.0
height = 600.0
frame = [0.0, 0.0, width, height]
mask = NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask
window = NSWindow.alloc.initWithContentRect(frame,
styleMask:mask,
backing:NSBackingStoreBuffered,
defer:false)
# assign a content view instance
content_view = NSView.alloc.initWithFrame(frame)
window.contentView = content_view
# create a web view positioned in the top left quarter of the super view
web_view_frame = [0.0, 0.0, width, height] # [位置,位置,長さ,長さ] (開始位置は左下)
web_view = WebView.alloc.initWithFrame(web_view_frame, frameName: "Web Frame", groupName: nil)
request = NSURLRequest.requestWithURL(NSURL.URLWithString("http://www.google.co.jp/search?q=zakuni"))
web_view.mainFrame.loadRequest(request)
content_view.addSubview(web_view)
# center the window
window.center
# show the window
window.display
window.makeKeyAndOrderFront(nil)
window.orderFrontRegardless
application.run

2010年10月21日木曜日

sshでエラーが出たけどなんとかなった

 sshでログインしようとしたらこんなんが出た。(若干編集してあります)

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
**************.
Please contact your system administrator.
Add correct host key in /Users/***/.ssh/known_hosts to get rid of this message.
Offending key in /Users/***/.ssh/known_hosts:3
RSA host key for ***.com has changed and you have requested strict checking.
Host key verification failed.

つまりはRSA host keyってのが変わったか何かしたから、直すなりなんなりしろってことらしい。
cyberduck使ったら普通に入れたし、頭にsudo付けて再度ログインしてもいけたけど、それじゃ解決してないし。
ググったら、known_hostsの該当部分を消してやり直したら解決できたという話が。

というわけでやってみると、以下のメッセージ


The authenticity of host '******.com (***.**.**.**)' can't be established.
RSA key fingerprint is ******************.
Are you sure you want to continue connecting (yes/no)? 

yesして、出来た。

なんか初歩の初歩っぽくて恥ずかしいけど気にしない。

2010年10月15日金曜日

rvmでインストールしたRubyをアップデート

なんかググッてもあんまり出てこないので。

rvm upgradeというコマンドを使えばできるみたい。

例えば既にインストールしてあるruby-1.8を1.9にしたいときは

rvm upgrade ruby-1.9 ruby-1.8

みたいにしてやればできる。
gemも引き継がれるので(確か引き継ぐかどうかも選択できる)、gemsetをexportしたりとかする必要もない。

もとのやつ(上の例だとruby-1.8)を消すか残すかも選択できるっぽいので、gemそのままでruby1.9をインストールしたいときとかも使えるのかも。

rvm install ruby-headとかでインストールしたものをアップデートするにはどうするんだろう。

2010年10月14日木曜日

rb-appscriptでRubyからAppleScriptを使う

参照: http://appscript.sourceforge.net/

まずはrb-appscriptというgemをインストール

sudo gem install rb-appscript

で、実際使うときは

require 'rubygems'
require 'appscript'
include Appscript 

require 'rb-appscript'じゃないのね。
include Appscriptはどうも本来必要ないっぽいのだけど、僕の環境では書いてないとエラーが出た。

あとはAppleScriptのコードをRubyな感じで書くだけ

例として、Firefoxを起動してカーソルキーの下を一回押すには

app('Firefox,app').activate
app('System Events').keystroke(31.chr) 

で、できるはず。

から、各アプリケーションが持ってるActionScriptを出力できるASDictionaryと、AppleScriptのコードをRubyとかPythonとかの文法に翻訳してくれるASTranlateがダウンロードできる。

2010年9月17日金曜日

TokyoCabinetをインストール

インストールばっかりしてますが。

http://fallabs.com/tokyocabinet/

ここから落としてきたtokyocabinet-1.4.46.tar.gzを解凍し

cd tokyocabinet-1.4.46
./configure
make
sudo make install

で、Rubyで使いたいので

gem install tokyocabinet

おしまい。

2010年9月15日水曜日

zeromqをインストール

ØMQとかいうカッコイイ名前のものが、「いいよ、すごいよ、便利だよ」とshokaiさんに教えてもらったので入れた。


http://www.zeromq.org/


のダウンロードページから zeromq-2.0.9.tar.gz を落としてきて解凍


cd zeromq-2.0.9
 ./configure
make
sudo make install

インストールされた。


あとrubyはgemで

gem install zmq

で、インストールできた。

2010年9月9日木曜日

zshを使う

Terminalで使うログインシェルをzshに変更しました。
環境設定 → 起動 → 開くシェル でコマンドのほうにして、パスを /bin/zsh にする
もしくは
sudo dscl . -create /Users/ユーザ名 UserShell /bin/zsh
というコマンドを実行してTerminalを起動すればシェルがzshになります。


続いて若干の設定。

.zshrcに
RPROMPT="[%/]"
を記述すると、右にカレントディレクトリのパスが表示されます。

起動しなおすたびにコマンド履歴がリセットされているみたいだったので
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt hist_ignore_dups
setopt share_history
を追加したら記憶されるようになりました。
ついでに
autoload history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
bindkey "^P" history-beginning-search-backward-end
bindkey "^N" history-beginning-search-forward-end
として、履歴が複数行のときにCtrl nと Ctrl pで履歴の移動を、矢印の上下でコマンドの行の移動をできるように。

あとは、なんか強力な補完機能らしいので以下も記述しておきました。
autoload -U compinit
compinit

2010年9月8日水曜日

RVMでJRubyをインストール

http://d.hatena.ne.jp/shokai/20100629/1277794269
↑を参考にJRubyをインストールしようとしていたのですが、RVMというものに興味がわいたのでそっちでやってみました。

RVMをgemでインストールして

$ sudo gem install rvm 

これだけじゃ駄目らしく、次のコマンドも実行。

$ rvm-install 

そして、.zshrcや.bashrcに以下を記述。

if [[ -s $HOME/.rvm/scripts/rvm ]] ; then source $HOME/.rvm/scripts/rvm ; fi

これでRVMが使えるようになるみたいです。

そしてJRubyをインストール。
bashだかzshだかでシェルを開きなおして

$ rvm install jruby

これでインストールされるので、終わったら

$ rvm use jruby 1.5.2 

とやってやればjrubyが使えるようです。

Snow Leopardにwgetをインストール

wgetって今までにも使ったことあるような気がしていたのですが、どうやら気のせいだったらしいです。

MacPortsを使って入れたので

$ sudo port install wget

これだけです。

2010年8月3日火曜日

このブログについて

これまでヒョウタンツギによろしくに書いてきた開発関連のエントリーを、これからはここで書いていきます。
過去のエントリーも順次移行する予定です。