タグ

ブックマーク / dqn.sakusakutto.jp (8)

  • ソースコード20万行の大規模サイトのPHPを5.1から5.4に上げるためにやったことまとめ · DQNEO日記

    所要期間 着手しはじめたのが2010年12月ごろ、完了したのが2013年9月だったので何と3年近くかかったことになります。 長引いた原因は、日々の機能追加や運用をしながら孤独に片手間で細々とやってたからです。(単純に人手不足とも言う) また、PHPバージョンアップと同時にCentOSサーバを5から6にあげることにしたのでサーバ再構築のための工数も含まれています。 後半は仕事仲間が増えてその人が専業でバージョンアップ作業をやってくれたのでだいぶ楽できました。 それと専任のテスターさんたちにも参加していただいたので番で大きなトラブルなく完了することができました。 感謝感謝です。 サーバ入れ替え作業が終わってPHP5.1の入った古いサーバを削除したときの、まさに「技術的負債」を返済し終わった瞬間の、あのスッキリ感、もう言葉にはできません。 終わってみてこの件に関するRedmineのチケットを数

    ソースコード20万行の大規模サイトのPHPを5.1から5.4に上げるためにやったことまとめ · DQNEO日記
    joan9
    joan9 2013/11/22
  • データベースリファクタリングに挑戦してみた。(トリガーを使わないで列名を変更する) · DQNEO日記

    下記で紹介しているのはあくまで一例です。(特に、SELECT * に関しては賛否両論あると思います。) 他にもっとよいやり方があったら教えてください! トリガーを使わない列名変更の流れ 例として、「user.meiというカラムをuser.firstnameというカラムに変更する」ケースをとりあげます。 アプリ側での事前改修 新しいDB列の追加(移行期間の始まり) アプリ側での切り替え 古いDB列の削除(移行期間の終わり) アプリ側での後片づけ アプリ側での事前改修 事前にアプリを改修して、新旧両方対応の仕組みをいれておきましょう。 このフェーズの目標は、DB列が追加されたときにアプリが自動で追従できるようになることです。 SELECT * FROM を使う アプリケーション内のSQLで、SELECT a,b,c FROM という風に列名をハードコーディングしていると、カラム名変更したいとき

    データベースリファクタリングに挑戦してみた。(トリガーを使わないで列名を変更する) · DQNEO日記
    joan9
    joan9 2012/03/08
  • jQueryのコーディングスタイルをめぐる2つの哲学 ~汚染は悪か?そしてend()は便利か? · DQNEO日記

    method chainを多用して記述を行うだけなんですが、「method chainが延々続くので書いてて楽しい」、「インデントをDOM構造と対応付けやすい」、「見かけ上変数、条件分岐、繰り返しが減るのでバグが発生しづらい」と言った利点があります。 (中略) 広域変数は$.extendで$に保持しましょう。 (中略) function:すべてjQuery pluginとして実装しましょう。 2つ目の記事 jQuery使いが陥りやすい罠 method chainをつなげると中間変数も少なくなるしDOM構造との対応がついて書きやすいのですが、途中の状況を把握しづらくデバッグが難しくなるので適当なところで変数に受けましょう。 (中略) jQueryに慣れるとwindow objectの使用をいかに避けるかを考えるようになり、jQueryと関係ないfunctionや変数まで$.hogehogeに

    jQueryのコーディングスタイルをめぐる2つの哲学 ~汚染は悪か?そしてend()は便利か? · DQNEO日記
    joan9
    joan9 2012/01/04
  • MongoDBのベストプラクティス10箇条 · DQNEO日記

    レプリカセットを使うと、自動フェイルオーバーにより可用性が向上します。 プライマリーノードがダウンしても、セカンダリノードが自動でプライマリーに昇格して、システム全体は落ちなくてすみます。 我々は、レプリカされていないMongoDBをサポートすることはありません。 レプリカのコストが大きいなら、MongoDBホストしてくれるサービス(MongoHQやMongoLabs)を検討しましょう。 Engine Yardはこれらの会社と提携しています。 2.常に最新バージョンを使いましょう MongoDBは常に最新バージョンを使ってください。 10gen(MongoDBの開発元)はリリースのたびにたくさんの修正を入れていて、それらはあなたのシステムをより円滑に稼働するのに役に立ちます。 バージョン2.0.xではパフォーマンス、同時実行、インデックス、バグ修正、圧縮コマンドなどについての大幅な改善が

    MongoDBのベストプラクティス10箇条 · DQNEO日記
    joan9
    joan9 2012/01/04
  • PostgreSQLが重い!あなたならどうしますか? · DQNEO日記

    サーバが重いということは、負荷(load average)が高いということです。 topコマンドを叩いてDBサーバの負荷を調べます。 $ top top - 01:36:45 up 340 days, 20:16, 4 users, load average: 0.01, 0.04, 0.00 Tasks: 85 total, 1 running, 84 sleeping, 0 stopped, 0 zombie Cpu(s): 0.8%us, 0.2%sy, 0.0%ni, 97.7%id, 1.2%wa, 0.0%hi, 0.2%si, 0.0%st Mem: 4044720k total, 3996008k used, 48712k free, 60648k buffers Swap: 2152700k total, 252k used, 2152448k free, 3826572

    PostgreSQLが重い!あなたならどうしますか? · DQNEO日記
  • PerlとPHPにおける「リスト」概念の違い · DQNEO日記

    naoyaさんのPHP版 List_RubyLikeを見ていて面白いことに気づきました。 $list->push('foo'); $list->push('bar','buz'); 一瞬、「なんて美しい!」と思いました。 と同時に、「なんてPerl的な!」とも思いました。 「これじゃまるでPerlじゃないか」と。 私ならこういうインターフェイスにすると思います。 $list->push('foo'); $list->push(array('foo','bar')); 少し冗長ですが、こっちの方がPHPとしてしっくりきます(私にとっては)。 実際にはpush(array('foo','bar'))などとリテラルを渡すことはあまりなくて、push($hoge)とかpush($this->hoge())などと書くことになるでしょう。 この違いを突き詰めていくと、「PerlPHPにおけるリストの

    PerlとPHPにおける「リスト」概念の違い · DQNEO日記
    joan9
    joan9 2010/12/04
  • 簡単!たった13行のコードでHTML取得&解析をするPerlスクリプト - DQNEO起業日記

    13行のコードで、Yahoo!Japanのトピックス一覧を取得する! PerlHTML取得・解析したいときはLWP::UserAgentHTML::TreeBuilderというのを使うと簡単にできます。 LWP::UserAgentを使うと、Webページの取得ができます。 HTML::TreeBuilderを使うと、HTMLのDOM解析ができます。 この2つのモジュールを使って、Yahoo!Japanのトピックス一覧を取得してみましょう。 コメント行と空行を除くとたったの13行です。 use strict; use warnings; use LWP::UserAgent; use HTML::TreeBuilder; # urlを指定する my $url = 'http://www.yahoo.co.jp'; # IE8のフリをする my $user_agent = "Mozilla

    簡単!たった13行のコードでHTML取得&解析をするPerlスクリプト - DQNEO起業日記
    joan9
    joan9 2010/08/08
  • PHPのOOPとJavaコードを比較してみた · DQNEO日記

    前回の記事ですが、オリジナルはJavaで書かれています。 Java版とPHP版を比較してみると、コード記述にほとんど差がない。 むしろJavaの方が若干コード量が少ない気がする。 ショック! Java版 http://www.objectclub.jp/technicaldoc/testing/stack_tdd.pdfより引用 import java.util.EmptyStackException; /** * @author koji,hiranabe */ public class Stack { private int[] value = new int[10]; private int size; public boolean isEmpty() { return size == 0; } public int top() { emptyCheck(); return valu

    PHPのOOPとJavaコードを比較してみた · DQNEO日記
    joan9
    joan9 2009/06/18
  • 1