タグ

関連タグで絞り込む (207)

タグの絞り込みを解除

Javaとprogrammingに関するraimon49のブックマーク (302)

  • 言語女子会2: varは必要?/privateがない? - 西尾泰和のはてなダイアリー

    言語女子会: undefとnullは両方必要?の続編です。 varは必要なの? とあるプログラミング言語が集う女子会にて: Python: JavaScriptちゃんってさ、なんでvarだらけなの? JavaScript: えっ、変? Python: varなんかいらなくない?私ぜんぜん持ってないよ? JavaScript: えー、じゃあ変数をどうやって宣言するの? Python: 宣言っていうか…「x = 1」みたいな代入文があれば変数xが必要なのって自明じゃない?宣言とか必要? Ruby: 必要ないよね。っていうか変数宣言とか古臭くない? JavaScript: そうかなー。 Python: 少しダサイかも。ほら断舎離ブームだし要らないものは捨てなきゃ! JavaScript: 要らないかなぁ、変数宣言。Pythonちゃんは関数がネストしているときに外側のスコープの変数に代入するのって

    言語女子会2: varは必要?/privateがない? - 西尾泰和のはてなダイアリー
    raimon49
    raimon49 2012/03/22
    リフレクションを持ち出されたらJavaちゃんのprivateすらも逃げ出すしかない…。
  • JavaやC#の常識が通用しないRubyのprivateメソッド - give IT a try

    衝撃を受けたできごと 最近Rubyを勉強しています。 JavaやC#でオブジェクト指向プログラミングの基はマスターしてるから、Rubyもそのあたりは楽勝〜!・・・と思っていたら、JavaやC#の常識が全く通用しない振る舞いに遭遇してかなり衝撃を受けました。それは、 privateメソッドはサブクラスからも呼び出せる ・・・ということです!!がーん。 たとえば、JavaやC#だと自分のクラス内でprivateメソッドが使われていない場合、不要なメソッドとして削除できます。(リフレクションを使って呼び出される可能性はここでは無視ね) しかし、Rubyでは誰かがサブクラスを作って呼び出している可能性があるので、privateメソッドを削除する場合は注意が必要です。メソッド名を変更する場合も同様ですね。 また、知らずに親クラスと同名のprivateメソッドを定義すると、予期せず親クラスの実装をオ

    raimon49
    raimon49 2012/03/18
    まつもとさんからのコメントが。Javaが広まってprivateキーワードがOOPで重要視されるようになったけど、実は使える言語ってそんなに無いよね。PHPみたいにどんどんJavaから取り入れてる言語の方が稀だと思ってる。
  • Javaのクラス宣言5種+α - プログラマーの脳みそ

    Javaのクラス宣言には5種類ある。 トップレベルクラス・ネストしたクラス・内部クラス・ローカル内部クラス・匿名クラス(無名クラスとも言われる)の5種類だ。 今回はこの5種類のクラス宣言のおさらい。 トップレベルクラス これは普段使っているクラス。拡張子が.javaのファイルを作り、そのファイル名とクラス名を合致させなくてはいけない。そのjavaファイルのトップレベルに位置する。 ネストしたクラス 「ネストしたクラス」(Nested class)とはクラスの中にクラスがネストしている状態。トップレベルクラスの内側にstaticキーワードをつけてクラス宣言を行う。 public class Outer { public static class Nested { } } このネストしたクラスは、トップレベルクラスと同等の機能性を持つ。 クラス名はOuter.Nestedという名前で扱われるが

    Javaのクラス宣言5種+α - プログラマーの脳みそ
    raimon49
    raimon49 2012/03/09
    クラス内部で宣言するクラスの種類、名前空間、参照ルート。やっぱりラムダ欲しいよな…。
  • PHPのinterfaceなめんな - なんたらノート第三期ベータ

    はいタイトルは釣りです。 OOPのインターフェースはただの実装漏れチェック機能じゃないし、ましてや継承は差分プログラミングツールじゃないぞ。というのはわりと一般的な話だけど、Ruby(respond_to?でホントにいいの)とJava(インターフェースが自然すぎてユーザが意識しないのよ)が、PHPに対してOOPどうこうで偉そうに言うのはどうかなと思ったもので。まあそれと同時に、PHPの人自身がその意義を発見してるのかなという疑問もあったりしたんですけどね。 Rubyというのは「オブジェクト指向ってのはつまりメソッドに応答できるアヒルはみんなアヒルとみなせるよね」というレベルのダックタイピングで割り切った言語だと、個人的に認識しています。継承とミックスインにはis_aが応答するけど質はrespond_to?のほうで、インターフェースを宣言してなくてもメッセージ送れたらいいあの感じ。 そんな

    PHPのinterfaceなめんな - なんたらノート第三期ベータ
    raimon49
    raimon49 2012/03/03
    マーカーインターフェースで分岐して安全にダックタイピング。Javaではコンパイル時分岐→オーバーロード、実行時→マーカー
  • Javaの非同期処理を,シングルスレッドのようにシンプルにコーディングするための設計パターン (並列処理を逐次処理にする) - 主に言語とシステム開発に関して

    重要なお知らせ: この記事で公開した情報は,AndroidのMVCフレームワーク「Android-MVC」の機能の一部として取り込まれました。 より正確な設計情報や,動作可能な全ソースコードを閲覧したい場合,「Android-MVC」の公式ページより技術情報を参照してください。 AndroidのMVCフレームワーク - 「Android-MVC」 http://code.google.com/p/android-mvc-... マルチスレッドの処理を,シングルスレッドであるかのようにコーディングしたい場合がある。 1番目の非同期タスクの処理結果を,2番目の非同期タスクが利用する場合など。 つまり,並列化されたタスクを,取扱い上は「逐次化」したいのだ。 まずは手っ取り早く,やりたい事をUMLで表現しよう。 「非同期タスクの連鎖」を実装する際, しばしば下記のような「コールバックの入れ子」が生

    Javaの非同期処理を,シングルスレッドのようにシンプルにコーディングするための設計パターン (並列処理を逐次処理にする) - 主に言語とシステム開発に関して
    raimon49
    raimon49 2012/02/14
    タスクのコンテナを用意して実行キューに入れて見た目を逐次処理的にするお題。
  • 急ぎで40万円ほどキャッシングしたいんだけどできるかな… | «借りたい!欲しい!»5万円借りたい貴方へ優良金融会社紹介

    今までにキャッシングをしたことがない初心者です。キャッシングについて詳しくないのでよく分かっていないんだけど、ちょっとした事情があって急ぎで40万円ほど必要です。キャッシングで40万円借りるのって可能なのかな? 不可能ではありませんが、一定の条件が求められます キャッシングしたい時のケースのほとんどが「急ぎで・・・」ですよね。分かります、その気持ち。キャッシング申込をして40万円借りるのは不可能ではありません。しかし、初めてのキャッシングで40万円借りるためには一定の条件が求められます。 キャッシング会社は、初めてキャッシングする人に高額の貸付を行なうことを渋ります。というのは、実績がないからです。実績とは、キャッシング返済の実績です。返済の実績がある人は、キャッシング会社の信頼を得ることが容易ですが、経験がない人はそういうわけにはいきません。 実績ゼロのキャッシング初心者に高額の貸付を渋

    raimon49
    raimon49 2012/02/07
    読めん。&や>がエスケープされてしまっているのが泣ける。
  • Javaのクラスとオブジェクトについて再度解説を試みる - 達人プログラマーを目指して

    オブジェクト指向プログラミングの考え方については、今までこのブログでも何度か取り上げてきました。 [オブジェクト指向] - 達人プログラマーを目指して オブジェクト指向プログラミングはプログラミング技法のすべてではないとはいえ、Javaのようなオブジェクト指向言語で格的なプログラムを作るには理解を避けて通ることができませんし、また、関数型言語など他のパラダイムの言語を利用するにしても、オブジェクト指向の考え方をまったく理解しないまま使いこなすということは困難でしょう。オブジェクト指向の考え方はデータ構造やアルゴリズムといったことと同様に、プロフェッショナルなプログラマーが理解しておくべき基的な素養といってもよいと思います。実際、海外では募集要項でオブジェクト指向の理解を前提とすると書かれていることが普通ですし、プログラマーの面接試験で、アルゴリズムと並んでオブジェクト指向プログラミング

    Javaのクラスとオブジェクトについて再度解説を試みる - 達人プログラマーを目指して
    raimon49
    raimon49 2012/01/03
    メモリ割り当てのタイミングでstaticとdynamicの違いを意識する。オブジェクトに慣れていない人には、いきなりクラス定義の作法を学ぶよりも先に配列を学ぶと良いという話。
  • ProxyパターンとProxyクラスと黒魔術 - プログラマーの脳みそ

    Java Advent Calendar 2011 の18日目です。 17日目の記事は JavaEE使ってウェブアプリケーションつくろうよ - 水まんじゅう2、 19日目はJavaエバンジェリストの寺田さんですよ。乞うご期待。 プロローグ 後:「先輩、いまさらなんですけど上からSQLの遅いところを調査してくれって依頼がきてて、全クエリの実行時間を実データで集計とれと言ってるんですけど。これ、SQL発行前後で時間計測するしかないですかねー。このプロジェクトどんだけクエリ発行してるところあるんだろ…。簡単にやれないですかね。とりあえず調査に1週間かかるって返答しちゃいましょうか」 先:「まぁまて。全部のクエリにもれなく時間計測のコードを挿し込むとかやってられんし、手作業で漏れも発生するだろ。こういうのはオブジェクト指向で解決するのがスマートだ。あ、とりあえず調査に1週間かかるとは返答しておけ」

    ProxyパターンとProxyクラスと黒魔術 - プログラマーの脳みそ
    raimon49
    raimon49 2011/12/18
    「ここからダサくなる」
  • 2011年度生物情報科学演習 リファクタリングとデザインパターン

    コードのリファクタリングとデザインパターン C++, Javaなどオブジェクト指向の考え方、クラスを上手に使うとコードをよみやすく整理できる場合が多くあります。 プログラムの動作を変えずにコードを整理することをリファクタリングと呼びます。 最初からコードを上手に設計するのは、熟練のプログラマでも難しいものです。少人数で開発する場合は、むしろ積極的にコードをリファクタリングし、アルゴリズムの見通しをよくするとよいでしょう。コードを修正する際にはversion管理ツールを使えるようにしておくと安心です。以前のソースコードの状態にいつでも戻せます。 ソースコードの版管理ツール Mercurialの使い方 http://www.xerial.org/wiki/lecture/2010/Mercurial デザインパターンに関しては、GoFや結城浩さんのなどを読むと理解はできると思いますが、

    raimon49
    raimon49 2011/12/03
    ScalaならVisitor patternは組み込みの構文で
  • Java7 で ArrayList の foreach が速くなった理由を調べてみました。 - 地平線に行く

    Java7でList/TreeMap/TreeSetのIteratorがかなり早くなって、 ArrayListのforeach文(拡張for文)も、普通のfor文より早くなりました。 コレクションの細かい話、だが面白い! - 谷 心 in せろ部屋 そうなんですか!? …と思って試してみたところ、ArrayList の foreach文(拡張for文)が Java6 → Java7 で約2.5倍速くなっていました。 手元の環境では、普通の for 文より速くなることはなかったものの、ほとんど気になならないぐらいの差でした。 - 2011年11月26日 訂正: 速くなっていたのは ClientVM で実行した場合のみで、ServerVM では変わっていませんでした。 詳しくは、Javaの実行速度を調べるなら、ClientVM/SeverVM の違いを考慮しておくべきでした。 - 地平線に行

    Java7 で ArrayList の foreach が速くなった理由を調べてみました。 - 地平線に行く
    raimon49
    raimon49 2011/11/14
    内部的にtry-catchを使わなくなったからパフォーマンス改善した。もう拡張for文を使おうとしない人の言い訳にはならない。
  • Java、標準ライブラリにおけるオブジェクトの等価性は型で判断されないという話 - <s>gnarl,</s>技術メモ”’<marquee><textarea>¥

    Set<String> userNames=Sets.newHashSet(); int userId=... String userName=... // Collections<E>#add(E o) // 型が違うのでエラーになってくれる userNames.add(userId); // Collections<E>#contains(Object o) // 引数がObjectなのでコンパイルが通ってしまう! if(userNames.contains(userId)) doSomething(); Java Collection APIの仕様がどうしてこうなってるのか前から謎で。 調査したところ、つまりはこういうことだった: java - What are the reasons why Map.get(Object key) is not (fully) generic -

    Java、標準ライブラリにおけるオブジェクトの等価性は型で判断されないという話 - &lt;s&gt;gnarl,&lt;/s&gt;技術メモ”’&lt;marquee&gt;&lt;textarea&gt;¥
    raimon49
    raimon49 2011/10/30
    >ArrayList(1,2,3)とLinkedList(1,2,3)は、型が違うが、しかし等価 / うれし…くない…
  • すでに定年を過ぎていますが、Amazonで引き続き達人プログラマーを目指すことになりました。 - 達人プログラマーを目指して

    このたび9月末日をもってオージス総研を退職し、10月よりアマゾンジャパン株式会社に入社しました。今後はSoftware Development Engineerとして、日をはじめ世界各国のAmazonのモバイルWebアプリケーションの開発を担当することになる予定です。 およそ7年間にわたり、前職のオージス総研ではソフトウェアアーキテクトとして、SOAやEAといった全社的なシステムのアーキテクチャから、上流のモデリング、Java EEを使ったアプリケーションの開発など、技術者として様々な経験を積ませていただきました。私自身はこのブログでも何度も取り上げてきたように、モデリングやオブジェクト指向といった技術を用いて、実際の基幹業務システムの設計などに活用することで、高品質で保守性の高いシステムの構築に貢献したいという思いがありました。そのようなシステムを構築、維持するためには高品質なアーキテ

    すでに定年を過ぎていますが、Amazonで引き続き達人プログラマーを目指すことになりました。 - 達人プログラマーを目指して
    raimon49
    raimon49 2011/10/04
    あれだけアウトプットを続けながらAmazonへの応募面接もしてたっていうのが凄い。
  • Android組込みのHttpComponent(HttpClient)の正しい使い方といくつかのtips - terurouメモ

    ブログ等に掲載されているHttpComponentのサンプルコードは、重要なところが端折られて紹介されている(というか間違っている事を知らずに書いている疑惑すらある)ことが多いので、正しいサンプルコードを書いておく。 まぁ、ここだけでなくApache HttpComponentsのドキュメントもちゃん読みましょう。あ、Androidのリファレンスにはロクに使い方が書いてないので、あんなゴミだけ読んでてもダメですよ。 要点 ポイントは2つ。 ResponseHandlerを使ってコードを書く HttpResponseの内部リソースを自動で解放してくれるので、ミスがなくなり、コードも簡潔になる。ブログ等ではHttpResponseを使わないコードもよく掲載されているが、リソースの解放処理が記述されていないことが多いのであまりよろしくない。 なお、ResponseHandlerを使わずに自分でリ

    Android組込みのHttpComponent(HttpClient)の正しい使い方といくつかのtips - terurouメモ
  • 実践! 「MapReduceでテキストマイニング」徹底解説

    青空文庫」をテキストマイニング! 前回の「いまさら聞けないHadoopとテキストマイニング入門」では、Hadoopとテキストマイニングの概要や構成、MapReduceの仕組み、Hadoopの活用場面などを解説し、Hadoopの実行環境を構築しました。今回から、Hadoopを使い、テキストマイニングのMapReduceプログラムを作成していきます。 「青空文庫」というサイトをご存じでしょうか。青空文庫は、著作権が切れた日の文学作品を掲載しているWebサイトで、青空文庫の全データをDVDや、BitTorrentによる配信で入手できます。今回は、このデータを使ってテキストマイニングを行いましょう。 前回、テキスト分類で、著者の性別、年齢、地域、職業などの属性も推定できると書きましたが、青空文庫は、他のデータにはない、著者属性があります。青空文庫の作品は、著作権が切れて、作者がなくなっている場

    実践! 「MapReduceでテキストマイニング」徹底解説
  • https://nagise.hatenablog.jp/entry/20110729/1311950039

    raimon49
    raimon49 2011/08/03
    この省略は嬉しいな。変数への代入でのみ利用可能。
  • Javaプログラマは文字列の操作方法を確認した方がいいかもしれない | 配電盤

    Twitter時代の文字の数え方」という記事で書いたことですが、「文字列を扱う」というよくあるタスクは、プログラミング言語によって扱いやすさがまったく異なります。Javaには不幸な呪いがかかっていて、そのうち、「文字列操作に関しては、例えば、Javaを避ける」と言われるようになるのではないかと心配しています。 「文字列中の文字を、1行に1文字ずつ表示する」という例題を考えましょう。 注意:話を単純にするために、Unicodeのコードポイント1つ分のことを「1文字」と呼んでいます。複数のコードポイントで文字を構成することもあるので、ほんとうはもっと複雑です。 次のような解答に、文句をつけられるものでしょうか。 String str="文字列"; int size = str.length(); for (int i = 0; i < size; i++) { System.out.prin

    Javaプログラマは文字列の操作方法を確認した方がいいかもしれない | 配電盤
  • staticおじさん達に伝えたい、手続き指向とオブジェクト指向の再利用の考え方の違いについて - 達人プログラマーを目指して

    何が良いプログラムかという点はもちろん人やコンテキストによって異なりますが、少なくともプログラマーとしての私の信念としては、 機能拡張や変更が容易なプログラム 単体試験によって正しく動作することの検証が容易なプログラム どういった内容が記述されているか理解しやすいプログラム といったものこそ、「品質の高い」プログラムが持つべき性質として、まず真っ先に挙げるべき事項であると考えています。もちろん、前提として顧客の要件に従うということは大切なことです。しかし、一般に要件は長期にわたって変更されるものですし、使い捨てのプログラムを除けば、プログラムを長期にわたって保守するコストという点も見過ごすべきではありません。したがって、ユーザーの目には触れない上記の性質をもっと重視すべきだと思うのです。 DRYの原理 上記のような性質を満たすプログラムを作る上で大切になってくる原理として、DRYの原理とい

    staticおじさん達に伝えたい、手続き指向とオブジェクト指向の再利用の考え方の違いについて - 達人プログラマーを目指して
    raimon49
    raimon49 2011/07/03
    腐敗防止層Interface
  • SoftReference と WeakReference と PhantomReference - kagamihogeの日記

    最近加わったように見せて実はすごい昔から存在している java.lang.ref.Reference とその実装クラスである PhantomReference, SoftReference, WeakReference の 3 つ。今日はこいつらの動作について軽く見ていく。 ただその前に。java6 の幾つからかはシランけど jvisualvm なる jvm の挙動を GUI で見れるツールが提供されている。 とりあえず、下記の何の意味も無いコードを走らせたときの jvisualvm の挙動はこんな感じ。 long c = 0; List<BigDecimal> list = new ArrayList<BigDecimal>(); while (true) { Random r = new Random(); long l = r.nextLong(); list.add(new Big

    SoftReference と WeakReference と PhantomReference - kagamihogeの日記
    raimon49
    raimon49 2011/06/11
    SoftReferenceとWeakReference ビジュアライズ
  • いまさら聞けない「Javadoc」と「アノテーション」入門

    いまさら聞けない「Javadoc」と「アノテーション」入門:【改訂版】Eclipseではじめるプログラミング(22)(1/4 ページ) これからプログラミングを学習したい方、Javaは難しそうでとっつきづらいという方のためのJavaプログラミング超入門連載です。最新のEclipseとJava 6を使い大幅に情報量を増やした、連載「Eclipseではじめるプログラミング」の改訂版となります 注釈とコメントで開発しやすくしよう 開発者がソースコードにコメントを自由に記述すると、統一性がなくなり、同じ内容をさまざまな表現で書いてしまいます。これを防ぎ、重要な情報について統一的な表現で記述したいときは、「アノテーション(annotation、注釈)」を使うことを検討してみましょう。 Javaではアノテーションをプログラムのソースコードへプログラムのメタデータとして記述できます。また、プログラムにア

    いまさら聞けない「Javadoc」と「アノテーション」入門
  • Post by @shyouhei

    速さのためにはCでないとこの誤解は典型的ですねえ。今、申し訳ないんだけど、普通に書いたCのコードと普通に書いたJavaのコード走らせると、普通に書いたJavaのコードの方が速くなるケース、全部とは言わんが案外と多いですよ。なんでかというと、Javaは普通に書いたらJVMが人類の持てるテクノロジの限りを尽くして勝手に高速化してくれる1が、Cはあなたの能力以上に速くはならない。Cは速いJavaは遅いってのは10年くらい前には正しかったんでしょうけどねえ。なお自分でベンチマークしてる暇なんかないよ!という人はshootout.alioth.debian.orgぐらいは読んでもいいんじゃないですかね。たとえばJavaとCの比較で見れば全体的にいって同じくらいのスピード、いくつかの項目でJavaのほうが速いのが分かる。組み込み屋はCでなければ何を使うかこれがですねえ、少なくとも俺の半径1クリックでは

    Post by @shyouhei
    raimon49
    raimon49 2011/05/18
    >文字列処理ほど今Cでやっちゃいかん種類の処理もそうはないですよ。