再見我的夏天

2008年11月13日 尚無評論

雨又落在台北的街頭上
忽晴忽雨的天氣  搞的人的心情七上八下的
微涼的秋天  充滿了別離的氛圍

看著窗外的雨 及那混沌灰色的天空
別離的思緒湧上心頭

再見了  我的夏天
那個有著汗滴相陪的夏
光影波連的淡水河
蟬鳴與豔陽
午后懶洋洋的躺在你的懷裡
感謝讓我享受到你帶來的溫暖

也許我只是夏天的過客 但這些記憶
不會被那泛紅的楓葉所掩蓋…

呀~原來 秋天的台北城 少了那泛紅的楓葉呀!!

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# 驗證程式
檢查統一編號是不是正確 – 小卓的程式天空- 點部落

FCKeditor for PHP 注意事項

2008年11月7日 尚無評論

最近在PHP要使用FCKeditor ,整合起來比JAVA太方便了
首先 要先去下載FCKeditor 小弟用的是2.6.3版本

在使用時,要先載入他的函式庫

<script type=”text/javascript” src=”fckeditor/fckeditor.js”></script>

然後參考php 的sample02.php code 要使用時只要照下面的寫法即可

<?php
$oFCKeditor = new FCKeditor('FCKeditor1') ;
$oFCKeditor->BasePath = $sBasePath ;

$oFCKeditor->Config['AutoDetectLanguage'] = false;
$oFCKeditor->Config['DefaultLanguage']  = 'zh' ;  //繁體
$oFCKeditor->Value = '<p>This is some <strong>sample text</strong>.
' ;  //預設值
$oFCKeditor->Create() ;
?>

不過小弟不喜歡這種使用方式,他也有提供Javascript版本的,因為可以保留原本的textarea架構
以後要停用或抽換比較方便,所以小弟喜歡用這個方式來套用

<script>
var oFCKeditor;

window.onload = function()
{
var sBasePath = “fckeditor/”;
oFCKeditor = new FCKeditor( 'content', '100%', 300) ;
oFCKeditor.BasePath = sBasePath ;
oFCKeditor.ReplaceTextarea() ;
}

//–>
</script>

預設值就寫在原本的textarea 即可,所以自覺得更簡單方便囉!!

然後如果要採用他的圖片或檔案上傳功能,目前他對PHP也已經完全整合好了
所以使用超方便的,不像Java要另外找人寫的嵌入,要啟用上傳及瀏覽檔案功能
只要到 fckeditor\editor\filemanager\connectors\php\  找到config.php檔案
將檔案內以下幾個參數值調整即可的

//原本是false 就啟用改成 true 吧
$Config['Enabled'] = true ;

//設定你要上傳的目錄,注意如果是linux 平台該目錄要開放可讀寫的權限才可以
$Config['UserFilesPath'] = '/userupload/'

這樣就完成啦,這麼好用的功能只要簡單調整幾個動作就可以完成整合
真是不錯用!!

Categories: WebDesign Tags: ,

新莊「新」門面 大眾廟不一樣了 (聯合報,2008/10/28)

2008年11月3日 尚無評論

百年新莊,全新感受

偶然在網路上看到這則介紹先前提到的改裝的地藏庵,這樣的改造覺得還真不錯,搭配一旁的新農會大樓,充滿了現代感,看來人家馬拉桑是「千年傳統.全新感受」,而我們是「百年新莊全新感受」,真的覺得新莊變更好了!!

新莊「新」門面 大眾廟不一樣了
【聯合報系╱校園特約記者包忠蕙/台北報導】 2008.10.28 09:36 am

「下一站,大眾廟。」「白色支架、傳統瓦片的廟宇屋頂」兼具傳統與現代的外觀,新莊大眾廟的候車亭以嶄新的風貌問世。

屋脊兩端翹起的燕尾、筒瓦片堆砌而成的屋頂,傳統廟宇的屋頂現今成為候車亭的新造形。底部的基座也一改過去傳統建築的支撐方式,而用賦有現代感的支架及纜繩將屋頂懸掛在空中。

用戶插入圖片

融合古今的新站牌外觀最特別,佇立在車潮中顯得格外醒目。 圖:楊明峰/提供

「這種較具科技感的吊法,配合屋脊燕尾的弧度更能呈現出拉力、生動的感覺」負責規劃設計的中冶環境造形顧問有限公司表示,透過傳統與現代手法的結合來表現廟宇的意象、更點出在地的歷史價值。

大眾廟位於新莊中正路的主要幹道上,悠久的歷史淵源也成為當地的重要指標。無論行經大漢橋或由三重進入新莊市區,大眾廟站牌都是多路公車在新莊的第一站、更象徵著新莊市的大門。

配合新莊市公園景觀改造,自九十七年施工至近期完工。融合古今的新站牌外觀最特別,佇立在車潮中顯得格外醒目。也讓許多民眾都感覺到「大眾廟變得不一樣了」。

綠地新規畫 改造公園陰暗死角

新莊市公所自九十六年起進行市內公園景觀改造計畫。大眾廟站牌則與旁邊的中正公園合併,一同進行改造重建。市公所表示,中正公園自民國六十五年啟用至今皆無翻修,造成公園環境老舊、植栽欠缺維護的狀況,連帶破壞大眾廟的整體景觀。 「公園內樹多又高大,雜草又很少修剪」,一位長期在廟內擔任義工說,園內樹叢多又雜亂、加上園外有一圈圍牆,容易讓人感覺到陰暗、不敢靠近。

中冶環境設計也解釋,原先公園規劃格局較狹窄,不少通道都有陰暗、積水的情況。另外,園內也設置相當多的迴廊、涼亭,在植栽沒有規畫的狀況下也形成了公園的死角。

休閒新去處 融合古今新風貌

為改善以往公園封閉的情況,改造計畫將原先的圍牆拆除,打造一全面的開放空間。園內則重新鋪設步道、草皮並規劃空曠地做為民眾遊憩的場所。不少民眾表示,公園打空後不只整體景觀變好也明亮、空曠許多。許多人也趁著傍晚時帶小孩來散步遊玩,也有人在園區內運動慢跑、聊天。

融合古今的設計改建計畫,不止提供新莊民眾新的休閒去處、也象徵了新莊市朝現代化邁進的新願景。

【2008/10/28 聯合報系】

資料來源:http://udn.com/NEWS/DOMESTIC/DOM2/4576348.shtml

時機歹歹… 頭家怎麼省? (經濟日報,2008/11/3)

2008年11月3日 尚無評論

景氣不好,錢應該都要花在刀口上,想想我們目前是這樣嗎? 呵~講一個最明顯的反例就是 我們的「政府」,因為預算都是要花完,所以就東浪費西浪費的,真不知何時才能看見有效益(有效率及用最少的錢得到最大利益)的政府

不過人類的進步就是因為危機,像先前的石油飆漲,所以大家才會動不動都在想如何節能,還有一些新節能方案在這兩年也不段的冒出,如果沒有這個危機,可能大家都未能正視這些問題,企業也是一樣,在景氣不佳的時代,應該是要更動動腦讓公司保有競爭力才是,我想任何一個產業都會有生存的空間,就像俗話說,當兵當到海軍陸戰隊,也有非常涼的肥缺!!   

還記得八九年前的網路泡沫化,那時還蠻後悔沒有搭到這個危機,現在有幸又有危機了,當下應該好好保握才是,因為在景氣繁華的年代,你想成功可難了,只有在這種時間點,才能造就成功的機會,大家~一起努力吧!!

管理挑戰》時機歹歹… 頭家怎麼省?     【經濟日報╱官如玉】 2008.11.03 02:42 am  
 
物價節節上揚,景氣混沌不明,企業莫不大砍成本,除了會扼殺土氣的裁員措施,還可以祭出哪些成本節餘法寶?

要求員工共體時艱
將「能省則省」奉為圭臬。經營Louis Licari美容沙龍的彼得不想裁員,只好要求33位員自己動手整理庭院,可省下7,000美元。另外,文件印刷從彩色改為黑白,也省下7,000美元。

每個月舉行的員工會議不見甜甜圈、礦泉水和搭配咖啡的鮮奶油,又可以省下130美元。更要求領加班費的員工,每周多於兩小時的加班,才能請領加班費。

公司日前也安裝量秤,要求員工更精確的取用染髮劑、洗髮劑用量,目測已經行不通。執行長安利可說:「我們用放大鏡檢視每件事情。」

讓員工在家上班
位於華盛頓州美景市的Guidant金融集團,員工110人,就占用1.1萬平方呎的辦公室,因此老闆想刪減成本,首先想到的是「讓一些員工回家上班」。10月起,網路出版部門的15位員工可以遠距上班,讓公司的電子通勤員工增為20人。

公司將提供在家上班的員工筆記型電腦和上網設備,這是員工到公司上班也會有的開支。

此外,開始針對若干行政人員實驗性推動一周四天、40小時工時。因此,員工必須輪班,共用桌子,減少辦公室的使用空間,從原來的1.1萬平方呎減為3,000平方呎。

這個安排對管理帶來一些挑戰。老闆尼爾森必須花更多心力,和遠距上班的員工溝通,並且安排活動,讓大家一起回到辦公室。但他覺得節省的成本會讓這一切都是值得的。

員工共用
景氣低迷,公司裁員大刀總是先揮向行政、人資或其他不直接參與生產、銷售的員工。人力仲介業者Talent Connection創辦人達洛則反其道而行,幫年薪3.2萬美元的行銷專案經理找到一份兼差工作。

現在他只要付這位經理一周工作十小時的薪水,在其他地方工作30小時的薪水,則由另一位老闆支付。達洛說:「我們找到一個方法,既可以讓公司度過困境,也可以讓有生產力的員工一直留到景氣復甦。」

Logistic Dynamics需要雇用一名人員,管理25名員工的薪資帳戶和福利時,決定和同一棟辦公大樓的企業共用一位人資經理,由兩家企業分攤他的6萬美元年薪。該公司經營者布朗說:「與其錄用一位公司付得起薪水、卻沒有把握他是否稱職的經理人,不如以一半的價碼雇用一位真正的專業人才。」

讓顧客收起信用卡
線上行銷業者ClickSpeed年營收7,000萬美元,其中半數是信用卡支付的款項,公司必須支付發卡業者3.2%的手續費,相當於10萬美元以上。該公司經營者柯克說:「顧客愛上使用信用卡的方便性,但如果我們給他們直接付款的誘因,相信雙方可以互蒙其利。」

他了解顧客使用信用卡是為了累積紅利點數,兌換現金或累積里程,便決定提供類似的優惠,使用電子轉帳的顧客,可獲得相當於帳款1.25%的現金紅利。一年後,近七成的信用卡顧客(代表250萬美元的營收)不再使用信用卡付款,雖然柯克要發3.1萬美元的紅利,卻比支要付手續費省下4.9萬美元。

行銷自己做
一些最有效的行銷手法通常花費有限,甚至不必花一毛錢,所以先想好是否有必要花大筆錢雇用行銷顧問或廣告公司。

專長於顧客關係管理軟體安裝和維護的CustomerEffective 去年花了8.5萬美元請顧問提升網站流量,再花1.6萬美元購買Google的廣告空間,結果只招來一筆5,000美元的生意,促使執行長威伍德另覓替代方案。

去年11月,他辭退顧問、不再支付Google廣告費,而讓公司技術人員變成部落客,提供他們獎金。過去11個月來,八位利用下班時間上部落格寫網路日誌、談顧客關係管理的員工,一個月最高拿走2,000美元的獎金。目前為止,公司共發出3.5萬美元獎金,引擎搜尋排名也大有改善,新案子帶進來的收入已足以應付獎金。

(取材自《Inc.雜誌》、《華爾街日報》)
文章來源:http://udn.com/NEWS/FINANCE/FIN11/4584198.shtml

Categories: 好文章分享 Tags:
分頁: 上一頁 1 2 3 ... 37 38 39 40 41 42 43 ... 86 87 88 下一頁