Archive

‘程式開發’ 分類過的Archive

RA layer request failed svn排除法

2010年12月19日 尚無評論

最近工程師在使用SVN遇到了一個鬼問題,沒想到是這樣的解法

就是在SVN commit 時發現了Exception :

org.tigris.subversion.javahl.ClientException: RA layer request failed svn: (details follow): svn: applying log messCommit failed age to /svn/cis/!svn/wbl/xxxx/11359: http://xxxxxxx/svn/cis/!svn/wbl/xxxxx/11359: 500 (status) -> Could not execute PROPPATCH. (http://xxxxx:8800)

解決辦法:將commit時的註釋中間的換行都去掉即可排除,真的見鬼了吧@@

參考資料:http://www.javaeye.com/wiki/topic/766056

Categories: 程式開發 Tags:

安裝XAMPP出現_default_ VirtualHost overlap on port 80, the first has precedence問題排除方法

2010年11月4日 尚無評論

真的很豬頭,安裝Xampp已經二~三次了,每次都遇到這問題,而且又都記不住,這次又遇到這個問題,所以還是寫下來加深印象

_default_ VirtualHost overlap on port 80, the first has precedence

這問題是Windows上的XAMPP如果有設定Apache要使用Virtual Host,當你在conf/extra/httpd-vhost.conf裡加上Virtual Host後,再重啟Apache時會發現啟動不了,原因是httpd-vhost.conf裡有一行也要打開才行,就是下面這個參數

##NameVirtualHost *:80

把##拿掉改成

NameVirtualHost *:80

再重啟後即可正常,真是怪怪的XAMPP,明明預設就是有INCLUDE httpd-vhosts.conf,怎麼還不把這行啟用呢?

Categories: 程式開發 Tags:

用Google api 畫圖表

2008年12月22日 尚無評論

前幾週,朋友丟來一個連結  http://code.google.com/intl/zh-TW/apis/chart/types.html 說著網頁可以畫圖囉!!

仔細一看,原來是google 提供的chart API,使用起來蠻容易的,應該只要給數據就可以畫出PNG格式的圖片了,先前都是使用JfreeChart來畫圖,未來開發時,搞不好透過Google就好,這樣還省系統資源,應該不錯。反正,目前大部份的系統都要連上網….

目前提供有線圖(Line charts )、長條圖(Bar charts )、圖餅圖(Pie charts)、范恩圖解(Venn diagrams ,集合構念的圖)、散佈圖(Scatter plots )、雷達圖(Radar charts)、地圖(Maps)、Google-o-儀錶(Google-o-meters )、二維空間條碼(QR codes,Quick Response Code) 種類還蠻多的,尤其是像圖餅圖還可以畫出3D漸層的圖,這個用JfreeChart會畫到死吧…

以下是他的範例及說明:

用戶插入圖片

圓餅圖還不錯看吧

用戶插入圖片

測試了一下,中文字也不是問題喔!!!   可以按[中文圖餅圖]得到如下圖結果:

圖餅圖

Categories: 程式開發 Tags: ,

營利事業統一編號驗證完全手冊(Javascript,Java,C#,PHP)

2008年11月7日 8 則評論

前幾天在網路上申請資料時,發現該網站有判斷營利事業統一編號,原來這個編號也是可以驗證的呀?真是孤陋寡聞呀!! 所以小弟在網路上找了找,發現資源還蠻多的,所以整理整理方便大家使用

首先,要先看看公式理論,這篇是在酷!學園 找到的:

(一) 長度:共八位,,全部為數字型態。
(二) 計算公式
1、各數字分別乘以 1,2,1,2,1,2,4,1。
2、公式如下:
D1 D2 D3 D4 D5 D6 D7 D8
* 1 2 1 2 1 2 4 1 (第一列 * 第二列)

A1 B1 A2 B2 A3 B3 A4 B4 (Bx:相乘後的十位數)
+ C1 C2 C3 C4 (Cx:相乘後的個位數)

X1 X2 X3 X4 X5 X6 X7 X8 (Xx:相加後的十位數)
Y7 (Yx:相加後的個位數)
Z1= X1 + X2 + X3 + X4 + X5 + X6 + X7 + X8 或
Z1= X1 + X2 + X3 + X4 + X5 + X6 + Y7 + X8

3、當第 7 位數為 7 者,可取相加之倒數第二位取 0 及 1 來計算如 Z1 及 Z2 計算其和。
4、假如 Z1 或 Z2 能被 10 整除,則表示營利事業統一編號正確。
(三) 範例 ( 以 0 0 2 3 8 7 7 8 為例 )
0 0 2 3 8 7 7 8
* 1 2 1 2 1 2 4 1 (第一列 * 第二列)

0 0 2 6 8 1 2 8 (Bx:相乘後的十位數)
+ 4 8 (Cx:相乘後的個位數)

0 0 2 6 8 5 1 8 (Xx:相加後的十位數)
0 (Yx:相加後的個位數)
Z1= 0+ 0+ 2+ 6+ 8+ 5+ 1+ 8 = 30 或
Z2= 0+ 0+ 2+ 6+ 8+ 5+ 0+ 8 = 29
因 30 能被 10 整除,故營利事利統一編號正確。

這個是在MyChat 數位男女查到的,不過驗證時有Bug,可能是貼上來不支援\這個字元,所以不見了再加上去即可,以下已經是可以使用的code:

  function checkTB(sid){
       var tbNum = new Array(1,2,1,2,1,2,4,1);
       var temp = 0;
       var total = 0;
       alert(sid.length);
       if(sid==””) alert(“請先輸入欲檢驗的營利事業統一編號!”);
       else if(!sid.match(/^\d{8}$/)) alert(“營利事業統一編號長度不夠或格式有誤!請注意營利事業統一編號格式為八碼數字!”);
       else{
             for(var i = 0; i < tbNum.length ;i ++){
                 temp = sid.charAt(i) * tbNum[i];
                 total += Math.floor(temp/10)+temp%10;
             }
             if(total%10==0 || (total%10==9 && sid.charAt(6)==7)) alert(“營利事業統一編號正確!”);
             else alert(“營利事業統一編號錯誤!”);
       }
  }

接下來的也是Javascript版本,是在向前走 是唯一的選擇的blog找到的:

function idchk(idvalue) {
  var tmp = new String(“12121241”);
  var sum = 0;
  re = /^\d{8}$/;
  if (!re.test(idvalue)) {
      alert(“格式不對!”);
      return false;
   }
  for (i=0; i< 8; i++) {
    s1 = parseInt(idvalue.substr(i,1));
    s2 = parseInt(tmp.substr(i,1));
    sum += cal(s1*s2);
  }
  if (!valid(sum)) {
     if (idvalue.substr(6,1)==”7″) return(valid(sum+1));
  } 
  return(valid(sum));
}
function valid(n) {
  return (n%10 == 0)?true:false;
}
function cal(n) {
  var sum=0;
  while (n!=0) {
     sum += (n % 10);
     n = (n – n%10) / 10;  // 取整數
    }
  return sum;
}

接下來就是JAVA版本的驗證程式,是在台灣電腦工的blog裡找到的,同篇還有其它的驗證程式,不錯的文章喔:

public static final Pattern TWBID_PATTERN = Pattern
.compile(“^[0-9]{8}$”);
/**
營利事業統一編號檢查程式
可至 http://www.etax.nat.gov.tw/ 查詢營業登記資料
@since 2006/07/19
/
public static boolean isValidTWBID(String twbid) {
boolean result = false;
String weight = “12121241”;
boolean type2 = false; //第七個數是否為七
if (TWBID_PATTERN.matcher(twbid).matches()) {
int tmp = 0, sum = 0;
for (int i = 0; i < 8; i++) {
tmp = (twbid.charAt(i) – '0') (weight.charAt(i) – '0');
sum += (int) (tmp / 10) + (tmp % 10); //取出十位數和個位數相加
if (i == 6 && twbid.charAt(i) == '7') {
type2 = true;
}
}
if (type2) {
if ( (sum % 10) == 0 || ( (sum + 1) % 10) == 0) { //如果第七位數為7
result = true;
}
} else {
if ( (sum % 10) == 0) {
result = true;
}
}
}
return result;
}

再來是C#的驗證程式,是在記憶是苦難的開始Blog找到的:

C# 3.5
public static bool checkCompanyNo(string arg_CompanyNo)
{
var LOGIC = new[] { 1, 2, 1, 2, 1, 2, 4, 1 };
var intSum = 0;

for (var i = 0; i < LOGIC.Length; i++)
{
var intMultiply = int.Parse(arg_CompanyNo.Substring(i,1)) * LOGIC[i];
var intAddition = ((intMultiply / 10) + (intMultiply % 10));
intSum += (intAddition == 10) ? 1 : intAddition;
}

return (intSum % 10 == 0);
}

不過這段code 怪怪的  intSum += (intAddition == 10) ? 1 : intAddition;  似乎有點問題,因為他要的是相乘連加十位數及個位數相加)後可以被整除的,但還有另一個規則是當餘數為9時而且第七位數值和基數相加為1也成立,這裡減化成這行似乎是不可行,所以還是自行調整一下吧!!

這裡還有一篇 C#的,雖然code長了點,但有發佈就要給予鼓勵,這篇是在小卓的程式天空的blog找到的:

public static Boolean isCompanyID(String strIdno)                                                 
                                                                                                  
     if (strIdno == null || strIdno.Trim().Length != 8)                                           
                                                                                                  
         return false;                                                                            
     }                                                                                            
     else if (!isInteger(strIdno))                                                                
                                                                                                  
         return false;                                                                            
     }                                                                                            
                                                                                                  
     int ii;                                                                                      
                                                                                                  
     try                                                                                          
                                                                                                  
         ii = Convert.ToInt32(strIdno);                                                           
     }                                                                                            
     catch (Exception)                                                                            
                                                                                                  
         return false;                                                                            
     }                                                                                            
     int c1;                                                                                      
     int c2;                                                                                      
     int c3;                                                                                      
     int c4;                                                                                      
     int c5;                                                                                      
     int c6;                                                                                      
     int c7;                                                                                      
     int c8;                                                                                      
     try                                                                                          
                                                                                                  
         c1 = Convert.ToInt32(strIdno.Substring(0, 1));                                           
         c2 = Convert.ToInt32(strIdno.Substring(1, 1));                                           
         c3 = Convert.ToInt32(strIdno.Substring(2, 1));                                           
         c4 = Convert.ToInt32(strIdno.Substring(3, 1));                                           
         c5 = Convert.ToInt32(strIdno.Substring(4, 1));                                           
         c6 = Convert.ToInt32(strIdno.Substring(5, 1));                                           
         c7 = Convert.ToInt32(strIdno.Substring(6, 1));                                           
         c8 = Convert.ToInt32(strIdno.Substring(7, 1));                                           
     }                                                                                            
     catch (Exception)                                                                            
                                                                                                  
         return false;                                                                            
     }                                                                                            
                                                                                                  
     int y = c1 + c3 + c5 + c8;                                                                   
     int t = c2 * 2;                                                                              
     y = y + t / 10 + t % 10;                                                                     
     t = c4 * 2;                                                                                  
     y = y + t / 10 + t % 10;                                                                     
     t = c6 * 2;                                                                                  
     y = y + t / 10 + t % 10;                                                                     
     t = c7 * 4;                                                                                  
     y = y + t / 10 + t % 10;                                                                     
     int k = y;                                                                                   
     if (y % 10 == 0)                                                                             
                                                                                                  
         return true;                                                                             
     }                                                                                            
     if (c7 == 7)                                                                                 
                                                                                                  
         y -= 9;                                                                                  
         return y % 10 == 0;                                                                      
     }                                                                                            
     else                                                                                         
                                                                                                  
         return false;                                                                            
     }                                                                                            
  }                                                                                                

所以大致目前常用語言都有了,好像尚缺PHP,雖然小弟喜歡使用Javascript的驗證,不過好像找不太到PHP版本的,因此小弟動手寫了一個:

function checkID($sid) {
$tbNum = array(1,2,1,2,1,2,4,1);
if(strlen($sid)!=8 || !eregi(“^[0-9\*]{8}”,$sid)) return false;
$intSum = 0;
for ($i = 0; $i < count($tbNum); $i++)
{
$intMultiply=substr($sid,$i,1)*$tbNum[$i];
$intAddition=(floor($intMultiply / 10) + ($intMultiply % 10));
$intSum+=$intAddition;
}
return ($intSum % 10 == 0 ) || ($intSum%10==9 && substr($sid,6,1)==7);
}

參考資料:
酷!學園 – [商用軟體]統一編號檢查碼規則 – 驗證公式
MyChat 數位男女 – 營利事業統一編號邏輯檢查 -JavaScript 驗證程式 但有bug
向前走 是唯一的選擇 統一編號的檢查 By JavaScript -JavaScript 驗證程式
台灣電腦工 Java版-常用的身份證、IP、統一編號..檢查程式 -Java 驗證程式
記憶是苦難的開始 檢驗公司統一編號是否正確 C# -C# 驗證程式
檢查統一編號是不是正確 – 小卓的程式天空- 點部落

堆疊(Stack) 和佇列(Queue) 基本說明

2008年8月20日 尚無評論

這兩個名詞常聽到,不過稍不注意,很容易搞混其意思,所以在此列出之間的特性及重點

堆疊(Stack)

  • 資料的插入和刪除只發生在堆疊的頂端(Top)
  • 使得資料進出堆疊時產生「後進先出」(LIFO)的特性
  • 使用範例
    • 歐式自助餐之餐盤堆放方式
    • 副程式的呼叫和返回
    • 堆積木
    • 蓋房子
    • 空間堆放求得最佳步驟
    • 數學四則運算

佇列(Queue)

    • 佇列也是一個有序串列
    • 資料的插入和刪除分別發生在佇列結構的兩端
    • 插入資料的一端叫做尾端(Rear),刪除資料的一端叫做前端(Front)
    • 資料進出佇列的次序形成「先進者先出」的特性 (FIFO)
    • 使用範例
Categories: 程式開發 Tags: , , ,
分頁: 上一頁 1 2 3 4 5 下一頁