2014年3月21日金曜日

FC2ブログのソースコード

FC2ブログがソースをオープンソース(MITライセンス)にて公開したとのこと。
【ブログ】「FC2ブログ」をオープンソースで公開!より自由にカスタマイズ可能!

githubのソースコードはこちら。
https://github.com/fc2blog/blog


2014年3月13日木曜日

些末なコードレビュー - naoyaのはてなダイアリー

些末なコードレビュー - naoyaのはてなダイアリー
これは確かに難しい問題だと思う。スキルの問題ではあると思うが、レビューの際には致命的な設計上の欠陥よりも、些細な書き方の悪さのほうが気づきやすいということもあって、こういう感じのレビューになりがちなのは反省しなければならないところだ。

ただ、とは言えさすがにかんべんして欲しいレベルのひどい書き方もあるからな~。
例えば、

  1. キャメルケース(getHogeなど)とスネークケース(get_hogeなど)が同じモジュールに混在している
  2. unless句の中が複雑すぎてベン図を書かないとわからないレベル(unless(!$hoge && (!$bar || $foo))など)
  3. 何でもかんでも変数をぶち込んだ巨大ハッシュリファレンスをテンプレートに渡している
  4. 一つの関数が巨大化しすぎてもう読むのが嫌なレベル

とかもうかんべんして欲しい感じ。あんまり細かく指摘し過ぎると宗教みたいになるのでさじ加減が難しいところ。



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というのは何を表しているのだろう?

頑張ってみれば、プログラムの穴も見つけられるかもしれないが、適当に覗いただけだと
よくわからんな。業務内容がよくわからないし。