‘Software’ カテゴリーのアーカイブ

他のパッケージのaptitude install後にMySQLが起動しない問題

他の環境では多分あまり発生しないかと思いますが、自分の環境では毎回のように発生する上、対処方法をいつも忘れるのでメモ。

環境はdebian squeeze。

# /etc/init.d/mysql start
[FAIL] Starting MySQL database server: mysqld . . . . . . . . . . . . . . failed!

ログも一切出ないので困っていましたが、ファイルのパーミッションの問題でした。

# cd /var/lib/mysql/
(省略)
-rw-rw---- 1 mysql mysql      126 2014-02-27 07:45 mysql-bin.000022
-rw-rw---- 1 mysql root     26620 2014-02-27 07:45 mysql-bin.000023
-rw-rw---- 1 mysql root   1061358 2014-02-27 07:45 mysql-bin.000024
-rw-rw---- 1 root  root     26620 2014-02-27 07:45 mysql-bin.000025
-rw-rw---- 1 root  root   1061358 2014-02-27 07:45 mysql-bin.000026
-rw-rw---- 1 mysql mysql      494 2014-02-27 07:45 mysql-bin.index

mysql-binファイルがroot権限で作られていました。

片っ端からchownして解決です。

# chown mysql:mysql mysql-bin.000023
# chown mysql:mysql mysql-bin.000024
# chown mysql:mysql mysql-bin.000025
# chown mysql:mysql mysql-bin.000026
# /etc/init.d/mysql start
[ ok ] Starting MySQL database server: mysqld ..

根本的な原因は何なんだろうなぁ。


redmineのメール送信エラー

CentOS 5.10にredmine 2.4.2をインストールしていて、Gmail経由でメールが送れない問題があったのでメモ。

wrong argument (NilClass)! (Expected kind of OpenSSL::SSL::SSLContext)

どうやらmailのバージョンが新しくなったところで問題が出たようです。

redmine 2.3.1 / 2.3.2でメール送信時エラーが出た: situの戯れ言

redmineをインストールしたディレクトリに作成されたGemfile.lockファイルのmailのバージョン指定を

    json (1.8.1)
    mail (2.5.4)
      mime-types (~> 1.16)
      treetop (~> 1.4.8)
    metaclass (0.0.2)

    json (1.8.1)
    mail (2.5.3)
      mime-types (~> 1.16)
      treetop (~> 1.4.8)
    metaclass (0.0.2)

と書き換えて、Apacheを再起動したら(Passengerなので)無事にメールが送れるようになりました。

2.5.3が入っていない場合は先にインストールしておく必要があります。

ruby のmail がTLSエラーを吐くので調べたらバージョンだった。 – それマグで!

Ruby 1.8系使ってるとダメみたいです。抜本的な解決のためには1.9以降が必要のようです。


ADT Translation Manager Pluginを一瞬でアンインストールした話

Eclipse Keplerで、ADT Translation Manager Pluginをインストールしたら、Eclipseの設定が消えたようになってworkspace含め初期状態で起動するようになってしまいました。

Installing the Eclipse Plugin | Android Developers

結局根本的な解決には至りませんでしたが、上記プラグインをアンインストールしたら復旧したので解決です。


Let’snoteで画面のコピーのショートカットを無効にする

Let’s noteで、Ctrl+Alt+F7(F8の場合もあり)を押した時に、スクリーンショットが撮影されてpcinfo.bmpというファイル名でマイドキュメントフォルダに保存されます。

WinShotとショートカットが被りますし、減色されて256色ビットマップで保存されるので、正直全くいらない機能です。

というわけで無効にする方法です。

スタートメニューからPanasonic→PC情報ビューアーと開いて、その中にある画面コピーの項目を右クリックします。ちなみに左クリックしてしまうと、また無駄にキャプチャが撮影されるだけなのでご注意ください。

WS000033

右クリックして表示したメニューから、プロパティを選択します。

WS000034

ここでショートカットキーが設定されているかと思いますので、バックスペースなどを押してショートカットキーの割り当てを削除すればOKです。

WS000035



[dx] Could not reserve enough space for object heap

PHPからAndroidのapkをantでビルドする環境を作成中、ヒープ不足でVMが起動しない問題に遭遇しました。

-dex:
      [dex] input: /path1/to/bin/classes
      [dex] input: /path2/to/bin/classes.jar
      [dex] input: /path/to/android-sdk-linux/tools/support/annotations.jar
      [dex] input: /path2/to/libs/android-support-v4.jar
      [dex] Pre-Dexing /path2/to/bin/classes.jar -> classes-df6cdfb7c6be3c83700a640e18a54033.jar
       [dx] Error occurred during initialization of VM
       [dx] Could not reserve enough space for object heap
       [dx] Error: Could not create the Java Virtual Machine.
       [dx] Error: A fatal exception has occurred. Program will exit.

解決策は android-sdk-linux/platform-tools/dx の
defaultMx=”-Xmx1024M”
を小さくすればOKです。

今回は
defaultMx=”-Xmx128M”
としました。

dxコマンドを直接実行する場合は、コマンドに
-JXmx128M
とオプションを付ければ大丈夫なようですが、antの場合はできないっぽいです。

あと、ANT_OPTSはantの中で実行されるjavaコマンドについては引き継がないようです。


EclipseにCDTを入れたらexpandUsingDeclarationsAndRemoveObjectsで落ちる

最近のADTはかなり便利で、いちいちcygwinだのndk-buildだのを呼ばなくても直接Eclipseの中からビルドができるようになっています。
ただ、僕の環境がアップデートを繰り返していたからなのか、Window→Preferences→AndroidにNDKの項目がありませんでした。ADTは21で最新になっているのに。
結局これはADTとAndroid Native Development Toolsを両方一旦削除して再インストールすることで直りました。

ところが、プロジェクトを開いた瞬間にEclipseがJavaVMごと落ちて、以降起動しない現象に陥りました。
どうもCDTのせいらしいです。

# JRE version: 6.0_24-b07
# Java VM: Java HotSpot(TM) 64-Bit Server VM (19.1-b02 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# j  org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics.expandUsingDeclarationsAndRemoveObjects([Lorg/eclipse/cdt/core/dom/ast/IBinding;Lorg/eclipse/cdt/internal/core/dom/parser/cpp/semantics/LookupData;)[Lorg/eclipse/cdt/core/dom/ast/IBinding;+0

eclipse.iniに

-XX:-UseCompressedOops

を追加すると良いと書いてあったのを見つけて、末尾に追加したら解決しました。

Bug 333227 – Oracle Java 6 update 23 crashes when running Eclipse CDT (64-bit version of CDT & JRE) [see comment 7 for workaround]

UseCompressedOopsのオプションについては以下のサイトが詳しいです。

UseCompressedOops オプションのデフォルト値 – めざせ!金持ち父さん


Android開発で3G回線速度を再現する

ネットワークを利用するAndroidアプリを開発していると、回線速度が遅い場合の処理を気にしない訳にはいかなくなります。

開発中はWi-Fiで接続しているから気付かなかった問題が、SIMの入った実機では頻発するなんてこともあります。

通信の内容確認と、速度の制限のために、PCのProxyを経由して通信するようにします。Wi-FiのProxy設定はICS(4.0)から可能です。

設定済みのネットワークであれば、長押しして設定画面を表示します。

image

プロキシ設定を手動にして、ホスト名にPCのIPアドレスを入力します。

image

PC側にはFiddlerを入れます。

Fiddler側の設定はこちらにまとめています。
Androidエミュレータの通信をFiddlerで見る : blog.loadlimit – digital matter –

Android実機からFiddler経由で接続できるようになったら、速度制限を試してみます。

メニューのRulesから、Performance→Simulate Modem speedsにチェックを入れると、「モデムの回線速度」をエミュレートできます。

WS000027

ただ、モデムなので遅くて最近のネットワークとしては使い物になりません。動画ダウンロードに数時間かかるとかザラです。

ここから速度を調整します。

Rules→Customize Rulesを開きます。デフォルトではメモ帳でJSファイルが開きます。

image

request-trickle-delayという行を探します。

		if (m_SimulateModem){
			// Delay sends by 300ms per KB uploaded.
			oSession["request-trickle-delay"] = "300";
			// Delay receives by 150ms per KB downloaded.
			oSession["response-trickle-delay"] = "150";
		}

ここで1KBごとに実行する遅延時間を設定することができます。request-trickle-delayがアップロードの遅延時間、response-trickle-delayがダウンロードの遅延時間です。数字が小さいほど高速になります。

デフォルトの設定ではアップロードが1KBで300msの遅延なので、3.33KB/s、27.3kbpsくらいです。ダウンロードは54.6kbpsくらいです。1024*(1000/150)*8/1000=54.6133..(kbps)ですね。

例えば好意的に見て3Gが1500Kbpsで上下通信できるとすれば、delay値は5.33、小数を切り捨てて「5」としておきます。5msの遅延ではあまり違いがわからないかもしれないので、僕は単純にそれぞれ30と15にしています。

編集が終わったらJSファイルを保存して閉じます。これで遅いネットワークが再現できます。

Fiddlerを使えば、他にもAutoResponder機能で、レスポンスを全部定義してサーバ代わりにしたり、通信自体にブレークポイントを設定してネットワークが応答しなかった場合の処理の確認も可能です。

追記(2013/06/13)

エミュレータの場合はnetspeedオプションをつけることで、速度を指定できます。

emulator.exe -netspeed umts

とすれば、3G回線速度がエミュレーションされます。

その他の速度についてはこちら。

Using the Emulator | Android Developers

ディレイも設定できるので、

emulator.exe -netdelay umts -netspeed umts

という感じで起動すれば良いかと思います。


Eclipse JunoでMercurialEclipseがエラーを出す問題

EclipseでMercurialEclipseを使っているのですが、Junoにアップデートしてから事あるごとにポップアップでエラーが表示されて困っていました。

ヒストリーを表示したときや
An error has occurred. See error log for more details.
com.vectrace.MercurialEclipse.history.GraphLogTableViewer cannot be cast to org.eclipse.ui.part.PageBookView$SelectionProvider
PerspectiveをJavaに切り替えた時などに発生していました。

同じ現象がこちらで現在進行中ですが
https://bitbucket.org/mercurialeclipse/main/issue/320/exception-on-history-when-using-eclipse

MercurialEclipse 2.0.1.v201210021536
というバージョンに問題があるようです。

ところがこのバージョン、公式のリポジトリにはなく、調べてみたら、以下のリポジトリを有効にしていると入るようです。
http://cbes.javaforge.com/update

Window→Preferences→Install/Update→Available Software Sitesでこのリポジトリを除外して、公式
でアナウンスされている
http://mercurialeclipse.eclipselabs.org.codespot.com/hg.wiki/update_site/stable
を登録すれば解決でした。

MercurialEclipse    2.0.0.201208160020
がインストールされました。

もし、すでにv201210021536などの新しいバージョンが入ってしまっている場合はHelp→About Eclipse→Installation Details→Installation Historyから、古い日付を選択してMercurialEclipseをRevertしてください。


hg cloneでcertificate verify failed

httpsのリポジトリからcloneしようとしたらSSLのverifyエラーが発生しました。

PS C:\repo> hg clone https://repository.sample.com/hg/test/ C:\repo\test
abort: error: _ssl.c:490: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

環境はWindows、サーバのSSL証明書はオレオレ証明書です。

解決策はさっくりとverify無視すればOKです。

    --insecure          do not verify server certificate (ignoring
                        web.cacerts config)
PS C:\repo> hg clone https://repository.sample.com/hg/test/ C:\repo\test --insecure

Warningは出ますが、これで使えます。

push/pull時もinsecure付けないといけないのは難点ですね。

ちゃんと解決する方法は公式ドキュメントに書いてあるっぽいのですが、気力なくなってしまったのでそのうち…

CACertificates – Mercurial