文章

目前顯示的是 五月, 2017的文章

[Solved] Bot 同意資料取得的網頁一直跳出

圖片
5/31 Line 全面更新 7.5.0 之後,透過 Messaging API 在 Group 裡,總算可以取得發言人的 User Id。

我一直很好奇,在這之前 Bot 在 Group 裡誰說話都分不清楚的情形下,能發展出什麼應用,因為對 Bot 來說都是同一 Group Id 在說話,那跟對單一 User 對話有什麼不同?

在 7.5.0 版本上路之後,一切都有了新的開始;不過當你加入群組之前,可能已經有 Bot 在裡面,而你在不知情的情形下,加入了有 Bot 的群組裡,而這個 Bot 可以取得你的 User Id,這對於注重隱私的我們來說,這可是大忌,所以眼尖的各位一定發現了,Line 會自動跳出網頁,要求你同意將帳號資訊分享給 Bot,如果你不同意,Line 就會一直跳針似的,在你每次與 Bot 相遇的時候,一直問你一直問你。




好啦!其實我沒有不同意,但是 Line 就是一直跳出來問我,按了同意也還是再問!開了幾十個網頁都在問同不同意,煩死了。

花了點時間了解一下原因,原來是因為預設瀏覽器是 Firefox 的關係,有在使用 Firefox 的各位,一定有發現,當你在其他 app 點選開啟網頁的時候,Firefox 會開在後台 (background),不會帶到前景 (foreground),再按一次網頁連結,才會把 Firefox 叫出來。 就是因為這個原因,導致 Line 同意頁面的功能失效。

怎麼辦呢?請到應用程式裡,把預設瀏覽器改成其他瀏覽器吧!填完同意書再改回預設瀏覽器吧!我還以為是 Line 出包了,大家的同意書都是寫假的。

給跟我有一樣情形的朋友,參考參考。

Line Messaging API: Obtaining user consent

Python Stack & Queue?

有了先前一些小專案的練習,現在回頭看書看到 Iterable、Iterator 的章節,想著這不就是Stack & Queue 嗎?  趁還熱騰騰的,把它寫下來吧。

>>> #python stack
...
>>> a = []
>>> a.append(1)
>>> a.append(2)
>>> a.append(3)
>>> a.pop()
3
>>> a.pop()
2
>>> a.pop()
1
>>>
>>> #python queue
...
>>> a = []
>>> a.append(1)
>>> a.append(2)
>>> a.append(3)
>>> b = iter(a)
>>> for c in b:
...   print(c)
...
1
2
3
>>>#python queue
>>>#好啦. 當然也可以這樣做
>>> a = []
>>> a.append(1)
>>> a.append(2)
>>> a.append(3)
>>> a.reverse()
>>> a.pop()
1
>>> a.pop()
2
>>> a.pop()
3

[記事] VMware Workstation 12.5.5 Player Port Forward

筆記一下,現在的版本是 VMware Workstation 12 Player Version 12.5.5。
之前用 VMware Player Version 6.0.4 的時候,如果要做 port forward,
第一步要修改設定檔 (C:\ProgramData\VMware\vmnetnat.conf),
第二步要重啟 VMware NAT Service。
VMWare Workstation 12 Player 這設定檔還在,可是怎麼設怎麼重啟服務都沒有用。
好不容易找到的方法,一定要記下來。

參考: Download vmnetcfg.exe & vmnetcfglib.dll for VMware Player

連結裡面 Version 12.1 vmnetcfg.exe 經過實驗是可以使用的。

(稍微備份連結 For VMware Workstation Player 12.1.0: Download)

將下載的 vmnetcfg.exe 放到電腦裡的 VMware 安裝路徑下執行,就可以設定 port forward。

migrate line bot webhook from python2 to python3

總算把原本用 python2 寫的 line bot 改成 python3 了。

有鑑於 python3 的成熟度越來越高,加上許多 library support;

以及目前正悄悄進行的 line bot 新功能 (先賣個關子)。

索性把整個平台轉到 python3 上,

這邊標注一下遇到那一些 python2、python3不同的地方(一小部份)


Python2.7Python3.4備註// → int/ → float; // → int
urlliburllib.quotaurllib.parse.quota
urlliburllib.urlopenurllib.request.urlopen
urlliburllib.urlencodeurllib.parse.urlencode
syssys.maxintsys.maxsizeThe sys.maxint constant was removed, since there is no longer a limit to the value of integers. However, sys.maxsize can be used as an integer larger than any practical list or string index. It conforms to the implementation’s “natural” integer size and is typically the same as sys.maxint in previous releases on the same platform (assuming the same build options).

https://docs.python.org/3.1/whatsnew/3.0.html#integersrangexrangerangepython2 xrange = python3 range,python2 range is deprecated。如果一定要有 python2 range list的結果,可在 python3 用這個方法 list(range(3))printprint xxxxprint(xxxx)
unicode自行 encode, decode視 os 環境locale; export LC_ALL=…