てきとう

ワーワーゆうとります

macでcoffeeScriptをはじめるよー

前提

  • OSX 10.7.4
  • git導入済


インストールするよー

  • nodeを導入。

brew使わないでいくよー(参考:How to Install Node.js)

$ git clone git://github.com/ry/node.git
$ cd node
$ ./configure
$ make
$ sudo make install

入ったようなのでバージョン確認だよー

$ node -v
v0.5.11-pre
  • npm導入

(参考:Mac OS X Lionにnpm(Node Package Manager)をインストールする

curl https://npmjs.org/install.sh | sudo sh

入ったようなのでバージョン確認だよー

$ npm -v
1.0.106
  • coffee script導入

(参考:Quick CoffeeScript Install

sudo npm -g install coffee-script

入ったようなのでバージョン確認だよー

$ coffee -v
CoffeeScript version 1.3.3

インストール時にうっかりsudo入れずにエラー出たよー。


Hello Worldだよー
ファイルを作ってコンパイルしてみるよー

$ vim test.coffee
//中身はこんな感じだよー
hello = ->
    console.log("Hello World")
hello()

コンパイルしてみるよー

$ coffee -c test.coffee

lsしてみると「test.js」ができていることがわかります。中身はこんなだよー

// Generated by CoffeeScript 1.3.3
(function() {
  var hello;

  hello = function() {
    return console.log("Hello World");
  };

  hello();

}).call(this);

ひとまずこんな感じだよー

php複数バージョン地獄

PHPは以下のバージョンが入っています。

  • 4.9
  • 5.1
  • 5.2
  • 5.3


普段使いのPHPは5.2

# php -v
version 5.2.11

mysql_pdoを使いたいんだけど、入ってなかったのでリコンパイルでもしよう。
PHP5.2はソースをwgetしてコンパイルしたものだったはずなので
今までwgetしてきたファイルは/usr/local/srcにあるから、確認だ。

# ls /usr/local/src
php-4.4.9 php-5.3.5

あれ?


yumかな?

# yum list installed | grep php
php.i386                              5.1.6-27.el5_5.3                 installed
php-cli.i386                          5.1.6-27.el5_5.3                 installed
php-common.i386                       5.1.6-27.el5_5.3                 installed
php-ldap.i386                         5.1.6-27.el5_5.3                 installed

あれ??


どこいったの…?(´・_・`)


しょうがないのでPHPの5.2.11をwgetしてきて解凍してコンパイルしてみましたら、問題なくできました。pdoが使えるよ。やったね。
それにしてもどこに行ったんでしょう。圧縮ファイルと間違えて消したのかなー。いやだなーこわいなー。

latin1のDBからdumpしたデータをutf8のDBに移行するよー

  • 移行元 DB:hoge
mysql> show variables like 'collation%';
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci | 
| collation_database   | latin1_swedish_ci | 
| collation_server     | latin1_swedish_ci | 
+----------------------+-------------------+
mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     | 
| character_set_connection | latin1                     | 
| character_set_database   | latin1                     | 
| character_set_filesystem | binary                     | 
| character_set_results    | latin1                     | 
| character_set_server     | latin1                     | 
| character_set_system     | utf8                       | 
| character_sets_dir       | /usr/mysql/charsets/       | 
+--------------------------+----------------------------+

残念ながらdefaultがlatin1ですが、DB自体はutf8で作っているのでuse hogeした後見ると

mysql> show variables like 'collation%';
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci | 
| collation_database   | utf8_general_ci   | 
| collation_server     | latin1_swedish_ci | 
+----------------------+-------------------+
mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     | 
| character_set_connection | latin1                     | 
| character_set_database   | utf8                       | 
| character_set_filesystem | binary                     | 
| character_set_results    | latin1                     | 
| character_set_server     | latin1                     | 
| character_set_system     | utf8                       | 
| character_sets_dir       | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+

となっています。

  • 以降先 DB:hoge
mysql> show variables like 'collation%';
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci | 
| collation_database   | utf8_general_ci | 
| collation_server     | utf8_general_ci | 
+----------------------+-----------------+
3 rows in set (0.00 sec)

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       | 
| character_set_connection | utf8                       | 
| character_set_database   | utf8                       | 
| character_set_filesystem | binary                     | 
| character_set_results    | utf8                       | 
| character_set_server     | utf8                       | 
| character_set_system     | utf8                       | 
| character_sets_dir       | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+

根っからのUTF8仕様。


というわけでまずdefault charsetをlatin1に指定してdump

mysqldump -u username -p hoge --default-character-set=latin1 > backup.sql


dumpしたデータをlatin1対応のエディタ(サクラエディタにしました)で開いて、SET NAMES追加

-- MySQL dump 10.11
--
-- Host: localhost    Database: hoge
-- ------------------------------------------------------
# ↑このメッセージがあるあたりに追加
SET NAMES utf8;


保存して、リストア

mysql -u username -p hoge < backup.sql


元々latin1の設定になってるmysqlにutf8のDBを作るとdumpでcharset指定してやらないとうまくいかないんですね。
無事に移行できました。

JINS PCを半年以上使った感想だよー。

JINS PC これな。


昨年から度なしのやつを使い続けていて、最近度ありとかクリアタイプとか発売になったみたいで
極めつけに「JINS PC for HACKERS」なんていうのも出たそうで。評判いいんですね。
色々な人から使い心地をきかれるので、もう色んな人がレビュー書いてるけど自分なりの評価というか感想を書いておきます。

まずは普段の自分について

  • ノーメガネ。しかしメガネへのあこがれはあり、高校3年間ダテメガネで過ごした経験あり。
  • 視力は両目2.0
  • 仕事で毎日PCを使用。移動中はiPad青空文庫読んだり携帯もスマホになったりとなんだかんだ毎日ブルーライト浴び放題。
  • 肩こり、頭痛(緊張性)持ちで通院

そんな感じでしたが、JINS PCの発売を聞いてすぐさま購入。通販で買ったので、発売日に届きました。
どうでもいいけどこんなに視力いいのにJINSでメガネ買うの3本目でした(オール度なし。笑福亭笑瓶っぽい。)

よかった点1 目が快適

これまでは、疲れ目・かすみ目・目の乾燥などがおきることがあって、目薬は手放せない状態。
たまに訪れるデスマーチ時なんかムスカみたいになりながら目薬さしてレッドブル飲んで大変でした。
目薬の使用法に「3ヶ月以内に使いきってください」と書いてありますが、3ヶ月もたないくらい使っていました。
しかし、JINS PC導入後は症状が軽減。目薬ささない日もあります。今度は使用期限に使い切れない。
とは言っても、PCや携帯でずっと細かい字を見てるのは変わりないので、疲れるっちゃ疲れます。
でも、かなり軽減したなーと思います。

よかった点2 軽い

エアフレームというフレームらしく、非常に軽いです。
普段メガネをかけなれてなくても邪魔じゃないんじゃないでしょうか。
うっかり机に突っ伏した時なんかに「メガネって邪魔だな」って思う程度です。

よくない点1 黄色い

レンズがなんともうっすら黄色いです。
子供の頃、母が子供部屋のテレビ(余談ですがうちのテレビはツインファミコンとおそろいのテレビでした)に
電磁波か何かを防止するうすいグレーのシートを貼ってくれていたんですが、なんとなくそれを思い出します。
かけたまま外に出ようものなら、90年代後半に流行ったカラーサングラスの様相を呈します。
デザイン確認の時なんかはメガネ外して見なきゃいけないので、デザイン本業の人だとどうかなぁと思っていましたが
この点に関してはクリアレンズ(効果はちょっと落ちるらしい)が出たそうなので解消するんじゃないでしょうか。

よくない点 フレームが大きい

顔の幅があまりないので、フレームが微妙に大きいです。
支障があるほどではないし、PC作業中くらいしか掛けないからいいか、と思っています。
これもいろんなフレーム選べるようになったみたいなんで、もし新しく買うならお店でフィッティングして買うつもりです。

変わらないこともある

  • 肩こり・腰痛の軽減が期待できる?

肩こりは軽減していません。
しかし、これに関しては、オーダーメイド枕まで作って半年に一回メンテしてるのによくならないんで
完全に姿勢が悪いせいだと思います。わかってはいるものの姿勢なんてなかなか変えられませんね。

  • 不眠・寝付きの悪さの改善が期待できる?

寝付きの悪さ・眠りの浅さに関しても変わりません。これも要因は別にある気がします。

  • モテる?

モテません。



という訳でこれが八ヶ月くらい使った感想です。たまにメガネ忘れて1日作業すると夕方あたりから画面のギラギラ感が
結構つらくなってきて「そうそうこれこれ」なんて使っていない頃の気持ちを思い出したりします。
PC作業が毎日目にきて辛い人は、試してみる価値あるんじゃないですかね。
なんかもっといいブルーライト対策メガネもあるみたいだけど、今のところこれでいいやって感じです。
(今のJINS PCが壊れでもしたら他のメーカーを視野にいれて考えますが。)
もし自分のルックスが吉川晃司とか哀川翔みたいな感じなら「JINS PC for HACKERS」買おうかなって気になるんですけどねー。
あと多分新庄も似合うと思う。

jobeet7日目メモ

突然だけど7日目 
参考:Practical symfony 7日目 カテゴリページで遊ぶ
symfony始めたばかりなので、チュートリアルのjobeetを進めています。今のところ無事に進んでたんだけど7日目で「あれー?」ってなったのでメモ。

  • 求人の category モジュールの作成

この slug カラムは Doctrine の Sluggable ビヘイビアによって考慮されます。JobeetCategory モデルのビヘイビアを有効にすればすべてが考慮されます。

ということで言われた通りやる。

    • config/doctrine/schema.yml
JobeetCategory:
  actAs:
    Timestampable: ~
    Sluggable:
      fields: [name]
  columns:
    name:
      type: string(255)
      notnull:  true

このactAsというのがdoctrineのビヘイビアだそうです。なるほどー。ymlやdoctrineについて勉強したほうがよさそう。
参考: The symfony and Doctrine book 4章 - スキーマファイル

slug は本当のカラムなので、JobeetCategory から getSlug() メソッドを削除する必要があります。

というわけでjobeetCategoryからgetSlugメソッドを削除

    • jobeet/lib/model/doctrine/JobeetCategory.class.php
class JobeetCategory extends BaseJobeetCategory
{
    (略)
	//こっから
	public function getSlug()
	{
	  return Jobeet::slugify($this->getName());
	}
	//ここまで削除
    (略)
}

データベースの更新

$ php symfony doctrine:build --all --and-load --no-confirmation

レコードを保存する際に slug カラムの設定は自動的に考慮されます。name フィールドの値を使ってスラッグはビルドされオブジェクトに設定されます。

との事なので期待して既存のDBを見た

mysql> select * from jobeet_category\G
*************************** 1. row ***************************
        id: 1
      name: Design
created_at: 2012-06-22 14:12:33
updated_at: 2012-06-22 14:12:33
      slug: NULL

slugフィールドは追加されたけど、NULLだ。なぜ。and-loadしたのに?
さっき走らせたbuildのオプションは

all すべてをビルドしてDBをリセット
and-load fixturesデータを追加
no-confirmation DBの削除を強制しない

という事で、もしかしたら一回読んでるfixturesのデータはスルーされてるのかな?と思ってfixturesの場所を指定してみる。

$ php symfony doctrine:build --all --and-load='data/fixtures/' --no-confirmation

そしたら

mysql> select * from jobeet_category\G
*************************** 1. row ***************************
        id: 1
      name: Design
created_at: 2012-06-22 16:36:01
updated_at: 2012-06-22 16:36:01
      slug: design

無事に入った。のこりの課題も見ながらすすめたら無事カテゴリページのページャーが現れました。
次は8日目だー。

Mac内の仮想環境作成→herokuアプリ作成してdjangoプロジェクトを動かすまでの準備だよー

前提

  • MacPorts導入済みのMac OSX Lion
  • python、postgres導入済み
  • 仮想環境を作成する
  • herokuアプリとして動かす


heroku toolbeltのインストール


Heroku toolbeltを公式からDLしておく。 https://toolbelt.herokuapp.com/osx
したっけコンソールからherokuが使えるようになる


仮想環境を作成する


仮想環境を作成するためのアレを導入

    • py27-pip
    • py27-virtualenv

この2つ。入ったら仮想環境つくります。

$ mkvirtualenv --distribute -p [使いたいpythonのパス] [アプリ名。ここではhogeとする]

作成したら自動的にworkonされましたが、一応

#仮想環境を動かす時
$ workon hoge
#仮想環境を終了する時
(hoge)$ deactivate
#仮想環境を削除する時
$ rmvirtualenv hoge

私はローカルにpython2.6.8と2.7.3が入っていて、普段「python」でパス通っているのが2.6.8です。
しかし今回は2.7.3(普段は「python2.7」としてパス通している)で作業したかったのでパス指定しました。
pythonパスを指定した場合は、仮想環境をworkonしている時とそうじゃない時のpythonを動かしてバージョン見てみると仮想環境のありがたさがわかります。

ちなみに作成済みのvirtualenv環境で使いたいpythonのパスを間違えた場合、.virtualenv/hoge/.Pythonに貼られているシンボリックリンクを変更する事で解決するかと思いきやそんな事なかったです。
一回rmvirtualenvして作成し直します。rmvirtualenvした時に、.virtualenvs以下のvirtualenv名(この場合hoge)ディレクトリが権限の関係で消せなかったりする事があるので(sudo rmvirtualenvができなかった)rmvirtualenv後に.virtualenvs/hogeのディレクトリごと消しておくといいです
それをしないで同じ名前でvirtualenvを作り直すと過去の.virtualenvs/hoge内にある残留ファイルを引き継いじゃってエラーになります。
気付かずにvirtuaenv作り直して、python自体は動くけどmanage.pyでrunserverしたらfunctools.pyあたり無限ループが起きて、
RuntimeError: maximum recursion depth exceededみたいな悲しい事になって結構ハマりました。
一回pipでdjangoをアンインストールして入れ直すといいよ、みたいな記事もあったのですが、それでも直らなくて上記の手順踏んだらちゃんと動きました。よかったよかった。


Djangoインストール


Djangoインストールして、プロジェクト作成して、ローカルで動かしてみる

(hoge)$ pip install Django psycopg2
(hoge)$ django-admin.py startproject moge .
(hoge)$ python manage.py runserver

するとこんな感じで動いてくれると思います。

Validating models...

0 errors found
Django version 1.4, using settings 'moge.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

そしたらheroku側に必要なモジュール情報を伝えるファイルrequirements.txtを作成しておきます

(hoge)$ pip freeze > requirements.txt
<<
中身確認
>||
(hoge)$ cat requirements.txt 
Django==1.4
distribute==0.6.24
dj-database-url==0.2.1
psycopg2==2.4.5
wsgiref==0.1.2


gitプロジェクト作成してherokuリポジトリ追加

まずはgitでinit

(hoge)$ git init.
(hoge)$ git add .
(hoge)$ git commit -m "app add"

herokuにアプリを追加

(hoge)$ heroku create --stac cedar

Creating xxx-xxxx-xxxx... done, stack is cedar
http://xxx-xxxx-xxxx.herokuapp.com/ | git@heroku.com:xxx-xxxx-xxxx.git
Git remote heroku added

こんな感じになる。多分ここでgitに追加するremoteの名前も指定できるんだけど今回やりませんでした。
テストと本番で2つherokuのremote追加したい場合とか指定するといいんじゃないかな。


gitをpushする

(hoge)$ git push heroku master

無事にpushが完了したら

(hoge)$ heroku open

すると先ほどherokuコンソールから追加されたhttp://xxx-xxxx-xxxx.herokuapp.com/で無事djangoが動いている姿が確認できると思います。

仮想環境内にpython-mysqlを入れる

前提

  • django+mysqlで動かしたかったんだけどMySQLdbなんてモジュールないです…って言われたので仮想環境に入れる


作業

  • mysql_configの場所を確認しておく
$ sudo find / -name 'mysql_config'

/opt/local/lib/mysql5/bin/mysql_config

これだな。この探し方でいいの?いーんです。

  • 仮想環境にいるMySQL-Python/site.cfgを書き換える
$ sudo vim .virtualenvs/hoge/build/MySQL-Python/site.cfg

このファイルの中でmysql_configがコメントアウトされていると思うので、さっき調べた場所を書き加えておく。

  • pipでインストーーーール
$ sudo pip install mysql-python
  • いるか確認
$ workon hoge
(hoge)$ python
Python 2.6.8 (unknown, Apr 19 2012, 18:00:24) 
[GCC 4.2.1 Compatible Apple Clang 3.0 (tags/Apple/clang-211.12)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
>>> 

完了