ししちにじゅうはち 4x7=28

よんたったー https://twitter.com/keita44_f4

Xubuntu 64bitにおけるSML# 2.0.0のビルド

SML#2.0.0がリリースされました.
せっかくなのでパッケージではなくソースからビルド.*1
というわけでクリーンなXubuntu 12.04LTSでSML#をビルドしたときの経験まとめです.*2

32bit環境の整備

C/C++の32bitライブラリを用意しておきます.
GMPLLVM,SML#のビルドに必要.
たぶんこれで依存するg++も入ってくれる.

# aptitude install gcc-multilib g++-multilib

GMPライブラリのビルド

通常のGMPライブラリパッケージ(libgmp-dev)は64bitビルドされているので,SML#用に32bitでビルドする.*3
configureを走らせるときにABI=32オプションをつけて,32bitビルドを指定.

$ wget https://gmplib.org/download/gmp/gmp-6.0.0a.tar.lz
$ lzip -d gmp-6.0.0a.tar.lz
$ tar xf gmp-6.0.0a.tar
$ cd gmp-6.0.0a
# mkdir /opt/gmp32-6.0.0
# ./configure ABI=32 --prefix=/opt/gmp-6.0.0
$ make && make check
# make install

追記:runtimeでロードできるようにldconfのパスに加えて、リロードする。

# echo '/opt/gmp32-6.0.0/lib' > /etc/ld.so.conf.d/gmp32.conf
# ldconf

LLVMのビルド

配布されているUbuntu系用のLLVMバイナリは64bitビルドです.*4
なので自力で32bitビルド.
また,SML#は現時点での最新版であるLLVM3.4 32bitを必要としますので,多くのディストリビューションで自力ビルドが必要かと思います.

$ wgetやら解凍やら省略
# mkdir /opt/llvm32-3.4
$ ./configure CC='gcc -m32' CXX='g++ -m32' \
     --build=i686-pc-linux-gnu \
     --prefix=/opt/llvm32-3.4
$ make
# make install

*5

必要なライブラリ郡その他

なんか知らないけど./configure中に怒られたので,libzやlibinfoをいれる.
INSTALLとかの説明には書いてないけど必要なら仕方ない.

# aptitude install libz-dev
# aptitude install libinfo-dev

SML#のビルド

ここまでくればSML#をビルドするだけ!
fast-buildオプションが行方不明なのでコーヒーでも飲みながらまったり待ちましょう.
必要なオプションは32bit・GMPLLVMの指定です.インストール先のprefixはお好みで.
オプション長すぎぱない.

$ wgetやら解凍やら省略
# mkdir /opt/smlsharp-2.0.0
$ ./configure CC='gcc -m32' CXX='g++ -m32' \
    LD='ld -m elf_i386' \
    LDFLAGS='-L/opt/gmp32-6.0.0/lib' \
    CPPFLAGS='-I/opt/gmp32-6.0.0/include' \
    --with-llvm=/opt/llvm32-3.4 \
    --prefix=/opt/smlsharp-2.0.0
$ make
# make install

まとめ

  • 必要が無い限りSML#はビルドパッケージを使うと楽
  • SML#をビルドするなら32bitOSが楽
  • やれるものならやってみろ

*1:コンパイラ改造とかしたくなると必須ですし

*2:今まで使ってたUbuntu10.03はSML#のビルド準備中にlibcが壊れたなんて言えない

*3:libgmp32-devパッケージをいれて,そっちをオプションで指定すればよかった気もする

*4:SML#のビルド中に大量の-lLLVMhogehogeに関するエラーが出て泣いた

*5:LLVMのビルド長いとの噂だったけど,SML#に比べれば短かっt

Functional花見2014に参加してきまし

これに,前日の場所取りからお花見まで参加してきました.

なやばし夜市

なやばし夜市という日本酒祭りがあったのでとりあえず行ってみる.
すでに日本酒で酔っ払う.

夜の部

開始

桜の下は半分くらいしか埋まっておらず,無事にブルーシートを広げる.
夕方から花見してたグループと,泊まって場所取りするグループが半々くらいでした.

早速コンビニ買い出しとピザ注文を実行
ピザハットは22:30注文で23:00受け取りができました.
プロのラブライバーの方はラブライブコラボの箱が切れてても注文するし,ガチャで数秒1万円を溶かすし,すごいと思いました.

差入の泡盛の飲み比べをしたり,ドミニオンをしたり.

夜更け

寝袋で就寝.
寝転がって見る夜桜が綺麗でした.
銀シートがあれば外でも暖かいし背中もいたくなかったです.
首が痛くなり枕を持ってくればよかったと後悔.

あと隣の大学生グループの人狼が一晩中うるさくて,寝るのに邪魔でした.
そうでなくとも酔っぱらいばかりなのでうるさいです.
耳栓があったほうが良かったなと後悔.

夜明け

朝日が綺麗だったみたいですが寝てて見逃しました.
皆は朝ごはんはコンビニでカップ麺やおでんを食べてました.

早朝

早めにきた花見参加者が合流.
なぜか東北から来た人がめちゃくちゃ早く着きました.

あとティッシュソムリエとかシャンプーのお湯割り・水割りとか,皆が順調に壊れていた感がありました.

花見

昨晩から飲み続けてたので記憶が曖昧です.

  • 桜綺麗でした
  • イオン買い出しは遠くて時間かかる
  • ドミノピザは公園に配達してくれた
  • ころこる,してた
  • ころくんがでこちゃんとあすてに絡まれてた

その後,昨晩からの疲れで途中離脱しました.
お疲れ様でした.

ssh越しのLinuxサーバー上でテラリアをscreenで動かし続ける話

背景

テラリアにはまっています.
休職してテラリアにはまるとは,アホな話です.
というわけで友人とテラリアを共に遊ぶために,Linuxサーバー上でテラリアを動かすことを思いついたわけです.
Linuxで動かす場合,monoを使ってTShock(非公式テラリアサーバー)を動かす選択肢があります.
特にver1.2系となると他非公式サーバーは対応してない現状.
そこでテラリアサーバーを動かすときのお話です.

自分が知ってる手法の問題点

さて手持ちのサーバーは共有で借りてる某VPS上のDebian
この上でテラリアを動かす場合,自分が知っている手法では問題がありました.

前提条件

レンタルサーバssh接続のみ
手元にサーバー無し

知ってる手法の問題点
  1. ターミナル起動(&やC-z・bgコマンド)
    • 手元にサーバーがあるならターミナルを起動させっぱなしにすれば良い.けどリモート上のサーバだとsshしたターミナルを起動しっぱなしにしなければならず,サーバーだけでなくクライアント側までも起動しっぱなしにしなければならず鯖を立ててるのに元もこうもない.
  1. ターミナルから切り離して起動する(標準入出力・エラー出力を/dev/null等にする)

screenを使った解決法

そこでscreenを使う!!
今までのscreenのイメージというと,「複数ターミナルを操れる,それローカルターミナルやEmacsでもできるよね」というイメージ.
でもその本質はまったく違っていて,すんごく便利だった.

デタッチ・アタッチの概念

screenのすごいところは複数シェルを起動しつつそれらが独立に動くところ.
つまりscreenで仮想起動したシェルはユーザログアウトしたあとも実行され続ける.
よってサーバー上で長時間計算・ゲーム等サーバーのプロセスを行うのに便利.
ちなみにそのときにscreenを離れてプロセスを実行し続けるのをデタッチ,離れたscreenを再度フロントに持ってくることをアタッチというようです.

  • 新しいスクリーンの起動
$ screen
  • screenのデタッチ(起動中のscreenを継続したままバックグラウンドにスタックする)
    • (プロセス中で)C-a C-d
  • デタッチしたscreenをアタッチする(デタッチscreenを再度フロントに持ってくる)
$ screen -r [screen id]

※C-aはEmacs等と干渉するため,設定で入れ替えることができます.

テラリアでの例
$ screen
$ mono TerarriaServer.exe
... C-a C-d
$ exit                  # ログアウトしてもテラリアは起動し続ける

まとめ

ssh越しでサーバのなにがしを動かす場合にscreenは便利.
でもローカルでscreen使うくらいなら,ターミナルやらEmacsやらでやりようがあるよね.

今後の課題

TShockの動作が重いので,サーバの動作を軽くする設定やらサーバの設定をしなければ…

FirefoxにS3.Download Statusbarをいれた

Download StatusbarがFirefox26になって非対応になった.
ダウンロードの状態を下部バーにて一目でわかるのがすごく便利だっただけに,代替手段が必要に.

Download Statusbar – Firefox 向けアドオン

Download Status Bar

試してみるも,色合いや表示情報や考えている表示の仕方がだいぶ違う.
どうにも納得いかない.

Download Status Bar – Firefox 向けアドオン

S3.Download Statusbar

もともと使っていたDowload Statusbarを模倣したアドオン.
これだっ!!

Download Manager (S3) – Firefox 向けアドオン

ということでS3バージョンに落ち着きました.
Download Statusbarが使えなくなって困ってる人にお勧め.

ぷよぷよクエスト!の進め方(開始編)

@osiire さんがぷよクエ始めたけど詰まったと聞いたので,ぷよクエ初心者向けの記事でも書こうかと.

条件

  • これからぷよクエを始める
  • 無課金

初期カード

  • 好きなキャラでよい

将来的にどのカードも通常ガチャで出るため,選ばなかったキャラも無料で手に入れられます.
細かなことを言うと,アミティ・リデルのほうがガールズパーティを組みやすいため有利です.またアミティの赤のほうが単色ガールズを組みやすく,将来的に有利になりえます.

チュートリアル(リセマラ)

最初はリセットマラソンことリセマラです.他ソシャゲと同様,ぷよクエも手に入りにくい強力カードがあるため,粘る価値はあります.
ただしチュートリアル中にある魔導石ガチャはもどきで一部レアカードがでないので,その後にできるガチャでリセマラしてください.
また,友達からの紹介特典は1端末1度しか受けれないため,リセマラ完了後に受け取ってください.
リセマラお勧めはは以下です.

  • 旧ぷよ勢(ルルー,アルル,ドラコ,ウィッチ,シェゾ)
    • ☆5のスキルが強力かつステータスも高い
    • 通常ガチャではでず銀・金・石ガチャオンリーのため,無課金では将来的にも入手が難しい
    • 進化させるのがひじょうに大変+低☆のスキルは弱いため,☆3だった場合はしばらく役立たず
  • 精霊系(ウィンディーネ,フラウ)
    • ウィンディーネはスキルが通常クエスト時にひじょうに強力
    • フラウはスキルがギルドイベント時にひじょうに強力
    • 通常ガチャでも出るため,のちのち手に入れると諦めてもよい
  • フィーバー主人公系(アルル,シグ,リデル,ラフィーナ,クルーク)
    • リーダースキルの同色攻撃うpは強力
    • コストも高いがステータスも高め
    • ラフィーナ,クルークは初期では選べないためガチャのみ
  • 回復以外の☆5,できれば初期カードと同一色
    • 初期の高☆キャラはクエストを進めるのが楽になる
    • 初期カードをリーダにすれば,リーダースキルの攻撃アップものる
    • 現状回復系はコストこそ下がったものの,弱いものが多い
  • 旧魔導勢(キキーモラ,セリリ,ハーピーミノタウロス,ラグナス)
    • 通常ガチャでほぼでないためレア度は高い
    • 体力が高くひじょうにやられにくい
    • リーダースキルのHP上昇は,強いけれども攻撃アップ系のほうがクエストを進めやすいのが現状
    • スキルの1属性攻撃への耐性も,通常クエストでは役立たないことが多々.
    • <追記>ギルドイベントにて敵の低攻撃力化によりHP上昇で耐えられる機会が増えたため、高レベルでの重要度が増しました。
  • 魚・ガーディアン・鳥シリーズ
    • 魚とガーディアンは☆4以上でリーダースキルのタフネス,鳥は☆3以上で各属性攻撃封印が優秀なため,なるべく早く各色そろえておくと,クエスト・イベントともに進行が楽になる

逆に外れ,あまりお勧めしないのは以下

  • 回復系全般
    • 現状,回復系のステータスが低く将来的にも使いづらい
    • <追記>回復系の低コスト化と強化とギルドイベントにて敵の低攻撃力化により、高レベルで回復が必要な場面もでてきました。
  • ガーディアンシリーズ
    • スキルの使いドコロが現状まったく無い
    • <追記>スキルがタフネスへ変更されたことにより魚シリーズ同等の重要度に
  • ☆2,3ドラゴルンシリーズ
    • 体力は低いが,こうげきタイプのため攻撃力は高いので初期戦力として使いやすい
    • ☆4,5への進化素材が特殊素材使用と強化が難しく,ガチャでは☆4以上がでないと初期戦力として使えない

ギルド加入

  • Dランク以上のギルドに入る

ぷよクエではギルドメンバーをサポートとしてクエストに連れて行けます.またギルドによってカードの能力も若干あがります.
現状ギルド過多のためどこもメンバー足らずな状態です.☆5キャラ(特にフィーバー主人公系)が多くいるギルドに入ると今後のクエストが進めやすいです.
また,ギルドに入る+掲示板に書き込むでそれぞれ魔導石がもらえます.

デッキの組み方

  • 初期カードの単色パーティ or 5色5枚パーティ
  • 各色対策のデッキを持つ

初期カードリーダーで同色攻撃アップを生かしたパーティが最初は使いやすいです.
またある程度カードが揃ってくると,各色対策のパーティを作りましょう.クエストは多くが1色を中心に組まれて居ることが多く,クエストが有利に進められます.
赤・青・緑に対してはそれぞれ青・緑・赤のパーティで挑めば攻撃倍・被ダメ半分になり,クエストを有利に進められます.黄・紫は互いに攻撃倍の関係のため,事故防止のために赤・青・緑の好きなパーティでいくのがよいです.
また5枚を5色別々な色にするのも,攻撃機会が多く使いやすいパーティの1つです.

ぷよの消し方

  • 連鎖よりも同時消しで攻める

ぷよ消しは連鎖・同時消し・5個以上消しで攻撃力があがります.計算式の都合から,連鎖より同時消しのほうが強いです.
4連鎖目=1連鎖目2色同時消し,9連鎖目=1連鎖目3色同時消し,14連鎖目=1連鎖目5色同時消し,くらいの威力になります.連鎖を狙うよりも,同時にたくさんの消える箇所があるようにしましょう.
また,青8個消すよりも,青4個+青4個と別々に消すようにしたほうが多色同時消しと同様に強くなります.

ぼうけんクエスト・バトル(ユーザランク上げ)

  • ぷよクエを楽しむ

やる気を使ってぼうけんクエストをできるかぎり進めましょう.進めることで経験値や魔石が手に入ります.
また魔力を使ってバトルも行い,経験値を稼ぎましょう.
ユーザーランクがあがるとデッキの上限コストがあがり,☆5などの強力カードをデッキにいれやすくなります.
道中で手に入る雑魚カードは初期カードなどに合成しましょう.
また,妖精を集めることでもらえるカードも積極的に確保しましょう.

スペシャルクエス

  • 詰まったらカードを強くする曜日クエストをまわす

ぼうけんクエストを進めるのが辛くなってきたら,スペシャルクエストにある曜日クエストで素材・お金を集めましょう.パワーアップ合成・へんしん合成の素材はここで手に入ります.平日は素材が,土日はお金が入手できます.

eldeshさんのaobench in SML

aobenchによるSMLベンチマークを書いたをやってみた.

環境

VMLinux上で実行しました

  • ホスト
  • ゲスト
    • CPU : 4コアすべて割り当て
    • Memory : 1GB
    • OS : Ubuntu lucid 10.04 LTS 32bit
  • ゲスト上のコンパイラバージョン
    • gcc : 4.4.3 (Ubuntu 4.4.3-4ubuntu5.1)
    • smlnj : v110.72 [built: Tue Mar 9 00:18:58 2010]
    • mlton : 20100608 (built Tue Jun 15 12:32:59 UTC 2010 on rothera)
    • smlsharp : 1.2.0

結果

real user sys
gcc 0m1.424s 0m1.404s 0m0.012s
smlnj 0m3.228s 0m3.204s 0m0.040s
mlton 0m2.091s 0m2.068s 0m0.020s
smlsharp 0m24.307s 0m24.206s 0m0.048s

所感

SML#ェ…