2016/10/04

wordpress 快速設定 文章的第一張圖片為縮圖

WordPress :如何擷取文章內第一張圖片作為縮圖?

1. 抓取文章第一張圖片

而抓取文章第一張圖片的方式,也非常簡單,只要寫成一個函式就可以達成。另外,這個函式會先判斷目前有沒有設定特色圖片,沒有設定才會去抓第一張圖片,有設定就會直接回傳特色圖片路徑。把以下代碼寫入function.php

function get_feature_image(){    global $post, $posts; $first_img = '';    if ( has_post_thumbnail() ) {       $first_img = wp_get_attachment_url( get_post_thumbnail_id() );    } else {       ob_start();       ob_end_clean();       $output = preg_match('/<*img[^>]*src*=*["\']?([^"\']*)/i', $post->post_content, $matches);       $first_img = $matches[1];    }    return $first_img;}

而抓取第一張圖片的方式其實很簡單,我們只要用 PHP 的 preg_match 用正規表達式去比對就可以了。另外,因為我們只要第一張圖片,所以不使用 preg_match_all。

改良版: 可以傳post_id去指定何篇文章

 function get_feature_image($post_id = null){ //傳入post_id 參數去指定何篇文章    global $post, $posts; $first_img = '';    if($post_id)    $post = get_post( $post_id );  //可以傳post_id去指定何篇文章    if ( has_post_thumbnail() ) {       $first_img = wp_get_attachment_url( get_post_thumbnail_id() );    } else {       ob_start();       ob_end_clean();       $output = preg_match('/<*img[^>]*src*=*["\']?([^"\']*)/i', $post->post_content, $matches);       $first_img = $matches[1];    }    return $first_img;}

2. 若無特色圖片就用第一張圖片吧
去找index.php 或是其他取用到feature picture的地方, 加入else判斷式吧!

 

2016/09/14

2015-2016 股神巴菲特的十大持股 對應台股標的上市公司

整理巴菲特前10大投資行業為:

  • 3 家金融業
    • 富國, 美國運通, 美國合眾  ==>  第一金, 兆豐金, 國泰金, 富邦金, 中信金
  • 2 家食品業
    • 可口可樂, 卡夫亨式  ==> 大統益, 中華食, 聯華,
  • 1 家保健業
    • 達維塔  ==> 從缺
  • 1 家能源業
    • 飛利浦66 ==> 台塑化
  • 1 家科技業
    • IBM  ==> 華碩, 研華 or 從缺
  • 1 家通路業
    • 沃爾瑪 ==> 從缺
  • 1 家消费日用品業
    • 寶僑 ==> 從缺

—-
作者:李柏鋒
波克夏目前的十大持股如下表,以富國銀行261億為最大規模,其次是卡夫亨氏的食品集團為第二大,眾所皆知的可口可樂排第三。

前三大持股 佔50%
十大持股總共佔波克夏持股的81.6%,算相當具代表性,而富國銀行佔19.78%、卡夫亨氏則佔17.97%,加上可口可樂的13.03%,前三大持股就已經佔50.78%的波克夏持股,權重相當大。

先 來談談富國銀行。
富國銀行是美國四大銀行之一(另外還有花旗銀行、美國銀行、摩根大通),在金融海嘯中,是四大銀行中受影響程度最小的,因為富國銀行並沒 有以太大的槓桿進行高風險操作,而其受創主因是業務有相當一部分是房貸借款,因此在房地產大幅下跌時難免受創,不過比起其他銀行操作衍生性商品造成的災 難,已輕微許多了。因此,富國銀行在金融海嘯後,是四大銀行率先突破歷史新高的銀行,而在房市復甦的預期下,再加上聯準會即將一連串升息,可望帶來不錯的 獲利。

卡夫亨氏原本是兩家食品業大廠,
在2015年,由波克夏與巴西的3G資本合作下,將兩家大廠合併,躍居全球第五大食品公司,亨氏最著名的是與麥當勞合作許久的番茄醬,而卡夫以生產糖果、餅乾為主,著名的產品有奧利奧Oreo、麗滋Ritz等,相信大家也耳熟能詳。這兩家公司原本的營運 情況就不錯,而且食品也鮮少受到景氣循環的影響,都算是能夠長期穩定獲利的企業。

可口可樂 公認最成功的投資
第三大 持股則是眾所皆知的可口可樂,也是巴菲特被公認最成功的一筆投資,雖然過去五年沒有任何買賣,不過可口可樂仍貢獻相當亮眼的成績,估計有高達57%的報酬 率,也是十大持股中表現最好的一家。即使含糖飲料有危害健康的爭議,因此造成部分市場成長減緩,同時波克夏股東也很重視,這是否讓波克夏的投資蒙上「邪 惡」成份,不過可口可樂已是全球性品牌,不但在品牌上有足夠的護城河,更從全世界賺取利潤,而非侷限於少數國家,因此整體的業績成長仍然相當穩定。如果你 喜歡喝可口可樂的話,不妨買一些可口可樂的股票,以目前3%的殖利率來看,用配息買可口可樂應該很夠你喝了。

爭議最多的投資:IBM
IBM 則是爭議最多的波克夏持股,一來是波克夏鮮少投資科技產業,然而波克夏不但投資了IBM,持有比重還相當高,總計有112億市值持股。不過,在波克夏投資 後,IBM卻遇到轉型困難,導致股價不斷下跌,過去五年波克夏在IBM的平均購入成本股價為172.36美元,但目前股價只剩149.25美元,這也是波 克夏持股中唯一在估計報酬為負值的一家。巴菲特曾說,不懂的就不要投資,而他看不懂科技公司,但近幾年卻接連投資IBM和比亞迪,目前看來的確都不怎麼理 想。不過,巴菲特接受媒體訪問時,仍對IBM相當有信心,認為IBM的商業服務仍然具有價值,只是需要一段時間的調整以符合市場需求,總有一天IBM會恢 復往日的輝煌,而長期持有的耐心將獲得豐厚的報酬。

第五大持股的美國運通則是信用卡公司
過去五年波克夏並未有買進或賣出股份的交易,不過 卻有相當不錯的表現,五年估計報酬也有43%,不少投資人相當看好在美國經濟復甦後所產生的消費,美國運通營收可望有大幅成長。值得一提的是,雖然波克夏 並未買進股票,但美國運通買回自家的股票,因此波克夏在美國運通持股比例反而提高(從14.8%上升到15.6%)。

菲利浦66則是一家能源大廠
其業務包含運輸、化工及銷售石油與天然氣。今年因油價大跌造成能源股重創,而不是以開採頁岩油為主要業務的菲利浦66算是被錯殺的公司。因此波克 夏在今年一月到二月間分成十幾次買進菲利浦66的股票,以各種指標來看,目前菲利浦66的確算是相當有投資價值的公司。

唯一減碼持股的公司:寶僑
寶僑公司是唯一受到波克夏減碼的十大持股,但是與嬌生、亞培一起,這三家公司一向都被視為美股市場的長青定存股,其獲利來源也來自於全球,而非只侷限在美國 市場。不過目前看來,波克夏在2012年減持寶僑,雖錯過2013和2014兩年的上漲,但是大趨勢來看是正確的,近幾季寶僑的銷售並不怎麼理想。

美國合眾銀行則是一家典型的金融服務公司
為美國的第六大商業銀行,本部在波特蘭。

達維塔保健公司
則是以洗腎服務為主的醫療服務公司。

值得一提的是第九大持股的沃爾瑪百貨,
算是零售業的龍頭,不過近年隨著電子商務發展,像是亞馬遜這樣的電子商城逐漸取代與侵蝕沃爾瑪百貨這種實體通路,也因此過去五年的估計報 酬並不怎麼理想,只有7%。

以上就是波克夏十大持股,有了巴菲特加持,有些投資人認為這些股票已有巴菲特溢價在裡面,不過巴菲特持股一向都 是長期持有,即使有溢價,長期來看其實這些主要持股報酬率也都相當不錯。不過,巴菲特認為投資人不應該跟單,畢竟每個人對投資的價值觀與所處的環境與擁有 的資源都不同,如果真的要追隨巴菲特的投資,應該直接投資波克夏的股票就好了。

2016/08/30

找不到這些檔案 MSVCP140D.dll, ucrtbased.dll, VCRUNTIME140D.dll ...解法為 用release mode重新編譯, 拿去DUT跑就沒這些問題!

在Visual studio 2015 上面編譯 exe 檔
拿去DUT跑這個exe卻發生 errors : 找不到這些檔案 MSVCP140D.dll, ucrtbased.dll, VCRUNTIME140D.dll …等等

應該是因為我是在 debug mode 作編譯
所以當我執行該Exe檔的時候,他會去使用到一些 debug DLLs 檔案
然後用release mode重新編譯, 拿去DUT跑就沒這些問題!

網路上有個人回應是:

开发机上报找不到这个DLL说明你的Visual Studio安装出错。测试机上报找不到这个DLL说明你的安装脚本写得有问题。最终用户机上报找不到这个DLL说明你没看用户协议(微软禁止你向第三方发布这个测试专用的DLL)。这个DLL只有程序员才用得到,而且程序员基本都知道DLL Hell的危害不会去胡乱去网上下DLL,所以没下载这个需求,网上搜不到资源是正常的。作者:蒋晟链接:https://www.zhihu.com/question/39360390/answer/80965242来源:知乎 

2016/08/25

wordpress文章內實作Google Map嵌入代碼

1. 先作出一份可以重覆使用的代碼, 姑且就叫作 googlemap.php

可以先看這份Google Map 快速指南, 看完至少根據你的需求產生對應的嵌入碼smple

如下例 googlemap.php

<?php  $target = get_post_meta($post->ID, 'MapPoint', $single = true); //會去讀取自定欄位MapPoint的值assign給$target ?><div class="googlemap"> <?php  if ( !empty($target) ) { echo '<iframe width="750" height="500" frameborder="0" style="border:0" src="https://www.google.com/maps/embed/v1/search?q='. $target .'&key=填入你申請的API金鑰" allowfullscreen></iframe>';  } ?> </div>

再到single.php裡面
把 <? include(googlemap.php) ?> 放到 the_content()之後…

—

可以在wordpress單篇文章內設定:

2. 必須要申請Google Map API 的金鑰(key)

另外一種做法: function.php

這個作法指需要修改function.php即可,
最好能先搞懂什麼是Wordpress的HOOK, 以及the_content()的定義, 還有一些前人的解法

function add_googlemap($content) {  global $post; $target = get_post_meta($post->ID, 'MapPoint', $single = true); $map_str = '<div class="googlemap">'; if ( !empty($target) ) { $map_str .= '<iframe width="750" height="500" frameborder="0" style="border:0" src="https://www.google.com/maps/embed/v1/search?q='. $target .'&key=填入你申請的API金鑰" allowfullscreen></iframe>';  } $map_str .= '</div>';  $content = $content ." ". $map_str ; $map_str = " "; return $content;}add_filter('the_content', 'add_googlemap');

2016/08/18

儲存裝置的資料傳輸技術: IDE,SATA,SCSI

◎ IDE(Integrated Device Electronics)
PATA-Parallel Advanced Technology Attachment (IDE)
一種電腦系統介面,主要用於硬碟和CD-ROM, 它的本意是指把控制器與盤體集成在一起的硬碟驅動器,我們常說的IDE介面,也叫ATA(Advanced Technology Attachment)介面,現在PC機使用的硬碟大多數都是IDE相容的,只需用一根電纜將它們與主板或介面卡連起來就可以了。
把盤體與控制器集成在一起的做法減少了硬碟介面的電纜數目與長度,資料傳輸的可靠性得到了增強,硬碟製造起來變得更容易,因為廠商不需要再擔心自己的硬碟 是否與其他廠商生產的控制器相容,對用戶而言,硬碟安裝起來也更為方便。

ATA 介面發展到今,細分可以分成ATA-1(IDE)、ATA-2(EIDE Enhanced IDE/Fast ATA)、ATA-3(FastATA-2)、Ultra ATA、Ultra ATA/33、Ultra ATA/66、Ultra ATA/100及Serial ATA。
優點:
價格低廉
相容性非常好

缺點:
速度慢(尤其是早期的ATA硬碟)
只能內置使用
對介面電纜的長度有很嚴格的限制

◎ SATA
SATA-Serial Advanced Technology Attachment
是Serial ATA的縮寫,也就是串列ATA。它是一種完全不同於並行ATA(Parallel ATA)的新型硬碟介面類型,因採用串列方式傳輸數據而得名。
SATA匯流排使用了嵌入式時鐘信號,具備了比以往更強的糾錯能力;而且其最大的區別在於能對傳輸指令(不僅是數據)進行檢查,如果發現錯誤會自動矯正,在相當大的程度上提高了數據傳輸的可靠性。串列介面還具有支持熱插拔、結構簡單的優點。
SATA有SATA-1、SATA-2及將推出的SATA-3規格。

◎ SCSI
(英文全稱:Small Computer System Interface; 英文簡寫:SCSI),
是一種用於電腦及其週邊設備之間(硬碟、軟碟機、光碟機、印表機、掃描儀等) 系統級介面的獨立處理器標準。
SCSI標準定義了命令、通訊協定以及實體的電器特性,換成OSI的說法就是佔據了實體層、連結層、通訊層、應用層,最大部份的應用是在儲存設備上像是硬碟、磁帶機,但,其實他可以連接的設備包過有掃描器、光學裝置(像CD、DVD)、印表機……等等,
SCSI命令中有條列出 支援的裝置SCSI週邊裝置,理論上他不可能連接所有的裝置,所以有1Fh – unknown or no device type這個參數存在。

2016/08/08

wordpress文章分類下拉式, 標題重複問題

WordPress側欄工具有一項是, 下拉式文章分類, 但這個小工具有個滿白目的缺點, 就是標題會重覆!

而且這個又不能透過theme的部分去修改, 只好去找源頭!

經檢查,是部分主題下,主題的代碼已經輸出了標題,而wordpress的代碼又再次輸出了一次。

於是我們需要刪除wordpress重複輸出的那部分代碼,

檔案位置是 wp-includes/widgets/class-wp-widget-categories.php

標住起來, 如下:

然後保存即可。

2016/08/04

php mail header設定 - 解決虛擬主機會有漏信的問題

之前幫朋友寫購物網站, 所以需要寄信給客戶以確認帳單, 但卻發現目前的虛擬主機會有漏信的問題, 這些日子以來很多顧客反應沒有收到確認信件, 所以要Debug是程式錯誤還是主機錯誤!

原本語法:

$store_main = "xxxxxxx@yahoo.com.tw"; /* 商家客服信箱 */$headers = "MIME-Version: 1.0rn";$headers .= "Content-type: text/html; charset=utf-8rn";$headers .= "From: ".$store_main."rn";  mail ($email, $subject, $body, $headers);

過一陣子, 我查出基本方向..
只要我有加$headers 就會寄件失敗

mail($to, $subject, $message, $headers); 

拿掉 $headers 就會寄件成功, 但會出現HTML亂碼與一些錯誤資訊

mail($to, $subject, $message, $headers); 

主機商回信:

您好:請將 $headers.= "From: wii遊戲片專賣店rn";裡面的 Email 更改為位於我們主機的 Email例如 service@domainname.com這樣就可以正常發信不會漏信因為您之前使用 xxxxxx@yahoo.com.tw 作為寄信者但是信件卻不是真的從 Yahoo 主機發送出去所以會被 Gmail、Yahoo、Hotmail 等判斷為廣告信而拒收如果還有任何問題隨時歡迎您再來信詢問謝謝

後來改成主機domainname的email
果然就變正常… 感覺是個滿初級的錯誤…..

2016/07/26

使用PHP語法修改Wordpress裡的 404.php 檔, 來發信告知管理者

如何使用PHP語法取得目前網址:

  • 以”http://s3131212.com/test1/test2.php?t=test3″為例
    • 取得網站主網域: $_SERVER[‘HTTP_HOST’]
      • 得到結果:s3131212.com
    • 取得主網域以後的內容: $_SERVER[‘REQUEST_URI’]
      • 得到結果:/test1/test2.php?t=test3
    • 取得主網域以後,但不含參數 $_SERVER[‘PHP_SELF’]
      • 得到結果:/test1/test2.php
    • 取得參數 $_SERVER[‘QUERY_STRING’]
      • 得到結果:t=test3
    • 假設要取得網站全部網址,
      • 可用以下程式碼: $URL = ‘http://’.$_SERVER[‘HTTP_HOST’].$_SERVER[‘REQUEST_URI’];

直接修改Wordpress裡的 404.php 檔, 來發信告知管理者:

	$blog  = get_bloginfo('name');$email = get_bloginfo('admin_email');$URL = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];$message =  '抱歉! 目前找不到該網頁: '.$URL.' 系統已發信通知網站管理者。';mail( $email, $blog.": 404錯誤通知 !", $message, "From: $email"); 

2016/07/19

Windows 自動化安裝套件 (Windows AIK) - 教學與介紹

Windows AIK 概觀

Windows(R) 自動化安裝套件 (AIK) 是您用來自動化部署 Windows 作業系統之工具和文件的集合。AIK 是您可用來部署 Windows 之數種資源的其中一種。
AIK 適用於高度自訂的環境。AIK 中的工具可讓您設定許多部署選項,同時還提供高度的彈性。每家公司的公司部署環境都不一樣。視您的商務需求和資源而定,您可以選擇使用 AIK 中提供的所有或部分資源。
其他 Windows 部署工具與資源包括下列各項:

  • Microsoft Deployment Toolkit。這些工具提供完整自動化部署 Windows 作業系統。‎‎‏Microsoft Deployment Toolkit 可以減少部署時間、標準化 Windows 映像、限制服務中斷、降低部署後支援部門成本以及改進安全性與持續進行的設定管理。如需詳細資訊,請參閱桌面部署 TechCenter (可能為英文網頁)。
  • 應用程式相容性工具組。 這些工具可讓您在環境中部署新版 Windows 或 Internet Explorer(R) 之前先評估並減少應用程式相容性問題。如需相關資訊,請參閱 Microsoft 應用程式相容性工具組 5.0 (可能為英文網頁)
  • Microsoft Assessment and Planning Toolkit Solution Accelerator。 此工具可讓您評估您目前的 IT 基礎結構是否可進行各種技術移轉專案。它包含之前附隨 Windows Vista(R) Hardware Assessment Solution Accelerator 提供的功能。如需相關資訊,請參閱 Microsoft Assessment and Planning Toolkit (可能為英文網頁)

AIK 工具
根據預設值,AIK 會安裝在 C:\Program Files\Windows AIK 目錄。這個目錄含有此版本所包含的所有工具和文件。大部分 Windows 部署案例使用的核心工具包括:

  • Windows 系統映像管理員 (Windows SIM)
    此工具用來開啟 Windows 映像、建立回應檔案以及管理發佈共用與組態集。
  • ImageX
    此工具用來擷取、建立、修改以及套用 Windows 映像。
  • 部署映像服務與管理 (DISM)
    此工具用來將更新、驅動程式以及語言套件套用至 Windows 映像。DISM 可用於 Windows 7 和 Windows Server 2008 R2 的所有安裝。
  • Windows 預先安裝環境 (Windows PE)
    這是一種用來部署 Windows 的最基本作業系統環境。AIK 包含可用來建置和設定 Windows PE 環境的數種工具。
  • Windows 安裝程式
    此工具用來安裝 Windows。此工具包含於 Windows 產品 DVD 中,而不是 AIK 安裝的一部分。
  • Sysprep
    此工具用來準備要製作映像或交付給客戶的 Windows 安裝。Sysprep 工具提供於所有 Windows 安裝的 %WINDIR%\system32\sysprep 目錄中。
  • 使用者狀態移轉工具 (USMT)
    此工具用來將舊版 Windows 作業系統上的使用者資料移轉至 Windows 7。USMT 會安裝為 AIK 的一部分,安裝於 %PROGRAMFILES%\Windows AIK\Tools\USMT 目錄。如需 USMT 的相關資訊,請參閱《使用者狀態移轉工具使用者手冊》(Usmt.chm)。

下載

2016/06/28

Wordpress可以用外掛建立Google APK, Apple App

由於現在使用Application實在是銳不可擋, 看網頁的人越來越少! 必須要快點建立APP囉

Google Admob 管理APP收益系統

Google Admob
就如同是網頁廣告營收系統的Adsense,而在APP的廣告收益是透過Admob管理收益

Google Play APK 的世界

Google Play Developer Console:
1. 網址: https://play.google.com/apps/publish/
(開發者網站則是 https://developer.android.com/index.html )

2. App應用程式: https://play.google.com/store/apps/details?id=com.google.android.apps.playconsole

如果是第一次要發佈應用程式,必須先申請Google開發者帳號。申請條件:

  • 必須使用Google帳號。
  • 申請開發者帳號的費用是25美金。
  • 費用只接受信用和Google電子錢包支付。
  • 帳號永久有效

Apple Store App 的世界

待補…

WordPress外掛- 把網站內容轉成APP

1. WordPress外掛 – Androapp
此款外掛可以協助Wordpress的部落客, 建立基本的APK
Androapp – Native Android mobile app for wordpress site
其實我有是過其他外掛, 但都出現一些奇怪的問題, 直到找到這款Androapp 外掛, 當然可能有未知問題還沒被我發現而已! 像是以後要更客製化是否能過作到,會不會有怪怪bug …等等
但要收費, 而且不支援產生ios App:

Pricing
Completely free for the first 1 month, no credit card needed.

Annual Renewal fee:

Normal WordPress site: $50/year
Woocommerce enabled site: $100/year

** Notice: Price will be increased by 20% from 1st July 2016. i.e $60 for normal site and $120 for ecommerce site** In case you are not willing or not able to pay $50, We will reserve all ad slot for us, you will not be able to show ads on the app.

2. WordPress外掛 – Worona
這款外掛有免費版也有付費版, 付費版150歐元起跳
其實我也還在試驗利外一個 Worona外掛, 免費且支援Google APK 與 IOS APP, 但目前卡關中, 而且他的工程師很nice還可以問問題有回信給我建議:

我Q: So nice to have your Worona plugin. I got a issue when building myself APK. It looks like I have a similiar problem with this link. Unfortunatly, I can’t fix it even if install json-rest-api plugin. https://wordpress.org/support/topic/wp-json-error

回應:
You don’t need to install any JSON REST API plugin, the Worona Plugin already injects the REST API.
In addition, to make the Chinese characters work please install https://es.wordpress.org/plugins/so-pinyin-slugs/.
Please let us know if it works or if you have any other problem.

直接自己來開發APP

基本觀念:
1.用AppsGeyser把網站轉換成Android APP / The Usage of AppsGeyser: From Website to Android APP

2016/06/23

什麼是.wim檔案? Windows Imaging File Format (WIM)

本主題介紹 Microsoft Windows 映像 (WIM) 檔案格式。WIM 是 Windows Vista 中所推出,以檔案為基礎的磁碟映像格式。WIM 檔案屬於壓縮的封裝,包含許多相關的檔案。WIM 檔案的格式經過最佳化,使用 LZX 可得到最大壓縮、使用 XPRESS 可得到快速壓縮,或者不壓縮。

WIM 檔案結構

WIM 檔案結構共包含六種資源:標題、檔案資源、中繼資料資源、查閱資料表、XML 資料及完整性資料表。以下插圖顯示包含兩個映像之 WIM 檔案的一般配置。

WIM File Structure

WIM 檔案配置

  • WIM 標題:定義 .wim 檔案的內容,包括關鍵資源 (中繼資料資源、查閱資料表及 XML 資料) 的記憶體位置,以及各種 .wim 檔案屬性 (版本、大小及壓縮類型)。
  • 檔案資源:包含擷取之資料的一系列封裝,例如來源檔案。
  • 中繼資料資源:包含您所擷取之檔案的相關資訊,包括目錄結構與檔案屬性。.wim 檔案中每一個映像都有一個中繼資料資源。
  • 查閱資料表:包含 .wim 檔案中之資源檔案的記憶體位置。
  • XML 資料:包含映像的其他資料。
  • 完整性資料表:包含在套用操作中用於驗證映像之完整性的安全性雜湊資訊。

3

imagex 的使用教學介紹 - 擷取、修改及套用映像

(參考微軟教學網頁), 然整理如下:

什麼是 ImageX?

ImageX 是一套命令列工具,可讓原始設備製造商 (OEM) 與企業擷取、修改及套用以檔案為基礎的磁碟映像,以利快速部署。 ImageX 可與 Windows 映像檔案 (.wim) 搭配使用,將檔案複製到網路,也可以與使用 .wim 映像的其他技術搭配使用,例如 Windows 安裝程式、Windows 部署服務 (Windows DS) 以及 System Management Server (SMS) 作業系統功能部署套件。

ImageX 如何運作

ImageX 是從一組 API (稱為 Windows 的映像 API) 組建的映像工具。ImageX 的主要目的是擷取、修改及套用映像,以部署於製造商或公司的 IT 環境中。ImageX 支援新的 Microsoft Windows 映像 (.wim) 格式。

ImageX 結構: ImageX 會依賴數個元件,包括 ImageX 執行檔 (ImageX.exe)、WIM 檔案系統篩選器 (Wimfltr.sys 及 Wimfltr.inf)、WIM API 集,以及 .wim 檔案格式。下圖顯示這些元件之間的互動。

ImageX 命令列選項

ImageX 是 Windows Vista 的命令列工具,可用來建立及管理 Windows 映像 (.wim) 檔案。.wim 檔案包含一或多個磁碟區映像、包含已安裝之 Windows 作業系統映像的磁碟區。

若要修改磁碟區映像,您必須在執行 Windows XP Service Pack 2 (SP2)、Windows Server 2003 Service Pack 1 (SP1) 或 Windows Vista 的電腦上,安裝 Windows 映像檔案系統篩選器 (WIM FS 篩選器) 驅動程式。安裝 WIM FS 篩選器驅動程式可讓您將 .wim 檔案當成目錄一樣掛接,而且不用解壓縮或重新建立映像,就能在檔案管理工具 (例如 Windows 檔案總管) 中瀏覽、複製、貼上及編輯磁碟區映像。

mageX 命令列選項的用法如下:
imagex [flags] {/append | /apply | /capture | /delete | /dir | /export | /info | /split | /mount | /mountrw | /unmount} [parameters]

下列清單會顯示每個 imagex 作業類型所用的有效語法:

  • imagex /append image_path image_file {“description”} {/boot | /check | /configconfiguration_file.ini | /scroll | /verify}
    將磁碟區映像附加到現有的 Windows 映像 (.wim) 檔案。建立檔案的單一例項、將其與 .wim 檔案中已存在的資源相比較,讓您不致於重複擷取同一個檔案。

    • ex: imagex /append d:d:\imaging\data.wim “Drive D” /verify
  • imagex /apply image_file image_number image_name image_path {/check | /ref | /scroll | /verify}
    將磁碟區映像套用到指定的磁碟機。

    • ex: imagex /apply d:\imaging\data.wim 1 d:\New_Directory /verify
  • imagex /capture image_path image_file “name” {“description”} {/boot | /check | /compress [type] | /config | /flags “EditionID” | /norpfix | /scroll | /verify}
    將來自磁碟機的磁碟區映像擷取到新的 .wim 檔案。擷取的目錄會包含所有的子資料夾及資料。您無法擷取空的目錄。目錄必須至少包含一個檔案。

    • ex: imagex /capture d:d:\imaging\data.wim “Drive D” /verify
    • ex: imagex /compress fast /flags “Ultimate” /check /scroll /capture c:d:\install.wim “Windows Vista Ultimate”
  • imagex /delete image_file image_number image_name {/check}
    從含有多個磁碟區映像的 .wim 檔案中,刪除指定的磁碟區映像。此選項只會刪除中繼資料項目及 XML 項目。它不會刪除串流資料,也不會最佳化 .wim 檔案。

    • ex: imagex /delete d:\imaging\data.wim 1
  • imagex /dir image_file image_number image_name
    顯示指定之磁碟區映像內檔案及資料夾的清單。

    • ex: imagex /dir d:\imaging\data.wim 1
  • imagex /export src_file src_number src_name dest_file dest_name {/boot | /check | /compress [type] | /ref [splitwim.swm]}
    將指定之 .wim 檔案的複本匯出至其他的 wim. 檔案。來源及目的檔案必須使用同一個壓縮類型。您也可以匯出至新的映像檔案,將映像最佳化。當您修改映像時,ImageX 會儲存其他資源,使得映像整體大小增加。匯出映像會移除不必要的資源檔案。

    • ex: imagex /export d:\imaging\data.wim d:\imaging\sample.wim 1
  • imagex /info img_file[img_number | img_name] [new_name] [new_desc] {/boot | /check}
    傳回針對指定 .wim 檔案所儲存的 XML 描述,包括 (但不限於) 檔案大小總計、映像索引編號、目錄計數、檔案計數及描述。
    ex: imagex /info d:\imaging\data.wim
  • imagex /mount image_file image_number image_name image_path {/check}
    從 Microsoft Windows XP Service Pack 2 (SP2)、Microsoft Windows Server 2003 Service Pack 1 (SP1) 或 Windows Vista 掛接具有唯讀權限的 .wim 檔案至指定的目錄。檔案一經掛接之後,您便可檢視 (但不能修改) 目錄中包含的所有資訊。

    • ex: imagex /mount d:\imaging\data.wim 2 c:\mounted_images
  • imagex /mountrw image_file image_number image_name image_path {/check}
    從 Microsoft Windows XP Service Pack 2 (SP2)、Microsoft Windows Server 2003 Service Pack 1 (SP1) 或 Windows Vista 掛接具有讀取/寫入權限的 .wim 檔案至指定的目錄。檔案一經掛接之後,您便可檢視及修改目錄中包含的所有資訊。

    • ex: imagex /mountrw d:\imaging\data.wim 2 c:\mounted_images
  • imagex /split image_file dest_file size {/check}
    將現有的 .wim 檔案分割為多個唯讀分割 .wim 檔案 (.swm)。

    • ex: imagex /split d:\imaging\data.wim 600
  • imagex /unmount image_path {/commit}
    取消掛接指定目錄中的已掛接映像。

    • ex: imagex /unmount /commit c:\mounted_images

 

/verify 及 /check 支援 .wim 檔案的檔案驗證及資料完整性

在套用作業期間,/verify 及 /check 選項會影響效能。建議您使用 /verify 及 /check 兩個選項以獲得最佳的映像驗證及資料完整性。

  • /verify 選項: 會驗證快取寫入並檢查錯誤及檔案重複。/verify 選項不支援磁碟清除、寫出或略過系統快取。在擷取作業期間,/verify 選項會讀回擷取的檔案,並依每個位元組與原始所擷取檔案進行比較。在套用作業期間,/verify 選項會重新雜湊套用的檔案,並與在擷取作業期間所產生的雜湊進行比較。
  • /check 選項: 是專為偵測 .wim 檔案的損毀而設計。如果未在擷取作業期間設定 /check 選項,則在套用作業期間會忽略旗標。在擷取作業期間,/check 選項會對 .wim 檔案以每 10 MB 資料區塊的方式產生及儲存一系列的雜湊。在套用作業期間,/check 選項會對在擷取作業期間所儲存的雜湊進行雜湊並驗證這些 10 MB 的區塊。

ImageX 錯誤碼

  • 0 成功
  • 1 命令列選項無效
  • 2 WIMGAPI 失敗
  • 3 設定指令碼無效
  • 4 拒絕存取,需要系統管理員權限

什麼是.wim檔 ?

http://eeepage.info/windows-imaging-file-format-wim/

2016/06/22

如何在 UEFI-aware platform 上讓 USB 直接開機進 shell

(引用自: prhsie-bios)

在 UEFI platform 上(若不考慮 CSM 時), BDS phase 在開機時會主動搜尋 media 上的 /efi/boot/bootx64.efi 或 bootia32.efi 做為開機的起點. 而這檔案就分別是 X64 或 IA32 版的 shell.efi .

有 EDK II/UDK2010 的人, 可以把 EdkShellBinPkg 裡的 shell 複製到 UFD (請確定 UFD 是FAT 格式)裡:

    FullShell\Ia32\Shell_Full.efi to \efi\boot\bootia32.efi    FullShell\X64\Shell_Full.efi to \efi\boot\bootx64.efi    or    MinimumShell\Ia32\Shell.efi to \efi\boot\bootia32.efi    MinimumShell\X64\Shell.efi to \efi\boot\bootx64.efi

PS1: 可以只複製 bootx64.efi 就夠了
PS2: 原始碼與binary檔: EdkShellBinPkg source 1, EdkShellBinPkg source 2

順帶一提,手上有 AMI Aptio code 的人可以找一下 addon 裡面, 依樣劃葫蘆:

    addon\shell.efi to \efi\boot\bootx64.efi

如此一來,就可以在 Aptio Setup Utility 的 Boot 裡選用 “UEFI:” 開頭的 USB device 開機了. (當然了, 直接選用 Save & Exit 裡的 Boot Override 也可以). 這樣當你在沒包 shell UEFI-aware platform 上, 就可以不必用 Launch EFI Shell from filesystem device 的方法來手動 boot to shell 了. (這方法得把 shell.efi 複製到根目錄,並改為 shellx64.efi)

延伸閱讀: MSI也提供透過進EFI介面更新BIOS的文件說明

2014/06/13- 如何製作 UEFI 開機隨身碟並更新 BIOS?
https://tw.msi.com/files/pdf/Win8_BIOS_Update_Step_by_Step_Guide_ch.pdf

2015/01/21 – 使用 EFI Shell 更新 BIOS
https://tw.msi.com/files/pdf/win8_UEFI_BIOS_Update_auto_ch.pdf

2016/06/21

Wordpress外掛 - 好用的 readmore(閱讀更多) 客製化設定

原本wordpress會透過 the_excerpt() 去自動幫忙取開頭的一小段文字當作引言, 但我覺得太短了, 想要讓引言長一點! 找到這款外掛, 可以直接後台設定細節
Easy Custom Auto Excerpt
Auto Excerpt for your post on home, search and archive. Customize Read More button and thumbnail image. Easy to configure and have a lot of options.

2016/06/20

DevCon 或 DevCon64 可以啟用、 停用、 重新啟動、 更新、 移除,和查詢個別 裝置群組。

DevCon 公用程式是一個命令列公用程式,做為 [裝置管理員的替代。 使用 DevCon,您可以啟用、 停用、 重新啟動、 更新、 移除,和查詢個別裝置群組。

Windows Device Console (Devcon.exe)

https://msdn.microsoft.com/zh-tw/library/ff544707(v=vs.85).aspx
DevCon (Devcon.exe), the Device Console, is a command-line tool that displays detailed information about devices on computers running Windows. You can use DevCon to enable, disable, install, configure, and remove devices.
DevCon runs on Microsoft Windows 2000 and later versions of Windows.

What you can do with DevCon

Windows driver developers and testers can use DevCon to verify that a driver is installed and configured correctly, including the proper INF files, driver stack, driver files, and driver package. You can also use the DevCon commands (enable, disable, install, start, stop, and continue) in scripts to test the driver.

DevCon is a command-line tool that performs device management functions on local computers and remote computers.
(Note: To run DevCon commands on a remote computer, the Group Policy setting must allow the Plug and Play service to run on the remote computer. On computers that run Windows Vista and Windows 7, the Group Policy disables remote access to the service by default. On computers that run WDK 8.1 and WDK 8, the remote access is unavailable.)

Devcon features include:

  • Display driver and device info:  DevCon can display the following properties of drivers and devices on local computers, and remote computers (running Windows XP and earlier):
    • Hardware IDs, compatible IDs, and device instance IDs. These identifiers are described in detail in Device Identification Strings.
      Device setup classes
      The devices in a device setup class
      INF files and device driver files
      Details of driver packages
      Hardware resources
      Device status
      Expected driver stack
      Third-party driver packages in the driver store
  • Search for devices:  DevCon can search for installed and uninstalled devices on a local or remote computer by hardware ID, device instance ID, or device setup class.
  • Change device settings :  DevCon can change the status or configuration of Plug and Play (PnP) devices on the local computer in the following ways:
    • Enable a device
    • Disable a device
    • Update drivers (interactive and noninteractive)
    • Install a device (create a devnode and install software)
    • Remove a device from the device tree and delete its device stack
    • Rescan for Plug and Play devices
    • Add, delete, and reorder the hardware IDs of root-enumerated devices
    • Change the upper and lower filter drivers for a device setup class
    • Add and delete third-party driver packages from the driver store
  • Restart the device or computer : DevCon can restart a local device, reboot the local system on demand, or reboot the local system if required for another DevCon operation.