2011年4月21日木曜日

Application.Run と Application.ThreadException

まちがい

こんなフォームを作ってエラーを投げます。

Public Class Form1

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    Throw New IO.FileNotFoundException("ファイルないねん")
  End Sub

End Class
エントリポイントはこれ。
Public Class Program
  <STAThread()> _
  Public Shared Function Main(ByVal CmdArgs() As String) As Integer

    Application.EnableVisualStyles()
    Application.SetCompatibleTextRenderingDefault(False)

    Try

      Application.Run(New Form1())

    Catch ex As Exception
      MessageBox.Show("エラーだよ。" & ex.Message & "なんだって。おわるね。")

    End Try

  End Function
End Class

これ,きゃっちされないんですよ…。

しゅうせい・そのいち

ここを参考に おまじない。

Public Class Program
  <STAThread()> _
  Public Shared Function Main(ByVal CmdArgs() As String) As Integer

    Application.EnableVisualStyles()
    Application.SetCompatibleTextRenderingDefault(False)

    AddHandler Application.ThreadException, AddressOf Application_ThreadException
    AddHandler Threading.Thread.GetDomain().UnhandledException, AddressOf Application_UnhandledException

    Application.Run(New Form1())

  End Function

  Public Shared Sub Application_ThreadException(ByVal sender As Object, ByVal e As Threading.ThreadExceptionEventArgs)
    ShowErrorMessage(e.Exception, "Application.ThreadException をきゃっち!")
  End Sub

  Public Shared Sub Application_UnhandledException(ByVal sender As Object, ByVal e As UnhandledExceptionEventArgs)
    Dim ex As Exception = CType(e.ExceptionObject, Exception)
    If Not ex Is Nothing Then
      ShowErrorMessage(ex, "Application.UnhandledException をきゃっち!")
    End If
  End Sub

  Public Shared Sub ShowErrorMessage(ByVal ex As Exception, ByVal extraMessage As String)
    MessageBox.Show("エラーだよ。おわるね。" & vbCr & extraMessage & vbCr & ex.Message)
  End Sub
End Class
ん,うまくいくみたいだね。

ここからがほんだい

これは……?

Public Class Program
  <STAThread()> _
  Public Shared Function Main(ByVal CmdArgs() As String) As Integer

    Application.EnableVisualStyles()
    Application.SetCompatibleTextRenderingDefault(False)

    AddHandler Application.ThreadException, AddressOf Application_ThreadException
    AddHandler Threading.Thread.GetDomain().UnhandledException, AddressOf Application_UnhandledException

    Application.Run(New Form1())

    Application.Run(New Form2())

  End Function
    :
    :
End Class
Form2 のほうがきゃっちできないんだよ……。

かいけつ

よくわかんないけどこうするといいみたい。

Public Class Program
  <STAThread()> _
  Public Shared Function Main(ByVal CmdArgs() As String) As Integer

    Application.EnableVisualStyles()
    Application.SetCompatibleTextRenderingDefault(False)

    AddHandler Application.ThreadException, AddressOf Application_ThreadException
    AddHandler Threading.Thread.GetDomain().UnhandledException, AddressOf Application_UnhandledException

    Application.Run(New Form1())

    AddHandler Application.ThreadException, AddressOf Application_ThreadException
    AddHandler Threading.Thread.GetDomain().UnhandledException, AddressOf Application_UnhandledException

    Application.Run(New Form2())

  End Function
    :
    :
End Class
…そもそも,Application.Run() がふたつあるのがまちがいらしいんだけど。

VMWare:LSI Logic な SCSI ハードディスク イメージ に WindowsXP SP2 をインストール

こんかいのやらかし

SCSI と IDE では SCSI のほうが速いらしいんですよ。で,Bus Logic と LSI Logic は公式にはパフォーマンスに差はないってことらしいんだけれども,LSI Logic のほうが速い? ってな話が。

ためしてみた

いや,ベンチマークするわけではなくて,ちょうど仮想環境を用意する必要があったんだよ。

ハードディスクを LSI Logic な SCSI で作って,Windows XP をインストール…。

ハードディスクがみつからないそうです…。

ぐぐる

なるほど,ドライバがないのかっ。というわけでダウンロード。なかなか F6 のタイミングが難しいというか,これでいいのか不安になるというか…。

やっぱりハードディスクがみつからないそうです…。

ぐぐる,そのに

なるほど,LSI Logic のドライバはちがうのかっ!というわけでダウンロード。

ちゃんと認識してくれましたよ。

2011年4月20日水曜日

Redmine:ぢつはメールの設定ができていなかった件について

げんしょう

管理 → 設定 → メール通知 の下のほうにある テストメールを送信 をクリックすると,

メール送信中にエラーが発生しました (getaddrinfo: 名前またはサービスが不明です)
などとおっしゃっている。

ぐぐっても…

よくわかんないんだよ。

せってい

conf/email.yml は,ここにあるように conf/email.yml.example をコピーして,15~19行目をコメントアウトしてつくったもの。

げんいん

ぢつは,conf/email.yml.example の 69行目以降にはコメントアウトされていない設定がががが。こんなもん削除っ!!!

そのご

$ sudo /etc/init.d/apache2 restart したらエラーメッセージが

501 Syntactically invalid HELO argument(s)
にかわったけれど,これは conf/email.ymldomain: redmine.example.net みたいなのを入れればだいじょうぶ。

2011年4月8日金曜日

Redmine:まだまだごきげんななめ

ことのおこり

これ。

ろぐ

こんなことを言っておられる。

Processing GanttsController#show to png (for 192.168.0.1 at 2011-04-08 09:43:34) [GET]
Parameters: {"format"=>"png", "month"=>"4", "project_id"=>"projectx", "action"=>"show", "year"=>"2011", "controller"=>"gantts", "months"=>"6", "zoom"=>"2"}

Magick::ImageMagickError (unable to read font `/usr/lib/ImageMagick-6.6.0/config//usr/share/fonts/type1/gsfonts/n019003l.pfb' @ error/annotate.c/RenderFreetype/1044: `(null)'):
lib/redmine/helpers/gantt.rb:507:in `draw'

 :

/usr/lib/phusion_passenger/passenger-spawn-server:61

Rendering /var/www/redmine-1.1.2/public/500.html (500 Internal Server Error)
…フォントが入ってない?

いんすとーる

$ aptitude search gsfont すると,そのまんま gsfonts ってパッケージがあるから,インストールしてみる。

$ sudo aptitude install gsfonts
おおっ,ひょうじできたっ

サーバで X環境全く入れてないからはまるのかしらねぇ…。

2011年4月7日木曜日

Redmine:Subversion に日本語名ファイルを使うと diff 出来ない

はっせいじょうけん

は,%たいとる% のとおりのようですね。日本語でないファイル名ならば diff できるみたいだし。

ろぐには

Shelling out: svn diff -r 161:162 'http://subversion.example.local/svn/repos//'@
162 --username xxxx --password xxxx --no-auth-cache --non-interactive
Rendering template within layouts/base
Rendering common/error (404)

とエラーが出ているけれど,コンソールでコマンド叩いてもちゃんと取得できるんだよね……。なんで?

Subversion はちゃんと日本語ファイルを扱えているってことでいいのかな??

ぐぐるよ~

…といっても,「日本語ファイル名だとリポジトリ表示できない」とか,「…だとダウンロードできない」とか,「…だとこめんとが…」とかばっかりで,どうしたらいいものか……。

Bazaar + Redmineでリポジトリコメントに日本語を表示する - obtdaiの日記 ってのがあったので,まあだめもとで変えてみましょう。/etc/apache2/envvars はこうなっている。

# envvars - default environment variables for apache2ctl

# this won't be correct after changing uid
unset HOME

# for supporting multiple apache2 instances
if [ "${APACHE_CONFDIR##/etc/apache2-}" != "${APACHE_CONFDIR}" ] ; then
        SUFFIX="-${APACHE_CONFDIR##/etc/apache2-}"
else
        SUFFIX=
fi

# Since there is no sane way to get the parsed apache2 config in scripts, some
# settings are defined via environment variables and then used in apache2ctl,
# /etc/init.d/apache2, /etc/logrotate.d/apache2, etc.
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
export APACHE_PID_FILE=/var/run/apache2$SUFFIX.pid
export APACHE_RUN_DIR=/var/run/apache2$SUFFIX
export APACHE_LOCK_DIR=/var/lock/apache2$SUFFIX
# Only /var/log/apache2 is handled by /etc/logrotate.d/apache2.
export APACHE_LOG_DIR=/var/log/apache2$SUFFIX

## The locale used by some modules like mod_dav
export LANG=C
## Uncomment the following line to use the system default locale instead:
#. /etc/default/locale

export LANG

## The command to get the status for 'apache2ctl status'.
## Some packages providing 'www-browser' need '--dump' instead of '-dump'.
#export APACHE_LYNX='www-browser -dump'

そして /etc/default/locale はこう。

LANG="ja_JP.UTF-8"

というわけで,/etc/apache2/envvars の「あんこめんとしてね」って書いてあるところを変更しましょう。

. /etc/default/locale

そのあと,$ sudo /etc/init.d/apache2 restart もわすれずに。

けっか

ひょうじされたあああ!!! びっくりw

Redmine:ログを見ろといわれたけれど……

ことのおこり

前回,ログを見ろといわれて,確かにそんなログが出てたのに,今出なくなってる……。

こころあたり

Redmine を 1.0.4 から 1.1.2 にあげたんだよね……。で,なんでかな~って見てみると……。

$ ls
delete.me production.log
$ ls -Al
合計 8
-rw-r--r-- 1 www-data www-data 36 2011-03-08 04:44 delete.me
-rw-r--r-- 1 root root 51 2011-04-07 11:57 production.log
んんん?

あ゛~,アップグレードのマイグレーション,$ sudo rake db:migrate RAILS_ENV="production" したんだ! $ sudo -u www-data rake db:migrate RAILS_ENV="production" しなきゃいけないのに。ってわけで,$ sudo chown www-data:www-data redmine/ -R することに。

config.log_level = :debug,尋常でなくログが出るんだけど……。

2011年4月6日水曜日

Redmine:「リポジトリに、エントリ/リビジョンが存在しません。」

げんしょう

リポジトリで,diff をクリックすると「リポジトリに、エントリ/リビジョンが存在しません。」とおっしゃる。

ぐぐる

設定間違いで,リポジトリが全く見れないパターンでの「リポジトリに、エントリ/リビジョンが存在しません。」は見かけるけど……。

こんなのを見つけてみた。Redmine - Defect #7324: Subversion diff gives an error. - Redmine

You should first try to get the log with log_level set to :debug (see config/environment.rb).
はう~