タグ

ブックマーク / takezoe.hatenablog.com (12)

  • Scalaはなぜ難しいと言われるのか? - たけぞう瀕死ブログ

    Scalaをどうやって学ぶのがいいのか?ということはScalaを使い始めた数年前からずっと考えています。よく「Scalaは難しい」と言われますが、 どこが難しいのか? なぜ難しいのか? ということを、これまで書籍や雑誌記事、ハンズオンなど入門用のコンテンツを作ってきた経験を踏まえて整理してみました。 まず、Scalaが難しいといわれる理由のひとつに学ばなくてはならないものが多すぎるという点があげられます。Scalaはオブジェクト指向言語ですが、関数型言語の特徴的な機能を取り入れているため、きちんと理解するには両方の言語のイディオムを学ぶ必要があるためです。 ただ、Scala自体は必ずしも関数型言語の知識がなくても使えるように設計されています。最初はBetter Javaとして一般的な手続き型オブジェクト指向言語の延長として使い始めることができ、Scalaの特徴的な機能に触れていくことで少し

    Scalaはなぜ難しいと言われるのか? - たけぞう瀕死ブログ
  • H2のMODEオプション - たけぞう瀕死ブログ

    昨日、同僚にH2のJDBC URLに「;MODE=MySQL」のようにオプションを付けることでH2の挙動をMySQL風、PostgreSQL風、Oracle風などのように切り替えることができるということを教えてもらいました。H2のドキュメントでは以下のあたりに書かれています。 http://www.h2database.com/html/features.html#compatibility 「な、なんだってー!!」ということで実際どのように切り替わるのかソースを見てみました。 org.h2.engine.Modeで以下のような感じで定義されています。 mode = new Mode("MySQL"); mode.convertInsertNullToZero = true; mode.indexDefinitionInCreateTable = true; mode.lowerCaseI

    H2のMODEオプション - たけぞう瀕死ブログ
  • GitBucket 2.0をリリースしました - たけぞう瀕死ブログ

    Scalaで実装されたオープンソースのGithubクローン、GitBucket 2.0をリリースしました。 https://github.com/takezoe/gitbucket/releases/tag/2.0 今回はユーザインターフェースの刷新(現在のGithubのデザインへの追従)を行ったため、初のメジャーバージョンアップとなります。このバージョンでの主な新機能および修正点は以下の通りです。 ユーザインターフェースの刷新 現行のGithubのレイアウトに追従しました。GitBucketはもともとGithubの旧デザインにあわせて作っていたのですが、最初のバージョンをリリースする前後にGithubの大幅なデザイン変更が行われてしまい、現在に至るまでそれに追従できていなかったのですが、今回でようやく追従することができました。 …とはいえIssuesなど各機能の中身については反映しきれて

    GitBucket 2.0をリリースしました - たけぞう瀕死ブログ
  • commons-daemon 1.0.15でPlay 2.2アプリをデーモン化する - たけぞう瀕死ブログ

    以下で紹介されている方法ですが、Play 2.2およびcommons-daemonの最新版である1.0.15だと少し変わっていたのでメモ。 http://d.hatena.ne.jp/j5ik2o/20120322/1332397494 https://gist.github.com/j5ik2o/2156447 build.sbtに以下の依存関係を追加。 "commons-daemon" % "commons-daemon" % "1.0.15" Daemonインターフェイスを実装したApplicationクラスを用意します。NettyServerのインターフェースが少し変わっています。 package daemon import org.apache.commons.daemon.Daemon import org.apache.commons.daemon.DaemonContext

    commons-daemon 1.0.15でPlay 2.2アプリをデーモン化する - たけぞう瀕死ブログ
  • GitBucket 1.13をリリースしました - たけぞう瀕死ブログ

    Scalaで実装されたオープンソースのGithubクローン、GitBucket 1.13をリリースしました。 https://github.com/takezoe/gitbucket/releases/tag/1.13 このバージョンでの主な新機能および修正点は以下の通りです。なお、この他にも細かい改善や多くのバグ修正を行っています。詳細についてはIssueの一覧をご覧ください。 リポジトリビューアでファイルの直接編集 AceEditorを使ってブラウザ上でファイルを編集できるようになりました。 Githubではコミッタ以外のユーザがファイルを編集すると自動的にプルリクエストになったり、Markdownのプレビューが可能だったりしますが、ひとまず今回はコミッタがファイルの作成、編集、削除をできるというところまでです。 Issueへのファイル添付 Issueとコメントに画像を添付できるように

    GitBucket 1.13をリリースしました - たけぞう瀕死ブログ
  • 2014-04-21

    エンジニアの世界には「35歳定年説」というものがあります。 この説の理由として昔からよく言われているのが、体力的な衰えによって若い頃のような働き方ができなくなったり、新しい技術を身に着けるのに時間がかかるようになるというものです。また、従来日のソフトウェア産業の中心であったSI業界の、エンジニアを1人いくらで売るビジネスモデルでは給料の上昇と共に部下のマネジメントや営業的な立ち位置で仕事をしないとペイしなくなってしまうということもあるでしょう。 僕は前職はSIerに勤務しており、今年でちょうど35歳になるのですが、実際に「35歳定年説」の存在を実感したのは能力的な面ではなく、後者のSIerでのキャリアパスが原因でした。 普通の会社で順調にキャリアを重ねた場合、このくらいの年齢になるとどうしてもマネージャとしての仕事を求められるようになります。しかしSIerでのマネージャの仕事とはどういう

    2014-04-21
  • Java逆引きレシピという本を書きました - たけぞう瀕死ブログ

    4月下旬に翔泳社さんから発売される「Java逆引きレシピ」というを4名の共著で書きました。 Java逆引きレシピ 作者: 竹添直樹,高橋和也,織田翔,島多可子出版社/メーカー: 翔泳社発売日: 2014/04/22メディア: 単行(ソフトカバー)この商品を含むブログ (4件) を見る Java 6〜8に対応し、JavaSEのAPIで利用範囲の高いものに加え、JUnitもカバーしていますのでこの一冊でJava開発の基礎を一通り押さえられるのではないかと思います。 Java 8の新機能はもちろんのこと、NIO/NIO2やConcurrent UtilitiesなどJava 5以降の新機能についてもきっちりと書いていますので、これからJavaをはじめる初心者だけではなく、すでにJavaをやっているけれど、Java 5〜7あたりの新機能が押さえきれていないという方のお役にも立てるはずです。

    nobusue
    nobusue 2014/04/11
  • [Java]Apache MINA sshdでオレオレsshサーバを作ろう - 2014-03-30 - 新・たけぞう瀕死の日記

    GitBucket 1.12ではssh経由でのリポジトリアクセスをサポートしていますが、これに使用しているのがApache MINAのsshdです。 https://mina.apache.org/sshd-project/index.html Apache MINAはNIOを使用したTCP/IP、UDP/IPベースのネットワークサーバアプリケーションのためのフレームワークで、sshdはMINAを使用して実装されたsshサーバということになります。MINAのsshdは比較的簡単に再利用できるようになっており、Javaアプリケーションでsshを使用した暗号化通信を行いたい場合に使用することができます。 Javaを使用したOSSのsshdの実装を提供しているのは僕の知る限りMINAだけであり(クライアントはいくつか実装がありますが)、JenkinsやGerritなどもこれを使ってsshサーバの

    [Java]Apache MINA sshdでオレオレsshサーバを作ろう - 2014-03-30 - 新・たけぞう瀕死の日記
  • SIerの社内フレームワークを前向きに捉えてみる - たけぞう瀕死ブログ

    その昔、僕が客先常駐ソルジャーだった頃、そこには辺り一面炎上プロジェクトばかりでした。 当時僕の参加していたプロジェクトでは、 SQLで書いたら数秒〜数分で済むであろうバッチ処理をなんちゃってEJB 1.0のような独自フレームワークを使って数時間かけて処理し、挙句に朝までに終わらないと問題になって作り直したり なぜかすべてのバッチがSQL*Plusを叩くシェルスクリプトで実装されており条件分岐で済むようなケースがすべて別ファイルとしてパターン数分用意されていたため処理を少し修正するだけでも数百のシェルスクリプトを修正しなくてはいけなかったり はたまたオンラインの処理では1人のユーザがボタンを押すだけで200M以上のメモリを消費しこれ想定ユーザ数での使用にどう考えて耐えられないでしょみたいなものがあったり ResultSetをJSPまで持ち合わしてどこでもクローズされていなくてJMeterで

    SIerの社内フレームワークを前向きに捉えてみる - たけぞう瀕死ブログ
  • Excel方眼紙を支える技術 - たけぞう瀕死ブログ

    最近仕事Excel方眼紙を読んだり書いたりするプログラムばかり書いているのですが、そんなExcel方眼紙を支える最新のJava技術を紹介したいと思います。 なにはなくともPOI JavaExcelと言えば外せないのがPOIです。以前はJExcel APIという対抗馬もあったのですが、Excel 2007に対応していないので現在ではPOIが唯一の選択肢といっていいでしょう。 POIは非常にプリミティブなAPIを提供するライブラリで、使いこなすにはそれなりの修練が必要です。そのため、可能であれば実際の読み書きには後述するXLSBeansやjXLSなどを使った方がよいでしょう。ただし、jXLSのようなテンプレートエンジンでは細かいセルのスタイル設定などはできないため、POIを併用しないとならないケースも多いです。Excel方眼紙を支える技術のベースとして押さえておくべきライブラリといえるでし

    Excel方眼紙を支える技術 - たけぞう瀕死ブログ
    nobusue
    nobusue 2014/01/20
    Handsontableは便利そうですね
  • Play2でHttpSessionを使う - 2012-10-27 - 新・たけぞう瀕死の日記

    play2-war-pluginを使うとPlay2アプリケーションをwarにしてサーブレットコンテナ上で利用することができますが、さらにサーブレットのHttpSessionを利用できるようにするためのplay2-httpsessionというライブラリを作ってみました。 https://github.com/takezoe/play2-httpsession まずはBuild.scalaに以下の依存関係を追加します。 resolvers += "amateras-repo" at "http://amateras.sourceforge.jp/mvn/" libraryDependencies += "jp.sf.amateras.play2.httpsession" %% "play2-httpsession" % "0.0.2" コントローラでjp.sf.amateras.play2.h

    Play2でHttpSessionを使う - 2012-10-27 - 新・たけぞう瀕死の日記
    nobusue
    nobusue 2013/11/08
    HttpSessionを使う(ただしwar限定)
  • OrientDB - 組み込みにも使えるドキュメント指向DB - たけぞう瀕死ブログ

    アプリケーションに組み込んで使えるJavaベースのドキュメント指向DBを探していたところ、stack overflowでOrientDBというものが紹介されていたので少し調べてみました。 OrientDBは2010年頃から開発されており、以前はGoogle Codeを使っていたようですが昨年末あたりからGithubに移行したようです。ほぼ1人で作っているようですが、開発は今もかなり活発な感じです。 Groovyの例ですが、組み込みモードで動作を試されている方がいらっしゃいました。 http://another.maple4ever.net/archives/1867/ スキーマレスかつ検索はSQLで行うことができ、なかなか扱いやすそうです(ここではAPIを使っていますが、挿入や更新もSQLで行うことができるようです)。いわゆるテーブルのジョインはできませんが、フィールドの値として別のドキュ

    OrientDB - 組み込みにも使えるドキュメント指向DB - たけぞう瀕死ブログ
  • 1