星期日, 11月 03, 2019

解析 User agent

應該是有可以解析 User Agent 以取得瀏覽器的版本、作業系統等資訊的函式庫吧,然後就找到了 python-user-agents
安裝
pip install ua-parser user-agents
使用很簡單,把 User agent 丟進 parse 去就可以了。
from user_agents import parse

x = parse('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36')

print(str(x))
# PC / Linux / Chrome 78.0.3904

print(x.browser)
# Browser(family='Chrome', version=(78, 0, 3904), version_string='78.0.3904')

print(x.device)
# Device(family='Other', brand=None, model=None)

print(x.os)
# OperatingSystem(family='Linux', version=(), version_string='')

# 有這些方法/屬性可用:'_is_android_tablet', '_is_blackberry_touch_capable_device', 'browser', 'device', 'is_bot', 'is_email_client', 'is_mobile', 'is_pc', 'is_tablet', 'is_touch_capable', 'os', 'ua_string'

星期四, 10月 31, 2019

從 IP 取得 Country / City / 經緯度

使用的環境是 Ubuntu 16.04 + Django 2.2,先處理 geoip 資料庫。
sudo apt-get install geoipupdate
安裝完以後先填設定,編輯 /etc/GeoIP.conf ,這邊要注意 geoipupdate 版本,2.5 之前的話,AccountID 要改成 UserId,EditionIDs 要改成 ProductIds ,Ubuntu 16.04 用的是 2.5 之前的版本:
# The following AccountID and LicenseKey are required placeholders.
# For geoipupdate versions earlier than 2.5.0, use UserId here instead of AccountID.
# AccountID 0
UserId 0
LicenseKey 000000000000


# Include one or more of the following edition IDs:
# * GeoLite2-City - GeoLite 2 City
# * GeoLite2-Country - GeoLite2 Country
# For geoipupdate versions earlier than 2.5.0, use ProductIds here instead of EditionIDs.
# EditionIDs GeoLite2-City GeoLite2-Country
ProductIds GeoLite2-City GeoLite2-Country
執行 sudo -H geoipupdate,檔案會下載到 /var/lib/GeoIP
接著在 Django 環境下安裝 geoip2
pip install geoip2
然後先在 shell 裡試試看:python manage.py shell
from django.contrib.gis.geoip2 import GeoIP2
g = GeoIP2('/var/lib/GeoIP')  # 將路徑指過去
print(g.country('59.120.21.9'))
print(g.city('59.120.21.9'))
print(g.lat_lon('59.120.21.9'))
一般來說,用 city(“your_ip”) 就可以拿到足夠的資訊了
{'city': 'Taipei',
 'continent_code': 'AS',
 'continent_name': 'Asia',
 'country_code': 'TW',
 'country_name': 'Taiwan',
 'dma_code': None,
 'latitude': 25.0478,
 'longitude': 121.5318,
 'postal_code': None,
 'region': 'TPE',
 'time_zone': 'Asia/Taipei'}
參考資料

星期二, 10月 29, 2019

如何寫 Git commit message

主要是看 How to Write a Git Commit Message 這篇文章的紀錄,這篇文章是 2014 年的文,我可能有看過,印象中之前有看過介紹原則跟工具的文章。之前的印象,第一行要明確、簡單,不要太長。有細項,從第三行寫起,用 markdown 語法。
這篇一開始先講為什麼,作者不囉唆,直接要你看自己的 git log –oneline 輸出,看自己覺得 OK 不 OK。所以可讀性很重要,可以很快的看懂,那麼就可以不用費心再去看裏面改了什麼。
主要有7個原則:
  1. Separate subject from body with a blank line :第一行寫主旨,第三行開始寫內容。
  2. Limit the subject line to 50 characters :主旨不要超過 50 個字元
  3. Capitalize the subject line :主旨的第一個字元大寫
  4. Do not end the subject line with a period :主旨不要有句點
  5. Use the imperative mood in the subject line :主旨要用祈使句,就動詞+名詞
  6. Wrap the body at 72 characters :內容的每行不要超過 72 的字元
  7. Use the body to explain what and why vs. how :內容要儘可能描述做了什麼、為什麼這樣做跟如何做。

星期五, 10月 25, 2019

棄用 yaourt,改用 yay

原來 archlinux 的 yaourt 已經過時了,我參考這篇 Yaourt is Dead! Use These Alternatives for AUR in Arch Linux,換成 yay,用法跟 yaourt 差不多。最新的 AUR 替代品可以參考 Archlinux 維基:AUR_helpers ,只是官方不建議使用這些工具,還是希望大家熟悉手動建置套件的程序。
先移除 yaourt
$ sudo pacman -Rn yaourt package-query
再參考 yay 的安裝說明來安裝
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
用法跟 yaourt 差不多
# 更新套件列表並更新目前已經安裝的套件 (包含 AUR)
yay -Syu
# 安裝套件
yay -S foo
# 尋找套件
yay -Ss foo
# 取得遠端套件資訊
yay -Si foo
# 目前系統套件狀況
yay -P --stats
搞定以後,參考 yay -P –stats 的建議,移除了 aur 沒在維護的套件。最後跟 yaourt 說聲再見,謝謝 yaourt 過去幾年的照顧。

電影流水帳(2019/09/01~2019/09/30)

  • Triple Frontier (IMDB, Wikipedia),台譯:三重邊界。
  • Godzilla (IMDB, Wikipedia),台譯:哥吉拉。
  • National Parks Adventure (IMDB, Wikipedia),台譯:美國國家公園探險紀行。
  • Tag (IMDB, Wikipedia),台譯:貼背戰。

Triple Frontier

Pope 是個在哥倫比亞打擊毒梟的軍事顧問,他透過臥底得知了毒梟的一切,於是他打算找舊日的好伙伴一同去搶劫毒梟。於是他回到美國,找了舊日的伙伴,一一說服他們。然後,他們就行動了。計劃是這樣的,毒梟一家人會在星期日舉家出門去做禮拜,這時候家裡只有兩三個人看守,趁這個機會進去裏面,找到錢,接著夥同 Pope 的臥底,帶著錢逃走。到了定點,再轉搭直昇機越過安第斯山到海邊,搭船到安全的地方。
計劃趕不上變化,他們在毒梟家裡花了一點時間才找到被當作牆壁的錢,接著 Redfly 起了貪念,想把所有的錢帶走,這花了不少時間。他們帶著一堆錢離開時,恰好又遇到回來的毒梟一家人,差點就曝光了。趕到搭直昇機的地點,Pope 給了臥底們一筆錢跟假身份,要他們先離開,搭飛機到澳洲去。然後一行人帶著一堆錢搭著直昇機一路慢飛到安第斯山,可是啊,紙鈔是很重的,直昇機飛不過高聳的安第斯山,引擎負荷過重,過熱起了火,只好迫降在附近的田裡。他們跟村子裡的人起了衝突,後來用銀彈跟子彈壓制了村子裡的人,並取得了能載運錢的牲口,接著就改用步行方式要越過安第斯山。爬了一兩天以後,好不容易要越過安第斯山了,卻被攻擊,是村子裡的人!原來之前在村子發生衝突時,有些人的家屬死了,所以不放過他們。一場槍戰下來,Redfly 掛了,Pope 等人也是筋疲力盡。此時,他們決定派 Benny 先下山去找接應的船,畢竟已經晚了預定時間兩三天的時間,怕沒船接應。隔天,Benny 回來,說已經找到接應的船。但這個時候,他們面臨了抉擇,錢很重要,但好兄弟 Redfly 的屍體也很重要,經過了一番爭執,終於決定拋下大部分的錢,帶著 Redfly 屍體下山。下山當然少不了槍戰,畢竟毒梟勢力不可小覷,不過他們還是順利的帶著 Redfly 屍體跟所剩無幾的錢搭上船回去。
回去以後,Pope 找了律師,將錢平分。Ironhead 很有義氣的放棄了自己的那一份要給 Redfly,其他人見到這情況,也紛紛聲明放棄。電影的最後,就在眾人空手回去,Ironhead 給了 Pope 丟錢的座標以後結束。從這結尾看來,似乎是會有續集,再看看吧。
看完這部電影是真心覺得惋惜,如果他們能夠依照計劃只帶夠用的錢,是不是就不會遇到回來的毒梟一家人而能隱密的搶劫了呢?如果他們能夠當機立斷的在搭直昇機時決定只帶走足夠的錢,是不是就能順利越過安第斯山呢?但故事就是因為這些意外才有轉折。我是覺得整體來說還不錯啦,不能說特別好看,但也不會太難看就是。

Godzilla

衝著 Elizabeth Olsen ,就把這部電影看完了,故事、特效、選角還蠻不錯的。Elizabeth 在這部電影裡出場並不是很多,主要還是在講怪獸的事情。
Ford 的父母在日本核電廠工作,某天,怪獸突然來襲,Ford 的媽媽因此罹難。Ford 跟爸爸相依為命,可是爸爸的心一直留在核電廠那兒,他認為媽媽的死是自己的錯,也因此冷落了 Ford。Ford 長大以後,離開父親從軍去了,也在美國跟 Elle 成家,心裡還是有點責怪父親。
Ford 放假回到家,本想好好陪妻女,可是卻接到日本來的電話,父親被拘捕了。Ford 只好匆匆跟妻子告別,趕到東京去。到了東京接父親出來後,到父親的公寓,他勸父親跟他回美國,一方面可以看孫子,一方面也可以好好的生活,不要再沈浸在過去。但父親不聽,他說,核電廠那兒一定有著什麼祕密,最近開始有些活動了,我一定要進去看看。Ford 拗不過父親,只好陪著進核電廠管制區。到了管制區,兩人先回到老家,父親看到媽媽的照片,不禁淚流滿面。旋即,兩人就被軍方逮捕了。「怎麼會呢?這裡不是應該是荒廢的核電廠嗎?果然這裡有著什麼祕密,父親沒說錯!應該要相信父親的。」Ford 這樣想著。核電廠的確藏著祕密,當年造成核災的怪獸仍然藏在這裡,軍方在這裡設置據點監控怪獸,也同時進行研究。有時候就是這樣,來的好不如來的巧,這個時候怪獸甦醒了,軍方壓制不住怪獸,怪獸飛走了。接下來軍方跟 Ford 開始追查怪獸與哥吉拉的動向,哥吉拉追著怪獸,而怪獸則是飛往美國。那為什麼怪獸要飛往美國呢?原來美國也有一隻怪獸,為了繁衍後代,所以要飛過去。
美國軍方原本打算阻擋,但是怪獸破壞力驚人,根本阻擋不了。日方的芹澤博士推測,怪獸是要繁衍後代,而哥吉拉則是為了要獵殺這些怪獸,所以建議軍方引導怪獸到海上去,讓怪獸們自行解決。美國軍方在無法消滅的情況下,也只能接受芹澤博士的建議,改變策略。後來在一番兵荒馬亂之下,終於引導怪獸們到海邊去,減少了許多傷亡。而結果也如同芹澤博士所推測的,哥吉拉是要獵殺這兩隻怪獸。經過打鬥之後,哥吉拉消滅了這兩隻怪獸,可是自己也受了重傷,故事在這裡「暫時」畫下了句點。

National Parks Adventure

Robert Redford 配音的紀錄片,主要是通過 Conrad 一家人暑假拜訪每個國家公園的旅行來介紹美國的國家公園以及其歷史。然後特別提到John Muir 與羅斯福總統 (老羅斯福) 的露營對談,John Muir  影響了總統,所以後來羅斯福總統任內成立了許多國家公園,保護了許多美麗的自然環境。整部電影拍攝的非常自然又樸實,再加上 Robert Redford 的敘述,心裡會很自然的想要飛過去看看。這部紀錄片蠻值得一看的。

Tag

這是根據真人真事改編的電影,電影的最後有放上這些人的照片,這樣的情誼很讓人感動。
一群好友從小時候就開始玩鬼抓人的遊戲,被抓到的就要當鬼抓下一個,但是 Jerry 從來沒有被抓到過。很快的,這群小男孩長大了,然後有個記者不知怎麼地看到了他們的故事,就跑來採訪 Hogan。Hogan 也就開始,順藤摸瓜的去找以前的這些好友,開始邊玩起鬼抓人,然後他們決定這次一定要讓 Jerry 當鬼。找到 Jerry 時,發現他要結婚了,礙於婚禮,他們跟Jerry還有新娘約法三章,只能在非婚禮的時候玩。不過經過一番努力,他們還是沒能讓 Jerry 當鬼。最後婚禮當天,Hogan 實在是忍不住,他想,既然Jerry違背了約定,利用了妻子假流產來躲過被抓,他也決定在婚禮當天抓 Jerry。豈料,還是被 Jerry 躲過了,不過 Hogan 倒在地上,大夥趕緊送他去醫院。原來 Hogan 會想起這個頭,主要是因為他身體有了狀況,擔心明年再也玩不到了,所以才想趁這次機會讓 Jerry 當鬼。大夥就在醫院把事情談開,Jerry 說自己不想當鬼,其實是心裡有個疙瘩,覺得 Hogan 等四人感情比較好,自己比較孤立。但 Hogan 說,玩鬼抓人並不是在乎當不當鬼,而是希望你可以跟我們打成一片。Jerry 明白了大夥的苦心,終於放開心裡的堅持,跟大夥打成一片。

您或許對這些文章有興趣

Related Posts Plugin for WordPress, Blogger...