2010-12-29

PHP API調用BING翻譯

資料來源:http://www.kalvin.cn/study/php-api-call-bing-translation-results.html
<?php echo bingtrans('大家好,欢迎光临我的博客!'); //return: Hello, and welcome to my blog! 
function bingtrans($str ''$in 'zh-CHS'$to 'en'$api 'C2D5477B17DD7DCB1391E6B4D3222F2DB8AFAE7D') { 
    if (empty(
$str)) { 
        return 
false
    }  
    
$url "http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=" $api "&text=" urlencode($str) . "&from=" $in "&to=" $to
    if (
function_exists('curl_init')) { 
        
$curl curl_init(); 
        
curl_setopt($curlCURLOPT_URL$url); 
        
curl_setopt($curlCURLOPT_RETURNTRANSFER1); 
        
$res curl_exec($curl); 
    } else { 
        
$res = @file_get_contents($url); 
    }  
    
preg_match("~<string([^><]*?)>([\s\S]*?)<\/string>~i"$res$ostr); 
    if (empty(
$ostr[2])) { 
        return 
false
    } else { 
        return 
htmlspecialchars_decode($ostr[2]); 
    }  
}  
?>

jQuery Version 1.4.4 API 中文版

jQuery API 1.4.4中文版下载


網址:http://www.css88.com/jqapi/

2010-10-26

NoMachine Free NXServer和neatx共存

文章來源:http://yao-blog.appspot.com/


NoMachine的FreeNxServer只支持两个同时的连接,但是支持其他的声音等等功能,neatx是Google开发的NX服务器,主要是Python和少量的c代码,不限制连接数,但是没有其他高级功能,有时不稳定。这两个服务器都可以用NoMachine的免费客户端连接。
最近我尝试在一台机器上同时安装这两个服务器,灵感来自这篇博客。不过我和他的实现手法不一样。我用的操作系统是Ubuntu10.04.1。我是先安装的neatx再安装的NoMachine nxserver,安装后一个时提示我nx用户已经存在,我后来手工把nx用户删掉再重安装的。不知道先装nx的再装neatx能不能避免这个问题。
两个都装好之后修改/etc/passwd文件,sudo vipw,使用NoMachine的home作为nx的主目录,修改shell为/bin/sh
$ sudo vipw

nx:x:116:65534::/usr/NX/home/nx:/bin/sh
修改/usr/NX/home/nx/.ssh/authorized_keys添加command选项。(SSH可以强制登陆后执行的命令) 修改后的选项
command="/usr/NX/bin/nxserver",no-port-forwarding,no-agent-forwarding ssh-dss AAAAB3NzaC1kc....
ssh-keygen -t dsa生成一个新的key给neatx使用,key保存在当前目录,neatxkey和neatxkey.pub。 把公钥加入到服务器上
cat neatxkey.pub  >> /usr/NX/home/nx/.ssh/authorized_keys
修改对应的公钥使用neatx的nxserver。
command="/usr/bin/nxserver",no-port-forwarding,no-agent-forwarding ssh-dss  AAAAB3NzaC1kc....
确认能否正常工作
yao@yao-desktop:~$ ssh -i nxkey nx@172.28.1.109 
HELLO NXSERVER - Version 3.4.0-14 - LFE
NX> 105 quit
Quit 
NX> 999 Bye.
Connection to 172.28.1.109 closed.
yao@yao-desktop:~$ ssh -i neatxkey nx@172.28.1.109 
HELLO NXSERVER - Version 3.3.0 - GPL
NX> 105 quit
Quit
NX> 999 Bye.
Connection to 172.28.1.109 closed.
我们可以看到启动的是两个不同的nx服务器,客户端连接的时候在Configuration里有一个Keys按钮,点开可以导入不同的key。测试用不同的key启动不同的nxserver成功。
顺便说一句,neatx有时不删除session文件,导致不能连接,最后在rc.local里加入以下内容。
rm -rf /var/lib/neatx/sessions/*

2010-08-17

強迫移除 MySQL Root 密碼(Linux)

  1. /etc/init.d/mysql stop
  2. /usr/sbin/mysqld --skip-grant-tables --user=root & # 啟動 MySQL
  3. mysql -u root # 已經可以不用密碼進入囉~
  4. mysql> UPDATE mysql.user SET Password=PASSWORD('') WHERE User='root'; # 將 root 密碼清掉, 或於此設定想要的密碼.
  5. mysql> quit
  6. /etc/init.d/mysql restart # 完成.

2010-07-21

轉換西元日期/民國日期

/*
名稱: 雙向轉換西元日期 - 民國日期
用法: ch_date(來源日期(民國/西元皆可), 來源日期(年月日)分隔符號[選填], 輸出日期(年月日)分隔符號[選填]);
範例: echo ch_date(2006/12/31,'/','-'); // output: 95-12-31
備註: 直接呼叫,將輸出目前民國年份
*/

function ch_date($date="", $from="", $to="") {
  if (!$date) $date = date('Ymd');
  $m = substr($date,-4,2);
  $d = substr($date,-2,2);
  if ($from) {
    if (strlen(@ereg_replace($from,'',$date))>7) {
      $mode = 1;
    } else $mode = 2;
  } else {
    if (strlen($date)>7) {
      $mode = 1;
    } else $mode = 2;
  }
  switch ($mode) {
    case "1":
    if ($from == '') {
      $y = substr($date,0,4)-1911;
    } else {
      $tok = explode($from,$date);
      $y = $tok[0]-1911;
      $m = $tok[1];
      $d = $tok[2];
    }
    break;
    case "2":
    if ($from == '') {
      if (strlen($date)==7) {
        $y = substr($date,0,3)+1911;
      } else $y = substr($date,0,2)+1911;
    } else {
      $tok = explode($from,$date);
      $y = $tok[0]+1911;
      $m = $tok[1];
      $d = $tok[2];
    }
    break;
  }
  $date = $y.$to.$m.$to.$d;
  return $date;
}

2010-06-09

PHP function: 壓縮 CSS file

<?php
/**
 * Converts a CSS-file contents into one string
 * Source Code: http://snippets.dzone.com/posts/show/4137
 * @Author: Dmitry-Sh http://snippets.dzone.com/user/Dmitry-Sh
 *
 * @param    string  $t Text data
 * @param    int     $is_debug Skip convertion
 * @return   string  Optimized string
 *

/

2010-06-03

MySQL: UNION和UNION ALL

在資料庫中,UNIONUNION ALL關鍵字都是將兩個結果集合並為一個,但這兩者從使用和效率上來說都有所不同。
MySQL中的UNION
UNION在進行錶鏈接後會篩選掉重複的記錄,所以在錶鏈接後會對所產生的結果集進行排序運算,刪除重複的記錄再返回結果。實際大部分應用中是不會產生重複的記錄,最常見的是過程表與歷史表UNION。如:
select * from users1 union select * from user2
這個SQL在運行時先取出兩個表的結果,再用排序空間進行排序刪除重複的記錄,最後返回結果集,如果表資料量大的話可能會導致用磁片進行排序。
MySQL 中的UNION ALL
UNION ALL只是簡單的將兩個結果合併後就返回。這樣,如果返回的兩個結果集中有重複的資料,那麼返回的結果集就會包含重複的資料了。
從效率上說,UNION ALL 要比UNION快很多,所以,如果可以確認合併的兩個結果集中不包含重複的資料的話,那麼就使用UNION ALL,如下:
select * from user1 union all select * from user2

2010-02-01

MySQL -- 找出重複資料

SELECT a.ad13_area_code, a.ad13_city_name
FROM ad13 a, ad13 b
WHERE a.ad13_area_code = b.ad13_area_code
GROUP BY 1 , 2
HAVING count( a.ad13_area_code ) >1 

2010-01-08

如何在php中修補XSS漏洞

在PHP中修补XSS漏洞,我们可以使用三个PHP函数。

这些函数主要用于清除HTML标志,这样就没办法注入代码了。使用更多的函数是htmlspecialchars() ,它可以将所有的"<"与">"符号转换成"<" 与">;"。其它可供选择的函数还有htmlentities(), 它可以用相应的字符实体(entities)替换掉所有想要替换掉的特征码(characters)。

PHP Code: