あまり新しくないもの

新しさはそんなに求めず、自分のすきなことをやりたい人生だった

OSX marvericksでmysqlが起動しなくなった時のメモ

パーミッションと所有権がおかしいのが原因っぽかったので、

sudo chown -R _mysql /usr/local/var/mysql
sudo chmod -R o+rwx /usr/local/var/mysql

これで動いた。

それでも治らないなら my.cnfの設定見直す、mysqlそのものをインストールし直す。


システムがフリーズしたあととか、mysqldのプロセスが残りっぱで再起動できない時もあるみたいなので、そういうときは

ps -ef | grep mysql

してmysqldのPIDをしらべて、

kill -9 PID

してプロセスを殺した後に、

mysqld_safe

とかやってmysqldを再起動させればなんとかなる感じです。

適当にかいたJavaScriptがきもちわるい

適当にJavaScript書いてると、viewの操作とデータの操作とを同時にやりはじめちゃったりして、後から読んだ時にすごい気持ち悪くなる

DOMからいまの値とって、それをもとに次の値を決める、みたいな操作が結構多いからかもしれないので、それなりに意識して書かないとつらい。

なるべくMVCとかMVなんとかみたいなパターンを意識して書いてるけど、それが言語的にあってるのかがよくわからないのですごい人にそこらへんの考え方おしえてほしい。

Gruntを使った開発用テンプレートをGithub上に公開しました

自分用のテンプレートを運用しやすくする目的も兼ねて、普段使っているWebフロントエンドの開発用テンプレートをGitHub上に公開しました。

rtshaaaa/frontStart · GitHub


構成

テンプレートの構成は以下のとおり。

  • Grunt; タスク管理
  • Jade; HTML生成用テンプレートエンジン
  • Sass; css生成
  • Compass; Sassコンパイル補助
  • Bower; JavaScriptライブラリ管理
  • Karma; テスト用
  • mocha+expect+sinon; テスト
  • node-easymock; APIモック作成
使い方

gruntのデフォルトタスクを実行するとコンパイルが実行され、.tmpフォルダに展開、.tmpフォルダをベースディレクトリとしてnode serverがlocalhost:9000で立ち上がります。

また、grunt buildをするとproductionモードでコンパイルが実行され、distフォルダに圧縮などされたファイルが出力されます。

テストを実行するときは、testディレクトリにテストファイルを適当に入れた後、grunt testで実行します。

bowerでjsのライブラリをいれるときは、grunt biを実行するとbower.jsonの情報をもとにsrc内にライブラリファイルがコピーされます。


Readmeを用意したり微調整をしたりはこれからしていく予定。

何か有りましたらissueに投げるか、gitter.im(https://gitter.im/rtshaaaa/frontStart)も使えるのでそちらなどでどうぞ。

Jadeでconditional Commentがいつの間にかサポート外になっていた

Jadeをしばらくアップデートせずに使っていたので気づかなかったのですが、 どうやらconditional Commentがバージョン1.1.5からサポート対象外になっていたみたいです。

それ以前のバージョンでは

// if lt IE 9
  script('hogehoge.js')

という風に書くときちんとコンパイルされていたのですが、それ以降のバージョンではこれだと正しくコンパイルされずに謎のコメントが埋め込まれるだけ、という風になっていたみたいです。

ソースを見てみたら、生で書いてね、という感じで書いてあったのですが、さすがに毎度毎度生で書いていくのはしんどいので超簡単なmixinをとりあえず用意して運用することに。

mixin ltIE9
  <!--[if lte IE 9]>
  block
  <![endif]-->

mixin ltIE8
  <!--[if lte IE 8]>
  block
  <![endif]-->

これを適当に/mixin/_cComment.jadeとかで保存しておいて、

include /mixin/_cComment
doctype html
html(lang='ja')
  head
    meta(charset='utf-8')
    +ltIE9
      script(src='/js/lib/html5shiv.js')
    title hoge
  body
    hogehoge

とかいう感じでつかえばとりあえずはいいかなー。

もうちょっと改善できそうなので時間あいたときにでももう少し調整するかもしれません。


たぶん古いIEなんでダサいぜ、みたいな感じでサポート切ったんでしょうね。


[2014/02/06] コンディショナルコメントの表記がちょっと間違ってたので修正しました。

JavaScript書いてた人がRubyに入門する その2

どこから入門しようか

入門するにあたって、まずは雰囲気をしってからコードを書いていったほうがいいなと思いました。

そして悩んだすえ、前々から気になっていたドットインストールを使ってみることに。

ドットインストール - 3分動画でマスターする初心者向けプログラミング学習サイト

ドットインストールは国内で伸びてきてるプログラミング入門者むけの勉強サイトですね。国産なので言語の壁を気にせずに使えるのはとても魅力的です。

RubyJavaScriptとの違い

とりあえずドットインストールでRuby入門全32回をパパっと終わらせてみての感想。

JavaScriptはなんというか、すごい適当な言語だったんだなあと再認識。

破壊的かどうかなどの挙動の性質をきちんと記号として見えるようにメソッドが定義されているのはとてもわかりやすいなと。とうかJSだと破壊的かどうかってあんま意識してなかったし大体非破壊的で時々例外的に破壊的なメソッドが現れてる、というかんじでわかりにくいところは多かった。

JavaScriptでさんざ苦しめられたthis句の扱い。RubyのClassだとちゃんとインスタンス変数が@hogeという形で呼び出せるので、これは楽そう。JSはなぜthisが変わり続けるのか。つらい。(そもそもクラスという概念がJSにはないのだけれど)

文法の違いなど

文法は細かい違いはいくつかあれど、感覚的には似ている部分がおおいし、エディタの補完とかもあるので特に気にならなそうでした。Rubyはシンプルで直感的な感じ。

javascriptだと'"はあまり区別しないし、HTML側で"をよく使うからという理由で'を基本てきに使っていたけれど、Rubyになると変数をエスケープするかどうかできちんと使い分けるので基本的には"を使っていくみたい。でもくせで'を多用しそうなので、ここだけは注意したほうが良さそうだった。


とりあえずのとっかかりとして、ドットインストールは動画で勉強になるのでかなり良いなあと思いました。手を動かしながら勉強しようとするとブラウザのみで勉強が完結しないのはちょっと不満点でもあるけれど、基本的には雰囲気をつかむ程度の入門レベルだったので、それくらいでもいいのかな。

Rubyの雰囲気とかはなんとなく見えた気がするので、今後は実際に簡単なスクリプトを作りつつ勉強を進めていきます。