2009-01-01から1年間の記事一覧

2点間の距離を計算する

ヒュベニの距離計算式を Python のコードに落としてみた. import math a2 = 6378137.0 ** 2 b2 = 6356752.314140 ** 2 e2 = (a2 - b2) / a2 def distance_by_hubeny(p1, p2): def d2r(deg): return deg * (2 * math.pi) / 360 (lon1, lat1, lon2, lat2) = ma…

KML Creator

恐らく Firefox 3.5 専用. 右クリックでポチポチマーカーを置いていって、最後にボタンを押してクリップボードに突っ込む. マーカーは左クリックでドラッグして位置修正が出来ます. 起動直後とボタン押した際にダイアログが出ますがOKしてやってください. 20…

Canvas で画像モノクロフィルタ

コードを書いた時間より、Web サーバにアップすると動くのにローカルで動かない理由が分からなくて首をひねっていた時間の方が長かったという. Firefox のセキュリティーポリシー謎すぎ・・・. <html> <head> <title>Canvas</title> <script type="text/javascript"> window.onload = init; var img = new Image(); func</head></html>…

テキストを RTF に変換する

色付けや装飾をしないと余り意味が無いわけですが(^^; 入力は UTF-8 なテキストを stdin から、出力 stdout となっています. #!/usr/bin/env python # -*- coding: utf-8 -*- from sys import stdin, stdout write = stdout.write font_name = u'MS Pゴシ…

C# で InputBox (2)

C#

id:NyaRuRu にオブジェクト初期化子を教えてもらったので書き換え. form は SuspendLayout が邪魔して使えないのが残念! public static string InputBox(string Prompt, string Title, string DefaultResponse) { var form = new Form(); form.SuspendLayout…

RitchTextBox で論理行

C#

GetLineFromCharIndex は WordWrap してると使い物になんねえ! private void richTextBox1_DoubleClick(object sender, EventArgs e) { var l = 0; var t = richTextBox1.Text; for (var i = 0; i < richTextBox1.SelectionStart; i++) if (t[i] == '\n') l+…

C# で InputBox

C#

負けた気分になりながら Microsoft.VisualBasic.Interaction.InputBox を使ってみたら、キャンセルボタンを押した場合と空文字列を入力した場合の区別がつかなくて絶望した! しかし、こういうコードを書くと with が欲しくなるね. public static string Inpu…

.NET 2.0 で Parallel.For

C#

.NET 4.0 に Parallel.For が入るのはいいけど、普及するのにどんだけかかるんだよと思ったら手が動いていた(ぉ) using System; using System.Threading; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Parallel.For(…

C# で MD5 string

C#

byte 配列止まりで、文字列に落とすところまでやってくれないのってなんでなんだろうね? そっちの利用の方が多いとおもうのに. Java もそうなんだけど. public static string MD5HexString(string s) { return BitConverter.ToString(new MD5CryptoServicePr…

C# でスライス

C#

C# で配列のスライスがあまりにも苦痛だったので作った. string も気がついたら作っていた. skip はめったに使わないので放置. namespace MyExtensions { public static class Extension { public static T[] Slice<T>(this T[] source, int start, int end) { </t>…

名前が引けないと mod_proxy_connect で DNS エラーになる障害の対策パッチ

インターネットの名前が引けない中間フォーワードプロキシーで mod_proxy_connect を動作させるパッチ. 2.2.4 から 2.2.6 の間のリグレッションが原因で動作しないのだが、報告から22ヶ月経った現在も直す気配は無し. --- mod_proxy_connect.c.bak Mon Sep 3…

アッカーマン関数

一応残しておく. $ python Python 2.6.2 (r262:71600, Jun 5 2009, 23:21:35) [GCC 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)] on cygwin Type "help", "copyright", "credits" or "license" for more information. >>> cache = {} >>> >>> def m…

Poderosa の自動操作マクロ

Poderosa は更新が無くなってしまったので使わないと思うけど、発掘したので. import Poderosa; import Poderosa.ConnectionParam; import Poderosa.Terminal; import Poderosa.Macro; import Poderosa.View; import System.Drawing; import System.Threadin…

RDP via SOCKS

SOCKS 経由で RDP 接続するためのローカル TCP relay. 色々と思うところはあるけど、とりあえず動く. 作り込みとかはまた考える. from socket import socket, inet_aton, AF_INET, SOCK_STREAM from struct import pack from threading import Thread relay_…

Ant での Pre/Post 処理のカスタマイズ

NetBeans のビルドスクリプトの猿真似ですが :-D. $ ant compile Buildfile: build.xml -pre-compile: -do-compile: [echo] compile -post-compile: [echo] overrided post-compile compile: BUILD SUCCESSFUL Total time: 0 seconds $ cat build.xml <project name="test"> </project>

import されたファイルのフルパス表現

build.xml 自体は ${ant.file} で取得できるのですが、import された方はなんでしょうという話. ツール一式は別ディレクトリだったりするので情報が取れないとパスを構成できない罠. 答えは /project/@name が付いた ant.file. プロパティ. $ ant Buildfile:…

ParallelFor

出来ましたよと. ブロック内の計算量が少ない場合、ループの中で関数コールするオーバーヘッドが大きくなるので、2引数の無名関数にも対応. unit ParallelUtils; interface uses Windows, SysUtils, Forms; procedure ParallelFor(Start, Stop: Integer; Blo…

OpenMP テスト

MinGW GCC 4.4.0 リリース記念、OpenMP 動作テスト. テスト後に libgomp-1.dll が GPL であることに気づき絶望した. pthreadGC2.dll は LGPL なのに・・・. #include <stdio.h> #include <omp.h> int main() { int i; #pragma omp parallel for for(i = 0; i < 20; i++) { pr</omp.h></stdio.h>…

RGB to L*a*b*

Delphi に移植しないと・・・. def xyz2rgb(xyz): def from_linear(v): def clamp(v): if v < 0.0: return 0.0 elif v > 1.0: return 1.0 else: return v if v <= 0.0031308: return int(clamp(v * 12.92) * 255.0 + 0.5) else: return int(clamp(1.055 * v …

PDF を暗号化する

Jython で PDF を暗号化するスクリプト. Jython 2.5.0 + iText 2.1.5 + Bouncy Castle 1.43 で動作確認. Jython 2.5.0 リリース記念(嘘). Office 2007 SP2 リリース記念(本当). from sys import argv from java.io import FileOutputStream from com.lowagie…

mod_rewrite で Content-Encoding: gzip

CentOS 5.3 (httpd-2.2.3-22.el5.centos.1) 及び さくらのレンタルサーバ(Apache/1.3.41) で動作確認済. 直接 .gz に来られた時に、Accept-Encoding に関わらず Content-Encoding: gzip になるのがイケてないけど気にしない :-D. <IfModule mod_rewrite.c> RewriteEngine On RewriteB</ifmodule>…

subjectAltName

複数の FQDN に対して有効な証明書を作ってみるテスト. 具体的には x509v3 拡張の subjectAltName を使う. やり方としては CSR に subjectAltName を入れて、署名時にそれをコピー. 署名時に subjectAltName を入れる の2パターンがある. 今回は前者で作成. …

gzip_decode

なんとなく書いてしまったので. def gzip_decode(data): from zlib import decompress, MAX_WBITS def skip_string(data, i): while data[i] != '\0': i += 1 return i + 1 flag = ord(data[3]) i = 10 if flag & 0x04: i += 2 + ord(data[i]) + 256 * ord(d…

GetNumberOfProcessors

そろそろ並列プログラミングの世界へってことで準備体操. function GetNumberOfProcessors(): Integer; var SystemInfo: TSystemInfo; begin GetSystemInfo(SystemInfo); Result := SystemInfo.dwNumberOfProcessors; end;

prettifyjson.py

json.dump が ASCII 範囲外を勝手にエスケープするのはどうかと思います. 入力 stdin, 出力 stdout、文字エンコーディングは入出力ともに UTF-8 を想定. #!/usr/bin/env python from json import load, dumps from sys import stdin, stdout stdout.write(du…

Apache のアクセスログを TSV に変換する

setbuf 重要. stdout に fflush するのは初めてだw #include <stdio.h> int main() { int c; int q = 0; int b = 0; char buf[BUFSIZ]; setbuf(stdout, buf); while ((c = getchar()) != EOF) { switch (c) { case ' ': case '[': case ']': case '"': if ((c == ' ')</stdio.h>…

パスワードをハッシュ化して DB に格納する

Django 始めて2日目です. 以下のソースで掲題の件が動いていますが、書き方が正しいか分からないので晒しておきます. コメントを求む. from django import forms from django.contrib import admin from models import User from hashlib import sha1 class …

openssl s_client を HTTP PROXY 対応にするパッチ for OpenSSL 0.9.8j

オリジナルはここ>http://marc.info/?l=openssl-dev&m=103106024113390&w=2 最近の OpenSSL に適用できなかったので手直し. 0.9.8k でも動作確認済. --- s_client.c.orig 2008-12-21 02:04:08.000000000 +0900 +++ s_client.c 2009-02-16 19:33:16.03125000…

RHEL5 の /etc/init.d/httpd が pidfile を設定しても機能しないのを修正する

追記: httpd-2.2.3-31.el5 (2009-09-02) で直った 機能しないのなら設定できるが如く変数にするなよと・・・. # diff -u /etc/init.d/httpd.orig /etc/init.d/httpd --- /etc/init.d/httpd.orig 2008-01-16 10:36:21.000000000 +0900 +++ /etc/init.d/httpd …

Python で cat | grep | wc -l を真似てみるテスト

cat クラスをコンベンションに従って書き換えていかないと機能強化できないのがいけてない. from __future__ import with_statement from re import compile class cat(object): def __init__(self, filename): def _cat(filename): with open(filename) as …