星期二, 12月 28, 2010

20101228 單眼基礎班 上課小記

20101228 單眼基礎班

焦點
對焦
  • 練習對在眼睛上面(針對人像)

沒有對到焦點
  • 手震
  • 鏡頭問題

視角
  • 廣角端及望遠端
  • 數字比較小,可以看的比較廣
  • 數字比較大,可以看的比較遠


透視感
  • 畫面主體的大小和背景大小的關係


全片幅? APS-C?
  • APS-C 系統拍攝畫面比較窄,所以拍攝會比較望遠


焦段選購的建議
  • 一般使用者建議焦段最好要涵蓋 50mm


光圈是控制進光量的機構裝置
  • 大光圈進光量多
  • 小光圈進光量小
  • 對景深有影響


景深長--背景清楚
景深短--背景模糊

鏡頭口徑
Ø52

恆定光圈 vs 非恆定光圈
*焦段改變時, 光圈是否會改變

好的鏡頭在於可以還原物體的原色
低色散的鏡片,可以修正色散的程度, 可以還原原色
Canon: UD鏡

超音波馬達 USM

防手震 Image Stabilizer
  • 在腳架上面就不要開--不然會模糊
  • 快門速度高於安全快門不要開----不然會模糊


蘋果屋 相機設備出租
http://tw.user.bid.yahoo.com/tw/show/auctions?userID=isued2k&u=:isued2k

大俠攝影
http://www.dasha-photo.com/portal.php

三腳架
  • 根據相機重量來選擇
  • 最大高度根據自己身高來選購
  • Manfrotto
  • GITZO

雲台
  • 球形雲台
  • 三向雲台


閃光燈
  • 必須能改變照射方向(跳燈)
  • 閃燈出力有M模式(手動模式)
  • 閃燈出力控制模式要有TTL模式(自動模式Through The Lens)
  • 閃燈照射範圍必須能控制


偏光鏡 CPL
  • 濾掉雜光, 一般用於風景拍攝


減光鏡
  • 減少進光量,換到更長的曝光時間,例如拍水流及瀑布
  • ND8 減3格
  • ND400減9格


攝影背心
  • 拍攝溪流可以放小東西

星期六, 12月 25, 2010

20101225 Java 上課小記

20101225

Loop 迴圈
  • 讓某個語法重複執行
  • for 的後面沒有 ; 所以要執行的指令如果超過兩句, 要寫大括號確定執行範圍,不然只執行第一個指令.


for(變數初值設定; 條件; 變數增量運算)
{
        敘述
}

while迴圈
  • 條件成立時執行,直到條件被破壞


while(條件)
{
     
敘述
}


Lab: while
public class WhileLoop {
   
   public static void main(String[] args) {

       int i=0;

       while(i<10)
       {
           System.out.print("*");
           i++;
       }

   }

Lab: while

import java.util.Scanner;

public class Input2 {

   public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);

       int w,h,ans=1;

       while(ans == 1)
       {
    System.out.print("Height:");
    h = sc.nextInt();
    System.out.print("Weight:");
    w = sc.nextInt();

    double bmi = w / Math.pow(h/100.0,2);
    System.out.println("BMI="+bmi);
       System.out.println("continue ?: (Type 1:continue 0:exit)");
       ans = sc.nextInt();
       }
   }

}


do  while
  • 先敘述再判斷


語法
do
{
    敘述
}while(條件);

Lab: do  while

import java.util.Scanner;

public class Input2 {

    public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);

       int w,h,ans=1;

       while(ans == 1)
       {
   System.out.print("Height:");
   h = sc.nextInt();
   System.out.print("Weight:");
   w = sc.nextInt();

   double bmi = w / Math.pow(h/100.0,2);
   System.out.println("BMI="+bmi);
           do
           {
           System.out.println("continue ?: (Type 1:continue 0:exit)");
           ans = sc.nextInt();
           }while( !(ans == 0 | ans == 1));
       }
    }

}


Lab:  骰子

public class Loop {
   public static void main(String[] args) {
       //Math.random() 產生 0 ~ 1 之前的浮點數
        // *6 -- 6 為間距,  1 為 起始值
       int d = (int)(Math.random()*6)+1;
       System.out.println(d);
    }
}


Lab: 四顆骰子

public class Loop {
   public static void main(String[] args) {
       //Math.random() 產生 0 ~ 1 之前的浮點數
        // *6 -- 6 為間距,  1 為 起始值
       int d;
       
           for(int i = 0; i<4; i++)
           {
           d = (int)(Math.random()*6)+1;
           System.out.println(d);
           }
    }
}


Lab: 四顆骰子 並統計總數

public class Loop {
   public static void main(String[] args) {
       //Math.random() 產生 0 ~ 1 之前的浮點數
        // *6 -- 6 為間距,  1 為 起始值
       int d,s=0;
       
           for(int i = 0; i<4; i++)
           {
           d = (int)(Math.random()*6)+1;
           System.out.println(d);
           s += d;
           }
      System.out.println("Sum="+s);
    }
}


Lab:


public class Loop {
   public static void main(String[] args) {
       //d 用來產生點數, s用來加總, c 用來算次數
       int d,s=0,c=0;
        
        //計算 丟幾次骰子, 才丟到 16, 沒有丟到16 就繼續
       while(s != 16)
       {
               //每丟完一次, s 都要歸零
               s=0;
               //利用 for 迴圈 丟四個骰子
               for(int i = 0; i<4; i++)
               {
                    //Math.random() 產生 0 ~ 1 之前的浮點數
               // *6 -- 6 為間距,  1 為 起始值
               d = (int)(Math.random()*6)+1;
               //列出骰子點數
               System.out.println(d);
               //加總 骰子 的點數
               s += d;
               }
               //每丟完一次, 累積丟骰子的次數
               c++;
           //列出 骰子的總數
          System.out.println("Sum="+s);
           //列出第幾次丟骰子
          System.out.println("第"+c+"次");
           }
     //列出 總共丟幾次
    System.out.println("總共:"+c+"次");
    }
}

if 判斷式

語法
if(條件)
{
    敘述
}
else
{
    敘述
}

Lab: if 判斷式

import java.util.Scanner;
public class Ex_If {
   public static void main(String[] args)
   {
       //利用 Scanner 產生一個輸入
       Scanner sc = new Scanner(System.in);
       System.out.print("Enter Number:");
       //定義 n 為使用者輸入的數字
       int n = sc.nextInt();
       if(n == 0)
           System.out.println("Zero");
       else
           
               //將 n 除以2 判斷 餘數是否為 0
           if(n % 2 == 0)
               //如果餘數為 0 就是偶數
               System.out.println("偶數");
           else
               //如果餘數不0 就是奇數
               System.out.println("奇數");
   }
}


 




星期日, 12月 19, 2010

module blacklist /etc/modprobe.d/50-blacklist.conf 相關小記

隨著 floppy 的沒落, 現在一般的家用 PC 已經慢慢預設沒有內建 floppy

但是如果沒有在 BIOS 設定內 disable floppy

就會在開機的時候出現相關 log

kernel: [   31.784003] end_request: I/O error, dev fd0, sector 0

解決方式

1.  至 BIOS 設定 disable floppy

或是

2.  將 floppy 列入模組掛載的 blacklist ( 黑名單)

OS: openSUSE 11.3

#vi   /etc/modprobe.d/50-blacklist.conf

加入


blacklist   floppy



^___^

星期五, 12月 10, 2010

20101210 Java 學習小記

Notes
  • - System.out.println
    • 顯示文字並換行
  • - System.out.print
    • 顯示文字但是不換行,緊接下去顯示
  • - main() 方法
    • Java 以 main() 作為程式的主體
    • 在大括號{ } 所涵蓋的所有程式, 稱為程式區塊 (block), 又稱為main()方法 (main method)
    • 在Java程式中, 一個小的處理"工作"的單位,稱為敘述(statement), 以 ; 分號為結束. 會根據順序執行
  • - 縮排(indent)
    • 可以使用空白鍵或是Tab按鍵
    • 有助於程式的可讀性
  • - 註解
    • // 以後視為註解
      /* 到
      也是視為註解
      */
  • - 類別(class)
    • Java 程式當中, 最少必須有一個類別
    • 撰寫Java程式都會在程式的一開始加上class,作為程式區塊的開始
  • 字面值(literal)
    • 泛指字元,字串,數字等各種資料型態
    • 可以分為
      • 文字literal
        • 字元literal(character literal)
          • 由單一字母所構成
          • 使用單引號' ' 表示
        • 字串literal
          • 由2個或是2個以上字元連接所構成
          • 使用雙引號" " 表示
      • 數值literal
        • 整數literal(整數常數)
          • 除了使用10進制以外,也可以使用 8進制(在數字最前面加上0,或是16進制(在數字最前面加上0x))
        • 浮點literal(浮點數常數)
  • 單字(token)
    • Java語言由一個一個單字元件所構成
    • 具有特定意義的文字
    • 可以細分為
      • literal (字面值)
      • 關鍵字(keyword)
      • 識別字(identifier)
      • 運算子(operator)
      • 間隔字(例如逗點)
  • - 跳脫字元
    • 單一字元無法表示的特殊文字, 前面加上 \ 符號
    • 用來顯示特殊字元, 或是進行一些動作
    • \b backspace
    • \t  tab
    • \n  換行
    • \f  換頁
    • \r  歸位(return)
    • \'  單引號
    • \"  雙引號
    • \\  倒斜線
    • \uhhhh  以16進位hhhh所表示的文字碼(Unicode)
  • 字元碼(character code)
    • Java 採用Unicode
    • 如果是 Big5, 在Linux可以使用 iconv來轉碼. 例如 iconv -c -f Big5 -t utf-8 Sample6.java > Sample6utf8.java

星期三, 12月 08, 2010

動畫桌布xwinwrap with openSUSE 11.3

今天看到 zenix 在展示動畫桌布
覺得很有趣, 感覺上在推廣上面很有幫助, 就馬上跟他請教製作方式

zenix 也馬上在聚會結束後, 使用mail 教授大家方式

需求 compiz, xwinwrap, mplayer, zenity

安裝 xwinwrap  使用 OneClick Install

# OneClickInstallUI http://software.opensuse.org/ymp/home:malcolmlewis:Miscellanous/openSUSE_11.3/xwinwrap.ymp

檢查 zenity 是否安裝
# zypper search zenity
Loading repository data...
Reading installed packages...

S | Name                | Summary                           | Type  
--+---------------------+-----------------------------------+--------
  | octave-forge-zenity | ZEnity                            | package
i | zenity              | GNOME Command Line Dialog Utility | package
  | zenity-lang         | Languages for package zenity      | package

以一般使用者建立 script
>vi ~/.gnome2/nautilus-scripts/動畫桌布


#!/bin/bash
function XWINWRAP
{
   FILE_NAME=$1
   if [ -z $FILE_NAME ];
   then
       exit;
   else
       killall xwinwrap
       xwinwrap -ni -o 0.3 -fs -s -st -sp -b -nf -- mplayer -loop 0 -wid WID  -quiet "${FILE}" &
       # -nosound加在mplayer後可以關掉聲音
       # -- 後面為執行的指令, smplayer 不適用, 所以使用 mplayer來播放
       # -o 0.4是透明度,可以自己調 數字越小越透明
   fi
}
ZENITY=$(which zenity)
select_file="請選取影片檔"
error_nofiles="未選取檔案"

FILE=`$ZENITY --file-selection --title="$select_file" --file-filter="videos | *.wmv *.avi *.mkv *.flv *.mp4 *.rmvb"`
#只要是mplayer可以播的,都可以加進去這後面(我只加常用格式)

case $? in
   0)
       XWINWRAP $FILE
       ;;
   1)
       echo "$error_nofiles"
       killall xwinwrap
       ;;
   -1)
       echo "$error_nofiles"
       ;;
esac

給予適當的權限
> chmod a+x ~/.gnome2/nautilus-scripts/動畫桌布




之後只要按滑鼠右鍵
命令稿 --> 動畫桌布 ,選取影片檔案
就可以有動畫桌布

要停止影片
就再按滑鼠右鍵
命令稿 --> 動畫桌布 ,不選取影片檔案
點選取消

動畫桌布就會停止

感謝 zenix 大大



^^ enjoy it !!

星期二, 12月 07, 2010

Hadoop 閱讀小記 20101207

Hadoop
  • 起源
    • Google File System
    • Map-Reduce
  • Log
    • 2010/12/7
  • 實例
    • Rackspace 郵件部門用來分析哪些Data Center 需要增加 Mail Server
  • 相關資源
    • http://www.hadoopbook.com/
  • 主要框架
    • 文件系統 HDFS
    • 計算架構 MapReduce
      • 適合處理需要分析整個數據集的問題
      • 適合數據被一次寫入和多次讀取的應用
      • 對於非結構化或半結構化數據非常有效
        • 因為被設計為在處理時間內解釋數據
      • 數據本地化功能
        • 嘗試在計算節點儲存數據, 因此數據處理速度會因為他是本地數據而比較快
      • 以 鍵/值對函數的角度來考慮, 同時對數據流是隱含的
      • 檢測失敗的map 或者是 reduce任務, 在健康的機器重新安排任務
        • 可以作到這一點是因為無共享的架構.意味著每個任務彼此並不依賴
    • 結構化數據處理 HBase
  • Hint
    • 古時候, 人們用牛來拉重物, 當一頭牛拉不動一根圓木的時候, 他們不曾想過培育個更大的牛. 同樣, 我們也不需要嘗試更大的計算機, 而是應該開發更多的計算系統  --格蕾斯.霍柏
  • Notes
    • Chapter 1
      • 數據傳輸速度 100M/s, 但是 1TB 的儲存媒體已經是很普遍了, 光讀取出來就要花 2.5 小時
        • 作法:從多個磁碟讀取數據,這樣存取的時間會大大的降低
        • 需要解決的問題1: 硬體故障, 應對方式:複製資料 Replication
        • 需要解決的問題2: 合併資料如何保持正確性. Hadoop 使用Map Reduce 將資料組成為成對 鍵/值 的數據集
      • High Performance computing HPC
        • 使用MPI(Message Passing Interface)
        • 廣義上來說, 就是將作業分配給一個機器叢集, 然後存取Shared Storage. 適用於主計算密集型的作業
        • 但是如果節點需要處理大量的數據量,這個時候就會成為一個問題,因為網路的速度成為瓶頸,所以計算節點閒置下來. 這個也是MapReduce 開始發光的起點

星期一, 12月 06, 2010

PPStream on openSUSE 11.3

使用 One Click Install 方式

http://software.opensuse.org/search?q=PPStream&baseproject=openSUSE:11.3&lang=zh_TW

Notes:
在 32 位元版本, 需要使用 root 執行 ( 疑似權限問題 )
在討論區內
有提到

#mkdir  -p  /opt/pps/lib
#cp  /usr/lib/libems*   /opt/pps/lib

可以修正

參考文件
http://www.linuxsir.org/bbs/thread373639.html

另外一種方式是藉由 alien 套件將 .deb 套件轉為 rpm


# zypper search alien
Loading repository data...
Reading installed packages...

S | Name            | Summary                           | Type     
--+-----------------+-----------------------------------+-----------
  | alien           | A Perl Script to Convert Packages | package  
  | alien           | A Perl Script to Convert Packages | srcpackage
  | ladspa-alienwah | Alienwah LADSPA plugin            | package  
  | ladspa-alienwah | Alienwah LADSPA plugin            | srcpackage


# zypper install alien
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following NEW packages are going to be installed:
  alien deb html2text

3 new packages to install.
Overall download size: 1.2 MiB. After the operation, additional 4.0 MiB will be
used.
Continue? [y/n/?] (y): y

下載 PPStream Deb 套件

# wget http://download.ppstream.com/ppstream_1.0.0-1_i386.deb

# alien  --to-rpm   ppstream_1.0.0-1_i386.deb

# ls
PPStream-1.0.0-2.i386.rpm  ppstream_1.0.0-1_i386.deb

# rpm -ivh PPStream-1.0.0-2.i386.rpm

# cp /opt/pps/lib/libems*  /usr/lib

此時就可以使用 root 來觀看

一般使用者要動到 sudoers 所以我就沒有修改他

參考文件
http://www.linuxsir.org/bbs/thread373554.html


來試試看 64 位元有沒有這個問題

^^

使用 k3b 燒錄音樂CD 小記 - k3b-codecs

今天在 Linux 下啟動 K3b 的時候
出現一個錯誤訊息

*******************************************************************
找不到 MP3 音效解碼器外掛程式。
K3b 無法載入或找不到 MP3 解碼器外掛程式。這意味著您將無法由 MP3 檔案建立音效 CD。由於法律上的考量,許多 Linux 發行版沒有納入 MP3 的支援。
解決方法: 要啟用 MP3 支援,請安裝 MAD MP3 解碼函式庫與 K3b MAD MP3 解碼器外掛程式 (後者可能已經安裝好了,但是由於 libmad 尚未安裝所以無法運作)。某些發行版可以透過線上更新工具來安裝 MP3 支援。

*******************************************************************

是的, 這樣K3b 是沒有辦法燒錄 音樂CD的

因為沒有 MP3 的支援, 所以就啟用 YaST 來安裝相關套件
首先安裝 libmad 套件
但是還是沒有辦法啟用 MP3 支援
所以還要安裝 k3b-codecs 套件 (這邊我是使用 PacMan 套件庫)

果然安裝之後就可以支援 MP3

先記下來

^0^