分類
記事

2016台灣之旅

Day1:20161001 香港到台南

昨天晚上下載滴滴約早上六點十分到深圳灣的出租車,不加價居然沒人接單,於是約了快車。早上順利上車,沒想到這麼早居然就堵車了,還好走的早,七點前上了B3。然後在順利在屯門市中心坐上了去機場的公交。到機場取機票的時候,需要出示購票的信用卡,沒帶,嚇夠嗆,還好最後用手機銀行客戶端證明了自己是持卡人,拿到了機票。

香港飛台灣是不用填寫入境卡的。台南機場小小的很有歷史感,以前是軍用的,現在軍民合用,所以在台南的這些天,天天都能聽到戰鬥機的呼嘯聲。上次來台灣沒有機會坐公交,這次沒少坐,很舒服,還有WiFi和USB充電接口。像其他發達國家的公交一樣,車上沒有異味,車開的也很穩,司機乘客都有禮貌,乘客有一定幾率在下車時向司機師傅說謝謝。別的地方不知到,台南和高雄的公交車站都有二維碼,手機一掃,打開瀏覽器就能知道本站車輛的位置,非常之方便。在淘寶上的香港卓一電訊的流量卡,55元,7天無限流量很好用。下午三點前就到了酒店,差不多,6點出發,到口岸花一小時,到機場花一個半小時,飛機十一點半才起飛,飛一個小時多一點,兩點出來機場等公交。上次再台灣已經買了悠游卡,所以直接坐公交很方便。

酒店是在Booking上訂的,到了之後刷的信用卡付的房費。放下行李後就出來轉悠,在7-11里去了兩萬塊新台幣(取多了,最後走的時候還有一萬多),給悠遊卡沖了一些錢。步行走到武聖夜市還太早,於是在旁邊吃了三媽臭臭鍋,這種鍋在台南挺常見的,味道不錯價格實惠。我們走這一會就發現台南真是個宗教氛圍濃重的地方,很多家里都供着很大的黑臉神像,在Emanon拍完一個小廟後奧林巴斯自帶的鏡頭就懷了。於是我們搜了一個評價很好的鏡頭維修店,標準攝影器材有限公司,下午六點半走到了那裡。店裡有一位老奶奶,一開始和我門說台灣話,我們一個字也聽不懂,後來發現我們一頭霧水才開始說國語,但是國語中還是夾着幾句台語。最終溝通的結果是,不好修,如果要修可能要寄出去修,時間我們來不及。於是我們又去附近一家能維修鏡頭的店,老爺子擺弄了一會兒也說說修不了。於是我們就再次返回夜市去吃東西,途中還經過全美戲院和五條港。

前面說台南宗教氛圍濃,就在我們會武聖也是的途中還遇到了宗教遊行,推測是某位神明的生日。第一次看到隊伍的時候,並沒有意識到這是宗教遊行,因為最前面的大約四五台吉普車陪着大功率重低音功放,聲音開的很大,車頂是一根锃亮鋼管,跳鋼管舞的鋼管,每個車頂都有一位穿着暴露的女性在跳鋼管舞!等我們逛完夜市回來,又遇到這個隊伍,原來他們是走街串巷的遊行,每條小巷都走了,所以我們又遇到了。這次才看到千里眼和順風耳,以及後面的轎子里的大神。之所以認出那兩位是千里眼和順風耳,則是因為後面去了博物館學習到的。

武聖夜市是我們去的第一個夜市,以前在深圳去過兩次台灣美食街之類的活動,就以為夜市也差不多那樣。但是來了才知道夜市更像是老家的廟會,有很多東西,衣服、日用品、小玩意兒、成人/兒童遊樂場……由於我和Emanon都對肉類興趣不是很大,而且我前一段感冒還有一點點咳嗽,所以油炸類也不是很想吃,很多吃得就這麼被我們過濾掉了。最後買了好像只吃了幾個小雞蛋糕(和小時候的味道一樣),梅子(好大一袋,一直吃到去高雄那天才吃完),烏梅飲料(額,後來我再也不敢點烏梅味的飲料了)。去年之所以沒有去成夜市是因為不知道夜市並非每天都有,就像集市一樣有固定的日子,像武聖這種大夜市,直接在谷歌地圖中就能看到營業時間。

分類
程序

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。

分類
說說

1609212013

程序員說:“寫代碼還給錢,這麼好的事上哪兒找去!”

說:“

本文更新於 2016/10/17。

分類
音乐

蛹化の女

蛹化の女 - 戸川純


詞:戸川純
曲:Pachelbel
編曲:国本佳宏

“蛹化の女” is a song released by Togawa Jun and included on her first album 玉姫様 as track #9. The song uses Pachelbels song Cannon.


月光の白き林で
木の根掘れば
蝉の蛹のいくつも出てきし
ああ

それはあなたを思い過ぎて
変り果てた私の姿
月光の凍てつく森で
樹液すする私は虫の女

いつのまにかあなたが
私に気づくころ
飴色のはらもつ
虫と化した娘は
不思議な草に寄生されて
飴色の背中に悲しみのくきがのびる
分類
网站

中文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。