スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書く事で広告が消せます。

windows7 スクロールを逆方向にする (Lion風)

先日、MacOS Lionにバージョンアップしたら、スクロールが逆方向になりました。
マウスの設定で今までと同じ状態に戻せるのですが、それもなんだか時代に逆行する気がしちゃって、やっぱりこれに慣れていこうと思いました。

早速、職場で使ってるwindows7のスクロール設定もLion風にしようと調べてみましたが、
どうやらwindows7に標準で持っているスクロール設定には、そのような変更はできないようです。


少し調べたら、以下の記事を発見(^-^)
http://kokopellimac.blog108.fc2.com/blog-entry-1613.html (OS X LionのスクロールをWindows 7でも使えるようにする方法)


ここに書いてあるアプリをインストールすれば、スクロールは見事にLionと同じように逆方向になりました。
エクスプローラ、テキストエディター、IE、Visual studioなどで一日お仕事をして問題なく動いていたので、これを入れておけば、間違いないと思います。意外と有名なソフトみたいですね。


内容が簡潔に書かれすぎてて、私のような素人は導入するまで少し時間がかかったので、必要な最短手順を提示します。

--------------------------

1.
AutoHotkeyのインストーラをダウンロードする。
http://www.mediafire.com/?al6gk3zemp54fsr


2.
AutoHotKeyのインストーラを実行する。
特に設定変更せずに、[Next]→[I Agree]→[Next]→[Install]と進めます。
最後にShow Reademeはチェックはずして、[Finish]でおしまい。


3.
スクロール反転スクリプトをダウンロードする。
http://www.mediafire.com/?1j4kudq88hd53u9


4.
スクロール反転スクリプトを、AutoHotKeyをインストールしたフォルダ(※)の直下に置いて、
 ファイル名を下記のように変更する。
  (変更前) → (変更後)
  ReverseScrollingWindows.ahk → AutoHotKey.ini

 ※AutoHotKeyインストール時に設定を変更していなければ、C:\Program Files (x86)\AutoHotkeyにできてる。
 ★.ahkが表示されてない人は、「windows7 拡張子 表示」とかで調べてねー。



5.
AutoHotkey.exeを実行する
インジゲーター(タスクトレイ)に、緑のHロゴが出ていれば起動している。
この状態で、すでにスクロールはLionと同じ方向になってることを確認する。


6.
スタートアップに登録する
windows7起動するたびに、AutoHotKeyをクリックするのは面倒なので、スタートアップに登録する。
  
 ★スタートアップの登録方法
 AutoHotKey.exeで右クリックして、送る→デスクトップにショートカットを作成する。
 すべてのプログラム→スタートアップで右クリックし、エクスプローラで開く。
 デスクトップに作成されてるAutoHotKeyのショートカットを、
 スタートアップのフォルダにドラッグ&ドロップする。
   


これでLion風のスクロールライフを楽しめますね!

ADO.NET Entity Framework

Entity Frameworkを使ったデータ接続で、開発効率は上がるのか。


利点
1.リレーショナルデータモデルとオブジェクトデータモデルのギャップを解消できる(※)
  RDBのデータ構造を考慮せずにコーディングが出来る。
2. LINQ to Entitiesを使えば、LINQの利点を享受できる。
  インテリセンス、コンパイル時の構文チェックなど。

欠点
1.パフォーマンス問題。
 Entity Data Modelのマッピングにかかる時間とかは実感できる程度なんでしょうか。
 LINQはForeachでの一行単位の読み出しなので、LINQ to Entitiesならさらに遅くなります。
2.Entity Data Modelウィザードが結構面倒くさいイメージ
 実際に使ってみた感想です、今後のVSでの便利機能の拡張や慣れですかね。
3.DataSetとかと同様に更新系が微妙。
 ストアドやNative SQLの実行でフォローできるが、Native SQLなんかを使いだしたら本末転倒。


利点1に記載したことが、この技術を利用する目的とも言えるけど、何年も開発をやってて意識したことがなかった。LINQの利点はシンプルでわかりやすいが、Entity frameworkの利点ってのは???なところから入っている。
ギャップって言われればギャップだけど、それを実装するのが業務アプリかなくらいな勢いで。

テーブル同士の結合でごちゃごちゃしたクエリ文を業務コード内に書くのは、なくせるものならなくしたい。
実際そういうのがイヤで、あんまり複雑なものはあらかじめビューを定義するわけやし。
ごちゃごちゃ書いてたものをキレイさっぱりなくすぜ、その代わりにEntity Data Modelウィザードを使えやって話。どうも直感的に使いこなせないような、開発効率あがるんでしょうか?的な気持ちになる。
数年前から参照系で採用して様子見っていう答えをちらほら見ますが、実際にパフォーマンスで問題が出てないかなど気になるところです。


※一般的に「インピーダンスミスマッチ問題」という。

LINQ クエリ式

資料
LINQ クエリ式 (C# プログラミング ガイド)

ネットで調べつつ、LINQ to SQL(C#)とSQL文(SQL Server)を書き比べてみた。
データベースはNorthWind(SQLServerのサンプルデータベース)を適当に使って試したん。
とりあえずテーブル同士の結合が面倒。
あと、LINQが生成するSQLがちょっと奇怪に感じたね・・・。
サブクエリはどうなるとか考え出すと頭が痛くなりそうではあるの。
それとLinqPad便利だね


1.As
Select OrderID As ID From Orders

from x in Orders
select new {ID = x.OrderID}


2. Where
Select * From Products Where UnitPrice >= 50 and UnitPrice <= 100

from x in Products
where x.UnitPrice >= 50 && x.UnitPrice <= 100
select new {x}


3.Group By
Select CustomerID,Count(*) As Cnt From Orders Group By CustomerID

from x in Orders
group x by x.CustomerID into grp
select new {CustomerID=grp.Key, cnt=grp.Count()}


4.Having ??
Select CustomerID,Count(*) As Cnt From Orders Group By CustomerID Having Count(*) > 10

from x in Orders
group x by x.CustomerID into grp
where grp.Count() > 10
select new {CustomerID=grp.Key, cnt=grp.Count()}


5.単純結合
Select Products.ProductID,Products.ProductName,Categories.CategoryName From Products,Categories

from x in Products
from y in Categories
select new {x.ProductID,x.ProductName,y.CategoryName}



6.内部結合
Select Products.ProductID,Products.ProductName,Categories.CategoryName From Products
Inner Join Categories On Products.CategoryID = Categories.CategoryID

from x in Products
join y in Categories on x.CategoryID equals y.CategoryID into Grp from z in Grp
select new {x.ProductID,x.ProductName,z.CategoryName}



7.左外部結合
Select Products.ProductID,Products.ProductName,Categories.CategoryName From Products
Left Join Categories On Products.CategoryID = Categories.CategoryID

from x in Products
join y in Categories on x.CategoryID equals y.CategoryID into Grp from z in Grp.DefaultIfEmpty()
select new {x.ProductID,x.ProductName,z.CategoryName}


8.左外部結合 NULL除外
Select Products.ProductID,Products.ProductName,Categories.CategoryName From Products
Left Join Categories On Products.CategoryID = Categories.CategoryID
Where Categories.CategoryID Is Not Null

from x in Products
join y in Categories on x.CategoryID equals y.CategoryID into Grp from z in Grp.DefaultIfEmpty()
where z.CategoryID != null
select new {x.ProductID,x.ProductName,z.CategoryName}