移動しました。
http://tomofumi.blog.jp/
移動の理由ですが、bloggerは使いづらいです。
ソース置き場
2014年6月30日月曜日
2014年5月9日金曜日
node.jsでExpressコマンドが通らない
日本のサイトで検索したけど、解決には至らず。。。
海外のサイト見たらちゃんと解決方法あった。
StackOverflow
やり方が悪いのかと途中SSD消去して再度OS入れなおして~などやってしまった。。
1回のコンパイルに4時間かかるので、ここで2日かけてしまった。勿体ない。
海外のサイト見たらちゃんと解決方法あった。
StackOverflow
sudo npm install -g express-generator
やり方が悪いのかと途中SSD消去して再度OS入れなおして~などやってしまった。。
1回のコンパイルに4時間かかるので、ここで2日かけてしまった。勿体ない。
2014年5月8日木曜日
Raspberry PI+Node.js 備忘録
自宅にRaspberry PI TypeBが届いた。
Debian系ディストリビューションのRaspbianをヨドバシで買ったSDカードに焼いて起動までは問題なく完了
その後、
で、Node.js
こちらのブログを参考に最新バージョンのインスコに挑戦してみる。
で、ここで妙なエラー
エラー文言をグーグル先生で調べてみたらStackOverflowに同じ現象に対する質問と解答があった。
解答にしたがってcommon.gypiの14行目に下記パラメータを追記
今度はうまくいった。
それにしてもmakeの時間かかりすぎ。
4時間とか・・・。
Debian系ディストリビューションのRaspbianをヨドバシで買ったSDカードに焼いて起動までは問題なく完了
その後、
# sudo apt-get update
# sudo apt-get upgrade
# sudo apt-get install vim
# sudo apt-get upgrade
# sudo apt-get install vim
で、Node.js
こちらのブログを参考に最新バージョンのインスコに挑戦してみる。
# wget http://nodejs.org/dist/v0.11.13/node-v0.11.13.tar.gz
# tar -zxf node-v0.11.13.tar.gz
# cd node-v0.11.13
# ./configure
# tar -zxf node-v0.11.13.tar.gz
# cd node-v0.11.13
# ./configure
で、ここで妙なエラー
gyp: name 'arm_version' is not defined while evaluating condition 'arm_version==7' in /home/pi/node-v0.11.13/deps/v8/tools/gyp/v8.gyp while loading dependencies of /home/pi/node-v0.11.13/node.gyp while trying to load /home/pi/node-v0.11.13/node.gyp
解答にしたがってcommon.gypiの14行目に下記パラメータを追記
'arm_version%' : '1',
今度はうまくいった。
それにしてもmakeの時間かかりすぎ。
4時間とか・・・。
2013年6月12日水曜日
[PHP] ディレクトリ内のファイル一覧を取得する
良くある事なので調べる人も多いこのタイトル 例えば、こんなディレクトリに対してファイル一覧を取得する場合 /tmp ├ sample.txt └ sample2.txt 調べるとこんなソースがヒットする。<?php $dir = opendir( '/tmp' ); while( ( $file = readdir( $dir ) ) !== FALSE ){ echo '/tmp/'.$file."\n"; } closedir( $dir ); ?># 結果は以下のようになる. .. sample.txt sample2.txt参考:http://cos31.hatenablog.jp/entry/20071112/1194898338 こっちの場合、カレント(.)と相対パス(..)が取得されてしまうので、正規表現などでフィルタリングする必要がある。 今日、会社の同僚からもうちょいスッキリかける方法を教えてもらったのでメモ<?php foreach( glob('/tmp/*') AS $file ){ echo $file."\n"; } ?># 結果は以下のようになる。/tmp/sample.txt /tmp/sample2.txtこんな便利な関数があるとは思わなかった。 簡単なパターンマッチにも対応しているので、/tmp/*.txt みたいな抽出も可能。 こちらは絶対パスで返ってくるのでファイル名だけを取得したいのであればbasenameを噛ませる必要があるけど。。。 どっちが使いやすいかは人それぞれだと思う。
2013年4月4日木曜日
2013年2月18日月曜日
Application Cache用のサンプルソース
Application Cacheに関してはあまり纏まった記事が無い。
色々調べながら作成したソースを書いてみた。
JavaScriptアップデートチェッカー
manifestファイルについて
色々なサイトで共通しているのは拡張子をmanifestにしてhtaccessをうんたらって書いてあるけど、実際は拡張は何でも良い模様
事実、こんなコードでも普通にmanifestとして動作した。
manifest.php
html側
色々調べながら作成したソースを書いてみた。
JavaScriptアップデートチェッカー
//var ua = navigator.userAgent;
//if(!/iPad/.test(ua) && !/OS 4/.test(ua)){
// applicationCache未実装のIE9以下やオフライン時は無視する。
if( window.applicationCache && navigator.onLine) {
var div;
var making = true;
var cacheStatusValues = [];
cacheStatusValues[0] = 'uncached_リソースをキャッシュしていない状態である';
cacheStatusValues[1] = 'idle_必要な処理は無く、待機状態である';
cacheStatusValues[2] = 'checking_更新データが存在するかチェック中である';
cacheStatusValues[3] = 'downloading_更新を検出したので更新データをダウンロード中である';
cacheStatusValues[4] = 'updateready_更新データをダウンロード済みであり、キャッシュの更新が可能である';
cacheStatusValues[5] = 'obsolete_マニフェストファイルへのアクセスに失敗したので、アプリケーションキャッシュを削除した状態である';
var cache = window.applicationCache;
cache.addEventListener('cached', logEvent, false);
cache.addEventListener('checking', logEvent, false);
cache.addEventListener('downloading', logEvent, false);
cache.addEventListener('error', logEvent, false);
cache.addEventListener('noupdate', logEvent, false);
cache.addEventListener('obsolete', logEvent, false);
cache.addEventListener('progress', logEvent, false);
cache.addEventListener('updateready', logEvent, false);
function logEvent(e) {
var message;
message = 'applicationCacheイベント: ' + e.type;
message+= ', ステータス: ' + cacheStatusValues[cache.status];
if (e.type == 'error') {
message+= ' (マニフェストファイルに、おそらく構文エラーがあります)';
}
console.log(message);
console.log(e.type+'' == 'progress');
if( e.type+'' == 'progress' && making ){
making = false;
div = document.createElement('div');
style = 'position:absolute;top:0px;left:0px;width:'+ screen.width + 'px;height:'+screen.height + 'px;background-color:#000;';
div.setAttribute('style', style );
div.setAttribute('id' ,'loader');
document.getElementById('wrap').appendChild(div);
}
if( e.type+'' == 'noupdate' && making == false ){
document.removechild(document.getelementbyid('loader'));
making = true;
}
//*/
}
cache.addEventListener('updateready',function(){
if(confirm("このサイトの最新バージョンが利用可能です。アップデートしますか?")){
cache.swapCache();
// 既にOffline Cacheがあるので、リロードは高速
window.location.reload();
}
},false);
setInterval(function(){cache.update()}, 10000);
}
//}
manifestファイルについて
色々なサイトで共通しているのは拡張子をmanifestにしてhtaccessをうんたらって書いてあるけど、実際は拡張は何でも良い模様
事実、こんなコードでも普通にmanifestとして動作した。
manifest.php
<?php
header('Content-Type: text/cache-manifest; charset=utf-8');
echo <<< EOF
CACHE MANIFEST
# version 20121121aaaaaaaaaaaa
CACHE:
#キャッシュするリソース
$dirlist = array(
'img',
'css',
'js',
'xml'
);
foreach( $dirlist as $value ){
$dir = opendir( realpath( dirname(__FILE__) . "/{$value}" ) );
while( $file = readdir( $dir ) ){
if( !preg_match('/^\..*/', $file ) ){
echo "./{$value}/{$file}\n";
}
}
closedir($dir);
}
?>
NETWORK:
#キャッシュしないリソース
#外部ドメインのリソースはすべて記述する(すべての場合は、ワイルドカード *)
FALLBACK:
#代替リソース
html側
<!DOCTYPE html>
<html manifest="manifest.php">
.....
JavaScriptで月末日を求める関数
昔、OKWaveにいたbabuさんのサイトで一緒に作ったコード
「ゴミ箱」という名前のサイトに置かれているのがちょっと悲しい。
昔の頭の柔らかさが懐かしい。。
「ゴミ箱」という名前のサイトに置かれているのがちょっと悲しい。
function getMatubi(y, m) {
return (m^m>7|30)+(m==2)*~(y%(y%100>0?4:400)>0);
}
JavaScriptだと自動キャストするのでそれをうまく使ってショートコーディングしたコードだけど、これよりも短いコードは僕の頭だと考え付かないです。昔の頭の柔らかさが懐かしい。。
登録:
投稿 (Atom)