タグ

2013年5月9日のブックマーク (162件)

  • fluentd のソースを読む (1) - @kyanny's blog

    fluentd のソースを読み始めました。単なる趣味です。 経緯: fluentd の exec buffered output plugin を試してみたらflush_interval を短くしても USR1 シグナルを送ってもバッファが flush されず command が実行されなくて悩んでいたらTimeSlicedOutput はスライスの時間が経過しないとバッファから出てこないと教えてもらい、ソースを読んでちゃんと理解したいと思ったため、です。 とはいえ plugin/out_exec.rb をいきなり読んでもさっぱりわからなかったので、順を追って読んでみることにします。 まずは bin/fluentd を実行すると fluend が起動するところまで。 bin/fluend は fluend/command/fluentd.rb を実行してるだけ fluent/command

    fluentd のソースを読む (1) - @kyanny's blog
  • なるほどUnixプロセス ― Rubyで学ぶUnixの基礎 - wyukawa's diary

    なるほどUnixプロセス ― Rubyで学ぶUnixの基礎【電子書籍】Jesse Storimer, 島田浩二(翻訳), 角谷信太郎(翻訳) 達人出版会 発行日: 2013-04-25 対応フォーマット: EPUB, PDF, ZIP 詳細を見る まだβ版ですが、面白そうだったので買ってみました。初代iPadのiBooks上で全152ページで値段が2,980(正式には3,360)円というのはちと高い気がしますが、原書が$27なのでまあしょうがないでしょう。 で、ざざっと読んでみた感想としては面白いですね。Unixのプロセスの話をRubyで学ぶようになっていてC言語でやるよりはRubyの方が抽象度が高いので比較的わかりやすいと思います。類書も無いような気がしますね。 シグナルのあたりとかパラパラと読んでいて、そういやfluentdだとどうなってんだっけと思いsupervisor.rbを読んで

    なるほどUnixプロセス ― Rubyで学ぶUnixの基礎 - wyukawa's diary
  • 初めてのgem作成 - wyukawa's diary

    僕はJavaメインでずっと仕事してきたこともありRubyはほとんど書けないし、仕事Rubyのコードを書く機会も今のところ少ないです。ただRubyで実装されたアプリ(例:fluentd)を使うことはあるしchef, vagrantなど興味あるアプリはRubyベースなことも多いので環境周りなんかは少し知っといた方が良いなと思っているわけです。 まあRubyに限らずLL言語で実装されたアプリは(C拡張とか出てくると特に)インストールは大変だという先入観というか偏見を持っているのですが慣れの問題でしょうねえ。その辺ではまらないようにしときたいなと思っている訳です。 Rubyアプリはgemでインストールするのが一般的なことは分かっているので、その辺を理解するためにもいっちょ自分で簡単なtoyプログラムを作ってgemで公開してみましたというのがエントリです。 gemの作り方に関してはWEB+DB

    初めてのgem作成 - wyukawa's diary
  • http://infra-engineer.com/linux/linuxsar%E3%81%A7%E5%8F%96%E5%BE%97%E3%81%A7%E3%81%8D%E3%82%8B%E6%83%85%E5%A0%B1/

  • http://infra-engineer.com/linux/linuxiostat%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9%E3%81%A8%E8%A6%8B%E6%96%B9/

  • Loading...

  • http://infra-engineer.com/hadoop/hadoop-conference-japan-2011-fall%E3%81%A7%E4%BD%BF%E7%94%A8%E3%81%95%E3%82%8C%E3%81%9F%E8%B3%87%E6%96%99%E3%82%84%E3%81%A4%E3%81%B6%E3%82%84%E3%81%8D-hcj11f/

  • 事例:とある写真共有アプリでのMongoDB

    事例:とある写真共有アプリでのMongoDB - Presentation Transcript MongoDB@just_do_neet 1 • MongoDB• MongoDB Topic• HBase• 2 Adoption stories of ‘MongoDB’ MongoDB 3 • RDBMS MongoDB → →• MongoDB• GridFS 4 NAVER Photo Album http://itunes.apple.com/jp/app/id449576650 • iPhone • ‘Path’ like • 5 NAVER Photo Album http://itunes.apple.com/jp/app/id449576650 • iPhone • ‘Path’ like • 6 • or•• RDB KVS 7 DB•M ySQL →••M ongoDb

  • HBaseをJConsoleで監視 - LunaBiblos

    概要 JDK1.5以後に搭載されて居るJConsoleからHBaseの負荷状態を覗く方法です。 設定 Hadoop/HBaseの設定を変更します。 vi ${HBASE_HOME}/conf/hadoop-metrics.properties ファイルを開いたら、下記の通りに設定を変更します。 # Configuration of the "hbase" context for null hbase.class=org.apache.hadoop.metrics.spi.NullContextWithUpdateThread hbase.period=60 # Configuration of the "jvm" context for null jvm.class=org.apache.hadoop.metrics.spi.NullContextWithUpdateThread jv

  • Hadoopのトラブルシューティングに関する資料があったのでめもっとく - wyukawa's diary

    Hadoop World 2011でClouderaの人が発表した資料を見つけたのではっておく。 Hadoop Troubleshooting 101 - Kate Ting - Cloudera View more presentations from Cloudera, Inc. Clouderaのサポートチームの極意が詰め込まれているようだ。 内容的にはHadoop徹底入門の10章の「性能向上のためのチューニング」と若干かぶっているが参考になります。 io.sort.mb < mapred.child.java.opts とすることとか(ていうかmapred.child.java.optsを増やすことはあるかもしれないがio.sort.mbっていじるもんなのかな)、プロセス数やファイルディスクリプタいじれとか、map出力のスレッドいじれとか、Jetty 6.1.26は使うなとか、盛り

    Hadoopのトラブルシューティングに関する資料があったのでめもっとく - wyukawa's diary
  • http://infra-engineer.com/hadoop/%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E7%92%B0%E5%A2%83%E3%81%A7%E3%81%AEhbase%E3%81%B8%E3%81%AEycsb%E3%83%99%E3%83%B3%E3%83%81%E3%83%9E%E3%83%BC%E3%82%AF%E3%81%AE%E5%AE%9F%E8%A1%8C%E6%96%B9%E6%B3%95/

  • 主要NoSQLの種類と特性を整理--分散DBMS「Cassandra」も解説 - builder by ZDNet Japan

    クラウドが全盛を迎えた今、従来型のリレーショナルデータベース管理システム(RDBMS)と並んで「NoSQL」の存在が重要性を増している。 今回は、NoSQLの一種として注目されているデータベースシステム「Apache Cassndra」を解説する。 そもそも「NoSQL」というのは「RDBMSではないデータベースシステム」という程度の緩い概念を表す用語なので、一言でNoSQLと言ってもその仕組みやデータ構造には様々な種類がある。 代表的なNoSQLの種類を挙げてみよう。 KVS(Key-Value Store型) キーと値をペアにして保持するシンプルなデータ構造を持つ。キーと、格納したいデータを紐付け、キーを指定することでそれに対応したデータを格納/取得することができる。複数のストレージにデータを分散させて格納するKVSを特に「分散KVS」と呼び、データのレプリケーション(複製)や一貫性、

    主要NoSQLの種類と特性を整理--分散DBMS「Cassandra」も解説 - builder by ZDNet Japan
  • Apache HBase ブック

    Adding first cuts at Configuration, Getting Started, Data Model

  • 「MongoDB Tokyo 2012」で話しました « NAVER Engineers' Blog

    度々の登場で恐縮です。大平です。 先日、ご縁がありまして掲題のイベントで発表をさせていただきました。 http://www.10gen.com/events/mongo-tokyo-2012 http://blog.10gen.com/post/16370064130/recap-mongodb-tokyo-2012 この記事では、発表させていただいた資料の公開と、参加しての簡単な感想を書かせていただきます。 発表資料 発表させていただいた資料は以下になります。 以前「MongoDB 勉強会 in Tokyo」で発表させていただいた内容の続編的な話で、技術的に深掘りするというよりも、MongoDBの使用事例・検証事例をいくつかのバリエーションでお話させていただきました。 途中、若干MongoDBをDisる流れになってしまいましたがw、それぞれのプロダクトの良さや欠点がある中、今まで

  • いまさら聞けないKVSの常識をHbaseで身につける

    いまさら聞けないKVSの常識をHbaseで身につける:ビッグデータ処理の常識をJavaで身につける(3)(1/3 ページ) Hadoopをはじめ、Java言語を使って構築されることが多い「ビッグデータ」処理のためのフレームワーク/ライブラリを紹介しながら、大量データを活用するための技術の常識を身に付けていく連載 ビッグデータの要! KVSとは何なのか 「KVS(Key-Value Store)」とは、Key値を指定してValue値の格納や取得を行う方式です。それに対して、RDBではキー(プライマリキー)が必須ではなく、逆に複数のカラムをセットしてキーにすることもできます。 テーブル構造だけを見れば、KVSとRDBは似ています。例えば、RDBでプライマリキーと1つのBLOB型を持ったテーブルを作れば、KVSと同じような構造にもなります。しかし、RDBでKVSのまねごとをするのと、KVSとして

    いまさら聞けないKVSの常識をHbaseで身につける
  • 管理が困難―分散処理の常識はZooKeeperで変わる

    管理が困難―分散処理の常識はZooKeeperで変わる:ビッグデータ処理の常識をJavaで身につける(8)(1/3 ページ) Hadoopをはじめ、Java言語を使って構築されることが多い「ビッグデータ」処理のためのフレームワーク/ライブラリを紹介しながら、大量データを活用するための技術の常識を身に付けていく連載 分散処理の課題が「管理」なのは常識 複数の計算機上で動作(分散)するアプリケーション、ソフトウェアが多く存在します。分散ソフトウェアは複数の計算機で動作することで大量のデータを扱えたり、高負荷な状況に対処します。稿では、複数の計算機(クラスタ)で動作する各サーバを「インスタンス」と呼びます。 連載で紹介した分散Key-Valueデータベースである「HBase」は複数の計算機で動作する代表的なソフトウェアです。両ソフトウェアはともに「Apache ZooKeeper」(以下、Z

    管理が困難―分散処理の常識はZooKeeperで変わる
  • HBaseCon 2012 参加レポート

    2012年6月25日のHadoopソースコードリーディング 第10回での『HBaseCon 2012 イベント参加レポート』の発表資料です。NTTデータの猿田と岩崎による発表です。 ▼HBaseCon 2012 http://www.hbasecon.com/ ▼NTTデータ BizXaaS Hadoop構築・運用ソリューション http://oss.nttdata.co.jp/hadoop/Read less

    HBaseCon 2012 参加レポート
  • Hadoop summit 2012 report

    第10回Hadoopソースコードリーディングで発表した資料です。 2012年6月に開催されたHadoop Summit の参加レポートで、YARN、HBase、HDFS HA などのセッションを紹介しています。Read less

    Hadoop summit 2012 report
  • これから Hadoop を学ぶ人向け読書ガイド - 科学と非科学の迷宮

    なんだかんだで Hadoop 周りのも結構増えてきましたので下にまとめました。 抜けてるのもあると思うので(特に和書)、なんかお薦めありましたらコメントください。追加します。 タイプ別お薦め読書コース 短期間で全部読むのは不可能なので、とりあえず簡単にお薦めの読書コースを紹介します。 非技術者(営業や経営者など) 象1章と徹底入門1章だけ読んどけばいいです。余裕があれば象16章(ケーススタディ)。読んでる暇あったらその人件費で技術者にいいPC買ってあげてください。 技術者(共通) 象読まないとかありえないです。 別に全部読む必要ないですが、とりあえず 1-10章ぐらいは目を通してください。 それも時間的に難しいならせめて3章か4章ぐらいまで目を通してください。 可能なら徹底入門と並行して読んでください。書き方の切り口が違う2つの書籍を読むことで理解が深まります。 Hadoop 技術

    これから Hadoop を学ぶ人向け読書ガイド - 科学と非科学の迷宮
  • HBaseのRow Keyの設計についてのメモ - wyukawa's diary

    Facebook Messageで使われたり、LINEのストレージで使われたり、と事例も多く出てきているHBase(Bは大文字。これ重要)ですが、個人的に少し興味も湧いてきたのでちょっと調べてます。HBaseはLog-Structured Merge-tree (LSM-tree)というアーキテクチャを使っており大量データの書き込みに最適化されています。なので大量の書き込みがあり読み込みは直近のもののみというメッセージ系アプリに向いているんだと思います。 そういえば半額に釣られてManning | HBase in Actionも買ってしまいました。 このの4章のRow Keyの設計についての話があってそれがちょっと面白かったので関連してRow Keyについて少し書いてみます。 まずHBaseはカラム指向のデータベースと呼ばれますがデータモデルは多次元ソートマップです。 図解すると下記の

  • 目指せHadoopエンジニア-管理者・DBエンジニア編-

    前編の「開発者編」では、Apache Hadoop(以降Hadoop)の歴史と概要に加え、開発者に必要な知識を客観的に証明できる認定資格、CCDH(Cloudera Certified Developer for Apache Hadoop)を紹介しました。後編では、Hadoopの管理者に求められる知識に加え、Hadoopの管理者向け認定資格、また最近のHadoop関連の話題とカラム指向分散データベースであるApache HBaseの紹介、およびHBaseの認定資格を紹介します。 Hadoopの管理者に求められるもの 前編で紹介したように、Hadoopでは一台から数千台規模のクラスタを構築することが可能であり、必要に応じてスケールアウトさせることができます。Hadoopは非常に強力ですが、管理するのはそれほど簡単ではありません。言い換えると、正しい知識を持たずに運用すると、大きなトラブルが

    目指せHadoopエンジニア-管理者・DBエンジニア編-
  • HBase at LINE

    第2回NHNテクノロジーカンファレンスで発表した資料ですー。 References: LINE Storage: Storing billions of rows in Sharded-Redis and HBase per Month (http://tech.naver.jp/blog/?p=1420), I posted this entry in 2012.3.

    HBase at LINE
  • 日々進化するHadoopの 「いま」

    第2回 NHNテクノロジーカンファレンス 講演資料(2012年8月18日) 日々進化するHadoopの 「いま」 株式会社NTTデータ 基盤システム事業部 OSSプロフェッショナルサービス シニアエキスパート 濱野 賢一朗 (日Hadoopユーザー会) NTT DATA CORPORATION System Platforms Secter Senior Expert Kenichiro Hamano

    日々進化するHadoopの 「いま」
  • 第2回NHNテクノロジーカンファレンスでしゃべってきた - たごもりすメモ

    勤務先が主催でNHNテクノロジーカンファレンスという技術者向けイベントをやってるんだけど、その登壇者として社外の誰かから推薦されたらしいので(何故……)、ひとセッションしゃべってきた。なお「HBase at LINE」の発表は「HBaseについて誰かいない?」と主催の伊勢さんに聞かれたのに自分が推薦しました。みんなありがたがるといいよ。 他の人の話も、懇親会でのあれやこれやも大変楽しかった。HBaseなー、火山かー、みたいな。そのうち techblog にまとめエントリが上がるんじゃないでしょうか。それまでこっちでも見ると当日の状況が多少なりわかるかもしれません。 第2回NHNテクノロジーカンファレンス #nhntech まとめ - Togetterまとめ で、自分がしゃべったときのスライドはこちら。(slideshareのembed用タグを埋めてもはてなダイアリーに弾かれてしまう…… 対

    第2回NHNテクノロジーカンファレンスでしゃべってきた - たごもりすメモ
  • livedoor Techブログ : 第2回 NHNテクノロジーカンファレンス 開催ログ

    株式会社データホテルの伊勢です。 2012年8月18日(土)に開催されました 第2回 NHN テクノロジーカンファレンス の発表資料と動画を公開致します。 ご登壇頂きました皆様、ご参加頂きました皆様、どうもありがとうございました。 また、今回「H」な技術と言う事で、オライリー・ジャパン様より「HBase」の書籍をプレゼント頂きました。アレンジしていただいた翻訳者の玉川さん、オライリー・ジャパン様ありがとうございます。 「H」当たった皆様、おめでとうございました。 それでは、以下 第2回テクノロジーカンファレンスの開催ログとなります。 ※ 登壇者の皆様と。左から 田籠氏、井上氏、中村氏、濱野氏、沈 氏、伊勢です。 「HTML5 Animation in Mobile Web Games」(沈 相旻 氏 NHN Korea、 Mobile Ajax チーム) 「日々進化するHadoopの『今

  • 「カジュアル」な規模のデータクラスター上でのデータ解析処理 « NAVER Engineers' Blog

    今年はさだまさしさんのデビュー40周年ということで、記念コンサート「さだまつり」も絶賛開催中の折も折、残暑も厳しい中皆様いかがお過ごしでしょうか。大平です。 さだまさし氏は経験の豊富な方ですので彼の歌や発言から学ぶことは大変多いのですが、個人的に非常に感銘を受けているのは「歌はコンサートで成長する」という言葉です。歌い手として、「歌」という作品を作って公開・販売するだけが仕事ではなく、実際にコンサートなどでお客さんに届け、お客さんの反応を参考にしたり日々の演奏活動の中で試行錯誤を繰り返して、内容をブラッシュアップし洗練させていく過程を指して先の言葉があるのだと思います。実際にさだまさし氏の曲はCDに収録されているものと実際にライブで演奏されるものとでアレンジが大きく異なり、かつ作品としても質が向上しているものが少なからず存在します。 …あまりさだまさしの話を続けると当に上長に叱られますの

  • HBaseを止めるな! ~OKWaveの挑戦~ - はたらくコンピュータ

    2012-12-16 HBaseを止めるな! ~OKWaveの挑戦~ HBase Hadoop いまだにHBaseには怖くて手が出せてないんですが、12/10のHadoopソリューションセミナー@東京カンファレンスセンター品川でのOKWaveさんの事例紹介が素晴らしかったのでご紹介します。この発表を聴いていたら「何とかなるんじゃないか?」という気がしてきました。まず気を付けるポイントは以下の4点 1. リージョン自動分割はしない デフォルトではリージョンが一定サイズを超えると自動分割が走ってしまい、分割中はリージョンにアクセスできなくなる。リージョンは事前に分割しておいて、自動分割閾値を極端に大きい値にしてリージョン自動分割を走らせない方が良い。 2. メジャーコンパクションを走らせない デフォルトでは24h±20%毎に走るけれどもこれだと影響が大きくなってしまうので、そうなる前にこまめに

  • HBaseを触ってみよう

    HBaseは、Googleの基盤ソフトウェアである「Bigtable」のオープンソースクローンであり、大量データに対応した分散ストレージシステムです。HBaseを用いることで、スケーラブルで信頼性のあるデータベースを構築することができます。また、MapReduceを標準でサポートしており、HBaseに保存したデータに対してバッチ処理を行うことも可能です。しかし、SQLで扱えないことや、RDBとのスキーマ設計の考え方の違いなど、とっつきにくい部分が多々あり、戸惑う方が多いように思います。連載では、そういう方々を対象にできるだけ分かりやすく実例を交えながら解説していきたいと思います。 はじめに 近年、「NoSQL」の技術が注目を集めています。NoSQLとは、"Not Only SQL"の略で、SQLを用いないデータベースの総称です。NoSQLというとCassandra、Redis、Mongo

    HBaseを触ってみよう
  • Hadoopはビッグデータの汎用プラットフォームであり、行く先はグーグルが示している

    Hadoopはビッグデータ処理の汎用プラットフォームであり、SQLやジョインやトランザクションなどが使えるようになる。Hadoopの生みの親であるダグ・カッティング氏は、都内で開催された日Hadoopユーザー会主催のイベント「Hadoop Conference Japan 2013 Winter」にビデオメッセージで参加。Hadoopの現在、そして将来像について語りました。 カッティング氏が語ったHadoopの将来とはどんなものなのか。ポイントを紹介しましょう。 バッチ処理を超え続くApache Hadoopの進化 Apache Software FoundationのChairmanでありClouderaのChief Architect、Doug Cutting氏。 今日はみなさんと一緒に参加したかったのですが残念ながらかなわず、このビデオをお送りすることになりました。 MapRedu

    Hadoopはビッグデータの汎用プラットフォームであり、行く先はグーグルが示している
  • HBaseを用いたグラフDB「Hornet」

    Hadoop Conference Japan 2013 WinterのLTで発表した資料です。Read less

    HBaseを用いたグラフDB「Hornet」
  • スケーラブルなシステムのためのHBaseスキーマ設計 #hcj13w

    Cloudera HBase トレーニング: http://tiny.cloudera.com/jptraininghbase Hadoop Conference Japan 2013 Winter で発表した、HBaseのスキーマ設計に関する資料です。 Cloudera の HBase サポート、Cloudera Enterprise RTD http://tiny.cloudera.com/jpcertdRead less

    スケーラブルなシステムのためのHBaseスキーマ設計 #hcj13w
  • Cloudera | ハイブリッドデータカンパニー

    データを信頼し、AI を信頼する 信頼できるデータ、信頼できるモデル、信頼できる AI を実現するために、これほど多くのクラウドのさまざまなデータタイプを管理でき、オープンデータのイノベーションと大規模展開に対応できるプラットフォームは他にありません。

    Cloudera | ハイブリッドデータカンパニー
  • Hadoop Conference Japan 2013 Winterで話してきました! « NAVER Engineers' Blog

    こんにちは.サービス開発2チームの中村です. 先日1/23に行われた日最大級のHadoopユーザー会イベント,「Hadoop Conference Japan 2013 Winter at 東京ビッグサイト」にて,私,中村と同チームの大平が講演させていただきました. 中村の方からは,まずLINEのサービスやストレージの要件と現在の1億ユーザーを支えるHBaseで扱う規模感を共有しました.後半では,HBaseのサービス投入から1年経過して,我々のために作ったもの・得られたノウハウについて少しだけ紹介しました. ポイントは,HBaseをリアルタイムサービスのストレージとして採用し,ノンストップ環境の中でどのように可用性の高いストレージの構築を目指しているか,という点です.このために,HBaseが備えるレプリケーションやリージョンの自動管理機能などは使用せず,自分たちのサービスに特化させた方法

  • LINEの1億ユーザを支えるHBaseのチカラ─Hadoop Conference Japan 2013 Winterレポート(2) | gihyo.jp

    LINEの1億ユーザを支えるHBaseのチカラ─Hadoop Conference Japan 2013 Winterレポート(2) 1月21日に開催された「Hadoop Conference Japan 2013 Winter」の基調講演では、先日、ついに1億ユーザを達成したメッセージングサービス「LINE」で利用されているHBaseの実態について、NHN JapanでLINEのストレージを担当する中村俊介氏が紹介を行いました。稿ではその概要をレポートします。 NHN Japan 中村 俊介氏 最も重要視するのは「ストレージの高可用性」、HBaseはそのためにある FacebookやTwitterを抜くスピードで急成長を遂げるLINE。1月18日にはサービス提供開始からわずか19ヵ月で1億ユーザを達成し、大きな話題となりました。 急成長中のサービスを提供するために、その裏側で動くストレ

    LINEの1億ユーザを支えるHBaseのチカラ─Hadoop Conference Japan 2013 Winterレポート(2) | gihyo.jp
  • HBase at Ameba

    1. Developers Summit HBase at Ameba ~AmebaのおけるHBaseの導入事例~ 14-A-2 鈴木俊裕 #devsumiA 株式会社サイバーエージェント アメーバ事業部 プラットフォーム部門 Developers Summit 2013 Action ! Ameba Technology Laboratory 2. Developers Summit 自己紹介 •  鈴木 俊裕(すずき としひろ) •  ソフトウェアエンジニア •  株式会社サイバーエージェント –  アメーバ事業部 –  プラットフォーム部門 –  Ameba Technology Laboratory •  Hadoopを使ったログ解析基盤の開発・運用 •  HBaseをつかった基盤システムの開発・運用 •  Twi;er @brfrn169 Developers Summit

    HBase at Ameba
  • HBaseのアーキテクチャを理解しよう

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

  • JSON用標準JavaAPI

    原文(投稿日:2013/04/26)へのリンク JSR-353、JSON処理(JSON-P)用のJava APIは、今月の最終承認投票にいたった。JSON-Pは(JAXPに似た)ストリーミングAPI(StAXのに似た)とオブジェクトモデルのAPI(DOMに似ている)で構成されている。リファレンス実装であるjsonpは、現在ベータでCDDL v1.1 と GPL v2の下でオープンソースした。JSON-Pは、今後のJava EE 7の一部となり、そのデフォルトのJSON実装のためにJAX-RSによって使用される。このAPIは、JSONデータバインディング(JAXBに似た)含んでおらず、より人気のあるJSONPすなわと"パディングのあるJSON"とは無関係ではあることに注意して欲しい。 JSON (JavaScript Object Notation) は軽量のデータ交換フォーマットで、Web

    JSON用標準JavaAPI
  • 勉強のためフレームワークを作ってみる - 日記のような何か

    最近、SeasarのSAStrutsやCubbyに心ひかれる。 まだ、実際に使用してみてはいないのだが、チュートリアルとかコードとか見てると 自分でも久々にフレームワークを書いてみたくなってきた。 以前に仕事でトランザクション、DBアクセス周りの簡単なフレームワークを書いたことはあるが、 最近はあまりJavaでプログラミングしてないし。 というわけで、とりあえず勉強目的で書いてみることにする。

    勉強のためフレームワークを作ってみる - 日記のような何か
  • Actionの共通処理をどこに実装するか? - 日記のような何か

    Struts(1.2.x以下)からSAStrutsへの置き換えをするときに、Actionの共通前処理をどこに実装するかで迷った。 ここで言う共通前処理とは、個々のActionを実行する前に共通で実行したいような処理のこと。 Strutsでは、org.apache.struts.actions.DispatchActionを継承したクラスを作成し、dispatchMethodをオーバーライドして、そこに実装していたが、SAStrutsはPOJO ActionなのでDispatchActionに該当するものがない。 まず、考えたのはAOPで実装する案。 個々のActionに共通のスーパークラスを作成し、共通前処理メソッドを実装した上で、Interceptorを作成し、共通前処理メソッドを呼び出すようにする。 せっかくPOJO Actionなのにスーパークラスの継承を強要させるのは微妙な気がしな

    Actionの共通処理をどこに実装するか? - 日記のような何か
  • JMeterでJSFの負荷試験にチャレンジ - Challenge Engineer Life !

    少し前に「JenkinsとJava EE6で取り組んだ初めてのCI」というエントリを書きましたが、図の負荷試験の所は「これから」となってます(^^; 来は画面開発中でも負荷試験を交えながら作るべきなのだと思うのですが、自分自身、開発にかなり時間を割く必要もあって、そういう状況にできませんでした(-_-;言い訳に過ぎないのですが、CIの仕組み入れるのもやっとだった環境なんで…。 が、まだ時間はある!ということでGWを使ってJMeterを触ってみます。 ちなみに自分の負荷試験の記憶は 「みんなー集まってー。いくよー、いっせーのー、せっ」 だったり…(^^;マジです。 数年前で、WebじゃなくWindows Formでしたが…。 今のVisualStudioだとフォームの自動テストもずいぶん簡単にできるようなので、もうそんなことはしないはず。。そしてWeb開発ならばなおさら。。 JMeter関

    JMeterでJSFの負荷試験にチャレンジ - Challenge Engineer Life !
  • 開発現場で実際にJSFを利用していて感じること - Challenge Engineer Life !

    今日はJSF(JavaServer Faces)に関する雑記です(^^; 自分が今までJSFを開発で触れてみて思ったことや海外でのJSFについて等、つらつらと書いてみた感じです。 JSFの利用状況って… 数日前にtwitter上の会話からJSFってどれくらい利用されているんだろう?、的な流れから、最終的に@aoetkさんがJSFが使われた一般向けWebサイトをリサーチされ、まとめられていました。 昨日つぶやいていましたが、JSFが使われた一般向けWebサイトについてblogにまとめてみました。 d.hatena.ne.jp/aoe-tk/2013050…— AOE Takashiさん (@aoetk) 2013年5月3日 RichFacesなどが実際に使われているサイトをみて驚いたと同時に、そのサイトが結構色々なコンポーネントを利用していて、かつ、Ajaxも多々利用していたため、何か個人的

    開発現場で実際にJSFを利用していて感じること - Challenge Engineer Life !
  • Spring+Servlet3.0で実現する非同期リクエスト処理Comet - Taste of Tech Topics

    です。 最近めっきり春の陽気になってきました。 春と言えばSpring・・・ということで(-_-;)、Spring 3.2で非同期リクエスト処理がサポートされたので、触ってみました。 サポートされたのは、Servlet 3.0で追加された非同期処理(Comet)であり、WebSocketはまだ先のようです。。(Spring 4.0で実現予定) SpringでCometする方法は主に2つあります。 Callableを使用する DeferredResultを使用する どちらの方法を使う場合でも、Servlet 3.0の仕様に合わせて、web.xmlのServletとFilterに <async-supported>true</async-supported> を書く必要があります。 <servlet> <servlet-name>rootServlet</servlet-name> <se

    Spring+Servlet3.0で実現する非同期リクエスト処理Comet - Taste of Tech Topics
  • ØMQの何がすごいのか理解してみる。 実践編 - Taste of Tech Topics

    第1回 橋です。 今回も引き続きØMQの話です。 簡単なサンプルプログラムを動かしながら、ØMQの内部動作を探っていきます。 なお、この連載は、あくまで「内部を探る」が目的のため、ØMQの説明では必ずといって良いほど出てくるtopologyの説明は、割愛しちゃいます。 ちょっと拍子抜けかも知れませんが、マニュアルを参考にしてくださいね。 最初のサンプルコード 2回目にして最初のサンプルコードです。 ØMQではいろいろな通信方式・構成を選べるのですが、まずはネットワークプログラムを書く人間なら誰しも書く、シンプルなサーバ・クライアント形式のプログラムを書いてみます。 今回は簡単のために素のC言語のAPIを触っています。 Javaなどの他の言語でもあまり変わらないので、安心してください。 サーバ側 まずはサーバ側です。 ソケットプログラミングを経験した人ならば容易に想像がつく実装だと思います

  • ØMQの何がすごいのか理解してみる。導入編 - Taste of Tech Topics

    です。 これから数回にわたってØMQについて取り上げていこうと思います。 書いている中の人の趣味趣向により「どう使いこなすか?」というより「どう作られているか?」に軸足を移した 内容になると思います。 私と同じく「Stormってどういう作りになっているんだろう?」とか「Hadoopのソース読んでたら1日終わってた!」という人向けの内容になります。 その分ある程度深くもぐろうと思いますので、よろしくお願いします。 ØMQの紹介 ØMQというのは簡単に言うと「並列処理でパフォーマンスを出すための通信フレームワーク」です。 2007年ごろから開発されているOSSとしては歴史あるソフトウェアなのですが、 Stormの通信レイヤの実装で一躍有名になったのではないでしょうか? 少なくとも私はStormのソースコード公開で初めて知り、作り手の熱い思いにわくわくしたクチです。 "MQ"という文字が含ま

  • イベントドリブンで通信処理を行えるNetty 導入編3 - Taste of Tech Topics

    こんにちは!新しい物好きなエンジニアのツカノです。 前回の記事で少しふれた「Netty in Action」が発売されました。ただし、現段階ではEarly Accessということで、PDFで一部の章のみが公開されています。ネットワークプログラミングの基的な所から丁寧に説明されており、今後、執筆が進むのが楽しみです。 ところで、Nettyは最新安定版がversion3なのですが、version4の開発も進められています。このブログではversion3について紹介していますが、Netty in Actionはversion4のAPIを使って記述しているので、ご注意ください。version3とversion4では、概念的には大きく変わっていませんが、パッケージ名・クラス名・メソッド名等は大幅に変わっています。 それでは、日もよろしくお願いします。 これまで、「導入編」「導入編2」として、Ne

    イベントドリブンで通信処理を行えるNetty 導入編3 - Taste of Tech Topics
  • イベントドリブンで通信処理を行えるNetty 導入編2 - Taste of Tech Topics

    こんにちは!新しい物好きなエンジニアのツカノです。 最近「xx in Action」シリーズを見ていると、JavaScript関係のが随分増えているように思います。このブログでも、JavaScript関係の紹介をしていますが、このシリーズで刊行されると「ある程度使われてきているんだなぁ」と感じます。 実は数日前、NettyコミッタのNormanさんが「Netty in Action」を出すと発表していました。それだけ、Nettyも広がってきているんですね。 それでは、日もよろしくお願いします。 さて、前回は「導入編」として、サーバサイドのサンプルを紹介しました。今回はその続き「導入編2」として、クライアントサイドのサンプルを紹介します。 具体例を見てみましょう(クライアントサイド) 前回、サンプルとしてクライアントから"Hello, World!"という文字列を受信してそのまま返すエコ

    イベントドリブンで通信処理を行えるNetty 導入編2 - Taste of Tech Topics
  • イベントドリブンで通信処理を行えるNetty 導入編 - Taste of Tech Topics

    導入編 目次 イベントドリブンで通信処理を行えるNetty 導入編 - Taste of Tech Topics イベントドリブンで通信処理を行えるNetty 導入編2 - Taste of Tech Topics イベントドリブンで通信処理を行えるNetty 導入編3 - Taste of Tech Topics こんにちは!新しい物好きなエンジニアのツカノと言います。 情報システムのインフラを支えるOSSのひとつにNettyというフレームワークがあります。 Nettyはイベントドリブンな非同期通信を行うアプリケーションを開発するためのフレームワークで、これを使うとネットワークプログラミングを見通し良く書ける、という特徴があります。今回から数回に分けて、Nettyについて紹介します。 それでは、よろしくお願いします。 インフラOSSを使いこなそう! ここ数年、ビッグデータ関係のプロダクト

    イベントドリブンで通信処理を行えるNetty 導入編 - Taste of Tech Topics
  • Java、メモリリークを追跡して修正する方法

    Javaでサーバアプリケーションを開発している場合に遭遇する問題に「Out Of Memory」がある。Javaアプリケーションが使用するメモリが増え続け、最終的に許容範囲を超えてJava仮想マシンがクラッシュする。この問題に対するもっとも簡単な対処方法は、物理的にメモリの容量を増やしてJava仮想マシンが利用できるメモリ容量を引き上げること、もうひとつは、クラッシュする前に定期的にアプリケーションを再起動することだ。強引な方法だが、実効性のある方法でもある。しかし、根的に原因を解決することにはならず、何らかの原因でいつかOut of Memoryが発生する危険性が存在しつづけることになる。 根的に問題を解決したい場合には、どの部分でメモリリークが発生しているかを追跡し、対象部分のコードを書き換える必要がある。そうした場合に参考になる記事が「Fix Memory Leaks in Ja

  • Javaのパフォーマンスについての9つの誤信

    JVMはプロファイリングを利用してコードの最適化を行います。対象は頻繁に利用されるコードパスのみですが,徹底的に行うことで大きな効果を上げています。JITコンパイルされたコードに関しては,現在では多くの場面において (その割合も増えつつあります) C++の実行速度を凌駕しています。 このような事実にも関わらずJavaが今でも低速なプラットフォームとして認識されているのは,おそらくは初期バージョンのJavaプラットフォームでの経験が,歴史的な負のバイアスとして働いているためでしょう。 早まった結論を出す前に,客観的な見地に立って,最新のパフォーマンス結果を評価するようにお勧めします。 2. Java コードの1行にはそれ自体で意味がある 次の短いコード行を考えてみてください: MyObject obj = new MyObject(); Java開発者ならば誰でも分かるように,このコードはオ

    Javaのパフォーマンスについての9つの誤信
  • Linuxサーバ構築ツールまとめ - tkak's tech blog

    仮想化技術が進歩し、大量のサーバを管理・構築することが多くなりました。 PuppetやChefなど、サーバ構築・管理を自動化するいろんなツールがあるので、 整理しておこうと思います。 以下の3つに分類します。 Provisioning Tools kickstart cobbler crowbar spacewalk BIOS設定、PXEブート、kicskstartなど、一番下のレイヤーのOSインストールまでを行うツールです。 Configuration Management Tools puppet chef saltstack rundeck and more... http://en.wikipedia.org/wiki/Comparison_of_open_source_configuration_management_software パッケージ管理や設定ファイルの配布など、OS

    Linuxサーバ構築ツールまとめ - tkak's tech blog
  • Bash Tips - tkak's tech blog

    最近、短期間に大量のサーバに設定をいれるという仕事がたんまりきていて、とてもじゃないけど手作業なんてしんどいので、ちまちまと使い捨てスクリプトを書いて作業を楽にしてます。 そんな中『これは使える!』というスニペットを残しておきます。 seqコマンド seqコマンドは順番で数字を出力するだけなんですが、使い勝手よくてちょくちょく使ってます。 $ seq 3 #1から3までの整数を出力 1 2 3 $ seq 2 5 # 2から5までの整数を出力 2 3 4 5 $ seq 4 2 8 # 4から2ずつ8まで出力 4 6 8 $ seq -w 5 100 # -wをつけると桁の幅を同じにできる 005 006 007 009 010 ... ... 100 $ seq -s " " 5 # -sで区切り文字を指定できる 1 2 3 4 5 $ seq -f "hoge%02g.log" 3 #

    Bash Tips - tkak's tech blog
  • 個人的#ChefConf2013まとめ。 - tkak's tech blog

    最近日でも何かと話題になっているconfiguration management toolのchefですが、やっぱり海外のほうがDevOpsが進んでますね。 今回のカンファレンスは、導入事例とかベストプラクティスな感じの話が多かったです。 個人的に面白かったセッションを5つ、ログとして残しておきます。 #ChefConf 2013 Scaling Configuration Management phil Dibowitz -- facebook slide --> Scaling Configuration Management youtube --> ChefConf Keynote Session - Phil Dibowitz - YouTube つい最近facebookでPrivate Chefを導入したとかニュースになってましたが、 初日のメインセッションでfacebookの

    個人的#ChefConf2013まとめ。 - tkak's tech blog
  • require.js 環境で mocha + expect + testem を使った JavaScript テスト - naoyaのはてなダイアリー

    先日書いた自分用アプリケーションのひな形 http://d.hatena.ne.jp/naoya/20130503/1367581629 http://d.hatena.ne.jp/naoya/20130504/1367640512 これに、JavaScript のテスト環境も追加したい。 結論からいくと、フレームワークには mocha + expect、ランナーは testem を使うことにした。ついでにテストダブルライブラリとして Sinon.js も有効にした。 ちなみに今回の文脈は End to End のテストではなくてユニットテスト周りのおはなしです。 mocha + expect JavaScript のこの辺のテスト周りは今もいろいろなツールの整備が進んでいて、今回採用した以外にも Jasmin や QUnit そのほか色んな物がある。昨今の状況に関しては 先日の HTML

    require.js 環境で mocha + expect + testem を使った JavaScript テスト - naoyaのはてなダイアリー
  • MIXI, Inc.

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    MIXI, Inc.
  • Gitを始めるまでにやったことのまとめ

    を選択してるなら、コマンドプロンプトでもgitコマンドが打てるようになっているので、その場合はコマンドプロンプトや NYAOSなどのコマンドラインシェルでもいいはず。(コマンドプロンプトのコマンドと競合するらしいがパスを変えることで大丈夫になるとか) <p> setupなどをする前にgitHubにアクセスできるようにするため、gitHubにパブリックキーの登録をしないといけません </p> <dl> <dt> <strong>Using Git and Github for the Windows for newbies &#8211; Guides &#8211; GitHub</strong> </dt> <dd> <a title="Using Git and Github for the Windows for newbies - Guides - GitHub" href="ht

    Gitを始めるまでにやったことのまとめ
  • ウェブ系エンジニアがおさえておきたい技術ブログまとめ - Meltdown Countdown rev.

    もうすぐ2010年も終わり。なんかこの業界、転職ブームな感じがしますね。転職したいですね。圧倒的給与を手にしたいですね。 それにはアウトプットが必要です。そのためには勉強が必要です。 エンジニアたる者、最新のトレンド(の技術)や今年マストアイテム(な技術)をおさえておきたいですね。 そこで役立つ技術系ブログをまとめました。今回は、ウェブ系の会社のオフィシャルなブログに限定しています。やっぱり実際に業務で使われている開発手法や運用手法の紹介は読んでてためになりますよね。 ひとまず16件+コメント頂いて追加。他にもありましたら教えてくれると小躍りして喜びます。 Baidu Japan Blog ECナビ エンジニアブログ GREE Engineers' Blog Hatena::Engineering KLab若手エンジニアの これなぁに? KRAY Inc » ブログ livedoor Te

    ウェブ系エンジニアがおさえておきたい技術ブログまとめ - Meltdown Countdown rev.
  • Cloudera製Hadoopによる完全分散モードの構築

    Clone via HTTPS Clone with Git or checkout with SVN using the repository’s web address. Cloudera製Hadoopによる完全分散環境の構築 構成 VirtualBox上に構築 namenode 1台 datanode 3台 ホストオンリーネットワーク 192.168.10.x 内部ネットワーク 192.168.20.x IP: Domain 10: master 11: slave1 12: slave2 13: slave3 公開鍵 パスフレーズ無し ssh-keygen -t rsa で作成したものKeyPairを各スレーブにコピーして相互にパス無し接続出来るようにする 構築手順 参考: http://www.kde.cs.tut.ac.jp/~atsushi/?p=64 共通 $ vim /e

    Cloudera製Hadoopによる完全分散モードの構築
  • サバクラ両方で動く JavaScript の大規模開発を行うために

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    サバクラ両方で動く JavaScript の大規模開発を行うために
  • ナウなヤングのためのgithub入門講座 -基本機能からdotfiles管理まで- - tumblr

    gitによるバージョン管理 バージョン管理システムはつかってますか? 僕は前に自分の作成したコードを元に、後輩にプログラムを作らせようとしてまずは僕のコードをコピペしろと指示したところ、コピペしかしてない(と言い張る)割にはコピペしたコードは動かず、さらに何故かコピペ元の僕のコードが滅茶苦茶に荒らされて当然のごとく動かなくなるという、なんかもう幽霊の存在を認めない限り説明がつかないような怪奇現象に遭遇したことがあります。しかもそのときはcpコマンドによるバックアップに頼っていて運悪くバックアップを忘れたために僕の貴重な1日が消え去ってしまった訳でして、それから僕はバージョン管理システムに頼ることを固く心に決めました。また僕はその目を覆いたくなるような残虐な事件以来、建設業界に見習って、IT業界でもプロジェクトキックオフ時にお祓いはすべきだと訴え続けています。 まぁそれはいいとして、いやまだ

    ナウなヤングのためのgithub入門講座 -基本機能からdotfiles管理まで- - tumblr
  • Node.js 開発環境 基礎

    gistfile1.md Node.js 開発環境 基礎 Node.jsのインストール OS X ならHomebrewまたはMacportsで。 [~] $ brew install node [~] # port install node nodeコマンドでnodeのインタプリタを起動。 [~] $ node パッケージマネージャー RubyにおけるGem+Bundlerのようなものです。これもBundlerと同じく、システムとローカル両方の閉じた環境にインストールできます。Gemfileに当たるのがpackage.jsonです。 [~] $ mkdir hogeproj [~] $ cd hogeproj 適当なプロジェクト用のフォルダを作成して、package.jsonを作成する。ここではexpressを指定。バージョンを気にしない場合は、">= 0.0.1"とする。指定する場合は"

    Node.js 開発環境 基礎
  • BASE: An Acid Alternative[和訳]

  • 分散データベースを作るためのフレームワーク Gizzardのご紹介[和訳]

    Introducing Gizzard a framework for creating distributed datastores.markdown 分散データベースを作るためのフレームワーク Gizzardのご紹介 原文: The Twitter Engineering Blog: Introducing Gizzard, a framework for creating distributed datastores This article is translated by @ono_matope. Please contact me if any problem. シャーディング序論 多くのモダンなWebサイトは、1台のコンピューターに納まりきらないほどの大量のデータに高速にアクセスする必要があります。そのため、複数のコンピューターに情報を分けて格納する「シャード」という手法が使

    分散データベースを作るためのフレームワーク Gizzardのご紹介[和訳]
  • Dynamo: Amazonの高可用性Key-value Store[和訳]

    Dynamo: Amazonの高可用性Key-value Store.markdown Dynamo: Amazonの高可用性Key-value Store[和訳] 原題:Dynamo: Amazon’s Highly Available Key-value Store 原文: Amazon's Dynamo - All Things Distributed (PDF Version) This article is translated by @ono_matope. Please contact me if any problem. Giuseppe DeCandia, Deniz Hastorun, Madan Jampani, Gunavardhan Kakulapati, Avinash Lakshman, Alex Pilchin, Swaminathan Sivasubram

    Dynamo: Amazonの高可用性Key-value Store[和訳]
  • NoSQLデータモデリング技法

    NoSQLデータモデリング技法.markdown #NoSQLデータモデリング技法 原文:NoSQL Data Modeling Techniques « Highly Scalable Blog I translated this article for study. contact matope[dot]ono[gmail] if any problem. NoSQLデータベースはスケーラビリティ、パフォーマンス、一貫性といった様々な非機能要件から比較される。NoSQLのこの側面は実践と理論の両面からよく研究されている。ある種の非機能特性はNoSQLを利用する主な動機であり、NoSQLシステムによく適用されるCAP定理がそうであるように分散システムの基的原則だからだ。一方で、NoSQLデータモデリングはあまり研究されておらず、リレーショナルデータベースに見られるようなシステマティック

    NoSQLデータモデリング技法
  • トランザクション同時実行時の問題とトランザクション分離レベル - Bug Catharsis

    データベースの同時実行性の定義データベースにおける同時実行性は、同時に共有データにアクセスしたり、 共有データを変更したりする複数プロセスの機能性として定義することができる。 互いにブロックすることなく同時に実行できるユーザプロセス数が多いほど、 データベースシステムの同時実行性は高いといい、データの変更プロセスによって、 他のプロセスがその変更データを読み取りできなかったり、 データの読み取りプロセスによって、他のプロセスがそのデータを更新できない場合、 同時実行性が低いという。また、複数プロセスが同じデータを同時に変更しようとすると 常にデータの整合性が損なわれるような場合も、同時実行性が低いと言える。 同時実行性が低くなる状況に対処する方法データベース システムで同時実行性が低くなる状況に対処する方法は、 使用している同時実行制御がオプティミスティック(楽観的)*1かペシミスティック

    トランザクション同時実行時の問題とトランザクション分離レベル - Bug Catharsis
  • 「Brackets」Sprint 24が公開、“型を理解する”JavaScriptコード補完エンジンを搭載

  • [JS]レスポンシブ対応でパンくずの一行が長くて困ったを解決するスクリプト -rCrumbs

    多階層をもったサイトでは、パンくずも長くなりがちです。 テキストベースで実装した長い一行のパンくずを表示幅に合わせて最適化するjQueryのプラグインを紹介します。 jQuery rCrumbs -GitHub rCrumbsのデモ rCrumbsの使い方 rCrumbsのデモ 一行で長いパンくずは表示幅を変更すると、最適化されて表示されます。 主要なモダンブラウザをはじめ、IE8+でご覧ください。 デモページ:幅1200, 780, 480pxで表示 幅1200pxで表示 先頭のHomeから、長いページタイトルまで全部が表示 幅780pxで表示 先頭のHome側からはみ出るアイテムを省略 幅480pxで表示 長いページタイトルもはみ出る場合は省略 ※省力無しの固定表示することもできます。 rCrumbsの使い方 実装は簡単で、パンくずはリスト要素で実装されています。 Step 1: 外部

  • redisのmaster-slave構成で考えるべきことの話 - diary

    結論 Redisは2.6を使おう master-slave構成を取る場合はclient-output-buffer-limitをちゃんと意識するべき 概要 redisはエッジトリガ型のnon-blocking I/Oを用いてシングルスレッドでソケットの読み書きをぶん回す構造で書かれています。 よってclientやslaveへ対してのreplyを行う際も、ソケット自体の送信バッファが溢れた際(EAGAINが帰った際)には一度イベントループに処理を戻し、またソケットが書き込み可能になってイベントループが自分を呼んでくれた時に続きをwriteします。 まあnon-blocking I/Oなんだから当たり前なんですが、送信処理を再入可能にするためにredisはアプリケーションレベルで出力バッファを持っています。 これは送信が終わり次第適宜解放されるものの、write自体が間に合わなくなると詰まって

    redisのmaster-slave構成で考えるべきことの話 - diary
  • Apache CassandraとAmazon DynamoDBの比較 | DevelopersIO

    2012/1/23 updated Apache Cassandraとは? Apache Cassandraは、2007年にAmazonによって発表されたDynamoに関する論文からインスパイアされて開発されたNoSQL分散データベースです。2008年にFacebook社によりオープンソースとして公開されました。スケーラビリティと高可用性を求めている方には適しています。線形の拡張性とフォールトトレラントを備えていて、クラウドやオンプレミス上で構築することができ、ミッションクリティカルなデータを保管することができます。Cassandraは、複数のデータセンターでの稼働をサポートしていて、低いレイテンシーでやり取りを行う事が出来ます。万が一の災害時にも安心です。 Amazon DynamoDBとは? Amazon DynamoDBは、シームレスに拡張ができ、高速で予測可能なパフォーマンスを提供

  • Cassandra勉強会

    1. Cassandra is a decentralized structured storage system designed for scalability and high availability without single points of failure. 2. It uses consistent hashing to partition data across nodes and provide high availability, and an anti-entropy process to detect and repair inconsistencies between nodes. 3. Clients can specify consistency levels for reads and writes, with different levels bal

    Cassandra勉強会
  • CassandraにPelopsでアクセスしてみた | さぶみっと!JAPAN

    サンプルコード import java.util.List; import org.apache.cassandra.thrift.Column; import org.apache.cassandra.thrift.ConsistencyLevel; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.scale7.cassandra.pelops.Bytes; import org.scale7.cassandra.pelops.Cluster; import org.scale7.cassandra.pelops.Mutator; import org.scale7.cassandra.pelops.Pelops; import org.scal

    CassandraにPelopsでアクセスしてみた | さぶみっと!JAPAN
  • Cassandra運用に活躍したスクリプトたち : toda_k

    弊社検証環境で半年ほど10数台規模のCassandraクラスタを運用してきたのですが、運用に使っているスクリプトがある程度固まってきたのでまとめてみます。更なる簡素化・便利化を進めるための棚卸しという感じです。古いものも混ざっていて若干申し訳なくはあるのですが……どなたかの役に立てば幸いです。では見て行きましょう。 スクリプトの運用体制について すべてのスクリプトはSubversionで管理され、主にJenkinsによって自動的に実行されます。多数のノードに対する同時処理を行なうためにGNU Parallelを使うことがあります。 またCassandraサーバはAWS EC2上で運用されているため、AWS SDK for RubyによってIPアドレスの取得などを行なっています。 各ノードでのnodetool ring実行結果を集約 クラスタが不安定なとき、実際は動いているのに一部のノードか

  • Cloudian nosql casestudy_20120318

    2012年3月18日開催InfoTalkにおけるプレゼンテーション資料です。Cloudianの概要、CloudianへのCassandraとRedisの実装、NOSQLデータベースの性能比較、独自開発のHyperStoreについて説明しています。Read less

    Cloudian nosql casestudy_20120318
  • Instagram のスケール正攻法 -- Kosei Kitahara's Blog

    Instagram がどこに買収されたとかは他のニュースサイトにお任せして、Django アプリケーションを正攻法でスケールして "成功" してるのがとても興味深いです。現時点で Instagram Engineering で紹介されていることと TechCrunch にも掲載されたスライドから個人的なメモとしてまとめてみました。 Instagram の哲学は シンプルであること オペレーション負荷を最小化すること すべて装備 とのこと。 Instagram は以下の OSS, サービスで構築されているようです。 >>> OS / ホスティング Ubuntu Linux 11.04 を Amazon EC2 にホスティング。以前のバージョンは高トラフィックになると固まる問題があったようです。運用は 3 人。EC2 にホスティングしている理由は、調査結果によるものではなく、"まだ進化途中だか

  • cassandraのインストールから実行まで - oggataの日記

    ■cassandraとは NoSQLミドルウェアの代表格。 非リレーショナルデータベース。 分散データベース。 Hadoopに比べるとCassandraはリアルタイム処理を得意とし、 一貫性のかわりに可用性を重視している。 Facebookが開発したことで有名。 ■通常のSQLとの違い ・クエリ言語がない クエリ言語ではなく、Thriftを通してアクセスするAPIがあるのみ ※0.8以降でCQLというクエリ言語が登場。 ・参照整合性がない cassandraの場合は参照整合性の概念がなく、joinの考え方がない。 ・OrderByやGroupByがない。 SliceRangeクエリがあり、反転できる点でこれがorderbyと似ている。 ・Whereがないのにどうやって検索する!? select * from Hotel where name = 'royalpark'; を実現する為に H

    cassandraのインストールから実行まで - oggataの日記
  • Cassandra - A Decentralized Structured Storage System[和訳]

    Cassandra - A Decentralized Structured Storage System.markdown Cassandra - A Decentralized Structured Storage System 原文: Cassandra - A Decentralized Structured Storage System This article is translated by @ono_matope. Please contact me if any problem. ABSTRACT Cassandraはたくさんのコモディティなサーバー上に分散した非常に大量の構造化データを管理するための分散ストレージシステムで、単一障害点なしに高可用性なサービスを提供しています。Cassandraは数百ノードの(もしかしたら複数データセンターにわたる)インフラ上で動作するこ

    Cassandra - A Decentralized Structured Storage System[和訳]
  • Charming Python: Functional programming in Python, Part 3

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    Charming Python: Functional programming in Python, Part 3
  • Netflix のスケール

    現在日でサービスを提供していないため目にすることは少ないですが、AWS のベストプラクティスと呼び名が高い Netflix のスケールをメモ。ベストプラクティスと言われるだけあって、記事も解説も豊富です。まー規模が桁違い過ぎるので読み飛ばしていたってのが正直なところですが、V 先生ドリブンで資料を読み直しました。AWS の How-to 記事は日語でも山ほどあったので、自社データセンターから AWS へ移行した過程を中心に書きたいと思います。Netflixテクノロジーについては以下を参考にしました。 The Netflix Tech Blog @slideshare @github >>> サービスの規模 Netflix は主に北米で VOD と DVD 郵送レンタルサービスを提供している会社です。ほとんど VOD で、今後 DVD 郵送レンタルは縮小するらしい。AWS の資料も

    Netflix のスケール
  • Cassandraクラスタと、DataStax OpsCenterの構築 | さぶみっと!JAPAN

    Cassandraのクラスタ環境を構築して、DataStax OpsCenterでデータの管理ができるようにします。 Cassandraの設定方法のサンプルを載せているblogなどは沢山あるのですが、旧バージョンのCassandraを試している記事が多くて、頻繁にバージョンアップするCassandraに情報が追いついていません。 ここでは、新しくCassandraを試してみたい方に参考になればと考えて記事を書きました。 また、DataStax OpsCenterというツールを利用して、データの可視化にも挑戦しています。 Cassandraとは 公式ページ:http://cassandra.apache.org 正式名称はApache Cassandraです。 Wikiより引用 『Cassandraは、非常に高いスケーラビリティーを持ち、イベンチュアルコンシステントな分散システム構造のKVS

    Cassandraクラスタと、DataStax OpsCenterの構築 | さぶみっと!JAPAN
  • NoSQLデータベースの「Cassandra」最新動向。Cassandra Summit 2012(後編)

    NoSQLデータベースの「Cassandra」最新動向。Cassandra Summit 2012(後編) 代表的なNoSQLデータベースの1つ「Apache Cassandra」をテーマにしたイベント「Cassandra Summit 2012」が、8月8日にサンタクララで開催されました。 (記事は「NoSQLデータベースの「Cassandra」最新動向。Cassandra Summit 2012(後編)」の続きです) 最新版Cassandra 1.1で追加された機能とは Cassandraはどう進化してきたか。昨年1月の0.7が最初のモダンなバージョンだったというのが私の考えだ。0.8では分散カウンターを実装し、セルフチューニング要素を強めた。1.0は、1.0を宣言したこと、そして圧縮機能を備えるなどの前進があった。 そして現在のバージョンが4月にリリースしたCassandra 1.

    NoSQLデータベースの「Cassandra」最新動向。Cassandra Summit 2012(後編)
  • NoSQLデータベースの「Cassandra」最新動向。Cassandra Summit 2012(前編)

    NoSQLデータベースの「Cassandra」最新動向。Cassandra Summit 2012(前編) 代表的なNoSQLデータベースの1つ「Apache Cassandra」をテーマにしたイベント「Cassandra Summit 2012」が、8月8日にサンタクララで開催されました。 Cassandraは、キーバリュー型データストアとして高速なデータの入出力や高いスケーラビリティが特徴です。最新バージョンではマルチデータセンター、マルチテナンシーなど高度な機能も搭載しました。 そうした最新機能などが紹介された、Cassandra Summit 2012で行われたCassandraの主要な開発者Jonathan Ellis氏の基調講演「The State of Cassandra, 2012」の内容をダイジェストで紹介します。 The State of Cassandra, 2012

    NoSQLデータベースの「Cassandra」最新動向。Cassandra Summit 2012(前編)
  • https://jp.techcrunch.com/2012/10/31/20121027big-data-right-now-five-trendy-open-source-technologies/

    https://jp.techcrunch.com/2012/10/31/20121027big-data-right-now-five-trendy-open-source-technologies/
  • ツイートID生成とツイッターリアルタイム検索システムの話

    8. ツイートID生成システムSnowflakeとは l ユニークなIDを生成するネットワークサービス l ツイッターのツイートID(ステータスID)の割り当てに使われている l ツイッター社がOSSで公開中 (*) l 特徴 l 64 bitのIDを生成 l ざっくり時刻順 l 速い l 10000 ID/秒 のスピードでIDを生成できる(1プロセスあたり) l レスポンス 2 ms (+ネットワークのレイテンシ) l スケールする l 複数のマシン・プロセスで協調動作しない l 並べただけスケールする(はず) (*) https://github.com/twitter/snowflake 8 9. Snowflakeが開発されるまで l ツイートの流速増加とツイッターのシステム移行 l 5億ツイート/日(約6000ツイート/秒) (*1) l 2012年1

    ツイートID生成とツイッターリアルタイム検索システムの話
  • NoSQLの現状。これまでの成功と失敗

    NoSQLの登場は、「データベースといえばリレーショナルデータベース」という状況を大きく変えました。リレーショナルデータベースと比べて高速でスケーラビリティに優れたNoSQLデータベースは登場当初から注目されましたが、一方でいまに至るまでさまざまな種類の製品が登場して混沌としているようにも見えます。 (作者 Stefan Edlich、翻訳者 大田 緑 - (株)チェンジビジョン、投稿日 2013年1月1日) NoSQLは厳しい批判に少なくとも4年間さらされてきました。そして、今、NoSQLの現状について中間報告する時がやって来ました。NoSQLの周辺ではいろいろなことが起こったため、全体像をつかんで、どのような目的を達成したか、また、NoSQLはどこで失敗したかを評価するのは簡単なことではありません。 様々な分野において、NoSQLは産業的にも学問的にもかなり成功をおさめてきました。大学

    NoSQLの現状。これまでの成功と失敗
  • 仮想ノードが加わった「Apache Cassandra 1.2」 | OSDN Magazine

    Apache Cassandraの開発チームは1月2日、分散型データベースシステム「Apache Cassandra」の最新版となる「Apache Cassandra 1.2」をリリースした。今まではβ版という位置付けだったクエリ言語「CQL 3」が正式版となったほか、より高密度なシステムの構築を支援する機能が導入されている。 Apache Cassandraは高速な処理を特徴とする分散型のカラム指向データベースシステム。元々は米Facebookが社内開発したものだったが、2009年にApache Software Foundation(ASF)に寄贈され、2010年よりトップレベルプロジェクト(TLP)として開発が進められている。米Adobe Systemsや米Cisco Systems、米eBay、米Twitter、米政府機関など多数の導入実績を持つ。 Apache Cassandra

    仮想ノードが加わった「Apache Cassandra 1.2」 | OSDN Magazine
  • オープンソースのNoSQL、「Apache Cassandra 1.2」リリース

    オープンソースのNoSQL、「Apache Cassandra 1.2」リリース:ペタバイト級のデータを無理なく処理 Apache Software Foundation (ASF)は、分散型データベース管理システムの最新版「Apache Cassandra 1.2」を1月2日にリリースした。 Apache Software Foundation (ASF)は、ビッグデータ用の分散型データベース管理システムの最新版「Apache Cassandra 1.2」を1月2日にリリースした。仮想ノードやアトミックバッチなどの新機能が特徴となる。 Cassandra 1.2では、仮想ノード間のクラスタリング、ノード間通信、アトミックバッチ、リクエスト追跡などの機能が加わった。さらに、Cassandra Query Language(CQL)のバージョン3リリースによってアプリケーションモデリングがシ

    オープンソースのNoSQL、「Apache Cassandra 1.2」リリース
  • Cassandra がアトミックバッチと仮想ノードを追加,CQLを改良

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    Cassandra がアトミックバッチと仮想ノードを追加,CQLを改良
  • unoh.github.com by unoh

    こんにちわ、7月に入社したばかりの@emorinsです。 題名の通りですが分散データベース『Apache Cassandra』を紹介したいと思います。 少し前はHadoop(とHBase)と比較されることの多かったCassandraですが、最近はHadoopの人気に押されつつあるようにも感じます。 しかし、CassandraとHadoopは特徴が異なり、よく言われるのがCassandraはリアルタイム処理に向き、一貫性のかわりに可用性を重視し、またHadoopとは違って単一障害点もありません。 今日はそんなHadoopとは違った魅力のある分散データベース『Apache Cassandra』をはじめてみましょう。 目次 Cassandraとは アーキテクチャ Cassandraの特徴 コンシステンシレベル データモデル MemtableとSSTable セットアップ storage-conf

  • ミラクル・リナックス、Zabbixの性能改善に関する研究成果を公開~NoSQLの活用図る

  • cassandraを運用していて困っていること - oranie's blog

    ※2013/03/05に追記 Yuki Morishita(@yukim)さんより以下のエントリについてアンサーを貰いました!!! https://gist.github.com/yukim/5086476 - なんか呟いたら「m9(^Д^)プギャー」な意味なのかRTとかがついたので、まとめておこう。きっと「これやれば解決するのに・・・プークスクス!」って教えて貰えるに違いない。半分くらい僕の技術力の低さから来ているのが多いので、Cassandra特有の問題から外れている気がするけど気にしない。 前提条件として HW:CPU12core メモリ64GB Disk:SSDやHDD(RAID10)を使用(詳細な構成は割愛) Cassandra 1.1.5 JDK 1.6.0_33-1 Simple Strategyを使用 1ノード辺り100〜200GB程度のデータを想定 クラスタの数とかは

    cassandraを運用していて困っていること - oranie's blog
  • Devsumi2013【15-e-5】NoSQLの野心的な使い方 ~Apache Cassandra編~

    Developers Summit 2013 の 【15-e-5】NoSQLの野心的な使い方 ~Apache Cassandra編~ のスライドです。 NoSQLについてのよくある誤解や正解から始めて、 RDBMSとの当の関係、 フロントシステムがNoSQL 動的分析などがRDBMS という構成が自然な解であることなどを 簡単ながら記載しています。 最近はマイクロサービス/サービスメッシュ基盤へ応用しています。 https://b-rabbit.jp/Read less

    Devsumi2013【15-e-5】NoSQLの野心的な使い方 ~Apache Cassandra編~
  • Apache Cassandra Anti Patterns

    InfoQ Software Architects' Newsletter A monthly overview of things you need to know as an architect or aspiring architect. View an example

    Apache Cassandra Anti Patterns
  • マルチマスタ型アーキテクチャ & 分散内部DNSのススメ - Tech-Sketch

    クラウド&ビッグデータ時代の到来に伴い、 Apache Cassandra や elasticsearch といった、「全てのノードが対称な役割を果たす」ことで「単一障害点が無く」「ノード追加に比例して性能が向上する」マルチマスタ型アーキテクチャに注目が集まっています。しかしこれらを利用する際、「クライアントはどのノードに接続すればいいのか?」というのが結構悩ましかったりします。今回は、分散内部DNS Murakumo を用いた解決方法を紹介します。 マルチマスタ型アーキテクチャ 言葉を尽くすより、図を見るほうがよっぽどわかりやすいでしょう。Cassandraを例にして説明します。 この図のように、マルチマスタ型アーキテクチャでは全てのノードが同じ役割を果たします。例えば Apache Hadoop のNameNodeのような、「クラスタを構成するデータノードの状態とデータ断片の位置情報」

  • RE:cassandraを運用していて困っていること

    re.md @oranie さんのブログ記事への返信です。 たいへん遅くなりました。申し訳ないです。 repairとcompactionのコストが高すぎる Cassandraにノードを追加する(Bootstrap)と、そのノードが担当するレプリカのデータを他のノードから取得します。 Repairはノードが保持するレプリカの整合性を検証して修復します。 どちらもデータを他のノードから取得しますが、ファイルを1つづつやり取りするため時間がかかるのは事実です。 この部分にまだまだ改善の余地があります。次のメジャーバージョンで抜的に見直します。 ファイルのストリーミングはデフォルトで400Mbit/secに制限されています。帯域に余裕があれば設定(cassandra.yaml の stream_throughput_outbound_megabits_per_sec)を変更しても良いかもしれませ

    RE:cassandraを運用していて困っていること
  • Google App Engine上でgroovyスクリプトを動かす「GAErminal」を作りました #gaeja #nanohack - くりにっき

    リリカルハッカソン で作っていたものを正式公開しました。 概要 GAE(Google App Engine) + Terminal = GAErminal (読み方:がーみなる) Google App Engine上でgroovyスクリプトを動かすことができます https://github.com/sue445/gaerminal サンプル 利用用途 production環境上でモンキースクリプトを動かす コード修正→随時デプロイだと効率が悪い デプロイに数分かかる デプロイすると上がってたインスタンスが全部落ちるので再度spin-upが走る デプロイは1日1000回までしかできない コンソール上で直接スクリプトを実行できると試行しやすい 使い捨てのコードでテストを書くのはさすがにしんどいですよねw Datastoreからのデータ抽出 がっつりプログラムを書くほどではないけどadmin

    Google App Engine上でgroovyスクリプトを動かす「GAErminal」を作りました #gaeja #nanohack - くりにっき
  • Cassandra CQLでJDBC - CLOVER🍀

    ほんの、触りだけです。 前にCQLを使っていて、すごい低レイヤのコードを書いていたわけですが、なんかJDBCドライバが存在するっぽいです。 cassandra-jdbc http://code.google.com/a/apache-extras.org/p/cassandra-jdbc/ というかですね、ネットに転がってるサンプルとかを見てると普通にJDBCドライバがorg.apache.cassandra.cql.jdbcパッケージにいたようなのですが、最近のCassandraではいなくなっています。 何かあったのかなぁ…。 んで、前述のcassandra-jdbcを軽く触ってみました。 Maven Central Repositoryにも登録されています。 まずは普通にJDBCで。 @GrabConfig(systemClassLoader = true) @Grab('org.ap

    Cassandra CQLでJDBC - CLOVER🍀
  • 複数ロウを返すThrift APIを使ってみる - CLOVER🍀

    以下のエントリの続きです。 http://d.hatena.ne.jp/Kazuhira/20130428/1367138418 今回は、複数のロウを取得するAPIを使用していこうと思います。 対象とする、キースペースとカラムファミリの作成コマンドは、以下になります。 [default@unknown] create keyspace Room; 7b6e7ec9-d6ef-3d5e-9e54-53784a03e59b [default@unknown] use Room; Authenticated to keyspace: Room [default@Room] create column family Users ... with key_validation_class = 'UTF8Type' ... and comparator = 'UTF8Type' ... and def

    複数ロウを返すThrift APIを使ってみる - CLOVER🍀
  • JavaクライアントからCQLを使ってみる - CLOVER🍀

    Cassandraを勉強しているのはいいのですが、世の中でCassandraを使っている方々のデータアクセス方法が、CQLと普通のアクセス方法のどちらがメジャーなのか、よくわからない今日この頃です。 とりあえず、両方とも進めてみるわけですが(笑)。 というわけで、JavaクライアントからCQLを実行する簡単なプログラムを書いてみました。 いわゆる「Hello World」レベルのもののはずなのに、めっちゃ苦労しましたけど…。 なお、今回はCQL3を対象とします。 まず、cqlshでキースペースとテーブルを作成します。 cqlsh> CREATE KEYSPACE cqldemo ... WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1}; cqlsh> USE cqldemo; cqlsh:cqld

    JavaクライアントからCQLを使ってみる - CLOVER🍀
  • Super Columnを使ってみる - CLOVER🍀

    Apache Cassandraで定義できるデータモデルとして、スーパーカラムなるものがあります。 http://wiki.apache.org/cassandra/DataModel が、オライリーでもさらっとしか触れられていませんし Cassandra 作者: Eben Hewitt,大谷晋平,小林隆出版社/メーカー: オライリージャパン発売日: 2011/12/24メディア: 大型購入: 1人 クリック: 170回この商品を含むブログ (7件) を見るこのに至っては、単語自体が出てきません。Cassandra実用システムインテグレーション (NEXT-ONE) 作者: 中村寿一,長田伊織,谷内隼斗,藤田洋,森井幸希,岸康二出版社/メーカー: 翔泳社発売日: 2013/01/16メディア: 大型購入: 2人 クリック: 8回この商品を含むブログ (3件) を見る Dynamo

    Super Columnを使ってみる - CLOVER🍀
  • InfinispanのEvictionとPassivationを復習する - CLOVER🍀

    ちょっと前に、InfinispanのCache Loaderの使ったサンプルを書きましたが、この時にEvictionとPassivationの関係がよくわかってなくて、すごくアホなエントリになってしまいました…。 ちゃんと、英単語として読めばよかった…。 まあ、その反省も踏まえて、ここで復習したいと思います。 Eviction https://docs.jboss.org/author/display/ISPN/Eviction Cache Passivation https://docs.jboss.org/author/display/ISPN/Cache+Loaders+and+Stores#CacheLoadersandStores-CachePassivation What does the passivation flag do? https://docs.jboss.org/

    InfinispanのEvictionとPassivationを復習する - CLOVER🍀
  • CLOVER🍀

    これは、なにをしたくて書いたもの? TiDBのアーキテクチャーをざっくりと把握しようという、このあたりの続きです。 TiDBのアーキテクチャーをざっくりと眺めてみる(全体概要、ストレージ概要まで) - CLOVER🍀 TiDBのアーキテクチャーをざっくりと眺めてみる(コンピューティング概要) - CLOVER🍀 今回はストレージエンジンのひとつであるTiKVを見ていこうと思います。 TiKV Overview | PingCAP Docs 対象のTiDBのバージョンは8.1です。 TiKV TiKVについて書かれたページはこちら。 TiKV Overview | PingCAP Docs 最初の文が、当に概要ですね。 TiKV is a distributed and transactional key-value database, which provides transacti

    CLOVER🍀
  • もっとCassandraのJavaクライアントプログラミング - CLOVER🍀

    前回は、CassandraのThriftサンプルを意味はあまり考えずにGroovyに書き直したものでしたが、今回はちょっと意味の理解も踏まえて書いてみることにしました。 まずは、キースペースとカラムファミリの用意。 [default@unknown] create keyspace Room; 7b6e7ec9-d6ef-3d5e-9e54-53784a03e59b [default@unknown] use Room; Authenticated to keyspace: Room [default@Room] create column family Users ... with key_validation_class = 'UTF8Type' ... and comparator = 'UTF8Type' ... and default_validation_class = 'UT

    もっとCassandraのJavaクライアントプログラミング - CLOVER🍀
  • InifinispanのBatching API - CLOVER🍀

    Infinispanを使った、トランザクション周りの話題に関係ありそうだなーと思っていた、InfinispanのBatching APIを触ってみました。 Batching https://docs.jboss.org/author/display/ISPN/Batching どういう時に使うのかというと…Infinispanでのトランザクション管理を行う時に、それがInfinispanクラスタ内で完結するのであれば、Batching APIを使えということらしいです。 JTAは、複数のシステム使ったトランザクション管理を行う場合に使うものだ、と。例えば、2つトランザクションに参加するリソースを使う場合、一方がInfinispanで、もう一方がデータベースの時、とかいう場合みたいですね。 とりあえず、使ってみましょう。 まずは設定ファイルの例から。 src/main/resources/i

    InifinispanのBatching API - CLOVER🍀
  • CassandraのJavaクライアントプログラミング - CLOVER🍀

    とりあえず、こちらを参考に http://wiki.apache.org/cassandra/ClientExamples Groovyで書いてみました。 お題は、AmazonでのCassandra関連のの情報に変えてあります。 対象のキースペースとカラムファミリーの情報は、いたって普通です。 [default@Bookshelf] describe Bookshelf; WARNING: CQL3 tables are intentionally omitted from 'describe' output. See https://issues.apache.org/jira/browse/CASSANDRA-4377 for details. Keyspace: Bookshelf: Replication Strategy: org.apache.cassandra.locato

    CassandraのJavaクライアントプログラミング - CLOVER🍀
  • InfinispanでGrid File System - CLOVER🍀

    2014/4/22 更新) Grid File SystemのReadableChannelには、6.0.0.Finalで解決されるまでreadの結果が不正となり、このエントリで書いているプログラムでは無限ループになる問題がありました。 このエントリは、修正版で書き直しています。 ReadableGridFileChannel#read cycles with certain file size and chunk size https://issues.jboss.org/browse/ISPN-3700 Infinispanの、Grid File Systemという機能を試してみました。 Grid File System https://docs.jboss.org/author/display/ISPN/Grid+File+System Infinispanのキャッシュ上で、ファイル

    InfinispanでGrid File System - CLOVER🍀
  • 続いて、CQLへ - CLOVER🍀

    cassandra-cliを触ってみたので、今度はCQL(Cassandra Query Language)を使ってみます。 とりあえず、比較のためcassandra-cliで先にキースペースを作成しておきました。 [default@unknown] create keyspace DEMO ... with placement_strategy = 'org.apache.cassandra.locator.SimpleStrategy' ... and strategy_options = {replication_factor:1}; 9e2f3541-c5e7-31de-95a3-98047e78a696 [default@unknown] use DEMO; Authenticated to keyspace: DEMO [default@DEMO] create clumn f

    続いて、CQLへ - CLOVER🍀
  • とりあえず、cassandra-cliから - CLOVER🍀

    先週、Apache Cassandraをインストールしました。 で、そこでなぜか終わっていたので、続きを進めようと思います。いきなりプログラムから操作するとかじゃなくて、まずはコマンドラインツールからいくのがきっと無難ですよね。 とりあえず、Cassandraを起動して。 $ cassandra -f xss = -ea -javaagent:/usr/local/cassandra/current/lib/jamm-0.2.5.jar -XX:+UseThreadPriorities -XX:ThreadPriorityPolicy=42 -Xms1024M -Xmx1024M -Xmn200M -XX:+HeapDumpOnOutOfMemoryError -Xss180k INFO 15:20:08,890 Logging initialized 〜省略〜 INFO 15:29:18

    とりあえず、cassandra-cliから - CLOVER🍀
  • Infinispanの楽観的ロック/非観的ロックを確認する - CLOVER🍀

    前に、Infinispanのトランザクション管理とデータバージョニングのコードを書いていて、「楽観的ロックって、もしかして明示的にwrite-skewとバージョニングを有効にしないと効かないんじゃないかなぁ?」という疑問を持ちました。 Infinispan transactions https://docs.jboss.org/author/display/ISPN/Infinispan+transactions Data Versioning https://docs.jboss.org/author/display/ISPN/Data+Versioning なので、せっかくなのでこの機会にInfinispanのトランザクションにおける楽観的ロックと悲観的ロックを試してみることにしました。 今回使用しているInfinispanは、5.2.1.Finalです。最新版は5.3.0.Alpha

    Infinispanの楽観的ロック/非観的ロックを確認する - CLOVER🍀
  • Apache Cassandraをインストールしてみる - CLOVER🍀

    そろそろ、他のNoSQLにも手を出してみようかなと思い、ちょっと考えた末、少しこれを扱ってみることにしました。 Apache Cassandra http://cassandra.apache.org/ もちろん、仕事では使っていませんし、当面の間使うこともないと思います。単純に興味位です。 では、インストールしてみます。パッケージインストールはしないので、ここからtarballを落としてきます。 ダウンロードページ http://cassandra.apache.org/download/ 現時点でのCassandraの最新安定版は、1.2.4です。 で、こちらを参考にインストールしてみます。 インストール方法 http://wiki.apache.org/cassandra/GettingStarted とりあえず、後々面倒なことになりそうなので、OSユーザを作成することにしました。

    Apache Cassandraをインストールしてみる - CLOVER🍀
  • JasperReportsで、PDFのプロパティをいろいろ設定する - CLOVER🍀

    1年半くらい前にJasperReportsを触って、それっきりだったのですが、最近また触る機会があって、PDFの設定に関する内容を調べたのでメモっておきます。 何を調べたかって、PDFのパスワードを設定するとか作成者を設定するとか、バージョンを指定するとか、その辺りです。 いつの間にか、JasperReportsもバージョン5を越えてますねー。 見るべきクラスは、 JRPDFExporter http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/export/JRPdfExporter.htmlJRPdfExporterParameter http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/export/JRPdfE

    JasperReportsで、PDFのプロパティをいろいろ設定する - CLOVER🍀
  • FreeMarkerのnoparse的な、Velocity VTL - CLOVER🍀

    最近、仕事でVelocityを使っていまして、その時にテンプレートの一部を評価しないみたいなことができないかなーと思って調べてみました。 Webアプリの画面テンプレートに使っているので、jQueryの $('#id'); みたいな表記と、すごい相性悪いわけで…。 まあ、なんでVelocity使ってるの?なんでFreeMarkerじゃないの?とかいう話もあるかと思いますけど、今回はVelocityなんですよ。 で、やりたいことはFreeMarkerのnoparseディレクティブ的なことですね。 http://freemarker.sourceforge.net/docs/ref_directive_noparse.html <#noparse> <#list animals as being> <tr><td>${being.name}<td>${being.price} Euros </#

    FreeMarkerのnoparse的な、Velocity VTL - CLOVER🍀
  • Infinispanのデータバージョニング - CLOVER🍀

    前に、Hot Rod ClientでVersionedAPIというものを使ったサンプルを書いたことがありますが、それとは違うバージョニングのためのAPIがあります。 Data Versioning https://docs.jboss.org/author/display/ISPN/Data+Versioning こちらは、Embedded Cacheで使用します。バージョン情報は、AdvancedCache#getCacheEntryから取得できる、CacheEntryから取得できるようです。 というわけで、ここからバージョン情報を取得することを目標に頑張ってみます。が、これが予想外に大変なことに…。 上記ページによると、データバージョニングの種類は Simple Partition-aware External の3種類があり、 Simpleは、long値のインクリメント(要は、バージ

    Infinispanのデータバージョニング - CLOVER🍀
  • Infinispanでトランザクション管理 - CLOVER🍀

    Infinispanで、JTAを使ったトランザクション管理ができるということで。 Infinispan transactions https://docs.jboss.org/author/display/ISPN/Infinispan+transactions Locking and Concurrency https://docs.jboss.org/author/display/ISPN/Locking+and+Concurrency InfinispanでJTAのTransactionManagerを使用するには、Cache#getAdvancedCacheで取得できるAdvancedCacheから、TransactionManagerを取得すればよいらしいです。 TransactionManager tm = cache.getAdvancedCache().getTransac

    Infinispanでトランザクション管理 - CLOVER🍀
  • InfinispanのCache#putForExternalReadって、何? - CLOVER🍀

    InfinispanのCacheインターフェースのメソッドを見てたりとか、ドキュメントを見てたりした時にたまに見かけていたCache#putForExternalReadメソッド。ちょっと気になっていたので、使ってみました。 Using the Cache API - putForExternalRead operation https://docs.jboss.org/author/display/ISPN/Using+the+Cache+API#UsingtheCacheAPI-{{putForExternalRead}}operation これを読んでみると…こういうこと? Infinispanがデータのキャッシュとして使用されている場合に特に有効なのでは? データの作成、読み出しに時間がかかるようなデータを格納するのに使用するとよい そのようなデータを作成する時には、トランザクショ

    InfinispanのCache#putForExternalReadって、何? - CLOVER🍀
  • InfinispanとCAP定理 - CLOVER🍀

    Infinispanを触ったり、NoSQLに関する勉強をしていて、ちょっと気になったので。 Infinispanは、CAP定理のどれを満たすことにしたのか?というところ。 *ちなみに、結論はうまくまとめられていません… CAP定理というのは、NoSQL絡みでよく聞く Consistency(整合性) Availability(可用性) Partition-tolerance(分断耐性) のいずれか2つしか満たせない、ってやつですね。 Infinispanの基的なスタンスとしては、CとAを取ってPを諦めましたと。 https://docs.jboss.org/author/display/ISPN/Consistency%2C+Availability+and+Partition-tolerance+%28CAP%29+Theorem 5/15 更新) こちらに、よい記事が書かれていました

    InfinispanとCAP定理 - CLOVER🍀
  • Javadocの@sinceタグから、特定のJDKで追加されたクラスを検索する - CLOVER🍀

    先のエントリで、ConcurrentLinkedDequeクラスを見つけた時にふと思ったのですが、新しいバージョンのJDKで追加されたクラスって、みなさんどうやって探しているんでしょうね? だいたい新しいJDKのリリース前に新機能に関する記事が出てきて、それを使って掘り下げていくうちに、また別のクラスを知る、みたいな感じだと思います。 そして、その時ってJavadocの@sinceタグを見ていることが多いんじゃないかなーと思うわけです。なのであれば、Javadocを使えば、例えば「JDK 7で追加されたクラスを探す」なんてことができるのではないかと思った次第です。 で、実際できそうですね。 http://docs.oracle.com/javase/jp/6/technotes/guides/javadoc/index.html http://docs.oracle.com/javase/

    Javadocの@sinceタグから、特定のJDKで追加されたクラスを検索する - CLOVER🍀
  • Infinispanで検索してみる - CLOVER🍀

    Distributed FrameworkとかMap Reduce Frameworkとか触っていましたが、よくよく考えるとその前に「検索って機能があるか見てないよなー」と思い、ここで触ってみることに。 Querying Infinispan https://docs.jboss.org/author/display/ISPN/Querying+Infinispan …まさかのHibernate Search(+Lucene)。 そんな重量級(注:イメージです)のものが出てくるなんて。 Hibernate Search http://www.hibernate.org/subprojects/search.html Apache Lucene(Core) http://lucene.apache.org/core/ Hibernateなんて、2系を少し触ったことがあるくらいだよ?Lucen

    Infinispanで検索してみる - CLOVER🍀
  • Infinispan Map Reduce Framework - CLOVER🍀

    Distributed Execution Frameworkに続いて、今度はMapReduceです。 Map Reduce Framework https://docs.jboss.org/author/display/ISPN/Map+Reduce+framework 名前はGoogleやらHadoopやらで有名ですが、これをサポートしたプロダクトをあんまり触ったことがありません…。3年くらい前に、Hadoop StreamingでWordCountしたことがあるくらいかな…? 概要 オフィシャルドキュメントのIntroductionからすると、だいたいこんな感じみたいです。 MapReduceは、Data Grid上の巨大なデータを分散されていることを意識せずに、分散処理できることを可能にする MapフェーズとReduceフェーズの、2つの異なる計算処理の考え方が名前の由来 Map

    Infinispan Map Reduce Framework - CLOVER🍀
  • Infinispan Distributed Execution Framework - CLOVER🍀

    ホントは、先週書こうとしていたエントリなのですが、InfinispanのDistributed Execution Frameworkを触ってみました。 Distributed Execution Framework https://docs.jboss.org/author/display/ISPN/Infinispan+Distributed+Execution+Framework ドキュメントを見た時は、最初意味がわからなかったのですが…。 Distributed Execution Frameworkというのは、Infinispan上で分散処理を実行するためのフレームワークです。って、名前のままですね。 ばくっというと、以下のような感じになっています。 java.util.concurrent.Callable、ExecutorService、Futureを拡張して利用 クラスタ環

    Infinispan Distributed Execution Framework - CLOVER🍀
  • ジェネリクスで、親クラスに適用されたパラメータのClassを取得する - CLOVER🍀

    先のエントリの続きです。ちょっと調べたらわかったので。 とりあえず、こんなクラスを用意して class GenericClass<T> { } class StringedClass extends GenericClass<String> { } class NumberedClass extends GenericClass<Number> { } interface GenericInterface<T> { } class StringedImpl implements GenericInterface<String> { } class NumberedImpl implements GenericInterface<Number> { } こんなコードを用意して実行すると import java.lang.reflect.*; public class GenericsExte

    ジェネリクスで、親クラスに適用されたパラメータのClassを取得する - CLOVER🍀
  • Infinispan Asynchronous API - CLOVER🍀

    久々にInfinispan。1ヵ月振りなので、簡単そうなものをちょっと触ってみました。 Asynchronous API https://docs.jboss.org/author/display/ISPN/Asynchronous+API 読んで字のごとく、非同期APIです。 Cache#putやget、removeなどのメソッドにAsyncを付けることで、非同期化することができます。 http://docs.jboss.org/infinispan/5.2/apidocs/org/infinispan/api/BasicCache.html Embedded Cache、Remote Cacheの共通の親インターフェースに定義されているので、どちらのキャッシュでも使用できます。 基的には、 cache.putAsync("key1", "...") cache.getAsync("k

    Infinispan Asynchronous API - CLOVER🍀
  • Infinispan Hot Rodの未サポートメソッド - CLOVER🍀

    ドキュメントに、Hot Rod Clientではいくつか未サポートのメソッドがあるよと書いてあったので、ちょっと試してみることにしました。 https://docs.jboss.org/author/display/ISPN/Java+Hot+Rod+client#JavaHotRodclient-Unsupportedmethods 対象は、 boolean remove(Object key, Object value); boolean replace(Object key, Object value); boolean replace(Object key, Object oldValue, Object value); ということらしいです。使うとUnsupportedOperationExceptionが飛んでくるんだとか。 では、ちょっと試してみましょう。まずはEmbedde

    Infinispan Hot Rodの未サポートメソッド - CLOVER🍀
  • Infinispan Serverでクラスタを構成してみる - CLOVER🍀

    今度は、ちゃんと設定ファイルを用意して、クラスタ構成を取ってみようと思います。 以下、Infinispanのインストールディレクトリを「$ISPN_HOME」と表記します。あと、ここで出てくる設定ファイルは、すべて自分で追加したものです。 $ISPN_HOME/etc/infinispan-clustered.xml <?xml version="1.0" encoding="UTF-8"?> <infinispan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:infinispan:config:5.2 http://www.infinispan.org/schemas/infinispan-config-5.2.xsd" xmlns="urn:infinispan:config

    Infinispan Serverでクラスタを構成してみる - CLOVER🍀
  • InfinispanをRemote Serverとして使う - CLOVER🍀

    今までずっとEmbedded CacheでInfinispanを使っていましたが、そろそろInfinispanを単独で起動して、クライアントプログラムからInfinispanを使うことにトライしたいと思います。 まずは、Infinispanをダウンロード。 https://www.jboss.org/infinispan/downloads いつの間にか、5.2.1.Finalが出ています…。 とりあえず、落としたZIPファイルを展開。 $ unzip infinispan-5.2.1.Final-all.zip $ cd infinispan-5.2.1.Final-all $ ll 合計 2492 drwxr-xr-x 8 xxxxx xxxxx 4096 Feb 8 16:50 ./ drwxrwxr-x 3 xxxxx xxxxx 4096 Feb 10 17:36 ../ -rw

    InfinispanをRemote Serverとして使う - CLOVER🍀
  • JGroupsについて、少しだけ調べてみました - CLOVER🍀

    Infinispanに関する設定で出てくる、JGroupsというものに対する設定があります。 設定ファイルの内容が通信関連の設定なので、クラスタリングの際の通信にはこれが使われているのだろうとは思っていましたが、JBoss ASでのクラスタリングとかにも使われているソフトウェアだったんですね。 http://thinkit.co.jp/free/compare/14/3/1.html JBoss系は使ってこなかったので、全然知りませんでした…。 JGroups http://www.jgroups.org/ とはいえ、案の定日語の情報は少ないですね。今回、JGroupsを調べているのは、Infinispanを試してみたいがためなので、あんまり深追いしない程度にさらっと…。 公式ドキュメント http://www.jgroups.org/manual-3.x/html/index.html

    JGroupsについて、少しだけ調べてみました - CLOVER🍀
  • Infinispan Embedded Cache+Cluster Cache - CLOVER🍀

    今度は、アプリケーションと同一のJavaVMでInfinispanを起動させ、なおかつアプリケーション間でのキャッシュの共有にトライしてみます。 いわゆるクラスタですが、モードには distribution(分散) replication(レプリケーション) があるようです。 では、build.sbtから。 name := "infinispan-embedded-clustering" version := "0.0.1" scalaVersion := "2.10.0" organization := "littlewings" fork in run := true resolvers += "jboss repository" at "http://repository.jboss.org/nexus/content/groups/public-jboss/" libraryDep

    Infinispan Embedded Cache+Cluster Cache - CLOVER🍀
  • Infinispanで、キャッシュをファイルに保存する - CLOVER🍀

    続いて、Embedded Cacheでキャッシュをファイルに保存することを試してみました。 まずは、build.sbt。 name := "infinispan-embedded-file-store" version := "0.0.1" scalaVersion := "2.10.0" organization := "littlewings" fork in run := true resolvers += "jboss repository" at "http://repository.jboss.org/nexus/content/groups/public-jboss/" libraryDependencies += "org.infinispan" % "infinispan-core" % "5.2.0.Final" プログラム中で設定する 前回同様、最初はConfigur

    Infinispanで、キャッシュをファイルに保存する - CLOVER🍀
  • Infinispanを使ってみる - CLOVER🍀

    仕事で、ちょっとKey Value Storeについて調べていて、JBossファミリのInfinispanというものを知りました。 InfoQの以下の記事によると、 http://www.infoq.com/jp/news/2011/10/java-data-grid 以下のようなJSRの実装であるようです。 JSR-107(Javaプラットフォーム向けキャッシュ) JSR-347(Javaプラットフォーム向けDataGrid) それから、「JBoss Data Grid」という製品の中核になっているらしいです。 ぶっちゃけKVSって触ったことがないんですが、何か触ってみたいなとは思っていたので、ちょっとここでInfinispanに手を出してみることにしました。 Infinispan https://www.jboss.org/infinispan ドキュメント https://docs.

    Infinispanを使ってみる - CLOVER🍀
  • Selenium WebDriverで遊ぶ - CLOVER🍀

    仕事で使うかもしれなさそう…ということで、Selenium WebDriverを使ってみました。初めて触ってみたのですが、けっこう便利そうですね。 とりあえず、使ってみる 公式ドキュメントの写経+Maven、JUnitと一緒に使ってみることにします。 こんなpom.xmlを用意。 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>webdriver.exa

    Selenium WebDriverで遊ぶ - CLOVER🍀
  • Javaのプロパティファイルを比較するスクリプト - CLOVER🍀

    前に、仕事Javaのプロパティファイルを比較するのに、Groovyで簡単なスクリプトを作りました。 プロパティファイルにいろいろ環境に依存した設定が書かれていて、なおかつその内容がExcelとかで管理されていたので実際のソースコードとその内容が一致しているかどうかを確認したかった、というのが作った動機です。 そもそも、Excelで管理されていたんなら自動生成すればいいんじゃあ…?とかいうツッコミもあろうかとは思いますが、いったん置いておきまして…。 スクリプトに求めたのは、以下の挙動です。 比較したプロパティファイルに差分があれば、diffコマンドっぽく出力する 出力結果がUnicodeエスケープされていた形だと見づらくてしかたがないので、java.util.Propertiesを使って元の形に戻す キーの出現順は、Propertiesを使用するので、保障しない ファイル名が「.utf8

    Javaのプロパティファイルを比較するスクリプト - CLOVER🍀
  • Javaのネットワークに関するプロパティについて - CLOVER🍀

    今日、NIO.2関連の内容を見ていて、一緒に見つけたページなのですが… http://itpro.nikkeibp.co.jp/article/COLUMN/20120327/388103/?ST=develop&P=6 システムで使っているプロキシの設定を使うことができる、 java.net.useSystemProxiesなんてプロパティあったんですね。知らなかった…。 Javaのネットワーク関連のプロパティは、ここに載っているらしいです。 http://docs.oracle.com/javase/7/docs/technotes/guides/net/proxies.html http://docs.oracle.com/javase/7/docs/api/java/net/doc-files/net-properties.html ちょっと衝撃的でした…ちゃんと見ておこうっと。

    Javaのネットワークに関するプロパティについて - CLOVER🍀
  • HttpClientとConnectionManagerとCLOSE_WAITと - CLOVER🍀

    JavaでHTTP通信をやろうとすると、必ずと言っていいほど登場する、Apache HttpClient4(以前は、Jakarta Commons HttpClient3)ですが、これでちょっとハマっていた事象を見かけたので、軽くメモを。 あ、その時に使われていたのは、Jakarta Commons HttpClient3の方です。んで、ソケットのクローズ漏れでハマってました。 これ、チュートリアルだけを信じて実装すると、ハマるんですよねぇ…。 http://hc.apache.org/httpclient-3.x/tutorial.html チュートリアルの中に // Release the connection. method.releaseConnection(); みたいなことが書いてあって、いかにもコネクションをクローズしてくれそうな雰囲気がありますが、これは意味が違います。Ht

    HttpClientとConnectionManagerとCLOSE_WAITと - CLOVER🍀
  • JDK 7のFork/Join Frameworkで遊ぶ - CLOVER🍀

    JDK 7のリリース前から気になっていた、Fork/Join Frameworkを触ってみました。かなり今更感があるのは、気にしない方向で…。 Fork/Join Frameworkって? 詳しくは、こちらへ。 http://itpro.nikkeibp.co.jp/article/COLUMN/20110527/360769/?ST=develop&P=1 要は、マルチコアを使い倒すための並列処理フレームワークです。対象にしているのは粒度の小さい(細粒度の)並列処理で、Java 5で導入されたExecutorを使ったフレームワークでは粒度が大きくなってしまうので向いていない…というお話だそうな。 とはいえ、たぶんFork/Join Frameworkは計算処理をメインの用途に想定していると思うので、IOを伴うような粒度の大きな処理はExecutorを使った方がいいのではないかと。 何を使

    JDK 7のFork/Join Frameworkで遊ぶ - CLOVER🍀
  • GroovyのOne Linerで、システムプロパティの値を出力する - CLOVER🍀

    また小ネタです。 Groovyは、groovyコマンドの「-e」スイッチでOne Linerを実行することが可能ですが、これを使って現在のシステムプロパティを出力するコードを書いてみましょう。 んで、できたのがこちら。 $ groovy -e 'System.properties.sort().each{println(it.key + " = " + it.value.replaceAll(/\r/, "\\\\r").replaceAll(/\n/, "\\\\n"))}' 実行すると、こうなります。 awt.toolkit = sun.awt.X11.XToolkit file.encoding = UTF-8 file.encoding.pkg = sun.io file.separator = / groovy.home = /usr/local/groovy/current g

    GroovyのOne Linerで、システムプロパティの値を出力する - CLOVER🍀
  • Groovyで現在実行しているスクリプトのパス、またはファイル名を取得する - CLOVER🍀

    小ネタです。Groovyで、現在実行中のスクリプトファイルのパスおよびファイル名を取得する方法です。 サンプルコード。 print_script_name.groovy println("path => " + this.class.protectionDomain.codeSource.location.path) println("fileName => " + new File(this.class.protectionDomain.codeSource.location.file).name) 実行結果。 $ groovy print_script_name.groovy path => /xxxxx/script-name/print_script_name.groovy fileName => print_script_name.groovy ClassクラスからProtect

    Groovyで現在実行しているスクリプトのパス、またはファイル名を取得する - CLOVER🍀
  • 可変長引数を持つメソッドに付与する、@SafeVarargsアノテーション - CLOVER🍀

    可変長引数を持つメソッドをコンパイルした際の警告を抑制する、@SafeVarargsアノテーションというものがあるということを、前のJDK 7の言語仕様変更のエントリを書いている時に知りました。 警告されたものは、場合によっては@SuppressWarnings付けるくらいだと思っていたのですが、そんなのできたんですね。 @SafeVarargsアノテーションの宣言は、以下の通り。 @Documented @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.CONSTRUCTOR, ElementType.METHOD}) public @interface SafeVarargs {} コンストラクタ、またはメソッドに付与することができるアノテーションみたいですね。 ここで、こんなソースを用意して import java.ut

    可変長引数を持つメソッドに付与する、@SafeVarargsアノテーション - CLOVER🍀
  • Javaで使えるSSHライブラリ - CLOVER🍀

    最近、仕事JavaからSSHを使用することが多いのですが、ちょっとどんなライブラリがあるか調べることになりまして…せっかくなので、結果をまとめてみることにしました。 割と有名どころが多いので、知っている方はそれほど大した情報にはならないと思いますが…。 では、いってみましょう。 JSch これが1番有名なライブラリではないでしょうか?妙にバージョンが低い割には、Ant、Eclipse CVSプラグイン、Maven Wagonなどで利用されているようです。 名前 JSch プロトコルバージョン SSH v2 最新バージョン(2012/08/18時点) 0.1.48 利用可能な主な機能 SSH、SFTP、SCP(リモートコマンド実行の限定サポート)、公開鍵認証 プロジェクトサイト http://www.jcraft.com/jsch/ Maven Central Repositoryへの登録

    Javaで使えるSSHライブラリ - CLOVER🍀
  • GradleでWebアプリを作ってみようと… - CLOVER🍀

    タイトルの通り、今度はGradleのWar PluginとJetty Pluginを使ってWebアプリ…というかサーブレットプログラミングをやってみようと思ったのですが、うまくいきませんでしたという…。 一応、以下を見ながらやったんですけどね、何がマズかったんでしょう? http://www.gradle.org/docs/current/userguide/web_project_tutorial.html http://www.gradle.org/docs/current/userguide/war_plugin.html http://www.gradle.org/docs/current/userguide/jetty_plugin.html やったことは書いておきますか。 プロジェクトの作成 まずは、Webアプリ用のプロジェクト…というか、ディレクトリ作成。 $ mkdir h

    GradleでWebアプリを作ってみようと… - CLOVER🍀
  • Gradle Daemonを使う - CLOVER🍀

    昨日はGradleをちょっと使ってみたわけですが、元がGroovyだからかどうかはわかりませんけど、とにかく重い印象があります。やっぱり、こういうのって1回きりの使い捨てより、常駐型でないと厳しいですよね。 というわけで、ここでGradleが用意しているのがDaemonです。 http://www.gradle.org/docs/current/userguide/gradle_daemon.html http://gradle.monochromeroad.com/docs/userguide/gradle_daemon.html まあ、文章中に「experimental」と書かれているように、まだ試験的サポートのようですが。 とはいえ、効果は明らかにあるようなので、使っていってみましょう。今回使うGradleプロジェクトのスケープゴートは、最初に用意したJavaの「Hello Worl

    Gradle Daemonを使う - CLOVER🍀
  • GradleでGroovyを使う - CLOVER🍀

    Gradleで「Hello World」をするのにJavaを使ったわけですが、そもそもユーザガイドの最初がJavaから入っているわけで、Gradleのスタンス的には GradleはGroovyで書かれているけど、ビルドツールとしてはJava標準でGroovyもサポートしてるよ くらいなのかもしれませんね。 では、ユーザガイドを参考にして、やってみましょう。 http://www.gradle.org/docs/current/userguide/tutorial_groovy_projects.html Groovy用のプロジェクトを作る まずは、ディレクトリ作成。 $ mkdir hello-gradle-groovy $ cd hello-gradle-groovy/ $ mkdir -p src/main/groovy ソースファイルの配置先は、Groovyの場合「src/main/

    GradleでGroovyを使う - CLOVER🍀
  • JAXB RIで、アンマーシャル時のオブジェクトの生成をカスタマイズする - CLOVER🍀

    引き続き、JAXBネタです。アンマーシャルの際には、Constructor#newInstance(要はデフォルトコンストラクタ)が呼び出されているようですが、これをちょっと手を加えることでカスタマイズすることができます。 対象はjava.xml.bind.Unmarshallerで、Unmarshaller#setPropertyでこれをカスタマイズすることができます。プロパティ名が「com.sun」で始まるので、まずSun(Oracle?)の実装でしか使えないと思った方がいいんでしょうね。 なお、前の名前空間の接頭辞の場合と違い、今回はJAXB RIそのものに依存関係の定義をしなくても使用することができます。 以下が、サンプルになります。 public static <T> T unmarshal(String inputString, Class<T> requiredType) t

    JAXB RIで、アンマーシャル時のオブジェクトの生成をカスタマイズする - CLOVER🍀
  • JAXBと名前空間と - CLOVER🍀

    前回は、XML Schemaを書かずにJAXBを使用しましたが、次は入出力するXMLに名前空間を使用したいと思います。 入力するXMLをちょこっと変更します。 val inputXml = """<?xml version="1.0" encoding="UTF-8"?> |<data xmlns="http://d.hatena.ne.jp/Kazuhira/"> | <title>名簿</title> | <persons> | <person id="1"> | <firstName>Taro</firstName> | <lastName>Tanaka</lastName> | <age>17</age> | </person> | <person id="2"> | <firstName>Hanako</firstName> | <lastName>Suzuki</lastNam

    JAXBと名前空間と - CLOVER🍀
  • JAXBをXML Schemaなしで使ってみる - CLOVER🍀

    最近、仕事でXMLとかJSONをデータの入出力形式とする開発をすることになったのですが、ここでどのライブラリとか使おうかなぁといろいろ思考中。 JSONはJSONICでいこうと思っているのですが(Seasar2系使ってるし…)、XMLはどうしようかなと…。XStreamという手もあるのですが、XStreamには名前空間のサポートが無い(今回、これはマズいのです…)ので除外。 そこで、JAXBにちょっと注目しています。 世間の情報を見ていると、XML SchemaをコンパイルしてJavaコードを生成〜みたいな内容が多いですが、XML Schemaはなくても使えるので、標準で使える簡単なオブジェクト-XMLマッピングライブラリとして覚えておくのも有りだなぁと思うのです。特に、XML Schemaでの検証なんていいから、とりあえず簡単に使いたいなんて時には。 では、ちょっと使ってみましょう。 サ

    JAXBをXML Schemaなしで使ってみる - CLOVER🍀
  • Groovyで特定のパッケージ配下のクラスを検索する - CLOVER🍀

    以前、JavaScalaで同じようなタイトルのエントリを書いたことがありましたが、これには元ネタがあって、そちらは実はGroovyだったりします。 元々、仕事でクラスをディレクツリーを辿って動的に走査して、見つかったクラスの継承関係やらアノテーション付与の確認やらをしたかったのが作成の動機です。 JARファイルのことを考えなければ、めっちゃ簡単でこれくらいの量で済みます。 class_finder.groovy // 引数にスキャン対象のパッケージ名 def rootPackageName = args[0] def classLoader = Thread.currentThread().contextClassLoader def resourceName = rootPackageName.replace('.', '/') def loadedClasses = [] def u

    Groovyで特定のパッケージ配下のクラスを検索する - CLOVER🍀
  • Groovyのバインディング変数とローカル変数 - CLOVER🍀

    Groovyでは、スクリプト中の変数のスコープが宣言方法で大きく変わるようです。これも仕事でGroovyを使っていて、ハマったのでメモ。 例えば、以下のスクリプトについて。 binding_local.groovy outside = "binding object" def outsideLocal = "local object" println(outside) // OK println(outsideLocal) // OK def func() { println(outside) // OK //println(outsideLocal) // groovy.lang.MissingPropertyException: No such property } func() この例では、2つの変数outsideとoutsideLocalをそれぞれスクリプトトップレベル中の処理とメ

    Groovyのバインディング変数とローカル変数 - CLOVER🍀
  • Javaで特定のパッケージ配下のクラスを検索する - CLOVER🍀

    1度やってみたかったんですよね、これ。DIコンテナとかで、よく特定のパッケージ配下のクラスを検索するような機能がありますが、これを自分で書いてみようと思います。 検索対象のクラスが配置されているパターンとしては、 ディレクトリ配下に.classファイルが配置してある JARファイル内にパッケージングしてある というのがよく考えられると思います。今回は、とりあえず上記2つを対象に考えます。 まず、検索対象のスケープゴートとして、以下のようなディレクトリ構成のクラスを用意しました。 ソースコード root/RootPackageClass1.java root/RootPackageClass2.java root/sub/SubPackageClass1.java root/sub/SubPackageClass2.javaクラスファイル root/RootPackageClass1.cla

    Javaで特定のパッケージ配下のクラスを検索する - CLOVER🍀
  • Mavenで使っている、依存ライブラリを指定のディレクトリに出力する - CLOVER🍀

    最近、アプリケーションのデプロイとかを考える時にしょっちゅう使うので、自分のためにメモ。 Mavenで依存関係を定義した際に、その依存ライブラリを集めたい時に使います。WebアプリだとWARにすれば全部入りますが、バッチ系だとそうはいきませんからね…。 依存ライブラリの取得コマンド。 $ mvn dependency:copy-dependencies この指定の場合、依存ライブラリが「target/dependency」ディレクトリに出力されます。 出力先のディレクトリを指定する場合は、こちらのコマンドを実行します。 $ mvn dependency:copy-dependencies -DoutputDirectory=lib この指定の場合、依存ライブラリがlibディレクトリに出力されます。

    Mavenで使っている、依存ライブラリを指定のディレクトリに出力する - CLOVER🍀
  • JasperReportsを触る - CLOVER🍀

    仕事で、PDF生成のためにJasperReportsを初めて使っているのですが、仕事中にこれがあんまりよくわからなくなってハマりだしたので、休みを利用してちょっと勉強してみることにしました。 なんか、調べてみてもあんまりブログとかの情報がヒットしないのですが、けっこうマイナーな話題なのでしょうか?JasperReports、PDF生成って…。 JasperReportsは、PDFに限らずテンプレートXMLからHTMLExcelを生成できるソフトウェアらしいのですが、自分の周りではPDF生成に使われていることしか聞いたことがありません。そして、テンプレートXMLの生成にはGUIツールである、iReportを使用します。 JasperReports http://jasperforge.org/projects/jasperreports iReport http://jasperforge

    JasperReportsを触る - CLOVER🍀
  • ジェネリクスの上限/下限ワイルドカードを学ぶ - CLOVER🍀

    前回高階関数の話と一緒に、Java版では上限/下限ワイルドカードが登場しました。これをなかなか覚えられないので、ちょっとマジメに勉強してみようと思います。 まずは、今回のスケープゴート。 class Super { private String value; public Super(String value) { this.value = value; } public String getValue() { return value; } @Override public String toString() { return String.format("This is [%s] class, value is [%s]",this.getClass().getName(), value); } } class Basic extends Super { public Basic(St

    ジェネリクスの上限/下限ワイルドカードを学ぶ - CLOVER🍀
  • Apache MavenでWebアプリにトライ - CLOVER🍀

    今回は、Apache Mavenを使ったWebアプリ作成にトライしてみます。以下のページを参考に、Webアプリ用のプロジェクトを作成。 http://maven.apache.org/guides/mini/guide-webapp.html $ mvn archetype:generate -DgroupId=myapp.web -DartifactId=myapp-web -DarchetypeArtifactId=maven-archetype-webapp [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Maven Stub Project (No POM) 1

    Apache MavenでWebアプリにトライ - CLOVER🍀
  • Apache Mavenで依存関係の管理 - CLOVER🍀

    前回は、Apache Mavenのインストールとプロジェクト作成、起動までやりました。今回は、Mavenを使った依存関係の管理をやりたいと思います。 まず、不要な雛型クラスを削除 $ rm src/main/java/myapp/hello/App.java $ rm src/test/java/myapp/hello/AppTest.java 今回は…そうですね、Jakarta Commons Langでも使ってみましょうか。新しいJavaクラスを作成します。 $ emacs src/main/java/myapp/hello/HelloCommons.java &とりあえず、以下のような簡単なクラスを作成してみました。 package myapp.hello; import org.apache.commons.lang.StringUtils; public class HelloC

    Apache Mavenで依存関係の管理 - CLOVER🍀
  • Apache Mavenことはじめ - CLOVER🍀

    あまり個人的に積極的には使う理由がない…というかそれほど興味はないのですが、一応知っておいた方がいいのかな〜ってことで、ちょっとApache Mavenを使ってみることにしました。一応標準に近い位置にいますし、Scalaで使っているsbtも似たような動きをするので、知っておいてもいいかなーと。 ※仕事では、Apache Antを使っている方が多いです。 そもそもMavenって何?という話ですが、Apache Antに代わるものとして作られたビルドプロセスを含めたプロジェクト管理ツールです。ビルドに留まらず、パッケージング、デプロイ、テスト、依存性の管理、プロジェクトサイトの生成などいろんなことができるけっこう壮大なソフトウェアになっています。Javaのだいたいのプロジェクトは、ビルドにAntかMavenを使っていると思うので、両方知ってると安心? それはさておき、まずはインストールから。M

    Apache Mavenことはじめ - CLOVER🍀
  • Shift_JIS → Windows-31Jマッピング変換コード - CLOVER🍀

    近々仕事で書くことになりそうなので、久しぶりにShift_JISとWindows-31Jのマッピング変換コードでも。 public class CodeReviser { public static void main(String[] args) { String target = args[0]; System.out.println("Before [" + target + "] Hex[" + toHexString(target) + "]"); String converted = reviseCode(target); System.out.println("After [" + converted + "] Hex[" + toHexString(converted) + "]"); } public static String reviseCode(String tar

    Shift_JIS → Windows-31Jマッピング変換コード - CLOVER🍀
  • Gradleことはじめ - CLOVER🍀

    ちょっと更新間隔が空いてしまいましたね。いろいろと予定があったり、暑さに負けたり(笑)していたのが主な原因ですが…。 あと、NettyがそろそろVersion 4を出しそうな雰囲気なのですが、Alpha1からまだしばらくかかりそうなので、方向を変えてGradleを触ってみることにしました。 GradleもVersion 1が(執筆時点では、1.1まで進んでましたが…)リリースされて、なぜかScalaのサポートまで標準で取り込まれているみたいなので、触ってみようかなぁと前々から思っていましたので。 じゃ、やってみましょう。なお、このエントリで扱うGradleのバージョンはGradle 1.1になります。 Gradleとは? Groovy界隈で、有名なビルドツールです。プロジェクト管理ツール的な感じでもあるので、JavaでのMaven、Scalaでいうsbtに相当します。最近では、OSSのプロ

    Gradleことはじめ - CLOVER🍀
  • データベースを用いたセッションデータ管理について - LukeSilvia’s diary

    Web アプリケーションとは切っても切れないセッション機構。DB ベースでセッション管理を行なって得られた知見と、それを元に考察した結果をまとめてみます。 セッションデータの特性 DB で管理される他のデータに比べ、セッションデータはかなり特殊です。主な特徴は次のような感じ。 データが増加するのが速い 定期的な削除が必要 頻繁に更新される リクエスト毎に読みに行く必要がある このデータを読めないとアプリケーション全体にアクセスできない アクセス頻度が高いということです。あと、1つ目の特徴からセッションデータについては意識的に管理してやる必要があります。 現在の環境 アプリケーションの領域が少し特殊で、セッションデータがやたらたまります(ユーザ数何百万のサービスとかそういうのではないです)。 RDBMS MySQL 4.0.22 ストレージエンジン InnoDB レコード数 6千万 テータサ

    データベースを用いたセッションデータ管理について - LukeSilvia’s diary
  • Kazuho@Cybozu Labs: パフォーマンスとスケーラビリティのためのデータベースアーキテクチャ (BPStudy#25発表資料)

    先週金曜日、BPStudy#25で、「パフォーマンスとスケーラビリティのためのデータベースアーキテクチャ」という題目で話をさせていただきました。その際に使用した発表資料は以下のとおりです。 1. Happy Optimization 最初に、最適化の考え方として、上限値を予測し、それを元にリソース配分を考える、という手法を説明しました。

  • 第2回 自動ビルドを実現するビルド・サービスの必要性と環境構築方法

    第2回 自動ビルドを実現するビルド・サービスの必要性と環境構築方法:連載:いまどきのソース・コード管理(1/3 ページ) ソース・コードの管理環境の構築の次は、自動ビルド環境を構成しよう。Team Foundation Server Expressに統合されているビルド・サーバ機能を活用すれば、これも簡単に構築できる。 連載目次 前回の記事ではソース・コードの管理環境の構築について解説した。今回~次回は次のステップとして、自動ビルドを構成してみよう。 自動ビルドとはその名のとおり、ユーザーが直接操作することなく、サーバ上で自動的にコンパイルおよび、場合によってはテスト環境への登録も行うというものだ。Team Foundation Server(以下、TFS)および、Team Foundation Service(以下、TF Service)にはこのような自動ビルドを実現するビルド・サーバ機

    第2回 自動ビルドを実現するビルド・サービスの必要性と環境構築方法
  • IT系勉強会に行ってみる前に

    IT系勉強会やイベントに参加してみたいけれど、 どうやって参加したらいいか分からないと言う人向けに、勉強会の種類や見つけ方、専門用語をまとめてみました。 何故勉強会に参加するのか仕事時間以外にわざわざ勉強会に参加するメリットは3つ、知識を深められるから、人脈を広げることが出来るから、楽しいから 知識を深める一人ではを読み学ぶしか無いのにたいし、勉強会に行けばわからないところを重点的に教えてるので、で躓いた知識も乗り越えられる可能性が高まるし、には乗っていない深い知識を得ることもできます。 人脈を広げる勉強会に行けば特定の技術に特化した人がたくさんいます。 中には自分と同じ業界の人もいれば、自分とは離れた業界の人もいます。 近い業界の人とは知識を共有し合い、離れた業界の人とはお互いの得意な技術をあわせて新しいビジネスのチャンスが広がります。 楽しいから「勉強」という言葉から、学生時代の

    IT系勉強会に行ってみる前に
  • Vagrant コトハジメ

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    Vagrant コトハジメ
  • Sublime Text 2 でステータスバーに改行コードを表示する - understandard

    Sublime Text 2 で現在の改行コードが何かを確認するには、メニューバーから View -> Line Endings と辿っていかなければならず、改行コードが異なるファイルを日々取り扱っている場合には不便です。 LineEndings というパッケージをインストールすると、TeraPad や CotEditor のように、常にステータスバーに改行コードを表示できるようになります。 SublimeText/LineEndings · GitHub Package Control から LineEndings を検索すればインストールできます。 LineEndings の検索 インストールが完了すると、左下に改行コードが表示されるようになります。 また、こちらに表示されるのは、Windows か Unix か CR という表示です。 LineEndings のインストール前後での表

    Sublime Text 2 でステータスバーに改行コードを表示する - understandard
  • Amazonクラウド、技術者の認定試験を開始。日本でも数カ月以内に提供予定

    Amazonクラウドでアプリケーションやサービスの構築、運用に関する必要なスキルや知識が備わっている専門家を認定する。Amazon Web Servicesは、Amazonクラウドに関するグローバルな認定プログラム「AWS Certification Program」を発表しました。 認定プログラムは次の3種類が用意される予定です。 Solutions Architect AWSプラットフォーム上での分散システムやアプリケーションを設計するスキルを持つ技術者 SysOps Administrator AWSクラウド上でアプリケーションの健全性を保つ運用ができる技術者 Developer AWSを基盤としたアプリケーションの設計と開発ができる技術者 それぞれには、下から「アソシエイトレベル」「プロフェッショナル レベル」「マスター レベル」と成熟度に合わせた認定試験が行われ、認定エンジニア

    Amazonクラウド、技術者の認定試験を開始。日本でも数カ月以内に提供予定
  • 情報処理とは何か あとbigdataとか

    2012年夏に一橋大学の一年生向けの情報処理の講義において、講師をさせていただいたときの資料を再編したものです。Read less

    情報処理とは何か あとbigdataとか