2016年2月26日 星期五

[python]numpy array 的 reshape 練習

這裡收集 reshape 的練習。有時真的很常忘記。
import numpy as np
t1 = np.ndarray((10, 3,3), dtype=np.float32)
t2 = np.ndarray((10, 3 * 3), dtype=np.float32)

q = 0
for i in t1:
    t2[q]=i.reshape(9)
    q +=1
t3 = t1.reshape(10,-1)
t1
array([[[ 0., 0., 0.],
        [ 0.,  0.,  0.],
        [ 0.,  0.,  0.]],

       [[ 0.,  0.,  0.],
        [ 0.,  0.,  0.],
        [ 0.,  0.,  0.]],

       [[ 0.,  0.,  0.],
        [ 0.,  0.,  0.],
        [ 0.,  0.,  0.]],

       [[ 0.,  0.,  0.],
        [ 0.,  0.,  0.],
        [ 0.,  0.,  0.]],

       [[ 0.,  0.,  0.],
        [ 0.,  0.,  0.],
        [ 0.,  0.,  0.]],

       [[ 0.,  0.,  0.],
        [ 0.,  0.,  0.],
        [ 0.,  0.,  0.]],

       [[ 0.,  0.,  0.],
        [ 0.,  0.,  0.],
        [ 0.,  0.,  0.]],

       [[ 0.,  0.,  0.],
        [ 0.,  0.,  0.],
        [ 0.,  0.,  0.]],

       [[ 0.,  0.,  0.],
        [ 0.,  0.,  0.],
        [ 0.,  0.,  0.]],

       [[ 0.,  0.,  0.],
        [ 0.,  0.,  0.],
        [ 0.,  0.,  0.]]], dtype=float32)
t2
array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]], dtype=float32)
t3
 array([[ 0., 0., 0., 0., 0., 0., 0., 0., 0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]], dtype=float32)

2016年2月13日 星期六

[opensource]作業系統革命觀後筆記

#作業系統革命觀後筆記

2016.02.13


  1. 什麼是作業系統 -2:29
  2. Linus 說「他們把 Richard Stallman 當做哲學家,把我當成工程師。」(這兩個似乎是互看不爽) -3:47
  3. 開始實際由 FSF(GNU) 開始,但現在大家會想到 linux -4:02
  4. 自由的消失,因為密碼的出現。 -5:12
  5. open source 的點子其實電腦一開始就有。直到後來才變得不能看原始碼,也許 M$ 要負一些責任 -6:41
  6. 比爾蓋茲對於軟體所有權的公開信 -7:33
  7. 80 年代的作業系統授權讓 Stallman 很難過,然後成立自由軟體基金會 -9:25
  8. 1984 年 1 月,Stallman 開始 GNU 作業系統開發 -11:35
  9. GNU 的關鍵點就在於 free,指的是 freedom 而不是 free beer。是說擁有修改的權利。 -15:12
  10. 自由軟體還是有著作權的,只是作者給你自由散佈複製修改的權力,但是使用者也要一樣地對待別人 -17:01
  11. 1990年,整個 GNU 系統的核心,現在才要開始。而此時,Linus 的核心出現補上了缺的一塊 -23:12
  12. GNU/Linux system? -30:23
  13. Apache 是 linux 的殺手級應用 -32:05
  14. 作業系統套件散佈商的出現 -34:58
  15. 兩種軟體開發的模式 -38:58
  16. Netscape 是下一棒的抵抗專利軟體的軟體 -40:04
  17. "Netscape Source Code as Netscape Product"「Nestscape 的原始碼也是產品」-43:15
  18. 從 free software 到 open source -46:01
  19. free software 名稱是個問題,人們第一個想到的是免費而不是自由 -46:49
  20. 用 open source 取代 free software 的起源 -47:38
  21. open source 與 free software 的不同。理查史托曼 -48:10
  22. debian 的 open source 定義 -50:32
    1. 自由散佈
    2. 原始碼
    3. 可延伸 寫作(Derived Works Permitted)
    4. Integrity of the Author's Source Code (作者完整的原始碼)
    5. No Discrimination Against Persons or Groups (對任何個人或團體沒有歧視)
    6. No Discrimination Against Fields of Endeavor (不歧視任何領域)
    7. Distribution of License (散佈授權證)
    8. License Must Not be Specific to a Product (授權證不受產品限制)
    9. License Must Not Contaminate Other Software (授權證不污染其他軟體)
  23. database 軟體跟進 -53:28
  24. 主機哥很正常啊?你看滿滿都是。 -57:06
  25. windows 退貨日 -59:22
  26. 我真的很愛看兩個針鋒相對 -1:12:23
  27. 泡沫 -1:20:45
  28. 翻譯 WiDE (wide@edirect168.com) 2004.09.07 修訂/jserv 2015.03.11

2016年2月4日 星期四

[RPI]rpi-raspbian-設定網路增強版

因為我換個 ap 之後就連不上,研究之後發現除了之前提到的招數之外,還有一個很重要的,就是因為 wpa/wpa2 的關係,在 /etc/network/interface 裡無法處理,必須要用 wpa_supplicant 來處理(wep 可以直接在 interface 裡處理),所以,設定的方式就得要改變。

要注意的重點是
(1) wpa2 不支援 iface wlan0 inet static,要指定 ip 就一定要改成 iface wlan0 inet manual。(這是說 /etc/network/interface)
(2) 如果你的密碼不是 hex,就要在把密碼用雙引號夾起來。(這是指 /etc/wpa_supplicant/wpa_supplicant.conf)
(3) 要使用 wpa2,/etc/wpa_supplicant/wpa_supplicant.conf 裡,proto=RSN 與 key_mgmt=WPA-PSK 要設定。
(4) scan_ssid=1 照 參考[2] 的說法很好用。會自動連到可用的 ap。但是從 參考[5]、參考[6] 來看好像又是另外一回事。讓我日後再確認吧。

參考:
[1] https://www.raspberrypi.com.tw/2152/setting-up-wifi-with-the-command-line/

[2] http://www.algissalys.com/how-to/how-to-raspberry-pi-multiple-wifi-setup-through-the-command-line

[3] http://stackoverflow.com/questions/14119446/iwconfig-connect-network-via-wifi-on-terminal

[4] http://weworkweplay.com/play/automatically-connect-a-raspberry-pi-to-a-wifi-network/

[5] http://lynn770707.pixnet.net/blog/post/334312943-%5Blinux%5D-wifi-wpa_supplicant%E8%A8%AD%E5%AE%9A%E6%AA%94

[6] https://www.daemon-systems.org/man/wpa_supplicant.conf.5.html

2016年1月31日 星期日

[ipython] jupyter 數學公式的寫法(還有顯示 $ 錢字號 dollar sign)

目前查到的有兩種方法。一種是用 ipython.display 的功能,一個是使用 mathjax。

使用 ipython.display
ipython.display 提供非常豐富的顯示方式,這種方式是靠 code cell 執行程式處理。
像是:
來源[1]

來源[1]





使用 mathjax
基本上 jupyter 已經是使用 mathjax 處理數學公式。而且它整合在 markdown cell 裡。
所以只要把建立一個 markdown cell,把 latex 的表示的前後加上 $ 這個符號,像這樣:
$c = \sqrt{a^2 + b^2}$

再按下 cell 的執行按鈕,就會畫出公式了。
來源[2]

因為錢字號現在被視為語言關鍵字,在文章中要顯示 $ 的方法,可以看以下文章:http://codebeta.blogspot.tw/2016/01/blogspot-blogger-latex.html


參考:
[1]http://nbviewer.jupyter.org/github/ipython/ipython/blob/1.x/examples/notebooks/Part%205%20-%20Rich%20Display%20System.ipynb

[2]http://jupyter-notebook.readthedocs.org/en/latest/notebook.html#markdown-cells

[mathjax]在 blogspot / blogger 網誌裡顯示 latex

要在網頁上顯示公式,現在查到的主流方法是用 latex 語法,函式庫是用 Mathjax。總之時代進步了,就這個樣子。

查到的方式是,在網頁範本裡的 head 區加入定義好的 script。有人已經好心處理好了。

blogspot 的範本是在這裡開啟:



按下去之後就是:



在 </head> 之上插入以下的程式碼:

<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js">
MathJax.Hub.Config({
 extensions: ["tex2jax.js","TeX/AMSmath.js","TeX/AMSsymbols.js"],
 jax: ["input/TeX", "output/HTML-CSS"],
 tex2jax: {
     inlineMath: [ ['$','$'], ["\\(","\\)"] ],
     displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
 },
 "HTML-CSS": { availableFonts: ["TeX"] }
});
</script> 
存檔,然後寫個網誌來試試,像這樣:$$ \sum_a^b x^2 $$ $$ \sum_a^b x^2 $$

現在要顯示錢字號,就要包在 <span class="tex2jax_ignore">$</span> 裡面。有沒有更方便的方式,我暫時不知道。

參考:
http://tex.stackexchange.com/questions/13865/how-to-use-latex-on-blogspot

https://blogueun.wordpress.com/2014/01/04/escaping-in-mathjax/

[ipython] ipython notebook / jupyter 介紹--為什麼我要用

其實我的目的是,利用 ipython notebook / jupyter 當做多功能編輯器,取代 notepad++ 或是 word。

在安裝 anaconda 之後,不論在命令列是執行 ipython notebook,或是執行 jupyter notebook,都會成出現同一個畫面:
已經是 jupyter 了。所以原來的 ipython notebook 畫面,我現在用不出來。
圖片來自 http://ipython.org/notebook.html

但是,由以下的 demo 還是可以體會到 ipython notebook / jupyter notebook的魅力。


與 jupyter notebook 的畫面比較,似乎沒有太大差別。

要提一下的是,ipython 是一件事,ipython notebook 是另外一件事。ipython 是提升 python 的互動性的介面,所以叫 ipython (interactive python)。而 ipython notebook 則是一個 web app 讓使用 python介紹、呈現資料、計算更為活潑即時,而它的確建立在 ipython 之上。

jupyter 與 jupyter notebook 也差不多是兩件事,jupyter 有他偉大的計劃, 希望能讓其他的語言也能 ipython notebook 達到的效果。而 jupyter notebook 則是目前執行出這個 web app 的指令。

而目前,我剛好就只需要用到 ipython notebook 的功能,而現在它屬於 jupyter notebook 其中一個項目之中。為什麼還要換 ipython notebook 呢?因為網路上用 ipython notebook 當關鍵字搜尋到的非官方資源還是佔多數,若是要自己多學就還是要知道 ipython notebook 與 jupyter notebook 的關係。
例如:在 google 輸入 jupyter notebook latex,出來第一個還是:

連 google 都知道要用 ipython notebook 會是比較對的結果,當我們知道它們的關係,就不會直接跳過它,而會點進去看。

如果說想深一點了解我想做什麼的話,我用一個網頁來代表:http://hplgit.github.io/doconce/doc/pub/slides/scientific_writing-1.html
雖然文章主打不是 ipython notebook。

參考:
http://ipython.org/notebook.html

2016年1月29日 星期五

[ipython] anaconda 一個方便的 ipython notebook 安裝

有許多網誌教導,「安裝 ipython 會遇到許多麻煩,所以新手最簡單的就是下載 anaconda 來裝,一切沒煩惱。接下來我們來下載……。」於是,我就來試毒,看看有什麼麻煩,先從安裝 anaconda 開始。

首先從 https://www.continuum.io/downloads 選擇安裝器。我選的是紅框那個 windows python 2.7 32bit


下載完之後,點兩下就執行,一開始都按下一步,但很快遇到第一個選項要決定:

如果選了 Just Me,安裝目錄就會被選在使用者的家底下,例如 C:\User|xxx\Anaconda2。這個樣子我不太喜歡。所以我選了第二個,因為我希望它被放在 C 槽根目錄底下跟 C:\python27 這樣。

再來一些 Yes 與下一步之後,又遇到一個要決定的事情:

如果選擇上面的選項,在 Anaconda 環境上,就是靠 PATH 的設定來決定誰被先選到。如果不選,那就是只能用 anaconda 提供的命令列視窗使用 anaconda 的環境。

如果選擇下面的選項,那系統要求 python 的時候,就會去找 anaconda 提供的 python 環境。如果有混搭如他所說的 IDE,就要選擇這個會比較方便。

因為我本身已經安了一堆東西在 C:\Python27 底下,也習慣了,所以第二個選項就不勾了,只勾第一個選項。

按下 Install 之後,就是等待,然後就安裝完畢了。

因為我是 win10,我按下視窗鍵用眼睛要找 "Anaconda (32-bit)",找不到…。


看不到不代表沒有,反正東西就在那裡了。在命令列直接打 ipython。我原本沒裝的 ipython,現在有反應了。



我為什麼要用 anaconda 呢?是為了要裝 IPython Notebook,後來進級叫做 Jupyter。(官方說法是 ipython notebook 移到 jupyter。)改篇再說。

參考:
https://www.continuum.io/why-anaconda