2011年9月30日 星期五

IQ Light (Danish Design Award 2001)


如意燈是啥?
利用以圖找圖的搜尋引擎才找到他原來的名字iq light


官網
http://www.iqlight.com/
幾何原理介紹與組裝方法...等


如何組裝
http://www.iqlight.com/iqhowto2.htm
http://www.iqlight.com/iqhowto3.htm

如何放燈泡進去
http://www.iqlight.com/iqhowto4.htm


零件:



各種組法:

官網說明書
http://www.minuevohogar.cl/momentaneo/iq_light_1.jpg
http://www.minuevohogar.cl/momentaneo/iq_light_2.jpg
http://1.bp.blogspot.com/-F4v11qrYtl0/TVvWf9G2OEI/AAAAAAAAApE/_x9FC-i-yHE/s1600/13.jpg
心型
http://www.pyro-shop24.de/WebRoot/Store/Shops/61016434/4C1B/66D4/A231/13AA/1379/C0A8/28BE/C176/275_6_Jigsaw_Lamp_Shade___Puzzle_Lamp_11___Red_Heart_ms.jpg
圓柱形
http://f10.wretch.yimg.com/mimomimo/6/1402650704.jpg?5AyM2GNDcBawCjARloZrAr.11UWbIaUYyXHJig9vbV8wdOMW9m1aIRcs2Vw.3Iiskw--
星型
http://www.craftycrafty.tv/assets_c/2009/03/iqlightreplica-thumb-200x209-82697.jpg

各式組件:

用橢圓形組
http://www.flickr.com/photos/31375127@N07/3757533122/in/set-72157621834564772/
http://www.flickr.com/photos/yoshinobu_miyamoto/3757534282/in/set-72157621834564772

用撲克牌組
http://www.decoesfera.com/iluminacion/curiosas-lamparas-hechas-con-naipes

有稜角
http://www.flickr.com/photos/31375127@N07/3852173948/in/photostream
http://www.flickr.com/photos/yoshinobu_miyamoto/3851442667/in/photostream

勾住的地方變肥
http://www.flickr.com/photos/yoshinobu_miyamoto/3852174202/in/photostream/

長條

平面透視不是萬能

错误的透视原理
http://tech.ddvip.com/2008-12/122838426597480.html

我原以為只是胡說
但仔細看看其實有些道理

就幾何學來看,平面透視是正確的
但以人眼來看,平面透視確實有他奇怪的地方
當角度越大(超廣角),平面透視所呈現的畫面會越奇怪

混疊

混疊
http://zh.wikipedia.org/wiki/%E6%B7%B7%E7%96%8A
奈奎斯特頻率
http://zh.wikipedia.org/wiki/%E5%A5%88%E5%A5%8E%E6%96%AF%E7%89%B9%E9%A2%91%E7%8E%87
取樣定理
http://zh.wikipedia.org/wiki/%E9%87%87%E6%A0%B7%E5%AE%9A%E7%90%86
電子濾波器
http://zh.wikipedia.org/wiki/%E6%BB%A4%E6%B3%A2

數位紅外線攝影簡介

數位紅外線攝影簡介
http://article.dcview.com/newreadarticle.php?type=7&id=975

http://www.dcview.com.tw/photoclass/infrared/page_01.htm

http://tw.myblog.yahoo.com/owenniu-owenniu/article?mid=479

紅外線 攝影創作主題:夢想殿堂 中正大學

紅外線 攝影創作主題:夢想殿堂 中正大學
http://t17.techbang.com.tw/topics/996-infrared-photography-theme-the-dream-palace-of-national-chung-cheng-university

CSIE Communications

CSIE Communications
http://csiecomm.blogspot.com/

2011年9月28日 星期三

Fortran Filename extension

http://www.ats.ucla.edu/clusters/common/computing/compilers.htm

Fortran 90/Fortran 77 Commands associated with Compilers

CompilerSerial
* fileName extension, not command used, determines language version (can be changed by command flags)
Parallel
* See the MPI doc.
CommandsFortran 90 fileName extensionsFixed Format fileName extensionsFortran 90Fortran 77
Intelifort.f90 (.F90 preprocessed).f, .for, .ftn (.F, .FOR, .FTN, .FPP preprocessed)mpif90mpf77
GNUgfortran.f90 (.F90 preprocessed).f, .for, .ftn


http://software.intel.com/sites/products/documentation/hpc/compilerpro/en-us/fortran/lin/compiler_f/bldaps_for/common/bldaps_under_inpext.htm
Filename
Interpretation
Action


filename.f
filename.for
filename.ftn
filename.i
Fortran fixed-form source
Compiled by the Intel® Fortran compiler.
filename.fpp
and, on Linux, filenames with the following uppercase extensions: .FPP.F,.FOR.FTN
Fortran fixed-form source
Automatically preprocessed by the Intel Fortran preprocessor fpp; then compiled by the Intel Fortran compiler.
filename.f90
filename.i90
Fortran free-form source
Compiled by the Intel Fortran compiler.
filename.F90 (Linux OS and Mac OS X)
Fortran free-form source
Automatically preprocessed by the Intel Fortran preprocessor fpp; then compiled by the Intel Fortran compiler.


Filename ExtensionsSource Form/Preprocessing
.f, .fix, .for, .fpp, .ftn
.F, .F77, .FIX, .FOR, .FTN, .FPP, .fpp
Fixed source form
.f08, .f03, .f95, .f90Free source form with INCLUDE lines
.F08, .F03, .F95, .F90Free source form with C preprocessor directives

2011年9月19日 星期一

Re: [問題] 記憶體使用2的倍數效能低落

作者: littleshan (我要加入劍道社!) 看板: C_and_CPP
標題: Re: [問題] 記憶體使用2的倍數效能低落
時間: Thu Aug 25 12:20:54 2011

※ 引述《xxxx9659 (嘎嘎嘎嘎嘎)》之銘言:
: 當我每次位移 2 的次方倍數來存取記憶體時 效能會慢兩倍以上
: 在不同的電腦 不同的 OS 做測試 好像都有這現象
: 難道 2 的倍數很容易 cache miss ?
: 看程式碼比較好解釋 http://codepad.org/W81Vso04
: 我用直覺猜 2 的倍數應該比其他還快 解果剛好相反 整個改觀
: 這樣讓我不知道什麼地方用該用 2 的倍數 什麼地方不要用
: 有人對這種奇特現象有研究嗎@@
以下是我在一台 core-i3 的機器上
使用 gcc 4.6 x64 測試的結果:(有開 -O2)

        func(2000, 2047); 執行時間: 0.030 sec
        func(2000, 2048); 執行時間: 0.040 sec
        func(2000, 2049); 執行時間: 0.030 sec
        func(2000, 2050); 執行時間: 0.040 sec
        --
        func(2047, 2000); 執行時間: 0.030 sec
        func(2048, 2000); 執行時間: 0.060 sec
        func(2049, 2000); 執行時間: 0.030 sec
        func(2050, 2000); 執行時間: 0.040 sec

的確當 m=2048 的時候,花了比較久的時間,而且多次測試的結果均如此。

        *       *       *

要解釋這個現象,我目前想到的確是和 cache miss 有關。
cache 運作方式是這樣的 (以下是簡化許多的版本,實際運作更為複雜):

 1. 當 CPU 要取用記憶體時 (假設是某個位址 0xABCDFF00),首先它去 cache 中尋找,
    不過一開始當然 cache 中什麼都沒有,因此會直接從記憶體中讀取。

 2. 讀取到真正的資料後,為了加速之後對同一位址的存取速度,
    我們會把 0xABCDFF00 中的資料,存到 cache 中,但是要存在哪個位置呢?
    我們可不能隨便找一塊空的地方就塞進去,因為尋找 cache 中的資料也需要時間。
    所以比較好的做法是根據記憶體的位址,也就是 0xABDFF00,
    對應到 cache 中的特定位置,之後要尋找的時候就可以很快地找到資料。

 3. 最常見的做法,就是從位址中取出較低的某幾位,以我們的例子來說就是 0xFF00
    來當作我們存在 cache 中的位置。至於要取幾位,就視我們的 cache 有多大。
    以 64KB 的 cache 來說,取位址的低 16bit 剛剛好可以對應 cache 的大小。

 4. 但這會有一個問題,那就是若有兩塊記憶體,位址剛好間隔了 64K,那麼他們的
    低 16bit 會剛好相等,也就是對應到同一塊 cache 的空間。如果我們的程式同
    時存取這兩塊記憶體,因為這兩塊記憶體會互相爭奪它們在 cache 中的地位,
    將造成嚴重的 cache miss 而導致效能低落。

 5. 因此我們使用了一種折衷的方法。當我們取出位址的低 16bit,也就是 0xFF00 時,
    它對應到 cache 中的位置,並不是只有一塊空間,而是很多塊空間。當我們要在
    cache 中儲存資料時,可以在這些空間中選擇一塊使用。這麼一來,就得以解決上述
    「兩塊不同位址的記憶體對應到同一個 cache 位置」的問題,只要讓它們對應到
    同一個 cache 位置的不同空間即可。


若一個記憶體位址可以對應到 cache 中的 N 塊空間,
我們就稱這個 cache 是 N-way set associative cache。
典型的 2-way set associative cache 的結構是長這樣的:

       index        way 0             way 1
   ┌────┬──┬────┬┬──┬────┐
   │    0   │ tag│  data  ││ tag│  data  │
   ├────┼──┼────┼┼──┼────┤
   │    1   │ tag│  data  ││ tag│  data  │
   ├────┼──┼────┼┼──┼────┤
        ...     ...    ...        ...    ...

其中的 index 就是由記憶體位址所算出來的 cache 編號,
一個編號可以對應到兩塊空間,也就是 way 0 和 way 1。
而 cache 中除了會存記憶體中的資料(data)以外,還會儲存「tag」,
也就是標記這塊資料原本的記憶體位址,
我們才能知道那塊資料是否確定就是我們要的。

回到你的問題。在你的 code 中,最內層的迴圈是這麼寫的:

    for(j=0; j<n; ++j){
      mA[j*m+i] = mB[i*n+j]; //mA[第j列, 第i行] = mB[第i列, 第j行]
    }

當 m 等於 2048 的時候, mA[j*m+i] 這行每次寫入的位址
都和上一次寫入時間隔了 8K byte (假設這時int的大小為4byte)
又假設 CPU 的 L1 cache 大小為 64K
這表示 j=0,  8, 16, ... 的時候,會寫入到同一塊 cache set中,
同樣地 j=1,  9, 17, ...
以及   j=2, 10, 18, ... 這些情況都會各自寫進同一塊 cache set 中。

通常 L1 data cache 為了提高速度,associativity 不會太高 (2-way 到 8-way 之間)
因此上述的情況將導致嚴重的 write miss,
CPU 需要花時間等待 cache 中的資料寫回記憶體中,
才能繼續寫入資料。

結論:算盤本是個好物

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.15.163
推 james732:唸那本書的時候這個章節真的很頭昏...XD                  08/25 12:21
推 xxxx9659:喔喔喔 原本cache的概念很模糊 看完這篇清晰許多!!!    08/25 12:45
→ xxxx9659:所以存取時 位移不要用2的次方 但是malloc可以用2的次方   08/25 12:49
→ littleshan:malloc要看實作的方式                                 08/25 13:07

2011年9月18日 星期日

[新聞] 胡志強拜託沒用 公園1.2億委外費被刪光

標題: [新聞] 胡志強拜託沒用 公園1.2億委外費被刪光
時間: Thu Aug 11 10:16:12 2011

胡志強拜託沒用 公園1.2億委外費被刪光

http://www.libertytimes.com.tw/2011/new/aug/11/today-center9.htm

〔記者謝鳳秋/豐原報導〕市議會昨決議刪除四十一座新闢公園的綠地委託技術服務費近
一.二億元,市長胡志強說:「規劃也是專業,拜託別刪」,但議員主張,簡單的綠美化
、照顧植栽工作都要委外,亂花錢作法讓人看不下去。

議會昨進行第四次臨時會審查二十六億元追加預算,其中建設局提列一.二億元的「新闢
公園綠地委託技術服務費」,包括先期規劃費一千六百六十二萬元、設計監造費七千八百
三十七萬元、先期作業計畫費二千五百萬元。

市議員黃錫嘉指出,公園建設不需要很高的技術,沒有牽涉到工程結構問題,四十一座公
園的規劃設計費平均每座二百九十八萬元,這麼簡單的綠化設計、種樹、植栽照顧,需要
委外嗎?建設局主辦工程官員難道不汗顏嗎?

市議員陳淑華、何敏誠、曾朝榮、王岳彬等人也說,大家都認為有開闢需要,但是否有必
要花一.二億元去委外?這當中讓人家有很大想像空間,且去年開闢九個公園也沒有編委
外費,這次追加預算中,八億多元要靠舉債,應該能省則省,建議刪一.二億元,轉作用
地費及開闢費。

胡志強則一直拜託說,上次定期會新闢公園大都設在原台中市內,這次辦理追加新闢的公
園多在原中縣,預算完全是業務單位基於需求而提出,公園規劃也是專業。議員輪番發言
後,大會還是決議將這筆追加預算刪除。

另外,議員廖述鎮也質疑公園闢建地點有立委介入,但建設局長沐桂表示,四十一座公園
的規劃設計決策過程,絕無立委介入情形。

--
※ 發信站: 批踢踢實業坊(ptt.cc)

Re: [新聞] 胡志強下令 全面撤除超商外座位

作者: taichungbear (taichungbear) 看板: Gossiping
標題: Re: [新聞] 胡志強下令 全面撤除超商外座位
時間: Fri Aug 12 21:00:16 2011

※ 引述《klarinet (clarinet)》之銘言:
: http://www.ctitv.com.tw/news_video_c14v50806.html
: 台中市成了全台首例要求撤除超商外提供客人歇腳喝飲料的座位,台中市警方還一家一家
: 開出勸導單,理由是淪為少年少女夜不歸聚集場所,還會衍生治安問題,超商業者氣的大
: 罵,難道又回到戒嚴時間了嗎?追究原因,原來是有議員在議會砲轟胡志強,胡志強下令
: 全面徹查。

蜀先主嘗因旱禁釀酒,吏於人家索得釀具,欲與釀酒者同罪。
時簡雍從先主遊,見一男子行道,謂先主曰:「彼人欲行淫,
何以不縛?」先主曰:「卿何知?」雍曰:「彼有淫具,與釀
具同。」先主大笑。

2011年9月17日 星期六

關於C++ friend (沒看過這樣用template)

http://mtlung.blogspot.com/2008/06/inlcude-int-main-stdcout-hello-worldn.html

沒看過這樣用template


// Texture.h
class Texture { 
public
 friend class IResourceLoader; 
 uint width() const { return mWidth; } 
 uint height() const { return mHeight; } 
 
 // We declare a templated inner class here (but not defined yet)
 template<class> class PrivateAccessor; //看不懂@@
 
 private
 uint mWidth; 
 uint mHeight; 
};
 
class IResourceLoader {}; 
 
// JpegLoader.cpp
// Define Texture::PrivateAccessor here, access what ever you want
template<> //看不懂@@
class Texture::PrivateAccessor<jpegloader> {
public:
 static size_t& width(Texture& texture) {
  return texture.mWidth;
 }
 static size_t& height(Texture& texture) {
  return texture.mHeight;
 }
};
typedef Texture::PrivateAccessor<jpegloader> Accessor;
 
void JpegLoader::load() {
 // ... 
 Accessor::width(mTexture) = 128; // Ok! no problem
 Accessor::height(mTexture) = 128;
}