2012年8月30日木曜日

Ubuntuからskydriveにアクセス

Ubuntuからskydriveにアクセスする方法がわかったので書いておきたい。

同時にbox.net,cloudme,dropbox,google doc,mydrive,picasa,skydrive,sugarsyncにもアクセスできるようになりました。

そもそもこの手のオンラインストレージものとしてUbuntuのユーザーがよく使うのは
DropBox(https://www.dropbox.com/home)か
Ubuntu One(https://one.ubuntu.com/files/)だとおもう
どっちもUbuntu用アプリあるしね。

SkyDriveはさすがMSの製品だけあってWindows用のソフトしかない。
待ってても誰かが作ってくれる可能性は0%に近いだろう。
となるとあとUbuntuからアクセスするにはWebdavに頼る以外に思いつかない。
それかこのソフトをwine経由で使うかになる。wine以外のやり方を今回は調べたい。

で、まず探ったのがSkyDriveのWebdavのURLがわからないか?だけど、
https://azurefan.wordpress.com/2012/02/27/%E7%8F%BE%E8%A1%8Cskydrive%E7%94%A8%E3%81%AEwebdav%E6%8E%A5%E7%B6%9Aurl%E5%8F%96%E5%BE%97%E3%83%84%E3%83%BC%E3%83%AB/
こんなソフトでWebDavアドレスを見つけて
mount -t davfs [URL] [ローカルパス]
と,やってみたけど理由は不明ながら失敗します。理由を探る気にもならん。
そもそもWindows上 net use * ~ でもうまく行かないし。

そこで、あきらめて悩むこと小一時間。

違うやり方を思いつきました。
思い出したのがこれ
http://otixo.com/
なにかというといろいろなクラウドをくっつけて一箇所で管理できますよ。というツールなのだが
これによくよくみるとWebDavがついているのを思い出した。
そしてここにSkyDriveが登録できることに注意。

つまり
otixo.comにアカウント作成

otixo.comにSkyDrive登録

otixo.comのWebDavをUbuntuで登録

というまわりくどい方法を思いついたわけだ。(SkyDrive認証迂回ツールだ)

でこのやり方はうまくいきます。
まずクラウドを思いつくだけotixo.comに登録
私の場合

こんな感じでbox.net,cloudme,dropbox,google doc,mydrive,picasa,skydrive,sugarsync
を登録 あとamazon s3 とかでも利用できるようです。

次に otixo.comのwebdavのURLをえる。これは上記画面の左下に小さく"Otixo via WebDAV"
と書いているのがそれ。クリックすると
https://dav.otixo.com がWebDavのURLで,ログインアカウントはotixo.comのアカウントと同一なのが分かる。


そこで次にこれをUbuntuに登録するわけだが、nautilusの[サーバーに登録]でこれをするとなぜか失敗します。

そこで適当なフォルダを作ってそこで
sudo mount -t davfs https://dav.otixo.com .
     (ここでdavfsが未定義といわれる人はdavfs2をインストール)

とすると
[sudo] password for kokawa2003:
Please enter the username to authenticate with server
https://dav.otixo.com or hit enter for none.
  Username: oakoak1@hotmail.com<ー otixoログイン名
Please enter the password to authenticate user oakoak1@hotmail.com with server
https://dav.otixo.com or hit enter for none.
  Password:  <ー otixoパスワード

となり認証成功して




このようにすべてUbuntuのフォルダとして見れるようになります。
あまり調べる気にもならないが、otixo.comと同じように迂回ツールとして使えるサイトは他にもあると思う http://smestorage.com/ とか

結論としてヤバイ認証は他のウェブサービスで迂回しろという話でした。

追記:
 http://smestorage.com/
はotixoとちがってwebdavアクセスは有料だった。
そのかわりここからは専用アプリがダウンロードできます。
http://smestorage.com/?p=static&page=clients_and_tools#Linux
このツール12.04で動作するのを確認しました。
skydriveとのやり取りはこちらもいい感じです。

SMEについてはここで書きました



2012年8月27日月曜日

Visual C++でXMLプログラミング

Windows上のVisual C++ 2010でXMLを用いたアプリをつくったのでその記録

XMLiteでC言語でCOMなしでXML読み書きできるという話

これについては
http://docs.solab.jp/xmllite/first/about/
ここが詳しいです。

ポイントとしては、

#include <xmllite.h>
 
#pragma comment(lib, "xmllite.lib")


と書くことだけ。ファイル自体は最初からついてくる。

あとはコーディングを行う

SQLiteをC言語で使う

Windows上のVisual C++ 2010でSqliteでのアプリを作りました。

そのやり方は大きく2とおり存在します。
1.DLLを用いる

やりかたはこれ
http://dcravey.wordpress.com/2011/03/21/using-sqlite-in-a-visual-c-application/
結論から言うと
DLLからLIBを作成してプロジェクトにはそれを入れる
いれるときには
#pragma comment(lib, "sqlite3.lib")
として読み込ませる。
include ヘッダーは
#include "sqlite3.h"

2.ソースを直接プロジェクトに入れる

これのやりかたは
http://www.sqlite.org/sqlite-amalgamation-3071300.zip
をダウンロード+解凍+プロジェクトに追加
もしMFCを使っているならそのままビルドするとプリコンパイルヘッダーのエラーがでます。
のでプリコンパイルヘッダーOFF
Visual C++ 2010だと
構成プロパテイー>C/C++->プリコンパイル済みヘッダーで使用しないを選択してください

include ヘッダーは
#include "sqlite3.h"

あとはひたすらコーデイング

この次のポイントとしては高速化をどう実現するか?というのがある。
これも大きく2とおり存在する

DBの削除、追加を早くするには
sqlite3_exec(Db, "BEGIN", NULL, NULL, NULL);
処理
sqlite3_exec(Db, "COMMIT", NULL, NULL, NULL);
のように処理をBIGIN/COMMITで包む

もうひとつDBの検索を早くするには
INDEXをDBに追加

※今あらためて考えると2はソースを別プロジェクトに一旦入れてLIBに変換してプロジェクトに入れるのがよかったと思う。これでプリコンパイルヘッダーの問題もなくなるし。次はそうします。

2012年8月19日日曜日

google nexusにandroidを再インストール

google nexusにandroidを再インストールしたその顛末


実は前回の記事にも書いたが私がC言語でandroidアプリを書いたのはusbシリアル通信したいからだった。

具体的に書くとZwaveという無線の規格があり、これで家庭の機器を無線通信させたいからだ。
すでにPC(WINDOWS,LINUX,MAC)にUSBドングルを挿して通信することはできていた。

そのドングルをandroidにも挿せないか?というのが課題だった。
挿しても/dev/ttyUSBができないのでLINUXカーネルの再コンパイルが必要なのは分かっていた。

で泣きついたのがこれ
https://groups.google.com/forum/?hl=ja&fromgroups#!topic/android-group-japan/B6bBltfEI8M[1-25]

やりかたは基本的には
https://sites.google.com/site/jcromproject/
これのとおりなのだが
(具体的には
https://sites.google.com/site/jcromproject/home/jcrom_build/ics/galaxynexus/for_sc04d)
これに
linux kernelにmenuconfigでフラグを立てること

ueventd.tuna.rcの変更で /dev/ttyUSB0 に chmod 666を与えること
とを追加しました。



参考
http://blog.sola-dolphin-1.net/archives/4144315.html#more
http://brain.cc.kogakuin.ac.jp/research/usb.html