今天突然遇到一个问题,使用手机拍摄的照片 5+M 体积巨大,但是网易要求的图片大小需要小于 1M,所以就有了压缩图片的需求。记得很久以前使用过 TinyPNG 这个服务,但是唯一一点不好的就是无法脱离他在线的服务,需要把照片上传到他的网站上才能进行压缩。虽然有 tinypng-cli 这个命令行的工具,但其实也是依赖在线服务的。所以就找了一下,然后发现了 jpegoptim 和 optipng 这两个工具。
jpegoptim
安装
apt-get install jpegoptim
使用
jpegoptim file.jpg
然后使用
Read more ...
今天在看 Kafka 源码 LongSerializer 时看到将 Long 型转 byte 数组的实现,感觉需要补习一下位运算符 (bitwise operator),所以有了这篇。
Java 提供的位运算符有:
左移 ( << )、右移 ( >> )
无符号左移 ( <<<)、无符号右移 ( >>> )
位与 ( & )
位或 ( | )
位非 ( ~ )
位异或 ( ^ )
除了位非 ( ~ ) 是一元操作符外,其它的都是二元操作符。
与或非,亦
Read more ...
小工具
HTTP Server
python -m SimpleHTTPServer
python -m http.server
JSON 格式化
echo '<json string>' | python -m json.tool
验证第三方库安装
python -c "import paramiko"
pip 用法
源码安装
python setup.py install
pip 子命令
子命令
说明
search
Read more ...
威联通的机器本来就是基于 Linux 定义的,所以想要定时任务就会想到 crontab,在威联通中使用 crontab 必须使用 SSH 登录。
然后基本使用 crontab -l 查看当前 qnap 中已经存在的定时任务。
在大多数桌面版 Linux 中会使用 crontab -e 来编辑 crontab 配置,但是注意不要在威联通中使用这种方法,威联通在重启的时候会覆盖使用这种方式写入的配置。如果想要永久的保存配置,应该使用
vi /etc/config/crontab
然后写入配置,比如
0 4 * * * /share/custom/
Read more ...
豆瓣
curl -X GET \
'https://frodo.douban.com/api/v2/group/622198/topics?count=30&sortby=new&os_rom=android&apikey=0dad551ec0f84ed02907ff5c42e8ec70&channel=Google_Market&udid=5e4159565b89f86cccda&_sig=YWtLhd6UEq%2Bh7xDWs%3D&_ts=1529656502' \
-H 'Cach
Read more ...
NextCloud 算是很重度 的使用起来了,VPS 上安了,NAS 上也有。各个平台使用体验非常不错,不过唯一一点缺憾是有些时候 Ubuntu/Mint 上 NextCloud 随机启动之后托盘消失,导致看不到同步进度,老是让我感觉没有启动。
所以为了修复这个问题,需要完成以下两个步骤。第一个步骤就是在 startup applications 中将 NextCloud 设定延迟 10s 启动。
第二步就是需要卸载 appmenu-qt5 这个 bug 可以参考这个 issue
sudo apt remove appmenu-qt5
Read more ...
Java 版本
sh zkCli.sh -server IP:port
查看节点内容
进入 server 连接后使用
ls /
来查看节点包含内容
ls2 /
说明:
ls2 是比 ls 更高级的命令,可以额外输出节点的状态信息,最新版本中 ls2 命令已经被废弃,使用 ls -s 代替。
创建新节点
create 创建新的 Znode 节点,path:路径 data:数据 acl:权限,不指定默认为 world:anyone:cdwra
create /test "mydata"
该命令其他选项:
-s :
Read more ...
Apache [[ZooKeeper]] 是 Apache 软件基金会的一个软件项目,为大型分布式计算提供开源的分布式协调系统,提供的功能包括配置服务、同步服务和命名注册等。Zookeeper 项目的初衷就是为了降低分布式应用从头开发协同服务的负担。
ZooKeeper
ZooKeeper is a high-performance coordination service for distributed applications. It exposes common services - such as naming, configurati
Read more ...
Fabric 在升级 2.x 之后,几乎就是重写了。很多以前的用法都变了,然后在 1.x 时代,本地和远程都是用一套代码处理,但是 2.x 的时候将 local 处理部分和远程处理部分分别拆分为 fab 和 invoke 了,拆分的理由可以参考这里。
以前 Fabric 是不支持 Python 3 的,升级之后的版本可以完美支持 Python 3,然后下面是 Fabric 2.x 的升级理由:
Python 3 compatibility support 2.7 and 3.4+
Thread-safe
API reorganized
Read more ...
总得来说这本书按照微服务的各个内容介绍了一遍,但是只适合入门,并不适合深入了解。看完可以对什么是微服务有一个大致的了解,对于自己实现一个微服务架构还是需要更多的阅读。
第 1 章 原理
微服务架构的目的是为了解决传统单体应用在业务急剧增长时遇到的水平扩展问题。通过拆分服务,将微服务系统中的服务划分明确的职责,做到低耦合,高内聚。
微服务交互模式
读者容错处理
消费者驱动契约模式,服务提供者向所有消费者承诺遵守的约束,一旦消费者把具体期望告诉提供者,提供者无论在什么时间和场景下,都不应该打破契约。
两个概念:
水平扩展,扩展单节
Read more ...