タグ

ブックマーク / ameblo.jp/principia-ca (28)

  • 『かんたんパッケージマネージャDuo』

    みなさん、こんにちは。Ameba事業ゲーム部門の平木(Layzie) と申します。 最近はSteamで安いゲームを漁ってばかりの毎日です。このエンジニアブログでは初めて執筆になります。 さて、今回エンジニアブログで何を書こうか悩んだのですが、悩んだ結果Duoというパッケージマネージャの紹介をしようということになりました。 このDuo、GitHubのStar数は結構多いんですが、(2014/11現在2618Star)あまり紹介されてる記事とかが無いので紹介してみようと思った次第です。 Duoの特徴 昨今、フロントエンドで使えるパッケージマネージャは色々あると思います。厳密に言うとサーバ側のJavaScript実装ですがNode.jsのパッケージマネージャであるnpmにフロントのJavaScriptライブラリを登録して使うというパターンもありますし、新規プロジェクトの雛形を作ってくれるYe

    『かんたんパッケージマネージャDuo』
    yuiseki
    yuiseki 2014/11/17
  • 『アメーバピグにおけるDB構成&対応記』

    2ヶ月前にインフルエンザとウィルス性胃腸炎でひどくダメージを受けた増田(@masudaK)です。アメーバピグは2009年2月に始まったサービスで、FLASH・Javaで作られています。そして、データストアにMySQLを用いてます。記事では、わたくしが2年ほど見続けているアメーバピグのDB環境について構成や、日々どのようにして問題と向き合っているかを紹介したいと思います。インフラ寄りの内容が多いため、アプリ寄りの話は弊社生沼の資料を御覧ください。 1. 構成と規模 1.1. 構成 まず構成ですが、読み書きはすべてマスターへ行うようにしています。そのため、スレーブには参照を向けず、ホットスタンバイとして使っています。バージョンに関しては2012年中旬までは5.0を使ってましたが、DC移転にあわせて5.5にあげました。ロック機能を用いたシャード構成をしてまして、2014年3月現在6シャードにな

    『アメーバピグにおけるDB構成&対応記』
    yuiseki
    yuiseki 2014/05/22
  • 『Redisとハサミは使いよう』

    ロック機能のポイントはSETNXです。 指定したキーがなかった場合は値をセットして1を返し、 既に存在する場合は何もせず0が返ってきます。 つまり、1はロック成功、0は他からロック済みと判断することができます。 それでは実装に進みましょう。 まずロックのインタフェースを用意します。 public interface Lock { public void lock() throws TimeoutException; public void unlock(); } 最低限のロックとアンロックを用意しました。 続いて中身を実装します。 public class RedisLock implements Lock { private static final String LOCK_KEY_PREFIX = "lock:"; private static final int LOCK_EXPIR

    『Redisとハサミは使いよう』
  • 『たのしい Scala』

    はじめに 初めまして。 2011年度入社のつちはしと申します。 アメーバのゲーム部門でエンジニアをしています。 今回はエンジニアブログを書く機会を頂きましたので、大好きな Scala について書かせていただきました。 「たのしさ」というとらえどころのない話しゆえ、すこしゆるーくなっておりますが、ご了承くださいませ。 というわけで、よく「Ruby は使っていて楽しいお 気持ちいいお」と聞くけど、 Scala も楽しいし気持ちいいんだよー! とゆうのを伝えたいです。。 伝わるといいです。。 (この記事は私が Scala の楽しいと感じる部分に的を絞って書いています。 Scala には楽しくない部分もいろいろありますが、それに関してはここでは触れません。 Scala たんは俺の嫁) さくっと書いてためしてみることが出来るの 題に入る前に。。 Ruby には irb という、その場でプログラムを

    『たのしい Scala』
  • 『Node.js Cluster+Socket.IO+Redisによるリアルタイム通知システム』

    Node.js Cluster+Socket.IO+Redisによるリアルタイム通知システム | サイバーエージェント 公式エンジニアブログ

    『Node.js Cluster+Socket.IO+Redisによるリアルタイム通知システム』
    yuiseki
    yuiseki 2013/12/27
  • 『出、出、出〜ameba画像配信奴〜!!』

    また、RAIDカードのパラメータはWritback、bs/512K、マウントパラメータはnoatime,nobarrier、queue_depthなども設定しています。 リニューアル構成 現在、上記の構成をリプレースしており 次期には分散ファイルシステムのOpenstack Swiftを使用した構成になります。 Swiftに関しては最近話題なので、ここでは割愛します。 ちなみにSwiftを採用した理由としては、こんな感じです。 ・分散できる(*´ω`*) ・RESTful(*´ω`*) ・pythonでかかれてる(*´ω`*) ・自動復旧機能がある(*´ω`*) ・コミュニティが活発(*´ω`*) ・試験的にもよかった(*´ω`*) まず分散できるという点。 Swiftはデフォルトで3つのレプリカを持つことができます。 また、zoneという概念をもっており、同じオブジェクトは複数のzone

    『出、出、出〜ameba画像配信奴〜!!』
  • 『redisをsentinelとAliasIPを利用して冗長化』

    どうも初めまして2012年度入社の社内ニート予備軍editnukiです。 普段は引きこもって WebSocketで監視もリアルタイムに を書いた社内ニートさんの下でコミュニティサービスのインフラをやっております。 運用面以外ではrpmパッケージ作ったりしています。 さて、題ですがコミュニティサービスでもredisを利用したいという声が最近多くなりいくつかのサービスではredisを導入しているのですがマスターとなるredisが死ぬと更新系が一切できなくなるため、マスターが死んだ時はアプリの向き先をスレーブに変更しなければなりません。 今までのredisの構成としては下図の様な構成でした。 redisの2.6系がリリースされた時に「sentinel」というフェイルオーバーの機能が追加されました。 詳細は公式ドキュメントをご参照ください。 フェイルオーバーしたとしてもアプリ側にマスターが切り替

    『redisをsentinelとAliasIPを利用して冗長化』
  • 『社内勉強会制度「Skill U Friday」』

    皆様はじめまして。 アメーバ経営部で開発支援を行っている織田と申します。 今回、Ameba事業部で執り行っている社内勉強会「Skill U Friday」についてご紹介さし上げます。 アメーバでは、社内外のノウハウや最新動向を持ち寄り部門や職能を越えて勉強会を定期開催しています。 現在アメーバには様々な部門があり、 それぞれの部門のプロジェクトに配属された開発者の数も1,000人※1を超えています。 Skill U Friday は、アメーバ全体の技術・品質の向上と 開発に携わる社員1人1人のスキルアップの一助となる機会のうちの1つとなります。 昨年の夏より取り組み、2013年5月時点で計40回を越えました。 これら過去に行われた勉強会は、資料と映像を記録し 新たに配属された社員や、当日参加できなかった社員でも 参照できるようにしております。 今この記事をご覧の方で将来サイバーエージェ

    『社内勉強会制度「Skill U Friday」』
    yuiseki
    yuiseki 2013/07/12
  • 『cassandra運用監視小ネタ集』

    はじめまして。サービスインフラというチームに所属している@oranieと申します。前回の弊社 佐野からCassandra芸人による他のネタも・・・という話があったのでこれ幸いとCassandraネタでお茶を濁そうと思っています。そもそも他にもネタを持っているエンジニアがいる中で僕に執筆依頼を出す時点で、なんて節操の無い寛容な人達だとビックリしました。多分ダーツかなんかで決めたんだと思います。 入社以来、なぜか弊社でデファクトとして使われているデータストアのMySQLにもほとんど触らず、ひたすらCassandra運用とか他には仕事チャット上で一人だけ勝手に盛り上あがって麻呂のAAを貼りつけたり等の社内ピエロ雑用をやっています。おかげさまでエキサイティングな日々を毎日送る事が出来た為、酒の量が一時期増えたのと多少は小ネタを覚えたのでまだ運用していない方に少しでも運用・監視周りのお役に立てれば幸

    『cassandra運用監視小ネタ集』
  • 『はじめての RabbitMQ』

    アメーバ事業API 基盤グループでプログラマをしている @na_ga です。 API 基盤グループでは、弊社の様々なサービスから利用される共通 API の開発・運用を行なっております。今回は、私が担当した API でメッセージキューとして利用した RabbitMQ を紹介させていただきたいと思います。 はじめにAPI 基盤グループで提供している API には、リクエストをリアルタイムに処理する必要がないものもあります。例えばメール配信 API や、投稿内容の有人監視 API などが挙げられます。 これらの非同期処理が可能な API では、大量のリクエストを受け取るためにメッセージキューを使用しています。 メッセージキューを使用した構成では、リクエストを受け取るプログラムが、受け取ったリクエストから生成したメッセージをキューに格納します。キューに格納されたメッセージは、メッセージを処理

    『はじめての RabbitMQ』
    yuiseki
    yuiseki 2013/04/30
  • 『WebSocketで監視もリアルタイムに』

    こんばんは。社内ニートの佐野と申します。所属はいちおAmebaのインフラチームです。Twitterもやっていますがフォローする価値はないです。つぶやいているのはメシと酒の話と下ネタだけです。 最近、組織改編とかもろもろありましてこのたびは雑用からニートになりました:(;゙゚'ω゚'): あまり目立たないように生きてたんですが、何気にこのブログへの登場は3回目になります...。前回は2012年12月に「QCon San Francisco 2012の参加レポ」を書かせていただきました。その前は2012年5月に「Virident FlashMAXの検証」として名前だけ登場しました。なんか、ニートだけど会社に貢献してる気がしてきた(^ρ^) そんなわけで以前WebSocketを使った監視ツールもどきを作ったので、それについての簡単な説明と、各種技術要素(Python, Jolokia)のTips

    『WebSocketで監視もリアルタイムに』
    yuiseki
    yuiseki 2013/04/26
  • 『【研究課題レポート抜粋】Jenkins+Unityで構築するスマフォアプリビルドサーバー』

    【研究課題レポート抜粋】Jenkins+Unityで構築するスマフォアプリビルドサーバー | サイバーエージェント 公式エンジニアブログ

    『【研究課題レポート抜粋】Jenkins+Unityで構築するスマフォアプリビルドサーバー』
  • 『アメブロFace向け顔認識システムの開発』

    はじめまして。アメーバ事業部でアプリケーションエンジニアをしています、寺と申します。 サイバーエージェントに入社後、ブログのエンジニアを経て、現在はアメブロFaceというスマホ向けサービスを担当してます。アメブロFaceについては、こちらのプレスリリースやこちらの弊社広報ブログでも紹介されていますのでご覧ください。 今回はアメブロFace向けに開発した「顔認識システム」について、弊社研究レポートから抜粋してご紹介いたします。アメブロFaceでは、この顔認識システムを用いて事前に約1,400万枚のブログ画像に顔認識を実施することで、顔写真のみを表示できるようにしています。今回1,400万枚の全画像に対して顔認識させるのに、16コアCPUのマシン6台で約1ヶ月程かかりました。かなりCPUパワーを使う手法ではありますが、精度についてはなかなかのものになっています。 それでは、以下ご覧ください

    『アメブロFace向け顔認識システムの開発』
    yuiseki
    yuiseki 2012/04/11
  • 『redis、それは危険なほどのスピード』

    どうも、プラットフォームDivでエンジニアをやっている Wataru です。 最近3人目の子供が産まれて、産後自宅勤務をさせてくれた弊社はとてもいい会社だと思います。出産予定のあるエンジニアのかたは是非弊社に転職を。 さて、今回はRedisの紹介をさせて頂きたいと思います。 Redisってすごくマイナーなわけではないのですが、めちゃくちゃ便利なのにあまり注目されていないなーという印象があるので、これを機会に是非使ってみてもらえると嬉しいです。 Redisって何?Redisとは「remote dictionary server」から名前が付けられたオープンソースのkey-valueデータストアです。 MemcacheDB等のKVSとの最大の違いは、格納するバリューがデータ構造というところです。 つまり、リスト・セット・ハッシュなどのデータ構造で格納できるのでバリューに対してアトミックな操作が

    『redis、それは危険なほどのスピード』
  • 『node.js + okuyama について』

    はじめまして ブログDivでアプリエンジニアをしている川田です。 今回はV8エンジン上で動作するサーバサイドJavaScriptのnode.jsと 日製の分散キーバリューストアであるokuyamaについての記事を書かせていただきます。 ■ node.jsとokuyamaの主な特徴 ▼ okuyama ・タグ機能 … データにタグ情報を付加することが可能で、タグに紐づいたデータの検索・取得が可能 ・javaで実装されている … 100% javaで実装されているのでクロスプラットフォームで実行可能 ・データの永続化をサポート … データの永続化・非永続化を選択可能で、永続化は特性を選ぶことも可能。 ・構成要素はすべて冗長化可能 … okuyamaを構成※1するマスターノード、データノード共に冗長化可能。またデータノードはレプリケーション機能も有している。 など。 ※1 okuyamaの構成

    『node.js + okuyama について』
    yuiseki
    yuiseki 2012/01/13
  • 『MongoDBを用いたモバイルゲーム開発について』

    こんにちは。アメーバ事業部のブログDivでエンジニアをしている@ygenkiと申します。 今回は、2010年12月末から2011年3月にかけて開発したモバイルソーシャルゲーム(以下、モバイルゲーム)で導入したMongoDBの話をさせていただきたいと思います。 MongoDBについては、すでに当エンジニアブログで津田氏によって紹介されております。 ドキュメント指向データベース「MongoDB」 ■MongoDBを使った理由 今回のゲームは私にとって2つめのモバイルゲーム開発になりました。 前回の開発ではMySQLを使用しておりましたが、モバイルゲーム開発の以下の特徴からMongoDBを採用いたしました。 ○開発効率の向上 モバイルゲーム開発は短期間での開発が求められ、ゲームという特性上仕様変更が頻繁に行われます。スキーマレスであるMongoDBはデータ構造の変更に柔軟に対応する事ができると

    『MongoDBを用いたモバイルゲーム開発について』
  • 『【研究課題レポート抜粋】P2P型Key-Value Storeの実装』

    第3回研究課題レポート(※1)の最優秀賞受賞作品で、 社員のToshiさんによって元のレポートは執筆されています。 第1章はじめに 近年,サービスの状態を保存するためにRDBMSがよく利用されている.代表的なRDBMSとしてMySQL[1] やOracle[2],PostgreSQL[3] などが挙げられる.RDBMSは,TCOの低さ,トランザクション機能,SQL のような柔軟な問い合わせ言語でのやり取りが可能であるなどのメリットがある.しかしながら,Web アプリケーションにおいて,RDBMS のような複雑なクエリは不要な場合が多く,プライマリキーでアクセスできればよい.また,RDBMS では,一貫性を保つために,ロックなどを用いるため,可用性を犠牲にする.さらに,近年進歩はしているものの,RDBMSにおいてスケールアウトや負荷分散はいまだ難しい問題となっている. これらの問題を解決する

    『【研究課題レポート抜粋】P2P型Key-Value Storeの実装』
    yuiseki
    yuiseki 2011/11/26
  • 『【DEFCON 19th】CTF 結果報告会を行いました』

    こんばんは。セキュリティエンジニアのM.M.です。 少し時間があいてしまいましたが、先週の9/8(木)に弊社でDEFCON 19thの結果報告会と懇親会を行いました。 日チームからは総勢16名の参加となり、大盛況でした。 チームリーダのtessyさんをはじめ、福森さんや愛甲さんなど、日を代表するセキュリティエンジニア達からDEFCONの振り返りや問題解説、運営の裏話などの発表があり、とても濃い内容の報告会でした。 また、今後のCTF参戦予定も共有されました。 来年のDEFCONまでに少しでも腕を磨くため、多くのCTFへ参戦することが計画されています。 私も10月にマレーシアで開催予定のHITB(Hack in the Box)へ参加してくる予定です。 DEFCONが終わってみて改めて感じたことですが、日には優秀なセキュリティエンジニアがたくさんいるのに、残念ながら世界的にはまだまだ遅

    『【DEFCON 19th】CTF 結果報告会を行いました』
    yuiseki
    yuiseki 2011/09/15
  • 『ピクシブ × サイバーエージェント 合同勉強会』

    こんにちはアメーバ事業部のブログDivでエンジニアをしているgenkiと申します。 今回は、今月開催されたピクシブ株式会社様との合同勉強会を初めて開催しまし たので、ご報告したいと思います。 ■勉強会の様子 ピクシブ株式会社様の受付には、数多くのイラストが展示されておりました。 当日は両社合わせて50名程度の参加者が集まりました。 プログラムは、セッション20分×4→LT×4→懇親会という流れでした。 以下では、セッションの発表内容をご紹介したいと思います。 ■ピクシブセッション1:「memcachedからKyotoTcoonへ」 久保達彦さん(twitter: @cubicdaiya)の発表になります。 memcachedからKyoto Tycoonへの移行までについてお話をしていただきました。 memcachedの運用では、UNIX Domain Socketでアクセスを行う事につい

    『ピクシブ × サイバーエージェント 合同勉強会』
    yuiseki
    yuiseki 2011/08/06
  • 『MaxentSets を使った芸能人推薦 ―アルゴリズムシリーズ 2―』

    度々登場させて頂いております hattori です。 ボスからのお達しで2回目のネタを書くことになりました。( 前回のネタはこちら ) 聞く所によると3ヶ月に一回くらいのペースでシリーズ?を書かねばならないのですが、1年後に果たして書くネタが残っているか、、、若干微妙な感じです。汗。 さて日のテーマですが、" Set Expansionを利用した芸能人推薦の方法 " を紹介しようと思います。これは以前、株式会社 mixi 様との合同勉強会で発表した内容の補足的な話になっていまして、以下の発表スライドを先に斜め読みして頂けますと以降の話が分かり易いかと思います。 ■ Set Expansion とは何ぞや? Set Expansion とは 『 SEEDとなる部分セットを拡張・補完して、より完全なセット集合を作る 』 というタスクの事です。若干分かりに難いのですが、より平易に言うと 『

    『MaxentSets を使った芸能人推薦 ―アルゴリズムシリーズ 2―』