タグ

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

  • 関連タグはありません

タグの絞り込みを解除

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

  • Android らしい Java - 3. 薄い抽象

    Android プラットホームの API はひどい。 プラットホームというもの一般の API デザインが時代にあわせ少しずつ良くなる中、Android は時代を10年くらい巻き戻した感がある。深い継承。でかいクラス。ヒラより多いマネージャたち。コンサーンもレスポンシビリティもテスタビリティも何もない。 モバイルデバイスには従来の Java が気にかけなかった様々な制約がある。同じように行かない。それはわかる。でもねえ。 過去にもひどい API のプラットホームはあり、人々は大きく二つの方法で立ち向かった: 一つ目は、プラットホームを無視して自分で再発明する方法。Qt や XUL, Swing みたいなクロス OS のツールキットはだいたいこの路線。二つ目は抽象化レイヤをかぶせて隠す方法。Windows API に対する MFC, WTL や SWT. あるいは DOM に対する jQuer

    Android らしい Java - 3. 薄い抽象
  • プログラミングの低レベルと高レベル - 超ウィザード級ハッカーのたのしみ

    プログラミングにはレベルの低い・高いがある。ここでいうレベルとはCPUとかストレージデバイスといった生のハードウェアに近いかという意味である。レベルが低いほど生のハードウェアを意識しなければならない。カーネルは低レベルなソフトウェアの代表である。高尚かどうかと混同されることを嫌ってか、低レイヤ・高レイヤという言い方も良くする。私はあえて混同させたくてレベルという単語を使用している。 私は元々低レベルのプログラミングの方が計算機を操ってる感があって好きだった。しかし、しばらく離れてJavaとかPythonとか高レベルなことをやっていたが、ふと低レベルのところを再び触りたくなったので、 ハッカーのたのしみ Binary Hacks Cプログラミング高速化研究班 等を読み返しながら勉強している。低レベルはちょこちょこっとチューニングするだけで演算が高速化していき、ハッカー感が得られるので楽しい。

    プログラミングの低レベルと高レベル - 超ウィザード級ハッカーのたのしみ
  • エラーハンドリング・クロニクル #nds41 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

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

    エラーハンドリング・クロニクル #nds41 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    raimon49
    raimon49 2015/08/05
    golangはシンプルなEither(左右は逆だが)とも見れる。とても面白い。
  • OracleとGoogleの判決文を斜め読む - Qiita

    (7/7追記)僕は斜め読みだったんですが、もっときちんと読んだ上で解釈を書いてくれている方がいます。僕も時間をとって全文を読みたいとは思っていますが、まだ時間がかかりますし、yudaiさんの会社の方が妥当性は高いと思いますので、そちらをご参照ください↓ 朝っぱらから色々衝撃が走った第一四半期の最終日ですが、OracleGoogleの裁判について、どのあたりが問題だったとされるのか気になるので判決文等を読んでみました。 経緯 2010年8月、OracleGoogleを訴える。当初の争点は特許侵害 (publicKey1) 2012年4月、サンフランシスコ連邦地裁の法廷開始 2012年5月、Googleの特許侵害はないとの陪審評決。ただし、フェアユースは意見が別れる。 2012年6月: OracleGoogleJava/Android訴訟、損害賠償金ゼロで合意。今回議論された37件のJ

    OracleとGoogleの判決文を斜め読む - Qiita
    raimon49
    raimon49 2015/07/01
    >Java標準ライブラリやツールなどに慣れたJavaプログラマが、即座に利用できるようにAPIをコピーして、OracleがJavaを作り続けることで得てきたエコシステムを横取りするようなことについてたくさん議論してきた
  • グーグル対オラクルのJava訴訟、米最高裁がグーグルの上告を棄却--Reuters

    「29日の最高裁判所の判断は、イノベーションと、著作権保護を拠り所にイノベーションを推進する技術業界にとっての勝利である」とOracleの法務顧問を務めるDorian Daley氏は声明で述べた。 Googleは、法廷での争いを続けたい意向を表明した。 「ソフトウェア業界でイノベーションと競争を促進する相互運用性を引き続き擁護していくつもりだ」とGoogleの広報担当者は述べた。 The Wall Street Journal(WSJ)によると、Googleは、基的なJavaコマンドに関する著作権をOracleが主張できるべきではないと主張してきたという。しかしOracleは、Javaコードは同社の所有物であり、Javaを開発したSun Microsystemsを2009年に買収したことで同社が著作権を有していると反論していた。 今回の裁決は、Googleが「Android」モバイルOS

    グーグル対オラクルのJava訴訟、米最高裁がグーグルの上告を棄却--Reuters
    raimon49
    raimon49 2015/06/30
    Googleは法廷でネチネチと争いを引き伸ばしてる間に水面下でJavaからGoに乗り換える準備でも進めていたら面白いのに。
  • Swift 2.0 の Error Handling について考えてみる

    Swift 2.0 の Error Handling ってどんな機会に使うんだろうと思いながら過ごしていたら、NSFileManager の contentsOfDirectoryAtPath:メソッド で縁があったので、そこから感じたことを記してみることにしました。 Swift 2.0 の Error Handling というのは、エラーの状況に応じて適切な回復手段を提供するための仕組みで、これまでの真偽値やオプショナルを使った方式のように、成功したか失敗したかだけでは物足りない場面をカバーできるもののようです。 また、NSError を使った Cocoa フレームワークのエラー処理を自然に扱えるようにデザインされたものという位置づけもあるようです。 CocoaError Handling NSFileManager の contentsOfDirectoryAtPath: に見る

    raimon49
    raimon49 2015/06/18
    例外の文脈で見るとブロックを抜ける時に必ず処理が実行されるdefer文がbetter finally文になる。
  • Swift 2.0 の try, catch ファーストインプレッション - Qiita

    WWDC 2015 で Swift 2.0 が発表されました。オープンソース化などのうれしいニュースでも盛り上がっていますが、言語仕様としては try, throw, catch が導入されるという大きな変更がありました。投稿は、 The Swift Programming Language の新章 Error Handling を読み、多少のコードを書いた上での個人的な感想です。 結論から言うと、 try, catch の導入は良い変更だと思えないけど、 try, catch を導入する前提なら考え得る限りベストに近い仕様だった、って感じです。 よかったのは、 ErrorType は enum タイプセーフなエラー情報 エラー処理が強制されている(検査例外のような形) try! でエラーを無視できる あたりです。個人的には、 try, catch でなく Either 的なものを公式サ

    Swift 2.0 の try, catch ファーストインプレッション - Qiita
  • Less is more:プログラミング言語設計の進歩史 | POSTD

    多くの言語は冗長性を有していますが、これらの機能を省いていくことも言語設計の進歩につながります。 巷には数多くのプログラミング言語があり、新しい言語も継続的に紹介されています。でも新しいものが古いものより優れているかというと、そうとは言えません。なぜなら、何が“優れているか”を判断する明確な尺度は存在しないからです。 それでも過去からの流れを見ていくと、優れた言語を作る1つの方向性は、言語にある冗長性を特定し、それらを持たない新たな言語をデザインすることにあるように思えます。 「完璧とは、それ以上足せない時ではなく、それ以上引けない時に達成される」 – Antoine de Saint Exupéry この投稿では、現在までに知られている言語の冗長的機能を見ていくと共に、恐らく冗長性を有しているだろうと思われる機能についても触れていきます。 自ら墓穴を掘るあらゆる可能性 初めてコンピュータ

    Less is more:プログラミング言語設計の進歩史 | POSTD
  • Java 8とScala ‐アプローチの違いと相互イノベーション | POSTD

    ScalaJava 8に関する プレゼンテーション が、他の似た内容のものよりも多くリツイートされ、大変うれしく思います。だから、こうして皆さんにブログでも書いてお伝えすることにしました。ScalaJavaとの違いと、それぞれの重要性についてお話しします。両者は相互にイノベーションしています。言語間でお互いに取り入れています。では、Javaが使える場合であっても、Scalaを学ぶ必要があるのでしょうか? もちろんです。より多くの言語を知れば知るほど、あなたはさらにプロフェッショナルになっていきます。 もし、ScalaエンジニアScalaJavaとの基的な違いについて尋ねたとしても、おそらくその人はラムダ関数とトレイトに関する違いを全て言うことはないでしょう。代わりに次のような例を出すはずです。 public class Person { private String firstN

    Java 8とScala ‐アプローチの違いと相互イノベーション | POSTD
  • Value Objects と Immutable - かとじゅんの技術日誌

    おつかれさまです。そろそろ、プログラミングに関するエントリも書かなければw DDDの勉強を開始するにあたって、一番最初にEntitiesとValue Objectsに出会う。 今回は、まず先にValue Objectsと関連が深いImmutableについて、考えてみよう。なぜ、Value ObjectsかというとOODの基礎をなすからだ。基礎が弱いとその上の建造物ももろいものとなってしまう。だからValue Objectsがまず先。なーんだ、ただのJavaBeansなんでしょ、と思うと痛い目にあうよw 値を表すのがValue Objects。説明することが目的のオブジェクトである。ここに説明されているとおり。 ● Value Objects(値オブジェクト)パターン エンティティとは逆に、たとえば「色」や「量」のように、その属性だけが重要で、アイデンティティを考えることに意味のないオブジェ

    Value Objects と Immutable - かとじゅんの技術日誌
    raimon49
    raimon49 2015/01/09
    Effective Javaのやや難解な言い回しをDDDのValue Objectパターンに翻訳、Immutableな値オブジェクトとして振る舞わせるサンプルコード。
  • getter/setterとはなんだったのか - プログラマーの脳みそ

    Javaのgetter/setterのお話。 僕は当時を語るには若すぎるのだけど、過去を振り返って書いてみる。当時を知る人は誤りがあれば指摘してほしいし、情報があればコメントなりトラックバックなりして欲しい。前世紀の話というのは今となっては探すことがなかなか難しくなりつつある。 「privateな変数にpublicなアクセサを定義する」? - ネットの海の片隅で getter/setterとは何か Javaのオブジェクトにフィールドがあったとして、そのフィールドに値を設定するメソッドがsetter(せったー)、そのフィールドの値を取得するメソッドがgetter(げったー)と呼ばれる。慣習としてsetterはsetXXX(int value)といった様にsetから始まる名前をつけ、引数はひとつ。戻り値はvoid型。getterはgetXXX()といった様にgetから始まる名前をつけ、引数はな

    getter/setterとはなんだったのか - プログラマーの脳みそ
    raimon49
    raimon49 2014/10/11
    JavaBeansが出自でJava ServletやStrutsの時代には「そういうもの」として定着していた流れの整理。
  • 再考: GoF デザインパターン - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 投稿は私の主観によって書かれています。コメントは大歓迎です。もし長くなるようでしたら別途記事に投稿し、リンクを張っていただけると嬉しいです。 概要 GoFのデザインパターンは適当すぎるから、いい加減、修正されるべき。 参考までに各パターンに対するコメントを書く。 GoFのデザインパターン GoFのデザインパターンは適当であり、教科書通りに学ぶべきものではないように思う。 以下がGoFのデザインパターンの良くない原因だろう。 が出版されたのは1994年であり、Java(1995)が出てくるよりも前だった オブジェクト指向が未成熟な時代

    再考: GoF デザインパターン - Qiita
    raimon49
    raimon49 2014/10/05
    現代のプログラミングと合致しないものが多い点は同感で、新しいプログラミング言語が登場する度に「○○でGoFパターン」みたいな事やってるのは思考停止なんだと思う。
  • デザインパターンの骸骨たち

    『デザインパターン』 うんちくできると、かっこよさそうだよね~。でもあんな分厚い読んでもピンとこないし、だいたいオブジェクト指向ってなに?なにが便利なのかよく分からんのだけど。いいじゃんなんでも。できればいいんだよ、できれば。 な~んて、思っていても、なんとなく オブジェクト指向が気になっている システム開発者は、多いのではないでしょうか?かくいう 私もそんな者の一人でした。 しかし、これだけ もてはやされているオブジェクト指向です。 なんか、便利なはずです。 そこで、私は、GOFのデザインパターン[1]を、できるだけシンプルに表現した、小さな小さなプログラム ~デザインパターンの骸骨たち~ を作ってみました。骸骨達 を骨の髄までしゃぶり尽くつくすせば、オブジェクト指向の真髄まで味わうことができるかも。!? 『デザインパターンの骸骨たち(RE-BONE)』 では、内容を大幅に見直し、Ja

    raimon49
    raimon49 2014/05/25
    C実装、enumとswitch文を駆使した感じになってた。
  • JavaをめぐるOracleとGoogleの裁判、2審はOracleの著作権を認める | スラド デベロッパー

    GoogleJavaの知的財産を侵害しているとしてOracleが訴えていた裁判で、2審の米連邦巡回区控訴裁判所は9日、37のJava APIパッケージに関するOracleの著作権を認める判決を出した(判決文: PDF、 Reutersの記事、 Bloomberg Businessweekの記事、 家/.)。 1審のカリフォルニア州北部地区連邦地裁では、37のAPIパッケージについてGoogleJavaからコピーしたとされるコードの宣言や構造、順序、構成を含む要素に関しては、著作権で保護されないとの判決を2012年5月に出しており(/.J記事)、Oracle側が控訴していた。2審では一転してこれらの要素が著作権で保護されるとの判断を示し、Googleが主張するフェアユースであるかどうかの判断については1審に差し戻すとの結論に達したとのこと。なお、1審でOracleGoogleによる特

  • 要するに DI って何なのという話 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    友人から「しんぺいさん DI について書いてほしい」みたいな話をだいぶ前からされてたんだけど書く気力ずっとなかった。でも仕事の気分転換にちょっとずつ書いたやつがいい量まとまったので公開するです。たいしたことは書いてないっていうか知ってるひとにはあたりまえのことしか書いてない。サンプルコードはわたしの趣味Scala で書いてあるが、Java が読めればなんとなく読めると思います。 DI ってなに Dependency Injection、日語で言えば依存性の注入です。おしまい。 で記事を終えてもいいんだけど、そもそも依存性とはなんなのか、それを注入するとはどういうことなのか、なぜ DI が必要となるのかみたいな話をこれからします。 そもそも依存性ってなあに 例を出します。入力された文字列をもとにおみくじをひいて、その結果を twitter に投稿するプログラムにしましょう。 まずは普通

    要するに DI って何なのという話 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    raimon49
    raimon49 2014/02/13
    コンストラクタインジェクションの解説をScalaで
  • やさしい設計 〜 Android 編 - Qiita

    アプリを作っていてありがちなこと Android には、画面を構成するための Activity というコンポーネントがあり、概ね MVC フレームワークの Controller に相当する機能を持っています。 MVC といえば、肥大化する Controller というのがよくある問題として挙げられますが、Activity も例に漏れず、往々にして肥大化しがちです。 また、Model も、その責務を詰め込んでいくと肥大化しやすいレイヤと言えます。 この投稿では、Controller や Model の肥大化を極力防ぐためのレイヤわけを、Android アプリ向けに書いていきます。 Activity を綺麗に保つ Activity は、Controller として、様々な UI から受けるイベントを受けて、適切にハンドリングする役割を持っています。 OptionsMenu や ContextM

    やさしい設計 〜 Android 編 - Qiita
    raimon49
    raimon49 2014/02/06
    onOptionsItemSelectedを例にした処理の委譲
  • 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から取り入れてる言語の方が稀だと思ってる。
  • クラス設計に関するメモ

    経験的にこのようにした方がよいと思った点についての記録です。 仕事で大規模(2000クラス超)かつ製品寿命がながいパッケージソフトを作っていた関係で、 ちょっとした設計の間違いが、 あとあとで大変な苦労する羽目になったりすることを経験してきました。 このような規模が大きいアプリケーションを作ることはなかなかないかもしれませんが、 なにかの参考になれば、と思います。 継承する前に委譲を検討する Singleton パターンを使うときの注意 Template Method パターンを使うときの注意 クラス間の依存に関する注意 クラスの粒度 Singleton の問題を回避できるか? 継承する前に委譲を検討する 継承はスーパークラスの仕様をよく理解しておかないと、 バグを作りこみやすいので十分注意する必要があります。 メソッドのオーバーライドをするときも、 public void foo(){

    raimon49
    raimon49 2010/11/18
    SingletonWrapper
  • monodroid: API design - ものがたり(旧)

    これは http://monodroid.net/Documentation/API_Design の現時点での日語訳。 概要 MonoDroidでは、Monoのコア基クラスライブラリに加えて、さまざまなAndroid APIのバインディングを提供しており、これによってネイティブAndroidアプリケーションをMonoで開発できるようになっています。 MonoDroidのコアには、C#その他の.NETの言語からJavaAPIにアクセス出来るようにするための、C#の世界とJavaの世界を橋渡しする相互運用エンジンが存在しています。 設計原理 MonoDroidのバインディングにはいくつかの設計原理があります。 フレームワーク設計ガイドラインに準拠します 開発者がJavaクラスをサブクラスできるようにします サブクラスではC#の標準の構成概念が機能するはずです 既存のクラスからの派生 基

    monodroid: API design - ものがたり(旧)
  • 現実のStroustrupインタビュー:C++は単にオブジェクト指向言語でない理由をC++の父は語る | taro-nishinoの日記 | スラド

    10年以上前、Bjarne Stroustrup博士の偽インタビュー記事(又はパロディとも言う)がネット上で出回ったことがありました。C++の人ならよく御存知だと思います。幸いにもこことかここに、その和訳があります。その当時、これを当のインタビューだと信じる(もしくは信じたい?)人が少なからずいて、鬼の首を取ったかのように自身のサイト(まだブログが流布する前なので)上で論評し、勝利宣言(?)か何かのように勝ち誇ったことがありました。どこの国かを言及すると、また私の愛国精神云々する単純細胞な人がいらっしゃいますので、あえて言いません。残念ながら、それらのサイトは当り前ですが削除、改訂されて、もう見ることは出来ません。 私が最初に原文を読んだ時、(今だから言うのではありません)偽だと思いました。日頃から博士の原文(書き言葉であろうが話し言葉であろうが)を読み慣れている人ならば、内容の吟味をす