2012年11月30日 星期五

checkbox 多重選取

test.php
<?php
if($_POST["test"])
  foreach($_POST["test"] as $var) echo $var."|";
print_r($_POST["test"]);
?>
<form name="form" method="post" action="test.php">
<input type=checkbox name=test[] value=001>001<br />
<input type=checkbox name=test[] value=002>002<br />
<input type=checkbox name=test[] value=003>003<br />
<input type=checkbox name=test[] value=004>004<br />
<input type=checkbox name=test[] value=005>005<br />
<input type="submit" value="submit">
</form>

2012年11月23日 星期五

office2010 及 office2013 kms 認證 bat


@echo off

if exist "%programfiles(x86)%\microsoft office\office14\ospp.vbs" (
cscript "%programfiles(x86)%\microsoft office\office14\ospp.vbs" /osppsvcrestart
cscript "%programfiles(x86)%\microsoft office\office14\ospp.vbs" /sethst:your-kms-server
cscript "%programfiles(x86)%\microsoft office\office14\ospp.vbs" /act
)
if exist "%programfiles%\microsoft office\office14\ospp.vbs" (
cscript "%programfiles%\microsoft office\office14\ospp.vbs" /osppsvcrestart
cscript "%programfiles%\microsoft office\office14\ospp.vbs" /sethst:your-kms-server
cscript "%programfiles%\microsoft office\office14\ospp.vbs" /act
)
if exist "%programfiles(x86)%\microsoft office\office15\ospp.vbs" (
cscript "%programfiles(x86)%\microsoft office\office15\ospp.vbs" /sethst:your-kms-server
cscript "%programfiles(x86)%\microsoft office\office15\ospp.vbs" /act
)
if exist "%programfiles%\microsoft office\office15\ospp.vbs" (
cscript "%programfiles%\microsoft office\office15\ospp.vbs" /sethst:your-kms-server
cscript "%programfiles%\microsoft office\office15\ospp.vbs" /act
)
PAUSE

因應office2013上市,修改了原本office2010.bat的檔案
同時,發現之前的流程只會執行一次,如果同時安裝各種版本的就會無法同時認證
所以改了一下bat檔執行的流程

2012年11月20日 星期二

在 windows 2008 R2 上安裝 KMS server 更新

1.安裝windows 2008 R2 並完成所有更新。

2.由下列網址下載 KMS host 更新,以支援 windows 8 及 2012 啟動認證
http://support.microsoft.com/kb/2757817/en-us

3.安裝完成後執行以下兩行指令,啟動 KMS host

cscript c:\windows\system32\slmgr.vbs -ipk "your host key"
cscript c:\windows\system32\slmgr.vbs -ato

ps: 
(1) windows 8 host key 支援 windows 8, windows 7, windows vista 啟動認證
(2) windows 2012 host key 支援 windows 2012, windows 2008R2, windows 2008, windows 8, windows 7, windows vista 啟動認證
資料來源:http://technet.microsoft.com/en-us/library/jj134256.aspx

4.由下列網址下載 Office 2010 啟動程式
http://www.microsoft.com/en-us/download/details.aspx?id=25095
執行 KeyManagementServiceHost.exe
然後輸入 "your host key"


5.由下列網址下載 Office 2013 啟動程式
http://www.microsoft.com/en-us/download/details.aspx?id=35584
執行 office2013volumelicensepack_en-us_x86.exe
然後輸入 "your host key"

2012年11月9日 星期五

Q11498: Division of Nlogonia

原文
中譯


#include "stdio.h"

int main()
{
  int K,N,M,X,Y;
  while( scanf(" %d",&K) != EOF && K != 0 )
  {
 scanf(" %d %d",&N,&M);
 while( K-- )
 {
   scanf(" %d %d",&X,&Y);
   if( X == N || Y == M )
  printf("divisa");
   else 
   {
  if( M - Y > 0 )
    printf("S");
  if( M - Y < 0 )
    printf("N");
  if( N - X > 0 )
    printf("O");
  if( N - X < 0 )
    printf("E");
   }
 printf("\n");
 }
  }
  return 0;
}

Q11494: Queen

原文
中譯


#include "stdio.h"

int main()
{
  int x1,x2,y1,y2;
  while( 1 )
  {
 scanf(" %d %d %d %d",&x1,&y1,&x2,&y2);
 if( x1 == 0 && x2 == 0 && y1 == 0 && y2 == 0 )
   break;
 if( x1 == x2 && y1 == y2)
   printf("0\n");
 else if( (x1 - x2)*(x1 - x2) == (y1 - y2)*(y1 - y2) || x1 - x2 == 0 || y1 - y2 == 0)
   printf("1\n");
 else
   printf("2\n");
  }
  return 0;
}

Q11479: Is this the easiest problem?

原文
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2474
中譯
http://luckycat.kshs.kh.edu.tw/homework/q11479.htm


#include "stdio.h"

int main()
{
  int num,tmp = 1;
  long long int in[3];
  scanf( "%d",&num);
  while( num-- )
  {
 scanf(" %lld %lld %lld",&in[0],&in[1],&in[2]);
 if( in[0] + in[1] <= in[2] || in[0] + in[2] <= in[1] || in[1] + in[2] <= in[0] )
   printf("Case %d: Invalid\n",tmp);
 else if( in[0] == in[1] && in[1] == in[2] )
   printf("Case %d: Equilateral\n",tmp);
 else if( in[0] == in[1] || in[1] == in[2] || in[0] == in[2])
   printf("Case %d: Isosceles\n",tmp);
 else
   printf("Case %d: Scalene\n",tmp);
 tmp++;
  }
  return 0;
}

Q11398 - The Base-1 Number System

原文
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2393
中譯
http://luckycat.kshs.kh.edu.tw/homework/q11398.htm


#include "stdio.h"

int main()
{
  int str[50],num = 0,i,tmp = 0;
  char in[40],flag = 0;
  while( 1 )
  {
 scanf(" %s",in);
 if( in[0] == '~' )
   break;
 if( in[0] == '#' )
 {
   int j = 1,out = 0;
   for(i = tmp - 1;i > -1;i--)
   {
  out += str[i] * j;
  j *= 2;
   }
   printf("%d\n",out);
   num = 0;
   tmp = 0;
   for(i = 0;i < 50;i++)
  str[i] = 0;
   continue;
 }
 if( strlen(in) == 1 )
   flag = 1;
 else if( strlen(in) == 2 )
   flag = 0;
 else
 {
   for(i = 0;i < strlen(in) - 2;i++)
   {
  str[tmp] = flag;
  tmp++;
   }
 }
 num++;
  }
  return 0;
}

2012年11月8日 星期四

Q11369: Shopaholic

原文
中譯


#include "stdio.h"

int quicksort(int p[],int left,int right)
{
  if( left >= right )
 return 0;
  int i,j,s,tmp;
  s = p[left];
  i = left + 1;
  j = right;
  while( 1 )
  {
    while( i < right && p[i] >= s )
   i++;
 while( j > left && p[j] <= s )
   j--;
 if( i >= j )
   break;
 tmp = p[i];
 p[i] = p[j];
 p[j] = tmp;
  }
  tmp = p[left];
  p[left] = p[j];
  p[j] = tmp;
  quicksort(p,left,j - 1);
  quicksort(p,j + 1,right);
  return 0;
}
int main()
{
  int num;
  scanf(" %d",&num);
  while( num-- )
  {
 int i,j,n,p[20000]={0},save = 0,tmp;
 scanf(" %d",&n);
 for(i = 0;i < n;i++)
 {
   scanf(" %d",&p[i]);
 }
 quicksort(p,0,n - 1);
 for(i = 2;i < n;i+=3)
 {
  save += p[i];
 }
 printf("%d\n",save);
  }
  return 0;
}

2012年11月5日 星期一

Q11364: Parking

原文
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2349
中譯
http://luckycat.kshs.kh.edu.tw/homework/q11364.htm


#include "stdio.h"

int main()
{
  int t,n;
  scanf(" %d",&t);
  while( t )
  {
 int i,min=100,max=0,x;
 scanf(" %d",&n);
 for(i = 0;i < n;i++)
 {
   scanf(" %d",&x);
   if( x > max )
  max = x;
   if( x < min )
  min = x;
 }
 printf("%d\n",(max - min) * 2);
 t--;
  }
  return 0;
}

2012年11月2日 星期五

Q11332: Summing Digits

原文
中譯

#include "stdio.h"

int f(int n)
{
  int tmp = 0;
  while( n )
  {
 if( n >= 10 )
   tmp += n % 10;
 else
   tmp += n;
 n = n / 10;
  }
  if( tmp >= 10 )
 return f(tmp);
  else
 return tmp;
}
int main()
{
  int n;
  while (scanf(" %d",&n) != EOF && n )
  {
 printf("%d\n",f(n));
  }  
  return 0;
}

Q11219: How old are you?

原文
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2160
中譯
http://luckycat.kshs.kh.edu.tw/homework/q11219.htm
#include "stdio.h"

int main()
{
  int T,D,M,Y,d,m,y,DAYS,days,times = 1;

  scanf(" %d",&T);
  while ( times <= T )
  {
 scanf(" %d/%d/%d",&D,&M,&Y); 
 scanf(" %d/%d/%d",&d,&m,&y);  

 DAYS = Y * 12 * 31 + (M - 1) * 31 + D;
 days = y * 12 * 31 + (m - 1) * 31 + d;

 if( DAYS - days < 0)
   printf("Case #%d: Invalid birth date\n",times);
 else if( DAYS - days >= 131 * 12 * 31 )
   printf("Case #%d: Check birth date\n",times);
 else
 {
   printf("Case #%d: %d\n",times,(DAYS - days) / (12 * 31));
 }
 times++;
  }
  return 0;
}

Q11204: Musical instruments

原文
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2145
中譯
http://luckycat.kshs.kh.edu.tw/homework/q11204.htm


#include "stdio.h"

int main()
{
  int num,i,j,k,total;
  scanf(" %d",&num);
  for(i = 0;i < num;i++)
  {
 int N,M,tmp,first[32]={0},times = 1;
 scanf(" %d %d",&N,&M);
 for(j = 0;j < M;j++)
 {
   for(k =0;k < N;k++)
   {
  scanf(" %d",&tmp);
  if( tmp == 1 )
    first[k] += 1;
   }
 }
 for(j = 0;j < N;j++)
 {
   if( first[j] > 0)
   {
  times *= first[j];
   }
 }
 printf("%d\n",times);
  }
  return 0;
}

Q11185: Ternary

原文
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2126
中譯
http://luckycat.kshs.kh.edu.tw/homework/q11185.htm
#include "stdio.h"

int main()
{
  int N;
  while( scanf(" %d",&N) )
  {
 int q[1000],i = 0,j;
 if( N < 0 )
   break;
 if( N == 0)
   q[0] = 0;
 while( N > 0 )
 {
   q[i] = N % 3;
   N = N / 3;
   if( N == 0 )
  break;
   i++;
 }
 for(j = i;j >= 0;j--)
 {
   printf("%d",q[j]);
 }
 printf("\n");
  }
  return 0;
}

Q11172: Relational Operators

原文
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2113
中譯
http://luckycat.kshs.kh.edu.tw/homework/q11172.htm
#include "stdio.h"

int main()
{
  int num,a,b;
  scanf(" %d",&num);
  while( num )
  {
 scanf(" %d %d",&a,&b);
 if( a > b )
   printf(">\n");
 if( a < b )
   printf("<\n");
 if( a == b )
   printf("=\n");
 num--;
  }
  return 0;
}

Q11059: Maximum Product

原文
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2000
中譯
http://luckycat.kshs.kh.edu.tw/homework/q11059.htm
#include "stdio.h"

int main()
{
  int N,S[20],num = 1;
  while( scanf(" %d",&N) != EOF && N)
  {
 int i,j,k;
 long long int P;
 for(i = 0;i < N;i++)
 {
   scanf(" %d",&S[i]);
   if(i == 0)
  P = S[i];
   else
   {
  for(j = 0;j <= i;j++)
  {
    long long int tmp = 1;
    for(k = j;k <=i;k++)
   tmp *= S[k];
    if( P < tmp )
      P = tmp;
  }
   }
 }
 if( P < 0 )
   P = 0;
    printf("Case #%d: The maximum product is %lld.\n\n",num,P);
 num++;
  }
  return 0;
}

2012年10月30日 星期二

使用HttpWebRequest抓取檔案

using System;
using System.IO;
using System.Net;

namespace test
{
  class Program
  {
    static void Main(string[] args)
    {
      try
      {
        string url = "http://192.168.1.1/test.txt";
        HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(url);
        Request.Timeout = 5;
        HttpWebResponse Response = (HttpWebResponse)Request.GetResponse();
           
        Stream dataStream = Response.GetResponseStream();
        byte[] buffer = new byte[8192];
                    
        FileStream fs = new FileStream("C:\\test.txt",FileMode.Create,FileAccess.Write);
        int size = 0;
        do
        {
          size = dataStream.Read(buffer, 0, buffer.Length);
          if (size > 0)
            fs.Write(buffer, 0, size);
        } while (size > 0);
        fs.Close();
            
        Response.Close();
        Console.WriteLine("Get File Done!!\n");
        Console.ReadKey();
      }
      catch(WebException ex)
      {
        Console.WriteLine("Get Nothing!!\n");
        Console.ReadKey();
      }
    }
  }
}

2012年10月11日 星期四

netsh 開放特定ip通過防火牆連線特定port

開放
netsh advfirewall firewall add rule name="pass" protocol=TCP localport=23 action=allow remoteip=192.168.0.0/16 enable=yes dir=in
pass:防火牆規則名稱,移除時會用到
23:開放port
192.168.0.0/16:開放ip(網段)
關閉(移除)
netsh advfirewall firewall del rule name="pass"
action=allow 開放
action=block 封鎖

2012年10月5日 星期五

php 呼叫外部程式

當程式中有需要呼叫外部程式,且不需等待外部程式跑完,即繼續執行時可用以下方法:
$file = popen("php test.php","r");
pclose($file);

2012年10月1日 星期一

netsh 防火牆開/關

WinXP
關閉防火牆
netsh firewall set opmode mode=disable profile=ALL
開啟防火牆
netsh firewall set opmode mode=enable profile=ALL

Win7也可用以上指令開關,但會提示指令已過時,建議改用以下指令:
關閉防火牆
netsh advfirewall set currentprofile state off
開啟防火牆
netsh advfirewall set currentprofile state on

2012年9月18日 星期二

使用session傳遞資料

啟動session
session_start();

釋放所有變數
session_unset();
session_destroy();

//方法一:直接指定
$_SESSION['data'] = "true";

//方法二:使用陣列變數
$_SESSION['phone'] = array();

while( $i = mysql_fetch_assoc($result) )
{
  $_SESSION['phone'][] = $i['unit'].",".$i['name'].",".$i['ext'];
}

//讀取陣列變數的方法
foreach($_SESSION['phone'] as $value)
{
  $ar = explode(",",$value);
  echo $ar[0].$ar[1].$ar[2];
}

從csv檔讀進資料庫

程式碼:
$db = mysql_connect("ip","account","password");
$db_selected = mysql_select_db("mydb",$db);
mysql_query("SET NAMES 'utf8'");
$file = fopen("mycsv.csv","rb");
while(!feof($file))
{
  $line = fgets($file);
  $line = iconv("big5","utf-8",$line);
  $tmp = explode(",",$line);
  $sql = "INSERT INTO data (data1,data2,data3) VALUES ('$tmp[0]','$tmp[1]','$tmp[2]')";
  mysql_query($sql,$db);
}
mysql_close($db);

csv檔由xls檔另存新檔成csv(逗號分隔),即可直接匯入。

2012年5月25日 星期五

以系統管理員身分執行程式

專案->加入新項目->應用程式資訊清單檔案 (新增)

會新增一個 app.manifest 檔案

將裡面的
〈requestedexecutionlevel  level="asInvoker" uiaccess="false"〉〈/requestedexecutionlevel〉
修改為
〈requestedexecutionlevel  level="requireAdministrator" uiaccess="false"〉〈/requestedexecutionlevel〉

2012年5月24日 星期四

pf指令操作


啟動pf
pfctl -e

停止pf
pfctl -d

重新載入conf
pfctl -f /etc/pf.conf

檢查conf是否正確(不載入)
pfctl -nf /etc/pf.conf

列出即時性的統計資料
pfctl -si

列出各項連線的限制
pfctl -sm

列出即時的連線資料
pfctl -ss

列出table內的資料
pfctl -t table -T show

2012年5月9日 星期三

netsh 設定 DNS

顯示目前dns server的設定
netsh interface ip show dnsservers

設定第一順位的dns
netsh interface ip add dns "區域連線" 120.125.2.1 index=1

刪除已設定的dns
netsh interface ip delete dns "區域連線" 120.125.2.1

dns由dhcp自動設定
netsh interface ip set dnsserver "區域連線" source=dhcp


ps: "區域連線"依照每台電腦的網卡更動

2012年5月4日 星期五

excel 固定欄位運算


如果公式是 ( =A1*A2*A3 ),複製貼上後會變成 ( =A2*A3*A4 )...

這時候加上符號 $ ,變成 ( =$A$1*$A$2*A3 ),則複製貼上後只有A3會跟著不同儲存格的位置變動。

A1*A2*A3                 
= product(A1,A2,A3)  #單項相乘
= product(A1:A3)       #範圍相乘

2012年5月3日 星期四

判斷瀏覽器

$str = $_SERVER["HTTP_USER_AGENT"];
if(strpos($str,"MSIE"))
  $browser = "IE";
else if(strpos($str,"Firefox"))
  $browser = "FF";
else if(strpos($str,"Chrome"))
  $browser = "CH";
else if(strpos($str,"Opera"))
  $browser = "OP";
else if(strpos($str,"Konqueror"))
  $browser = "Kq";
else if(strpos($str,"iPhone"))
  $browser = "iPhone";
else if(strpos($str,"iPad"))
  $browser = "iPad";
else if(strpos($str,"Android"))
  $browser = "Android";
else if(strpos($str,"Safari"))
  $browser = "Sa";
else
{
  $browser = "other";
}

2012年3月30日 星期五

kms認證失敗

有時候在做kms認證的時候,雖然版本都對,可是kms認證就是會失敗,
這時候可以依照下面的網頁,修改預設的序號,這樣再做認證就會成功了。

http://technet.microsoft.com/en-us/library/ff793421.aspx

2012年3月21日 星期三

Debian 安裝 domjudge 步驟


1. 安裝相關軟體
    sudo apt-get install gcc g++ make libcurl4-gnutls-dev mysql-server apache2 php5 php5-cli libapache2-mod-php5 php5-mysql php-geshi ntp sudo procps sharutils phpmyadmin xsltproc libboost-regex-dev libgmp3-dev linuxdoc-tools transfig texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended

2. 安裝相關軟體
    sudo apt-get install make sudo php5-cli php5-mysql ntp xsltproc procps sharutils gcc g++ gcj openjdk-6-jre-headless openjdk-6-jdk ghc fp-compiler

3. 安裝瀏覽器
    sudo apt-get install chromium-browser

4. 抓取source code
    wget -c http://downloads.sourceforge.net/project/domjudge/domjudge/3.2.2/domjudge-3.2.2.tar.gz

5. 解壓縮
    tar zxvf domjudge-3.2.2.tar.gz

6. confige 環境
   cd domjudge-3.2.2/
   ./configure

7. 編譯code
    make domserver judgehost docs

9. 安裝domserver
    sudo make install-domserver

10. 安裝judgehost
    sudo make install-judgehost

11. 安裝docs
    sudo make install-docs

12. 建立資料庫
    cd /opt/domjudge/domserver/bin/
    ./dj-setup-database -u root -r install

14. 建立web路徑
      sudo ln -s /opt/domjudge/domserver/etc/apache.conf /etc/apache2/conf.d/domjudge.conf

15. 重啟apache
      sudo apache2ctl graceful

16. 建立web admin 帳號
      cd /opt/domjudge/domserver/etc/
      htpasswd htpasswd-jury admin

17. cd /opt/domjudge/judgehost/bin/
      sudo ./dj_make_chroot /opt/chroot/ i386

18. cd /opt/domjudge/judgehost/lib/judge/
      sudo gedit chroot-startstop.sh
      edit CHROOTORIGINAL="/opt/chroot"

19. cd /opt/domjudge/judgehost/etc/
      sudo gedit judgehost-config.php
      edit define('CHROOT_SCRIPT', 'chroot-startstop.sh');

20. 啟動編譯程式
      /opt/domjudge/judgehost/bin/judgedaemon


PS: manual裡寫需 sudo visudo ,加上



judge  ALL=(root) NOPASSWD: /opt/domjudge/judgehost/bin/runguard *
judge  ALL=(root) NOPASSWD: /bin/cp -pR /dev/null ./dev/null

judge  ALL=(root) NOPASSWD: /bin/mount -n -t proc -bind /proc proc
judge  ALL=(root) NOPASSWD: /bin/umount /*/proc
judge  ALL=(root) NOPASSWD: /bin/mount -bind /opt/chroot/*
judge  ALL=(root) NOPASSWD: /bin/umount /opt/domjudge/judgehost/judgings/*


但仍會出現需要輸入sudo密碼...
故先加上 

judge ALL=(ALL) NOPASSWD:ALL

可先正常運作,之後再查明原因。