とりあえず雑記帳(跡地)内検索 / 「文字列の部分一致検索とページング」で検索した結果
-
Slim3/文字列の部分一致検索とページング
Slim3で部分一致検索(Like検索)を頑張ってみる (2012/06/19追記) 検索結果のキャッシュのことを考えたら、本ページのような小細工をせずに、おとなしく結果全件をListで取得したほうが良い気がしてきました…。 検索結果の件数が大きい場合を想定して、Listで取得するのを控えていたのですが、そもそも、そんな検索を許さないようにしたほうが健全ですしね…。 Datastoreでの文字列検索 GAEのDatastoreでは、Entityの検索方法として、プロパティの文字列の前方一致をネイティブでサポートしている。 よって、Slim3でも基本は文字列の前方一致となる。 package jp.fujiyan.gae.datastoretest; import java.text.DecimalFormat; import java.util.List; ... -
Slim3
...…とりあえずの結論を文字列の部分一致検索とページングにて InverseModelListRef(思いっきり想像なので、正確性は保証しません…) InverseModelListRefは永続化の対象外(@Attribute(persistent = false)) InverseModelListRef#getModelList()によって、相手側Entityのクエリを実行する、プロキシ的な役割 InverseModelListRef#getModelList()を呼ぶ度にクエリが呼びだされ、新しいListのインスタンスが返されるので、それに相手側Entityを追加しても、データベースは変更されない Slim3とFlex(BlazeDS) Slim3とBlazeDSの組み合わせでは、/messagebroker/amfへのリクエストが大量発生して、GAEの上限に引っかか... -
とりあえずインターフェース入門/じゃあ何が問題?
演算を追加してみる 先に作成したプログラムに、新しい演算「累乗」を追加してみましょう。 /* * オブジェクト指向でない版 * 累乗を追加 */ package jp.fujiyan.binaryoperation2; import java.io.BufferedReader; import java.io.EOFException; import java.io.IOException; import java.io.InputStreamReader; /** * 二項演算です。 * * @author fujiyan */ public class BinaryOperation { // 入力値の最小 private static final int MIN_VALUE = -99999; // 入力値の最大 pri... -
Struts 2
とりあえず、Struts 2.3.8現在の内容です。 環境構築 まずは最小構成を目指すjarファイル Actionクラスパッケージ クラス メソッドと戻り値 JSPファイル web.xmlファイル struts.xmlファイル まとめ Root namespaceとDefault namespace Dynamic Method Invocationの罠 Config Browser Plugin Actionクラスのメソッド毎にActionを割り当てたい 環境構築 ダウンロードはここから Apache Struts Releases "best available"と付記しているリンク先のファイルをダウンロードします。 パッケージングの種類によって、いくつかのファイルがあります。 "Full Distribution"... -
とりあえずインターフェース入門/じゃあオブジェクト指向ならどうする?
目標 ということで、今回の目標として先に挙げた問題点の逆 プログラムの必要最低限の知識で 既に動いている部分には手を加えずに 機能を拡張することを、インターフェースを活用して実現してみましょう。 拡張したい対象をインターフェースとして定義 今回、拡張したい対象は「演算」です。ということで、今回のプログラムが「演算」に求める機能を インターフェースとして定義します。 package jp.fujiyan.binaryoperation3; /** * 二項演算です。 * * @author Fujiyan */ public interface IBinaryOperator { /** * 選択時の表示に用いる文字列を返します。 * * @return 文字列 */ Str... -
JavaScript/JavaScriptでクラスもどき
WebコミックLibraryhttp //web-comi.appspot.com/GAE/JとSlim3で作成してみた、各出版社から配信されているWebコミックをまとめて閲覧できるサイトです。只今、実験運用中… Functionオブジェクトあれこれの内容を総動員して、クラスっぽいことが実現できます。 クラスもどき 下記のようなJavaベースの擬似コードで表現されたクラスを仮定します。 class Foo { var propertyA; Foo(str) { this.propertyA = str; } void methodA(mark) { alert(mark + this.propertyA + m... -
とりあえずインターフェース入門/古典だって重要
オブジェクト指向的技法を用いないプログラム まずは、オブジェクト指向的技法を用いないスタイルで組まれた、二項演算プログラムです。 自分で定義したメンバが全てstaticなところが、オブジェクト指向的要素の無い、ある意味「古典的な」スタイルとなっています。 /* * オブジェクト指向でない版 */ package jp.fujiyan.binaryoperation1; import java.io.BufferedReader; import java.io.EOFException; import java.io.IOException; import java.io.InputStreamReader; /** * 二項演算です。 * * @author fujiyan */ public class BinaryOperation... -
とりあえずインターフェース入門/そしてフレームワークへ
1箇所たりとも修正したくない 先のBinaryOperationは、少ないとはいえ、やはり修正している事実に変わりはありません。 「修正せずに拡張する」の精神にのっとり、さらに工夫をしてみましょう。 演算の追加を、BinaryOperation自身で行わずに、外部から演算オブジェクトを 追加するように変更することで、BinaryOperationの本質的な部分は一切変更せずに拡張できるようにします。 package jp.fujiyan.binaryoperation5; import java.io.BufferedReader; import java.io.EOFException; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arr... -
とりあえずインターフェース入門/では試してみましょう
演算を追加してみるパート2 それでは同様に、新しい演算「累乗」を追加してみましょう。 累乗 package jp.fujiyan.binaryoperation3.operator; import jp.fujiyan.binaryoperation3.IBinaryOperator; /** * 累乗です。 * * @author Fujiyan */ public class Power implements IBinaryOperator { private String expression; private String result; public String getChoiseString() { return "累乗"; } ... -
Google App Engine/キャッシュの計画
WebコミックLibraryhttp //web-comi.appspot.com/GAE/JとSlim3で作成してみた、各出版社から配信されているWebコミックをまとめて閲覧できるサイトです。只今、実験運用中… 概要 Datastoreの主要なQuotaである「Datastore Read Operations」と「Datastore Small Operations」を節約するために、どのようにMemcacheを活用すればよいか、についての考察です。 月並みな話から まずは、キャッシュの計画については「これが正解だ」というのはありません それがあれば、既にフレームワークとして提供されています… ということで、対象となるWebアプリケーションの特性に応じた、「最適解」としてのキャッシュの計画を考える必要があります。 アクセスされるデータの偏り方 データの更新... -
Facebook/Facebookページにアプリを設置する
WebコミックLibraryhttp //web-comi.appspot.com/GAE/JとSlim3で作成してみた、各出版社から配信されているWebコミックをまとめて閲覧できるサイトです。只今、実験運用中… 余談 Facebookって、利用したい機能に辿り着くまでがやったらワカリニクイのですが… Facebookページ(旧 ファンページ)に、アプリの画面を設置することが出来ます。例えば、 ページ作成者は、アプリのメイン画面で、訪問者に見せたい情報をメンテナンス ページ訪問者は、ページ作成者がメンテナンスした情報を閲覧可能 みたいなことが出来ます。多分。 CanvasとPage Tabs アプリ設定の[Facebook Integration]画面を見ると、[Canvas]と[Page Tabs]の2つのセクションがあります。 [Canvas]とは、アプリの... -
プラグイン/ニュース
ニュース @wikiのwikiモードでは #news(興味のある単語) と入力することで、あるキーワードに関連するニュース一覧を表示することができます 詳しくはこちらをご覧ください。 =>http //atwiki.jp/guide/17_174_ja.html たとえば、#news(wiki)と入力すると以下のように表示されます。 【グランサガ】リセマラ当たりランキング - グランサガ攻略wiki - Gamerch(ゲーマチ) 【まおりゅう】八星之紋章交換のおすすめ交換キャラ - AppMedia(アップメディア) Among Us攻略Wiki【アマングアス・アモングアス】 - Gamerch(ゲーマチ) マニュアル作成に便利な「画像編集」機能を提供開始! - ナレッジ共有・社内wikiツール「NotePM」:時事ドットコム - 時事通信 マニ... -
トップページ
Haskell系のコンテンツは、とりあえず雑記帳に移転しました。 WebコミックLibraryhttp //web-comi.appspot.com/GAE/JとSlim3で作成してみた、各出版社から配信されているWebコミックをまとめて閲覧できるサイトです。只今、実験運用中… コメント 更新履歴 とりあえずインターフェース入門 Yesod Haskell Struts 2 Slim3 JavaScript Google App Engine Android Facebook GWT OpenSocial Subversion Apache JSONIC Flex -
Subversion
WebコミックLibraryhttp //web-comi.appspot.com/GAE/JとSlim3で作成してみた、各出版社から配信されているWebコミックをまとめて閲覧できるサイトです。只今、実験運用中… バージョン1.6.17(Windows版) 前提 リポジトリparentとなるフォルダを決め、その下に複数のリポジトリを格納します 全リポジトリに対する認証を、同一パスワードファイルで管理します ダウンロード Apache Subversionからダウンロード左のメニューの[Getting Subversion]-[Binary Packages]を選択、[Windows]以下のいずれかからダウンロード 正式バイナリはCollabNet版だが、アカウント登録が必要。 筆者はWin32Svnを利用しています。 インストール(Win32Svn) ダウンロードしたSet... -
JavaScript/Functionオブジェクトあれこれ
WebコミックLibraryhttp //web-comi.appspot.com/GAE/JとSlim3で作成してみた、各出版社から配信されているWebコミックをまとめて閲覧できるサイトです。只今、実験運用中… JavaScriptでは関数もオブジェクト(Functionオブジェクト) functionステートメント 通常、JavaScriptで関数を定義する場合に用いる。 あまり、Functionオブジェクトとかは意識してないかと思います。意識しなくても良い関数の定義方法。 // 定義 function foo() { alert("test"); } // 呼び出し foo(); function演算子とfunction式 function演... -
とりあえずインターフェース入門/オブジェクト指向プログラミング心得
まず初めに、僕が日頃から感じていることをツラツラと書いてみます…。 なお、あえて極論を並べているので、いろいろとツッコミどころはあると思いますが(汗 一つ、オブジェクト指向以前のプログラミング手法も重要だ オブジェクト指向プログラミングのスタイルと、それ以前のプログラミングスタイルを別物と考えてしまう方も時々いますが、 クラス内部でのメソッド分割やメソッド内の処理記述については、構造化手法等で培われた知見を十分に生かす必要があります。 その上で、クラス間での責務の配分等について、オブジェクト指向独自のノウハウが追加される雰囲気です。 つまり、プログラミング自体の経験が浅い方は、先達の意見に耳を傾け、また過去のプログラミング言語の経験が豊富で、 これからオブジェクト指向言語を学ぼうとする方は、過去の経験は全然無駄にならないので自信をもってください。 一つ、オブジ... -
GWT
WebコミックLibraryhttp //web-comi.appspot.com/GAE/JとSlim3で作成してみた、各出版社から配信されているWebコミックをまとめて閲覧できるサイトです。只今、実験運用中… 参考サイト GWTの本家 Google Web Toolkit - Google Code 日本語ページは更新が遅いので、英語ページが良い GWTについては、とりあえずここを見てみよう Google Web Toolkit (GWT) 入門 構成要素 Module Organizing Projects - Google Web Toolkit - Google Code GWTアプリケーションの構成単位。GWTアプリケーション=1つ以上のModuleの集まり。1アプリケーションを1つのModuleで表すのも可能だけど、それだとModule定義が肥大化す... -
Android
(作成中) WebコミックLibraryhttp //web-comi.appspot.com/GAE/JとSlim3で作成してみた、各出版社から配信されているWebコミックをまとめて閲覧できるサイトです。只今、実験運用中… 参考サイト 公式サイト Androidで動く携帯Javaアプリ作成入門 Tech Booster 逆引きAndroid入門 ActivityとView 参考 Android Developers 世界を目指せ!Androidアプリ開発入門 Activityは、画面を表す。 ViewはUIを構成する部品。ActivityにViewを設定することで、画面を構築する。 Viewの構成方法は2つ(静的)レイアウトXMLを記述してコンパイルしたものを設定。お手軽。通常はこっち (動的)Viewオブジェクトを適宜生成して設定。前もって作成する... -
Facebook/Facebookアプリを作成する
WebコミックLibraryhttp //web-comi.appspot.com/GAE/JとSlim3で作成してみた、各出版社から配信されているWebコミックをまとめて閲覧できるサイトです。只今、実験運用中… ここでは、「Facebook.com上のアプリ(Apps on Facebook)」を取り扱います。 要するに、mixiアプリのFacebook版です。 参考サイト 公式サイト プロジェクトマネジメント10.0:ITmedia オルタナティブ・ブログ Facebookアプリのページ構成の解説 自前のサーバにアプリを配備 結局、Apps on Facebookは、外部サーバに配備したアプリをFacebook上に埋め込む感じ? ということで、まずは、動かしたいアプリを作って、自前で用意したサーバに配備しましょう。 こんなとき、GAEが便利 とりあえず、GA... -
Facebook
Facebookアプリを作成する Facebookページにアプリを設置する -
プラグイン/編集履歴
更新履歴 @wikiのwikiモードでは #recent(数字) と入力することで、wikiのページ更新履歴を表示することができます。 詳しくはこちらをご覧ください。 =>http //atwiki.jp/guide/17_117_ja.html たとえば、#recent(20)と入力すると以下のように表示されます。 取得中です。 -
プラグイン/アーカイブ
アーカイブ @wikiのwikiモードでは #archive_log() と入力することで、特定のウェブページを保存しておくことができます。 詳しくはこちらをご覧ください。 =>http //atwiki.jp/guide/25_171_ja.html たとえば、#archive_log()と入力すると以下のように表示されます。 保存したいURLとサイト名を入力して"アーカイブログ"をクリックしてみよう サイト名 URL -
メニュー
メニュー トップページ コメント とりあえずインターフェース入門 Yesod Haskell Slim3 JavaScript Google App Engine Android Facebook GWT OpenSocial Struts 2 Subversion Apache JSONIC Flex WebコミックLibraryについて 公式サイト Yesod Haskell Slim3 JavaScript - MDN App Engine for Java Android Developers Google Web Toolkit Struts OpenSocial OSDE ToDo ここを編集 -
Slim3/とりあえずSlim3アプリケーションを作ろう/何はともあれ、プロジェクト作成
何はともあれ、プロジェクト作成 メニューの[File]-[New]-[Other...]を選択して、ダイアログを開きます。ダイアログの[Wizards]の中から、[Slim3]-[Slim3 Project]を選択して[Next]ボタンをクリック Slim3プロジェクト作成のダイアログが表示されます。[Project name]には、作成するプロジェクト名を入力します。Eclipseのワークスペース上に、入力した名前でプロジェクトが作成されます。今回は"BookList"としてみます。 [Root Package]には、プロジェクトで作成するソースを格納する全パッケージの、ルートとなるパッケージ名を入力します。Slim3プロジェクトのソースは、全てここで指定したパッケージ配下(サブパッケージ含む)に存在することが必要です。今回は、"jp.fujiyan.bo... -
Slim3/とりあえずSlim3アプリケーションを作ろう/Modelを作る
Modelとはなんそや Slim3における「Model」とは、Datastoreに永続化する対象となるクラスです。今回のアプリでは、(さしあたり)BookクラスとAuthorクラスに当たります。 或いは、DatastoreのEntityをタイプセーフにしたものです。 Model作成 プロジェクトのルートにある、build.xmlをダブルクリックしてエディタに表示します。 エディタ本体はまぁ無視して、Outlineビューに注目。表示していなければ、メニューの[Window]-[Show View]-[Outline]で表示しましょう。 Outlineビューから[gen-model-with-dao]targetを選択して右クリック。コンテキストメニューの[Run As]-[Ant Build]を選択します。「with-dao」とあるように、このtargetはModelと一緒に、そのMo... -
Slim3/環境構築とプロジェクト作成
WebコミックLibraryhttp //web-comi.appspot.com/GAE/JとSlim3で作成してみた、各出版社から配信されているWebコミックをまとめて閲覧できるサイトです。只今、実験運用中… Eclipse 4.2(Juno) + JDK 7 + JDK 6 + Slim3 1.0.16 (2012/07/21) 流石に、今時はJDK 7を用いることも多いかと思いますが、GAE/JはJDK 6でビルドする必要があります。 Eclipse 4.2もリリースされ、Slim3も久々に更新されましたし、JDK 7をEclipseのランタイムとしつつ、GAE/Jのビルド用にJDK 6を用いる設定をご紹介。 ※たまに、実行時に、指定したプロジェクトとは異なるプロジェクトが実行されることもありますが、Eclipseを再起動すれば大丈夫なようです。 手順 ... -
とりあえずインターフェース入門/ようやくクラス継承の登場
同じこと書くのは面倒くさい 先に作った、各演算のクラスですが、どうにもこうにも同じような記述が目立ちます。 同じインターフェースを実装するクラスというのは、大枠では実装が似てしまうことは良くあります。 そこで、共通する内容については基底クラスとしてまとめ、違う部分についてのみ実装することで楽をします。 まずは基底クラスを抽象クラスとして定義 package jp.fujiyan.binaryoperation4; /** * 演算子の標準的な実装です。 * * @author Fujiyan */ public abstract class StandardOperator implements IBinaryOperator { protected String expression; protected St... -
Slim3/Slim3でGWT
WebコミックLibraryhttp //web-comi.appspot.com/GAE/JとSlim3で作成してみた、各出版社から配信されているWebコミックをまとめて閲覧できるサイトです。只今、実験運用中… Eclipse環境設定 Slim3に記載している内容と同じ プロジェクト作成 基本的に、公式サイトのGetting Started with GWTの通りに行う。だいたい以下の通り。 ダウンロードしたzipを解凍する。 解凍して作成されたフォルダ"slim3-blank"を、Eclipseのワークスペースにインポートする。 インポートしたプロジェクトの名前を、Refactorで変更する。 プロジェクトのコンテキストメニュー→[Properties]→[Resource]の[Text file encoding]をUTF-8にして、デフォルトのファイル... -
Slim3/とりあえずSlim3アプリケーションを作ろう/蔵書一覧アプリケーション
サンプルアプリの概要 今回は、自身の蔵書一覧を作成し、それを一般公開するという、イマイチ利用目的のわからないアプリをサンプルにします。 アプリのイメージ 管理画面が存在し、そこで蔵書に関する情報の改廃(登録/変更/削除)を行います。管理画面が使えるのは、自分自身のみで、一般の人は利用できません。 一覧画面が存在し、蔵書の一覧が表示されます。一覧画面には、自分自身以外の、一般の人も利用できます。 モデリング ドメインクラスとして、本(Book)と著者(Author)を定義します。 本(Book) 本にはタイトル(title)が付けられます。 著者(Author) 著者には人名(name)があります。 本の冊数は、本アプリの対象外とします。同じ本が複数あっても知りません…。 関連 1冊の本には、複数の著者が存在する場合があります。 1人の著者は、複数の本を執筆する場合があります。 ... -
OpenSocial
WebコミックLibraryhttp //web-comi.appspot.com/GAE/JとSlim3で作成してみた、各出版社から配信されているWebコミックをまとめて閲覧できるサイトです。只今、実験運用中… 参考サイト 公式サイト OSDE公式サイト 環境構築 OSDEをEclipseにインストールする Installation Guideを参照 基本的にインストール後、デフォルトの状態で良いはず サンプルデータベースの作成 OpenSocialアプリケーション実行にはPeopleが必要なので、とりあえずサンプルデータベースを作ることで、自分で作る手間を省く。 Create people to Shindig database as sample dataを参照 作る前にShindigを起動しておくこと。 OpenSocialでGWT 参考 Buildin... -
WebコミックLibraryについて
大体、本Wikiで紹介している内容で作成しています。 むしろ、作りながらわかったことをwikiに反映したりしてます… データの更新は、毎日定時に、cronでクローラーを起動させています。 正確には、各サイト毎に作成したクローラーをTask Queueに突っ込む処理を、cronで起動させています。実際のクローリングは、それぞれのTaskで実施されます。さらに言えば、サイト内の作品単位でクローリングを分割しています。 とあるサイト/作品のクローリングで例外発生しても、その他のサイト/作品のクローリングは影響なく実行完了できるようにするためです。 あと、作品毎にクローリングを分割して、Task Queueの設定でTaskの処理間隔をある程度間をあけることで、クローリング先のサイトの負荷を分散させます(させてるつもり…)。 Memcacheとか使ってないし、プログラムの最適化とかも考え... -
Google App Engine
WebコミックLibraryhttp //web-comi.appspot.com/GAE/JとSlim3で作成してみた、各出版社から配信されているWebコミックをまとめて閲覧できるサイトです。只今、実験運用中… 参考サイト 公式サイト(Java) Slim3 Slim3へ appcfg My Applicationsに作成した、GAEアプリケーションの管理を行うコマンドラインツールです。 Google Plugin for Eclipseの場合、SDKがplugins/com.google.appengine.eclipse.sdkbundle_x.x.x.../appengine-java-sdk-x.x.xに存在するので、そのbinフォルダ内にappcfg.cmdがあります。 通常は、環境変数GAE_HOMEに上記のplugins/com.google.a... -
とりあえずインターフェース入門
WebコミックLibraryhttp //web-comi.appspot.com/GAE/JとSlim3で作成してみた、各出版社から配信されているWebコミックをまとめて閲覧できるサイトです。只今、実験運用中… 目標 オブジェクト指向的技法を用いないプログラムから、用いたプログラムへのリファクタリングを通して、 インターフェース(interface)の活用法とフレームワーク(framework)の概念をお伝えします。 対象 インターフェースの使い道がピンとこない方 インターフェースと抽象クラス(abstract class)の使い分けがピンとこない方 オブジェクト指向の何がウレシイのかピンとこない方 コンテンツ オブジェクト指向プログラミング心得 サンプル~二項演算 古典だって重要 じゃあ何が問題? じゃあオブジェクト指向ならどうする? では試してみましょう ようやくクラ... -
Slim3/とりあえずSlim3アプリケーションを作ろう/Daoが現れたよ
Daoの出現 [gen-model-with-dao]targetでModelを作成すると、[Root Package]直下に"dao"というサブパッケージが作成され、その中に[作成したModel名]Daoというクラスが自動生成されます。BookDaoの場合 package jp.fujiyan.booklist.dao; import org.slim3.datastore.DaoBase; import jp.fujiyan.booklist.model.Book; public class BookDao extends DaoBase Book { } 一見すると、何にもなさそうですが、スーパークラスであるDaoBaseに、Datastoreでの操作に必要なメソッドが一通... -
Slim3/とりあえずSlim3アプリケーションを作ろう/Controllerで画面作成
Controllerとはなんぞや Controllerは、「Slim3としては」URLに関連付けられたアクションであり、ブラウザ等からそのURLでリクエストが送られた際に実行されます。通常は、Controllerで処理が実行された後、その結果をjspで出力します。 ということで、Controllerを作成する際には、通常はControllerクラスとjspのセットで作成します。 「Slim3としては」という但し書きをしましたが、一般論としてのControllerの役割も勿論あります(そのうち説明の予定)。 URLのパス階層と、Controllerのサブパッケージ階層が対応するように作成します。クラス名は、URLのパス階層の末尾(先頭は大文字)+Controllerとします。 URLのパス階層の末尾がスラッシュで終わる場合は、IndexControllerとします。 [Root Packag... -
Apache
WebコミックLibraryhttp //web-comi.appspot.com/GAE/JとSlim3で作成してみた、各出版社から配信されているWebコミックをまとめて閲覧できるサイトです。只今、実験運用中… バージョン2.2.14 ダウンロード The Apache HTTP Server Projectからapache_2.2.14-win32-x86-no_ssl.msiをダウンロード インストール ダウンロードしたapache_2.2.14-win32-x86-no_ssl.msiを実行ウィザードで現れる下記の[Network Domain][Server Name]については、外部公開しなければ適当で、[Administrator s Email Address]は自身のメールアドレスを設定(どうせ後から変更可能) 設定 -
Flex
WebコミックLibraryhttp //web-comi.appspot.com/GAE/JとSlim3で作成してみた、各出版社から配信されているWebコミックをまとめて閲覧できるサイトです。只今、実験運用中… ダウンロード 参考 てっく煮ブログ Adobeのサイトから入手 2種類のパッケージあり「Adobe Flex 3 SDK」が通常「Flex 3 SDK」と呼ばれているもの後述の「Open Source Flex SDK」に加えて、ソース公開されていないコンポーネント(Flash PlayerやAIR実行環境等)が含まれている Adobe - Adobe product license agreements と Adobe - Products Third Party Software Noticesに合意する必要あり 「Open Source Flex SDK」MPLに同... - @wiki全体から「文字列の部分一致検索とページング」で調べる