- 年末ですので
- 浅草
- Ajax + PHP + MySQL
- C言語のif文とかで範囲指定できる件について
- ジョギング(2)
- MySQLでTCP接続を許す設定
- ジョギング
- 手賀沼サイクリングロード
- Emacs上でCのソース内の#ifをハイライト
2008年12月 の記事一覧
年末ですので
まともに正月休みがあるのは何年ぶりだろ。実は今年も危なかったりしたのだが、他のグループが遅れているせいでうちのグループの仕事を進めることができず、年末年始は休みを奪取できたというだけの話なのだが。
要するに、休み明けから2月、3月にかけては例年と変わらず忙しいということだな。
まぁ、とりあえず、今今はゆっくりしてきます。きっとプログラミングしてるんだろうけど。
浅草
ここに内輪ネタ書いても面白くもなんともないので、いつも通り観光写真うpということで。
飲み会の場所はタイトル通り浅草。実は浅草に行ったのは初めてだったりする。乗り鉄魂を発揮し、敢えて北千住から東武伊勢崎線に乗ったりなんかして浅草に到着。あんまり長いこといると寒いだろうから、観光時間を短めに取るために到着は夕方。すでに日が暮れてきていて、哀愁が漂う隅田川沿いをぶらぶら散歩。
日が落ちて暗くなってきているにも関わらず、写真に撮ると結構明るくなってしまう。なので少し露出を暗めにして撮影。目で見た感じはもっと暗い感じだけど、このくらいの方がキレイかも。
Ajax + PHP + MySQL
前に書いたが、PHP+MySQLでDBアクセスして遊ぶ計画。随分まともなものができてきました。何だか、9月以降忙しくなってしまい、なかなか時間がとれずに少しずつ書いてきたけど、今月に入ってからは夜少しずつ書く癖がついてきたので、微妙に進み中。表示部分にAjaxを導入し、動的に結果を表示するようにしてたりする。
途中、Emacsのetagsによる補完機能に不満を覚えたりして(Classを使ったオブジェクト指向なプログラミングでの補完は空気を読んでくれない)NetBeans IDEを導入しちゃったりなんかもした。もはやパージョン管理しないとやってられない構成になってきたりもした(まぁ、svnなんて元から入ってるので問題ないが)。
で、作っている物は前に書いたとおり高校の陸上部の試合結果表示をするもの。年月を選択リストにして結果を絞り込んでいく方式。複数年を表示すると量が多くなるので、とりあえず、最高でも年間全部しか出さないようにしてみた。
デフォルトでは今年になっている年を変更すると、その年に試合のあった月を選択リストで表示し、そこから月を選択すると結果も絞り込まれるという動的なヤツ。言葉で書くと素晴らしく実感がない件について。
まぁ、ともかく、そんなものを作ってます。
が、公開するサーバーがない。そのうちどっかでレンタルするか。
今現在作ったのは表示部分だけなので、入力部分を作ることにする。実はこっちの方が重要だったりする。今でも試合結果表示はHTMLで用意されているわけだし、入力が楽になるような仕組みをうまく入れ込まないとあんまり嬉しくない。
というわけで、どんなんがいいのか考え中です。実装より考える時間の方が長くなるような気がしてる。
Ajaxはブラウザとエディタさえあれば遊べるのでお勧めです。みなさまどうぞお試しあれ。「ajax 入門」でググればきっと分かりやすいページが出てくるはず。
C言語のif文とかで範囲指定できる件について
とかってのは、昔やっちゃダメ(or できない)って見たような気がするんだが、今はできるんだな。知らんかった。if (0 < iNum < 10)
職場でこういうコードを書いてる人がいたのでびっくりした。ちなみに、先のやつは普通に数学と同じで
と等価になる。if ( (0 < iNum) && (iNum < 10) )
まぁ、職場では実際には間違って使われただけなんだけど。
2008/12/21追記:
コメントにあるように、コンパイラ依存のようです。gcc 4.0では通らない模様。とりあえず、書かない方がいいのは間違いない。みなさん、ちゃんと&&とかで複合条件にしましょう。
2008/12/24追記: 会社のgcc 3.4 on Cygwinでもダメだった。というか、普通そうなのか。あの組込みコンパイラが異常だということで。
ジョギング(2)
どのくらい走ったかを見るのには、Mapionのキョリ測を使ってるんだが、これに所要時間っつーのが載っている。で、ジョギング欄を見ると自分のペースより明らかに遅い。まぁ、確かに少し早めに走ってる(ちょっときつくなるくらい)けど、8km/hってどんだけ遅いんだよ、とつっこみたくなる。
大体だけど、自分のペースは10000を50分くらい(200を1分くらい)つーことは12km/hだな。高校の頃にジョギングしてたときと同じペースに落ち着いた。
で、走ってて思うこと。楽なペースってのは調子によって大きく変わること。まぁ当たり前か。今週はどうも体調が悪いらしい。ついでに、右膝の調子がすこぶる悪い。多めにアップして騙し騙し走ったけど、しばらく負荷の重い運動は避けた方が良さそうな感じ。
というのが、走ることによって分かる。走んなくても分かるだろ、って思うかもしれないけど、普段運動してるからこそ感じることなんだと思われる。
体調管理は大事ってことだ。
とりあえず、手が冷たすぎるので、そのうち手袋を買うことにしよう。
MySQLでTCP接続を許す設定
MySQLでは外部から接続して使うこともできるが、その設定方法がいつの間にか変わったっぽい。前はmy.cnfからskip-networkigをなくせばよかったのに、今は違うらしい。
/etc/mysql/とかにあるmy.cnfを開いて、bind-addressってのを探す。で、これをコメントアウトすれば完了。あとはmysqldを再起動すべし。
bind-addressは複数指定とかできないらしい。なので、コメントアウトしてしまい、GRANTコマンドでhost指定していきながらアクセス制限を解除していく必要あり。
ついでなので、GRANTコマンドについて書いておくか。
外部接続から全部許可するのは怖いので、かなり制限すべし。rootを外部接続なんてことは絶対やらないように。できるのか知らんけど。
こんな感じでテーブル操作だけを許すことができる:
user_nameはユーザ名、hostnameは接続元のホスト名(IPアドレス)、New Passwordは新規パスワード、database_nameは使用許可するデータベース名、table_nameは使用許可するテーブル名。まぁ、大体分かるべさ。GRANT USAGE ON *.* TO `user_name`@`hostname` IDENTIFIED BY 'New Password';
GRANT SELECT, INSERT, DELETE, UPDATE ON `database_name`.`table_name` TO `user_name`@`hostname`;
そんなこんなで、無事Mac上のNetBeans IDEからdebian上のMySQLに接続できるようになりましたとさ。これでPHPを統合開発環境から開発できる。なんたって、Emacsで書いてるとObject内のメソッド補完ができないのがつらい。あと、Carbon EmacsのPHPインデントモードはいけてないと思う。
ジョギング
平日は忙しいから無理なので週末しか走れないけど、少しずつ体力が戻ってきた。
高校の頃はあんなに走ってたのに、こんなにきついとは・・・。さぼるとすぐ落ちるね。とはいえ、週一回なのでなかなか体力は戻らない。毎週少しずつ距離を伸ばすことにして、たまに停滞。体調が悪いときは多少減らしたりもするけれど、ようやく10000超えた。
先週は取手まで行って守谷方面へ走ってみた。
取手から守谷方面はとにかく坂が多い。ただ、風がなかったので、楽といえば楽。まぁ実は大穴があって、利根川を渡る大利根橋の上はものすごい風が吹いてるんだが。先週は往復で9000くらい。あの坂はきつかった。あと、信号待ちうざい。
今日は利根川の堤防上を銚子方面へ。すげー遠くまで見渡せて、景色は最高。ただ、遠くまで見える分、距離感がない。何かあんまり長い距離走った気がしてなかったけど、戻ってきてから地図見たら12000くらい走ってた。人も少ないし、走ってて気持ちがいい。信号もあるわけがないから止まる必要もない。ただ、風強すぎ。遮るものは何もないから向かい風の時はひたすら向かい風。ずーっと坂を上ってる感じだった。この時期は風が冷たいので服装には注意かも。
全然知らなかったけど、利根川のこっち側にも茨城県部分があるっぽい。走ってて「取手市」と「我孫子市」って看板を見た。川を渡ってないのに茨城県をまたいで千葉県に戻ったというわけか。地図見たら、確かにそうなってる。変なの。
あと、市民体育館なんてものがあるんだな。知らんかった。あんなところにあったら車で行くしかないだろ。あー、バスがあるのかも。とりあえず、存在を知らない市民の方が多いと思われる。
ってなわけで、利根川堤防上のジョギング&サイクリングはお勧めです。近くにお住まいの方は是非どうぞ。
手賀沼サイクリングロード
お天気が良かったせいか、手賀大橋から見る手賀沼は綺麗な青一色。気分爽快。ワイコンを持ってないのでこの広がりを写真で表現できないけど、少しでも雰囲気が伝わればよしとしよう。
Emacs上でCのソース内の#ifをハイライト
Cのソースを書いてる時なんかに、秀丸とかだと#if 0の中身をグレーアウトしてくれるので、読みやすいが、emacsではそんなのできないのかと思って探してみた。意外と簡単にできるらしい。
使うのはcpp-highlight-bufferというコマンド。このコマンドは、C(名前からして元々はC++用なんだろうな・・・)のソース内の#ifなり#ifdefなり#ifndefなりを解析して、その中をどう表示するかを指定できるコマンド。よく分からん。
とにかく、普通にCのソースを書いてる時に
M-x cpp-highlight-buffer
とすると、*CPP Edit*なるバッファが現れる。ここで色等の指定をすればいい。ちなみに、ソース中に#if等がまったくなければ何も表示されない。
と、ここまでは検索すればすぐ見つかるが、ここからがよく分からなかったのでメモ。
*CPP Edit*内の[]で囲まれている文字はそのコマンドを指定するためのもの。これは他のemacs関連の設定をする時なんかと同様。
上の方にある
はまぁそのままだから無視。[H]ome (display the C file) [A]pply new settings
[S]ave settings [L]oad settings
[B]は、この下で指定するシンボルごとの設定で何を指定するのかを選ぶもの。「明るい色の背景色」を選ぶのが普通だろ。他のはよく分からん。[B]ackground: light color background
[K]nown conditionals: invisible [X] writable
[U]nknown conditionals:[Y] writable
[K]は、下で色とかを指定した場合にそのシンボル自体(#if 0とか)をどうするかの設定。デフォルトはinvisibleとなっているので、指定があると表示されなくなる。自分は表示された方がいいので、defaultにしている。
[U]は、下で色とかを指定しなかった場合にそのシンボルをどうするかの設定。highlightされてると見やすいけど、意識したくない場合はdefaultにする方がいいかも。
[X], [Y]はシンボル自体を修正できるかどうか。writableなら普通に修正できるけど、read-onlyを指定しておくと、シンボルの行を編集できなくなる。
次に個々のシンボルの設定が来る。こんな感じ。
自分はここに書いてある通りの設定になってる。もちろん、会社ではもう少しシンボル定義が多いけど。Expression: [T]rue Face [F]alse Face [W]rite
0: light gray default both
1: default light gray both
[T]は、そのシンボルが有効な時にどうするか。背景が薄いグレーになる。
[F]は逆に、そのシンボルが無効なときどうするか。同じく背景が薄いグレーになる。
[W]は、そのシンボル定義で括られた中に書き込みを許可するかどうか。bothなら有効・無効のときに書けるけど、falseにすると無効の部分しか書けない、などの設定ができる。
で、いちいちこのコマンドを実行する度に指定するのは面倒。なので、以下の作業を行う。
1.この設定を[S]で保存する。
すると、今編集しているCソースがあるディレクトリに.cpp.elなるファイルが
できているはず。
2..emacsを開いて、c-modeのhookに以下を追加。
3.1.で保存した.cpp.elの中身を.emacs内のどっかに書いておく。(cpp-highlight-buffer t)
これで準備万端。後は普通にc-modeが起動されれば設定が有効になる。
自分の設定は以下の通り:
こんな感じか:[B]ackground: light color background
[K]nown conditionals: default [X] writable
[U]nknown conditionals: <highlight> [Y] writable
Expression: [T]rue Face [F]alse Face [W]rite
0: light gray default both
1: default light gray both
ちなみに、ソースのあるディレクトリに.cpp.elがあれば、cpp-highlight-bufferコマンド実行時に読み込まれるので個々のプロジェクト用に用意しておいておけばおk。ここで設定するのは#if 0のような汎用的なものにすべし。#if 0
ここは背景色がグレー
#else
ここは普通
#endif
#if 1
ここは普通
#else
ここは背景色がグレー
#endif
てなわけで、.emacsを再掲:.emacs