Open Source WEB




2006-09-29 [JavaScript] MozillaでもIEでもselectionStart/selectionEndを使う

textarea中のカーソル位置を取得したいとき、MozillaではselectionStartが使える。

例えば<textarea id='yourComment'>...という要素があったとき、 現在のカーソル位置を取得するには以下のコードが使える。

var elem = document.getElementById('yourComment');
var pos = elem.selectionStart();

このJavaScriptコードはIEでは意図通りには動作しない。posの値は'undefined'になる。

IEでもselectionStart/selectionEnd相当の機能を使うには、 KOSEKI Kengo氏のSelection.jsが使える。

http://www.teria.com/~koseki/memo/xbselection/

var selection = new Selection(document.getElementById('yourComment'));
var s = selection.create();
var pos = s.start;

ただし、子ウインドウから親ウインドウのtextareaを操作するときはうまく動作しない。 この対処方法については次回。

--yasuyuki


Name:
Comment:
marmont: (Sat Sep 10 11:35:30 2011 )
19ACMV http://dY6MEZysfyBTb2Ku.com
joseph: (Sat Sep 10 19:56:23 2011 )
zcLVXN http://tvUNnkn3VziDHe1h.net
crysty: (Sun Sep 11 04:19:14 2011 )
mXWMDi http://qsv8wdjgN8ZnUukY.biz
trinity: (Sun Sep 11 12:43:48 2011 )
xjZDss http://aBadumIgJOKNM8G3.com
DrZoibergLo: (Mon Nov 28 03:07:00 2011 )
tp6rOw http://www.QKiMt6vfLbn1bD0zxU9QchzPHO25ZYPy.com
Wilman: (Fri Dec 2 23:58:50 2011 )
8pvuV8 http://www.vX0UUwfbV0BvG3upQKBWlc97t5wQCiD84Bdaq9Om.com
Urson0Xk: (Fri Dec 30 04:19:09 2011 )
HnOgnC http://www.2KFk8UxzgR3t2CjpiGYlWRZr9NzJwIs8.com


2006-09-28 [Haskell] uniqueを書く

リスト中の同じ要素を削除するunique関数を書け。 Haskell版

*Main> unique [4,4,2,2,3,3,5,5,1,1,3,2,4,5]
[4,2,3,5,1]

その1.

import Data.List;unique::Eq a=>[a]->[a];unique=nub

その2.

unique :: Eq a => [a] -> [a]
unique []     = []
unique (x:ys) = x : unique [ y | y <- ys, y /= x ]

その3.

unique xs = uniq [] xs
 where uniq ys []     = reverse ys
       uniq ys (z:zs) = if elem z ys then uniq ys     zs
                                     else uniq (z:ys) zs

--nobsun


Name:
Comment:

There is no comment.


2006-09-27 [Gauche] uniqueを書く

リスト中の同じ要素を削除するunique関数を書け。

ex.

 gosh> (unique '(4 4 2 2 3 3 5 5 1 1 3 2 4 5))
 (4 2 3 5 1)
  • 条件1: 引数に与えるリストはソートされていなくても良い
  • 条件2: 出力される要素の並びは、入力されたリストでの出現順とする

Gaucheでの例:

(define (unique list)
  (reverse
   (fold
    (lambda (a r)
      (if (member a r)
          r
          (cons a r)))
    '()
    list)))

--yasuyuki


Name:
Comment:

There is no comment.


2006-09-26 [quiz] uniqueを書く

リスト中の同じ要素を削除するunique関数を書け。

ex.

 gosh> (unique '(4 4 2 2 3 3 5 5 1 1 3 2 4 5))
 (4 2 3 5 1)
  • 条件1: 引数に与えるリストはソートされていなくても良い
  • 条件2: 出力される要素の並びは、入力されたリストでの出現順とする

--yasuyuki


Name:
Comment:

There is no comment.


2006-09-25 [Gauche] 実効時にユーザ/グループを切り替える

特権ポートをlisten(2)するようなサーバプログラムを書く場合、 サーバソケットを開いた直後に特権を放棄するようにユーザを切り替えるのが定番だ。

(define (setuidgid! user . may-be-group)
  (and-let* ((pw (sys-getpwnam user))
             (uid (ref pw 'uid))
             (gid (or (and-let* ((g (get-optional may-be-group #f)))
                        (sys-group-name->gid g))
                      (ref pw 'gid))))
    (format (current-error-port) "~d:~d\n" uid gid)
    (sys-setgid gid)
    (sys-setuid uid)
    #t))

これを

(setuidgid! foo)

と呼び出すとユーザfooのプライマリグループにsetgid(2)してからfooに setuid(2)する。

(setuidgid! foo bar)

なら、グループbarにsetgid(2)してからユーザfooにsetuid(2)する。

--び


Name:
Comment:

There is no comment.


2006-09-22 [Haskell] 草稿をとりあえずPDFにする

草稿を作成しているとき,数式やアクセント記号などの調子をみたいことがある. 草稿の部分的なテキストをとりあえずPDFにして表示できると便利.

Perl や Ruby ならワンライナーかもしれない...^^;

#!/usr/bin/env runhaskell

\begin{code}
module Main (main) where

import System.Cmd (system)
import System.Environment (getArgs,getProgName)
import System.IO (hPutStrLn, stderr)

usage :: String -> IO ()
usage prog = hPutStrLn stderr ("Usage : "++prog++" <filename w/o ext>")

main = do { prog <- getProgName
          ; args <- getArgs
          ; case args of
              [f] -> do { writeFile "tmpdf.tex" $ tmpdftex f
                        ; system ("platex tmpdf; dvipdfmx tmpdf;acroread tmpdf.pdf;rm -f tmpdf.*")
                        ; return ()
                        }
              _  -> usage prog
          }

tmpdftex :: String -> String
tmpdftex f = unlines ["\\documentclass{jarticle}"
                     ,"\\begin{document}"
                     ,"\\input{"++f++"}"
                     ,"\\end{document}"
                     ]
\end{code}

要するに,tex に埋め込んで pdf にして acroread で表示しているだけ.

上のスクリプトを tmpdf.lhs として保存し,実行パーミッションを ON して パスの通ったところにおく.使い方は簡単で,草稿ファイルを hoge.tex とすると

% tmpdf.lhs hoge

とやるだけ.

--nobsun


Name:
Comment:

There is no comment.


2006-09-21 [misc] スクリーンキャスト

Wikipediaによるまとめ: スクリーンキャスト

スクリーンキャストとは計算機画面を録画したムービーのこと。

Linux環境ではXvidcapがよく使われるようだ。

--yasuyuki


Name:
Comment:

There is no comment.


2006-09-20 [Xgl] XglでMac OS XのDocを使いたい

Akamaruというツールが使える。

http://people.freedesktop.org/~krh/akamaru.git/

Mac OS XのDocと違うところは物理エンジンを塔載している点。 例えばアイコンを掴んで落すとバウンドする。

http://video.google.com/videoplay?docid=8958142237254601573

--yasuyuki


Name:
Comment:

There is no comment.


2006-09-19 [Emacs] Undefined color: "black"でEmacsが起動しないときの対処方法

昨日の手順でXglをインストールしたが、Emacsが以下のエラーで起動しない。

$ emacs
Undefined color: "black"

調べてみたら、これはXのRgpPathの設定に問題があるときの現象らしい。

/etc/X11/rgb.txtのエイリアスを/usr/share/X11に作ってXを再起動すると解消できる。

sudo ln -s /etc/X11/rgb.txt /usr/share/X11/rgb.txt

--yasuyuki


Name:
Comment:

There is no comment.


2006-09-15 [Xgl] Ubuntu LinuxでXglを使う

ATI RadeonやNVIDIA GeForceといったOpenGLアクセラレーション機能つきのグラフィックスボードを使っているなら、 デスクトップ描画をOpenGLでカッコ良くしてみよう。

例えばGNOMEを使っているなら以下の通りにXglをインストールする。

apt-get install xserver-xgl compiz compiz-gnome

つぎに /etc/gdm/gdm.conf-custom ファイルを以下の通りに編集する。

[servers]

# Override display 0 to use Xgl.
0=Xgl

[server-Xgl]
name=Xgl server
command=/usr/local/bin/Xgl :0 -fullscreen -ac -accel xv -accel glx:pbuffer
flexible=true

さらに、ホームディレクトリに.Xsessionファイルを作り、次のコマンドを記述する。

COMPIZ_EXT="gconf decoration minimize move place resize rotate scale switcher wobbly zoom cube"

Xgl :0 -fullscreen -ac -accel xv:fdo -accel glx:pbuffer &

gnome-window-decorator &

compiz gconf decoration wobbly fade minimize cube rotate zoom scale move resize place menu swicher &

exec gnome-session

Xを再起動してログインすれば、ウインドウがボヨンボヨン動くXglの世界!!

http://www.youtube.com/watch?v=Cz_2vKq5cZk

参考文献: http://chromakode.blogsome.com/2006/02/16/howto-compiz-xgl-on-ubuntu-for-the-morbidly-lazy-2

--yasuyuki


Name:
Comment:
Kigogeodder: (Sun Jan 30 01:52:32 2011 )
You stand to achieve by all these will have more powerful ejaculations turn by the levitra information leaflet generic equivalents conducted on patients of several ethnic. It is still unapproved and unauthorized by the fda no lower dosage pills such as from generic cialis compared to cialis it is still unapproved and unauthorized. Base of the penis and the cylinder is removed a three to five minutes interval is the average to achieving an erection drawback: lack of spontaneity is this methods only. Namely erection problems taking viagra.


2006-09-14 [Mac OS X] 縦長のWebページを画像として保存する

Paparazzi!というフリーソフトウエアが使える。(LGPL)

http://www.bridge1.com/paparazzi.html

例えばこんな画像が保存できる。

(フルサイズ画像 1018x5754)

--yasuyuki


Name:
Comment:

There is no comment.


2006-09-13 [FYI] qooqle

友達に「イマドキ検索するなら qooqle だよね」 って言われました。「google なんて古い」んだそうだ。^^;

--koma2



2006-09-12 [Firefox] FireDictionary

英和辞書機能を提供してくれる、Firefox extension. こいつを入れて動かしておくと、 マウスカーソルを英単語の上に置くだけで 和訳を表示してくれるので、すごーく便利。

これ入れとけば、なが〜い英語ページも 苦もなく読めるようになりますよ!(大嘘)

--koma2


Name:
Comment:

There is no comment.


2006-09-11 [Kahua] URLを短くしたとき、古いcgiへのアクセスをリダイレクトする

さて、KahuaのURLが短くなったのは良いが、古いURLである/cgi-bin/kahua.cgiへのアクセスをどう処理したら良いだろうか?

mod_rewriteやlighttpdにルールを追加するのが本来の処理方法だろうが、このルールは複雑になるはずである。

対策を考えるために、まず古いURL/cgi-bin/kahua.cgiにアクセスしてみよう。

Kahua error - stale session key

The given session key is wrong, or expired.

Kahuaサーバーに渡されたパス"/cgi-bin/kahua.cgi"はセッションキーであると解釈され、該当するキーがないのでエラーになっている。

これを解消するには"cgi-bin"という名前のエントリーを書いてやれば良い。

(define-entry (cgi-bin cgi-name worker :rest path)
 (define (redirect return-cont)
   (let ((path (or return-cont "")))
     (node-set:
      (html: ;; Needed to make a single SXML node (for now)
       (extra-header: (@: (name "Status") (value "302 Moved")))
       (extra-header: (@: (name "Location")
                          (value (kahua-self-uri-full path))))))))
  (redirect (string-join path "/")))

引数cgi-nameに"kahua-cgi"が渡され、引数workerには常に"kahua-web"が渡される。 これらの引数は単に捨てられる。

使用される引数は残りのpathである。

例えば、

http://www.example.com/cgi-bin/kahua.cgi/kahua-web/show/pagename

は、

http://www.example.com/show/pagename

にリダイレクトされる。めでたしめでたし。

--yasuyuki


Name:
Comment:

There is no comment.


2006-09-08 [Kahua] lighttpdでKahuaのURLを短くする

lighttpdからkahua.cgi経由でKahuaを動かすとき、例えばkahua-webなら

 /cgi-bin/kahua.cgi/kahua-web/パス

というURLになる。

この/cgi-bin/kahua.cgi/kahua-webの部分を省略したいとき、lighttpdでは以下の通りに設定する。

url.rewrite = ( "^/images/(.+)$" => "/mages/$1",
                "^/kahua-web/(.+)$" => "/kahua-web/$1",
                "^/(.+)$" => "/cgi-bin/kahua.cgi/kahua-web/--vh--http:www.example.com:80/--/$1\" )

こうすることで、

http://www.example.com/パス

へのアクセスを、

http://www.example.com/cgi-bin/kahua.cgi/kahua-web/パス

で処理できる。

--yasuyuki


Name:
Comment:

There is no comment.


2006-09-07 [Kahua] mod_rewriteでKahuaのURLを短くする

Apacheからkahua.cgi経由でKahuaを動かすとき、例えばkahua-webなら

 /cgi-bin/kahua.cgi/kahua-web/パス

というURLになる。

この/cgi-bin/kahua.cgi/kahua-webの部分を省略したいとき、mod_rewriteでは以下の通りに設定する。

<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteRule ^/images/(.*) /images/$1 [L,PT]
        RewriteRule ^/kahua-web/(.*) /kahua-web/$1 [L,PT]
        RewriteRule ^/(.*) /cgi-bin/kahua.cgi/kahua-web/--vh--http:www.example.com:80/--/$1 [L,PT]
</IfModule>

こうすることで、

http://www.example.com/パス

へのアクセスを、

http://www.example.com/cgi-bin/kahua.cgi/kahua-web/パス

で処理できる。

--yasuyuki


Name:
Comment:

There is no comment.


2006-09-06 [Mac OS X] Mac OS X 標準コマンドで ISOイメージ作成

「ディスクユーティリティ」だと ISOイメージ作成するための項目が見当たらないので、 さっさとあきらめて、fink や mac ports で mkisofs ツッコンでしまう人も多いと思うのですが、 よくよく man を読んでみると、標準コマンドの hdiutil(1) で可能なんですね。

hoge というディレクトリの中身を ISOイメージにするには、こんな感じ。

 % hdiutil makehybrid -o hoge.iso hoge -iso -joliet

--koma2


Name:
Comment:

There is no comment.


2006-09-05 [WiLiKi] WiLiKiのgdbmデータを別のOSに移行

gdbmデータベースはOS間での互換性がないので、いったんfsdbmに変換する。

まず変換用の'wiliki-copydbスクリプトを入手する。

cvs -d:pserver:anonymous@gauche.cvs.sourceforge.net:/cvsroot login

anonymous CVS接続なので、ここでは単に[Enter]キーを押す。

cvs -d:pserver:anonymous@gauche.cvs.sourceforge.net:/cvsroot co -P Gauche-scripts

Gauche-scripts/wiliki-copydbスクリプトが得られる。まず移行前のOSでfsdbmに変換しておく。

gosh Gauche-scripts/wiliki-copydb -s gdbm.euc-jp -d fsdbm ~/data/wikidata.dbm new-data.dbm

上記の例ではnew-data.dbmディレクトリに変換後のデータが得られるので、これを圧縮して新しいOSにコピーする。

tar cvfz new-data-dbm.tgz new-data.dbm
scp new-data.dbm loginname@newos.example.com:

新しいOSでfsdbmデータをgdbmに変換する。

tar xvfz new-data-dbm.tgz
gosh Gauche-scripts/wiliki-copydb -s fsdbm -d gdbm.euc-jp new-data.dbm wikidata.dbm

参考文献: WiLiKi:データベースのコード変換

--yasuyuki


Name:
Comment:

There is no comment.


2006-09-04 [Firefox] FirefoxをSafariっぽくする

http://takebacktheweb.org/

GrAppleをインストールする。(Mac OS X専用)

--yasuyuki


Name:
Comment:

There is no comment.


2006-09-01 [Firefox] FirefoxをバージョンアップしてDOM Inspectorがなくなったときの対処方法

ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/ 使ってるバージョン/win32/xpi/adt.xpiをダウンロードしてインストール

参考文献: 最適化版におけるDOM inspectorのバージョンアップ

--yasuyuki


Name:
Comment:

There is no comment.


このサイトは、 IPA の「平成15年度オープンソフトウエア活用基盤整備事業」 の委託事業として開発されたKahuaで試験的に運用しております。

Copyright (c) 2004-2007 株式会社タイムインターメディア About Us