Showing posts with label programming. Show all posts
Showing posts with label programming. Show all posts

Tuesday, September 18, 2018

raspberry piにmediawikiをSQLiteでインストール&日本語検索対応

raspberry piに導入するなら、軽量のpukiwikiの方がはるかに扱いやすいとは思うのだけど、それでもやっぱりなんとなくでmediawikiを入れてみました。
データベースはお手軽にSQLiteを使って、公式の手順通りにあっさり導入は終わり。

・・・なのですが、そのままではまともに日本語の検索ができません。
elasticsearchとkuromojiで対応可能ではあるみたいだけど、そこまでするならpukiwikiでいいかなぁ。
と、軽く検索をかけてMacWikiさんのサイトでBruteSearchなる方法を発見。
ちょっと情報が古いし、そのままではMySQL用なのでSQLiteでは動かないけれど、参考にしてやっつけのBruteSqliteSearchをでっち上げてみた。
これでSQliteのMedeaWikiで日本語の全文検索ができるようになります。 単純にMATCHをLIKE検索にしただけで、検索対象がインデックスなので、そこは改善の余地あり

raspberry pi2で動かすmediawikiは実に重い。pi3で動かせばもう少しはマシなのかな。

あとカテゴリの追加がいまいち上手く動かない。 ここを参考にしてみたけど、確かに
$ php maintenance/rebuildall.php
でカテゴリもリンク元チェックも動くようになるんだけど、これをcronで定期的に実行する手はあるんだけど、、、

あ、ちなみに実行するにはDBへのアクセス権が必要です。

Thursday, February 16, 2017

Windows用インターネット官報一括ダウンロードソフト

なんとなく欲しくなったので、Windows用にデスクトップ環境で動作するインターネット官報をまとめてダウンロードできるソフト「簡単官報ダウンロード管理官。」を作成しました。
インターネット官報pdfの一括ダウンロード、連結、検索をするソフトです。
ライセンスはとりあえずGPLv3。
http://www.vector.co.jp/soft/winnt/business/se515249.html https://github.com/fuzuki/kan4

Tuesday, July 14, 2015

kinect for xbox360 driver

kinect for xbox360のwindows用ドライバは、Kinect for Windows Developer Toolkit v1.8の入っている。

Kinect for Windows SDK 2.0には入っていないので注意。

Monday, June 22, 2015

インターネット版「官報」pdfダウンロードライブラリ

インターネット版「官報」のpdfをダウンロードするためにruby用のライブラリを作ってみました。
正規表現で無理矢理抜いてます。

https://github.com/fuzuki/kanpou_util

ついでにサンプルとして官報pdfダウンロードツールもセットで。

Sunday, January 27, 2013

初めてのPHP5 増補改訂版


 こないだTechLION vol.11で「初めてのPHP5 増補改訂版」を貰ったので、読んでみた。
 もうちょっと言語仕様を、と思うけどそれは「プログラミングPHP」の役割なのかな。
 DB操作もあるし、Webアプリ作成の基本的な事項はおさえてるみたい。

 とりあえず改訂版第1刷で気付いたものをいくつか。
p.10 「$q = $db>query(...」たぶん$db->
p.21 「ヒアドキュメントの終わりを示す告げる区切り...」告げるが不要?
p.28 「print 0;print -213;」改行忘れ?
p.44 '6pack'なのか'6 pack'なのか?
p.55 「配列名の1文字目は文字または数字で、...」数字じゃなくてアンダースコア?
p.78 「名前の残りの文字は文字、数字...」意味は分かるけどなんか変?アルファベット?
p.80 「引数のデフォルト値は12、cc3399、またはShredded swiss Chardのような文字でなければいけません。」数値または文字列? 文字列に引用符もついてないし...
p.282 「そして-10308から10308までの浮動小数点を扱うことができます。」え?
p.308 「//すべてのアルファベット文字と一致する」「[^a-zA-Z]」コメントがおかしい。ついでに説明文も「英語の文字」じゃなくて「アルファベット文字」に統一した方が...まあそれは好みか。
p.308 「60進法」16進法?
p.331 「...発生するほとんどWebアプリケーション脆弱性の...」"の"が抜けてる。「...上で非常に重であること、...」重要?
多分他にもありそうだけど、とりあえず気付いた範囲で。
今のところオライリーにも訳者さんのサイトにも正誤表は無いみたい。
意味はわかるからそんなに問題は無さそうだけどね。

Sunday, December 9, 2012

ffserverのjpeg切り出し

 ffserverでjpegを配信するように設定すると、なぜか延々とつながったjpeg画像が送られてしまう。
 そういうのが欲しければmjpegもあるので、jpegは1枚目だけあれば後ろは要らないんだけど…と言うワケで、こういうときはスクリプトで分割して先頭画像だけ切り出し。
 軽くjpegのフォーマットを調べてみると、ファイルの終端はFFD9になっているらしい。
 とりあえずなにも考えずに先頭からFFD9まで読み込むcgiスクリプトを作成。データ途中にFFD9が出てくる可能性は気にしないでおく。


#!/usr/bin/ruby
require 'net/http'
# continuous jpeg cutting script.
# made for ffserver.
print "Content-type: image/jpeg\n\n"
flag = false
Net::HTTP.version_1_2
Net::HTTP.start('localhost', 8090) {|http|
  http.request_get('******.jpg'){|response|
    response.read_body{|str|
str.each_byte do |ch|
putc ch
if flag && (ch == 0xd9)
exit()
end
if ch == 0xff
flag = true
else
flag = false
end
end
    }
  }
}



フラグ使ってるのはちょっとどうかと思うけど、まあこんなものかな。
一応動く。

Thursday, October 25, 2012

rubyのInvalidByteSequenceError

 Ruby1.9.3のcgiでJSONに日本語文字列を使ってみたら、正常に動作しない。
 ログを見るとInvalidByteSequenceErrorなんてのが出ている様子。

 えーと、マジックコメントとやらでエンコーディングを指定してやればいいの?

 ...

 だめ。ターミナルでは動くようになったけど、cgiとして動作させるとやっぱりJSONファイル読み込むところでコケてしまう。

 どうやら外部ファイルのエンコーディング指定には別の方法が必要な様子。
 スクリプト冒頭付近に
Encoding.default_external = "UTF-8"
 を書き込んでおくといいみたい。

 …1.9.3だと一応これで動くんだけど、もしかしてこれって1.9.1では動かなかったりするのかな?
 日本語対応地味に面倒くさいです。

Sunday, March 25, 2012

中華Pad買ってみた

Poyer MOMO9 加強版とかいうAndroid4.0.3機。
…正直使い勝手はiPod Touchの方がずっと良いような…

ま、実用目的で買ったわけでもないから気にしないけど。

PCに繋いでもドライバが入らないので、この辺を参考にWindows用ドライバ設定して再起動。
http://d.hatena.ne.jp/ousttrue/20111224/1324723329
http://www.geocities.jp/kuw8823/android/chinapad3.htm


eclipseとAndroid SDKの設定を済ませて、お約束のHello Worlldアプリ(プロジェクト作ると最初からできてるヤツ)を転送して…
よしOK。

これでいつでも実機でAndroid開発ができるぞ、と。

Sunday, January 8, 2012

Arduinoでラジコン制御



Ubuntu 11.4で動作させています。(11.10だとなぜかffserverがうまく動作しない…)

自由に使ってください。

ffserverはこんな感じのコマンドで起動してます。
$ sudo ffserver -f /etc/ffserver.conf
$ ffmpeg -f video4linux2 -s 640x480 -r 2 -b 64k -i /dev/video0 http://localhost:8090/feed1.ffm

Monday, December 5, 2011

OpenCVのSURFでARToolkit

ずいぶん昔に作った【パッケージから】巡音さんがやってきた【召喚】のソースが見たいと言われたのだけど、そんなものは残ってなかったのでとりあえずやっつけでARToolkitのマーカの代わりにSURFの画像マッチングを使うプログラムを作成。
ソースはこちら
OpenCV2.1, Ubuntu11.10, ARToolkit 2.72.1で動作確認しています。
ARToolkitのsimpleTest.cをベースに、OpenCVのfind_obj.cppの関数を利用しています。

すごく汚いコードな上、エラーチェックもせず、メモリ解放もろくにやってないので、ソースを見る人は覚悟してください。



Saturday, March 5, 2011

Schemeでクイックソート

バブルソートを作ったからには、もちろんクイックソート(quick sort)も作らないとね。
(define (cat l1 l2)
  (cond ((null? l1) l2)
        (else (cons (car l1)(cat (cdr l1) l2)))))

(define (q-sort li)
  (define (split in lo hi mp)
    (cond ((null? in)(cat (q-sort lo)(cons mp (q-sort hi))))
          ((> mp (car in))(split (cdr in)(cons (car in) lo) hi mp))
          (else (split (cdr in) lo (cons (car in) hi) mp))))
  (cond ((null? li) li)
        (else (split (cdr li) '() '() (car li)))))

昨日のバブルソートよりはだいぶ見やすいプログラムになってる。
まあ昨日は酒が入ってたしね。

Friday, March 4, 2011

Schemeでバブルソート

「数学ガール」にバブルソートが出てきたので、何となく書いてみた。
とりあえずやっつけ。
(define (list-count l)
  (cond ((null? l) 0)
        (else (+ 1 (list-count (cdr l))))))

(define (one-path l)
  (cond
    ((or (null? l) (null? (cdr l))) l)
    ((> (car l)(cadr l))(cons (cadr l)
                              (one-path (cons (car l)(cddr l)))))
    (else (cons (car l)(one-path (cdr l))))))

(define (b-sort l num)
     (cond ((zero? num) l)
           (else (b-sort (one-path l) (- num 1)))))

(define (bubble-sort l)
  (cond
   ((null? l) l)
   (else (b-sort l (- (list-count l) 1)))))

Saturday, February 5, 2011

RVM -Ruby Version Manager

railsを弄ろうとすると、rubyのバージョンがどうとかあるようなので、複数バージョンのrubyを簡単に管理できるツールがあると便利だなぁ…と調べたらすぐに見つかった。

RVM(http://rvm.beginrescueend.com/)

インストールにはcurlとgit-coreが必要なので、apt-getしておく。
$sudo apt-get install curl git-core
後はドキュメント通りに
$ bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )

$ bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-latest )



それから.bashrcの最後に一行追加。
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # This loads RVM into a shell session.
echoしたのを.bashrcに流し込んでもいいけど、エディタでいいや。

rvmでrubyをインストールするのは
$ rvm list known
で、インストール可能なrubyを一応チェックして
$ rvm install 1.9.2
みたいなコマンドで。

あとは
$ rvm use 1.9.2
とすれば、そのバージョンのrubyが使えるようになる。
$ rvm use 1.9.2 --default
と--defaultオプションをつければ、それがデフォルトになる。
rvm管理から抜けるのは。
$ rvm reset
でシステムのrubyに戻れる。

あとはそのままrailsなんかをインストール。
$gem install rails
インストール先がユーザディレクトリの下にあるから、sudoは要らない。

使用するrailsなんかを切り替えられるgemsetという機能もあるみたいだけど、とりあえずはいいや。

Saturday, January 1, 2011

rails3.0 on ubuntu10.10

Ruby on Railsの勉強でも始めようかと思ったらubuntuに入ってるより新しいバージョンのRailsがあるらしい。
というわけで早速公式サイトから新しいgemを落として、
$sudo ruby setup.rb
$sudo gem install rails
何かlibが見つからないとか出てたような気がするけど、とりあえず気にしない。
$rails -v
とやるとrails3.0.3になってるのが確認できた。

さっそくガイドの通りに練習してみようと・・・エラー発生。
データベースを作ろうとしたら、
Could not find gem 'sqlite3-ruby (>= 0, runtime)' in any of the gem sources listed in your Gemfile.
Try running `bundle install`.
なにか`bundle install`しろと言われているので
$sudo bundle install
とやっても今度は
Installing sqlite3-ruby (1.3.2) with native extensions /usr/local/lib/site_ruby/1.8/rubygems/installer.rb:483:in `build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)

/usr/bin/ruby1.8 extconf.rb
extconf.rb:3:in `require': no such file to load -- mkmf (LoadError)
from extconf.rb:3
・・・少し調べてみると、どうやらrubyの開発パッケージが必要みたい。
$sudo apt-get install ruby-dev libsqlite3-dev
で、もう一回'bundle install'を試すと、今度は成功。

さて、Railsの勉強を始めようかな。

Thursday, November 18, 2010

多項式曲線回帰

パターン認識と機械学習の一番最初。
多項式曲線フィッティングをとりあえずc++とopencvで実装してみた。

参考にしたのは人工知能に関する断想録さん。
・・・言語が違うだけでほぼ丸写しというか・・・

下は0次から9次までのフィッティングの結果。
7次あたりから過学習が始まっている感じ。

0次
1次
2次
3次
4次
5次
6次
7次
8次
9次

とりあえずバックアップ
酷いプログラムだから作り直さないと使い物にならない。

Saturday, September 11, 2010

SICPよんでみる 2.2

計算機プログラミングの構造と解釈の読書日記をまんがで記録していく企画。
階層型データ構造とかクロージャとか…





























Sunday, August 22, 2010

SICP例題2.36

せっかくだから解いておく。

(define (accumulate op initial sequence)
  (if (null? sequence)
      initial
      (op (car sequence)
          (accumulate op initial (cdr sequence)))))

(define nil '())

(define (accumulate-n op init seqs)
  (if (null? (car seqs))
      nil
      (cons (accumulate op init (map car seqs))
            (accumulate-n op init (map cdr seqs)))))