Plurk FaceBook Twitter 收進你的MyShare個人書籤 MyShare
  顯示內嵌語法

旗標電腦文摘 第178期 92.7.17
內容提供:旗標出版公司

旗 標 電 腦 文 摘

第178期 2003.7.17

旗標電腦文摘
已發行電子報





PCDIY 數位相機 選購‧拍攝‧完全活用

書號:F661
定價:420 元
施威銘研究室 著

我要線上購買


本期書摘:生活即可拍攝影技術 ─ 海邊與山景篇
本文摘錄自旗標 F661「PCDIY 數位相機 選購‧拍攝‧
完全活用」一書
海邊、山景
海邊
照片偏暗的問題

好不容易脫離都市烏煙瘴氣的生活步調, 來到令人心曠
神怡的海邊, 想說拍幾張照片紀念, 沒想到拍出來的都
偏暗;心想一定又是我的爛相機在搞鬼。其實是海面上
強烈的反光, 造成相機測光錯誤所導致的。

◇選用『多區評價測光』, 並配合『曝光補償』

測光模式使用時機各有不同, 而且沒有固定的方式, 不
過在面對這類沙灘主題時 , 筆者習慣使用『多區評價
測光』作為測光的依據, 並另外配合『曝光補償』的調
整, 自然就能解決照片偏暗的問題。

================================================
由於各廠商的測光系統設計標準不盡相同,因此務必在
拍照後利用LCD檢視照片是否太亮或太暗,並適時調整。
================================================

◇利用『包圍曝光』一次搞定

要解決海面反光造成相機測光失誤, 除了調整測光模式
和曝光補償外, 還可利用『包圍曝光』作為輔助;您只
需設定以 1/2~1EV 的曝光差距, 自然就能在多張照片
中, 找到一張曝光正確的照片了。
其它常見的問題

在海邊拍照, 除了常見的曝光問題外, 還有一些細節要
注意。分別如下:

◇風沙大, 容易損害相機:沙灘、海邊因為地形特殊, 
  容易因為風沙的緣故造成相機損害, 尤其是伸縮鏡頭
  的部分, 最好是利用透明塑膠袋加以保護以免損傷。

◇水平線要注意, 不要歪一邊:在海邊拍照時, 若水平
  線歪一邊就會造成畫面不協調, 而且失去平衡感看起
  來格外不舒服;因此按快門前要留意水平線是否歪一
  邊。

《水平線歪一邊,照片看起來怪怪的》


《水平線保持平穩的狀態,照片看起來舒服多了》
山景
景物不清晰

拍攝山景, 要是出現景物不清晰的問題, 那還得了!路
途遙遠不說, 自己的心血就這樣泡湯, 想哭都沒眼淚喔
;不過不用擔心, 只要接著看下去, 保證問題迎刃而解
。

◇選用『風景』模式

正所謂『小兵立大功』, 一點也沒錯, 想要將山景拍的
清晰, 選用情境模式中的『風景模式』就對了, 既方便
又不傷腦筋, 最適合一般人使用了。

◇改用『光圈先決』模式

面對壯闊的山景, 難道只用情境模式就能滿足嗎?當然
不是!且基於好還要更好的原則, 筆者建議可改用『光
圈先決』模式, 並將光圈值設定在f8~f11 左右, 如此
一來便可拍出清晰的山景了。
曝光問題多

面對大自然變化萬千的光線, 最容易造成相機測光系統
判斷錯誤, 導致照片曝光不正確的問題。而山景就是最
容易造成相機測光出錯的例子之一, 追究原因就是天空
與山岳之間的亮度差異太大所造成的。

◇改用多區評價測光

面對光線複雜山景時, 將相機的測光方式, 改成多區評
價測光』就對了, 雖不能保證絕對準確, 不過只要利用
LCD 立即檢視, 並利用曝光補償調整, 自然就能拍出
曝光正確的照片。

◇有捨才有得

難道拍照, 也講大道理嗎?沒錯!當天空與山岳的亮度
差異太大, 已經超出相機的測光範圍時, 就必須捨棄其
中之一, 將取景範圍改以天空或是山岳為主, 不然照片
可是會出現天空太亮或山岳太暗的問題。
直幅、橫幅那個好

山景要拍『直幅』還是『橫幅』呢?, 相信是許多人的
疑問, 不過筆者要告訴您, 答案是不一定, 主要還是要
根據拍攝內容決定, 我們就用以下的照片來說明:


《畫面中由於有直立的枯樹,若用橫幅取景並不恰當》


《改用直幅方式取景,是不是更能表現枯樹的型態呢?》

--- 本篇完
         我要買這本書
........................................ ........................................



SQL程式設計徹底研究

書號:F8216
定價:680 元
邱芳信 譯

我要線上購買

 


本期書摘:SQL 程式的應用 ─「值述語」
本文摘錄自旗標 F8216「SQL程式設計徹底研究」一書

我將一系列相關連的一元布林述語 (可測試運算元的邏
輯值或 NULL 值) 稱作 "值述語" (valued predicate)
。其中 IS NULL 已是 SQL 的一部份, 但邏輯 IS 述語
則是 SQL-92 新增的述語, 在本書撰寫期間尚未有實作
產品支援 IS 述語。
IS NULL 述語

透過 IS NULL 述語測試欄位 NULL 值的語法如下:

================================================
 ::=  IS
 [NOT] NULL
================================================

這是測試一個運算式是否為 NULL 的唯一方法, SQL-86
與後續 SQL 版本的標準內都包含這個述語。SQL-92
標準還進一步延伸讓它可以接受以 【 資料列值建構子】代替單一欄位或量值運算
式。相信當 SQL 實作產品接受其他資料列運算式時, 
也將開始支援這個延伸版述語。若 R 資料列裡的所有
值都為 NULL 值, 則 R IS NULL 為 TRUE;否則為 FA
LSE。若碰上資料列上 NULL 值與非 NULL 值參雜狀況,
則依下表定義傳回結果, 其中 【Degree】 代表資料
列運算式上的欄位數量。

運算式 R IS NULL R IS NOT NULL NOT R IS NULL NOT R IS NOT NULL
Degree = 1        
NULL TRUE FALSE FALSE TRUE
No NULL FALSE TRUE TRUE FALSE
Degree > 1        
全為 NULLs TRUE FALSE FALSE TRUE
有些是 NULLs FALSE FALSE TRUE TRUE
No NULLs FALSE TRUE TRUE FALSE
請注意 若 (且唯若) R 只有一個欄位 (Degree = 1) , 則 R IS NOT NULL 與 NOT R IS NULL 的結果會一樣。 這也打破了NOT 置入述語時的通例。以下是一些範例: ================================================ NOT (NULL, NULL, NULL) IS NULL = FALSE NOT (NULL, NULL, NULL) IS NOT NULL = TRUE (1, NULL, 3) IS NOT NULL = FALSE (NULL, NULL, NULL) IS NULL = TRUE (NULL, NULL, NULL) IS NOT NULL = FALSE NOT (1, 2, 3) IS NULL = TRUE NOT (1, NULL, 3) IS NULL = TRUE NOT (1, NULL, 3) IS NOT NULL = TRUE NOT (NULL, NULL, NULL) IS NULL = FALSE NOT (NULL, NULL, NULL) IS NOT = TURE ===============================================
[NULL 的來源]

記住 NULL 從何而來很重要。不只是欄位上可能會出現
 NULL, 加總函數遇上空集合、OUTER JOIN (外部連結)
、碰上 NULL 的算術運算式... 等等都會傳回 NULL。
這些結構通常會出現在檢視表上的某個欄位上。

IS [NOT]{ TRUE | FALSE | UNKNOWN } 述語


本述語測試條件真偽值 TRUE、FALSE、或 UNKNOWN, 並
傳回 TRUE 或 FALSE。語法如下:

================================================
 ::=
    [ IS [ NOT ]  ]

 ::= TRUE | FALSE | UNKNOWN

 ::=
    |   
================================================

如您所預見, IS NOT  運算式相等於 
NOT (IS ), 所以述語可依下表定義:

IS 條件 TRUE FALSE UNKNOWN
TRUE TRUE FALSE FALSE
FALSE FALSE TRUE FALSE
UNKNOWN FALSE FALSE TRUE
若您熟悉 Chris Date 的某些文章, 您可能會記得他的 MAYBE(x) 述語不同於 ANSI (x) IS NOT FALSE 述語, 但反而相等於 (x) IS UNKNOWN 述語。Date 的述語排 除了述語裡所有條件皆為 TRUE 的狀況。 Date 指出要用英語詢問條件式問題很難。現借用 Date 的一個範例 (Date 1990), 試想該如何找出可能為程式 設計師、生日早於 1941 年 1 月 18 日、薪水低於 $50 ,000 的員工。這個問題的敘述在 "可能為" 說法上有點 模糊不清 -- 只要是程式設計師就好呢, 還是這 3 個條 件都要符合?讓我們假設我們希望有些不確定, 那麼透 過本述語, 答案相當容易求出: ================================================ SELECT * FROM Employees WHERE (job = 'Programmer' AND dob < CAST ('1941-01-18' TO DATE) AND salary < 50000) IS NOT UNKNOWN; ================================================ 它也可以轉換成適用於 SQL-89 的版本: ================================================ SELECT * FROM Employees WHERE (job = 'Programmer' AND dob < CAST ('1941-01-18' TO DATE) AND salary < 50000) OR (job IS NULL AND dob < CAST ('1941-01-18' TO DATE) AND salary < 50000) OR (job = 'Programmer' AND dob IS NULL AND salary < 50000) OR (job = 'Programmer' AND dob < CAST ('1941-01-18' TO DATE) AND salary IS NULL) OR (job IS NULL AND dob IS NULL AND salary < 50000) OR (job IS NULL AND dob < CAST ('1941-01-18' TO DATE) AND salary IS NULL) OR (job = 'Programmer' AND dob IS NULL AND salary IS NULL) OR (job IS NULL AND dob IS NULL AND salary IS NULL); ================================================ 本問題在於各種 NULL 值與非 NULL 值的組合都得測試 。由於涉及 3 個述語, 這使得我們必須檢查 (2^3) = 8 種組合。若改用 IS NOT UNKNOWN 述語, 就不需要煩 心這些組合, 只要注意最後邏輯值即可。 --- 本篇完
         我要買這本書
  ........................................ ........................................
我想索取前幾期的電子報  

好書能增進知識、提高學習效率
卓越的品質是旗標的信念與堅持

歡迎光臨旗標網站 - http://www.flag.com.tw


版權所有人:旗標出版股份有限公司
本電子報內容未經授權請勿轉載