google code prettify

2016年7月2日 星期六

在Mac上安裝Docker

關於Docker就不多說了,Docker現在出了Docker for Mac Beta
因此就不用再使用Docker Toolbox了
下載位置:https://docs.docker.com/docker-for-mac/

1、安裝非常簡單,從左邊拉到右邊就好了


2、安裝後執行,就可以在右上角看到執行中的圖示


















3、就開始開終端機開始使用docker了,用「docker --version」確認版本資訊






4、安裝nginx,輸入指令「docker run -d -p 80:80 --name webserver nginx」



5、打開瀏覽器輸入「http://localhost/」就可以看到已經建立nginx服務了












Reference:
https://docs.docker.com/docker-for-mac/

2016年3月19日 星期六

運用Jsoup取得網頁資訊

如果要使用Java去parse Web page, 可以使用Jsoup,簡單好用
以下範例為使用jsoup抓取yahoo 首頁的新聞標題



package test.charles.JsoupExample;

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class App 
{
    public static void main( String[] args ) throws IOException
    {
     //read yahoo home page
     String url  = "https://tw.yahoo.com/";
     Document doc = Jsoup.connect(url).get();
     
     //get first news tab one
     Element t1 = doc.getElementById("t1");
     
     //get news title
     Elements newsTitle = t1.select("a[href] > span");
     
     //print size
        System.out.println("size:" + newsTitle.size());
        
        //print news title
        for(Element e:newsTitle){
         System.out.println("title:" + e.text());
        }
        
    }
}




程式碼可以至github下載

2016年3月16日 星期三

在Mac上安裝Cordova

當想要快速開發一個簡單的app又不會寫Android及iOS原生程式的話
我很推薦使用Cordova
這是一種使用Html + Javascript + CSS來模擬app,對於網頁工程師並沒什麼門檻 以下範列為在Mac上安裝Cordova,並建立範例的Android project

 1、透過nodejs安裝cordova
輸入「sudo npm install cordova -g」
-g代表將此套件安裝在全域的資料夾中


2、檢查是否安裝成功
輸入「cordova --version」



3、切換到資料夾下建立Cordova專案
輸入「sudo cordova create hello」



此時可以看到成功產生出Cordova的專案



4、切到目錄下產生Android的專案
輸入「sudo cordova platforms add android」



5、之後再到platforms下檢查就可以看到android的專案嚕


結束!!

2016年3月3日 星期四

Java Collections.sort

當使用自訂義的類別想要排序時,可以採用Collections.sort
範例如下



package test.charles.CollectionSort;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class App 
{
    public static void main( String[] args )
    {
        List userList = new ArrayList();
        //add user name and age
        userList.add(new User("user1",19));
        userList.add(new User("user2",40));
        userList.add(new User("user3",3));
        userList.add(new User("user4",27));
        userList.add(new User("user5",10));
        userList.add(new User("user6",70));
        
        //sort by user age
        Collections.sort(userList, new Comparator() {
   public int compare(User o1, User o2) {
    return o1.getAge().compareTo(o2.getAge());
   }
  });
        
        //print information
        for(User s :userList){
         System.out.println("name:" + s.getName() + ",age:" + s.getAge());
        }
    }
}




程式碼可以至github下載

2016年2月21日 星期日

用javamail 取得mail資訊

最近在工作上遇到需要用程式抓取mail的相關資訊(收件者、寄件者、標題、內容…etc)
因為google到大多數都是採用javamail來實現,
而程式碼也相當簡單




package lab.charles.email.test;
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;

public class MailServer {

 public static void main(String[] args) throws Exception{
  // mail server connection parameters
     String host = "mail server";
     String user = "user name";
     String password = "password";
  
     // connect to my pop3 inbox
     Properties properties = System.getProperties();
     Session session = Session.getDefaultInstance(properties);
     Store store = session.getStore("pop3");
     store.connect(host, user, password);
     Folder inbox = store.getFolder("Inbox");
     inbox.open(Folder.READ_ONLY);
  
     // get the list of inbox messages
     Message[] messages = inbox.getMessages();
  
     if (messages.length == 0) System.out.println("No messages found.");
  
     for (int i = 0; i < messages.length; i++) {
       // stop after listing ten messages
       if (i > 10) {
         System.exit(0);
         inbox.close(true);
         store.close();
       }
  
       System.out.println("Message " + (i + 1));
       System.out.println("From : " + messages[i].getFrom()[0]);
       System.out.println("Subject : " + messages[i].getSubject());
       System.out.println("Sent Date : " + messages[i].getSentDate());
       System.out.println();
     }
  
     inbox.close(true);
     store.close();

 }

}


程式碼也可以至github下載

2014年1月3日 星期五

在S3使用Cordova的照片功能會Crush

目前工作上有使用Cordova開發Mobile App
最近遇到一個很奇怪的問題,只要在S3上使用照像功能就會造成App Crush…
後來發現是因為相素太高,造成out of memory
後來網路上有提供相當多解法
http://community.phonegap.com/nitobi/topics/phonegap_camera_crash_on_android_4_1_2_samsung_galaxy_s3_htc

而我自己是使用以下的解法
http://community.phonegap.com/nitobi/topics/samsung_galaxy_s3_camera_crash

在AndroidManifest.xml中所有的activity中加上
android:alwaysRetainTaskState="true" android:launchMode="singleTask"這個屬性就可以了

SQL Server查詢所有資料表及欄位屬性

現在在工作上常常因為客戶心血來潮就要我們交Table Schema
但哪來的時間去整理啊QQ
所以我現在都很賤的直接用SQL語法匯出直接交附XD
SQL語法如下:

SELECT
資料表名稱=Table_Name
,資料行名稱=COLUMN_Name
,資料型別=DATA_TYPE
,長度=CHARACTER_MAXIMUM_LENGTH
,是否允許NULL=IS_NULLABLE
, 預設值=COLUMN_DEFAULT
FROM INFORMATION_SCHEMA.Columns
order by Table_Name