2009年11月11日 星期三

C++ TR1 Function實做簡易版

C++ Technical Report 1 (TR1) 是 C++ Standard Template Library的追加項目。TR1自己並非標準,他是一份草稿文件。然而他所提出的項目很有可能成為下次的官方標準。

其中最引人注目的就是Smart Pointer、Polymorphic function wrapper以及Function Object Binder三項。這三項主要都是來自boost這個Library。此次介紹Polymorphic function wrapper,也就是boost::function。

由於C++ 0x才支援Variadic templates語法,想支援不定參數,變成C++98最大的困難點,不同的Library有不同的做法,Loki是使用TypeList技巧。這邊用的只是簡單的Marco。

Function.h

#ifndef _Function_H_
#define _Function_H_

#define Parameters 0
#define FUNCTION_PARAMS // T1 p1, T2 p2
#define TEMPLATE_PARAMS // typename T1, typename T2
#define TEMPLATE_ARGS //T1
#define FUNCTION_ARGS // p1, p2
#include "functor.h"

#undef Parameters
#undef FUNCTION_PARAMS
#undef TEMPLATE_PARAMS
#undef TEMPLATE_ARGS
#undef FUNCTION_ARGS


#define Parameters 1
#define FUNCTION_PARAMS T1 p1
#define TEMPLATE_PARAMS typename T1
#define TEMPLATE_ARGS T1
#define FUNCTION_ARGS p1
#include "functor.h"

#undef Parameters
#undef FUNCTION_PARAMS
#undef TEMPLATE_PARAMS
#undef TEMPLATE_ARGS
#undef FUNCTION_ARGS

#endif


目前為止,可以吃下零至五個參數,需要的話可繼續擴充。看起來沒什麼技巧可言,重複定義Marco,然後重複include同一個檔案,而所有的奧妙都在底下。



Functor.h



#if Parameters == 0
#define COMMA
#else
#define COMMA ,
#endif

#define Concate(X, Y) _Concate(X, Y)
#define _Concate(X, Y) X##Y

template <typename> class Function;

template <typename R COMMA TEMPLATE_PARAMS>
class Concate(FunctionBase, Parameters)
{
public:
virtual ~Concate(FunctionBase, Parameters)() {}
virtual R operator()(FUNCTION_PARAMS) = 0;
};
template <typename R COMMA TEMPLATE_PARAMS, typename TFunctor>
class Concate(StaticFunctionImpl, Parameters) :
public Concate(FunctionBase, Parameters)<R COMMA TEMPLATE_ARGS>
{
TFunctor m_Func;
public:
Concate(StaticFunctionImpl, Parameters)(TFunctor rFunc) : m_Func(rFunc) {}
R operator()(FUNCTION_PARAMS) { return m_Func(FUNCTION_ARGS); }
};
template <typename R COMMA TEMPLATE_PARAMS, typename T>
class Concate(MemberFunctionImpl, Parameters) :
public Concate(FunctionBase, Parameters)<R COMMA TEMPLATE_ARGS>
{
T *m_obj;
typedef R (T::*MemberFunction)(FUNCTION_PARAMS);
typedef R (T::*MemberFunctionConst)(FUNCTION_PARAMS) const;
union
{
MemberFunction m_Func;
MemberFunctionConst m_Func2;
};
public:
Concate(MemberFunctionImpl, Parameters)(T *pobj, MemberFunction pFunc) :
m_obj(pobj), m_Func(pFunc) {}
Concate(MemberFunctionImpl, Parameters)(T *pobj, MemberFunctionConst pFunc) :
m_obj(pobj), m_Func2(pFunc) {}
R operator()(FUNCTION_PARAMS) { return (m_obj->*m_Func)(FUNCTION_ARGS); }
R operator()(FUNCTION_PARAMS) const { return (m_obj->*m_Func2)(FUNCTION_ARGS); }
};
template <typename R COMMA TEMPLATE_PARAMS>
class Function<R (TEMPLATE_ARGS)>
{
Concate(FunctionBase, Parameters)<R COMMA TEMPLATE_ARGS> *m_pImpl;
void _release()
{
if (m_pImpl)
{
delete m_pImpl;
m_pImpl = NULL;
}
}
public:
Function() : m_pImpl(NULL) {}
template <typename TFunctor>
Function(TFunctor pFunc) :
m_pImpl(new Concate(StaticFunctionImpl, Parameters)<R COMMA TEMPLATE_ARGS, TFunctor>(pFunc)) {}
template <typename T COMMA TEMPLATE_PARAMS>
Function(T *obj, R (T::*pFunc)(FUNCTION_PARAMS)) :
m_pImpl(new Concate(MemberFunctionImpl, Parameters)<R COMMA TEMPLATE_ARGS, T>(obj, pFunc)) {}
template <typename T COMMA TEMPLATE_PARAMS>
Function(T *obj, R (T::*pFunc)(FUNCTION_PARAMS) const) :
m_pImpl(new Concate(MemberFunctionImpl, Parameters)<R COMMA TEMPLATE_ARGS, T>(obj, pFunc)) {}
~Function() { _release(); }
R operator()(FUNCTION_PARAMS) { return (*m_pImpl)(FUNCTION_ARGS); }
R operator()(FUNCTION_PARAMS) const { return (*m_pImpl)(FUNCTION_ARGS); }
};

#undef Concate
#undef COMMA




用到的技巧嘛,大概就是Template Partial Specialization



Demo Program



#include <iostream>
#include "function.h"
void print_1()
{
std::cout << 1 << std::endl;
}
struct print_vplus3
{
void operator()(int v)
{
std::cout << v + 3 << std::endl;
}
};

int main()
{
Function<void ()> func(print_1);
func();
print_vplus3 b;
Function<void (int)> func3(b);
func3(1);
}


雖然不鼓勵自己重新打造輪胎,不過也只有動手做過一次,才能熟練技巧。

2009年11月9日 星期一

帝國毀滅

雖然電影本身就夠精彩了,不過鄉民改編版的話題性絕不在原版之下。

以下節錄流傳已久的鄉民版本

兇盒三六零版

種花電信版

騜版

其中創意無限的帝國毀滅三部曲一定要提一下

2009年11月8日 星期日

Fate/unlimited codes セイバー・リリィ 全て遠き理想郷

    Fate/unkimited codes 是由 Capcom 在 2008 年根據 Fate/Stay Night 所改編的大型格鬥電玩。 因為原作的受歡迎程度所以在 2009 年 9 月由 GoodSmile 公司推出了河原隆幸所設計的 1/7 セイバー・リリィ 全て遠き理想郷。透過了兩位好友的協助,也終於在10月的時後將這今年受人注目的 PVC入手,但是因為種種的原因所以拖到現在才開箱。(笑)

   

是的,這天也是 RX-93-v2 重生的一天,伴隨著重生他在 Amazon 遇見了傳說中純白的騎士姬 セイバー

PICT0934

 

那高雅的圖像深深的吸引著他,讓他無法離去。這就像是看到了心中的女神一樣。

PICT0944

 

仔細的觀看了說明之後,他知道他已經不能沒有セイバー,那高雅的造型已經將他擊倒並且就這樣癡癡的看著セイバー。

PICT0943

 

在掙扎了許久之後,他知道他必須將這囚禁的盒子打開,哪怕這是潘朵拉的盒子也無所懼。隨著光劍的揮下セイバー即將被解放。

PICT0939

 

內盒拿出後,還有一層包膜保護。腰部,手部和腳部都用著套有膠套的鐵絲捆著。對於 PVC 的保護作的誠意十足。(這時候當然趕緊找工具解放セイバー啊)

PICT0951

 

底座部分作成黑白的大理石狀,在右下角刻著這作品名稱,金屬質感的上漆方法讓整個底座充滿華麗。

PICT0955 PICT0954

 

表情和眼神中讓人感覺柔中帶剛,完全表現出セイバー在作品中的個性。頭髮線條刻紋和髮鬢所產生的飄逸感也無可挑剔。

PICT0960

 

馬尾,セイバー的另一特色,髮絲刻紋分明飄逸自然。

PICT0969

 

鎧甲上色和墨線處理精緻,金屬光澤的半消光處理得宜,讓整個鎧甲的金屬感完全重現。

PICT1009

 

裙子作成三層以白色為主色系搭配銀色處理,最上面的蕾絲的透明度大約 40%,中間銀白香間的襯裙和底層的白色底裙制作充滿了立體感也表現出了如百合綻放的感覺。

PICT1006 

 

這作品附有兩把劍和一個劍鞘。看過作品的一定知道,其實セイバー就是亞瑟王。所以傳說的 勝利すべき黄金の剣、Caliburn 也是一定要有的,連刻紋和文字都重現。

PICT1013

另一把是 約束された勝利の剣、Excalibur

PICT1016

 

劍鞘 全て遠き理想郷、Avalon。也就是這次的副標題。

PICT1019

 

當然,看完配件和服裝後皮膚的處理也是要觀察一番,背部的肌肉紋路和骨架表現也是自然。

PICT1023

 

腋下的處理更是無可話說,皮膚光澤滑潤

PICT1024

 

胸部當然更不可放過,外鎧甲內藏著誘人的可愛雙峰,雖然有灌水嫌疑但是卻充滿著吸引人的魅力。

PICT1028

 

站立在台座上的感覺就是一整個完美!!! 這的確是歷代セイバー裡面的最高傑作!!

PICT0999

 

    最後要感謝Mandyliaogreenfinger55的大方贈送和 RX-93-v2 的客串演出,沒有他們就沒有這開箱文啊。(菸)

 

    等一下!!!! 很像還有重要的東西還沒介紹!!  (推)

PICT1000

 

以下是大人時間,這裙間的蕾絲吊帶襪邊緣透明的設計和白中帶粉的膚色處理也是絕景,吊帶還穿透過小褲連上腰間讓人敬佩設計的細膩。

PICT0996

 

裙間的大全開讓小褲的設計也能充分表現,皺摺處理也細心。士郎看不到的就在這次完全公開吧!感謝ケロロ軍曹帶來的福利!!

PICT0994

2009年11月3日 星期二

JAうご 美少女イラスト パッケージ商品 購買教學

為了促進台日友好以及二國經濟發展, 也為了各位紳士的福利
特地教各位如何訂購 JAうご 美少女イラスト パッケージ商品 !!

官方網站
JAうご 美少女イラスト パッケージ商品

首先要準備的東西

1. 日本商品轉送服務的資料, 不知道那裡有的人請看教主那一篇介紹!

2. 信用卡一張 信用卡是購買日本商品的付款方式中最便利的, 現在不管是VISA,MASTER,JCB都很好用

***** 以下開始教學 *****

今年度的新米上市了


看到有注文字樣的按下去


就可以選擇類型跟數量 選完後一樣按後面的注文按鈕放入購物車


購物車資料 準備結帳了


準備好你的轉送服務資料 開始填寫!
記得選對正確的付款方式




訂單的最後確認


確認後請打勾, 再按下按鈕, 訂單就成立!!


如何?是不是很簡單~

沒有意外的話東西在一星期內會送至你所填寫的地址
不同的轉送服務, 商品寄回台灣的速度也不同

另外要注意運費 一包米2kg 有的運費會收比較貴 要切記~

2009年11月2日 星期一

日本海外轉運服務比較表

為了廣大的(?)紳士們,特製作本表以為紀錄參考之用:
轉運服務商/評比項目費用運送效率付款方便度推薦意見
Tenso.com3kg以下490¥、3kg~5kg間980¥(此為優惠價格,未來可能會漲價)較慢使用Paypal付款的話,有個專屬的付款頁面,點下去即可到Paypal付款好像沒啥好說的......跟底下的幾個比的話,不過有中文介面算是還不錯啦!另外,他們的倉庫在東京......
BaggageFromWorld5kg以下1000¥、5kg~10kg間2000¥較快使用Paypal付款的話,需要進Paypal後台點選付款,把指定的收款人信箱及金額填上去;且使用此一付款方式還需要多付總費用的5%(信用卡也是要5%)效率很快,確認付款後,大概當天都會寄出(除了假日以外)但是那額外5%的費用實在是......
Jshoopers0手續費,且EMS費用有95%的優惠--還沒用過......
kaigai-tenso5kg以下980¥、5kg~10kg間1700¥--還沒用過......
以上所指的費用僅包含了該網站服務的基本費用,其餘如運費或該網站可選用的加值服務費等並不包含在其中。


2009年11月1日 星期日

昨是今非

去年
戴遐齡:「鯨、龍解散是契機,可以讓其他四隊補強戰力,明年球季應該會更有看頭。」

今年
體委會主委戴遐齡今天早上宣示絕對保住中華職棒,全力留住兄弟象隊

簽賭前

中華職棒兄弟象隊領隊洪瑞河,昨天對檢調未遵守「偵查不公開」表示不滿,他也沈痛指
出,若真有象隊球員涉案,經營球隊也沒有意義了!

簽賭後

「兄弟隊要解散,一句話就可以不玩了,但我們身上背負著社會責任,背負著這麼多家庭的生計,影響的層面很廣,不能輕言解散。」

去年

兄弟象領隊洪瑞河昨天表示,大家打棒球這麼多年了,球員若有問題,會看不出來嗎?

今年

直到28日象隊球員被約談時,洪瑞河還是相信球員是清白的,但在吳保賢、王勁力29日清晨認罪之後,洪瑞河相信球員的心破碎了。

去年

洪瑞河說,球員打假球不能全靠檢調單位,主要是看各球團有沒有魄力。他表示,其實打假球爆發之前,都有蛛絲馬跡可尋,只要球團仔細查訪,一定可以揪出害群之馬。

今年

根據中華職棒規章,球員若涉案交保就要被禁賽。兄弟象近日有多名球員涉打假球遭約談後交保。洪瑞河今天在兄弟象球團辦公室接受媒體訪問時表示,經了解狀況後,他認為遭約談後交保的球員買嘉瑞與黃正偉是無辜的。他並批評檢察官「養案」的心態可議。

ドリームクラブボーカルアルバム「PURE SONGS @DREAM C CLUB」

ドリームクラブボーカルアルバム「PURE SONGS @DREAM C CLUB」

Dream C Club,俗稱的酒店大師 XD

從一開始遊戲公佈的時候我就非常關心了,甚至想要為了這遊戲買一台XBOX 360!不過人總是要向現實低頭。所以只好買原聲帶來聽了。

這張CD收錄了女角色在遊戲中所演唱的十首個人主打歌及一首合唱主題曲。相信大家在Youtube上面也都看過這十首的PV,這張CD的特色就是十首歌的曲風都不一樣!不管你的口味是什麼應該都能滿足你。

這十一首都是一般版,遊戲中當然還有酒醉版~真希望也出一張酒醉版的啊。
個人比較推的是小雪跟理保的二首歌~相當酥服~

曲目


封面


背面


CD








內頁附上了十一首歌的歌詞+演唱者的圖


***** 十首歌的PV *****

亜麻音 『夢見るCagedBird』


みお 『半分はママのシナリオ』


雪 『Oh! Mama Go To』


玲香 『Ride on Time』


魅杏 『素直になれない』


るい 『時間(とき)のカケラ』


双葉理保 『絶対アイドル宣言』


ナオ 『Glory Days』


魔璃 『横浜ラプソディー』


アイリ 『コイヲシテイマス』



***** 網路訂購連結 *****
1. Play-asia

2. 95樂府
 

我們搬家了

新部落格在http://b-plurkers.com/