matplotlib是知名的繪圖庫,當我們需要製作圖表時就要使用它了。
#安裝matplotlib pip install matplotlib
#使用matplotlib繪製一條直線並顯示 import matplotlib.pyplot as p p.plot(range(20),range(20)) p.show()
如果matplotlib沒有顯示出圖像,而只顯示了[
matplotlib是知名的繪圖庫,當我們需要製作圖表時就要使用它了。
#安裝matplotlib pip install matplotlib
#使用matplotlib繪製一條直線並顯示 import matplotlib.pyplot as p p.plot(range(20),range(20)) p.show()
如果matplotlib沒有顯示出圖像,而只顯示了[
pdftotext是一個簡單的很多linux發行版都自帶的小工具,可以把pdf轉換成txt文本。它沒有使用ORC,所以只能轉換文本的pdf。可以通過設置起始坐標和截取的高度寬度來避開pdf文檔中的header和頁碼,命令如下:
pdftotext -x 50 -y 100 -H 550 -W 400 -nopgbrk -eol unix source.pdf
split是一個分割小工具,可以把大文件切成幾個小文件。下面這條命令將temp.txt分割成10KB一個的文件,並且不打斷原有的行(這個功能很好,我試過不用這個參數,結果漢字被硬生生分開到了兩個文件)。分割後的文件命名如temp_1.txt。
split -C 10KB -d temp.txt temp_
湊了個雙十一的熱鬧,買了套Logitech的藍牙鍵盤鼠標。藍牙相對於普通無線鍵盤鼠標的好處是不再需要接收器,方便的和手機平板等配對。我買的這個K480鍵盤可以方便的在三個設備間分享使用鍵盤,感覺還挺方便的。
正常情況下,如果Fedora沒有藍牙管理員,可以通過的dnf install blueman來安裝,安裝完畢後藍牙管理員會出現在偏好設定中,根據圖形界面的指示配對鍵盤即可。
我遇到的非正常情況下呢,就點了配對沒有反應,應該給我配對PIN碼在鍵盤上輸入的,但是沒有。於是改用命令行方式:
#進入藍牙控制,會自動列出當前設備,鍵盤的mac地址此時已經顯示出來 bluetoothctl power on agent on default-agent scan on #我的提示不能搜索,不過沒關係,直接用第一步得到的mac地址進行配對 pair A1:B2:C3:D4:E5:F6 #此時命令行應該會告訴你配對的PIN碼,在藍牙鍵盤上輸入後按回車即可配對成功 #但是配對成功後還沒結束哦 connect A1:B2:C3:D4:E5:F6 trust A1:B2:C3:D4:E5:F6 #然後藍牙鍵盤就可以正常工作了,重啟也會自動連上的。
題外話:我記得以前看到bluetooth在繁體中文的寫作「藍芽」,現在似乎都改為統一的藍牙了,我覺得還是藍牙好。
本文更新於 2016/12/22。
首先說明,如果想把App Store的https鏈接全都解密,那麼所用蘋果設備需要越獄,否則只能解密部分https鏈接。
Fiddler是一個非常好用的抓包工具,比Wireshark不知到簡單到哪裡去了,非常適合對網絡協議不熟悉的使用者。安裝完成後,打開Fiddler,右上角有個Online,鼠標放上去後會彈出網絡信息,最後一行便是本機的IP。在蘋果設備上的WiFi設定中配置proxy為運行Fiddler的IP,端口默認是8888。這樣所有的流量就顯示在Fiddler窗口中了。Fiddle的設置在Tools》Teleric Fiddler Options中。
如果要查看https流量,需要在代理端和蘋果設備各安裝一個證書。由於要對蘋果設備解密https,所以還需要安裝一個證書生成器插件CertMaker for iOS and Android,安裝完成後重啟Fiddler。在設置的HTTPS選項卡中勾選Decrypt HTTPS traffic,在右邊Actions里選擇Trust root centificate,然後根據提示就完成了在代理端根證書安裝。用蘋果設備訪問http://你的代理IP:8888,最下面有一個FiddlerRoot centificate的鏈接,點擊後根據提示就完成了蘋果設備的證書安裝。此時你打開Safari訪問https的網站,就能看到解密的數據了。
但是此時如果切換apple id帳號,或者在app store下載軟件都會失敗,原因是apple的這些軟件運用了CertPinning技術。大意就是apple的這些軟件只接受自己的證書,其他證書一概不信任。這時就只有越獄的手機有辦法了,那就是使用SSL Kill Switch 2。由於手頭沒有越獄手機,如果有機會完成測試就再補充。
幾天后的進一步測試並沒有取得成功。使用的是iOS9.3.1的iPhone,使用盤古進行的越獄。此次越獄版本似乎不是很完善,表現在當我要裝一個命令行軟件的時候雖然安裝成功但是無法啟動,還有就是每次重啟都會失去越獄。按照Cydia的說明通過ssh可以順利進入iPhone,然後按照SSL Kill Switch 2的說明完成了安裝,但是Setting里並沒有出現啟用的開關。後來還嘗試修改wifi的mac地址,無論是nvram還是ifconfig都失敗了,可能是由於蘋果對系統的加強吧。
一般的HTTP請求,用Fiddler就OK了,不過遇到一個應用,它的請求時在打開了VPN後才連接的,於是祭出古器tcpdump。在cydia里搜索tcpdump安裝即可使用。獲取端口信息的ifconfig命令可在Cydia搜索Network Commands按裝之。
#-i指定端口,-w指定保存文件,-s設為0保存所有數據 tcpdump -i ppp0 -w trace.pcap -s 0 #端口不指定的話,wifi默認為en0,移動網絡是pdp_ip0,跟host可過濾域名或IP tcpdump -w trace.pcap -s 0 host www.ip138.com #過濾ip和請求類型 ip.addr eq 115.182.201.7 and http
本文更新於 2018/04/12。
昨天晚上下載滴滴約早上六點十分到深圳灣的出租車,不加價居然沒人接單,於是約了快車。早上順利上車,沒想到這麼早居然就堵車了,還好走的早,七點前上了B3。然後在順利在屯門市中心坐上了去機場的公交。到機場取機票的時候,需要出示購票的信用卡,沒帶,嚇夠嗆,還好最後用手機銀行客戶端證明了自己是持卡人,拿到了機票。
香港飛台灣是不用填寫入境卡的。台南機場小小的很有歷史感,以前是軍用的,現在軍民合用,所以在台南的這些天,天天都能聽到戰鬥機的呼嘯聲。上次來台灣沒有機會坐公交,這次沒少坐,很舒服,還有WiFi和USB充電接口。像其他發達國家的公交一樣,車上沒有異味,車開的也很穩,司機乘客都有禮貌,乘客有一定幾率在下車時向司機師傅說謝謝。別的地方不知到,台南和高雄的公交車站都有二維碼,手機一掃,打開瀏覽器就能知道本站車輛的位置,非常之方便。在淘寶上的香港卓一電訊的流量卡,55元,7天無限流量很好用。下午三點前就到了酒店,差不多,6點出發,到口岸花一小時,到機場花一個半小時,飛機十一點半才起飛,飛一個小時多一點,兩點出來機場等公交。上次再台灣已經買了悠游卡,所以直接坐公交很方便。
酒店是在Booking上訂的,到了之後刷的信用卡付的房費。放下行李後就出來轉悠,在7-11里去了兩萬塊新台幣(取多了,最後走的時候還有一萬多),給悠遊卡沖了一些錢。步行走到武聖夜市還太早,於是在旁邊吃了三媽臭臭鍋,這種鍋在台南挺常見的,味道不錯價格實惠。我們走這一會就發現台南真是個宗教氛圍濃重的地方,很多家里都供着很大的黑臉神像,在Emanon拍完一個小廟後奧林巴斯自帶的鏡頭就懷了。於是我們搜了一個評價很好的鏡頭維修店,標準攝影器材有限公司,下午六點半走到了那裡。店裡有一位老奶奶,一開始和我門說台灣話,我們一個字也聽不懂,後來發現我們一頭霧水才開始說國語,但是國語中還是夾着幾句台語。最終溝通的結果是,不好修,如果要修可能要寄出去修,時間我們來不及。於是我們又去附近一家能維修鏡頭的店,老爺子擺弄了一會兒也說說修不了。於是我們就再次返回夜市去吃東西,途中還經過全美戲院和五條港。
前面說台南宗教氛圍濃,就在我們會武聖也是的途中還遇到了宗教遊行,推測是某位神明的生日。第一次看到隊伍的時候,並沒有意識到這是宗教遊行,因為最前面的大約四五台吉普車陪着大功率重低音功放,聲音開的很大,車頂是一根锃亮鋼管,跳鋼管舞的鋼管,每個車頂都有一位穿着暴露的女性在跳鋼管舞!等我們逛完夜市回來,又遇到這個隊伍,原來他們是走街串巷的遊行,每條小巷都走了,所以我們又遇到了。這次才看到千里眼和順風耳,以及後面的轎子里的大神。之所以認出那兩位是千里眼和順風耳,則是因為後面去了博物館學習到的。
武聖夜市是我們去的第一個夜市,以前在深圳去過兩次台灣美食街之類的活動,就以為夜市也差不多那樣。但是來了才知道夜市更像是老家的廟會,有很多東西,衣服、日用品、小玩意兒、成人/兒童遊樂場……由於我和Emanon都對肉類興趣不是很大,而且我前一段感冒還有一點點咳嗽,所以油炸類也不是很想吃,很多吃得就這麼被我們過濾掉了。最後買了好像只吃了幾個小雞蛋糕(和小時候的味道一樣),梅子(好大一袋,一直吃到去高雄那天才吃完),烏梅飲料(額,後來我再也不敢點烏梅味的飲料了)。去年之所以沒有去成夜市是因為不知道夜市並非每天都有,就像集市一樣有固定的日子,像武聖這種大夜市,直接在谷歌地圖中就能看到營業時間。
SELECT TABLE_NAME,DATA_LENGTH+INDEX_LENGTH, TABLE_ROWS,concat(round((DATA_LENGTH+INDEX_LENGTH)/1024/1024,2), 'MB') as data FROM TABLES WHERE TABLE_SCHEMA='dbname'; #mariadb SELECT table_schema as `DB`, table_name AS `Table`, ROUND(((data_length + index_length) / 1024 / 1024), 2) `Size (MB)` FROM information_schema.TABLES ORDER BY (data_length + index_length) DESC;
#登入數據庫 mysql -u root -p #查看數據庫的存放位置,即datadir的值 show variables like '%dir%'; #退出數據庫 quit #停止mysql,失敗的話用root權限 service mysqld stop #創建新的數據儲存位置 mkdir /data/mysql #將舊文件移動到新位置,第一個參數是前面datadir的值 mv /usr/local/mysql/data/* /data/mysql #修改新位置的權限 chown mysql:mysql -R /data/mysql/ #修改數據庫配置,修改這一行datadir=/data/mysql nano /etc/my.cnf ##修改數據庫配置,修改這一行datadir=/data/mysql ##這個我並沒有找到,所以不修改應該也可以 ##nano /etc/init.d/mysqld #啟動數據庫服務 service mysqld start
參考鏈接:mysql数据库目录存放位置更改
#導出數據庫,前面是mysql的程序位置 /data/soft/mysql-5.5.30/client/mysqldump -u root -p video > db_video.sql #壓縮一下便於傳輸 tar -zcvf db_video.tar.gz db_video.sql #導入某數據庫 mysql -u user42 -p -h localhost video < db_video.sql #導出所有數據庫 mysqldump -u root -p --all-databases | gzip > alldb.sql.gz #導入所有數據庫 gunzip < alldb.sql.gz | mysql -u root -p #僅導出一張表 mysqldump -p --user=username dbname tableName > tableName.sql #將導出的一張表導入數據庫 mysql -u username -p -D dbname < tableName.sql
mysql -u root -p # 允许本地 IP 访问 localhost, 127.0.0.1 CREATE USER 'user42'@'localhost' IDENTIFIED BY 'PASSWORD'; # 允许外网 IP 访问 CREATE USER 'user42'@'%' IDENTIFIED BY 'PASSWORD'; # 刷新授权 flush privileges; # 创建数据库 create database db42 DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci; # 授予用户通过外网IP对于该数据库的全部权限 GRANT ALL ON db42.* TO 'user42'@'%'; # 刷新权限 flush privileges; # 退出 root 重新登录 \q # 已新帐号 user42 登录,由于使用的是 % 任意IP连接,所以需要指定外部访问IP mysql -u user42 -h 192.168.1.168 -p
CREATE DATABASE `djangoTask` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE TABLE `bonus` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `userid` int(10) NOT NULL, `bonus` int(10) DEFAULT NULL COMMENT '奖励金', `level` int(3) DEFAULT NULL COMMENT '等级', `nowTimestamp` int(13) DEFAULT NULL COMMENT '插入时间戳', `nowDateTime` datetime DEFAULT NULL COMMENT '插入时间', `updateInfo` varchar(128) DEFAULT NULL COMMENT '备注', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=66156 DEFAULT CHARSET=utf8 COMMENT='bonus';
SELECT info, count(info) FROM aso.aso_apple where nowTimestamp>'1489161600' GROUP BY info;
SELECT COUNT(id) as 'sum', DATE_FORMAT(nowDatetime, '%Y-%m-%d') as 'day' FROM aso.aso_apple WHERE nowTimestamp>'1488643200' GROUP BY DATE_FORMAT(nowDatetime, '%Y-%m-%d');
SELECT product_id, SUM (order_price) FROM orders WHERE create_time > CURDATE()-1 GROUP BY product_id;
SELECT * FROM test.t_account a INNER JOIN test.t_client b ON a.cId = b.id WHERE b.sn like '%sz%';
DELETE a.* FROM test.t_account a INNER JOIN test.t_client b ON a.cId = b.id WHERE (b.sn like '%sz%');
UPDATE task_new.t_account AS a INNER JOIN task_new.t_client AS b ON a.cId = b.id AND b.sn like '%sz%' SET a.status='1' ;
SELECT id, first_name FROM student_details WHERE first_name IN (SELECT first_name FROM student_details WHERE subject= 'Science'); <h3>使用新表來去重</h3> [code language="sql"]#先新建一張表 CREATE TABLE newtable LIKE oldtable; #將去重後的數據插入新表 INSERT INTO newtable SELECT * FROM oldtable GROUP BY key; #把舊表備份下 ALTER TABLE oldtable RENAME TO oldtable_bak ; #把新表改名為舊錶 ALTER TABLE newtable RENAME TO oldtable ;
#先新建一張表 INSERT INTO `NEW_DB`.`NEW_TABLE` (`latitude`, `longitude`,`accuracy`,`altitude_accuracy`, `heading`,`speed`,`loc_time_text`, `loc_time`, `insert_time`, `address`, `ip`, `isp`, `text`, `owner_id`) SELECT `latitude`, `longitude`,FLOOR(`accuracy`),`altitudeAccuracy`, `heading`,`speed`,`locTime`, `locTime`, `locTime`, `geoCode`, `ip`, `isp`, `text`, 1 FROM `OLD_DB`.`OLD_TABLE`;
extendsclass.com提供了很多免費的在線測試工具,其中有一個免費的在線測試 MySQL 語句的工具可供大家測試 MySQL 語句。
如果我轉述的有不通的地方,請參考原文:How To Reset Your MySQL or MariaDB Root Password on Ubuntu 20.04,原文還包含了重置 MySQL 數據庫 root 用戶密碼的步驟。
首先非常建議安裝一個和要恢復密碼相同的數據庫版本相同的測試數據庫以供測試,你都把 root 密碼搞丟了,還是不要直接在產品數據庫上做實驗了。你可以通過 mysql --version 來查看數據庫的版本。
開始恢復前先關閉數據庫
sudo systemctl stop mariadb
然後用不檢查權限的方式運行數據庫
sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables --skip-networking" sudo systemctl start mariadb
現在你就可以登入數據庫並重置密碼了
sudo mysql -u root FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; FLUSH PRIVILEGES; #下面兩行我執行後報錯 #但是並不影響,我還是成功修改了密碼 UPDATE mysql.user SET authentication_string = '' WHERE user = 'root'; UPDATE mysql.user SET plugin = '' WHERE user = 'root'; exit
可以恢復到正常模式啓動數據庫並檢驗新密碼了
sudo systemctl unset-environment MYSQLD_OPTS sudo systemctl restart mariadb mysql -u root -p
sudo mysql -u root #修改 root 密碼 ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_password'; #刪除匿名用戶 DELETE FROM mysql.user WHERE User=''; #禁止 root 用戶遠程登錄 DELETE FROM mysql.user WHERE User='root' AND Host!='localhost'; #刪除測試用表 DROP DATABASE IF EXISTS test; #刷新權限 FLUSH PRIVILEGES; #退出 EXIT;
本文更新於 2025/01/28。
從台灣旅行回來,Emanon又往豆瓣相冊里上傳了很多照片。這些照片是經過她篩選的,所以質量比較高,一張一張看一遍也很舒服。但是一張一張看,手很累,即使豆瓣貼心的準備了右鍵翻頁功能。於是我就想通過網絡控制台的js來讓網頁自動跳轉,最後發現網頁控制台的代碼只能在當前網頁執行一次,到了新網頁就不能自動運行了。然後看了下火狐的擴展幫助,感覺還挺方便的於是,提交了個自動翻豆瓣相冊的插件。插件安裝地址:豆瓣相册自动翻页。
當前版本安裝後只是匹配到照片頁面後,就傻瓜等待5秒後,點擊下一頁,沒有配置項,所以不用時需要去火狐的擴展頁面禁用此擴展。
以後有空的話會完善一下,增加自定義時間和手動啟動的功能。
本文更新於 2016/10/20。