公司的技术栈    公司经历了1年的发展,慢慢也使用了很多技术服务。感觉创个业把上海学到的全部知识都搬出来了。我们主要技术栈如下技术团队组成    公司技术团队主要由前端 + 后端组成。运维岗 和 App研发岗 都算在后端或者前端里面去了。目前招聘的大部分后端是写PHP的,但是如果会Python 或者Go 会加分。这里不讨论语言的哪些破事。组建团队要根据当地的人才组成和自己公司的实力出发。例如我个人强项是PHP和Python,Java虽然会但是基本都忘记的差不多了,那我就会以我擅长的招聘,总不能来了全是Go,我自己都不知道如何去评价代码质量了。网络    就像我其他文章里面说的,我懂个锤子的网络。都是被逼出来的,公司搬迁到新的办公室。那么大的办公室网络总得搞起来,不说多么正规,最起码要保证上网速度了。那就提前了解下,慢慢知道这些网络设备是干什么的的了。为了省钱,我们所有
缘由    我们在大数据数据里面有一类数据是 域名,例如 www.jixuejima.cn ,我们需要把 cn 和 jixuejima.cn 提取处理,这个其实就是TLD(TOP LEVEL DOMAIN)顶级域名解析过程。    大家看过我们前面ELK相关文章的,都知道我们处理过程是 FileBeat -> Redis -> LogStash -> ES 。在 聊聊公司的技术栈  这篇文章中我就说过这个过程,但是肯定很多人很郁闷,为什么不能直接从FileBeat 直接 到 ES。其实就是因为原始数据要结果处理之后才能进入ES,而FileBeat处理能力是有限并且是非常差的(至少我们在使用过程中发现就是这样的一个结果)。解决方案    logstash有很多插件可以用,找了很久发现了一个 : https://gi
缘由        最近看到了2个项目,促使我再次核查了以下这个软件是什么。这两个项目是 webterminal 和 jumpserver 。这两个项目里面都有一个功能 运维审计,用户行为录像。挺好奇这个录像怎么做的,就去找了下有咩有类似的开源软件。其实以前在上海安居客的时候我们运维也有这种软件,但是具体是不是叫这个名字我不太清楚,我个人觉得这种录屏软件挺神奇了 就想了解下,当然由于种种原因 直到本周我才认真查阅了下,找到了这个可以实现这个功能的软件:asciinema介绍        asciinema 是一个开源命令行终端录制器,它可以将命令行输入输出的任何内容加上时间保存在文件中,同时还提供方法在终端或者web浏览器中进行回放。asciinema的录制和播放都是基于文本的,相比传统的video有很多好处,例如录制
  缘由    我们有个同事要安装一个软件,就用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
  缘由        最近我们一台高防服务器,在同步服务器时间时报 no server suitable for synchronization found,最后经查实是机房屏蔽了udp端口所致,因为ntpdate同步时间使用的是udp123端口。rdate解决方案        既然ntp不行我们改用rdate 完全可以解决因国内一些高防机房屏蔽UDP端口而造成的时间无法同步问题。同时rdate使用的端口是37安装yum install rdate同步安装完成之后可以先手动同步 : /usr/bin/rdate -s time.nist.gov 。最保险的方式是配置定时任务 每10分钟或者半个小时执行一次*/10 * * * * /usr/bin/rd
起因        去年在广州开发了一套系统,今年在3月份有人告诉我说系统可能被入侵了,数据被盗了。我说不可能哇,这点自信我还是有的。因为自己开发的系统里面的每一行代码我都是亲自看过的。但是既然有反馈我们就要去看。后来我真发现有人入侵,真是啪啪的响呀。分析过程        其实我个人对安全领域懂得都是皮毛,但是好在分析入侵比攻击会简单点。凭着我的五毛钱的功底以及福尔摩斯般缜密的思维,还真被我发现了痕迹。这里要说一下发现痕迹千万急着清理入侵文件,保留好,因为知道入侵了但是我们还要学习下人家的入侵手段,方便以后更好的防御嘛。接下来我们说说我发现入侵痕迹的过程服务器日志        在服务器初始化的时候一定要最好基本的运维工作,例如nginx的日志和日志
燃点        最近在查阅很多人的github的时候发现他们的首页都非常个性化,感觉挺新奇的,就去了解了如何配置个性化github首页效果展示动手实践        这个小彩蛋不知道是否一直都有,反正是被发现使用的时间好像不长。主要原理就是 github的这个个性化首页会 自动记载获取 和你用户名一样的一个仓库。如下图创建一个和自己用户名一样的仓库,然后README.MD 就可以写个性化首页的内容了后续计划        后续在做一个自动化同步脚本,将博客文章同步到github首页,参考该首页推荐资料        更多的彩蛋玩法 请大家查看: awesome
缘由在前段时间我们进行服务器迁移的过程中 由于使用了多服务器 增加了反向代理,导致页面在另一台机器打不开。原因是因为我们触发了一个nginx默认规则,这里记录一下仅供大家参考。演示环境基础信息域名:www.testnginx.com   目录结构:. ├── a │   └── index.html └── a.html注解:在根目录,我们有一个 a.html 和 a的文件夹nginx配置server {     charset utf-8;     client_max_body_size 128M;     listen 80;     server_name www.testnginx.com;
起因大家都知道我有个 Python Flask构建微信小程序订餐系统  课程。这个课程主要是讲解 小程序在线商城的。但是有很多学生小程序的账号是没有支付权限的,那么如何完成整个闭环课程的学习咧?接下来我来给大家讲解整个过程。实现过程原理其实很简单,就是模拟支付完成跳过支付过程。这里我用两种方案给大家实现。如下图,由于没有支付权限 就会导致 支付回调 没有。那么我们就得做一件事情:模拟支付回调等于就是自己做一个入口 可以调用支付回调的业务逻辑就行了 也就是C方案一:web模拟回调废话不说,直接上代码''' 模拟回调方法 其实所有回调基本都是校验合法性 然后找到订单id,所以我们模拟就是直接传递 订单id 访问url(可以使用浏览器直接访问) : api/order/callback2?id=xxxx xxx 就是你想把某个订单设置为成功的订单id值 ''' @route_a
缘由    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 
起因今天登陆服务器想查看一个端口的占用情况,发现好多TIME_WAIT的情况,吓我一跳。如下是TCP 建立连接的示意图缘由time_wait的作用TIME_WAIT状态存在的理由: 1)可靠地实现TCP全双工连接的终止    在进行关闭连接四次挥手协议时,最后的ACK是由主动关闭端发出的,如果这个最终的ACK丢失,服务器将重发最终的FIN, 因此客户端必须维护状态信息允许它重发最终的ACK。如果不维持这个状态信息,那么客户端将响应RST分节,服务器将此分节解释成一个错误(在java中会抛出connection reset的SocketException)。 因而,要实现TCP全双工连接的正常终止,必须处理终止序列四个分节中任何一个分节的丢失情况,主动关闭的客户端必须维持状态信息进入TIME_WAIT状态。   2)允许老的重复分节在网络中消逝  TCP分节可能由于路由器异常而“迷途”,在迷途期间,TCP发送端可能因确认超时而重发
我们都知道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-
缘由个人在后台获取了一个新浪图片,最近新浪图片无法展示了,看了下http请求返回状态是403。说明被限制住了。原理一般这种限制都是 通过判断 referer 或者请求来源IP 是不是信任的。解决方案方案一增加如下代码在head头部,但是就会导致所有的请求不会有referer ,这对于我们正常完整进行溯源不太友好方案二可以使用反向代理解决下,通过代理服务器 中转下就可以了。个人推荐第二种方式。但是这样会占用服务器的流量效果不要眨眼。哈哈。采集了一些图片
仿知网https://www.cn-ki.net/仿知网是一个完全可以代替知网的精品网站;是一个非常强大的论文搜索网站。首先这个网站的论文检索结果和知网的搜索结果基本一样,而且这个网站每个账号前期免费提供论文下载,当你的下载次数没了,你完全可以用其它邮箱再注册其它账号使用;当然,如果你不想再注册账号,这个网站提供一块钱随意下载论文一天,也是非常值得尝试。总体而已,如果需要下载论文,这个网站是一个非常好的选择。全球电视直播http://bddn.cn/zb.htm全国电视直播是一个功能非常强大的电视直播网站,真的是十分良心;电脑推荐使用 edge 浏览器打开或者使用其它浏览器打开,然后右键复制视频地址,potplayer 打开链接也可以播放;注意:电脑直接用浏览器打开可能播放不了,手机可以正常播放。它支持几百个电视直播的网站,几乎拥有一般电视直播网站拥有的所有频道,它还支持港澳台卫视,国外电视等等。它还有的特点就是电视直播播放速度和加载速度非常之快,画质也是十分高清;最后,网站界面简洁,没
  问题一 :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
  缘由由于个人经常在ubuntu和centos 系统中切换,习惯了以前的 ubuntu中 通过 /etc/init.d/xxx 进行软件服务控制。后来发现centos7中换了服务的控制方式:serviceservice关键字service httpd start 其实是启动了存放在/etc/init.d目录下的脚本。但是centos7的服务管理改规则了。CentOS 7继承了RHEL 7的新的特性,例如强大的systemctl,而systemctl的使用也使得以往系统服务的/etc/init.d的启动脚本的方式就此改变,也大幅提高了系统服务的运行效率。但服务的配置和以往也发生了极大的不同,说实在的,变的简单而易用了许多。CentOS 7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,像需要开机不登陆就能运行的程序,还是存在系统服务里吧,即:/usr/lib/systemd/system目录下每一个服务以.service结
开场白一转眼工作将近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 玩转典型
  需求希望每天早上上班之前可以自动语言报告下今天的天气情况准备树莓派3音响(前面已经配置了音响)环境python3获取天气信息本次我们使用的是墨迹天气,我住在浦东,就获取浦东的天气,浦东墨迹天气。源代码地址:https://github.com/apanly/pi3Robot/blob/master/jobs/tasks/weather/index.py文字转语音(TTS)我选择了一个快速可以实现,拿起来就可以用的一个Http Api。我从百度语音演示页面通过开发者工具发现这个api的,拱大家使用。http://tts.baidu.com/text2audio?idx=1&tex=你好,我是编程浪子&cuid=baidu_speech_demo&cod=2&lan=zh&ctp=1&pdt=1&spd=4&per=4&vol=5&pit=5然后根据mplayer 直接播放这个网址就可以啦定时任务使用linux的
下面是详细步骤:1. 首先确定进程的 ID ,可以使用 jps -v 或者 top 命令直接查看2. 查看该进程中哪个线程占用大量 CPU,执行 top -H -p [PID] 结果如下:可以发现编号为 350xx 的共有 9 个线程占用了 100% 的 CPU,好,接下来咱们随便取一个线程 ID ,假设我们想看编号为 35053 这个线程。首先将 35053 转成 16 进制是 88ED (可以用开源中国在线工具转换)3. 接下来我们将进程中的所有线程输出到一个文件中,执行:jstack [PID] > jstack.txt4. 在进程中查找对应的线程 ID,执行:cat jstack.txt | grep -i 88ED结果是:"HTTP Request From : /xxxx/blog/323432(120.27.143.239)" #266 daemon prio=5 os_prio=0 tid=0x00007fcda4146800 nid=0x88e
缘由本周技术群有一个同学说我们该怎么实现 由近到远的基于地理位置的搜索,我创业做电商的系统做过类似这样的服务,我把我们以前的操作给大家分享下什么是LBSLBS 全称是 Location  Based Service ,基于位置的服务。我们可以使用到这种服务,真是由于我国移动设备的大量增加,让我们加速进入了 移动互联网的时代。由近到远的基于地理位置的搜索  其实就是 通过当前使用用户的经纬度,然后从我们自己的数据库中查出指定范围内(例如5km)的数据,按照由近到远的顺序 进行展示。这句话中有四个条件用户的经纬度,我们定义 用户维度为:$lat 、经度:$lng指定范围,定义范围:distince数据库中商家的经纬度字段,定义 维度为:lat,经度:lng计算 用户经纬度 与 数据库中商家的经纬度 距离,由远及近进行排序接下来,我们一起来用两种方案实现实现方案一:这种方案会比较挫,理想模型计算阀值点计算某个经纬度的周围某段距离的正方形的四个点为什么这么计算,我给大家举个例
  预祝大家端午节安康~~今天想和大家聊聊的心灵鸡汤主题是:为撒要爱惜自己的羽毛。羽毛是什么?其实在2年前,我也不理解羽毛是什么。只是我的老大们经常在说。这里的羽毛是自己的名声。例如你在公司就是 公司同事对你的评价和认可度。在朋友圈就是朋友对你的亲密和信任度。在某个具体行业 就是 你在业界的知名度。总结就是:认可度、信任度、知名度如何建立?想要建立认可度、信任度、知名度 绝非一蹴而就的,需要时间积累。我个人有感是通过三年积累起来的。而在这三年里,我是通过了无数件事情和努力,让他们觉得我是靠谱的、交给我的事情不用担心。其实这也是个人成长的阶段,只有当你的思维真密度 和 老大们的意识在慢慢靠近的时候,说明你快要被认可了。如何做到?多做事,少废话。我记得我当时做了好多系统,例如ipublish发布系统、Job管理平台、CMDB运维系统、Ansible打造业务标准机、数据库性能分析系统等等。别人认识你都是通过具体的事情和你接触,然后慢慢对你有了理性的打分要走出去,要有分享精神。你懂得东西再多,如果你
  技术界没有银弹,只有你自己不断的提高自己,练好内功,方能在未来指点江山对技术要有追求,要学会偷懒,经常完善自己的编程思想 迷惑一最近有好几个人问我,说:工作已经1年左右,每天都在忙,感觉技能方面没有什么提升,感觉到对技术方向的迷茫。迷惑二有很多人本身有点眼高手低,只要一听到干货就打了鸡血,干什么都要看看是不是干货迷惑三我只想写个能运行的代码就行了,请不要和我讲那么多编程思想的问题迷惑四普通工程师和高级工程师的差别在哪里?我以我这几年的工作经历和大家来唠唠这迷惑之一二三四说首先这两个阶段我都经历过,我刚开始来到上海这个陌生的大城市当年的确就是凭着一股不服输勇气支撑着我(Too Young Too Simple)。今天当然也感谢当年那次的决定,不然也不会有今天的我第一份工作是为一个公司(BAT之一)做外包项目,当时真的蛮辛苦的,经常半夜还在加班,由于是第一份工作当然非常开心并且干劲十足。那时候我记得我只用了三个月就已经熟悉了公司的框架以及外包公司框架。那时只要有时间(经常三更半夜)
  当使用php5自带的file_get_contents方法来获取远程文件的时候,有时候会出现file_get_contents(): failed to open stream: HTTP request failed!这个警告信息。google或者baidu一下,好多这样的问题,解决的方法都是修改PHP.ini,把allow_url_fopen给启用,改成 allow_url_fopen = On这样做可以解决某些人的问题,有人说在php.ini中,有这样两个选项:allow_url_fopen =on(表示可以通过url打开远程文件),user_agent="PHP"(表示通过哪种脚本访问网络,默认前面有个 " ; " 去掉即可。)重启服务器。但是有些还是会有这个警告信息,想用完美的解决还差一步,还得设置php.ini里面的user_agent,php默认的user_agent是PHP,我们把它改成Mozilla/4.0 (compatible
  为什么需要备份本人博客使用的数据库服务 和 WebServer服务放在一起,2016年发生了一件事情:博客服务器被封了,不让登陆,然后供应商让我重装系统,然后悲剧了:所有数据没有了 。个人做博客写文章都是心血积累,一夜之间回到解放前。这件事情让我认识到数据备份非常重要。当然数据丢失还有其他可能,例如服务器由于某种设置不正确导致不能启动而重置电脑我是这么备份数据的数据库备份应用程序代码备份应用程序配置文件备份图片备份数据库备份关于数据库备份 我列为第一重要的,因为数据是最重要的,其他的都还可以花时间慢慢找回了。我个人数据库备份是通过脚本,然后部署crontab,最后上传 压缩文件到 七牛云存储起来应用程序代码备份关于应用代码我使用github来保存应用程序配置文件备份应用程序有一部分配置文件是根据不同环境 配置不一样的,并且这部分配置文件也不应该在github中有提交记录(以防被人恶意利用)。关于这部分配置文件我是单独 备份压缩然后上传到七牛云存储起来的图片备份我个人博客有不少图片,这些图
  目的本文的目的主要是说明 命名空间的 use 关键词 和 new ClassName 这两个步骤,哪个步骤才会执行自动加载,这是逻辑有点混乱的表现,这种想法也是很正常的,让我们来解密吧命名空间(namespace)php从5.3加入了命名空间,我略懂一些java,所以命名空间还是比较好理解的,为什么需要命名空间啦?主要解决自己写的内部类/函数/常量  和 第三方的类/函数/常量冲突。引用命名空间下资源都要 使用关键字 use 标明 例如require_once("apanly/BrowserDetector/Browser.php"); use apanly\BrowserDetector\Browser; new Browser();自动加载php可以自定义自动加载函数,主要减少include 和 require 的使用。例如function myLoader($classname){    $c
  偶然发现最近在公司日志平台 总是可以看到很多关于php curl的错误信息Operation timed out after 0 milliseconds with 0 out of 0 bytes received Resolving timed out after 5514 milliseconds非常奇怪,以前都是好的,使用wget获取也非常慢,从下面的结果可以看出来 dns解析比较慢wget www.domain.com --2016-11-19 22:17:30--  http://www.domain.com/ Resolving www.domain.com... # 此处停滞约 5 秒 xxx.xxx.xxx.xx
缘由我们公司最近手机端H5 经常受到商户和用户的投诉,说有广告并且导致不能正常进行操作,我们商户自己当然不会加广告了,但是商户和用户可不管这些了,就认为是我们的问题探索发现根本目前我们用的很多浏览器,都提供插件功能,在Chrome浏览器体系下有个 广告终结者插件:可以用来屏蔽网页中的广告部分。受到这个插件的影响,我先探索下 广告劫持是怎么做的?我就想到通过获取网页html代码过来分析,如下JS代码setTimeout(function(){     $.ajax({         url:"/error/ad_log",         type:'post',        &nbs
  个人一直想做个App,但是学习 IOS 的过程发现 原生的做界面还是听麻烦的就放弃了。后来就转到混合式App阵营了混合式App 定义Hybrid App(混合模式移动应用)是指介于web-app、native-app这两者之间的app,兼具“Native App良好用户交互体验的优势”和“Web App跨平台开发的优势”平台框架选择APICloudDcloud Ionic平台对比Dcloud 平台大量使用H5接口提供一些原生Api(官方号称40万Api),例如 webview,actionsheetMui提供界面框架论坛 和 文档 还算可以,入手快hbuilder开发工具不错(应该这个编辑器最出名了)APICloud 平台官方提供原生模块文档不好入手,新手入手有点高Ionic 平台官网只提供 UI框架 和 JS 组件文档比较完善有大量的插件,借助于 cordova/phonegap 平台遇到的问题 都可以 google 解决开发工具 部署都非常方便个人选择平台个人选择了ioni
  • 微信公众号 微信小程序
  • 微信机器人
  • 群1:1046090432
  • 群2:585567981