380 likes | 474 Views
1. PostgreSQL9.2 リリース. 2012/09/10 にリリース マルチコアにおけるスケーラビリティが向上。 JSON をネイティブサポートし、インデックスやレプリケーションの機能を強化。 Index-only スキャン、 CPU 消費電力削減などを実現。 最大で毎秒 35 万件のリードクエリ(従来の 4 倍強)、データウェアハウスクエリの Index-only スキャン(同 2 ~ 20 倍)、最大で毎秒 1 万 4000 件のデータ書き込み(同 5 倍)に対応。 カスケーディング・レプリケーションが加わったことにより、水平方向の拡張性が強化された。
E N D
1. PostgreSQL9.2 リリース • 2012/09/10にリリース • マルチコアにおけるスケーラビリティが向上。 • JSONをネイティブサポートし、インデックスやレプリケーションの機能を強化。Index-onlyスキャン、CPU消費電力削減などを実現。 • 最大で毎秒35万件のリードクエリ(従来の4倍強)、データウェアハウスクエリのIndex-onlyスキャン(同2~20倍)、最大で毎秒1万4000件のデータ書き込み(同5倍)に対応。 • カスケーディング・レプリケーションが加わったことにより、水平方向の拡張性が強化された。 • いくつかの機能について少し掘り下げて説明していきます。 【参考】 http://www.sraoss.co.jp/technology/postgresql/9.2/verification_report.php
1-1. Index-onlyスキャン • Oracle、MYSQL、DB2などには既に実装されている機能 • Indexに格納されたデータのみを検索する場合、Indexからテーブルを参照しなくても結果を返却できる • その分、性能向上が見込める →OracleだとB-Treeのみスキャン対象になるっぽい • B-Tree Index知らない人は自分で調べてください。 【参考】 http://www.shift-the-oracle.com/index/btree-index.html
1-2. カスケーディング・レプリケーション • PostgreSQL9.0から通常のレプリケーション(非同期)は実装された • 9.2でカスケーディング・レプリケーション対応 • 簡単に説明するとレプリケーションされるスタンバイ機にさらにレプリケーションできるスタンバイ機を設定可能 • 以前はプライマリからのみスタンバイ機を設定が可能
1-3. JSON型 • BETA3から日本語対応 • JSON型をカラムにしているとJSON形式で登録できる →検索できないのでどういった意味が??誰か使い方調べて教えてください。 • row_to_json関数が便利 →SELECT row_to_json(row(id, name)) FROM EMP; →{“f1”:4649, “f2”:”moguro”} • キーが自動に付与?使い勝手が・・・。 →SELECT row_to_json(tmp) FROM →(SELECT id, name FROM EMP) tmp → {“id”:4649, “name”:”moguro”}
1-4. Range Types (範囲型) • 文字通り範囲を指定できる型 • 今まで日付のFrom、Toは2カラム必要だったのに1カラムで対応できる • 使用できる型はint4range、int8range、 numrange、daterange、tsrange (timestamp)、 tstzrange (timestamptz) • よく調べていないので下記参照してください 【参照】 http://postgresql.g.hatena.ne.jp/pgsql/20120416
2. BYOD • 「Bring Your Own Device」の略で私物端末を業務利用すること • 最近、いろいろな記事などで賑わっている! • スマートフォン普及に伴い、増えてきている • 会社としても経費削減が見込める • ただし、私物端末を業務で使うとセキュリティ事故のリスクあり • 各企業がいろいろな対策を行っている • 例えば社内システムに私用端末から繋げる場合、位置情報を取得して社内以外からアクセス不可
3. JQuery関連 • 本日、石○氏が目からうろこの「JQuery Mobile」の説明があります。 • JQueryライセンスの統一 • JQuery Mobile1.2 新機能 • JQuery Mobile絡みで少し補足します →私は簡単な説明ですけど、石○氏は超大作らしいですよ!
3-1. JQueryライセンス • 今まで「MIT」ライセンスと「GNU GPL」をサポートしていた • 今後はGPLを廃止し、MITライセンスに統一 • MITライセンスの特徴 • 無料で無制限に扱うことが可能 • 著作権表示および本許諾表示をソフトウェアのすべての複製または重要な部分に記載 • 作者または著作権者は、ソフトウェアに関してなんら責任を負わない
3-2. JQuery Mobile1.2 新機能 • 2012/10/02にJQuery Mobile1.2 発表 • 主な新機能は以下の通り • Popup • Collapsible Lists • Listview Autodividers ・・・などなど • 新機能はきっと石○氏が説明してくれるでしょう・・・ • 以下にデモ画面を見れるサイトがあります 【参照】 http://jquerymobile.com/demos/1.2.0/
3-2-1. Popup • せっかくなので一つだけ説明 • ツールチップやメニューなどをPopupできる • Popup画面以外をクリックすると閉じる • ダイアログと同じような感じ • Popupを表示する元は「data-rel=“popup”」を記述する • Popup画面は「data-role=“popup”」で指定 • では、ソース例を見ていきましょう
3-2-1. Popupソース // ポップアップでツールチップを表示させる <a href=“#popupTip” data-rel=“popup” data-role=“button” data-inline=“true”>ツールチップ</a> <div data-role="popup" id=“popupTip" class="ui-content" data-theme="e”> これはTooltipですよ </div> // ポップアップでメニューを表示させる <a href="#popupMenu" data-rel="popup" data-role="button" data-inline="true">Menu</a> <div data-role="popup" id="popupMenu" data-theme="a"> <ul data-role="listview" data-inset="true“ data-theme="b"> <li data-role=“divider” data-theme=“a“>お食事メニュー</li> <li><a href=“xxxxx.html”>ラーメン</a></li> <li><a href=“yyyyy.html”>チャーハン</a></li> </ul> </div>
3-3. 脆弱性 • 1.2以前のJQuery Mobileでは読み込んでいるだけで脆弱性(XSS)を埋め込んでしまうので注意! • 1.2 Betaでは脆弱性(XSS)が改修されたのに1.2RC1/RC2では別で脆弱性が・・・。 • プロジェクトで使用する時は注意してください。 →1.2 安定版では直っているのかな? • 詳しく説明してくれているサイトがありますので興味ある方はどうぞ 【参考】 http://masatokinugawa.l0.cm/2012/09/jquery-mobile-location.href-xss.html
4. Tポイントツールバー • ブラウザにアドオンするツール • 検索するだけでTポイントがたまる • このツールがWeb閲覧履歴をサーバへ送信 →利用規約に記載していますが・・・。 • SSL通信でもパラメータを取得可能 • クレーム多数・・・。まあそうですよね。 →サーバへの履歴送信やめたそうです・・・。 • ツールを使用するときはパケットキャプチャー必須ですかね・・・。
5. Android4.1 • Android4.1(Jelly Beans)の新機能 →2012/06のGoogle I/Oで発表された • だいぶ経っているので新機能っていうと・・・。 • 日本でも4.1のNexus7(16GB)が発売 →今購入して、クレジット登録すると2千円貰えるよ • 新機能が沢山あるので気になった3点を紹介 • Google Now • Notificationの拡張 • Android Beam
5-1. Google Now • パーソナルアシスタント機能 • Android上のカレンダー、スケジュール、GPS等から予測して情報を表示 • 例えば「2012/10/03 10:00 羽田空港」とカレンダーに登録しておくと目的地への所要時間、空港に到着すると便情報などが表示 • 音声などにも反応 • まあ、iコンシェルですね・・・。 • なんか、電池に減りがさらに悪くなりそうな・・・。
5-2. Notificationの拡張 • 今までは通知内容の表示のみ • 拡張できることによってボタンやアイコンを表示できるようになる • 「Notification.Builder」に設定 →例えば「setLargeIcon()」などでアイコン設定 • そこにアクションを設定できるため、通知内容からアクションを起こせる。つまり、わざわざアプリを起動しなくてもいい! →アクションを追加するには「addAction()」
5-3. Android Beam • 何かビームってかっこいい・・・。 • NFCベースの通信で実現 • NFC対応携帯をお互いにタッチすることでアプリ情報を共有できる →電話帳、ブラウザのURLなど • Bluetooth経由でデータを転送することも可能 • やり取りは「NDEF メッセージ」を使用する 【参照】http://developer.android.com/guide/topics/connectivity/nfc/
5-3-1. NFC • さすがに知らない人はいないと・・・ • SonyとPhilips社が開発した規格 • 2003/12もISO/IEC IS 18092の国際標準になっている • NFCとはFeiCaなどの非接触ICカードと互換性がある近距離無線通信規格です →「Near Field Communication」の略 • 13.56MHzの周波帯で10cm程度の距離を100~400kbpsの双方向通信が可能
5-3-2. NFC用途 • カードシュミレーション機能 →駅などで定期、お店の支払いカードなど他規格との連携 • リーダ・ライタ機能 →ポスターなどICカード、タグなどから情報読み取ることが可能 • 端末間通信(P2P) →携帯端末同士の連絡先交換など • NFC端末間ペアリング 【参考】 http://www.nfc-world.com/about/02.html
5-3-3. NFC端末間ペアリング • 大きいデータを通信するときに利用 • ペアリングだけをNFCで行い、大きいデータ通信を「Bluetooth」、「Wifi」などで行うことが可能である • この処理を「ハンドオーバー」と言う • 例えば駅などでWifi接続するとき、SSIDと暗号キーを事前登録しますがアクセスキー登録済のNFC端末を用意しておけばOKとなる • また、近距離でしか通信できないため、盗聴の可能性が限りなく低い
5-4. Titanium 3.0 • 4.1新機能ではないけど、Android4.1に対応・・・。 • Titanium 3.0 が10/21~10/23に開催される「CODESTRONG」で発表されるらしい →【URL】http://codestrong.com/ • 2.0までは標準のフレームワークが無かった →自由に記述できるが統一性が無い • 3.0以降ではMVCフレームワーク「Alloy」が標準になる • 実機でのリモートデバックに対応(すばらしい) • コマンドラインツール「Titanium Studio」を用意
5-4-1. Alloy • Titanium Mobileの開発元「appcelerator」がGitHubで提供 • RoRっぽいMVCフレームワーク • npmでインストールして、「alloy new」でセットアップ →「Play」なんかと同じ感じですね。 • 構成は以下のような感じ • app/controllers/配下にコントローラ(JS) • app/views/配下にビュー(HTML) • app/models/配下にモデル(モデル定義のJSON) • app/config/配下に設定(設定ファイルもJSON) 【参考】 http://www.slideshare.net/donayama/appceleratoralloy
5-5. J2ObjC • スマートフォン絡みということで・・・ • Googleが公開したオープンソース • JavaソースをObjective-Cソースに変換するツール • JavaSE6をサポート • ただし、GUIは作成することはできない • 開発ツールはサポートする予定は無い • 興味があれば自分で調べてください →それほど興味がわかなかったので・・・
5-6. Selenium WebDriver • これもスマートフォン絡みということで・・・ • Webアプリケーションのテスト自動化サポートツール • テストコードはJava、C#、Python、Rubyで記述可能 • iPhone、Androidを含む複数ブラウザ対応 • テストソースは容易に実装可能 • 画面の崩れなどはわからないので繰り返し行うようなシナリオ試験などに有効なのかな? • JUnitと組み合わせると結果確認も自動化
5-6-1. Selenium WebDriver(サンプル) • 画面A表示(①)、text(name=“xxx”)に文字入力(②)、サブミット(③)までの流れ WebDriver driver = new FirefoxDriver();//④ driver.get(“http://www.test.com/test”);//① WebElement element = driver.findElement(By.name(“xxx”)); //② element.sendKeys(“sekainoHD”);//② element.submit(); //③ driver.quit(); //⑤ ※④、⑤はブラウザのオープン、クローズ
6. WebPlatform.org • Web Platform Docsというプロジェクト • Microsoft、Google、Apple、Adobe、Facebookなどが参加企業 • Webプログラミングでオープンかつ標準づくりを目指しているらしい • メインはHTML5、CSSなど 【参考】 http://www.webplatform.org/
7. 今月のScala • わが社一押し?の「Scala」情報です • 毎月、徐々に慣れていくためにScala情報を展開していこうかと思います • 日経コンピュータ9月号に関数型特集が掲載 →次の主役って題名。名古屋大学等でScalaを使用したシステムを説明 • 今月は2トピックス • Developer Contest開催(Typesafe社) • 命令型スタイルと関数型スタイル
7-1. Developer Contest • Scalaプログラミングのコンテストです • 提出期限が11月末までですが・・・ • 賞金は一位が$1,000です! • 「Typesafe Stack can do」と記述されているので「Typesafe Stack」を使うことが条件っぽい • 「Typesafe Stack」とはScalaベースで「Akka」、「Play」などが含まれるオープンソースのプラットフォーム 【参照】 http://www.typesafe.com/resources/developer-contest
7-1-1. Akka • イベント駆動ミドルウェアフレームワーク • 分散アプリケーションを作成するのに向いている(Java、Scalaで開発可能) • スレッド、ロック、非ブロッキングIOなどを意識することなく実装できる • 実装する部分はActorなどを使用して、メッセージの送受信を行う • Akka2.0ではScala2.10標準のFutureの実装が行われている →Scala2.9のFuture(Actor用)ではない 【Akkaを試しているソース】 http://www.brainsellers.com/blog/inastream/2011/08/akka.html 【Futureを試しているソース】 http://modegramming.blogspot.jp/2012/09/scala-tips-scala-2104-future2.html
7-1-2. Play • 社内システムで使用する予定のフルスタックフレームワークです • MVCモデルを実現し、「設定より規約」を重視している • Scala用ではビルドツールにsbtを採用 • 「Iteratee I/O」を実装しているため、追加設定無しでWebSocketやCometなどが可能 【Iteratee I/Oの説明】 http://d.hatena.ne.jp/tanakh/20100824#p1
7-2.命令型スタイルと関数型スタイル • Java、C++などは命令型 • Scalaは命令型、関数型の両方可能 • 例えばfor式を使う場合、関数リテラルを使用することができる • まあ、何を言っているか意味わからないと思うのでソースで説明します • 配列argsすべてを標準出力します
7-2-1. 命令型スタイル while (i < args.length) { println(args(i)) i += 1 } • 命令型の説明のためであり、Scalaで推奨される記述方法ではない • インデントは2つが推奨されているらしい
7-2-2. 関数型スタイル args.forearch(println) • この()内に関数を関数リテラルと呼ぶ • 省略しすぎなので以下の記述もできる 【パターン1】 args.forearch(arg => println(arg)) 【パターン2】 args.forearch((arg:String) => println(arg))
8. JavaEE7 • JavaOne Conferenceが9/30~10/4開催 • JavaEE7は2013/4リリース予定 • 噂されたクラウド対応は見送りっぽい • HTML5対応として「WebSocket」、HTML5ではないがJSONサポートなどが含まれる • JavaEE8以降の対応としてPaaS、NoSQLなどが予定されている →NoSQLはJPAからアクセス可能する • HTML5強化として、Avatarプロジェクトとして進めている →詳しい記事みつからない、誰か教えて・・・
8-1. WebSocketソース • Java API for WebSocket1.0のサンプル @webSocketEndPoint(path=“/ws/test”) public class WsServer { @WebSocketOpen public void onOpen(Session peer) { // 処理 } }
8-2. JSONソース • Java API for JSON 1.0のサンプル JsonObject json = new JsonBuilder() .beginArray(“emp”) .beginObject().add(“No”, “1”).add(“Name”, “John”) .beginObject().add(“No”, “2”).add(“Name”, “Mark”) .beginObject().add(“No”, “3”).add(“Name”, “HD”) .endObject() .build();
8-3. Apache TomEE • APサーバ繋がりでついでに説明 • 10/8に「Apache TomEE1.5」がリリース →JavaEE6ですけど・・・ • TomEEとはTomcat、OpenWebBeans、OpenEJB、MyFaces、Bean Validationなどで構成 →正確にはベースにしているだけっぽい • Tomcatとの違いは使っているJarなどが異なる(追加 or 削除している) →詳しくは以下のURLに載っている 【参照】http://blog.teamextension.com/comparing-apache-tomcat-and-tomee-913
8-4. Apache Lucene • いつの間にかApache繋がりに・・・ • 10/12「Apache Lucene4.0」がリリース • 同時に「Apache Solr4.0」もリリース • LuceneとはJavaで実装できる全文検索フレームワーク →日本語検索用のアナライザ(JapaneseAnalyzer)も別途用意されている • SolrとはLuceneベースのエンタープライズ対応の検索サーバー →4.0はNoSQL検索プラットフォーム • 個人的には凄い興味が10年前から・・・