ふにゃるんv2

もとは、http://d.hatena.ne.jp/Wacky/

Google Documents List APIを使って、Google ドキュメントにファイルを自動アップロードする

自分は、個人的な気づきをテキストファイルにメモしたりしているんですね。
メールやはてブも使っていますが、ネット経由とローカルファイルでは、どうしても応答速度に違いが出てしまいますからね。


そうやって、書き留めたテキストファイルですが、何時までもローカルに置いておくのも嫌なんですね。
プライベートなネットストレージに突っ込んでおけば、ローカルマシンが壊れた際の復旧や、タブレットなどの別のマシンからも参照できるので、便利になる訳です。


ネットストレージに突っ込んだデータの検索性で、非常に便利なのは、今の所、Google ドキュメントEvernote辺りかな?と感じています。
特に、Google ドキュメントは、検索がバカ早なので、結構お気に入りです。
(MicrosoftさんのSkyDriveは容量はピカイチなのですが、検索を自分のアップしたものに絞れないのがネック<何か方法があるのかなぁ?)
(ちなみに、Yahooはサービス規約をポンポン変えるので、不安で使えない)

という訳で

という訳で、テキストファイルをGoogle ドキュメントに自動アップロードしようと思いました。
要するに、タスクスケジューラ等で、ローカルに置いたテキストファイルを定期的にアップロード&更新しちゃおうって訳です。


当初は、適当なソフトを使おうか?と思っていたんですが、ぐぐると結構楽に実装できる事が判ったので、勉強がてら自作する事にしました。


クライアントのライブラリは、Client Libraries and Sample Code - Google Documents List API - Google CodeのDownloadから取得します。
自分が取得したのは、gdata-2.0.14.zip でした。


ダウンロードして、setup.pyでinstallすればインストールされます。

I:\Wacky\src\test\google\gdata-2.0.14>python setup.py install
...

byte-compiling C:\tool2\Python27\Lib\site-packages\gdata\youtube\__init__.py to
__init__.pyc
byte-compiling C:\tool2\Python27\Lib\site-packages\gdata\__init__.py to __init__
.pyc
running install_egg_info
Writing C:\tool2\Python27\Lib\site-packages\gdata-2.0.14-py2.7.egg-info


後は、上のリンクで紹介されているサンプルコードを元にAPIを叩けばOKです。


では、早速今回作ったコードを示します。

#!/bin/env python
# -*- encoding: cp932 -*-
"""
    Google Documentにテキストファイルをアップロードする
    なお、テキストファイルは、utf-8形式がデフォルトである。(Google Documentの場合)
"""
import sys
import os
import os.path
import pdb
import gdata.docs
import gdata.docs.service

def get_exe_dir_name():
    """実行スクリプトのフォルダを取得"""
    return os.path.abspath(os.path.dirname(__file__))

def copy_to_utf8(src_fpath, dst_dir=None):
    """src_fpath(コピー元のファイルパス)からdst_dir(コピー先ディレクトリ)に、utf-8変換コピーする"""
    fname = os.path.split(src_fpath)[1]
    if dst_dir == None: dst_dir = get_exe_dir_name()
    dst_fpath = os.path.join(dst_dir, fname)
    s = "nkf32 -w8 \"%s\" > \"%s\"" % (src_fpath, dst_fpath)
    print "call: ", s
    os.system(s)
    
    return dst_fpath

def list_file(cli):
    """Google Documentのファイル一覧を得る"""
    i = 0
    for e in cli.GetDocumentListFeed().entry:
        i = i + 1
        print "%02d : file [%s][%s]" % (i, e.title.text.decode('utf-8'), e.GetDocumentType())

def list_dir(cli):
    """Google Documentのフォルダ一覧(コレクション)を得る"""
    i = 0
    q = gdata.docs.service.DocumentQuery(categories=['folder'], params={'showfolders': 'true'})
    for e in cli.Query(q.ToUri()).entry:
        i = i + 1
        print "%02d : dir [%s]" % (i, e.title.text.decode('utf-8').encode('cp932'))

def find_file(cli, name):
    """Google Documentに指定した名前のファイルがあるか調べる。あればオブジェクトを、無ければNoneを返す"""
    for e in cli.GetDocumentListFeed().entry:
        if e.title.text.decode('utf-8') == unicode(name, 'cp932'):
            return e
    return None

def upload_text(cli, fpath, name=None):
    """Google Documentに、ファイルをアップロードする。既にファイルがあれば置き換える
        \arg    fpath   アップロード元のファイルパス
        \arg    name    アップロード時の名前
    """
    if name == None: name = os.path.split(fpath)[1]
    
    print "アップロード中(%s, %s)..." % (name, fpath)
    ms = gdata.MediaSource(file_path=fpath, content_type=gdata.docs.service.SUPPORTED_FILETYPES['TXT'])
    exist_file = find_file(cli, name)
    
    e = None
    if exist_file == None:
        print "  new upload file!!"
        e = cli.Upload(ms, unicode(name, 'cp932'))
    else:
        print "  replace file!!"
        e = cli.Put(ms, exist_file.GetEditMediaLink().href)
    print "  OK!!"
    print "  href=%s" % (e.GetAlternateLink().href)

def main(argv):
    print "[%s]のファイルを作業フォルダにコピー中" % argv[1]
    up_file = copy_to_utf8(argv[1])
    print "upload file:[%s]" % up_file
    
    print "Google Documentにアクセス中...",
    cli = gdata.docs.service.DocsService()
    cli.ClientLogin("<アカウント>", "<パスワード>")
    print "アクセス完了!!"
    
    print "\n--- Google Document List ---"
    list_dir(cli)
    list_file(cli)
    print ""
    
    upload_text(cli, up_file, None)
    
    print "アップロード完了!!"

if __name__ == "__main__":
    argv = sys.argv
    print "argc=%d" % len(argv)
    for i in range(len(argv)): print "%d-[%s]" % (i, argv[i])
    main(argv)


使い方は、アップロードしたいテキストファイルのパスを第1引数に与えるだけです。
スクリプトのフォルダに、nkf32でUTF-8変換したテキストファイルを一旦配置し、それからGoogle ドキュメントにアップロードする仕掛けです。

最後に

一応余談です。


Googleドキュメントは、テキストファイルはUTF-8が前提になっているみたいです。
なので、スクリプトでは、Windows版のnkf32を使って、一旦UTF-8に変換してからアップロードするようにしています。
そうしないと、アップロードしたファイルを参照しようとして、文字化けに遭遇しちゃいます。


後、UploadとReplaceをうまく使わないと、同じファイル名で、バンバンUploadするハメに陥りますので、気をつけてください。
(最初、同じ名前のファイルが連続して表示されたので、何が起きたのだろうと考えこんでしまった)


でわでわ。

今度は、いきなり安くなった NEC Life Touch NOTEを買ってみた

ネットアレルギーな親に慣れてもらうように、プレゼント用に安いネット端末を探していたんですね。


ちなみに購入基準としては、以下の感じ。

  • 安い事
    興味を持ってもらえるか心配だったので。
  • パソコンはなるべく避けたい
    フリーダム過ぎて、ウィルス感染が怖い。XP EmbeddedでEWF掛けてあれば少し安心なんですけど、パソコンで そういうのは、見当たらないです。
  • 素早く立ち上がる事
    数秒で起動できればベター。
  • 自分の知っているメーカ製である事
    あまりに挑戦者なメーカのものは、自分も判んないので。


そうしたら、NEC Life Touch NOTEが、2万を切っているじゃ、あ〜りませんか?

日本電気 LifeTouch NOTE NA70W/1A ピアノブラック LT-NA70W1A

日本電気 LifeTouch NOTE NA70W/1A ピアノブラック LT-NA70W1A

(今日時点、Amazonはともかく、価格.comでは、2万切ってます。購入当時はビックカメラ等の大手も出品してました)


ネット検索すると、目の付け所がシャープな人たちが、購入している方が結構多かったんですね。
正直、AndroidよりiPadとかの方が、動きがシャープ&安定しているので欲しかったんですが、まぁ安いし。
ついでにキーボード付きなのが、(普通とは違って自分的には)ポイント高かった。…キーボードでポチポチする方が年配には物理的な反応があって良いかな?と。


で、早速購入しました。


初期設定は自分が行って、親に渡して反応見てます。
身の周りのキーワードをポツポツ入力して、ほぅ。と感心して見てくれているので、結論として買って良かったかな。と。
ACアダプタが付いているので、一々充電する必要も無し、ちゃぶ台の片隅に置いて、思いついた時に引っ張り出して眺められるので、非常に便利ですね。


評価で、開くと液晶パネルの重みで倒れる。とあったのですが、バッテリを付けてない場合の事なのかな?そういう事は、今の所無いです。
キーボードの大きさは、ブラインドタッチには少々難ですが、結構大きいので2本指打法には問題無いレベル。
カメラの質は10万画素?というぐらいの感じでしたが、解像度に対して画面が大きすぎるんでしょうね。
ちなみに、一番引っかかったのは実は無線LANの設定でして、親機にアクセス掛かったMACアドレスを、Life Touchのものと暫く勘違いしていました。
設定の所のMACアドレスを見て、「ありゃ?間違っている」と気づいて、ようやく解決した次第。


ブラウジングの速度や起動速度も、気になるほど遅い訳でもなし。
(多分)Javascriptてんこ盛りのEvernote for Webが、開くのが異常に遅いぐらいで、まぁ親は使わないしね。
とにかく、満足のいく買い物でした。

与太話

このLife Touch NOTEって、今年の2月の製品なんですよね。
半年程度で、ここまで下がるってのは、開発者の方は涙だろうなぁ。

ただ、初期設定の4〜5万だと、ネットブックと完全に競合しちゃうんですよね。
そういう点で、本当申し訳無いですが、この価格帯で他の競合と争える製品だったのかな?と、感じています。

東芝REGZAの外部録画装置として、WD Elementsを買った

自宅のテレビで、東芝REGZAを買っているんですが、時折見るだけ。と、HDDも繋がずに放置していました。


というのも、正直テレビを見ると言ったら、朝起きた時のニュースと、帰った時のBGV替わりでしかなく、時折BSで科学番組や旅行番組をやるので、ぼけっと見るぐらい。
地上波は天気予報を見る為に切り替えるぐらいしか使わないという、体たらくでした。
(ところで、最近のニュースは、N○Kでさえアナウンサーが独り語りを始めたりするので、正直どうよ?と思ったり。<オマエノ意見なんぞ聞きたくないわ。事実だけ正確にイエーみたいな)


とはいえ、時折流れる科学番組を見損ねるのは、ちょっと勿体無いと思ってたりしてたんですね。


そうしたら、先日コンピュータショップに行ったら、WD ElementsというUSB HDDが8,000円くらいで2TBという安さ。

WD Elements Desktop 2.0TB (USB2.0, 静音/省電力, PC&Mac, レグザ/アクオス/ブラビアTV録画対応) WDBAAU0020HBK-JESN

WD Elements Desktop 2.0TB (USB2.0, 静音/省電力, PC&Mac, レグザ/アクオス/ブラビアTV録画対応) WDBAAU0020HBK-JESN


他のメーカのより妙に重いなぁ。けど、独自の3年保証とかしているし、まぁ良いか。と、思わず衝動買いしてしまいました。
(同じ価格帯だと、他のメーカのは1TBしかなかった)


早速繋いでみたんですが、えらい静か。耳をHDDに付けて聞いてみたんですが、時折「コツッ」とか言っているような気がする程度。
裏面に白いLEDがあって、動いている時はこれが点滅しているようなんですが、表に何も無いので、動いているかどうかさえ、良く判らない。


ちなみに、USBへのアクセスが入って初めて、HDDの電源が入る仕掛けのようで、使用しているREGZAだといきなり「録画ボタン」を押すと、「HDDが見つからねーよ」と、言われました。
一旦、番組表から「予約リスト」を表示した後、一旦閉じて「録画リスト」に入り直したら、ちゃんとリスト表示されました。
ちょっと操作が面倒だけど、まぁ、良いか。

RPGツクール2000/2003関連ツール開発用SDK(rpg2kdevSDK)を弄る遊び

昨日は、蚊に噛まれて その痒みで目が醒めてしまいました。
かゆいよー。

不純なゲームの遊び方

先日、フリーで えっちなゲームを見つけて、暇つぶしに遊んでました。
まぁ、背徳の旋律とか、VHゲームとかですね。
ゲームをしながら、よく作りこんでいるなぁ。と感心していたのですが、ちょっと困った問題が。


遊んでいたゲームが、どうも色んなサブシナリオを用意しているようで、作者さんが、どんな話を作りこんだのか知りたくなってきたんですね。
でも、自分にはゲームセンスも無いし、某掲示板の専用板で出てくる話題は、ある程度知った事を前提に書かれていて、どう進めれば良いのか分からない。
(攻略本があったりして非常に助かっているのですが、最新となると…)
下手にフラグを立てると、バグってハニーな状態になる場合や、別のイベントが見られなくなる場合もあるようで、行き当たりばったりも望ましいとは言えない。


中身を知る方法は無いかしらん?と、ぐぐってると、RPGツクール2000だと、体験版で中身を見る事ができる事がわかりました。
やったー。と、眺めて楽しんでいたんですが、ウィンドウを開いては閉じる作業を行うのが、段々億劫になってきた。


もっと簡単に閲覧できるようなビューワか何か無いかしらん?と、更にぐぐっていると、構造を解析している方を見つけました。

ありがたや、ありがたや。


しかも、SDKまで公開して下さっている。

ありがたや、ありがたや。

    ___  
   ,;f     ヽ   
  i:         i
  |         |   ありがたやありがたや
  |        |  ///;ト,
  |    ^  ^ ) ////゙l゙l;
  (.  >ノ(、_, )ヽ、} l   .i .! |   
  ,,∧ヽ !-=ニ=- | │   | .|    
/\..\\`ニニ´ !, {   .ノ.ノ
/  \ \ ̄ ̄ ̄../   / .|

気づき

という訳で、SDKを弄繰り回しながら、遊んでます。
それはともかく、ちょっくら見つけたバグっぽい動きと修正方法をば。


CDimensionクラスのコンストラクタに渡す引数値ですが、256以上を与えると、charにキャストされちゃうみたいです。
例えば↓のように。

CDim2 v(256, 257);
printf("%d %d\n", v.GetX(), v.GetY());

と記述すると、

0 1

が出力されてしまいます。


これをFixするには、CDimensionクラス(CDimension.h)のコンストラクタを、以下のように修正します。

/// コンストラクタ
CDimension(DimType x, ...)
{
    memcpy(m_Dimension, &x, sizeof(m_Dimension));
}

修正すると、以下のように意図された値が出力されます。

256 257

ちなみに

資料とツクールの表示データと比較しながら、どうやったらテキストで取り出せるか試行中…。
という訳で、不純なゲームの遊び方を、研究中です。なはは。

.NETから統合アーカイバ仕様DLLを呼び出すなら、x86でビルドしよう

今回は、ちょっとした気づきです。

で提供されている.NET向けのライブラリを使って、オレオレアプリを作っていたんですね。
この都度、Win7(64bit)環境で動くかな?と思って動かしたら、動かない。


エラーログを見たら、「DLLが無ぇよ」とおっしゃる。
そんなまさか!?と思いつつ、システムフォルダを検索すると、unlha32.dllなどの統合アーカイバ仕様DLLは、どうやら「C:\Windows\SysWow64」フォルダに在る模様。


ちゃんとDLLは存在するのに、ライブラリは見つけられない。
コードを追いかけていくと、DLLの存在チェックは、CommonArchiver.csのExistDLL関数内の SearchPath というWin32 APIを呼び出して実現している模様。

/// <summary>
/// DLLが存在するか調べる
/// </summary>
/// <returns></returns>
public bool ExistsDll()
{
    IntPtr pathPtr;
    return Win32.NativeMethods.SearchPath(
        null, this.DllFileName, null, 0, null, out pathPtr) != 0;
}

ここまで来て、ふと以前読んだ、↓の記事を思い出しました。

Win64(64ビットバージョンの Windows)によって PE ファイル(EXE と DLL)は32ビット「または」64ビットとマークできるようになりました。32ビット EXE は Win64 上では、プロセスに32ビットオペレーティングシステムの幻想を見せる「WOW(Windows32 on Windows64)」の中で走ります。通常、32ビット DLL は32ビットプロセスだけにロードでき、64ビット DLL は64ビットプロセスだけにロードできます。


ここまで来て、プロジェクトの設定を確かめてみると、プラットフォームターゲットが「Any CPU」になっています。
これを「x86」に変えた所、思ったとおり、DLLを参照できるようになりました。


よかった、よかった。

解説

という程のものでも無いですが。

要するに、自分のアプリが「Any CPU」だった為、以下の動きになっていたと思われます。

  1. hoge.exeを動かす。
    「Any CPU」なので、EXEは64ビットだよ〜と、マークされる。
  2. ExistDLLのSearchPath APIを呼び出す。
    検索パスはnull指定なので、API仕様に書かれている通り、実行パスのフォルダ→カレントフォルダ→Windowsのシステムフォルダ→Windowsディレクトリ→環境変数PATHの設定 の順番に検索をかけていく。
  3. ↑で、Windowsのシステムフォルダを検索する時、64ビットモードで動いているので、検索フォルダは「C:\Windows\System32」となる。
  4. 「C:\Windows\System32」フォルダは、純粋に64ビットなDLLしか存在しないので、unlha32.dllなどの32ビットDLLは存在しない。存在しないので、ExistDLLはFALSEになって変える。


対して、「x86」でEXEをビルドしておく事で、3.番目の挙動が変わります。


3.↑で、Windowsのシステムフォルダを検索する時、32ビットモードで動いているので、検索フォルダは「C:\Windows\SysWow64」となる。


多分、すべてを.NETで記述するか、64ビット対応のDLLを用意していれば、問題なく動作するんでしょうけど、この場合はしょうがないですね。

高速起動なお天気ソフトが欲しいなぁ

iPod touchで、天気の確認を行う時、今まで高速起動だった「そら案内」を使っていました。
が、for iOSになって、妙に起動が遅くなったような感じ。


ちょっくら、他の お天気ソフトを入れて、ストップウオッチで測ってみました。
(確認は、iPod touch の2ndです。上位の世代なら、もっと速くなるだろうし、明日には速くなっているかも知れませんので参考値として考えてください)

アプリ名 起動時間
そら案内 for iOS 15秒程度
ピンポイント天気 5秒程度
ウェザーニュース タッチ 6秒程度
tenki.jp 3秒程度
デフォルトの天気予報 3秒程度

ちなみに私の気持ちは、高機能は、どうでも良いねん。朝の忙しい時に見るんだから、今日明日の天気が「今スグ」知りたい。です。
(高機能だが遅いアプリは、端っこの片隅に突っ込んで、必要な時に呼び出すぐらい。たぶん、箪笥の肥やし程度ですが)


2011/06/16 追記
現時点の決定版というか、tenki.jpが一番良いです。
起動が早いし、設定内容を覚えてくれるし、表示される内容は必要十分だし、iPodのようなネットが切れた環境でもデータをキャッシュしてくれるし。
他の天気アプリは、全部消してしまいました。

パソコン購入

空気読めてないですが、嬉しかったので。すみません。


やったよ。
YouTubeで動画を見るつど、CPUが100%に貼りついたままの生活から、ようやく脱しました!


何年越しだろう?Pentium4 2.6GHzという、今だったら無料でも引き取ってくれないようなマシンですからね。
今月頭に、D○LLのWeb siteを眺めていたら、「週末特価!」とか書いてあったので、サポセンのお姉さんにTELして、「このマシン、BugFix版のSandy Bridgeですか?」と聞いたら、「はい、そうです。」→そのまま衝動買いに入ってしまいました。


K付きとかが良いなぁ。とか思ったりもしましたが、10万ちょっとで、今までと比べ物にならない高性能なマシンが手に入るのだから良し。
買い物をガイドしてくれたお姉さんの話だと、「月末になるかも」とか言ってたけど、さすがDE○L、2週かからずに来ましたよ。
おかげさまで、この休みは、現行マシンからの環境移動&構築ばかりしてました。


ちょっと「むっ」としたのは、宅配業者の「佐○急便」かな。
荷物2箱あるのを、家族に1個渡してそのまま帰ってやんの。
夜遅く 家帰って、伝票見つつ「他に受け取って無かった?」と言ったら、「1個だけ」というし、おかしいな?と思いつつサポセンに掛けたら、暫くして「すみません。明日で良いですか?」との事。
次の日、持ってきてもらったからOKなんですが、「すみません」だけで何の説明も無かった模様(仕事行ってたので詳細は知らない)。
自分には直接関係無かったけど、前に 宅配の運ちゃんが 荷物を路上に投げ捨てて帰った事例を直に見ているので、冷や冷やしましたよ。

閑話休題

のろけ話ばかりしていても、意味が無いので、少し技術的な話を。


今回、チップセットの修正版がB3なんですが、ちゃんと直っているか?の確認ですが、多分、CPU-Zの「Motherboard」タブの値で確認できると思います。


試しにチェックしてみた例。
最初、CPUの情報。ちゃんとCorei7です。
1
1 posted by (C)wacky

次、Motherboardの情報。Southbridgeのrev.値がB3なので、これで合っていると思います。
とりあえず、一安心かな。
2
2 posted by (C)wacky


cpuidで読み取り可能なブランド文字列は、「 Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz」。
Performance Monitor Ver.3で、rsmsr 0x1ADで読み取り可能なTurbo Boost最大周波数は、コア1:3800MHz, コア2:3700MHz, コア3:3600MHz, コア4:3500MHzといった具合です。
ちなみに、最大周波数は参考値っぽくて、オレオレチェッカー(ひよひよさんのWinRing0を活用)だと、適当に負荷を掛けた時、以下の周波数が取れています。

CPU0 freq=3699.96193055988MHz
CPU1 freq=3589.50359913995MHz
CPU2 freq=3621.29170663902MHz
CPU3 freq=3570.62542089371MHz
CPU4 freq=3751.557912622MHz
CPU5 freq=3639.277327238MHz
CPU6 freq=3715.15504868304MHz
CPU7 freq=3594.52350453596MHz

ちなみに、負荷を掛ける前の周波数値は、↓こんな感じ。

CPU0 freq=1974.48633721141MHz
CPU1 freq=1804.84905499017MHz
CPU2 freq=2075.29659562845MHz
CPU3 freq=1833.25453943208MHz
CPU4 freq=2197.65433757048MHz
CPU5 freq=1914.3955000627MHz
CPU6 freq=2166.73057197718MHz
CPU7 freq=1821.80037579001MHz

そうそう、Windows7に最初に引っ付いてくるガジェットの「CPUメーター」は、TurboBoostの計測値じゃなくて、OSの負荷なので、お間違えなきよう。
(IntelのWeb siteに、Turbo Boostのゲージガジェットがあったような…)

移行中の感想

今回新マシンを購入して、現行マシン(XP)から移行する際の感想をば。
(感動が薄れる前に、メモメモ)

  • Google Chromeの個人設定の同期は便利。というか、ネット上にデータ置くのなら、利便性を上げてもらわないと、使う気が起きない。
    (ただし、プラグインは、同期されない。まぁ、仕方無いか)
  • Google Chromeの例を見ると、常用としている Sleipnirも、設定がネットになると便利かなぁ。と思ってしまう。
    Win7になったせいか、同じデザインに設定しているのに、アドレスバーの拡張メニューの出し方が変わっていて、半日も費やしてしまった。
    ぶぅぶぅ文句を言いつつも、これを使い続けるのは、セキュリティ切り替えがしやすいから なんですけどね。
  • Windows7で、やけにバカでかいアイコンだよなぁ。と思っていたが、ディスプレイが高解像になっているので、これで丁度良いのだと気づいた。
    XP時代が1280x1024で、Win7が1920x1080かつデュアルですしね。(といいつつ、幾つかはアイコンを小さくして画面を広くしようとしている私)
  • 購入した際のキーボードが、やけに使いにくかったので、家電で別のキーボードを買ってきてしまった。
    なんつーか、クリックが浅すぎなのと(PV-7かよ!?)、傾斜が無さすぎ。さらにHome, Endあたりのボタン配列が3x2じゃなくて、2x3なのが気に食わない。
    ちなみに、家電屋で物色したのですが、千円くらいの安物の方が、相対的に良かった。orz
  • 作動音は確実に小さくなっている。
    現行のは、夜中布団を被らないと、ちと五月蝿かったが、これなら大丈夫かな。<蛍光灯の「ジー」音の方が五月蝿いくらい。
  • 64bit Windowsという事で、どれだけのアプリが動かなくなるかドキドキしているが、今の所大丈夫かな〜。
  • TortoiseSVN 64bit版も万事順調。現行マシンから持ってきたリポジトリへの「Relocate」すれば普通に使える。
    といいつつ、アプリケーションのバックアップをとろうとして、「Program Files」下のフォルダに対して CheckIn / CheckOutしようとして、少し引っかかりましたけどね。<これは、64bitでなく、Windows7UACの話。
  • 同梱アプリとして、McAfee Security Centerが入っていたけど、除外指定が出来ないので、使い物にならない。(ついでに、フォーカスするポップアップ五月蝿い)。すぐに、Nortonさんに切り替えてしまいました。
    ↑試供版とはいえ、期限付きなんだからフル実装のを付ければよいのに。と思ってしまいます。大抵の人は期限が切れたら延長しようとするのだから、機能制限なんぞ付けるより、使い勝手の良いものを提供した方が、続けて使ってくれる確立が高いと思う。
  • Win7になって、動画デコーダを別途入れなくても、主要な動画を再生してくれる感動にひたっております。しかも、DXVA効いているし。(だよな。OS負荷全然上がってないし)

以上。