タグ

ブックマーク / nowokay.hatenablog.com (61)

  • プログラミング言語の入門が終わったら何の勉強をすればいいの? - きしだのHatena

    JJUG CCC 2022 Fallで「Javaの入門が終わったら何の勉強をすればいいの?」という内容で発表を行いました。 基的なものが作れるようになったけども、イマイチプログラムが組めないというときに、何を勉強すればいいかをまとめました。 入門が終わって作りたいものがあれば作っていきましょう、業務で言われたものが作って行こう、でもなんだかちゃんとしたものが作れないな、もっとちゃんとしたものを作りたい、次のステップに進みたいというときに勉強していく感じです。 資料はこちらです とりあげたについてまとめておきます。 開発作業について 概要 プログラミング言語 アーキテクチャ ミドルウェア ネットワーク デプロイ 理論 開発手法 開発プロセス まとめ フレームワークは入門でやってる前提です。Java入門書「プロになるJava」ではJavaの基から簡単なDB操作、Spring Bootまで

    プログラミング言語の入門が終わったら何の勉強をすればいいの? - きしだのHatena
  • 作って理解するDIコンテナ - きしだのHatena

    DIコンテナ使ってるけど、アノテーションってなんなの!って聞かれて、作ってみたらわかるよと答えてみたので、自分でも作ってみました。 よくわかった。 「DIコンテナ使うと何がいいの?」ということも、作ってみるとわかります。あと「DIって何がいいの?」に関しては、「DIはちょっとコードを書くのが楽になるだけで、それだけあっても仕方ない、大事なのはコンテナ」と答えるようにしてますが、コード比率からもそれがよくわかります。 続編としてWebフレームワークも作っているので参考まで。 作って理解するWebフレームワーク - きしだのHatena まずはコンテナを作る とりあえず1ソースの状態で。 こんな感じで、管理する型を登録できるようにします。 static Map<String, Class> types = new HashMap<>(); static void register(String

    作って理解するDIコンテナ - きしだのHatena
    t_43z
    t_43z 2016/04/21
  • Java8時代の文字列連結変態さんまとめ - きしだのHatena

    いろいろな文字列連結のコードを書いた人がいたのでまとめておきますね。 主に変態さん。 とりあえず、基準として、メモリ確保したStringBuilder版 public static String stringBuilderJoinMem(){ StringBuilder s = new StringBuilder(9100).append("["); for(int i = 0; i < strarray.length; ++i){ if(i != 0){ s.append("],["); } s.append(strarray[i]); } s.append("]"); return s.toString(); } 1037ms ということで、まずはbackpaper0さん。比較的常人のコード。 https://gist.github.com/backpaper0/10273558 pu

    Java8時代の文字列連結変態さんまとめ - きしだのHatena
  • 今どきのJava Webフレームワークってどうなってるの? - きしだのHatena

    昨日のSeasar2のエントリについたコメントなどで、「とはいえ代わりに何つかうの?」みたいな話が出てたので、とりあえずJava EEのWebフレームワークについて簡単にまとめてみます。 Java SE 8+Java EE 7+lombokで書いていますが、基的なところはJava SE 7+Java EE 6でも大丈夫です。 なので、今どきとは書いてますが、基的には2009年12月のJava EE 6ということで、実はすでに4年近くたってます。 何も考えてない なんも難しいこと考えないなら、やっぱJSPが楽ですよね。 なんでも書けちゃう。 <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content=

    今どきのJava Webフレームワークってどうなってるの? - きしだのHatena
  • Seasar2を新規案件に採用するのはそろそろやめたほうがいい - きしだのHatena

    Seasar2の機能追加停止が宣言されてから、すでに6年弱たっています。 Seasar2.4に対する追加要望があれば、もちろん検討します。ただし、大きな変更や追加はもうないでしょう。 Seasar2の今後のロードマップ 2008-01-29 - ひがやすを blog 後継になる予定だったSeasar3も開発が中止されて3年たちました。 Seasar3開発中止 2010-08-06 - ひがやすを blog ここでSeasar2.5を出す方向で動くということでしたが、実現しませんでした。 あのころSeasar2に関わっていた人も、ScalaがメインになったりNode.jsをさわったり、不意ながらPHPをさわったり、さわってみるとPHPもそれほど悪くなかったり、やっぱりPHP気にわなかったりと、いろいろな道を進んでいます。 DIコンテナ自体の機能も時代遅れ感がでてきており、関連プロダクトも

    Seasar2を新規案件に採用するのはそろそろやめたほうがいい - きしだのHatena
    t_43z
    t_43z 2013/11/07
    id:ikeike443 そういうコンセプトのあります(フォークではないけど) http://www.ninjaframework.org/
  • 作るプログラムの機能や性能で勝負したい。そうだ、データベースを勉強しよう - きしだのはてな

    さて、アルゴリズムの勉強のしかたと、ラムダ計算の勉強のしかたの目星をつけました。 アルゴリズムの勉強のしかた - きしだのはてな ラムダ計算の勉強のしかた、プログラム意味論 - きしだのはてな これでここで書いたプログラムの理論の基礎は勉強できたことになるんじゃないかと思います。 プログラムの理論とはなにか - きしだのはてな ところで、プログラムの勉強地図としてこういう図を書きました。 で、ハードウェアまわりについても、プロセッサを支える技術やネットワークはなぜつながるのかでひととおり勉強したとしましょう。 じゃあ次は、アジャイルか?テストか?UIデザインか?となるわけですが、やはりプログラマなら、プログラムの作り方や使いやすさの前に、作るプログラムの機能や性能で勝負したいじゃないですか。 いい感じに関数が分割できるよとか、読みやすい名前がつけれるよとか、効率よく仕事して定時に帰れるよと

    作るプログラムの機能や性能で勝負したい。そうだ、データベースを勉強しよう - きしだのはてな
  • アルゴリズムの勉強のしかた - きしだのHatena

    この記事で、アルゴリズムの勉強はアルゴリズムカタログを覚えることじゃないよということを書きました。 プログラムの理論とはなにか アルゴリズムの勉強というのは、スポーツで言えば腕立て伏せや走り込みみたいな基礎体力を養うようなもので、「ソートなんか実際に自分で書くことないだろう」とかいうのは「サッカーは腕つかわないのに腕立ていらないだろう」とか「野球で1kmも走ることなんかないのに長距離の走り込みいらないだろう」とか言うようなものです。 Twitterでアルゴリズムの勉強とはなにかと尋ねられて、「アルゴリズムの基的なパターンを知って、それらの性質の分析のしかたをしって、いろいろなアルゴリズムでどのように応用されているか知って、自分が組むアルゴリズムの性質を判断できるようになることだと思います。 」と答えたのですが、じゃあ実際どういうで勉強すればいいか、ぼくの知ってるからまとめてみました。

    アルゴリズムの勉強のしかた - きしだのHatena
  • Google App EngineでのDatastore使用量見積もりは注意が必要 - 2010-02-17 - きしだのはてな

    先日セッションデータを消したかったのは、Datastore使用量が1GBを超えて一日0.01$の課金がかかってたからなのです。日曜日くらいに無事消えました。 Google App Engine/Javaでセッション情報を定期的に消す処理 130万件を消す処理に5日以上かかった計算に。もちろん、もう少しちゃんと組めばもっと早く終わると思うのですが、それはつまり、130万件を消去する処理を書くには単純なコードでは無理ということです。※急いでなかったので30分に13回程度の処理しか行ったためで、ちゃんと処理をすると3時間かからないくらいにはなりそうです。(23:08追記) まあ、日数がかかるのはいいとして。 セッション情報がたまってるときのエンティティサイズはこのように360MB程度になっていました。 ただ、このときデータストア使用量は1GBを超えて、0.01$の課金がかかっています。 これが、

    Google App EngineでのDatastore使用量見積もりは注意が必要 - 2010-02-17 - きしだのはてな
  • Google App Engine/Javaでセッション情報を定期的に消す処理 - 2010-02-09 - きしだのはてな

    Google App Engineでは、セッション情報はデータストアに保存されます。 で、自動的には消えないので、うかうかするとこんなふうに100万件以上たまってしまいます。 容量もそれなりにって、350MB近くになっていました。GAEでは1GBを超えると課金されるので、この容量は痛い。 ということで、セッション情報を消す処理を書いてみました。あとは、これを手動で呼び出すもよし、CRONで定期的に呼び出すもよし。 あと、ここのlogメソッドのようなものは、どっか書いとくとログを自分のUIで好きに見れるようにできるので便利。これも定期的にまとめたり消したりする処理必要になりますが。 というか、データ全部消す処理って、どう書くのが一番いいんでしょう?なんかすげー時間かかってるんですけど。 ※ shin1ogawaさんに「makeSyncCallサーブレットを立てて、ローカルのプログラムからバ

    Google App Engine/Javaでセッション情報を定期的に消す処理 - 2010-02-09 - きしだのはてな
  • StAXでHTMLのTITLEを取得する - きしだのHatena

    Google App EngineでいつのまにかJAXBとかStAXが使えるようになってたので、StAX使ってHTMLのTITLEを取得してみました。 ただ、まず問題は、はてなのようにdoctypeにシステムIDが入ってない場合はエラーが出て処理ができなくなってしまうこと。 それと、パーサーに渡す前にエンコーディングを決めておかないといけないので、HTTPヘッダーにエンコーディングが入ってないと、文字化けします。静的なHTMLの場合は設定にエンコーディングが入ってないことが多いので、結構致命的。 実行結果はこんな感じ Yahoo!オークション ソーシャル・ネットワーキング サービス [mixi(ミクシィ)] ?????? http://www.cao.go.jp/ skip http://d.hatena.ne.jp/nowokay/ skip なので、まともにやろうと思うと、自分でパーサ

    StAXでHTMLのTITLEを取得する - きしだのHatena
  • Webアプリで動的型付言語や開発管理が流行りIDEが流行らなかった理由などなど - きしだのHatena

    考えてみた。 ここんところ静的型付けなんか不要な空気になってたり、プログラムの内容よりも品質だとか開発管理の話題のほうが盛んだったり、IDEはあると便利だけどなくても大丈夫って雰囲気だったりする理由。 この10年Webアプリケーション花盛りだから、その理由はWebアプリケーションの構造にあるとして考えた。 Webアプリケーションの構造 で、まずはWebアプリケーションの構造。 字が汚いけど、左からブラウザ、アプリケーション、セッション、DB。 赤文字は、左がプログラム実行、右がデータの永続と書いてある。つもり。 Webアプリケーションでは、ブラウザからのリクエストを受けて、プログラムが動き、データベースの情報を処理して返す。 ブラウザ側でプログラムが動くことはあるけど、入力補助程度であまりたいしたプログラムは書かないので、主にサーバー側のプログラムを組む。 このとき、サーバー側のプログラム

    Webアプリで動的型付言語や開発管理が流行りIDEが流行らなかった理由などなど - きしだのHatena
  • Google App Engineでコードを書くと、処理のひとつひとつが課金に見える

    先週末、ちょっとしたプログラムをGAE/Jで動かして実際に使ってもらってみたのですが、そうすると、いままでテストでちょこちょこやってたときには全部のDaily Quotaが0%だったものが、数%の数字を示すようになります。 これを、ちゃんとプロモーションして多くの人に使ってもらおうとすると、課金が発生したり制限にひっかかったりしそうです。 で、たとえばDatastore APIの呼び出し回数がヤバいとして、API呼び出しを減らすためにキャッシュしようとすると、MemcacheのほうのAPI呼び出し回数がヤバくなってきます。 で、じゃあということでデータストアにデータを置くようにすると、保存量の制約で課金がかかってきます。で、それならと、データストアに置くのはシリアライズしたデータにしてデータ量が最低限になるようにすると、今度はその処理をするためのCPU時間で課金がかかってきます。 コードを

    Google App Engineでコードを書くと、処理のひとつひとつが課金に見える
  • Ext GWTとSmart GWTの比較 - きしだのHatena

    GWTのウィジェットライブラリであるExt GWTとSmart GWTの比較。 id:shinさんとは意見が違うので、書いておきます。 http://d.hatena.ne.jp/shin/20091127/p2 Smart GWT Ext GWT ひとつ、最初にお断り。Ext GWTではプログラム組んだことがあるけど、Smart GWTはAPIやサンプルコードを追っただけなのと、Ext GWTはもうライセンス料払ってるので、おそらくExt GWTよりの評価になっています。 まず、IE6の対応について。IE6の場合、JavaScriptが重すぎて処理が書けないので、ブラウザでフルアプリケーションは組まないほうがいいと思います。 つまり、Ext GWTもSmart GWTもIE6にとっては重いので、やめたほうがいい。普通に苦情が出るレベル。IE6をサポート範囲にしないといけない場合は、普通の

    Ext GWTとSmart GWTの比較 - きしだのHatena
    t_43z
    t_43z 2009/12/09
    ライセンスのごたごた見てるとSmartGWTの方が印象がいいんだよなー
  • Google App Engine/Javaでのメール受信の挙動が変わったようだ - きしだのHatena

    昨日の晩うごいてたメール受信のコードが、今日は動かなくなっていた。 ログを見ると、MimeMessage#getContent()がInputStreamではなくてMimeMultipartを返すようになっているらしい。 つまり、ココで書いたコードはそのままでは動かなくなってる。 http://d.hatena.ne.jp/nowokay/20091024#1256376563 ドキュメントに書いてあるとおりの挙動になったということだと思う。 The getContent() method returns an object that implements the Multipart interface. You can then call getCount() to determine the number of parts and getBodyPart(int index) to r

    Google App Engine/Javaでのメール受信の挙動が変わったようだ - きしだのHatena
  • AndroidでTwitterのタイムラインを表示するサンプル - 2009-10-30 - きしだのはてな

    AndroidTwitterのタイムラインを表示します。HttpClientとJSONとWebViewのいい感じのサンプルになっていると思います。 とりあえずこんな画面定義をしてWebViewを配置しておく。 <?xml version="1.0" encoding="UTF-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:id="@+id/twit_button" android:layout_width="fill_parent" androi

    AndroidでTwitterのタイムラインを表示するサンプル - 2009-10-30 - きしだのはてな
  • Google App Engine for JavaのHttpServletResponseWrapperの注意 - 2009-10-27 - きしだのはてな

    GAE/Jというか、Jettyの挙動なのだけど。 たとえば、出力内容を一旦キャッシュしておきたいときやフィルターで加工するとき、HttpServletResponseWrapperに書き出してキャッシュしたり加工したりする。 で、TomcatならこんなコードでServletResponseを書けばよかった。 final StringWriter sw = new StringWriter(); ServletResponse res = new HttpServletResponseWrapper(response){ @Override public PrintWriter getWriter() throws IOException { return new PrintWriter(sw); } }; ところが、Jettyではこのままでは一度getOutputStreamが呼び出されて

    Google App Engine for JavaのHttpServletResponseWrapperの注意 - 2009-10-27 - きしだのはてな
  • Google App Engine for Javaでのメール受信コード - 2009-10-24 - きしだのはてな

    Google App Engineで受信メールの処理ができるようになった。 具体的な手順はこちら。 http://code.google.com/intl/en/appengine/docs/java/mail/receiving.html 手順はこう。 まず、appengine-web.xmlに次の設定を追加 <inbound-services> <service>mail</service> </inbound-services> そうすると、string@appid.appspotmail.comにメールが来たら /_ah/mail/<address> というURLが呼び出されるようになる。 なので、次のようなサーブレットマッピングをweb.xmlに追加してサーブレットで処理をする。 <servlet> <servlet-name>mailhandler</servlet-name>

    Google App Engine for Javaでのメール受信コード - 2009-10-24 - きしだのはてな
  • なぜJavaの価値があがるといえるか。 - きしだのはてな

    昨日の続き。 PHPの価値が相対的に落ちてJavaの価値があがっていく PHPJava Windows Azureでは、PHP対応もあるらしい。 また、GAE/J上でPHPを動かしたら一緒ではないかというコメントもあった。現状ではGAE/J上でPHPを動かす環境が未完成であったとしても、先のことを言うのであればこちらも完成度があがっていくことを考慮する必要がある。 ただ、これらを考慮したとしても、PHPの相対的な価値が下がったという意見には変わりがない。 PHPがこれまでもっていた「動かす環境が確保しやすい」という特権がなくなったということをもって、PHPの相対的な価値が下がったといっているからだ。実行環境の確保という点では、PHPがもっていたほかの言語に対する優位性がなくなった。 また、Google App EngineによってPythonではなくJavaが強くなったというのは、今まで

    なぜJavaの価値があがるといえるか。 - きしだのはてな
  • Android用Twitterクライアントをいろいろ使ってみた。 2009-10-15 - きしだのはてな

    いままでTwidroidというのを使ってたのだけど、他にどんなクライアントがあってAndroidUIをどんな風に使ってるのか気になったので、いろいろ試してみたのです。 ランキングの上から7つ使ってみたのだけど、結論から言えば試してみた中ではTwitter Ride一択でした。 一応、それぞれの感想を。 ※switf追加(9:55) Twitter Ride 機能がひととおり揃ってるし、使った中では一番使いやすい。キャッシュもあるし、短縮URLの機能もある。なんもこだわりがなければ、これにしておくのがいい。 ユーザーのタイムラインを見たいときに、ユーザーページにまず移動してから「timeline」ボタンを押すのは、まだるっこしい。 個人的に不満なのはアイコンがかわいくないところ。 Twidroid だいたいの機能が揃ってるのだけど、なんかタイムライン読み込み・表示が異様に遅い。 あと、po

    Android用Twitterクライアントをいろいろ使ってみた。 2009-10-15 - きしだのはてな
  • Accelarator Titaniumの記事をI/Oに書きました - きしだのHatena

    Appcelerator Titaniumという開発環境の記事をI/Oという雑誌に書きました。 記事のサンプルはこちら。 http://www.kohgakusha.co.jp/samples/3796/download/io200910_132.jpg Appcelerator Titaniumは、HTML/CSS/JavaScriptを使ってデスクトップアプリやiPhone/Androidアプリを作成できる開発環境です。 デスクトップアプリは、Google Chromeにウィンドウの枠やメニューをつけたアプリが作れると考えればよいと思います。ファイルアクセスなどはGoogle Gearsの機能を使います。 http://www.appcelerator.com/ MYCOMに紹介記事があります。 http://journal.mycom.co.jp/column/tool/004/in

    Accelarator Titaniumの記事をI/Oに書きました - きしだのHatena
    t_43z
    t_43z 2009/09/25
    Appcelerator Titaniumは、HTML/CSS/JavaScriptを使ってデスクトップアプリやiPhone/Androidアプリを作成できる開発環境です。