20160113_jeffrey - silenceuncrio/diary GitHub Wiki
- 0955 - SQLite - C tutorial
- 1310 - IoT Platform - Thing Module - Event Handler
- 1430 - IoT Platform - FastCGI - Event Handler
- 1740 - IoT Platform - Architecture V2.0
last_row_id.c
#include <sqlite3.h>
#include <stdio.h>
int main(void) {
sqlite3 *db;
char *err_msg = 0;
int rc = sqlite3_open(":memory:", &db);
if (rc != SQLITE_OK) {
fprintf(stderr, "Cannot open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
}
char *sql = "CREATE TABLE Friends(Id INTEGER PRIMARY KEY, Name TEXT);"
"INSERT INTO Friends(Name) VALUES ('Tom');"
"INSERT INTO Friends(Name) VALUES ('Rebecca');"
"INSERT INTO Friends(Name) VALUES ('Jim');"
"INSERT INTO Friends(Name) VALUES ('Roger');"
"INSERT INTO Friends(Name) VALUES ('Robert');";
rc = sqlite3_exec(db, sql, 0, 0, &err_msg);
if (rc != SQLITE_OK ) {
fprintf(stderr, "Failed to create table\n");
fprintf(stderr, "SQL error: %s\n", err_msg);
sqlite3_free(err_msg);
} else {
fprintf(stdout, "Table Friends created successfully\n");
}
int last_id = sqlite3_last_insert_rowid(db);
printf("The last Id of the inserted row is %d\n", last_id);
sqlite3_close(db);
return 0;
}
更新資料庫的前提是要建立資料庫
先緩一緩
這裡得回到 FastCGI
回顧所需的環境
user nobody nogroup;
worker_processes 1;
events {
worker_connections 1024;
}
http {
server {
listen 8080;
server_name localhost;
location / {
fastcgi_pass 127.0.0.1:8000;
include fastcgi_params;
}
}
}
/etc/init.s/nginx start
nginx 有兩個 process
root@JoySince:/www/cgi-bin# ps
PID USER VSZ STAT COMMAND
1 root 1388 S /sbin/procd
....
1312 root 3408 S nginx: master process /usr/sbin/nginx
1313 nobody 3616 S nginx: worker process
1320 root 1360 R ps
root@JoySince:/www/cgi-bin#
#include <stdio.h>
#include <json-c/json.h>
#include "fcgiapp.h"
json_object *obj;
int main () {
FCGX_Stream *in, *out, *err;
FCGX_ParamArray envp;
while (FCGX_Accept(&in, &out, &err, &envp) >= 0) {
FCGX_FPrintF(out, "Content-type: application/json\r\n\r\n");
obj = json_object_new_object();
json_object_object_add(obj, "ok", json_object_new_boolean(TRUE));
FCGX_FPrintF(out, "%s", json_object_to_json_string(obj));
json_object_put(obj);
}
return 0;
}
spawn-fcgi -p 8000 -n ./fcgi_test
覺得要畫一下架構否則之後自己很容易漏掉一些技術環節
畫完突然覺得我這次設計的 IoT 引擎根本就圍繞著 database 在動嘛
圍繞著 database 再畫一次 IoT Platform Architecture