私を含めた俄かエンジニアへの提言として捉えました。当たり前のことなのに、中々出来ていないことを実感し、戒めの為にも転載ました。
via.開発者への提言
1.アプリケーションを作るのではなく、ビジネスを産み出すことを意識しよう。
アプリケーションを使って何をしたいのかを考えよう。開発したひとつのアプリケーションを通じて、今後もそのアプリケーションの開発を続けていこうとするのか。それともいろいろと組み合わせて使ってもらうためのアプリケーション群を開発していくつもりなのか。そうしたことも念頭において、展開していくモバイルビジネスについて、数年分は無理でも数カ月分の見通しを立てておく必要がある。
2.適切なビジネスモデルを選択する。
成功に至る道筋というのは数多くあるものだ。この中から自らにとって最適なものを選択しなければならない。利用者数や利用期間にこだわらず、とにかく有料でダウンロードしてもらうモデルを選択するのか。あるいは多数の利用者を獲得してずっと使い続けてもらえるような仕組みを考えるのか。後者の場合は広告サポートモデルを利用するケースが多い。
3.利用者の立場にたって考えよう。
利用者がアプリケーションを使うスタイルにはさまざまなものがあることを理解しよう。そして利用者のスタイルに応じたアプリケーションを開発することが大切だ。移動中に携帯電話を使う人もいれば待ち合わせの暇つぶしに使うこともある。あるいは雨の日の時間つぶしに利用する人もいる。提供するアプリケーションがどのようなシチュエーションで利用されることになるのかを理解し、そのシチュエーションに適したエクスペリエンスを提供するようにする必要がある。
4.アプリケーションが評判を集めるように工夫しよう。
人々の興味を集める独自の方法を考えよう。たとえば端末に搭載される新機能を利用する最初のアプリケーションとなることを目指すのも良い。ソーシャルメディア上でのプレゼンスを高め、アプリケーションを取り上げてくれるようメディアなどにも働きかけよう。利用者の人たちが、アプリケーションについて話をしたくなる仕掛けを考えよう。
5.エンゲージメントを意識しよう。
何度も使って貰えるような仕組みを考えよう。一度しか使ってもらえないようなものでビジネスを構築することなどはできない。コンテンツを魅力的にアップデートし、新機能も取り入れよう。もしゲームを作っているのなら、利用者同士で競争したりインタラクトできるようにしよう。
6.ブランドを構築しよう。
アプリケーション以外にも利用者がブランドに親しみを感じる方法を考えよう。アプリケーションは携帯電話用でも、携帯電話以外にもブランド化の道はある。アプリケーションポートフォリオを提供しているBackflip Studiosは企業ブランドを構築し、Angry Birdsはアプリケーションブランドを構築していると言えるだろう。双方ともにブランドイメージ構築のために時間もお金も投資し、ブランド価値を高めようと努力している。
7.パフォーマンス評価も怠りなく(ダウンロード数のみではだめ)。
モバイルアプリケーションのサクセスストーリーでは、ダウンロード数というひとつの指標ばかりが注目されることが多い。しかしモバイルビジネスではダウンロード数のみではなく、アプリケーションのライフタイムにも注目することが必要だ。つまり日々どれくらい利用されるのか、アプリケーションの利用時間はどの程度なのか、有料アップグレードへのコンバージョン率はどの程度なのかということも評価しておくことが必要だ。こうしたデータに基づいて、どの部分に注力して開発するのかを判断する指標が必要なのだ。たとえばフォーム入力のリクエストに対して半数が入力してくれないというような場合、利用者に入力求める方法や必要性について再考する必要がある。ダウンロード数というのは、利用者と関係を築いていくきっかけにしか過ぎないものなのだ。
8.テストと利用者の声。
テレビは視聴率調査を通じて、どのような番組がもっとも人気を集めるのか調査を行なっている。映画業界でもフォーカスグループのスクリーニングを行って、やはり同様の調査を行なっている。モバイルビジネスにもこうしたメディアビジネスと同様の側面があり、やはりこうした調査は行っておくべきだ。まず小さな市場向けにリリースして利用者の反応を見るという手法も大切だ。利用者からの評価を参考にしてアプリケーションの充実化をはかるのは良い考えだ。利用者も登場してきたアプリケーションに対しては期待を持つものだ。それが有料アプリケーションなら尚更のことだと言える。利用者の声をアプリケーションの機能実装に取り入れることはモバイルビジネスにとってことの他重要なことだと言える。
The shape of the system that overflows in the world is equal to the "knowhows" that parties concerned of each industry have.
People who create the system need high-ranking "knowhows" further.
I want to become ..high-ranking "knowhows".. handlers' help.
2010/12/06
2010/11/23
Unable to open class file
Eclipse 上で Android プロジェクトを新規に作成すると、
エラー: Unable to open class file
R.java: No such file or directory
と表示される場合があったりします。
R.java は自動生成されるファイルで、プログラマが触ってはならないファイル。
うーん困った。。。
上記エラーが表示された場合は、作成したプロジェクトをリフレッシュし、
その後、プロジェクトをリビルドすれば大体OK!
「自動的にビルド」に設定している人は、一旦解除し、ビルドして下さいな。
エラー: Unable to open class file
R.java: No such file or directory
と表示される場合があったりします。
R.java は自動生成されるファイルで、プログラマが触ってはならないファイル。
うーん困った。。。
上記エラーが表示された場合は、作成したプロジェクトをリフレッシュし、
その後、プロジェクトをリビルドすれば大体OK!
「自動的にビルド」に設定している人は、一旦解除し、ビルドして下さいな。
2010/11/22
SSHの鍵作成方法(2)
「putty.exe」で秘密鍵と公開鍵を生成して、SSHアクセスを試みる方法は以前行ったが、今回は、Linux上で鍵を生成する。
①RSA暗号方式の鍵を作成(因みにDSA暗号方式の場合「-t dsa」と入力)
$ ssh-keygen -t rsa
②.sshディレクトリに秘密鍵(id_rsa)と公開鍵(id_rsa.pub)を作成
Generating public/private rsa key pair.
Enter file in which to save the key (/home/nori/.ssh/id_rsa): ←[Enter]キーを押す
Enter passphrase (empty for no passphrase): ←パス入力(無くてもよい)
Enter same passphrase again: ←同じパス入力(無くてもよい)
Your identification has been saved in /home/mobile/.ssh/id_rsa.
Your public key has been saved in /home/mobile/.ssh/id_rsa.pub.
The key fingerprint is:
f9:81:b6:c7:8f:b9:aa:3e:0e:c6:bd:35:19:a1:1e:06 mobile@hogehoge
③「authorized_keys」ファイル作成
$ mv id_rsa.pub authorized_keys ←ファイル名を変更
$ chmod 600 authorized_keys ←パーミッションを変更
④「id_rsa」ファイルをどうにかしてダウンロードし、PuTTYgenを起動
⑤「PuTTYgen」画面が開いたら、[ファイル]→[秘密鍵の読み込み]を押下
⑥DLした「id_rsa」ファイルを指定
⑦読み込みに成功した旨のメッセージが出たら「秘密鍵を保存」ボタンを押下
これでアクセス可能になります。
①RSA暗号方式の鍵を作成(因みにDSA暗号方式の場合「-t dsa」と入力)
$ ssh-keygen -t rsa
②.sshディレクトリに秘密鍵(id_rsa)と公開鍵(id_rsa.pub)を作成
Generating public/private rsa key pair.
Enter file in which to save the key (/home/nori/.ssh/id_rsa): ←[Enter]キーを押す
Enter passphrase (empty for no passphrase): ←パス入力(無くてもよい)
Enter same passphrase again: ←同じパス入力(無くてもよい)
Your identification has been saved in /home/mobile/.ssh/id_rsa.
Your public key has been saved in /home/mobile/.ssh/id_rsa.pub.
The key fingerprint is:
f9:81:b6:c7:8f:b9:aa:3e:0e:c6:bd:35:19:a1:1e:06 mobile@hogehoge
③「authorized_keys」ファイル作成
$ mv id_rsa.pub authorized_keys ←ファイル名を変更
$ chmod 600 authorized_keys ←パーミッションを変更
④「id_rsa」ファイルをどうにかしてダウンロードし、PuTTYgenを起動
⑤「PuTTYgen」画面が開いたら、[ファイル]→[秘密鍵の読み込み]を押下
⑥DLした「id_rsa」ファイルを指定
⑦読み込みに成功した旨のメッセージが出たら「秘密鍵を保存」ボタンを押下
これでアクセス可能になります。
2010/10/16
[iPhone]ホーム画面にアプリのアイコンを設定するには
ホームアイコンについての要点まとめ。
• ファイルはPNG形式
• デフォルトのファイル名は「Icon.png」(「Info.plist」ファイルで変更可)
• アイコンサイズは57px×57px(iPadは、72px×72px、iPhone 4は、114px×114px)
• 角の丸みと光沢のエフェクトはシステムが自動的に付加(Info.plistファイルで変更可)
1.[XCode]→[プロジェクト]→[プロジェクトに追加]を選択します。
2. icon.pngを選択して[追加]をクリックします。
3.プロジェクトフォルダの外から取り込む場合は、
[デスティネーショングループのフォルダに項目をコピーする]にチェックを入れます。
その他はデフォルトのまま
4.完了
• ファイルはPNG形式
• デフォルトのファイル名は「Icon.png」(「Info.plist」ファイルで変更可)
• アイコンサイズは57px×57px(iPadは、72px×72px、iPhone 4は、114px×114px)
• 角の丸みと光沢のエフェクトはシステムが自動的に付加(Info.plistファイルで変更可)
1.[XCode]→[プロジェクト]→[プロジェクトに追加]を選択します。
2. icon.pngを選択して[追加]をクリックします。
3.プロジェクトフォルダの外から取り込む場合は、
[デスティネーショングループのフォルダに項目をコピーする]にチェックを入れます。
その他はデフォルトのまま
4.完了
2010/10/11
拡張子がないファイルをPHPファイルとして実行する方法
.htaccess に以下を記述します。
ForceType application/x-httpd-php
ファイル名がアルファベットか数字のもので、
拡張子がないファイルはPHPスクリプトですよ~、という意味になります。
ForceType application/x-httpd-php
ファイル名がアルファベットか数字のもので、
拡張子がないファイルはPHPスクリプトですよ~、という意味になります。
2010/09/12
BootCamp上のWindowsでの「英文字」と「ひらがな」の入力切り替えについて
カーソルをIMEに持ってって右クリックでの「ひらがな」や「英数」の切り替えに
我慢の限界に達した私は、(イチイチやってられるかー!)IMEの設定自体を変更するに至り、その過程を下記に記載します。
■環境
Mac OS : Snow Leopard (BootCamp上のWindowsはVista SP1)
1.まず、IME(赤丸のやつです)を右クリックして「設定」を選択します。
テキストサービスと入力言語という画面が開き、「全般」というタブが選択されていると思います。
2.画面が開いたら、「インストールされているサービス」という項目の中の
テキストエリアにある「Microsoft IME」をダブルクリックします。
JP 日本語(日本)
└─ キーボード
└─ Microsoft IME ←ここをダブルクリック
Microsoft IMEのプロパティという画面が開き、「全般」というタブが選択されていると思います。
3.画面が開いたら、「編集操作」というタブを選択します。
4.編集操作タブ内にある「キー設定」項目にある「変更」ボタンを押下します。
「Microsoft IME詳細プロパティ」という画面が開き、「キー設定」というタブが選択されていると思います。
5.「Microsoft IME詳細プロパティ」の「キー設定」画面で下記の設定を行います。
・「無変換」の「入力/変換入力無し」の項目を「かな変換」から「IME-オフ」に変更
・同じように、「ひらがな」を「IME-オン」
設定は以上で完了
我慢の限界に達した私は、(イチイチやってられるかー!)IMEの設定自体を変更するに至り、その過程を下記に記載します。
■環境
Mac OS : Snow Leopard (BootCamp上のWindowsはVista SP1)
1.まず、IME(赤丸のやつです)を右クリックして「設定」を選択します。
テキストサービスと入力言語という画面が開き、「全般」というタブが選択されていると思います。
2.画面が開いたら、「インストールされているサービス」という項目の中の
テキストエリアにある「Microsoft IME」をダブルクリックします。
JP 日本語(日本)
└─ キーボード
└─ Microsoft IME ←ここをダブルクリック
Microsoft IMEのプロパティという画面が開き、「全般」というタブが選択されていると思います。
3.画面が開いたら、「編集操作」というタブを選択します。
4.編集操作タブ内にある「キー設定」項目にある「変更」ボタンを押下します。
「Microsoft IME詳細プロパティ」という画面が開き、「キー設定」というタブが選択されていると思います。
5.「Microsoft IME詳細プロパティ」の「キー設定」画面で下記の設定を行います。
・「無変換」の「入力/変換入力無し」の項目を「かな変換」から「IME-オフ」に変更
・同じように、「ひらがな」を「IME-オン」
設定は以上で完了
MacBookでDVDの取り出し、強制搬出
MacBookでDVDを強制的に取り出したい場合、
マウスのクリックの長押しを行います。
BootCampでWindowsVistaをインストールするため、
DVDを入れ、再起動したら出てこなくなってしまいました。。。
Macは直感的に分からない仕様がおおいです。
マウスのクリックの長押しを行います。
BootCampでWindowsVistaをインストールするため、
DVDを入れ、再起動したら出てこなくなってしまいました。。。
Macは直感的に分からない仕様がおおいです。
MacでWindowsインストール後にパーティションサイズを変更する
よくMac上にBootCampアシスタントで領域を作成し、Windowsをインストールしたりしますが、
そのWindows領域を丸々バックアップできるツールがあったので、ご紹介します。
環境は、下記で、用途としては、一旦、MacへWindowsをインストールした後に、
そのWindows領域のパーティションサイズを変更するのに使用しました。
Mac OS :Snow Leopard(80G→128G)
Windows OS:Vista(80G→32G)
使用ソフト:Winclone_2_2.dmg
参考サイト:パソコンよろずQ&A
・大まかな手順と注意点
1.「Winclone」をダウンロードしてアプリケーションフォルダにインストール
※Winclone 2.xは、Mac OS X 10.4.x (Tiger) では動作しないので注意!
※Wincloneは、現状、Snow Leopard未対応でリストア時エラーが出るとのことだが、Winclone->menubar->Preferencesにて「Use "special" compressed image format~」にチェックで回避(?)
2.WincloneでWindows領域をバックアップ
※Windows領域を元の領域サイズよりも小さいサイズにリサイズする場合は、
別途、拡張 / 縮小プロセスを実行する必要があり、Winclone->menubar->Toolsから適宜
[Expand Windows (NTFS) Filesystem...] [Shrink Windows (NTFS) Filesystem...] などの手順を踏む必要があります。
3.Boot Camp アシスタントでパーティションを再設定
※一旦、Windows領域を削除し、再設定します。
4.再設定されたWindows領域にリストア
そのWindows領域を丸々バックアップできるツールがあったので、ご紹介します。
環境は、下記で、用途としては、一旦、MacへWindowsをインストールした後に、
そのWindows領域のパーティションサイズを変更するのに使用しました。
Mac OS :Snow Leopard(80G→128G)
Windows OS:Vista(80G→32G)
使用ソフト:Winclone_2_2.dmg
参考サイト:パソコンよろずQ&A
・大まかな手順と注意点
1.「Winclone」をダウンロードしてアプリケーションフォルダにインストール
※Winclone 2.xは、Mac OS X 10.4.x (Tiger) では動作しないので注意!
※Wincloneは、現状、Snow Leopard未対応でリストア時エラーが出るとのことだが、Winclone->menubar->Preferencesにて「Use "special" compressed image format~」にチェックで回避(?)
2.WincloneでWindows領域をバックアップ
※Windows領域を元の領域サイズよりも小さいサイズにリサイズする場合は、
別途、拡張 / 縮小プロセスを実行する必要があり、Winclone->menubar->Toolsから適宜
[Expand Windows (NTFS) Filesystem...] [Shrink Windows (NTFS) Filesystem...] などの手順を踏む必要があります。
3.Boot Camp アシスタントでパーティションを再設定
※一旦、Windows領域を削除し、再設定します。
4.再設定されたWindows領域にリストア
2010/09/06
メールサーバー(Maildir形式)
Maildir形式だと、下記の各ディレクトリ内でメール1通を1ファイルとして管理する形式
/home/user_name/Maildir/new … 新着メール
/home/user_name/Maildir/cur … 既読メール
/home/user_name/Maildir/tmp … 配送中メール
ちなみに、共有ディレクトリ形式だと、「/var/spool/mail/user_name」というファイルに
全てのメールが蓄積されていく
/home/user_name/Maildir/new … 新着メール
/home/user_name/Maildir/cur … 既読メール
/home/user_name/Maildir/tmp … 配送中メール
ちなみに、共有ディレクトリ形式だと、「/var/spool/mail/user_name」というファイルに
全てのメールが蓄積されていく
2010/08/31
pear install --onlyreqdeps -f mail_mimedecode
空メールの処理を行おうとして、メールサーバーの設定をして、テスト的にメールを送信したら
下記のエラーがやたら発生する。
: Command died with status 255:
メールのエラーログを調べてみると、空メール受信をトリガーに起動するPHPファイルに問題があった。
php on line 5 PHP Fatal error:require_once(): Failed opening required 'Mail/mimeDecode.php'
さらに、「'Mail/mimeDecode.php'」ファイルを調べてみると、
インクルードしているはずの「mimeDecode.php」ファイルが無いではないか!
1.えーここで、急きょ、強制アップグレード。
pear upgrade -f PEAR
んで、Mail_Mimeをインストール
pear install Mail_Mime
2.状況変わらずで、モジュール指定で、下記のコマンドを実行
yum install php-pear-Mail-Mime
3.さらに状況変わらずで、「Mail_MimeDecode」で検索したら
最近PEAR::Mail_Mimeから独立して、別パッケージになったとさ。。。
っちっくしょーということで、下記コマンドを実行
pear install --onlyreqdeps -f mail_mimedecode
pear upgrade pear
もーPEARは好きじゃない。
下記のエラーがやたら発生する。
メールのエラーログを調べてみると、空メール受信をトリガーに起動するPHPファイルに問題があった。
php on line 5 PHP Fatal error:require_once(): Failed opening required 'Mail/mimeDecode.php'
さらに、「'Mail/mimeDecode.php'」ファイルを調べてみると、
インクルードしているはずの「mimeDecode.php」ファイルが無いではないか!
1.えーここで、急きょ、強制アップグレード。
pear upgrade -f PEAR
んで、Mail_Mimeをインストール
pear install Mail_Mime
2.状況変わらずで、モジュール指定で、下記のコマンドを実行
yum install php-pear-Mail-Mime
3.さらに状況変わらずで、「Mail_MimeDecode」で検索したら
最近PEAR::Mail_Mimeから独立して、別パッケージになったとさ。。。
っちっくしょーということで、下記コマンドを実行
pear install --onlyreqdeps -f mail_mimedecode
pear upgrade pear
もーPEARは好きじゃない。
2010/08/07
2010/08/05
セッションをDBに保持する方法
WEB開発を行っていると、時々、WEBサーバーが複数台構成で、ロードバランスしたりする場合などがあり、
セッション情報をDBに持つ場面があったりします。
この際、セッションをDBに持たせることにより解決しますが、その設定方法を記載します。
・前提
Linux + PHP + MySQLでの開発
・方法
1.php.iniのsession.save_handlerにuserを設定。(ini_set関数でも可)
2.session_set_save_handler関数にてユーザー定義のセッション保存関数を設定。
session_set_save_handler('open','close','read','write','destroy','clean');
via.http://jp.php.net/manual/ja/function.session-set-save-handler.php
3.セッション保存用のテーブルを用意(※下記は必要に応じて変更してください。)
CREATE TABLE sessions
(
id INTEGER NOT NULL AUTO_INCREMENT,
session_id TEXT NOT NULL ,
value TEXT,
update DATETIME ,
PRIMARY KEY (id) ,
UNIQUE Index_1(session_id )
)
4.上記2で定義した下記の関数を設定します。
open
close
read
write
destroy
clean
ex).セッション参照
function read($session_id)
{
$conn = mysql_connect('hostname_or_ip' , 'user', 'password');
$session_id = mysql_real_escape_string($session_id);
$query = "SELECT value FROM sessions WHERE session_id = '".$session_id."'";
$rows = mysql_query($query , $conn );
mysql_close($rows );
while ($row = mysql_fetch_array( $rows ))
{
$value = $row['data'];
}
return $value ;
}
セッション情報をDBに持つ場面があったりします。
この際、セッションをDBに持たせることにより解決しますが、その設定方法を記載します。
・前提
Linux + PHP + MySQLでの開発
・方法
1.php.iniのsession.save_handlerにuserを設定。(ini_set関数でも可)
2.session_set_save_handler関数にてユーザー定義のセッション保存関数を設定。
session_set_save_handler('open','close','read','write','destroy','clean');
via.http://jp.php.net/manual/ja/function.session-set-save-handler.php
3.セッション保存用のテーブルを用意(※下記は必要に応じて変更してください。)
CREATE TABLE sessions
(
id INTEGER NOT NULL AUTO_INCREMENT,
session_id TEXT NOT NULL ,
value TEXT,
update DATETIME ,
PRIMARY KEY (id) ,
UNIQUE Index_1(session_id )
)
4.上記2で定義した下記の関数を設定します。
open
close
read
write
destroy
clean
ex).セッション参照
function read($session_id)
{
$conn = mysql_connect('hostname_or_ip' , 'user', 'password');
$session_id = mysql_real_escape_string($session_id);
$query = "SELECT value FROM sessions WHERE session_id = '".$session_id."'";
$rows = mysql_query($query , $conn );
mysql_close($rows );
while ($row = mysql_fetch_array( $rows ))
{
$value = $row['data'];
}
return $value ;
}
2010/08/04
電子書籍の作成方法
電子書籍を作成し、実機(iPad)で確認した所、ページ毎に白紙ページが混ざっていました。
これの原因は、ページの縦のサイズが大きいのが原因でした。
ちなみに作成したのは、画面いっぱいに画像を表示するだけ電子書籍でしたが、
この画像の縦サイズが大きいために白紙ページが表示されていました。
画像サイズの縦を「760px」に設定したら白紙が表示されなくなりました。
※ちなみに770pxだと白紙が再び表示されます。
これの原因は、ページの縦のサイズが大きいのが原因でした。
ちなみに作成したのは、画面いっぱいに画像を表示するだけ電子書籍でしたが、
この画像の縦サイズが大きいために白紙ページが表示されていました。
画像サイズの縦を「760px」に設定したら白紙が表示されなくなりました。
※ちなみに770pxだと白紙が再び表示されます。
電子書籍の作成方法
iPadやiPhone、iPodTouchなどのiBooksに電子書籍を出す際、どのような手続きを踏めばよいのか不明なため調べてみました。
日本で iBooks を利用することができるのは暫く先の事らしいですが、iBooks のフォーマットが 「EPUB」というものであることが判明したので、作れないものか試してみました。
そもそも「EPUB(いーぱぶ)」とは、
HTMLやWebブラウザソフトのオープン性を保持しつつ、インターネット接続が切断された状態のPDAやノートパソコンなどでも読書が継続できるようにダウンロード配信を前提にパッケージ化された、XHTMLのサブセット的なファイルフォーマット規格である。
「XHTMLのサブセット的なファイルフォーマット規格」とのことなので、XHTMLのタグが若干違うもの?との認識
取り敢えず、電子書籍の内容は、「XHTML + CSS」を利用するみたいです。
それをZIPして、拡張子を .epub に変えることで準備完了との事らしいです。
ではさっそく電子書籍の作成にチャレンジ!
日本語非対応なのですが、EPUBを作成するエディタがGOOGLEから出てるらしいので使ってみました。
Sigil
http://code.google.com/p/sigil/
日本で iBooks を利用することができるのは暫く先の事らしいですが、iBooks のフォーマットが 「EPUB」というものであることが判明したので、作れないものか試してみました。
そもそも「EPUB(いーぱぶ)」とは、
HTMLやWebブラウザソフトのオープン性を保持しつつ、インターネット接続が切断された状態のPDAやノートパソコンなどでも読書が継続できるようにダウンロード配信を前提にパッケージ化された、XHTMLのサブセット的なファイルフォーマット規格である。
via. http://ja.wikipedia.org/wiki/EPUB
「XHTMLのサブセット的なファイルフォーマット規格」とのことなので、XHTMLのタグが若干違うもの?との認識
取り敢えず、電子書籍の内容は、「XHTML + CSS」を利用するみたいです。
それをZIPして、拡張子を .epub に変えることで準備完了との事らしいです。
ではさっそく電子書籍の作成にチャレンジ!
日本語非対応なのですが、EPUBを作成するエディタがGOOGLEから出てるらしいので使ってみました。
Sigil
http://code.google.com/p/sigil/
2010/07/21
画面キャプチャツール 「Screen Grab」
Webページの画面キャプチャを行う為の便利ツール「Screen Grab」
これは、FireFoxのアドオンとして配布されており、
ページを上から下まですべて画像として保存、クリップボードへコピーなどが可能だ!
配布元
via.http://coxcafe.net/download-of-firefox-extensions/screen-grab/
これは、FireFoxのアドオンとして配布されており、
ページを上から下まですべて画像として保存、クリップボードへコピーなどが可能だ!
配布元
via.http://coxcafe.net/download-of-firefox-extensions/screen-grab/
2010/07/13
誰でもAndroid App を開発できるツール「App Inventor」を発表
プログラミング知識を全く必要とせず、アンドロイドアプリを開発できるツール「App Inventor」を発表
via. http://googleblog.blogspot.com/2010/07/app-inventor-for-android.html
とんでもないのが出来たな。。。
現状、ベータ版とのことなのですが、使用後、このサイトでレポートしたいと思います。
via. http://googleblog.blogspot.com/2010/07/app-inventor-for-android.html
とんでもないのが出来たな。。。
現状、ベータ版とのことなのですが、使用後、このサイトでレポートしたいと思います。
2010/05/06
Pyttyの設定データ を移行
Pyttyの設定データ を移行しました。
環境: Windows Vista → Windows7
Windows Vistaマシンで、下記コマンドをDOS窓から実行すると、設定したユーザー名のディレクトリに
ファイルが作成されます。
reg export HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions "c:\Users\ユーザー名\putty_conf.reg"
作成されたファイルを7マシンに持っていき、(デスクトップなどに保存し)ファイルをダブルクリックします。
正常に登録されるとメッセージが表示されます。
環境: Windows Vista → Windows7
Windows Vistaマシンで、下記コマンドをDOS窓から実行すると、設定したユーザー名のディレクトリに
ファイルが作成されます。
reg export HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions "c:\Users\ユーザー名\putty_conf.reg"
作成されたファイルを7マシンに持っていき、(デスクトップなどに保存し)ファイルをダブルクリックします。
正常に登録されるとメッセージが表示されます。
2010/04/27
Puttyの設定のエクスポート
Windows Vista → Windows7 へ『Putty』を移行しました。
これはその手順です。
【Windows Vista】
1.管理者としてcmd.exeを実行
2.下記コマンドを実行します。
reg export HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions "c:\putty_settings.reg"
3.「c:\putty_settings.reg」が作成されます。
4.ファイル「c:\putty_settings.reg」をWindows7側のマシンへ移動
【Windows 7】
5.デスクトップか、どっかに「putty_settings.reg」ファイルを置いて、
ファイルをダブルクリックします。
6.アラートが出ますが、そのままOK
7.これでインポートが出来ました。
これはその手順です。
【Windows Vista】
1.管理者としてcmd.exeを実行
2.下記コマンドを実行します。
reg export HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions "c:\putty_settings.reg"
3.「c:\putty_settings.reg」が作成されます。
4.ファイル「c:\putty_settings.reg」をWindows7側のマシンへ移動
【Windows 7】
5.デスクトップか、どっかに「putty_settings.reg」ファイルを置いて、
ファイルをダブルクリックします。
6.アラートが出ますが、そのままOK
7.これでインポートが出来ました。
2010/04/20
CVR (%)
Conversion Rate
クリック中のアクション率
=>アクション数 / クリック数
CPC (円)
Cost Per Click
1クリック辺りの料金
=>アクション数 * 単価 / クリック数 (アフィリエイトの場合)
=>クリック単価 (クリック保証の場合)
=>広告費用 / クリック数 (期間保証/PV保証の場合)
CPA (円)
Cost Per Action
1アクション辺りの獲得単価
=>アクション単価 (アフィリエイトの場合)
=>CPC / CVR (期間保証/PV保証の場合)
※20/0.05=400円
CTR (%)
Click Through Rate
PVからのクリック率
=>クリック数 / PV数
CPM (円)
Cost Per Mille
1000PV辺りのコスト
=>広告費用 * 1000 / PV数 (期間保証/PV保証の場合)
=>アクション数 * アクション単価 * 1000 / PV数 (アフィリエイトの場合)
=>クリック単価 * クリック数 * 1000 / PV数 (クリック保証の場合)
ROI (%)
Return On Investment
投資回収率
かかった広告費用と実際に儲けたお金の割合
=>回収金額 / 広告費用
Conversion Rate
クリック中のアクション率
=>アクション数 / クリック数
CPC (円)
Cost Per Click
1クリック辺りの料金
=>アクション数 * 単価 / クリック数 (アフィリエイトの場合)
=>クリック単価 (クリック保証の場合)
=>広告費用 / クリック数 (期間保証/PV保証の場合)
CPA (円)
Cost Per Action
1アクション辺りの獲得単価
=>アクション単価 (アフィリエイトの場合)
=>CPC / CVR (期間保証/PV保証の場合)
※20/0.05=400円
CTR (%)
Click Through Rate
PVからのクリック率
=>クリック数 / PV数
CPM (円)
Cost Per Mille
1000PV辺りのコスト
=>広告費用 * 1000 / PV数 (期間保証/PV保証の場合)
=>アクション数 * アクション単価 * 1000 / PV数 (アフィリエイトの場合)
=>クリック単価 * クリック数 * 1000 / PV数 (クリック保証の場合)
ROI (%)
Return On Investment
投資回収率
かかった広告費用と実際に儲けたお金の割合
=>回収金額 / 広告費用
2010/04/08
SSHのログインに失敗/成功のカウント
ssh のログインに失敗/成功したユーザ数は以下のコマンド等でカウントできます。
# grep -c invalid /var/log/secure
# grep -c Failed /var/log/secure
# grep -c Accepted /var/log/secure
# grep -c invalid /var/log/secure
# grep -c Failed /var/log/secure
# grep -c Accepted /var/log/secure
SSH Brute Force Attack
cat /var/log/secure* | grep 'Invalid' | awk '{print $8}' | sort | uniq -c | sort -nr | head -n 100
ひ、ひどい…
ひ、ひどい…
SSHでパスワード認証を禁止するには
vi /etc/ssh/sshd_config
#PasswordAuthentication yes
↓
PasswordAuthentication no
SSHの再起動を忘れずに!
/etc/init.d/sshd restart
#PasswordAuthentication yes
↓
PasswordAuthentication no
SSHの再起動を忘れずに!
/etc/init.d/sshd restart
2010/02/20
ntpサーバで時刻同期設定
ntpで時刻設定することがあったので、メモ。
1.ntpをインストール
yum install -y ntp
2.時刻をサーバに問い合わせて同期
ntpdate ntp.nict.jp (※このntp.nict.jpは日本標準時プロジェクトのntpサーバです。)
3.ntpの設定ファイルを変更
vim /etc/ntp.conf
server 0.centos.pool.ntp.org
server 1.centos.pool.ntp.org
server 2.centos.pool.ntp.org
上記の箇所を下記に変更
server -4 ntp.nict.jp
server -4 ntp1.jst.mfeed.ad.jp
server -4 ntp2.jst.mfeed.ad.jp
※VPSとかだと、変更権限が無いかも…
4.ntpdの起動
/etc/init.d/ntpd start
5.自動起動の設定
chkconfig ntpd on
6.ntpdのステータス確認
ntpq -p
1.ntpをインストール
yum install -y ntp
2.時刻をサーバに問い合わせて同期
ntpdate ntp.nict.jp (※このntp.nict.jpは日本標準時プロジェクトのntpサーバです。)
3.ntpの設定ファイルを変更
vim /etc/ntp.conf
server 0.centos.pool.ntp.org
server 1.centos.pool.ntp.org
server 2.centos.pool.ntp.org
上記の箇所を下記に変更
server -4 ntp.nict.jp
server -4 ntp1.jst.mfeed.ad.jp
server -4 ntp2.jst.mfeed.ad.jp
※VPSとかだと、変更権限が無いかも…
4.ntpdの起動
/etc/init.d/ntpd start
5.自動起動の設定
chkconfig ntpd on
6.ntpdのステータス確認
ntpq -p
2010/02/17
不正ユーザーでのアクセス回数
CentOS5系で不正ユーザーでのアクセス回数を表示してみた。。。
cat /var/log/secure* | grep 'Invalid' | awk '{print $8}' |sort | uniq -c | sort -nr | head -n 100
こんなにアタックが…
cat /var/log/secure* | grep 'Invalid' | awk '{print $8}' |sort | uniq -c | sort -nr | head -n 100
こんなにアタックが…
2010/02/11
メールサーバー切替え(CentOS5.4)
システムで使用するメールサーバー機能をsendmailからPostfixに切替えます。
root権限で、下記のコマンドを実行
alternatives --config mta
There are 3 programs which provide 'mta'.
Selection Command
-----------------------------------------------
1 /usr/sbin/sendmail.sendmail
*+ 2 /var/qmail/bin/sendmail
3 /usr/sbin/sendmail.postfix
Enter to keep the current selection[+], or type selection number: 3
・sendmail自動起動設定解除
chkconfig sendmail off
・sendmail自動起動設定解除確認(ランレベル確認)
chkconfig --list sendmail
sendmail 0:off 1:off 2:off 3:off 4:off 5:off 6:off
・Postfix自動起動設定
chkconfig postfix on
・Postfix自動起動設定確認(ランレベル確認)
chkconfig --list postfix
postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off
root権限で、下記のコマンドを実行
alternatives --config mta
There are 3 programs which provide 'mta'.
Selection Command
-----------------------------------------------
1 /usr/sbin/sendmail.sendmail
*+ 2 /var/qmail/bin/sendmail
3 /usr/sbin/sendmail.postfix
Enter to keep the current selection[+], or type selection number: 3
・sendmail自動起動設定解除
chkconfig sendmail off
・sendmail自動起動設定解除確認(ランレベル確認)
chkconfig --list sendmail
sendmail 0:off 1:off 2:off 3:off 4:off 5:off 6:off
・Postfix自動起動設定
chkconfig postfix on
・Postfix自動起動設定確認(ランレベル確認)
chkconfig --list postfix
postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off
2010/02/10
一般ユーザーが自身のホームディレクトリ以外を参照できないようにする
管理者用ユーザー(wheelグループ所属ユーザー)を除いて、一般ユーザーが自身のホームディレクトリ以外を参照できないようにする。
[root@fedora ~]# usermod -G wheel fedora ← 管理者ユーザー(例:fedora)をwheelグループに追加
[root@fedora ~]# vi /etc/ssh/sshd_config ← SSHサーバー設定ファイル編集
以下を最終行へ追加
Match Group *,!wheel
ChrootDirectory /home/%u/./
[root@fedora ~]# usermod -G wheel fedora ← 管理者ユーザー(例:fedora)をwheelグループに追加
[root@fedora ~]# vi /etc/ssh/sshd_config ← SSHサーバー設定ファイル編集
以下を最終行へ追加
Match Group *,!wheel
ChrootDirectory /home/%u/./
2010/02/07
「eclipse」でハマッタ履歴(!MESSAGE 始動エラー)
eclipseの更新作業をしたら、起動時にポップアップが表示され、
eclipseが起動出来なくなりました。
そのポップアップに記載されていた、ログを見ると下記の内容が記載されていました。
■修正方法
1.コマンドプロンプト(OSがVistaの場合、)管理者にて起動します。
2.c:\work\eclipse.exe -clean コマンドを実行します。
[c:\work\]はお使いの環境に合わせて下さい。
3.上記2のコマンドを実行すると、eclipseが起動します。
いやー突然使えなくなるのでビックリしました。。。
!SESSION 2010-02-07 14:42:26.842 -----------------------------------------------
eclipse.buildId=M20090917-0800
java.version=1.6.0_17
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=ja_JP
Framework arguments: -product org.eclipse.epp.package.php.product
Command-line arguments: -os win32 -ws win32 -arch x86 -product org.eclipse.epp.package.php.product
!ENTRY org.eclipse.osgi 4 0 2010-02-07 14:42:27.587
!MESSAGE 始動エラー
!STACK 1
java.lang.NoSuchMethodError: org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(Lorg/osgi/framework/ServiceEvent;)V
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:129)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:206)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:506)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:524)
at org.eclipse.core.runtime.adaptor.EclipseStarter.publishSplashScreen(EclipseStarter.java:539)
at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:291)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:175)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
at org.eclipse.equinox.launcher.Main.run(Main.java:1311)
!SESSION Sun Feb 07 14:42:27 JST 2010 ------------------------------------------
!ENTRY org.eclipse.equinox.launcher 4 0 2010-02-07 14:42:27.624
!MESSAGE Exception launching the Eclipse Platform:
!STACK
java.lang.NullPointerException
at org.eclipse.osgi.internal.baseadaptor.BaseStorage.readStateData(BaseStorage.java:749)
at org.eclipse.osgi.internal.baseadaptor.BaseStorage.getStateManager(BaseStorage.java:704)
at org.eclipse.osgi.baseadaptor.BaseAdaptor.getState(BaseAdaptor.java:380)
at org.eclipse.core.runtime.adaptor.EclipseStarter.logUnresolvedBundles(EclipseStarter.java:443)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:189)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
at org.eclipse.equinox.launcher.Main.run(Main.java:1311)
eclipseが起動出来なくなりました。
そのポップアップに記載されていた、ログを見ると下記の内容が記載されていました。
■修正方法
1.コマンドプロンプト(OSがVistaの場合、)管理者にて起動します。
2.c:\work\eclipse.exe -clean コマンドを実行します。
[c:\work\]はお使いの環境に合わせて下さい。
3.上記2のコマンドを実行すると、eclipseが起動します。
いやー突然使えなくなるのでビックリしました。。。
!SESSION 2010-02-07 14:42:26.842 -----------------------------------------------
eclipse.buildId=M20090917-0800
java.version=1.6.0_17
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=ja_JP
Framework arguments: -product org.eclipse.epp.package.php.product
Command-line arguments: -os win32 -ws win32 -arch x86 -product org.eclipse.epp.package.php.product
!ENTRY org.eclipse.osgi 4 0 2010-02-07 14:42:27.587
!MESSAGE 始動エラー
!STACK 1
java.lang.NoSuchMethodError: org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(Lorg/osgi/framework/ServiceEvent;)V
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:129)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:206)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:506)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:524)
at org.eclipse.core.runtime.adaptor.EclipseStarter.publishSplashScreen(EclipseStarter.java:539)
at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:291)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:175)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
at org.eclipse.equinox.launcher.Main.run(Main.java:1311)
!SESSION Sun Feb 07 14:42:27 JST 2010 ------------------------------------------
!ENTRY org.eclipse.equinox.launcher 4 0 2010-02-07 14:42:27.624
!MESSAGE Exception launching the Eclipse Platform:
!STACK
java.lang.NullPointerException
at org.eclipse.osgi.internal.baseadaptor.BaseStorage.readStateData(BaseStorage.java:749)
at org.eclipse.osgi.internal.baseadaptor.BaseStorage.getStateManager(BaseStorage.java:704)
at org.eclipse.osgi.baseadaptor.BaseAdaptor.getState(BaseAdaptor.java:380)
at org.eclipse.core.runtime.adaptor.EclipseStarter.logUnresolvedBundles(EclipseStarter.java:443)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:189)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
at org.eclipse.equinox.launcher.Main.run(Main.java:1311)
登録:
投稿 (Atom)
-
using Excel = Microsoft.Office.Interop.Excel; /// Excelオブジェクト Excel.Application oXls; /// ワークブックコレクション Excel.Workbook oWBook = this.oXl...
-
リンクでgoogleカレンダーへ予定を追加すした、忘れそうなのでメモ ○Javascriptでの記述例 var text = "買い物"; var details = "新春バーゲンセール"; var location= ...
-
Androidのアプリ開発を行うために行った開発環境の構築手順についてメモします。 作業時点(2012.04.24)での最新と思われるもので構築しました。 ・環境 OS: Windows7 64bit ・入れたもの JDK Standard Edition ...