prepare語法是現今SQL主要防止SQL injection的方法(另一種是字串處理),prepare語法主要是限定SQL query語句中的變數,以防資料庫其他資料遭受破壞等。postgresSQL也有prepare語法。請見:http://www.postgresql.org/docs/9.1/static/sql-prepare.html
而libpqxx中也有prepare method。這個prepare框架一旦被定義後,它會存活於connetion物件存活期間(連線期間)。底下是範例,其中prepare_name爲使用者自定(case sensitive),之後會用到。
再來是傳遞變數進入prepare的框架。
其中傳變數方法還有其他寫法,請見:http://stackoverflow.com/questions/31833322/how-to-prepare-statements-and-bind-parameters-in-postgresql-for-c
prepare方法有時會降低效率,其他細節都在官方paper中。
Sunday, May 8, 2016
Sunday, May 1, 2016
Maker常用開發板
對於Maker來說,選擇適合的開發板可以加速make的時間。本文會依照難度特色來做分類。
入門款
Ardunio系列:
入門款
Ardunio系列:
- 基本款(Entry level):Ardunio UNO,Ardunio 101,Ardunio PRO
>>> 特色:pin腳少(少於20隻),PWM port少(不多於6隻),Analog輸入腳位少(少於6)。
>>> 適合入門玩家學習操作I/O(DigitalWrtie),PWM(AnalogWrite),ADC(analogRead)。適合小專案與空間較小之專案。
- 進階板(Enhanced feature):Ardunio MEGA,Ardunio ZERO,Ardunio DUE
>>> Ardunio MEGA腳位很多,PWM腳多達15隻,對於需要大量馬達或servo的專案來說十分適合,而且其UART多達四組,還有一組SPI和一組I2C可方便擴充。
>>> Ardunio ZERO是小型低電壓板Ardunio。
>>> Ardunio DUE 是ARM-based的Ardunio,腳位很多,同時還有兩個DAC,和USB-OTG,為MEGA板所沒有的。
- IOT板:Ardunio YUN
>>>Ardunio YUN是一塊同時擁有MCU(Ardunio)和SOC(OS為linux)的開發板,基本連網功能透過linux部份,其餘操作在Ardunio部份上,可支援wifi(IEEE 802.11b/g/n)和ethernet(IEEE 802.11b/g/n),想當然爾,當然是一塊面向物連網的開發板。
- 其他module
很多,去找吧,我把他們全都放在那了。對於入門者來說,最重要的是有library和API支援,不然自己看datasheet來刻是很困難的。
- 其他類Ardunio開發板
這裏指得是支援Ardunio語法(library)的開發板,常見的如Picdunio,linkit Smart 7688和linkit 7688 DUO系列等。
進階款
Raspberry Pi
- Pi 1,Pi 2 Pi3 , Pi zero:
基本上都是使用Broadcom的單板電腦,都是ARM以處理器為核心,當然ARM系列的優點都有(如省電),支援USB、ethernet、RCA、I2S、SD卡、相機模組。
作業系統有Raspbian(Debian系,論壇資源最多,問題易找到解答)、Arch Linux Arm(Arch linux十分輕量,而且十分先進,其套件管理佳,但難度叫高)、OpenELEC、Pidora(Fedora)等。
使用上需要有linux基礎,而其GPIO操作方式有python與C/C++的方法,其中python較簡單,而C/C++法需要閱讀datasheet才有辦法。
作業系統的優點就是易於擴充,與排程容易,缺點就是操作IO速度容易慢於MCU(但還是有辦法加速的,望向kernel)。
Banana PI
台灣自行製作,採用中國全志公司的Allwinner A20(ARM Cortex-A7),基本可視為有SATA的Raspberry PI,該有的都有,支援OpenCL。
Intel 開發板
主要有Intel Galileo和Intel Edison,基於X86,支援Windows,Mac OS X,Linux,為支援度最廣的,功能強大,有網路和USB支援,效能極高,對於運算較大之程式較能負擔(當然不能和PC和Server比啦),板主有看過運用其做Machine Learning和雲端運算操作。
其他公司開發板推出之開發板
大多數系統廠如技嘉等公司都有推出開發板供顧客使用,這些開發板官方資源通常充足,但缺乏論壇,開發上遇到問題較麻煩。
MCU(單晶片)
單晶片放在開發板區其實不好,因為你需要自己做開發板,但使用MCU可使你的開發彈性更高。其實Ardunio就是一種由單晶片衍生出的開發板,若要達到更好的程式效率與操作,可透過直接對MCU的暫存器進行操作,程式碼簡潔,但需要閱讀datasheet,所以Ardunio官方提供了一些方法來加速操作,如bitset()和bit()函式之方法。
常見的MCU廠商有:
- PIC系列的Microchip公司,產品線從8bit到32bit都有,還有dsp和一些模組晶片可使用,其toolchain有免費板且跨平台的(MPLAB X IDE , XC8 ,XC16 ,XC32)。
- AVR系列的Atmel公司(已被Microchip購併),Ardunio就是使用AVR系列的晶片。也是有免費的free toolchain,同樣也是跨平台。
- 8051系列:經典的MCU系列由Intel開發,同時由於IP過期,使得現今有許多公司生產,如Microchip、Atmel、STC等。
- 德州儀器:Msp430系列等。
- freescale(NXP):Arm Cortex_M系列。
- 還有很多.....
MCU的產品線多元容易找到適合的晶片。
SOC(system on chip)
同樣很多產品線,有MIPS架構的,有ARM-A架構的,有X86的,這部份的難度最高,通常要有很多作業系統基礎。
參考資料
libpqxx - postgresql c++ library 基本教學
- 簡介
libpqxx是postgrsql 官方所推出的函式庫,基本上包裝得很好,用起來十分簡便。
libpqxx官網:http://pqxx.org/
- linux上安裝方式
請先安裝postgresql,方便起見可安裝php,phppgadmin和apache以利測試。
link:https://wiki.archlinux.org/index.php/PostgreSQL
libray link:http://pqxx.org/download/software/libpqxx/
link:https://wiki.archlinux.org/index.php/PostgreSQL
libray link:http://pqxx.org/download/software/libpqxx/
arch linux上安裝方式,libpqxx為Extra package。<br /> link:https://www.archlinux.org/packages/extra/i686/libpqxx/
安裝完成後,於postgresql安裝目錄下。
於pg_hba.conf新增
啟動與停止postgresql,基本上使用systemd的linux distro都可用以下方式來處理
- 基本用法
這個範例使用了三種parse資料的方法,分別是使用pqxx::tuple的方式、使用內建iterator的方式與使用類似C++ STL map的key-value方式。
編譯方式:
參考資料:http://www.yiibai.com/html/postgresql/2013/080894.html
Subscribe to:
Posts (Atom)
精選文章
使用Ardunio Atmega2560 連接 nRF24L01+
使用Ardunio Atmega2560 連接 nRF24L01+ 關於library 目前主流有 https://github.com/maniacbug/RF24 與 https://github.com/TMRh20/RF24 這兩個。 其中TMRh20大大做...
-
L3G4200 gyroscope使用筆記 特性與參數 用途:量測姿態 精度:250/500/2000 dps (degree per second) 輸出資料:為angular rate(角速度) ,16bit 原始感應器電壓(僅有晶片):2.4V ~3.6V ...
-
PWM簡述 PWM為Pulse Width Modulation的縮寫,對於只有high和low的數位訊號來說,如何用high,low比率調整出類似類比訊號為PWM的用處,另外大多數馬達也透過PWM來驅動轉速,LED由於只吃固定電壓,所以常用PWM來調整亮度。 du...
-
Arduino TLC5940與伺服馬達 TLC5940介紹 TLC5940是TI的16 channel LED驅動晶片。可以支援同時16通道的PWM灰階輸出,解析度為4096階。同時有兩種模式 12 bit (4096 Steps) Grayscale PWM C...