apt-getの使い方
apt-getはUbuntuのパッケージ管理システムです。インストールしたいアプリケーションの依存関係も含めて一括でインストール/アンインストールできる便利コマンドです。
設定ファイル
/etc/apt/sources.list が設定ファイル。ここに記述したURLを元にインストール可能なアプリケーションを探すことができます。
例えばUbuntu10.04ではJavaがOpenJDKになっています。SunのJDKをインストールするには、以下のURLを追加する必要があります。
deb http://archive.canonical.com/ lucid partner
コマンド
更新する
ソースを追加したとき、ひさしぶりに使うときは必ず apt-get を更新します。これをしないと古いものを参照してしまうことになるので、忘れずにやらなければいけません。
# apt-get update
探す(例:アプリケーションサーバのTomcat)
# apt-cache search tomcat6
詳細をみる
# apt-cache show tomcat6
インストールする
# apt-get install tomcat6
インストールしたアプリケーションの一覧をみる
# dpkg -l
インストールしたアプリケーションの設定ファイル等の場所を調べる
# dpkg -L tomcat6
aptitudeとの違い
aptitude とは apt-getやapt-cacheのフロントエンドです。aptitude の優位性はアンインストールの際にも、依存関係を考慮して削除してくれる autoremove にありました。
# aptitude autoremove tomcat6
ですが、比較的新しいバージョンの apt-getコマンドには autoremove が追加されているため、aptitudeを使う理由はもうありません。好みです。
# apt-get autoremove tomcat6
アンインストール
設定ファイルもすべて削除したい場合は必ず --purge オプションをつけます。
# apt-get --purge autoremove tomcat6
Linuxを勉強するためのおすすめ書籍
これは資格試験用の教科書なのですが、未経験じゃないなら転職には困らないはずなので資格自体を取る必要はありません。
注目すべきは内容で、この本ほどLinuxについてわかりやすく解説してくれる書籍は他にありません。Linux初学者は絶対買った方がいいです。捗ります。
Linux教科書 LPICレベル1 第4版 (CD-ROM付)
- 作者: 中島能和,濱野賢一朗
- 出版社/メーカー: 翔泳社
- 発売日: 2009/05/13
- メディア: 単行本(ソフトカバー)
- 購入: 15人 クリック: 166回
- この商品を含むブログ (26件) を見る
また、サーバ管理者にはぜひレベル2の本も強くオススメします。いまソーシャルアプリのサーバ構築を任されているのですが、両方とも現場でとても役にたっています。
Linux教科書 LPICレベル2 第3版 (CD-ROM付)
- 作者: リナックスアカデミー中島能和,濱野賢一朗
- 出版社/メーカー: 翔泳社
- 発売日: 2009/05/19
- メディア: 単行本(ソフトカバー)
- 購入: 3人 クリック: 100回
- この商品を含むブログ (18件) を見る
CPUのコアの数え方
並べて書いてみた
シングルコア、デュアルコア、トリプルコア、クアッドコア、ヘキサコア、オクタルコア(オクタコア)
Single-Core, Dual-Core, Triple-Core, Quad-Core, Hexa-Core, Octal-Core*1(Octa-Core*2)
リスト記法で書いてみた
- Single
- Dual
- Triple
- Quad
- -
- Hexa
- -
- Octal (Octa)
安くてかっこいいミニベロ
春ということで自転車ほしいですよね!買うならミニベロがいいなーっとずっと思っていて、あれこれ探していました。
最近だと、楽天の広告リンクにもよく出てくるBrunoのコレ。カッコいいですよね!
2011 BRUNO(ブルーノ) MINI VELO 20ROAD グレー
- 出版社/メーカー: BRUNO(ブルーノ)
- メディア: その他
- この商品を含むブログ (1件) を見る
でも6万円はちょっと高い・・・。この値段ならいっそのこともっといいの買ってみようかと検討しました。僕は都内に住んでいるので、道には段差が多くサスペンション付きならいいな!と常々思っていたんです。サスペンションあるとおしりが痛くないんですよ。段差越える毎におしりを浮かせる必要がありません。そこでルイガノのこれ。
2010【ルイガノ】(JJEDI 8) 折りたたみ自転車 ブラック
- 出版社/メーカー: アキコーポレーション
- メディア: その他
- クリック: 12回
- この商品を含むブログ (1件) を見る
でも13万はちょっと・・・。
ということで、結局これを買うことに!!16,800円なのにシンプルでカッコいいデザインだったから、これでいいじゃん!と購入しました。
DOPPELGANGER(ドッペルギャンガー) 231 hydrogen 20インチ アルミフレーム 折りたたみ自転車 シマノ6段変速 LEDライト/ワイヤーロック標準装備
- 出版社/メーカー: ドッペルギャンガー(DOPPELGANGER)
- メディア: スポーツ用品
- クリック: 19回
- この商品を含むブログ (1件) を見る
DOPPELGANGERはたくさんラインナップあるんですが、じっくり見てみると厨二っぽい余計なメッセージをでかでかと書いてあったりして恥ずかしくなるんですよね。でもこれはシンプルで良いデザインだと思いました。
オトク!
JavaでタイムゾーンをPSTにするスニペット
Javaで時刻をPST(太平洋標準時)に直すスニペットです。
System.currentTimeMills()で現在時刻を取得して、それをGMTやPSTに直したいときってありますよね。たぶん。
例えば、Amazon EC2使って海外のユーザをターゲットにFacebookアプリを使うときとかに必要になるんじゃないでしょうか。
サンプルコード
import java.text.SimpleDateFormat; import java.util.Date; import java.util.TimeZone; public class Sample { // PSTに変換 public static long toPST(long time) { TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles"); long offset = tz.getOffset(time); long pstTime = time + offset; return pstTime; } // テストコード public static void main(String[] args) { long time = System.currentTimeMillis(); //現在時刻 long pstTime = toPST(time); SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); String date = sdf.format(new Date(time)); String pstDate = sdf.format(new Date(pstTime)); System.out.printf("%s ←日本の環境で実行してるのでデフォルトはJST%n", date); System.out.printf("%s ←PSTなので -8h%n", pstDate); } }
実行結果
2011/02/15 20:18:44 ←日本の環境で実行してるのでデフォルトはJST
2011/02/15 12:18:44 ←PSTなので -8h
解説
JDK1.4から追加された getOffset(long time)が肝ですね。
「offset」は英語で「差し引き計算する」という意味だってIT用語辞典に書いてました。
引数に 0L を渡してもそうですし、多くの場合 -8時間分のミリ秒が返ると思います。じゃあなんのための引数かというと、夏時間が実施されている場合に調節してくれるそうです。
ワンライナー
上は読みやすいように4行のメソッドにしてますけど、こうすればスッキリですね。
public static long toPST(long time) { return time + TimeZone.getTimeZone("America/Los_Angeles").getOffset(time); }
DotA系とは
DotA は Defense of the Ancients の略称で Warcraft3 のカスタムゲームから生まれたゲームです。たくさんの派生があり、総称して "DotA系" と呼ばれています。
Blizzard が2002年7月にリリースした Warcraft3 は、RTS(リアルタイムストラテジー)というジャンルのゲームで、World Editorという付属のソフトがあり、誰でもゲームを作ることが可能です。これはカスタムゲームと呼ばれ、Battle.net(Blizzardのオンラインゲーム・ネットワークのこと)上でオンライン対戦までできてしまいます。
ちなみにBlizzardは世界一課金ユーザの多いMMORPG、World of Warcraft でも有名ですね。
だいたい共通の仕様
※派生ゲームの多さゆえに例外もたくさんあります
特徴
- 1プレイ30分くらいの気楽なオンライン対戦
- キャラクターが超豊富
- ビルド次第で育て方は無限大
- 仲間と大暴れする爽快感は中毒性高し
奥深いゲーム設計
立ち回り
どんなに強いと言われるヒーローがいても、プレイヤーが適切な操作をできなければ活躍できません。特に敵プレイヤーに殺されることはゴールドを与えることになるため、高確率でチームメンバーに Noob と罵られることになります。
さらに死んだ場合は復活までに数十秒かかるため、その間、経験地稼ぎもゴールド稼ぎもできず、差を広げられてしまいます。死なずに、且つ積極的に攻めるという相反する要素を極めた者だけが強者となりえます。
スキルビルド
プレイヤーのレベルが上がるごとに、4つあるスキルの中から、どのスキルレベルを上げるか選択します。均等に割り振ることもできますし、特化していくこともできます。
絶対的なスキルの振り方は存在せず、自分のプレイスタイルや敵チームの構成に合わせて柔軟に選択していく必要があります。
アイテムビルド
例えば物理攻撃タイプのヒーローであれば、攻撃速度を上げることで効率よく DPS をあげることができますし、魔法攻撃タイプのヒーローであれば魔法力UPのアイテムや、マナの自然回復力UPのアイテムを買うことで永久機関にしたりできます。Tankタイプのヒーローであればヘルスや防御力UPのアイテムを装備することで、チームの盾として乱戦時の要として重宝されます。
アイテムの影響は非常に大きく、アイテムビルド次第で同じキャラクターでもまったく異なる性質・強さへと変化します。
ゴールドはNPCを倒すか、敵プレイヤーを倒すことが主な収入源となるため、消極的なプレイをしていると敵との格差が広がってしまいます。
まとめ
要するにPvPの爽快感と、優れた戦術を取るために必要なビルドを考察する奥深さがあり、何度やっても飽きないゲーム設計になっています。
最新作
同ゲームのクリエイター達は独立したゲームとして、League of Legends(http://www.leagueoflegends.com/)を2010年5月にリリースしました。集大成と言えます。
日本人プレイヤーもわりと多く、2chを中心に活発な情報交換が行われています。日本語Wiki(http://loljp.net/wiki/)が充実しているのもそのためです。
League of Legends は基本プレイ無料のゲームですが、課金アイテムはスキン(見た目の変更)や選択可能なキャラクターのアンロックがメインで、ゲームバランスに影響を与えるものではありません。
この辺がコアユーザにはうれしいですね。
Scala2.8 + Lift2.2 + SBT0.7.4 で構築
これを見ながらやってみた。
http://www.assembla.com/wiki/show/liftweb/USING_sbt
まずはMavenで基本構造を作成
適当なディレクトリ作成
$mkdir work $cd work
Mavenでアーキタイプを指定してLiftをダウンロード。赤字部分は任意の文字列を入力。
$mvn archetype:generate -U \ > -DarchetypeGroupId=net.liftweb \ > -DarchetypeArtifactId=lift-archetype-basic_2.8.0 \ > -DarchetypeVersion=2.2-SNAPSHOT \ > -DarchetypeRepository=http://scala-tools.org/repo-snapshots \ > -DremoteRepositories=http://scala-tools.org/repo-snapshots \ > -DgroupId=your.domain \とすると、以下が出力されて構築完了。[INFO] Scanning for projects... [INFO] Searching repository for plugin with prefix: 'archetype'. [INFO] org.apache.maven.plugins: checking for updates from central [INFO] org.codehaus.mojo: checking for updates from central [INFO] artifact org.apache.maven.plugins:maven-archetype-plugin: checking for updates from central [INFO] ------------------------------------------------------------------------ [INFO] Building Maven Default Project [INFO] task-segment: [archetype:generate] (aggregator-style) [INFO] ------------------------------------------------------------------------ [INFO] Preparing archetype:generate [INFO] No goals needed for project - skipping [INFO] [archetype:generate {execution: default-cli}] [INFO] Generating project in Interactive mode [INFO] Archetype defined by properties [INFO] snapshot net.liftweb:lift-archetype-basic_2.8.0:2.2-SNAPSHOT: checking for updates from lift-archetype-basic_2.8.0-repo Downloading: http://scala-tools.org/repo-snapshots/net/liftweb/lift-archetype-basic_2.8.0/2.2-SNAPSHOT/lift-archetype-basic_2.8.0-2.2-SNAPSHOT.jar 15K downloaded (lift-archetype-basic_2.8.0-2.2-SNAPSHOT.jar) Downloading: http://scala-tools.org/repo-snapshots/net/liftweb/lift-archetype-basic_2.8.0/2.2-SNAPSHOT/lift-archetype-basic_2.8.0-2.2-SNAPSHOT.pom 2K downloaded (lift-archetype-basic_2.8.0-2.2-SNAPSHOT.pom) [INFO] Using property: groupId = your.domain [INFO] Using property: artifactId = sample Define value for property 'version': 1.0-SNAPSHOT: [INFO] Using property: package = your.domain [INFO] Using property: liftVersion = 2.2-SNAPSHOT [INFO] Using property: logBackend = logback [INFO] Using property: scalaVersion = 2.8.0 Confirm properties configuration: groupId: your.domain artifactId: sample version: 1.0-SNAPSHOT package: your.domain liftVersion: 2.2-SNAPSHOT logBackend: logback scalaVersion: 2.8.0 Y: y [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 21 seconds [INFO] Finished at: Thu Dec 02 02:39:48 JST 2010 [INFO] Final Memory: 11M/20M [INFO] ------------------------------------------------------------------------SBTでプロジェクトを初期化する
作成されたディレクトリへ移動。$cd sampleSBT実行。$sbtすると全自動で完了する。Getting Scala 2.7.7 ...confs: [default] 2 artifacts copied, 0 already retrieved (9911kB/422ms) Getting org.scala-tools.sbt sbt_2.7.7 0.7.4 ...confs: [default] 15 artifacts copied, 0 already retrieved (4096kB/322ms) [info] Recompiling project definition... [info] Source analysis: 1 new/modified, 0 indirectly invalidated, 0 removed. Getting Scala 2.8.0 ... confs: [default] 2 artifacts copied, 0 already retrieved (14484kB/646ms) [info] Building project sample 1.0-SNAPSHOT against Scala 2.8.0 [info] using LiftProject with sbt 0.7.4 and Scala 2.7.7 > %%% 書きかけ %%%
- retrieving :: org.scala-tools.sbt#boot-app