使用vps一年来的收获

我的vps于2017-08-22购买于vultr,当时的目的很简单:搭建一个ssserver用于科学上网,以及搭建自己的站点/博客 通过google(当时用的老D的host),前一个目标很快就完成了,而后面那个也通过不断尝试,最后通过编译安装完成了lnmp环境搭建 之后在工作之余都会去学一些自己觉得有意思的东西,比如workerman,docker,gitlab,jenkins,python,scrapy,nginx等等 对于shell命令也熟练了很多,后续在公司的项目里搭建简单的生产环境也可以在短时间内完成 vultr的服务器是按时间计费,我买的是$5一个月的1核,1G,25GB SSD,流量1T/月的配置,加上.me域名的费用,一年大概500多一点,很是划算!

July 19, 2018 · 1 min · 6 words

欢迎来我的新博客

“Migration Complete!” 博客迁移 今天把博客从hexo迁移到了jekyll,感觉文章发布上jekyll比hexo更方便,而且我喜欢这个主题~ 我的旧博客 —— Lestat 于 2018.07.05

July 5, 2018 · 1 min · 9 words

近期工作中的收获

眼下快要过年了,手头的项目也终于接近尾声,抽点时间来记录下近段时间的工作心得 前段时间在工作之余我抽空看了一些ECMA6的语法,简单学习了一下webpack,了解了babel,后面也尝试着使用vue-cli搭建自己的demo并熟悉其中的结构 说说最近做的一个项目:一个接口开发(前端)项目,接口由客户提供(java开发,json数据格式),我方负责移动端web开发和后台页面的开发,并调试好所有接口(后端接口情况:权限相关[14],会员模块[10],片库[14],,出品[19],媒体[15],资讯[11],直通车[14],ip活动[12],营销联盟[13]) 刚拿到需求的时候我还是比较担心能否搞定,毕竟作为一个phper之前的确没有搞过spa的开发,但之前做了那么多spa的功课,也觉得是时候真正的实践一下了,于是很快找到了一个基于vue+elementui的后台框架vue-element-admin,据我最近观察,这个项目在github上每天平均增加将近100个star… 这个框架替我们完成了很多基本方法的封装,路由访问权限,页眉标签切换,常用的各种表格,表单等;开发起来效率相对较高,在我后来实际的开发中也应证了这点 最后花了两周时间,搭建了一个小型后台管理系统并完成所有接口的调试 使用vue做开发的感觉就是代码比曾经用jq的项目更规范(也可能是因为框架中引入了eslint,配合vscode的eslint+prettier一键格式化,实现简单操作就能遵循eslint代码规范);由于vue-cli已经将webpack,babel打包好,并且实现了ctrl+s自动刷新页面预览且不会清空console里面的内容,开发的体验变得非常好。 强烈推荐chrome的Vue DevTools插件,安装完成后可以在chrome右上方看到vue的logo,在dev模式下的页面可以直接看到开发者工具的标签栏多出一个Vue标签,点击即可查看到当前页面的信息! 目前为止,自己对vue的了解还不够深入,对vuex,组件的使用还不够灵活,还需要更多的实践 新的一年,继续加油!

February 7, 2018 · 1 min · 11 words

记录一次centos6排查80端口无法访问的问题

大概是一个月前的事情了,最近工作繁忙,暂时忘了记录… 当时的情况大概是这样: 客户的机房开通的是广电网的固定IP,服务器系统是 centos6.8,已知 80 端口和 22 端口对外是开放并能访问的; 服务器上有两个 web 项目,一个对应 80 端口,一个对应 8080 端口 web 服务器是 apache2.2,目前监听了 80 和 8080 端口,httpd-vhosts.conf 下有两个虚拟机配置,分别对应 80 和 8080 端口; 防火墙状态:service iptables status(iptables:未运行防火墙。) SELinux 状态:getenforce (Disabled) 项目目录的访问权限是足够的 lsof -i :8080 httpd 22357 root 6u IPv6 27111118 0t0 TCP *:webcache (LISTEN) httpd 22431 www 6u IPv6 27111118 0t0 TCP *:webcache (LISTEN) httpd 22433 www 6u IPv6 27111118 0t0 TCP *:webcache (LISTEN) httpd 22478 www 6u IPv6 27111118 0t0 TCP *:webcache (LISTEN) httpd 22668 www 6u IPv6 27111118 0t0 TCP *:webcache (LISTEN) httpd 22690 www 6u IPv6 27111118 0t0 TCP *:webcache (LISTEN) httpd 23028 www 6u IPv6 27111118 0t0 TCP *:webcache (LISTEN) httpd 23030 www 6u IPv6 27111118 0t0 TCP *:webcache (LISTEN) httpd 23760 www 6u IPv6 27111118 0t0 TCP *:webcache (LISTEN) httpd 23761 www 6u IPv6 27111118 0t0 TCP *:webcache (LISTEN) httpd 23762 www 6u IPv6 27111118 0t0 TCP *:webcache (LISTEN) httpd 23855 www 6u IPv6 27111118 0t0 TCP *:webcache (LISTEN) netstat -nlpt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:58726 0.0.0.0:* LISTEN 2630/rpc.statd tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 6324/mysqld tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 2574/rpcbind tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 3235/pure-ftpd (SER tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3941/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 2668/cupsd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 3109/sendmail tcp 0 0 :::34760 :::* LISTEN 2630/rpc.statd tcp 0 0 :::111 :::* LISTEN 2574/rpcbind tcp 0 0 :::8080 :::* LISTEN 22357/httpd tcp 0 0 :::80 :::* LISTEN 22357/httpd tcp 0 0 :::21 :::* LISTEN 3235/pure-ftpd (SER tcp 0 0 :::22 :::* LISTEN 3941/sshd tcp 0 0 ::1:631 :::* LISTEN 2668/cupsd tcp 0 0 :::443 :::* LISTEN 22357/httpd 问题: 服务器的 8080 端口在本地可以通过 curl 命令(curl http://localhost:8080)获取到 index.php 的内容,但是外网无法通过 ip:port 的形式访问到 ...

December 28, 2017 · 2 min · 295 words

SoapClient的一点总结

近期在开发一个小型的酒店订房系统 **应用场景:**由于是在公司之前一个订房系统基础上进行修改,因此工作量不算大,但需要在系统中多个位置和酒店方提供的另一个PMS系统的信息进行对接(部分数据需要同步[库存,房间编号,订单信息等等]),接口使用xml格式进行数据传递,后端开发语言是php **问题:**开发中遇到的一个坑就是使用SoapClient在调用PMS系统接口的时候会出现间歇性404(Solution: Soap WSDL Error - “failed to load external entity”) **解决方法:**向PMS接口提供方反应这个情况之后那边说接口正常,后来网上查阅才发现需要使用libxml_disable_entity_loader(false)这个函数来打开entity_loader,随即问题解决.该函数通常添加在需要使用SoapClient实例的脚本上方

December 18, 2017 · 1 min · 13 words

phpexcel踩坑记

最近在使用phpexcel扩展处理表格导入的时候,遇到两个坑,现做以下记录 坑一:excel表中的富文本导入后数据始终不对 解决方法:假设$temp为循环读取的每列数据值,判断是否是PHPExcel_RichText类的实例,如果是,则调用$temp自身的方法__toString()转换,代码如下: if ($temp instanceof PHPExcel_RichText) $temp = $temp->__toString(); 坑二:excel表中的日期导入后变成了float类型的值 解决方法1:假设$temp为循环读取的每列数据值,假设日期所在列为D 代码如下(这里的if仅仅是用来判断日期是否为空,如果不判断,为空时会自动用当前时间填充,根据实际业务决定): if($k=='D'){//指定D列为时间所在列 $date = $objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue(); if($date){ $temp = date("Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($date)); }else{ $temp = ''; } }else{ $temp = $objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue(); } 解决方法2:也可以在业务代码里直接转换时间值 $shared = new \PHPExcel_Shared_Date(); $date = date('Y-m-d',$shared->ExcelToPHP($v1));//日期/时间 坑三:phpexcel 单元格内换行的问题 $phpexcel->getActiveSheet()->getStyle('B')->getAlignment()->setWrapText(True); $phpexcel->getActiveSheet()->setCellValue("B".$i, "hi my name is\n darkmuzi"); 在单元格赋值之前先设置样式

December 1, 2017 · 1 min · 50 words

一个投票项目的总结

最近开发了一个只有3个页面的微信投票小项目 基本流程:一个微信号一天只能对一个参与者投一次票且一天总共可以对不同参与者投10次票 首页内容:展示所有投票参与者以及其得票数,按照编号排序(支持点击投票) 排行页内容:展示所有投票参与者以及其得票数,按照得票数排序 详情页内容:展示指定参与者以及其得票数(支持点击投票) 后台略过… 项目上线后服务器cpu长时间负载100%,仔细查看后发现几个主要问题: 首页和详情页js中没有对触发异步请求的请求中状态(已发出请求且未收到响应[搜索,下一页加载,投票操作])没有禁用处理和提示,可能导致用户连续点击操作,挂起多个请求 解决方法:添加对应请求中的状态,在发出请求后,收到响应前都无法再次发出相同请求 之前有对三个页面的访问量进行统计,但用的是简单粗暴每次访问都直接更新数据库的响应字段值,导致并发增加时数据库写入次数过多 解决方法:配置一个值,每次请求时先将总访问量+1,再判断如果等于配置值,则更新数据库的总访问量并清空缓存,反之写入缓存 忘了关闭TP框架的调试模式(调试模式会使模板缓存和字段缓存失效) 解决方法:关闭调试模式 mysql数据表的联合索引没有生效(原因待定)

November 20, 2017 · 1 min · 14 words

成都-泸沽湖-洱海自驾游

住宿安排 10月1日 4点从成都出发 这是大概6点左右的成雅高速 大概中下午1点到了西昌,随意在路边吃了个干锅鸡,然后去酒店放了行李,睡个觉,就去琼海边上溜达了 这个是琼海,还行,比较空旷,空气不错 晚上在西昌吃了当地的羊肉米粉 10月2日 全程307省道,从西昌经盐源县到泸沽湖,大概7小时,260公里山路,路上有点堵 我们入住的泸沽湖阿塔兄弟之家的晚餐,还不错,比较有当地特色的菜 10月3日 当天晚上依然在阿塔兄弟之家吃的饭,店里还有一只金毛 10月4日 准备离开泸沽湖,出发去大理,下面这张图是早晨7点多拍到的日出,还不错 当天下午4点多到了大理古城,本想去点评上人气高的段公子,奈何人太多,结果去旁边吃过桥米线了(以后再也不想吃了),当天晚上去古城里逛了一下, 就回客栈睡觉去了 10月5日 去喜洲镇,海舌公园玩了大半天,本来要去双廊,结果当地’施工’,没去 晚上去当地一家不错的东北小馆吃了粥和葱油面(个人认为比过桥米线好吃吧),逛了下古城 一家比较有特点的麦当劳 当地的鸡丝米线(老婆说味道不错) 10月6日 开车从大理经杭瑞高速转那个什么省道(忘了)经元谋县到攀枝花,结束这次泸沽湖大理之旅 下面是在元谋县附近经过的一个变形金刚(忘了哪一部)的拍摄地 备注 本次行程2262公里 时间:2017.10.01-2017.10.07

October 8, 2017 · 1 min · 27 words

近况

今下午请假去🏥检查腰椎,好在没什么大问题,但是医生建议的不要长时间坐…对我来说也只能尽可能缩短一次连续坐的时间 从上个星期开始在做一个小型的微信端餐饮相关商城开发 我打算在这个项目中尝试使用php服务端渲染页面+vue.js处理前端所有数据交互,数据库还是mysql,运行环境依然是lamp 工作之余尽量安排一些时间学习ES6语法,vue.js单页面应用的项目结构和vue.js的路由,babel自动编译开发环境的部署 ok,先就这样吧

September 19, 2017 · 1 min · 5 words