Laravist 半月谈(5.31 - 6.13) 好久没看群聊天的方方

本期应该要丢失掉很多聊天记录,因为方方我这阵子很忙,家里的电脑压根没开过qq,要是遗漏很多我只能表示没办法.

[网站分享]

(Tomoe)

https://github.com/davejamesmiller/laravel-breadcrumbs 面包屑

https://googlecreativelab.github.io/anypixel/

http://works.ioa.tw/browser_console_qrcode/  在瀏覽器 Console 上畫 QR Code!

https://hahow.in/ 界面好看的线上课程

(安正超)

http://overtrue.me/bootstrap-theme-slim/  

(欢欢)

https://github.com/pandao/planeui  

(Jellybool)

https://cn.udacity.com/  优达学城

(Abraham)

https://github.com/FriendsOfPHP/PHP-CS-Fixer  强制PHP格式

http://www.zcfy.cc/article/396

http://libs.useso.com/

(茄子)

http://mp.weixin.qq.com/s?__biz=MzA4MjEyNTA5Mw==&mid=2652563725&idx=1&sn=2d8714f18f54b6891ea71dd07d6f0397&scene=23&srcid=06047QY6jzDIKrhNuDBA1u20#rd  玩转Stack Overflow


(Starriv) 

http://videojj.com/


(jjplay)

http://mint-ui.github.io


(Lonquan)

http://www.ectouch.cn/ 一个所谓的开源电商

(Vikin)

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript  文档



http://www.maatwebsite.nl/laravel-excel/docs/export

[业务疑问]

1) (茄子)

问个编码规范的问题。  我的一个model有个属性叫做status,存放的是英文代码,我希望为他做一个getter,取出转换后的中文含义。  你们怎么取名?  我现在是用laravel的getter 写成 getStatusDescriptionAttribute,getXXXAtrribute 在laravel里可以这样用  $m->XXXX.

我主要是想取名是偷懒点,定个规则,比如 status 是代码, 后面加description的 status_description 统一都是中文释义

答: (littlehz) 先想中文,加个 自然语言、人类语言、显示名称、描述信息这样的都好理解,然后再想这个中文对应的英文,从里面选优雅点、没有歧义的

2) (Littlehz)

laravel的cron,怎么配置成在某台服务器定时执行某些操作,某些服务器执行另外的几个,而剩下的服务器没有定时任务?同一个项目,有好多机器,不同机器有不同的计划任务。之前是写crontab,每台机器配不一样的,既然用laravel了,就打算用laravel自己的计划任务调度嘛.我就是想问怎么识别机器的方式好?php代码肯定是一样的,只有hostname、ip不一样咯,生产环境的所有机器env也是一样的。

答: (安正超) 在代码里完成这个任务注册,识别机器.机器名,或者在机器的ENV文件里定义名称.你不是有一个注册计划任务的地方嘛.根据机器不同来决定注册哪些任务

3) (晓)

我用dingo+oauth2.0做验证,在header里传Authorization参数时,服务器获取不到参数(  Request::header('Authorization')  ),但本地是可以的,后来我试了一下自定义哪的参数是可以获取到的( Request::header('sAuthorization')  是可以的),有谁知道这是哪里被拦截了?

答: (Jellybool) https://github.com/tymondesigns/jwt-auth/wiki/Authentication

4) (徐先森)

我想的就是你和我说话我能看到,就是 前台把数据提交到一个公共的频道 然后 index.js 后台把他发给带用户id的频道  然后前台在接受带 用户id频道id 的数据 然后再发送ajax 然后laravel写入数据到数据库 这样就保存了消息记录 前台也实时显示了 数据.

答: (Littlehz)

你的逻辑没错。但是我问你一个问题,不知道你考虑了没有。你前台用js监听了一个 websocket连接,你后台的socket.js,有没有判断用户的 cookie/session?

如果一个伪造的用户过来,不在服务器上的 socket.js 里判断 session ,这个用户能不能使用这个 频道ID?

鉴别用户的身份,判断用户能不能用这个功能,这就叫鉴权。

这是简单点的,私聊。频道id就是用户id,频道id与session中的用户id相同,那就有权限。

往复杂点的鉴权,如果是群聊,频道id是群组id,只有群组的成员用户,才有权限使用这个websocket频道。那你的代码里是不是会很多,要不然在 socket.js 里实现一套ACL或者RBAC逻辑?

看你的sever.js,你的websocket应该是直连 node 服务器的,与php没有关系。


5) (茄子) 承接上面的问题

标准的鉴权方式是怎样? server.js  或者  lua 再调用一次php的鉴权api么?怎么在server.js 里判断?

答: 

(Lonquan)

session_id + user id ,php 的 session, 直接扔到 redis 去

(Littlehz)

和下载文件类似,php 鉴权完再丢给 server.js 或者 nginx lua,看你用哪种实现的websocket。

websocket的location设置为 internal;这样鉴权逻辑就不用写两套,就是websocket不直接和 server.js 或者 nginx lua 通信,从php这边过一手. 利用 nginx 特有的 X-Accel-Redirect 这个 header

假定nginx 的配置

server {

            location /1 {

                   internal;

            }

            location /2 {

                   fastcgi_pass xxxx

            }

}

正常情况下只能访问 /2 这个 uri

php鉴权完了,输出

header('X-Accel-Redirect: /1');

exit();

那就能让这个http连接,内部跳转,挂起到 /1 这个 location.

网上搜索到的方法,大多数是说 X-Accel-Redirect 用于下载文件。其实并不是这个意思,是让 nginx 跳到另外一个 location。至于 location /1 里面是下载文件也好,还是 proxy 反向代理也好,还是连接 redis 也好,还是用 lua 脚本干别的都可以。


[小技巧]

1) (Littlehz) php-fpm进程用户,不要和web目录的php文件属组是同一个组的用户

2) (安正超) 一个开源软件使用的时候排错路线: 我的用法是否正确了? -> 我是否漏掉了哪个部分? -> 看看网友的反馈(issue找找)有没有同样的问题

3) 获取文件后缀名 getClientOriginalExtension


[见解]

1) 如何学习?

(茄子)

按自己的想法写一段代码,调试一下,再写一段,再调试,是在浪费自己时间。先把文档精读一遍,每个sample code都动手实现一遍看下效果。这是最基本的要求。

(安正超)

很多人都打着“项目着急没时间看文档,先写吧,一边写一边看,遇到问题再查.这种做法只会让你的项目进度更慢,绝对不会更快,这玩意儿与打仗很像啊.你得先了解对方军情才能去搞.边打边招人?边生产枪支?知已知彼才能走得顺,所以你的做法是不科学的.还会经常自己打击自己. “为什么?为什么?大家都用得好好的,我一用就这么多问题?是我笨么?还是我不适合做这行。。”

用一个东西之前,花时间去把文档过一遍(知识点放到脑袋里),起码一点,出一个问题的时候我知道这是哪个部分的内容,回头再看的时候速度就快很多.而不是扔一条消息到群里,吃完饭回来还没有人回答,那就 SB 了,老板在身后站着看你解决的时候怎么办.

就是各种补充周末没有吸收到的讯息

(Littlehz)

先思考再动手写.

我大概去年12月开始调研确定新业务用 laravel 框架,然后开始学,大概看了一个星期手册。开始看教主的视屏。当然有别的事情,每周留个laravel的时间应该不到2个小时。然后在这个群里,经常看你们问问题,看别人回答问题,反正看到的我都记得怎么处理。到了5月中旬,才开始写第一行laravel的应用代码。但我现在写 laravel 的应用,基本上不用查什么手册,也基本上不用问问题。

任何人都不会说问题简单而不答,任何人也不会说因为基础差而认为不适合做,只是发现你的学习方法、思考方式不对,在帮助你提高自己。谁都是从不会到会的。

2) (Tomoe) Javascript 

應該說分原始類型和對象(引用)類型,Number String Bool Null Undefined 都是原始類型,其他都是對象 Function Array 等等,在底層處理時,原始類型是直接存入數據,而Object Function Array是存入指針

3) (Littlehz) 如何开发下载功能

如果不需要支持多服务器,直接在下载地址nginx rewrite到uploads目录,不要这么复杂

如果不需要鉴权用户身份,谁都可以下载,那直接nginx配个域名直接到uploads目录。如果需要鉴权,那就php鉴权完了,输出一个header头"内部跳转"到nginx的其他location就好。完全不需要php读文件内容再输出。

4) (Littlehz) 

我一直是这么觉得,凡是大一点的系统,一定是要有独立的ID生成器。生成器可以传ID空间这样的参数,在同一个ID空间里自增。生成的ID应当是逐渐增大的,尽量连续,保证绝对不重复,不回退。


[名词解释]

Jwt的作用: jwt做的事儿与你的账户系统没有关系,它只是负责把你的敏感信息加密扔到客户端,客户端再拿着那个回来的时候它负责给你解开

geoip

snagit  截屏

licecap 专门录gif

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容