サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
世界禁煙デー
blog.ville.jp
こんにちは。今村です。 EC-CUBE で EC サイトを運用するためには、どの程度のサーバ予算が必要でしょうか。運用計画を立てるためには、どれくらいのサーバがどれくらいのアクセスに耐えられるかを把握しておく必要があります。 そこで、今回は EC-CUBE の性能測定について書きたいと思います。 弊社では、jmeter を使って負荷試験を行っており、サーバ設計や運用計画、リリース前のテストなどに役立てています。 jmeter のシナリオ例 サンプルとして、インストール直後の EC-CUBE に対して実行できるシナリオを公開します。 stresstest-eccube.jmx_.zip こちらからダウンロードしてください。 このシナリオは、次のような試験を jmeter で実行します。 会員登録しないユーザのみ 同時アクセス10人 10人が20回ずつ、特定の商品を購入する 決済方法は代金引
こんにちは。 武井です。 EC-CUBEでAjaxを使って実装す方法をまとめました。 EC-CUBEはバージョン2.12から、外部連携用APIが標準で実装されています。 これが実に使い勝手もよく、とても便利です。 どんなときに使えるのでしょうか? 例えば、商品をカートに入れる際、初期の実装なら、カートに入れるボタンの押下でカート画面へ遷移しますが、ここをAjaxでの処理にすれば、カート画面へ遷移せずにカートに入れることができます。 作り込めば、商品一覧をAjaxで取得して、画面遷移せずに一覧をページングなんてこともできます。 どんな効果があるのでしょうか? データベースの内容を非同期で取得することで、ページ読み込み時のSQLの実行を抑えられ、負荷も減ります。もちろん、読み込みも早くなります。 また、サイト内の巡回もスムーズになります。 では、記述方法を簡単に書きます。 EC-CUB
EC-CUBEは非常に機能が豊富かつ単体でPC、スマートフォンも対応する すぐれたオープンソースのECパッケージですが、カスタマイズするとなると それなりにクセがあり、ノウハウが必要となります。 ■ 既存のコードを改造するには、基本的にはclass_extendsを使います。 class_extendsに既存のclassに記載してあるコードをコピーしてくるなりして改造をします。 こうすることにより、ベース部分のバージョンアップなどにも比較的対応しやすくなります。 ただし、classフォルダにないmoduleなどは直接いじる必要があります。 ■ Smartyを使ったテンプレートエンジン 比較的、昔のフレームワークなどではSmartyを前提としたものもありましたが、 最近はあまり使われなくなった感もある、このSmarty。 こちらは慣れていないとちょっと扱いつらいかもしれません
こんにちは、三寒四温を感じ、春が待ち通しい塩浦です。 弊社では今まで、symfony1系の利用が多かったのですが、現在は、Symfony2系での開発に移行がすすんでいます。 同じ名前のPHPのフレームワークですが、symfony1系のときとは、かなり勝手が違っているのをいろいろな場面で感じます。 そんな開発の中で、私がハマってしまったモノを紹介させていただいて、Symfony2系で同じように悩んでいる方の少しでもお助けになれば共います。 さっそくですが、実践的な内容として、動的フォームなどを実現する場合、symfony1系でもそうでしたが、embedにてフォームを実現することが多いかと思います。 embedフォームの実現方法は、公式のこちらのページに記載されています。>>http://symfony.com/doc/2.1/cookbook/form/form_collections.ht
こんにちは、花粉症による鼻水と涙のautoloaderを実装した神崎です。 先日とある案件で、データの保存先としてredisを利用して、実装をおこないました。 データの更新と参照がかなり多く、またデータは揮発してはだめだったため MySQLやmemcacheは使わず、redisを利用することにしました。 PHPからredisを利用するには、redisの公式サイトによると PECLモジュールのphpredisもしくはPredisとういうライブラリ経由で利用することがおすすめされています。 今回の案件では、仮実装の段階では、phpredis,Predis両方を実装してましたが 結局、サーバの要件(httpd+mod_phpではなく、nginx+php-fpmで稼働させる)のためphpredisを採用しました。 (nginx+php-fpmの環境ではPredisはエラーが発生) php
こんにちは、塩浦です。 さて、今回は、PHPの関数に焦点を当てたネタにしたいと思います。 私は、もともとJavaエンジニアでした。PHPを使い始めて、悩むのは関数です。 ついつい便利な関数の為、あまり深く考えずに使用しがちですが、意外に思っていた動作と異なることがあったりと、癖がある一面があります。 そこで、特に使用される場面も多いと考えられるnull判定や空文字判定の関数を焦点を当てて、PHPの関数の癖を認識することによって、今後のプログラムの品質をあげていきたいと思います。 まず、null判定で使用される関数の一部が以下になります。 is_null empty isset PHPの変数は、宣言だけした場合、その中身はどうなっているのでしょうか? <?php $hoge; var_dump($hoge); 実行結果 NULL (※警告が表示されますが。。。) Java言語だと、も
CSS3のtransformでは ・rotate (回転) ・scale (拡大縮小) ・skew (歪ませる) ・translate (移動) が定義されていますが、IE8以下はこれに対応していません。しかしながら、IE5.5から使えるMatrix Filterを使えば同等の効果を得ることができます。 ただし、これをそのまま使うと変形の起点(transform-origin)がCSS3のtransformと違うため座標にズレが出てしまいます。座標変換コードを書こうと思ったらもうやってる人がいたので紹介します。 jQuery 2D Transformation Plugin 45度回転させるコードは以下のように記述できます。 $('.example').transform({rotate: 45}); 他のプロパティも同時に変更できます。 $('.example').trans
こんにちは、神崎です。 以前、英語の文献を読もうという記事を書きましたが、 その具体的なコードについて、今回は書きます。 YoutubeAPIで動画の公開範囲を設定できるのですが YoutubeのAPIとしては、公開、非公開、限定公開というものを設定できます。 しかし、Zend Framework(ver.1.11)の Zend_Gdata_Youtubeでは 公開(public)、非公開(private)の設定は出来るのですが、限定公開(unlisted)の設定ができません。 以前書いたように、英語のforum内ではこの件に関してやりとりがされていて 下記のようなclassを書くとよいです。 /** * my_Zend_Gdata_YouTube_VideoEntry * * @uses Zend * @uses _Gdata_YouTube_VideoEntry * @pack
こんにちは、神崎です。 今年の春ぐらいからキャリアがスマートフォンを拡大させていて 技術者的には、面白いことができそうになっていて夢が広がっていますね。 ネイティブアプリとなると敷居が高くて、なかなか難しいですが Webサイトを最適化したりするのは、当たり前になるのではないかと思っています。 そこで、端末の振り分けが必須になるわけですが UserAgentを用いたmobile(ガラケー)/smartphone/pcの判定方法の例を記します。 Androidにおいては、Mobileという文字列が入っていることを考慮しています。 function is_mobile() { $ua = array( 'DoCoMo', 'KDDI', 'DDIPOKET', 'UP.Browser', 'J-PHONE', 'Vodafone', 'SoftBank', ); foreach ($ua
こんにちは、涼しくなったら自転車通勤しようかとを目論んでいる神崎です。 全文検索エンジンSennaの後継のgroongaをさわってみました。 インストールや、チュートリアルは日本語ドキュメントが充実しているのでそれを参照するとよいと思います。 PHPから利用する場合は、groonga-phpというライブラリがありますが 環境依存により、今回試した限りではうまく使うことができませんでした。 さて、groonga自体は、独自プロトコルとmemcacheのBINARY PROTOCOLおよびHTTPが採用されています。 groongaをHTTPで起動すると、HTTP経由でアクセスできるのでPHPからも容易にアクセスすることができます。 データはjsonで読み出し、書き込みができるので取り扱いも容易です。 チュートリアルに載っているマイクロブログ検索システムを構築して、Commentsテーブ
こんにちは、塩浦です。 今年は、スマートフォンサイトの作成の需要がさらに高まっているかと思います。 スマートフォンサイトを開発する際に知っていると得することを2つほど上げていきます。 まず、注意したいのは、Androidのバージョンによって、標準ブラウザのHTMLの解釈が異なるということ。 ひとつ例を出すと、「Android2.1」までは、select要素に対して、スタイルの高さに関連する指定が効かないということ。 文字の大きさを指定すると、通常select要素の高さもその文字の大きさにフィットする形になりますが、Android2.1では、下記の表示のように文字がselect要素より飛び出してしまいます。 上記の問題を回避方法の一つとしては、select要素に対して、スタイルで以下のように指定することです。 background: url("select_bg.png"); このよ
こんにちは、相変わらずvim派の神崎です。 新規サーバでまずやるのは、vimの最新版をコンパイルしてインストールすることですよね! ということで、今回はCentOSでのvimのインストール方法を書きたいと思います。 mercurialがインストールされていれば最新のソースが簡単にダウンロードできるので まずは、mercurialを入れます。 yum install mercurial これで、hgコマンド一発でvimの最新のソースを手に入れることができます。 hg clone https://vim.googlecode.com/hg/ vim vimのコンパイルオプションは、下記のようなものを使うといいと思います。 ./configure --enable-multibyte --enable-xim --enable-fontset --disable-selinux --wit
Windowsを使ってるプログラマーなら、ちょっとした作業をプログラムにやらせたいと思うことがよくあると思います。 WindowsにはJScriptやVBAScriptで扱えるシェルっぽいものとしてWindows Script Host(WSH)が用意されていますが、なぜかあまり使われていない印象があります。WSHは私も使ったことがありますが、目玉商品がファイルシステムにアクセスできるオブジェクトくらいでなんとなく地味なのです。 そこで、今回はもっと使われていないDMonkeyを紹介します。 DMonkeyとは SFjpの公式をみると「Delphiへの組み込みを目的としたECMAScriptエンジン」と書かれています。WEBプログラマーに解りやすく一言で説明するなら、javascriptで便利に使えるオブジェクトがたくさん詰まったものです。 例えばHTTPオブジェクトを使えば一行でH
MySQLのRANGEパーティションのお話です。 MySQL5.1からサポートされているパーティショニングですが、ログテーブル等、レコード数が多くなりがちなテーブルに日付でパーティショニングしてます。 最初から遠い未来までのパーティションを切るのは気持ち悪いし、長く運用されるサービスの場合は忘れる可能性もあるのでバッチを回すのがいいと思いますが追加する場合の手順と注意点です。 ・まずはパーティションを作成 CREATE TABLE `mura`.`test1` ( `date` DATE NOT NULL , `name` VARCHAR( 40 ) NOT NULL , `contents` VARCHAR( 255 ) NOT NULL , `created_at` DATETIME NOT NULL ) ENGINE = InnoDB PARTITION BY RANGE (TO_
DoCoMoのCSS、XHTMLにはクセがあります。注意すべき点をまとめてみました。 これに関してはいろいろなサイトで論じられていますが、既出のネタや仕様書の内容も含めなるべく広範囲に渡って情報を集めました。 他のキャリアについてはまた書くと思います。 特に気をつけるべき点を先にまとめると、こんな感じです。 ・CSSはインラインでしか記述できない。 ・XHTMLが必須でかつ適切なContent-Typeヘッダを吐く必要がある。 ・istyle属性は使えない。 ・MARQUEEタグは使えない。 ・object要素によるFlashの埋め込みはiモード対応XHTML1.1から。 ・TABLEタグはiモード対応XHTML2.0以降でないと使えない。 ・GPS用の属性lcsはiモード対応XHTML2.1以降でないと使えない。 (DoCoMoに限った話ではない内容も含まれています)
中川です。 携帯向けに動画を配信する時の仕様などを調べました。 長くなるので2回か3回に分けて発表しようと思います。 はじめに 主に3G端末をターゲットにした内容になっています。3G以前の端末もケアしたい場合はこれでは足りません。 より多くの端末で再生できるような条件を探す、というコンセプトで調査した結果です。 端末ごとに特化すればより高品質の動画を提供できますが、本記事では動画の品質より端末互換性を重視しています。 auの場合 EZムービーの仕様 AMC形式と3GPP2形式の2つがあります。 端末対応表 (link) 基本的に古いのはAMC、最近のは3GPP2。 3GPP2対応端末なら全ての端末でQCIF以上のサイズを再生できます。 作成方法 (link) 有料ソフトですが、Quicktime Proで作るのが楽です。 動画はffmpegでも作れますが、Quicktim
小池です。 さっそくですが、携帯サイトなどを制作しているとサーバーサイドでswfmillを使用して Flash内の画像データを動的に差し替えることがあるかと思います。 以前、透過GIF画像を差し替える際になかなかうまくいかず苦労したので、備忘録として記載します。 何かの参考になれば幸いです。 透過GIFデータはFlash中でDefineBitsLossless2というフォーマットで格納されており、 透過GIFのバイナリ画像からDefineBitsLossless2に変換してやる必要があります。 // GIFデータの読み込み $im = imagecreatefromstring($gifData); $size_x = imagesx($im); $size_y = imagesy($im); $transId = imagecolortransparent($im); $color_
こんにちは。中川です。 携帯用のFlashLiteについて簡単にまとめました。 社内用に作った資料なので少々乱雑な文章ですが公開します。 対応しているバージョン DoCoMo:1.0, 1.1, 3.0, 3.1 Ezweb : 1.0, 1.1, 2.0 SoftBank : 1.1, 2.0, 3.0 基本的に後方互換。(100%ではない) Flash Lite 3.0搭載端末は DoCoMo の705i,905iシリーズから。 画面サイズ(解像度) 最近だと240x240推奨。 ただしこれはセーフティーなサイズなので、コンテンツによって変えるとよい。 容量 swf 1ファイル100KBまで。 動的に情報を追加ロードする場合、その分の容量も含めて100KBにおさめる。 (AUで追加ロードした場合、合計容量に100KB制限はない。) フレームレート フレームレート7~12fpsで制作する
こんにちは。中川です。 先日行われたカヤックさん [1]とクックパッドさん [2]主催の「技術者交流会 ~おいしいソースのつくり方~ 」 [3]のライトニングトークで発表させていただきました。 たくさんの技術者の方と交流でき、発表も聞けて料理もおいしく、非常に充実した時間を過ごせました。 関係者の皆様、このような機会を設けていただきありがとうございました。 さて、当日はHTML5のcanvasと、ドロネー三角形分割という技術を使って写真をポリゴンっぽくするデモを発表しました。 特徴点を手で打っておけば後は自動で面を生成します。 プレゼン資料: http://seeds.ville.jp/electriccafe/slides/ [4] デモ: ※Firefox3.0.9、chrome2.0β でのみ動作を確認しています。 IEやSafari、chrome1.0では動きません。 1)ドロネー
DoCoMoのCSS、XHTMLにはクセがあります。注意すべき点をまとめてみました。 これに関してはいろいろなサイトで論じられていますが、既出のネタや仕様書の内容も含めなるべく広範囲に渡って情報を集めました。 他のキャリアについてはまた書くと思います。 特に気をつけるべき点を先にまとめると、こんな感じです。 ・CSSはインラインでしか記述できない。 ・XHTMLが必須でかつ適切なContent-Typeヘッダを吐く必要がある。 ・istyle属性は使えない。 ・MARQUEEタグは使えない。 ・object要素によるFlashの埋め込みはiモード対応XHTML1.1から。 ・TABLEタグはiモード対応XHTML2.0以降でないと使えない。 ・GPS用の属性lcsはiモード対応XHTML2.1以降でないと使えない。 (DoCoMoに限った話ではない内容も含まれています) CSSの名称、記述
中川です。 今回は携帯用マルチメディアコンテンツの著作権保護について調べました。 著作権保護に関して 対象ファイルの転送禁止や再生回数制限などについて、キャリアごとの設定方法を調べました。 auの場合 EZムービー(3GPP2形式)の場合 ファイルにコンテンツ保護情報を埋め込むことができます。 以下の設定が可能です。 ・端末上でのみ再生できるようにする ・再生回数を制限する ・有効期限を設定する(何日後、もしくは何年何月何日まで) QuickTimeProでエクスポートする際に、上記の設定項目があるので それらに従うだけで簡単に作ることが出来ます。 DoCoMoの場合 MP4対応iモーションの場合、 ファイルにコンテンツ保護情報を埋め込むことができます。 以下の設定が可能です。 ・端末上でのみ再生できるようにする これもQuickTimeProでエクスポートするとき
平井です。 以前のエントリで紹介したEthnaで「きれいなURL」を実現する方法についてです。 私が構築したアプリケーションにおいて、コードを修正することでパフォーマンスを改善できました。 内容を以下にご紹介します。 前回ご紹介したままの実装を下に再掲します。 array( // ログイン ‘/login’ => array( ‘action’ => ‘login’, ), // ページ送り ‘/view/:category/:offset’ => array( ‘action’ => ‘view’, ‘category’ => ‘’, ‘offset’ => ‘’, ), ), ); /** * Hoge_UrlHandlerクラスのインスタンスを取得する */ function &getInstance($class_name = null) { $instance =& par
平井です。 プログラミングネタを続けます。 村式では、EthnaというPHPフレームワークを利用することがあります。 私がEthnaを利用するときに残念に思っているのが、URLがきれいでないということです。 標準では、Ethnaで作成したアプリケーションへのリクエストは、下記のようなURLになります。 http://example.com/?action_login=1 これを、以下のURLのようにできないでしょうか。 http://example.com/login 後者の方が、人が見て直観的に理解可能だと思います。 ユーザーさんがWebを利用する上で、URLの形式がどうであろうがあまり問題にはならないでしょう。 が、細部にもこだわってきれいなものを作りたいというのがクリエイターの性というものです。 導入が長くなりましたが、Ethnaで「きれいなURL」を実現してみましたのでご紹介
平井です。久々の投稿です。 珍しくプログラミングに関するエントリーを書きます。 村式では、EthnaというPHPフレームワークを多く活用しています。 先日Ethnaのプラグインを使って、複数のInput値をValidateする機会がありました。 具体的に書かれた情報があまり見つからなかったので、参考になればと思ってエントリーにします。 たとえば以下のように、電話番号の入力フォームを3つのテキストボックスに分けた場合を考えます。 このような時、例えば携帯電話について、 フォームのひとつにでも値が入っていたら、他のにも入ってないとおかしい 携帯電話は[3桁]-[4桁]-[4桁]でしょ? といったことをvalidateで実現したいとします。 こうした場合は、プラグインを作ってvalidateすると簡単です。 プラグインを使ったvalidate方法は、ここで説明されていますが、自分の復習も
こんにちは。中川です。 最近Javascriptが流行っているようで、関連する記事やコードを見かける機会が増えました。 最近になって興味を持ち始めた方、急に仕事でやるハメになった方、結構多いのではないでしょうか。 Javascriptは書式こそC言語やJavaに似ていて馴染みやすいように見えますが、中身はかなり違ってます。 はじめてJavascript特有の書き方に触れたときに戸惑ったことがある方も多いと思います。 私が他人のコードを見ていて一番最初に「なんだこれは?」と思ったのは、あるブックマークレットのコードを見たときでした。 どんなコードだったかは忘れましたが、書式はこうでした。 javascript:(function(){/* statements */})(); ...[1] 最後の()はなんだろうか? 関数は function f(x){/* statements
携帯電話のシステムでは、メールを受信した後に、それを元に何かのプログラムを動作させるということがよくあります。 たとえば、ブログでの画像投稿などもその一つです。 このようなシステムをつくるときに、投稿者の認証はどのようにするべきでしょうか? 送信元のメールアドレスを認証に使う方法が使えそうですが、メールアドレスのfromヘッダは簡単に偽装できてしまいます。 友達のメールアドレスでイタズラ投稿・・・なんて事が出来てしまう訳ですね。 なのでfromヘッダのみで判断するのは、セキュリティ的にあまりオススメできません。 それでは、どのようにするかというと ここでは宛先アドレスも認証に利用する方法を紹介します。 例えば会員登録時に、 あなたはこのメールアドレスに投稿してくださいね~ という形で、ユーザーに専用のメールアカウントを発行します。 ユーザーから投稿があった場合には、メールの fr
こんにちは、採用担当の平井です。 村式は9/9より、中途採用活動を開始いたします。 詳しい内容についてはこちらをご覧ください。 もともとは、友人である創立者5名で興した会社です。 ここに新しい人を迎えて、さらに飛躍を遂げるつもりでおります。 ピンと来た方、是非ご応募ください!! お待ちしております! 先日、カヤックの柳澤(やなさわ)さんの著書この「社則」、効果あり。を読みました。 このカヤックという会社は、超クリエイティブな会社でWEBの世界では有名な会社です。 そして実は今から約3年前、僕らが友人同士で起業を夢見ていたときに『こんな会社があるのか!』という強烈なインパクト(サービス、働き方、場所など色んな意味で)とともに知った会社がカヤックであり、しかも友人3人で創業されたということで更なる強烈なご縁を感じ、思わず話を聞きに鎌倉まで押し掛けてしまったというエピソードがあります。 そ
このページを最初にブックマークしてみませんか?
『村式開墾日記 - 時にはかぶけよ! -』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く