Drupal7でJQueryを使おうとしたら、$ is not a functionとエラーが出て使えない

他のライブラリとバッティングするため、$の記法が使えないらしい。
Managing JavaScript in Drupal 7 | Drupal 7 guide on Drupal.org

やり方としては、

(function ($) {

})(jQuery);

で従来の$で始まるJQueryのソースを囲めばよい。

(function ($) {
  $(document).ready(function() {
    //これまでの処理
  });

})(jQuery);

上記のように書くと、Drupal7でもこれまで使っていたJQueryを使用することができる。

Drupal 7でformを使用する (Drupal 6からの相違点)

Drupal7の環境でDrupal6で作ったフォームを使用すると、うまく行かない点がいくつか出てくる。


1. db_result()が使えない
関数そのものが無くなっているので、db_result()を使用しているところはすべて書き換え

2. クエリのプレースホルダーの書き方が違う

db_query( "SELECT * FROM {users} WHERE name = :name", array(':name' => $form_values['username']) );

のように、コロンを使う。PDOのスタイルに合わせてあるらしい

3. Insertの方法が違う

$vid = db_insert('<テーブル名>')->fields( array( 
    '<フィールド名>' => <値>,
  ))->execute();

のように行う。従って、

$vid = db_insert('my_new_table')->fields( array( 
    'uid' => $uid,
    'extra_field' => $extra_value,
    'additional_field' => $additional_field,
  ))->execute();

のように行う。

ただし自前のモジュールでusersテーブルにuserを追加するには、

    $edit = array();
	$edit['name']   = $username;
	$edit['mail']   = $email;
	$edit['pass']   = $password;
	$edit['language'] = "ja";
	$edit['status'] = 1;
    
	$account = user_save(null, $edit);

のようにuser_save()を使用する。

IE9でhoverが効かない

Internet Explorer 9でHTMLを表示したら、:hover属性で指定したCSSが無視されている。

これはIE9がDoctypeから、HTMLの互換性(世代)を判断しているからだと思われる。
そのため、HTMLの先頭行でこのように宣言すれば、hoverを始めとする世代の新しいCSSディレクティブも理解してくれるようだ。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

モダンなブラウザなら、デフォルトでは最新のCSSに合わせておいてもらわないと困るのだが。

Drupalで一部が文字化け

Drupalを使ったサイトで文字化けが発生。しかしコンテンツ作成とかからページを作る時にはちゃんと日本語を受け付けている。

その場合、Mysqlのテーブルの文字コード、あるいはテーブルのフィールドの文字コードに問題がある。

show create table \G

*************************** 1. row ***************************
       Table: questionnaire
Create Table: CREATE TABLE `sample` (
  `sid` int(11) NOT NULL auto_increment,
  `uid` int(11) NOT NULL default '0',
  `q` text,
  `c` text character set latin1,
  PRIMARY KEY  (`sid`)
) ENGINE=MyISAM AUTO_INCREMENT=19935 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

この場合、テーブルのデフォルトの文字コードがlatin1に、またフィールド'q'、'c'の文字コードもlatin1になっている。そうすると、Drupal文字コードUTF8とバッティングするため入力した日本語がすべて???になったり、INSERTを発行した際に文字列でエラーになる。

自分で作成したカスタムテーブルやモジュールで発生しやすい。

alter table sample CHARSET=utf8;
alter table sample change c c text character set utf8;

で修正する。

Struts始めました

よその会社が作ったStrutsのシステムをメンテナンスすることになった。まったく初めてだったので、少しずつ学んだことを忘れないように書いていく。

  • StrutsのバージョンはManifestファイルに書いてある。
  • サーブレットは1つ、ActionServletだけ
  • .doで終わるURLがリクエストされたときだけActionServletが作動する(web.xmlで設定可能)
  • JSP内にコードを書かない
  • 新しいtldを使いたいときにはweb.xmlに記述する
  • 改行文字「\n」はfn:replaceでは使えない。

SEになるには

たまたま本屋で見かけたラノベのタイトルにふと目を奪われた。『なれる!SE―2週間でわかる?SE入門』って、なぜか女の子のイラストが描いてある。

なれる!SE 2週間でわかる?SE入門 (電撃文庫)

なれる!SE 2週間でわかる?SE入門 (電撃文庫)

どうせくだらない内容かと思ったが、念のためアマゾンで評判を確かめてみると何と星4つ半がついている。試しに購入してみると、これがなかなか面白い。

SEが何かをわからずに、半ば騙されてSEになった新人が無茶振りをこなしつつ成長する、という話だ。まあラノベなので、無駄に女の子が出てくるが、SEとかの業界に興味がある人にはぜひ読んでほしい内容だった。その仕事の守備範囲の広さ、押し付けられる(期待される)責任の範囲、業界自体が新しいためかまともな手順やトレーニングが皆無でいきなり仕事を振られること、など、ここに書かれていることに何一つ誇張はない。

自分はプログラマで、ITの職種の中でも特に女性比率が皆無の仕事だが(これまでに女性のプログラマには1人しか一緒に仕事したことがない)、ネットワークとかサポートエンジニア、総務、人事などにはそれなりの比率で女性がいたりすると思う。でもこの本に書かれているように徹夜とか泊り込みが続いたりするので、やはり体がもたないためか、圧倒的に少ないと思う。

なんにせよ、プログラマやSEなどを将来の職種として考えている人は、他の解説書よりもこの本を読めば、概ねそう遠くない実態がわかるはずだ。

この本には書かれていないが、プライベートを犠牲にする分、プログラマやSEは給料は高いと思う。しかし何割かの人は確実に精神を病んで人生をドロップアウトするので、ぜひ心して望んで欲しい。

コードの構成音当てゲーム「コード・スペル」

コードが何でできているか、あまり意識したことがないと思う。例えばCなら、ドミソを同時に弾くとCのコードになる。でもDmとかEmとか、ちょっとでもずれるとすぐわからなくなると思う。

シータミュージックトレーナの「コードスペル」というゲームは、やっていくうちにコードの中身を覚えていける。

実際繰り返していると、よく出てくるコードは覚えてくる。大体2こずつ上がっていくから、「G」だからまずG、それからHは無いからAに戻って、2つ目はB、で3つ目はDか?とか考え方が慣れてくる。
無料で登録して遊べるので、ぜひ試してほしい。お勧めです!
http://trainer.thetamusic.com/ja/content/chord-spells