タグ

Javaとjavaに関するsatoshieのブックマーク (110)

  • 【Java】JSONの基本とJSONICを使用してJSONの変換をする方法 - TASK NOTES

    Java用のシンプルかつ高機能なJSONエンコーダー/デコーダーライブラリであるJSONICの使い方です。 JSONの基 JSON とは JavaScript Object Notation の略で、構文は JavaScript におけるオブジェクトの表記法をベースとした軽量なデータ記述言語の1つです。JSONは"KEY":"VALUE"の形式で記述します。KEY として使うデータ型は文字列に限りますので、ダブルクオーテーションで囲む必要があります。シングルクォートは使えません。 JSON オブジェクト JSON オブジェクトは、波括弧の中に記述します。オブジェクトには、複数のKEY:VALUEのペアを含めることができます。これは連想配列と等価であり、Ruby ではハッシュ、Java では Map などと呼ばれています。 {"id":1, "name":"tasukujp"} JSONの

    【Java】JSONの基本とJSONICを使用してJSONの変換をする方法 - TASK NOTES
  • HttpURLConnectionを使ってPOST送信

    HttpURLConnectionを使用してPOST送信する方法です。 テキストのみの送信です。 contentBuilderの形式は一定なので、送信したいデータをHashMapに入れておいてforで繰り返すと楽かもしれません。 HashMapに入れたデータを引数で渡す形にすると、汎用クラスとして使用できます。 また、さくらサーバーではこの方法でPOSTしてもPHP側でデータを取得できません。 非常に謎です。。。 さくらサーバーに置いたPHPなどにPOSTしたい場合は、Socketを利用するとうまくいきます。 import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.U

    HttpURLConnectionを使ってPOST送信
  • attachments付きのメッセージをJavaで投稿する - Qiita

    はじめに 今回Javaで作っているプログラムでSlackに投稿したいことがありました。 GASでなら以前やったのでそこからコピペ等すれば簡単ですが、Javaでの投稿は未経験でした。 Javaでのやり方はネットを探すも見つけられなかったので記事にします。 (海外のサイトやGitHubなどを漁ればあるだろうとは思いますが。) 試行錯誤している最中のコードも載せていますが、"失敗談はどうでもいいから結果が知りたい"という人は最後の方まで飛ばしてください。 ちなみに、どうにか送れるようになるまで私は1日ほどかかりました。 失敗その1 - チャンネルがない 次のようなメソッドを実行してみました。 (JSONのインデントや改行は必須ではないと思います。) private static void testSlack(){ String json = "{\n" + " \"channel\":\"bot

    attachments付きのメッセージをJavaで投稿する - Qiita
  • Selenium WebDriverのwaitを活用しよう│ソフトウェアテストラボ|アプリテスト|スマートフォンテスト|株式会社SHIFT

    今回は、前々回に引き続きSelenium WebDriverの機能を紹介します。テーマは、UIの自動テストをしたことのある方なら誰でも悩んだことがあるであろう「wait」についてです。 こんな方におすすめ Seleniumを使って自動テストを作成していると、「自動記録させたテストコードが速く動きすぎて実行時にアプリケーションが追いつかずエラーになる」ということが当によく発生します。 特に、最近のWebアプリケーションはJavaScriptを使用した動的な要素の変更を伴うものがほとんどなので、実行時にきちんと対象要素が出てくる/消えるまで待機するという制御は必須と言っても良いでしょう。 この記事では、WebDriverで動的な要素を安定的にテストしたい人向けに待機処理の基をご紹介します。 WebDriverのwait機能 WebDriverのwait機能は、大きく ・暗黙的な待機(Imp

    Selenium WebDriverのwaitを活用しよう│ソフトウェアテストラボ|アプリテスト|スマートフォンテスト|株式会社SHIFT
  • IBM Developer

    IBM Developer
  • Javaのロガーの種類が多すぎ、一元化したい - Qiita

    Java のロガーってたくさんありますね。Guava は java.util.logging.Logger を使ってますし、Spring Framework や Apache 関連のライブラリは Apache Commons Logging を使っています。パッと用例が出て来ませんが、Log4J や、SLF4J もあります。 まとめると有名所だけでも、これだけあります: java.util.logging.Logger Apache Commons Logging Log4J SLF4J うんざりですね。 これらを依存ライブラリがバラバラに使っていると、ログレベルごとの出力制御が一元化できなかったり、ログフォーマットのバラツキが発生しやすくなり、つらいです。 上に上がっている SLF4J には、これらの出力をブリッジして1つにまとめることのができるモジュールがあります。 この記事ではこれら

    Javaのロガーの種類が多すぎ、一元化したい - Qiita
  • javaのロガーが多すぎて訳が解らないので整理してみました - 文系プログラマによるTIPSブログ

    最初は誰しもがファッ!?となるんですよねロガーって。 いずれtree-tipsで公開しようと思っている、solrのプロジェクトを今作っています。mavenでjarを管理している訳ですが・・ なんだこのロガーの数は!! commons-logging、log4j、slf4j-api、jcl-over-slf4j、logback-classic・・・・、こいつら一体何が違うんだ!どう使い分けるんだ!そもそも必要なのか!?となりました。 昔はcommons-logging+log4jというのがトレンドだった訳ですが、今はslf4j+logbackがトレンドになり、jdkも1.4から1.7になり、これらトレンドが推移する過程で、いろいろなjarが旧式に依存してしまい、旧式依存を解決するためにアダプタが登場し始め、mavenでjarを収集すると大抵両方入ってしまい、カオスになっているのです。 特にs

    javaのロガーが多すぎて訳が解らないので整理してみました - 文系プログラマによるTIPSブログ
  • MavenをEclipseで使いたい初学者のトラブル例 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    MavenをEclipseで使いたい初学者のトラブル例 - Qiita
  • 5. スレッドの同期 (2)

    5.2. スレッド間の待ち合わせ 複数のスレッドが協調して処理を行う場合、あるスレッドの部分処理が終了するのを、もう一方のスレッドが待機したい場合があります。そのようなとき、java.lang.Objectクラスのwait/notify/notifyAllメソッドを使用します。 wait() waitメソッドは、notifyまたはnotifyAllメソッドが呼び出されるまで処理を待機するメソッドです。waitメソッドを呼び出すためには、スレッドは該当するオブジェクトのロックを取得していなければいけません。 notify()/notifyAll() notifyおよびnotifyAllメソッドは、waitメソッドによって待機状態にあるスレッドの実行を再開させるメソッドです。あるオブジェクトに関して、waitメソッドで待機しているスレッドの集合のことを「ウェイトセット」と呼びます。notify

  • Java の ExecutorService の使い方 - Java 入門

    Java の ExecutorService でスレッドプールを利用できる ここで説明するのは、おそらくもっとも安全にマルチスレッドプログラムを書く方法です。 さらに同様の方法で簡単に拡張することで、複数のスレッドを効率よく使うスレッドプール (Thread Pool) を利用できますので、 ぜひ覚えておきたい方法です。 その方法とは、 ExecutorService を利用することです。 ExecutorService では、 「Java のマルチスレッド・プログラミングの基」 でみたように Thread オブジェクトをそのまま生では使いません。 ExecutorService ではスレッドプールが用意されるので、そこにタスクがディスパッチされることで処理が行われます。 Java のタスクの状態 Executor によって処理されるタスクの状態は次の四つです。 created (作成さ

    Java の ExecutorService の使い方 - Java 入門
  • ExecutorServiceを使って、Javaでマルチスレッド処理 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    ExecutorServiceを使って、Javaでマルチスレッド処理 - Qiita
  • 5. スレッドの同期

    5.1. 他のスレッドの終了を待つ 別のスレッドにある処理を任せ、そのスレッドが終了したときに、自分のスレッドの処理を再開したいという場面があります。このようなとき、Threadクラスのjoinメソッドを利用します。 joinメソッドには、引数の異なる3つのメソッドがあります。 void join() void join(long millis) void join(long millis, int nanos) join()は該当のスレッドが終了するのを永久に待ちつづけます。引数のあるものは、該当のスレッドが終了しなくても、指定した時間経過すれば処理を再開します(ただし、join(0)はjoin()と同じように永遠に待機します)。いずれのメソッドも、外部のスレッドよりinterruptメソッドで割り込まれた場合、InterruptedExceptionを発生して処理を終了します。 次のプ

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

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

    Javaのパフォーマンスについての9つの誤信
  • Thread.start()実行をやめよう。「ExecutorService」でスレッド管理が簡単に。 : Javaありがたや

    Thread.start()実行をやめよう。「ExecutorService」でスレッド管理が簡単に。 : Javaありがたや
  • Androidの非同期処理の話 - Qiita

    Help us understand the problem. What is going on with this article? 非同期処理でよく使う IntentService と AsyncTask は何が違って何が同じなのかという記事を読んだので。 HandlerThreadについて HandlerThreadは、内部に持っているHandlerにメッセージが渡ってきた時、それを順に処理するようできているので、メッセージを同時に複数送ると、ジョブキューのようにシリアルな動作で、メッセージを1つずつ捌いていきます。 これはHandlerThreadのコードを読むのが早いのですが(凄く短いので)、このクラスはイベントループに紐付けるための定型処理のある、ただのThreadのサブクラスです。なので、内部に持っているのは、Handler(メッセージ)ではなく、Looper(イベントループ

    Androidの非同期処理の話 - Qiita
  • 幸せな非同期処理ライフを満喫するための基礎から応用まで - Qiita

    クライアントアプリにとって、マルチスレッドプログラミングは避けては通れない重要な概念です。しかし、気をつけないとハマるポイントも多く、初めてクライアントアプリを学ぶ人たちからすると、複雑で難解な取っつきづらいものでもあります。ここでは、スレッドの基から、効率的な使い方、また複雑化しやすいポイントをシンプルに実装するためのノウハウを見ていきます。 TL;DR スレッドの取り扱い方を知る Threadをそのまま使わず、AsyncTaskやIntentService、時にThreadPoolExecutorを使ってスレッドの使い方を効率化する。 複雑な処理フローをシンプルに扱うためのフレームワークを導入する PromiseやRxAndroidなどで、複雑化しやすいポイントを整理する。 スレッドの基 スレッドといえば、ThreadクラスやRunnableクラスがベースにあります。以下のようにす

    幸せな非同期処理ライフを満喫するための基礎から応用まで - Qiita
  • Javaでスレッドセーフなコレクションクラスを作る - Qiita

    つい最近までは、スレッドセーフなハッシュマップやリストはjava.util.concurrentのConcurrentHashMapなどで作るもんだと思っていたけど、スレッドセーフなコレクションクラスをどのように定義すれば良いか調べていたら最新のバージョンではCollections.synchronized***で作るのが良いらしい。ということで、簡単すぎるけど、例を紹介して備忘録とする。もちろん、中身はLinkedListなどでも良く、必要なデータ型の特性に合わせて使い分けることができる。ちょっと便利になった気がする。同時にVectorがもはや後方互換のためだけに存在することを知って、愕然としている。学生時代とはずいぶんと変わったものだ。 import java.util.Collections; … List<Integer> sampleList = Collections.sync

    Javaでスレッドセーフなコレクションクラスを作る - Qiita
  • マルチスレッドの同期

    C言語やPerlのfork&execのように、プロセスを同時に実行したり、同期を取るために待ち合わせる処理を行ってみましょう。 Java言語では、マルチスレッド機能が言語に含まれるため、比較的きれいにプログラムできます。 Javaの場合、2スレッドの同期と、3スレッド以上の同期で、処理が異なります。 マルチスレッドプログラミングも参照してください。 2スレッドの同期 2つのスレッド間の同期は、joinメソッドを使って、より簡単に実現できます。 子スレッドを起動し並行処理を行い、親スレッドが子スレッドの終了を待って、次の処理を行うプログラムを作成してみます。 処理内容は、Hello World!を表示するだけですが、スレッド名も表示するようにしています。 各スレッドの処理の流れは、以下のようになります。 親スレッドは、joinメソッドで、子スレッドが終了するまで待ちます。 親スレッド 子スレ

  • Javaパフォーマンス計測 そんなタイマーで大丈夫か? - プログラマーの脳みそ

    駄目だ。大問題だ。 long t1 = System.currentTimeMillis(); long t2 = System.currentTimeMillis(); System.out.println(t2-t1); 結果はなんとでるか? 99.9%以上の確率で0が表示される。そもそもSystem.currentTimeMillis()は時刻をミリ秒で返す。1行のプログラムを実行するのに1ミリ秒もかかってたら、たかだか1000行分動いただけで1秒かかってしまう。今のコンピュータはそんなに遅くない。 そもそもドキュメントをちゃんと読むと ミリ秒で表される現在の時間を返します。戻り値の時間単位はミリ秒ですが、値の粒度は基となるオペレーティングシステムによって異なり、単位がより大きくなる場合があります。たとえば、多くのオペレーティングシステムでは、時間を 10 ミリ秒の単位で計測します

    Javaパフォーマンス計測 そんなタイマーで大丈夫か? - プログラマーの脳みそ
  • Java+SeleniumなWebアプリケーションの自動テストプロジェクト構築 - Qiita

    システムの開発とか他人の作ったシステムの運用をする中で、サービスの外面だけでも動いているかどうかが常にチェックされているとすごく精神的に安定することがわかってきたので、受け入れテスト的なレベルのテストコードはとりあえずでも積極的に書いていきたいわけです。 1年くらい前に書いたWebアプリケーションを引っ張り出さなければならないことがあったわけですが、このときSeleniumでブラウザを使った自動テストを書いていたおかげで、自動テストで動くChromeの画面を眺めて「ああ、そうそう、こういう操作感のUIだったわ」みたいに思い出せたりします。何よりコードとして自動化されていれば、いつでも動かしておけて、それで安心した分睡眠の質が高まることが期待できます。多分。 そんな中で、ここ最近運用に加わったサービスのテスト、まだあんまり書けてないじゃんと気づいて、JavaかつMavenでSeleniumの

    Java+SeleniumなWebアプリケーションの自動テストプロジェクト構築 - Qiita