サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
gpsoft.dip.jp
Clojureでは、変更可能(mutable)なオブジェクトは、VarとRefとAgentとAtomの4つだけです。本記事では、その中の1つ、Varオブジェクトについて整理します。 Varを作るにはdef特殊フォームを使います。defは、生成したVarオブジェクトを返します。 user=> (def foo "Hello") #'user/foo defの結果として表示された「#'user/foo」は、「userという名前空間の、fooという名前のVarオブジェクト」という意味です。 上記コードでは、fooという名前のVarを作り、値として"Hello"という文字列をバインドしています。図示すると下記のような関係になります。 点線は名付け対象を示しています。実線矢印はバインド先を指します。このように、Varオブジェクトは、何らかの値(Stringオブジェクトとか関数オブジェクトとか)を指す
2014年5月19日に、2冊目の電子書籍「Clojureでトップダウン開発」をAmazonで出版しました。100円です。 関数型プログラミングの基礎知識については、最初の書籍か、「関数型プログラミング概論」を参照して下さい。 本書では、Clojure向けのテスティングフレームワークMidjeを使ったトップダウン開発の流れを紹介します。教材としてシンプルな数当てゲームを開発します。小規模ながらGUIを備えたデスクトップアプリです。読者として、Clojureと関数型プログラミングへの入門を済ませたプログラマを想定しています。テーマは地味ですが、1つのアプリをゼロから作りあげるので、「関数型プログラミングの基本は理解できたけど、どうアプリを作ればいいのか分からない」という方の参考にもなると思います。 なぜトップダウンなのか? 本書を書くきっかけは、動画サイトVimeo.comで、Midjeの作者
2013年9月28日に、電子書籍「Clojureによる、初めての関数型プログラミング」をAmazonで出版しました。スマホ/タブレットのKindleアプリや、Kindle端末で読むことができます。 無料本として出すつもりでしたが、出版直前になって価格を0円に設定できないことを知り、やむを得ず100円としました。別のサイト(無料本が可能なサイト)で出すとか、本サイトで無料配布することも考えましたが、当面はAmazonでの販売に絞るつもりです。 コーディングから執筆、Kindle用のレイアウト調整、表紙デザインなど、トータルで約1ヶ月かかりました。章見出しを決めたあとは、わりと行き当たりばったりで書きましたが、偶然にも、教材に使ったゲームのソースを一通り全て解説したところで書き終わりました。ちなみに、この間、他の仕事はしてません。食って、寝て、書いて、テレビ見て、対戦ZOOKEEPERで遊ぶ、
まぁ前置きはともかく、Portageシステムとemergeコマンドについて、要点をメモっておきます。使ったことのないオプションも多く、man pageだけではイマイチ理解できないやつ(特にパッケージの削除系)もあります。 emergeの、どのアクションにも使えるオプション --pretend(-p) そのアクションを行うふりをする。 --verbose(-v) 表示の情報量を増やす。 --deep(-D) -uと共に使い、(間接依存も含めた)完全な依存関係を考慮する。 --newuse(-N) インストールした後で起きたUSEフラグの変更を考慮する。 --oneshot(-1) worldに加えない。使うのはemerge自体をemergeするときくらいか? --changelog(-l) -pと共に使い、更新履歴を表示する。 --nodeps(-O) 依存関係を無視する。 --onlyde
タイトル通りですが、Lispファミリーの言語を勉強する前に知っておきたい基礎知識をまとめます。どれも入門書で言及されるような事柄ですが、説明が欠けていたり不十分だったりして、納得できないことも多いので、自分用にまとめてみました。「勉強する前に」と言うより、勉強するときに併用すると良いかもしれません。 Lispには様々な方言があります。まとめて「Lisp族」と呼んだりします。例を挙げます。 Common Lisp(CL) 統一Lisp規格みたいなもの? Lisp処理系が乱立して、バラバラに機能強化が行われた状態を改善しようとした成果。 Scheme 軽量コンパクトを信条としたLisp仕様。Common Lispと共に、Lisp方言の主流と言える。 Gauche 川合史朗氏によるScheme処理系。独自の機能拡張あり。 Clojure JVM上で動くLisp方言。()だけでなく、[]や{}も使
This page does not exist. Feel free to create it yourself :-)
仕事で、Webサイトを自動巡回するプログラムを書くことがあり、rubyでのhttp通信やスクレイピングについて調べました。そのイロハをメモっておきます。 ruby Ruby 1.9.3を使います。 C:\WINDOWS\system32>ruby --version ruby 1.9.3p194 (2012-04-20) [i386-mingw32] Net::HTTPとURIライブラリ http通信には、標準ライブラリのNet::HTTPを使います。このライブラリのインターフェイスは盛り沢山で、GETやPOSTリクエストを送る方法が何通りもあります。 クラスメソッドのget クラスメソッドのget_response クラスメソッドのpost_form インスタンスメソッドのget インスタンスメソッドのpost インスタンスメソッドのrequest インスタンスメソッドのrequest_
AndroidのAPIレベル8(Android 2.2)で導入されたデータ・バックアップ。まだ使ったことないけど、ひとまずDev Guideを読みながらメモしておきます。 この記事は、まだ書きかけです。 概要 データとsettingsをクラウドに保存 端末リセット後や新しい端末にアプリを再インストールすると自動リストア バックアップはアプリから要求できる バックアップ時はandroid.app.backup.BackupManagerからアプリへデータの問い合わせが来る a backup transportがクラウドへ送信する リストア時は、Backup Manager→a backup transport→アプリ リストアもアプリから要求できるがその必要なないだろう(システムが面倒を見るので) 同期のためのサービスではない Backup ManagerのAPIを使わずにデータを読み書きす
この記事は、まだ執筆途中です。 Androidの2つのアニメーションAPIのうち、Property Animationについて。 Android 3.0で導入された 従来のアニメーション(View Animation)よりも柔軟性が高い viewオブジェクト以外にも適用できる 任意のオブジェクトの任意のプロパティを時間経過と共に変化させる 見た目がアニメするだけでなく、オブジェクトそのものがアニメする(View Animationの場合は、例えばボタンが移動するアニメなら、ボタン自体は移動しないので、移動中のボタンをタッチできない) View Animationよりもセットアップに時間がかかりコードが複雑になるのが欠点 以下の情報を制御する。 Duration 経過時間を指定できる。デフォルトは300ms。 Time interpolation ある経過時刻におけるプロパティ値を計算するメ
Unicodeといえば、Shift_JISやEUC-JPと並ぶ文字コードの一種です。では、UCS-2やUTF-8は何なのでしょう? Unicodeとは似て非なるもの? Unicodeの別名? その辺の違いを整理しつつ、Javaプログラム内でUnicode文字列を扱うための基礎知識をまとめてみます。 .NET Frameworkでの文字コードの扱いについては、こちらの記事を参照して下さい。 文字コード 「文字コード」という言葉には、いろんな意味があります。語彙の定義は一つかもしれませんが、実際にはいろんな意味を持って使われるのです。なので厳密な定義を覚えようとせず、結局は文脈で判断する方が良いと思います。ここでは、「文字コード」が意味しうるものを3つ挙げておきます。 文字と数値の対応関係 ある文字集合(文字セット)を定め、その各文字に一意な数値を対応付けた体系のことを「文字コード」と呼ぶ場合
タイトルのままです。主に公式サイトのチュートリアルを参考にしました。環境は、Gentoo、Apache2、Tomcat6、Struts2です。 strutsにはパッケージという概念があります。文脈によりjavaのpackageとは区別できると思いますが、念のため、strutsのパッケージは「パッケージ」や<package>と表記し、javaのpackageはpackageと表記します。 長くなったので、前後半に分けました。本記事は前半です。 Struts2のメカニズム Struts2アプリのディレクトリ構成例 Hello, world的アプリ Interceptor デバッグ メッセージリソース 後半は、こんな感じ: convention-plugin(struts2-convention-plugin.jar) Exception JSPのタグ フォーム関連のタグ Validation
DevGuideの"App Widgets"などを読みつつ、要点をメモしていきます。 この記事は、まだ書きかけです。 Widgetとは 他アプリ(HOMEアプリとか)に埋め込めるview viewを提供する側がApp Widget provider viewを受け入れる側がApp Widget host 基本 xmlでviewのレイアウトを定義 android.appwidget.AppWidgetProviderInfoが、xmlで記述された、widgetのメタ情報を保持 android.appwidget.AppWidgetProviderの派生クラスで、widgetへのイベント(broadcast event)を受け取る AppWidgetProviderは、BoradcastReceiverの派生クラス setting用のActivityを実装しても良い マニフェストにAppWid
Javaに無名関数という機能はありませんが、無名インナークラスを使えば、それっぽいことはできます。あと、クロージャと高階関数についてもちょっとだけ。 [2014-10-16]Java8ではラムダが使えるようになってますね。モナド的な操作(flatMapとか)も導入されてます。 定石 インターフェイス(あるいは抽象クラス)を使って、実装クラス(あるいは子クラス)に、あるメソッドの実装(あるいはオーバーライド)を強要する 無名インナークラスとして、そのインターフェイス(あるいは抽象クラス)の実装クラス(あるいは子クラス)を定義 定義と同時にオブジェクト生成(new)する 必要に応じてクロージャに仕立てる このようなパターンを見つけたら、このメソッドは無名関数的な存在と考えて良いと思います。 例題 本記事の説明で使う例題について。GUIクラスライブラリを作っており、その中のButtonクラスを設
Androidアプリで、フリックによるページ切り替えや自動スクロールをサポートするための情報をまとめます。「フリック」は、APIの中ではflingと呼ばれています。「投げ飛ばす」みたいな意味でしょうか。ずっとflyの現在進行形だと勘違いしてました(それはflyingでした)。 サンプルアプリ HOMEアプリなんかに良く見られる、左右のフリックでページ切り替えを行うサンプルを作りました。ページ境界でスクロールが止まります。 こちらは、ページ境界に関係なく、勢いが無くなったら自然に止まるパターンです。 本記事に掲載したソースは要点のみを抜粋した不完全なものです。サンプルアプリの完全なソースコードはGPソフトの書庫からダウンロードできます。 準備 レイアウトは、ImageViewを横に3枚並べてLinearLayoutに入れたものを使っています。 <?xml version="1.0" enco
ここはGPソフトのWikiです(管理者しか編集できない、ひとりwikiですが)。主にサーバ管理やプログラミングに関する情報を集めています。自分の体験や調査結果に基づいていますが、情報の信頼性は保証できませんのでご承知おき下さい。 左サイドに、主なコンテンツへのリンクがあります。また、Wiki全体の構造を見るにはサイトマップをどうぞ。 2019-10-09 新しい記事は、「GP Tech Memo」に投稿してます。 2017-12-16 6冊目は「Vimがつらい」100円です。「Gitがこわい」の姉妹書ですな。 2017-05-14 スピンオフ「GP Tech Memo」開設しました。Clojure製の静的サイトジェネレータCryogenを使って、markdownファイルから生成しています。 2016-05-16 5冊目は「Gitがこわい」100円です。 2015-03-31 4冊目の電子書
「初めてのRuby(Yugui, オライリー)」の中に、オブジェクト指向にはクラスベースとプロトタイプベースの2種類がある、とあります。これを読んだとき、プロトタイプベースって何? と思ったのですが、調べてみると、JavaScriptがその代表ということでした。 その後「JavaScript: The Good Parts(Douglas Crockford, オライリー)」を読み、使いこなす自信は無いものの、プロトタイプベースのオブジェクト指向については理解できたと思いますので、ここでまとめておきます。 表記 obj1がオブジェクトの場合、本稿ではこれを、オブジェクト名と点線と矩形を使って以下のように表記します。 オブジェクトobj1が別のオブジェクトobjBaseをプロトタイプとする場合、本稿ではこれを、オブジェクト間の矢印を使って以下のように表記します。 「オブジェクトAが別のオブジ
本稿では、AndroidのHandlerクラスやLooperクラスを取り上げます。これらは、Androidでイベントドリブンのプログラムを書くときに欠かせないものです。 イベントドリブン 死語でしょうか。もしかしたら最も古いデザインパターンの一つかもしれません。以下のような特徴を持ちます。 あるスレッドが、無限ループを持つ ループでは、メッセージを待ち、メッセージが来たらそれを処理する 送られたメッセージはキューに蓄積され、届いた順に処理される この無限ループのことを「メッセージループ」、メッセージを処理するコードのことを「メッセージハンドラ(あるいは単にハンドラ)」、キューのことを「メッセージキュー」と呼びます。また「メッセージ」のことは「イベント」と呼ぶ場合もあります。 イベントドリブンで良く見かける問題 例えば「ボタンがタッチされた」というメッセージに対するハンドラを書いているとしま
私が新しいプラットフォーム上でプログラミングするとき、まず知りたいと思うのは、それがどんなスレッドモデルを採用しているのか、です。言い換えると、OSのスケジューリング対象は何かということです。Windowsならスレッドだし、μITRONならタスクということになります。 JavaベースのAndroidの場合は、java.lang.Threadがスケジューリング対象のはずですが、リファレンスマニュアルなどを読んでいるとtaskという単語に出会うこともあります。そこで、Androidのtaskについて整理します。 ※この記事で言うtaskは、android.os.AsyncTaskとは別の意味のtaskです。 taskとは 結論から言えば、Andoridで言うtaskはactivityをグループ化したものです(OSスケジューリングとは全く関係ありません)。DevGuideでは、「ユーザの視点から
このページを最初にブックマークしてみませんか?
『TOPページ | GPソフト』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く