2018年03月31日

[メモ]FlashAirのWebDavを使うときに写真の更新日時がずれる現象の解消方法

1件問題解決しましたので、ここでメモをしておきます。
[環境]
カメラ:Canon Kiss X7、タイムゾーン設定=東京
SDカード:FlashAir W-04 32GB
      APモード、WebDav ON(ReadOnly)
PC:Windows 10

[現象]
カメラで撮影した写真ファイルの更新日時:
・SDカードリーダー経由してPCのExplorerで見る場合は、更新日時が撮影時間と同じで正しい。
・WebDav経由でPCのExplorerで見る場合は、更新時日時が撮影より9時間先になっている。
 例:撮影時間2018/03/31 10:00
   更新日時2018/03/31   19:00

[原因]
 どうやらWebDavサーバーはTimeZone情報に基づいて更新日時を算出しているよう。当たり前かもしれませんが、よくわからないです。
 カメラのタイムゾーンは東京がGMT+9になっているため、WebDavにその情報を教えてあげないと、たぶんユーザがGMTのタイムゾーンにいると想定してさらに+9してしまうと思われます。
[解決方法]
 FlashAirのConfigファイルの[Vendor]の下に以下を追加する:
  
TIMEZONE=36
36は東京のタイムズーンの意味です。
詳しくは以下FlashAirの開発関連ページを参照ください。

以上

posted by _ap at 22:46 | Comment(0) | PC問題解決 | このブログの読者になる | 更新情報をチェックする

2017年12月31日

中国語雑談5:犬関連の熟語

日本はもうすぐ戌年。
基本的に、中国人も犬を愛している。
この点は世界人民と違わない。
ただ、なぜか「狗」或いは「犬」を使う成語・熟語はほとんどネガティブな意味である。

鸡犬不宁  (鶏も犬も騒いでて、混乱・落ち着かない様子)
鸡飞狗跳  (同上)
狗仗人势    (他人特にえらい人を盾にしてえらそうにしている人のこと)

狼心狗肺  (恩知らずの人を形容することば)
狗眼看人低 (自分のレベルが低いのに他人を見下すこと)
狗血喷头   (罵られたり怒られたりして大変な様子)
狐朋狗友     (悪い友達)
一人得道鸡犬升天 (一人が偉くなってその周りの人たちも功績もないのに褒美・昇進されること)

まだまだある・・・
何かポジティブなことばないのかな、本当に悩ましい。
あった!でもあんまり使わない:

犬马之劳 (主人のためになんでもする忠実な様子)

これ以外思いつかない・・・
昔は誰かのことを「犬」や「狗」と言ったら、罵り言葉で間違いなかったが、現在はちょっと変わってきている。
自分や他人のことを「単身狗」(独身)と呼ぶのが普通になっているし、場合によってかわいく聞こえるケースもある。
昔の中国人は狗を忠実な象徴としてみていたと思うが、一応「畜生」の部類に入れていたから、鶏や豚などのように扱っていた。
(でも牛や馬が例外・・・、もう深いことが分からない。)
とにかく、狗のことばは特に人のことをいうときに、気を付けるべきである。


posted by _ap at 23:19 | Comment(0) | C# | このブログの読者になる | 更新情報をチェックする

2017年12月30日

中国語雑談4:以〇会友

中国人は四字熟語を使いたがる。
成語などの熟語でなくても四字言葉を使いたがる。
今回は”以〇会友”の表現を紹介しよう。

以茶会友
以武会友
以舞会友
以书会友
以歌会友

まだまだ続く。
意味は「同じ趣味を持つひとたちが集まって交流したり研鑽したりすること」。
やっていることが普通でも、なんかお上品なイメージがある。

たとえば、以下2種類のポスターが大学の寮の入り口に貼ってあるとして:

・ 周六晚上一起打牌的请报名!
・ 以牌会友,周六晚上扑克牌大会请报名!

土曜日の夜に一緒にトランプやろうぜ!とのことだけど、
前者はギャンブルに見えて、後者が文化的なイベントに少し聞こる。

まあ、すべての場面において有効ではないが、少しは品位を上げてくれる言葉だと思う。
posted by _ap at 22:25 | Comment(0) | 中国語 | このブログの読者になる | 更新情報をチェックする

中国語雑談3:“是”のちょっと変わった使い方

是=is は誰でもわかる使い方。
这是苹果,那是香蕉。とか。
ちょっと変わった使い方を紹介しよう。
会話例:

Aさん:你不是说不来吗? (来ないと言ったじゃん?)
Bさん:我是说过,但情况变了。 (確かに言ったけど、状況が変わった。)


ここで「是」の意味は「確かに」に当たる。
「是」の文の後に、大体理由を説明するための続きがある:「確かに〇〇だけど、△△だから…」のような。
もし、その続きの文がない場合は、話し手が少し切れ気味になっていると伺える。
さっきの例を少し変えてみると:

Aさん:你不是说不来吗? (来ないと言ったじゃん?)
Bさん:是、我是说过。(はい、言ったけど)

「言ったけど」の続きに「だからなに?」の意味が隠されている。
「是」のような簡単なことばで複雑なニュアンスを表現できたりしちゃうから、場合によって便利である。


posted by _ap at 17:22 | Comment(0) | 中国語 | このブログの読者になる | 更新情報をチェックする

2017年12月29日

中国語雑談2:“我去过”vs“我有去过”

“我去过”vs “我有去过”

意味はまったく一緒。日本語で言うと「私は行ったことがある」。
ただ、ちょっとフィーリングが違う。
“我有去过”は台湾のほうの言い方で、“我去过”は中国大陸の方だと思われる。
(中国大陸といってもすべての地方が同じかと確証がないが)
ただし、近年インターネットの発展やドラマ・映画等の文化交流のおかげで、中国大陸で「」をつけることが増えていると感じている。
聞く方として、もし中国大陸のひとに“我有去过”で話されると、なんか「台湾の言い方をまねしてるな」と私は感じる。
※あくまでも個人的な感じ方。
どっちが良いかでなく、好きなほうを使えばいいと思う。
ひとつ文法的な話で少し付け加えると、もし"你去过那里吗?"と聞かれて、「行ったことがない」と答える場合は:
“我没有去过”or"我去过"となる。
こう見ると、「行ったことがある」の場合、“有”があっても文法的におかしくないと思う。

タグ:中国語会話
posted by _ap at 21:00 | Comment(0) | 中国語 | このブログの読者になる | 更新情報をチェックする

中国語雑談1:価格と納期の問い合わせ

久しぶりの更新で何を書こうかなと迷っている。
プログラミングは最近然勉強していないし、技術的なネタもない・・・。やはり、一番自信のある中国語かな。今後はできれば雑談の形でふと思ったことを書いて行ければと思います。

  1. 请告诉我这个产品的价格和交期。
  2. 可否请教一下这个产品的价格和交期?
  3. 告诉我一下这个品的价格和交期。

解説:

3つとも同じ意味だが、ニュアンスが違う。日本語に変えてみると:
  1. この製品の価格と納期を教えてください。
  2. この製品の価格と納期を教えていただけませんか?
  3. この製品の価格と納期を教えて。

1はニュートラルで、2は姿勢が低く、3は仲良しモードに近い。
1ならほとんどの場面において無難だが、最近の世の中でいうと、サプライヤに対してとしても、丁寧にお願いしてものを売ってもらわないといけないときもあるので、2を使う場面も増えてくるのだろう。

posted by _ap at 16:59 | Comment(0) | 中国語 | このブログの読者になる | 更新情報をチェックする

2015年10月28日

[C#メモ]モンテカルロ法実験:不規則な図形の面積を求める

ヒューゴー賞2015受賞作品:The Three-Body Problem(三体問題)英語版を読了しました。非常に楽しい経験でした、ぜひ第二部も読みたいと思います。

本のレビューはここで割愛しますが、本のなかに「モンテカルロ法」というアルゴリズムに関する内容がありました。

モンテカルロ法はイレギュラーな形状の面接を求めるのによく使われるそうです。不規則な形状を規則な形状(まる、四角等)の中において、そして、その規則な図形に向けてランダムにボールを投げます。ボールが不規則な図形の中と外に落ちた個数の比例をもって、規則的な形状のトータル面積をベースに、不規則な図形の面積を算出する方法です。

浅い理解かもしれませんが、つまり、「ランダムはある一つの場所に集中することなく、均等だ」ということです。

自分はランダムに対して、数学だけだはなく、哲学的っぽくて、なんか興味があります。モンテカルロ法を勉強・実験するために、小さいプログラムを作りました。こんな感じです:

不規則な図形を四角いキャンバスにおいて、そのキャンバス全体にランダムの点を投げます。
(点を投げるよりは、画像の画素の色を調べることです。)
サンプルの個数とサンプリングする回数が設定されます。以下の例では1000個の点を10回繰り返し、その平均値をとります。この例で、図形の正確な面積=129060画素で、モンテカルロ法で算出された面積=129439画素で、僅差です。
当然、毎回の計算結果が違いますし、おおむねサンプリングの個数が多いほど正確値に近づきます。

MonteCarlo

メインなMethodだけここに貼ります。完全のソースはここからダウンロードしてください。

///<summary>
/// モンテカルロ法によって面積を算出する
/// ランダムに画像から画素をサンプリングして、、その画素の色を調べる
/// 色が付いている画素は図形内、色がついていない画素は図形外
/// そして、図形内外の画素の比例を通じて、図形の面積を推測する
///</summary>
///<param name="bm"></param>
///<returns></returns>
private async Task<int> GetAreaOfImageByRandomDot(Bitmap bm)
{
int total_W = bm.Width;
int total_H = bm.Height;
int total_A = total_H * total_W; //画像のトータル面積(画素数)求める
int countOfSamples = (int)numericUpDown1.Value;
int countOfInside =0; //図形内に落ちたランダムサンプリング画素数
int countOfOutside =0; //図形外に落ちたランダムサンプリング画素数
List<Point> lstUsedPoints =new List<Point>(); //一度サンプリングした画素は二度とピックアップされないように履歴を記録するリストを用意

for (int i =0; i < countOfSamples; i++)
{//サンプリング数に合わせてサンプリング作業を開始
await Task.Run(() =>
{//画面フリーズを防ぐために別Threadで作業する
Random rd =new Random(); //ランダム数発生器
Point pt =new Point();
while (true&& lstUsedPoints.Count < total_A)
{//まだ使われていない画素が見つかるまでにずっと探す。見つかったらWhileを脱出する。
//最初は「見つかるまでずっと探せ!」という意味だったので、
//条件はtrueだけだったが、すべての画素を採ってしまった場合はLoopから脱出できないので、もう一つの条件を付け加えた
//画像内からランダムに画素一つを選ぶ
pt.X = rd.Next(0, total_W);
pt.Y = rd.Next(0, total_H);
if (!lstUsedPoints.Contains(pt))
{//この画素はまだピックアップされていない場合:
Color color = bm.GetPixel(pt.X, pt.Y);//画素の色を調べる
this.picked++;
Graphics g =null;
if (this.checkBox1.Checked)
{
try
{
g =this.pictureBox1.CreateGraphics();
g.FillRectangle(Brushes.Purple, pt.X, pt.Y, 1, 1); //画像に印を記録する
}
catch { }
}
//if (color != Color.FromArgb(255, 255, 255, 255))
if (color.R <250|| color.G <250|| color.B <250)
{//白でない場合図形内
countOfInside++;
//if (g != null) { g.FillRectangle(Brushes.White, pt.X, pt.Y, 1, 1); }

}
else
{//白の場合は図形外
countOfOutside++;
//if (g != null) { g.FillRectangle(Brushes.Red, pt.X, pt.Y, 1, 1); }
}
lstUsedPoints.Add(pt);//すでに調べ済みの画素はリストに記録する
break; //一つの画素を調べることができたらもうWhileから脱出する

}
}
});
if (picked %200==0)
{//ProgressBarの刻みを決める、あまり頻繁に更新してしまうと、遅くなるため
this.progressBar1.Value = picked;
this.lblProg.Text = progressBar1.Value.ToString() +" / "+ progressBar1.Maximum.ToString();
}
}

   //図形内・外の画素の比例で図形の面積(画素数)を推測する
int areaCalc = total_A * countOfInside / countOfSamples;
return areaCalc;

}
posted by _ap at 00:12 | Comment(0) | C# | このブログの読者になる | 更新情報をチェックする