2011年5月8日日曜日

【Mac】ターミナルを使ってポート指定でssh接続

ちょっと困ったのでいつも通り備忘ポスト。

ssh -p [ポート番号] [ユーザ名]@[ホスト名またはIPアドレス]

2011年3月31日木曜日

【PHP&MySQL】リンク回数をカウントする考え方

備忘。

非常に簡易版。

MySQLのテーブルは
------------
id,
name,
url,
count
------------
の4カラムくらい。
idはauto_increment指定、
countはdefault 0を指定。あんまりい意味ないけど。

URLとサイト名を引数に持つ関数を作成する。
DB上に既にそのURLが存在していたらカウンタを追加、
無かったら挿入する感じで。


問題点
・このやり方だと一度もクリックされていない場合は表示されない。
・URLインジェクションとでもいうのか、
URIのGETに無理やり打ち込まれるとMySQLがダメになっちゃうかも
(セッション管理で連続入力は禁止出来る、かな?)

【MySQL】MySQLでAUTO_INCREMENTを初期化

備忘アップ。

一度テーブル内を削除(DELETE FROM テーブル名)した上で

ALTER TABLE テーブル名 AUTO_INCREMENT = 1

で大丈夫の様子。

2010年9月16日木曜日

【JavaScript】正規表現の微妙な罠~左から読みこみ

先日から微妙にPHPの学習を始めておりまして、
その辺りもおいおいブログにあげていければと考えてはおりますが、
今日はそんなPHPの話ではなく、正規表現 with javascriptです。

PHPの基礎やる上で、
毎度毎度HTMLを書くのは面倒臭いな、と思ったので
当然ながらプレートを用意したわけです。誰だってそうする。俺だってそうする。

エディターはTeraPadを使っているのでツール登録して呼び出し出来るように。

で、練習のために名前をつけて保存、ファイル名はpracticeXX(数字).php、
そしてwebサーバにアップして開いて…。

と、繰り返していた中で、
いちいちアドレスバーの数字を書き換えて表示するのも面倒になってきました。

あ、テンプレートへ次のファイルへのリンク埋め込んでおけばいいんだ。
しかしテンプレートを貼りつけ後に数字書き換えるのも手間だよな。

とか思い、javascriptで何とかしてみることにしました。


var nowLoc = location.href;
//locationオブジェクトのhrefプロパティで
//現在のURL取得

nowLoc.search(/\/[\w]+(\d+)\.[\w]{3,4}$/);
var pageNum = RegExp.$1;
//最後のスラッシュから末尾までの中から
//.直前の数字を取得

pageNum = Number(pageNum)+1;
//念のため数値化して1を足す

function toNext(){

location.href="practice"+pageNum+".php";
}
//リンクするtoNext関数を作成する

あとはHTML部に


てな感じで。

これで1~10までは上手くいったのですが、
どうも10から11ページで失敗してしまう。

調べてみると、正規表現で取得した数値が0になってしまってました。

気付いてみればあら簡単。
どうも末尾から、末尾からっていう意識に縛られていたんですが、
スクリプトは上から下、そして左から右の順に読み込まれるものなのです。
いわゆる先行順ですね。

で、正規表現部分を書き換え。

nowLoc.match(/\/[a-zA-Z]+(\d+)\.[\w]{3,4}$/);

がっかりするほど初歩的なミスでしたね。

2010年7月28日水曜日

【Linux】Ubuntuからroot権限を奪取する!

サーバの構築中とか、何かやろうとして調べて、
これだっ!!と長々とコマンド入力しても
あ、うっかりsudoつけ忘れたー(´・ω・`)なんてありがちですね。
まいどまいどsudo脳内補完するのも面倒くさいし、
ここは一発、root権限を奪ってみよう、と思いましたよ。

初期状態なら

sudo -i

で終了。簡単ですね。びっくりしました。
本来はパスワードを入力しなくてはならないそうなんですが、
初回は決まってないみたいですね。

それもそれで怖いので、パスワード変更。

passwd

です。

次回以降は、sudo -iコマンドに続きパスワードを聞かれます…
と思ったら聞かれない。

2010年7月26日月曜日

【VMware】VMwareServer2にUbuntu10を入れてみる

研修中は随分駆け足でやってしまったので
自宅環境でおさらい&覚え書き。

WindowsXPのSP3にVMware server2を導入して、そこにUbuntu10を入れますよ。

------------------------------------------------------------------

・準備
VMware server2のダウンロード。
普通にググれば素直に出てきてくれます。
微妙に英語で怖いですが、無償って書いてあるし大丈夫。きっと大丈夫…。

さて、ここの製品を初めて使用する場合、色々情報を登録しなければなりません。
プロダクトキーも必要みたいですし。
playerの方を使ったときにも登録したはずなんですが、既にアカウント情報は忘却の彼方なので再登録。
たぶん適当で大丈夫かとは思います。入力項目多いですがお茶でも飲みながら挫けずに。

登録後、VMware server2をダウンロードしつつ、
登録にしようしたメールアカウントに2通メールが来るはずなので、
メール本文内にあるリンクをクリックしてアカウントをアクティベートします。
さらに、リンク先でプロダクトキーが表示されているので、それも控えておくことにします。

UbuntuのISOイメージをダウンロード。
こちらもUbuntuでググればおとなしく出てきます。
一応→http://www.ubuntulinux.jp/
日本語最高ですね。
デスクトップ版の日本語Remixイメージのダウンロードを行います。



・VMware serverのインストール
ダウンロードしてきた実行ファイルをアレすれば自動的にインストーラ起動します。
ただ、既にVMwarePlayerをインストールしていると怒られるので、
事前にアンインストールしておくべきでしょう。怒られるのは避けたい。

インストーラの指示に従ってお茶でも飲みながらボタン押していると
いつの間にかインストールは終了します。
そんな重大な質問は無かったような気がします。

途中、プロダクトキーを聞かれるので先程のを入力すれば問題ないです。

インストール後、出来上がったショートカットを利用して起動します。

が。

コンソールはWebUI、つまりブラウザ上で動作します。
途中、プラグインをインストールする必要があるのですが、
どうやら僕がメインで使用しているgoogle chromeは対応していない様子で…(´・ω・`)

余談になりますが、
既定のブラウザにchromeが設定されているせいか
左クリック か ら の!!IE起動やFF起動を無視して
chromeがしゃしゃり出てきてしまう事態が発生。張り切りすぎ。
色々試しましたがダメだったのでFFを既定のブラウザにすることにしました。

起動させるとエラーが出ますが特に気にせずに続行。
例外に登録すると出なくなる模様。

さて、これでインストールまでは終了しました。



・Ubuntuのマウント
事前にubuntuのISOファイルを適切なディレクトリに移動させておきましょう。
僕の場合はC:\直下のVirtual Machinesフォルダでした。

VMware画面に戻って、左上のVirtual Machineをクリックし、
Create Virtual Machineをクリック。
おとなしくCreate Virtual Machineの画面が出てくるので、
再度指示に従いながら設定を行ないます。

1.Name and Location
名前とデータストアの位置を決定します。
名前入力が出来ますがとりあえず何でも良いのではないかと。
今後複数台扱う可能性を考えて Ubuntu にしました。

2.Guest Operation System
要するにゲストOSは何にするの?ってことかと思われます。
いや間違いなくそうだろう。
UbuntuなのでLinuxを選びます。
バージョンも選択できるのでUbuntu 32bitを選択。

3.Memory and Processors
CPUとメモリの割り当てかな?
推奨してくれているっぽい512MBで。
processorsは多分マルチプロセッサでCPUを何個使用するか、
とかそういう感じなのだろうか。

4.Hard Disk
Create a New Virtual Diskで。

5.Properties
色々細かく設定出来ますが、初期値でやっちゃいました。
この辺りはまた後ほど詳しく調べたいと思いますよ。

6.Network Adapter
ネットワークに接続するかしないか、的な感じ?
Add a Network Adapterを選択です。

7.Properties
ホストOSを経由してネットワークに接続するとかしないとか、
たぶんそんな感じ。Bridgedを選択です。

8.CD/DVD Drive
9.Properties
Use an ISO Imageを選択し、Browseボタンでファイルを参照します。
先程のUbuntuのISOイメージファイルを選択しましょう。

10.Floppy Drive
使わないのでDon't Add a Floppy Driveを選択。

11.USB Controller
Add a USB Controllerで。

ここまで来ればもうちょっと。
確認画面が出るので、よければフィニッシュしちゃいましょう。

しばらくするとInventoryにUbuntuが追加されるので、
選択後、Consoleタブを開きます。

プラグインをインストールしてくれ的メッセージが出るので
長いものには巻かれ、素直にインストールしましょう。
インストール後、もう一度クリックするとコンソールが表示されるはず、です。



・Ubuntuのインストール
コンソール内では既に元気いっぱい、インストーラが出ています。待てば出ます。
今回はインストールしても問題はないので、一時的に使用する、
ではなくがっつりインストールする方向で。

言語を選択し、タイムゾーンやキーボードを決定すれば
インストールが開始されます。楽!!
ただし結構時間がかかると思いますのでお茶でも飲みながら気長に待ちましょう。

インストール後はお決まりの再起動。
再起動後、Remove~press Enterと言われるので逆らわないでEnterを押します。
Removeってなんかマズイかと思ってしばらく放置していましたが
何も起きなかったのでEnter押しましょう。逆らってはダメです。


------------------------------------------------------------------

これで導入までは終了です。

2010年7月19日月曜日

【Javascript】scripting.filesystemobject

今日調べたことを残しておこうと思います。


やろうとしているのは、
ブラウザ上でボタン押下か何かをトリガーにして
タイムスタンプ機能を提供すること。

WindowsXP+IE7、ローカル上での動作だけを考えていますよ。

----------------------------------------------------------------

var fileName = "C:/js/test.txt";

//ファイルシステムオブジェクトを作る
var fsObj = new ActiveXObject("Scripting.FileSystemObject");

噂によると最上位オブジェクトで、
スクリプト全体で一個しか作れないとか何とか。


//ファイル作成
var fc = new CreateTextFile(fileName);

ファイルを作成出来ます。
どうやらtextstreamオブジェクトを返してくれるようなので、
このまま書き込みも出来ますが…。
部品化のことを考えるとそのあたりは分けたほうがいいのかな?知らん。

//テキストに追記
var fo = new OpenTextFile(fileName, true, ForAppending);

fo.Write("hello javascript");

fo.Close();

textstreamオブジェクトを返すらしい。

//テキスト読み込み
var fi = new OpenTextFile(fileName, true, ForReading);

while(!fi.AtEndOfText){
strs += fi.ReadLine();
}

fi.close();

return strs;

----------------------------------------------------------------

OpenSystemFileコントラスタの第2引数はファイルが無かった場合の処理らしい。

読み込みとか書き込み用のメソッドには
ReadLineとかWriteLineとか色々ある様子

このあたり使えると
csvファイルから動的にTABLEの表を作成出来たりするんだろうなー。

参考:
http://msdn.microsoft.com/ja-jp/library/cc428074.aspx