分類
Linux

Fedora使用藍牙鍵盤

湊了個雙十一的熱鬧,買了套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。

分類
软件

使用Fiddler抓取App Store的包

首先說明,如果想把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都失敗了,可能是由於蘋果對系統的加強吧。

使用tcpdump來抓包

一般的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。

分類
程序

mysql tricks

查看數據庫中各表的大小

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數據庫

#導出數據庫,前面是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新增用户以及数据库访问授权

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;

使用inner join查看關聯數據

SELECT * FROM test.t_account a 
INNER JOIN test.t_client b 
ON a.cId = b.id WHERE b.sn like '%sz%';

刪除inner join查詢到的關聯數據

DELETE a.* FROM test.t_account a
INNER JOIN test.t_client b ON a.cId = b.id
WHERE (b.sn like '%sz%');

更新inner join查詢到的關聯數據

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 語句。

重置 MariaDB 的 root 用戶密碼

如果我轉述的有不通的地方,請參考原文: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

不使用 mysql_secure_installation 來初始化 MariaDB

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。

分類
网站

WGS-84 To GCJ-02 經緯度在線轉換

之前一直在用http://api.zdoz.net提供的免費接口做GPS坐標轉火星坐標,也挺好用,直到發現了hiwanz的https://github.com/hiwanz/wgs2mars.js,這樣就可以減少一次網絡請求。

緯度Latitude:   
經度Longitude:
緯度Latitude:   
經度Longitude:

在開放街圖中查看原始位置

在谷歌地圖中查看轉換後的位置

本文更新於 2021/05/04。

分類
网站

中文WebFont體驗

Webfont中文字體效果

春有百花秋有月

3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679

這裡使用了字蛛來製作中文webfont,它的作用是可以根據需要展現的中文來製作網頁字體文件,這樣就避免了中文字體文件過大的問題。使用字蛛需要Node.js,那麼就來安裝。

CentOS安裝Node.js

由於我已經使用了epel-release庫,所以只要yum install nodejs就搞定了,如果沒有使用epel-release庫,可以通過yum install epel-release來使用。

#查看node.js版本
node --version
#通常我們都需要npm這個包管理器
yum install npm
#我用的CentOS6,默認安裝的版本太低,升級node.js我用的nvm,node版本管理器
#使用下面的命令來安裝給當前用戶(檢查下網址,畢竟是要執行的東西)
curl https://raw.githubusercontent.com/creationix/nvm/v0.13.1/install.sh | bash
#想要使用nvm還有執行下下面命令先
source ~/.bash_profile
#現在可以吃用nvm查看可以安裝的node.js版本了
nvm list-remote
#選擇需要安裝的版本,然後安裝
nvm install v5.12.0
#把5.12.0設置為默認版本
nvm alias default v5.12.0
nvm use v5.12.0

使用字蛛

字蛛的文檔寫的不夠傻瓜,我是試了幾次才成功的,說說我的方法。首先準備好需要的ttf字體文件如OCR.ttf,然後準備一個網頁html文件如下:

<!-- index.html -->
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<style>
@font-face {
  font-family: 'OCR';
  src: url('font/OCR.eot');
  src:
    url('font/OCR.eot?#font-spider') format('embedded-opentype'),
    url('font/OCR.woff') format('woff'),
    url('font/OCR.ttf') format('truetype'),
    url('font/OCR.svg') format('svg');
  font-weight: normal;
  font-style: normal;
}
p {
    font-family: 'OCR';
}
</style>
</head>
<body>
<p>這裡是需要用的字體文件的文字。</p>
</body>
</html>

我新建了一個font文件夾,這樣做出來的字體就會保存在font里而不是覆蓋同目錄下的font文件。原字體文件和html文件和font文件夾處於同一目錄中。接下來就很簡單了,安裝字蛛並執行。

#安装字蛛
npm install font-spider -g
#使用字蛛
font-spider index.html

打開font文件夾,就可以看到生成的各種webfont字體文件了。使用的方法和上面html里是一樣的,就不重複說了。

本文更新於 2022/01/28。

分類
Linux

Monitorix查看Centos系統負載

Monitorix安裝

Monitorix is a free, open source, lightweight system monitoring tool designed to monitor as many services and system resources as possible. 本文是在Centos上安裝Monitorix。

#先安裝依賴
yum install rrdtool rrdtool-perl perl-libwww-perl perl-MailTools perl-MIME-Lite perl-CGI perl-DBI perl-XML-Simple perl-Config-General perl-HTTP-Server-Simple perl-IO-Socket-SSL
#3.8.1是20160810最新版
rpm -ivh http://www.monitorix.org/monitorix-3.8.1-1.noarch.rpm
#添加到開機啟動
chkconfig --level 35 monitorix on
#啟動Monitorix
service monitorix start

這時,只要訪問在本地訪問http://localhost:8080/monitorix/Monitorix即可查看系統狀態了。

Monitorix配置

Centos中Monitorix的配置文件位於/etc/monitorix/monitorix.conf,下面的設置都是在這個文件中修改。

給Monitorix設置密碼很簡單,參考這裡http://www.monitorix.org/documentation.html#4。其中提到的用戶名密碼默認保存在/var/lib/monitorix/htpasswd裡面。關於密碼加密,我是用的這個https://github.com/mikaku/Monitorix/raw/master/docs/htpasswd.pl,下載後./htpasswd.pl執行,輸入密碼即可得到加密後的密碼,把加密後的密碼放到用戶名:後面即可。

關於Monitorix配置其實還有很多可以貼,等下次安裝的時候再詳細記錄下,普通看官方文檔就好。通常檢測網卡要設置一下,一般都不是eth0。

如果nginx的代理是https,那麼需要在配置文件httpd_builtin中添加https_url = y,這樣圖片才能也走https。

nginx代理配置

在nginx增加如下配置
……
location /monitorix {
#    auth_basic "Restricted";
#    auth_basic_user_file /etc/monitorix/monitorix-users;

    include proxy_params;
    proxy_pass		http://127.0.0.1:8080/monitorix;
    allow		127.0.0.0/8;


    # since 3.5.0 version
    location ~ ^/monitorix/(.+\.png)$ {
        alias /var/lib/monitorix/www/$1;
    }
}
……

其中的proxy_params,nginx似乎沒有自帶的文件,我参考了https://www.howtoforge.com/tutorial/how-to-install-nginx-as-reverse-proxy-for-apache-on-ubuntu-16-04/,其中這麼寫:

proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

client_max_body_size 100M;
client_body_buffer_size 1m;
proxy_intercept_errors on;
proxy_buffering on;
proxy_buffer_size 128k;
proxy_buffers 256 16k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
proxy_max_temp_file_size 0;
proxy_read_timeout 300;

然後service nginx restart重啟nginx就可以了。

CentOS6.4安裝perl-HTTP-Server-Simple

CentOS6.4執行上面依賴包安裝後提示"No package perl-HTTP-Server-Simple available.",可參考perl-HTTP-Server-Simple-0.42-1.el6.noarch.rpm進行安裝。

本文更新於 2018/03/09。