並び順

ブックマーク数

期間指定

  • から
  • まで

281 - 320 件 / 8007件

新着順 人気順

println javaの検索結果281 - 320 件 / 8007件

  • GoのDIライブラリgoogle/wireの使い方 - 一休.com Developers Blog

    こんにちは。宿泊事業本部の宇都宮です。この記事では、GoのDIライブラリgoogle/wireの使い方を紹介します。 この記事は一休.com Advent Calendar 2019の9日目の記事です。 DIとは GoのDIライブラリ wireの使い方 Providerのエラーハンドリング Injectorのカスタマイズ Provider Set インタフェースのバインド 構造体のフィールドを参照する 細かな注意点 値とポインタの違いに注意 go runするときはwire_gen.goも一緒に おわりに DIとは DI(Dependency Injection, 依存性の注入)とは、あるオブジェクトが依存しているオブジェクトを自ら用意するのではなく、外部から渡してもらう(外部から注入する)というデザインパターンです。 例として、以下のように、監督の名前を渡すとその監督の映画を全てリストにし

      GoのDIライブラリgoogle/wireの使い方 - 一休.com Developers Blog
    • Javaにvariant型を実装した - *「ふっかつのじゅもんがちがいます。」withぬこ

      最近Hadoopを使うために5〜6年ぶりにJavaをいじっています。 そんで、ちょっとばかり耐えがたいわけです。 例えばありがちな例題を挙げると、 ["google", "検索","開発"] のようなタグ(文字列)のリスト(でも配列でもなんでもいい)を受け取って [ {tag=>"google", enc=>'google'}, {tag=>"検索", enc=>'%E6%A4%9C%E7%B4%A2'}, {tag=>"開発", enc=>'%E9%96%8B%E7%99%BA'} ] のようなハッシュテーブルのリストに変換しなさい。 ただしパーセントエンコーディングを行う関数(でもメソッドでもなんでもいい) uri_encodingは与えられているものとする。 こんなこと、Webアプリケーションではよくやるじゃないですか。 んで、実際Perlなんかでは結構簡単に書けて #my @tag

      • 「Java 21」正式リリース。仮想スレッドが正式版に、入門者向けに「void main」と簡潔な記述、世代的ZGCなど新機能

        「Java 21」正式リリース。仮想スレッドが正式版に、入門者向けに「void main」と簡潔な記述、世代的ZGCなど新機能 オラクルはJavaの最新バージョン「Java 21」正式版を今日リリースします。 Java 21は長期でセキュリティパッチやバグフィクスなどが提供されるLTS(Long Term Support:長期サポート)版です。企業向けのシステム開発などで安定したJavaのバージョンをある程度長期間使いたい場合には、このJava 21は有力な候補となるでしょう。 日本時間22時からJava 21のローンチイベントも開催予定です。「with a few surprise reveals」(いくつかサプライズ発表があるよ)というのが少し気になります。今年は昨年復活したJavaOneがないので、その代わりに何かあるのでしょうか。 We're just 1 day away fro

          「Java 21」正式リリース。仮想スレッドが正式版に、入門者向けに「void main」と簡潔な記述、世代的ZGCなど新機能
        • enumをもうちょっと使う - しげるメモ

          enum basics - しげるメモで基本的なことをおさらいしたので、私がよく使ってるenum関係のパターンをいくつか。 ステートパターンをenumで enumを使うようになってまず一番変わったのが、 private static final int SOME_STATE = 1; みたいな典型的なアンチパターンを書かなくなりました。これはステートパターンを非常に書きやすくなったためだと思います。 よくこんなコード書いてます。本当はもうちょっとロック処理とかを書かないとだめですが、ステート部分は大抵こんな感じです。 public class Lifecycle { // 初期状態はINITIALに固定 private State state = State.INITIAL; // 外側に公開する状態遷移メソッド public void start() { state = state.st

            enumをもうちょっと使う - しげるメモ
          • PythonistaのためのJulia100問100答 - りんごがでている

            この記事はJulia Advent Calendar 2014の12日目の記事だったはずのものです(遅れてすいません...)。 Pythonユーザーとしての自分に対して100問100答形式で気になるだろうことを列挙したものになっています。 全体は以下の様なセクションに分かれています。 Julia 環境 データ 技術計算 言語機能 文字列 / 正規表現 ファイル / IO システム プロファイリング / ベンチマーク / テスト ライブラリ Juliaのバージョンはv0.3系を基本としていますが、開発中のv0.4の内容も必要に応じてコメントしています。 Julia Juliaってどういう言語なの? Juliaは高レベルでハイパフォーマンスな技術計算のための動的言語だよ。 構文はPythonユーザーならすぐに理解できるよ。 公式ウェブページはここ: http://julialang.org/

              PythonistaのためのJulia100問100答 - りんごがでている
            • Gradleを使って業務を楽にする

              ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog 普段 Android アプリの開発を行っている takahirom こと毛受(めんじゅ)です。 さて、Android のIDEとしては先日長きベータ時代に終わりを告げてついに Android Studio が 1.0 となりました。 今まで Eclipse + ADT 環境から移行するのを迷っていた人たちも、ようやく重い腰を上げて Android Studio へのも進むのではないかと思います。 そんな Android Studio では次世代のビルドツールとして注目を集めている Gradle が採用されています。 Gradle の特徴 Gradle で採用されているビルドスクリプトは非常にシンプルな記述をできるのが特徴で 例えば

                Gradleを使って業務を楽にする
              • 安定化間近!Rustのimpl Traitを今こそ理解する - 簡潔なQ

                概要: impl Trait が安定化間近である。これはトレイトオブジェクトと似た用途を持つが、静的ディスパッチされSizedのまま使えるため効率的である。 impl Trait が安定化間近 Rustでは新規の機能はまずnightlyバージョンに「不安定機能 (unstable feature)」として取り入れられます。そこでの実験を経て、プログラミング言語Rustに半恒久的に導入してもよいと合意されたものだけが「安定化 (stabilize)」され、betaやstableバージョンのコンパイラでも使用できるようになります。 さて、現在 「impl Trait」と呼ばれる機能の安定化のめどがたったというアナウンスがありました。この機能は2016年夏ごろに実装され、長い間待ち望まれてきた目玉機能のひとつでしたが、ここにきてようやっと、という感じです。そこで、 impl Trait について

                  安定化間近!Rustのimpl Traitを今こそ理解する - 簡潔なQ
                • 【結果発表】炎上中の20万人月PJを鎮火させた14言語のコード - paiza times

                  ※会員ページにて本日より天才火消しエンジニア霧島の水着壁紙(2560x1600、1024x768)がダウンロードいただけますので、会員登録がまだの方はご登録が必要です。 2014年7月30日より開始したpaizaオンラインハッカソン(略してPOH![ポー!])Lite「天才火消しエンジニア霧島 もしPMおじさんが『丸投げ』を覚えたら」ですが、2014年8月27日いっぱいをもって開催期間を終了いたしました。(コードの実行自体は引き続き可能です)。 今回のオンラインハッカソンは、誰でも参加しやすいように問題の難易度をこれまでよりも少し下げ、ヒント機能等もつけた形でした。今回も数多くご参加いただき無事オンラインハッカソンを終える事が出来ました! 今回はpaizaオンラインハッカソンLiteのレポート、最終結果と、提出された各プログラミング言語毎の最速コードについてお届けします。 ■言語別 最速・

                    【結果発表】炎上中の20万人月PJを鎮火させた14言語のコード - paiza times
                  • Hadoop + Luceneで分散インデクシング - moratorium

                    Hadoop + Luceneで分散インデクシング 2008-08-27 (Wed) 1:07 Hadoop Hadoop (0.17系) + Lucene (2.3系) で検索用インデックスを分散インデクシングするコードを公開してみます。HDDに眠らせてるのはちょっともったいない。 いきなりソースコード。 package net.kzk9; import java.io.*; import java.util.*; import org.apache.hadoop.conf.*; import org.apache.hadoop.fs.*; import org.apache.hadoop.io.*; import org.apache.hadoop.mapred.*; import org.apache.hadoop.util.*; import org.apache.lucene.i

                    • [Java8] はじめて触るStreamの世界 | DevelopersIO

                      札幌は大荒れ、の予想だったのですが、今のところ大変穏やかな天候です。こんにちは。こむろです。 この記事はJava Advent Calendar 2014の17日目になります。 昨日16日は@zephiransasさんの「Lambda-behaveでテストを書こう」でした。 Java8の素晴らしき世界 Java8を使ってプログラミングしていると、新しい機能を色々と使うことで簡潔で読みやすいコードを記述することが出来ます。これが思いの外楽しくるんるん気分でコードを書くことが出来ます。今までのように型をいちいち書かなきゃとかネスト地獄みたいなところを、少しだけ、でも大胆に改善することが出来、久々にJavaでコードを書いていて楽しいと思った時間でした。AndroidはJavaではn(ry 特にここ数ヶ月、Play for JavaでJava8を利用した開発をしていたのですが、その中でStream

                        [Java8] はじめて触るStreamの世界 | DevelopersIO
                      • Go ではエラーを文字列比較する?という話について : DSAS開発者の部屋

                        Go で関数の戻り値のエラーを判別するときに、エラーメッセージの文字列をチェックするコードが存在します。 (例) これは、 Go が言語設計としてエラー処理が貧弱だったり、標準ライブラリがエラー処理を軽視しているからでしょうか? 言語設計や標準ライブラリのAPIの設計をみて行きましょう。 TL;DR 言語設計としては、Java的例外機構と同等以上の(文字列比較によらない)エラー検査が可能 ただし Go のエラーに関する哲学により、公開されていないエラーが多い 実際にエラーを文字列比較されている実例についての解説 Go のエラー検査方法 Java の例外機構では、例外をキャッチするために専用の構文が用意されており、型によりマッチングすることができます。 これはクラスのツリー構造を利用してサブクラスをまとめて分岐することもできます。 一方で、同じクラスでも値によりエラー処理が異なる場合には、

                          Go ではエラーを文字列比較する?という話について : DSAS開発者の部屋
                        • エラーハンドリング・クロニクル #nds41 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

                          はじめに プログラミング技術の歴史は、ありとあらゆる歴史がそうであるように、いろんな「史観」で眺めることができます。ならば、プログラミング技術の歴史を、「エラーハンドリングとの戦い」という視点から見ることもできるのではないでしょうか。本日は、エラーハンドリングとの戦いの歴史を俯瞰することで、エラーハンドリングの勘所について考えていこうと思います。 なお、このエントリはNDSという勉強会の第41回で発表した内容と同一です。 Cの時代 Cの時代のエラーハンドリングでは、関数の返り値と、グローバル変数errnoを見ることで処理が成功したか失敗したかを見るのが一般的でした。 例として、文字列をlongに変換するstrtol関数をmanで引いてみましょう。すると、だいたい以下のようなことが書かれています。 変換に失敗すると、0を返す 変換に失敗した場合、グローバルな変数であるerrnoに以下の定数を

                            エラーハンドリング・クロニクル #nds41 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
                          • (プログラマのための)いまさら聞けない標準規格の話 第2回 文字コード実践編 | オブジェクトの広場

                            プログラマがシステム開発において共通で必要となる、技術と業務の狭間の共通知識を解説します。連載第2回は文字コードの実践編です。 0. 前回の復習と今回の概要 システム開発で必要となる標準規格の話、前回 は文字コードの概要について説明しました。ざっくりまとめるとこんな内容でした。 「符号化文字集合」で文字集合と符号位置を定義し、「符号化方式」でバイト表現に変換していること。 日本では、しばらく文字集合 JIS X 0208 を、ISO-2022-JP、EUC-JP、Shift_JIS の符号化方式で利用してきたこと。 近年は、世界中の文字が扱える Unicode が主流となっており、UTF-8、UTF-16 などの符号化方式があること。 常用漢字、人名用漢字に限っても、字体を正確に扱おうとすると、JIS X 0208 の範囲では不十分であり、JIS X 0213、Unicode、サロゲートペ

                              (プログラマのための)いまさら聞けない標準規格の話 第2回 文字コード実践編 | オブジェクトの広場
                            • あらゆるプログラミング言語の最先端を行くScala 3のマクロ - 貳佰伍拾陸夜日記

                              この記事はScala Advent Calendar 2023の11日目です. 最近, 趣味でScala 3のコードをだいぶ書いていて, マクロの使い心地のよさに感心しました. 理論的な背景も含めて, 産業界で多く使われているプログラミング言語の中では筆者の知る限りぶっちぎりに優れたマクロを備えています. 他の言語にも見習ってほしいですね. たぶん見習おうとすると処理系を作り直す羽目になりますが. この記事ではScala 3のマクロのすごいところを例を使って紹介します. マクロの実践的な例 準備 実践的な例: NamedArray – 名前でアクセスできる配列 NamedArrayのマクロ実装 記述が明瞭 メタレベルのプログラムの扱い クォートとスプライスがある パターンマッチもある 生成コードに型がつく 多段階計算に基づいている クォートとスプライスの本当の意味 ネストしたスプライス ネ

                                あらゆるプログラミング言語の最先端を行くScala 3のマクロ - 貳佰伍拾陸夜日記
                              • Igo - a morphological analyzer

                                目次 概要/特徴 リリースノート インストール/使い方 jarファイル 解析用辞書作成 形態素解析 コマンド BuildDic Igo Java API Tagger Morpheme サンプルコード MeCabとの相違点 解析結果 機能 辞書ファイル 単語エントリフォーマット 制限/注意点 禁則文字 バイナリ辞書エンディアン ライセンス バグ報告など 概要/特徴 Javaで実装された形態素解析器。→ Common Lisp版 辞書フォーマット及び解析結果は、ほぼMeCab互換。 単機能。 Javaの形態素解析器としては比較的高速。 スレッドセーフ。 リリースノート version 0.4.3: 2011年06月17日 形態素解析部の微細なパフォーマンスチューニング インストール/使い方 1) jarファイルの取得/作成 jarファイルは以下のいずれかの方法で取得/作成する。 ダウンロード

                                • 値渡しと参照渡し (と参照の値渡し) - ぐるぐる~

                                  値渡しと参照渡しは、分かってしまえば何も難しいところはないんだけど、分かるまでにちょっとした壁があるというかなんとうか・・・ てことでちょっとまとめておきますねー 値渡し (call-by-value) と参照渡し (call-by-reference) の違い 値渡しと参照渡しの違いは、「呼出し元の値自体を変更できるかどうか」と説明されることが多い。 しかし、例えば Java ではミュータブルなオブジェクト *1 を渡した場合、呼出し元の値自体を変更できるという勘違いをする可能性があるため、この説明はあまり好ましくない。 そのため、参照渡しを「呼出し元の別名を渡している」と覚えるのが分かりやすいと思う。 値渡しは「何かの値をコピーして渡している」と覚える*2。 Java の場合 Java には値渡ししか存在しないが、「参照型」のためにややこしく感じる。 参照型は参照渡しとは無関係で、C

                                    値渡しと参照渡し (と参照の値渡し) - ぐるぐる~
                                  • Scalaで<:<とか=:=を使ったgeneralized type constraintsがスゴすぎて感動した話 - ( ꒪⌓꒪) ゆるよろ日記

                                    Scala2.8から、Predefに<:<とか=:=とかが定義されていて、これなんだろ?とずーっと疑問だった訳ですよ。で、ついったーで質問投げてたらやっと理解できました。 教えて頂いた @ScalaTohoku さん、@okomok さん、@tioa さん、有り難うございました! "generalized type constraints"というヤツで、型パラメータに与えられた型が、特定の条件を満たす場合にのみ呼び出せるメソッドを定義できるというものです。しかもコンパイル時に静的にチェックされる!! これはスゴい!! What do <:<, <%<, and =:= mean in Scala 2.8, and where are they documented? - Stack Overflow =:=や<:<や<%<で特定の型のみ呼び出せるメソッドを定義する 具体的な例で説明します。

                                      Scalaで&lt;:&lt;とか=:=を使ったgeneralized type constraintsがスゴすぎて感動した話 - ( ꒪⌓꒪) ゆるよろ日記
                                    • 「+1」だけで四則演算をするには? ― @IT自分戦略研究所

                                      プログラミングの基礎となる考え方、アルゴリズムを理解しているだろうか? ITエンジニアに贈る、アルゴリズム入門。 京都の効率的な回り方を考えるのも「アルゴリズム」 「アルゴリズムって何?」。そう聞かれて、皆さんはすぐに答えられますか。ウィキペディアのアルゴリズムの項には、「なんらかの問題を解くための手順のことである」と記載されています(2007年9月時点)。 例えば、皆さんが週末に京都に旅行し、市内を観光するとしましょう。二条城や銀閣寺、東寺など、回りたいと思う観光地がいくつもあります。バスや電車、場合によっては徒歩など複数の交通手段のうち、どれを使ってどういう順番で回れば効率が良いかと考え、時刻表と格闘することになるでしょう。 この場合、観光地の効率の良い回り方が「問題」で、すべての観光地を最短時間で移動する経路を見つけ、効率良く回る手順を考えることが「問題を解くための手順」、すなわちア

                                        「+1」だけで四則演算をするには? ― @IT自分戦略研究所
                                      • setInterval()を使って、JavaScriptでタイマーで設定した一定時間ごとに動作を繰り返す(定期更新/実行する)サンプル - 感謝のプログラミング

                                        今日は正月であまり食事に出る気にもならず、ピザを取ることにした。 ドミノ・ピザはネットで注文ができる。 注文してみたところ、注文完了後、「オーダー状況追跡システム」なるものが。 ドミノ・ピザはこちら↓ http://www.dominos.jp/ 楽しそうだから見てみると、以下の図のように、(ほぼ)リアルタイムで、現在の注文のステータスを表示してくれるものだった。 このリアルタイムのブラウザ更新はどうやってやってるんだろう? WebSocketでも使ってるのかな? と、気になってこのドミノ・ピザのオーダー追跡システムどうやって実装してるんだろうと思ってソースを見てみると、一部にこんなソースが書いてあった(当然、丸々抜粋はできないため、興味のある人はドミノ・ピザを注文して覗いてみてほしい) ちなみに、ピザ自体は注文して20分くらいで届いた。 ホクホクとあったかい、とても美味しいピザだった。

                                          setInterval()を使って、JavaScriptでタイマーで設定した一定時間ごとに動作を繰り返す(定期更新/実行する)サンプル - 感謝のプログラミング
                                        • JDK 21 の開発者向けの新機能 - 赤帽エンジニアブログ

                                          Red Hat のソリューションアーキテクトの瀬戸です。 この記事はRed Hat Developerのブログ記事、What's new for developers in JDK 21 | Red Hat Developer を、許可をうけて翻訳したものです。 Java開発者にとってエキサイティングな情報として、今年 9 月 19 日に JDK 21 がリリースされました。 このリリースには、仮想スレッド(Virtual Thread)、レコードパターン(Record Patterns)、順序付コレクション(Sequenced Collections)など、Javaのエコシステムに利益をもたらす多くの新機能が含まれています。JDK 21 のプレビューには、文字列テンプレート(String Templates)、スコープ付値(Scoped Values)、構造化並列処理(Structure

                                            JDK 21 の開発者向けの新機能 - 赤帽エンジニアブログ
                                          • 多値について本気で考えてみた - ぐるぐる~

                                            先日のエントリの反応として、多値の批判をしているように受け取られた方がいました。 実際には、多値の批判をしているのではなく、Go言語の「多値とそう見えるけど違うものがある」という仕様を批判したものでした。 また、タプルにこだわっているという受け取り方をした方もいました。 このエントリでは、「タプルにこだわっているのではない、多値にこだわっているのだ」ということを説明しようと思います。 このエントリで出てくるコードは言及がない限り妄想上のもので、実際の言語のコードではありません。 長いから3行で。 スタックマシンと多値は仲良し。継続と多値も仲良し。 多値は多値、タプルはタプル、みんなちがってみんないい。 多値とは、カンマで区切られた単なる複数の値だよ。妄想だけどね。 これで満足して仕事に戻っていただいて構いません。以下オマケ。 多値とタプルの違い まず、多値とタプルの意味的な違いについてをは

                                              多値について本気で考えてみた - ぐるぐる~
                                            • 非対話的デバッガ YouDebug - 川口耕介のブログ

                                              バグ修正はプログラマの仕事の一つですが、このうちのかなりの時間は問題を再現することに費やされます。 症状からバグの全容が推察できる時もあるのですが、多くの場合には、手元で問題を再現し、更なるデータを集めることによって始めてバグが理解されるからです。しかし、環境に依存する問題などは再現が難しい場合もあります。どうしたらよいでしょうか。 ロギングというのがよく行われる解決・予防策ですが、「デバッガを走らせて変数xの値を教えてくれればいいのに!」と思った事があるのは私だけではないと思います。ロギングと異なり、デバッガは予めプログラムに障害発生を予期するコードを埋め込んでおく必要はありません。また、呼び出し元のローカル変数をアクセスしたり、任意の式を評価したり、あるいは変数の値を変更することもできてしまいます。当たり前ですが、障害分析ツールとしてはデバッガはずっと強力だからです。 ではなぜユーザー

                                                非対話的デバッガ YouDebug - 川口耕介のブログ
                                              • Scalaのユニットテスト入門 - seratch's weblog in Japanese

                                                何を使うべきか? 公式サイトのForumにて http://www.scala-lang.org/node/9826 Java における JUnit のようなデファクトスタンダードはないの? ScalaTest を使うとしてどのスタイルが一般的?(JUnit、BDD、Features、FunSuite・・) ScalaTest、specs(specs2)、ScalaCheck、JUnit、TestNG あたりが選択肢 どれか一つに絞るというより、ScalaTest と ScalaCheck を併用のような使い方もアリ 私は ScalaTest を BDD スタイルで使うことが多い ScalaCheck の入力を自動生成するアプローチは機能テストのようなものに特に向いている 私の環境(Java/Scala が混在する maven プロジェクト)には ScalaTest よりも specs の

                                                  Scalaのユニットテスト入門 - seratch's weblog in Japanese
                                                • Rustでの 抽象化 3パターンについて

                                                  ※この記事は全然入門記事ではないです。Javaなどのオブジェクト指向言語とRustをある程度理解している前提での記事です。あと、メモ程度に雑に書いています。 今回は抽象化がテーマです。オブジェクト指向の多態相当のことをRustでどうのように解決すればいいのでしょうか。個々の実装型の都合によらず、呼び出し側は統一的なインターフェイスで操作するケースはRustでもあるはずです。 オブジェクト指向言語の設計に慣れていると、Rustで設計するときにどうしたらいいかわからないことがあります。なぜならRustには継承がないからです…。まぁJavaと比べるとだいぶ違うので頭を切り替える必要があります。今回はそういう感じの記事です。 では、早速デザインパターンを題材にして考えてみましょう。 抽象化について 簡単なコマンドパターンから考えます。 ここでは単純に渡した文字列を標準出力するコマンドを考えます。以

                                                    Rustでの 抽象化 3パターンについて
                                                  • Java SE 7のjava.nio.file.Filesがとても便利な件 - きしだのHatena

                                                    とても便利。 たとえば、あるサイトからHTMLをダウンロードしてファイルに保存する場合。 try(InputStream is = new URL("http://www.google.com/").openStream()){ Files.copy(is, Paths.get("C:\\Users\\kishida\\Downloads\\google.html")); } ファイルの内容を一行ずつ読み込んで処理をする場合。 for(String s : Files.readAllLines(Paths.get("C:\\Install.log"), Charset.defaultCharset())){ System.out.println(s); } まあ、直接文字列でファイルパスを渡せなかったり、デフォルトCharset使う場合でも引数が省略できなくて、まだるっこいコードになってし

                                                      Java SE 7のjava.nio.file.Filesがとても便利な件 - きしだのHatena
                                                    • ハタさんのブログ(復刻版) : javascriptを初めて学ぶ人についてのおさらい。その2

                                                      前回のエントリが700users突入しました。ありがとうございます。参考になれば幸いです。 ということで、その2になります。 前回書いた通り、C/Javaについてはある程度の知識がある人なので、クラスなどのオブジェクト指向はちゃんと理解されているようですが、プロトタイプ指向は初めて学ぶようです。 javascript(ECMAScript)のプロトタイプは他のプロトタイプ指向言語とはひと味違う動作をするので、その点も含めておさらい プロトタイプとはなんですか?プロトタイプとは継承パターンの一つでしかないです プロトタイプは単なる継承パターンであり、単一の方向への継承しか行わない点についてはクラスベースと同じです。 var Hoge = function (){}; Hoge.prototype.methodA = function (){ return "this is methodA

                                                      • 入門書が教えてくれないJava スコープ編 - プログラマーの脳みそ

                                                        入門書ではあまりとりあげられない部分を解説するコンセプトの「入門書が教えてくれないJava」シリーズの第二弾。前回は変数についてだった。今回はそのスコープについて取り上げたい。 スコープとは スコープとは大雑把に言えば変数やメソッドなどが見える範囲のことを指す。 Javaの変数のスコープで一番簡単なのはローカル変数で、これは{から}まで(これをブロックという)の中で、宣言した位置より後ろで参照することができる。 public void main(String[] args) { int i1 = 0; // i1はここからmainの}までの間で参照できる if (true) { int i2 = 0; // i2はこのifの}までの間で参照できる } // i2はifの}を過ぎると参照できなくなる i2 = 1; // ← コンパイルエラー } なお、Javaの言語仕様では{}のブロックは

                                                          入門書が教えてくれないJava スコープ編 - プログラマーの脳みそ
                                                        • Java 8 vs Scala: 特徴を比較する

                                                          Java 8はついにラムダ式を導入します。ラムダ式自体は2009年からProject Lambdaで利用することができました。当時はラムダ式はJava Closuresと言われていました。サンプルコードを紹介する前に、ラムダ式がJavaプログラマにとってなぜ歓迎すべき機能なのかを説明しましょう。 なぜラムダ式を使うのか ラムダ式の一般的な使い方はGUI開発においてです。一般的に、GUIプログラミングではイベントと結びつく振る舞いを解決する必要があります。例えば、ユーザがボタンを押したとき(イベントが発生したとき), プログラミングは何らかの処理を実行する必要があります。例えば、Swingでは、次のコードで示すようにActionListenersを使います。 class ButtonHandler implements ActionListener { public void actionP

                                                            Java 8 vs Scala: 特徴を比較する
                                                          • 互いに関連のないオブジェクトを1つのインターフェースにまとめて共通的にアクセス可能にするライブラリを作ってみた - 矢野勉のはてな日記

                                                            Javaもともとやりたかったことは、 あるオブジェクト(インスタンス)がすでに手元にある そのオブジェクトのクラスは何らかの理由で継承不能 そのオブジェクトの一部メソッドをオーバーライドしたい そのオブジェクトにメソッドを1つ足したいという、JavaScriptならすぐにできちゃうことがしたかった。で、これって、オーバーライドしたいメソッドと、追加したいメソッドだけを持ったあるオブジェクトAを用意して、メソッド呼び出し時に該当メソッドの時だけAに委譲しちゃえばできるよね、と思った。他のメソッドはすべてもとのオブジェクトに委譲する。 で委譲コードを書いてみても、すんごいめんどくさい。たくさんのメソッドを定義して、ただ委譲するだけのコードをかかないといけない。でCGLibあたりにそういうのがあるだろうと思って見てみたのですが、どうもないみたい。なんかありがちな要望だと思ったんですが、もうちょっ

                                                            • 例外について色々と考えてみた - ぐるぐる~

                                                              オブジェクト倶楽部、コーディング規約の会の「C# コーディング標準」の駄目なところ - ぐるぐる〜から派生して、 「他の例外クラスを継承しただけの例外クラスを作らない」に不同意の理由 - Diary of Dary、 例外クラスの指針 - 猫とC#について書くmatarilloの雑記や、さらには Twitter で Java の検査例外と非検査例外についての議論へと発展したので例外についてまじめに考えてみた。 あくまで、今の自分の考えなので真に受けない方がいいかも!そもそも経験が少ないので、トンチンカンなことを言ってるかもしれません。 あ、それと、用語は基本的に Java から取ってきています。ただ、メソッドじゃなくて関数を使っているけど、これに深い意味はありません。多分。 例外とは まず、例外とは一体何者なのか、ということ。 ここでは面倒を避けるために、Meyer 先生の定義を借りること

                                                                例外について色々と考えてみた - ぐるぐる~
                                                              • Servlet3.0でcometチャットを作ってみる - きしだのはてな

                                                                Cometとは? ブラウザベースのチャットをつくろうとする場合、以前は定期的にクライアントからリクエストを送信して更新を確認するという手法がとられました。そうすると、平均して更新間隔の1/2の遅延が発生し、更新がないときの問い合わせが無駄になるなど、ユーザーにもサーバーにもうれしい手法ではありませんでした。 そこで使われるようになったのがCometです。 Cometは、HTTPでクライアントからの接続への返答を保留して、サーバーからデータを送信する必要がでたときに返答を返すことで、サーバーからのリアルタイムデータ送信を行う手法の総称です。 Servlet3.0でのComet対応 Cometでは、クライアントからの接続を保持しつづけるので、これまでのServletの仕組みをつかって実現しようとすると、各接続にスレッドを割り当てることになり、スレッド数が多くなりすぎるため、多くのユーザーには対

                                                                  Servlet3.0でcometチャットを作ってみる - きしだのはてな
                                                                • スレッドセーフにするために考えること 〜基礎編〜 - かとじゅんの技術日誌

                                                                  ええっと、リクエストされたので、今回は並行処理ネタにいってみます。 並行処理といえば、この本は必読書ですね。でも、書いてることは、かなりムズカシイデス(´・ω・`) Java並行処理プログラミング ―その「基盤」と「最新API」を究める― 作者: Brian Goetz,Joshua Bloch,Doug Lea出版社/メーカー: ソフトバンククリエイティブ発売日: 2006/11/22メディア: 単行本購入: 24人 クリック: 419回この商品を含むブログ (163件) を見る ということで、並行処理について、もうちょっと優しく分かりやすく解説できないか考えて書いてみます。 スレッドセーフにするには 今回は、プログラムをスレッドセーフにするためにどんなことを考えればよいか。そういうテーマです。 アンスレッドセーフなコードから この本の最初の方に、"スレッドのリスク"という章で、スレッド

                                                                    スレッドセーフにするために考えること 〜基礎編〜 - かとじゅんの技術日誌
                                                                  • AWS Lambda + Javaは、なぜ1回目と3回目の処理が重いのか? - 谷本 心 in せろ部屋

                                                                    以前のエントリーで、AWS LambdaでJavaを使ってDynamoDBを呼び出した際に、初回起動にとても時間が掛かったという話を書きました。 http://d.hatena.ne.jp/cero-t/20160101/1451665326 今回は、この辺りの原因をもう少し追求してみます。 なぜ1回目と3回目のアクセスが遅いのか? AWS Lambdaの中身はよく知りませんが、おそらく、アップロードしたモジュールをTomcatみたいなコンテナとして起動させて、外部からコールしているんだろうと予想しました。それであれば、2回目以降のアクセスが早くなることは理解ができます。 ただ、1回目と3回目だけが極端に遅くて、2回目、4回目以降は早くなるというところは腑に落ちません。 その辺りを調べるべく、staticなカウンタを使って、値がどんな風に変化するかを調べてみました。 こんなソースコードです

                                                                      AWS Lambda + Javaは、なぜ1回目と3回目の処理が重いのか? - 谷本 心 in せろ部屋
                                                                    • Gof デザインパターンの勉強メモ記事とブックマークまとめ

                                                                      はじめに# 今年の目標は, デザインパターンの攻略! ということで, この一年でまとめた情報や書いた記事のブックマークページです. 過去記事は, Ruby と Java が入り混じっていたり, 気まぐれでどんどん更新していったので, とてもまとまりがないとおもう. 強引に一つのページにまとめてみた感じ… (*‘д`*) 一年の振り返り# Rubyist になる# 去年の 12 月から Rubyist になった. Rubyist になった日 | Futurismo そして, オブジェクト指向開発に触れることになった. 楽しかったので, 何も考えずにデザインパターンを使ってみたりした. しかし, これはのちに後悔することになった. 保守性よりもスピードを重視するべきだったのに, デザインパターンをつかって, 仕事が遅れてしまったという悲しい思い出. POSA を学ぶ# coursera で P

                                                                        Gof デザインパターンの勉強メモ記事とブックマークまとめ
                                                                      • Javaで暗号化したデータをPerlで復号化しようとしたら大変だった件 - download_takeshi’s diary

                                                                        JavaでRijndael(AES)で暗号化されたデータをPerlで復号化しようと思います。 「暗号方式と秘密鍵だけ聞いておけば簡単にデコードできるっしょ、余裕っしょ」とタカをくくっていたら、思いっきり天罰がくだりました。久しぶりにハマったのであります。 ちゃんと確認しておくべきだった情報 まずは暗号方式と秘密鍵だけでなく、以下の情報をしっかりと確認しておく必要アリでした。 暗号アルゴリズム 秘密鍵 秘密鍵の長さ ブロック暗号化モード IV(Initialization Vector:初期化ベクトル) padding方式 暗号のことちゃんと勉強した事がないので、なんだかよくわからんけど、必要らしい。 せめて事前にここらへんを読んで勉強しておけばよかった。 ぱせらんメモ http://d.hatena.ne.jp/pasela/20100612/crypto DESに代わる次世代暗号「AES

                                                                          Javaで暗号化したデータをPerlで復号化しようとしたら大変だった件 - download_takeshi’s diary
                                                                        • nullという値は本当に必要か考えよう - かとじゅんの技術日誌

                                                                          今回は、nullの扱いは気をつけようねというお話。特にこれからの人に読んでもらいたい。 nullは変数を初期化する時などに、当たり前のように登場します。Javaではnullがないなんて考えられないわけです。(C#でも同様) しかし、nullの考案者のTony Hoareは「10億ドル単位の過ち」と発言しています。 null参照の考案は10億ドル単位の過ち?(スラッシュドット・ジャパン) - エキサイトニュース nullには、それだけの魔性があって使い方を考える必要があります。nullは”値が存在しない”という状態を表現する時に使われることが多いのですが、そのnullに対する注意が十分に払えずにトラブってしまうことが多いのです。Scalaではその"値が存在しない"という状態をOption型のNoneで表現することでnullを回避する手段が提供されています。JavaではScalaのようにはでき

                                                                            nullという値は本当に必要か考えよう - かとじゅんの技術日誌
                                                                          • 2ちゃんねる式Java講座はじまるよーー!! : IT速報

                                                                            1: 以下、名無しにかわりましてVIPがお送りします 2013/09/16 00:11:22 ID:sfPc+elx0 はい開校ー 最初に少しだけ 開発環境について省かれているので、見て学びたいという人はjdkをインストールしましょう http://www.oracle.com/technetwork/java/javase/downloads/index.html それから、Pathにjdkのbinディレクトリを追加してあげましょう。 難しかったらググってみてください☆彡 さて、このスレでは「1」さんがたまにコードを書いたりします。それを自分でも試したい場合は コマンドプロンプトでjavac ????.java(はてなは自分の決めたファイル名) と打ってコンパイルをして java ????で実行してみてください。 ためしに管理人はHello.javaというファイルを作ってみました。こんな

                                                                              2ちゃんねる式Java講座はじまるよーー!! : IT速報
                                                                            • Javassist 入門

                                                                              Java Press vol. 35, pp.76--85, March 2004. Java プログラムの"舞台裏"大追跡 Javassist -- Java バイトコードを操作するクラスライブラリ -- 入門 先端J2EE サーバJBoss が,人知れず内部で行っていること 千葉 滋 東京工業大学・大学院情報理工学研究科 はじめに Java バイトコードを変換するライブラリとしては Jakarta BCEL が有名です。BCEL は Java クラスファイルのデータ構造を直接操作する場合には便利ですが、Java クラスファイルの内部仕様、つまり Java バイトコードに詳しくないと使いこなせません。一方、Java バイトコードにあまり詳しくない開発者でもバイトコード変換を実装できるようにするライブラリが Javassist です。 バイトコード変換 はっきりいって、つい最近までJava

                                                                              • Javaアプリケーションサーバー構築(Tomcat6) - CentOSで自宅サーバー構築

                                                                                (1)JDKダウンロード Java SE DownloadsのサイトからJDKのRPMをダウンロードし、WinSCP等でサーバーの/rootディレクトリへアップロードする。 (2)JDKインストール [root@centos ~]# chmod +x jdk-6u12-linux-i586-rpm.bin ← 実行権限付加 [root@centos ~]# ./jdk-6u12-linux-i586-rpm.bin ← JDKインストール ※ライセンスが大量に表示されるのでSPACEキー押下で流す Do you agree to the above license terms? [yes or no] yes ← yes応答 Unpacking... Checksumming... Extracting... UnZipSFX 5.50 of 17 February 2002, by In

                                                                                • 第二プログラミング言語として Rust はオススメしません Nim をやるのです - 強まっていこう

                                                                                  これから Rust 触ってみようかなぁと思っている方。やめておきましょう。プログラミングが嫌いになりますよ。 Nim をやりましょう。 すでに Rust に挑んで心ぶち折れた方。 Nim をやって心の傷を癒やしましょう。 Rust がディスられる!小癪な!と思っている方。 Nim をやるのです(天に轟く反響音)。 Nim の魅力を Rust と比較しつつ皆様へお伝えしましょう(両手を広げる)。 さぁ、みんな、Rust なんて捨ててさっぱり人気が無い Nim をやるのです(ドドメ色に輝く)。 行末のセミコロンが必要ない タイプ数がもりもり減ります。 Rust にはもちろん必要です。 main が要らない スクリプト言語感覚でいきなりコードを書けます。 Rust は main が必要です。 標準出力への文字列出力が楽 Nim では echo で改行付きの出力ができます。shell と同じですね

                                                                                    第二プログラミング言語として Rust はオススメしません Nim をやるのです - 強まっていこう