Showing posts with label 食:科技. Show all posts
Showing posts with label 食:科技. Show all posts

Friday, March 26, 2021

MariaDB

 MariaDB

2021/03/22

-----


https://pixabay.com/zh/photos/church-window-window-church-2217785/

-----

References

-----

◎ 英文

-----

MariaDB Foundation - MariaDB.org

https://mariadb.org/

-----

◎ 繁中

-----

MariaDB - 維基百科,自由的百科全書

https://zh.wikipedia.org/wiki/MariaDB


MariaDB 資料庫是什麼?它跟MySQL有什麼不同?

https://progressbar.tw/posts/273

-----

從 Colab 到 Kaggle(目錄)

https://hemingwang.blogspot.com/2021/03/colab_12.html

-----

PyQt

 PyQt

2021/03/22

-----


https://pixabay.com/zh/photos/pink-flowers-pink-flowers-5585152/

-----

References

-----

◎ 英文

-----

PyQt/Tutorials - Python Wiki

https://wiki.python.org/moin/PyQt/Tutorials

-----

◎ 繁中

-----

PyQt - 維基百科,自由的百科全書

https://zh.wikipedia.org/wiki/PyQt


PyQt 入門,用 Python 寫第一支 GUI - zhung

https://zhung.com.tw/article/pyqt%E5%85%A5%E9%96%80%E7%94%A8python%E5%AF%AB%E7%AC%AC%E4%B8%80%E6%94%AFgui/


Python GUI教程(十四):在PyQt5中使用数据库 - 州的先生

https://zmister.com/archives/354.html

-----

從 Colab 到 Kaggle(目錄)

https://hemingwang.blogspot.com/2021/03/colab_12.html

-----

Thursday, May 02, 2019

Math(一):Space

Math(一):Space

2019/04/22

前言:

本文簡單介紹數學上一些常見的空間,後續會有詳細的展開(希望)。

-----


Fig. Space(圖片來源)。

-----

Summary:

集合與作用在集合上的數學結構,叫做空間 [1]-[6]。藉由線性組合、距離、長度、角度、完備等概念,我們可以把一個抽象的多維實數集合定義成歐氏空間 [4]。微積分與幾何最常討論三維(含以下)歐氏空間。高微與線代則討論三維以上的多維歐氏空間。泛函分析主要討論希爾伯特與巴拿赫這兩個函數空間。高微一開始則討論賦距空間。微分幾何作為拓撲的一支,則討論流型。

-----

Outline

一、Topological Space、Vector Space
二、Manifold、 Metric Space、Topological Vector Space
三、Normed Vector Space、Dual Space
四、Inner Product Space、Banach Space
五、Hilbert Space
六、Euclidean Space
七、ℝ³

-----


Fig. 1. Spaces [6]。

-----

Space = Set + Structure。

首先說一下數學上的空間。

數學上的空間,並不是我們一般概念上的空間。數學上的空間,指的是一個集合,集合搭配不同的數學運算,就形成不同的數學空間 [4]。

空間大致可以分為七層。

-----

一、Topological Space(拓撲)、Vector Space(線代)。

拓撲空間屬於分析系統,主要討論連續、收斂。向量空間屬於代數系統,主要討論運算。

向量空間:線性組合(加法與純量積的封閉性)。 

-----

二、Manifold(微分幾何)、 Metric Space(高微)、Topological Vector Space。

度量空間:度量(距離)。

常見的 metric 有 Euclidean distance、Manhattan distance 以及 Minkowski distance [1]。

拓撲跟高微的收斂不同。

由賦範向量空間推廣的局部凸空間 (Seminorm) 是 拓撲向量空間的一個重要例子。

-----

三、Normed Vector Space、Dual Space(SVM)。

賦範向量空間:範數(長度)。

賦範向量空間除了整合分析與代數這兩個數學學門之外,也可導出對偶空間這個概念。對偶空間是 Support Vector Machine 的理論基礎之一。

-----

四、Inner Product Space、Banach Space(泛函)。

內積空間:內積(角度)。
巴拿赫空間:完備性(柯西數列收斂)。

-----

五、Hilbert Space(泛函)。

希爾伯特空間:內積與完備性。

「初等微積分跟高等微積分的差別就在於「研究的微積分所在的空間維數不同」。初等微積分主要以實數線,平面,三維空間的微積分為主。高等微積分所希望研究的對象是 n >= 3 或是無窮維的向量空間。」[5]。

「希爾伯特空間是有限維歐幾里得空間的一個推廣,使之不局限於實數的情形和 .... 在所有的無窮維拓撲向量空間中,希爾伯特空間性質最好,也最接近有限維空間的 ...」[wiki]。

從 L^2 對應到的 l^2 是 R^infinity。高微也討論無窮維的實數空間 [5]。

-----

六、Euclidean Space(線代、高微)。

R^n

「歐幾里得空間 R^n 是有序數組(稱為點或向量) (x_1, ... ,x_n) 形成的集合,其中 x_i 為實數。在歐氏幾何中,譬如平面幾何與空間幾何,我們可以計算兩點之間的距離、多個向量的線性組合(向量加法與純量乘法)、向量的長度,以及兩個向量之間的夾角。數學家將這些概念予以抽象化,並用公設化方式定義出不同的數學結構,稱為空間。」[4]。

半正定

運用 Kernel Function 可以把歐氏空間的點映射到 Reproducing Kernel Hilbert Space,然後找到一個超平面,把這些點分割為兩群。

-----

七、ℝ³(微積分、幾何)。

ℝ³ 是常見的三維實數空間。

-----

另外有 Function Space(泛函)。Dual Space、Banach Space 的 L^p Space,Hilbert Space 的 L^2 Space,都是 Function Space 的例子。

另外有 Measure Space(測度學)、Sample Space(機率)、Probability Space(機率)[6]。

-----

結論:

「理解不能總停留在入門階段,當你熟悉向量空間的時候,就要在向量空間的基礎上思考問題了。理解力要一個一個台階的上,這樣才能去面對更複雜的結構,更複雜的問題。例如,我們說到「張量代數」時,你理解它的「原料」或者說「起點」就應該是向量空間,而不是從最直觀的例子開始。」[2]。

-----

底下是蔡炎龍老師的補充:

「Dual Space 其實不是一般線性轉換形成的向量空間, 是線性泛函形成的向量空間。

以上的解釋都是說給不太想讓人瞭解這是什麼的時候說的 :D 在數學上來說, dual space 就是很容易打造出來、向量空間的「平行宇宙」。

有些東西在 dual space 上比較容易, 我們就在 dual space 上考慮。比如說, 一個原來空間中過原點的 hyperplane, 就會對應到 dual space 中的一個點。」

-----

References

[1] Hilbert Space – Somnath Basu Roy Chowdhury – Medium

[2] 数学中为什么要定义各种空间? - 知乎

[3] 说一说核方法(二)——数学角度简介(掉粉文) _ 机器不太会学习

[4] 歐幾里得空間的數學結構 _ 線代啟示錄 

[5] [閒聊]初微和高微的差別? – 尼斯的靈魂

[6] Space - The Star Also Rises

Wednesday, May 01, 2019

Space

Space

2019/04/22

前言:

本文主要以五張圖來說明一些常見的數學空間。

-----


Fig. 1. Spaces [8]。

-----

Summary:

-----

Outline

一、數學空間
二、分析系統
三、代數系統

-----

一、數學空間

圖一是較重要的數學空間。

-----



-----


Fig. 2a. Spaces [3]。

-----

二、分析系統

拓撲
微分幾何
高微
泛函
微積分

拓撲(連續、收斂)
賦距(距離)
賦範(長度)
內積(角度)

-----


Fig. 2b. Spaces [2]。

-----

圖2b容易混淆的地方有二:

1. R^n 到 Banach Space 的箭頭是多餘的。
2. Locally Convex Space 不等於 Topological Vector Space。

-----



Fig. 3a. Spaces [8]。

-----

三、代數系統

集合論
抽象代數
線性代數

圖3a容易混淆的地方。

1. R^n 到 Banach Space 的箭頭是多餘的。
2. Inner Product 到 Vector Space 的箭頭是多餘的。

-----


Fig. 3b. Spaces [7]。

-----

圖3b容易混淆的地方。

1. Euclidean Space 與 Hilbert Space 都是 Banach Space。
2. Euclidean Space 同時也是 Hilbert Space。
3. Linear Metric Space 在數學上成立,不過研究者較少。

-----

References

[1] Space - Encyclopedia of Mathematics
https://www.encyclopediaofmath.org/index.php/Space

[2] Space (mathematics) - Wikipedia 
https://en.wikipedia.org/wiki/Space_%28mathematics%29

[3] 空間 (数学) - Wikipedia
https://ja.wikipedia.org/wiki/%E7%A9%BA%E9%96%93_(%E6%95%B0%E5%AD%A6)

[4] 空間 (數學) - 維基百科,自由的百科全書
https://zh.m.wikipedia.org/zh-tw/%E7%A9%BA%E9%97%B4_%28%E6%95%B0%E5%AD%A6%29

-----

[5] Hilbert Space – Somnath Basu Roy Chowdhury – Medium
https://medium.com/@brcsomnath/hilbert-space-7a36e3badac2

[6] 数学中为什么要定义各种空间? - 知乎
https://www.zhihu.com/question/37235890  

[7] 说一说核方法(二)——数学角度简介(掉粉文) _ 机器不太会学习
http://sakigami-yang.me/2017/08/13/about-kernel-02/ 

[8] 歐幾里得空間的數學結構 _ 線代啟示錄
https://ccjou.wordpress.com/2015/09/04/%E6%AD%90%E5%B9%BE%E9%87%8C%E5%BE%97%E7%A9%BA%E9%96%93%E7%9A%84%E6%95%B8%E5%AD%B8%E7%B5%90%E6%A7%8B/ 

-----

[9] Math(三):Space
http://hemingwang.blogspot.com/2019/04/mathspace.html

Wednesday, March 19, 2008

科技:淺談8051



8051是常見的MCU,它有4K ROM on-chip Code Memory、128bytes on-chip Data Memory、兩個Timer。2系列則是Memory double、Timer+1,3系列無 on-chip Code Memory,7系列則以EPROM取代ROM。其他還包含四個IO port、一個Serial port、兩個外部中斷等等。



一般每個指令需要二到三個machine cycle不等,每個machine cycle費時12個clock,因此如果接上12Mhz的震盪器,則也1Mips的運算量。1T或4T,代表可在1個clock或4個clock完成一個machine cycle。

40根pin,crystal用掉兩根接腳,電源與接地兩根。四個8pin IO port 32根,還有四根是PSEN(low enable)、ALE、EA(low enable)、RST。P0可作為外接memory的8 bit data pin,P0+P2則是16bit的address pin,因此可接上64KBytes的Memory。P1一般用途,P3則有中斷、計數器、Serial資料收送與外部Data Memory的讀寫控制。

PSEN(low enable): 接到EPROM的OE(Output enable)。
ALE: port 0從address切到data mode時,用來latch記憶體的位址。
EA(low enable): 切換內外部的code memory。
RST: Reset。



128bytes的on-chip Data memory,首先是四個Register Bank,再來是128bits的bit addressable locations,以上到127則是一般用途。128到255則是SFR(Special function register)。在8032裡128到255的memory以indirect mode讀寫,這是data與idata不同之處,idata慢一點。

Addressing Modes
Register
Direct
Indirect
Immediate
Relative
Absolute
Long
Indexed

其中記憶體模式可以是SM(小型編譯模式Small,資料預設放入DATA區),CP(緊湊型編譯模式Compact,資料預設放入PDATA區)或LA(大型編譯模式Large,資料預設放入XDATA區),通常在變數不多的情形,用SM可增進程式效率(別忘了DATA區的存取速度最快),當然大一點的程式就要用LA了。pdata: paged external data memory allowing access 256 bytes at a time through port 0

參考資料:
The 8051 Microcontroller / I. Scott Mackenzie / Prentice Hall

科技:淺談FAT

FAT,全名是File Allocation Table,也就是檔案配置表。提到FAT,免不了扯到DOS,Disc Operating System,是的,早期的IBM PC用的是微軟的作業系統,DOS,就是用來管理磁碟的。事過境遷,3 1/2"的Floppy disc在許多準系統上已經被淘汰掉,硬碟目前也多不再使用FAT來管理檔案,不過,在隨身碟或記憶卡依然可見到FAT的身影。FAT,概念上很簡單,只要有人講過一次就會明瞭,並沒有什麼神奇的地方。

磁碟物理上以磁柱Cylinder、磁軌Track、磁區Sector的方式組成,但是MS_DOS是以LBA,Logical Block Address,也就是0, 1, 2 ...等連續號碼來指定Sector。第0 Track所有的Sector讀完後會繼續讀下一面第0 Track的Sector,如此可以減少讀寫頭的移動。

一般一個Sector為512Bytes,幾個Sector合為一個Cluster,檔案存取以Cluster為一單位。雖然會浪費掉一些空間,但是對大量資料的配置比較有利,此外Cluster由連續磁區組成,資料不易散置各處,也可減少讀寫頭的移動。或許你會認為把磁區的容量加大就可解決問題,但是磁區大小是磁片規劃的基本,以Cluster方式可保有彈性與相容性。

磁片的基本單元,如BOOT磁區、FAT、根目錄等是以磁區為單位配置,這幾個磁區後面存放檔案或子目錄(也視為檔案),以Cluster配置。

1. BOOT磁區與BPB(BIOS Parameter Block)
磁片第0軌一開始是BOOT磁區,放置BOOT程式開機時由ROM BIOS讀入MS_DOS其他部分,BOOT程式前的BPB放置的資訊包含每一磁區的Byte數、每一Cluster的磁區數、FAT之前的磁區數、FAT之個數、根目錄的容量、邏輯磁區的總數與FAT所佔的磁區數等等。

2. FAT
FAT為磁片的Cluster配置表表格上劃分為欄,FAT16每欄佔16位元,FAT32每欄佔32位元。一個FAT的欄對應到一個Cluster,若此欄的值為0表示未使用,否則是使用中。FAT欄的真正用途是:用來指出下一個Cluster之所在。譬如第004號FAT欄的值是005,則表示資料放在第004個Cluster,而後續的部分放在第005個Cluster,如果第005號FAT欄的值是FFFFH(@FAT16),則表示結束,否則繼續搜尋下去。由於FAT保留前兩欄,因此Cluster的配置由No.2開始。

3. 目錄與FDB(File Description Block)
FDB存放有檔名、日期、檔案長度等,每個FDB是32位元,其中的指位器一欄則指向第一個存放檔案的Cluster。



瞭解了FAT的原理,則可以配置Cluster給檔案使用,至於刪除檔案,只要把檔名第一個字元改成@(E5H),檔案就看不見了,要救回也方便。另外快速格式化則清理根目錄與清空FAT即可。

延伸閱讀:
FAT: General Overview of On-Disk Format

參考資料:
IBM PC MS_DOS 技術手冊(二)徹底研究篇 / 施威銘 / 波前

科技:淺談USB



早期用過PC的人通常會碰到中斷設定衝突的問題。中斷在PC的應用上採串接兩顆8259A PIC(Programmable Interrupt Controller)而成,Master上有幾個固定裝置,譬如IRQ1是Keyboard,IRQ4是COM1、IRQ3是COM2、IRQ7是LPT1、IRQ5是LPT2、IRQ6是Floppy Controller等等。磁帶因為後來少使用,因此IRQ2又接到另一顆Slave上用來擴充,常見的硬碟/光碟機即使用IRQ14。

一開機如果進入BIOS設定,可以調整哪些周邊要使用哪些中斷,設定不對有時會造成無法使用或當機。由於周邊裝置種類越來越多,基於使用的方便與速度的考量,由微軟主推USB作為新一代的傳輸介面。USB最大的特點,我想是熱拔插/隨插即用,其次是支援127個裝置,撇開mini USB不談,每個裝置的接頭都是一樣的。

USB主要有四種傳輸型態,分別是Interrupt、Bulk、Isochronous與Control。Interrupt譬如Keyboard/Mouse,著重在資料的正確性。Bulk則是應用在Printer、Scanner或是Mass Storage上,也是著重在資料的正確性。另外Isochonous譬如Speaker、Video等影音資料則注重即時性,對資料的正確與否比較不考慮。最後則是系統使用的Control Transfer,資料量雖不大,但正確性與即時性都很重要。

為什麼可以熱拔插/隨插即用?事實上USB把PC與周邊的Handshaking大部分的運算量都放在PC的Controller上,以高速Polling(每秒1000次)的方式一直下Request,不管是送、收資料。當裝置一接上PC,Host會下幾個Command,在此忽略有關Hub的,分別是:

Get_Device_Descriptor
Set_Address
Get_Device_Descriptor
Get_Configuration_Descriptor
Set_Configuration

以文字敘述,就是電腦會先問周邊,你是什麼樣的裝置?譬如Keyboard、Mouse、Printer等等,然後電腦會給個編號,然後電腦再問你是什麼樣的裝置?周邊這次會回答我是第幾號什麼裝置,電腦確定後會再問你要用什麼設定?周邊回答完電腦重新設定。到此完成裝置列舉,接下來電腦會依需求存取資料譬如硬碟/光碟機或是WebCam/Keyboard/Mouse等等。以上的過程叫做Enumenation(裝置列舉),至於這些Descriptors裡面放些什麼東西,可以看這裡



這邊講一下周邊的硬體架構,一個獨立的USB SIE,上面會有Memory,又稱為Endpoint供存放資料,一般以0、1、2來說,Endpoint 0是Tx Rx雙向,用來收發Command,Endpoint 1是Tx,用來傳送資料,Endpoint 2是Rx,用來收取資料。資料會透過SIE(Serial Interface Engine)傳到Hub上,通常是Root Hub,也就是PC。有命令或資料進來時,則透過Interrupt通知周邊的CPU,CPU這時進入ISR(Interrupt Service Routine),前述Enumaration的Command則在此Parscing,以解讀/準備相關資訊。通常SIE會整合到MCU上,這時的外部中斷則變成內部中斷了。

以Keyboard/Mouse為例,由於Host Polling的速度遠大於人手指按鍵盤的速度,因此Keyboard/Mouse的CPU在收到資料時會放到Tx Endpoint上,Hub在Polling時會自動把資料收去。就其他Bulk或Isochonous的裝置而言,應用上應該是類似。

延伸閱讀:
usb-in-a-nutshell.pdf

參考資料:
The 80x86 Family / John Uffenbeck / Prentice Hall
USB Design by Example / John Hyde / Wiley

Tuesday, December 25, 2007

科技:USB Descriptor Hierarchy

一:是誰?(Device descriptor):包括屬於哪一個 Class (這會決定 PC端要不要額外從客戶提供的安裝驅動程式?)PID(Product ID) and VID(Vendor ID) 等,還有一個對下一層的描述:Number of Configuration。因為一個裝置可能有多種Configurations ,譬如一個人機介面(HID)包括 了滑鼠與鍵盤。一般多種Configurations 在PC端要安裝的是 Composite Driver !

二:在上層描述了Configuartion 之後,當然就是要解釋Configuration, 這包括了:裝置屬性:耗多少電?是Self-Power 或 Bus Power ?這項描述簡單的範例就是:一樣是碟機,有光碟機,硬碟機或是可移動磁碟機等。最後又是一個對下層的描述:Number of Interface 。

三:在上層描述了Interface 之後,當然就是要解釋Interface,這包括了:Interface class 及 interface protocol 等,最後又是一個對下層的描述:Number of Endpoint 。例子:一樣是MSDC 中您可能用BOT(Bulk Ony Transfer)或CBI(Control/Bulk/Interrupt)方式傳啊!其實描述到這裡,整個USB裝置就浮現在眼前了。

四:在上層描述了Endpoint 之後,當然就是要解釋Endpoint, 這包括了:Endpoint 數量與傳輸方向,每一個Endpoint 只能管一個上傳或下傳。及傳輸種類:Control or Bulk or Isochronous or Interrupt!既然叫 Endpoint,就是說它已經也是裝置描述的最後一項了。

--->USB Descriptors:
------>Specification Release
------>Class information
------>Device Protocol
------>Max Packet Size for EP0
------>VID/PID
------>Number of Configurations:
----------->Device Attributes
----------->Maximum Power
----------->Number of Interfaces:
-------------->Interface Class
-------------->Interface Protocol
-------------->Number of Endpoints:
------------------>Address of Endpoint
------------------>Direction of Endpoint
------------------>Attribute of Endpoint
------------------>Maximum Packet size

(資料來源)