2014/10/28
Chrome 中文輸入問題終於解決了 !
Chrome 瀏覽器更新到 38.0.2125.111m(64 bit)終於解決中文輸入法無法正常輸入中文問題。這問題持續了好一陣子,至少超過一週以上。好巧,FireFox 也更新到 33.0.1 ,但不是相同的問題。
2014/10/21
Processing loadJSONArray() 問題
在 Processing 中要載入一個 json 檔中存放的 array 資料會參考官方網站中以下列的程式碼執行:
JSONArray values;
void setup() {
try {
// values = new JSONArray();
values = loadJSONArray("data.json");
} catch(Exception e) {
print(e.getMessage());
}
if (values == null) {
println("values is null");
exit();
}
for (int i = 0; i < values.size(); i++) {
JSONObject animal = values.getJSONObject(i);
int id = animal.getInt("id");
String species = animal.getString("species");
String name = animal.getString("name");
println(id + ", " + species + ", " + name);
}
}
但一執行會遇到 cannot convert from JSONArray to JSONArray 的奇怪錯誤訊息,如果你在Eclipse 中開發很快就會發現問題在那裡。若是第一次接觸Processing 的人,真的是會被搞死。只要把第一行 JSONArray values;
前面加上 processing.data. 即可。
JSONArray values;
void setup() {
try {
// values = new JSONArray();
values = loadJSONArray("data.json");
} catch(Exception e) {
print(e.getMessage());
}
if (values == null) {
println("values is null");
exit();
}
for (int i = 0; i < values.size(); i++) {
JSONObject animal = values.getJSONObject(i);
int id = animal.getInt("id");
String species = animal.getString("species");
String name = animal.getString("name");
println(id + ", " + species + ", " + name);
}
}
但一執行會遇到 cannot convert from JSONArray to JSONArray 的奇怪錯誤訊息,如果你在Eclipse 中開發很快就會發現問題在那裡。若是第一次接觸Processing 的人,真的是會被搞死。只要把第一行 JSONArray values;
前面加上 processing.data. 即可。
2014/10/12
Python 另人頭痛的 Singleton 問題
最近學習使用Python 寫網路爬蟲程式,除了一些動態及需要輸入查詢條件的網頁問題外,最惱人的還是在Python 語法上,因為對Java 較熟悉,程式撰寫習慣會以OO的方式做思考,所以將一些Python 程式碼要重構時發現光一個Singleton pattern 的寫法就夠人煩的了,在Java 中是簡單的不得了, 在Python 中卻是寫法好幾種,重點是不夠簡單易懂。請參考 Stack Over Flow 網站上以下這篇討論:
Creating a singleton in Python
以下是其中一種個人認為比較簡單的方法,缺點是無法避免被誤繼承的問題,但還不致於造成大問題。
class Singleton:
__single = None
def __init__(self):
if Singleton.__single:
raise Singleton.__single
Singleton.__single = self
self.name = None
def __str__(self):
pass
def dump(self):
if self.name == None:
print ''
else:
print "Name : " + self.name
def setName(self, name):
self.name = name
def getName(self):
return self.name
class WorldSingleton(Singleton):
pass
個人是習慣使用Eclipse 搭配 PyDev 這個plugin 來開發 python 程式,以上程式碼無法在開發時就先警告,要到執行階段才能發現。
Creating a singleton in Python
以下是其中一種個人認為比較簡單的方法,缺點是無法避免被誤繼承的問題,但還不致於造成大問題。
class Singleton:
__single = None
def __init__(self):
if Singleton.__single:
raise Singleton.__single
Singleton.__single = self
self.name = None
def __str__(self):
pass
def dump(self):
if self.name == None:
print ''
else:
print "Name : " + self.name
def setName(self, name):
self.name = name
def getName(self):
return self.name
class WorldSingleton(Singleton):
pass
個人是習慣使用Eclipse 搭配 PyDev 這個plugin 來開發 python 程式,以上程式碼無法在開發時就先警告,要到執行階段才能發現。
訂閱:
文章 (Atom)