サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Pixel 9
nanjakkun.hatenadiary.org
前回の続き 前回挙げた16種類の論理演算と、 {True, False}の2つの値からなる集合とがなす16種類の代数構造のうち、 どれがモノイドや群なのかを調べた。 以下S = {True, False}とする 1. 全てはマグマである 演算の結果がやはりSに属するので16種類全てがマグマである。 これは自明。 2. 8種類が半群である。 結合法則を満たすもののみが半群となる。 Sと以下の演算の組が半群。 TAUTOLOGY, CONTRADICTION, AND, OR, XOR, XNOR, PROPOSITION P, PROPOSITION Q 3. 4種類がモノイドである。 2.の結果のうち、単位元を持つもののみがモノイドである。 Sと以下の演算の組が半群。 AND, OR, XOR, XNOR 4. 2種類が群である。 3.の結果のうち、任意の元について逆元が存在する場合、群で
Wikipedia: クロージャ http://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AD%E3%83%BC%E3%82%B8%E3%83%A3 【1】 x <- 10 func1 <- function () { cat(x) # 10と出力される } 関数内から外の変数にアクセスできます。 【2】 x <- 10 func1 <- function () { x <- 20 cat(x) # 20と出力される } func1() cat(x) # 10と出力される 関数内で定義された変数(ローカル変数)と同名のグローバル変数があった場合、 ローカル変数とグローバル変数は別々の値を保持します。 関数から抜けるとローカル変数は破棄されます。 【3】 x <- 10 func1 <- function () { x <<- 20 } func1() ca
代数を勉強する傍ら、プログラミングの世界ではその代数の表現がどう表せるかを Scalaで実装してみようと思います。 そもそも代数とは何か、とかいうようなことがあまり分かっていないレベルなので、 間違いがあったりするはずなので鵜呑み厳禁。 訂正・助言・ツッコミ頂けると有難いです。 既にScalaにはScalazという関数型データ構造のためのライブラリが存在しますが、 自分のやりたいことと、Scalazの機能では違うってのと (Scalazはあくまで関数型プログラミングのための圏論の構造を提供するので)、 自分の勉強のためにScalazは参考にしつつもコードを書き下ろしたいと思います。 (追記:Twitter製のalgebirdという代数のライブラリもあとから発見しました) ※https://github.com/twitter/algebird マグマ(Magma) 半群(SemiGroup
import java.net.URL import java.net.URI // 末尾スペース入りの間違ったURL val url = new URL("http://example.com ") とするとjava.net.MalformedURLExceptionが投げられると期待していたが投げられない。 java.net.URLはURLに含まれてはいけないいくつかの特殊文字が含まれている場合に、 例外を投げずにスルーしてしまう。 代わりに val uri = new URI("http://example.com ") とするとjava.lang.IllegalArgumentExceptionが投げられる。 じゃあURIならいいのかって言うと・・ val uri = new URI("http:./hoge") みたいなありえないドメインに属するURLでも例外が投げられない。 こ
ScalaでCSVファイルをパースしたいと思います。 CSVファイルっつっても形式がいっぱいあるんですが、ここでは 「区切り文字はカンマで各項目はダブルクオートで囲まれているのと囲まれていないのが混ざっている」 とします。 例)1,2,3,"4",5,"6,6",7 ダブルクオートで囲まれていなければ、 """1,2,3,4,5,6,7""".split(',') みたいな感じで簡単にできますが、 ダブルクオートで囲まれた文字列の中にカンマが入っていると正しくパースできません。 ParserCombinator使ってパースしてたりする人もいますが、 http://stackoverflow.com/questions/5063022/use-scala-parser-combinator-to-parse-csv-files 簡単に自分で書いてみようかと。 object CSVParser
Q1 AndroidでJavaScript動かない!助けてママン! A1 たまによく読み込んでくれないことがあります。そっとリロード。 それでも解決しなければQ2へ。 Q2 動け!動くんだJavaScript! A2 変な文字入ってない?全角スペースとか混じってると起こりやすいです。 Q3 AndroidでJavaScript動いたけど文字化けしまくるんだけど・・ 文字コードは全部UTF-8だしヘッダにも文字コード指定してるのに・・ A3 ベーシック認証下だと何故かこの現象が起こります。 http.confにそっと以下の一行追加。 AddType "application/x-javascript; charset=UTF-8" .js参考:http://www.rottel.net/kuwa/124700 Q4 まだAndroidでJavaScript文字化けするんだけど? A4 jQu
だいぶ間が空いたけどオライリーの「集合知プログラミング」をScalaで書いていきます。 前回はユークリッド距離だけやったけど、今回は2つのベクトル間の距離を表す係数をいくつか取り上げます。 そういや他にも「集合知プログラミング」をScalaで書いている方を見つけました。 http://d.hatena.ne.jp/plasticscafe/20110105/1294199932 めんどくさいのでそれぞれの係数(距離)の説明はWikipediaに譲ります。 ■Jaccard係数 http://en.wikipedia.org/wiki/Jaccard_index 要素が真偽値からなるベクトル同士の比較に使う。 ■Tanimoto係数 http://en.wikipedia.org/wiki/Jaccard_index Wikipediaの記事内ではJaccard係数のページ内で紹介されている
一年ぶりくらいにScalaでAndroid開発をしてみることにした。 sbtのバージョンとかも上がってるのでプロジェクト生成の仕方なんかも大分変わってるのでそのへんを書こうかと。 開発環境は CentOS 6.2 64bit jdk 1.6.0.30 scala 2.9.0.1 sbt 0.11.2 ■Android SDKインストール ここ http://developer.android.com/sdk/index.html からアーカイブ持ってきて好きな場所に解凍。 (例:/usr/local/src/android-sdk-linux) パスを通す vi /etc/profile 末尾に以下追加 export ANDROID_SDK_HOME=/usr/local/src/android-sdk-linux export PATH=$PATH:$ANDROID_SDK_HOME/t
Scalaのソースを追っていたら変な記号が多くて?な状態になります。 ってことで備忘のためにScalaで使う記号をメモしておきます。 四則演算、剰余 + - * / % ビット否定、論理否定 ~ ! ビット演算 & | ^ && || 比較 < > <= >= ブロック {} コメント // …このへんまでは普通。 全般 _ : ステークホルダ * : 可変長引数 ex. def echo(args: String*) => : 関数 ex. (x: Int) => x + 1 <- : 集合から個々の要素を取り出す ex. for(arg <- args) println(arg) Any ==, !=: Javaのequals, not equlas isInstanceOf: 型比較 asInstanceOf: キャスト AnyRef ## : hashCode eq, ne: Ja
2ヶ月近くブログをサボっていたけれど、トップがいつまでも4月馬鹿なのもアレなので、 久しぶりに更新。 ScalaとJOGLを用いたゲームをダラダラと作成途中。 Scala勉強会でもScalaで作ったゲームの発表をされている方がいます。 @halcatさん http://www.slideshare.net/SanshiroYoshida/scala-6833319 @chimerastさん http://www.slideshare.net/chimerast/scala-realtime3dprogramming JOGLはそのままだとかなり低レベルなので、ライブラリを使った方が楽。 ・LWJGL(Light Weight Java Game Library) JOGLを使ったゲームを作るためのライブラリ。2Dも3Dも作れる。 ・Slick 2Dゲーム専用。LWJGLを使っている。 ・G
Scala + Androidで開発されている方はちらほら居て、ブログや勉強会で発表されている。 先週もScala勉強会in渋谷第11回でid:shomah4aさんが発表されたのを聞いてきた。 http://scala-users.org/shibuya/index.php?title=%E5%8B%89%E5%BC%B7%E4%BC%9A%E7%AC%AC11%E5%9B%9E IDEがないと(あっても?)プログラミングできないヘタレが、 Eclipse( + Scala IDE for Eclipse)とsbt(Simple Build Tool)を併用してみた。 ビルドは全部sbt任せで、Eclipseはエディタとして使ってコード補完とリアルタイム文法チェックに使ってるだけ。 まあ要はAndroidプロジェクトに限らず、sbtプロジェクトとEclipseプロジェクトは お互い悪影響を
Scala de Design Patternのまとめ。 Gang of Fourの23パターンとそれ以外のデザインパターンが少しある。 結構ふざけた例とか分かりにくい例が多いけどそれはご愛嬌。 Scalaの言語自体の機能やライブラリが強力なので、 ここで挙げたやり方以外にもっと色々なやり方があるはず。 GoFデザインパターン 生成に関するパターン Abstract Factory Builder Factory Method Prototype Singleton 構造に関するパターン Adapter Brige Composite Decorator Façade Flyweight Proxy 振る舞いに関するパターン Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer Stat
Mirahというプログラミング言語がある。 JRubyの作者、Charles Nutterさんが作った、JVM上で動作する言語だ。 JVM上で動く言語も、Java, Groovy, JavaScript(Rhino), Python(Jython), Ruby(Jruby), Clojure, Scala, Pnuts, Sleepと色々種類が増えたもんだ。 公式サイト http://www.mirah.org/ Charles NutterさんのBlog http://blog.headius.com/2009/08/introducing-surinx.html 資料を探すと、John WoodellさんというGoogleに勤めている人が沢山スライドを作っていた。 どうも先日のApp Engine ja night #10でも発表したらしい(来日したのかオンラインだったのかは知らないが
今月コード載せてないなってことで。 以前T2のプラグイン使った例書くとか言って放置していたので書く。 っていうか昨日のsoundTrickさんのエントリ見て、以前作ったのを思い出した。 http://d.hatena.ne.jp/soundTrick/20100321/1269157700 Struts等のFrameworkと違ってT2のポリシーとしてはValidatorは用意されてない。 http://d.hatena.ne.jp/shot6/20080920#1221878799 ので、T2を使ったWEBアプリでValidationを行おうと思うと、 ・T2と連携している別のFrameworkのValidatorを使う ・自前で実装 のどちらかになる。 今回はDIコンテナ等を用いてないケースで 自作アノテーションとT2プラグインを使った例を書いてみる。 XMLを使っても勿論書けるが、T
Google App Engine for Java上のWEBアプリでPDFを出力しようと思ったのだが、 色々問題が出てきた。 ・iText 5 JavaでPDFを出力する、という話になったときまず出てくるのがiTextだが、 最新版であるiText 5.x系統はライセンスがAGPL。 ・iText 2 前バージョンであるiText 2.x系統だとライセンスはMPL/LGPLのデュアルライセンス。 しかしGAE/Jのブラックリストに載っているAPIを使っているので動かない。 ・Apache FOP これもGAE/Jのブラックリストに載っているAPIを使っているので動かない。 といったところで困っていたのだが、 森薫さんという方がiText 2.1.7をGAE/Jで動くようにModifyしてくれていた。感謝です。 http://d.hatena.ne.jp/kaorumori/2009082
このページを最初にブックマークしてみませんか?
『nanjakkun.hatenadiary.org』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く