運転免許への道(路上からみきわめまで) -くらやみの速さはどのくらい

2017年2月9日木曜日 - 投稿者 さい 時刻: 10:58
 家にあるかと思い込んでいたら無かった。エリザベス・ムーン。
 こんなステキタイトルのSF絶対持ってるはずなんだけどな・・・

 それはいいとして、2度の仮免試験を経てついに路上デビューする日がやってまいりました。
 初日は怖かった。というか最後まで怖かった。特に私はそれなりに都会の教習所に通っていたので、路上の練習コースが目黒・恵比寿・渋谷・白金台・広尾・麻布十番と、スーパー路駐通りなわけですね。目黒~恵比寿間なんかもうサイアクです。でんせつのバットで路駐車をぶん殴って回りたいくらいの路駐エリアでした。キープレフト?基本は左車線?とんでもない。そんなことしてたら1時間走る間に何台追突するかわかりません。
 所内をぐるぐる廻るのはほとんど楽しいだけでしたが、路上は本当につらかった。毎日毎日学校行きたくない子供みたいでした。
 この歳になると、コンスタントに怒られ続けるのはこたえますな。

<第ニ段階 11月~1月>
 前半は路上をひたすら走る。規定のコースが4コースあって、一日1コース+関連箇所をいくつかというパターン。卒業試験に「寄せて止める」というワザもあるためそれもやりました。教官が「はい止められそうな場所で止まってね」と言ったらすかさず停車禁止の場所以外で止められそうな場所を探して止める、という難易度の高いものです。高いんだよ!車がいない・停車禁止でない・車が後ろから来てないって咄嗟に判断するの難しかった。一回バス停+1メートルに止まってしまってここ駐停車禁止だからって叱られたこともありましたね。
 あと、路上は教官の性格がモロに出ますね。あと教官によって「可」か「不可」のボーダーが違っててそこも辛かった。一番はやっぱり横断歩道で、

・信号のない横断歩道で歩行者が向こう側から渡り始めたとき待ってろと怒る教官と待ってたら怒る教官
 (前者の主張は『歩行者がいるんだから止まってろ』、後者の主張は『歩行者の進行を妨げなければ行っていい』)
 
・赤信号なのに渡ろうとダッシュしてくる歩行者がいて横断歩道の手前で待ってたら『後ろが詰まっちゃうでしょ、信号無視とかルール違反してくるやつなんか無視して行け』

 何が正解なんだかよくわからんって夫や職場の人に愚痴ってたら、皆様口をそろえて「状況よく見てケースバイケースってことだよね」と言われ、とりあえず納得。

 そういえば路上2回目、バンドでベース弾いてます風味の教官に教わった時、こいつがものすごい怖かった。あらかねやんみたいだわと一瞬( ̄ー ̄)ニヤリとしたのも束の間、かなりのスピードで教習所から路上に飛び出し、常に前を走る教習車に文句をつけまくっていました。
 「あいつ行く気あんのかようぜぇなぁ」「ちんたら走ってんじゃねえよなぁ」みたいないやいやいやいやそれあんたんとこの教習車だから!とにかくその時は加速加速言われまくった覚えがあるぞ。
 あとは
 ・なぜ右ばっかり見て運転するのか(←サイドミラーで後方チェックするクセがついていた)
 ・歩行者を待て
 ・左右確認ちゃんとしろ
 ・歩行者を待て!!
 ・加速しろ(制限速度いっぱいで走れ)
 ・歩行者を(ry
 常に注意されていたことで、乗れば必ず怒られてましたね。
 上にも書きましたけど、この歳になるとあんまり叱られることってないじゃないですか。もう1時間連続して緊張し、そして叱られ続けるってなかなかないわけで、へこたれました。
 一番覚えてるのが、路上終わって所内に戻ってから、同じく所内に戻ってくる車が入ってくるのを待っててねと言われたのですが、その車は歩行者がいたため止まっていたんですね。あこれ行っていいかなと思ってブレーキ緩めたら「待っててって言ったでしょう!なんで言うこと聞かないの!?もうこんなことはじめてだよ!」とマジギレされたことかなー・・・
 教官と乗ってる時、ほんと自己判断はだめよ、とこれから免許取る人へアドバイス。

 第二段階後半は主に所内でバック、縦列駐車、方向転換。
 高速教習はシミュレータでした。ここで高速教習っていうと首都高しかないわけで、さすがに仮免許車で首都高はハードル高すぎるのでしょう。昔は第三京浜とか走ってたらしいのですが。でも三菱ドライブシミュレータは案外ちゃんとしていて、高速を走っている気分になりました。トンネルでライトつけたり、加速車線出る際後ろからトラックに迫られたり、トンネル直後の横風に煽られて横転したり。
 縦列駐車も方向転換も目印があるのでそれを頼りにしながら行いました。特に縦列駐車なんか、やり方としては
 1.駐車する方向幅1メートルくらいあけて真っ直ぐ止める
 2.後部座席の窓にマークが見えたら止める
 3.左にハンドルいっぱいきってからバックして、サイドミラーに入る場所の角が見えたら止める
 4.ハンドル真っ直ぐにしてからバックして、フロントガラスにマークが見えたら止める
 5.右にハンドルいっぱいきってからバックして、真っ直ぐになったらちょうどいいところまでバック
 という、どう考えてもその場所でしか通用しない駐車方法。マークなんか路上にないしね。なもんだから縦列は大得意でした。失敗したことなかった。方向転換が難しかったな。入るときも難しいし出るときも難しいし。

 最後の教習のみきわめ(卒業検定を受けてもいいかの判定)は
 「・・・・・・まあ、ぶっちゃけギリギリだけどね。まあいいや、卒業検定がんばって」
 と教官に言われながらハンコを貰いました。
 「どういうのがみきわめダメになるんですか」と訪ねたら、「ほんとどーしようもないやつだけだよ」とあっさり言われました。ははは。

運転免許への道(入校から仮免まで) -青をこころに、一、二と数えよ

2017年2月5日日曜日 - 投稿者 さい 時刻: 22:15
 死ぬほど好き。I love コードウェイナー。  

 それはいいとして、さい氏32歳にしてはじめて運転免許を取得しました。
 年齢的な機会は例えば高校の卒業前とか、大学時代とか、何度かあったのでしょうが、なんとなく「まだいいや」って感じでした。
 就職してからは「転職するタイミングで取ればいいや」などとも思っていましたが、実際転職した際に取れた有給は1日。取れるわけがない。
  まあ動機としては
  ・子供が出来たとき私が運転できたら便利
  ・仕事で運転する機会がなくもない
  ・年齢
 上記のような理由から、今取っておかないと一生取れないかも、というわけのわからない焦慮に突然かられて某自動車学校の門を叩きました。衝動としか言いようがないですこれは。
 平日は仕事があるため、ほぼ土日祝日で通いました。平日に学科を多少受けたのみ。
 入校から免許取得までちょうど4ヶ月。
  いくら子供もいない趣味もない自分でもそれなりに用事や休日出勤や体調不良があったので、体力と相談して可能な範囲で通いました。ギッチギチに入れればもっと早く取れたと思います。
 何はともあれ無事に取れたので備忘録。

 <入校 2016年10月>
 現住所から一番近場と思しき都内の某自動車学校に入校。
 そこは最大予約数が2回・4回・6回と選べて増やすごとに料金が増えていくという仕組みでした。しかし2回はかなり少ないです。キャンセル待ちなどが出来る、時間に余裕がある生徒ならそれでも良いかもしれないですが、予約を取るのは自分だけではないですからね。
 繁忙期でなくとも一週間前に土日の予約が埋まってしまうので、少なくとも2週間先まで土日最低2コマ取れるようにしておきたいと思い4回を選択。それでも足りないので速攻で6回に変更。
 某教習所はとにかく予約がすぐ埋まってしまうし、キャンセル待ちとかあんまりしたくないので社会人はお金で解決。
 予約はスマホからも出来たのでそこは便利でした。ウェブ屋として言わせて頂くとインタフェースは一昔も二昔も遅れている。ちっちぇ~テキストボックス、ちっちぇ~ラジオボタン、色気も素っ気もない「サーバーが混み合っています」エラー。妙なタイミングで切れるセッション。それでも使えないわけではないので、頻繁にチェックしてベストな時間を調整。
 AT限定。そこは迷わず。年とると、自分が出来ること出来ないことの見極めがついてくる。やる前からMTはアブソルートリー無理。右足だけでもいっぱいいっぱいなのに左足もなんてバスドラをダブルでやるようなもんですよ。ドラムやったことないですが。
 というわけで諸々決めて、料金は入校時に一括で支払いを済ませました。ハロウィンキャンペーン中(なんぞそれ)で幾つかの割引があり、検定試験の料金を別にすれば32万ちょっとくらいでしたね。

<第一段階 10月~11月>
 免許取得の過程は第一段階と第二段階に分かれていて、仮免までが第一段階。学科10コマ、技能10コマくらい(うろ覚え)で学科は信号とか標識とか所内の運転に必要な知識を取得。技能は所内をぐるぐる廻ります。所内のコースは広くはなかったので、基本10キロ~20キロくらいで走行。余談ですが、外に出た時最初は怖くて30キロ以上出せませんでした。所内ではハンドル操作、ウィンカーの使い方、カーブ、S字、クランク、障害物の避け方(いかに左右後方確認をするか)などを学びます。
 教官の数は多くて、同じ教官には多くて3回、通常1回~2回くらいしか当たりませんでしたね。色々なタイプがいて、適当というか丁寧さがあんまりない教官も結構いました。オネエ(おじさんだけど)もいましたね。誰かに似てると思ったら志茂田景樹。あれは面白かったな。あとは熱心に注意をくれて、教習終わりにワンポイントをメモしてくれる教官もいれば、いかにも面倒くさそうなオーラ出してる教官もいて、色々でした。どちらかというと女性の方が厳し目で、ちゃんと指導してくれるイメージ。例外なく怖いけど。
 教習所の女性教官って、ほぼ共通して「おばさん(←おまえもな)」「太ってる(←おまえもな)」「背が低い(←おm)」と3拍子揃っていた。例外もいるけど例外は例外なく大型二輪好きそうなバイク女子。

<仮免 11月上旬>
 仮免試験。技能と学科の両方です。
 仮免試験を受けるために必須の効果測定(PCで受ける学科の模試)はいきなり不合格で2回受けるハメになりましたが、これはアカンと思ってその日からちょこちょこ勉強して、試験直前の予想問題は3セットとも満点。人間努力を怠らないことが大切なんですねえ・・・。
 技能は所内を教官と他の受験生2人が同乗し、一人ずつ課題をこなしながら所内をぐるぐる廻ります。
 30キロ速度、右左折、交差点、坂道発進、踏切、障害物、S字、クランク、安全な停止(幅寄せ)などが試されました。S字やクランクは前輪または後輪が脱輪した場合、切り返しが出来ればOKなので、特に練習した覚えがあります。「S字は我慢」とは某屈強な女性教官のありがたいお言葉。
 で、一回目。(そう、二回目もある)
 一回目の仮免試験は、2番目の走行だったのでおおまかにコースも判ってたし特段大きなミスもなく出来たんですね。しかし終わりの方になって気が抜けたのか、まさかの右折からの反対車線逆走。教官ブレーキ。何が起きたのか一瞬判らなくなりました。
 頭真っ白のまま残りのコースを追えて、もう3番目の受験生の走行の間は後部座席が針のむしろ。チックチク。結果は当たり前なんですが不合格。危険行為ですってそりゃそうです。
 言い訳させてもらいますと、普段なら反対車線には何台も車が走っていて、逆走なんかしたら正面衝突します。ですが、試験のときって何も走ってないじゃない?それで、右折するときって、交差点の内側通らなきゃならないじゃない?だからなんかそのまま・・・アッー!
 で、技能が受からないと学科は受けられないので、そのまま不合格者必須の補習の予約をして、ちなみにその時不合格だったのは私を含めて3名でした。
 喫煙所でしょんぼりしてたら職場の先輩から見てただろっていうくらいのジャストタイミングで「どうだった?」
 補習では「丁寧に運転してると思うけどなぁ」って言われてorz
 本番に弱いのは年とってもどうにもならないものです。
 で、悔しいあまりその週の平日に会社休んで挑んだ二回目は無事に乗り切って、学科も無事に合格。
 あっでも二回目は踏切で一時停止したあと一瞬このあとどうしたらいいか分からなくなって、おもむろに腕をまくりました。よーし行くぞー!って?え?なんで今腕まくった?
 今でもまくった袖が緑のストライプだったのをよく覚えています。
 なにやってんの自分、と脱力したのも覚えています。
 正解は窓を開けて音を聞いて前後左右確認、でした。そのあとちゃんと出来ました。
 
 どうでもいいけどなんで乗り上げること「脱輪」って言うんでしょうね。脱輪って言われるとタイヤが外れることをイメージしてしまう。道から輪が脱けるから?
 運転用語は謎が多い。クラッチを切るとか。エンジンブレーキとか。
 続きます。

jQuery:EnterキーでSubmitしない(意図しない送信の防止、Enterキーをすべて禁止しない)

2016年12月5日月曜日 - 投稿者 さい 時刻: 18:02
なんかわけわからんタイトルになりましたが、要はEnterキーを押したとき、意図しないタイミングで送信されるのを防ぎたかったのです。
この<意図しないタイミング>というのがミソで、思い通りにしようと思ったら案外考えることがあったので記録しておきます。

【目的】
・テキストボックスや、カーソルが画面外にあるときEnterキーを押したときなど  操作者が意図していないところでSubmitされるのを防ぐ

【条件】
・Enterキーをすべて無効にはしない
 - テキストエリアでEnterキーが無効になってしまう
 - 本当にEnterキーで送信したいとき(ボタンにフォーカスを明示的に当ててsubmitしたい場合)困る
・typeをsubmitからbuttonに変更しての対応はしない
 - 随所にある「input type="submit"」を「input type="button" onclick="submit();"」に書き換えたくない

【前提と方針】
・入力フォームがフォーカスされていないときでもEnterキーが押されると画面はsubmitする
・この場合、画面で一番最初に出現するsubmitボタンが発動
・しかしながら、フォーカスされているフォームを取得してみると、typeもtagも「undefined」となる

そこで、
・エンターキーは特定の種類のフォームにフォーカスされたときに押された場合を除いてすべて無効にする
・特定の種類とは、button, submit, テキストエリアとする
という方向で実装することにしました。

→エンターキーを押されたときフォーカスされているフォームのtypeとフォームのtag(タグ種別)を取得して
 ・typeがbuttonまたはsubmitであればなにもしないでその動作に任せる
 ・tagがtextareaであればなにもしないで動作に任せる
 ・type・tagがそれ以外であれば、return falseしてそれ以上動作しないようにする

javascriptでもjqueryでもいいですがここはjqueryで...
【実装】

// キー押下のイベント
$("body").keydown( function ( e ){
    // Enterキーを押下されたとき
    if((e.which && e.which === 13) || (e.keyCode && e.keyCode === 13)){
        // フォーカスされてるフォームのIDとtypeを取得
        var id = $(':focus').attr("id");
        var type = $(':focus').attr("type");

        // textareaを除外するためにフォーカスされているtagの種類を取得
        var tag = $("#"+id).prop("tagName");
        var tag = (tag !== undefined) ? tag.toLowerCase() : "";

        // typeがbutton・submit、またはtagがtextarea以外はEnterを無効
        if((type !== 'button' && type !== 'submit' && tag !== "textarea")) {
            alert("Enterキーが押されました。\nこの項目でEnterは無効となっています"); //debugのためにアラート出してただけ
            return false;
        }
    }
});

phpMyAdminでCSVインポート時、空をNULLでinsertする

2016年7月1日金曜日 - 投稿者 さい 時刻: 21:32
phpMyAdminでCSVインポートを良く使うのですが、たとえばintのフィールドに空("")をいれようとすると


MySQL のメッセージ: ドキュメント
 #1366 - Incorrect integer value: '' for column 'sample_number' at row 1


なんてエラーが出てインポートできません。
NULLといれておけばNULLで入るので解決するのですが
普通CSVといえばExcelなどでデータを作ってCSVファイルにしてインポートするわけで
空なんてざらにあるわけでして・・・
いちいちセルにNULLとかいれるのは本当に面倒です。


と思っていたら、空だったら自動でNULLをinsertする方法がありました。


CSVインポートの際に、「フォーマット特有のオプション:」にて
「INSERT エラーで中断しない」
にチェックをつけると、空値が入っていてもNULLでインポートしてくれます。


ただCSVファイルの行数はインポート前に把握しておいた方が良いですね。

※7/3追記
このオプションは例えば入れるべき値が1列ずれてたなどそういう致命的なミスがあった場合でも適宜0やNULLなどインポートできる値に置き換えていれてしまうので、ミスに気づきにくいです。
結局使わなかった・・・

Windows 7をISOでWindows 10にアップグレード

2016年1月26日火曜日 - 投稿者 さい 時刻: 9:26
Windows7のノートPCをWindows10にISOイメージでアップグレードしました。
(ノートPCは普段特定のネットワークにしか接続しないため)
そんなわけなので、ISOイメージを作成したPCと、実際にWindows10にアップグレードするPCは別です。
Windows10自体のアップグレードは時間がかかっただけであっさり終わったので、ISOイメージを作ったときのことを中心に残しておきます。

1.Windows10のISOディスクイメージを作成
 以下のサイトの「ツールを今すぐダウンロード」をクリックしてメディア作成用のツール(MediaCreationTool.exe)をダウンロード
 https://www.microsoft.com/ja-jp/software-download/windows10

2.MediaCreationTool.exeを実行
・ライセンス条項
・「他のPC用にインストールメディアを作る」を選択し、「このPCにおすすめのオプションを使う」のチェックを外してから、インストール先のPCの設定に合わせて項目を選択
 言語:日本語
 エディション:Windows10
 アーキテクチャ:32ビット(x86)/64ビット(x64)/両方
 ここで「両方」を選択すると、できあがる.isoのファイルサイズが5.5Gになってしまい、
 普通のDVD(4.7G)では容量が足りなくISOイメージを書き込むことができないため
 4.7GのDVDで作ろうと思っている方は32ビットか64ビットかを選択した方が良いでしょう。
・使用するメディアでISOファイルを選択し「次へ」
 →isoファイルが作成され、ダウンロードされます。これをDVDに焼きます。

3.出来上がったISOイメージからWindows7をアップグレード
 作成したディスクをいれて実行するだけです。簡単。
 Windows10互換のないソフトウェアはアンインストールを促されますのでアンインストールして実行。

4.待つ
 かなり待ちます。13:30からはじめてなんやかやで16:00でした。
 あとインストール後にデフォルト設定画面がありますが、「簡単設定」はしないで「設定のカスタマイズ」をクリックしてすべて手動でオンオフ設定します。
 特に通信関係はオフにしておいた方がよいです。というよりだいたいオフにしておいた方が間違いないです。
 規定のアプリの選択はお好きにしてください。私は全部オフにしました。

5.画面がぼやける、にじむ対策
 以下のサイトを参考に、テキストサイズを100%にして終了。
 Windows10で画面がぼやける、にじむ際の対処法 | LSnewsbox
 http://lsnewsbox.com/windows10-display-blur

MySQL 5.6 query_cache_typeをmy.cnfに設定したらエラー

2015年10月22日木曜日 - 投稿者 さい 時刻: 16:03
MySQL 5.6 のメモリのチューニングをしていた際のハマりです。
query_cache_typeを設定していなかったので、起動中のMySQLを一旦止めて、my.cnfに下記を追記して再起動。
query_cache_limit = 16M
query_cache_size = 512M
query_cache_type = 1
するとエラー。

The server quit without updating PID file...

もうこれ見飽きた...

my.cnfにquery_cache_typeの設定をするとこのエラーが出てしまうのですが
記述に問題あるようにも見えなくて、実際、記述自体に問題はないわけです。
でもただ起動できないでどうしてエラーなのかさっぱりわからず
MySQLからset global を使って、グローバルでセットしてみるも
やはりエラー。(当たり前)

Query cache is disabled; restart the server with query_cache_type=1 to enable it

【結果】
query_cache_type は、設定/変更する際、ログファイルの削除が必要だったんです。

【手順】
クエリキャッシュを変更するときには
1.MySQL サービス停止
2.ib_logfile0、ib_logfile1を削除(不安だったらリネーム)
3.my.cnfを書き換え
4.MySQLサービス起動
という流れになります。

余談ですが、MySQLを再起動するとき、残っていたロックファイル(lock/subsys/mysql)を削除しようとしたのですが、killしてもkillしても復活してきたので潔くOSをrebootしました。

MySQL 5.6で Assertion failure in thread

2015年9月10日木曜日 - 投稿者 さい 時刻: 9:27
■現象
my.cnfにquery_cacheの設定を追記してmysqlを再起動したら起動に失敗
追記した部分↓(問題あり?)
query_cache_limit = 16M
query_cache_size = 512M
query_cache_type = 1
■エラーログ確認
○/var/mysql/logs/error.log
2015-09-08 20:02:41 7f9721e4e720  InnoDB: Assertion failure in thread 140287085438752 in file ut0mem.cc line 105
InnoDB: Failing assertion: ret || !assert_on_error
InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
InnoDB: If you get repeated assertion failures or crashes, even
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
11:02:41 UTC - mysqld got signal 6 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
We will try our best to scrape up some info that will hopefully help
diagnose the problem, but since we have already crashed,
something is definitely wrong and this may fail.
key_buffer_size=8388608
read_buffer_size=131072
max_used_connections=0
max_threads=151
thread_count=0
connection_count=0
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 68241 K  bytes of memory
Hope that's ok; if not, decrease some variables in the equation.
Thread pointer: 0x0
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
stack_bottom = 0 thread_stack 0x40000
/usr/local/mysql/bin/mysqld(my_print_stacktrace+0x35)[0x8e1b75]
/usr/local/mysql/bin/mysqld(handle_fatal_signal+0x41b)[0x650a1b]
/lib64/libpthread.so.0[0x37bd00f4a0]
/lib64/libc.so.6(gsignal+0x35)[0x37bcc32885]
/lib64/libc.so.6(abort+0x175)[0x37bcc34065]
/usr/local/mysql/bin/mysqld[0xa2b557]
/usr/local/mysql/bin/mysqld[0xaafb60]
/usr/local/mysql/bin/mysqld[0xaae7f6]
/usr/local/mysql/bin/mysqld[0xa4f0ee]
/usr/local/mysql/bin/mysqld[0xa5c9cf]
/usr/local/mysql/bin/mysqld[0xa09f6f]
/usr/local/mysql/bin/mysqld[0x95a7f7]
/usr/local/mysql/bin/mysqld(_Z24ha_initialize_handlertonP13st_plugin_int+0x48)[0x58d388]
/usr/local/mysql/bin/mysqld[0x6e1f86]
/usr/local/mysql/bin/mysqld(_Z11plugin_initPiPPci+0xb3e)[0x6e567e]
/usr/local/mysql/bin/mysqld[0x580905]
/usr/local/mysql/bin/mysqld(_Z11mysqld_mainiPPc+0x4d8)[0x585898]
/lib64/libc.so.6(__libc_start_main+0xfd)[0x37bcc1ecdd]
/usr/local/mysql/bin/mysqld[0x577bdd]
The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
information that should help you find out what is causing the crash.
crash(;゚Д゚)!?
エラーメッセージでググッてみると、「MySQLがクラッシュした」という記事ばかりで青くなりました。
不用意に再起動した自分を呪いつつ、設定ファイルを変えたタイミングだったわけでまずはそちらを確認。
結果、上述したmy.cnfの記述に問題があったようなのですが。
なにが悪かったのか良くわからず・・・query_cacheの記述が違うのかもしれません。
これについてはまたきちんと原因を調べるとして、起動までにやったことを残しておきます。
リカバリーはしなくて済みました。

■やったこと
○my.cnfの上記をコメントアウトして再起動
→下記エラーで起動せず
[root@dev init.d]# ./mysql.server start
Starting MySQL. ERROR! The server quit without updating PID file (/var/mysql/data/dev.xxxxxx-xxx.net.pid).
上記エラーをスタンダードな手順での解消を試みます。

○起動に失敗したときに残ってしまったプロセスを確認
[root@dev logs]# ps aux | grep mysql
root     24734  0.0  0.0 106152  1384 pts/0    S    20:02   0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock -
mysql    24805  0.0  0.1 261160 21736 pts/0    Sl   20:02   0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/et=/var/lib/mysql/mysql.sock
root     28203  0.0  0.0 107516   940 pts/0    S+   21:20   0:00 grep mysql

○mysqlが起動しているmysqldをkill
[root@dev logs]# kill 24805
[root@dev logs]# ps aux | grep mysql
root     28207  0.0  0.0 107516   944 pts/0    S+   21:20   0:00 grep mysql

○再起動前に念のためステータス確認するとロックファイルがあったのでそれをリネーム(削除でもいいと思います)
[root@dev logs]# /etc/rc.d/init.d/mysql.server status
 ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists
[root@dev logs]# cd /var/lock/subsys
[root@dev subsys]# mv mysql _mysql

○再起動
[root@dev subsys]# /etc/rc.d/init.d/mysql.server start
Starting MySQL.. SUCCESS!

★教訓
稼働中のDBを不用意に設定変更・再起動しない
my.cnfをいじるときはかならず確実な情報をもとに編集・再起動
クラッシュを疑う前に胸に手をあてて自分の行動を鑑み、小さな部分から対応を潰していく

★Tips
mysql強制起動オプション(my.cnfに追記する)
innodb_force_recovery = 3
※1~6まで指定できて、1が一番やさしい強制。通常は1から順番に設定しながら起動確認していくようです。