DokuwikiでjQueryが標準で使えるようになった

以前からwikiサイトは
ja:dokuwiki [DokuWiki]
をつかっていて

  • DB不要
  • URLをシンプルにできる(当時は短縮URLサービスもなかった)

なところがよくてちょっとしたマニュアルにつかっていたが
AnguaバージョンよりjQueryが標準で使えるようになったみたいで
devel:jqueryfaq [DokuWiki]
さっそく使ってみた

一番の注意点は$()ではなくjQuery()とすること
詳細はドキュメントを読むとして
JavaScript
ja:devel:javascript [DokuWiki]
にあるように

lib/tpl/default/script.js

に書いた
minifyされるのでセミコロンを忘れずに

ロードバランサ配下などでShibbolethを動かすときApache-2.0

ロードバランサというよりSSLアクセラレータの下で
Shibbolethを動かすとき

https://www.gakunin.jp/ml-archives/upki-fed/msg00390.html
にあるように

ServerName https://www.example.net:443
UseCanonicalName On

にしますが
Apache-2.0だとServerNameにこの書き方がエラーになります

この場合

ServerName www.example.net:443
ShibURLScheme https
UseCanonicalName On

にしてあげるとよいです

Amon2でJSONPを使うとき

マニュアルどおりなんですが
http://amon.64p.org/output.html#json
具体的には

app.psgi

enable 'Plack::Middleware::JSONP';

Web.pm

__PACKAGE__->load_plugins(
    ...,
    'Web::JSON',
);

Web/Dispatcher.pm

any '/' => sub {
    my ($c) = @_;
    my $data = Hogehoge->get_data($c);
    if (defined $c->req->param('type') && $c->req->param('type') eq 'json'){
        return $c->render_json($data);
    } else {
        return $c->render('index.tt' => {data => $data});
    }
};

js(jquery)

$.ajax({
    type: 'GET',
    url: 'http://www.example.net/?type=json&callback=?',
    dataType: 'jsonp',
    success: ...
});

あと
render_jsonに渡すのはUTF8フラグをつけてから

perlのJSONの注意点
http://www.donzoko.net/cgi-bin/tdiary/20100406.html#p01
http://search.cpan.org/dist/JSON/lib/JSON.pm#HOW_DO_I_DECODE_A_DATA_FROM_OUTER_AND_ENCODE_TO_OUTER

Net::Google::Calendarでハマったこと

perlでNet::Google::Calendarを使うとき

401 Authorization required

と言われるのは
Cypt::SSLeayがないから
http://perl.g.hatena.ne.jp/ishiduca/20100504/1272948725

んで
Crypt::SSLeayのテスト01-connect.tがこけるのは

#   Failed test 'Net::SSL->new'
#   at t/01-connect.t line 

LANGがCじゃないから
http://smokycat.info/perl/240

それでもまだ401が返るので
http://www.cd.info.hiroshima-cu.ac.jp/~ichihara/wordpress/2009/07/29/netgooglecalendar/
にあるように

print $@;

すると

LWP will support https URLs if the LWP::Protocol::https module is installed.

っていわれるのでそれもインストール

あとcronで動かすときはPATHやhttp_proxyをわすれるな

PATH=/home/.../perl5/perlbrew/perls/perl-5.16.0/bin:/home/.../script:/usr/local/bin:/usr/bin:/bin
http_proxy=http://proxy.example.net:8080
LANG=C
0 9 * * * get_gcal.pl

疲れるorz

Fedora17でsshdで新規ポートを開ける際のSELinuxの設定

Fedora17にアップデートして
sshdで新規ポートを追加であげたとき

---sshd.config---
Port 22
Port 10022
-----------------

単純に職場のDMZから職場のプライベートなネットワークへは
ハイポートしか許可されてないからなのだけど
こんなことすると本末転倒なのはとりあえず横において

% sudo systemctl restart sshd.service

とするとSELinux

type=AVC msg=audit(1339132675.450:303): avc:  denied  { name_bind }
for  pid=20291 comm="sshd" src=10022
scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023
tcontext=system_u:object_r:unreserved_port_t:s0 tclass=tcp_socket

と怒る
ところがSELinux Alert Browserとかが自動で立ち上がり

you need to modify the port type.
# semanage port -a -t PORT_TYPE -p tcp 10022
ここで、PORT_TYPE は 以下の1つとなります: xserver_port_t,ssh_port_t

なーんていうから

% sudo semanage port -a -t ssh_port_t -p tcp 10022

とすると無事新しいポートでも起動できた
便利だねー

sshクライアント名の補完 for tcsh

SSH力をつけよう
に感化されて.ssh/configの設定をみなおした

Host host1
  HostName 192.168.1.1

Host fumidai
  HostName 192.168.1.2
  User user1
  LocalForward 2200 home.example.net:10022

Host home
  HostName 127.0.0.1
  Port 2200
  ForwardX11 yes

Host host2
  HostName 192.168.10.1
  ForwardX11 yes

Host host3
  HostName 192.168.20.1
  ProxyCommand  ssh host2  nc -w 10 %h %p
# host2のsshのバージョンは3.9なのでncを使った*
 :

*参考 ncある限りぼくはどこまででもいけるッ! - (ひ)メモ
なんて具合に山のようにホスト名を記述したが
シェルで補完できないのが困る

現在tcshを使っているが
Fedoraだと/usr/share/doc/tcsh-***/complete.tcsh
にいろんな補完情報が載っている
# これだと.ssh/known_hostsから補完できる

その情報を元に.cshrcに

if ( -r "$HOME/.ssh/config" ) then
    set noglob
    set ssh_hosts=`cat "$HOME/.ssh/config" | grep '^Host ' | cut -f 2 -d \ ` >& /dev/null
    complete ssh p/1/\$ssh_hosts/ c/-/"(l n)"/   n/-l/u/ N/-l/c/ n/-/c/ p/2/c/ p/*/f/
    unset noglob
endif

を書いて補完できるようにした