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
.tar
myFiles
如果上面這個指令產生 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/
2018年4月8日 星期日
2018年3月14日 星期三
林宜敬: 令人難以理解的軟體工程師生涯
我個人非常認同這篇的內容~~
原文網址: https://www.facebook.com/yijing1/posts/10155642313309495
整篇都說的很好,以下只節錄其中幾點:
四、
寫一個大型程式,並不是「人多好辦事」。
如果是土木工程或是製造業,人越多、產出就越大。如果一個計畫延誤了,就多調一些人手過來幫忙。
但是在軟體工程裡,人越多,就越是難以協調,寫出來的程式也往往品質越差、效能越糟糕。
這就是有名的”The Mythical Man-Month: Adding manpower to a late software project makes it later"。
IBM在1960年代開發OS/360作業系統軟體時,就發現了這個奇特的現象。
所以我也搞不懂,大型軟體公司雇用了那麼多的軟體工程師幹嘛?
六、
寫程式並不是寫的越長越好、越厲害。
我年輕在台大資訊工程系的時候,會跟朋友炫耀說:「我寫的程式語言編譯程式,總共有一萬多行耶。」
後來我去美國布朗大學讀電腦科學博士,畢業的時候喜歡跟朋友炫耀:「我的博士論文那個程式,功能那麼強大,但是我只用了七、八千行程式就搞定了耶。」
七、
二流的軟體工程師,喜歡把簡單的問題弄的複雜,寫出別人看不懂的程式。
一流的軟體工程師,喜歡把複雜的問題簡單化,寫出架構清楚明白的程式,讓人看了之後,覺得問題好像很簡單。
三流的軟體工程師會去崇拜二流的軟體工程師,因為他們會覺得二流工程師寫的程式都看不懂,一定是超級厲害;
三流的軟體工程師不會去崇拜一流的軟體工程師,因為他們會覺得一流工程師所做的事情都很好懂,好像都很簡單。
只有一流的的軟體工程師才會佩服一流的軟體工程師,因為只有他們才能看的出來,其他的一流軟體工程師厲害在哪裡?
台灣的軟體業如此,美國的軟體業也大致如此。
2018年3月6日 星期二
越在地越國際?
原文網址: https://www.facebook.com/agritruth/photos/a.1526400194238068.1073741828.1526178950926859/2031605333717549/?type=3&theater
【文青別鬼扯】---「越在地越國際?」
這幾年台灣不管是公部門還是許多民間組織,搞設計、賣創
同樣是為了賺取零用錢,今天下午鬼王又再度委身出門演講
如果大家有看過各種農村再生或社區營造的企劃案就會發現
反正如果有任何人跳出來說這樣的設計不好,這樣的企劃很
但問題是,對外人而言,「在地」是賣點嗎?
倘若鬼王拿著嘉義縣六腳鄉的「蒜頭餅」向台北市大安區土
No!多數台灣人甚至連「六腳鄉」都沒聽過。說不定天龍
「在地」這概念頂多只對生活在外地的鄉親還有吸引力,但
這時候大家必定會質疑,某些鄉鎮的特產很有名,這樣就很
但問題在於,這些特產是因為那個鄉鎮而有名,還是那個鄉
文旦是因為麻豆而出名的嗎?當然不是,是因為當地的文旦
所以囉,當我們一直強調「地方」與「在地」時,似乎忘記
至於有些人很愛說,「越在地越國際」,根本是弄錯兩者的
不能否認的是,很多行銷全球的商品都帶有在地特色。但問
韓國泡菜夠在地吧,韓國人吃了幾百年,超級有韓國在地特
如今韓國泡菜變成全球性商品,並不是因為它超級有韓國特
我們再回頭看看這幾年到處都在推的「在地化」、「一鄉一
如果在地化、地方產品真的那麼棒,為何每次去各地的小農
如果真的都要做在地化,為何每個社區發展協會提出的Pr
國際化商品確實都會有在地特色,但並不表示「越在地越國
2018年3月2日 星期五
Machine Learning 資源
Google Machine Learning Crash Course with TensorFlow APIs, Google 免費機器學習課程
https://developers.google.com/machine-learning/crash-course/
2018年3月1日 星期四
Laravel 5 recursive query
使用 laravel 5 做的例子, 以下幾個站說明的很清楚
https://itsolutionstuff.com/post/laravel-5-category-treeview-hierarchical-structure-example-with-demoexample.html
https://heera.it/laravel-model-relationship
https://heera.it/laravel-nested-relationship-revised#.V9ntypN94dU
2018年2月13日 星期二
諸葛亮從來不問
偶然從網路上看到的,還滿有道理的~~
===========================================
諸葛亮從來不問劉備,為什麼我們的箭那麼少?
關羽從來不問劉備,為什麼我們的士兵那麼少?
張飛從來不問劉備,兵臨城下我該怎麼辦?
於是一一
有了草船借箭、
有了過五關斬六將、
有了據水斷橋嚇退曹兵……
趙子龍接到進攻軍令時手上只有20個兵,
收穫成果時已攻下了十座城池、
多了2萬兵、增了三千匹馬,
軍令只是寫著:攻下城池!
——如若萬事俱備 你的價值何在!
孫悟空是在取經的路上碰到的,
豬八戒是在取經的路上碰到的,
沙和尚是在取經路上碰到的,
白龍馬也是在取經路上碰到的,
所以要碰到可以與你一路同行的人,
你必須先上路!
不是有了同行者才上路,
是因為你在路上才會有同行者!
===========================================
諸葛亮從來不問劉備,為什麼我們的箭那麼少?
關羽從來不問劉備,為什麼我們的士兵那麼少?
張飛從來不問劉備,兵臨城下我該怎麼辦?
於是一一
有了草船借箭、
有了過五關斬六將、
有了據水斷橋嚇退曹兵……
趙子龍接到進攻軍令時手上只有20個兵,
收穫成果時已攻下了十座城池、
多了2萬兵、增了三千匹馬,
軍令只是寫著:攻下城池!
——如若萬事俱備 你的價值何在!
孫悟空是在取經的路上碰到的,
豬八戒是在取經的路上碰到的,
沙和尚是在取經路上碰到的,
白龍馬也是在取經路上碰到的,
所以要碰到可以與你一路同行的人,
你必須先上路!
不是有了同行者才上路,
是因為你在路上才會有同行者!
2018年1月5日 星期五
clone windows 10 to another disk
從 HDD to HDD 可以,
從 HDD to SSD 也可以。
https://www.backup-utility.com/free-backup-software.html
訂閱:
文章 (Atom)