タグ

Javaに関するura_raのブックマーク (109)

  • マルチコア時代のプログラマは関数脳になろう〜Java8のススメ〜 - Tech-Sketch

    CPUのクロックアップに限界が訪れ、マルチコア化することで処理性能向上を目指す時代になりました。これからのプログラマには、マルチコアで処理性能が向上するプログラム=マルチスレッドで並列処理が可能なプログラムを書く能力が必要になります。今回は「関数型」でプログラムを書くことによって、いとも簡単に並列化ができることを実例を元に解説します。 関数型プログラミングと並列処理 「関数型でプログラムを書くことで簡単に並列化できる」と書きましたが、そもそもここで言う「関数」とは何なのでしょうか? 関数型プログラミングの特徴 関数型プログラミングの「関数」を理解するためには、数学における「関数」を想像するとわかりやすいでしょう。 例えば三角関数を用いた y=cos(x) という式を考えてみます。この式に入力値 x=0 を与えた場合、いつでも必ず結果は y=1 になります。x= π/3 の場合は y =

  • メールに関連した開発のお供に。Java製ダミーメールサーバ·FakeSMTP MOONGIFT

    FakeSMTPはJava製、マルチプラットフォームで使えるダミーのSMTPサーバです。 テスト用にダミーのSMTPサーバが必要になったらFakeSMTPを使ってみましょう。Java製なのでマルチプラットフォームで使えて便利です。 メイン画面です。サービスを開始します。 開始しました。この状態でプログラムからメールを送ってみます。 リストに送信したメールがあがってきます。 ダブルクリックで文が読めます。 ログです。 最後のメッセージは細かく見られます。 実際のメールアドレスを使って開発していて、間違って一括メール送信してしまったなどといったら目も当てられません。FakeSMTPを立てて決してメール送信されないようにしておけば安全に開発、運用ができるでしょう。 FakeSMTPはJava製のオープンソース・ソフトウェア(BSD License)です。 MOONGIFTはこう見る メール周り

    メールに関連した開発のお供に。Java製ダミーメールサーバ·FakeSMTP MOONGIFT
  • Codespell – Java言語がそのまま呪文となる教育用3Dゲーム

    カリフォルニア大学サン・ディエゴ校の計算機科学者達が開発した Codespell は、一人称視点の3Dゲームなのですが、その一番の特徴は、プレイすることでJavaプログラミングを身につけられるという点です。 Codesp […] カリフォルニア大学サン・ディエゴ校の計算機科学者達が開発した Codespell は、一人称視点の3Dゲームなのですが、その一番の特徴は、プレイすることでJavaプログラミングを身につけられるという点です。 Codespellでは、プレイヤーは小動物ノーム(gnome)たちが住む土地にやってきた魔法使いです。ノーム達は過去に魔法を使って生活していたのですが、今は魔法をうまく使えなくなっています。魔法の呪文はJava言語プログラムで、物体を浮遊させるとか火を起こすといった7つの手持ちの呪文を使って、ノーム達を助け、火を消したり川を渡ったりといったクエストを解き、バッ

    Codespell – Java言語がそのまま呪文となる教育用3Dゲーム
  • 第5回 チューニングのために理解しておきたいGCの4つのアルゴリズム | gihyo.jp

    なぜアルゴリズムを学ぶのか GCによる停止時間が長くなり、アプリケーションの処理時間が短くなると、業務に使える時間が短くなってしまいます。その問題を解決するために、GCをチューニングすることで、アプリケーションの停止時間を短くすることが考えられます。 その際大事なのは、GCのアルゴルズムを把握しておくことです。 GCのチューニングを行うときは、GCで行われている処理の内、どの処理に時間がかかっているかをモニタリング⇒分析⇒チューニングする、という流れになります。しかし、GCのアルゴリズムを知らないと、モニタリング結果を見てもどこに問題があるかがわからず、分析やチューニングを行うことができません。 今回は、以下の4つのアルゴリズムをご紹介します。 マーク&スイープGC コンパクション コピーGC 世代別GC GCのアルゴリズムはJVMの実装によって異なりますが、多くの場合、上記4つのアルゴリ

    第5回 チューニングのために理解しておきたいGCの4つのアルゴリズム | gihyo.jp
    ura_ra
    ura_ra 2013/03/28
  • JAX-RSはHTML Webアプリケーションを開発するのに充分なフレームワークであるか? - AOEの日記

    JavaEEでのWebアプリケーション開発フレームワークと言えばJSFですが、JSFデスクトップGUIの開発スタイルに似せた、コンポーネントベース、イベントドリブンなフレームワークであるため、拒否反応を示す人も多いようです。 で、フロントコントローラー型のフレームワーク (StrutsやRuby on Railsなど) が必要な人への選択肢をJavaEEは提供していないのか? ということになるのですが、JAX-RSがこの役割に向いているのではないかと言われています。 でも、基的にRestful Webサービスを開発するためのJAX-RSがHTML Webアプリケーションの開発に当に使えるのか、疑問に思っている人も多いと思います。 最近JAX-RSを使ってRestful Webサービスのみならず、HTMLを返却するWebアプリケーションの開発にも使ってみる機会があったので、そこで分かっ

    JAX-RSはHTML Webアプリケーションを開発するのに充分なフレームワークであるか? - AOEの日記
  • Javaのジェネリクスでハマった件について - 電脳徒然日記

    抽象基底クラスにcompareToメソッドの実装を持たせた以下のような クラス定義を行った場合にHogeListHolderがコンパイルエラーとなります。 原因はHogeクラスはComparableEntityの継承クラスではなく ComparableHogeの継承クラスと判断されるからです。 ・HogeListHolderがコンパイルエラーになったケース public interface ComparableEntity<T> extends Comparable<T> /* compareToメソッドの実装を持つ */ public abstract class ComparableHoge implements ComparableEntity<ComparableHoge> public class Hoge extends ComparableHoge /* compareToメ

    Javaのジェネリクスでハマった件について - 電脳徒然日記
  • Java8でDuckTyping的なこと - yojikのlog

    Javaのラムダ式のついでに導入されたメソッド参照がなかなか便利な感じです。メソッド参照をつかってDuckTyping的なことができます。 HasName という関数型インタフェースを受け入れるGreeterクラスの定義*1 public class Greeter { /** 関数型インタフェースの定義 */ @FunctionalInterface interface HasName { String getName();} /** 「名前を持っているオブジェクトに挨拶をしてもらう」メソッド */ public void greet(HasName... targets) { for(HasName it : targets) { System.out.println(it.getName()); }; } } 「HasNameの関数型インタフェースと同じシグネチャを持つメソッド」を持

    Java8でDuckTyping的なこと - yojikのlog
    ura_ra
    ura_ra 2013/03/11
  • ibmURL(変更不可)

    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.

    ibmURL(変更不可)
  • Class.forName で DB アクセスできるようになる理由 - すぱいだー日記。

    Java の研修で DB(だいたいMDBかな) にアクセスするプログラムを作ることになったとき、講師はほぼ 100% 「JDBC Driver を使用するためには Class.forName を使用します」と言うはず。ただ、呪文のごとく。 で、Class.forName の API を見てみる。 forName(String name, boolean initialize, ClassLoader loader) 指定されたクラスローダを使って、指定された文字列名を持つクラスまたはインタフェースに関連付けられた Class オブジェクトを返します そして疑問が生まれる。「クラスをロードするだけでなんでDBにアクセスできるようになるの?」と。 講師はなぜできるかは説明しない。分かってないってことは無いと思うけど「まだ初心者だから覚えとけばいい」的な感じだろう。 けど、ここは言わせてもらう!

    Class.forName で DB アクセスできるようになる理由 - すぱいだー日記。
  • JAASを使った認証と承認

    認証・承認を行うプログラム ユーザー認証や権限の制御を行うために標準APIとしてJAAS(Java Authentication and Authorization Service) APIがあります。 JAASには、ユーザーが正当であることを確認する認証と、ユーザーの権限に応じて要求を制御する承認の2つの要素があります。 認証 認証で使用する主要APIは以下です。 javax.security.auth.login.LoginContext javax.security.auth.spi.LoginModule javax.security.auth.callback.CallbackHandler javax.security.atth.callback.Callback 認証のフローは大まかには以下です。 アプリケーションがLoginContextクラスをインスタンス化する Logi

  • JavaとPythonの学習がオンラインで出来る『CodingBat』 | 100SHIKI

    シンプルだが、良く出来ていると思ったのでご紹介。 CodingBatでは、JavaPythonの練習問題をオンラインで解いていくことができる。 その場でコードを書いて、その場で結果を判定してくれる点がわかりやすい。 問題自体はシンプルなものだが、ドリル的にこなしていければそれなりの実力がつくはずだ。 JavaPythonを学んでいる人はいかがだろう。

    JavaとPythonの学習がオンラインで出来る『CodingBat』 | 100SHIKI
    ura_ra
    ura_ra 2013/02/25
  • 第3回 システムトラブルの原因はGCの実装を知れば見えてくる | gihyo.jp

    原因は大きく分けて3つあります。 1つめは、リソース不足です。たとえば、CPUのクロックやコアが足りず、処理の完了待ちであることなどが原因として考えられます。 図1 CPUのリソース不足の例 2つめは、M/W(ミドルウェア)からアプリケーションに提供されるスレッドや、コネクションのプールにあるリソースが不足していて、その提供待ち(無応答)になっている可能性です。 M/Wでプールしているリソースが不足した状況は、会社の書籍棚に1冊しかないを社員で順番待ちしている状況に似ています。1冊しかないため、今借りている人が返すまでは他の人は借りれません。 図2 M/Wでプールされたリソースが不足しているケース 1つめのケースで問題がGCにある場合、GCに割り当てるリソースのバランスが悪いことが原因です。たとえば、特定のプロセスに対するCPUリソースの割り当てが大きい場合、GCが起きると、CPUリソー

    第3回 システムトラブルの原因はGCの実装を知れば見えてくる | gihyo.jp
    ura_ra
    ura_ra 2013/02/14
  • 飲み物だから太らない

    JavaでHTTPクライアントを作ろうと思ったときには、おそらく二つくらいのアプローチがあって、ひとつがApache JakartaプロジェクトのHTTPClientを使う方法、もうひとつがjava.net.HttpURLConnection を使う方法だ。まあもちろん、自前でTCPクライアントの上に乗せてもいいのだが、そんな車輪の再発明するくらいならもっと別のことに労力を使うべきだと思う。 というわけで、そのうちひとつのjava.net.HttpURLConnectionの件。HTTPは最初だけ大文字、後小文字の癖に、URLは全部大文字というよくわからんネーミングセンスについてはとりあえず置いておくとして、設計的によくわからないというか、何がしたいのか意味が不明なところがあるのでそれについて書く。 http://java.sun.com/j2se/1.5.0/docs/api/java/

    飲み物だから太らない
    ura_ra
    ura_ra 2013/01/31
  • Javaでセミコロンなしでプログラムを書く - プログラマーの脳みそ

    java-ja温泉2日目の夕。 @yoshiori がpythonのワンライナの楽しさを得々と語っていた。 @yoshiori「Brainf*ck を Python-oneliner にコンパイルする Python-onelinerを書いたけど全ッ然反応がなかった。こんなに面白いのに!」 @yamashiro「だって分かりにくいもん」 西尾先生が通常ワンライナではtry-catchが使えないけど子プロセス立ち上げて例外を出力してパースすればエラー処理ができるとか(http://www.nishiohirokazu.org/blog/2006/08/python_12.html参照)そんな話で盛り上がる中、 @nagise「Javaでセミコロンなしでプログラムが書けるような気がしてきた」 Javaの場合、普通にセミコロン(;)でマルチステートメントにかけるのでただ1行にしようというなら改行

    Javaでセミコロンなしでプログラムを書く - プログラマーの脳みそ
  • 第1回 JVMはどのようにメモリ空間を利用するのか | gihyo.jp

    あのWebサービスもJVMを利用している 「Javaは大規模なエンタープライズシステムにしか使われない」 それが常識だと思っていませんか? たしかに、これまでJava Virtual Machine(JVM)は、他の言語を実行すると遅く、Javaのプログラムを実行する環境にすぎないものでした。ところが、Java 7から実装されたInvokeDynamicにより、JVM上で、RubyPHPなどさまざまなコンピュータ言語で記述されたプログラムをより高速に実行できるようになりました。 これにより、今までエンタープライズでJava言語で記述されたプログラムを実行するだけの環境であったJVMが、汎用的な実行環境になったと言えます。また、これまでJavaの実行環境として使用されていたノウハウが、他の言語で記述されたプログラムを実行する際にも利用できます。 最近では、TwitterがJVMをアプリケー

    第1回 JVMはどのようにメモリ空間を利用するのか | gihyo.jp
    ura_ra
    ura_ra 2013/01/17
  • オブジェクト指向プログラミングの教え方? | システム設計日記

    技術者仲間で話していたら、4月入社の新人に、オブジェクト指向プログラミングをどうやって教えたらよいか?、という話になった。 想定している言語は Java。 ■動物・犬・モデルの説明から ■基用語の説明から:「カプセル化とは」「継承とは」... ■サンプルコードから: System.out.println( "hello world" ) ... どのパターンでもうまくいかなかったので、今度の新人研修では何か工夫したいね、という話。 結論から言うと「これだ」というアイデアがでたわけではないが、話の内容は、いろいろ興味深かったのでメモ書き。 Java はオブジェクト指向の言語なの? Java は、ある意味 C言語の仲間。ある側面はほとんど同じ言語。 ・int, long (プリミティブなデータ型) ・配列操作 ・if/for/return ここだけ見れば、C言語のまま。つまり命令型、手続き

  • Eclipseデバッグ効率化!無駄なステップ実行を減らす「Step Filter」の設定方法

    Eclipseの「Step Into」の挙動が設定によって変更できることを知っていましたか? 今回は、「Step Into」を始めとする「Step実行」の挙動を変更する「Step Filtering」の設定方法と利用例を紹介します。使えるかも、と思ったら人は、ぜひ導入を検討してみてください。 目次 1. 「Step Into」とは2. 「そこに潜らなくてもいいのに!」3. 解決策:Step Filtering3.1. 有効化3.2. フィルタ設定3.3. その他の設定4. 使い方5. 設定例1:どうでもいい標準ライブラリのコードに飛ばないようにする5.1. 問題5.2. 対策:無視するクラスを設定する6. 設定例2:ClassLoaderへのStep Intoを回避する6.1. 問題6.2. 対策:ClassLoaderをフィルタする7. 設定例3:単純なgetter/setterを無視す

    Eclipseデバッグ効率化!無駄なステップ実行を減らす「Step Filter」の設定方法
  • HTML, CSS, jQueryから、Ruby, PHP, Java, Python, Git, 正規表現などウェブ制作・開発に役立つチートシートのまとめ -OverAPI

    ウェブ制作・開発時に使用するさまざまな言語・サービスのチートシートをまとめた「OverAPI」を紹介します。 HTML, CSS, jQuery, JavaScriptなどのフロントエンドから、Ruby, PHP, Python, MySQL, Javaなどのバックエンド、正規表現、Gitなども揃っています。

  • JavaEE6の部内紹介に向けて - Challenge Engineer Life !

    今年度、部内で取り組もうとしている大きなテーマとして ・営業系システム開発の標準化 があります。ざっくり言えば、よくある「開発効率を向上しよう!」というものです。 私の属する部隊では、主に製造業のお客様向けの営業系基幹システム開発を担当しています。 開発は基的に毎回スクラッチで行っているのですが、マネージャ層では頻繁に「今回の案件は、XX案件と似てるので、あれをベースにすることで短納期・高品質で作れるだろ?」という話がでてるようです。 けれど、現実的には結局スクラッチ開発になっていて、納期厳守や品質確保に残業続きというのが実態です。 理由は色々あるけれど、結局の所「改造するくらいなら新規に作ったほうが楽だ」という結論に至ることが多いのです。 問題は明らかで、開発の初期段階で他のプロジェクトでも使いまわせるような設計や作りをしていないこと、開発を外部に委託するケースが多いこと、等なのですが

    JavaEE6の部内紹介に向けて - Challenge Engineer Life !
    ura_ra
    ura_ra 2012/11/21
  • syboos.jp

    ura_ra
    ura_ra 2012/09/12