2008年10月31日金曜日
岐路
S3サービスを利用したサービスで、1人当たり1回につき600kb、30 request を20回行い、1日に100人が利用したと仮定すると、1Gあたり 0.15$ なので、一ヶ月に 0.0006 * 20 * 100 * 31 days * 0.15 $ * 110 yen = 613.8 円 の転送料と、30 * 20 * 100 * 31 / 10000 * 0.01 $ * 110 yen = 204.6 円 のリクエスト料になります。もし、転送速度が一定で使い物になるならば、ものすごい事です。
一方で、マイクロソフトは Software + Service を掲げ、既存のビジネスパートナーと協力して、サービス志向型の業態を創り上げましょう!と真剣に提案しています。つい先日発表されたWindows Asureは、その解答のうちのひとつですが、その記事の中に Amazon と協調してサービスを提供するとあります。
イノベーションが受け入れられる要素として、「移行コストが低い事」というのがあり、ブラウザの世界では、ActiveXコントローラは失敗し、生のブラウザだけで動作する JavaScript が主流になってしまいました。Write Once Run AnyWhere の標語と共に席巻した Java の Applet さえ主流に成り得ずに、Sun は、せめて Flash の地位ぐらいは取ろうと Java の軽量化に励んでいます。
ここで熟考しなければならないのは、.Net である Silverlight, Moonlight の立ち位置です。マイクロソフトの力が低下してきているとは言え、一般ユーザには、まだウィンドウズが主流です。OSのシェアを握っている間に、.Net を核としたサービスを上記のようなデータセンターと共に構築できるならば、まだまだ捨てたもんじゃないかもしれない。
Google Gears の狙いのひとつにトラフィック量の低減というのがあると思いますが、.Net ならば、もっとスマートにトラフィック量の低減を実現できるかもしれません。そうすると、サービスを提供するために必要な費用を更に下げる事ができます。運用コストが下がるならば、サービスを提供する側もそちらに流れてみよう・・・という潮流が起これば、.Net を利用するための移行コストが下がるという事を意味します。
もうひとつ無視できない潮流に、アナログ放送の空き 130Mhz が開放され、次世代通信規格と共にモバイル革命が起こる事があります。実は、HDDからSSDと同じように、パソコンからモバイル機器へのパラダイムシフトが始まっているのではないか?と感じるのですが、モバイルに焦点を当てた場合に .Net はどうなんだろう?という疑問も残ります。
今、難しい選択の岐路に立たされているような気がしてなりません。
boost::asio syslog daemon service for windows
単純に UDP で、メッセージを受け取って書き出すだけなので、syslog に則ったフォーマットである必要も無いです。boost::asio::io_service はクライアント側で使うには重いぞなもし…って場合は、以下のような感じでいけると思います。
void udp_send( const char* buf, size_t len ) {
WSAData wsaData;
SOCKET sock;
struct sockaddr_in addr;
if( !WSAStartup(MAKEWORD(2,0), &wsaData) ) {
sock = socket(AF_INET, SOCK_DGRAM, 0);
if( sock != INVALID_SOCKET ) {
addr.sin_family = AF_INET;
addr.sin_port = htons(514);
addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
sendto(sock, buf, len, 0, (struct sockaddr *)&addr, sizeof(addr));
closesocket(sock);
}
WSACleanup();
}
}
2008年10月30日木曜日
boost::asio syslog
// syslog daemon sample
#include <boost/asio.hpp>
#include <boost/bind.hpp>
class syslog_daemon {
public:
syslog_daemon(
boost::asio::io_service& io_service,
short port = 514
) :
io_service_(io_service),
socket_(
io_service,
boost::asio::ip::udp::endpoint(boost::asio::ip::udp::v4(), port)
)
{
invoke_recieve();
}
void handle_receive_from(
const boost::system::error_code& error,
size_t bytes_recvd
) {
if( error ) {
} else {
if( bytes_recvd > 0 ) {
std::string log;
log.assign( &data_[0], &data_[bytes_recvd] );
std::cout << log << std::endl;
// do logging
}
invoke_recieve();
}
}
private:
void invoke_recieve() {
socket_.async_receive_from(
boost::asio::buffer( data_, buffer_length ),
sender_endpoint_,
boost::bind(
&syslog_daemon::handle_receive_from,
this,
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred
)
);
}
private:
enum { buffer_length = 4096, };
char data_[ buffer_length ];
boost::asio::io_service& io_service_;
boost::asio::ip::udp::socket socket_;
boost::asio::ip::udp::endpoint sender_endpoint_;
};
int main() {
try {
boost::asio::io_service io_service;
syslog_daemon sd( io_service );
io_service.run();
} catch( std::exception& e ) {
std::cout << e.what() << std::endl;
}
return 0;
}
// syslog send sample
#include <string>
#include <boost/asio.hpp>
#include <boost/date_time/date_facet.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
//! syslog facility code
enum syslog_facility {
kernel_messages = 0,
user_level_messages = 1,
mail_system_messages = 2,
system_daemons = 3,
security_authorization_messages = 4,
messages_generated_internally_by_syslogd = 5,
line_printer_subsystem = 6,
network_news_subsystem = 7,
subsystem = 8,
clock_daemon = 9,
security_authorization_messages2 = 10,
ftp_daemon = 11,
ntp_daemon = 12,
log_audit = 13,
log_alert = 14,
clock_daemon2 = 15,
local_use0 = 16,
local_use1 = 17,
local_use2 = 18,
local_use3 = 19,
local_use4 = 20,
local_use5 = 21,
local_use6 = 22,
local_use7 = 23,
};
//! syslog severity code
enum syslog_severity {
emergency = 0, // system is unusable
alert = 1, // action must be taken immediately
critical = 2, // critical conditions
error = 3, // error conditions
warning = 4, // warning conditions
notice = 5, // normal but significant condition
information = 6, // informational messages
debug = 7, // debug-level messages
};
//! get syslog PRI part
/*!
@retval syslog PRI part string.
*/
std::string get_pri_part(
syslog_facility facility, //!< [in] facility code
syslog_severity severity //!< [in] severity code
) {
std::ostringstream oss;
oss << "<" << (facility * 8 + severity) << ">";
return oss.str();
}
//! get syslog HEAD part
/*!
@retval syslog HEAD part
*/
std::string get_head_part(
const boost::posix_time::ptime& ptime,
const boost::asio::ip::address_v4& address
) {
typedef boost::date_time::time_facet<boost::posix_time::ptime, char> ldt_facet;
ldt_facet* facet = new ldt_facet("%b %d %H:%M:%S");
std::ostringstream oss;
oss.imbue( std::locale( std::locale::classic(), facet ) );
oss << ptime << " " << address << " ";
return oss.str();
}
//! get syslog MSG part
/*!
@attention
@retval syslog MSG part
*/
std::string get_msg_part(
const std::string& tag, //!< [in] tag
const std::string& msg //!< [in] message
) {
BOOST_ASSERT( tag.size() <= 32 );
std::ostringstream oss;
oss << tag << ":" << msg;
return oss.str();
}
class syslog_transfer {
public:
syslog_transfer(
boost::asio::io_service& io_service ) :
io_service_(io_service),
resolver_(io_service),
socket_(
io_service,
boost::asio::ip::udp::endpoint( boost::asio::ip::udp::v4(), 0)
)
{
}
void connect( const std::string& host_name, const std::string& port ) {
boost::asio::ip::udp::resolver::query query( boost::asio::ip::udp::v4(), host_name.c_str(), port.c_str() );
iter_ = resolver_.resolve( query );
}
void transfer( const std::string& log ) {
boost::asio::ip::udp::resolver::iterator iter = iter_;
socket_.send_to( boost::asio::buffer( log, log.size() ), *iter );
}
private:
boost::asio::io_service& io_service_;
boost::asio::ip::udp::resolver resolver_;
boost::asio::ip::udp::resolver::iterator iter_;
boost::asio::ip::udp::socket socket_;
};
#include <sstream>
int main() {
std::ostringstream oss;
boost::posix_time::ptime ptime = boost::posix_time::second_clock::local_time();
boost::asio::ip::address_v4 addr = boost::asio::ip::address_v4::from_string( "192.168.1.1" );
oss << get_pri_part( log_audit, notice ) << get_head_part( ptime, addr )
<< get_msg_part( "tag", "message" );
boost::asio::io_service io_service;
syslog_transfer st( io_service );
try {
st.connect( "localhost", "514" );
st.transfer( oss.str() );
} catch( std::exception& e ) {
std::cerr << e.what() << std::endl;
}
return 0;
}
ファイルの追加は、どこぞにアップしてリンクするしかないのかな?
追記:いまどき void main は無いだろ・・・と、from_string の部分のバグを修正しました。
2008年10月29日水曜日
YahooBBのDHCPアドレス
2008/07/27 0:01:00 から 2008/8/18 12:16:00 までは、A.B.C.114/22 (7回確認)
この後、ノートパソコンが故障したので、モデムを一旦リセットしている。
2008/10/13 から 2008/10/29 0:29:00 まで A.B.C.76/22 (4回確認)
のままです。
タイトルにもある通り、YahooBB で ADSL 12M を契約しています。
個人情報特定を気にするならば、モデムは定期的にリセットした方が良いのかもしれません。
2008年10月27日月曜日
古いノートにUbuntu
今回、試みた方法は、Ubuntu-Server 版をインストールするという方法です。インストーラを起動してから、初期の入力画面が現れず、反応しなくなったので、CDをイジェクトして、再度CDを挿入しました。しかし、この操作は不要かもしれません。こうすると、コマンドプロンプト環境ながら、Ubuntuがインストールできます。ちなみに、LANはUSBに接続するタイプのものを最初から接続しながらインストールしました。
次に、デスクトップ環境の構築に入ります。
$ sudo apt-get install ubuntu-desktop
$ sudo apt-get install ubuntu-desktop-ja
と、タイプして再起動するだけです。
まぁ、今時のリッチなLinux環境は、それなりにマシン・スペックが必要なので、快適か?と問われれば、どうなんでしょう…って所で落ち着いてしまうのですが…。
味噌
料理に使う味噌を物色しているときに、どうせなら地元産の味噌を使おうという事でマルヤス味噌をチョイスしました。この味噌は、麦味噌で、大麦から作られているので、大豆アレルギー・小麦アレルギーでも食べられます。キャンプの時に食べた味噌の味が忘れられなくて、家に帰ってからもネットで調べて取り寄せ、今でも愛用しています。
お勧めの食べ方は、
- マヨネーズと味噌を半分づつ混ぜて、キュウリやラディッシュなど野菜スティックにつける
- 豚のロース肉に、この味噌を塗りラップに包んで冷凍する(もちろん焼いて食う)
- 高知の食材である鰹節でタップリ出汁をとり、味噌汁にする
- 豚のロース肉と同様に、白身魚に塗って冷凍
知り合いに味噌を製造している方がいて、その方の話によると、店頭で売っている袋に入った味噌は、アルコールを加えるなどして、菌を殺し醗酵を止めるそうです。ところが、この味噌、通販では、麹も生きたまま蔵出し味噌を送ってくれます。現代人には酵素が不足しているそうで、食を見直してみるのも良いと思うのですが、いかがでしょうか?
追伸:残念ながら広告料は入りません:-)。完全、口コミな記事です。
2008年10月25日土曜日
行動ターゲッティング
これを逆手に取れないだろうか?と考えてみたアイデアを発表してみようと思います。
HTTPのリクエストには、
Host: grayhole.blogspot.com
UserAgent:....
などと、今でも多様な情報が付随しています。そこで、ブラウザに、
自分が興味を持っている分野
X-User-Interest: 'Kayak', 'Outdoor', 'IT', 'Programing Language'
現在、ブラウジングしている目的
X-Browsing-Purpose: 'ぽにょ'
というヘッダ情報を付加してみるというのはどうでしょうか?X-Browsing-Purpose なんかは、検索入力項目と連動させても、面白いかもしれません。X-User-Interest は、Ontologyを使って表現すると、売上に直結する情報だけに、一挙に、この分野が発展するかもしれません。
公に採用されれば、行動ターゲッティングというプライバシーの問題も緩和されるかもしれません。問題は、これをユーザが設定するかどうか?という部分が大きいと思います。
2008年10月24日金曜日
ひさびさにJavaを弄った
@Override によってオーバーライドのタイプミスを防げるらしい。
@SuppressWarnings は、C++で言うところの #pragma で警告の抑止ってところらしい。
JavaGenericsが面白そうで、java.nio.ByteBuffer で利用してみようかと構想したけど、型に応じたメソッドが用意されていて、単純にキャストして良いものかどうかが、判断できずに諦めました。
思わず sizeof 演算子を使おうとして考え込むなど、慣れるまでには時間がかかりそうです…。
2008年10月23日木曜日
Rails ActiveRecord 備忘録
keyword: rails active_record table relation same column
class User < ActiveRecord::Base
has_many :Hoges
...
end
class Hoge < ActiveRecord::Base
belongs_to :user, :foreign_key => 'user_id'
belongs_to :manager, :class_name => 'User', :foreign_key => 'manager_id'
...
end
class HogesController < ApplicationController
active_scaffold :hoge do |config|
config.columns = [..., :user, :manager, ...]
config.columns[:user].form_ui = :select
config.columns[:manager].form_ui = :select
...
end
...
end
2008年10月22日水曜日
Software and Service
しかし、ロングテールで開発が成立するようなメジャーな分野(例えばエディタ)では、無料でも成立します。また、広告を行うためのプラットフォームとして無料でソフトウェアを配布する場合には、無料で成立しなくても無料を強いられます。私の頭では、どう考えても Software and Service ではなくて、Software for Service という時代になっていくという結論にしか至りません。
そうすると、オープンソースとか、そんな事は関係なく、自社の価値を高めるための秘密のSoftwareというのが流行するのではないか?と思っています。
聖人君子は除いて、一般人の感覚では、人に施す事ができるのは自分に施す余裕があるからです。一般人にも施しを受けるからには聖人君子たらんを強要するGPLは、正直言って嫌いです。そのGPLがバージョン3では、インターネット上でコンテンツを公開するために利用しても公開を強要するという項目が話題になっていましたが、秘密のSoftwareという時代に対する措置という事なのかもしれません。
ブラウザに変わって .Net が主流になる時代は来るのでしょうか?
2008年10月21日火曜日
Railsについて思うこと
- 生産性は高く素晴らしい!しかし、レールが敷かれている限りにおいては・・・
- 安定稼動しないのでアプリケーションとして提供するには、不満
- 革新的な技術がどんどん導入されて楽しいが、バージョンアップに伴うアプリケーションメンテナンスが大変
2008年10月20日月曜日
プログラマのための眼鏡
遠くを見るのに比べて、近くを見るという作業は、まず、焦点が近いという他に左目と右目の角度が普段よりも内側へと寄ります。このように、とても不自然です。
若いときに比べて眼の筋力が落ちると、長時間モニタを見ることにより、疲れて焦点を合わせるのと、凝視角度を内側へ寄せる事ができなくなります。その状態を繰り返していると、不自然な眼の筋力の使い方をするために、視力が落ちるだけでなく、乱視になります。
40歳になったある日、視力も0.7を切り、モニタを正視する事ができなくなりました。これでは仕事に支障があるので、眼鏡屋さんへ行き、OA用のカラーレンズで近々と呼ばれる眼鏡を少し遠視を入れて作ってもらいました。ところが、眼鏡屋さんへ行った時が最悪の状態だったので、眼が疲れていない状態で、この眼鏡をかけると余計つらくなりました。この調整をしてもらうために再度、眼鏡屋さんを訪れました。
眼が寄るような感じで辛いと事情を話したところ、眼鏡のフレームを凹型に曲げて(鼻の部分を顔側へ、外側を顔と反対側へ)調整してくれました。近々の眼鏡というのは、凝視角度を内側へ寄せるような構造をしているそうで、作り上、プロ仕様のOA用途に向いているとは思えません。
それでも違和感が残るので、別の眼鏡屋さんで、上記を踏まえた相談をして、もう一本OA用眼鏡を作成しました。今度の眼鏡は、普通の眼鏡に遠視を入れてもらっただけの状態(この時には、視力が更に落ちていたので近視用眼鏡の度数を落とした状態)、即ち、度数を単純に足し算・引き算しただけの状態です。
これはバッチリでしたが、一度落ち始めた視力の悪化は、なかなか留まる事を知りません。現在は42歳ですが、眼の状態に応じて両方の眼鏡を使い分けています。
もし、若いプログラマが、このブログを目にする事があるならば、近々でなく引き算で遠視を入れた状態、かつ、OA用カラーレンズの眼鏡を作り、モニタを見る時には、その眼鏡を使用する事をお勧めします。1万5千円ぐらい投資する価値は十分にあります。
若いときには「モニタを凝視しないで、焦点をモニタになるべく合わせずプログラミングしている」などと眼鏡不要と考えていましたが、年齢による衰えは確実かつ平等に、誰にでも訪れます。
砂粒
さすがにTracbackすらインプリメントしていないGoogleのBloggerサービスでは、プロフィールにおける趣味のカテゴリを通じて以外に接点が一切無く、とても硬派です。OpenSNSなどと必死にSNSの世界を検索の及ぶ世界へと繫ぎ止める戦略を打ってでているGoogleですが、インフォ・コモンズに関しては音痴なのではないでしょうか?
インターネット上で、秘密の日記状態って、なんか素敵だ・・・。面白いから、このまま続けてみよう。
2008年10月15日水曜日
TrackBack
まさか、Googleの提供するBlogサービスに、Trackbackの機能が無いなんて一秒たりとも想像すらできなかった。
この際だから、はっきり書こう。
トラックバック機能の無いブログなんて、存在する価値が無い
トラックバック機能の無いブログなんて、存在する価値が無い
トラックバック機能の無いブログなんて、存在する価値が無い
トラックバック機能の無いブログなんて、存在する価値が無い
トラックバック機能の無いブログなんて、存在する価値が無い
トラックバック機能の無いブログなんて、存在する価値が無い
トラックバック機能の無いブログなんて、存在する価値が無い
トラックバック機能の無いブログなんて、存在する価値が無い
トラックバック機能の無いブログなんて、存在する価値が無い
トラックバック機能の無いブログなんて、存在する価値が無い
トラックバック機能の無いブログなんて、存在する価値が無い
トラックバック機能の無いブログなんて、存在する価値が無い
トラックバック機能の無いブログなんて、存在する価値が無い
Haloscan というサービスで、トラックバック機能を付加できる事がわかったが、冗談も休み休みにしてほしい。という訳で、Bloggerは閉鎖します。Googleという会社が凄いのか、単なる烏合の衆なのか、わからなくなりました。携帯サイトのクローラはYahooのように Docomo, au, Softbank のフリをしてクロールするという高度な事もせず、ウェブ・マスタ・ツールに頼りきり、しかも、ウェブ・マスタ・ツールでは、URLに?や&を含める事ができない。これは高木さんのブログに書かれているように、Googleには技術力なんて皆無なのではないか?
雁首そろえて、はてな・・・という選択は自分の性に合わないし、かと言って、サービスが独立していて、設定した内容と不整合の生じるlivedoorも自分の性に合わない・・・。ごちゃごちゃとしたレイアウトは嫌だし、会社のサーバにブログを設置するのは、趣旨に反する。
残された道は、自宅サーバ…。つうと、ADSLから光に契約し直して常時稼働のサーバを設置する交渉を嫁さんとしなければならないが、通るとも思えない…。設定するならWordpressで、Akismet+SpamKarma2の組み合わせなんだろうけど…。
そうか、WindowLiveか!まじ?
Hyper-v セットアップ スイッチ エラー 2
そこで、外部仮想ネットワークをひとつ作成してから、ネットワーク接続の詳細を開いて、NICの設定で、マイクロソフト仮想スイッチプロトコルのチェックを外してから、再度、仮想ネットワーク・マネージャで外部仮想ネットワークを作成すると、2つ目の外部仮想ネットワークの作成に成功した。何が違うのか注意深く、外部仮想ネットワークの違いを見てみると、2つ目は、マイクロソフトRPCサービスのチェックが有効にできない。Ping系の低レベルなネットワーク層の実装が影響しているのかもしれないです。
毎回、ネットワーク接続の詳細からNICの設定で、マイクロソフト仮想スイッチプロトコルのチェックを外せば、マイクロソフトRPCサービスが使えませんが、外部仮想ネットワークを増やす事が可能なようです。
2008年10月14日火曜日
windows , ubuntu, Android SDK インストール
追記(2010/05/08)
JDKのインストール
ウィンドウズの場合は、SunMicroSystemのページから最新の Java SE SDK をダウンロードしてインストールします。Ubuntuの場合は、Javaを入れます sun-java6-bin 以下のコマンドに同じ
ただし、Ubuntu x86_64環境の場合には ia32-sun-java6-bin の方を入れます。
$ sudo apt-get install sun-java6-bin
$ sudo apt-get install ia32-sun-java6-bin
Eclipseを入れる
ウィンドウズ版では、これらをショートカットしてeclipse 日本語パッケージが配布されているので、おしまいです。解凍して、C:/Program Files/ | C:/Program Files (x86)/ フォルダの下にでも移動しておきましょう。
Ubuntu の場合eclipse から "Eclipse IDE for Java EE Developers" をダウンロードします。64bit環境の場合でも、Linux32bit版を選択して下さい。
$ sudo tar xvf eclipse-jee-ganymede-SR1-linux-gtk.tar.gz
$ sudo mv eclipse-jee-ganymede-SR1-linux-gtk /usr/local/eclipse3.4
次に pleiades から 日本語化プラグインをダウンロードします。
$ sudo unzip pleiades_1.2.3.p6.zip
$ sudo cp -r features /usr/local/eclipse3.4
$ sudo cp -r plugins /usr/local/eclipse3.4
$ sudo cp -r readme /usr/local/eclipse3.4
$ sudo rm -rf features
$ sudo rm -rf plugins
$ sudo rm -rf readme
$ sudo rm -f *.cmd
pleiades は、eclipse3.4 をインストールしたフォルダに下に features, plugins というディレクトリが存在するのでマージします。
eclipse.ini をエディタで編集し、最後の行に以下を追加します。
-javaagent:/usr/local/eclipse3.4/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
尚、エディタの起動がわからない方は
$ gksudo gedit /usr/local/eclipse3.4/eclipse.ini&
とでもしてください。 そして、
$ /usr/local/eclipse3.4/eclipse -clean
とします。次回以降は
$ /usr/local/eclipse3.4/eclipse
でOKです。
Android SDKを入れる
android sdk pageから、SDKをダウンロードし、解凍します。ウィンドウズ版では、"C:/Program Files/android" というディレクトリにでもコピーして下さい。x64 環境では "C:/Program Files (x86)/android" というディレクトリになります(長い元のディレクトリ名でも可)。
Ubuntuでは、
$ unzip android-sdk-linux_x86-1.0_r1.zipとします。
$ sudo mv android* /usr/local
$ cd /usr/local
$ sudo ln -s android-sdk-linux_x86-1.0_r1 android-sdk
以下は共通の操作です。
eclipse を起動します。 メニューの「ヘルプ」>「ソフトウェア更新...」を選択し、「使用可能なソフトウェア」タブを選択します。右脇の「サイトの追加」というボタンを押すとダイアログが表示されるので、「ロケーション」に
https://dl-ssl.google.com/android/eclipse/
を入力し「OK」ボタンを押します。
「使用可能なソフトウェア」の中に「"https://dl-ssl.google.com/android/eclipse/"」が追加されたので、チェックを入れて、「インストール」ボタンを押します。
「次へ」「同意して完了」「eclipse再起動」という流れになります。
メニューの「ウィンドウ」>「設定」を選択し、「android」を選択します。統計情報をGoogleに送信するかどうか聞かれるので、自分の判 断でどうするか選択してください。Android SDK のロケーションが未設定だと怒られますが、これから設定します。
Android 設定
SDK ロケーション
SDK ロケーションに 絶対パスで C:\Program Files\android-sdk もしくは /usr/local/android-sdk と指定します。自分の環境に合わせてください。
環境変数 Pathの設定は、特に必要ありません。
Ubuntu 補足
上記の SDK ロケーションのパスを設定する段になって、"Failed to get the required ADT version number from the SDK" といったエラーが出る事があります。
/usr/local/android-sdk/tools/emulator
を実行すると、
"WARNNING: Cannot write user data file '/home/oki/.android/SDK-1.0/userdata-qemu.img': Permission denied
となってます!よくわからないですが
$ cd
$ cd .android
$ sudo chown -R yourname:yourname SDK-1.0
$ cd SDK-1.0
$ chmod 666 *.img
とでもしておけば、この問題は回避できました。しかし、
NAND: could not create temp file for system NAND disk image: Permission denied
root 権限で開発しろって事?んがぁ
$ chown -R yourname:yourname android-sdk-linux_x86-1.0_r1
で開発しろって事のようです。
Hyper-v セットアップ スイッチ エラー
Hyper-vにおいては、ホストOSとゲストOSのNICは別々にするのが常識らしい。まぁ、今時NICなんて安いからゴージャスに決めるのも良いかもしれないが、稼働率の低いサーバをたくさん抱えている場合には、一々NIC1枚なんて割り当ててられないし、稼働したいゲストOSの組み合わせもTPOに応じて変わってきます。弊社では12台中のどれか4台が稼働すれば十分なんて使い方がしたいわけです。なのに外部仮想ネットワークは、どうも1NICに2ゲストOSしか割り当てられないらしい。1NICに3ゲストOS目を入れようとしたところで、「セットアップ スイッチ エラー」うんぬんのエラーメッセージが発生するようになりました。
ところが、このエラーメッセージが出てからというもの、1NICに2仮想ネットワークを再度追加しなおすという事すらできなくなりました。まあ、検索したけれども情報が無いのなんの‥・。日本語の情報源は諦めて setup switch error virtual network というキーワードでようやく見つけたのが、このページ。
どうやら、皆一様に同じ問題に突き当たっているようです。Hyper-vを再インストールしようと、ネットワークカードのドライバを再インストールしようと、堅牢なウィンドウズは不整合になったと思われる情報を堅持します。で、結論は、OSから再インストールですよー。
Android SDK
風邪をひいてしまった・・・。
2008年10月11日土曜日
OS
随分昔の話になりますが、Linuxを設定するのは大変でした。まず、ネットワークに繋がらなければ、面白くもなんともない。せめてXだけでも動作させようとしても解像度・周波数・インタレス・+ー微調整をトライ&エラーで繰り返し、やっと使える感じ・・・。それが、今やインストーラ一発で比較的新しいパソコンでもホイホイとインストールできます。会社のウェブサーバはセキュリィティを考慮に入れてSELinuxのあるCentOSをチョイスしましたが、最近のお気に入りは、Ubuntu。
会社の環境と、自宅の環境も Windows と Ubuntu のデュアル・ブートにしてあります。しかも、最近はリソースをクラウド(ここではイントラも含むウェブサーバの意)に置く事が多いので、何の支障もありません。
- OpenOfficeのレイアウトが、ウィンドウズ環境で見た場合と、Linux環境で見た場合で改行位置等が違いバラバラである
- Linuxにおける端末のフォントが汚くて見にくい(TrueTypeを入れても)
- 品質は上がったとは言え、Linuxの方は、まだまだ足りないなと思う事が多い
- 無線LANの設定は、Linuxは相当苦労する(この問題は解消しつつあります)
- 逆にウィンドウズは、やっぱりな・・・情けないだろ・・・と思うことも多い
- さすがに離れた両親のパソコンにLinuxを入れる度胸はない
で、サーバが多いので仮想化も導入して稼働率を上げようとXenを導入していたのですが、長時間稼働するとお亡くなりになるため、Hyper-Vでしょ・・・と設定していました。Hyper-Vは、仮想ネットワークの設定がやたらと難しいです。それでも、仮想端末も含めて、やはり快適です。まだ出たばかりなので、まともな解説本はありません。どの本も仮想ネットワークの設定がわからないので、ゲストOSひとつにつきNIC1枚を割り当てる方法しか触れていません。まともな解説書が欲しい・・・。
2008年10月10日金曜日
2008年10月9日木曜日
2008年10月7日火曜日
情報革命
数年前までは、コマーシャルでITだのICTだの、何をかっこつけてるんだ?と軽く考えていましたが、この事について真剣に考えなければならなくなりました。今、破竹の勢いで時代が変革しています。
私の職業はITに携わる事ですから、変革している個々の事象については把握していました。しかし、情報革命が起こっているという事が、こんなにも重要な事だという認識を得たのは、ここ2・3年の話です。ブログをはじめるにあたって、まずは、この事の重要性を書きたかった。