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
JAWS Festa 東海道 2016 の登壇資料です。 こちらもご参照ください → https://gs2.io/
前回、前々回と2回に渡って、ストリームの基本的な使い方について説明してきました。 とはいうものの、いざストリームを使おうとしても、なかなかすんなりとはいかないのも仕方がないところです。今までのJavaのプログラミングスタイルからすると、ストリームのスタイルは大きく異なります。特に関数を用いて処理を指定していく方法は、今までのJavaではあまりありませんでした。 このスタイルは本連載の「Java SE 8のラムダ式はどうやって活用するか」で紹介した、高階関数を用いた関心の分離に他なりません。 そこで、今回は様々な処理をストリームで行うことにより、ストリームを使う上での考え方を紹介していきます。 条件に合致するものに対して処理を行う 拡張for文を使用してリスト1のような処理を書くことはありませんか。 リスト1●条件に合致した要素に対し処理を行う List<String> elements =
はじめに Elasticsearch検証担当の藤本です。 概要 ElasticsearchはSuggesterというサジェストを実装するための検索APIを提供しています。 検索方法は単純な文字列の一致だけでなく、Elasticsearch(Lucene)が持つ検索エンジンを活用でき、RDMS+ロジックによりゴリゴリ実装せずとも、よりユーザーが望む検索結果、結果順序を提供することができます。 今回はSuggesterの内、Completion Suggestterで実装しましたが、Suggesterは複数あり、更には設定オプションも豊富なため、多くの要件を満たせるでしょう。 ちなみに現在(v2.1)、SuggesterはCompletion suggester含め、4つ提供されています。 Term suggester Phrase suggester Completion suggester
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 1年半ほど前に書いたこちらの記事、タイミングが良かったのか naoya 砲なのか分かりませんが、色んな方に読んで頂けたようです。 しかし、「放置可能なサービス」というタイトルに反し、この記事で作成した楷書体サービス、とうとうメンテを行うことになりました。 理由は、node v0.10 のサポートを Lambda が打ち切るためです。 コードそのまま node v6 で動かせるとは思いますが、それでも放置できなかったことには変わりありません。謹んでお詫び申し上げます。 いやまぁ1年半もメンテナンスせずに動いてたんだからすごいじゃんと思う。
var aws = require('aws-sdk'); var cloudsearchdomain = new aws.CloudSearchDomain({ endpoint: '<CloudSearchのエンドポイント>' }); exports.handler = function(event, context) { var params = { query:event.q }; cloudsearchdomain.search(params, function(err, data) { if (err) { console.log("error " + err); } else { if (data.hits.found > 0) { console.log(data.hits.hit[0]); context.done(null, data.hits.hit[0]); } e
「大きく進化したJava SE 8は企業に多くのメリットをもたらす。プロジェクト・マネジャーやアーキテクトも、今すぐ移行に取り掛かるべき」と訴えるJavaエバンジェリストの寺田佳央氏。ラムダ式とストリームAPIを例にとり、Java SE 8によるプログラミングの特徴と利点を語った。 2014年3月にリリースされた「Java SE 8」の大きな変更点の1つは、新たな言語機能として「ラムダ式(Lambda Expressions)」が導入されたことだ。同機能を使うことで、開発者は従来よりも効率的にプログラムを書けるようになる。また、併せて導入された「ストリームAPI(Stream API)」を使用することで並列処理の実装が容易となり、マルチコア・プロセッサの能力を生かしたハイパフォーマンスなアプリケーションを迅速に作れるようになる。 日本オラクルのJavaエバンジェリスト 寺田佳央氏は、企業の
この両者は、似ているようでいて、基本的には別モノです。表にしてみます。 Groovyのクロージャ java8のlambda式 導入時期 2003年 2014年03月 ローカル変数へのアクセス 読み書き可能 実質的にfinal(変数そのものに対しては読み込みのみ) 実装方法 Closure型のインスタンス MethodHandle, invokeDynamic.. 型推論の根拠 Closure<T>のTで返り値、@ClosureParamsで引数 FunctionalInterface(SAM型) 記法 { 引数 -> 本体 } { 本体 } {-> 本体 } (引数) -> { 本体 } (引数) -> 式 () -> { 本体 } 暗黙の動的なthis delegateにより実現 - 性能 ローカル変数をenclosingするため間接参照にするためのオーバーヘッドあり 性能上のオーバーヘ
このクリスマスシーズンにサンタも驚きな具合で結構バズっているAWS Lambdaですが、皆さん結構色々作っているので、なんかネタを追い求めるのもしんどいので、ここまでで見えてきた利用パターンやユースケースをまとめてみたいと思います。 Lambdaを誤解を恐れずに言うのであれば、クラウド上でのイベント駆動を実現するためのAWSネイティブな実行基盤です。なんかクラウドネイティブな実行基盤が駄目な方は、ぐだぐだ言わず普通にEC2でやってればよいと思います。イメージとしては下記のような形になります。今までは利用者側がポーリングして聞かなくては行けないところが、クラウド上のリソース提供の各サービスが逆に呼んでくれるところがポイントです。 では何個かパターンをみてみましょうか。 パターン1 : データソースからメタデータを引き出して利用しやすくする これがもっとも多い利用パターンだとおもいますが、S3
AWS re:Invent 2014で発表された新サービスAWS Lambda。 先日Limited Previewの申請が通ったので早速Lambda使って何かできないかと思い、Webサイトの監視をLambdaを使って実現してみました。 5分間隔で指定したサイトを監視し、400、500系のレスポンスが帰ってきた場合は、SNSに異常状態である旨メッセージ通知をします。 LambdaはS3上のファイルの変更やKinesisに届いたメッセージ、DynamoDBへのデータの更新といったイベントに反応して任意のコードを実行できるプラットフォームです。Lambda自体に定時処理を行うような仕組みは用意されていないので、Lambda Function内部でS3にオブジェクトをPUTすることでLambda Functionの実行をループします。 処理は↓のステップで行います。 site-監視時刻ミリ秒(例
本日は日本Javaユーザーグループ(JJUG)主催のクロスコミュニティカンファレンス2014春に参加してきました。今日の日記は、参加内容のまとめではなく、参加して得たことやそれをきっかけに考えたことなどをだらだらと書き連ねます。 Java SE 8では、forEach書いたら負け、for文禁止 日記のタイトルは、午前のセッション「K-1 詳説 Java SE 8 – CCC Edition」で出た話題です。手続き的なロジックを書いて、ネストが深く制御構造が複雑になってしまう人向けにはJava SE 8で導入されたラムダ式とStream APIを使って、内部イテレータと関数型プログラミングのエッセンスを取り入れた書き方をするといいよ、という話から出た言葉です。 実は昨日開催したJava読書会(「Java 8 Lambdas」を読む会)でも、「for文は禁止だ!」という話題が出てました。for
今回から、具体的なJava SE 8の新機能について紹介していきます。はじめに紹介するのは、やはりJava SE 8の機能の中で最も注目されているProject Lambdaです。 とはいっても、Project Lambdaで策定している仕様を1回で紹介するには範囲が広過ぎます。そこで、今回はProject Lambdaの中で、最も基本的な部分であるラムダ式を中心に紹介していきます。 Project Lambdaの成り立ち 前回、紹介したようにJava SE 7のリリースが遅れた要因の1つに、Project Lambdaがあります。 Project Lambdaの成り立ちについては、本連載の2010年3月の「クロージャからProject Lambdaへ」で言及しました。しかし、それから随分時間が経ってしまいましたし、その後もやはり紆余曲折あったので、改めてここでまとめてみましょう。 Pro
仕事でLogを調査することがあったので、Logについて復習しました。 id:skrbさんの記事J2SE, v1.4 の新機能 Logging APIを参考にさせていただきました。 でちょっとJDK8とJDK7を使ってログを表示するコードを実装してみました。 ・ログレベルの日本語がJDK7の時より改善されている?(JDK7では日本語と英語が混在していました) ・クラス名、メソッド名がJDK7より変わっている(クラス名はJDK7ではインナークラス、メソッド名がJDK8では「lambda$0」) version code1(JDK8) Logging sample(JDK8) · GitHub 実行結果1(JDK8) version code1(JDK7) Log sample(by using JDK7) · GitHub 実行結果1(JDK7) それとJDK8でFunctionalInter
遅延評価については以前も書いてるんですが、そのときは結論なしでした。 が、ちょっと考えるところがあって、言語を Java に絞って自分の考えを明確にしておきます。 結論から書きましょう。 「Java(とC#) で遅延評価って書いてあるものは遅延評価ではない」です。 Java における「評価」とは まず一番最初に、Java で「評価」って言うと、どういうことを指すのかを確認しておきます。 言語仕様の該当部分を要約すると、こんな感じでしょうか。 プログラム中の式を評価すると、結果は 変数 値 無し のうちのどれかとなる。 評価した結果が値になる、というのはいいでしょう。それ以外の 2 つを軽く説明します。 評価の結果が「変数」とは? コメント欄で指摘が入っています。 代入の結果は変数ではありません(15.26)。 結果が変数となるのは、ローカル変数、現在のオブジェクトやクラスの変数、フィールド
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く