プログラミング

テストを充実させつつある

IntelliJ IDEAでsbtをつかいビルドしていたところ、ふとテストにSpecs2が使えることに気づいた。気づくのが遅すぎかもしれないが気づいた。あちらこちらの情報を収集して、 コードカバレッジにはscctがいいよ scalastyleつかうと便利だよ ということがわかっ…

大きなCSVファイルの特定列だけを抜粋して重複を取り除く処理を書いてみた

思いつくままにやってみた版(ミュータブルなSetを使う) C列目の値を取ってくる val br = new(BufferedReader(new InputStreamReader(new FileInputStream(“hogehoge.csv”))) def distinctCsv(br: BufferedReader, c: Int): Set [String]= { val it = Itera…

Scalaのテスティングフレームワーク、ScalaTestを使いはじめる

Specs2が一番スマートに書けそうなので、まずはEclipseにて導入。しかしどうやっても実行できない。わけが分からない。sbtとか導入するんでもいいけど、なんだか面倒になってEclipse内で完結できるのがないかと探したらScalaTestというのが見つかった。こっ…

MeCabとRubyで日本語の頻出単語を調べる

こちらのサイトに影響を受けて、日本語の頻出単語を調べてみたくなった。http://blog.fenrir-inc.com/jp/2011/10/ruby-mecab-japanese-keyword.htmlこのサイトにRubyのスクリプトが乗っているのですが、なぜか一行になっていて、うまく動かない。だから頑張…

Echoサーバーの実装も終わった。燃え尽きた。

長きにわたる、といっても3ヶ月ほどだが、POSAコースとの戦いも終わり、評価ももらえた。なんとか70%超えていたので落第ではなく、ひとまずホッとしたところ。パターンについて理解できたかというと出来てない。これは一朝一夕で理解できるものではなく場数…

プログラミングの課題にて、Nettyを使ってみようとおもうんだが、Nettyビルドに失敗する→Javaのパッケージに躓く

POSAコースではJava、C++11、Ruby、Pythonなど好きな言語を選べるようになっていて、なかにJava+Nettyというのがあった。Nettyってなにかのフレームワークっぽいのんで使ってみよう。 Nettyを展開すると、pom.xmlというのがあったので、mvn package してみる…

食事する哲学者はいちおう終わりました。次はエコーサーバーの作成

本当はMonitorクラスを別に設けてやりたかったが、けっきょくモニターする機能はPhilosopherクラスの1メソッドとしてインプリした。 動きとしては、左右共に箸があいているかwhileループの中でチェックする。そして、左右の箸をとる。以上の作業をsynchroniz…

EmacsでJava の環境構築、CEDETとyasnippetとmalabar-mode

JavaといえばEclipseなんだけど、Eclipseの重さが以前から気になっていたのと、CourseraのおかげでEmacsに慣れてきたので、EmacsでJava開発環境を整える気分になりました。調べてみたらこちらがとても参考になります。EmacsでJavaを書く - nekop's blog JDEE…

POSA2の小論課題に追い込まれている状態、proglangのFinalExamも佳境

前回おPOSA2の小論が惨憺たる状況だったので、こんかいは早め早めにビデオは見終わった。しかし課題にはまだ手を付けていない。とにかく始めねば。POSA2はネットワーキング+コンカレンシー(同時性)のサンプルとしてAndoridアプリを取り上げるらしい。しら…

Posaの2週めにて、パターンとは型とのこと、すべてがすっきりした

めちゃくちゃ熱いDoug Schmidt先生曰く、パターンとは柔道などの型との事。いままでパターンのメリットを説明することがすっきりできず、共通の言語みたいなものだよ、とか、先達の知恵だよ、とか言ってきたがなんとなく言葉が多くなってしまう印象であった…

課題としては単純な幾何を表現する言語の実装である。点、線、線分を各々インターセクション(積?)をとり、結果を表示するというミニ言語で、たとえば、

Intersect(Line(1,2),Point(1,3)) の結果は Point(1,3)となるような。ここでLineの第1パラメータは傾き、第2パラメータは切片である。Pointはx座標とy座標。SMLのコードはほとんど実装済みで残りをちょろっとかくだけだったので比較的簡単であった。Rubyは結…

Week07に備えてRubyのEmacs環境構築、まだ途中

ECBみたいなIDEチックにしたい気持ちはあったが、まずはすかさず評価/実行結果を表示してくれればいいやと思い、以下を参照に、smart-comple.elとrcodetool.elと入れた。Emacs における快適な Ruby 開発環境を求めて - QiitaしかしEmacs起動時に以下設定を…

Week06終わった(期限切れで)、Week07始まった、Pattern Oriented Software 始まった

Racket最後回、Week06での簡単な関数型言語の実装は終わった。正直うまくできないところが一箇所あった。それで100点は当然とれてない。もういいや。よく頑張ったよ。本当に本当に難しかった。 Week07はRuby。使い慣れている言語なので嬉しい。しかしながら…

Week05、Racketになれるという回が終わった。Week06は自分で言語を記述する回

慣れるといってもかなり難しいと思った。以下学んだこと Racketの構文の基礎(定義、関数、再帰呼び出し、条件分岐その他) Scalaでも出てきたStream(無限列) サンク(Thunk)=引数なしで遅延評価される関数 promise=サンクと同じだが、引数をとる。my-de…

Heterogeneous Parallel Programmingのコース修了、嘘でしょー!なスコア

なぜか、なぜか、100%で修了できた。OptionalのMP6はやってない上に、MP4では25%の達成度であった。絶対に間違えていると思う。

Week05の環境つくり

DrRacketなるIDEっぽい環境があるのだが、せっかくEmacsに慣れてきたのでEmacsに環境を構築してみた。ここを参考に-->24.2 Emacsメジャーモードっていうのが偉そうで良さそうだ。マイナーモードはなんていうか、ちまちました感じの便利さ追求ってかんじだ。…

Week03と、Week04のテストを終えた

Week03の評価を行なった結果、自分の答えは大体サンプルと同じようになりつつあって個人的に満足だった。人のコードも見ることが出来るのはとても勉強になる。 自分の課題で精一杯だから、人のコードをこうでもしないと見ないと思う。だけど人のコードをみる…

proglan-2012-001のWeek02とWeek03について

説明をよく見ないでやったため、Week01については惨憺たる結果であった。Peer Assessmentにしか提出しなかったり、前半2/3の問題を完全に勘違いしていたり、なかったコトにしたいです。当然自動採点の結果は未提出で0点。 まあ、いいや。Week02とWeek03はそ…

Mercurialのマージとか

BitBucketを使ってCourseraの作業を進めているのですが、マージとかよくわからなかったので色々と試してみた。 test_repというのをBitBucketにつくり rep1/test_rep というのと、rep2/test_repをつくった rep1/test_rep/test1/hogehoge というテキストファイ…

SMLのコース、なかなかなれない、特にEmacsに

SMLのコース、第1週目の宿題は提出したのだが、問題をよく読んでいなくて、前半の4問はまったく間違えていた。かなしい。全然簡単な問題で点を稼げなかったのは悲しい。Emacsに慣れてなくて、ついつい、Vimのつもりでjjjjjjとか打ち込んでしまうのも悲しい…

MP5はなんとかできた

激しく難しかったMP5もなんとか終わらせることができた。多数のスレッドを動かしながら単純計算させるのってこんなに難しいんだなあ。期限が22日から24日に延期されたからできたようなものの、22日の時点ではまったくわからないところでした。本当に本当に終…

MP4は期限内におわらなかった

MP3が精一杯だった自分としてはMP4は厳しかった。 MP5もなぜだかまったくcudaMemcpyが動かなくて、終わらない気配、、、

1)エヴァQのこと、2)CUDA並列プログラミングのMP4

1)エヴァQのこと 先だってヱヴァQを観てきたので、1995年の初回放映時からのエヴァオタだった自分もみんなにならってなんかエントリでも書こうとおもったが、、、なぜか思い出せない、(もうネタバレしても全然いい頃だと思うので、思い出せる範囲で書くけ…

scala-userMLのMultiple Constructorのスレッド

case class MyClass(param1 : String, param2 : String, param3 : String) { def this(param1 : String, param2 : String) = this(param1, param2, Utilitary.sign(param2)); } Object Utilitary { def sign(param : String) : String = ... do some stuff w…

Redcarのインストールについて、その1 〜インストール先をホームディレクトリ以外にするには〜

Redcarをインストールすると、C:\My Documents\云々の下にいろいろつくってしまう。 が、ポータブルHDDに全てをいれている自分にとってはこれは嬉しくない仕様だ。これを回避するのはすごく簡単で、redcar.bat install --home-dir=J:\development\my_profile…

SafariからダウンロードしたHTMLファイルをマージするRubyスクリプト、その3。Safari以外も対応するように

Safariだけでなく、いろんなサイトにも対応するようにした。 全体のスクリプトはこっち--> http://gist.github.com/6008231. HtmlMergerというクラスを作った。 class HtmlMerger def initialize(header_height = 0, footer_height = 0) @en_header = heade…

SafariからダウンロードしたHTMLファイルをマージするRubyスクリプト、その2

変更点1.<pre>〜</pre>内部で、行頭のスペースを、&emsp;に変換、行末に<br/>を付けるように変更。 2.引数が一個与えられた場合は、与引数でディレクトリを作成する。そして、元のHTMファイルやディレクトリを全部、そのディレクトリに移動する。globalstyle.cssはコピー</br/>…

SafariからダウンロードしたHTMLファイルをマージするRubyスクリプト

オライリーのSafariというサイトは、オンラインで書籍を読める。ファイルをページごとにHTML形式でローカルにダウンロードして、それをマージするというスクリプトをRubyで描いてみた。 require "fileutils" mergedFile = "hogehoge1.html" File.delete(merg…

ArrayとArrayBufferのどっちがどのくらいパフォーマンスがいいか調べる

こんなコードで試してみた。 object cm2 { def main(argv: Array[String]) { //count("ArrayBuffer", argv(0), func_arraybuf ) count("Array", argv(0), func_array ) } def func_array(src: String): Unit = { val a = new Array[String](100) for (i <- 0…

文字列が一致してるかどうかチェックするのにregexとStringのどちらがパフォーマンスがいいか調べる

先だって拡張子mp4で終わるかどうかを調べるのに、Stringの比較で行った。 しかし、Regex使ったほうが綺麗に書けそうである。ということで、Regex使うのとどっちが早いか調べてみたくなった。こんなソースを書いた。 object cm1 { def main(argv: Array[Stri…