「February2015」の投稿を表示中

SambaをWindowsに表示させるのに一苦労

こうやって表示させたい 昔、自分のラップトップ(Ubuntu)にSambaサーバを構築したのですが、そのとき、Windows側に表示させるのに結構苦労して、新しくしたデスクトップで再び使おうとしたら、どうやってやったか忘れてしまい、少し時間がかかってしまいました。 =ここから昔の話= Sambaのインストール手順は普通だったのですが、そこからWindowsに認識させるのにかなり苦労して、最後はUbuntu側のファイアウォールを以下のように一部無効にしたことを覚えています。 sudo ufw allow 137/udp sudo ufw allow 138/udp sudo ufw allow 139/tcp sudo ufw allow 445/tcp =余談以上= ここを押す 今回忘れたのはそれじゃなくて、どうやってネットワークドライブを(右上の図のように)表示させるかです。 答えは簡単でWindows 8ではドライブが表示される画面に行き、上の「ネットワーク・ドライブの割り当て」を押し、ドライブ文字を選択した後、Sambaフォルダがあるネットワークの場所を記入します。 私の場合は「\\192.168.xx.xx\フォルダ名(フォルダまでのパスはいらない)」と記入するだけでした。が、肝心のシェアフォルダの名前および場所を忘れてしまい、/etc/samba/smb.confのサンバ構成ファイルを開き、実際に場所を確認しなくてはなりませんでした。そうしたら無事つながりました。正直、次、同じことをやろうとしても忘れそうですね。 =追記(2017年3月28日)= 約2年ぶりにSambaを使おうとしたところ、Windows 10では前と同じ手順でネットワークドライブを追加できなかったので手こずりました。 Windows 10ではなぜか「\\192.168.xx.xx\フォルダ名」ではなく、「\\192.168.xx.xx\シェア名」じゃないと追加できませんでした。 シュア名はインストールされていればWebmin、なければ「smbclient -L 127.0.0.1」で確認できます。

PHPで全角&半角ストリングの文字数を取得する

PHPでは英文ストリングの文字数はstrlen関数で取得することが多いですが、これでは全角文字が「2文字」として認識されてしまいます。 例: echo strlen(“あいうえお”);//”10″が出力されます。 echo strlen(“abcde”);//”5″が出力されます。 これは半角文字は1バイト、全角文字は2バイトで表されるためです。 全角文字も半角文字も「1文字」として認識させるためにはmb_strlen関数を使います。 例: echo mb_strlen(“あいうえお”);//”5″が出力されます。 echo mb_strlen(“abcde”);//”5″が出力されます。 正しく動作しない場合 なお、動作させるサーバーのPHPの内部エンコーディングは”UTF-8″でないと正しく動作しない可能性があります。内部エンコーディングは.htaccessファイルやmb_internal_encoding関数で設定することが可能ですが、php.iniであらかじめ設定しておくと手っ取り早いです。 php.iniファイルにmbstring.internal_encodingが”EUC-JP”とかではなく、以下のように”UTF-8″として設定されていることをご確認ください。 mbstring.internal_encoding = UTF-8

管理人のサイト作成回想記

私、管理人が始めて本格的なサイトを作ったときは全てHTMLファイルで済ませていて、PHPやCMSなどは一切使用していませんでした。 しかし、サイドバー、メニューやヘッダーなどの共通箇所をいちいち変更するのが面倒くさくなり、あるとき、全ファイルをPHPに変更させ、サイドバー、メニューやヘッダーは全て<?php require_once(“header.php”);?>などで済ませるようにしました。また、.htmlでもアクセスできるように、.htaccessなども変更しました。 しかしそれでは肝心のファイル数は減らず、管理は相変わらず大変でした。そこで、サイトのmetadescriptionやmetakeywords、コンテンツなどのデータを抽出し、MYSQLデータベースに保存するスクリプトをPHPで書き、また、そこから自動的にページを生成するスクリプト(data.php)も書きました。このdata.phpに?action=exampleなどのクエリーを渡すと指定されたページをロードするようにしました。しかし、それでは長ったらしいurlになってしまうため、そこは.htaccessで何とか対応させました。 これで管理はずいぶんと楽になったわけですが、Wordpressのプラグインやユーザー管理などの機能に憧れ、ある日、サイトをWordpressに移行させることを決めました。 まずはWordpressテンプレートを一から作成することからはじめ、その後はデータの引越しをしました。簡単そうに聞こえますがこれには丸2日かかりました。メタデータなどのデータの引越しにはかなり悩まされましたが、SEOプラグインやMYSQLのSQL文エクスポート・インポート機能を使い、何とかやりのけました。 その過程でWordpressの良さや良くないところをしみじみと感じました。まずは投稿内でphpコードを使用できないのがかなり不満でした。投稿内で指定したphp変数でテンプレの一部を変更するようなことをやりたかったのですが、phpを埋め込めないんじゃと思い、ほかの方法を模索しました。 幸い、Wordpressにはカスタムフィールドという機能があり、投稿画面で変数を指定することは出来ました。この機能がなかったら本当にWordpressやめようかなと思ったんですが、救われましたね。 何せ、Wordpressには便利なプラグインがたくさんありますから。本当に使ってて便利です。

FFmpegを利用してTSファイルをMP4に変換する

FFmpegは動画や音声などを変換できるフリーウェアです。もともとはUNIXで開発されたものなので、LinuxやMacは当然、Windowsでも使えるパッケージがリリースされています。 私はWindowsを主に使用しているので、Windowsでの変換方法を紹介したいと思います。 ご自身で試される場合は自己責任でお願いいたします。 右上もしくは左上のパッケージを選択してください まず用意するものはFFmpegです。パッケージは公式サイトからダウンロードできます。ウィンドウズ用はこのように6種類用意されています。使用しているOSが32ビットOSの場合は左上のStaticと書かれたパッケージ、64ビットOSの場合は右上のStaticと書かれたパッケージでおkです。パッケージは7zで圧縮されているため、展開には7-Zipというソフトが必要です。7-Zipは、公式サイトからダウンロードできます。 FFmpegのパッケージの名称は長ったらしいので、ダウンロードしたあとは、ディレクトリの名称を「ffmpeg」などの簡単な名前に変更し、できるだけ分かりやすいところに保存しておきます。(例、C:ffmpegやD:ffmpeg) OSとデータを別々に保存している場合はデータ用のドライブ(D:など)に保存しておいても良いと思います。 あとは簡単に変換するための環境を整えるだけです。私の場合はBATファイルを作りました。 内容はこんな感じです。 for %%a in (“*.ts”) do D:\ffmpeg\bin\ffmpeg.exe -i %%a -b:v 3000k -acodec ac3 -ar 48000 -threads 4 -vcodec libx264 D:\encoded\%%~na.mp4 環境が異なる場合、このままコピペしても動きません。 改行すると動きませんのでご注意ください。また、ファイル名は全角の場合もしくは半角のスペースが含まれている場合、エラーを起こすことがあります。 コード解説 コード内の「for %%a in (“*.ts”) do」は簡単に言えば、「フォルダ内にTSファイルがある限り次の処理をする」という意味です。ファイルタイプを.tsに限定したくないは(“*.*”)としておけばいいです。 次にffmpeg.exeの場所を指定します。私の場合はD:\ffmpeg\bin\ffmpeg.exeです。必要に応じてパスは変更してください。 あとは引数を指定するだけです。 BATを保存する際は「名前をつけて保存」を選択して、ファイルの種類を「全てのファイル」としておいてください。 今回使用した引数+使えそうな引数の説明 -i 入力ファイル。今回はフォルダー内のtsファイル全てが対象なので%%aとしておきます。 -b:v ビデオのビットレート。私の場合は1000kで十分です。高画質をお求めの方はより高い値に設定してください。 -threads スレッド数。私は8スレッドあるCPUを使用しているので「4」と設定しておきました。 -acodec オーディオコーデック。AC3でよいかと。 -ar オーディオ周波数。48000で十分だと思います。 -vcodec 今回はH.264のコーデック、「libx264」としておきます。MPEG-2に変換したい場合は、「mpegvideo2」と指定してください。使えるコーデックの一覧は本家サイトに詳しく書かれています。 -s 出力画面サイズ 例1920×1080。入力と同じサイズでいいため、今回は指定していません。フルHDをHDにしたい場合は1280×720にして置くと良いと思います。 -aspect 例16:9。これも今回は指定しません。 -b:a オーディオビットレート。必要に応じて指定してください。 -r フレームレート。指定しないと入力と同じフレームレートになります。 -ac オーディオストリーム数。映画など2ヶ国語放送の場合は指定する必要があるかも。 -t 動画の長さ指定。秒もしくはhh:mm:ss[.xxx]で指定できます。 変換中、コマンドラインはこんな感じです。fpsがあまりにも低い場合、(20以下とか)、電気を多量に消費する上にものすごく時間がかかるので設定、もしくはパソコンを変えたほうがいいでしょう。 引数を指定したあとは出力ファイルの場所と形式を指定します。 私の場合はデータドライブ内のencodedというフォルダーに保存しています。(D:encoded) 出力ファイル名は「%%~na.mp4」にしておくと「入力ファイル名.mp4」になります。 ビデオコーデックを変更した場合は拡張子を変更することを忘れないでください。 コーデックを「mpegvideo2」にした場合は「%%~na.mpeg」にしておいてください。 次に、完成したコードをノートパッドなどのテキスト編集ソフトに貼り付けて、.batとして保存します。コードに全角の記号が混在したり、必要ないところに改行したりするとコードが実行されない可能性があります。ノートパッドで保存する際は.txtファイルとして保存されないよう、「名前をつけて保存」を選択して、ファイルの種類を「全てのファイル」としておいてください。 BATファイルの名前は、用途別やコーデック別に「h264-1000kbps.bat」、「mpeg2-1000kbps.bat」、「h264-3000kbps.bat」などとしておくと便利でわかりやすいです。例えば、HDじゃない動画を変換したい場合は当然低いビットレートで済ませたほうが効率が良いです。逆に高画質ファイルはより高いビットレートで変換したほうが良いため、複数のBATを用意しておくといいでしょう。 BATファイルは変換するファイルと同じフォルダーに置いてください。録画などをされている方は録画ファイルなどがそれにあたるでしょう。 BATは実行されるとフォルダ内の全てのTSファイルを変換します。変換に必要のないファイルはフォルダーから除いておきましょう。 なお、ファイル名に半角スペース、全角スペースが含まれるとエラーになります。 変換には時間がかかりますので途中でパソコンがスリープ状態にならないよう、設定しましょう。