作者: admin

  • SQL命令大全

    –語句功能
    –數據操作

     
    SELECT –從數據庫表中檢索數據行和列
    INSERT –向數據庫表添加新數據行
    DELETE –從數據庫表中刪除數據行
    UPDATE –更新數據庫表中的數據
    –數據定義
    CREATE TABLE –創建一個數據庫表
    DROP TABLE –從數據庫中刪除表
    ALTER TABLE –修改數據庫表結構
    CREATE VIEW –創建一個視圖
    DROP VIEW –從數據庫中刪除視圖
    CREATE INDEX –為數據庫表創建一個索引
    DROP INDEX –從數據庫中刪除索引
    CREATE PROCEDURE –創建一個存儲過程
    DROP PROCEDURE –從數據庫中刪除存儲過程
    CREATE TRIGGER –創建一個觸發器
    DROP TRIGGER –從數據庫中刪除觸發器
    CREATE SCHEMA –向數據庫添加一個新模式
    DROP SCHEMA –從數據庫中刪除一個模式
    CREATE DOMAIN –創建一個數據值域
    ALTER DOMAIN –改變域定義
    DROP DOMAIN –從數據庫中刪除一個域
    –數據控制
    GRANT –授予用戶訪問權限
    DENY –拒絕用戶訪問
    REVOKE –解除用戶訪問權限
    –事務控制
    COMMIT –結束當前事務
    ROLLBACK –中止當前事務
    SET TRANSACTION –定義當前事務數據訪問特徵
    –程序化SQL
    DECLARE –為查詢設定游標
    EXPLAN –為查詢描述數據訪問計劃
    OPEN –檢索查詢結果打開一個游標
    FETCH –檢索一行查詢結果
    CLOSE –關閉游標
    PREPARE –為動態執行準備SQL語句
    EXECUTE –動態地執行SQL語句
    DESCRIBE –描述準備好的查詢
    —局部變量
    declare @id char(10)
    –set @id = ‘10010001’
    select @id = ‘10010001’
    —全局變量
    —必須以@@開頭
    –IF ELSE
    declare @x int @y int @z int
    select @x = 1 @y = 2 @z=3
    if @x > @y
    print ‘x > y’ –打印字符串’x > y’
    else if @y > @z
    print ‘y > z’
    else print ‘z > y’
    –CASE
    use pangu
    update employee
    set e_wage =
    case
    when job_level = ‘1’ then e_wage*1.08
    when job_level = ‘2’ then e_wage*1.07
    when job_level = ‘3’ then e_wage*1.06
    else e_wage*1.05
    end
    –WHILE CONTINUE BREAK
    declare @x int @y int @c int
    select @x = 1 @y=1
    while @x < 3
    begin
    print @x –打印變量x的值
    while @y < 3
    begin
    select @c = 100*@x + @y
    print @c –打印變量c的值
    select @y = @y + 1
    end
    select @x = @x + 1
    select @y = 1
    end
    –WAITFOR
    –例等待1小時2分零3秒後才執行SELECT語句
    waitfor delay ’01:02:03′
    select * from employee
    –例等到晚上11點零8分後才執行SELECT語句
    waitfor time ’23:08:00′
    select * from employee

    ***SELECT***
    select *(列名) from table_name(表名) where column_name operator value
    ex:(宿主)
    select * from stock_information where stockid = str(nid)
    stockname = ‘str_name’
    stockname like ‘% find this %’
    stockname like ‘[a-zA-Z]%’ ——— ([]指定值的範圍)
    stockname like ‘[^FM]%’ ——— (^排除指定範圍)
    ———只能在使用like關鍵字的where子句中使用通配符)
    or stockpath = ‘stock_path’
    or stocknumber < 1000
    and stockindex = 24
    not stocksex = ‘man’
    stocknumber between 20 and 100
    stocknumber in(10,20,30)
    order by stockid desc(asc) ———排序,desc-降序,asc-升序
    order by 1,2 ——— by列號
    stockname = (select stockname from stock_information where stockid = 4)
    ———子查詢
    ———除非能確保內層select只返回一個行的值,
    ———否則應在外層where子句中用一個in限定符
    select distinct column_name form table_name ——— distinct指定檢索獨有的列值,不重複
    select stocknumber ,”stocknumber + 10″ = stocknumber + 10 from table_name
    select stockname , “stocknumber” = count(*) from table_name group by stockname
    ——— group by將表按行分組,指定列中有相同的值
    having count(*) = 2 ——— having選定指定的組
    select *
    from table1, table2
    where table1.id *= table2.id ——–左外部連接,table1中有的而table2中沒有得以null表示
    table1.id =* table2.id ——–右外部連接
    select stockname from table1
    union [all] —– union合併查詢結果集,all-保留重複行
    select stockname from table2
    ***insert***
    insert into table_name (Stock_name,Stock_number) value (“xxx”,”xxxx”)
    value (select Stockname , Stocknumber from Stock_table2)—value為select語句
    ***update***
    update table_name set Stockname = “xxx” [where Stockid = 3]
    Stockname = default
    Stockname = null
    Stocknumber = Stockname + 4
    ***delete***
    delete from table_name where Stockid = 3
    truncate table_name ———–刪除表中所有行,仍保持表的完整性
    drop table table_name —————完全刪除表
    ***alter table*** —修改數據庫表結構
    alter table database.owner.table_name add column_name char(2) null …..
    sp_help table_name —-顯示表已有特徵
    create table table_name (name char(20), age smallint, lname varchar(30))
    insert into table_name select ……… —–實現刪除列的方法(創建新表)
    alter table table_name drop constraint Stockname_default —-刪除Stockname的default約束
    ***function(/*常用函數*/)***
    —-統計函數—-
    AVG –求平均值
    COUNT –統計數目
    MAX –求最大值
    MIN –求最小值
    SUM –求和
    –AVG
    use pangu
    select avg(e_wage) as dept_avgWage
    from employee
    group by dept_id
    –MAX
    –求工資最高的員工姓名
    use pangu
    select e_name
    from employee
    where e_wage =
    (select max(e_wage)
    from employee)
    –STDEV()
    –STDEV()函數返回表達式中所有數據的標準差
    –STDEVP()
    –STDEVP()函數返回總體標準差
    –VAR()
    –VAR()函數返回表達式中所有值的統計變異數
    –VARP()
    –VARP()函數返回總體變異數
    —-算術函數—-
    /***三角函數***/
    SIN(float_expression) –返回以弧度表示的角的正弦
    COS(float_expression) –返回以弧度表示的角的餘弦
    TAN(float_expression) –返回以弧度表示的角的正切
    COT(float_expression) –返回以弧度表示的角的餘切
    /***反三角函數***/
    ASIN(float_expression) –返回正弦是FLOAT值的以弧度表示的角
    ACOS(float_expression) –返回餘弦是FLOAT值的以弧度表示的角
    ATAN(float_expression) –返回正切是FLOAT值的以弧度表示的角
    ATAN2(float_expression1,float_expression2)
    –返回正切是float_expression1 /float_expres-sion2的以弧度表示的角
    DEGREES(numeric_expression)
    –把弧度轉換為角度返回與表達式相同的數據類型可為
    –INTEGER/MONEY/REAL/FLOAT類型
    RADIANS(numeric_expression) –把角度轉換為弧度返回與表達式相同的數據類型可為
    –INTEGER/MONEY/REAL/FLOAT類型
    EXP(float_expression) –返回表達式的指數值
    LOG(float_expression) –返回表達式的自然對數值
    LOG10(float_expression)–返回表達式的以10為底的對數值
    SQRT(float_expression) –返回表達式的平方根
    /***取近似值函數***/
    CEILING(numeric_expression) –返回>=表達式的最小整數返回的數據類型與表達式相同可為
    –INTEGER/MONEY/REAL/FLOAT類型
    FLOOR(numeric_expression) –返回<=表達式的最小整數返回的數據類型與表達式相同可為
    –INTEGER/MONEY/REAL/FLOAT類型
    ROUND(numeric_expression) –返回以integer_expression為精度的四捨五入值返回的數據
    –類型與表達式相同可為INTEGER/MONEY/REAL/FLOAT類型
    ABS(numeric_expression) –返回表達式的絕對值返回的數據類型與表達式相同可為
    –INTEGER/MONEY/REAL/FLOAT類型
    SIGN(numeric_expression) –測試參數的正負號返回0零值1正數或-1負數返回的數據類型
    –與表達式相同可為INTEGER/MONEY/REAL/FLOAT類型
    PI() –返回值為π即3.1415926535897936
    RAND([integer_expression]) –用任選的[integer_expression]做種子值得出0-1間的隨機浮點數

    —-字符串函數—-
    ASCII() –函數返回字符表達式最左端字符的ASCII碼值
    CHAR() –函數用於將ASCII碼轉換為字符
    –如果沒有輸入0 ~ 255之間的ASCII碼值CHAR函數會返回一個NULL值
    LOWER() –函數把字符串全部轉換為小寫
    UPPER() –函數把字符串全部轉換為大寫
    STR() –函數把數值型數據轉換為字符型數據
    LTRIM() –函數把字符串頭部的空格去掉
    RTRIM() –函數把字符串尾部的空格去掉
    LEFT(),RIGHT(),SUBSTRING() –函數返回部分字符串
    CHARINDEX(),PATINDEX() –函數返回字符串中某個指定的子串出現的開始位置
    SOUNDEX() –函數返回一個四位字符碼
    –SOUNDEX函數可用來查找聲音相似的字符串但SOUNDEX函數對數字和漢字均只返回0值
    DIFFERENCE() –函數返回由SOUNDEX函數返回的兩個字符表達式的值的差異
    –0兩個SOUNDEX函數返回值的第一個字符不同
    –1兩個SOUNDEX函數返回值的第一個字符相同
    –2兩個SOUNDEX函數返回值的第一二個字符相同
    –3兩個SOUNDEX函數返回值的第一二三個字符相同
    –4兩個SOUNDEX函數返回值完全相同

    QUOTENAME() –函數返回被特定字符括起來的字符串
    /*select quotename(‘abc’, ‘{‘) quotename(‘abc’)
    運行結果如下
    ———————————-{
    {abc} [abc]*/
    REPLICATE() –函數返回一個重複character_expression指定次數的字符串
    /*select replicate(‘abc’, 3) replicate( ‘abc’, -2)
    運行結果如下
    ———– ———–
    abcabcabc NULL*/
    REVERSE() –函數將指定的字符串的字符排列順序顛倒
    REPLACE() –函數返回被替換了指定子串的字符串
    /*select replace(‘abc123g’, ‘123’, ‘def’)
    運行結果如下
    ———– ———–
    abcdefg*/
    SPACE() –函數返回一個有指定長度的空白字符串
    STUFF() –函數用另一子串替換字符串指定位置長度的子串

    —-數據類型轉換函數—-
    CAST()函數語法如下
    CAST() (<expression> AS <data_ type>[ length ])
    CONVERT()函數語法如下
    CONVERT() (<data_ type>[ length ], <expression> [, style])
    select cast(100+99 as char) convert(varchar(12), getdate())
    運行結果如下
    —————————— ————
    199 Jan 15 2000
    —-日期函數—-
    DAY() –函數返回date_expression中的日期值
    MONTH() –函數返回date_expression中的月份值
    YEAR() –函數返回date_expression中的年份值
    DATEADD(<datepart> ,<number> ,<date>)
    –函數返回指定日期date加上指定的額外日期間隔number產生的新日期
    DATEDIFF(<datepart> ,<number> ,<date>)
    –函數返回兩個指定日期在datepart方面的不同之處
    DATENAME(<datepart> , <date>) –函數以字符串的形式返回日期的指定部分
    DATEPART(<datepart> , <date>) –函數以整數值的形式返回日期的指定部分
    GETDATE() –函數以DATETIME的缺省格式返回系統當前的日期和時間
    —-系統函數—-
    APP_NAME() –函數返回當前執行的應用程序的名稱
    COALESCE() –函數返回眾多表達式中第一個非NULL表達式的值
    COL_LENGTH(<‘table_name’>, <‘column_name’>) –函數返回表中指定字段的長度值
    COL_NAME(<table_id>, <column_id>) –函數返回表中指定字段的名稱即列名
    DATALENGTH() –函數返回數據表達式的數據的實際長度
    DB_ID([‘database_name’]) –函數返回數據庫的編號
    DB_NAME(database_id) –函數返回數據庫的名稱
    HOST_ID() –函數返回服務器端計算機的名稱
    HOST_NAME() –函數返回服務器端計算機的名稱
    IDENTITY(<data_type>[, seed increment]) [AS column_name])
    –IDENTITY()函數只在SELECT INTO語句中使用用於插入一個identity column列到新表中
    /*select identity(int, 1, 1) as column_name
    into newtable
    from oldtable*/
    ISDATE() –函數判斷所給定的表達式是否為合理日期
    ISNULL(<check_expression>, <replacement_value>) –函數將表達式中的NULL值用指定值替換
    ISNUMERIC() –函數判斷所給定的表達式是否為合理的數值
    NEWID() –函數返回一個UNIQUEIDENTIFIER類型的數值
    NULLIF(<expression1>, <expression2>)
    –NULLIF函數在expression1與expression2相等時返回NULL值若不相等時則返回expression1的值

    ————————————————– ——————————
    sql中的保留字
    action add aggregate all
    alter after and as
    asc avg avg_row_length auto_increment
    between bigint bit binary
    blob bool both by
    cascade case char character
    change check checksum column
    columns comment constraint create
    cross current_date current_time current_timestamp
    data database databases date
    datetime day day_hour day_minute
    day_second dayofmonth dayofweek dayofyear
    dec decimal default delayed
    delay_key_write delete desc describe
    distinct distinctrow double drop
    end else escape escaped
    enclosed enum explain exists
    fields file first float
    float4 float8 flush foreign
    from for full function
    global grant grants group
    having heap high_priority hour
    hour_minute hour_second hosts identified
    ignore in index infile
    inner insert insert_id int
    integer interval int1 int2
    int3 int4 int8 into
    if is isam join
    key keys kill last_insert_id
    leading left length like
    lines limit load local
    lock logs long longblob
    longtext low_priority max max_rows
    match mediumblob mediumtext mediumint
    middleint min_rows minute minute_second
    modify month monthname myisam
    natural numeric no not
    null on optimize option
    optionally or order outer
    outfile pack_keys partial password
    precision primary procedure process
    processlist privileges read real
    references reload regexp rename
    replace restrict returns revoke
    rlike row rows second
    select set show shutdown
    smallint soname sql_big_tables sql_big_selects
    sql_low_priority_updates sql_log_off sql_log_update sql_select_limit
    sql_small_result sql_big_result sql_warnings straight_join
    starting status string table
    tables temporary terminated text
    then time timestamp tinyblob
    tinytext tinyint trailing to
    type use using unique
    unlock unsigned update usage
    values varchar variables varying
    varbinary with write when
    where year year_month zerofill

  • Yahoo搜索退出,微軟Bing迎來新世代

    7月29日消息,微軟與雅虎終於就長期懸而未決的搜索業務合作達成了協議,根據協議,在未來的10年裡Yahoo的搜索結果將採用微軟最新一代Bing搜索引擎技術,這意味著Yahoo搜索引擎將不復存在,而Bing搜索引擎將成為僅次於Google的第二大搜索引擎;根據最新數據Google佔整個搜索市場份額的65%,而Yahoo與Bing各佔搜索市場份額的20%和10%;而微軟與雅虎合作之後將占到整個搜索市場份額的30%。

    因此,對於共享軟件行業以及整個網絡營銷行業來說,Yahoo搜索引擎優化將不復存在,而針對於Bing的搜索引擎優化將逐。為了確保新版搜索引擎Bing成為全球化品牌,微軟已經申請了能想到的幾乎所有國家的地理域名。
    bing 這款全新的搜索引擎此前的內側代號為Kumo,如今則被命名為Bing。微軟希望用Bing來代替現有的Live搜索。
    除了通用域名bing.com外,WhoIs查詢結果還顯示,微軟已經拿下瞭如下國家和地區的地理域名:澳大利亞(bing.com.au)、新西蘭(bing.co.nz)、英國(bing.co .uk)、加拿大(bing.ca)、新加坡(bing.sg)、香港(bing.hk)、德國(bing.de)和法國(bing.fr)等。除此之外,微軟還於今年早些時候為Bing申請了註冊商標。
    微軟首席執行官史蒂夫-鮑爾默(Steve Ballmer)將在《華爾街日報》舉辦的“All Things D”大會上揭開Bing的神秘面紗。
    為了確保新的名稱能夠得到廣泛認可,微軟將斥資8000萬至1億美元在全美範圍內的電視、廣播、報紙、互聯網和戶外媒體投放廣告。其創意代理商為WPP旗下的JWT(智威湯遜)。至於美國之外的地區是否會投放規模較小的廣告,目前尚不清楚。 《廣告時代》雜誌稱,微軟這一支出超過大部分消費產品發佈時的廣告支出。谷歌2008年全年的廣告支出也不過2500萬美元。
    另外,微軟的廣告中也不會提及谷歌,而且還會將Bing作為一款全新的具有革命意義的產品來推廣。

     
    Bing-特點
    1. Bing比Live Search速度更快、相關度更好
    當搜索LiveSide時,必應Bing也會在左側的Explorer Pane中顯示更準確的相關搜索(可對比Live Search右側的相關搜索)。
    今早Kip和Stefan Weitz談及了必應Bing的性能改進,甚至是預覽版,Bing的搜索速度也比Live Search更快。你使用時應該也能體會到(前提是你使用過Live Search)。
    2. Bing與Powerset的整合比預想的更深入
    語義搜索,或者說了解用戶的搜索意圖,是搜索引擎所要完成的“下一件大事”之一。我們已知Powerset語義搜索技術(主要針對Wikipedia)將整合至Bing。儘管並不是所有的搜索結果都是由Powerset技術提供,但至少Wikipedia等參考信息,以及Reference Group等新特性是深度基於Powerset技術的。
    3. Bing界面更統一、更酷
    Bing擁有非常統一的用戶界面,這與我們通常見到的微軟產品並不一樣,要知道Windows Live產品仍存在三套用戶界面共存的情況
    在未輸入任何關鍵詞並點擊圖片搜索後,必應Bing將顯示首頁背景“熱點Hotspots”的相關圖片搜索(效果如上圖)。
    另外,Bing首頁的背景翻頁功能也將在必應Bing正式上線當天向全球用戶開放。
    4.精煉搜索結果更輕鬆

    貫穿Bing搜索引擎的左側Explorer Pane還包括Quick Tabs新特性,點擊不同的關鍵詞相關類別將篩選出更精煉的搜索結果。比如下圖中,搜索Google結果頁面左側的News、Downloads、Company Background等類別,點擊某類別後僅顯示與該類別相關的結果:
    5.保存及分享Bing搜索歷史
    這是Bing的新功能之一,Bing的搜索歷史不僅能夠永久保存至SkyDrive或本地文件夾,還能夠通過Windows Live, Facebook或E-mail分享。

  • Linux鳥哥私房菜-基礎學習篇(第二版) 免费下載

    Linux鳥哥私房菜-基礎學習篇(第二版)


    圖書分類:系統管理>> Linux

    圖書語言:繁體/簡體中文
    文件大小: 34.37M
    發布日期: 2009-7-10 13:54:00
    圖書簡介:本書全面而詳細地介紹了Linux操作系統。全書分為5個部分:第一部分著重說明Linux的起源及功能,如何規劃和安裝Linux主機;第二部分介紹Linux的文件系統、文件、目錄與磁盤的管理;第三部分介紹文字模式接口shell和管理系統的好幫手shell腳本,另外還介紹了文字編輯器vi和vim的使用方法;第四部分介紹了對於系統安全非常重要的Linux賬號的管理,以及主機系統與程序的管理,如查看進程、任務分配和作業管理;第五部分介紹了系統管理員(root)的管理事項,如了解系統運行狀況、系統服務,針對登錄文件進行解析,對系統進行備份以及核心的管理等。

    本書內容豐富全面,基本概念的講解非常細緻,深入淺出。各種功能和命令的介紹,都配以大量的實例操作和詳盡的解析。本書是初學者學習Linux不可多得的一本入門好書。打開密碼是:linuxeden

    Linux鳥哥私房菜-http://linux.vbird.org

    Linux鳥哥私房菜-基礎學習篇(第二版)  點擊:我确认要下载!
     

     

     無法下載、網址錯誤請下載以下全部:

     鸟哥的Linux私房菜.part01

    鸟哥的Linux私房菜.part02

    鸟哥的Linux私房菜.part03

    鸟哥的Linux私房菜.part04

     
     
     
  • ithome IT人物:從機車行黑手變成程式開發的黑手

     
    文/李世平 (記者) 2009-05-01

    普奇科技(Potix)框架開發工程組長陳威亨做過車行學徒,也在電子廠當過操作機臺的作業員,憑藉過人的意志力,現在他搖身變為知名軟體開發工具工程師。
     

    IT人物─陳威亨

    普奇科技框架開發工程組長
    ●學經歷:中華大學企業管理學系
    ●工作內容:ZK產品趨勢研究、設計、效能強化及技術支援,並負責領導開發工程組員


     

    曾經有人說,臺灣的軟體業沒前途,在臺灣當程式設計師不如去賣雞排。然而普奇科技已走出一條自己的路,該公司的主力產品ZK,是一套開放源碼Ajax開發框架,從2005年開始研發至今,已有多家財星五百大企業採用,可以說是在臺灣土生土長,從灰姑娘變成大明星的知名軟體。

    不僅如此,讓人更意外的是,在普奇科技擔任開發工程組長的陳威亨本身也是個傳奇,他和他親手開發的產品一樣,曾經是不被大家看好的「壞學生」,後來卻能成為軟體開發團隊的領導者。

    辭去穩定的電子公司工作,走上IT之路
    在求學時代,陳威亨一直都不喜歡讀書。雖然高職念的是資訊科,不過由於貪玩,他沒有吸收書本上的知識,到了大學畢業,對軟體或電腦還是完全沒有概念。陳威亨回憶起年少輕狂,還是覺得有些不好意思。他說在讀高職時,每天下課就是想要騎車往外跑,所以即使資訊科念到畢業,對電腦的認知也只限於點滑鼠上上網而已。那時因為喜歡騎機車,所以也開始對改車有興趣,於是就經常蹺課到車行當學徒,學習如何改車。

    在車行當了2年黑手,並服完兵役的陳威亨,本來想在退伍後繼續待在車行,老闆卻認為他還年輕,應該要試著挑戰自己,所以就開始轉換跑道。

    找工作時處處碰壁的陳威亨,最後終於在朋友的介紹之下,到電子廠擔任作業員。這一待就是四年,雖然陳威亨當時已經升職為幹部,只要負責故障排除,和管理操作機臺的作業員就好,下了班也完全不用再煩惱工作上的事,可以說相當輕鬆。不過由於這樣的工作發展有限,技術可替代性也高,加上做二休二的輪班制常常弄到日夜顛倒、生活不正常,幾年下來身體狀況也越來越差,於是就興起了換工作的念頭。

    起初陳威亨並不清楚自己可以的發展方向,不過知道有朋友參加了IT職業訓練的培訓課程,上課半年之後就順利找到工作,他聽了很心動,也去報名資策會的Java程式設計班。

    經過半年,陳威亨已經對程式設計有了基本的概念,也在畢業時考取了SCJP和SCWCD等兩張Java證照,並順利進入軟體公司擔任程式設計師。陳威亨對此感到很自豪,他說,當時同班的同學中,只有2個人擁有這些證照,不過一位是上課之前就已經取得SCJP,上完課再考SCWCD,算是有既定基礎的學生,他卻是對程式完全一竅不通,從頭開始學。

    自覺要有紮實的基礎,遇到問題才能迎刃而解
    在順利進入IT界之後,陳威亨有些應接不暇,主要是工作上無法配合同事的程度,所以對於先前沒有好好念書感到相當後悔,他自覺不能因為找到工作而鬆懈下來,反而更加倍努力。

    陳威亨說,像他這樣的門外漢,如果想要成為軟體工程師,最重要的就是一定要把基礎語言學好,所以他決心把所有Java的書要看完。恰好先前在意藍科技工作時,同事郭易杰組長很愛買書,陳威亨也經常跟他借書,就算看不懂,也強迫自己翻閱幾次,這樣如果日後遇到問題,才會想到曾經在某本書中看過類似的問題,然後再去把書找出來查,而不致於連答案在哪都不知道。

    不過中文參考書畢竟數量有限,因此他接下來也試著讀原文書,然而,他英文程度差,甚至連「This is a book.」這種簡單的句子也都聽不懂。陳威亨說,剛開始看文件非常痛苦,一張A4大小的英文技術文章,可能就要查超過一百個單字,查完之後又常常因為單字的意義和組成片語之後完全不同,而產生許多誤解。

    在加入普奇科技後,ZK的工作團隊需要面對許多外國客戶,所以只能用英文溝通,對語文能力的挑戰就更大了。不過陳威亨認為,即使一開始很辛苦,但既然當初下定決心要往IT界發展,自然要強迫自己學好英文。於是他在下班之後,每天回家至少念一小時英文,周末則是到外面去運動,邊跑步邊聽英文,或是整天就待在家看英文書。

    除了程式和英文能力外,邏輯觀念也是程式設計師必備的,陳威亨認為,邏輯觀念比較缺乏標準的學習教材,所以可能有些是要靠天份。像當初普奇科技在徵才時,他就先通過了類似GMAT的邏輯和推理測驗,相較於所有應徵者,他即使學歷不如人,不過依然還是可以解出那些他們回答不出的題目。

    自認相當聰明的陳威亨把寫程式、學英文這兩件事結合在一起,成為他個人學習的小技巧,像是寫程式在宣告變數時,故意用不熟的單字當成變數名稱,這樣一來,每次只要用到變數,就要拼一次這個單字,等到一串程式碼寫完,單字也自然背起來了。

    雖然年輕時貪玩,不過陳威亨用自己的決心加倍努力,終於能將過去遺漏的知識彌補回來,而這樣認真的態度,也受到上司的肯定。陳威亨說,雖然在前公司只待了1年半,在普奇科技也不過2年,不過主管都認為他已經有足夠的實力,可以領導其他新進員工了。

    在修機車和機臺的過程中,累積尋找關鍵問題的實力
    開始寫程式之前,陳威亨是繞了一大圈才找到這項目標並培養出興趣。然而,先前的經驗對現在的工作也很有幫助,例如在車行當學徒或是電子廠修機臺,看起來和寫程式沒什麼關係,不過對他來說,這些工作和程式Debug的過程其實是很類似的。

    陳威亨表示,剛開始在車行當學徒時對機車完全不了解,只能做最基本的洗車、換機油等工作,後來才漸漸認識每一款機車的構造,以及該如何使用維修工具。一個有經驗的修車師傅,會先檢查並判斷車子故障的原因,然後一次將需要用到的工具全部準備好才開始修;而沒經驗的學徒,常常會邊修邊看螺絲、螺帽的規格,然後再跑去工具箱裡拿。這中間的差別就在於基本功培養是否紮實。

    修到後來,陳威亨常常只要一看是哪個廠牌的哪個車型,就能猜到大概是什麼地方有問題了,因為每個車型在出廠時,總會有固定的地方設計不佳,有經驗的師傅可以立刻猜出答案,而不用從頭檢查火星塞、油線、皮帶等。

    在寫程式時也有類似的情形,像是寫網頁框架時,如果遇到不遵守W3C網頁標準規範的瀏覽器IE 6,就容易出現排版異常,這時有經驗的程式設計師就會在程式碼中加一行「zoom: 1」指令,強迫瀏覽器重新計算程式碼內容,通常有60%的機率能得到與原本預期相同的結果。

    對於現在很流行的改機車排氣管,陳威亨認為其實對機車的性能幫助不大。他說,雖然改排氣管是最不傷引擎的做法,不過只是造型變化而已,要提升車子的性能,還是要改引擎、化油器等等零件,像他之前騎的50cc機車,改完之後甚至能騎到時速130公里。不過陳威亨也強調,改車只是為了一時的快感而已,其實對車本身的傷害很大,耐用度也會下降。這是由於車體本來就是設計給小馬力的引擎用的,改完之後可能皮帶、彈簧等零件承受不了太高的轉速或馬力,自然損壞的機會也高。

    在程式開發上也有類似狀況。像是有些前端網頁工程師會用CSS hack語法來寫網頁,雖然不用遵照標準可能比較快又方便,但像現在所有瀏覽器都開始遵照標準了,這樣的網頁就會有問題。文⊙李世平

  • ithome新聞:微軟開始接受行動應用程式提交

    文/陳曉莉 (編譯) 2009-07-28

     
    微軟行動平台產品管理總監Todd Brix說明,認證約需10個工作天,由於微軟已釋出相關的驗證工具及標準,因此Brix認為驗證結果將不會有太多意外之事。

     
     
    微軟宣布開始接受行動應用程式的提交,來自29個國家的開發人員或獨立軟體開發商(ISV)可開始上傳應用程式、遊戲或工具到Windows Marketplace平台上,微軟也將啟動應用程式驗證程序。

    微軟行動平台產品管理總監Todd Brix說明,認證約需10個工作天,開發人員可透過儀表盤檢視程式驗證過程,以及提供相關的產品資訊讓微軟協助行銷,以觸及目前市場上逾3000萬的Windows Mobile裝置用戶。

    如果程式未通過驗證,微軟亦會提供詳細的報告說明原因,由於微軟已釋出相關的驗證工具及標準,因此Brix認為驗證結果將不會有太多意外之事。微軟強調,這是因為開發人員曾抗議蘋果的驗證程序不夠透明化。

    Brix指出,微軟的策略很簡單,就是要創造一個全球性的Windows Phones市場,讓開發人員及使用者得以銷售及購買高品質的應用程式,打造一個清楚的程序及機會,供開發人員與ISV得以靠創新賺錢,使用者也將有多種付費的管道。

    為了鼓勵程式開發人員,微軟舉辦了Race to Market Challenge競賽,自Windows Marketplace for Mobile上線到今年底,將評選出最受歡迎的免費應用程式、最有價值、最有用,以及最有趣的應用程式,獎品除了獎座及免費行銷及推廣外,還包括微軟的Surface觸控式電腦一台。

    根據市場研究公司Juniper的預估,由於有愈來愈多鎖定大眾市場的應用程式商店,估計到2014年行動應用程式年度下載量將達到200億。

    微軟自Windows Mobile 6.5開始嵌入Windows Marketplace for Mobile服務,讓未來的Windows Mobile裝置皆可透過該服務直接瀏覽及下載應用程式。Windows Marketplace for Mobile預計在今年下半年上線,首款採用Windows Mobile 6.5作業系統的行動電話則將在今年秋天現身。(編譯/陳曉莉) 

    引用地址:http://ithome.com.tw/itadm/article.php?c=56215

  • 微軟推免費office 揚言功能勝Google

    【明報專訊】微軟的文書處理軟件Office,一直被視為微軟旗下會生金蛋的雞,但在Google網上辦公室軟件Google Docs的強勢進攻下,微軟也意識到面臨嚴峻挑戰。為了作出反擊,微軟也決定向「雲端程式」進軍,宣布會於明年推出免費網上版Office軟件,聲稱功能比Google Docs更多。
    界面一樣 明年推出
    網上版Office包括文字處理、試算表、簡報軟件及一個筆記程式,費用全免,使用的界面將和現時的Office甚為相似。微軟表示,全球Windows Live的4億用戶將可免費使用網上版Office。微軟將於明年上半年推出Office 2010時,一同發布網上版Office。微軟同時亦會推出網上商業版Office,但會向商業用戶收費。這將是微軟和Google這兩大科技巨擘的新戰場。Google剛在上周宣布推出免費作業系統挑戰視窗,微軟上月則發布新搜索引擎Bing,抗衡Google。分析師埃格伯特(Katherine Egbert)說:「微軟最終還是透過以網絡為基礎的世界進行改革。我們先是見到Bing,現在我們看到網上版Office。」另一名分析師麥克什利(Sheri McLeish)預計,若現時上億Office用戶湧往使用網上版Office後,微軟在網上辦公室軟件的用戶量將超越Google。

  • 數據庫初始化參數更改的注意事項

    一般只有在大型應用中或者數據據庫性能明顯下降時才需要修改這個初始化參數。所以從這個角度來講,初始化參數的調整算是Oracle數據庫中的一個高級應用。但是這也是一個Oracle數據庫管理員必須要掌握的內容。為了更高的調整數據庫的初始化參數,筆者認為管理員在了解各個初始化參數的用途以及調整規則之前,需要先了解一些初始化參數調整的一些共性的內容。具體來說,主要有以下幾個方面。
    一、需要了解哪些參數不用重新啟動即可生效。

    在Oracle數據庫中,根據生效的時間不同,可以把參數大致分為兩類。一類是必須重新啟動後才能夠修改或者生效的參數;另外一類就是修改後不用重新啟動即生效的參數。一般來說,數據庫管理員比較喜歡第二類參數,即修改後不需要重新啟動立即生效的參數。為什麼呢?因為數據庫服務器投入生產使用之後,不能夠隨意重新啟動。如果修改後需要重新啟動才能夠生效,或者需要重新啟動後才能夠修改參數,那麼在調整參數的過程中顯然需要中斷用戶的訪問,會增加停機時間。這對於數據庫部署來說,打擊會非常的大。因為從穩定性與可用性出發,數據庫管理員是以最小的停機時間為目標的。而此時人為的增加停機時間,顯然跟這個目標有衝突。所以,數據庫管理員就需要知道哪些參數是不用重新啟動就可以修改與生效的;而哪些參數則必須重新啟動才可以。這是數據庫管理員再調整參數之前首先需要知道的內容。一方面管理員可以根據這個特性,來評估停機的損失與調整參數可能帶來的收益。如果收益大於損失的話,那麼仍然有調整初始化參數的必要。二是來確定參數調整的時間。哪些不需要重新啟動,即調整參數不會導致停機的情況下,則參數的調整時間相對來說靈活一點,限制不多。但是如果需要調整重新啟動才能夠生效或者修改的參數,那麼就需要選擇一個合適的時機了。如需要選擇晚上12點以後的時間,這個時段往往使用數據庫的用戶並不是很多。當然這個時間每個起夜都可能不同。總之就是選擇一個使用數據庫用戶盡量少的時候。如此的話,才能夠在最大程度上降低數據庫停機造成的損失。

    那麼哪些參數不需用重新啟動就可以被修改呢?其實,數據庫管理員只需要查詢動態視圖,即可以知道哪些參數不用關閉或者重新啟動就可以更改。如在動態視同v$parameter中,存儲著初始化參數的值。一般來說,可以在查詢語句中加入條件issys_modifiable<>’FALSE’ or isses_modifiable<>’FALSE'(注意他們之間是or的關係,而不是and關係),最後查詢出來的參數就是不用關閉或者重新啟動數據庫就可以設置的初始化參數。同時這些參數也是可以利用ALTER SYSTEM與ALTER SESSION命令可以更改的部分初始化參數。也就是說,不用關閉或者重新啟動數據庫就可以修改的參數都可以使用上面兩個命令來進行重新設置。但是並不是說,利用這兩個命令都可以在不用重新啟動或者關閉數據庫的情況更改初始化參數。簡單的說,就是可以利用這兩個命令來更改的參數,有些需要重新啟動或者關閉數據庫,而有些則不用。

    二、根據20/80原則來確定需要更改的參數。

    Oracle數據庫中的初始化參數有上百個。無論出於什麼目的,去一一調整這些參數往往是不現實的。一個優秀的數據庫管理員,只需要掌握其中少數幾個參數的修改即可。往往掌握這幾個參數的修改方法、原則以注意事項,就可以完成大部分的數據庫維護任務。這就是20/80的規律在其作用。也就是說,只需要掌握20%的參數(其實還遠遠不到這個比例),就可以完成80%的任務(其實遠遠高於這個比例)。也就是說,10/90規則對這個Oracle初始化參數來說,可能更加的適用。總之筆者要說的就是,只需要掌握眾多初始化參數中的少數幾個即可。即使需要通過調整初始化參數來提高數據庫性能或者其他目的的,也就是在這幾個少數的初始化參數中。對於其他的參數,數據庫管理員只需要了解其用途,而不需要了解該如何調整這些參數。因為遇到的機率可以說基本沒有。

    那麼這些重要的參數到底有哪些呢?主要有以下幾個參數。最重要的一個參數就是DB_CACHE_SIZE。這是一個用來調整數據庫緩存大小的參數。在必要的時候,調整這個參數的大小,可以提高數據緩存的命中率,從而大幅度的提高數據庫的性能。第二個參數是DB_BLOCK_SIZE。這個參數主要是用來指定數據庫在建立時所默認的塊大小。如果塊設置的比較小,則有可能會發生行鏈化現象,從而降低數據庫的性能;也有可能增加數據庫的碎片,浪費表空間的存儲空間以及降低數據庫的查詢性能等等。所以根據需要有時候也要調整這個塊大小來改善數據庫的性能。第三個參數是SHARED_POOL_SIZE參數。這個參數主要是為那些數據字典緩存和共享SQL語句指定了在SGA裡所分配的內存。簡單的來說,合理配置這個參數,能夠同等的共享SQL語句。調整這個參數,也是一種優化數據庫性能的常用手段。第四個參數為SGA_MAX_SIZE參數,這個參數指定了SGA可以動態增長的最大內存。在SQLServer數據庫中也有類似的參數。一般來說,在同台數據庫服務器中若部署有多個應用服務的話,則往往需要合理配置這個參數來避免多個應用服務之間爭用內存。如果這個參數設置的不合適的話,則有時候會導致另外一種應用服務由於沒有足夠的內存而停止服務。第五個參數為LOG_CHECKPOINT_INTERVAL。這個參數主要用來設置檢查點的頻率。在每個檢查點中,數據庫系統執行數據寫出,將所有臟塊(已經修改還沒有保存到硬盤中的數據)寫入到數據庫中對應的數據文件中。默認情況下,如果在數據庫緩存中有1/4的數據緩衝區是臟緩衝區,則數據庫系統會自動執行檢查點。另外一個強制的原則就是在進行日誌切換時,也會執行檢查點。在一些特定的情況下,如建立數據倉庫,需要調整這個參數以滿足特定場合的需要。

    這五個參數是筆者這幾年工作以上遇到的最頻繁的初始化參數。基本上數據庫維護與性能調優就是圍繞著這幾個參數來的。為此筆者建議,各位數據庫管理員在學習數據庫初始化參數的調整技巧時,可以從這幾個參數出發。或者說,這幾個參數是數據庫管理員必須要掌握的。不只是簡單的了解,而是需要吃透它。只有如此,在遇到情況時,才可以判斷是否需要進行更改,以及應對在更改過程中可能出現的問題。對於其他的一些參數,筆者認為數據庫管理員只需要了解其基本用途即可。或許筆者在總結這些參數的時候,有漏掉的地方,歡迎大家來補充。以後若有機會,筆者也會像大家詳細介紹在什麼情況下該調整什麼參數;以及在調整過程中可能會遇到的麻煩。大家若對這方面的話題感興趣,可以關注筆者後面的文章。

    三、使用SPFILE來動態修改參數。

    在Oracle10G以後的版本中,還允許數據庫管理員使用一個SPFILE來存儲實例參數的動態修改。在10G以前的版本中,除非將參數手動的添加到初始參數文件中,否則動態的修改參數在數據庫重新啟動後都會丟失。這跟環境變量的設置有些類似。但是在10G以後的版本中,在這方面有了很大的改善。如開啟SPFILE機制的話,則係統就會啟用一個服務器參數文件,在內存中動態改變某些參數的時候,同時將這些改變記錄到這個服務器參數文件中。等到下次重新啟動時,服務器會讀取喜歡個服務器參數文件中的值,用來初始化數據庫系統。也就是說,從現在開始一些動態修改的參數也可以永久生效了。這對於數據庫管理員來說,無疑是一個福音。

    從以上的分析中可以看出,這個數據庫參數的調整還是一個比較複雜的工作。筆者認為,管理員在學習如何調整這個參數之前,需要先了解上面這些共性的內容。即參數修改的時間限制、最可能需要調整的參數以及如何讓動態參數永遠生效等等。這些是做好參數優化工作的基礎。

  • CIW安全分析師認證

    工作職責:
    一旦獲此認證,他(她)即有能力實施安全策略,確認安全威脅,並且可以運用防火牆和攻擊識別技術來採取相應的對策。同時這些專業人員還具備對電子商務交易和付款解決方案的部署進行管理的能力。  
    先決條件:
    如要申請此證書,申請人必須至少已經獲得以下列明的資格證書中的一種,並將有關證明文件寄往CIW中心。請訪問認證機構的網站查詢您獲得的證書是否通用。
    微軟認證的系統工程師(MCSE)2003
    Novell認證的工程師(CNE)4
    Novell認證的工程師(CNE)5
    Cisco認證的網絡專業人員(CCNP)
    Cisco認證的Internet網絡專家(CCIE)
    Linux專業協會2級(LPI)2
    SAIR 2級LCE
    申請程序:
    填寫CIW認證協議
    在授權的Prometric考試中心通過CIW網絡安全考試(1D0-570
    將您的合格的資格認證證明材料(詳見上面列明的名單)和考試分數報告傳真給CIW認證中心(傳真號碼:001-512-439-3938)