8月 12th, 2010
こんにちは、なかわけです。
いまpostgresのlargeobjectを大量にコピーする作業をしています。
元のデータベースに3000万行くらいあってそれをまるっとそっくりコピーのデータベースに流し込みます。
INSERT INTO pg_largeobject
SELECT *
FROM dblink('dbname=元データベース', SELECT * FROM pg_largeobject')
AS t1 (loid oid, pageno integer, data bytea);
最初一回でコピーしようとしたらメモリエラーで失敗しました。そりゃそうですよねw
それで3000万行を10万行ずつに分割して書いたクエリのテキストファイルを読み込ませて
データを流し込むことにしました。たとえば、以下はその中のひとつのクエリ。
INSERT INTO pg_largeobject
SELECT *
FROM dblink(
'dbname=元データベース',
'SELECT * FROM pg_largeobject ORDER BY loid, pageno LIMIT 100000 OFFSET 200000')
AS t1(loid oid,pageno integer,data bytea);
始めの方は10万行を挿入するのに1、2分程度で処理されていましたが、だんだん処理が遅くなり、
1000万行を挿入し終わったあたりでは10万行挿入するのに15分程度かかるようになってしまいました。
時間がかかってしょうがないです。どうしたものか。
ところが、とあるところからいい方法を教えてもらいました。
INSERT INTO pg_largeobject
SELECT *
FROM dblink(
'dbname=元データベース',
'SELECT * FROM pg_largeobject WHERE loid BETWEEN n AND m')
AS t1(loid oid,pageno integer,data bytea);
ORDERしてLIMIT、OFFSETするのではなく、BETWEENを使うんですね!
確かにこっちの方が処理が少ない分早そうだし、実際めちゃ早かったです。
あーよかったよかった!
Tags: dblink , pg_largeobject , Postgres Posted in web全般 | No Comments »
8月 8th, 2010
こんにちは、なかわけです。
ここ1週間エンジニアリグな作業ばかりしていましたが、
LinuxとPostgresで学んだことを箇条書き。誰得記事です。
CPUの使用率が90%を超えるとパフォーマンスが極端に落ちる
メモリの使用率が90%を超えるとパフォーマンスが落ちる
データ容量が90%を超えるとパフォーマンスが落ちる
わからないコトはいろんな記事を比較して調べる
必ずバックアップを取ってからファイルを削除する
ラージオブジェクトを使う場合はそのときのリスクを考える
pg_dumpは不正データもdumpする可能性がある
ラージオブジェクトを含むdumpデータはrestoreに時間がかかる
この1週間かなり勉強になったがもう二度とやりたくない。
Tags: Linux , Postgres Posted in web全般 | No Comments »
6月 19th, 2010
こんにちは、なかわけです。
DSゴーストトリックのゲームレビューです。
この作品は逆転裁判を作ったゲームクリエイター巧舟さんが作った新作です。
2010/06/19
事前に体験版をプレイしていたけど、
まさか本当に主人公セシルが死んでいるところからスタートとは思わず状況が飲み込めなかったです。
でも、その気持ちが主人公と同じ気持ちなんだな~と思いました。
ゲームシステムは極めて簡単で「トリツク」と「アヤツル」のツーアクションしかないです。
これだけでゲームができちゃうなんて、うまいな~と思います。
決められた時間内に、いろんなモノに「トリツク」・「アヤツル」を繰り返し危機を乗り越えます。
ゲーム要素としてはパズルに近いです。
いま犬のところまで進みましたが、まだまだ事件が見えてない段階です。
どうやら2日くらいでクリアした方もいらっしゃるみたいだけど短いのかな。
(続きを読む…)
Tags: DS , カプコン , ミステリー Posted in ゲームレビュー2010 | No Comments »
6月 8th, 2010
こんにちは、なかわけです。
自分的な作業メモです。
対象のディレクトリのパーミッションは合っているのに
mkdir()したときのPermission deniedのエラーが出ました。
いろいろいろいろ調べてやっと解決しましたが、何が原因だったのかわかりません。
ひょっとしたら私の認識が間違っているかもしれません(ただの勘違い?)。
詳しい人コメントください。
もともとのコードは以下のようなものでした
はじめにimagesディレクトリは存在していて、mkdir()でchocolateディレクトリを作るという設定です。
まず、Hogeクラスにmkdir()の処理が書いてあります。
class Hoge{
public function __construct(){
//コンストラクト的な処理
}
public function makeDir(){
mkdir('images/chocolate', 0755, true);
}
}
それで、Permission deniedのエラーが発生したときのコードFugaクラス
require_once 'Hoge.php'
class Fuga {
public function __construct(){
//コンストラクト的な処理
}
public function piyo(){
$hoge = new Hoge();
$hoge->makeDir();
}
}
これだとPermission deniedのエラーがでてしまいましたが、
上記のFugaクラスを以下のように変更したら、エラーが無くなりました
require_once 'Hoge.php'
class Fuga {
protected $hoge;
public function __construct(){
//コンストラクト的な処理
$hoge = new Hoge();
}
public function piyo(){
$this->hoge->makeDir();
}
}
もともとimagesディレクトリの所有者はApacheだったんだけど、
メソッド内でHogeをnewするとmkdir()したときのディレクトリの所有者がApacheじゃなくなるのかなぁ
とか思ったんですが、じつは書き直す前のコードでもちゃんと動いている時期があって
phpのバージョンが上がったからなのかなんなのか・・・。
今度同じような問題にぶつかったときに詳しく調べようと思います。
ちょっと今日はもう時間がないので解決したというメモだけで・・・。
Tags: mkdir() , Permission denied , pho Posted in php | No Comments »
5月 28th, 2010
こんにちは、なかわけです。
jQueryの.load()の挙動がブラウザによってまちまちです。
実際、どんな感じか。
index.html
<html>
<body>
<div>
<a href="hoge.html">hoge</a>
<a href="fuga.html">fuga</a>
<a href="piyo.html">piyo</a>
</div>
</body>
</html>
deploy.html
<html>
<hed>
<script src="jquery.js"></script>
<script>
$(function(){
$('div').load('index.html div a', function(){
alert('ヾ(*´∀`*)ノロードできた~');
});
});
</script>
</head>
<body>
<div></div>
</body>
</html>
で、主なブラウザ挙動は以下のような感じ。
Firefox
hoge、fuga、piyoのリンクが出力されて、アラートが2回
Chrome
なにも出力されずに、アラートが1回
Safari
hoge、fuga、piyoのリンクが出力されて、アラートが1回
この結果からみるとSafariの挙動が正しいっぽいけど、
なんでこうもまちまちなのかね~。
jQueryには珍しくブラウザ間の差が吸収されていないのでしょうか。
詳しい方、コメントくださいな!(いつもすいません・・・。)
Tags: .load() , jQuery Posted in JavaScript | No Comments »
5月 27th, 2010
こんにちは、なかわけです。
タイトルのことをしようとすると以下のようなコードになると思います。
HTML
<input type="radio" name="sweets" value="1"/> チョコレート
<input type="radio" name="sweets" value="2"/> チョコラーテ
<input type="radio" name="sweets" value="3"/> ショコラ
Java Script
$(function(){
//ラジオボタンにchangeイベントを結びつける
$('input').change(function(){
console.log('Buono!');
});
//ラジオボタンのひとつ目をクリック
$('input:first').click();
});
このままでもラジオボタンのひとつ目は選択されますが、
Buono!は出力されません。
これを以下のように変更するとBuono!も出力されてラジオボタンのひとつ目も選択されます。
Java Script
$(function(){
//ラジオボタンにchangeイベントを結びつける
$('input').change(function(){
console.log('Buono!');
});
//ラジオボタンのひとつ目をクリック :ここを変更!
$('input').get(0).click();
});
はい、これで期待した挙動にはなりましたが、なぜでしょう?
なぜなぜ?
:firstとget(0)の挙動の違いなんでしょうけど、私にはわかりません・・・。
理由がわかる方コメントいただけると助かります。
Tags: JavaScript , jQuery Posted in JavaScript | 2 Comments »
5月 3rd, 2010
こんにちは、なかわけです。
とあるコンテストに応募した作品です。
作った当時は「よし!なかなか頑張った!」と思ったけどいま見るとバラバラですねw
結果はもちろん落選です。
自分は映像作家になりたいわけではないですが、
スキルアップのためにも定期的にこういうコンテストに応募できるといいなぁと思ってます。
Tags: アニメーション , コンテスト Posted in works | No Comments »
5月 3rd, 2010
こんにちは、なかわけです。
以前とあるコンテストに応募したアニメーション作品です。
とある事情によりクリエイター名を変えて応募しました。
結果はもちろん落選ですw
Tags: アニメーション , コンテスト Posted in works | No Comments »
5月 1st, 2010
こんにちは。なかわけです。
徹夜して眠いです。
そんな中、auケータイで「リクエストされたページは表示できません」という謎の不具合にぶち当たりました。
状況としては、あるSSLページから非SSLページへ移動しようとすると発生するというだけのシンプルな話。
(続きを読む…)
Tags: au , SSL , ケータイ Posted in web全般 , ケータイ | No Comments »
4月 17th, 2010
こんにちは、なかわけです。
XBOX360のノーモア★ヒーローズ 英雄たちの楽園のゲームレビューです。
2007年12月にWiiで発売されたタイトルのリメイク版です。
PS3版と同時発売でしたがXBOX360版を購入しました。
2010/04/17
初回7時間プレイした段階での気付いて点・感想を箇条書き
(続きを読む…)
Tags: XBOX360 , アクション , マーベラスエンターテイメント , 殺し屋アクション Posted in ゲームレビュー2010 | No Comments »