2016年 5月 の投稿一覧

久しぶりにJavaに触れてみた

数値演算はRubyには荷が重い。

ということで、久しぶりにJavaに触ってみたりした。

速度比較としてfor二重ループをC(GCC)とjavaとrubyで回してみた。

ループの中で浮動小数点を掛け算して足しているだけ。

 

ruby: 1117 sec

java: 10.6sec

GCC:最適化なし 33.6 sec

GCC: –O3 10.2sec

GCC: –O3 -march=native 2.5sec

 

環境:win10 64bit core i5

 

まずgccの-O3とjavaが同じ速度というのに驚いた。

はや!JAVA速い!

十分に数値演算に使えるぜこれは。

ただ、GCCのCPUに合わせたコンパイルは反則的でなんと4倍速。

JavaのVMもここまで最適化してくれると・・・さすがに無理か。

そしてRubyはJavaの100倍遅い。

まぁ、そういう言語じゃないので仕方がない。

とはいえ、遅いな・・・

 

ということで、for文を多用する数値演算の場合は・・・

 

ruby:きつい。

Java:普通の最適化されたC言語のプログラム並みに速い。

C:Javaと同様レベルだけど、CPU限定の反則コンパイルをすればJavaの4倍ぐらい早くなるかも。

 

というよう感じ。

まぁ、データ描画とかも考えてJavaにしておくのが無難そう。

 

コードはこんな感じ。(Cだけど他も同じ内容)

float total = 0;
int i,j;

 

for(i=0;i<100000;i++){
  float s = 1.0f * i;
  for(j=0;j<100000;j++){
    total += s * s;
  }
}

 

片付けたものは古いプログラム類。

また実物じゃない。

消したり圧縮したりしてフォルダを整理した。

体重は65.0kg。

夕飯少なかったからなんか減った。

初めての会社に出張

よく話はしていたけど、出張はしたことがない会社に出張してきた。

つかれているので今日の一日一新はこれにしておこう。

うー疲れた

疲れて感想もあまり・・・

といいつつへんに気分高ぶって帰ってきてからも遅くなってしまった。

 

捨てたものは実物じゃないけど、使ってないフリーソフト類。

たくさんフォルダにためていたので片付けた。

体重は66.2kg

RubyでNArray触ってみた

ちょっとだけだけど、NArrayを触ってみた。

小説をベクトルにするとでかい行列になるし多分疎行列になるので、疎行列が扱えるNMatrixを使いたかったんだけれど、

どうやらWindowsでは上手くインストール出来ない。

OSを選ばないスクリプト言語でもC言語とバインドしてちゃそうはいかないってことだな・・・

面倒~~~

かといってLinux環境に移行するほどの元気はないので、Windowsでも使えるNArrayを入れてみた。

まぁ、ぼちぼちやっていこう。

 

今日捨てたものは古い講義資料。

体重は65.4kg

PCケースにオトナシート

車のデッドニング用に使ったオトナシートのあまりがあって、

これをPCケースに貼れば静音化するんじゃないか……

という目論見で貼ってみた。

例によって写真とかなし。

貼っても誰も見ないしな!

 

とりあえず、ペタペタ貼っていったけど、

意外と凹凸があって小さく切らないと張れない。

そして、手持ちの量だとスカスカでもっと欲しくなる。

でも買うと数千円飛んで行くんだよな~

いくらオトナシートを貼った所で、元が静音性とか考えていないスカスカのシロモノである。

ここでオトナシートにお金を投入するぐらいなら、まずは静音ケースを買うべきだろう。

ということで手持ちのオトナシートだけで晴れるところまでやってみた。

 

結果、それなりに減ったかな……?

音はしているけど、その音がまわりにふわ~っと広がっていく感じがなくなった。

それなりに防振効果があった模様。

ただ、高周波音は0にはならないからな~100%満足とはぜんぜんいかない。

どうも電源のリップルが原因な気がするから、電解コンデンサを山とMBにハンダしてしまおうか。

もうなにがなんだかわかんない静音化になっていくが、ほんとうにそのうちやるかもしんない。

 

今日捨てたものは古いHDD.

体重は65.5k

ほんとうに一日の最後にこれを書いてみた

残業で疲れて目新しいことが出来ず……

とりあえず、いつもこれを書いてからゴタゴタ物どかしたりいろいろして寝ているわけだけど、

寝る前にやることを全部終わらせてからこれを書いてみた。

うーん、遅い。

かえって目が冷めてよくないか??

あまり利点を感じないから、やっぱり先に書いたほうがいいかな。

 

捨てたものはXenosaga EP2のマウスパッド。

特典でとっておいたけど、まぁ、つかわない。

使おうとしても光学マウスだとうまくトラッキング出来ない。

ってことで、思い切って捨てる。

売れないだろうしね。

体重は65.6kg。平日だからか減った。

夏への扉を読んだ

ああもうこんな時間だ。

手短に。

夏への扉を読んだ。

結構面白かった。

これでおしまい!

 

捨てたものは講義資料。

体重は66.2kg

休みは太る!

数年ぶりにプログラミングに熱中した(気がする)

なろうからテキストデータを持ってこようと、rubyやMySQLと格闘。

一応数年前にデータをテキストファイルに吐き出すプログラムは作っていたので、それを改良してMySQLに吐き出すようにした。

とはいえ、数年もするとなろうの仕様も変わっていて、いじらないといけない所が多かったけど。

でも、小さなプログラムだからなんとかなった。

これが大きなプログラムだったら全然ダメだっただろう。

やっぱりスクリプト言語は楽でいいや~

今思えばおなじスクリプト言語のperlは文法とかルールが滅茶苦茶だった。

Rubyはわかりやすくていい。

ふ~

 

ただ、rubyでmecabを使おうとしてnattoというgemをインストールしようとしたけど、どうにも上手く行かず。

・ActiveScriptRubyだめ→Rubyinstallerで再インストール

・DevKitもインストール

・64bit Rubyだと配布しているWinのmecabは32bitだからだめ→mecabを再コンパイル

コンパイルは手順通りで簡単だけど、わざわざPCにつかいもしないVisual Studioを入れるというのが・・・

ただでさえ、SSDなので容量少ないのに。

こんなんでなろうの巨大なテキストデータが格納できるのだろうか。

 

そしてこんな手間をかけても、治らず。

出るエラーは違うんだけど、どうにも動かない。

64bitでコンパイルしたことでmecabのDLLが読み込めない問題は解決しているっぽいのになんで・・・

しかたがないので、mecabの実行ファイルを直接読んでパイプで渡すことにしよう。

まぁ、それでも動けば問題ないさ・・・・

 

今日捨てたものは大学の時の講義資料。

まだまだあるから、二週間ぐらいはこれで捨てるものに困らなさそう。

体重は65.7kg

小説家になろうへのクローリングについて

えー、小説家になろうからいろんな人の小説を集めてきて形態素解析して遊ぼうと計画しています。

しかしそのためにはデータを集めてこないといけなくて、その際にWEBサーバに負担をかけたらいろいろまずいわけです。

・道義的な問題

・訴えられる可能性

・アクセス遮断される

 

運営が不可能というほどのあきらかに攻撃的なアクセスを浴びせないかぎり訴訟はないでしょうが、遮断されるおそれがあります。

それに、なろうのサーバーに負担をかけるのも本意ではありません。

かといって、あまりにのんびりすると巨大なサイトゆえ一生かかってもデータが収集できません。

どの程度のアクセスなら負担にならないかを考えてみよう。

 

http://doda.jp/DodaFront/View/JobSearchDetail/j_jid__3001209434/-tab__jd/

 

ほら、ここでなろうで求人してるじゃろ?

ここに月間14億PVって書いてあるじゃろ。

ってか、全然関係ないけど平均年齢若いな…すげ~本当にベンチャーって感じ。

運営者が若いだろうと思っていたけど、まさかこんなに若いとは。

楽しそうだな~

 

っと、本題に戻ろう。

 

単純に平均してみよう。

月間14億PV。

一日あたり約4666万PV。

一時間あたり約194万PV。

1秒辺り約540PV。

 

なろうのサーバーは秒間540PVに耐えているということになる。

ピークではもっと来るだろうから、たぶん1000PV以上いけるんだろう。

とりあえず安全サイドでみて、540PV/secとする。

ここから考えよう。

 

秒間540アクセスしたらもちろんアウト。

かといって、絶対に大丈夫であろう秒間0.01アクセス(100秒に一回アクセス)なんて絶対終わらない。

どのくらいならいいだろうか・・・

こういうのは明らかな基準がないから困る。

実際サーバー管理者も酷いクローラーで苦労しているところはあるようだ。

 

一旦、自分がサーバー管理者になったと仮定してどれくらいの負荷に目くじらを立てるか考えてみよう。

100%:ログを見た瞬間ブチ切れて怒声を上げるレベル

50%:「マジでふざけんな」とやっぱり切れるレベル

20%:「なんか邪魔だな、こいつ・・・」と切れないけど気になるレベル

10%:「気になるなぁ」

5%:「あ、なんかアクセス頻度高い人がいる。なんだろう」

1%:(埋もれて気がつかない)

 

1%なら大丈夫かな・・・

秒間5アクセスぐらいなら負担にもならないだろうか・・・

なにか弊害があったらやめるけど。

Rubyでmysql叩いてみた

残業で遅かったのに、ついrubyでmysqlを叩くのにチャレンジしちゃったよ。

やりかたとしては簡単。

https://github.com/tmtm/ruby-mysql

 

gem install mysql

 

して、サンプルコードのようにやるだけ。

簡単~

rubyって簡単だな~

Javaだったらどんだけ手間かかるか。

rubyは本当に楽でいいや。

 

そんなかんじで久しぶりにプログラムいじるのを楽しんでいました。

 

今日捨てたものは大学の講義資料。

大量にあるからぼちぼち片付けていこう。

体重は65.2kg

MySQLを触ってみた

数年前にAWSで遊ぼうとして触ってみたMySQL。

というか、それぐらいしか触っていない。

大学院の時は一応データベース系の研究室に属していたのだけれど、研究内容的にDBを使う必要がなく完全に素人。

所属とスキルは関係ないということです。

 

さて、そんなMySQLをインストールして触ってみることにした。

これまでなんかデータを貯めておくときはCSVとか独自形式とかばかりだったんだけど、

いまさらながら気がついた。

というか思い知った。

独自形式でもいい。作っているときは。

でも、時間がたつとわかりやすく構造化されていないとわけわからん。

また理解するために調べる気にならない。

CSVはそういう意味ではわかりやすいんだけど、作りっぱなしならいいけど、そのデータをメンテとかは簡単じゃない。

ということで、RDBを使ってみることにしたんだ。

素人なので触るのも結構新鮮で楽しい。

 

それからなんかだるかったのは塩分不足と分かった。

アクエリアスとかのんだら、なんかよくなってきた・・・

汗で塩分たりなくなったんかな・・・

 

捨てたものはいらない箱。

体重は65.6kg。