Hello world!
Welcome to WordPress. This is your first post. Edit or delete it, then start writing!
Just another WordPress site
Welcome to WordPress. This is your first post. Edit or delete it, then start writing!
Web服务使用持续集成自动部署时,经常因为一些配置的修改或其他依赖问题造成服务启动不成功,影响使用。为了解决这个问题,今天我们就通过Zabbix监控Web服务是否正常,并推送到Slack,随时掌握服务器的情况。 Zabbix安装 Zabbix的安装有许多方式,这里使用docker的方式进行安装,其他方式可参见Zabbix官网。 首先使用下面命令创建一个mysql容器: docker run –name mysql-server -t \ -e MYSQL_DATABASE=”zabbix” \ -e MYSQL_USER=”zabbix” \ -e MYSQL_PASSWORD=”zabbix_password” \ -e MYSQL_ROOT_PASSWORD=”root_password” \ -d mysql:5.7 \ –character-set-server=utf8 –collation-server=utf8_bin 然后创建Java gate容器: docker run –name zabbix-java-gateway -t \ -d zabbix/zabbix-java-gateway:latest 创建mysql zabbix容器: docker run –name zabbix-server-mysql -t \ -e DB_SERVER_HOST=”mysql-server” \ -e MYSQL_DATABASE=”zabbix” \ -e MYSQL_USER=”zabbix” \ -e…
Windows常用工具 我最早接触到的系统就是DOS系统(暴露年龄哈),现在已经发展到Windows 10了,Windows陪伴我太久了,从以前的游戏,之后的工作,它都是我的主力系统。它给我们带来欢乐与乐趣,已经融入我的生活。即便现在我的主力系统已经不是它,但工作、生活还是离不开。下面我来介绍两款我常用的小工具。 Launchy Launchy 是一个免费跨平台软件,从它的名字就可以看出它是个启动器,它可以快速帮我们启动我们想要打开的软件。 按下启动快捷键(我的是alt+space)显示Launchy主界面。 主界面要包括设置、搜索名称输入框与搜索结果预览框。我们输入需要启动的名称如:word,按回车即可启动。 点击设置按钮进行软件配置界面,主要配置如下: General的HotKey设置激活热键,勾选Hide Launchy when it loses focus,这样失焦时软件自动会隐藏。 Skins根据喜好调整皮肤 Catalog是搜索文件路径,系统会默认指定一些,我们也可以增加自定义软件路径及文件扩展名,如选择一些绿色软件的目录。 Listary Listary是一个文件管理工具(free for personal use only),最主要的功能是在任何地方快速的帮我们查找想要的文件。以前我用的是Everything,因为与系统深度集成与颜值让我选择了Listary。 Listary不用配置开箱即用。在安装后它会有使用引导,很实用,大家按照引导即可快速上手,下面我介绍下我常用的功能: 在任何地方按两次ctrl激活全局搜索,输入想要的文件名称即可。 在其他软件打开文件时弹出的选择文件框也可搜索快速定位,此时切换到File Explorer后,再切回来,选择文件框的路径会自动切换到File Explorer对应的路径。 这两个软件有些功能是重合的,但我觉得应该专业的事交给专业的人(软件)去做,所以我启动文件会用Launchy,查找文件就用Listary。希望能帮助到大家。
2018下半年计划 时光非快,转眼18年已过半,回想上半年,想也半天也想不出个所以然,不禁感慨自己并没有任何计划,每天的时光都是在瞎忙。 正好看到有人正在分享做计划,我也照猫画虎一回。 学习与成长 活到老学到老,首先关注一下学习与成长。 外语 外语我喜欢的是英语,技术开发少不了与它接触,再加上平时喜欢看美剧,所以期待会有些提升。从单词开始,每天都进行背诵,主要以anki为主;其次就是关于阅读,争取做到至少阅读三本英文书,每天都要读一篇英文文章。 阅读 除了刚提到的英文书,还需要从多个角度来扩展自己的阅读面。下半年至少阅读60本书。专业书是老本行,不能忘,占50%;另外经济、管理、心理学各占10%;加上20%平时喜欢关注的效率&成长。 另外也需要关注一些新闻资讯,那就每天定期刷下RSS吧。 输出 之前和一群优秀的小伙伴们一起坚持博文一个月一篇,每次都是最后2天压力巨大,拖到最后才憋出来,造成这样的原因主要是因为没有规划。现在我想把一个月一篇升级为一个月两篇,争取在月初做计划时就规定好题目。 日记,继续坚持写日记(电子),每周一次钢笔字练习。 健康 每日一次晨练,放在早上,不要时间长,贵在坚持。 每周一次禁食日 每周一次素食日 每周二次公共通勤日 作息早5:20~晚11点 每周一次冥想 每周检查 兴趣娱乐 游戏,通关《怪物猎人XX》与《塞尔达传说》,就是喜欢,没的说。 学习围棋,争取多花些时间和孩子一起玩。 每周一次画画。让自己静下来。 家庭生活 每周一次游戏机日,从孩子抓起。 至少二次爬山,感受户外的乐趣。 至少二次游泳。 多去看望父母。 每月一次家庭会议。 计划一次旅行 整理、备份照片 每周一次烘焙 每周一次家庭整理日 社交 每月联系一位老朋友 每月约见一位老朋友 每月认识一会新朋友(有意思的人) 每周与家人通话一次 财务 加强对理财的理解与应用,加强互联网理财方面了解,在指数基金与数字货币方向下些功夫。另外一方面是要创收,做几个自己的项目,先让自己用的舒服,再尝试分享出来。 职业 优化团队工具流。 加强管理。 尽全力帮助公司盈利。 基本就是这些了,先下个小决心,等年底时再说。
这些年流行许多关于整
前文
我们每天要处
需要工具 Cydia Impactor Mac Windows electra Beta 9. ipa Clutch 越狱 连接手机,使用Cydia Impactor 安装electra,此时需要输入Apple ID 帨手机上启动electra点击越狱。 安装Clutch 下载Clutch,配置环境 killall Xcode cp /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/SDKSettings.plist ~/ /usr/libexec/PlistBuddy -c “Set :DefaultProperties:CODE_SIGNING_REQUIRED NO” /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/SDKSettings.plist /usr/libexec/PlistBuddy -c “Set :DefaultProperties:AD_HOC_CODE_SIGNING_ALLOWED YES” /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/SDKSettings.plist 编译,不带签名 xcodebuild -arch arm64 clean build CODE_SIGN_IDENTITY=”” 传到设备 scp build/Clutch root@192.168.1.142: 增加Clutch.entitlements文件 <?xml version=”1.0″ encoding=”UTF-8″?> <!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST…
问题描述 在
原则 编写代码单元应该少于15行,方便阅读、理解、测试、重构,超过15行应提取拆分,直至少于15行。 应用 下面我们通过例子来应用此原则。原代码如下: func initEngine() *gin.Engine { router := gin.Default() m := melody.New() m.Config.MaxMessageSize = 10024 m.Config.MessageBufferSize = 5120 Rooms = make(map[string]RoomInfo) router.GET(“/v”, func(c *gin.Context) { m.HandleRequest(c.Writer, c.Request) }) m.HandleConnect(func(session *melody.Session) { log.Info(“[ws] connect:”, session) }) m.HandleDisconnect(func(session *melody.Session) { log.Info(“[ws] disconnect”, session) }) m.HandleMessage(func(session *melody.Session, msg []byte) { reg, exists := session.Get(“reg”) log.Info(“[ws] message:”,…