JavaのMapでgetOrElseしようとした

したいこと Mapの中身をgetするときに、中身が無い場合はデフォルト値を返すようにしたい。 Scalaなら map.getOrElse(key, defaultVal) Javaだと 要Guava Optional.fromNullable(map.get(key)).or(defaultVal); ぐらいしか思い付かなかった。 Java8だと map.…

ドゥドゥシミュレータを作ってみた

「素晴らしく運が無いな、君は」 ドゥドゥさんとは SEGAのネットゲーム、PSO2の武器強化をしてくれるキャラ。武器強化は+10まででき、+10特典もあることから狙う者が多いが、強化は失敗の確率がある上に寧ろ強化値が下がるような失敗もある。強化値が下がる…

Akka ActorでPipeline

はじめに Pipelineとは、例えば全体の処理をA, B, Cという処理に分割したとして、それぞれの処理で1つ又は複数のスレッドでもって処理を行う並行形式。私が良く知っている、CPUなんかは1Clockの処理を数十段に分けるPipelineな処理を行っているので、それと…

F2FSをさわってみた

F2FS ググれば素晴しい解説が転がってるけど、簡単に言えばSamsungが開発してLinuxに寄贈した、SSD向けにチューニングされたファイルシステム。 まぁ今時半分以上SSDだしこゆのすぐに標準化しそうだよね、とか思って。 Ubuntu13.04でとりあえず作るとこまで …

dnsmasqを試してみた

dnsmasqとは 超軽量なDNSサーバ。キャッシュもするし、/etc/hostsで独自のDNS情報も持てる。 使い方 Ubuntuならapt-getでインスコするだけ。 /etc/hostsを変更した場合など、キャッシュをリセットしたい場合は# service dnsmasq forcd-reloadとすれば良い。…

えっ、これmvのバグ?Dropbox?

起こったこと $ mv OSMParser/ ../hgとコマンドを発行したらOSMParserがPCから消えたな、何を言っているのか分からないと思うが(ry くわしく カレントディレクトリは$HOMEからのシンボリックリンク先を指している。つまり$HOME/hgへOSMParserを移そうとして…

速度の夢

爺さん婆さん 私は割とお婆ちゃんっ子なので(ただし母方に限る)、遠いとはいえ良く遊びに行くんだが、そこで毎度違和感があるのが、「最近の技術すごいから、東京まで一瞬で行けるようになるよ〜」(※実家は愛知です)という奴。で、世代の違いを感じる訳…

json4s使っての疑問を発表してきた

json4s使ってみた みたいな発表してきたhttp://ponkotuy.com/study/json4s.pdfslideshare使えないのでこっち。 概要 PDF読むの面倒な人向けに簡単に説明すると。「json4s(lift-json)でcase classをSerializeしたいんだけど、Scala独特のenumだとどうするの…

ぼくらはau Wi-Fiで幸せになれない

常時繋っていたい スマートフォンが携帯の業界を変えたものは様々だが、その1つに「常時接続が前提になった」というのがある。モバイル端末が、使い放題なインターネットが安価で提供されるようになったPCと同じ土俵に立った訳である。そんなスマートフォン…

メインのガジェット環境を一新する件

現環境 現在使ってる端末は以下の通り。 Optimus LTE 所謂スマホ。去年の4月頃のモデル。IIJmioSIM1枚目。つまりデータ通信のみ iPhone4 電話用。SoftbankSIM。とにかく金が掛からない通話端末が欲しかっただけ Nexus7 家用。最初は外でも使っていたが、家で…

Scala2.10でハマった忘備録

はじめに Scala2.10が出たので、と何も考えずに使ったらズボズボ嵌ったのでメモ代わりに。ただこの不都合は、時間が経てば解消される可能性が高いものもあるので、鵜呑みにしないで参考程度に。 補足(2013/03/01) 気付いたらscala-ioのバージョンが0.4.2に…

C#入門者向けのページ作った

C#

はじめに 極めて個人的にC#教えているのだけど、やはりノート代わりに教えたことを纏めておく必要性を感じたので、ページを作ってみた。http://ponkotuy.com/csharp.htmlデキが良いかは分からないけど、役に立つ人が出るといいなぁって。意見等はここに書い…

Scalaで世界最速のふぁぼ爆撃

はじめに Scalaなら超簡単に並列化できる(Erlangっぽいらしい) ScalaならJavaのライブラリが使える JavaにはTwitter4jという優秀なライブラリがある 結論:ふぁぼ爆撃するしかない コード package com.ponkotuy.twitter import scala.collection.JavaConve…

boost::intervalを羨むScala使い(Scalaで簡易版を実装してみた)

boost::intervalとはなんぞや https://sites.google.com/site/boostjp/tips/interval_arithmeticにあったりするが、要するに数値の範囲を扱うライブラリで、区間演算とかできたりするが、とりあえず範囲の重複だけでも取得したい!と思ってScalaでその部分だ…

joda-timeを仕方なく使う(時間で四則演算したい)

はじめに Scalaで使える日時を扱うライブラリの1つにorg.scala_tools.timeがあるが、これjoda-timeの薄いラッパーで、ドキュメントもマトモにないので、結局joda-time調べた方が早いという話があったりする。で、時刻の差を取得したいときに少しハマったので…

ScalaのAtomic性

はじめに Scalaにある+=演算子、これってAtomicじゃないの?という疑問があって調べてみたの巻。やりたいこととしては、parでスレッド分けてmutableな変数に+=でアクセスしたらどーなるのよ、という話。 サンプルコード object Main extends App { var count…

Ubuntuが気に入らない→Ubuntu Server使おう!

http://d.hatena.ne.jp/ponkotuy/20121021/1350843787で書いたが、Ubuntuってインストール簡単だけど基本カスタマイズできないよね、という話がある。ただ流石にUbuntu Serverだとどうなの、と思ってUbuntu Server 12.10試してみたら、すんなりSoftware RAID…

UbuntuでUEFI起動とかbtrfsとか

はじめに VAIO ZにXubuntu入れようと奮闘した過程で得た、手動でインストール構成した際に、UEFI起動と/をbtrfsでインストールする方法のメモ。考えて欲しいのは、Ubuntuってのはdisk1台全体使ってインスコする分にはとっても簡単だけど、それ以外の方法だと…

Scalaで文字列を1つずつずらす

やりたいこと 文字列のアルファベットをaddだけずらす(a->b->cのように)ことをしたい。abcdzをadd=1でずらすとbcdeaになる、みたいな感じ。 Scalaで書いてみた らこうなった。 new String ( str.toLowerCase(Locale.ENGLISH).map{ it => (it - 'a' + add) …

UEFI環境でUbuntuをインストール

状況 最近のマザーボードは、2TB超のHDDに対応する為にBIOSではなくUEFIを搭載したものが多い。一方でLinuxにとって必ずしもUEFI対応が完璧かというとそうでもなく、今回ハマったのでちょいとメモ。 結論 結論から言うとUbuntuSecureRemixを使えば適当にイン…

第2回闇鍋プログラミング勉強会で発表してきた

闇鍋勉強会とは 冷静に考えてみると説明できないからここを見よう。http://atnd.org/events/29973まぁ技術的にすごい人がアホなこととか真面目な事とか発表する場です。 LT枠で発表してきた! 私も簡単ながらLT枠で発表してきました。元々用意してたのはJenk…

yes!yes!yes! 〜yesベンチマーク〜

yesベンチマーク UNIX系OS(?)にはyesコマンドがある。これをベンチマークに使えないかとふと思い立ったので試してみた。yesコマンドには回数指定するものが無いので、head -nで回数を指定した。今回は1000000回で行った。 $ time yes | head -n 1000000 R…

Scalaで特定の長さを越えているか見る

LinearSeqの長さを制限する LinearSeqの長さが一定を越えているか見たいとする。ScalaのLinearSeqはListのような、次の要素へのポインタを持つだけの再帰的かつ単純な実装を前提にしている。この為、LinearSeqの順番のアクセスは早いが、lengthを取得するの…

とあるプログラマーの平均的な1日

8:45 起床 10:00〜21:00 お仕事 21:00〜22:00 喫茶店で勉強orゲーセン 22:30〜24:00 帰宅。fadisからチャットが飛んできて講義が始まるかプログラミング 24:00〜26:00 ゲーム 26:00頃 就寝

自分なりにPythonのwith構文を解釈してみた

ことのはじめ TwitterでPythonのwith構文分からん、って言ってる人がいて、てけとーに返事してしまったのだが、ふと調べてみたら違ったのでちゃんと理解しておこうと思った。 実際のwith構文 withはclassの生成と削除をコントロールすることで、RAIIを実現す…

新米Scala使いがsbtとMavenを比較してみる

Mavenとは Javaのantの次世代を謳うビルドツール。Pluginを追加できるのでキモい程高機能で、コンパイル→テスト→実行→コードチェック→デプロイ→リリースまで全てこなせる。というか途中からCIツールの仕事なんだが奪うなよwPluginを追加できるので、Scalaで…

HBaseでDNSの逆引き設定が必要な件

HBaseとは 超大規模データを扱う為に作られたKey&Value型のDBで、所謂NoSQLの1つ。Hadoopの上で動く。私的には、列圧縮ができるのが最大のウリだと思っていて、あとCassandraよりは多機能な印象。(ただし速度では劣る傾向) とりあえずセットアップ http://…

JenkinsのMercurialのパス設定で躓いた件

CI

はじめに JenkinsのMercurialのパス設定に5時間掛かったのでメモ。とは言うものの、別にMercurial関係無く躓く可能性がある。 結論 JenkinsはSCMを選べる。選べるというのは、Mercurialとかgitとかではなく、どのMercurialか、まで選べる。従ってどのMercuri…

ary[-1]の動作

ary[-1]の動作 配列の-1番目の要素を指定した場合何が起こるのかちょっと興味あったので調べてみた Pythonの場合 我らがPythonは後ろから1番目の意味になる。 ary = [1,2,3] print(ary[-1]) # 3 Rubyの場合 RubyもPythonと同じ仕様 ary = [1,2,3] puts ary[-…

UbuntuでPythonをアンインストールしてみる

そもそもの発端 FedoraだったかRed HatだったかCentOSだったかは知らないが、「yumでpythonをremoveするとKernelもアンインスコしようとするんだけどwww」とかいう話があったので、じゃあUbuntuでもapt-get remove pythonしてみよう!という話。 Ubuntu Serv…