LionのCocoa EmacsでRictyフォントが使えるように設定

主に下記のリンク先を参考にした.

Cocoa Emacs on OSX LionでRictyフォントを使ってみた! - 空繰再繰 http://blog.nyarla.net/2011/10/28/1

% sudo brew install fontforge --use-gcc --without-python
...
% wget http://save.sys.t.u-tokyo.ac.jp/~yusa/fonts/ricty/Ricty-3.1.3.tar.gz
% tar xvzf Ricty-3.1.3.tar.gz
% cd Ricty
% wget http://levien.com/type/myfonts/Inconsolata.otf

Inconsolata http://levien.com/type/myfonts/inconsolata.html
のInconsolata.otfをダウンロードしている.

M+とIPAの合成フォント http://mix-mplus-ipa.sourceforge.jp/
のMigu 1Mをダウンロードし解凍して,RegularとBoldをRickyディレクトリに放り込む.

その後,
Rickyスクリプトをはしらせれば良い.

./ricty_generator.sh auto

...

Generate RictyDiscord-Regular.ttf.
Generate RictyDiscord-Bold.ttf.
Succeeded to generate Ricty!

その後,生成されたフォントをインストールし,emacsの設定ファイルを書く.

プログラミング用フォント Ricty http://save.sys.t.u-tokyo.ac.jp/~yusa/fonts/ricty.html

Rickyフォントカッコいい!!

githubのPost-Receive HookつかってWebページ管理するようにしてみた

Webページの構築にまだ慣れてない身といたしましては,gitでWebページのソース管理できると嬉しいですよね.
bitbucketやgithubで管理出来るとなお良いです.

githubではPost-Receive Hookという機能があるらしく,pushした時に自動的に指定したURLを叩いてくれる機能があるようです.

参考先ではrsyncを使っているようですが,うちは目的のディレクトリにgit cloneだけしてくれればよいので,簡単なスクリプト書いてみました.
と言ってもほとんどリンク先のスクリプトと同じですが...

Post-Receive Hookで叩かかれる側はsinatraを使っています.

here = File.dirname(__FILE__)
SYNC_SCRIPT = "#{here}/update_web_site.sh"

post '/update' do
   begin
     system(SYNC_SCRIPT)
     "ok."
   rescue
     "error."
   end
end

https://github.com/yuuhik/zitomeWeb

github PagesでWebページ公開してみても良かったのですが,サーバサイドでいろいろ書いて練習してみたいというのもありまして..


参考:Webサイトをgithubで管理してpush時に自動的に同期する方法 - 古橋貞之の日記 http://d.hatena.ne.jp/viver/20110402/p1

tmuxとかzshの設定でつまったところ

今メインで使っているのは,去年の夏に購入したMacBookAir(以下MBA)なのだが,
常にMBAを持ち歩くのもなかなか億劫になり,
研究室用のPCとしてMacBookProをもっと活用しようと考え,使い物となるように設定を始めた.

できる限り,MBAと設定を共有したいと考えており,DropBoxなどを利用して云々.
ディレクトリ構成を同じにしたり,MBAと同じにするためmacportをアンインストールし,homebrewをインストールするなどほげほげ..

homebrewのインストール
http://mxcl.github.com/homebrew/

そこで,微妙につまったのがshellの設定で,OSXだと,

chsh -s /usr/local/bin/zsh 

というようにbrewなどでインストールしたshellをデフォルトshellとして設定しようとする"non-standard shell"とか言われて弾かれる.

これは,"/etc/shells"のファイルにshellのパスを予め追加しておくことで解決できる.

"/etc/shells"

/bin/bash
/bin/csh
...

/usr/local/bin/zsh # <- new

Androidの開発環境の導入

  • 開発環境の概要
    • あと必要は無いがpleiadesで日本語化の方法も一応メモる

http://www.eclipse.org/downloads/

ここからダウンロード.
今回はEclipse IDE for Java EE Developersをダウンロードした.

解凍して,Macのアプリケーションフォルダに突っ込んでおけばおk.

http://developer.android.com/sdk/index.html

Mac OSX用のSDKをダウンロード.
解凍し,Eclipseの環境設定中のSDK Locationのパスを設定.

MBAにC#開発環境入れてみる

諸事情により,最近は.NETアプリケーションを作る必要に迫られることが多い.

しかし,私は数年前にVB6.0を授業ですこーしだけ触ったことがあるという程度にしかWindows上でのプログラミングをした経験がなく,また現在はMBAをメインで使っているため,好んでOSX以外のOSに触れることが無くなった.えろgのためにWindowsを起動する以外は...

MBASSDがもっとあれば,bootcampを使いWindowsをインストールし,完全なVS環境を用意したいのだが,不幸には残容量は30GBそこそこであり,Windowsをインストールする気にはなれない.

そのため少し前にWindows上でしか動かいないプログラミング開発環境を手に入れるために,ThinkPadを買った.

ThinkPadを買うのは初めてだったが,英字配列キーボードもあって非常に気に入っている.が,サブPCと言うことで多くの金をかけることを渋ってしまい,HDDを載っけてしまったため,気軽に持ち運び辛いし,常にMBAThinkPadの2台持ちで移動するとか重い.

結局MBA以外のPCはほとんど使っていない現状なのだが,最近はC#を書く必要があるのではないかと危機感を募らせており,OSXでもC#プログラミングの練習ができるようにとmono Developの導入を決めた.

monoのページは以下だ.
http://www.mono-project.com/Main_Page


このページからSDKとmono Developをインストールした.

そのままじゃ文字化けるので,
/〜/Mono.framework/Versions/Current/etc/pangoにpango.aliasesというファイルを作り"Lucida Grande" = "Hiragino Kaku Gothic Pro"と書きこむ




(時間があるときに続きを書く)

グリザイアの果実を買った

年末年始の開いた時間にふいにやった体験版がいたく気に入ったので,ほいほい買ってしまった.

一月はただでさえ忙しいのだが...

  • 追記

天音√,マキナ√,みちる√クリア.

  • 追記2

全√クリア

Webスクレイピングのやり方(Ruby編)

Webスクレイピングのプログラムを書く必要があったので,Rubyでそれを書く方法を調べてまとめる.

Rubyを採用したことに理由はなく,必要があればJavaでの方法も調べる.

Rubyを用いた場合,HTML/XMLのパースにNokogiriというライブラリが役に立つ( http://nokogiri.rubyforge.org/nokogiri/Nokogiri.html ).

使い方は以下のようにすれば,urlからHTMLテキストを取得し,Nokogiri::HTML::Document オブジェクトを得ることができる.

# -*- coding: utf-8 -*-
require 'rubygems'
require 'nokogiri'
require 'open-uri'

url = 'http://www.amazon.co.jp/registry/wishlist/32BLHXPJKX3XX/ref=cm_wl_rlist_go_o'

nokogiri = Nokogiri::HTML.parse(open(url))

Nokogiriの使い方は以下のリンク先に詳しく説明されている.
http://d.hatena.ne.jp/otn/20090509/p1

この例題はamazonの公開欲しい物リストのページから,商品名,商品url,作者,商品画像のurlの情報をスクレイピングして,JSONで出力する関数を実装する.

[
	{name: "商品名",
	 url: "URL",
	 author: "作者",
	 image_url: "商品画像url"
	},
	{name: "商品名",
	 url: "URL",
	 author: "作者",
	 image_url: "商品画像url"
	},
	{name: "商品名",
	 url: "URL",
	 author: "作者",
	 image_url: "商品画像url"
	}
]

WebスクレイピングにはXpathの知識が少なからず必要となるだろう,
XPathの書き方は以下のリンクから,
http://d.hatena.ne.jp/kenkitii/20101017/1287281466

あと,もう一つ問題となるのはamazon欲しい物リストのページの文字コードがshift-jisであることだ.
Nokogiriはutf-8以外のドキュメントに対し,上手く処理できないことがあるらしい.

いろいろやってみた結果以下のようなコードになった

require 'rubygems'
require 'nokogiri'
require 'open-uri'
require 'enumerator' # each_consを利用するため必要
require 'pp'

require 'kconv'

def main()
  # 私のAmazonの欲しいものリストのURL
  url = 'http://www.amazon.co.jp/registry/wishlist/32BLHXPJKX3XX/ref=cm_wl_rlist_go_o'  
  txt = NKF.nkf('-wxm0', open(url).read)

  nokogiri = Nokogiri::HTML(txt)
  tbls = nokogiri.xpath('//table[@class="wlrdZeroTable"]/tbody[@class="itemWrapper"]')
  # pp tbls
  
  titles = tbls.xpath("//span[@class='small productTitle']/strong/a")

  titles.each{|p|
    puts p.text
    puts "-------------------------"
  }  
end

main()

これで欲しいものリストのタイトルは取得可能だ.
同じ要領で他の情報も取得し,JSONを吐き出すなり,DBに放り込むなりすれば良い.

文字コード云々の話は面倒なので,このままrubyで書いていくことにしよう.Javaで調べ直すのとか面倒.