sudo apt-get install apache2 mariadb-server mariadb-client php7.2 libapache2-mod-php7.2 php7.2-mysql phpmyadmin php7.2-curl php7.2-gd php-pear php-imagick php7.2-imap php-memcache php7.2-pspell php7.2-recode php7.2-snmp php7.2-sqlite3 php7.2-tidy php7.2-xmlrpc php7.2-xsl php-mbstring php7.2-mbstring php-gettext p7zip* fcitx-table-scj6 fcitx-config-gtk shutter vlc kdenlive kazam gimp audacious
PHP 7.2 將 mcrypt 移除了,建議使用 Openssl 來取代
另, 預設 mysql 不會要我們輸入密碼, 所以, 在啟動後, 要 sudo mysql -uroot -p 不用密碼直接登入, 再用
grant all on *.* to root@localhost identified by '123456'; 指定新的密碼.
2018年7月29日 星期日
2018年5月16日 星期三
php 的 $_SESSION 失效的處理方式
由於資訊安全考量的緣故,Web Server 被設定為比較安全的環境,造成 php 的 $_SESSION 失效,試了很多方式測試,$_SESSION 是啟動的,但是它的值就是無法傳遞到下一個頁面!
後來參考以下二個頁面: link 1, link 2
總算知道原因,並且解決了~~
第一部份,
先確認 /var/lib/php/session/ 目錄的權限是否正確?
通常都沒有問題!
再來確認 /var/lib/php/session/ 裡,有沒有你使用 $_SESSION 產生的暫存檔?
由於檔名是亂數編的,從檔案名稱看不出來,可能只能從檔案的日期找出最新的,看看它的檔案內容,如果有存在你所儲存的值,表示這部份沒有問題了。
值可以存進去,但是提不出來!
第二部份
用 phpinfo() 檢查 session.use_trans_sid 的值是否為 0。
若為 0 ,問題就找到了! 設為 0 的意思是,每一個 url 都為生成一個 session,其他的頁面也會生成新的 session,而造成無法追蹤前一個頁面的狀況。
也有二個解決方式,一個是修改 php.ini 的檔案,將它改為 1。 另一個,則是修改 php 頁面,在 session_start() 之前,先加上 session_id(SID) 敘述,就可以了。例如:
session_id(SID);
session_start();
2018年5月14日 星期一
android app 的資料備份
開發 app 時,常會寫入一些資料做些收集、檢測的工作,實體手機有權限的限制,寫入在 app 的 private data 時,資料的備份是一個麻煩事。
以下方式可以處理~
from:
https://stackoverflow.com/questions/15558353/how-can-one-pull-the-private-data-of-ones-own-android-app
從 android 手機要備份資料,用 adb 可能會用以下方式:
以下方式可以處理~
from:
https://stackoverflow.com/questions/15558353/how-can-one-pull-the-private-data-of-ones-own-android-app
從 android 手機要備份資料,用 adb 可能會用以下方式:
adb pull /data/data/com.corp.appName/files/myFile.txt myFile.txt
對於 android virtual device 可能可以,但對實體手機可能會產生錯誤,它不讓我們複製。
先離題一下,連線到實體手機時,以下指令可以進入到 app 的目錄裡,可以看到相關檔案,但無法複製。
adb shell
run-as com.example.appName
回題,要複製 app 的資料方式,要用備份的概念來做,指令如下:
adb backup -f myFiles com.example.appName
這個指令執行時,為了安全考量,手機上會顯示是否允許備份的動作,所以,必須在手機上配合操作才能允許備份某個 app 的資料。
其中,myFiles 是備份出來的檔案,這個檔案是有壓縮的。
解開的方式如下:
dd if=bs=4K iflag=skip_bytes skip=24 | openssl zlib -d >myFiles.tarmyFiles
如果上面這個指令產生 zlib 的錯誤,我用以下方式可以解開壓縮檔,成為 tar 的檔案。
dd if=myFiles bs=4K iflag=skip_bytes skip=24 | zlib-flate -uncompress > myFiles.tar
再用 tar xf myFiles.tar 方式解開就完成了。 2020.12.02 更新ref: https://stackoverflow.com/questions/29830981/error-zlib-is-an-invalid-command如果出現 zlib 或 flate 錯誤,可以用底下方式,用 python 來解決~
dd if=myFiles bs=1 skip=24 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" | tar -xvf -
========================
討論串的下方還有幾種方式,我沒試,也許簡單些~
方式1
$ adb shell
$ run-as {app-package-name}
$ cd /data/data/{app-package-name}
$ chmod 777 {file}
$ cp {file} /mnt/sdcard/
再回到 linux 將檔案複製出來
$ adb pull /mnt/sdcard/{file}
方式2
adb -d shell "run-as com.example.test cat /data/data/com.example.test/databases/data.db" > data.db
直接用 print 的方式將檔案 dump 到 linux 的檔案裡。
2018年5月3日 星期四
Photogrammetry 的資料整理
因為專案因素,就記錄一下~~
系統需求: 準備一張支援 CUDA 的 NVIDIA 顯示卡,才能跑出結果。 很重要!
使用 COLMAP + Meshlab
COLMAP 相關文件:
官方網站,
Free photogrammetry software review: 2017
Lab Notes: A recipe for using photogrammetry to create 3D model
Photogrammetry Testing 8: COLMAP
wikipedia 的比較: Comparison of photogrammetry software
另外,協同編輯(共寫)的功能,有以下幾篇可以參考:
Collaborative Editing in JavaScript: An Intro to Operational Transformation
PHPWebSocket-TinyMCE
2018年4月30日 星期一
mysql restore
資料來源: https://github.com/17media/mysql-restore
以下為內容備份留存
前言
請優先善用storage的snapshot功能作backup and restore。當你需要用上logical restore時:
- master和slave機器都趴掉
- 沒法從storage snapshot恢復過來
- 其中一個use-case:整個datacenter趴掉,需要在別的datacenter重建mysql
mysql.cnf
mysql和mysqldump會從這檔案讀取所需的username和password- 位置: ~/.my.cnf
- 內容:
[client]
host=abc.com
user=root
password=abc123456
port=3306
backup script
- 把純資料backup,不包schema,並且進行gzip
mysqldump --max_allowed_packet=512M --single-transaction --extended-insert --compress \
--no-create-info --no-create-db --skip-triggers \
--databases test1 | gzip -c > dump.sql.gz
- 把database schema作backup
mysqldump --max_allowed_packet=512M --single-transaction --extended-insert --compress \
--no-data \
--databases test1 > schema.sql
- autoinc的數值存放於schema部份而不是在data部份,所以每次logical backup一定要2者都跑
- 次序一定是先跑data然後跑schema,否則autoinc數值會出錯
- backup過程中不能跑alter table
restore script
- 先重建schema:
mysql < schema.sql - import data部份,mysql是用single thread來跑,100GB的資料需要超過6小時的,這樣子太慢
gzip -cd dump.gz | mysql --max_allowed_packet=512M --compress
parallel data import
-
原理
- 先把本來的
dump.sql.gz切成table_XXX.sql,table_YYY.sql…… - 當準備好一個
table_XXX.sql後,立即呼叫mysql < table_XXX.sql來做data import,因為同一時間能import多個table,所以時間大幅縮短了 - 部份可以事後再補回的table可以先不做import,再進一步加快速度
- 先把本來的
-
compile program:
go build
-
執行import:
mysql-restore \
--path \
--concurrency
--ignore-tables
- 範例
./mysql-restore --path /backup/dump-20180429.sql.gz --ignore-tables "NotImportantTable,JustLogTable"
2018年4月13日 星期五
arduino 筆記
Arduino Ethernet
Arduino Ethernet 的話,需要 FTDI 的連接線,才能從電腦的 usb 連到 Arduino Ethernet 寫入程式。
接頭的樣式類似以下文章的說明:
https://gr33nonline.wordpress.com/2016/10/16/programming-the-arduino-ethernet-board/
以下幾個做為 web server 的例子:
http://wiznethk.pixnet.net/blog/post/344710378-arduino-ethernet%E5%85%A5%E9%96%80%E2%80%94%E2%80%94%E6%A7%8B%E5%BB%BA%E7%B0%A1%E6%98%93%E7%9A%84web-server%E6%95%99%E7%A8%8B
http://idledev.com/2015/04/http-get-parameters-with-arduino-part-1/
訂閱:
文章 (Atom)