顯示具有 開發 標籤的文章。 顯示所有文章
顯示具有 開發 標籤的文章。 顯示所有文章

2018年4月1日 星期日

python +pywin32 操作 Excel

import win32com.client
import time

xlApp = win32com.client.Dispatch("Excel.Application")
xlApp.Visible=1

workBook = xlApp.Workbooks.Open(r"C:\Users\tekibrain\Desktop\datelist.xlsx")
print(str(workBook.ActiveSheet.Cells(1,1)))
now = time.time()
workBook.ActiveSheet.Cells(1, 2).Value = now
#SaveChanges = 1 : Save flle
# SaveChanges = 0 : Nothing Saved
workBook.Close(SaveChanges=1)
xlApp.Quit()

2017年12月12日 星期二

Windows 10 64bits + Arduino IDE + ESP8266 (ESP-01)


  1. Arduino.cc 下載最新版 Arduino IDE (以1.8.5版為例)
  2. 將 arduino-1.8.5-windows.zip 解壓縮至指定目錄下,安裝好 Arduino IDE
  3. 啟動 Arduino IDE,開啟「檔案 > 偏好設定 (preferences)」 視窗
  4. 偏好設定
  5. 在「額外的開發版管理員網址」(Additional Board Manager) 輸入網址:
  6. 開啟「工具 (Tools) > 開發板 (Board) > 開發板管理員 (Boards Manager)」後,搜尋 "esp" 並且安裝 esp8266 套件
    安裝 esp8266 (可以看見其實有錯誤發生)

    正常的套件下載安裝畫面
  7. 安裝完成後,下次就能選擇 ESP8266 開發板,進行IDE程式開發與上傳功能


後記:
  • 如果下載時發生了"下載http://downloads.arduino.cc/packages/package_index.jsp時發生錯誤"的訊息,可以在「檔案 > 偏好設定 > 網路」設定 proxy 來解決。
  • 網路上有些說法是設定 JAVA IPv4Stack=true 即可: setx _JAVA_OPTIONS -Djava.net.preferIPv4Stack=true
  • 不過對我來說似乎沒有用,反而是最簡單的 proxy 解決了我的問題。
  • 下載套件時的錯誤訊息

    設定 Java IPv4Stack ,不過對我來說沒用處

    設定 proxy

2015年10月18日 星期日

Mac OS X El Capitan 10.11 + FT232 USB模組 + Arduino Pro mini (5V, 16MHz)

材料

  • Arduino Pro mini x 1
  • FT232 USB 模組 x 1
  • USB傳輸線 x 1 (連結Mac電腦和 USB TO FT232)

安裝Virtual COM Port Driver
  • FTDI網站找適合的驅動程式,範例安裝Mac OS X 10.9以上 x64 v2.3 FTDI USB Serial Driver
FTDI網站下載VCP Driver

接線
  • FT232 USB 模組和Arduino Pro mini 恰好六支pin腳對應上
    (DTR, RX<->TX, TX<-RX, VCC, CTS, BLK)

DTR, RX<->TX, TX<->RX, VCC, CTS, BLK 分別對應好
利用FT232 USB模組的pin腳和Arduino Pro mini連接
接上電腦後應該就能看到LED亮燈


上傳Arduino範例程式 : 範例 > 01.Basics > Blink
  • 板子:Arduino Pro Mini
  • 處理器:ATMega328 (5V, 16MHz)
  • 序列埠:找到您自己電腦上的,範例為 cu.usbserial-A9UHPBRJ
  • 燒錄器:AVRISP mkII


板子選擇Arduino Pro mini

處理器選擇 ATmega328 (5V, 16Mhz)

序列埠選擇您自己電腦上對應的USB Serial Port

燒錄器選擇AVRISP mkII

按下選單左上方(上傳)功能鍵

上傳時,正常情況應能看到 FT232 USB模組上的RX/TX LED一閃一滅,表示程式正傳輸到Arduino Pro mini 上。

上傳成功後,接著您就能看到 Arduino Pro mini 上面的LED一閃一滅囉~ 恭喜啦!

#


2014年12月16日 星期二

Ruby - 中文地址取得經緯度座標

先使用 gem 安裝 Geocoder
> sudo gem install geocoder

執行 irb :
$ irb

> require 'geocoder'
> my = Geocoder.search("10659 臺北市建國南路二段125號")

執行結果:
 => [#[{"long_name"=>"125", "short_name"=>"125", "types"=>["street_number"]}, {"long_name"=>"Section 2, Jianguo South Road", "short_name"=>"Section 2, Jianguo S Rd", "types"=>["route"]}, {"long_name"=>"新龍里", "short_name"=>"新龍里", "types"=>["administrative_area_level_4", "political"]}, {"long_name"=>"Da’an District", "short_name"=>"Da’an District", "types"=>["administrative_area_level_3", "political"]}, {"long_name"=>"Taipei City", "short_name"=>"Taipei City", "types"=>["administrative_area_level_1", "political"]}, {"long_name"=>"Taiwan", "short_name"=>"TW", "types"=>["country", "political"]}, {"long_name"=>"106", "short_name"=>"106", "types"=>["postal_code"]}], "formatted_address"=>"No. 125, Section 2, Jianguo South Road, Da’an District, Taipei City, Taiwan 106", "geometry"=>{"location"=>{"lat"=>25.029152, "lng"=>121.538369}, "location_type"=>"ROOFTOP", "viewport"=>{"northeast"=>{"lat"=>25.0305009802915, "lng"=>121.5397179802915}, "southwest"=>{"lat"=>25.0278030197085, "lng"=>121.5370200197085}}}, "partial_match"=>true, "types"=>["street_address"]}, @cache_hit=nil>] 

取得陣列裡的資料:
 > my[0].latitude
 => 25.029152 
 > my[0].longitude
 => 121.538369 
 > my[0].address
 => "No. 125, Section 2, Jianguo South Road, Da’an District, Taipei City, Taiwan 106" 
 > my[0].city
 => "Da’an District" 

2014年12月14日 星期日

解決 Mac OS X 10.10 安裝 Android Studio 的錯誤訊息 - Android Studio was unable to find a valid Jvm

安裝Android Studio之後,第一次執行若發生「Android Studio was unable to find a valid JVM」錯誤訊息,通常是因為Android Studio找不到 Java 6 JRE,可能是沒安裝 Java 6 JRE 或 Java 6 系統路徑沒設定好。

如果您跟我一樣,只想安裝了Java 7 或 Java 8 JDK而不想安裝Java 6 JRE。那stackoverflow上的解決方法就可以派上用場。

  1.  先用Mac OS X的Spotlight搜尋 "Android Studio",在視窗最底下可以用Finder顯示"Android Studio"的位置(硬碟>應用程式>Android Studio 或 
    /Applications/Android Studio.app)

    於 Finder 顯示所有項目... 找到Android Studio
  2. 開啟"Android Studio" Application Package,開啟編輯 Info.plist 檔

    找到Info.plist

  3. 將 Info.plist 裡面的JVMVersion版本設定參數從 1.6* 改為 1.6+ ,並存檔


  4. 開啟 "Android Studio" 應該就可以執行了...
#

2014年9月14日 星期日

替 Blogger.com 文章加上程式碼區塊(codeblock)和執行結果區塊(shellblock)

選擇 範本>編輯HTML ,在HTML程式碼中找到CSS區塊,最後新增.post .codeblock和.shellblock的CSS程式碼如下:

<style type='text/css'>    ...

    .post .codeblock { 
       display: block; /* fixes a strange ie margin bug */
       font-family: Courier New;
       font-size: 10pt;
       overflow:auto;
       background: #f7f7f7 url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5yQoXazjZmzOBl-CuDBezK44UwWVLs8GNNigHQmyKSv8EvcXCEtSlMQAPUeXgo0wlKey6nO9VbGG4VF-b4NxEJivH5avNfjYagrnLNQcx8l4TL9AbxT6JU3PUUKBgNzbG9WHP8WMGRmcX/s1600/Code_BG.gif) left top repeat-y;
       border: 1px solid #ccc;
       padding: 10px 10px 10px 21px;
       max-height:1000px; 
       line-height: 1.2em;
    }

    .post .shellblock { 
       display: block; /* fixes a strange ie margin bug */
       font-family: Courier New; 
       font-size: 10pt;
       overflow:auto;
       color: #00ff00;
       background: #000000;
       border: 1px solid #ccc;
       padding: 10px 10px 10px 21px;
       max-height:1000px; 
       line-height: 1.2em;
    }
</style>

另外在<head>和</head>之間,加上
<script src="//google-code-prettify.googlecode.com/svn/loader/run_prettify.js"></script>

記得要「儲存範本」喔!

之後在寫部落格文章時,在HTML模式底下寫
 
<pre class="codeblock prettyprint">
public class first {
    public static void main (String[] args) {
        System.out.println("Hello, my first java!");
    }
}
</pre>
就會出現下列結果囉:
public class first {
    public static void main (String[] args) {
        System.out.println("Hello, my first java!");
    }
}
如果寫成
<pre class="shellblock">
  執行結果
  ...
</pre>
結果就會變成
  執行結果
  ...
#

Java Multithread Examples

Java MultiTread 程式的基本結構:
import java.util.*;

class firstThread implements Runnable {
   private Thread t;
   private String threadName;

   firstThread( String name) {
      threadName = name;
      ...
   }

   public void run() {
      ...
   }

   public void start() {
      if (t==null) {
        t = new Thread (this, threadName);
        t.start();
      }
   }
} // end of class firstThread

public class first {

 public static void main(String []args) {
    try {
       ...
    } catch (Exception e) {
       System.out.println(e);
    }
 } // end of main

} // end of class first 
編輯 first.java 程式碼範例如下:
import java.util.*;

class firstThread implements Runnable {
   private Thread t;
   private String threadName;

   firstThread( String name) {
      threadName = name;
      System.out.println("Creating " + threadName);
   }

   public void run() {
      long start = System.currentTimeMillis();
      System.out.println("Running " + threadName);
      try {
         for (int i=0; i<=10; i++) {
            Random ran = new Random();
            int j = ran.nextInt(1000) + 1;
            Thread.sleep( j );
            System.out.println(" Thread " + threadName + " : round " + i + " sleep " + j);
         }
         long end = System.currentTimeMillis();
         long diff = end - start;
         System.out.println("Difference of " + threadName + " is : " + diff);
      } catch (Exception e) {
         System.out.println("Thread " + threadName + " : " + e);
      }
      System.out.println("Thread " + threadName + " exiting.");
   }

   public void start() {
      System.out.println("Starting " + threadName);
      if (t==null) {
         t = new Thread (this, threadName);
         t.start();
      }
   }
} // end of class firstThread

public class first {
   public static void main(String []args) {
      try {
         firstThread r1 = new firstThread("Thread-1");
         r1.start();

         firstThread r2 = new firstThread("Thread-2");
         r2.start();

         firstThread r3 = new firstThread("Thread-3");
         r3.start();
      } catch (Exception e) {
         System.out.println(e);
      }
   } // end of main
} // end of class first
編譯 first.java
$ javac first.java
執行 java first,因為 MultiThread 和 Random sleep 的影響,結果可能和下列範例有些不同。
$ java first

Creating Thread-1
Starting Thread-1
Creating Thread-2
Starting Thread-2
Running Thread-1
Creating Thread-3
Starting Thread-3
Running Thread-2
Running Thread-3
 Thread Thread-3 : round 0 sleep 660
 Thread Thread-2 : round 0 sleep 730
 Thread Thread-1 : round 0 sleep 837
 Thread Thread-2 : round 1 sleep 213
 Thread Thread-2 : round 2 sleep 363
 Thread Thread-1 : round 1 sleep 794
 Thread Thread-3 : round 1 sleep 995
 Thread Thread-1 : round 2 sleep 112
 Thread Thread-1 : round 3 sleep 158
 Thread Thread-2 : round 3 sleep 649
 Thread Thread-3 : round 2 sleep 578
 Thread Thread-1 : round 4 sleep 427
 Thread Thread-2 : round 4 sleep 893
 Thread Thread-2 : round 5 sleep 8
 Thread Thread-3 : round 3 sleep 625
 Thread Thread-2 : round 6 sleep 159
 Thread Thread-3 : round 4 sleep 260
 Thread Thread-1 : round 5 sleep 879
 Thread Thread-2 : round 7 sleep 667
 Thread Thread-2 : round 8 sleep 58
 Thread Thread-3 : round 5 sleep 824
 Thread Thread-2 : round 9 sleep 392
 Thread Thread-2 : round 10 sleep 2
Difference of Thread-2 is : 4146
Thread Thread-2 exiting.
 Thread Thread-1 : round 6 sleep 985
 Thread Thread-3 : round 6 sleep 667
 Thread Thread-1 : round 7 sleep 839
 Thread Thread-3 : round 7 sleep 665
 Thread Thread-1 : round 8 sleep 354
 Thread Thread-1 : round 9 sleep 96
 Thread Thread-1 : round 10 sleep 171
Difference of Thread-1 is : 5666
Thread Thread-1 exiting.
 Thread Thread-3 : round 8 sleep 559
 Thread Thread-3 : round 9 sleep 61
 Thread Thread-3 : round 10 sleep 201
Difference of Thread-3 is : 6108
Thread Thread-3 exiting.

2013年11月29日 星期五

Mac OS X 安裝及使用  Homebrew

ubuntu apt 用習慣的朋友,應該也能很快適應 Homebrew for Mac OS X的。

安裝步驟參考官網及實際經驗筆記如下:
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go/install)"
> brew update

接著就能安裝自己想要的 UNIX Packages,如:wget, curl, lynx ...
> brew install wget
> brew install lynx

查詢經安裝的套件列表 
> brew list

或是想要移除已經安裝的套件
> brew uninstall wget

自動更新已經安裝的套件
> brew upgrade wget

其他功能可以藉由Help看指令參數及用法 
> brew help


延伸閱讀: 

#

2013年8月25日 星期日

ubuntu 安裝 easy_install 和 MySQL Connector/Python


  1. 安裝 easy_install
  2. > sudo wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py -O - | python
  3. 安裝 Mysql Connector/Python
  4. > sudo easy_install mysql-connector-python

範例程式
import mysql.connector
from mysql.connector import errorcode

try:
  cnx = mysql.connector.connect(user='userid', password='******',
                              host='127.0.0.1',
                              database='dbname', charset='utf8')
except mysql.connector.Error as err:
  if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
    print("Something is wrong with your user name or password")
  elif err.errno == errorcode.ER_BAD_DB_ERROR:
    print("Database does not exists")
  else:
    print(err)
else:
  cursor = cnx.cursor()
  query = ("SELECT * FROM tablename ORDER BY id DESC LIMIT 10;")
  cursor.execute(query)
  for i in cursor:
    print i
  cursor.close()
  cnx.close() 


延伸閱讀:MySQL Connector/Python 官網

#

2013年5月29日 星期三

Google Data Python Library + 寫入Event至Calendar

先確定已經安裝好python及Google Data Python Library(可參考):

import datetime
import atom
import gdata.calendar.service
from gdata.calendar import Who, Where, When
from gdata.calendar import SendEventNotifications


start = datetime.datetime.now().isoformat()

entry = gdata.calendar.CalendarEventEntry()
entry.send_event_notifications = SendEventNotifications(value='true')

titleText = 'event' + start
entry.title = atom.Title(text = titleText)

contextText = 'some event etc...\n' + start
entry.content = atom.Content(text = contextText)

entry.send_event_notifications = atom.Entry(text = 'true') #<<<<<<<<<<<<<<<<<
entry.when.append(When(start_time=start))
entry.where.append(Where(value_string='somewhere'))
entry.who.append(Who(email = 'INVENTEE@gmail.com'))

client = gdata.calendar.service.CalendarService(email='INVENTER@gmail.com', password='YOURPW')

client.ProgrammaticLogin()
event = client.InsertEvent(entry,'http://www.google.com/calendar/feeds/default/private/full')

#

補記:將這個python程式稍加修改後,即可應用在前兩篇 Raspberry Pi + PIR Sensor (紅外線動作感測器)的範例中。其實就能達成紅外線感應偵測到人或動物時,即能在Google Calendar紀錄事件,並且還可以利用Google Calendar簡訊通知至手機。

##

2013年5月24日 星期五

Raspberry Pi + PIR Sensor (紅外線動作感測器) + mpg321 = 您好歡迎光臨

這範例確實是大材小用,有點拿牛刀殺雞。不過卻也是很實用又能引人注意的應用。

參考前一篇「Raspberry Pi + PIR Sensor (紅外線動作感測器) + Webcam」,只要將

dt = datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
dt_filename = dt+".jpg"
fs_command = "fswebcam --background -d /dev/video0 "+dt_filename
print " ",fs_command
os.system(fs_command)

改成

fs_command = "mpg321 welcome.mp3"
print " ",fs_command
os.system(fs_command)

就能利用mpg321指令來播放歡迎光臨音效的mp3。

找不到音效檔案時,其實只要拿手邊的手機錄下語音備忘錄,就能利用家人的聲音來當作招呼聲囉。以ios錄製下的m4a格式聲音檔為例:

> ffmpeg -i welcome.m4a welcome.mp3

就能將m4a格式再轉成mp3格式來使用。


需要安裝命令列 mpg321 mp3播放器軟體的話,可以另外參考「ubuntu 文字模式下的 mp3 播放軟體」進行安裝。

#

2013年5月13日 星期一

Raspberry Pi + PIR Sensor (紅外線動作感測器) + Webcam

基本上參考 Raspberry Pi Spy的這篇文章 - Cheap PIR Sensors and the Raspberry Pi

紅外線動作感測器(PIR Sensor)可以視為是一個輸出 (out) 為 1 或 0的開關。PIR SensorGND接到Raspberry PiPin 6(GND)POWER接到Pin 2 (+5V)OUT則接到Pin 26 (GPIO7)(Raspberry Pi腳位可參考這裡)

當紅外線動作感測器偵測到有物體(人體)移動時,GPIO7的值可能就會由0轉變成為1,我們可以藉此狀態改變來達成其他應用,例如這次我們就利用紅外線偵測狀態改變,利用fswebcam來擷取一張照片。

1. 修改Raspberry Pi Spy所提供的pir_1.py如下,並記得存檔。
..
import time (新增下列兩行)
import os
import datetime
...
Previous_State=1 (新增下列五行)
dt = datetime.datetime.now().strftime("%Y%m%d-%H%M%S") dt_filename = dt+".jpg" fs_command = "fswebcam --background -d /dev/video0 "+dt_filename
print " ",fs_command os.system(fs_command)
..


2. 修改執行 pir_1.py
> sudo python pir_1.py
PIR Module Test (CTRL-C to exit)
Waiting for PIR to settle ...
  Ready
  Motion detected!
   fswebcam --background -d /dev/video0 20130513-000412.jpg
  Ready
  Motion detected!
   fswebcam --background -d /dev/video0 20130513-000418.jpg
  Ready
  ..

因為紅外線偵測到物體移動之後,才進行fswebcam來進行拍攝,所以時間差延遲可能會拍不到真正想要拍攝的移動物體。應該是不斷進行拍攝或錄影,然後在偵測物體移動發生的第 t 秒時,回頭去存下第 t-1 或 t-2 秒到第 t+1 或 t+2秒的影像,可能較能切合需要。

不過這只是拋磚引玉,一個結合紅外線動作感應器的小應用而已,更多有趣或有用的應用就有勞各位自己再去嘗試囉。

如果真對motion detection應用有興趣的話,其實可以直接參考這篇-Raspberry Pi安裝Webcam和Motion Webcam Server 就能得到不錯的效果囉。

#



2013年5月8日 星期三

Raspberry Pi 安裝 USB Bluetooth Dongle

1. 安裝藍芽相關程式

> sudo apt-get update
sudo apt-get upgrade
sudo apt-get autoremove
sudo atp-get install bluetooth bluez-utils blueman


2. 確認藍芽是否正常運作

lsusb
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 0a5c:200a Broadcom Corp. BCM2035 Bluetooth dongle

/etc/init.d/bluetooth status
[ ok ] bluetooth is running.


3. 掃描其他藍芽裝置

hcitool scan

Scanning ...
        78:A3:*:*:*:22       iphone4  (找到開啟藍芽的iPhone4, 您掃描到的裝置MAC Address 78:A3:*:*:*:22應該不同)


4. Ping一下其他藍芽裝置 (本例為iPhone4)

sudo l2ping -c 3  78:A3:*:*:*:22 
(輸入掃描到的裝置MAC Address 78:A3:*:*:*:22) 

Ping: 78:A3:B4:97:A0:22 from 00:02:*:*:*:D4 (data size 44) ...
44 bytes from 78:A3:*:*:*:22 id 0 time 204.29ms
44 bytes from 78:A3:*:*:*:22 id 1 time 89.52ms
44 bytes from 78:A3:*:*:*:22 id 2 time 80.71ms
3 sent, 3 received, 0% loss

#



2012年6月24日 星期日

MongoDB 開放遠端連線

有些時候遇上了 MondoDB Connection refused 時,記得檢查一下 /etc/mongodb.conf 設定是否如下:

bind_ip = 0.0.0.0

port = 27017
記得將預設的 bind IP 127.0.0.1 改為 0.0.0.0 囉!

#

2012年5月31日 星期四

寫APP還能賺獎金~

最近辦APP比賽的單位還真不少,收集一下提供大家參考:

中華電信:2012電信創新應用大賽
2012電信創新應用大賽

經濟部工業局:2012通訊大賽
2012通訊大賽

有興趣的朋友,別忘了報名參加!

2012年5月30日 星期三

找出/刪除MySQL資料表中重複的資料

範例:找出 my_table 資料表中 name 重複的資料

select name,count(*) from my_table group by name having count(*) > 1;


範例:刪除 my_table 資料表中 name, id 重複的資料

alter ignore table my_table add unique index(name, id);



2012年5月16日 星期三

把Dropbox當git server使用

嚴格來講,這篇算是mrmu大作的圖示版本,算是方便大家理解而已。

按著1,2,...8步驟在同一部主機或不同主機之間都可操作使用。第一次需要執行左半邊的Dropbox目錄步驟,剩下其他不同主機只要執行右半邊的Git步驟即可。(同步就交給Dropbox雲端同步吧)

把Dropbox當作git server使用

[Dropbox部分]

1. mkdir OurProject
2. cd OurProject 
    git init –bare .

[Git部分]
3. mkdir MyProject
4. cd MyProject
    git init
5. git remote add origin <OurProject目錄路徑>
6. git add .
7. git commit –m 我的註解"
8. git push origin master



延伸閱讀:Git教學:Git的遠端操作及利用Dropbox建立Server進行協同開發

2012年5月14日 星期一

人人都可以是 APP開發者

codiqa 推出線上的 Web APP Builder ,用拖拉的方式讓每個人都能快速地完成 Web APP 原型。Web Demo 目前也提供匯出功能(Export APP HTML...)。可拿來快速建構 jQuery Mobile 網頁雛形。

Source : codiqa.com
看來,大家完成的基本 Web App 長相可能都會大同小異、似曾相識吧~ XD

2012年5月10日 星期四

精簡HTML5範例-純筆記


純筆記,提供參考。


<!DOCTYPE html>
<html lang="zh-TW">
  <head>
    <meta charset="utf-8" />
    <title>page title</title>
    <script src="my-javascript-file.js"></script>
    <link rel="stylesheet" href="my-css-file.css" />
  </head>
  <body>
     <!-- 網頁內容就放在body內吧 -->
  </body>
</html>

延伸閱讀:HTML5 維基百科

2012年3月20日 星期二

Mac OS X 下 Xcode + Phonegap 開發 iOS APP 初步

Phonegap實現了只要會開發網頁,就能寫出跨平台(iOS、Android、Windows Phone、Blackberry、Symbian、WebOS)APP應用軟體的可能性,開發者可以利用HTML/CSS/JavaScript快速開發服務,並且利用Phonegap封裝成可於各種平台上執行的APP。

下面就以Xcode為開發環境進行示範:

1. 先至官網下載和安裝新版Phonegap。


2. 開啟Xcode,並建立一個新的專案(Create a new Xcode Projec)。
建立一個新的專案


3. 設定專案名稱 (Project Name),這裡以 "myClear" 為例。取消"Use Automatic Reference Counting"選項,並按下Next(註1)

設定專案名稱



4. 選擇專案範本 - Cordova-based Application,按下Next
選擇Cordova-based Application專案範本



5. 將已經開發好的Web-based APP目錄(www),用滑鼠拖曳到myClear專案上。

用滑鼠將www目錄拖曳到專案上



6. 確認 Destination 勾選 Copy items into destination group's folder (if needed)項目,並選擇 Folders : Create folder references for any added folders。(註2)

確認Destination和Folder選項



7.發現myClear專案下,新增了www資料夾。
專案內已經新增www資料夾



8.選擇模擬器(Simulator)種類:
選擇Simulator


9. 按下Run執行
執行


10. iPhone模擬器上執行www (預設index.html) 內的APP (註3)
可以執行囉~



註1:若未取消"Use Automatic Reference Counting"選項,可能於開啟模擬器執行(Run)階段會發生一堆 "'NSAutoreleasePool' is unavailable: not available in automatic reference counting mode"錯誤。

註2:選擇"Create groups for any added folders"選項時,模擬器執行後可能會在手機畫面上出現"ERROR: Start Page at 'www/index.html' was not found."錯誤。

註3:www內的網頁程式以Evan You開發的HTML5-clear為範例。詳可參github取得最新的程式碼。