タグ

ブックマーク / kazuhira-r.hatenablog.com (18)

  • Node.jsのフレームワーク、Expressを使ってRESTサーバーを書いてみる - CLOVER🍀

    Node.jsを使って、ちょっとREST APIが作れるフレームワークを試してみようと思いまして。 Expressというフレームワークがスタンダードらしいので、これを試してみることにします。 Express ドキュメントをざっと見た感じ、シンプルで使いやすそうな雰囲気が? 以前にNode.jsのhttpモジュールを使って試したようなこと(JSONを受け取って四則演算を行うAPIを作ってみる)を、Expressを使って書いてみましょう。 Node.jsで、JSONをPOSTするHttpClient/受けるHttpServerを書いてみる - CLOVER🍀 環境 対象の環境は、このようになっています。 $ node -v v9.5.0 $ npm -v 5.6.0 準備 とりあえず、チュートリアルを見ながらインストール。 Installing $ npm install --save ex

    Node.jsのフレームワーク、Expressを使ってRESTサーバーを書いてみる - CLOVER🍀
  • Emacsでインストールしたパッケージを一括でアップデートする - CLOVER🍀

    M-x list-packages(package-list-packages)を実行した上で、「U」から「x」。 参考) emacsのパッケージを更新する方法 package-utils.el : パッケージを簡単にアップグレード・削除する Emacs のパッケージ管理機能の使い方 | プログラマーズ雑記帳

    Emacsでインストールしたパッケージを一括でアップデートする - CLOVER🍀
  • Node.jsで、Echo Client/Serverを書いてみる - CLOVER🍀

    ちょっとした、Node.jsのお勉強にということで。Echo ServerとClientを書いてみることにしました。標準APIで。 環境。 $ node -v v8.4.0 ふつうにTCPソケットを扱いたいので、netモジュールを使えばいい感じでしょうかね。 Net | Node.js v8.11.4 Documentation APIドキュメント中にサンプルコードもあることですし、こちらを参考にしてみましょう。 net.createServer net.createConnection では、書いていってみます。 Server側 書いてみたコードは、こんな感じ。第1引数でListen Portを受け取るようにしました。 server.js const net = require("net"); const args = process.argv.slice(2); const port

    Node.jsで、Echo Client/Serverを書いてみる - CLOVER🍀
  • RabbitMQのJavaScriptクライアントで遊ぶ - CLOVER🍀

    ふと、RabbitMQに対して、JavaScript(Node.js)クライアントからアクセスしてみたくなりまして。 RabbitMQのチュートリアルにある、こちらの2つを自分でも動かしてみることにしました。 RabbitMQ - RabbitMQ tutorial - Work Queues RabbitMQ - RabbitMQ tutorial - Publish/Subscribe Work Queueでは2つのConsumerが交互にメッセージを受け取るパターン、Publish/Subscribeでは2つのConsumerが同じメッセージを受け取るパターンの チュートリアルです。 環境 Node.jsのバージョンは、以下のとおり。 $ node -v v8.4.0 $ npm -v 5.3.0 RabbitMQへのアクセスは、amqp.nodeを使います。 インストール。 $ n

    RabbitMQのJavaScriptクライアントで遊ぶ - CLOVER🍀
  • Clojureの忘れっぽいrequire、use、import - CLOVER🍀

    Clojureでプログラムを書くと、当然のように使うrequire、use、importの各関数/マクロですが、なんかよく忘れるのでメモっておこうかと。 require関数 Clojureのライブラリをロードするための関数。こういう感じで使います。 (require 'clojure.string) 単独のライブラリをロードする場合は、先頭に「'」が付くと…。 複数ロードする場合は、純粋に繋げばOK。 (require 'clojure.string 'clojure.data) まあ、requireを複数行ってもいいですけど。 requireすると、こんな感じでライブラリの呼び出しが可能に。 (clojure.string/join \, ["Hello" "World"]) 長いよ!っていう場合は、「:as」キーワードを付与することで別名を付けることができます。 (require '[

    Clojureの忘れっぽいrequire、use、import - CLOVER🍀
  • Clojureでコードのロード系関数+evalを扱う - CLOVER🍀

    少し前にこういうエントリを書きました。その後、元にしたブログのエントリを見ていると、evalとかそういう方向に流れていて、この時に自分が取った方法は随分と遠回りだったことがわかりました。 つか、evalの発想がなかった…。まだまだ考え方は静的言語ってことですね。 まあ、せっかくなので、コード片とかをロードする関数群とevalを触ってみようと思います。 なお、ファイル読み込み系の関数で使用するスケープゴートとしては、以下のものを用意しています。 foo.clj (defn bar [] (println "Hello Foo Bar")) このファイルをカレントディレクトリに置いた状態で、サンプルコードを実行していきます。 load いきなり、変なのから入ります(笑)。名前からして、ファイルからコードを読み込む関数かと思いきや、そうではなく、引数で指定された文字列に対応するものを、クラスパス

    Clojureでコードのロード系関数+evalを扱う - CLOVER🍀
  • 実行時にクラスパスを追加する - CLOVER🍀

    仕事中に、ユニットテストをやっていて実行時に動的にクラスパスを追加したくなる状況がありまして、その時に使った処置。 通常なら、ClassLoaderを作ってそこへのロード対象のURLを与えてどうにかするところでしょうが、既存のClassLoaderに追加したいということがありまして…。 これを行うこと自体が良いことだとは思っていないので、あくまでテストコードとかちょっとしたスクリプト的な使い方をする時のみの利用になるんでしょうけどね。 例として、別々のディレクトリに配置されたClassから、他のディレクトリに配置したクラスを呼び出すとしましょう。 まず、起動元となるmainメソッドを持つクラス。 src/a/AClass.java package a; import java.io.File; import java.lang.reflect.Method; import java.net

    実行時にクラスパスを追加する - CLOVER🍀
    hikazoh
    hikazoh 2017/04/10
  • jBatch(Chunk方式)のトランザクションの開始/コミットタイミングを確認する - CLOVER🍀

    jBatchを見ていて、ちょっと気になったのがトランザクション管理。 いつ開始されて、いつコミットされるのでしょう? 日語情報だと、このあたりに記載がありました。 Chunk方式のStepを使ってみる Jbatch実践入門 #jdt2015 どうも、Chunk方式の場合にトランザクション管理が行われるようです。 まあ、JSRを見るのがよさそうですね。 The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 352 JSR-352の、「11 Job Runtime Lifecycle」を見ると、Batchlet/Chunkの場合それぞれのジョブのライフサイクルが書かれていますが、ここで見てもトランザクション管理が行われているのは、Chunk方式みたいですね。 「11.6

    jBatch(Chunk方式)のトランザクションの開始/コミットタイミングを確認する - CLOVER🍀
  • jBatchのChunk方式を動かしてみる - CLOVER🍀

    最近、こちらのを読んでみまして、久しぶりにjBatchを触ってみたいなぁと思いまして。 Java EE 7徹底入門 標準Javaフレームワークによる高信頼性Webシステムの構築 作者: 寺田佳央,猪瀬淳,加藤田益嗣,羽生田恒永,梶浦美咲出版社/メーカー: 翔泳社発売日: 2015/12/22メディア: Kindle版この商品を含むブログ (6件) を見る 以前、少しだけ触っていたのですが、とりあえず軽くBatchletを試しただけで、そこで終わっていました。 せっかくを読んで興味を持ったので、どこまでやるかは微妙ですが、もう少しやってみようかなと。 まずは、Chunk方式でjBatchを書いたことが使ったことがないので、こちらから書いてみようと思います。 Chunk方式でjBatchを使う時は、ItemReader、ItemProcessor、ItemWrierの3つを実装するようです

    jBatchのChunk方式を動かしてみる - CLOVER🍀
  • RESTEasy+Netty(Netty 3/Netty 4/Netty 4 with CDI)で遊ぶ - CLOVER🍀

    RESTEasyのEmbedded Containerですが、以前JDK HttpServerとUndertowを試していましたのですけれど、Nettyがいるのが最近気になっていまして、ちょっと遊んでみることにしました。 Chapter 36. Embedded Containers / 36.4. Netty ただ、ドキュメントに載っているのはNetty 3のみで、実際にはNetty関連のRESTEasyのモジュールとしては、以下の3種類があります。 resteasy-netty(Netty 3) resteasy-netty4(Netty 4) resteasy-netty4(Netty 4+CDI) 最後のは、CDIサポートが付いたものですね。 順番に、試していってみます。なお、コードはScalaで書きます。 Netty 3 最初は、Netty 3から。依存関係は、このように定義。

    RESTEasy+Netty(Netty 3/Netty 4/Netty 4 with CDI)で遊ぶ - CLOVER🍀
  • Apache TikaでPDFを読む - CLOVER🍀

    ちょっと、PDFファイルをJavaで読む必要にかられまして。 JavaPDFを読むには、Apache Tikaを使用するのが良さそうだったので、こちらを試してみました。 Apache Tika – Apache Tika Apache Tikaとは? 様々なファイルフォーマットから、メタデータやテキストを抽出することのできるライブラリ/Toolkitのようです。 The Apache Tika toolkit detects and extracts metadata and text from over a thousand different file types (such as PPT, XLS, and PDF). All of these file types can be parsed through a single interface, making Tika usef

    Apache TikaでPDFを読む - CLOVER🍀
    hikazoh
    hikazoh 2015/10/18
    [Tika
  • MySQL+Connector/Jを使って、大量データのSELECT⇒INSERTした時の挙動を確認する - CLOVER🍀

    MySQLとそのJDBCドライバ(Connnector/J)を使った時の困った罠について、こちらによくまとまったエントリがございまして。 MySQL Connector/J (JDBC ドライバ)の罠まとめ - ~saiya/hatenablog で、この中でもちょっと気になるもの SELECT 結果は全部メモリに載ってしまう (デフォルト設定で) http://saiya-moebius.hatenablog.com/entry/2014/08/20/230445 について、自分でも確認してみたいと思います。 いや、全部メモリに乗ることは知っていましたし、ResultSetTypeやFetchSizeを指定すればいいのも知っていましたが、その指定をした場合にResultSetの全部の行を読まないといけないことはよく理解していなかったので…。 これを機に、自分でも見てみたいと思います! な

    MySQL+Connector/Jを使って、大量データのSELECT⇒INSERTした時の挙動を確認する - CLOVER🍀
  • webpackを使ってJavaScriptのビルド/minify(+Bower) - CLOVER🍀

    最近のフロントエンド事情には全然詳しくないのですが、ちょっと以下のようなことをやろうかなと思いまして。 複数のJavaScriptをまとめたい まとめたJavaScriptはminifyしたい SourceMapも作成したい Bowerを使って依存関係も解決したい Bowerで解決しようとしているのは、他に手段をよく知らないのとクライアントサイドのJavaScriptの依存関係を書くのは、Bowerが一般的なのかなと思いまして。 で、こういうことをやろうとした時、webpackとBrowserifyが目につくのですが、今回はwebpackでやってみました。 webpack module bundler 以降に、やったことを書いていきます。なお、Bowerで引き込むライブラリは、jQueryとします。 あとで、Browseriry版も書きました。 Broserifyを使ってJavaScrip

    webpackを使ってJavaScriptのビルド/minify(+Bower) - CLOVER🍀
  • JCacheのCacheEntryListenerを試す - CLOVER🍀

    JCacheには、Cacheに対する各種操作(put/removeなど)、そして有効期限切れ時のイベントに対して反応するListenerを設定することができます。 Listenerを作成するには、通知を受けたいイベントに応じたCacheEntryListenerのサブインターフェースを実装したクラスを作成し、Cache作成時、もしくはCache作成後に設定します。 それでは、順に見ていってみます。 イベントとCacheEntryListenerのサブインターフェース 通知を受けたいイベントに応じたCacheEntryListenerのサブインターフェースを実装する必要があると書きましたが、具体的には以下のようなバリエーションになります。 イベントの種類 意味 対応するCacheEntryListenerのサブインターフェース 実装するメソッド CREATED Cacheエントリが作成された

    JCacheのCacheEntryListenerを試す - CLOVER🍀
  • はじめてのjBatch - CLOVER🍀

    このあたりのエントリを見て、ちょっとやってみようかなぁと思いまして。 JSR352-Batch Applicationを試してみた(Batchlet編) http://siosio.hatenablog.com/entry/2015/06/06/011830 JSR352-Batch Applicationを試してみた(BatchletでDBアクセス-JPA編) http://siosio.hatenablog.com/entry/2015/06/07/151425 その他、ちょっと目を通したのはこのあたり。 Jbatch実践入門 #jdt2015 http://www.slideshare.net/agetsuma/jbatch-jdt2015 The Java EE 7 TutorialのjBatchの章をテキトーに訳した http://kagamihoge.hatenablog.co

    はじめてのjBatch - CLOVER🍀
  • WildFlyにMySQL DataSourceを、JDBCドライバをデプロイして作成する - CLOVER🍀

    WildFlyにJDBCドライバをデプロイしたうえで、DataSourceを作成したことがなかったのでメモ。 今までは、いつもカスタムモジュールとしてインストールしていました。 今回の対象は、WildFly 8.2.0.Final、MySQL(JDBCドライバのバージョンは5.1.35)とします。あと、作るのは非XA DataSourceです。 WildFlyを起動。 $ wildfly-8.2.0.Final/bin/standalone.sh 管理CLIに接続。 $ wildfly-8.2.0.Final/bin/jboss-cli.sh -c [standalone@localhost:9990 /] JDBCドライバをデプロイ。 [standalone@localhost:9990 /] deploy /path/to/mysql-connector-java-5.1.35-bin

    WildFlyにMySQL DataSourceを、JDBCドライバをデプロイして作成する - CLOVER🍀
  • 組み込みTomcatでJAX-RS(RESTEasy)とCDIを使う - CLOVER🍀

    ちょっと思い立って、なんとなくやってみたくなりまして。 組み込みTomcat上で、JAX-RSとCDIを合わせて使ってみようというお話。これを試すにあたり、条件は以下とします。 JAX-RSの実装はRESTEasy、CDIの実装はWeld WEB-INF/classesとかは作らない Scalaで書く とまあ、あくまで普通のスタンドアロンなJavaアプリのノリでいきます。組み込みTomcat使うわけですし…。 で、やってみていろいろ苦労しましたが…参考にした情報も載せながら書いてきたいと思います。 ビルド定義 まずは、sbtの定義。こんな感じになりました。 build.sbt name := "embedded-tomcat-jaxrs-cdi" version := "0.0.1-SNAPSHOT" organization := "org.littlewings" scalaVersi

    組み込みTomcatでJAX-RS(RESTEasy)とCDIを使う - CLOVER🍀
  • Clojureの並列処理関連の関数 - CLOVER🍀

    Clojureで並列・並行処理といえばSTMやエージェントが有名だと思いますが、お手軽な関数も用意されているみたいなので、調べてみました。 pmap map関数の並列版です。与えたシーケンスに対して、関数を並列に適用してくれます。 (time (println (let [sleep-and-double (fn [v] (Thread/sleep 3000) (* 2 v))] (pmap sleep-and-double (range 1 6))))) ;; => (2 4 6 8 10) "Elapsed time: 3058.024539 msecs" (shutdown-agents) 少し前にこの関数を使ったエントリを書きましたが、どうもシーケンスの数だけスレッドが起動するっぽいので、その点は注意が必要そうです。 あと、裏でエージェントを使っているようなので、shutdown-

    Clojureの並列処理関連の関数 - CLOVER🍀
  • 1