七転び八起き ~別に飽きてないよブログ~ -3ページ目

七転び八起き ~別に飽きてないよブログ~

人生浮きっぱなしの俺が綴るクソ日記。
たまには有意義な情報が垂れ流せるようアンテナ張って生きたい。

このげそがマイブームでゲソ!

/戦場を真紅に染めてやろう!\(手についた大量の一味を見ながら)

毎度ながら食いすぎて飽きるフラグがプンプンするぜぇ
SQLite3で日付データを扱うに当たってUTCだかJSTだかいまいち理解していなかったのでお勉強
暇だったので引用元までしっかり書いてみた
というか引用だけ纏めれば良かった気がしないでもない

・UTC(Universal Coordinated Time, 協定世界時)
セシウム133が91億9263万1770回振動する時間を1秒として数える国際原子時
GMTとのずれを調整するための閏秒を追加したものがUTC
>>e-words.jp

・JST(Japan Standard Time, 日本標準時)
協定世界時より9時間進んでいる。
>>e-words.jp

・GMT(Greenwich Mean Time, グリニッジ標準時, 世界標準時)
経度0度にあるイギリス・ロンドンのグリニッジ天文台での平均太陽時
各国の標準時は、グリニッジ標準時を基準として決められている
現在は原子時計を元に算出される協定世界時(UTC)に役割を譲っている
>>kotobank.jp www.weblio.jp

・標準時(タイムゾーン)
国または地方を単位とし、その内部で共通に用いる時刻
UTC(協定世界時)を基準とし、これと1時間の整数倍だけ違う平均太陽時
>>kotobank.jp ja.wikipedia.org

その他参考になったページ
標準時について UTC, JST, TAI, GMT
GMT と UTC の違いは何 ?
LPIC試験対策勉強の進捗を備忘録も兼ねて書くつもりだったけどEXAM PRESSのLinux教科書が解説+リファレンスとしても使える気がしたのでやめた。
面倒になったわけではないぞ決して。
操作例まで網羅してあるこの本は今後長らくお世話になると思われる。

今日、AndroidでHTTPを利用するプログラムが引っかかったのでメモ
DefaultHttpClient#executeを実行した段階でNetworkOnMainThreadExceptionが発生
調べるとメインスレッドでネットワーク通信をしようとすると例外が投げられるとのこと。
static {
  StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().permitAll().build());
}
を挿入してやればこの例外自体は抑制できる。が、メインスレッドがブロックしている間は一切の操作を受付なくなるのであくまでテスト用で。

ここ最近、JavaScriptをごりごり書いてるので近いうち自分なりにお作法をまとめたい。
LPIC Level1の勉強始めました。
いつもどおり中古の問題集をAMAZONで漁る。
1~100円のものを3冊かったら10年前の物が2冊と5年前の物が1冊手元に。(情報の鮮度的に大丈夫か!?)
まぁ時間に余裕あれば最新の問題集も買えば良いさ。

そんな感じで勉強開始したのが先週の土日の話。
俺にしては珍しく学んだ事をシコシコ紙にまとめてて時間の無駄を痛感したのであらためてここでザックリまとめようと思う。
あ、使用環境はDebian系のUbuntu 11.04です。
そのうちRedHat系のCentOSも触ってみようと思ってます。

申し訳程度の基礎知識
ターミナルのショートカット Ctrl + Alt + T
ウィンドウの最大化 Alt + F10
ログアウトコマンド gnome-session-save --logout
バージョン情報 /etc/lsb-release

最初の方は紙にまとめてしまったのですっとばしての第6章
---- マウント ----
起動時のマウント情報 /etc/fstab

# /etc/fstabを表示
# 単純に表示

cat /etc/fstab
# コメント行を排除して表示
grep -v '^#' /etc/fstab
sed '/^#/d' /etc/fstab
# 結果を列で分割して表示
grep -v '^#' /etc/fstab | tr -s ' ' ':' | cut -d: -f1

# USBフラッシュメモリをマウントしてみる
# まずUSBフラッシュメモリのデバイスファイルを特定する

sudo fdisk -l
dmesg | grep -i attach
# こんな感じで。今回は/dev/sdb1だったとする

# マウント先となるマウントポイント(普通のディレクトリ)をあらかじめ作成(場所によってはroot権限が必要)
mkdir mountpoint

# マウント
sudo mount /dev/sdb1 ./mountpoint
# 以降はデバイスの種類を意識せずアクセス可能

# ファイルシステム毎の情報を表示してマウントされているか確認
df

# アンマウント
sudo umount /dev/sdb1

※書いてる私自身も初学者なので内容の正確性には自信がありません。あしからず
今日はこんなもんで終了。
マウントで遊びすぎた・・・
ファイルシステムの項目なげーっす
ぼちぼち躓いたので未来の俺のためにログを残す。

結論から述べてしまうと
cronから呼びだすシェルスクリプトの文字コードがUTF-8(BOM有り)になっており
ファイル頭のインタープリタの指定(文字列"#!"から始まる1行)が正しく認識されていなかった。
(ちなみにBOMとは、ファイル頭3バイトに付加されてUnicodeである事を表す。0xEF 0xBB 0xBF)

その時のシェルスクリプト
----------------"update.sh"---------------------
#! /bin/bash ←このインタープリタの指定が
/usr/local/php5.3/bin/php /フルパス/update.php
------------------------------------------------

その時のcron実行結果(メールで受信して確認できる)
/フルパス/update.sh: line 1: #!/bin/bash: No such file or directory
↑正しく認識できていないじゃなイカ!

というお話でした。

解決方法としては単純に文字コードをUTF-8(BOM無し)にするか
1行目に改行を入れて2行目にインタープリタの指定を持ってくれば一応動きますがエラーが出ます。
/フルパス/update.sh: line 1: : command not found

以上。

以下蛇足。
マニュアル

$七転び八起き~やりなおしブログ~
単純に実行するだけであれば「実行ファイルパス」に直接、phpファイルのパスを記述してやればOK
しかし、この方法ではPHP5.2で実行されてしまうため(2013年1月22日現在)PHP5.3以降に実装された機能を使いたい場合はシェルスクリプトを介してPHP5.3を呼び出す必要がある。

シェルスクリプトの注意点
・所有者(オーナー)の呼出権限+実行権限が必要
・改行コードはLF(ラインフィード, 0x0A)