使用ramdisk來構建臨時文件及下載用分區

當今世代,內存已經變得白菜價。8g甚至16g、32g也並不是需要很貴就能買到。而人們常用的bt下載由於其下載機制,即便有緩存對於硬盤的操勞還是不少的。所以硬盤算是電腦裡最容易壞的一件配件了。有見及此,軟件商們開發了一種軟件,統稱可以叫做ramdisk吧,大概的作用就是把你電腦裡的內存劃分出一個硬盤分區來,然後可以把日常系統使用的臨時文件和下載放在裡面。其實這種軟件很多年前就有了,只是那個時候內存並不是現在這樣的白菜價。下載下來的數據只是保存在那個“內存分區裡”,並不會對實際的物理硬盤產生任何操作。懂一點電腦知識的都知道內存裡面的數據一斷電就會消失的,所以需要你在關機之前,把“內存分區”裡你要的文件,例如電影啊什麼的copy到你的實際硬盤分區去,這樣一次過操作大量數據,比起你不停下載硬盤不停地讀寫對於硬盤的操勞量少得多。
ramdisk類軟件有很多,有免費有收費的。
以下列舉一些:

  1. Buffalo Ramdisk
  2. Anvil's Storage Utilities
  3. DATARAM RamDisk
  4. Primo RamDisk
  5. SoftPerfect RamDisk
  6. SuperSpeed RAM Disk

需要的自己google去吧。

WordPress發文同步到Twitter、新浪微博

無聊看了看新浪微博的API,因為跟twitter一樣使用OAuth2.0協議,所以可以通過修改Wordpress源碼,或者自己做一個plugin,即可實現發文同步到這些有api的SNS上。
當然,首先你要先申請成為開發者,獲得appid,這點twitter就很開放,只要你是twitter用戶就可以了。至於微博,呵呵,你懂的。

以下是同步到新浪微博的例子。
將一下這段代碼添加到你wordpress在用的那個主題的functions.php文件的末尾,$status就是你要發的內容,然後更改'你的appid'、'你的用戶名:你的密碼',這樣在你每次在wordpress發文之後,都會馬上同步到twitter和新浪微博了。

//synchronize to weibo
function post_to_sina_weibo($post_ID) {
  if( wp_is_post_revision($post_ID) ) return;
    $get_post_info = get_post($post_ID);
    $get_post_centent = get_post($post_ID)->post_content; 
    $get_post_title = get_post($post_ID)->post_title;
  if ( $get_post_info->post_status == 'publish' && $_POST['original_post_status'] != 'publish' ) {
    $request = new WP_Http;
    $status = '' . strip_tags( $get_post_title ) . '€‘ ' . get_permalink($post_ID) ;
    $api_url = 'https://api.weibo.com/2/statuses/update.json';
    $body = array( 'status' => $status, 'source'=>'你的appid');
    $headers = array( 'Authorization' => 'Basic ' . base64_encode('你的用戶名:你的密碼') );
    $result = $request->post( $api_url , array( 'body' => $body, 'headers' => $headers ) );
    }
}
add_action('publish_post', 'post_to_sina_weibo', 0);

PHP使用strtotime()獲取以當前日期為基準N天前|N天后的日期

雖然基本的寫法可以有很多,例如可以使用UNIX TIMESTAMP以計算秒數差來獲得日期,但是PHP有自帶的strtotime()函數還是相當便利的。

	 
date("Y/m/d"); // 今天
date("Y/m/d",strtotime("-10 day")); // 10日前
date("Y/m/d",strtotime("-2 week")); // 2星期前
date("Y/m/d",strtotime("-2 month")); // 2個月前
date("Y/m/d",strtotime("-5 year")); // 5年前
date("Y/m/d",strtotime("+10 day")); // 10日後
date("Y/m/d",strtotime("+2 week")); // 2星期後
date("Y/m/d",strtotime("+2 month")); // 2個月後
date("Y/m/d",strtotime("+5 year")); // 5年後

在VPS(Centos6)上搭建OpenVPN

由於各式各樣的原因,VPN這種東西在某個國家的需求其實是特別大的。那怎樣在VPS或者獨立服務器上搭建適用範圍比較大的OpenVPN服務器呢?

首先當然是要準備安裝程序的安裝包。接下來我們要安裝三樣東西,一是lzo,二是OpenVPN,三是證書文件。現在lzo的版本是2.06,OpenVPN的版本是2.3.2,那麼接下來就動手吧。以下是用root來登錄,為了省卻很多麻煩。

cd /usr/local/src
wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gz
wget http://swupdate.openvpn.org/community/releases/openvpn-2.3.2.tar.gz
wget https://github.com/OpenVPN/easy-rsa/archive/master.zip
tar xzf lzo-2.06.tar.gz
tar xzf openvpn-2.3.2.tar.gz
cd lzo-2.06
./configure
make && make install

cd ..
cd openvpn-2.3.2
./configure
make && make install

如無意外,這樣軟件就安裝完成了,如果出錯就自己看哪裡報錯吧。然後把下載下來的證書文件解壓縮,複製到相應的位置,再往下就是配置設置了。

複製文件、生成證書

cd /usr/local/src
unzip master.zip
mkdir /etc/openvpn
ls -ld /etc/openvpn
cp -ip /usr/local/src/openvpn/sample-config-files/server.conf /etc/openvpn/
cp -ip /usr/local/src/easy-rsa-master/easy-rsa /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa/2.0
. ./vars
./clean-all
./build-ca
中途會讓你填寫證書的一些內容,就根據自己的需要更改就好

./build-key-server server
跟上面一樣,只是其中一項
A challenge password []: 這裡建議留空


./build-key client1
./build-key client2
這樣就生成了2個用戶使用證書

./build-dh
這個要等些少時間的

/usr/local/sbin/openvpn --genkey --secret /etc/openvpn/easy-rsa/2.0/keys/ta.key

配置服務器

vi /etc/openvpn/server.conf
根據下面更改
port 1194
proto udp
dev tun
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key  # This file should be kept secret
dh /etc/openvpn/easy-rsa/2.0/keys/dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
client-to-client
keepalive 10 120
tls-auth /etc/openvpn/easy-rsa/2.0/keys/ta.key 0 # This file is secret
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3

添加OpenVPN自啟動並啟動

vi /etc/rc.local
添加
openvpn --daemon --config /etc/openvpn/server.conf
保存並退出

然後先手動啟動一下
openvpn --daemon --config /etc/openvpn/server.conf

如果使用了防火牆,則在防火牆添加規則

iptables -A INPUT -p udp --dport 1194 -j ACCEPT
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A FORWARD -m state --state NEW -o eth0 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state NEW -o eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

service iptables save
service iptables restart

這樣OpenVPN服務器端應該就已經正常運作。然後自己想辦法把之前生成的證書下載到本地先。然後自己新建一個文本文件

client
tls-auth ta.key 1
dev tun
proto udp
remote [你的服務器IP] 1194
ca ca.crt
cert client1.crt
key client1.key
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3

另存為client.ovpn。然後吧客戶端需要用到的文件保存到一個文件夾內,就是

client.ovpn
ca.crt
client1.crt
client1.key
ta.key

然後就自己用客戶端去連自己的OpenVPN去做這樣或那樣的事情吧。