2015年底微軟開放了,這篇文章正是透過新版Open Live Writer寫成的,接下來就是看看到底會被眾人放棄,還是外掛滿天飛獲得空前的支持。
擦亮眼睛看著呢。
2015年底微軟開放了,這篇文章正是透過新版Open Live Writer寫成的,接下來就是看看到底會被眾人放棄,還是外掛滿天飛獲得空前的支持。
擦亮眼睛看著呢。
NodeJS很好用,跟Python的概念很類似,只差在語法的差異,所以如果有需要也能好好利用他。
維持我一貫的作法,最好是能免安裝、可攜式,安裝結果很失敗,失敗在npm的安裝上,但反正不急所以先記錄一下以後再繼續....。
首先我的系統是Win7 64bit,遇到的錯誤就如圖片所示,安裝過程如下:
到此就出現錯誤了,整個npm裡的檔案全被清空,所以也就沒機會繼續使用npm安裝模組了(例如 npm install socket.io),把NodeJS x86跟x64都試過都一樣,下次再找XP試試看如何?
聽說VRAY2.0已經支援及時渲染Realtime Render(Vray RT)當然得來試試,尤其有一塊Nvidia 430顯卡,結果竟然給我出現錯誤,就是不給我使用GPU渲染。
查了一下資料,變數沒設置?那就到控制台 / 系統 / 環境變數 下去幫他新增一個VRAY_OPENCL_DEVICES變數,數值給他設為0,如果有兩塊顯卡第2塊ID是1,所以設為0就是告訴他使用第一塊顯卡,若兩塊都要使用就設為0,1即可。
再一次檢查看看,錯誤訊息消失了,可以正常使用。
在 python開發APP(一) GUI 裡使用了wxPython來開發GUI介面,但很快便會發現 wxPython 的程式碼十分繁瑣而且缺乏好用的佈局工具,剛好 pythonCard 補足了這方面的一點缺陷。下載後安裝的方法很簡單,一樣是 python setup.py install 這個指令即可,但需要注意的是 pythonCard 是架構在wxPython之上,所以在安裝順序上得先確定已經安裝wxPython後再安裝pythonCard才不會發生錯誤。
安裝後就有方便的佈局工具可以用了,到python目錄下Lib\site-packages\PythonCard\tools\resourceEditor 執行 resourceEditor.py (也可以把這檔案做個捷徑方便使用)就會看到如左圖的畫面,左上角是佈局工作,右下角是佈局元件的屬性編輯工具,這樣的畫面是不是跟很多高級IDE工具很像,比wxPython實在是方便很多,對於開發效率更是提升不少。
除了工具以外,pythonCard也提供了大量方便的範例程式讓使用者方便參考使用,只要到python目錄下Lib\site-packages\PythonCard\samples 目錄下執行 samples.pyw 就可以看到像左邊畫面的工具,除了有原始檔案還可以試著直接執行關看結果。
接下來實做一下簡單例子,做一個讓文字框在點擊按鈕後可以顯示跟文字輸入框一樣的文字,大概拉出像以下的畫面並儲存成 PyCardTest.rsrc.py 即可,順便看看內容如何?
{'application':{'type':'Application',
'name':'Template',
'backgrounds': [
{'type':'Background',
'name':'bgTemplate',
'title':'Standard Template with File->Exit menu',
'size':(487, 162),
'style':['resizeable'],
'menubar': {'type':'MenuBar',
'menus': [
{'type':'Menu',
'name':'menuFile',
'label':'&File',
'items': [
{'type':'MenuItem',
'name':'menuFileExit',
'label':'E&xit',
'command':'exit',
},
]
},
]
},
'components': [
{'type':'TextField',
'name':'go',
'position':(10, 51),
'size':(417, -1),
},
{'type':'Button',
'name':'Button1',
'position':(353, 7),
'label':u'\u78ba\u5b9a',
},
{'type':'TextField',
'name':'Name',
'position':(60, 8),
'size':(273, -1),
'text':u'Input your Name',
},
{'type':'StaticText',
'name':'StaticText1',
'position':(10, 10),
'text':u'\u540d\u5b57',
},
] # end components
} # end background
] # end backgrounds
} }
PyCardTest.rsrc.py 程式碼相當簡單,看不看其實都沒啥咪差,但稍微瞭解一下內容架構也不算是壞事。
接下來就是如何應用它了,先建立一個同名擋案 PyCardTest.py 放在同目錄下,這個檔案就是我們要撰寫邏輯控制程式碼的地方,首先要導入GUI,所以會有固定的格式如下顯示。
from PythonCard import model
class MyBackground(model.Background):
def on_initialize(self, event):
pass
if __name__ == '__main__':
app = model.Application(MyBackground)
app.MainLoop()
接下來要幫按鈕加上功能,在上面的程式碼class裡加上一個是件綁定的方法。
def on_Button1_mouseClick(self,event):
self.components.go.text = self.components.Name.text
儲存後試著執行PyCardTest.py就可以看到完整功能的應用程式了。
如果要給別人使用當然得封裝一下,那就使用一下py2exe來編譯,果然按照之前的方法馬上就出錯失敗,問題是出在元件沒有被一起封裝進來。得稍微修改一下py2setup.py內容
from distutils.core import setup
import py2exe
#setup(console=['PyCardTest.py'])
import os
# find pythoncard resources, to add ad 'data_files'
pycard_resources = []
for filename in os.listdir('.'):
if filename.find('.rsrc.') > -1:
pycard_resources += [filename]
# includes for py2exe
includes = []
for comp in ['button', 'image', 'staticbox', 'statictext',
'textarea', 'textfield', 'passwordfield']:
includes += ['PythonCard.components.' + comp]
print 'includes', includes
setup(
windows = [
{
"script": "PyCardTest.py",
}
],
options = {
"py2exe": {
"optimize": 2,
"compressed": 1,
"includes": includes,
}
},
)
如此就可以成功產生exe執行檔,再把PyCardTest.rsrc.py 複製到同目錄就依竊OK了。
正規的教學裡摸索Ruby實在有點累,甚至難以一窺全貌,Rails其實有點像是Django一樣的MVC框架,所以兩者也有其相似之處(使用上的邏輯思考)。看了很多如何開始的文章,對於Ruby的安裝上實在不是很適合我(喜歡免安裝、帶著走),所以決定從InstantRails下手,首先到官網去下載InstantRails,這樣就可以開始對Ruby開始動手動腳了。
這裡下載InstantRails-2.0-win.zip這個檔案來解壓縮(隨便你喜歡放在哪),從目錄架構來看,它是利用了Apache+PHP+MySQL的基礎,所以你可以執行InstantRails.exe 後看到Apache和MySQL便被啟動,如果點擊最上方左邊按鈕就可以進入Ruby的管理介面,如下圖。
既然使用的是AMP架構,也就是說你也可以單純把它當作一個Web Server來使用,在瀏覽器輸入http://127.0.0.1/ 就會看到網頁顯示出來,而這個網頁是放在www的子目錄下。
Ruby程式是放在ruby子目錄下,而rails_apps這個子目錄就是將來我們要開發的專案存放區,當你進入rails_apps子目錄後會看到底下子目錄名稱剛好跟左圖 Rails Applications一樣。
可以點擊Create New RailsApp…按鈕打開DOS視窗,輸入指令 rails <專案名稱>,再回到管理視窗點擊Refresh List按鈕就可以看到剛才建立的專案名稱,勾選起來後再點擊Start with Mongrel按鈕開始執行剛才的專案。用瀏覽器開啟 http://127.0.0.1:3000/ 後就會發現專案網頁啟動了。
而其中如果要改變port的設定就是到 Configure Startup Mode… 按鈕裡面去更改設定。
如果要手動來啟動專案則到剛才的DOS視窗進入專案名稱子目錄下輸入 ruby script/server 便可以啟動,啟動後跟Pyton一樣可以隨時修改程式碼卻不必再重新啟動而直接套用。
注意:啟動專案跟Apache是沒關係的,就算把Apache停止掉也不影響。
到此為止一個專案的基本架構已經完成,在專案目錄下可以看到一個 app 子目錄,底下有四個子目錄controllers、helpers、models、views就是MVC架構的分類,跟Django十分類似。
繼續為我們的專案添加功能,下指令 ruby script\generate controller MyTest01 就會像下圖一樣,幫你建立一些功能檔案。
到 app\views\my_test01 目錄下建立 index.html.erb 檔案,內容如下:
<html>
<head>
<title>Hello World 我的第一個頁面</title>
</head>
<body>
<h1>Hello World 我的第一個頁面</h1>
</body>
</html>
基本上這算是一個輸出網頁,但Ruby其實還不知道該如何輸出它,接下來到剛才產生的 app\controllers\my_test01_controller.rb 檔案做編輯修改:
class AppController < ApplicationController
def index
end
end
這裡 def index 定義了index的細部功能,然後套用views下的視圖,這樣在瀏覽器下輸入 http://127.0.0.1:3000/my_test01/index 或 http://127.0.0.1:3000/my_test01/ 都可以看到"Hello World 我的第一個頁面" 這一段文字了。
有了以上Ruby運行環境的基礎概念,接下來就可以開始測試學習更深入的語法了。
首先得要有tomcat,到tomcat官網下載最新版,這裡下載的是tomcat 7 的64-bit Windows zip (pgp, md5),因為我的環境是Win7 64bit,JAVA 64bit,所以當然使用64bit tomcat的ZIP(免安裝)。
把壓縮檔解壓縮得到一個apache-tomcat-7.0.21目錄,暫時隨便你放在哪都行,免安裝就是要有強大的可攜性(除非必要不使用絕對路徑),再到目錄下的bin子目錄執行startup.bat,如果無法順利執行或告訴你找不到JAVA_HOME那就編輯 startup.bat 裡加上 set "JAVA_HOME=C:\Program Files\Java\jre6" 這一句指定JAVA的所在目錄(這就是不得已的絕對路徑),再一次執行 startup.bat 就會看到執行畫面。
Tomcat 目錄架構
打開瀏覽器 http://127.0.0.1:8080 就可以看到網頁顯示,而顯示的內容來自 webapps\ROOT ,如果要看他自帶的的範例則在網址後加上 examples 就會看到 webapps\examples 的內容。
重點是要在網頁上管理tomcat就要輸入 http://127.0.0.1:8080/manager 結果是要你輸入帳號密碼,但不管輸入啥咪都沒用也沒任何提示,此時就要到 conf 子目錄下去編輯 tomcat-users.xml 擋案,在 <tomcat-users> 節點裡加上以下設定:
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="admin" password="tomcat" roles="manager-gui,manager-script,manager-jmx,manager-status"/>
重新啟動tomcat後再一次進入管理介面,使用admin帳號就可以看到一切了。
在正常情況要開發GAE APP並不需要這麼麻煩,只要照著google的說明一步步安裝就能很輕鬆打造出一個GAE的開發環境。但事情如果都能如此單純就是最好不過的,但偏偏常會碰到系統已經安裝好python卻偏偏不是32位元或者2.5版,這樣在將來的開發過程就不難保證會碰上問題,而且如果要到其他電腦下繼續工作,難道還要在花一次精神與時間去佈署嗎?
為了應付以上問題以及讓開發環境單純,現在就開始來打造一個可攜環境吧,反正python以及GAE都不是標準的Windows程式所以在安裝過程並不會給你亂COPY檔案到你想都想不到的地方。
到此基本上已經完成我們所要的功能了。偏偏遇上了一些問題,所以順便記錄一下,一個是SSL問題,一個是easy_install工具。
python 2.6版以後已經有包含SSL模塊了,但2.5版卻沒有,所以如果用的是古老的GAE SDK並不會有任何錯誤,但現在的GAE SDK卻會告訴你有這個問題,反正缺啥裝啥,為了將來可能還要安裝其他模塊那就先安裝 python setuptools 好了(如果安裝時python路徑無法選擇,那就暫時把python25目錄移到原安裝目錄下再繼續)。安裝完後到 python25\Scripts 下就能找到 easy_install.exe了。
再來安裝PIL模塊。 easy_install PIL 很快就安裝完成。
用 easy_install SSL時卻發生錯誤,既然無法自動只好手動。
我們用MinGW32來編譯我們要的模塊,首先下載OpenSSL(選擇Developer)跟 libgw32c (選擇Developer)後解壓縮到MinGW32目錄下。
設定一下臨時路徑。
set PATH=%PATH%;C:\MinGW\bin set LIBRARY_PATH=C:\MinGW\lib set C_INCLUDE_PATH=C:\MinGW\include
下載 Python SSL模塊原始檔。http://pypi.python.org/pypi/ssl
解壓縮後修改setup.py檔
if sys.platform == 'win32′: # Assume the openssl libraries from GnuWin32 are installed in the # following location: gnuwin32_dir = os.environ.get(“GNUWIN32_DIR”, r”C:\MinGW\GnuWin32″)
到此就可以下指令開始安裝了
python setup.py build -c mingw32 install
一切都完成後就可以把 PortableGAE整個目錄帶著跑了。