Laravel 的一些小坑总结

ps: 今天有个小新闻,央行终于对比特币出手了。话说去年今年的新闻真是各种好看各种兴奋。黑天鹅一大波,各种新东西出来。

Laravel 是 Taylor Otwell 开发的一款基于 PHP 语言的 Web 开源框架。由于 Laravel 具备 Rails 敏捷开发等优秀特质,并结合了 PHP 强大的扩展包(Composer)生态与 PHP 开发者广大的受众群,让 Laravel 在发布之后的短短几年时间得到了极其迅猛的发展。

通过 Google Trends 提供的趋势图可以看出,Laravel 框架在过去十年,其增长速度在各类 PHP 框架中都是有史以来最快的,这也从正面直接反映出了 Laravel 的强大,以及其未来非常可观的发展前景。

图1

使用Laravel也有1年多的时间了。偶尔会出现点小问题,也总算是解决了。今后会慢慢总结一些。现在先说说昨天晚上遇到的坑。如果你看到这篇文章并且很巧的知道下文的一些坑的原理的话,欢迎留言或者邮件告诉我。


Slack/Hubot

想拥有一个自己的hubot也有一段时间了。

虽然很早就开始用slack,都是用来配合ifttt耍的,还不知道这么一个大杀器。Slack 是聊天群组 + 大规模工具集成 + 文件整合 + 统一搜索。截至2014年底,Slack 已经整合了电子邮件、短信、Google Drives、Twitter、Trello、Asana、GitHub 等 65 种工具和服务,把可以把各种碎片化的企业沟通和协作集中到一起。

后来订阅了湾区日报。看了一些文章后才发现的,确实是个好东西。工作忙里偷闲,按照slack API里 Slack Developer Kit for Hubot 的内容一步一步走来。目前对里面的一些产品插件都还不了解,先记录下来,以后再慢慢补充了。

Hubot是由Github开发的开源聊天机器人,基于Node.js采用CoffeeScript编写。

可以借助Hubot开发Chatbot来自动化的完成想要一切自动化任务,比如:

  • 运维自动化(编译部署代码、重启机器,监控服务器运行情况,自动修复Bug等)
  • 外部服务交互(管理Redmine、集成Jenkins、监视Zabbix等)
  • 定时获取天气预报
  • 随机订餐
  • 聊天机器人等等。

1.安装node和npm环境

可以访问我的gist下载。

chmod a+x NodejsInstall.sh

然后就要经过漫长的等待(我的机器性能一般,大概是1个小时)。 安装完成后,node就安装好了。在安装node的同时,npm也安装到了你的服务器上。通过下面的命令查看node和npm的版本号信息。

node -v
npm -v

由于npm更新的速度会比node更快一些,所以运行下面的命令可以保证你的npm保持最新。

npm install npm@latest -g

2.安装slack/Hubot kit

使用下面的命令快速安装Yeomanhubot 。Yeoman可以辅助我们快速安装hubot。

npm install -g yo generator-hubot

安装好环境后,在我们感兴趣的目录下,可以开始新建我们的hubot项目了。

如果你是以root用户安装的话,记得要给相关的文件夹赋权限。 要不然就会像下面这样。

EACCES: permission denied, open '/root/.config/configstore/insight-yo.json'
You don't have access to this file.

赋予配置文件权限,新建项目:

chmod g+rwx /root /root/.config /root/.config/configstore /root/.npm

mkdir my-awesome-hubot
chmod 777 my-awesome-hubot 
cd my-awesome-hubot
yo hubot --adapter=slack

同时你还需要去hubot页面生成你的机器人API Token。在获得api token之后,你可以运行以下命令跑起来了。

HUBOT_SLACK_TOKEN=xoxb-YOUR-TOKEN-HERE ./bin/hubot --adapter slack

3. 让 hubot 执行 shell 脚本

npm install hubot-script-shellcmd
cp -R node_modules/hubot-script-shellcmd/bash ./

修改一下external-scripts.json,添加上以下模块:hubot-script-shellcmd。如果到此为止,你操作的步骤和我基本一样的话,你的external-scripts.json应该长的像这个样子:

[
  "hubot-diagnostics",
  "hubot-help",
  "hubot-google-images",
  "hubot-google-translate",
  "hubot-pugme",
  "hubot-maps",
  "hubot-rules",
  "hubot-shipit",
  "hubot-script-shellcmd"
]

接下来:

cd bash/handlers

这里面的 helloworld 就是个例子,可以改成自己的脚本。运行的话,如果在群组内,需要@xxx(xxx为机器人的名字,例如hubot)

hubot shellcmd helloworld

如果是私人会话,可以直接回复

shellcmd helloworld

我们可以完成任意想要的脚本,例如下面的脚本将计算CPU的使用率。

#!/bin/bash
top -b -n2 -p 1 | fgrep "Cpu(s)" | tail -1 | awk -F'id,' -v prefix="$prefix" '{ split($1, vs, ","); v=vs[length(vs)]; sub("%", "", v); printf "%s%.1f%%\n", prefix, 100 - v }'

exit 0

将文件命名成cpu,只要运行shellcmd cpu,就可以了。

4. 高级配置

5. 其他开发

参考 hubot 的两个文档 scripting 和 patterns,写的非常详细。下面是个简单的例子,将收到的信息转发到网站。

module.exports = (robot) ->
    robot.listen(
        (message) ->
            message.user.name is "你的Slack用户名" #这里限制只对我的回复做响应
            robot.brain.set 'message', message.rawText
        (response) ->
            req = "data=" + JSON.stringify({
                message: robot.brain.get('message'),
            })  
            robot.http("http://test.com/api") # 改为你自己的接口地址
                .header('Content-Type: application/x-www-form-urlencoded;charset=utf-8')
                .post(req) (err, res, body) ->
                    if err 
                        response.reply "请求接口失败" 
                        robot.emit 'error', err, res 
                        return
                    if res.statusCode isnt 200 
                        response.reply "接口返回非200"
                        return
                    response.send body
    )    

参考资料

参考资料


中华人民共和国网络安全法

快捷链接:《中华人民共和国网络安全法(草案)》

第一章 总则
第二章 网络安全战略、规划与促进
第三章 网络运行安全
第四章 网络信息安全
第五章 监测预警与应急处置
第六章 法律责任
第七章 附则

(2016年11月7日第十二届全国人民代表大会常务委员会第二十四次会议通过)

第一章 总  则

第一条  为了保障网络安全,维护网络空间主权和国家安全、社会公共利益,保护公民、法人和其他组织的合法权益,促进经济社会信息化健康发展,制定本法。
第二条  在中华人民共和国境内建设、运营、维护和使用网络,以及网络安全的监督管理,适用本法。
第三条  国家坚持网络安全与信息化发展并重,遵循积极利用、科学发展、依法管理、确保安全的方针,推进网络基础设施建设和互联互通,鼓励网络技术创新和应用,支持培养网络安全人才,建立健全网络安全保障体系,提高网络安全保护能力。
第四条  国家制定并不断完善网络安全战略,明确保障网络安全的基本要求和主要目标,提出重点领域的网络安全政策、工作任务和措施。
第五条  国家采取措施,监测、防御、处置来源于中华人民共和国境内外的网络安全风险和威胁,保护关键信息基础设施免受攻击、侵入、干扰和破坏,依法惩治网络违法犯罪活动,维护网络空间安全和秩序。
第六条  国家倡导诚实守信、健康文明的网络行为,推动传播社会主义核心价值观,采取措施提高全社会的网络安全意识和水平,形成全社会共同参与促进网络安全的良好环境。
第七条  国家积极开展网络空间治理、网络技术研发和标准制定、打击网络违法犯罪等方面的国际交流与合作,推动构建和平、安全、开放、合作的网络空间,建立多边、民主、透明的网络治理体系。
第八条  国家网信部门负责统筹协调网络安全工作和相关监督管理工作。国务院电信主管部门、公安部门和其他有关机关依照本法和有关法律、行政法规的规定,在各自职责范围内负责网络安全保护和监督管理工作。
县级以上地方人民政府有关部门的网络安全保护和监督管理职责,按照国家有关规定确定。
第九条  网络运营者开展经营和服务活动,必须遵守法律、行政法规,尊重社会公德,遵守商业道德,诚实信用,履行网络安全保护义务,接受政府和社会的监督,承担社会责任。
第十条  建设、运营网络或者通过网络提供服务,应当依照法律、行政法规的规定和国家标准的强制性要求,采取技术措施和其他必要措施,保障网络安全、稳定运行,有效应对网络安全事件,防范网络违法犯罪活动,维护网络数据的完整性、保密性和可用性。
第十一条  网络相关行业组织按照章程,加强行业自律,制定网络安全行为规范,指导会员加强网络安全保护,提高网络安全保护水平,促进行业健康发展。
第十二条  国家保护公民、法人和其他组织依法使用网络的权利,促进网络接入普及,提升网络服务水平,为社会提供安全、便利的网络服务,保障网络信息依法有序自由流动。
任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得危害网络安全,不得利用网络从事危害国家安全、荣誉和利益,煽动颠覆国家政权、推翻社会主义制度,煽动分裂国家、破坏国家统一,宣扬恐怖主义、极端主义,宣扬民族仇恨、民族歧视,传播暴力、淫秽色情信息,编造、传播虚假信息扰乱经济秩序和社会秩序,以及侵害他人名誉、隐私、知识产权和其他合法权益等活动。
第十三条  国家支持研究开发有利于未成年人健康成长的网络产品和服务,依法惩治利用网络从事危害未成年人身心健康的活动,为未成年人提供安全、健康的网络环境。
第十四条  任何个人和组织有权对危害网络安全的行为向网信、电信、公安等部门举报。收到举报的部门应当及时依法作出处理;不属于本部门职责的,应当及时移送有权处理的部门。
有关部门应当对举报人的相关信息予以保密,保护举报人的合法权益。

Jekyll Windows 环境配置

昨天配好了Mac下的开发环境。记录下一些问题。

安装 Ruby

http://rubyinstaller.org/downloads/

就目前来说,下文的 DevKit 因为仅支持ruby 2.3,所以不要安装高于2.3的版本。

完成后进入“CMD”输入“ruby -v”如显示版本则代表安装成功。

如果Ruby环境变量没有添加,后把安装目录下的 Bin 目录添加到系统Path环境变量即可。

安装 DevKit

DevKit 是一个在 Windows 上帮助简化安装及使用 Ruby C/C++ 扩展如 RDiscount 和 RedCloth 的工具箱。

下载与 Ruby 版本相对应的 DevKit 安装包:http://rubyinstaller.org/downloads/


初始化 Mac 的工作环境

从家里拿来了尘封已久的 Macbook Air,作为个人笔记本在用了。不得不说,对于 Windows 和 Mac 的操作系统之争,我还是更喜欢 Mac。界面优秀,使用的时候静心,不需要考虑太多的事情。工作效率也是比较高。(当然认真学习的话,其实操作系统的影响不大)。

因为是重装的系统,环境是要从零开始配置了。趁着这次机会,再熟悉一下^_^

系统篇

  1. 屏幕四角快捷键。偏好设置 》屏幕保护程序 》触发角。
  2. 触控板。

日常篇

  1. chrome。工作用的 Windows,还是得多平台共用才行。但是耗 CPU 太高了,不太愿意开。毕竟自家浏览器适配一些也是理所应当的。
  2. feedly。 在 iPad/iPhone 上用的是 reeder,按理来说 Mac 上应该也用来着。不过终究抵不过免费啊。况且人家做的也还可以。
  3. QQ/Wechat。在中国离不开这两吧。
  4. Spark。 这个不是大数据的那个 Spark 噢。一个邮件客户端。用了这么多就喜欢这家的。
  5. 网易云音乐。 早期用户一用就用到了现在。
  6. Photoshop。简单修图到专业编辑,都能胜任^_^。
  7. Evernote/Pocket。两家都不错,各种收集资料用。
  8. MindNode。思维导图软件。其他的也没怎么用过,蛮好用的一直用到了现在。
  9. 百度网盘/Dropbox。也算是必备软件吧。
  10. xxx输入法。各有所爱吧。我用的百度输入法。因为手机上用了他们的 miku 皮肤,就一直用到了现在233333
  11. MPV。一个视频播放器。本来以前用的movist,也不错。然后被知乎安利了这个 MPV,可用于看bilibili,并且有弹幕。
  12. Minimalist Markdown Editor。Chrome 的插件,markdown 编辑器。小巧够用。
  13. Aria2。下载神器(据说)。
  14. filezilla。FTP 工具。
  15. iStat Menus 5。系统监控工具。
  16. Bartender 2。系统顶部栏图标收纳工具。
  17. CheatSheet。简单快捷地查找、使用各种程序环境下的快捷键。
  18. Keka解压工具。

关于 Vue.js 的一点东西

2016年前端的发展趋势应当是vue、react和angular 2.x 无疑了。最近比较忙,加上对前端不甚关注,没想到这么赞的框架竟然都没听说过,也是醉了。

实际上我也是在v2ex看到这帖子 《Element UI——一套基于 Vue 2.0 的桌面端组件库 》被惊艳到了,之后又翻了一些资料,应该是很不错的一个前端框架。

话说,最近angular 2.0稳定版刚发布,在朋友圈里也发了个状态。我们团队用的是avalon,感叹了下avalon也升级2.0了,被美团的前端大大吐槽了avalon比起angular很low。66666666666666。好吧研究不多没办法插上话Orz。

有机会再研究下。


1 2 75 76 77 78 79 91 92