2010年10月7日 星期四

10/7 光纖servey

  • 何為 GBIC

GBIC 是 Giga Bitrate Interface Converter 的縮寫,是將 Gigabit 電信號轉換為光信號的介面器件。
GBIC 設計上可以為熱插拔使用。
GBIC 是一種符合國際標準的可互換產品。
採用 GBIC 介面設計的 Gigabit 交換機由於互換靈活,在市場上佔有較大的市場分額。
  • 何為 SFP ==>MINI-GBIC

SFP 是 SMALL FORM PLUGGABLE 的縮寫,可以簡單的理解為 GBIC 的升級版本。
SFP 模組體積比 GBIC 模組減少一半,可以在相同的面板上配置多出一倍以上的埠數量。
SFP 模組的其他功能基本和 GBIC 一致。
有些交換機廠商稱 SFP 模組為小型化 GBIC(MINI-GBIC)。
SFP 模組體積比 GBIC 模組減少一半,可以在相同的面板上配置多出一倍以上的埠數量。
SFP 模組的其他功能基本和 GBIC 相同。
  • 接頭 ==>LC

值得注意的是,接頭與上述兩項沒有直接的關係,也就是說,上述任一種光規格需搭配對應的光纖線,但可以用各種接頭。
一般的接頭有ST、SC、MT-RJ、LC、…等(各有公與母)。
另外,假設A設備是1000Base-SX規格SC母接頭,而B設備是1000Base-SX規格MT-RJ母接頭,則僅需購買一條SC轉MT-RJ的多模公接頭光纖線串接即可。
但若例如遠端過來的光纖線已經做死ST公接頭而欲連至SC母接頭的設備,此時只能用同時有SC與ST母接頭的相同光規格裝置(例如Converter或Switch)做為中介連接兩端。
還有,由於光纖線與相關設備較雙絞線者價格已相對便宜,故如果有用到Gigabit的規格,則兩台Switch之間的串接甚至Server端的網路卡,都可考慮用光纖線連接,比較不會像UTP雙絞線有較多的干擾與損耗。
最後,無論是光纖線或是雙絞線,在連接兩不同廠牌設備時,均有可能因為自動協調機制不順利,而致降速或不通,此時若雙方為可進入設定的設備(可管理型),則可嘗試將自動協調改為手動強制(例如強制跑100Mbps全雙工)。
而線材未依標準或製做粗劣,也均會嚴重影響1000Mbps的傳輸效能。
  • 光的規格 ==>SX

先談光的規格,一般乙太網路用到的多半如下:
100Base-FX,使用紅外線光源,跑100Mbps
1000Base-SX,使用短波雷射光源,跑1000Mbps
1000Base-LX,使用長波雷射光源,跑1000Mbps
1000Base-LH,使用長波雷射光源,跑1000Mbps
FX 是紅外線光源;SX 是指短波雷射,其所達距離較短;LX、LH 是指長波雷射,可達距離較遠,不同規格是無法連接的。
  • 線材 ==>Multi-Mode

再談線材,光纖線(Fiber-Cable)一般分為單模(Single-Mode)與多模(Multi-Mode),差別在單模光纖的核心(玻璃纖維或塑料)非常細,幾乎只容許一束光線通過,比較沒有光線折射或反射等的損耗,因此傳送距離可以較長。
多模光纖的核心(玻璃纖維或塑料)比較粗,容許多束光線通過,有較多光線折射或反射等的損耗,因此傳送距離較短。
兩種線材必須各搭配上述不同的光規格來用,才可發揮最佳效能,不可任意接用。
100Base-FX  搭配多模光纖
1000Base-SX 搭配多模光纖
1000Base-LX 搭配單模光纖
1000Base-LH 搭配單模光纖
而光纖線一般的表示方法,單模光纖有5/125、10/125、…等,多模光纖有50/125、62.5/125、…等,前方的數字是光纖核心直徑,後方的數字是線材折射層直徑。
1000Base-SX 搭配多模光纖傳送距離為400m以上甚至1km
1000Base-LX 搭配單模光纖可達1km以上甚至10km
1000Base-LH 搭配單模光纖可達10km以上甚至70km
傳送距離最好還是參考設備商提供的數據規格。

各規格設備圖片參考:http://www.ublink.org/fiber/fiber.php

2010年9月23日 星期四

9/23 Cisco CCNP-BCMSN 15章 確保Switch的安全

l   Switchport port-security
根據MAC位址控制埠的存取。
在要使用的介面配置相關指令:
        Switch(config-if)#switchport port-security
        Switch(config-if)#switchport port-security maximum 允許存取的最大MAC數目
        此為動態配置,也可靜態配置位址
        Switch(config-if)#switchport port-security mac-address XXXX. XXXX. XXXX
l   DHCP Snooping
DHCP伺服器提供clinet在網路上運作的所有基本資訊。假設情況:攻擊者在client所在的子網路架設一台惡意的DHCP Server,當client廣播DHCP要求時,惡意伺服器將發送偽造的DHCP回應,其中的Default gateway是惡意伺服器的IP位址。而client前往外部的封包會先經過攻擊者的機器,攻擊者再轉送封包到目的地,同時查看攔截的每個封包。
DHCP snooping可以防範這類攻擊,啟用DHCP snooping可以將交換埠分成可信任和不可信任的,合法的DHCP Server位於可信任的port,其他為不可信任的。
交換器可以攔截來自不可信任port的所有DHCP要求,然後向整個VLAN flood;任何來自不信任portDHCP回應都被丟棄,同時連接的交換port也會自動關閉,進入errdisable狀態。     
相關指令:
Switch(config)#ip dhcp snooping    啟用dhcp snooping
Switch(config)#ip dhcp snooping vlan id  指定執行dhcp snoopingVlan

Switch(config)#interface type mod/num
Switch(config-if)#ip dhcp snooping trust 設定已知DHCP Server所在的
                                  port為可信任port
Switch(config)#ip dhcp snooping information option
透過新增選項82,提供了更多有關實際產生的DHCP要求的client資訊
l   IP來源防護
惡意或受到攻擊的主機卻不一定遵守上述的規則,他們可能使用自己的合法位址,也可能使用偽造的位址。IP來源防護則是進行偵測並阻斷位址偽造的攻擊,第二層交換器會學到MAC位址並儲存,交換器必須確定MAC與其關聯的IP位址。IP來源防護使用DHCP snooping 資料庫,以及使用靜態來源IP位址對應項目來完成。IP來源防護須搭配DHCP snooping,來源IP是否與DHCP snooping學到的或是靜態項目對應的IP位址相同是要注意的地方,或MAC是否與switch portDHCP snooping 得知的MAC相同。
相關指令為:
Switch(config)#ip source binding mac-address vlan vlan-id interface type
mod/num  此為將主機的MAC位址對應到特定的VLAN
IP位址,並只能在特定的交換器介面看到。
               
Switch(config)#interface type mod/num
Switch(config-if)# ip verify source[port-security]
檢查來源IP,若要同時檢查MAC則再補充port-security指令

Switch#show ip verify source 查看IP來源防護的情況
l   動態ARP檢查(DAI:Dynamic ARP inspection)
DHCP snooping的觀念有點類似,不過ARP欺騙是把攻擊者的機器加入到原本合法的不同路徑中,使封包傳送到攻擊者手中,而不是另一台主機或預設閘道。
相關指令為:
        Switch(config)# ip arp intspection vlan vlan-range VLAN啟用DAI

        Switch(config)# interface type mod/num
        Switch(config-if)# ip arp inspection trust 
DHCP snooping觀念類似,也是要設定信任的port

l   確保交換器安全的最佳方法:
n   設置加密密碼:善用enable secret,將密碼儲存在NVRAM
Service password-encapsulation  自動加密儲存
n   停用不必要的服務:以下配置指令,一定要加上關鍵字no停用它們
Service tcp-small-servers
Service udp-small-servers
Service finger
Service config
n   確保交換器的控制台安全:以實體設備防止他人連接到交換器控制台,並在控制台配置驗證。
n   確保交換器的控制台安全

2010年9月16日 星期四

9/16 Cisco CCNP-BCMSN 12章 多層交換

  • Vlan之間彼此獨立,之間要傳輸的話必須使用第3層網路設備,路由器必須具有每個vlan的實體或邏輯連接,稱之為Inter VLAN routing



  • 單臂路由器:router on a stick 路由器透過單一trunk與交換器相連







  • Switchport:輸入此指令可將port處於第2層模式,no switchport則為第3層模式;配合show interface type mod/num switchport看指令輸出中switchport顯示enabled則為第2層、disabled為第3層。



  • SVI:第3層邏輯介面稱為SVI,配置SVI時,需要使用介面名稱vlan vlan-id,就像vlan本身就是一個實體介面一樣


※雖然VLAN和SVI可以同時使用,但是要分開設定,建立或配置SVI並不等於建立或配置VLAN,必須分別的定義他們

EX: sw(config)#vlan 20

sw(config-vlan)#exit

sw(config)#interface vlan 20

sw(config-if)# ip address 192.168.20.1 255.255.255.0

sw(config-if)#no shutdown


  • 傳統的Netflow交換:最初發揮路由處理器(route processor,RP)和交換引擎(switching engine,SE)的雙重功能,基本原理為”一次路由,多次交換”為參與多層交換,SE必須知道每個RP的身分。SE就能夠聆聽到達和離開路由器的第一個封包,如果SE能夠在兩個方向上交換封包,他將得知一條”shortcut patch(捷徑)”,將同一個資料流中的後續封包直接交換到離開的port,而不需要經過RP,硬體須由一個獨立的RP元件(component)和一個支援Netflow的SE元件組成。



  • CEF的多層交換:CEF是catalyst多層交換器使用的高效率Cisco快速轉送,固定配置的交換器,如Catalyst 3750、3560、3550和2950都在硬體中執行CEF,CEF有兩個關鍵字:轉送資訊資料庫(Forwarding Information base,FIB)、adjacency(鄰接)表



  • 轉送資訊資料庫(Forwarding Information base,FIB)


由第3層引擎維護遶送資訊,這些資訊來自靜態路由或動態遶送協定。Routing table被重新格式化為一個有序清單,此格式為FIB。FIB中每個項目還包含下一個轉送站位址,在FIB中找到符合最長的項目後,也就找到了下一個轉送站的第3層位址。FIB表也是動態的,第3層發現遶送拓樸發生變化後,它將發送更新給FIB。

※要顯示與特定介面或VLAN相關聯的FIB項目,可使用show ip cef [ type mod/num
vlan vlan-id ] [detail]


  • adjacency(鄰接)表:路由表通常維護一個路由表和一個ARP表,前者包含第3層和下一個轉送站資訊,後者包含第3層與第2層位址的對應。這些表是獨立儲存的。FIB在每個項目中保存了下一個轉送站的第3層位址。為進一步提高封包轉送效率,FIB保存了每個下一個轉送站項目的第2層資訊。FIB這部分稱為adjacency表,包含下一個轉送站節點的MAC位址。要顯示adjacency表的內容可使用show adjacency [ type mod/num vlan vlan-id ] [detail]
l   封包重寫(packet rewrite):多層交換以快速表格查詢方式進行尋找下一個轉送站位址和離開的port。封包並沒有更動,目的地MAC位址仍為交換器本身的MAC位址,因此還必須調整IP標頭,就像轉送是由傳統的路由器一樣。
n   2層目的地位址:改為下一個轉送站設備的MAC
n   2層來源位址:改為第3層交換器離開的介面的MAC
n   3IP存活時間(TTL):經過了一個路由器轉送站則減1
n   3IP檢查碼(checksum):重新計算以考慮修改後的IP標頭
n   2層訊框檢查碼:重新計算以考慮修改後的第2層和第3層標頭
感覺大部分都與傳統路由器相同的封包修改,然而多層交換器使用專用的封包重寫硬體,並透過表格查詢獲得位址資訊,能非常高效率的完成此工作。

    2010年8月5日 星期四

    2010年7月13日 星期二

    7/13 結訓專題 資訊安全 - 第一次會議

    開會討論內容如下:
    1. 題目的來源是跟有在SI上班的朋友拿取相關資料還是參照規格書進行
    2. 時間規畫表的配置與安排
    3. 標案上的硬體如何得知資訊
    4. 得知的資訊如何了解其符合規格
    5. 7/17日前確認朋友有無相關標案並且練習Splunk
    6. 甘特圖由PJM規劃進行
    7. 人員配置
    • PM:超文、暉哥
    • PJM:KIMO、紹偉
    • SE:文瑞、村哥、阿信、阿佑、光庭、冠豪

    7/13 觀看資策會"見賢思齊台北的朋友"學習要點

    學習到的要點如下:
    1.串連性
    2.Focus 資安
    3.Presentation skill
    4.整合性
    5.Demo
    6.軟體
    7.License
    8.Ending加強
    9.安裝step (X)

    加油!! 不斷的加強自己的態度 表現才能越來越進步!

    2010年6月2日 星期三

    6/3 NP -Spanning Tree

    • CISCO WS-C2960-24TC-L  
    <1>mac address可放多少?

    ANS:8000個

    <2>Switch fabric 有多大?

    ANS:具備16Gbps以上架構

    <3>2960有支援802.1D 、802.1W 、 802.1S嗎?

    ANS:
    援IEEE 802.1d Spanning-Tree Protocol,支援備援骨幹連線與Loop-free的網路,提升容錯能力。 
    支援IEEE 802.1w Rapid Spanning-Tree Protocol,支援快速備援骨幹連線與Loop-free的網路,提升容錯能力。 
    支援IEEE 802.1s Multiple Spanning Tree Protocol,可簡化Spanning Tree設定,以便在備援連線上進行Layer 2 load sharing功能。 

    <4>VLAN數

    ANS:支援255個VLAN 
    • Switching frames according to the Destination MAC address
        而Router則是看目的IP

    P.S   Switch 幾乎用在LAN,頻寬大,收到廣播封包會廣播出去;而Router用在WAN,為  
             節省網路的頻寬,會將廣播封包Drop掉。

    • Spanning Tree
    Purpose:
    1. to maintain Loop-free topologies
    2. redundant
    Steps:
    1. Determine the root switch
    2. Determine the root port on all other switches
    3. Determine the designated port on each LAN
    • VLAN
    利用軟體在一個Switch模擬成多個IP子網路

    6/2 SQL2008 隨堂練習

    隨堂練習--P382

    先在sampe按右鍵屬性 加上建立資料表及檢視表的權限







    之後再去emp作存取權限




    測試:

    ------OK
    select * from emp
    go

    ------OK
    insert emp(empno,ename,deptno)
    values(999,'HSU',20)
    go

    ------denied
    update emp
    set sal=5000
    where empno='999'
    go

    ------denied
    delete emp
    where empno='999'
    go

    2010年5月27日 星期四

    5/28 SQL2008 隨堂練習

    --隨堂練習(P272-1)

    update emp
    set comm=0
    where comm is null

    select * from emp
    go

    --隨堂練習(P272-2)

    update emp
    set sal=sal * 1.05
    where deptno=(select deptno
     from dept
     where dname = 'research')
    select * from emp
    go

    --隨堂練習(P277-1)

    delete from item
    where ordid = 620

    delete from ORD
    where ORDID = 620

    select * from ORD
    go

    --隨堂練習(P277-2)
    --"="後面只能等於一個值,所以這邊要用in 或 = any

    delete from ITEM
    where ORDID = any(select ORDID
     from ORD
     where CUSTID=106)
    select * from ITEM
    go

    2010年5月26日 星期三

    5/26 Joomla成果發表

    組別:第一組

    [網站連結] :http://rex0618.byethost32.com
    [分組名單] :
    賴文瑞、范紘瑄(KIMO)、黃光庭、洪錦村
    [網站名稱] :買菜網
    [網站介紹] :提供一個買菜的平台!!
    如何能夠讓”妳”更輕鬆?這是我們最關心的事!
    我們為辛苦工作忙碌的上班族以及家庭主婦規劃此網站,買菜不應該是一件很輕鬆的事情嗎?
    讓我們幫你省下時間,利用這些時間可以更開心的與家人相處。並提供新鮮有機蔬菜的一個管道供您選擇,還在等什麼呢?快上買菜網為您的家人保護健康吧!!
    [網站類型]:購物網站
    [選用模組]:JCE Administrator 一  賴文瑞
             Jom comment      一  賴文瑞
             Joomla Stats     一  賴文瑞
             GTranslate       一  范紘瑄(KIMO)
             Pro Image Flow    一  范紘瑄
    (KIMO)
             RSform!PRO     一  賴文瑞
             RokBox          一  范紘瑄
    (KIMO)、黃光庭
             Vinaora Visitors Counter  一  范紘瑄
    (KIMO)
             Highlighter        一  范紘瑄
    (KIMO)
             Virtue Mart       一  黃光庭
             JA Slideshow     一  洪錦村

    5/26 MIS必備器材

    必備器材:
    USB介面的充電器:可充GPS...
    PS/2 轉USB 的轉接頭
    DVI 轉D-sub的轉接頭
    IDE 轉SATA的轉接頭
    USB延長線
    網路線
    IDE排線

    2010年5月18日 星期二

    5/19 SQL2008 隨堂練習

    --隨堂練習(P219)

    select o.ordid , orderdate , NAME ,PHONE ,PRODID ,QTY
    from ORD as o , CUSTOMER as c , ITEM as i
    where o.CUSTID = c.CUSTID and
     o.ORDID = i.ORDID and
     o.ORDID ='605'
    order by ORDID 
    go

    --隨堂練習 Join on 寫法(P219)

    select o.ordid , orderdate , NAME ,PHONE ,PRODID ,QTY
    from ORD as o join CUSTOMER as c on o.CUSTID = c.CUSTID
     join ITEM as i on o.ORDID = i.ORDID
    where o.ORDID ='605'
    order by ORDID 
    go

    --隨堂練習(P226) about 外部連結

    select p.prodid ,DESCRIP ,ORDID , i.PRODID ,QTY
    from PRODUCT as p left join ITEM as i
    on p.PRODID = i.PRODID
    where ORDID is null
    order by p.PRODID
    go

    --隨堂練習(P229) about 自我連結

    select a.empno ,a.ename ,a.hiredate ,b.empno ,b.ename ,b.hiredate
    from emp as a , emp as b
    where a.hiredate = b.hiredate and a.empno < b.empno
    go

    --隨堂練習Join on 寫法(P229)

    select a.empno ,a.ename ,a.hiredate ,b.empno ,b.ename ,b.hiredate
    from emp as a join emp as b on a.hiredate = b.hiredate 
    where a.empno < b.empno
    go


    --隨堂練習(P246-1) about 子查詢

    select ordid , ORDERDATE ,CUSTID ,TOTAL
    from ord
    where CUSTID = ( select CUSTID
    from CUSTOMER
    where NAME = 'Jocksports' )
    go

    --隨堂練習連結寫法(P246-1) about 子查詢

    select ordid , ORDERDATE ,a.CUSTID ,TOTAL
    from ord as a, CUSTOMER as b
    where a.CUSTID = b.CUSTID and NAME='Jocksports'
    go

    --隨堂練習(P246-2) about 子查詢

    select ORDID ,PRODID ,QTY ,ACTUALPRICE
    from ITEM
    where PRODID = (select PRODID 
    from PRODUCT
    where DESCRIP ='ace tennis net' )
    go

    --隨堂練習連結寫法(P246-2) about 子查詢

    select ORDID ,a.PRODID ,QTY ,ACTUALPRICE
    from ITEM as a , PRODUCT as b
    where a.PRODID =b.PRODID and DESCRIP='ace tennis net' 
    go

    5/18 SQL2008 隨堂練習

    --隨堂練習1(P198)


    select job ,COUNT(*) as '總人數' , AVG(sal) as avg , MAX(SAL) as highest ,MIN(sal) lowest,SUM(sal) as total


    from emp


    group by job


    order by SUM(sal) desc


    go


    --隨堂練習2(P199)


    select state , city ,COUNT(*) as 'count(*)'


    from CUSTOMER


    group by STATE ,city


    go

    --隨堂練習3(P203)


    select ordid , COUNT(*)as 'count(*)' , SUM(itemtot) as 'SUM(itemtot)'


    from ITEM


    group by ORDID


    having sum(itemtot) >5000


    order by sum(itemtot) desc


    go


    --隨堂練習4(P213)


    select empno,ename,job,custid,name,repid


    from emp as e ,CUSTOMER as c


    where e.empno=c.REPID and job='salesman'


    order by empno


    go


    --練習4 JOIN ON版


    select empno,ename,job,custid,name,repid


    from emp as e Join CUSTOMER as c


    on e.empno=c.REPID


    where job='salesman'


    order by empno


    go

    2010年5月17日 星期一

    5/18 2008 SQL homework1

    USE sample




    1. 從emp資料表中,找出公司薪資大於 2000元的員工,按照部門由低到高排列,部門相同時,按照薪資由高到低排列。


    select EMPNO , ENAME , JOB , SAL , DEPTNO


    from emp


    where SAL > 2000


    order by deptno , sal desc



    2. 從emp資料表中,找出1981年進公司的員工,資淺的排前面。


    select EMPNO , ENAME , HIREDATE , SAL ,DEPTNO


    from emp


    where hiredate between '1981-01-01' and '1981-12-31'


    order by hiredate desc , sal desc


    3. 從emp資料表中,找出職務是'CLERK'而且佣金是'NULL'的員工。

    select empno,ename,job ,comm ,sal , deptno


    from emp


    where job='clerk' and comm is null


    4. 從item資料表中,找出被訂購過的產品有那幾種,並按產品編號排序。

    select distinct prodid


    from ITEM


    5. 在資料表customer中,找出客戶姓名最後一個字為「S」者。

    select CUSTID , NAME ,phone as '電話',city


    from CUSTOMER


    where NAME like '%s'

    2010年5月11日 星期二

    5/12 Linux--SHELL Homewrk3

    <1>設計一個名為addfiles的script,可自命令列讀取參數產生檔案allfile,如下,
    每加入一個檔案,隔2秒,如果重覆執行,則覆蓋原檔案。
     
    #!/bin/bash
    allfile=$1
    
    rm -f $allfile
    touch $allfile
    shift
    for x in $@
    do
    date +%F\ %T >> $allfile
    cat $x >> $allfile
    sleep 2
    done
    
    cat $allfile
    
    #一開始嘗試直接用$1去寫 但會出現錯誤 
    exit 0 
     
     
    <2>設計一個名為mycal的script,使其可以接收三個數字參數,第一、三個參數為數字
    ,第二個參數為運算子(+-*/其中之一)配合case命令,計算數字運算的結果,並將其結
    果顯示出來,如果參數個數不夠或太多,就不執行運算,而顯示一段訊息,提示出正確
    的執行方式。如果中間的運算子是/,而第三個參數是0,則顯示除數不可為0
       將各個運算功能分別寫成函數。
     
     
    #!/bin/bash
    
    aaa()
    {
     echo `expr $1 $2 $3 `
    }
    
    case "$2" in
    "+")
    aaa $1 $2 $3
    ;;
    "-")
    aaa $1 $2 $3
    ;;
    "*")
    echo `expr $1 \* $3`
    ;;
    "/")
    if [ $3 -eq 0 ]
    then 
    echo 無法計算:除數不可為0
    else 
    aaa $1 $2 $3
    fi
    ;;
      
    esac
    
    exit 0 
     
    <3>設計一個名為manymaxmin的script,使其可以接收不固定的多個數字參數,顯示數
    字中最大的及最小的,如果都一樣大,則顯示都一樣大。 
    #!/bin/bash
    
    max="$1"
    min="$1"
    
    for x in $@
    do
      if [ $x -gt $max ]
      then
      max=$x
      else
        if [ $x -lt $min ]
        then 
         min=$x
        else
    continue
    fi
    fi
    done
    
    echo "max=$max"
    echo "min=$min"
    
    if [ $max -eq $min ]
    then
    echo "equal"
    fi
    
    exit 0
     
    <4>設計一個名為createmyfiles的script,以迴圈配合touch指令,產生十個檔案,
    檔名分別為myprog1.c,myprog2.c,...,myprog10.c。 
     
     #!/bin/bash
    
    for ((x=1;x<=10;x++))
    do
    touch myprog$x.c
    done
    
    exit 0
     
     
    <5>設計一個名為lastfiles的script,顯示目前目錄中最近被修改的n個檔案檔名。
     #!/bin/bash
    
    ls -t |head -$1 |nl
    
    exit 0
     
     
    <6>設計一個名為mvfiles的script,可以將所有副檔名為.c檔案,副檔名更名為.cpp,
    更名前後的副檔名均自命令列輸入。 並將更名的結果顯示出來。
    #!/bin/bash
    
    for file in *$1
    do
      mv $file `basename $file $1`$2
      echo "renamed $file to `basename $file $1`$2"
    done
    exit 0
    後面兩次的shell真的還滿難的 得再多花點時間練習
    加油加油! 
    
    

    2010年5月9日 星期日

    5/9 ISSUU使用方法

    ISSUU網頁可以將你的PDF檔作上傳並且類似像一本書的感覺
    以下為介紹如何使用

    • 進入ISSUU網頁,先進行註冊,點選Sign up
              之後會寄封信到信箱 ,點選信做啟用帳號的動作

    http://issuu.com/explore








    • 帳號註冊完 ,點選  UPLOAD DOCUMENT作上傳檔案的動作

    • 將要上傳的檔案作編輯,輸入各個相關資訊

    其他欄位都還好,而Keywords欄位要注意的是必須輸入兩個關鍵字並已","隔開
    Info Link可不需填寫

    • 上傳完畢後可去My Library看所上傳的文件,在My Library 等的時間有時候會很久




    • 將上傳的文件作OPEN,之後點選"Embed" ,在裡面可以發現有Embed code,利用此語法便可將文件發表。






    2010年5月7日 星期五

    5/7 Linux--SHELL Homewrk2

    <1>設計一個名為addtwo的script,使其可以接收兩個數字參數,並將其相加後的結果
    顯示出來,如果參數個數不夠或太多,就不執行運算,而顯示一段訊息,提示出正確的
    執行方式必須給兩個參數。
    #!/bin/bash
    
    if [ -n "$3" ]
    then 
    echo "addtwo number1 number2"
    else 
    if [ -z "$2" ]
    then
    echo "addtwo number1 number2"  
    else expr $1 + $2
    fi
    fi
    
    exit 0
    <2>設計一個名為mycal的script,使其可以接收三個數字參數,第一、三個參數為數字
    ,第二個參數為運算子(+-*/其中之一)以多層的if計算其結果,並將其結果顯示出來,
    如果參數個數不夠或太多,就不執行運算,而顯示一段訊息,提示出正確的執行方式。
    如果中間的運算子是/,而第三個參數是0,則顯示除數不可為0
    #!/bin/bash
    
    case "$2" in
    "+")
    expr $1 + $3
    ;;
    "-")
    expr $1 - $3
    ;;
    "*")
    expr $1 \* $3
    ;;
    "/")
    if [ $3 -eq 0 ]
    then 
    echo 無法計算:除數不可為0
    else 
    expr $1 / $3
    fi
    ;;
      
    esac
    
    exit 0
    <3>設計一個名為getmax的script,使其可以接收兩個數字參數,將較大的數顯示出來
    ,如果都一樣大,則顯示都一樣大。
     
    #!/bin/bash
    
    if test $1 -eq $2
    then
    echo "Equals"
    else
    if test $1 -lt $2
    then
    echo "max =$2"
    else
    echo "max =$1"
    fi
    fi
    exit 0
    <4>設計一個名為checkfile的script,使其可以接收一個檔案名稱作為參數,若此名稱
    不是目前工作目錄的檔案或目錄,則顯示此名稱不存在,如果是檔案,則顯示其檔案內容
    ,如果是一目錄則顯示此目錄內的清單。
    #!/bin/bash
    
    if [ -e "$1" ]
    then
    if [ -f "$1" ]
    then
    cat $1
    elif [ -d "$1" ]
    then
    ls -l $1
    else
    echo "找不到檔案或資料夾"
    fi
    else
    echo "找不到檔案或資料夾"
    fi
    
    exit 0
    <5>設計一個名為newerfile的script,使其可以接收兩個檔案名稱作為參數,並將日期
    較新的檔案名稱顯示出來。
    #!/bin/bash
    
    if test $1 -nt $2
    then
    echo $1 較新
    else echo $2 較新
    fi
    
    exit 0
    <6>設計一個名為avglen的script,使其可以接收一個檔案名稱(文字檔)作為參數,計
    算此檔平均每一列有多少bytes。
       提示:使用wc -l < 檔名; 用man查一下wc的用法 
     
    #!/bin/bash
    if  [ -f "$1" ]
    then
    echo "平均byte數為:`expr $(wc -c < $1 ) / $(wc -l < $1)`"
    else
    echo haha
    fi
    
    exit 0
    <7>設計一個名為createtodayfile的script,以touch指令產生一個檔案,檔名中
    含有今天的日期,例如myfile20090706.txt。
       提示:date +%Y...., 其餘date的日期格式, 請以man指令查詢
    #!/bin/bash
    
    file=$1
    
    echo -n "請輸入檔案名稱:"
    read file
    
    touch ${file}$(date +%Y%m%d)\.txt
    
    exit 0