FC2ブログがソースをオープンソース(MITライセンス)にて公開したとのこと。
【ブログ】「FC2ブログ」をオープンソースで公開!より自由にカスタマイズ可能!
githubのソースコードはこちら。
https://github.com/fc2blog/blog
2014年3月21日金曜日
2014年3月13日木曜日
些末なコードレビュー - naoyaのはてなダイアリー
些末なコードレビュー - naoyaのはてなダイアリー
これは確かに難しい問題だと思う。スキルの問題ではあると思うが、レビューの際には致命的な設計上の欠陥よりも、些細な書き方の悪さのほうが気づきやすいということもあって、こういう感じのレビューになりがちなのは反省しなければならないところだ。
ただ、とは言えさすがにかんべんして欲しいレベルのひどい書き方もあるからな~。
例えば、
とかもうかんべんして欲しい感じ。あんまり細かく指摘し過ぎると宗教みたいになるのでさじ加減が難しいところ。
これは確かに難しい問題だと思う。スキルの問題ではあると思うが、レビューの際には致命的な設計上の欠陥よりも、些細な書き方の悪さのほうが気づきやすいということもあって、こういう感じのレビューになりがちなのは反省しなければならないところだ。
ただ、とは言えさすがにかんべんして欲しいレベルのひどい書き方もあるからな~。
例えば、
- キャメルケース(getHogeなど)とスネークケース(get_hogeなど)が同じモジュールに混在している
- unless句の中が複雑すぎてベン図を書かないとわからないレベル(unless(!$hoge && (!$bar || $foo))など)
- 何でもかんでも変数をぶち込んだ巨大ハッシュリファレンスをテンプレートに渡している
- 一つの関数が巨大化しすぎてもう読むのが嫌なレベル
とかもうかんべんして欲しい感じ。あんまり細かく指摘し過ぎると宗教みたいになるのでさじ加減が難しいところ。
2014年3月4日火曜日
ビットコイン取引所Mt. Goxのソースコード
ロシア人のハッカーがビットコイン取引所Mt. Goxのソースコードの取得に成功したようだ。
ロシアのハッカー、破綻したMt. Goxのソースコードと顧客データを入手したと主張
ソースコードはこれ。PHPで書かれているようだ。
http://pastebin.com/W8B3CGiN
function一覧はこんな感じ。業務がわからないと、内容さっぱりわからないな。
public static function update() {
public static function getRate() {
public static function mergeSmallOutputs() {
public static function splitBigOutputs() {
public static function getTxInput($amount, $inputs = array()) {
public static function getPaymentAddr($payment_id) {
public static function getNullAddr($priv = false) {
public static function getVerboseAddr($wallet, $description, $ipn = null, $user = null, $callback = null) {
public static function getPermanentAddr($wallet, $user = null) {
public static function getAddrWithOptions(\User\Wallet $wallet, array $options = [], \User $user = null) {
public static function optionAddrEvent($addr, $hash_n, $block, $amount) {
public static function optionAddrSellEmail($user, $oid, $type, $data = null) {
public static function checkOrders() {
public static function getAddressForOrder($order) {
public static function sendAmount($address, $amount, $green = null, $inputs = array(), $fee = 0) { public function getWalletHost() {
public static function parseVersion($v) {
public static function _Route_getStats($path) {
public static function checkNodes($sched) {
public static function importBlockClaim($hash, $n, $tx) {
public static function parseScriptPubKey($pubkey) {
public static function importBlock($id) {
public static function importBlocks($scheduler) {
public static function insertMisingAvailableOutputs($addr) {
public static function runAddrTriggers() {
public static function getAddressBalance($addr) {
public static function getAddressOutputs($addr) {
public static function claimPrivateSha256($wallet, $priv, $desc = null) {
public static function claimWalletFile($wallet, $data, $desc = null) { public static function claimPrivate($wallet, $priv, $desc = null) {
public static function makeNormalTx($input, $amount, $final_output, $remainder, $fee = 0) {
public static function publishTransaction($txs) {
public static function broadcastPublished() {
public static function _MQ_broadcastPublished($info) {
public static function broadcastTransactions() {
public static function getTotalCount() {
public static function _Route_bitcoind($path) {
public static function _Route_handleTx() {
public static function getTablesStruct() {
ざっと見ていって適当にメモってみると、
balanceというのは残高のこと。
100000000などのマジックナンバーが何を意味しているのかよくわからない。1億ってなんだ?
$beanやらaddressというのは何を表しているのだろう?
頑張ってみれば、プログラムの穴も見つけられるかもしれないが、適当に覗いただけだと
よくわからんな。業務内容がよくわからないし。
ロシアのハッカー、破綻したMt. Goxのソースコードと顧客データを入手したと主張
ソースコードはこれ。PHPで書かれているようだ。
http://pastebin.com/W8B3CGiN
function一覧はこんな感じ。業務がわからないと、内容さっぱりわからないな。
public static function update() {
public static function getRate() {
public static function mergeSmallOutputs() {
public static function splitBigOutputs() {
public static function getTxInput($amount, $inputs = array()) {
public static function getPaymentAddr($payment_id) {
public static function getNullAddr($priv = false) {
public static function getVerboseAddr($wallet, $description, $ipn = null, $user = null, $callback = null) {
public static function getPermanentAddr($wallet, $user = null) {
public static function getAddrWithOptions(\User\Wallet $wallet, array $options = [], \User $user = null) {
public static function optionAddrEvent($addr, $hash_n, $block, $amount) {
public static function optionAddrSellEmail($user, $oid, $type, $data = null) {
public static function checkOrders() {
public static function getAddressForOrder($order) {
public static function sendAmount($address, $amount, $green = null, $inputs = array(), $fee = 0) { public function getWalletHost() {
public static function parseVersion($v) {
public static function _Route_getStats($path) {
public static function checkNodes($sched) {
public static function importBlockClaim($hash, $n, $tx) {
public static function parseScriptPubKey($pubkey) {
public static function importBlock($id) {
public static function importBlocks($scheduler) {
public static function insertMisingAvailableOutputs($addr) {
public static function runAddrTriggers() {
public static function getAddressBalance($addr) {
public static function getAddressOutputs($addr) {
public static function claimPrivateSha256($wallet, $priv, $desc = null) {
public static function claimWalletFile($wallet, $data, $desc = null) { public static function claimPrivate($wallet, $priv, $desc = null) {
public static function makeNormalTx($input, $amount, $final_output, $remainder, $fee = 0) {
public static function publishTransaction($txs) {
public static function broadcastPublished() {
public static function _MQ_broadcastPublished($info) {
public static function broadcastTransactions() {
public static function getTotalCount() {
public static function _Route_bitcoind($path) {
public static function _Route_handleTx() {
public static function getTablesStruct() {
ざっと見ていって適当にメモってみると、
balanceというのは残高のこと。
100000000などのマジックナンバーが何を意味しているのかよくわからない。1億ってなんだ?
$beanやらaddressというのは何を表しているのだろう?
頑張ってみれば、プログラムの穴も見つけられるかもしれないが、適当に覗いただけだと
よくわからんな。業務内容がよくわからないし。
2014年2月4日火曜日
FindBinモジュールの使い方
FindBinモジュールはスクリプトの実行ファイルやディレクトリを変数に格納するモジュール。
以下のコマンドを実行してみるとわかりやすいかと。
vim /hoge/test.pl
で以下のファイルを作成。
use FindBin;
print "Bin: $FindBin::Bin\n";
print "Script: $FindBin::Script\n";
コマンドを実行。
perl /hoge/test.pl
実行結果:
Bin: /hoge
Script: test.pl
cpanサイトはこれ。
http://search.cpan.org/~rjbs/perl-5.18.2/lib/FindBin.pm
以下のコマンドを実行してみるとわかりやすいかと。
vim /hoge/test.pl
で以下のファイルを作成。
use FindBin;
print "Bin: $FindBin::Bin\n";
print "Script: $FindBin::Script\n";
コマンドを実行。
perl /hoge/test.pl
実行結果:
Bin: /hoge
Script: test.pl
cpanサイトはこれ。
http://search.cpan.org/~rjbs/perl-5.18.2/lib/FindBin.pm
Path::Classモジュールの使い方
Path::Classモジュールの使い方がよくわからなかったので調べていたら、CPANのSYNOPSISを見るのが一番わかりやすいという結論になった。
このモジュールはWindowsでもLinuxでもディレクトリやファイルのパス名をよしなに生成してくれるモジュールのようだ。
以下のワンライナーを実行してみればわかりやすいかと。
perl -MPath::Class -e '
my $dir = dir('foo', 'bar');
my $file = file('bob', 'file.txt');
print "dir: $dir\n";
print "file: $file\n";
'
出力結果:
dir: foo/bar
file: bob/txt
これがwindows環境で実行すれば
dir: foo\bar
file: bob\txt
このモジュールはWindowsでもLinuxでもディレクトリやファイルのパス名をよしなに生成してくれるモジュールのようだ。
以下のワンライナーを実行してみればわかりやすいかと。
perl -MPath::Class -e '
my $dir = dir('foo', 'bar');
my $file = file('bob', 'file.txt');
print "dir: $dir\n";
print "file: $file\n";
'
出力結果:
dir: foo/bar
file: bob/txt
これがwindows環境で実行すれば
dir: foo\bar
file: bob\txt
2014年1月31日金曜日
Setting locale failedの対処法
サーバーでPerlのコマンドを打つたびにこのような表示が出て困っている。
$perl -e 'print "hoge"'
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "*******"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
どうやら以下の手順で直すことができるようだ。
$vim ~/.bashrc
でファイルに下記を記載する。
export PERL_BADLANG=0
$source ~/.bashrc
これで直った。
$perl -e 'print "hoge"'
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "*******"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
どうやら以下の手順で直すことができるようだ。
$vim ~/.bashrc
でファイルに下記を記載する。
export PERL_BADLANG=0
$source ~/.bashrc
これで直った。
2014年1月6日月曜日
スクリプトの終了コード11のエラー
最初ググり方がわからなくて当惑したのでメモ。
このエラーはSignal 11、segmentation faultとして知られているエラー。
つまり割り当てられていないメモリを参照しようとしたときに起きるもの。下記参照。
http://linuxjf.sourceforge.jp/JFdocs/GCC-SIG11-FAQ/sig11faq.html
http://sonic64.com/2005-04-19.html
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1288299487
このエラーはSignal 11、segmentation faultとして知られているエラー。
つまり割り当てられていないメモリを参照しようとしたときに起きるもの。下記参照。
http://linuxjf.sourceforge.jp/JFdocs/GCC-SIG11-FAQ/sig11faq.html
http://sonic64.com/2005-04-19.html
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1288299487
登録:
投稿 (Atom)