2019/03/29

"remove-appxpackage" ubuntu

WSL を入れては放置を繰り返していたんですけど使うたびにパスワードを忘れてて一々再設定してたりしました。再設定は

> ubuntu config --default-user root
とデフォルトユーザーを root にして passwd で再設定して上のコマンドでデフォルトユーザーを元に戻すんですよ。ロックですね。

で、気づいたら Ubuntu を 2 つ設定していて何がどうなってるのか分からなくなるんではないかこれは!? と不安になったんで少し調べて見たら

%LOCALAPPDATA%\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc
%LOCALAPPDATA%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc
みたいな感じで分かれていたのは安心。ubuntu1804.exeubuntu.exe がそれぞれに入っていました。

二つ入ってると絶対混乱するでしょ? なんで、片方をアンインストールしようと思ったんだけど、https://docs.microsoft.com/en-us/windows/wsl/faq#how-do-i-uninstall-a-wsl-distribution によると Remove-AppxPackage を使えってあるんだけど、引数が分からない!! のでググりました。

How do you forcefully remove apps in Windows 10?

> Get-AppxPackage | Select Name, PackageFullName

なるほど、そうやって PackageFullName が取れるんですね! 無事削除ができました。

2017/06/27

母 書き順

タイトルのまんまですが、「母」という字を聞かれて書き順合ってるよなと思いつつ、でも念のためと思って検索してみました。


違う! 何もかんも違う!! 今まで 2 -> 1 -> 5 -> 3 -> 4 画目の順番で書いていました。どうしてこんなことになってしまったのでしょう。

今後人生で何度「母」と書くことがあるか分かりませんが、正しい順に書けるといいなと思いました。

2017/06/17

異分析

「つらみ」みたいな「み」の話をしていたのですが、「動詞形を挟むという分析は異分析な気がするな」と言われて「??」と思ったのでググってみました

異分析 - Wikipedia
異分析(いぶんせき)は、誤解に基づいて、あるに本来の語源・語構成と異なる解釈を行うこと

「とんでもない」=「とんでも」+「ない」ではないから、「とんでもございません」という表現は本来はおかしい、というようなことが書いてありました。挙げられてる以外にも沢山あるかと思うと、ドキドキします。

で、流れで「バブみ」の話になったんですが「バブルな感じだと思ってた」とのことなので、こんなところにも異分析、なのでした。

2017/06/15

pacman clean cache

どうもディスクの使用量が多いなと思い、パッケージシステムのキャッシュを疑ってお掃除しようと思いました。しかし、コマンドオプションが思いだせません。ググりました。

pacman - ArchWiki
The built-in option to remove all the cached packages that are not currently installed is:
# pacman -Sc
はい、Arch Linux を使っています。

しかし、思ったほど空き容量が増えません。こうなったら du しまくりです。時間にまかせて
$ sudo du -s /*/* | sort -n
とかしまくりました。どうやらというかやはりホームディレクトリが大きいようなのですが、du でホームディレクトリ直下のフォルダを調べても合計が合いません。あれれ?

そうなのです、"." で始まるディレクトリのことをすっかり忘れていたのです。気を取り直してもう一度
$ sudo du -s /home/*/.??*
すると、.local/share/Trash にまで辿りつきました。どうもアプリによっては削除でこのフォルダにファイルを移動してるようなのです。以前はそんなことなかったのですが...。

積もりつもったファイルを手で消してさっぱり綺麗になりました。

2017/06/14

vacay

"On vacay" と言われて "vacay?" と思い、vacation のことかなとは思ったのですが不確かだったのでググってみました

Urban Dictionary: vacay
The abbreviation of Vacation which is Vaca, is pronounced sometimes as Vacay.
とのことで、やはり vacation の意味でした。

vaca と書くこともありこれで /ˈveɪˌkeɪ/ と読むようなのですが、あんまり英語の綴りっぽくなく vacay と書くみたいでした。この ation は接尾語の ation でいいのかな? ation の a だけで発音を類推するには英語は難しすぎます。

日本人には vacation が /veɪˈkeɪ ʃən/ であることの方が受けいれ難いですね。ヴェイケイシェン(?)

何処で何を楽しんでるんだと聞いたら「バミューダでグレンリベット12年を」とのことでした。羨しかったです。

2017/06/13

中華冷やし冷やし

リビングの模様替えを手伝わされていたら突然脳裏に「中華冷やし冷やし」というフレーズが浮かんできました。でも何だったか思いだせません。ダウンタウンのコント? 次長課長? それはタンメン?? 気になったのでググりました。


ダウンタウンは合っていましたが、ガキでした。「欧陽菲菲」とか懐しいですね。

暑くなってきましたし、冷やし中華を注文する際には使ってみては如何でしょうか。

2013/08/15

powershell true

PowerShell でコマンドで boolean 指定したくなって
True とか TRUE とか true とかやってもダメでした。
でも 1 なら True で 0 だと False なの。まじで!!

で何が正解なのか知りたくてググりました。
Boolean Values and Operators - Windows PowerShell Blog - Site Home - MSDN Blogs
Boolean values (which can be either 1 or 0) are defined in PowerShell using the....

まじで!! と思ったら $True とかも使えるみたいだったんだけど
っていうか $True!! と $True にビビったーので記念に記しておきます。
言葉が変われば何でも変わりますね。

2013/08/13

"Blocked loading mixed active content"

Firefox の Version Up のスピードに既に追いつけなくなっています。
23.0 って何だよ!! と思ってたら正常に表示されないページが出てしまいました。
JavaScript がページを取ってこれていないようだったので Ctrl+Shift+K 押して
コンソールを開いてリロードしてみたら
Blocked loading mixed active content "http....
何だこれは。

ということでググりました。が、良く分からない。
"Blocked loading mixed active content" in FireFox - WebFaction Community
MITM ねぇ、ふむ。

で mixed と言われて http/https の混在を思いついたのですが
about:config を確認するとありました!
security.mixed_content.block_active_content
これが true が default だったので false にしてみたら見れました。
よかったよかった。

でも、いいのかなこの設定...。

2013/08/12

golang certificate ssl handshake

2013/08/14 追記
Go界のジェフ・ベゾスが勝手にウンコードを添削してくれたよ!! みんな、こっち見てね!

ヒャッハー、証明書好きのオレ様が帰ってきたぜ!!!というわけで遅延証明書よりも在留証明書よりも公開鍵証明書を愛する私が Go を使ってサーバから証明書をゲットするその日がやってきました。Go には crypto/tls という素敵パッケージもあるので何の心配もありません。Config としてサーバ認証を真面目にしない InsecureSkipVerify を true としてあげればどんな IP address, port のペアに対してだって証明書を取ってくることが可能なのです。実行するとこんな:
$ go run get_cert.go www.google.com
i=0
[[{[2 5 4 6] US}] [{[2 5 4 10] Google Inc}] [{[2 5 4 3] Google Internet Authority}]]
2013-07-31 11:40:49 +0000 UTC
2013-10-31 23:59:59 +0000 UTC
[[{[2 5 4 6] US}] [{[2 5 4 10] Google Inc}] [{[2 5 4 7] Mountain View}] [{[2 5 4 8] California}] [{[2 5 4 3] www.google.com}]]
i=1
[[{[2 5 4 6] US}] [{[2 5 4 10] Equifax}] [{[2 5 4 11] Equifax Secure Certificate Authority}]]
2012-12-12 15:58:50 +0000 UTC
2013-12-31 15:58:50 +0000 UTC
[[{[2 5 4 6] US}] [{[2 5 4 10] Google Inc}] [{[2 5 4 3] Google Internet Authority}]]
OpenSSL みたいな pretty な感じに出してくれるのはとりあえず見つからなかったけど頑張れば自分で書けるぜ!!
package main

import (
        "crypto/tls"
        "crypto/x509"
        "fmt"
        "log"
        "os"
)

func main() {
        if len(os.Args) < 1 {
                log.Fatal("You must input a hostname")
        }
        peerCertificates, err := GetCert(os.Args[1])
        if err == nil {
                for i, Cert := range peerCertificates {
                        fmt.Printf("i=%d\n", i)
                        fmt.Println(Cert.Issuer.ToRDNSequence())
                        fmt.Println(Cert.NotBefore)
                        fmt.Println(Cert.NotAfter)
                        fmt.Println(Cert.Subject.ToRDNSequence())
                }
        } else {
                log.Fatal(err)
        }
}

func GetCert(host string) ([]*x509.Certificate, error) {
        config := &tls.Config{InsecureSkipVerify: true}
        conn, err := tls.Dial("tcp", host+":443", config)
        var peerCertificates []*x509.Certificate
        if err == nil {
                connectionState := conn.ConnectionState()
                peerCertificates = connectionState.PeerCertificates
        }
        return peerCertificates, err
}
ポートは決め打ちだぜ!!

2013/08/02

python debug "imported modules"

Python で利用されるモジュールを全部みつけてこれないかな〜、と思いました。そのものずばりがありました。

30.4. modulefinder — Find modules used by a script — Python v3.3.2 documentation


例えば
$ python -m modulefinder /usr/lib/python2.7/SimpleHTTPServer.py | head

  Name                      File
  ----                      ----
m BaseHTTPServer            /usr/lib/python2.7/BaseHTTPServer.py
m SocketServer              /usr/lib/python2.7/SocketServer.py
m StringIO                  /usr/lib/python2.7/StringIO.py
m UserDict                  /usr/lib/python2.7/UserDict.py
m __builtin__               
m __future__                /usr/lib/python2.7/__future__.py
m __main__                  /usr/lib/python2.7/SimpleHTTPServer.py
何か一杯出てきました。これは便利!!

こんなことまで標準ライブラリでできる Python は素敵ですね。

2012/04/04

python socket reset

明日こそは散髪に行こうと思っています!!

何がしたかったの? と聞かれてもマイッチングのですが
"python socket reset" で検索してました。
reset できるようになりたかったみたいです。
そんな質問には stackoverflow がさくっと答えてくれますよ

http://stackoverflow.com/questions/6439790/sending-a-reset-in-tcp-ip-socket-connection

SO_LINGER ってのを使えって書いてあるけど何じゃらほい。
ググるよ。

TCPメモ(Hishidama's TCP Memo)

ほー。SO_LINGER ってのを on で 0 に指定して close() しろと。
でも SO_LINGER って何じゃらほい? と思ってもう少し調べたけど、
結局 man に辿りついちゃうのよね。

Man page of SOCKET
SO_LINGER
SO_LINGER オプションを取得・設定する。引き数には linger 構造体を取る。
struct linger {
    int l_onoff;    /* linger active */
    int l_linger;   /* how many seconds to linger for */
};
有効になっていると、 close(2) や shutdown(2) は、そのソケットにキューイングされたメッセージがすべて送信完了するか、 linger (居残り) タイムアウトになるまで返らない。無効になっていると、 これらのコールはただちに戻り、クローズ動作はバックグラウンドで行われる。 ソケットのクローズを exit(2) の一部として行った場合には、残っているソケットの クローズ動作は必ずバックグラウンドに送られる。

  • SO_LINGER の設定無しに close とかすると後処理は kernel に任せられて SOCKET が何か WAIT になる
  • SO_LINGER が設定されてると TIMEOUT するか送信確認できるまで block する
  • 特に SO_LINGER が on で TIMEOUT が 0 だと

というわけでちょっと書いてみた:
import socket

addr = socket.getaddrinfo('www.google.com', 80)[0][4]
print(addr[0])
sock = socket.socket()
sock.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, b'\1\0\0\0\0\0\0\0')
sock.connect(addr)
sock.close()
実行してみた:
$ time ip_address=`python test.py`; echo $ip_address; netstat -tn | grep "$ip_address"
74.125.235.81
何も残らない。TIMEOUT も 1 にしてみた:
import socket

addr = socket.getaddrinfo('www.google.com', 80)[0][4]
print(addr[0])
sock = socket.socket()
sock.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, b'\1\0\0\0\1\0\0\0')
sock.connect(addr)
sock.close()
実行してみた:
$ ip_address=`python test.py`; echo $ip_address; netstat -tn | grep "$ip_address"
173.194.38.80
tcp        0      0 192.168.37.5:42359      173.194.38.80:80        TIME_WAIT  
残った。

TIMEOUT を設定すると RST じゃなくなる、のかな?
と思ったら違うか、TIMEOUT すると RST 投げるんだな、きっと。
ソース嫁ですと? ふへへ。

ちなみに、SO_LINGER で画像検索するとちょっと面白かったです。

2012/03/17

python ubuntu make LDFLAGS

Python Developers Festa 2012.03 に参加してきました。 日本オラクルのオフィスは相変らず素敵でした。 Python 3 の発表が 3 つくらいあったので再び少し興味を持ちました。 使ってみよう、3.3.0a1。 Ubuntu を用意して tar.bz2 を落として
sudo aptitude install gcc
sudo aptitude install make
make だ! っつーことで make してみたところ
Python build finished, but the necessary bits to build these modules were not found:
_bz2               _curses            _curses_panel
_dbm               _gdbm              _lzma
_sqlite3           _ssl               _tkinter
readline           zlib
To find the necessary bits, look in setup.py in detect_modules() for the module's name.


Failed to build these modules:
_crypt
なんてこと言われたんでこれは流石に困るなと思い 沢山 package 入れてみることに:
sudo aptitude install libbz2-dev
sudo aptitude install libncurses5-dev
sudo aptitude install liblzma-dev
sudo aptitude install libssl-dev
sudo aptitude install libreadline-dev
sudo aptitude install zlib1g-dev
sudo aptitude install g++
sudo aptitude install dpkg-dev
sudo aptitude install libsqlite3-dev
sudo aptitude install libgdbm-dev
よし、こんだけ入れればいいだろう! っと思って make してみたら何かやっぱダメ。 な、なんでや!! つわけでググってみたところ LiPyrary - Python for books: How to compile Python on Ubuntu 11.04 これか!
export arch=$(dpkg-architecture -qDEB_HOST_MULTIARCH)
export LDFLAGS="-L/usr/lib/$arch -L/lib/$arch"
export CFLAGS="-I/usr/include/$arch"
export CPPFLAGS="-I/usr/include/$arch"
したら無事に色々な library が読み込まれて module が使えるようになりました。 めでたしめでたし。

2011/08/26

google api blogger

コード貼るしー、と思ってプリチーに見せたいわとか思ってたんで google-code-prettify 使ってました。

でもね、"all indentation for code snippets in my posts became broken" って そうなの、なんか code tag だとインデント壊れちゃってたの。

とりあえず pre に置き換えれば ok っぽかったんですが、 やっとこさ google の api 叩くことにしました。

Blogger API - Google Code まんまですわ。というかもうちょっと先に進んで Developer's Guide: Python - Blogger APIs - Google Code ここ見たんですが、

from gdata import service

blogger_service = service.GDataService('xxxxxxxx@gmail.com', 'xxxxxxxx')
blogger_service.source = 'exampleCo-exampleApp-1.0'
blogger_service.service = 'blogger'
blogger_service.account_type = 'GOOGLE'
blogger_service.server = 'www.blogger.com'
blogger_service.ProgrammaticLogin()

blog_id = '3061113982813699457'

i=1
while True:
  query = service.Query()
  query.feed = '/feeds/' + blog_id + '/posts/default'
  query.published_min = '2009-01-01'
  query.published_max = '2011-12-31'
  query.max_results = 10
  query.start_index=i
  feed = blogger_service.Get(query.ToUri())
  i += 10

  if len(feed.entry) == 0:
    break
  for entry in feed.entry:
    entry.content.text = entry.content.text.replace('<code ', '<pre ').replace('/code>', '/pre>')
    blogger_service.Put(entry, entry.GetEditLink().href)
これでとりあえず code を撲滅? できました 見れてるかな??

2011/05/17

ubuntu beep 鳴らす

Ubuntu 10.10 入れて暫く経つわけですが terminal で beep しないのに気付いていませんでした。 beep させたいな、と思ったんで何で慣らないのか調べましたところ Ubuntu日本語フォーラム / ビープ音を有効にしたい うん、これこれ、と思ったけどどうもこの方は解決してない? とりあえず冒頭にある module を調べてみると
$ lsmod | grep pcspkr
$ 
うん、無いわ。つことで
$ sudo modprobe pcspkr
としたら無事鳴りました。 なんだよー、何で load されてないんだよー、と思ったんですが、
$ grep pcspkr /etc/modprobe.d/*
/etc/modprobe.d/blacklist.conf:blacklist pcspkr
と見事に blacklisted だったので、有効にしときました。

2011/03/08

google-spreadsheet api

備忘でしかないんですがね
Google SpreadSheet の自分のブックの一覧が欲しくなって
Python で取るのがいいかしら? と思って調べました
まぁ、gdata 使えばいいんですけど、すぐなんですけど

# coding=utf8

import getpass
import sys

import gdata.spreadsheet.service


service = gdata.spreadsheet.service.SpreadsheetsService()
sys.stderr.write('e-mail: ')
service.email = raw_input()
service.password = getpass.getpass()
service.ProgrammaticLogin()

feed = service.GetSpreadsheetsFeed()

for i in [(x.updated.text, x.link[1].href, x.title.text)
for x in feed.entry
if x.author[0].email.text == service.email]:
print("\t".join(i))


これでね、
$ python kono_script.py > output.tsv
e-mail: abcdefg@gmail.com
Password:
$
とかすれば output.tsv に出ます

わーい

2011/03/04

map script interfaces wlan

暫く自宅と会社をノートPC持って往復してたんですが
Debian でローテクでやってるんで wifi の設定も貧弱で
/etc/netwerk/interfaces を手で書き直してました
コメントにしたりコメントアウトにしたり
どうなのよそれ、と

で、Debian 系だとその interfaces で mapping っつーの使います
script を走らせて状況判断させて
事前にしてある任意の設定で interface を up できる
っつーのは知ってたけど今までそこまで使い込むことなかったんですが
やるべ、と、一大決心をして、ググりました

何も見ないし何も知らない | テーマ:コンピューター・Web
ん〜、惜しい、その最後のとこに書いてある
「Address(Mac Address)をsedで抜き出したらうまくいくかもしれない。」
それが欲しいんだ!

つわけで自分で作ればいいかと考え直しました
interfaces の mapping から復習しました
$ man interfaces
したら復習できました

例えば
wlan0 という interface に対してスクリプトで動的に設定したい、
という場合
mapping wlan0
script /usr/local/sbin/my_script.sh
map spam ham
map egg bacon
みたいに書きます

で、ifup wlan0 と wlan0 を有効にしようとすると
/usr/local/sbin/my_script.sh に引数 wlan0 が渡され
更に map で始まる行の map 以外の部分が標準入力に渡されます
つまり、
$ echo -e "spam ham\negg bacon" | /usr/local/sbin/my_script.sh wlan0
したみたいになるわけです

でで、このコマンドの出力結果の文字列が
実際に設定されます

ででで、今回は wifi AP の MAC ADDRESS を登録しといて
実際に行う動作の設定へと導いてあげることにしました
/etc/network/interfaces はこんな感じにしたい
mapping wlan0
script /usr/local/sbin/my_script.sh
map XX:XX:XX:XX:XX:XX office
map YY:YY:YY:YY:YY:YY home

iface wifi-office inet dhcp
wpa-driver wext
wpa-scan-ssid 1
wpa-ap-scan 1
wpa-ssid "office api"
wpa-psk "xxxxxxxxxxxxxxxxxxxxxxxx"

iface wifi-home inet dhcp
wpa-driver wext
wpa-scan-ssid 1
wpa-ap-scan 1
wpa-ssid "office home"
wpa-psk "yyyyyyyyyyyyyyyyyyyyyyyy"
で、あとは /usr/local/sbin/my_script.sh が
出力結果として "wifi-office" か "wifi-home" を出力してくれれば
それぞれの設定を施して AP に繋ぎにいってくれるはずです

じゃぁ /usr/local/sbin/my_script.sh どうすんのよ、というと
上のサイトと Debian の examples を見たらこんな感じに
#!/bin/sh
LANG=C
set -e

# 対象 interface で scan して wifi AP の MAC ADDRESS 集め
INTERFACE=$1
ifconfig $INTERFACE up
sleep 1
MACADDRESS_LIST=$(iwlist $INTERFACE scan | sed -n -e 's/^.*Address: \([0-9A-F:]*\).*$/\1/p')
ifconfig $INTERFACE down

which=""
# read は標準入力から1行読んで変数に入れる
while read testmac scheme; do
if [ "$which" ]; then continue; fi
for MACADDRESS in $MACADDRESS_LIST; do
# 設定されてる MAC ADDRESS があれば対応する設定を $which に
if [ "$testmac" = "$MACADDRESS" ]; then which="$scheme"; fi
done
done

#仕上に出力、hit しなかったら "wifi-default" と出す
echo wifi-${which:-default}
どうも sleep が短かいのか
ちょっと調整しないと一発で成功とまではいってないんですが
これで一々設定ファイルいじらなくてもよくなりました

でもさ、どーせさ、みんな Ubuntu 使ってるからさ
こんなことしなくてもサクサク設定できちゃってるわけでしょ?
ぷんぷん

2011/02/19

sysinstall gpt fdisk

検証用の DELL のパソコンが壊れました
電源が入らなくなって電源ランプがオレンジに光ります
http://plusd.itmedia.co.jp/pcuser/articles/0809/30/news074.html
あれ、電源がそもそも弱かったのかしら、この子

で、なぜか TM8000 の載ったマザボと検証であたったケースがあり
放置してたので使ってやるかと DELL の HDD を移植などしてみることに
というか確か DELL の HDD はもともとこの TM8000 のやつに繋いであったので
戻してみただけだったのだ

つうか今更 ATAPI ですよお嬢さん

で、何で放置してたか忘れてたんだけど、
マザボをネジで止めると電源スイッチからのケーブルが届かなかったの
ひどい
とりあえずマザボは固定せずにスイッチが入ることを優先しつつ
後日 LED-30EX とやらを購入しました

しかし遅い、TM8000 が遅いのか何が遅いのか分からないけど遅い
試しに PC-BSD 8.1 と Ubuntu 10.10 を入れてみたんだけど遅い
KDE とか Gnome とかそもそも使わないのに更にこの遅さか
メモリ余ってるから完全に CPU が原因だろうにこの遅さか

というわけで Squeeze でも入れてみようかと思ったんですが
なんとなーく FreeBSD でもいってみるかと思ってまた CD 焼いて
インストールしようと思ったらインストールできないんですよ
sysinstall で Custom で設定して commit しようとすると
"Unable to find device node for /dev/ad0s1b in /dev"
みたいなこと言われちゃって slice 切ってくれないの

で、いろいろググってみたらどうやら HDD が GPT とやらで??
Ubuntu とか PC-BSD とか入れて遊んでたら何か変えられて
sysinstall からいじれなくなってしまっているらしい
Problem running fdisk via sysinstall
このスレッドが分かりやすかった

とりあえず、HDD の最後の部分に何か書かれてるからダメらしく
dd if=/dev/zero of=/dev/ad0 seek=?????????
と、seek をいくつにしたか忘れたけど
sysinstall で見れる block size くらいにしといて
とりあえず何か上書きしてみたらちゃんと sysinstall できました

解決はしたけど理屈は良く分かってないんだけど
眠いからとりあえず解決策だけ書いとくよ!!

2011/02/03

レジストリ 2003 "documents and settings" 変更

Documents and Settings なんて長いし空白入ってるし
いいとこなんて 1 つも無いわ
なんて思って昔設定変えた覚えがあるんですが、
何いじったんだか忘れてしまいました。

Documents and Settings フォルダの移動や名前の変更ができないことを通知するエラー メッセージが表示される
ProfilesDir っつー文字列があったんでこれみたいでした。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
これね、これ、多分
「特定のユーザー用に Windows をインストールした後で、Documents and Settings フォルダとして別のフォルダを指定するには、次の手順を実行します」
とか書いてあるし。

新規で user 作るときにはこの ProfilesDir の下にホームが作られて、
SID とかいうらしい ID が振られて ProfileList の下にレジストリできて
その中にホームの PATH が設定されます。
ProfilesDir で指定の PATH を途中で変えても
その影響範囲はその後に作るユーザーであって
既存ユーザーに関しては書いてあるみたいなことしないとダメみたいです。

で、更に、
All Users とか Default Users とかシステムで使うフォルダが
レジストリの ProfilesDir のあるとこに併記されてますが、
そいつらも移動かコピーしてあげないといけないみたい。

運用始めてから移動するのは嫌だなぁ、これ。

2011/01/30

"libjavaplugin_oji.so"

Java アプレット使いたいと思ったので
プラグインを! と思ったら何か上手く動かない
確か libjavaplugin_oji.so ってのを
適当なところにコピーすればいいと思ったのに!!

困ったなーと思ったら新しいのが出てるんでした
How can I configure java plugin libjavaplugin_oji.so to latest firefox 4 | Firefox Support Forum | Firefox Help
なるほど、近頃の Firefox などでは libnpjp2.so ってのを使うのか

Debian Lenny だったら sun-java6-bin って package に
/usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/i386/libnpjp2.so
がいたんで
~/.mozilla/plugins とか /opt/google/chrome とかに ln -s したら
何か上手く動いた、よかった

これで Java り放題です

2010/12/20

hg push basic-auth web push_ssl

調べるの 2 回目だったので書いとく。入門Mercurialにも書いてあったら御免なさい。


Mercurial を web ui 経由で push するには
[web]
allow_push = blooper
push_ssl = false
とか書けばいいって
PublishingRepositories - Mercurial
に書いてありました。

つーかその他、複数の repository をまとめて提供する方法とか
色々書いてあるからまた後でよーく読もうと思います。

hgweb.wsgi とか hgwebdir.wsgi とかあるけど
hgwebdir.wsgi がどこで提供されてるのか良く分からん。
と思ったらmodwsgi - Mercurial書いてあった。
WSGI さえ使えればあとは
from mercurial import demandimport; demandimport.enable()
from mercurial.hgweb.hgwebdir_mod import hgwebdir

application = hgwebdir('/var/www/vhosts/hg.example.net/cgi-bin/hgweb.config')
っての用意して
hgweb.config に提供したいもの書けばいいらしい。
楽チンだ。