タグ

ブックマーク / zentoo.hatenablog.com (18)

  • jOOQ (Java Object Oriented Querying) の使い方の紹介 - 愛と勇気と缶ビール

    jOOQ (http://www.jooq.org/) についてのメモ。 jOOQは、type safeかつdatabase orientedなクエリビルダーである。 database orientedなので、「アプリケーションからDBのことなんて全然意識したくないねん」的な思想に基いて作られた類のプロダクトとは異なり、思い通りのSQLを生成できるようになっている。 以下gradle前提で。version等はよしなに。 gradle dependenciesはこんな感じ compile 'org.jooq:jooq:3.7.1' compile 'org.jooq:jooq-meta:3.7.1' テーブル等に相当するクラスをgradle taskから生成するためにbuildscriptのdependenciesにも以下をかいておく classpath 'org.jooq:jooq-cod

    jOOQ (Java Object Oriented Querying) の使い方の紹介 - 愛と勇気と缶ビール
    punitan
    punitan 2015/12/12
  • YAPC::Asia 2014で "strace for Perl Mongers" というタイトルで発表しました - 愛と勇気と缶ビール

    ついでにスライドもあげておきました。 あげるのが遅くなったのは、体調が悪くて家に帰って寝てたからです。スイマセン。 strace for Perl Mongers from Naosuke Yokoe スライド自体は hakimel/reveal.js · GitHub で作ってて、こいつにはpdf印刷向けのcssがあって普通に印刷できるはず…なのだけど、出力した結果、文字が実際の発表時よりもなぜか全体的に上に寄っています。まあ、ご愛嬌ということで。 割とデモをがっつりやった&スライドに書いてないことを結構喋ってたので、スライドだけだとよく分からない部分が多いかもしれません。 全体としては、以下のような反省点があります。 時間余らせちゃうとあれだよなーと思って内容を盛っていったら普通に40分オーバーしてしまった それに伴って、ツールの使い方の紹介だけじゃなくて、アプリ開発者が普段あまり目を

    YAPC::Asia 2014で "strace for Perl Mongers" というタイトルで発表しました - 愛と勇気と缶ビール
    punitan
    punitan 2014/09/02
  • UIとかUXとかに関してたまに思うこと - 愛と勇気と缶ビール

    UIとかUXとかって、ユーザをおもてなしする、快適に使ってもらう、という意味ではもちろん大事な概念なのだろうが、要は「あってもなくてもいいものをとりあえず使ってもらって、そっからお金をもらう」というような所謂フリーミアム的なサービスを無意識に前提とした言葉な気がしている。 というのは、仕事上使わざるを得ないウェブアプリケーションや、あるいは止むに止まれぬ欲求によって使わざるをえないサイト(エロサイトとか)については、僕らは「ちっ、使いづらいクソUIだな」と文句を言いながらも、使うからである。 ある意味あってもなくてもいいような、ユーザにとって喫緊の用事はないが、サービス事業者側が将来お金を儲けるためにとりあえず使って欲しいようなサービスにおいて、UIとかUXとかが問題になる。なんの役に立つか分からない上に使いにくいサービスとか、意味不明だからである。 つまり、UIがどうとか、UXがどうとか

    UIとかUXとかに関してたまに思うこと - 愛と勇気と缶ビール
    punitan
    punitan 2014/07/30
  • 僕のGoogle PlayのDeveloper Accountがterminateされた件 - 愛と勇気と缶ビール

    いや、僕、別にそこまでヤヴァいアプリを出してたわけじゃないんですけど。 ただ、今まで来ていたメールを見るに、複数のアプリが「性的・暴力的なコンテンツ」とか「YouTubeの利用規約違反」とかに引っかかってGoogle Playから消された結果、その辺の情報を鑑みてアカウントごと停止になったというのが事実に近いのではないか。(ちなみにGoogle PlayのDeveloper Accountが停止になっただけで、いわゆるGoogleのログインアカウントの停止をらったわけではない。) 前者は多分アプリに入っていた広告のコンテンツが問題で、後者は僕がYouTubeの利用規約を読んでいなかったのが悪いのだから、どちらについても処置に不服はない。僕が悪うございました。 ただし、これらのアプリを僕がGoogle Playという名の野に放ったのは2年以上前であり、既にマーケットに公開して2年以上以上経

    僕のGoogle PlayのDeveloper Accountがterminateされた件 - 愛と勇気と缶ビール
    punitan
    punitan 2014/06/08
  • Google Chrome for iOSはイカれている - 愛と勇気と缶ビール

    http://code.google.com/p/chromium/issues/detail?id=136610 ↑のissueにも挙がっている通り、iOS SafariではUIWebViewを使っている関係でJSにおけるwindow間の連携を要するAPIがぶっ壊れている。例えば、以下のように。 window.openで返ってくるのがWindow objectではない「何か」である openされたwindowの側でwindow.openerが設定されない 別windowとの間でのwindow.postMessageが使えない (iframeは出来る) これはおそらくiOS SDKの制限のせいなのでGoogleに非はないが、iOS Chromeがぶっ壊れたブラウザであることには間違いない。

    Google Chrome for iOSはイカれている - 愛と勇気と缶ビール
    punitan
    punitan 2013/08/22
  • More Transactional Redis (2) - Lua Scripting in Action - 愛と勇気と缶ビール

    前回の記事: More Transactional Redis (1) - Redis is not a transactional storage - 愛と勇気と缶ビール Lua Scriptingでatomicな処理を実現できるぜい!ってとこで前回の記事は終わっていました。今回は、Lua Scriptingを試す際に踏むとよいであろうstep、実用する際のTIPSなどを書いていきます。 おそらく、多くの方はLua以外の言語で書かれたWebアプリからRedisのLua Scriptingを利用することになるでしょう。実際にホスト言語に文字列として埋め込むか別ファイルにするかは別にして、Redis上でLuaを動かすことは即ち ホスト言語(Perl, Ruby, Python, etc, ...) -> (Redis) -> ゲスト言語(この場合はLua)という異言語間のコミュニケーションを

    More Transactional Redis (2) - Lua Scripting in Action - 愛と勇気と缶ビール
    punitan
    punitan 2013/07/19
  • canvasのgetImageData(), toDataURL()などにおけるCORSについて - 愛と勇気と缶ビール

    僕のcanvas力はいまだ中学生男子並みなので、そもそもcanvasの一部のAPIにSame Origin Policy的なものが適用されることすら今日まで知らなかったのですが、どうやら 違う生成元がsrcに指定されているimgをputImageData -> その描画領域をgetImageDataしようとするとDOM Exception という感じに、普通に怒られちゃうみたいですね。知らんかった。 http://www.w3.org/TR/cors/#use-cases ↑のあたりに書いてあるのをみると、taintedなcanvas、というのですかね。getImageDataで同じ生成元から読み込んだimgの描画部分を指定しても怒られないけど、違う生成元の画像を描画した部分に少しでもかかっていると怒られるので、canvasってピクセルごとに "taintedか、そうでないか" を管理して

    canvasのgetImageData(), toDataURL()などにおけるCORSについて - 愛と勇気と缶ビール
    punitan
    punitan 2012/09/16
  • AndroidのWebViewについての発表資料とか - 愛と勇気と缶ビール

    前のエントリと内容が被っていてアレなのですが、AndroidでWebView(+ addJavascriptInterface)を使った場合に発生しうる脆弱性などなどについて社内の勉強会で発表した資料を公開します。割と具体的な攻撃方法っぽいことも書いてあるので、良い子はやらないように。そのうち他のところで発表する機会などあれば、発表するかもしれないし、するかもしれません。 http://bit.ly/zentooo-slide-webview (※このスライドは、classListが実装されている意識の高いブラウザでないと見れません。あと所々にあるデモっぽいものは、謹製AndroidアプリのWebView上での動作を想定しているので、PCのブラウザだと当然動きません) これとは全く関係ないのですが、今まで1000個くらい購読feed数があったRSSをばさっと厳選して整理したので清々しい気分

    AndroidのWebViewについての発表資料とか - 愛と勇気と缶ビール
    punitan
    punitan 2012/06/13
  • CORSメモ - 愛と勇気と缶ビール

    大分今更産業ではあるが CORS ≠ xhr2などの特定の技術 xhr2, canvas, SSEなどでcross originな外部リソース取得をする技術の共通基盤的な何か GET, POST, HEAD以外を飛ばそうとするとpreflight request(OPTIONS)が飛ぶ 一部のHTTP Header除くHTTP Headerを勝手に入れてもpreflightが飛ぶ preflight requestへのresponseでは、Access-Control-Allow-OriginとAccess-Control-Allow-Methodsを最低限つけて返すべし 流石に毎回preflight requestを飛ばすとか実用的でなさすぎるので、キャッシュできる仕組みがある キャッシュの生存期間は、preflight requestへのresponseにAccess-Control-

    CORSメモ - 愛と勇気と缶ビール
    punitan
    punitan 2012/04/01
  • 最近のtest(まだまだ青い) - 愛と勇気と缶ビール

    例えば、testしたいメソッドにif elsif elseという条件分岐があるとして、素直に書くとこうなりがちなので subtest "test for hogehoge" => sub { my $input1 = +{ ... }; my $output1 = $logic->do_hogehoge($input1); is($output1 ... ); my $input2 = +{ ... }; my $output2 = $logic->do_hogehoge($input2); is($output2 ... ); my $input3 = +{ ... }; my $output3 = $logic->do_hogehoge($input3); is($output3 ... ); }; こう書くようになった。 subtest "test for hogehoge" =>

    最近のtest(まだまだ青い) - 愛と勇気と缶ビール
    punitan
    punitan 2012/03/24
  • LimeChat for Macのアレ - 愛と勇気と缶ビール

    思い出した。社内の掲示板にはだいぶ昔に書いたんだけど。 LimeChat for Macはユーザ定義のCSSJavaScriptで見た目や振る舞いをカスタマイズすることが出来る(Preferences -> Theme)。JavaScriptのコード内でlocation.hrefを取ると、file://で動いていることが分かる。 …後は分かるな? いや分からんがな。という人は以下の記事を読もう http://subtech.g.hatena.ne.jp/mala/20110512/1305185107 だいたいこんな感じのコードで外部のサーバにローカルのファイルを漏らせる document.addEventListener("DOMNodeInserted", function() { var xhr1 = new XMLHttpRequest(); var xhr2 = new XML

    LimeChat for Macのアレ - 愛と勇気と缶ビール
    punitan
    punitan 2012/03/21
  • 適当なサービスをのっけてみるにはVPSとクラウドサービスのどっちがいいか - 愛と勇気と缶ビール

    作ってみたいベースの適当なサービスであるとか、サービスと言えない程度のiPhoneアプリAndroidアプリのバックエンドを置くには、VPSとクラウドサービスのどっちがいいか、という話。 ここでVPSという言葉で指しているのはさくらVPSを代表として、仮想サーバを借り切ってミドルウェアとかは自分でセットアップするやつのこと。クラウドサービスと言っているのは、Amazonは含めずにHeroku, DotCloud, FluxFlex, GAEとかのこと。何でも自分でインストールするのではなく、基備えつけのもので賄う系のサービス。 結論から言うと、とりあえずVPSにしておいて、可能なら後からクラウドサービスに移して経費削減するのが何となくいい気がしている。 理由を箇条書きにすると 初めから使えるミドルウェアが限られていると、アイデアがそれにひきづられるのでよくない よく訓練された人でないと

    適当なサービスをのっけてみるにはVPSとクラウドサービスのどっちがいいか - 愛と勇気と缶ビール
    punitan
    punitan 2012/03/19
  • プログラミング言語について語るときに僕の語ること - 愛と勇気と缶ビール

    僕はしばらく前までプログラミング言語についての議論を戦わすのが好きな人間だった。 今でもそういう会話が嫌いではないとはいえない。というか好きか嫌いかで言うと好きな方かもしれない。今でもそういった会話、「何とか言語はこういうとこがいけない」「それに比べると(俺の使っている)○○言語はうんたらかんたら」というトークは、茶飲み話としてはそうとう楽しいと思う。酒の席で語るにはもってこいの話題だ。でも、それは職業としてエンジニアをやるいい大人がツバを飛ばして語るような話題ではない、と思う。 なぜそう思うか、と問われれば答えは明快で、その言語を使うコンテキストを無視して言語の優劣を語ることには意味がないと思うからだ。 非常に大雑把な括りをさせて貰えば、いわゆるスクリプト言語および動的な型付けを行う言語は、「少数の一定水準を越えたチームが最大限の効率を発揮するために設計された言語」だと思っている。 例え

    プログラミング言語について語るときに僕の語ること - 愛と勇気と缶ビール
    punitan
    punitan 2012/02/25
  • 「アンサイクロペディア・ブラウザ」とかいうAndroidアプリをつくった - 愛と勇気と缶ビール

    わけもなく「よし、Androidアプリが作りたいぜ」と昨年のクリスマスに思ったので、年末からどわーっと勉強し直して、どわーっと作りました。「あんたは実家に帰ってきてもいつもパソコン触っとるねえ」と家族に白い目で見られました。 https://market.android.com/details?id=com.nilsoft.unreader 面白いコンテンツがあるのに、SmartPhone用のビューがないサイトって結構あると思います。アンサイクロペディアとかその一つですね。なのでSmartPhone用にコンテンツを変換するプロキシ作って、WebViewかぶせてやるぜ!見やすいぜ!とか、そういう感じですね。WebViewは色々面白いですね。(スクレイピングとかこの世のやりたくないことベスト50くらいには入りますが、wikiはHTMLの構造が安定しているので比較的安心です) 真面目にGUIツー

    「アンサイクロペディア・ブラウザ」とかいうAndroidアプリをつくった - 愛と勇気と缶ビール
    punitan
    punitan 2012/01/20
  • やったーJavaScriptの動くMySQLできたよー - 愛と勇気と缶ビール

    ※ネタです ※UDFです Mysql 5.1 Plugin Development 作者: Andrew Hutchings,Sergei Golubchik出版社/メーカー: Packt Publishing発売日: 2010/08/30メディア: ペーパーバック購入: 1人 クリック: 45回この商品を含むブログ (2件) を見る しばらく積ん読していたこのをちょっと眺めてみたら、MySQLのUDFって簡単に作れるんだなー、と思った && そういやV8ってライブラリとして簡単にリンクできるはずだな、と思い出した ので、ついカッとなって作った。 http://github.com/zentooo/mysqludf-jseval UDFうんぬn ほとんど↑のの受け売りになるけど、一応MySQLのUDFについて備忘録代わりに軽く紹介しておくと UDFを追加する場合、MySQLの再コンパイ

    やったーJavaScriptの動くMySQLできたよー - 愛と勇気と缶ビール
    punitan
    punitan 2011/09/26
  • iPhoneをhtmlなプレゼンのリモコンにするための何か - 愛と勇気と缶ビール

    会社でid:gfxさんがWebSocketを使って夢が広がるエクストリームなプレゼンをしてくれたので、海外の空気を読まずに作ってみました。 https://github.com/zentooo/SkyWalk 端的に言うと、Socket.IOを通じてリモコンとなるiPhone/Android(?) のブラウザでキャッチしたスワイプイベント(swipe eventというものはないので、実はtouch系でエミュレートしてるだけ)の情報をhtmlプレゼンの側に送っています。 プレゼン側jsでは/socket.io/socket.io.js/とcontroller.jsを読み込んだ上でswipeLeft, swipeRightなどのイベントをキャッチしてプレゼンの操作と結びつけます。 例えばこんなかんじ document.addEventListener("swipeRight", prev, f

    iPhoneをhtmlなプレゼンのリモコンにするための何か - 愛と勇気と缶ビール
    punitan
    punitan 2011/07/29
  • localStorageとかsessionStorageとかのアレ - 愛と勇気と缶ビール

    現状のlocalStorageとかsessionStorageは、valueとして文字列しかsetできない実装ばかりなので、アプリで使うならsetする時にJSON.stringifyして、getする時にJSON.parseするようなラッパーを書かないと無理とまでは言わないがめんどくさい。 また、 localStorage.key = "hoge"; localStorage[key] = "hoge"; localStorage.setItem(key, "hoge"); は、一応目的としては同じなのだが、setItemやgetItemはどうやらブラウザごとに挙動が微妙に異なるみたい。 例えば、手元のFirefox4.0.1では、setItem(null, "foo"); を実行してもnullをキーとして"foo"がsetされることはないが、setItem(undefined, "foo"

    localStorageとかsessionStorageとかのアレ - 愛と勇気と缶ビール
  • githubのアレ(history.replaceStateとかhistory.pushStateの話) - 愛と勇気と缶ビール

    会社で下の記事についてリマインドしてもらって、なんとなく気になっていたことを調べたメモ。 http://webtech-walker.com/archive/2010/12/06160539.html 記事を読んで、history.replaceState(null, "title", "/new.html") とかやると遷移なしでページのcontentも勝手に置き換わるのかなー、だったらあのアニメーションはどこで発火してんだ?とか考えていたがそもそもreplaceStateの動作について勘違いしていた。 要は、次のようなhtml書いてボタンをクリックしても、historyの先頭が置き換わるだけでページ自体には何も起こらない。(ただしlocation.hrefは置き換わっており、reloadすると/replace.htmlにいく) <!DOCTYPE HTML> <html lang="e

    githubのアレ(history.replaceStateとかhistory.pushStateの話) - 愛と勇気と缶ビール
  • 1