2010年9月18日 星期六

快閃記憶體 SLC 與 MLC 的差別 - hanky and nekochan's blog

快閃記憶體 SLC 與 MLC 的差別 - hanky and nekochan's blog
最近好像太常碰到這個問題了, 就寫一篇文放著, 下次再遇到人問就丟這篇的URL給他看.

首先還是得先來一些關於快閃(flash)記憶體的預備常識:

快閃記憶體的用途目前最常見的就是: 記憶卡 (你的數位相機在用的), 隨身碟, 以及 SSD (固態磁碟機).
依其記憶單元的儲存技術, 可分為:
SLC: Single-Level Cell, 一個記憶單元只存放一個位元 (兩個狀態)
MLC: Multi-Level Cell, 一個單元可以存放多個電位狀態, 以 2 bits 為例就是 00, 01, 10, 11 四個狀態, 如此一來儲存密度較 SLC 高, 成本較低, 但速度就慢多了 <--- 我們不要太深究為什麼, 那是學電子的人才要去關心的事...我們暫時只需知道片面的結論就好. 讀完這一點, 你已經知道 SLC/MLC 不是牌子的名稱, 而是不同的技術名詞.

SLC 的壽命為 100,000 次的讀寫
MLC 的壽命為 10,000 次的讀寫
是的, 以同容量的 SLC 與 MLC 隨身碟相比, MLC 的價格大約才四分之一, 但壽命只有十分之一

Wear-leveling (損耗平均) 技術:
不管是 SLC 或 MLC 都有壽命上的問題, 所以如果有些記憶單元太常被讀取, 就會比其他記憶單元早很多步往生歸西. wear-leveling 就是要想辦法偷偷幫你搬家, 平均用掉這些記憶單元的壽命. 例如你家樓下有十個信箱筒, 有三個最常被使用, 怕說壞得比較快...樓下管理員就在半夜偷偷地把另外幾乎沒在用的三戶的信箱筒掉包...大概就是這樣的概念了. 等等, wear-leveling 當然是控制晶片 (樓下管理員) 在管的啦, 你有看過信箱 (記憶單元) 會自己搬家的嗎? 讀到這裏, 你應該更有概念了: 一隻 16G MLC 隨身碟的壽命, 不是一隻讀寫一萬次就完蛋了, 而是 [理想上] 有 16GB*10000 這麼長命; 觀念不在次數, 而在總資料流量. 160000GB 的資料流量, 給你三年的時間當分母好了, 全年無休地天天拷來拷去, 一天 146GB 耶!

多通道讀寫:
類似的名詞這幾年比較常見於主機板: 雙通道記憶體. 兩條RAM同時抓取資料, 在相同時間內抓到的資料量自然就是單條的兩倍 (廢話). 相同的觀念, 一樣可以用在快閃記憶體的控制晶片設計. MLC 比 SLC 慢這個常識這我們剛剛知道了, 但 "多通道 MLC 讀寫" 就可以和 "單通道 SLC 讀寫" 一較長短了... 決勝點就在於控制晶片. 當然...控制晶片本身也是成本之一, 搞得愈複雜就愈貴.

不是技術阿宅的人可能看到這裏就已經沒耐性再看下去了 (我有預先做過 reader's test 了哈哈)... 幸好你大概也只需要知道這麼多啦. 接下來就是 case study 了.

目前 (2008年11月) 市售已經罕有 SLC 的隨身碟了. 創見 JF168 16G (SLC) 的要價四千多塊. 而 16G MLC 隨身碟滿街都是, 最普通的大概一千元上下, 而像我買的 Corsair Voyager GT 16G 則是一千八左右, 速度仍略遜於 SLC 的隨身碟.

如果你比較在意 "寫入速度", 加上你真的比別人常常在用隨身碟搬大量資料 (例如影音圖檔什麼的), 那你可能得多花點錢投資購買 SLC 的隨身碟. 這並不是壽命上的考量. 如同我前一篇文寫過的, 除非你一天有 146G 的資料搬移量 (不管是讀或寫), 不然 MLC 16G 的隨身碟應該夠長命撐到你嫌它太小而買一隻大了八倍十六倍的新品 (屆時價錢可能也一樣在兩千塊以下). MLC 的另一個小問題就 "寫入比較有卡卡的感覺", 不若 SLC 那麼順暢, 尤其當你有一堆大大小小的檔案要寫來寫去的時候, 爛一點的 MLC 隨身碟就像喘不過氣來似的半死狀 (啊就慢啊~).

(待續)

2010年8月30日 星期一

ubuntu LAMP server 安裝程序 - D掉不累格 - udn部落格

ubuntu LAMP server 安裝程序 - D掉不累格 - udn部落格

2010年6月7日 星期一

phpmyadmin 出現關聯資料表的附加功能未能啟動解決方法

1.建立一個資料庫名稱:phpmyadmin


說明:先到phpmyadmin,建立一個名為"phpmyadmin"的資料庫



2.找到create_tables.sql

說明:檔案位址在phpmyadmin目錄中的scripts文件夾,就看到create_tables.sql檔案了
-------------------------------
-- --------------------------------------------------------
-- SQL Commands to set up the pmadb as described in Documentation.html.
--
-- This file is meant for use with MySQL 5 and above!
--
-- This script expects the user pma to already be existing. If we would put a
-- line here to create him too many users might just use this script and end
-- up with having the same password for the controluser.
--
-- This user "pma" must be defined in config.inc.php (controluser/controlpass)
--
-- Please don't forget to set up the tablenames in config.inc.php
--
-- $Id$

-- --------------------------------------------------------

--
-- Database : `phpmyadmin`
--
CREATE DATABASE IF NOT EXISTS `phpmyadmin`
DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
USE phpmyadmin;

-- --------------------------------------------------------

--
-- Privileges
--
-- (activate this statement if necessary)
-- GRANT SELECT, INSERT, DELETE, UPDATE ON `phpmyadmin`.* TO
-- 'pma'@localhost;

-- --------------------------------------------------------

--
-- Table structure for table `pma_bookmark`
--

CREATE TABLE IF NOT EXISTS `pma_bookmark` (
`id` int(11) NOT NULL auto_increment,
`dbase` varchar(255) NOT NULL default '',
`user` varchar(255) NOT NULL default '',
`label` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL default '',
`query` text NOT NULL,
PRIMARY KEY (`id`)
)
ENGINE=MyISAM COMMENT='Bookmarks'
DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;

-- --------------------------------------------------------

--
-- Table structure for table `pma_column_info`
--

CREATE TABLE IF NOT EXISTS `pma_column_info` (
`id` int(5) unsigned NOT NULL auto_increment,
`db_name` varchar(64) NOT NULL default '',
`table_name` varchar(64) NOT NULL default '',
`column_name` varchar(64) NOT NULL default '',
`comment` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL default '',
`mimetype` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL default '',
`transformation` varchar(255) NOT NULL default '',
`transformation_options` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`),
UNIQUE KEY `db_name` (`db_name`,`table_name`,`column_name`)
)
ENGINE=MyISAM COMMENT='Column information for phpMyAdmin'
DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;

-- --------------------------------------------------------

--
-- Table structure for table `pma_history`
--

CREATE TABLE IF NOT EXISTS `pma_history` (
`id` bigint(20) unsigned NOT NULL auto_increment,
`username` varchar(64) NOT NULL default '',
`db` varchar(64) NOT NULL default '',
`table` varchar(64) NOT NULL default '',
`timevalue` timestamp(14) NOT NULL,
`sqlquery` text NOT NULL,
PRIMARY KEY (`id`),
KEY `username` (`username`,`db`,`table`,`timevalue`)
)
ENGINE=MyISAM COMMENT='SQL history for phpMyAdmin'
DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;

-- --------------------------------------------------------

--
-- Table structure for table `pma_pdf_pages`
--

CREATE TABLE IF NOT EXISTS `pma_pdf_pages` (
`db_name` varchar(64) NOT NULL default '',
`page_nr` int(10) unsigned NOT NULL auto_increment,
`page_descr` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL default '',
PRIMARY KEY (`page_nr`),
KEY `db_name` (`db_name`)
)
ENGINE=MyISAM COMMENT='PDF relation pages for phpMyAdmin'
DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;

-- --------------------------------------------------------

--
-- Table structure for table `pma_relation`
--

CREATE TABLE IF NOT EXISTS `pma_relation` (
`master_db` varchar(64) NOT NULL default '',
`master_table` varchar(64) NOT NULL default '',
`master_field` varchar(64) NOT NULL default '',
`foreign_db` varchar(64) NOT NULL default '',
`foreign_table` varchar(64) NOT NULL default '',
`foreign_field` varchar(64) NOT NULL default '',
PRIMARY KEY (`master_db`,`master_table`,`master_field`),
KEY `foreign_field` (`foreign_db`,`foreign_table`)
)
ENGINE=MyISAM COMMENT='Relation table'
DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;

-- --------------------------------------------------------

--
-- Table structure for table `pma_table_coords`
--

CREATE TABLE IF NOT EXISTS `pma_table_coords` (
`db_name` varchar(64) NOT NULL default '',
`table_name` varchar(64) NOT NULL default '',
`pdf_page_number` int(11) NOT NULL default '0',
`x` float unsigned NOT NULL default '0',
`y` float unsigned NOT NULL default '0',
PRIMARY KEY (`db_name`,`table_name`,`pdf_page_number`)
)
ENGINE=MyISAM COMMENT='Table coordinates for phpMyAdmin PDF output'
DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;

-- --------------------------------------------------------

--
-- Table structure for table `pma_table_info`
--

CREATE TABLE IF NOT EXISTS `pma_table_info` (
`db_name` varchar(64) NOT NULL default '',
`table_name` varchar(64) NOT NULL default '',
`display_field` varchar(64) NOT NULL default '',
PRIMARY KEY (`db_name`,`table_name`)
)
ENGINE=MyISAM COMMENT='Table information for phpMyAdmin'
DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;

-- --------------------------------------------------------

--
-- Table structure for table `pma_designer_coords`
--

CREATE TABLE IF NOT EXISTS `pma_designer_coords` (
`db_name` varchar(64) NOT NULL default '',
`table_name` varchar(64) NOT NULL default '',
`x` INT,
`y` INT,
`v` TINYINT,
`h` TINYINT,
PRIMARY KEY (`db_name`,`table_name`)
)
ENGINE=MyISAM COMMENT='Table coordinates for Designer'
DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;

-- --------------------------------------------------------

--
-- Table structure for table `pma_tracking`
--

CREATE TABLE IF NOT EXISTS `pma_tracking` (
`db_name` varchar(64) collate utf8_bin NOT NULL,
`table_name` varchar(64) collate utf8_bin NOT NULL,
`version` int(10) unsigned NOT NULL,
`date_created` datetime NOT NULL,
`date_updated` datetime NOT NULL,
`schema_snapshot` text collate utf8_bin NOT NULL,
`schema_sql` text collate utf8_bin,
`data_sql` longtext collate utf8_bin,
`tracking` set('UPDATE','REPLACE','INSERT','DELETE','TRUNCATE','CREATE DATABASE','ALTER DATABASE','DROP DATABASE','CREATE TABLE','ALTER TABLE','RENAME TABLE','DROP TABLE','CREATE INDEX','DROP INDEX','CREATE VIEW','ALTER VIEW','DROP VIEW') collate utf8_bin default NULL,
`tracking_active` int(1) unsigned NOT NULL default '1',
PRIMARY KEY (`db_name`,`table_name`,`version`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin ROW_FORMAT=COMPACT;
-----------------------------------------------------------------------------



3.匯入create_tables.sql檔到phpmyadmin資料庫中



4.更改config.inc.php

說明:檔案在phpmyadmin目錄下,以下為更改數據



$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; // Database used for Relation, Bookmark and PDF Features

// (see scripts/create_tables.sql)

// - leave blank for no support

// DEFAULT: 'phpmyadmin'

$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark'; // Bookmark table

// - leave blank for no bookmark support

// DEFAULT: 'pma_bookmark'

$cfg['Servers'][$i]['relation'] = 'pma_relation'; // table to describe the relation between links (see doc)

// - leave blank for no relation-links support

// DEFAULT: 'pma_relation'

$cfg['Servers'][$i]['table_info'] = 'pma_table_info'; // table to describe the display fields

// - leave blank for no display fields support

// DEFAULT: 'pma_table_info'

$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords'; // table to describe the tables position for the PDF schema

// - leave blank for no PDF schema support

// DEFAULT: 'pma_table_coords'

$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages'; // table to describe pages of relationpdf

// - leave blank if you don't want to use this

// DEFAULT: 'pma_pdf_pages'

$cfg['Servers'][$i]['column_info'] = 'pma_column_info'; // table to store column information

// - leave blank for no column comments/mime types

// DEFAULT: 'pma_column_info'

$cfg['Servers'][$i]['history'] = 'pma_history'; // table to store SQL history

// - leave blank for no SQL query history

// DEFAULT: 'pma_history'

2010年5月11日 星期二

CentOS6.0安裝 Gallery2 相關資料

Gallery2.31 相簿安裝 影音轉換
PHP 5.3 on CentOS 5 Webtatic.com

RPM Search RedHat EL 5 php-eaccelerator-0.9.6.1-2.el5.remi.x86_64.rpm

兩個我常用的 CentOS Yum Repo
一. remi 與 epel升級倉庫---> PHP MYSQL 等
 rpm -Uvh http://mirror01.idc.hinet.net/EPEL/5/x86_64/epel-release-5-4.noarch.rpm
 rpm -Uvh http://rpms.famillecollet.com/enterprise/5/remi/x86_64/remi-release-5-8.el5.remi.noarch.rpm
導入認證KEY
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi移除 mysql i386
/etc/init.d/mysqld stop 
yum erase mysql.i386

安裝升級php 與 mysql
yum --enablerepo=remi check-update
yum --enablerepo=remi upgrade php mysql mysql-server php-mysql php-devel php-gd php-mcrypt php-mstring

 /etc/init.d/mysqld start
設定密碼:mysqladmin -u root password '密碼'

如 mysql ,升級或安裝時,套件清單 都會出現相同名稱的兩套套件,差別只在 i386 與 x86_64 的差異,
若不管,直接輸入 y 安裝之後,一旦要啟動 mysql ,系統就會警告說有兩套 mysql 在系統中,無法啟動!這問題我在安裝 perl 的時候就發生過,結果 perl 就無法執行!

也許可以 rpm -qa grep mysql 確認一下系統上還有哪些 mysql 套件,是否不只是因為有同一版本的 i386 與 x64
或用 yum list mysql* 確認一下有哪些 mysql 套件

只需要在 yum.conf 加上一行過濾掉 i386, i686 的軟件包就可以了:

# vi /etc/yum.conf
[main]
...
exclude=*.i386 *.i686


二. rpmforge 升級倉庫 (另一個類似atrpms repository)---影音類如果是選擇以RPM先連上軟件倉庫最容易更新相關影音轉碼套件 ,CentOS 5.4默認的Repository裡找不到這些yum包,先安裝rpmforge這個Repository。很全很強大,近10000個軟件包。

#32位:wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
rpm -ivh rpmforge-release-0.5.2-2.el5.rf.i386.rpm
#64位:wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
#rpm -Uvh rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
導入認證KEY
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
(若為CentOS6.xx 則 
   32位: http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm

    x86_64 http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
)

#yum --enablerepo=rpmforge check-update
修改 vi /etc/yum.repos.d/rpmforge.repo
enabled = 1 ==> enabled = 0
然後參照 Install ffmpeg, flvtool2, mplayer, mencoder and ffmpeg-php in Cpanel/CentOS或安裝 Gallery2 電子相簿系統

需額外下載 Transcode Module 放到gallery2 module 目錄

以下方式一次安裝(除了ffmapeg 比較麻煩)
yum install --enablerepo=rpmforge ImageMagick netpbm netpbm-progs jhead ffmpeg ffmpeg-devel flvtool2 mplayer mencoder lame libogg libvorbis libtheora swftools amrnb amrwb transcode x264
How To Install FFmpeg, Mplayer, Mencoder, FFmpeg-PHP on CentOS 5.x Sohail Riaz, Linux and Open Source Blog

參考下列方式可以自行安裝較新套件奇想空 先教Server學轉片吧
Install ffmpeg, flvtool2, mplayer, mencoder and ffmpeg-php in Cpanel/CentOS L i j e e s h . I N
1. Open the file “/ffmpeg-php-0.6.0/ffmpeg_frame.c”
2. Replace all PIX_FMT_RGBA32 with PIX_FMT_RGB32 (vi:n1,n2s/PIX_FMT_RGBA32/PIX_FMT_RGB32)/g

Install ffmpeg ffmpeg-php and Audio Binaries on CentOS / RHEL System with Cpanel

(1)LAME (Lame Aint an MP3 Encoder)
(2)ffmpeg
ffmpeg-php extension ffmpeg-php

(3)FLVTool2

ImageMagick: Install from Binary Distribution

http://registerboy.pixnet.net/blog/post/24896148


Installing or Upgrading PHP 5.3.2
cd /root
rpm -ivh http://repo.webtatic.com/yum/centos/5/`uname -i`/webtatic-release-5-0.noarch.rpm
yum --enablerepo=webtatic install php
yum --enablerepo=webtatic install php-devel

yum-allowdowngrade 可以降级的插件:
allow downgrade for yum:
yum install yum-allowdowngrade
Add a line to yum.conf:
showdupesfromrepos=1
After that list all php packages:
yum list php
If php 5.2.8 is available, remove new one:
yum remove php
and install an old one:
yum --allow-downgrade install php-5.2.8


相關套件說明可參考這邊Install ffmpeg ffmpeg-php and Audio Binaries on CentOS / RHEL System with Cpanel


在php.ini裡有一些跟上傳檔案時有關的數值,

◦upload_max_filesize:
這是上傳單一檔案的大小限制,譬如我若允許上傳超過20MB的影片檔,那這數值就必須至少大於「20M」才可以。
◦post_max_size:
PHP允許一次上傳檔案的大小限制,譬如Gallery2要上傳檔案時,可以一次多個檔案上傳,若我一次要上傳2個15MB的影片檔,那麼這個數值就必須至少大於「30M」了。

這個 post_max_size 必須大於 upload_max_filesize
◦memory_limit:
執行每個scripts時使用的memory大小限制

這個 memory_limit 必須大於 post_max_size
這三個數值的大小,必須是 memory_limit > post_max_size > upload_max_filesize


布丁布丁吃什麼?: VNCserver初始設定與自動啟動



MYSQL
先將mysql的服務啟動
#chkconfig mysqld on
#service mysqld start


以下範例為將預設的空密碼改為"my1234"
#mysqladmin -u root password my1234
如果你是要將舊密碼改為"my1234"
#mysqladmin -u root -p password my1234
Enter password: <==這裡請輸入舊的密碼


phpMyAdmin
先到phpmyadmin的目錄裡面
#cd /var/www/html/phpMyAdmin
產生config.inc.php設定檔
預設是沒有這個檔案的,要先將config.sample.inc.php複製成config.inc.php
#cp ./config.sample.inc.php ./config.inc.php
將認證方式改為http或是cookie還有修改hostname



為方便MySQL的DB操作(或許以經習慣使用phpMyAdmin來設定DB).

安裝時會有一些要處理的事項, 在此記錄.

PS: 此文大多搜集網路



1. 於phpMyAdmin網頁下載最新版本.

2. /etc/httpd/conf.d/, 新增phpmyadmin.conf

Alias /phpMyAdmin /var/www/phpMyAdmin

Order deny, allow

Deny From ALL

Allow From 192.168.0.



開啟 myphpadmin下的config.sample.inc.php

3.將 $cfg['Servers'][$i]['auth_type'] = 'cookie'; cookie改為 http,另存為 config.inc.php

4.重新啟動apache

service httpd restart




----------------------------------------------------------------------

I. 問題1

http://xxx/phpMyAdmin頁面出現

[code]

php 5.2+ is required

[/code]

因為php版本低於5.2版

[code]

php -v

[/code]

@解決方式:

a. 安裝epel 及 remi

(remi需要epel; 故先安裝epel, 再安裝remi)

[code]

wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm

wget http://rpms.famillecollet.com/el5.i386/remi-release-5-8.el5.remi.noarch.rpm

[/code]

epel-release-5-4.noarch.rpm與remi-release-5-8.el5.remi.noarch.rpm下載時可以查尋是否有最新版本

b. rpm安裝

[code]

rpm -Uvh epel-release-5-4.noarch.rpm

rpm -Uvh remi-release-5-8.el5.remi.noarch.rpm

[/code]

c. 指定remi套件, update php及mysql

[code]

yum --enablerepo=remi update php mysql

[/code]

重新啟動php, mysql

[code]

service httpd restart

service mysqld restart

[/code]



----------------------------------------------------------------------

II. 問題2

進入phpMyAdmin, 出現

未安裝mcypt, mstring

設定檔案現在需要密碼 (passphrase) (blowfish_secret).

@解決方式

a. mcrypt及mstring

[code]

yum --enablerepo=remi install php-mcrypt php-mstring



(若以下方式, 可能無法安裝)

yum install php-mcrypt

yum install php-mstring

[/code]

b. 設定檔案現在需要密碼

於/var/www/phpMyAdmin/config.inc.php (可修改config.sample.inc.php)

修改

[code]

$cfg['blowfish_secret'] = '輸入一亂碼, 作cookie認證'

[/code]

重新啟動apache

[code]

service httpd restart

[/code]