作者:matrix
发布时间:2018-12-01
分类:零零星星
git 仓库之前可以简单的实现包含所有提交信息数据完全搬迁操作。在之前link站的git 仓库使用的csdn,后来没有维护就转移到了gitee。最近发现墙外的环境无法正常连接到gitee,也就想试试git仓库的迁移。
新建空白仓库
在新仓库建立git项目,我这里用的腾讯开发者云 https://dev.tencent.com/
获取git地址 如:https://git.dev.tencent.com/plola/link.git
克隆旧库到本地
git clone https://gitee.com/rollio/link.git --bare
说明:
--bare 参数用于复制裸仓库也就是只是复制一个类似软连接的东西.git信息 不会把仓库中的代码文件copy下来
这个裸仓库只会保存git提交的历史版本信息,上面不能进行各种git操作
推送到新库
cd link.git/ #进入刚刚克隆时生成的git目录
git push https://git.dev.tencent.com/plola/link.git --all #推送数据
git push https://git.dev.tencent.com/plola/link.git --tags #推送标签
最终完成。 操作就几步,真的很简单方便。以后再也不用担心git数据搬家问题了,以后我的所有commit都在 哈哈。
参考:
https://coding.net/help/doc/git/import.html
https://blog.csdn.net/feizxiang3/article/details/8065506
PEACH~
作者:matrix
发布时间:2018-11-26
分类:零零星星
数据存储
mongoDb 自带了地理空间索引,使用2dsphere
索引类型 可以存储GeoJSON格式数据 指定点、线和多边形。
mongoDb 数据
{
"_id" : ObjectId("5bf04829c6671064f9039dd0"),
"order_info" : {
"survey_coordinate" : {
"type" : "Point",
"coordinates" : [
105.431,
42.009
],
"name":"XXXXX街道办"
}
}
}
order_info.survey_coordinate字段为需要存储的数据
type:Point 点
coordinates 经纬度信息: [longitude, latitude]代表[经度, 纬度]
name为附加自定的存储名称字段
参考:
http://geojson.org/
mongodb官方文档:https://docs.mongodb.com/manual/reference/geojson/
添加索引
手动创建
db.order.ensureIndex( {"order_info.survey_coordinate" : "2dsphere"} )
//联合索引 如: db.order.createIndex( {"order_info.survey_coordinate" : "2dsphere","category" : -1, name: 1 } )
// 指定索引名称:db.order.createIndex( {"order_info.survey_coordinate" : "2dsphere"},{name:"locc"} )
参考:
http://www.runoob.com/mongodb/mongodb-indexing.html
代码创建
后来专门去找了下php下代码的操作,翻看各种TP文档无果,还是Google靠谱。php官方文档中
ThinkPHP5.0 参考
$mongodb;//mongodb对象为 think\db\Connection https://www.kancloud.cn/manual/thinkphp5/167865
//创建索引
$command = new \MongoDB\Driver\Command([
'createIndexes' => 'order',//给哪个集合创建索引
'indexes' => [[
'name' => 'order_info_loc_2dsphere',//索引名称
'key' => ['order_info.survey_coordinate' => '2dsphere']//索引的字段 索引类型
]]
]);
$result = $mongodb->command($command);
//首次创建返回数据
// /vagrant/saasSystem/thinkphp/library/think/Debug.php:193:
//array (size=1)
// 0 =>
// array (size=4)
// 'createdCollectionAutomatically' => boolean false
// 'numIndexesBefore' => int 1
// 'numIndexesAfter' => int 2
// 'ok' => float 1
//0.322759s ShowPageTrace
//重复创建返回数据
// /vagrant/saasSystem/thinkphp/library/think/Debug.php:193:
//array (size=1)
// 0 =>
// array (size=5)
// 'createdCollectionAutomatically' => boolean false
// 'numIndexesBefore' => int 2
// 'numIndexesAfter' => int 2
// 'note' => string 'all indexes already exist' (length=25)
// 'ok' => float 1
halt($result);
参考:
http://php.net/manual/en/mongocollection.createindex.php#119584
数据查询
runCommand执行
db.runCommand( {
geoNear: "order" , //存在2dsphere索引的集合名称
near: { type: "Point" , coordinates: [118.783799, 31.979234] } ,
spherical: true,
limit:1,
})
find
db.order.find({"order_info.survey_coordinate" : { "$near" : { "$geometry" : { "type" : "Point", "coordinates" : [118.783799, 31.979234] } } } })
参考:
https://blog.csdn.net/u014230597/article/details/52635190
https://blog.csdn.net/medea_yang/article/details/53436460
作者:matrix
发布时间:2018-11-25
分类:零零星星
GERBER是贝尔代言的求生刀品牌 这刀JD报价2K死贵 https://item.jd.com/1546446.html
虽然没找到荒野求生同款 但是贝爷 家的东西二话不说 收藏都值
去eBay 看了下CNY 405.69,简直感动,但是运费的话按照最快的时间就要CNY202.97 价格比起狗东的要好很多。
刚刚正好从邱总(http://veryatom.com/)那里&小飞&倒唐一起聚了回来取了包裹。周一到今天周末EMS收货正好一个星期 很满意 没有多余费用。之前毕竟没有海淘的经验,只晓得运费贵 时间长 问题多。
eBay上购买的时候要看好商品是否支持邮寄中国,成色,运费这些 收货地址填写 价格合适就拍了。
大致过程参考:https://post.smzdm.com/p/54928/
刚开始怕老外不能打印中文的收货地址就填写的拼音,还好付款之后人家直接发邮件来说明可以打印中文地址信息 这样方便国内揽件。
Tracking number就是运单号 完成之后就是每天刷包裹信息,这把刀是从澳洲店铺买的 澳大利亚邮政包裹查询:https://auspost.com.au/mypost/track/#/search
国际邮政列表:http://www.ems.com.cn/mailtracking/cha_xun_lian_jie.html
到国内后的EMS包裹查询:
http://yjcx.chinapost.com.cn/qps/yjcx
http://intmail.183.com.cn/qps/yjcx
或者使用17track更方便:
https://www.17track.net/zh-cn
开箱图
国外测评YouTube:
VIDEO
贝爷 是大学时候看荒野求生了解的,简直偶像。现在上班都是一屁股坐一天 很少时间走动,体能也差 但是心里很想出去玩玩 向往之~
PEACE
作者:matrix
发布时间:2018-10-29
分类:零零星星
SOAR -- sql Optimizer And Rewriter 由小米运维 DBA 团队开发的sql 智能优化与改写工具20181021宣布开源。
github:https://github.com/xiaomi /soar
安装说明:https://github.com/XiaoMi/soar/blob/master/doc/install.md
测试环境:ubuntu 16.04
安装GO
apt-get安装失败改用
源码下载:https://GO lang.GO ogle.cn/dl/
配置环境变量
解压:
> sudo tar -C /usr/local -xzf go1.11.1.linux-amd64.tar.gz
全局用户的环境变量:
> sudo vi /etc/profile
末尾添加:
export PATH=$PATH:/usr/local/go/bin
go版本查看:
> go version
source更新环境变量:
source /etc/profile
还需要配置GOPATH环境变量:表示go的工作目录 USER_NAME 为用户名
export GOPATH="/home/USER_NAME/go"
安装soar
> go get -d github.com/XiaoMi/soar
> cd ${GOPATH}/src/github.com/XiaoMi/soar && make
若安装顺利,最终会显示success
。否则 build error
我前几次安装都失败
go build github.com/pingcap/tidb/parser: /usr/local/go/pkg/tool/linux_amd64/compile: signal: killed
Makefile:69: recipe for target 'build' failed
之后google找到帖子 有人说是vps内存太低导致的,遂重启了下Ubuntu 重新make
。bingo~
安装成功之后会发现~/go/src/github.com/XiaoMi/soar
多出一个 soar
文件。
执行测试:
> cd ~/go/src/github.com/XiaoMi/soar
> echo 'select * from film' | ./soar
使用soar
常用命令:https://github.com/XiaoMi/soar/blob/master/doc/cheatsheet.md
打印所有的启发式规则
$ soar -list-heuristic-rules
打印支持的报告格式
$ soar -list-report-types
以指定格式输出报告
$ soar -report-type json
语法检查工具
$ echo "select * from tb" | soar -only-syntax-check
$ echo $?
0
$ echo "select * fromtb" | soar -only-syntax-check
At SQL 0 : syntax error at position 16 near 'fromtb'
$ echo $?
1
慢日志进行分析示例
$ pt-query-digest slow.log > slow.log.digest
# parse pt-query-digest's output which example script
$ python2.7 doc/example/digest_pt.py slow.log.digest > slow.md
SQL指纹
$ echo "select * from film where col='abc'" | soar -report-type=fingerprint
输出
select * from film where col=?
将UPDATE/DELETE/INSERT语法转为SELECT
$ echo "update film set title = 'abc'" | soar -rewrite-rules dml2select,delimiter -report-type rewrite
输出
select * from film;
合并多条ALTER语句
$ echo "alter table tb add column a int; alter table tb add column b int;" | soar -report-type rewrite -rewrite-rules mergealter
输出
ALTER TABLE `tb` add column a int, add column b int ;
SQL美化
$ echo "select * from tbl where col = 'val'" | ./soar -report-type=pretty
输出
SELECT
*
FROM
tbl
WHERE
col = 'val';
EXPLAIN信息分析报告
$ soar -report-type explain-digest << EOF
+----+-------------+-------+------+---------------+------+---------+------+------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+------+------+-------+
| 1 | SIMPLE | film | ALL | NULL | NULL | NULL | NULL | 1131 | |
+----+-------------+-------+------+---------------+------+---------+------+------+-------+
EOF
## Explain信息
| id | select\_type | table | partitions | type | possible_keys | key | key\_len | ref | rows | filtered | scalability | Extra |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | SIMPLE | *film* | NULL | ALL | NULL | NULL | NULL | NULL | 0 | 0.00% | ☠️ **O(n)** | |
### Explain信息解读
#### SelectType信息解读
* **SIMPLE**: 简单SELECT(不使用UNION或子查询等).
#### Type信息解读
* ☠️ **ALL**: 最坏的情况, 从头到尾全表扫描.
markdown转HTML
通过指定-report-css, -report-javascript, -markdown-extensions, -markdown-html-flags这些参数,你还可以控制HTML的显示格式。
$ cat test.md | soar -report-type md2html > test.html
PEACE~
参考:
https://github.com/beego/wetalk/issues/32
https://www.oschina.net/news/101034/xiaomi-opensource-soar
https://juejin.im/entry/5bbf21fde51d450e61605d99
作者:matrix
发布时间:2018-09-20
分类:零零星星
mongodb
和mongo
扩展不同
与mongo扩展不同,此扩展是在»libmongoc和»libbson库之上开发的。它为核心驱动程序功能提供了最小的API:命令,查询,写入,连接管理和BSON序列化。
http://php.net/manual/zh/set.mongodb.php
安装扩展
> sudo pecl install mongodb
显示success
完成安装
Build process completed successfully
Installing '/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/mongodb.so'
install ok: channel://pecl.php.net/mongodb-1.5.2
configuration option "php_ini" is not set to php.ini location
You should add "extension=mongodb.so" to php.ini
配置so文件
一般安装成功会自动配置ini文件,但是还需要自行查看确保正常。
确保so文件配置成功 需要查看/usr/local/php/etc/php.ini
文件末尾是否存在extension=mongodb.so
> sudo echo 'extension=mongodb.so' >> 'php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"'
最后pphinfo()输出查看扩展是否存在
参考:
https://github.com/mongodb/mongo-php-driver
作者:matrix
发布时间:2018-09-12
分类:零零星星
前些时间使用看到Alfred的ocr识别插件workflows插件真心不错,超实用的工具 完全胜任图片文字提取的工作。
mac自带的截图快捷工具我常常使用,但是能够截图之后马上对图片进行内容识别 这倒是很稀奇 至少我是这样。
一般专门的ocr软件我很少用 若要临时应急的话就会很麻烦 因为我需要去查找提供ocr识别服务的三方网站服务 然后进行图片上传 之后再复制内容到剪贴板。像这种情况下有个顺手的小工具是多爽 😆 😆 虽然插件也是使用开源库tesseract-ocr
,但是整合到随手调用这就很少有人做了。
安装tesseract开源库
brew install tesseract #使用brew工具
tesseract --version #查看版本号
配置语言包
tesseract --list-langs #查看当前只是的语言
默认自带英文eng
,简体中文为chi_sim
https://github.com/tesseract-ocr/tessdata
下载chi_sim_vert.traineddata
,chi_sim.traineddata
两文件放至/usr/local/Cellar/tesseract/3.05.02/share/tessdata
。其中3.05.02
为你安装的tesseract版本号
安装workflows
下载OCR
此alfredworkflow 被我简单添加了下触发关键字 cn
中文,en
英文
使用
ocr #默认所有中英文语言
ocr cn #指定识别中文
ocr en #指定识别英文
回车截图之后会出现消息通知(响应时间据字符长度而不定)
若内容为空 最好debug查看workflows报错信息
后续问题
自定义修改插件的时候发现有些时候输入的内容无法被Alfred读取 会被自动截断 无任何反应
这里是因为编码转换的问题导致的 确保输入内容以及输出内容的编码 过滤掉特殊字符
php处理:
function force_utf8_safe($str) {
$res = mb_convert_encoding($str, "UTF-8", "UTF-8" ); // replace invalid characters with ?
$res = preg_replace('/\p{Cc}+/u', '?', $res); // replace control characters with ?
return $res;
}
说明:
字符过滤来自于 https://github.com/willfarrell/alfred-encode-decode-workflow
还可以参考它的输入字符处理方式 使用normalise
脚本再处理传入
参考:https://www.alfredforum.com/topic/10141-workflow-arguments-are-always-decomposed/
我的AlfredWorkflows:https://github.com/Hootrix/AlfredWorkflows
参考:
https://www.zhihu.com/question/20656680
https://tonydeng.github.io/2016/07/28/on-the-use-of-tesseract-picture-text-recognition/
PEACE~
作者:matrix
发布时间:2018-09-07
分类:零零星星
Alfred 是mac 上强大的快速启动工具 可以自定义php/shell/ruby/python脚本执行任意操作。比如快速搜索关键字打开网页 查询字符转码 ip。。。这些都是可以自己定义操作的,只是需要一些脚本语言编写的知识。
windows 上有类型的Wox https://github.com/Wox-launcher/Wox
下载Alfred
官网: https://www.Alfred app.com/
工作流workflows自定义脚本的功能在Alfred中是收费的功能,还好 有可用的版本
nmac .to cracked:https://userscloud.com/o3ibe2w7071h/nmac.to_alf37931b.zip
添加/配置workflows
点击Workflows
切换到工作流选项
窗口左下角 「 help + -」,点击 +
->Blank Workflow
开始新建工作流程
填写名称name
,描述Description
,Bundle id
为自己标记的包名id 要确保唯一性。
右边黑色背景窗口中右键 inputs
->Script Filter
添加自定义执行的脚本
配置执行脚本以及触发的关键字
keyword
为触发的关键字 比如alfred启动框框中输入baidu空格query
,baidu
就是触发脚本的自定义关键字,空格后面的query即为查询的参数下面的
Language`即为脚本语言 这里用的系统自带的权限脚本。
#!/bin/bash
ip=$(ifconfig en0 | grep 'inet .*' | sed 's/^.*inet//g' | sed 's/ netmask.*//g')
cat << EOF
{"items": [
{
"title": "${ip}",
"subtitle": "局域网en0 ip",
"arg": "${ip}"
}
]}
EOF
说明:
使用系统bash 查询ifconfig
命令en0网卡的IP信息 管道命令符|
继续处理sed
截取输出结果。
最后使用cat
输出json数据用于Alfred读取并显示到结果列表
items具体参数释义参考下方alfredapp.com链接。
这里arg
是用于复制粘贴/通知等操作的Alfred变量赋值,否则会没反应。如果只是显示查看 可以只设置title
,subtitle
效果就已经比较好了。
点击save
保存
调试
窗口右边有蜘蛛「🕷️」图标 下方的Log
下拉框 选择 all information
便于查看调试信息
启动
option
+space
启动 输入触发关键字
下载
上面只是操作记录 这里可以直接下载:local ip.alfredworkflow
解压缩 直接打开alfredworkflow文件import导入
参考:
https://www.alfredapp.com/help/workflows/inputs/script-filter/json/
https://www.jianshu.com/p/7e1ea4f296c8
https://sspai.com/post/44624
https://www.jianshu.com/p/e9f3352c785f
作者:matrix
发布时间:2018-08-29
分类:零零星星
MTProxy 是专门给Telegram 作加密代理的工具,避免平时打开「酸酸乳」之类工具,经常使用TG都订阅了好多消息类的bot,有这样的代理自己搭建更方便打开即用,搭好了之后可以直接点击tg链接即可完成配置。
要搭建此工具需要有一台国外可以正常访问Telegram 的vps
环境
root@BareInstructive-VM:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04 LTS
Release: 14.04
Codename: trusty
安装
git clone https://github.com/TelegramMessenger/MTProxy.git
cd MTProxy
make && cd objs/bin
curl -s https://core.telegram.org/getProxySecret -o proxy-secret #获取连接tg的密钥
curl -s https://core.telegram.org/getProxyConfig -o proxy-multi.conf #获取tg服务器ip列表 建议每天定时更新
head -c 16 /dev/urandom | xxd -ps #使用linux系统创建伪随机数 32长度字符
#生成随机数密钥 31c3f028f2faf77e9ab45d5c209aa02c
开启
./mtproto-proxy -u nobody -p 8888 -H 8181 -S 31c3f028f2faf77e9ab45d5c209aa02c --aes-pwd proxy-secret proxy-multi.conf -M 1
说明:
31c3f028f2faf77e9ab45d5c209aa02c为前面的随机密钥
8888为本地监听的端口 用于查看统计数据: curl localhost:8888/stats
8181
为对外提供服务的端口(使用的客户端填写的端口)
出现main loop就是正常开启
测试
tg中打开链接 OPEN:
https://t.me/proxy?server=tg.hhtjim.com&port=8181&secret=31c3f028f2faf77e9ab45d5c209aa02c
tg://proxy?server=tg.hhtjim.com&port=8181&secret=31c3f028f2faf77e9ab45d5c209aa02c
错误
make编译遇见的问题
fatal error: openssl/rand.h: No such file or directory
缺少OpenSSL开发包导致的问题
sudo apt-get install libssl-dev
by:https://linux.cn/article-4147-1.html
Makefile:94: recipe for target 'objs/bin/mtproto-proxy' failed
sudo apt-get install zlib1g-dev
by:https://github.com/TelegramMessenger/MTProxy /issues/4
参考:
https://www.jianshu.com/p/d40209b94586
https://github.com/TelegramMessenger/MTProxy
https://liball.me/mtproxy/
一键脚本:https://doub.io/shell-jc7/
1 2 3 4 5 6 7 8 9 10 ... 23