タグ

ブックマーク / kagamihoge.hatenablog.com (26)

  • Java Authorization Guide with Apache Shiroをテキトーに訳した - kagamihogeの日記

    Apache Shiroのチュートリアルの一部でAuthorizationに関する部分の https://shiro.apache.org/java-authorization-guide.html をテキトーに訳した。 Java Authorization Guide with Apache Shiro 認証もしくはアクセス制御とは、リソースへのアクセス権を特定する機能です。つまり、誰が何にアクセスするのか、ということです。 認証チェックの例を挙げると、ユーザに対し、webページの閲覧・データ編集・ボタンの可視性・プリンターへの出力、を許可するかどうかをチェックします。これらはすべて、ユーザが何にアクセスできるかどうかを決定しています。 Elements of Authorization 認証には三つの中核要素があり、パーミッション・ロール・ユーザで、これらはShiroでは頻繁に参照しま

    Java Authorization Guide with Apache Shiroをテキトーに訳した - kagamihogeの日記
  • Java Authentication Guide with Apache Shiroをテキトーに訳した - kagamihogeの日記

    Apache Shiroのチュートリアルの一部でAuthenticationに関する部分の https://shiro.apache.org/java-authentication-guide.html をテキトーに訳した。 Java Authentication Guide with Apache Shiro 認証とは人確認のプロセスです。アプリケーション側ではユーザが自身を誰と言ってきているのかを確認します。確認のためには、アプリケーションシステムが理解できる形式かつ信用する、人確認用の何かをユーザは提供する必要があります。 このガイドの目的はJavaでの認証をShiroで実行する方法の概要を示すことです。Shiroの10 Minute Tutorialをまだ読んでいない場合はまずそちらに時間を取り、Shiroの基的知識を身につけてください。 Terminology you’ll

    Java Authentication Guide with Apache Shiroをテキトーに訳した - kagamihogeの日記
  • Spring Framework Reference Documentation 4.1.xのIII. Core Technologies 8. Spring Expression Language (SpEL)をテキトーに訳した - kagamihogeの日記

    http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/ をテキトーに訳した。Spring Framework Reference Documentation 4.1.xのIII. Core Technologies 7. Validation, Data Binding, and Type Conversionをテキトーに訳した - kagamihogeの日記の続き。 8. Spring Expression Language (SpEL) 8.1 Introduction Spring Expression Language(SpEL)とは、強力な式言語で実行時にオブジェクトグラフの検索と操作を行います。シンタックスはUnified ELに似ていますが、追加機能があり、notably

    Spring Framework Reference Documentation 4.1.xのIII. Core Technologies 8. Spring Expression Language (SpEL)をテキトーに訳した - kagamihogeの日記
  • The Java TutorialsのType Annotationsのところをテキトーに訳した - kagamihogeの日記

    The Java TutorialsのType Annotations and Pluggable Type Systemsのセクションを読んで訳した。 Type Annotations and Pluggable Type Systems Java SE 8 release以前では、アノテーションは宣言にのみ付与可能でした。Java SE 8 release以降では、アノテーションは型が使用される場所ならどこでも(any type use)付与可能です。この意味するところは、アノテーションは型を使う場所でならどこででも使用可能、ということです。型が使用される場所の例としては、new式でのインスタンス生成・キャスト・implements節・throws節、などです。アノテーションのこの形式はtype annotationと呼ばれ、いくつかの例をAnnotations Basicsに載せてい

    The Java TutorialsのType Annotationsのところをテキトーに訳した - kagamihogeの日記
  • truncateとdeleteのちがいを使用ブロック数から見てみる - kagamihogeの日記

    テーブル切捨てのtruncateと、条件無しでdeleteは、どちらも結果的にテーブルから全行削除される。しかし、両者の動作は異なるもので、想定される使い方も異なる。Oracleの運用ミス事例でもしばしば取り上げられる。システムはなぜダウンするのかのp.232「2つの削除コマンドの使い分けを誤る」など。 というわけで、実際にSQLを実行しながら両者の違いを見てみるが、使用ブロック数に着目しながら確認してみる。 環境 Oracle Database Express Edition 11g Release 2をCentOS 6.4 x86_64上で動作 Oracle SQL Developer 3.2 準備 このエントリ内で使用するクエリについて。 「テスト用のテーブル作成」と書いた場合、下記クエリを指す、とする。 drop table hoge purge; create table hog

    truncateとdeleteのちがいを使用ブロック数から見てみる - kagamihogeの日記
  • Eclipse 4.2でMaven使えるようになるところまで - kagamihogeの日記

    Eclipse 3.7 で Maven 使えるようになるところまでの設定 - kagamihogeのblog とだいたい同じこと書いてありますが、自分メモ用にちょっと書き直した感じ。 環境 Eclipse 4.2.0 ※3.7以降ならこのエントリで書いてある手順と同一でいけると思われる。 ※2013/09/14 追記 Eclipse Kepler(4.3) IDE for Java EE Developers では最初からプラグインが入っているので、このエントリの手順は不要。 このエントリのサマリ EclipseのMavenプラグインであるm2eのインストール Mavenプロジェクトの作成 pom.xmlに依存性追加 ※Mavenのビルドツールとしての側面には触れてません。 やること m2eのインストール Help > Eclipse MarketPlaceを選ぶ。 こんな感じのダイアログ

    Eclipse 4.2でMaven使えるようになるところまで - kagamihogeの日記
  • Clean Code アジャイルソフトウェア達人の技 - kagamihogeの日記

    読みやすく、バグのないコードとはどう書けばいいのか。この分野の名著としてはCODE COMPLETE 第2版 上が上げられるが、書はより現代の事情に即した形で書かれている点が優れている。サンプルとして取り上げる言語はJava、対象となるシステムの分野はソースコードに継続的に手が入れられるもの、に焦点を絞っている。ただ、書いてある内容は普遍的なものなので、ハードウェアの性能を極限まで活かすためゴリゴリにイジったコードを書かなければならない、とかを除けば、有用な内容だと思われる。 俺がこのを読んで衝撃というか感慨深かったのは、ソースコードを機械が読むことよりも人間が読むことのほうが重視される世の中になってきている、という点だった。もちろん、コードは何らかの実行環境に乗せて動いて初めて価値を持つ、ことはこれからも変わらないでしょう。しかし、いつしかプログラマはコンパイラやランタイムに最適化さ

    Clean Code アジャイルソフトウェア達人の技 - kagamihogeの日記
  • SQL Hacks ―データベースを自由自在に操るテクニック - kagamihogeの日記

    ここ半年ほどの個人テーマはSQL再入門である。元々勉強しなおそうと決めた理由は、Oracleまわりでトラブルやっちゃったり、イマイチSQLのパフォーマンスが出ないのに悩んだりと、DBまわりで苦しむことが多い時期があった背景がある。それと同時に、RDBMSの能力を最大限に活かすにはどうすればよいのか、てなことも考えている。ここんとこは大規模データ処理と言えばビッグなデータが流行りではあるが、むしろRDBMSをもちっと使いこなせるようになりたいなぁ、というのが俺の感覚である。いやまぁ、自分の仕事環境がビッグなデータにあまり関係ないってこともあるんですけどね。 そういうわけでDB関連再入門は大きく2ルートに分けて進めている。一つは、理論的なもので、もう一つは、物理的なもの。前者は、関係データベースの性質とは何か、とか、SQLはどういう性格を持つ言語なのか、とかそういう類。後者は、俺は仕事の関係上

    SQL Hacks ―データベースを自由自在に操るテクニック - kagamihogeの日記
  • 達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ - kagamihogeの日記

    達人に学ぶ SQL徹底指南書 - kagamihogeのblog と同じ著者の一冊。前のSQLに焦点を深く絞っていたのに対し、今回はDB全般にまたがって概念や技術を広く解説している。書の結構な部分は、それなりの経験年数があればどこかで読んだことが書いてあることだと思う。しかし、だからといってこのが凡庸かというとそうでもない。むしろ、ごく当たり前のことがなぜ当たり前なのかをハッキリ記述させていくことや、この巻では様々なトレードオフを学ぶことになるが、これらのテキストからは非常に洗練されたスキルが感じられる。 このを読んですごく感心したと同時に感動した部分がまずある。それは、著者のDBに対する基的な態度の一つである、基礎理論疎かにするべからずというか(数学などの)理論によって裏打ちされた概念は強い、というもの。これは例えばこのでは正規化のあたりに強く出てきて、イマサラ正規化かよと

    達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ - kagamihogeの日記
  • パフォーマンス改善と事前対策に役立つ Oracle SQLチューニング - kagamihogeの日記

    OracleSQLのパフォーマンスチューニングと聞いてどのような印象を受けるだろうか。割とDBにチャランポランな俺のイメージでは、Oracleを知り尽くした玄人が固有の黒魔術的なパラメータをあれこれいじると不思議と性能が改善するという、中々に脳内お花畑な絵図がよぎる。勿論実際にはそんなことはなくて、怪しいSQLには怪しくなるだけの理屈が存在するのであり、Oracleの知識やツールを駆使してそれらの予防や改善を図るのがSQLのチューニングということになる。 なんとなくはわかっていたことではあるが、Oracleが重くなるというのはアプリケーションから発行されるSQLが悪いことが大半である、という指摘は個人的には刺さるものがあった。アプリケーションはロジックなどフローの世界であるが、SQLはテーブルが単位の集合の世界であり、根の原理がベツモノである。そのため、ロジックの世界の思想でSQLに接

    パフォーマンス改善と事前対策に役立つ Oracle SQLチューニング - kagamihogeの日記
  • デザインパターンとともに学ぶオブジェクト指向のこころ - kagamihogeの日記

    書は題名どおり、デザインパターンとともに OOP の原則について解説しているだけど、真価はそこには無い。最大の特徴は、誤ったオブジェクト指向についての理解に対する分析と解説にある。手続き型なやり方の特徴と限界を踏まえた上で、OOP の利点について触れる構成は、OOP の学習を根からやり直している俺にはものすごく有益な内容だった。 書を読んでる最中は苦笑しまくりだった。なんでかっていうと、筆者が OOP やデザインパターンに取り組んで失敗した経験のことごとくが俺も踏んだ地雷だったから。まさに 俺がいる という 2ch 的な言い回しがしっくりくる内容ばかり。自分の OOP の理解がどう間違っていたかのふりかえりしようと思ってたけど、このでほとんど言い尽くされてる感がある。 一年とは言わない、半年前でいいからこの読んでおけば、あのデスマの最中でももちっとマシなコード書けただろうなぁ…

    デザインパターンとともに学ぶオブジェクト指向のこころ - kagamihogeの日記
  • 達人に学ぶ SQL徹底指南書 - kagamihogeの日記

    少し前に仕事で書いたSQLが爆発したこともあり、そろそろSQLをまともに勉強しなおす良い機会かと思いこのを買ってきた。書評とかを見ると、今風にSQLを学びなおすには丁度よさそうだったので書をチョイスしたのだが、丁度良い塩梅の難易度だった。SQLの基礎までは行かずとも再入門するには程よい難しさ、具体的なクエリ例を挙げてのSQLのテクニック紹介とその意義の解説に練習問題とで中々に実用的ではないかと思う。 初っ端はCASE式から始まるのだけど、CASE「式」なので、式が書ける場所ならどこでも書けるというのは中々に目から鱗だった。条件付きUPDATEはともかく、CHECK制約にもCASEが使えるとかは驚き以外の何者でもなかった。他にも印象深い箇所はタクサンあり、自己結合によって集合論の理解を深める手法であるとか、肯定と二重否定の変換だとか、なるほどなーとの感想ばかりだった。 俺はこのを読んで

    達人に学ぶ SQL徹底指南書 - kagamihogeの日記
  • オンラインゲームを支える技術 - kagamihogeの日記

    タイトルというか見た目とは裏腹に非常に広範な内容に触れているでした。うまくまとめらんないので、著者のまとめ文を抜粋。 ネットワークプログラミングとゲームプログラミングの速習に始まり、オンラインゲーム歴史、要求の理解、アーキテクチャ、C/S MMO、P2P MO、補助的システム、インフラ、開発体制と幅広い話題を扱いつつ、サンプルゲームの実装を交えて全体的な考え方を追いかけてきました。 オンラインゲームを支える技術  ??壮大なプレイ空間の舞台裏 (WEB+DB PRESS plus) 8.3 まとめ より抜粋 600ページ近くあり、たいていソレナリに分厚いWeb+DB PRESS plusシリーズの中でも更に量がてんこもりである。書いてる内に膨れ上がっちゃったのか、オンラインゲームを支える技術を網羅的に書こうとすればこのくらいの量になるのかは分かりませんが、とりあえず読み応えは抜群です。

    オンラインゲームを支える技術 - kagamihogeの日記
  • プロセッサを支える技術 果てしなくスピードを追求する世界 - kagamihogeの日記

    今日のフツーのWebアプリケーションを書くようなプログラマにとって、プロセッサの中身に気を払う必要はほとんど無くなった。俺はメインの言語がJavaなんだが、コードを書いているときにプロセッサの挙動に気を配って書くようなことはまずないと言っていい。そのくらい、プロセッサの立場というものは空気のような存在になってきたといえる。とはいえ無くなったわけでもないし、プログラムは相変わらずCPUの上で実行されることには変わりないので、書の知識が無駄になることはないだろう。 題名とやや厚めの分量に気が引けるかもしれないが、読むための敷居はそう高くはない。実際のところ俺のプロセッサに関する知識は旧2種の教科書的な定義とはじめて読む8086―16ビット・コンピュータをやさしく語る (アスキーブックス)に毛が生えた程度だが、そんだけでもかなり楽しく読める。プロセッサの過去から現在、あんな小さなチップにも関わ

    プロセッサを支える技術 果てしなくスピードを追求する世界 - kagamihogeの日記
  • 現場で使えるJavaライブラリ - kagamihogeの日記

    書名通りのJavaのオープンソースのライブラリのカタログであり、来的には目次さえあれば用を成すタイプのである。ただまぁ、世の中死ぬほど大量のライブラリがあるので、使い勝手のよいヤツを選んで紹介してくれているところに書の価値がある。また、ライブラリの典型的な使い方も合わせて軽くではあるが紹介されているのもありがたい。オープンソースのライブラリで良いヤツなんてネットで自分で探せるもーんという人には不要であろうが、自分のようなめんどくさがり屋にとっては定期的にこのテのが出てくれるとありがたいもんだったりするのである。 そーいうわけで基的には情報源として使用するであるのだけど、テキトーなオープンソースのコードを読んでみる取っ掛かりとしても使えるんじゃなかろうか。というのも俺は最初このをぱらぱらーと読み始めたとき、うわーこれどうやって実装してるんだろソース落として見てみるかーってやって

    現場で使えるJavaライブラリ - kagamihogeの日記
  • Java並行処理プログラミング - kagamihogeの日記

    ここ数年でマルチコアだ非同期処理だなんだで並行プログラミングが話題のトピックに上がることもあり、Javaの並行処理プログラミングをもちょっと勉強しておいた方が良いかな、と思い評判高い書を手に取った。内容が内容だけにかなり手ごわい相手であり、読むのに相当な時間を要したけれど、その分の収穫はあった。なので、読み切った感というか満足感も中々であった。 書は色々なことが書いてあるけど、まず得られるのはjava.util.concurrentの知識。結構前から機能追加されてたのは知ってたんだけど、使う機会が無いので「なんか便利そうなのがいるけど良く分からない」状態だったんですよね。コイツらは一言でまとめてしまえば、既存のwait/notify/yieldとかが低レベルAPIだとすれば高レベルAPIという位置付け。おそらくjava.util.concurrent登場以前は、個々のプロジェクトでja

    Java並行処理プログラミング - kagamihogeの日記
  • 販売管理システムで学ぶモデリング講座 - kagamihogeの日記

    最近、販売管理システムに関わっているので、一度大掴みに理解を深めるべく書を手に取った。題名通り、データのモデリングから販売管理システムをデータ/業務/機能の軸で解説している。書といま俺がリアルタイム経験中の販売管理システムとの差は、ぶっちゃけ無い。勿論、その会社独自のルールというかビジネスが盛り込まれているので、異なる点は当然ある。が、書の内容をある種の型としてみて、現実のシステムがそのインスタンスとして見たてれば、俺にとっては書はかなり役に立った。一般的ないし理想的なあり方はこうで、だけれども現実のあれこやこれやを盛り込んでこの会社のシステムはこうなってるのね、という理解の仕方をやる上では、良い教科書でした。 内容については興味を持った諸氏には実際に買ってもらうとして、随所に見られる筆者の販売管理システムに対する所感は実に興味深い。例えば、直送の項。これはメーカーや生産者から直接

    販売管理システムで学ぶモデリング講座 - kagamihogeの日記
  • Java ルールブック - kagamihogeの日記

    ここんとこ諸般の事情から Java の勉強から遠ざかっており、復習と色々思い出す意味も込めて書を手に取った。250 ページ程度のサラッとしたではあるが、意外にも得るものが多かった。 書はタイトル通り Java で読みやすくバグの出にくいコードとはどういうものか? を豊富なサンプルコードを通して解説したもの。一つ一つのルールについて、ダメな例とダメな場所を改善したコードをセットに語っているのが特徴である。個人的な感触でいえば CODE COMPLETE 第2版 上 の Java 版といったところ。さすがにあのブ厚いほど網羅的ではないが、要点はしっかり抑えているので、ダイジェスト版とでも言うべきだろうか。知ってる人にとってはごくごく当たり前のことが書かれているので、Java 上級者にとっては読む価値はそれほど無いかもしれないが、Java をサラッと手っ取り早くおさらいしたかった俺にはジ

    Java ルールブック - kagamihogeの日記
  • Java: The Good Parts - kagamihogeの日記

    ここのところ若干 Java から離れ気味だったこともあり、若干出遅れ気味だが話題になっていたので手を取ってみた一冊。前書きにもあるとおり、書は Java のベストプラクティスや技術的な知識を提供する類のではない。どちらかというと、技術書というよりは読み物に近い部類と言える。ページ数も 200 たらずでサクッと読める。知ってる部分については飛ばし飛ばしでいけば、半日か、早い人なら数時間足らずで読み終えらるんでないでしょうか。 さて書の内容はというと、タイトル通り Java 言語の良いところとは何か、について書いてある。Java を数年使用したことある人ならば、そのほとんどはごく当たり前のことしか書いて無いことに拍子抜けするんじゃないか、と思うくらい、フツーのことが書いてあります*1。ざっくり言ってしまえば、我々 Java 使いが普段フツウに享受している Java の言語機能が良いパーツ

    Java: The Good Parts - kagamihogeの日記
  • Web開発者のための 大規模サービス技術入門 ―データ構造、メモリ、OS、DB、サーバ/インフラ - kagamihogeの日記

    はてながインターン生に対して使用している教科書をに出しました、というなんつーか豪気溢れる一冊。中々ここまで自分らの手の内をおおっぴらに出す会社ってあんま無いんじゃないかなぁ……という意味で。しかも教育っていう一番金と手間がかかってめんどくさい部分を出すっていうあたりすごいなぁと。最も、放出したところで他所がそうカンタンに真似できるわけでもなく、丸ぱくりしたところではてな並の成功はできないんだろうけど。まぁ外に出せる情報なので色々絞ってはいるんだろうけど。見る人が見ればぺらいことしか書いてないよねーと言い出しそうなではあります。 とはいえ書の対象読者層は、これから Web 開発者になる人たち向けのであることを考えれば、網羅性と詳細さでかなりバランスの取れたです。コンピュータサイエンスの理論がどんな風に実践に活かされているかから、主に大規模データを扱うという観点からの OS の基礎知

    Web開発者のための 大規模サービス技術入門 ―データ構造、メモリ、OS、DB、サーバ/インフラ - kagamihogeの日記