2013/05/30

20130530-程式-Cache API 的使用範例

記錄一下今天所寫的內容,
今天弄到 八點多,先寄出一個概念出來,看這做法可不可行?

這樣的過程是很有意思的,下班時,與Nick討論相關的程式做法,
怎麼做比較好?以及 先前開會結束後,客戶 點的幾個點,都還蠻有意思的。

這樣的做法,到底好不好?看客戶那邊的反應了!

程式碼內容:

 public interface ICacheModel : IModel
    {

    }
    public class MyDBModel : ICacheModel
    {
        public string TypeKey { get; set; }
        public string DataKey { get; set; }
        public string DataValue { get; set; }
    }
    public class MySample
    {
        public void Sample()
        {
            //到時AP人員的使用方式
            MyDBModel result = CacheDataProvider.Get<MyDBModel>(new { TypeKey = "CC", DataKey = "DD" });
        }
    }
    public static class CacheDataProvider
    {
        /// <summary>取得指定型別的Cache資料</summary>
        /// <typeparam name="TCachedModel">取得指定型別</typeparam>
        /// <param name="modelKeyData">該型別的Key物件</param>
        /// <returns>該筆型別資料</returns>
        public static TCachedModel Get<TCachedModel>(object modelKeyData) where TCachedModel : ICacheModel, new()
        {
            //資料源範例(from cache)
            Dictionary<object, object> datasource = new Dictionary<object, object>();
            datasource.Add(new { TypeKey = "AA", DataKey = "AA" }, new TCachedModel());
            datasource.Add(new { TypeKey = "BB", DataKey = "BB" }, new TCachedModel());
            datasource.Add(new { TypeKey = "CC", DataKey = "CC" }, new TCachedModel());
            datasource.Add(new { TypeKey = "DD", DataKey = "DD" }, new TCachedModel());
            //取得資料
            var result = datasource[modelKeyData];
            return (TCachedModel)result;
        }
   }


=================

一開始的方向,
我是打算,他傳 Model 的Key 進來後,我把它的資料,以Dictionary的方式回傳。
變成單一筆DataModel,我想把它轉為 Dictionary List 的方式回傳出去。
想說,好處是 可以由 Dictionary [key]來判斷它的資料欄位存不存在???

但,這在使用上,會較難用。

======================
針對 Cache 得DBModel ,藉由 Interface 來做規範,

我那時想到另一個做法,透過 Enum 來定義,那幾個Table 有存入Cache ,
ex:public enum CacheTable {
     officer,
     sa_insurance,
}
然後在用時,就仿 資料授權 一樣,
CacheTable.officer.GetCache(key)  之類的寫法。

但這樣的想法被推翻了。 這樣會複雜些  (????好像是這樣的理由???)

而Interface 來規範 那幾個DBModel 有加入Cache 。
==============================

另一個主題: 排序& Search 。
針對 List Search  VS  Dictionary Search  那個較快?  (我上網還沒認真找資料)
我知道 List 的Where Search 是重頭開始查到尾。
而以為 Dictionary 也是 (只是它有key index 之類的)
但 Dictionary 並不是這樣
就被客戶 噹了一下

Dictionary 實際運作,也還沒有弄清楚,但以key index 找,應是比List Model 來的快。
所以,存入Cache 的方法,有了 「Dictionary( Key,DBModel)」的想法。

而中間 與Nick 、Wesley 也討論了 「Quick Sort」、「Binary Search」的方式。
(這是大四的演算法XDD~~當初真是不認真!)

而 Quick Sort 的方式,以下有一張「圖」介紹:
http://snipd.net/quicksort-in-c

原來上圖,那個紅棒一直在「相對右測」是使用 In-place 的方式。
(把基準點都先放置在最右測)

演算法介紹:
http://goo.gl/t9XSE
中文維基:http://goo.gl/yMNIO

但後來我們都想想,若是要「Search」,有必要先「Sort] 嗎???
因為 Sort 已不知把整個資料「掃描」過多少次了。

===========================
在來就是 Dictionary的部份,它的Key 可以是個object 嗎??
而此 object 是以 「匿名型別 Anonymous Type 」(new {col1=1,col2=2})時,是否可行??
就寫了簡單的測試:


     Dictionary<object, object> datasource = new Dictionary<object, object>();
            datasource.Add(new { id = 1, id2 = 2 }, new { Data1 = 1 });
            datasource.Add(new { id = 3, id2 = 4 }, new { Data3 = 3 });
            datasource.Add(new { id = 5, id2 = 6 }, new { Data5 = 6 });
            datasource.Add(new { myid=1 }, new { Data7 = 7 });

            dynamic result = datasource[new { myid = 1 }];
            var aa = result.Data7;



=====================================

所以,這資料是可行的。

===============================
下一步計畫:

這部份也這樣靈光乍現,在回家的路上想了這些。

1. 這是User取得Cache 的方式,那若該筆不存在Cache 時,就要到DB把該筆取出,放至Cache

而這部份,可以用 一個Function 打發所有的DBModel 。
(原因:在DBModel上都有描述Table資料,且用底層Framework,可以直接用Model Select)

程式概想:

{
      //回傳要存入Cache的方
}

 
 public Dictionary <object,object> GetFromDB(object modelKeyData)








2013/05/21

20130519-婚禮-張小毅與盈真素食婚禮(in樹林)+買休閒鞋+壁畫


(小毅與盈真的婚禮)


認識小毅他們,因為雨柔,而在今年的泰雅馬也與他們所創的「交大練跑團」有更進一步的接觸。
超馬界神人級的人物,就這樣認識了^^
------
他們的婚禮在樹林,而過去的方式,就全交由雨柔幫忙處理啦^^~~~
(再加上這禮拜瘋狂加班@@~~真的是無力Follow 他們的訊息)

--------------
當天早上,我看早就起床,而也很特別的跑去游泳一次,
回來吃個早餐,又小睡一下,再小出門去探了碧山路的小徑(結果沒有找到@@)
回來就上上網看看資訊。
弄到快十點,才驚覺與他們約的時間有些來不急 ( 10點20在松山火車站)

雨柔為了這個就超爆氣的 @@~~~(好在我的隱形眼鏡帶得很快!)

最後也搭上了那班火車,而雨柔和阿蕉約的時間我們也算準時到達~~
一切在匆忙之下都順利地完成^^

雨柔&阿蕉~~~不知在聊些什麼XDDD



阿蕉是個登山咖,我對她們那登山行程很有興趣~~之後再跟看看一、二天的行程。

到了樹林,所有人都很準時的到達 (而這時間,對婚禮開始時間~~實在是太早啦!XD)

後來由,馥薇開車載我們過去婚禮會場。
(在會場的倒車入庫 一次到位~~厲害!)
===============

澎派組~~阿蕉 、舒含、馥薇、雨柔


小毅的抽獎箱~~甜蜜猜猜樂!+ 小毅的神人獎盃
  



舒含:「那一天,我們一起關家的日子」


聊天~可愛的阿蕉




今日新郎官 + 今日的攝影手 (林鐵仁)
   



澎派桌


遇到嚴大哥及大嫂,因小毅是大同山長跑的,想說應該會遇到他們(而政龍他去比賽就沒有參加這婚禮)


小毅第1段的出場



全素料理1~生魚片 / 第2道~素盤 / 第3道
      


杜大哥~~~中途他與舒含對話「刺瞎你的狗眼」這段超好笑(忘了前後內容了)



第6道~~這吃法看特別,口感也很清爽 / 用來包的
  


小毅中段出場的服裝~~~大同山的跑步服 ~~這真是太神了!!
非常另類的新郎穿法^^



這一段所發給大家的禮品


==========================================================
再來就是捧花時間:

他們是男女版分開,沒有一同辦,
而抽捧花的,全是我們這一桌的 ~~且每一位都有她們「封號」XDDD
大概他們交大環校團是婚禮中最年輕的一群
其他的人都是大哥、大姊、前輩之類的。




最後由馥薇 抽中這一個捧花^^



再來換男生抽 「花椰菜」~~~~我也上台揍揍熱鬧

我拿到了參加禮~~巧克力


最後花椰菜由百K神人取得




N大 與他女朋友


N大他們比較晚到,因為上午去碧山嚴比越野跑,
而聽聽他們說這比賽的狀況

這一個完賽獎牌是非常吸引我的地方,非常的「時尚」!
下次我再去玩玩這比賽


婚禮最後的歡送賓客~~


=================================
結束小毅的婚禮後,因為雨柔的手機,昨天跑步時掉在另一個跑友的包包裡,
所以,要到中山捷運站拿。

而 舒含她們要到善導寺特賣會,雨柔也想過去那看看。
就這樣搭她們的便車到台北。

選鞋一陣子,原本沒有打算要買的,看到一雙是「2折」的,就這樣把它買下去啦



再來是去搭捷運,而因雨柔進去看麵包店,讓我發現一個很美的壁畫。




非常美的一幅畫









(THE END)

2013/05/18

20130505-2013台北101國際登高賽-退1分鐘但有完賽

(已是過了兩個禮拜了,這一篇對我是重要,所以一定要寫完它)

20130518-心情-有時間空下來卻不是做該做的事

今天星期六,一個沒有什麼事的日子,
雨柔今天過去新竹跑步,而我,就一個人在宿舍。

早上睡到九點,醒了過來,
而該做的事是:
1. 捉 雜誌PDF,試試Padfone讀起來的感覺。 (有做)
2. 整理所有的相片記錄  (先放在對應位置而已)
3. 寫日記!!(實在是太多太多的生活沒有記錄了)

現在是 下午三點  ,
而我,做的事卻是少之又少,

時間就在玩 Candy Crush ,無聊上上網,看看 Yahoo 新聞,看看PTT....盡是些無聊事。
而時間,就這樣過了!!!

沒有雨柔的時間,應該更好好的利用,做做自已的事才對!

但~~~~唉~~~~~~~

「自制力好差,硬是要把自已拉下來」

難道要有人壓在旁邊看著你做事情嗎??
三十歲了! 時間早該是自已控制的了!


現在,把剩下的時間,好好利用:
列出我要寫的文章:
(先把所有的相片放至對應的位置)

■ 101 登高賽。
■ 買了新手機 Padfone 記錄。 
■ 礁溪路跑賽-遇到政龍,雨柔同行
■ 家裡試玩新手機&看花園

先把這幾個文章寫一寫

-------------------
現在的腳,並沒有因為我一直休息而有改善。

這是坐太久所致的嗎??

該 一點一滴的 累積 運動也是要做的。

當初滿心期待拿到新手機、結束101 後,要開始過旅行生活,
看看不同的事,接觸不同的東西。

現在呢??

還是有機會。
再加油了!!















2013/05/08

20130508-比價-申辦手機門號的記錄(2)

記一下這部份的狀況。

今天是 「第二回合」的去打聽情報:

我要的手機是「Padfone Infinity」32GB +平板 (本來想買64GB,但想想~~用得到這麼多嗎?要多2000元)

再來就是看方案了:


=================
遠傳門市-南京東路三段那間
=================

今天會想去問Padfone資訊,是想說,在公司旁,且 方案又出來了。
再加上經過昨天 打聽的狀況,覺得 NP 到別家,優惠可以考慮。
就下班去打聽打聽:

[Padfone Infinity 灰 32GB + 平板]
正規費用:遠傳598+775(網內免費)[月租1373],手機 6990元 (平版+7000元)
優惠結論是:
遠傳598+775(網內免費),手機5990,違約金直接給3000元。
所以全部費用= 5990 + 7000 + 12000(預繳) = 24900 元。

有與昨天不一樣的優惠是:
1. 手機可以折 $1000元。
2. 違約金直接可以送到$3000元。

感覺,她給我感覺較ok,不會太「業務」,這優惠當下還算是可以接受的。
另外,也再請教她 另一個「NP+上網吃到飽」方案:
199(398半價)+499 = 698 (前5分鐘免費)
299(598半價)+499 = 798 (前10分鐘免費)

這與昨天問的相同,但就是 遠傳門市,我可以不要手機   (昨天問的是可以折現)

另外,原來在當天繳完錢後,就可以全部先拿到手 (手機 + 平版)
我以為要等3天  (原來這3天是他們作業時間)

嗯,這一連串,昨天有遇到不老實的,也有遇到有優惠的~~~
一開始不熟的,到現在有些習慣這樣的「環境」

也算是個學習吧。

再來,我明天晚上就是去處理 中華電信的:
1.  原電話解約
2. 申請新電話不綁約。

嗯~~~~那我決定要在遠傳門市辦了嗎????

====================
後來又在網路上看到這支的優惠內容,實在是好亂呀!!





上面這 $2300 的,離我這兒比較近的點,也許可以去問看看:



該說是行情很亂呢??還是說這利潤/可談空間 太大呢??
這些價格若是真的,那也和我在門市所談的差太多了吧!!@@

=========================
20130509補充上述:
果然,這麼漂亮的手機價背後,其實是"相同的"
$2300方案:
1. 手機違約金自已出。(遠傳出$3000元)
2. 現金價,不可以刷卡。(每1萬元多$300元費用)
3. 它預繳要$16000多。

所以,沒便宜到多少,只是把 一些費用 "透明化"  (只是它不會明講罷了)


(THE END )