2015年04月10日

GoogleDriveのローカル保存ディレクトリ名を任意の名前に・・・grive-toolsを改造する

表題のとうりです。

GoogleDriveを便利に使おうとするとやはり手間なく同期させたいところです。
私の場合はローカルに置いたファイルを出先などほかのPCで使いたいので。

さて問題は、griveをコマンドラインで操作する場合は問題ないんですが、guiで操作できるgrive-toolsの場合セットアップで強制的にローカルに"Google Drive"というディレクトリが作られることです。ディレクトリ名にスペースが入っているのでいろいろと問題が起こります。

今回直面したのは、GoogleDriveに置いたSQLiteデータベースファイル(実際にはローカルに同期したファイル)をodbc接続してLibreOfficeから読み書きしようとした時、ディレクトリ名にスペースが入ったことでodbcで接続されないというものです。
LibreOfficeからデータベースを登録しようとすると接続エラーになります。

さて、解決策は・・・
当然スペースの無いディレクトリ名であるべきですが、grive-toolsからは作れません。そのような選択肢は画面上にはありません。grive-toolsでセットアップすると勝手に作成されるディレクトリ名は"Google Drive"でスペースが入っています。
コマンドをつかうときや他のアプリケーションに渡すとき嫌なのでスペースのない任意のディレクトリ名で作成したい。

odbc接続の場合、odbc.iniに書いたディレクトリパスはダブルクォート、シングルクォートで囲ったがどちらもダメ。バックスラッシュも試したけどダメでした。

odbc.iniの一部
Database=/home/hoge/'Google Drive'/hogehoge.db


Google Driveというディレクトリ名がセットアップ時に作られるようgrive-setupというシェルスクリプトが書かれています。
ディレクトリ名をリネームしてもPCを再起動したりすると保存フォルダが無いと言われ再作成されます。あるいはgriveインジケータが動作しません。インジケータを再起動すると元のディレクトリ名で再作成しようとします。
 
そこで、
シェルスクリプト grive-setup を書き換える。

sudo leafpad /opt/thefanclub/grive-tools/grive-setup

46行目
gdriveName="Google Drive"

gdriveName="hogehuga"
に変更。

48行目
googleDriveFolder="$userHome/Google Drive"
から
googleDriveFolder="$userHome/hogehuga"
へ変更する。

46行目は必要ないかもしれない。

次に
pythonスクリプト grive-indicator も書き換える。

sudo leafpad /opt/thefanclub/grive-tools/grive-indicator

885行目
googleDrive = "Google Drive"

googleDrive = "hogehuga"
に変更

この後、setupすると任意の名前のディレクトリにGoogle Driveの中身が書き込まれる。
LXDEパネル内通知スペースのインディケータも正常動作する。

grive_Screenshot.jpg

ただし、アップデートがあると上記スクリプトが書き換えられると思うので注意が必要。


posted by 片桐 健 at 23:27 | Ubuntu

データベースの移行

ピアノ調律のお客様データをデータベース化しています。
実はかなり前から取り組んでいますが途中で考えや方針が変わったりしてなかなか進んでいませんでした。

以前OpenOfficeのBaseでまあまあ実用になるデータベースと入力フォームを作りましたが、更にそれを進めてデータはGoogleDrive上に置き事務所(自宅)以外でどこからでも、つまり工房や外出先などでタブレットからもデータを参照したり変更追加したいアクセスできるようにしたいと考えました。

ということで実際にLibreofficeのBaseで作業します。

当初なにも考えずBaseの埋め込みデータベースHSQLDBを使用していたが、AndroidではLibreOfficeBaseは無いしもっと早く動く(そんなに大量のデータがあるわけではないが)ほうがと思い、デスクトップ機やノートPC(すべてUbuntu)は言うに及ばすタブレットでも標準サポートされているSQLiteを使用することに・・。

まずはデスクトップ、ノートPCでLibreofficeのBaseからSQLiteを操作できるかやってみた。

まずはsqlite3 とodbcのドライバのインストール

$ sudo apt-get install sqlite3 libsqlite3-dev unixodbc unixodbc-dev unixodbc-bin libsqliteodbc

それぞれ設定していきます。

データベースをodbcで接続してLibreOffice Baseで作成したフォームで検索閲覧や追加修正する・・。
dataform.jpg

はまった点。
その1
$ ODBCManageDataSourcesQ4
で設定ができなかったこと。
userでもsudoで起動しても設定ファイルが保存されない。なんででしょう?
仕方がないので設定ファイルを手動で作った。

インストール直後にodbcinst.iniを見てみると
$ cat /etc/odbcinst.ini
[SQLite]
Description = SQLite ODBC Driver
Driver = libsqliteodbc.so
Setup = libsqliteodbc.so
UsageCount = 1

[SQLite3]
Description = SQLite3 ODBC Driver
Driver = libsqlite3odbc.so
Setup = libsqlite3odbc.so
UsageCount = 1

ドライバーの在処が何故かフルパスで書かれていない

念の為手動で作成
$ cat /etc/odbcinst.ini
[SQLite]
Description = SQLite ODBC Driver
Driver = /usr/lib/i386-linux-gnu/odbc/libsqliteodbc.so
Setup = /usr/lib/i386-linux-gnu/odbc/libsqliteodbc.so
UsageCount = 1

[SQLite3]
Description = SQLite3 ODBC Driver
Driver = /usr/lib/i386-linux-gnu/odbc/libsqlite3odbc.so
Setup = /usr/lib/i386-linux-gnu/odbc/libsqlite3odbc.so
UsageCount = 1


$ cat ~/.odbc.ini
~/.odbc.iniは無い

手動で作成
$ cat ~/.odbc.ini
[mysqlitedb]
Description = mysqlitedb
Driver = SQLite3
Database = /home/hoge/mytest.db
Timeout = 100000
StepAPI = No
LongNames = No


その2
データベースをGoogleDriveに置いてどこからでもアクセスしようとしたら・・・

odbc.iniにデータベースの場所を書き込む。
[mysqlitedb]
Description=mysqlitedb
Driver=SQLite3
Database=/home/hoge/'Google Drive'/hogehoge.db
Timeout=100000
StepAPI=No
LongNames=No

データベースファイルをローカルのローカルのGoogle Driveのディレクトリに置いてみたらBaseから接続できないことがわかった。
このディレクトリはgriveをgrive-toolsでセットアップした時に作られたもの。

ディレクトリ名はダブルクォート、シングルクォートで囲ったがどちらもダメ。バックスラッシュも試したけどダメでした。

おそらくBaseからodbc.iniを読むときディレクトリ名にスペースが入っていてそれを解さないのでしょう。
したがってディレクトリ名を変える必要がある。

この解決策はgrive-toolsを改造してOKです。これは別の記事で・・・。
posted by 片桐 健 at 15:34 | Ubuntu
2015年02月07日

OCN モバイル ONE マイクロSIM 月額900円(税抜)

OCN モバイル ONE マイクロSIM 月額900円(税抜)

Nexus7 2013 LTE版 のSIMとして購入したもの。

僕の契約は1日70MBのプランで月額900円(税抜)。
しかもその日に使い切れなかった分は翌日に持ち越すので実際は1日70MB以上で最大140MBくらいあるようなもの。

外出中にカーナビとネット検索程度ならこれで十分すぎます。


現在このSIMカードをアマゾンで購入すると、税込み3,240円の初期費用(登録事務手続きの費用)込みの通常価格が1350円なので初期費用は実質半額以下で購入できるようです。通信費は購入月は無料。
音声通話付きのカードもありますが僕は必要がないのでデータ通信だけです。


posted by 片桐 健 at 17:33 | 携帯電話ネタ