缘由    git 目前已经是非常流行的版本管理工具了。当时我在安居客的时候就已经使用这个工具了。而代码私有化管理是正常的一个需求,因为代码也是公司的资产。这几年使用过好几个,最开始的是gitlab,我专门写过一篇文章:用GitLab搭建自己的私有GitHub。然后是gogs。目前我们使用的是gitea。Gitea    gitea是从 gogs发展而来的,我个人使用过程发现感觉比gogs安装和使用都方便,还有是开源的。这点必修要佩服哪些开源的人和团队,因为有了这些开源工具才让我们研发效率更高更快。具体更详细的介绍,可以看官方文档,具体链接我放在参考资料部分了。准备gitea需要数据库记录基本信息,数据库我选用的是MySQL安装  二进制安装最简单,参考地址:二进制安装文档 。下载执行就好了wget -O gitea https://dl.gitea.io/gitea/
  缘由    我们有个同事要安装一个软件,就用yum 安装,然后就悲剧。安装完成之后 发现无论执行任何命令都会报错,如下错误psgrep: relocation error: : /usr/lib64/libpthread.so.0: relocation error: symbol __libc_dl_error_tsd, version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference/usr/lib64/libpthread.so.0: symbol __libc_dl_error_tsd, version GLIBC_PRIVAT
  起源        最近发下很多人在我的python课程下面提问,关于执行python 定时器Job会报错 如下In aggregated query without GROUP BY, expression #1 of SELECT list contains出现原因        在MySQL5.7.5后,默认开启了ONLY_FULL_GROUP_BY,所以导致了之前的一些SQL无法正常执行,其实,是我们的SQL不规范造成的,因为group by 之后,返回的一些数据是不确定的,所以才会出现这个错误。解决方案        我们知道了原因,就可以去找到对应的解决方法,主要都是修改
燃点        最近在查阅很多人的github的时候发现他们的首页都非常个性化,感觉挺新奇的,就去了解了如何配置个性化github首页效果展示动手实践        这个小彩蛋不知道是否一直都有,反正是被发现使用的时间好像不长。主要原理就是 github的这个个性化首页会 自动记载获取 和你用户名一样的一个仓库。如下图创建一个和自己用户名一样的仓库,然后README.MD 就可以写个性化首页的内容了后续计划        后续在做一个自动化同步脚本,将博客文章同步到github首页,参考该首页推荐资料        更多的彩蛋玩法 请大家查看: awesome
缘由    由于公司系统相对来说还是挺多的,定时任务也非常多,一直使用crontab配置存在几个问题。这几个问题只要使用该方式应该都会深有感触。问题一管理维护问题:定时Job太多,不清楚总共有多个Job,不知道每个Job到底是谁写的主要功能是什么。如果Job部署在多台服务器那就更要人命了问题二调度监控问题:crontab在一定程度上解决了调度问题,但是调度不光光是运行状态。在实际工作中还会关注,什么时间运行的,运行了多长时间,运行状态,消耗多少内存等等技术选型    该项目使用python语言开发,其实用php等其他语言也是可以的。但是对于这一类运维类系统 使用Python开发比较容易维护些。而使用Python的话,我们也可以基于前面介绍的 Flask CMS V2框架。该Jobs系统应该也算是第一个基于我们 Flask CMS V2 开发的应用项目了。功能特性教程文档Jobs(乔布斯)管理调度平台 
ELK简介ELK是什么?    elk是三个开源软件的缩写,分别是:Elasticsearch、Logstash、Kibana 。由于Logstash 客户端太占用资源,对服务器的要求比较高,后来FileBeat出现了 ,解决了资源问题,官方也推荐这个工具。    Elasticsearch:实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能    Logstash:日志收集,分析,过滤并转化到对应的存储库    Kibana:一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据    Filebeat:监控日志文件、转发。 需要收集数据的服务器端需要安装这个架构图如上图你可以看出来,FileBeat 将数据 通过队列 发给 Logstas
缘由        随着工作时间越来越长,收藏的网址越来越多,并且会越来越多。我个人有非常喜欢收集喜欢文章的网址。最开始用的Chrome浏览器收藏夹,用到最后发现完全找不到网址了。其实主要问题如下几个收藏太麻烦,浏览器的收藏快捷键还要多次确认和选择分类各种网站收藏资源比较分散,最后搞得自己都忘记了在哪里收藏过各种收藏网站搜索太麻烦,要么有的就没有想法        其实以前我不会开发chrome插件,但是直到我使用过一些插件之后给了我思路和想法,就决定开发一个插件来解决我遇到的问题。Chrome 插件本身是挺好学的,看看我收藏的几个文章基本就会了CTBox特性右键收藏,一键必达,非常方便选中文字收藏:给链接加描述快速进去收藏夹支持搜索,编辑,分享,删除,加星安装教程        点击这里进
起因        最近总是遇到悲催的事情,这次的事情更悲催,某机房提供服务供应商跑路了,早上10点多通知 晚上6点断电,我X你的仙人板板。抱怨归抱怨,但是烂屁股的事情还得擦。 没办法只能换机房了,幸好早都勾搭上了一家高防供应商。但是迁移也是一个麻烦事情。        窘境需要备份的文件过大        目前这边公司的主要提供广告服务,所有各种图片,静态页面比较多,图片总共差不多80G(分别是30G、50G 两个文件夹)待迁移的服务器过多    大概负责3个公司,高防机器总共5台。在相对差不多8个小时(其实不到6个小时,因为整理好这些机器的业务之后差不多12点了)要处理好这些迁移事情,时间总体来说肯定是不够的
悲催的事情    今天下午2点多(时间发生故障的时间是14:14 ,反馈时间却是:14:25 )收到运营推广部门同事告知,网站打不开了,这个烦呀,怎么会打不开了,由于以前的系统有问题,都重新写了,切换到新的系统上面了,打不开就直接报错了,报错页面如下分析过程 找到错误日志               出现错误不可怕,这一点我们必须第一时间明确,千万不要担心,担心解决不了任何问题。 对我们最有帮助的就是各种业务日志。通过查阅日志得出如下的错误,当时出现了大量的错误日志curl: (56) Recv failure: Connection reset by peer       
缘起        最近在网上看到一个非常厉害的项目:https://github.com/ouyanghuiyu/chineseocr_lite  ,可以进行图片OCR识别,并且识别率还可以,关注这个是为了风控系统中的网页图片识别做技术储备。大家可以去看看非常不错的一个项目问题    在运行过程中遇到了几个,大致问题如下截图。总结起来就是去三个共享库,这三个共享库是 opencv-python 需要的:libSM.so.6、libXrender.so.1、libXext.so.6 解决方案sudo yum install -y  libSM.x86_64 libXrender.x86_64  libXext.x86_64效果展示OCR识别效果非常不错,后面我要
缘由最近在录制 从不知到全面了解HTTPS  这个视频,在使用acme.sh 申请ssl证书的时候 ,安装脚本出错,错误信息大致如下curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused解决方案绑定hosts的方式  $ vim /etc/hosts 199.232.68.133 raw.githubusercontent.com
  每次使用sudo su切换为root用户的,时候,发现/etc/profile里面的配置竟然不可用系统是centos 6.4的,然后研究了一下 /etc/profile  /etc/environment(这个文件为空,那就是什么都不执行)  ~/.profile  /etc/bashrc  ~/.bashrc当用普通用户登陆的时候,会执行    /etc/profile   /etc/bashrc 当使用sudo su切花的时候,会执行   /etc/bashrc    ~/.bashrc(会内部调用 /etc/bashrc)所以可以在 ~/.bashrc  最后一行加入  source  /etc/profile/etc/profile:在登录时,操作系 统定制用户环境时使用的第一个文件 ,此文件为系统的每个用户设置环境信息,
缘由    Python在AI,AR VR这块使用越来越广泛。同时在Web方面也有很多成熟的框架。而我本身由于使用Flask 比较多,个人认为就是比较简单,容易入手,可定制化强。这里我将我经过多个项目多次迭代的自认为还可以的框架结构整理出来。方便自己可以更容易创建新项目。    大家也知道我录制了两门关于python的课程都是基于这个定制化的分层结构的框架开发系统的目录结构. ├── api  api存放 │   ├── controllers 所有的C层放在这里 │   ├── interceptors 拦截器相关 ├── application.py  封装的Flask的全局变量,包括app,数据库等 ├── common 存放
缘由由于过年期间,大家都在外地,临时需要登录FTP,特别2020年面临肺炎事件,大部分员工都在家办公了。但是非常奇怪的是 一直出现如下 错误ftp> ls 500 Illegal PORT command. ftp: bind: Address already in use ftp> ftp> dir 500 Illegal PORT command.解决方案我开始还以为是网络问题,但是测试各种情况,都不行。然后就上网查看了相关资料发现是防火墙设置的问题。通过如下解决问题局域网用FTP命令访问外网的FTP SERVER,执行任何命令(如dir,ls,put,get)总是报下面的错误 ftp:500 Illegal PORT command. 425 ftp:Use PORT 
缘由由于我个人有个小博客,然后还录制了一些课程,所有就建立了对应的微信群,但是微信群的二维码是变化的,总不能经常换了。所以就想搞一个微信机器人,自动加 微信,自动拉群。废话不多说,先上图效果展示大家可以试试效果,效果相当棒需求其他人可以通过二维码加我好友 自动通过好友通过之后 主动发送一些邀请入群链接和介绍信回复 邀请 、加群 可以发送邀请入群链接所有聊天数据都要存储起来 并且可以通过Web展示根据用户输入信息 回复相关内容技术选型Python3Flask:轻量级的MVC 框架itchat :实现微信API相关接口MySQL:存储相关微信内容图灵机器人:调用API实现主动场景回复架构本人没有使用flask 默认的MVC方式,使用了我自己实现过后的:结构分层明了的MVC框架 。结构如下每一个文件夹都有自己明确的作用├── application.py ├── common │   ├── libs │  &nb
我们都知道CSS盒模型分为IE盒模型和W3C标准盒模型,它们的计算方式和一个CSS属性有关box-sizing。box-sizing属性值content-box | border-box 默认值:content-boxcontent-box当我们对元素设置content-box.demo1 {   box-sizing: content-box;   width: 200px;   height: 200px;   padding: 20px;   margin: 10px;   border: 5px solid #333; } 复制代码在浏览器具体表现为border-box当我们设置成border-
  家里有一条电脑作为存储,安装了redis 服务,但是后面发现redis服务经常有问题,想卸载无法卸载sudo apt remove redis-server Use 'sudo apt autoremove' to remove them. The following packages will be REMOVED:   redis-server 0 upgraded, 0 newly installed, 1 to remove and 202 not upgraded. After this operation, 919 kB disk sp
使用模态框,一般都会自动带上一个属性,tabindex="-1",因为这个属性的存在,导致select2的搜索框无法输入,去掉这个属性即可解决 html中的tabIndex属性可以设置键盘中的TAB键在控件中的移动顺序,即焦点的顺序。   把控件的tabIndex属性设成1到32767的一个值,就可以把这个控件加入到TAB键的序列中。
  问题一 :somaxconn redis启动警告问题:WARNING: The TCP backlog setting of 511 cannot be  enforced because /proc/sys/net/core/somaxconn is set  to the lower value of 128. 这句话的翻译大概就是:对一个高负载的环境来说tcp设置128这个值,太小了。  这是我的理解,绝对的还需到官网理解。然后我们可以手动设置,或者设置永久值临时解决方案echo 512 > /proc/sys/net/core/somaxconn长期解决方案sudo vim /etc/sysctl.conf #ne
缘由最近帮朋友看一个直播网站的源码,发现这份直播源码借助 阿里云 、腾讯云这些大公司提供的SDK 可以非常方便的搭建一个直播网站。下面我们来给大家讲解下如何借助 腾讯云 我们搭建一个简易的 直播示例云直播架构主要分三部分1:直播端 通过设备 直接通过 直播服务提供方 的推流 地址 进行直播视频,这些直播流视频 会推送到  直播服务提供方  直播服务器云存储2:直播服务提供方  会将 云存储的 视频流 转发到 CDN 节点3:观众 就通过 各种终端 看直播(此时就会根据不同游客 会 访问不同的节点 )生成推送流URL根据 腾讯云直播官方  https://cloud.tencent.com/product/lvb 介绍,所有用户都可以领取20G 的流量,够我们测试了。 准备工作1:官方注册账号 领取20G流量 官方地址: https://cloud.tencent.com/product/lvb2:需
需求背景在上一个章节我们讲究了私有云的部署,但是会有一个问题,我如果在外面,如何访问家里电脑上部署的私有云服务?其实这个问题在扩大化说 就是 如何可以在家庭网络以外 可以访问到 家庭网络:公网 访问 内网。内网转外网顾名思义:就是想办法把自己的内网机器 可以直接 让外网可以访问。由于我们互联网技术不是我们国家发明的,在加入互联网之后我们分配到的公网IP也不多,不像美国人口少IP还多,基本每家都有公网IP(好羡慕)。在我们国家需要公网IP必须要购买服务器或者家里安装电信网络。而我家的情况安装了电信公司提供的网络服务有一个 不固定的公网IP。我们的文章我主要解释我家里的网络情况。后面会介绍几种非网络服务商提供的公网IP的方式。电信网络公网IP如上图,通过ip138可以查询到,我的出口IP是上图。切记非电信供应商截图的IP不一定是通过你家,可能是通过多种路由设备转入到你家,这种就不行的。可以看到电信猫的管理界面IP和 ip138查询的一样,就说明我家的IP是公网IP如上图,我家里的网络是 电信
  背景最近做智能家居,需要用到一些应答词 需要自己录制。但是在mac下面通过 QuickTime 录制的是 m4a格式。但是应答词需要 wav格式。所以就需要转化了解决方法# sox 不行, ffmpeg 很麻烦,用 avconv 很简单。安装 如果没有就安装 # apt-get install libav-tools  avconv -i xx.m4a  xx.wav
需求背景工作多年之后发现有太多的电子资料到处存放。个人电脑是Mac,硬盘都不大,放不了太多东西。并且有时候想随时随地存放一些东西。所有就有了大家一个私有存储的需求个人休息在家经常喜欢看电影电视剧,所有就有个想法,上班空隙可以下载自己喜欢看的资源,然后晚上或者休息日可以直接在电视上看,这样就想到了通过DLNA服务来和私有云结合起来效果图私人存储PC手机端DLNA智能电视硬件准备上图是我家的私人机房,是不是很牛逼。哈哈。我们整个系统都搭建在Mini PC(如果只是个人测试可以随便搞个虚拟机就行了)上,非常小。适合放在家里。本人在京东购买的,有需要的可以私聊具体信息。硬件信息如下操作系统:Ubuntu 18.04硬件配置:8G内存 + 1T机械硬盘 + 4个CPU环境:nginx + fpm私人云:NextCloudnextcloud简介nextcloud 是一个php开发的软件,官网地址:https://nextcloud.com/  。官网提供app方便移动上传。同时PC端提供了
缘由为什么要做AIROBOT?其实自从我知道智能家居这个领域之后,就一直想打造一个自己的智能家居控制平台,算是我的一个梦。最开始的项目还是在安居客当时工作的时候做的,项目地址:https://github.com/apanly/autohome 需求是什么就像我们在公司开发产品一样,要先知道自己想实现什么需求,才能动工。其实本人最开始的想法就是能够控制家里的家电,例如电视,空调。现在目前变的越来越多,也发现需要掌握和学习的东西也越来越多了。技术选型操作系统:Ubuntu 18.04硬件配置:8G内存 + 1T机械硬盘 + 4个CPU。在JD沟通的一个minipc,为什么不用树莓派直接做,主要还是功能和需求越来越多,树莓派已经无法满足需求了框架:Python + Mysql + Flask项目地址:https://github.com/apanly/pi3Robot Show Time机器人微信通知生日到了前几天就会发微信通知提醒啦总述根据上面的截图,后面会一个一个给大
问题今天我在启动虚拟机过程 遇到莫名其妙的问题,启动不了。如下图。提示某个文件系统错误了。例如我的就是 /dev/mapper/vagrant--vg-root 。上面问题 可把我急坏了,以为虚拟机坏了。最后找到了解决方法,分享出来。解决方法在 如上截图的命令行 直接输入命令: fsck  /dev/mapper/vagrant--vg-root  。奇迹就发生了,居然好了。哈哈
问题最近把mac的操作系统升级到了最新版本发现了一个问题,通过共享文件夹的方式 修改的文件,无法立即同步到虚拟机中,大概需要30秒才能同步到共享文件夹。操作环境如下虚拟机:Virtualbox虚拟机操作系统:Ubuntu16.04虚拟机管理工具:Vagrant物理机:Mac  High Sierra  10.13.4现象截图正常截图修改文件之后的截图可以发现,当修改之后 通过终端查看文件发现 直接提示 error了并且文件的权限也不对了都变成?了 (如上图)苦恼每次修改一个文件都要等一会才能看到效果,非常急人,不是我们互联网人的追求效率的做法。那我们就要想办法解决。我知道肯定是升级系统造成的,但是不知道如何解决,就Googole了很久,终于找到了解决方法解决方法设置vagrant 目录同步的 :mount_options => ['actimeo=2'] 。修改完成如下config.vm.synced_folder "
开场白一转眼工作将近7个年头,时间过得好快哇。年少不懂事,上天惩罚我,婚也结了。不要暗恋哥,哥已是传说。恍恍惚惚过了这么多年,想整理下个人技能树,也提醒下自己我的技能树经常看到各种技能树,那我也来一发,我认为作为一个研发人员,不应该只会自己领域内的东西,不要让自己的路越走越窄。熟话说:技多不压身,有精力就多学点了。如下图(点击打开大图:我要看大图)个人实战过得系统工作这么多年,做过了不少东西,想到就列出来,其他零星小的就不说了个人博客地址:http://www.54php.cn 虚拟化Vagrant :http://www.54php.cn/default/26.html RBAC:http://www.54php.cn/default/42.htmlYii2打造后台+微信全栈图书商城: http://book.54php.cn/ Python3 + Flask构建微信小程序订餐系统:https://food.54php.cn/ 快速上手Linux 玩转典型
需求如果你想在树莓上拍照或者录影,你可以安装树莓派的摄像头(有点贵)。如果你不想要为摄像头模块花费额外的金钱,那有另外一个方法,就是你常见的USB 摄像头。你可能已经在PC上安装过了。我买的如图的这款本篇文章讲解的就是 在树莓派上使用USB摄像头检测摄像头$ ll /dev/video* crw-rw----+ 1 root video 81, 0 May 20 23:57 /dev/video0 $ lsusb Bus 001 Device 005: ID 248a:8367 Bus 001 Device 004: ID 1415:2000 Nam Tai E&E Products Ltd. or&
需求个人正在用Python写一个控制系统,技术选型是python3 + Flask + Mysql + Bootstrap。需要将这套系统直接部署到树莓派中.代码地址:https://github.com/apanly/pi3Robot 目录结构准备sudo mkdir -p /data/www sudo chown -R pi:pi /data/www mkdir -p /data/www/logs     .     |-- logs     |-- pi3Robot 代码存放位置     `-- pythonenv 虚拟环境python虚拟环境python 源$ mk
缘由本周技术群有一个同学说我们该怎么实现 由近到远的基于地理位置的搜索,我创业做电商的系统做过类似这样的服务,我把我们以前的操作给大家分享下什么是LBSLBS 全称是 Location  Based Service ,基于位置的服务。我们可以使用到这种服务,真是由于我国移动设备的大量增加,让我们加速进入了 移动互联网的时代。由近到远的基于地理位置的搜索  其实就是 通过当前使用用户的经纬度,然后从我们自己的数据库中查出指定范围内(例如5km)的数据,按照由近到远的顺序 进行展示。这句话中有四个条件用户的经纬度,我们定义 用户维度为:$lat 、经度:$lng指定范围,定义范围:distince数据库中商家的经纬度字段,定义 维度为:lat,经度:lng计算 用户经纬度 与 数据库中商家的经纬度 距离,由远及近进行排序接下来,我们一起来用两种方案实现实现方案一:这种方案会比较挫,理想模型计算阀值点计算某个经纬度的周围某段距离的正方形的四个点为什么这么计算,我给大家举个例
  • 微信公众号 微信小程序
  • 微信机器人
  • 群1:1046090432
  • 群2:585567981