Marketing, SEO, Web trends, Programming tutorial, Web design, and Life event...
Country codes and Dial codes (total 95). If more complete’s conuntry code you needed. you can visited 249 Country codes json formate (En, Traditional Chinese and Simplified Chinese Version)
Include English(en) version, Traditional Chinese(tw) version, Simplified Chinese(cn) version
Continue Reading這裡提供全世界國家編碼與電話編碼json格式內容,共95國 (如果僅需要更完整的國家編碼 249請參考 各國國家編碼 json 格式 繁體/簡體/英文 三種版本 )
包括三種語系: (1)繁體版 (2)簡體版 (3)英文版本 最後還有三種語系結合的json內容
Continue Reading在單一列,設定多個語系欄位
優點: - 簡單 - 易於實施 - 輕鬆查詢 - 無需JOIN - 沒有重複 - 沒有重複的內容(每個記錄只有一行,只有語言列被重複) 缺點: - 很難維護 - 如果只有2-3種語言會很容易維護,但當您有很多欄或很多語言時,它變得非常龐大且不容易維護 - 很難添加新語言 - 添加新語言時,有設定多國語言的欄位都要進行新增調整(以及db用戶的特殊訪問權限) - 佔用空間 - 如果不是所有的項目都必需翻譯(例如在某些地方,只需使用默認語言),它可能會導致冗餘數據或空的db字段 - 需要建立檢視判斷 - 需要依照目前語系環境決定要撈出哪一列,還需額外判斷才能達成
CREATE TABLE app_product (
`id` int(10) NOT NULL AUTO_INCREMENT,
`date_created` datetime NOT NULL,
`price` decimal(10,2) unsigned NOT NULL DEFAULT '0.00',
`title_en` varchar(255) NOT NULL,
`title_es` varchar(255) NOT NULL,
`title_fr` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
);
透過很簡單的Query就能取出資料
<?php
// Retrieve titles for all languages
$sql = "SELECT * FROM `app_product` WHERE 1";
if($result = mysqli_query($link, $sql)){
if($row = mysqli_fetch_assoc($result)){
echo "English: ".$row["title_en"]."<br>";
echo "Spanish: ".$row["title_es"]."<br>";
echo "French: ".$row["title_fr"]."<br>";
}
}
// Retrieve appropriate title according to the chosen language in the system
$sql = "SELECT `title_".$_SESSION['current_language']."` as `title`
FROM `app_product`";
if($result = mysqli_query($link, $sql)){
if($row = mysqli_fetch_assoc($result)){
echo "Current Language: ".$row["title"];
}
}
?>
方法與第一種很像,但不是透過欄位的方式來建立多國語系,而透過一個語系欄位且不同列的方式來處理 優點: - 簡單 - 易於實施 - 輕鬆查詢 - 無需JOIN 缺點: - 難以維護 - 每個語言的所有列中必須更改未翻譯的每一列。例如,改變單一產品的價格需要對所有語言重複此操作 - 很難添加新語言 - 需要針對每個產品項目進行重複插入操作(從默認的語系作為模板進行複製)
Continue Reading這裡簡單記錄一些常用的 git 指令
Continue Reading在windows系統用戶安裝的多數軟體,通常都會自動設定"開機自動啟用"功能,
但是,並不是所有軟體都會預設開啟這項功能,
如果你想手動的方式來達到 開機時自動啟用軟體,
通常會直接透過windows 啟用資料夾的方式來管理,
只要將你的軟體捷徑圖示(或者啟用程式)直接拖曳複製一份到啟用資料夾,
就能夠達成在開機時自動啟用這個軟體,
這裡將會說明 windows10、windows8、windows7、windows xp 的啟動資料夾在哪裡
Continue Reading電腦隨著使用時間越來越長,安裝的軟體服務通常也會越來越多,
原本多元的軟體可以讓你更加方便的工作及管理作業,但是產生的困擾就在於,
多數軟體都會自動加入開機程序,當電腦開機後會自動執行,
當開機自動啟用的項目越來越多,
就會明顯發現電腦開機的速度越來越慢,非常不方便
因此,接著內容會說明如何開啟或關閉開機啟用軟體的方法:
Continue Reading在很多情況,我們會需要使用手動方式查詢 domain name 或 ip 的DNS設定
例如: 一般設定好DNS之後,都需要一段時間才能完成配對,這時我們就能透nslookup確定IP是否已經對應到dns
在這裡,會針對一些平時會使用的nslookup查詢方式進行說明
後續會陸續再新增更多說明及內容
Continue Reading在一頁式網頁架設登入系統通常是一件非常麻煩棘手的事情,
在一開始要思考的是該挑選哪個主流框架 Angular、React或Vue…
然後開始建立一個前後端分離的架構,只透過RESTful API來進行溝通,
在這樣的架構下,搭建CMS相當容易,前端通常只需要取得資料後,進行render出來即可,
##SESSION BASE 無用武之地 如果要建設會員或管理者權限功能,傳統 session-based 的權限登入方式相當簡單,
但是在透過 RESTful API 應用的框架中,session-based的方式則行不通,
此外,單純使用SESSION的情況,也必須解決資料跨 Server 的問題
Token是一串加密字串,並儲存在前端, 當使用者再次操作時,就能在後端從資料庫中比對token, 檢查是否為有效的使用者, 但是這樣的查詢也會產生伺服器的負擔
Continue ReadingFirst, make sure php.ini php_socket extension is opened remove ; and restart http server php.ini
...
extension=php_sockets.dll
...
Writing your servier side code as fellowing: php_socket_server.php
Continue ReadingLanguage of the browser: zh-TW
var x = "Language of the browser: " + navigator.language;
var txt = "";
txt += "<p>Browser CodeName: " + navigator.appCodeName + "</p>";
txt += "<p>Browser Name: " + navigator.appName + "</p>";
txt += "<p>Browser Version: " + navigator.appVersion + "</p>";
txt += "<p>Cookies Enabled: " + navigator.cookieEnabled + "</p>";
txt += "<p>Browser Language: " + navigator.language + "</p>";
txt += "<p>Browser Online: " + navigator.onLine + "</p>";
txt += "<p>Platform: " + navigator.platform + "</p>";
txt += "<p>User-agent header: " + navigator.userAgent + "</p>";
<script type=text/javascript>
// if( (/http\:\/\/t\.smartisan\.com\/smartisan\/modules\/index\/\#\/$/g).test(location.href)) {
if( (/http\:\/\/www\.smartisan\.com.$/g).test(location.href) || (/http\:\/\/www\.smartisan\.com\/\#\/$/g).test(location.href)) {
// ['ja', 'en-GB', 'en', 'en-US', 'fr', 'es', 'ko', 'de'];
// 首页,如果是英文环境,则跳到 en
if((/en/gi).test(navigator.language)) {
location.href = 'http://www.smartisan.com/en/';
}
// 首页,如果是日文环境,则跳到 jp
else if((/(jp|ja)/gi).test(navigator.language)){
location.href = 'http://www.smartisan.com/jp/';
}
}
</script>
根據Stack Overflow網站2016年開發者調查發現,有56%的開發人員沒有計算機科學或相關領域的大學學位。開發人員最喜歡學習的方式是“自學”(至少69%的受訪者表示他們是部分自學;而13%的受訪者則是完全自學)。
但是,是否大多數公司都要求學位?
在 Stack Overflow Jobs(所有地區)列出的4,499個職位中,約61%(2,739個)沒有要求“學位”或“學士學位”,其他39%的工作崗位則在招聘要求中註明學位,可能是硬性要求也可以是其愛好。
有趣的是,按區域篩選時,在美國發布的需要學位的工作的百分比更高。美國列出的2,287個工作中,搜索出1,198個註明學位的職位,這意味著48%(1,089個)企業沒有把“學位”或“學士學位”作為要求之一,其餘52%的美國工作把學位作為應聘者的要求或愛好。
所以,有些公司需要學位,但這並不意味著如果你有大學學位就有超過50%的機會獲得作為開發人員的工作,證明你能做什麼和你做了什麼的能力將總是比你是否有學位更重要,即使在公司已經列出學位作為要求的情況下。
培訓可以替代學位嗎?
Continue ReadingPHP Mailer是其中一個最受歡迎的郵件程式庫,普遍被應用在各種流行框架 WordPress,Drupal,1CRM,SugarCRM,Yii,Joomla!…等。 卻在日前,由 Dawid Golunski 發現在 v 5.2.18 版本存在一個高度危險漏洞,能允許攻擊者在遠端執行程式代碼。漏洞編號為 CVE-2016-10033
Continue Reading目前有很多客製化form element的套件, 但是這次專案只需要客製checkbox及radio, 由於這樣的類子很常用到,就直接在這裡就做個紀錄,方便之後查詢 如何透過CSS來客製化HTML checlbox 及radio buttons
LINQ 查詢運算式(Language-Integrated Query)是一種數據查詢語言,可以讓我們使用同一個語句來對不同資料來做資料查詢 (包括Objects、SQL、Datasets、Entities、Data Source、XML/XSD等),並且具有擴充性。
使用的方式很簡單 首先,要先載入System.Linq 命名空間類別庫就可以開始使用 LINQ 類別和介面
Continue ReadingC# 在系統集合泛型(System.Collections.Generic) 還包含 佇列(Queue)及堆疊(Stack)
這裡先簡單總結一下兩者的差異
佇列(Queue) 屬於先進先出(FIFO)的集合,例如: 一群人在排隊等公車,先來的就可以先上車。
堆疊(Stack) 屬於後進先出 (LIFO)的集合,例如: 將大箱子放入貨車櫃,最後放進去的,到時會最先取出來; 將子彈裝進彈匣,最後裝進去的會先擊發。
接下來,兩者說明如下:
Continue Reading前面,我們介紹過C#的泛型 可以讓我們自行設計泛型方法、類別來進行操作資料
在這裡,會說明C#預設提供的泛型集合類別(generic collection classes) 讓我們可以直接拿來使用於操作資料 這些類別主要都被包含在一個Class裡面,稱為系統集合泛型(System.Collections.Generic) 在這裡會介紹 List, Dictionary, Queue, Stack 集合類別
Continue ReadingC# 提供了泛型,讓我們可以用更有彈性的方式來設計Class、Method,操作資料
透過泛型類型 <型別參數T>來代表型別(int, string, double…)
可以在宣告時再指定型別,
以下透過範例來說明幾種情況的用法:
在Method使用泛型,只要在Method後面接上泛型類型 <型別參數T> 就可以在宣告時,再指定型別, 並且,可以搭配.GetType()來檢查型別 範例:
static void MyDemo<T>(T x)
{
Console.WriteLine("您傳入的型別為"+x.GetType()+ ",值=" + x);
}
static void Main(string[] args)
{
MyDemo<string>("Hello");//您傳入的型別為System.String,值=Hello
MyDemo<int>(3);//您傳入的型別為System.Int32,值=3
MyDemo<double>(3.14);//您傳入的型別為System.Double,值=3.14
}
在class使用泛型,一樣直接加上 <型別參數T> 即可 在這裡示範如何透過Class泛型來手動做一個簡易的list功能
範例:
// Declare the generic class.
public class MyListClass<T>
{
//初始化array,並參考泛型別
T[] innerArray = new T[0];
//Add Method - 新增一個array項目
public void Add(T item)
{
Array.Resize(ref innerArray, innerArray.Length + 1);
innerArray[innerArray.Length - 1] = item;
}
//Get Method - 取得array特定key的value
public T Get(int k) {
return innerArray[k];
}
//All Method - return array
public T[] All()
{
return innerArray;
}
}
static void Main(string[] args)
{
// Declare a list of type int.
MyListClass<int> listA = new MyListClass<int>();
listA.Add(3);
listA.Add(4);
listA.Add(5);
listA.Add(2);
foreach (int row in listA.All()) {
Console.WriteLine(row);
}
}