Windows7でハードディスクをヤフオクに出すためにチェックディスクをしようと思ったら

chkdsk d:
十分な特権がないので、アクセスは拒否されました。
管理者特権モードで実行しているこのユーティリティを呼び出す必要があります。

と文句を言われてしまいました。

管理者権限で実行するにはデスクトップにでもショートカットを作って、プロパティから「管理者として実行」あたりにチェックを入れれば解決ですが、それさえも面倒臭い。

コンピュータの修理を頼まれて他人のパソコンで使いたい時もあるので、もっとも簡単な方法を紹介します。

ここまで前置き

スタートボタンの「プログラムとファイルの検索」に

“cmd” と打てば cmd.exe がフィルタリングされますので、そこで

Ctrl+Shift+Enterで実行します。

これで管理者権限で実行できます。ショートカットさえ覚えておけば初期状態のWindows7で使えるので便利ですね。

参考

Run a Command as Administrator from the Windows 7 / Vista Run box
http://www.howtogeek.com/howto/windows-vista/run-a-command-as-administrator-from-the-windows-vista-run-box/


古いファイル整理してたら出てきたOpenOffice Calc のマクロだけど何してるのかもどうやって使うのかも覚えてないので、また必要になったときに取り出すためにここに貼っときます。

importClass(Packages.com.sun.star.uno.UnoRuntime);
importClass(Packages.com.sun.star.sheet.XSpreadsheetDocument);
importClass(Packages.com.sun.star.sheet.XSpreadsheets);
importClass(Packages.com.sun.star.table.XCellRange);
importClass(Packages.com.sun.star.container.XIndexAccess);
importClass(Packages.com.sun.star.awt.XWindowPeer);
importClass(Packages.com.sun.star.awt.XMessageBoxFactory);
importClass(Packages.com.sun.star.awt.Rectangle);
importClass(Packages.com.sun.star.awt.MessageBoxButtons);
importClass(Packages.com.sun.star.text.XTextRange);
importClass(Packages.com.sun.star.frame.XModel);

oDoc = UnoRuntime.queryInterface(XModel,XSCRIPTCONTEXT.getInvocationContext());
if ( !oDoc )
  oDoc = XSCRIPTCONTEXT.getDocument();
xSpreadsheetDocument = UnoRuntime.queryInterface(XSpreadsheetDocument, oDoc);
xSpreadsheets = xSpreadsheetDocument.getSheets();
xIndexAccess = UnoRuntime.queryInterface(XIndexAccess, xSpreadsheets);
oSheet = xIndexAccess.getByIndex(0);
xCellRange = UnoRuntime.queryInterface(XCellRange, oSheet);
cells= new Array(10);
max3 = new Array(0, 0, 0);
for (i = 0; i < cells.length; i++) {
	cells[i] = xCellRange.getCellByPosition(0, i).getValue();
	for (j = 0; j< max3.length; j++){
		if (cells[i] > max3[j]){
			max3[j] = cells[i];
			break;
		}
	}
}
xCellRange.getCellByPosition(3, 1).setValue(max3[0]);
xCellRange.getCellByPosition(3, 2).setValue(max3[1]);
xCellRange.getCellByPosition(3, 3).setValue(max3[2]);

javascript で大文字、小文字を区別しないで文字列比較がしたい時は、そういう演算子は用意されてないので toLowerCase() で全部小文字にして比較しちゃいましょう。

こんな感じ。

function check(){
  foo="ABC";
  bar="abc";
  if(foo.toLowerCase() == bar.toLowerCase()){ //大文字小文字を無視
    alert("ok!!");
  }else{
    alert("NG!");
  }
}

ちなみに英語で「大文字、小文字を区別しない。」と言いたい時は case-insensitive を使えばよいそうですよ。


jQuery を使って

「クリックされた時に左なら要素を消して、右なら何もしない。」

という動作をさせようと思ったら日本語だと検索してもすぐに答えが出てこなかったので、また stackoverflow から解説を紹介します。

実際のコードがこちら。

$('#element').mousedown(function(event) {
    switch (event.which) {
        case 1:
            alert('Left mouse button pressed');
            break;
        case 2:
            alert('Middle mouse button pressed');
            break;
        case 3:
            alert('Right mouse button pressed');
            break;
        default:
            alert('You have a strange mouse');
    }
});

mousedown の時に渡されるイベントを確認して場合わけすればよい、と。

つまり左クリックで要素を隠すにはこうします。

//左クリックされると foo を隠す
$(".foo").click(function(e){
  if(e.which == 1){ //左クリック
    $(this).hide("fast");
  }
});

他の方法

頻繁に使うのであれば jquery.detailclick.js を入れてこんな風に使えるようにしておくとよいかもしれません。やっぱりこちらの方が jQuery っぽくて見やすいですね。

$("target").rightClick(function()
{
$(this).text('右クリックされました!').css('background-color', '#ff3399');
});

参考

javascript - How to distinguish between left and right mouse click with jQuery? - Stack Overflow
http://stackoverflow.com/questions/1206203/how-to-distinguish-between-left-and-right-mouse-click-with-jquery
JSNote - 左、中、右クリックのカスタムイベントを追加するjQueryプラグイン
http://jsnt.blog.fc2.com/blog-entry-3.html


$(window).width() と $(document).width() や
$(window).height() と $(document).height() がどういう時に違う値を返すかわからなかったので検索したら Stack Overflow に簡潔でわかりやすい説明がされてたので紹介します。

When you have a scrollbar on the webpage.
(スクロールバーが表示されてる時)

わかりやすいですね。一応念のために書いておくと window が「ブラウザの表示領域」で、document が「ページ全体」です。

参考

jquery – When can $(document).width() and $(window).width() show different values? – Stack Overflow
http://stackoverflow.com/questions/8134741/when-can-document-width-and-window-width-show-different-values


さくらのVPSにputtyを使ってSSHでログインしてる時に間違えて /usr/bin/python を叩いてしまい(コピーしようとしたら貼りつけてしまった。)インタプリタを終了できなくてちょっと焦ったので終了方法のメモ。

‘Use Ctrl-D (i.e. EOF) to exit.’

とか言ってるくるけど Ctrl-D をおしてもサーバーまで届かない。

正しい終了方法は

import sys
sys.exit()

だそうです。 ああ、そうか sys をインポートしなきゃならんのか。プログラムを書いてる時だと気づくのにインタプリタ普段使わないから何かちがうものだと勝手に思い込んじゃってたよ…。

参考

pythonインタプリタを終了する
http://blog.justoneplanet.info/2010/08/07/python%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%97%E3%83%AA%E3%82%BF%E3%82%92%E7%B5%82%E4%BA%86%E3%81%99%E3%82%8B/


見た目が素敵なURLに変えるための mod_rewrite を xampp で使う方法を解説します。

mod_rewriteでできること

ここに検索でたどり着いた人は Apacheのモジュール mod_rewrite で何ができるかはしってると思いますが念のために例を上げておくと

http://localhost/index.php?user=foo&name=bar

と書く所を

http://localhost/foo/bar.html

と書ける機能です。

foo/bar.html にアクセスすると内部で
index.php?user=foo&name=bar が呼び出されるわけです。

Xamppの設定方法

xampp は既にインストールして使ってる前提で話を進めますのでインストールがまだの方はインストールしてからまた来てください。

1. まずApacheの設定ファイル http.conf を開きます。
自分の環境では[ X:\sugarsync\bin\xampp\apache\conf\httpd.conf ] にありました。

2. モジュールがコメントアウトされてないか確認する

#LoadModule rewrite_module modules/mod_rewrite.so

のようになってたら “#” を取って

#LoadModule rewrite_module modules/mod_rewrite.so

とします。

3. リライトの規則を書く。
http.conf にどう表示を転送(書き換え?)するか RewriteRule を記述します。

<IfModule rewrite_module>
# bar.htmlを作りドキュメントルートに置いて
# http://localhost/foo.html でアクセスできるか確認しましょう。
RewriteEngine On
RewriteRule /foo.html /bar.html
</IfModule>

4. xampp を再起動 で完了
http://localhost/foo.html にアクセスして bar.html の内容が表示されればOK!

それでも動かない場合

…とここまではGoogleで [Xampp mod_rewrite] で検索すると解説されてるサイトいっぱい出てきたんですが上記の設定だけではうちの環境では動きませんでした。

色々調べてると

<Directory />
    Options All
</Directory>

するといいよー。

的な記述をみつけたので

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

<Directory />
    Options All
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

に書き換えてみたけどダメ。

何が悪いのかわからないので、そのまま httpd.conf を眺めたら

<Directory "X:/sugarsync/bin/xampp/htdocs">
    (略)
    Options Indexes FollowSymLinks Includes ExecCGI
    (略)
</Directory>

な所を見つけたので、これを

<Directory "X:/sugarsync/bin/xampp/htdocs">
    (略)
    #Options Indexes FollowSymLinks Includes ExecCGI
    Options All
    (略)
</Directory>

に変えて xampp を再起動させたら……動いたーー!!!

動的ページを静的なページ風に出力

最初に上げた例のような動作をするためのRewriteRuleの設定は

RewriteRule /([0-9A-Za-z]+)/([0-9A-Za-z)]+).html$ /index.php?user=$1&name=$2

ただ、こうすると index.php の中で相対パスの画像などを呼び出していると
http://localhost/img/01.jpg を呼びたいのに http://localhost/foo/img/01.jpg を参照してしまう問題が発生してしまいますので画像などの参照は全て絶対パスを記述するか、もしくは

RewriteRule /([0-9A-Za-z]+)-([0-9A-Za-z)]+).html$ /index.php?user=$1&name=$2

こうして
http://localhost/foo/bar.html の代わりに
http://localhost/foo-bar.html で我慢するという方法があります。

ただこの方法の場合は引数に”-”を入れると意図しない動作になりますのでその点に注意しないといけませんが。

mod_rewrite は他にも色々と細かい設定ができますので更に知りたい方は参考のページを見るか検索で何か良さげなページを探してください。

参考

mod_rewrite
http://tech.bayashi.net/svr/doc/apache/mod_rewrite.html

mod_rewrite サンプル集/楽
http://tech.bayashi.jp/archives/entry/techweb/2007/001981.html

Apache : mod_rewriteリファレンス – dawgsdk.org
http://blog.dawgsdk.org/weblog/archives/411011

Enable mod_rewrite in windows , WAMP, XAMPP
http://phpcollection.com/mod-rewrite-windows-wamp-xampp/


lispでmapに初めて触れた時は「何、このめんどくさい関数?」と感じ、正直な話あまり触れたくもなかったのですが慣れてくるとこいつはとても便利な賢いやつです。

さてjavascriptでもmapが使えるか調べてみたらjQueryで提供されてました。

mapを使えば配列全部に関数を適用させて、返り値を配列で受け取れます。for文なんて使わなくてもええんやっ!!

使い方の例

定番の累乗を求めるサンプル。

arr = [1,2,3];
arr = $.map(arr, function(n,i){return n*n;});
for(i=0;i<arr.length;i++){
  alert(arr[i]);
}

サンプルには良く使われるけど、実際にプログラミングしてて累乗が必要になったことがないですね。まあサンプルなんで実用性よりも分かりやすさが重要だから当然といえば当然の話しですね。

とりあえずこんな感じの動作がmapはできます。

要素をまとめて取得

たとえばこんなhtmlがあって

<div>1</div>
<div>2</div>
<div>3</div>

配列で[1,2,3]が欲しいとする。

そんな時もこの map を使えば一発解決さ!(深夜の外人がやってる通販のノリで)

arr = $("div").map(function(){
    return $(this).text();
  }).get();

これでとれる。注意点は最後の get()。これがなくても配列っぽいのが返ってくるんだけども、これはjQuery-wrapped arrayというものらしく別物とのこと。

for文で実行したり arr[0] で要素のアクセスしたりはできるけどもjoinすると上手く行かない。このjoinがうまくできないのにはまってだいぶ時間を食われました。

arr.constructor でクラスを調べたら

function Array() {
    [native code]
}

となるべき所が

function (a, b) {
    return new e.fn.init(a, b, h);
}

になってました。この「get() すればよい」という情報を得るためにどれだけ遠回りしたことか…。

とはいえこれで安心してmapをjavascriptでも使えるようになったのでガシガシ使っていこうと思います。

参考

http://api.jquery.com/map/


xamppでpythonを使う

xamppには標準でpythonが入っているけど残念ながらpythonが入ってないので使いたかったら自分で入れる必要があるらしい。なので入れてみた。

環境

Windows 7 32bit
Xampp 1.7.7
Python 2.6.1 (Portable)

必要なもの

“Xampp python”で検索するとmod_pythonの情報が出てきてインストール方法も色々と出てくるんだけれどもmod_pythonのwindows版はpythonのバージョンが2.5までにしか対応してないようで非常にめんどくさそう。

色々探してたら簡単な方法を載せてるサイトが見つかったのでその方法を紹介します。
インストールが必要な物は何もなし。ヽ(´▽`)ノ

設定方法

まず
[xamppをインストールしたディレクトリ]\apache\conf\httpd.conf
を開いて

#
# For Python
#
AddHandler cgi-script .py
ScriptInterpreterSource Registry-Strict

と追記します。

場所は多分どこでもいいけど、既に
“AddHandler cgi-script .cgi .pl .asp”って書いてる所があるのでその下にでも。

んで、動かしたいpythonスクリプトの行頭に

#!P:\Dropbox\bin\Python26\App\python.exe

とpython.exeがある場所を書いておきます。

以上で終わり。

確認

#![python.exeの置いてる場所]\python.exe
print "Content-Type: text/plain"
print
print "hello world."

と書いて[xamppのフォルダ]\htdocs\pythontest.py に保存して

xampp_start.exe でサーバーを起動させて

http://localhost/pythontext.py

を開いて “hello world.”が表示されたらOK。
サーバーが起動してる状態で設定したらxamppを一回終了させて再起動させないと動きません。

やっとくと便利なこと

http://localhost/index.html
http://localhost/ でも開けるように

http://localhost/index.py
http://localhost/ でも開けるように設定しときましょう。

#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
    DirectoryIndex index.php index.php4 index.php3 index.cgi index.pl index.html index.htm index.shtml index.phtml index.py
</IfModule>

参考

Getting python to work on Xampp

http://www.macouno.com/2010/03/17/getting-python-to-work-on-xampp/


こんな感じでHTMLを書いたらFirefoxで背景がうまく表示されなかったので調べてみた。

<div style="background=#ddd;">
  <div style="float:left;">ほげ</div>
  <div style="float:left;">ほげほげ</div>
</div>

何でそうなるかは下の「参考」のリンク先でわかったのだけれども対策がめんどくさい。なのでこうする事にしました。

<div style="background=#ddd;">
  <div style="float:left;">ほげ</div>
  <div style="float:left;">ほげほげ</div>
  <div style="clear:both;"></div>
</div>

マナーはあんまりよくないですね。書きやすさ優先です。

参考

CSSでfloatを指定したボックスを含むボックスの背景が出なくなる件
http://www.fsiki.com/archive/css-doc/float.html


Tags:

« Older entries