2014-03-28

R 使いはじめ

  • motivation
ユーザーデータ解析にあまり力が入っていないので、せめて今より掘り下げたい。
python が好きなので python でも良いかなと思ったけど、色々迷って R を選択してみた。

  • 感想
企画の人と話しつつ解析するにも、「このデータの平均は?」と言われても「(たぶん)できます、ちょっとまってください」という感じで、ちょっとぐぐると出てくるのが便利。
痒い所に手が届く感がある。
非プログラマの人でもとっつきやすい気がする。

  • 勉強
データマイニングというのは「統計学+機械学習」らしいので、統計学の基礎は適度に押さえないとたぶん駄目。大学で習う程度は最低限必要だと思う。
機械学習はま何も勉強していない…

読んだ本

  • データマイニング
有名なブログとか見ると Ph.D とか書いてあってしかも Tokyo Univ とかで、地方大学の学部卒の自分には無理なんじゃないかという気持にしかならないけど、基礎を適度に抑えつつできれば応用に持ち込もうという位の気構えで何とかがんばりたいです。

2013-11-29

怖いScala資料まとめ

つげったしかなかったような気がしたので纏めました。
怖いScala (2013/11/28) の資料です。

@yuroyoro さん
Scala at ISUCON3
https://dl.dropboxusercontent.com/u/261418/scala_at_isucon3/index.html#/

@xuwei_k さん
怖いScala
http://xuwei-k.github.io/slides/kowai_scala/


LT

@seratch さん
Skinny Framework 進捗どうですか?
http://www.slideshare.net/seratch/skinny-framework-28706741

@kmizu さん
こわくない型クラス
http://www.slideshare.net/kmizushima/ss-28707326

@potix2 さん
Scala meets Gradle
https://speakerdeck.com/potix2/bu-iscala
(資料が無いように見えますが…?)

@tototoshi さん
アルパカの生態
http://tototoshi.github.io/slides/kwi-scala-alpaca-life/


つげった
http://togetter.com/li/596286

間違い等ありましたらマサカリ飛ばして下さい。

2013-06-18

Scala って重い

世の中には
https://github.com/tototoshi/sbt-musical
このようなプラグインが開発される程 Scala のコンパイルが重い事がわりとどうしようもない感じなんだと思いますが

上のプラグインは使ってないけれど、個人的にはそもそもビルド中は Macが 重くなってブラウザも思うように動かせず、iPhone で twitter を見るなどという下らない時間を過した事もありました。

私の場合、依存ライブラリの更新の為のビルドですごく時間がかかっていたので、上記のような状態で待ち時間が非常に苦痛だったんですけれども、
(B が A に依存しており、B を動かす為に A を更新して jar を作成し、B を動かすという感じの構成になっている。A はコード量が多いため重い。)

「Jenkins に job 登録して、push をトリガーに Jenkins にビルドして貰うようにすればいいんじゃね?」

というアドバイスを基に、まぁそのまま実行したらかなり快適にブラウザでネットサーッフィインができるようになりました。
  • Jenkins が用意されているか、用意する事が前提
  • 作成した jar は社内のリポジトリに上げてるので、一々 DL します。
  • 普通は git の branch で作業すると思うんですけれども branch と言えどもコンパイルせずに push する為 commit log がけっこう汚れるので、master とかに merge するときは --squash オプションを付けるとかしないとアレ 普通しますね。

Jenkins で push をトリガーにしてビルドする記事はそこらへんにたくさんあると思いますので割愛します。
Jenkins ワイルドカード使えるので origin/test-branch/* とかいう branch の指定のし方すると、origin/test-branch/ 以下の branch が全て ビルド 対象になってくれたりするのが地味に便利だと思います。

ビルドを早くするにはプロジェクトを分割するとか、Zinq 使ってみるとか色々あると思いますが、思ったより楽で効果的だったのでブログに書いてみました。
(Jenkins から用意しろと言われたらたぶんわりと辛いと思うけど…)

見たいスライドとか rpscala で話題にあがったネタとかも、この時間で見る事ができるんですね!!わーい!

あまりに普通すぎて ブログに書く程の事でもなかったですね ハイ
結構感動的に快適だったので… Jenkins 凄いし、Scala 重い死 っていうただの日記です。

おしまいです。

2013-04-30

Scala Collection method 適当なまとめ

最終更新が2年くらい前かよ… 気にせず書きます。

今更
http://www.scala-lang.org/docu/files/collections-api/collections.html
(の日本語訳)を読んでいるんですが、会社で使ってる Scala のバージョンが 2.8.2 だからいいよねって事で
半年くらい前まで 2.7.7 使ってたんですよ…酷い
単純に読み辛いからみやすくしただけです。Travarsable のところ。

Addition

  • ++

Map operations

  • map
  • flatMap
  • collect (map + flatMap)

Conversions

  • toArray
  • toList
  • toIterable
  • toSeq
  • toIndexedSeq (Vector 等 IndexedSeq に変換)
  • toStream
  • toSet
  • toMap

Copying operations

  • copyToBuffer
  • copyToArray

Size info operations

  • isEmpty
  • nonEmpty
  • size
  • hasDefiniteSize

Element retrieval operations

  • head
  • last
  • headOption
  • lastOption
  • find

Sub-collection retrieval operations

  • tail
  • init
  • slice
  • take
  • drop
  • takeWhile
  • dropWhile
  • filter
  • filterNot
  • withFilter

Subdivision operations

  • splitAt
  • span
  • partition
  • groupBy

Element tests

  • exists
  • forall
  • count

Folds

  • foldLeft
  • foldRight
  • /:
  • :\
  • reduceLeft
  • reduceRight

Specific folds

  • sum
  • product
  • min
  • max

String operations

  • mkString
  • addString
  • stringPrefix

View operations


うおー min,max はいつも math 使ってたアホす…

2011-06-27

ImageMagick install

こんなの個人ブログにかけやクソが!と言われたので移転した。

すごくはまったのでメモ。
環境はubuntu(on VMWare)です。

1 Install ImageMagick -- ggr
2 Install libMagick -- ggr

Is ImageMagick installed? -- $ convert --version
Is there needed format? -- $ convert -list format | grep -i 'gif'

注意点
pngとjpgがはいっていないので、libpngをインストール(する前にzlibが必要ですが)そして、再度ImageMagickをビルドする必要があります。
ImageMagickのmakeが遅いのでやり直しを何度もすると時間ばかりかかる


pngに関して、一部の画像が扱えない状況。透過png
気になる記事があった。

macでidentify hoge.pngとすると以下のように解析されるpng画像が
hoge.png PNG 240x300 240x300+0+0 8-bit DirectClass 1.06KB 0.000u 0:00.029
ubuntuだとこうなる
identify: UnableToOpenConfigureFile `delegates.xml' @ warning/configure.c/GetConfigureOptions/589.
identify: NoDecodeDelegateForThisImageFormat `hoge.png' @ error/constitute.c/ReadImage/532.


ちなみにubuntuでもGIMPだと扱える。

2011-06-23

csv to MySQL

よくExcelからMySQLに入れるデータを作成しているけれど、csvにすれば一行でできる、ような・・・

for i in `cat inserttabledata.csv `;do mysql -u username -p databasename -e 'insert tablename value ('$i');' ; done

しかしこれではいちいちパスワード入力するのがめんどい。



mysql -u username -p databasename -e 'select * from tablename;' | sed -e "s/\t/,/g" > table-data.csv

出力系は便利だと思うけど、入力をシェルスクリプトでやるのは怖いかもしれないです。

社内のエンジニアブログというものに書こうと思ったけど内容が非エンジニア向けだったからやめた。
シェルスクリプトが言葉を話すように書けたら人生が楽しいと思う。

2011-06-16

Android開発メモ

主にはまったところ

Androidのタップで出てくるオレンジ色の選択範囲っぽいものは -webkit-tap-highlight-color:rgba(0,0,0,0); で消せる。 user-selectだと思っていたのでものっそいはまた。

android2.2はtransform-scaleが効かない
http://code.google.com/p/android/issues/detail?id=12451
対処法
-> http://androidscalebug.appspot.com/

2011-03-18

MySQLWorkbenchすごい

弊社ではMySQLデータは、ローカル、テスト、本番にそれぞれある。

複数人で開発を行っており、Workbenchでデータを共有してる。

テストと本番は整合性が取れている(筈な)のだけれど、ローカルのdatabaseはけっこうぐちゃぐちゃ。引き継ぎとかもあったし。
それで、WorkbenchのデータとローカルでSyncしてみたらかなり差異があった。
Workbenchも個々が勝手にテーブル追加してるだけなので、正しいかどうか怪しい。
そこで、データの正しいテスト系からWorkbenchに取り込めたらWorkbenchのデータがきれいになるよねてことで、試してたらものっそい普通にできてしまい、感動したのでエントリ書いてる。

(要点)
EERモデルを作成して、Database -> Reverse Engineer Databaseで、Connection MethodをStandard(TCP/IP) over SSHというのを選択すると、sshでアクセスする必要があるサーバのMySQLでもデータが取得できます。

個人的にはWorkbenchは定義を決めたテーブルを自動でsql文を作成してくれるすごいツールであるくらいにしか思っていなかったのだけど。

2011-02-28

gitでトラブル

Gitに限らず、しくみを理解していないとVCSでは取り返しのつかないことになる可能性があり・・・

Git で no branch に commit した時の対処法

SubversionのときはTortoiseSVNが神がかっていてあんまりトラブルもなかったが、そろそろそういうのにも卒業せねばというのと、Win->MacBookに乗り換えたため

2011-02-23

group by と having

groupIdがあるテーブルがあって、groupIdが3以上のところを調べたいというとき
select groupId, count(groupId) from grouptable group by groupId having count(groupId) >= 3
要はgroup by と havingくらい覚えとけよこの (゚Д゚)カス!!
ってことでしたおわり。

2011-02-15

git-svnを使った開発中によく使うコマンド

  1. ローカルに未コミットの変更があるけどgit-svn-dcommitしたい
  2. リンクと同じことしか書いてないけど、ぐぐったりブクマしたりすると大変なことになるので自分メモ。 会社のwikiに書いてもいいかもだけど、もうちょっとまとめたほうがいいかなということでwww上に公開するとかよくわからないことをしている。
    $ git stash
    $ git svn dcommit
    $ git stash apply
    
  3. branch/tagsにtrunkコミットの一部をマージしたい
  4. こことかを参照した。 普通に"git svn branch"でぐぐれば山ほど出てくるのでエントリ化する必要もなさそうなのだけど。
    1. git checkoutでsvnのbranch(tags)を引っ張る
    2. masterにcheckoutでもどって、コミットログを確認、cherry-pickしたいcommitNoをコピー
    3. branch(tags)に戻り、git cherry-pick
    4. logを確認
    5. git svn dcommitでsvnのbranch(tags)にコミットする
    コマンドは以下。
    $ git checkout -b hoge tags/20110411
    Switched to a new branch "hoge"
    $ git cherry-pick fuga
    ~cherry-pickのmessage~
    $ git svn dcommit
    
    ※fuga=commit No

2011-02-13

git rebase

GitブログかよというくらいGitのことしか書いていない気がするけど気にすんな (´ー`)シラネーヨ

入門Gitの176ページに競合とかについても書いてあるのだが一応メモ。
競合については本で書いてあることをそのまま書いただけで、まだ試してない。
rebaseが何かかとか以下のコマンドがなにをしているかを書いてあるページはごまんと出てくるであろうので割愛。
git checkout branch
git rebase master
or
git rebase master branch
競合が見つかるとrebaseは一時停止し、競合の解決が可能になります。
競合をすべて解決し、解決結果でインデックスを更新したら
git rebase --continue
でrebaseを再開する。

ここに書くよりman git-rebaseを見た方がいろいろ便利かもしれない。

2011-02-05

git svnに関する悩み

git一本に切り替えるかgit-svnで開発を行うか迷っている。
git-svnにバグや面倒な操作がなければgit-svn環境で問題ないのだが、そもそもgitをまだ理解しきれていないのでgit-svnがよう分からず、困っている。
$ git svn rebase
が使えればたぶんだいたい問題ないのだが、(なぜなら、gitを使用するのはプログラマだけで、svnを使用するのはブランチ開発などを行わないクリエイターが主になる予定であるため)
fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
log --no-color --no-decorate --first-parent --pretty=medium HEAD: command returned error: 128
とか言われてrebaseできない。
なんかgit branche -aでいっぱいブランチがでてくるのが問題かなとか思ってるんだけど、予想であって根拠は無い。gitをきちんと理解していればこんなことにはならないのに。
(追記)
git svn clone -s https://hoge.com/fuga/svn
とcloneしたらなんかgit svn rebaseできて大丈夫だった。
git svn clone -T trunk(以下略)
という感じでいちいちトランクやブランチを指定していた形でcloneしていたときは失敗してた。
何で解決したかは予測でしかつけられない(面倒くさい)ため略。
man git-svnがいいんじゃないかなと思います。
あ、あと結局暫くgit-svn開発でいくことになりました。
(追記終わり)

また、
$ git svn fetch
$ git merge trunk
ならsvnのcommitを引っ張ってくることはできた。

2011-02-04

gitを使った開発中によく使うコマンド

まだあんま使ってないのだけど、多分これらは有用である

branchでがががと開発しているときmasterの様子が気になる!
git show origin/master:filename

tags切っちゃったあとに修正忘れを発見!!でもだいぶコミット進んじゃって、いらないものもあるよ〜。だから、あるコミットだけマージしたいの!!
git cherry-pick commit-id

随時追加予定です。

2011-02-03

gitのリポジトリ作成メモ

remote.origin.url=ssh://matsumushico@hoge.com/srv/repos/git/mushico
とすべきところを
remote.origin.url=ssh://hoge.com/srv/repos/git/mushico
とかしてて、しかもそのミスが今回で2回目であり。

Permission denied (publickey).
fatal: The remote end hung up unexpectedly
と言われまくった。
備忘録しておかないとまたやりそう。

wikiに
ssh://matsumushico.com/srv/repos/git/mushico
とかってメモってあるから間違えるorz


ぜんぜん情報は足りてないけど備忘録として何度も参考にさせていただいているサイト
せっかちな人のためのgit入門


ちなみにgitじゃなくて正確にはGitらしいです。

2011-02-01

screenコマンドのつかいかた

ちょっとmacではcrtlキーどれだよってなってダメだったんですが、会社のサーバ(Debian)では実行できた。

参考にしたサイト

ssh でサーバにログイン
screen
^a c 新規ウインドウ(仮想端末)を作成する
^a p 前のウインドウをアクティブにする
^a n 次のウインドウをアクティブにする
(^はctrlキー)

screenで作成されたシェルで実行したコマンドはterminalを閉じても実行されていた。

・・・という感じで使うのだと思う。

----------------キリトリ-----------------

とりあえず作業(実行に時間のかかるスクリプトを走らせる)さえ実行さえできてしまえばscreenコマンドはほぼ滅多に使わないと思う。

gitのコマンドまとめ

基本的なコマンドしか書いてません。

  • configを確認
$ git config --l
もしくは
$ cat .git/config
  • name等設定
$ git config --global user.name "hoge fuga"
$ git config --global user.email "boo@bar.com"
  • 削除
$ git config --global --unset user.name
  • ハッシュ値とファイルの関連をみる?
$ git ls-files -s


  • git rm
$ git rm --cached filename//ファイルをインデックスから削除
$ git rm filename//ファイルをインデックスと作業ディレクトリから削除
ただし、git rm --cachedはファイルが追跡されなくなったことを忘れてしまう危険がある。
作業ファイルの内容が最新のものかどうかのチェックを無効にします。

  • 間違って消しちゃった
$ git checkout HEAD -- filename

  • git 便利リンク
ブランチの管理

ところでsyntaxhighlighterの使い方がいまいち分からなくてclass="c"とかでごまかしてしまった。
う、うーん・・・。

Pythonのよく使う関数まとめ

Pythonをかく機会が増えたけれども基本Javaがメインである上にEclipseを使用しているのでいつまでもAPIを覚えない自分は死ねばいいのだけども、覚えられないためにぐぐりながらPythonを書くのにもストレスしか感じなくなったのでメモを作成することにする。
ただのメモなので詳しい使用方法はかきません。色々したくなったらぐぐればいい。

  • fileの文字を読み込んで操作する系
f=open('file.txt') 
for line in f:
  line = line.rstrip()
  if line.startswith('hoge'):
    print line
openは'w'とかオプションがある。
findはbooleanでなくindexが返ってくる。よく間違える。


  • memcache
impoert memcache 

mc=memcache.Client(['localhost:11211'])
mc.get('hoge')
Tokyo Tyrant's default port is 1978

このエントリに随時追加していく。