2014年9月22日月曜日

androidの"空き容量が不足しています "エラーについて

私のxperia(SO-04E)なのだが、いつからかわからないが
Google playからソフトを更新するときに
” 空き容量が不足しています”
のエラーを出してアップデート失敗するようになっていた。
それもtwitterとかLineとかfirefoxとかfacebookとか重要なアプリに限って出しやがるので困っていた。
ただどうでもいいアプリは普通にインストールできたので空き容量のせいではない
とは思っていたが、もうスマホ自体嫌になってたので考える気がなかった。

この不具合なのだがWEBで調べると、
”アプリを入れ過ぎなのでアンインストールしましょう。”
的な解決策が出てるが、私の場合、新規のインストールはできるので
絶対にこれとは違うのはわかっていた。が、他の対策も知らないので
他のアプリをアンインストールしてアップデートしたりしてみたが、できないままだった。

この不具合が困るのは勝手にアップデートが始まるので負荷(+いくばくかのお金)
がかかるのと、ムカついてアンインストールするとその後インストールできなくなって
アプリが二度と使えなくなる点だった。
他の解決策として”キャシュをクリア”、”履歴をクリア”
とかの要らないデータを削除する解決策もやって見たがダメ
このまま放置していた。

そもそもこの不具合なのだがeclipseでメモリ監視していると、空きメモリが充分でも出しやがる
だから絶対空き容量(ROM,RAM両方)のせいではないとは思っていた。
そもそもSDカードつけても出すし。
RAM増やさないとだめなのか?とは考えてたが、ある理由であっさり解決した。

そもそもアプリをインストールするとデータが/data/app-lib/[アプリ名]に書かれる。
このデータ、時々アプリをアンインストールしても残る。理由は分からん。それが仕様か?
なおこのフォルダだが”ES ファイルエクスプローラー”とかのrootアクセスできるやつで
rootをON にしないと見えないので注意
あと[アプリ名]だがこれはブラウザーでそのアプリのgoogle playのページを開くとURLからわかる。
ツイッターだとURLが
https://play.google.com/store/apps/details?id=com.twitter.android&hl=ja
だから、この場合[アプリ名]はcom.twitter.androidとなる。

なわけでツイッターの場合
/data/app-lib/com.twitter.android-1
みたいなフォルダがある
(おしりの-1も謎/data/app-lib/com.twitter.android-2とかもあったりする)
これアンインストールしてものこる。
ubuntuの設定ごと削除的な便利機能は調べた限りではない。
つまりandroidではアプリをアンインストールしてもインストール前の状態には完全には戻らない(ことがある)。

そこで結論だが、このフォルダを削除するとアップデートやインストールできるようになる。
削除が怖い人はrenameすればいい。
つまり ”空き容量が不足しています”とは”アプリのファイルがあるからインストールできない”
という意味らしい。そのIT用語がわかる人いるのか?

root化してない人はどうすればいいのか?それは不明
そもそもroot化しないと起こらないのかもしれない。
なにかこれをする便利ソフトがあるのかもしれないがすくなくとも私は知らない

空き容量が不足しています という言葉にだまされてえらい目にあった。
明らかに不親切だとおもう。




2014年9月15日月曜日

gtkをWindowsでコンパイル

少々理由あってlinuxのGTKアプリをWindows で動くように変換した。
以下はその備忘録

Qtなら簡単にWindowsとLinuxでやりとりできるのを知ってたが、同じことを
GTKでできるかを調べるはめに追い込まれた。
そのアプリの名前はgerbv(http://sourceforge.jp/projects/sfnet_gerbv/
基板のガーバーデータ(RX-274X)を見るアプリだ。

これ自体はapt get source gerbvでソースがおとせるので割合簡単にmakeできる。
そしてそのソースを例えばeclipseに突っ込んでビルドするのも難しくない。
全部ソースを適当なeclipseのプロジェクトにぶち込んで、makeの引数から
-Iのインクルード、-Dのマクロ、link をそのままコピーしてeclipseに入れたらあっさりビルドできた。
あとちょっとソースはいじった。

でこれをWindowsで動かすにはどうすればいいのかだが、
まずVisual Studioで動かすのは難しいのでこれは早々と諦めた。

つぎにこのREADMEに
- Go to http://www.gtk.org and follow links to gtk for win32.

- Download all of the runtime, developer, and source .zip, .tar.gz, and
  .bz2  files for glib, atk, pango, gtk+, gettext, libiconv, pkg-config,
  and the others there.  Save all of these files to ~/gtk_win32_downloads.

- In cygwin,

  cd /path/to/gerbv/sources

  and run

  ./win32/extract_gtk_win32.
こうあるのでまじめにダウンロードしてやってみたがこれも難しいのか成功しない。

結局頼ったのがlinuxのeclipseでできたから、Windowsでもmingw+eclipse+CDTの環境があるから、これにGTKを付けられないか?ってことだがこれは成功する。
http://adeigjl.blogspot.jp/2011/06/gtk-helloworld.html
ここに詳しい。
まず注意することとしてGTKを最初にダウンロードするがWindows64bitの人は64bit版を
ダウンロードすること。しないとあとで謎のリンクエラーが起こってしばらく悩む
またGTK3でなくてGTK2なのにも注意 (これはアプリがGTK2を使うから)
32bit
http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.24/gtk+-bundle_2.24.10-20120208_win32.zip
64bit
http://ftp.gnome.org/pub/gnome/binaries/win64/gtk+/2.22/gtk+-bundle_2.22.1-20101229_win64.zip
で適当なところ
c:\opt\gtk
とかに解凍してc:\opt\gtk\binにパスを通す。

cmd.exeで
>pkg-config --cflags gtk+-2.0
>gtk-demo

でアプリが立ち上がったのを確認 
 
このあとはeclipseの作業
①適当なプロジェクトを作成
②ソースを書く
  http://developer.gnome.org/gtk-tutorial/stable/c39.html#SEC-HELLOWORLD
③ コマンドプロンプトにて以下を実行
>pkg-config --cflags gtk+-2.0 > a.txt
>pkg-config --libs gtk+-2.0 > b.txt
わたしの場合
a.txt
-mms-bitfields -IC:/opt/gtk/include/gtk-2.0 -IC:/opt/gtk/lib/gtk-2.0/include -IC:/opt/gtk/include/atk-1.0 -IC:/opt/gtk/include/cairo -IC:/opt/gtk/include/gdk-pixbuf-2.0 -IC:/opt/gtk/include/pango-1.0 -IC:/opt/gtk/include/glib-2.0 -IC:/opt/gtk/lib/glib-2.0/include -IC:/opt/gtk/include -IC:/opt/gtk/include/freetype2 -IC:/opt/gtk/include/libpng14 
 

b.txt
-LC:/opt/gtk/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl 
 

だった。
コマンドでリダイレクトしたテキストファイルの内容をBuild Variablesに追加
(プロジェクトのプロパティ > C/C++ Build > Build Variables)。最初のコマンドの内容を
gtk-inc,次のコマンドの内容をgtk-libとでもしておく。


プロジェクトのプロパティ > C/C++ Build > Settings --- Tool Settingタブ
GCC C++ Compiler > Commandline pattern と
MinGW C++ Linker > Commandline pattern の末尾に ${gtk-inc}と${gtk-lib}を追加。


⑥ビルドしてみる。
うまくいいってたらビルドできる。
 
こんなのが出るはず。


本物も基本的には同じであとconfig.hのフラグをしばらくいじったらあっさり出来た。
あと gcc の-Dの引数を#defineに変更してソースに書いた。なぜかmingWではgcc の-D引数に""つき文字列がうまく渡せないので。
最後にLINUXとWindwsのeclipseのソースを置いておく
windows http://1drv.ms/1qOyAeM 
linux   http://1drv.ms/1qOy1BG

まあちょっと難しいがおもしろかった。でこれからが仕事の土台が出来たので実際に使うアプリの作成にとりかかるってことになる。このためにeclipseを使えるようにしたのだった。
 

2014年9月7日日曜日

会社のメールを出先で受信することについて

外を出歩く会社員がもつ切実な問題の一つに
会社のメールを出先及び家で読んで返事が書きたいってのがある。

これを解決する方法の一つは当然スマフォで読むってのがある。
別の方法はgmailかhotmail(outlook.com)で読むやり方だ。

読むだけならスマフォでもいいわけだけど長文の返事を書くときはやはりどうしても
親指だと打ちづらいのでPCで書きたい。(すくなくとも私は)

というわけでやはりGMAILかHOTMAILで会社のメールを読み書きするように
設定したい。どっちでも同じようだが、実際やると違いがあった。

それはGMAILはsmtpサーバーを設定するとき、TLSかSSLに会社のSMTPサーバーが
対応してないと設定できないってこと。HOTMAILはなくてもOKだった。
で私の会社のサーバーはTLS、SSLに対応してないのでHOTMAIL一択となる。

これどういうことかというと会社のメールをGMAILで読んで会社のメールアドレスで
返事を書いてもGMAILのサーバーを通るので、メールアドレスを詐称してるといわれる
可能性があるってことだ。良き会社員としてはちょっとまずいかもしれない。

というわけでHOTMAILで読み書きするのに落ち着いた。
設定のしかたを最後に書いておく。

[HOTMAIL(outlook.com)]
右上の歯車クリックー>オプションー>メールアカウントー>送受信アカウントの追加

[GMAIL]
右上の歯車クリックー>設定ー>アカウントとインポートー>POP3 を使用して他のアカウントのメッセージを確認:(の自分の POP3 メール アカウントを追加)

ただこれをやってると別の問題が新たに発生する。
①返事を書いたのがどのクライアントか忘れる
②HOTMAILのアドレス帳と会社のアドレス帳が混ざる
どっちも解決しようと思えばできるが面倒なので何もしていない。
この前会社のアドレス帳の人にfacebookの友達リクエスト出したからなー
始末書かかされたし。

それらを考えるともうIMAPしかないのかなーと思う今日このごろ

2014年8月13日水曜日

ubuntuにmysqlのDBを作ってそれにandroidからアクセス


色々ごねた。android_studioでやってたらわけわからなくなって
さらにeclipseでandroidのjavaでやってさらにわからなくなって
最終的にeclipseでlinuxのjavaで動作確認
そこからandroid_studioに至った。
基本的にバカだから手間がかかるのだった。
eclipseとかjavaとかmysqlとかいろいろ忘れてた。
androidプログラムも忘れてたし。
もはやSEとは言えないかもしれん。

話に入る前に諸元を確認
ubuntu 14.04
mysql  5.5.38-0ubuntu0.14.04.1

まず最初にJdbcのドライバーのダウンロード
http://dev.mysql.com/downloads/connector/j/
ここに行くとファイルダウンロードできます
Microsoft WindowsとPlatform Independentの二択だが
当然Platform Independentを選ぶ
私の場合は
mysql-connector-java-5.1.32.zip
だった。そして解凍してこのなかにある
mysql-connector-java-5.1.32-bin.jar
をとりだす。(ほかのファイルはいらない)

このドライバーの認識のさせ方は
[eclipse]
①プロジェクトのどこかにコピー
 具体的にいうとパッケージエクスプローラのプロジェクトの中
 のどこか(libsがよいと思う)にドラッグしてファイルを突っ込む
 ことを指す
②ビルドパス設定
 パッケージエクスプローラのプロジェクト名のフォルダで右クリックするとメニューの
 一番最後に"Properties"という項目があるからそれをクリック
 Librariesのところでadd jar からコピーしたファイルを入れる
[android studio]
①プロジェクトのどこかにコピー
 具体的にいうとプロジェクトのビューのプロジェクトの中
 のどこか(libsがよいと思う)にドラッグしてファイルを突っ込む
 ことを指す
②ファイル設定
 プロジェクトのビューのプロジェクトの名前で右クリックするとメニューに
 "Open Module Settings"という項目があるからそれをクリック
  Dependenciesのところで+のFile dependenciesからコピーしたファイルを入れる

次にmysqlサーバだが
①sudo vi /etc/mysql/my.cnf
で50行目
bind-address           = 127.0.0.1
をコメントアウト(#を先頭に追加)して
#bind-address           = 127.0.0.1
にする
あとうるさく言うと
GRANT ALL ON sampledb.* TO pgtop@'%' IDENTIFIED BY '12345';
とかもやったがこれは振り返ると不要だったかも
②DB作成、ユーザー作成
  DBなので当然

最後にandroidのソースの書き方だが
①AndroidManifest.xmlに

 追加
②コードを書く
 重要なことはJDBCアクセスの部分はインターネット経由なのでメインスレッドにかかない
 こと

以下全文

Ubuntu 14.04 でx2go をひさしぶりに使ってみる

リモートデスクトップX2goのサーバーををUbuntu 14.04に
突っ込んでいるわけだが、最近使わないのですっかり忘れていた。
ひさしぶりにつかってみた話
http://wiki.x2go.org/doku.php
ちなみにX2goをしらない人のために説明すると、これは
インターネットでつながったマシンからリモートマシンのデスクトップを
表示、操作するソフトです。 (リモートマシンにポート22でアクセス可能なのが前提)


まずX2goのClientなのだがUnityの選択肢が増えていた。
がどうやっても動かなかった。

いろいろしらべるとこの選択肢の内 ubuntu 14.04で満足につかえるのは
KDE
LXDE
XFCE

だけらしい。(当然サーバー側でこのデスクトップが動作していることが前提)
ということは純粋なUBUNTUの環境では動かなくて、
KUBUNTU,LUBUNTU,XUBUNTU,
でなくてはだめ、もしくはこのデスクトップ環境を後からいれる必要ありってことになる。
普通か?異常だとおもうが? わたしだけか?そうおもうのは?
ちなみにrdesktop,xdmcpもやってみたがうまく動かなかった。
設定すればいいのかもだがこれは宿題として残しておく。
だいだいインストールして動かなったらモチベーションが下がってやる気が失せる。

とりあえず設定を書いておく。
その前にubuntuにあとづけでデスクトップ環境を増やしたい方のために
やり方を書いておく
[KDE]
sudo apt-get install kubuntu-desktop
[LXDE]
sudo apt-get install lxde
[XFCE]
sudo apt-get install xfce4

ただしこれらの内LXDEとXFCEは確認したがKDEは確認していない
あともう今時はapt-get installよりapt installの方がかっこいいかもしれない。 
 
で次にサーバの立て方
sudo add-apt-repository ppa:x2go/stable
sudo apt-get update
sudo apt-get install x2goserver x2goserver-xsession
 
で最後に
sudo apt-get install plasma-widget-x2go(KDEのとき)
sudo apt-get install x2golxdebindings (LXDEのとき)
そしてxfceはなしでOK
 
clientは
http://wiki.x2go.org/doku.php/download:start
から windows,linux,macのソフトが落とせます

これでお好きなデスクトップを選んで表示できます。
こんな感じ