さくらVPS SSH接続できないときにVNCコンソールで頑張って復帰する

特に考えずにyum updateしてサーバー再起動したら、いくら待ってもSSH接続できなくなった…。
というときは、Kernelが複数インストールされていて、通常自動的に選択される最新のものでは起動できない状態の可能性があります。

とりあえず、あせらずにVPSコンパネから「VNCコンソール」を起動します。

コンパネからJavaのリモートコンソールを開く。
表示されてるほうじゃなくて「VNCコンソール」を開く。

で、これJavaで動いてます。

昨今のセキュリティホールのせいで基本的に「ブラウザでJAVAはOFF」という設定にしている人が多いと思います。

Windows7のコントロールパネル
Windows7のコントロールパネル

Windowsの場合は、OSのコントロールパネルにあるJavaから、

セキュリティタブの設定を見直す
セキュリティタブの設定を見直す

で、ブラウザ再起動したら、「VNCコンソール」の画面で

起動確認画面が出ます
起動確認画面が出ます

実行すると、別画面が開いて黒い画面が表示されます。
起動中のさまざまなものが随時表示されてゆきますが、いつものlogin:待機でない限り、kernel panic的なものが画面のどこかに出て、止まってるはず。

とりあえずこの状態で、VPSのコントロールパネルホーム画面から、再起動ボタンを押します。

そうすると別画面側の起動処理がだーっと出て

Press any keyとin # seconds...でそれぞれEnter
Press any keyとin # seconds…でそれぞれEnter

で。

yum update後に再起動しないで使っていると、意外と沢山入っている…
yum update後に再起動しないで使っていると、意外と沢山入っている…

一番古いバージョンを選択してEnterする。

いつもの!
いつもの!

めでたしめでたし。

でもこのままだと、また再起動したときに同じ目にあうので
Kernelのバージョンを削除するとか → 古いカーネルを削除する(CentOS) – ぱらせんメモ
Kernelのデフォルトバージョンを設定(できるのか?)しないと。

2013/10/05 追記

古いカーネルの削除方 – とりさんダイアリー でrpm -e で不要なKernelバージョンだけ狙い撃ちでアンインストールできるようです。

Netbeans 7.3バンドルのmysql-connector-javaはバージョンアップしよう。

ねこび~んかわいいよ、ねこび~ん!

PHPのIDEにはNetbeansを使っています。

Eclipseから移ってきて早くも1年がたちました。
特に不満もなく。

メモリ食いだけど重過ぎないところが好き。

オサレエディタはいっぱいあるけど、カスタマイズが面倒なのはイヤだす・・・。

で。

いつもMySQLの操作にはMySQL Workbench を使っているのですが、そういえばデータベースいじれたよなーと思って使ってみたわけです。

接続設定作って、難なくテーブル一覧取得までいきました。

じゃ、SELECTしてみるかってことで…

060113_041134_AM
空っぽ
いやいやいや!
MySQL Workbenchから見た図
MySQL Workbenchから見た図

入ってますよね!?

で、コレ


エラー・コード1064,SQL状態42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTION SQL_SELECT_LIMIT=DEFAULT' at line 1

エラーでとるやんけ!

色々見たけど暗黙オプションのとり方がわからず、ググりましたところ

Bug 224260 – Update JDBC Drivers (was OPTION SQL_SELECT_LIMIT=DEFAULT) とか、

MySQL5.6なので、おそらくこの辺も関係があるのではと疑いつつ。

MySQL Bugs: #66659: mysql 5.6.6m9 fails on OPTION SQL_SELECT_LIMIT=DEFAULT

とりあえず。

ドライバを更新する

Connector/Jの新しいものが出ておりましたので入れます。(バンドル版は5.1.18でした)

落としてきて、中のmysql-connector-java-5.1.25-bin.jarを

C:\Program Files\NetBeans 7.3\ide\modules\ext に放り込みます。

Netbeansで使うドライバを切り替える

サービスタブ開いてドライバ名を右クリック→「カスタマイズ」

サービスタブ
サービスタブ
060113_041306_AM
追加でさっきのjarを選ぶ
060113_041600_AM
古いのが一番上にきてるとダメです。

一番上に来てるjarを使うなら複数選べる意味があるのか謎ですが。(5.1.25が上にきていて、5.1.18もある状態は大丈夫でした。)

解決しました。
めでたしめでたし。

Windows7×JenkinsでAntで各種PEARが動かせない場合

本来は環境変数周りの問題だと思うのだけどあきらめた…

Antは使わずにcmdへコマンド投げる方法に切り替え

本来こうしたい所を

<target name="phpcpd" description="Find duplicate code using PHPCPD">
 <exec executable="phpcpd">
  <arg value="--log-pmd"/>
  <arg value="${basedir}/build/logs/pmd-cpd.xml"/>
  <arg path="${basedir}/src"/>
 </exec>
</target>

↓ ↓ ↓ cmdへ投げる形へ。

<target name="phpcpd" description="Find duplicate code using PHPCPD">
 <exec executable="cmd">
 <arg value="/c phpcpd --log-pmd ${basedir}/build/logs/pmd-cpd.xml ${basedir}/src" />
 </exec>
</target>

phpcpdでネストエラーが出てしまったら

phpcpdの仕様と前提となる環境がかみ合わないせいか、PHP5.4.3/PHP5.3.13で再現確認。

Fatal error: Maximum function nesting level of '100' reached, aborting! in C:\php\php5\pear\SebastianBergmann\Version\Version.php on line 125

Call Stack:
 0.0008 232488 1. {main}() C:\php\php5\phpcpd:0
 0.0102 632032 2. SebastianBergmann\PHPCPD\TextUI\Command->__construct(
) C:\php\php5\phpcpd:55
 0.0107 653600 3. SebastianBergmann\Version->getVersion() C:\p
hp\php5\pear\SebastianBergmann\PHPCPD\TextUI\Command.php:68
 0.0107 653824 4. SebastianBergmann\Version->getGitInformation() C:\wam
p\bin\php\php5\pear\SebastianBergmann\Version\Version.php:81
 0.0107 653904 5. SebastianBergmann\Version->isGitRepository() C:\wamp\
bin\php\php5\pear\SebastianBergmann\Version\Version.php:103
 0.0108 654104 6. SebastianBergmann\Version->isGitRepository() C:\wamp\
bin\php\php5\pear\SebastianBergmann\Version\Version.php:135
 0.0108 654224 7. SebastianBergmann\Version->isGitRepository() C:\wamp\
bin\php\php5\pear\SebastianBergmann\Version\Version.php:135
(以下延々)

PEARインストール先の問題のファイルを改変。
(gitリポジトリ内で呼ばれたら、最新のものを取ってくる判定をする部分なので挙動には支障ないはず)

例) C:\php\php5\pear\SebastianBergmann\Version\Version.php

//123行目付近
private function isGitRepository($path){
 return false; //動かないのだから仕方あるまい
...

今回調べ物してて思ったこと

Windows環境のオマケ扱いが加速している…。
Linux(Mac)表記が先で、Windowsの表記は「テストして無いけどこんな感じでしょ」みたいな書き方されてました。

Macを好きにならなければこの先苦労するのかもしれません。

WordPressショートコードで投稿データ表示。

テンプレート面倒くさくていじりたくない…。
新しいテンプレート作るときコピペするの面倒だもの…。

そこで、今更感抜群のこちら!

ショートコード内でテンプレートと同じ記事のループ処理をしてるので、
投稿内容がthe_content()とかdo_shortcode(get_the_content())を通ると記事が表示できます。

使い方としては、Magic Fields2プラグインでpost_typeとcustom_taxonomyいっぱい作って、
管理画面の編集できる範囲を固定化した後に、ページの本文でこのショートコードを呼び出して
一部の必要な記事を表示する。

ショートコード外の装飾はビジュアルエディタである程度いじれるのがメリット。

[show_posts post_type="posts" length="1"]

とかで管理画面から特定ポストタイプの最新の投稿1件を出せます。
あと、taxonomyも1個だけ対応している。
(ある固定ページにポストタイプ「event」の「交流会」タクソノミーの最新1件だけを表示したいときとかに)

[show_posts post_type="posts" taxonomy="post-tax"]

中ではWP_Queryでテンプレートに書くループやってるだけなので、後はスタイルシートで頑張る。

あと、ページ送りとか使わないような1件抽出とか向きです。そのへんまったく考慮してません。

あっ、中でloopテンプレート呼んだりしたほうがいいのかな?

<?php
function shortcode_show_posts($atts, $content = null){
 $result="";
//ショートコードで使えるオプションたち
 extract(shortcode_atts(array(
 'post_type'=>'',//ポストタイプ
 'post_id'=>'',//ポストID
 'length'=>1,//=posts_per_pages、記事数
 'taxonomy'=>'',//タクソノミー
 'order'=>'date',//ソート基準
 'orderby'=>'DESC',//ソート順
 'show_post_title'=>1,//タイトル表示するか?
 'show_post_date'=>1,//日付表示するか?
 'show_post_body'=>1,//本文表示するか?
 'use_link'=>0,//タイトルにパーマリンクするか?
 'title_class' => '',//タイトルに追加CSSクラス
 'body_class' => ''),//本文に追加CSSクラス
 $atts));

//WP_Queryに渡すオプションを整理
 if(!empty($taxonomy)){
//taxonomyがあるときは大体他の条件無視する。
 $opt=array(
 'tax_query'=>array(array('taxonomy'=>$post_type.'s', field=>'slug', terms=>array($taxonomy))),
 'posts_per_page'=>$length,
 'order'=>$order,
 'orderby'=>$orderby,
 'post_status' => 'publish'
 );
 }else{
 $opt=array(
 'post_type' => $post_type,
 'p'=>$post_id,
 'posts_per_page'=>$length,
 'order'=>$order,
 'orderby'=>$orderby,
 'post_status' => 'publish'
 );
 }

 $query = new WP_Query($opt);

 if($query->have_posts()):while($query->have_posts()):
 $result.='<div>';
 $query->the_post();

 if($show_post_title){
 $result.='<h3>';
 if($use_link){
 $result.='<a href="'.get_permalink().'">'.get_the_title().'</a>';
 }else{
 $result.=get_the_title();
 }
 $result.='</h3>';
 }

 if($show_post_date){
 $result.='<date>';
 $result.=get_the_date('Y年m月d日 H:i 掲載');
 $result.='</date>';
 }

 if($show_post_body){
 $result.='<div>';
 $content=do_shortcode(get_the_content());
 $result.=str_replace("\n","<br />",$content);
 }

 $result.='</div>';
 $result.='</div>';
 endwhile;endif;

 return $result;
}
add_shortcode("show_posts", "shortcode_show_posts");
?>

[Windows]ffmpegとbatファイルで快適ドラッグ&ドロップ変換

2013/3/15にFFmpeg1.2がリリースされました。
ちょうどAni-ZONE Frontierのライブ準備で動画変換する必要があったので、ありがたく使わせてもらったところです。

で。

内部的にこのFFmpegを使った各種GUI変換ソフトはたくさんあるのだけど、ちょいちょいオプションが変わったり、搭載しているバージョンが古くて変換できないものがあるなど、結局は直接設定を書いたほうが幸せになれることが。

ただし、いちいちMS-DOSのコマンドラインからやるのは面倒なので、こんな風に

mp3変換とか
mp3変換とか

変換用のバッチファイルを作っておいて、エクスプローラ上でドラッグアンドドロップしてやれば楽チンですね。ということで

まずはFFmpegをダウンロード

http://ffmpeg.zeranoe.com/builds/

使ってるOSの32/64bitに注意してStaticを落とせばよかです。

変換用バッチファイルを作成

新規テキストファイルを作って、この内容を書いて、拡張子を,batで保存するだけです。
FFmpegを絶対パス指定しているので、どこにバッチファイルを保存しても大丈夫。
ついでに、出力はデスクトップに変換元ファイルと同じファイル名で出てきます。

肝心の変換設定は6行目。
サンプルは何か(音声・動画)からmp3形式に音声だけ取り出すものです。

※FFmpegの保存先にあわせて、「C:\Users\xxxx\Desktop\ffmpeg\bin\ffmpeg.exe」を読み替えてください。

@ECHO OFF

:FILEDROP
ECHO ファイル受け取り
cd C:\Users\xxxx\Desktop
:REPEAT
C:\Users\xxxx\Desktop\ffmpeg\bin\ffmpeg.exe -i %1 "%~n1.mp3"
if "%~2"=="" GOTO EXIT
shift
GOTO REPEAT
:EXIT
pause

※2013/3/30 追記 ファイルの複数ドラッグ&ドロップに対応しました。

変換設定を色々変えてみる

例1)640x480の画質そこそこmp4作成
C:\Users\xxxx\Desktop\ffmpeg\bin\ffmpeg.exe -i %1 -r 30 -b 10000k -s 640x480 -vcodec mpeg4 "%~n1.mp4"

例2)320x240の画質まあまあ携帯プレビュー用mp4作成(ファイル名の後ろに320x240つけて出力する)

C:\Users\xxxxx\Desktop\ffmpeg\bin\ffmpeg.exe -i %1 -r 30 -b 700k -s 320x240 -vcodec mpeg4 "%~n1_320x240.mp4"

h.264使うのはそもそもコーデック導入が面倒だったので見なかったことにした。

変換できる形式は?

たくさんあるので、デスクトップにテキストファイルで保存してみるが吉
cd C:\Users\xxxx\Desktop
C:\Users\xxxx\Desktop\ffmpeg\bin\ffmpeg.exe -formats > ffmpeg_formats.txt

使えるコーデックは?

デスクトップにテキストファイルで(ry
cd C:\Users\xxxx\Desktop
C:\Users\xxxx\Desktop\ffmpeg\bin\ffmpeg.exe -formats > ffmpeg_codecs.txt

その他オプションは?

 
C:\Users\xxxx\Desktop\ffmpeg\bin\ffmpeg.exe -help

詳しい使い方は参考URL参照。 (「最新」とありますが、これを書いてる時点では2011年06月の情報です。古いですが、基本的に変わってない所もあるので)
参考URL:http://mobilehackerz.jp/archive/wiki/index.php?%BA%C7%BF%B7FFmpeg