用 Python 刻 GUI 的 guietta

Hacker News Daily 翻到的奇怪工具 guietta,可以在 Python 下用奇怪的方法刻 GUI,範例就很好解釋了調性:

from guietta import _, Gui, Quit

gui = Gui(
    
  [  'Enter numbers:', '__a__'  , '+' , '__b__',  ['Calculate'] ],
  [  'Result:  -->'  , 'result' ,  _  ,    _   ,       _        ],
  [  _               ,    _     ,  _  ,    _   ,      Quit      ]
)

with gui.Calculate:
    gui.result = float(gui.a) + float(gui.b)
    
gui.run()

然後 Ubuntu 下的輸出會是:

Hacker News 的討論串「Guietta – Python module to create simple GUIs (github.com)」這邊有人也介紹了其他 Python 下刻 GUI 的方式,翻了一下也還不少有趣的東西。

guietta 看起來拿來刻一些簡單的東西應該還算堪用,尤其是討論裡面有提到在教學授課時可以簡化不少 interface 的問題。

模擬 Windows XP 風格的 CSS

Hacker News 首頁上翻到的,先前提到的「模擬 Windows 98 風格的 CSS」是對 Windows 98 風格設計出的 CSS,接下來就有人也生出經典的 Windows XP 版本出來:「XP.css」。

XP.css started as a fork of 98.css (a fun project started by Jordan Scales) and is now trying to boilerplate the GUI to be able to theme it easily.

瀏覽器裡控制 GDB...

還是在 Twitter 上看到的奇怪玩具,專案在「cs01/gdbgui」,是個可以在瀏覽器裡控制 GDB 的軟體:

Browser-based frontend to gdb (gnu debugger). Add breakpoints, view the stack, visualize data structures, and more in C, C++, Go, Rust, and Fortran. Run gdbgui from the terminal and a new tab will open in your browser.

截圖就看得出來大致的界面:

不過我還是偏好用 terminal 啦,推薦「CppCon 2015: Greg Law " Give me 15 minutes & I'll change your view of GDB"」這個演講,裡面講了不少在 terminal 下使用 GDB 的技巧:

透過 NN (類神經網路) 訓練好的系統,直接把圖片轉成程式碼

這個禮拜被 AlphaGo 洗臉後,又看到來搶工作的東西了:「pix2code: Generating Code from a Graphical User Interface Screenshot」。

直接把 Mockup 圖檔丟進去,然後就把 iOS 或是 HTML 程式碼生出來:

不過「刻 UI」的確是工程師最討厭的事情啦,這部份能自動化要怎麼說呢... 好像也是不錯的事情啦 @_@

在 Docker 裡面跑 GUI 程式

由於想把一些東西隔離放到 Docker 裡跑,所以找了些資料看看怎麼做。

在「Running GUI apps with Docker」這邊講了怎麼在 Docker 裡面跑 Firefox,不過在我的電腦上有狀況 (跑起來沒問題,但開網頁後 Firefox 就會 crash),也許再找時間看看吧...

不過這邊學到了把 X11 的相關資源丟進去的方式:

docker run -ti --rm \
       -e DISPLAY=$DISPLAY \
       -v /tmp/.X11-unix:/tmp/.X11-unix \
       firefox

不過畢竟是把整個 X11 資源都暴露進去了,技術上並不安全,只能跑一些大公司的程式,這些公司至少不能明目張膽的把 screenshot 一直傳回去... (還是其實都有做?@_@)

另外是 Skype,之前在「用 Docker 跑 Skype 講電話」這邊就有提過了。而另外一個是「tomparys/docker-skype-pulseaudio」。但之前發現中文字型都還是有問題,也續要看看他們的 Dockerfile 怎麼寫,然後自己再改一下,把中文的部份包進去...

然後是 Dropbox,在經過「Dropbox Responds to Mac 'Security Risk' Accusations [Updated]」事件以後,還是把 Dropbox 放進 Docker 裡面比較好... 這邊用 Googledocker dropbox 東西就不少,主要還是看 Dockerfile 來自己改。