タグ

ブックマーク / tech.dclog.jp (11)

  • DECOLOGの絵文字変換処理

    こんにちは tommy です。今回は絵文字シリーズ後半ということで、DECOLOG サイトでの絵文字処理方式について解説したいと思います。正直な話誰得な感じもしますけれども、滲み出るカオス感を楽しんでいただければ幸いです。なお絵文字そのものの仕様については、適宜前回の記事を参照ください。 1. 携帯時代 まずはスマートフォン登場以前の話です。 絵文字DB に格納する DECOLOG の携帯版のサイトでは、ブラウザの入出力の文字コードは Shift JIS、アプリケーション (PHP) およびデータベース (MySQL) の内部コードは UTF-8 としています。よってアプリケーション内で Shift JIS - UTF-8 間の変換を行っています。文字コード変換には CP932 のマッピング (PHP では "SJIS-win") を使います。ここいら辺は割と定番だと思います。 さて、

    aki77
    aki77 2012/03/05
    スマートフォン対応について
  • スマートフォンブラウザの絵文字事情

    こんにちは。tommy です。どういうわけか名前だけは時々出ていたと思うのですが、自分でエントリを書くのは初めてです。よろしくお願いします。 さて、DECOLOG では、ユーザーが投稿したテキストに含まれる絵文字を各キャリアに合わせて適宜変換して表示しています。携帯サイトでは当たり前にやっていることではありますが、DECOLOG の場合はそれに加えて携帯-スマートフォン間についても相互変換を実現しています。ここではそれをどのように実現しているかを 2 回に分けて解説していきたいと思います。 まず今回は、現状のスマートフォンのブラウザがどのように絵文字を扱っているのかを整理し、次回それに対して実際にどのような仕組みで対応しているかを説明したいと思います。 1. 携帯絵文字の仕様のおさらい 古き良き(?)携帯の絵文字の仕様については既に解説が既に多くありますので詳細は省略します。(きちんとした

  • Chefでサーバのセットアップ・管理作業を楽チンにしよう~実践編その2~

    前回紹介したスパムメールがさらに進化して「メアド変えたのでよろしく!」的な内容になってて、この人らPDCA実践してるわ―、と感心してしまったhiroshiです。 「3.レシピを書いたりする」の途中で終わった前回の続きです。 phpのインストールに必要なパッケージをインストールするところで終わっていましたので、次はphpのインストールです。 ここでphpをインストールする条件として インストールされてない 規定のバージョンと違う 想定のコンパイルオプションと違う 場合にインストールし直してね、と定義したいと思います。 主なところはこんな感じです。 {chef-repo}cookbooks/php/recipes/default.rb # バージョンのチェックを行い、バージョンが想定と違っていたらインストールを実行する # サーバ稼働中の予期しないアップグレードを防ぐため、/usr/local

    aki77
    aki77 2011/06/25
  • Chefでサーバのセットアップ・管理作業を楽チンにしよう~構成編~

    どうもhiroshiです。こんなに更新が早くてすみません。 今回もChefについてです。 前回の選定編に続いて、今回はChefの構成を見てみます。もちろんこれも「tommy report in Oct. 2010」からの抜粋です。 5/26 追記)この記事はv0.9.12に基づいてます。 Chefの構成の概要図 こんな感じです。 ツール群 <chef-server> 情報を集約して管理するサーバプロセス。各ClientとはJSON/RESTスタイルで通信する。 <chef-client> 設定を適用する各マシンにインストールされるデーモン。定期的にchef-serverをポーリングして、その内容に従ってレシピを実行する。 <chef-solo> サーバ無しでレシピを実行するツール。 <knife> chef-serverに登録されている情報の取得・変更を行うツール。切り刻むよ。 <webu

    Chefでサーバのセットアップ・管理作業を楽チンにしよう~構成編~
  • redis導入後にトラブル発生、そのレポート

    こんにちわ、ミツバチワークス stoneです。 今回は、redisシリーズ第3弾、実際にredisをサービスの投入してみて、うまく行かなかった事例についてご紹介します。 redisの使用用途 今回、いくつかあるセッションデータのうち2つをMySQLからredisへ移行させました。 これらのセッションデータ、MySQL上では、セッションIDの他に複数のカラムから構成されているのですが、redis上では、この複数のカラムをserialize()して、 key(string) => value(string) という形で格納するようにしました。 ちゃんとソースコードで確認はしていないのですが、memcachedでも、TTLが設定できますが、TTLを過ぎたデータを監視してクリアしていないですよね。 また、memcached内部のslabの構成次第では、TTLまでデータが保持されずに、データがクリア

  • redisの実用例。redis速いよredis

    こんにちは!hiroshiです! 今回は、最近DECOLOG界隈で大ブームのredisについて、その利用用途や導入方法についてお話ししたいと思います。 今回のお話と関連する過去エントリに以下がありますので、こちらに目を通していただいた上でエントリを読んでいただくと分かりやすいと思います。 NoSQL redisとMySQLのベンチマーク比較 redisのサービスへの投入 redis導入後にトラブル発生、そのレポート DECOLOGでのMySQL Archiveエンジンの使い方 …と、これまでのエントリからは実運用できてるのかどうか微妙なタッチになっているかもしれませんが、結論からいうと実運用できてます! 「redis導入後にトラブル発生、そのレポート」ではTTLを設定した場合にうまくいかないケースがあったのですが、TTLなしのデータでは特に問題なく運用できました。 現在のredisの利用

  • HadoopによるApacheのログ解析の実際

    こんにちは、ミツバチワークス stoneです。 今日は、DECOLOGで行われている、Apacheのログ解析について、 ご紹介してみようかと思います。 現在、DECOLOGでは、リバースプロキシが8台あって、 その8台の1日のApacheのログは、全部で、200Gバイト以上になっています。 これを、13台のHadoopのスレーブノードで解析を行っています。 全体の流れとしては、 1) リバースプロキシからHDFSにログを転送 2) 解析用のサーバーで、HDFSにログの転送が終わるのを監視 3) ログの転送が終わったら、Hadoopを起動、解析 4) Hadoopの解析結果をデータベースに保存 以下では、各々のステップを個別に見て行くことにしますね。 1. リバースプロキシからHDFSにログを転送 当初、Hadoopのプロセスが立ち上がっていないと、HDFSにはアクセスできない、 と思い込ん

  • DECOLOGでのMySQL Archiveエンジンの使い方

    こんにちわ、stoneです。 今回は、MySQLのストレージエンジンの中の1つ、ArchiveエンジンのDECOLOGでの使い方をご紹介したいと思います。 ※「DECOLOGでのMySQL BlackHoleエンジンの使い方」も合わせてどうぞ Archiveエンジンの概要MySQLのマニュアルをご覧いただくのが正確なのですが、その特徴を簡単にまとめると。。。。 insert/selectは出来るが、update/deleteは出来ない order byはサポートされない blobもサポートされない データは圧縮されてディスクに保存される まぁ、最初にこのマニュアルを読んだときの、正直な感想は、 「どうやって使うんだ、これ?」 って感じでした。 deleteが出来ないので、データは溜まる一方だし、データは圧縮して保存されているので、selectもそんなに速くないことは容易に想像できます。 ア

    aki77
    aki77 2010/11/29
    archiveエンジンの運用
  • mysqlのテーブルの「のれん分け」

    大まかな手順は以下です。 三段構成にする。 slaveを切り替える masterを切り替える 余分なテーブルを落とす の4ステップです。 1.三段構成にする。 これはつまりこんな状態にすることをいいます。 この作業は基的には単純なslave増設と新規レプリケーション構成を組むのの組み合わせでできるので、前回のエントリ「replicationしてるMySQLのslave増設手順」を参考にしてください。 通常のレプリケーション構築との違う、ポイントとしては テーブル構成は最初は丸ままコピーすること 「New master」my.cnfの設定にlog-slave-updatesとreplicate-do-tableでノレン分けしたいテーブルを設定しておくこと です。 テーブル構成を丸ままコピーするのは、そうしないとレプリケーションが失敗するからです。replicate-ignore-dbやre

    mysqlのテーブルの「のれん分け」
  • replicationしてるMySQLのslave増設手順

    こんにちは、hiroshiです。おひさしぶりですね。 stoneが書いたhadoopの記事が打ち合わせとかで「見ましたよ。評判ですよ。」とか言われてジェラシーいっぱいです。 僕もがんばります。目指せホッテントり! といっても、僕だと書けることに限界があるので、今日は半定常作業のMySQLの増設作業について書こうと思います。 下図のように、master1台←slave2台がLVS+keepalivedで負荷分散構成されているDBがあるとします。 この構成の組み方にしようかと思ったのですが、これはググったらいっぱいあったのでホッテントリは狙えないと思ってやめました。 なので、今回のテーマは「このテーブルはwriteは余裕だけどreadがきつくなってきたからslaveを増設しなければ!」となった場合のslaveを増設する手順について書いてみます。 下図のslaveCを追加するぞ!の場合です。 ※

    replicationしてるMySQLのslave増設手順
  • DECOLOGでのMySQL BlackHoleエンジンの使い方

    こんにちわ、ミツバチワークス stoneです。 DECOLOGでは、データベースにMySQLを使用しています。 ストレージエンジンのメインはInnoDBなのですが、他にもMyISAM、BlackHole、Archiveエンジンを使っています。 今回は、その中でBlackHoleエンジンについて、DECOLOG内での利用方法をご紹介したいと思います。 BlackHoleエンジンについて BlackHoleエンジンは、何もしません。 insert、update、deleteを行っても、データは全く変更されませんし、selectをしても、データは何も返ってきません。 実際のデータファイルを見てみても、テーブル定義ファイルの.frm以外のファイルは作成されません。 /dev/nullと似ているイメージです。 が、BlackHoleのテーブルに対して発行されたinsert、update、delete

    aki77
    aki77 2010/11/08
  • 1