星期二, 4月 30, 2013

XEN vs LVM

XenServer - 新增儲存裝置 - 硬碟 
  • # fdisk -l  
  • 先建立分割 /dev/sdb,在分割後重新開機
    # fdisk /dev/sdb
    /dev/sdb1 1 121578 976567252+ 8e Linux LVM
  • ls -l /dev/disk/by-path/
  • xe sr-create type=lvm content-type=user device-config:device=/dev/disk/by-path/pci-0000:00:1f.2-scsi-1:0:1:0-part3 name-label="Disk 2"
Xen Management Tools邏輯捲軸管理員 (Logical Volume Manager)  小標題的圖示什麼是 LVM: PV, PE, VG, LV 的意義

星期四, 4月 18, 2013

男人工作20年,終於回家了,老闆問:你是要20年工資還是3句忠告?


男人工作20年,終於回家了,老闆問:你是要20年工資還是3句忠告?

男人工作20年,終於回家了,老闆問:你是要20年工資還是3句忠告?

一個男人在外工作20年,終於要回家了,老闆問他:你是要20年的工資還是要3句忠告?男人說我明天上路,明早給您答案好嗎?老闆說可以。當晚男人未眠…早晨,他對老闆說:我要3個忠告。於是老闆給他3句話。

一、不要試圖尋找不可能的捷徑,世上沒有便宜的事,只有腳踏實地才是最好的方法…無論做何事。
二、不要對明知不是好事的事過分好奇,有可能你會因此而喪命。
三、不要在衝動時做任何決定,否則這個決定就有可能成為你一輩子的遺憾。

說完老闆給男人一些錢和三個麵包,並叮囑:最大的麵包在到家後才能吃。

男人上路了…他走了好幾天…把第一個麵包吃了一半了,沒過多久遇到一個路口,他打聽:請問到**走哪條路近?路人甲:走小路吧,近。路人乙:走大路吧,安 全。他迫不急待要與妻子見面,於是走了小路。走了沒多久就聽到有路人說附近鬧山賊,於是他想起了老闆的第一個忠告:不要試圖尋找捷徑。於是他回頭去走那條 大路。又走了幾天,第二個麵包也吃了一部分了…他找到一家極便宜的客棧投宿。半夜聽見有女子哭聲,他睡不下。於是決定出門看看。這時他想到了第二個忠告: 不要對明知不是好事的事過分好奇。於是他又睡下了。第二日起程時,店家驚道:你還活著?!他不解,遂問原由。店家說他有個瘋女兒,發病時用哭聲引人出來再 將其殺害,昨晚投宿的客人只有你一個活著。男人長歎:啊…

又走了幾天,當第二個麵包吃完時他已離家不遠了。他更加激動了。天剛黑下來沒多久,他就走到了自己的村子。到家時他剛準備敲門,卻聽到屋裡有男人的聲 音。他氣極了,拿起一把砍柴刀就準備沖進屋子將那男的殺掉。但這時他想到了第三個忠告:不要在衝動時做任何決定,可能這個決定會讓你後悔一輩子。於是他冷 靜下來,在屋外坐了一夜。第二天早上他很早就敲開了門,妻子見他回來十分高興。但他卻很冷漠:那個男人是誰?他妻子笑曰:那是我們的兒啊…你走後沒多久我 就…這時他發現這個年輕小夥竟和自己長得相似極了。父子初次見面,相擁而泣…一陣關切過後男人拿出第三個麵包準備和妻、子一齊分享…切開之後卻發現20年 的工資全在裡面。所以我們做任何事都要考慮清楚否則到最後後悔的是自己!

成大事必備6種能力、9種手段、6種心態

一:沉穩
(1)不要隨便顯露你的情緒。
(2)不要逢人就訴說你的困難和遭遇。
(3)在徵詢別人的意見之前,自己先思考,但不要先講。
(4)不要一有機會就嘮叨你的不滿。
(5)重要的決定儘量有別人商量,最好隔一天再發佈。
(6)講話不要有任何的慌張,走路也是。
二:細心
(1)對身邊發生的事情,常思考它們的因果關係。
(2)對做不到位的執行問題,要發掘它們的根本癥結。
(3)對習以為常的做事方法,要有改進或優化的建議。
(4)做什麼事情都要養成有條不紊和井然有序的習慣。
(5)經常去找幾個別人看不出來的毛病或弊端。
(6)自己要隨時隨地對有所不足的地方補位。
三:膽識
(1)不要常用缺乏自信的詞句
(2)不要常常反悔,輕易推翻已經決定的事。
(3)在眾人爭執不休時,不要沒有主見。
(4)整體氛圍低落時,你要樂觀、陽光。
(5)做任何事情都要用心,因為有人在看著你。
(6)事情不順的時候,歇口氣,重新尋找突破口,就結束也要乾淨俐落。
四:大度
(1)不要刻意把有可能是夥伴的人變成對手。
(2)對別人的小過失、小錯誤不要斤斤計較。
(3)在金錢上要大方,學習三施(財施、法施、無畏施)
(4)不要有權力的傲慢和知識的偏見。
(5)任何成果和成就都應和別人分享。
(6)必須有人犧牲或奉獻的時候,自己走在前面。
五:誠信
(1)做不到的事情不要說,說了就努力做到。
(2)虛的口號或標語不要常掛嘴上。
(3)針對客戶提出的“不誠信"問題,拿出改善的方法。
(4)停止一切“不道德"的手段。
(5)耍弄小聰明,要不得!
(6)計算一下產品或服務的誠信代價,那就是品牌成本。
六:擔當
(1)檢討任何過失的時候,先從自身或自己人開始反省。
(2)事項結束後,先審查過錯,再列述功勞。
(3)認錯從上級開始,表功從下級啟動
(4)著手一個計畫,先將權責界定清楚,而且分配得當。
(5)對“怕事"的人或組織要挑明瞭說。
(6)因為勇於承擔責任所造成的損失,公司應該承擔


成大事的九種手段:

1、敢於決斷--克服猶豫不定的習性
很多人之所以一事無成,最大的毛病就是缺乏敢於決斷的手段,總是左顧右盼、思前想後,從而錯失成功的最佳時機。成大事者在看到事情的成功可能性到來時,敢於做出重大決斷,因此取得先機。

2、挑戰弱點--徹底改變自己的缺陷
人人都有弱點,不能成大事者總是固守自己的弱點,一生都不會發生重大轉變;能成大事者總是善於從自己的弱點上開刀,去把自己變成一個能力超強的人。一個連自己的缺陷都不能糾正的人,只能是失敗者!

3、突破困境--從失敗中撮成功的資本
人生總要面臨各種困境的挑戰,甚至可以說困境就是“鬼門關”。一般人會在困境面前渾身發抖,而成大事者則能把困境變為成功的有力跳板。

4、抓住機遇--善於選擇、善於創造
機遇就是人生最大的財富。有些人浪費機遇輕而易舉,所以一個個有巨大潛力的機遇都悄然溜跑,成大事都是絕對不允許溜走,並且能縱身撲向機遇。

5、發揮強項--做自己最擅長的事情
一個能力極弱的人肯定難以打開人生局面,他必定是人生舞臺上重量級選手的犧牲品;成大事者關於在自己要做的事情上,充分施展才智,一步一步地拓寬成功之路。

6、調整心態--切忌讓情緒傷害自己
心態消極的人,無論如何都挑不起生活和重擔,因為他們無法直面一個個人生挫折,成大事者則關於高速心態,即使在毫無希望時,也能看到一線成功的亮光。

7、立即行動--只說不做,徒勞無益
一次行動勝過百遍心想。有些人是“語言的巨人,行動的矮子”,所以看不到更為實際現實的事情在他身上發生;成大事者是每天都靠行動來落實自己的人生計畫的。

8、善於交往--巧妙利用人力資源
一個人不懂得交往,必然會推動人際關係的力量。成大事者的特點之一是:善於靠借力、借熱去營造成功的局勢,從而能把一件件難以辦成的事辦成,實現自己人生的規劃。

9、重新規劃--站到更高的起點上
人生是一個過程,成功也是一個過程。你如果滿足于小成功,就會推動大成功。成大事者懂得從小到大的艱辛過程,所以在實現了一個個小成功之後,能繼續拆開下一個人生的“密封袋”。

星期三, 4月 17, 2013

FAT




Filesystem Layout Diagrag
Figure 5: FAT32 Filesystem Overall Layout

主磁碟結構

主啟動區檔案
分配表#1
檔案
分配表#2
根目錄其他所有資料...
剩下磁碟空間

一個FAT檔案系統包括四個不同的部份。
  1. 保留磁區,位於最開始的位置。第一個保留磁區是引導區分割啟動記錄)。它包括一個稱為基本輸入輸出參數塊的區域(包括一些基本的檔案系統訊息尤其是它的型別和其它指向其它磁區的指標),通常包括作業系統的啟動呼叫程式碼。保留磁區的總數記錄在引導磁區中的一個參數中。引導磁區中的重要訊息可以被DOS和OS/2中稱為驅動器參數塊的作業系統結構存取。
  2. FAT區域。它包含有兩份檔案分配表,這是出於系統冗餘考慮,儘管它很少使用,即使是磁碟修復工具也很少使用它。它是分割訊息的對映表,指示叢集是如何儲存的。
  3. 根目錄區域。它是在根目錄中儲存檔案和目錄訊息的目錄表。在FAT32下它可以存在分割中的任何位置,但是在早期的版本中它永遠緊隨FAT區域之後。
  4. 資料區域。這是實際的檔案和目錄資料儲存的區域,它佔據了分割的絕大部份。透過簡單地在FAT中添加檔案連結的個數可以任意增加檔案大小和子目錄個數(只要有空叢集存在)。然而需要注意的是每個叢集只能被一個檔案佔有,這樣的話如果在32KB大小的叢集中有一個1KB大小的檔案,那麼31KB的空間就浪費掉了。

[編輯]啟動磁區

格式如下
偏移(位元組)長度(位元組)說明
0x003跳轉指令(跳過開頭一段區域)
0x038OEM名稱(空格補齊)。MS-DOS檢查這個區域以確定使用啟動記錄中的哪一部份資料 [1] 。常見值是IBM 3.3(在「IBM」和「3.3」之間有兩個空格)和MSDOS5.0.
0x0b2每個磁區的位元組數。基本輸入輸出系統參數塊從這裡開始。
0x0d1每叢集磁區數
0x0e2保留磁區數(包括啟動磁區)
0x101檔案分配表數目 Number of FATs. The number of copies of the FAT on the volume. The value of this field is typically 2.
0x112最大根目錄條目個數Root Entries. The total number of 32-byte file and folder name entries that can be stored in the root folder of the volume. On a typical hard disk, the value of this field is 512. One entry can be used as a volume label, and files and folders with long names use multiple entries per file. The largest number of file and folder entries is typically 511; however, if long file names are used, entries usually run out before you reach that number.
0x132總磁區數(如果是0,就使用偏移0x20處的4位元組值)
0x151介質描述
0xF8單面、每面80磁軌、每磁軌9磁區
0xF9雙面、每面80磁軌、每磁軌9磁區
0xFA單面、每面80磁軌、每磁軌8磁區
0xFB雙面、每面80磁軌、每磁軌8磁區
0xFC單面、每面40磁軌、每磁軌9磁區
0xFD雙面、每面40磁軌、每磁軌9磁區
0xFE單面、每面40磁軌、每磁軌8磁區
0xFF雙面、每面40磁軌、每磁軌8磁區
同樣的介質描述必須在重複複製到每份FAT的第一個位元組。有些作業系統(MSX-DOS 1.0版)全部忽略啟動磁區參數,而僅僅使用FAT的第一個位元組的介質描述確定檔案系統參數。
0x162每個檔案分配表的磁區(FAT16)Sectors Per FAT. The number of sectors occupied by each FAT on the volume. The computer uses this number and the number of FATs and reserved sectors to determine where the root directory begins. The computer can also determine where the user data area of the volume begins based on the number of entries in the root directory (512).
0x182每磁軌的磁區Sectors Per Track.
0x1a2磁頭數Number of Heads
0x1c4隱藏磁區Hidden Sectors. The number of sectors on the volume before the boot sector. This value is used during the boot sequence to calculate the absolute offset to the root directory and data areas.
0x204總磁區數(如果超過65535,參見偏移0x13)Large Sectors.
(36)0x244每個檔案分配表的磁區(FAT32)。擴充功能基本輸入輸出系統參數塊從這裡開始。Sectors per FAT. The size of the FAT in sectors.
(36)0x241物理驅動器個數(FAT16)
(40)0x251當前磁頭(FAT16)
(42)0x261簽名(FAT16)
(44)0x274ID(FAT16)
(40)0x282Flags(FAT32)
(52)0x2a2版本號(FAT32)
(44)0x2c4根目錄啟始叢集(FAT32)The cluster number of the root directory. Often this field is set to 2.
0x2b11卷標(非FAT32)
(48)0x302FSInfo扇區(FAT32)File System Information Sector Number (FAT32 only). The sector number of the File System Information (FSINFO) structure in the reserved area of the FAT32 volume. The value is typically 1. A copy of the FSINFO structure is kept in the Backup Boot Sector, but it is not kept up-to-date.
(50)0x322啟動扇區備份(FAT32)The cluster number of the backup boot sector.
(52)0x3412保留未使用(FAT32)
0x368FAT檔案系統型別(如FAT、FAT12、FAT16)
0x3e2作業系統自引導程式碼
(64)0x401BIOS設備代號(FAT32)Physical Drive Number.
(65)0x411未使用(FAT32)
(66)0x421標記(FAT32)Extended Boot Signature. A field that must have the value 0x28 or 0x29 to be recognized by Windows Server 2003.
(67)0x434卷序號(FAT32)Volume Serial Number. A random serial number that is created when a volume is formatted and that helps to distinguish between disks.
(71)0x4711卷標(FAT32)Volume Label. A field that was once used to store the volume label. The volume label is now stored as a special file in the root directory.
(82)0x528FAT檔案系統型別(FAT32)System ID. A text field with a value of FAT32.
(510)0x1FE2磁區結束符(0x55 0xAA)




Default FAT Cluster Sizes
Volume SizeFAT16 Cluster SizeFAT32 Cluster Size
7 megabytes (MB)–16 MB
2 KB
Not supported
17 MB–32 MB
512 bytes
Not supported
33 MB–64 MB
1 KB
512 bytes
65 MB–128 MB
2 KB
1 KB
129 MB–256 MB
4 KB
2 KB
257 MB–512 MB
8 KB
4 KB
513 MB–1,024 MB
16 KB
4 KB
1,025 MB–2 gigabytes (GB)
32 KB
4 KB
2 GB–4 GB
64 KB
4 KB
4 GB–8 GB
Not supported
4 KB
8 GB–16 GB
Not supported
8 KB
16 GB–32 GB
Not supported
16 KB
32 GB–2 terabytes
Not supported
Not supported

星期一, 4月 08, 2013

编译ffmpeg for ios


 http://blog.csdn.net/tsingien/article/details/6457246

编译ffmpeg for ios



1. 下载:
git clone git://github.com/lajos/iFrameExtractor.git

2. 编辑:
build_armv6和build_armv7,修改./configure后面的参数,主要是SDK版本.我的是4.3,修改为:
./configure --disable-doc --disable-ffmpeg --disable-ffplay --disable-ffserver --enable-cross-compile --arch=arm --target-os=darwin --cc=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc --as='gas-preprocessor/gas-preprocessor.pl /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk --cpu=arm1176jzf-s --extra-cflags='-arch armv6' --extra-ldflags='-arch armv6'

3. 编译:
出错,提示:

/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc is unable to create an executable file.
C compiler test failed.
查看config.err文件,最后提示:
ld: file not found: /usr/lib/system/libcache.dylib for architecture armv7
collect2: ld returned 1 exit status
4. 重新修改configure参数为:
./configure --disable-doc --disable-ffmpeg --disable-ffplay --disable-ffserver --enable-cross-compile --arch=arm --target-os=darwin --cc=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc --as='gas-preprocessor/gas-preprocessor.pl /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk --cpu=cortex-a8 --extra-cflags='-arch armv7' --extra-ldflags='-arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk' --enable-pic
5. 编译:
build_armv7
最后生成静态库,在lib目录和armv7目录.
6.用xcode(我的是4.0版本)打开iFrameExtractor.xcodeproj,现在编译会出错,需要修改几个地方:
左边选中工程,中间选中target,右面选中Build settings,在Architectures选项卡里面选择Architetures为Optimized(armv7),Base SDK为Latest iOS(iOS 4.3) Valid Architectures填写armv7.
编译目标选择iOS Device,当然,如果有连接电脑的设备,可以选择设备.
编译,提示:

Undefined symbols for architecture armv7:
  "_BZ2_bzDecompressInit", referenced from:
      _matroska_decode_buffer in libavformat.a(matroskadec.o)
  "_BZ2_bzDecompressEnd", referenced from:
      _matroska_decode_buffer in libavformat.a(matroskadec.o)
  "_BZ2_bzDecompress", referenced from:
      _matroska_decode_buffer in libavformat.a(matroskadec.o)

添加库libbz2.1.0.dylib,再次编译,OK通过.

7. 修改了ffmpeg版本到最新版(0.7),编译的时候需要把common.mak复制到新版本目录.
编译的时候遇到错误:
ERROR: .endm without .macro at /usr/local/bin/gas-preprocessor.pl line 83, line 55
用老版本的libavcodec/arm/asm.S和libavcoec/arm/dsputil_arm.S覆盖新版本(实际上我怀疑只覆盖asm.S即可),重新编译即可.

在iOS5.0上编译ffmpeg0.8.11

http://blog.csdn.net/tsingien/article/details/7572959



在iOS5.0上编译ffmpeg0.8.11

分类: iOS 87人阅读 评论(0) 收藏 举报
1. 从ffmpeg.org上下载ffmpeg0.8.11并解压缩到用户目录。
2. 从https://github.com/yuvi/gas-preprocessor下载https://github.com/yuvi/gas-preprocessor.git脚本并放到ffmpeg0.8.11目录。
3. ./configure --enable-memalign-hack --disable-doc --disable-gpl --disable-nonfree --disable-version3 --disable-ffmpeg --disable-ffplay --disable-ffserver --disable-ffprobe --disable-encoders --disable-muxers --disable-decoder=vp8 --disable-parser=vp8 --disable-devices --disable-avdevice --disable-avfilter --disable-hwaccels --disable-decoder=vp8 --disable-demuxer=vp8 --enable-protocols --enable-protocol=file --enable-protocol=cache --enable-protocol=pipe --enable-protocol=crypto --enable-protocol=md5 --enable-protocol=http --enable-protocol=applehttp --enable-protocol=hls --enable-network --disable-yasm --disable-armv6 --disable-armv6t2 --enable-armvfp --enable-neon --enable-pthreads --disable-debug --disable-zlib --enable-cross-compile --arch=arm --target-os=darwin --enable-pic --disable-shared --enable-static --cc=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-gcc --as='gas-preprocessor.pl /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-gcc' --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk --cpu=cortex-a8 --enable-neon --extra-cflags='-arch armv7' --extra-ldflags='-arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk'
4.编译,后来出错,提示:
invalid operand in inline asm: 'adds   $1, ${2:R}, ${2:Q}, lsr #31
mvnne  $1, #1<<31 br="" nbsp=""> moveq  $0, ${2:Q}              
eorne  $0, $1,  ${2:R}, asr #31
'

5.注释掉libavutil/arm/intmath.h中的函数:
/*
#define av_clipl_int32 av_clipl_int32_arm
static av_always_inline av_const int32_t av_clipl_int32_arm(int64_t a)
{
    int x, y;
    __asm__ ("adds   %1, %R2, %Q2, lsr #31  \n\t"
             "mvnne  %1, #1<<31 br="" n="" nbsp="" t="">              "moveq  %0, %Q2                \n\t"
             "eorne  %0, %1,  %R2, asr #31  \n\t"
             : "=r"(x), "=&r"(y) : "r"(a):"cc");
    return x;
}
*/

6. 重新编译,生成最终的Lib,未出其他错误。
7. 针对xcode4.4及iOS5.1编译ffmpeg0.11依然适用。