GoodReaderで一度に複数のファイルをUPする方法

一番簡単なのが、ZIPで転送
フォルダに入れてZIP圧縮→転送→GoodReaderで解凍だけでいける。

このやり方だと、ファイル名が文字化けするので英語と数字のみならこれでいける。

ファイル名に日本語使う場合は、WebDAVクライアントを使えばいける。

試したのは、dddavってやつ
http://www.vector.co.jp/soft/dl/winnt/net/se476343.html

ちなみにWebDAVクライアントってのは、簡単に言うとファイル転送するためのソフトです。

1. GoodReaderをWiFiでつなげるように準備
2. 起動して新規ホストの設定
こんな感じに設定

3. ホストに接続。
接続が成功すると左側がPC、右側がGoodReaderになってる。

4. 右側にDownloadsとMy Documents があるのでMyDocuments 以下の適当な場所に移動

5. あとは、ローカルのフォルダを選択して右クリック→アップロードでOK

DataContractを使って、XMLファイルをクラスに変換

XMLファイルの読み込み→クラスの作成を楽にできる方法があったのでメモ

1 XML定義ファイルを用意する

2 XML定義にあった形でクラスを宣言

3 XMLを読み込んでクラスへと変換

XML


<?xml version="1.0" encoding="utf-8" ?>
<SiteList xmlns="http://schemas.datacontract.org/2004/07/XmlDataContractTest" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<WebSite>
<Name>ヤフージャパン</Name>
<URL>http://www.yahoo.co.jp
<UserID>yahooUser</UserID>
<Pass>hogehoge</Pass>
<Biko>yahoo</Biko>
</WebSite>
<WebSite>
<Name>Google</Name>
<URL>http://www.google.co.jp
<UserID>googleUser</UserID>
<Pass>hogehoge</Pass>
<Biko>Google</Biko>
</WebSite>
</SiteList>


XML定義用のクラス

[CollectionDataContract(Name = "SiteList")]
public class SiteList : List
{
}


[DataContract(Name = "WebSite")]
public class Site
{
[DataMember(Name = "Name", Order=1)]
public string Name;
[DataMember(Name = "URL", Order = 2)]
public string Url;
[DataMember(Name = "UserID", Order = 3)]
public string UserId;
[DataMember(Name = "Pass", Order = 4)]
public string Pass;
[DataMember(Name = "Biko", Order = 5)]
public string Biko;
}


XMLの読み込み→クラス化


using (System.Xml.XmlReader reader = System.Xml.XmlReader.Create("WebSite.xml"))
{

DataContractSerializer ds = new DataContractSerializer(typeof(SiteList));

SiteList sites= (SiteList)ds.ReadObject(reader, true);

string outPut = "";

foreach (Site s in sites)
{
outPut += s.Name + System.Environment.NewLine;
outPut += s.Url + System.Environment.NewLine;
outPut += s.UserId + System.Environment.NewLine;
outPut += s.Pass + System.Environment.NewLine;
outPut += s.Biko + System.Environment.NewLine;

outPut += System.Environment.NewLine;
}

MessageBox.Show(outPut);
}


クラス→XML書き込みの場合


Site yahoo = new Site { Name = "yahoo!", Url = "http://www.yahoo.co.jp", UserId = "yahooUser", Pass = "hogehoge", Biko = "ヤフーです。" };
Site google = new Site { Name = "Google", Url = "http://www.google.co.jp", UserId = "googleUser", Pass = "hogehoge", Biko = "グーグルです。" };

SiteList sites = new SiteList();
sites.Add(yahoo);
sites.Add(google);

DataContractSerializer ds = new DataContractSerializer(typeof(SiteList));

using (Stream s = File.Create("WebSite.xml"))
{
ds.WriteObject(s, sites);
}

MessageBox.Show("正常終了");

iPhoneがitunesで認識されない

状況としては、
1 iPhoneWindows7のXPモードでitunesにつなぐとitunesが落ちる
2 マイコンピュータをみると認識自体はされているが、カメラ扱いされてる
3 デバイスドライバを見る限りドライバは、入っている
で、いろいろやっても結局だめだったので、最後にUSB挿す場所変えたらすんなり認識しやがった・・・○| ̄|_
違いは、最初に挿してた場所は、USB1.1
変えた場所は、USB2.0
iPhone4は、USB1.1が嫌いなのか?
ネットで見ると、USB1.1でも問題ないとでてくるのだが・・・・。
同じように困ってる人がいたら、一度USBポートを変えてみて。
もしかしたら動くかも。

JavaScriptからVBScript呼び出し

JavaScriptのメッセージボックスのアイコン変えてほしいんだけど?
こんな要求がやってきた・・・。
正直、JavaScriptあんまりやったことないのよ・・・。
ネットで調べる限り方法は、いくつかあるらしい。
1. jQueryを使う
jQuery Alert Dialogs
http://labs.abeautifulsite.net/projects/js/jquery/alerts/demo/
これは、かなりステキな感じだ。
個人的にも興味がある。
使うには、検証が必要なため一番時間がかかりそう。
後々のことを考えれば、スキルアップに役立つ。
2. VBScriptでやる。
VBScript のメッセージボックスは、かなりいろいろなボタンやアイコンが表示できる。
http://www.kanaya440.com/contents/script/vbs/function/others/msgbox.html
でも、IEでしか動かない・・・。
うまくJavaScriptと共存できれば簡単にできるかも?
3. メッセージ用にhtmlを一つ作ってshowModalDialogで呼び出す
IE以外でもFireFoxSafariも大丈夫みたい。
参考↓
http://d.hatena.ne.jp/replication/20101201/1291134458
画面増えるのでいろいろと面倒。
でも、画面作るのは慣れてるのでjQuryよりは工数かからないと思う。
この3つから今回は、時間の都合で2番のVBScriptのメッセージを使おうということに決まった。
で、やってみたらVBScriptってJavaScriptから呼べるということが判明。
正直、こんなに簡単にできていいのか?と思ってしまった。
サンプル


<html>
<head>
<script type="text/javascript">
function callVbMsg()
{
var rc = msgVb();
if(rc == 6)
{
alert("はい");
}
else
{
alert("いいえ");
}
}
</script>
<script type="text/vbscript">
Function msgVb()
msgVb = MsgBox("めっせーじ", 68 , "タイトル")
End Function
</script>
</head>
<body>
<input type="Button" onClick="callVbMsg();" value="JavaScriptからVBScript のメッセージを呼ぶ" />
</body>
</html>

ペアプログラミングって面白い

先日、後輩とペアプログラミングしてみた。
やってみると意外とアイデアが浮かんできて面白かったのでメモ

やりたいこと
データテーブルの管理ナンバー列の値を使って in のリストを作成。
初期ソース


private string getInListString(DataTable dt)
{
string inList = "";
foreach (DataRow row in dt.Rows)
{
string kanri_no = row["kanri_no"].ToString();
inList += "'" + kanri_no + "',";
}
if (inList.Length > 0)
{
inList = inList.Substring(0, inList.Length - 1);
}
return inList;
}
自分:このままだった管理ナンバー重複するから、重複を除いて。
後輩:(`Д´)ゞラジャー!!
修正ソース

private string getInListString(DataTable dt)
{
List lstKanri = new List();
string inList = "";
foreach (DataRow row in dt.Rows)
{
string kanri_no = row["kanri_no"].ToString();
if (!lstKanri.Contains(kanri_no))
{
inList += "'" + kanri_no + "',";
lstKanri.Add(kanri_no);
}
}
if (inList.Length > 0)
{
inList = inList.Substring(0, inList.Length - 1);
}
return inList;
}
自分:OK。動きは問題ないけど、ちょっとカッコ悪くない?
後輩:う〜ん。Linqとか使えないですかね?
後輩:あ、そろそろ交代っす。先輩カッコよくたのんます。
自分:OK。ちょっとやってみる。

private string getInListStringLinq(DataTable dt)
{
var query = from DataRow row in dt.Rows where row["kanri_no"] != DBNull.Value select "'" + row["kanri_no"].ToString() + "'" ;
return string.Join(",", query.ToArray());
}
自分:こんな感じでどう?

後輩:かっこいいっす!でもこれって、また重複してますよ。
自分:(`Д´)ゞラジャー!!修正します。

private string getInListStringLinq(DataTable dt)
{
var query = (from DataRow row in dt.Rows where row["kanri_no"] != DBNull.Value select "'" + row["kanri_no"].ToString() + "'").Distinct();
return string.Join(",", query.ToArray());
}
自分:どう?
後輩:完璧っす!
って感じで、最初11行のメソッドが条件追加したのに逆に2行になりましたw
ペアプログラミングしてなかったら、こうはならなかったと思う。
普段と違うパターンの発想が出てくるのもペアプログラミングのメリットだと思う。逆にデメリットは、周りから遊んでると思われることかも(笑)

Windows で iPhoneアプリをつくりたい!2

前回の続き
Mac OSX のインストールに成功し、キーボードの問題もなくなった。
ということで、次はiPhoneアプリの環境を作ってみた。
iPhone SDKを落とせばいいらしい。
日本語サイトでは、有料に誘導するとこしか見つけれなかった○| ̄|_
英語の方であったのでメモ↓
http://developer.apple.com/devcenter/ios/index.action
ログイン後
Xcode 3 and iOS SDK 4.3 をダウンロード
見つけにくのでURL貼っとこ
https://developer.apple.com/devcenter/download.action?path=/Developer_Tools/xcode_3.2.6_and_ios_sdk_4.3__final/xcode_3.2.6_and_ios_sdk_4.3.dmg
でダウンロードが4.1Gと・・・・。
VMWare + 低速ADSLのせいで10時間Overでした・・・。
落とした後は、すんなりインストール成功。
インストール先は、/Developer/Applications/Xcode アプリケーションには入ってなくて探したよ・・・。
定番のHelloWorld!を作ってみた。

☆-(ノ゚Д゚)八(゚Д゚ )ノイエーイ
いろいろ面倒だけどなんとかWindowsでもiPhoneアプリ作れた!

MAC OS X 10.6.3 SNOW LEOPARD のキーボード配列を修正のメモ

WindowsでiPhoneアプリを作りたい!で出ていた問題の一つにキーボード配列がおかしいというのがあった。なんとかこれを解決したくていろいと調べてみた。

一番簡単な解決方法は、Windows用USBキーボードをMacで使うのサイトにあるUSB JIS Keyboard Layout 1.0.1を使うこと。

10.3.x用 らしいけど、10.6.3 SNOW LEOPARDでも問題なくキーボードが修正できるようだ。
使い方も簡単。
ことえりの環境設定を開いたら、「英字入力時のキーボード配列」に「USB JIS」を選ぶだけ。

素晴らしい!