[网站分享]
(X-Bird)
https://hub.docker.com/r/laraedit/laraedit/
https://segmentfault.com/a/119000000242873012个理念去快速创建高可维护性的应用
(Lonquan)
http://blog.fbbin.com/archives/1440让laravel的cache支持用connection选择redis服务
(安正超)
https://coveralls.io/代码覆盖检测Bug的软件,比scrutinizer直观些
https://designcode.io/一本学习设计的书
(Abraham)
https://github.com/antvis/antvis.github.io/issues/1蚂蚁金服发布新一代数据可视化引擎G2
https://github.com/HubSpot/pacepjax + top process bar 的库
http://www.1checker.com/检查英语语法的
(Tomoe)
http://www.slideshare.net/coulix/vuejs-testingVue测试案例
https://github.com/warfares/pretty-jsonJson数据展示插件
http://warfares.github.io/pretty-json/范例
https://github.com/mohsen1/json-formatter-js/json数据格式化
https://github.com/vuejs/vue/issues/2873vue的一些版本资讯
https://sourcemaking.com/裡面很多關於模式的使用,重構的講解,非常清晰易懂
http://blog.tomoeba.com/Tomoe的博客
http://blog.tomoeba.com/jie-xi-laravel-pipeline/
https://www.youtube.com/watch?v=SLCajYNcThEPHP也有Day#19-PHP返樸歸真系列之從實例學設計模式
by 大澤木小鐵 (Jace Ju)
http://abalone0204.github.io/2016/05/22/serverless-simple-crud/淺析 serverless 架構與實作
http://sandbox.onlinephpfunctions.com/线上测试运行PHP
https://limonte.github.io/sweetalert2/消息提示框插件
http://9iphp.com/series/how-to-use-events-and-observers-in-laravel又一个php网站
http://www.pyimagesearch.com/2015/09/07/blur-detection-with-opencv/基于OpenCV的图片模糊检查
(Starriv)
https://www.zenhub.io/ 推荐一下这个,Github 的浏览器插件,用来做项目管理
https://phphub.org/topics/1692如何优雅的用IDE
https://ruff.io/zh-cn/Javascript开发硬件
(茄子)
http://www.myth.io/有关css
http://tech.it168.com/a2010/0104/832/000000832697_all.shtml玩转mysql外键
http://eloquentjavascript.net/JS英文书籍
(HavenShen)
(Vikin)
https://github.com/julycoding/The-Art-Of-Programming-By-July编程之法:面试和算法心得
(晓)
http://www.v2ex.com/t/191534API 使用 HTTP 状态码还是全部返回 200
[业务疑问]
1) (安正超) ssl 证书子域名能用主域名的不?
答: (Littlehz) 看证书里的domain, 给哪个就能用哪个, 单域名证书是给 abc.def.com。泛域名证书是给 *.xxx.com和xxx.com。多域名证书是给 a1.b1.com和a2.b2.com等几个. let's encrypt应该是只有单域,没有通配符或者多域。只给根域那就只能给根域用。子域可以到let's encrypt再申请一张。
2) (Mango!) 话说PHP 可以在图像上找到某图像吗
答: (安正超) 很难.
结论: (Mango!) 尝试按键精灵
3) (Xicode) ping++ iOS端支付,这时候后台只接受一个成功或失败的请求就可以是吗
答: (Lonquan) webhook 通知为准
4) (Lonquan) 这是什么意思?
答: (安正超) 名称冲突了,当前类里也有__call, 把 Macroable 中的 __call 取个别名
5) (盒子) Interface 'Symfony\Component\Translation\TranslatorInterface' not found
答: (Jellybool) 要么就是你没下下来,要么就是没autoload, 记得检查composer.json
6) (Lonquan) Laravel 5.0 cache 和 session 都用 redis 就会冲突 --- (据Lonquan亲测,5.2并不会冲突)
答: (Littlehz) 我之前遇到的问题是,php redis 扩展,如果开启了持久连接,不会记住 select db。所以几个 db 冲突,解决办法是 用几个内网域名,都指向一台 redis 机器,这样在 redis 扩展看来这是两个不同的地址,会保持两条不同的连接,这样就不会冲突。当然这个问题与 laravel 无关,不过你也可以尝试这样能不能解决问题。在hosts里面弄几个域名, redis协议又不是http,只认ip端口,又不认域名
.redis没有域名,就是基于 tcp 的文本协议.
7) (牵着蜗牛散步) laravel的orm对象设置缓存的话,大家怎么处理的
答: (Abraham) 缓存对象当然比纯数据大, 你可以缓存对象上的 attributes 属性
8) (茄子) JetBrains不认 vue component 里的 scss 咋办?
答: (Tomoe) 加個rel="stylesheet/scss"
9) (typhoonbb) 用Eloquent Model查询的时候 怎么只查询 指定的几个字段,比如Article::all();
答: (Abraham) table->all(['id', 'name'])
10) 如何实现动态子域名,切换本地化语言包
答: (jjplay)https://kovah.me/en/laravel-5-localization-based-on-the-subdomain/
(Abraham) 路由可以获取子域的,他这里用 parse 没啥必要哦。
//routes.php
$route->group(['domain' => '{lang}.do.com'], function(){});
// middleware
\Route::current()->getParameter('lang');
11) (Littlehz) 打算用多个 public 目录,不同的域名解析到不同的 public 目录,index.php 里用哪种方法配置 载入不同的 routers.php 路由最好来着?
希望达到 不同的域名指向不同的ip,不同的ip到不同的public目录,public_xxx/index.php能有什么办法指定路由文件。这样才能完全隔离几个域名,省的有大牛 绑Host到另一个IP也能用. 我的目标就是 域名 A1 指向 IP1,域名 A2 指向 IP2,绑了 A2的域名到 IP1 上是不能正常访问的。如果是物理机,多个IP直接绑在服务器网卡上,可以用 nginx listen 不同的IP来解决。但现在都是云服务器,网络都是虚拟的,服务器只有内网IP,nginx上无法解决。印象中是说在 index.php 中注册不同的 Router,然后自己实现 Router 载入不同的 routers.php.
答: (安正超) RouteServiceProvider.php里判断域名,或者在入口文件定义好常量后,直接在RouteServiceProvider.php 里引入常量对应的routes.php.
(Littlehz) 不是特别好,这样不能完全隔离
(Tomoe)http://laravel.io/forum/12-29-2015-hosting-laravel-5-on-subdomain然後RouterServiceProvider裡面在用$router->group(['domain' => 'sub1.xxx.com'] 去 require 不同 routes.php
(安正超) 在index.php或者使用define
(Abraham) $app['router']->group([], function(){
require '/path/to/routes.php';
});
[疑问] (Lonquan) 只要我知道域名, 怎么也还是能访问,就算分成不同的 public 目录...只要域名对了, 就可以访问了
[解惑] (安正超) 解析多个域名加载不同的路由 ,你用啥域名进来就是对应的路由,没问题啊 ,管你是什么方式解析的 ,hosts也好,dns也好
(Littlehz) 哼哼,前面还有LB限制。如果按 nginx 的语法大概就是这么写
server
{
listen 80 default;
server_name _;
return 403;
}
server {
listen ip1:80;
server_name a1;
xxxx;
}
server {
listen ip2:80;
server_name a2;
xxx;
}
然后就限制住了,有时候要做些策略什么的,防止意外情况发生,我还是习惯这么做 .我写路由的时候都是一条一条写清楚,不会给controller的所有方法都注册上路由的,也不会用any之类的请求,是get还是post写清楚,习惯问题。
12) (Lonquan) 请教个问题啊, 订单表内有个 总金额 字段, 统计的时候会经常 sum 这个字段, 有必要给他加个索引么
答: (Littlehz) 索引跟你sum没关系啊,跟你后面写的where条件才有关 ,别想缓存嘛,往冗余数据的方向想
13) (茄子) dingo 的 transformer如何内嵌 transformer
14) (Abraham) 现在 laravel 的 pjax 中间件,一般的做法都是用 middleware 去筛选 response中的 dom, 我看看能不能找到效率更高的办法 .有想法吗? 怎样做能避免每一页都进行这么大量的字符串操作?
看法: (安正超) 我觉得得从render下手 ,发明一套模版语法 ,然后按需渲染,或者整体渲染后缓存切片结果
(Lonquan) 我觉得依靠 section 就可以了吧,不用这么复杂. pjax是会有 x-pjax 的啊 ,就是原来的模板布局,
就是多了一个判断,类似你说的,模版里扩展出 @pjax @endpjax 然后把这部分模版缓存出来 .
pjax请求的时候在header头附带了选择器
(Tomoe) 我覺得應該還是可以在中間件處理,加一個Middleware,根據用戶設定決定是否留著header裡的pajax,
或是直接繼承pajax的middleware多一層來判斷之類的.pajax之前的不刷新換頁技術就是靠hash判斷,
後來瀏覽器開始有pushState特性,所以pajax把它包裝起來,變成不用在網址上動手腳.
15) (Drupal猎人) Laravel - 我是不是加上验证后,我每条ajax请求都要传token值过去?有没有简便的方法,不用每次都传.想要Vue适用的.
答: (Tomoe) Vue.http.headers.common['X-CSRF-TOKEN'] = $(el).data('csrf-token') .
或者
new Vue({
http: {
headers: {
"X-CSRF-TOKEN": $(el).data('csrf-token')
}
},
PS: data() 是jquery的方法,會去找prefix是data的屬性
又或者 $('meta[name="csrf-token"]').attr('content')
又又或者
16) (Vikin) php artisan make:migration不执行的原因
解答: (Vikin) Illuminate\Database\Migrations空间下的MigrationCreator类中的getDatePrefix方法,而这个方法的公司就是返回一个格式化的时间戳,而时间戳的根源就是timezone.我之前把timezone设为上海了,然后date方法就挂了,根源就在timezone .
设成PRC好了
17) (茄子) 我有个 vue component,基本上对应一个model进行操作。你们觉得是在component里声明多个属性,一一对应model的属性呐,还是直接声明一个object 属性对应model 呐?
[见解] (Tomoe) 我比較常直接一個object耶,不然model變動的話也要跟著變
18) (Lonquan) php-fpm config 的这 2 个参数, emergency_restart_threshold, emergency_restart_interval 对应的 SIGSEGV 或者 SIGBUS 错误.这个错误是啥意思?
[解答] (Littlehz) 基本上不会有这两个信号,有这两个信号出现,说明可能系统配置有问题
我记得好像是 ulimit 不够,或者 malloc 内存不够才会出现这样的信号。还会有一些 execution timed out (137.222056 sec), terminating.
改这些参数 pm.process_idle_timeout 和 pm.max_requests ,process_idle_timeout 和 php.ini 的 max_execution_time 差不多,都是网页php超时,多久杀掉,只不过前者是 杀掉单个 php-fpm 进程,后者是结束 当前 request。只不过如果没有执行php的ticket事件,后者会不起作用。
request_terminate_timeout是单个 php-fpm 进程执行了多少次请求,就重启这个 php-fpm 进程。控制下,半天 ~ 一天时间,才重启一次 php-fpm 就差不多,重启频率太频繁也耗性能。
[一些见解]
1) (茄子) 关于Vue. 即使Vue没用ts,但是也上了一个静态类型检查Flow,高手知道自己不可能避免犯错,所以会借助工具(测试),或者语言规范(静态类型检查)来约束自己.记得几年前用动态语言的还在争:静态类型检查没必要,什么什么的。。。。不过现在应该已经达成共识了。以前倒是不知道Flow这个静态类型检查工具,看Vue在用才了解。有时间还是要关注下,项目一旦大了,静态类型检查还是有必要的.
2) (安正超) Github的见解: 不一定要自己建立repo才NB,你看 Laravel 作者里18岁那哥们 ,维护着N个项目,保持为N个项目提交代码
https://github.com/GrahamCampbell. 你可以从我说的的角度出发 ,然后你在为其它项目贡献代码的时候 ,你会发现idea的 .因为如果你,不去多看看其它项目 ,你不知道一些隐含的规范 ,而且多看看其它项目收获很大.看到英语不要怕,一行行的读,遇到不认识的双击让工具帮忙,因为你发现当你去认真接受它,去读它的时候,咦,没那么难嘛
[小技巧]
1) (Littlehz)
业务场景: id生成器,替代mysql自带的auto_increment.分表的时候才用,这个业务场景稍微严格点,用redis自增没数据库稳妥。
无锁,也无需事务支持,有锁的话性能怎么撑得住.会出现多个 session 同时 update 的情况,但是这个操作是原子性的,只要你能保证一个操作是原子性的.就不需要锁,也不需要事务.这个只是生成id.至于insert记录失败,关这个id生成器什么事?
不用这个id跳过去就是了嘛.auto_increatment不也是一样在rollback的时候不会恢复么,id不一定必须要连续.任何业务来问一个id,我给一个新的id + 1给业务,保证并发量再大,都不会给重复就可以了.至于业务用不用这个id,还是中断了还是别的怎么的都不关id生成器的事.低耦合.
至于为啥会觉得 redis 的自增没有数据库的稳妥,是持久化的原因.
一旦redis重启,很难保证不丢几秒的数据。而如果并发量又大,那可能好几百个id重复了.
2) (Littlehz)
有用啊,就是初始化laravel框架,但是什么事情不默认处理。
应用场景很多啊,比如我要建个 TCPServer,接收TCP数据包,校验TCP数据包,分析数据包的某个字节分配到不同的controller执行具体业务。
又比如,用laravel做各种RPC-Server、json-rpc、thrift、protobuf等等。
3) (Littlehz) dump数据库
mysqldump --quick --single-transaction --default-character-set=utf8mb4 --hex-blob -h192.168.200.2 -uroot -pxxxxxx --databases db1 db2 db3 | gzip > /tmp/db.sql.gz
4) 只要掌握 js 的原型链、变量的作用域,js就没有太大的阻力了,剩下的只是不断更新的API
推荐书籍: 《JavaScript语言精粹》《你不知道的javascript》
[名词解释]
Electron: 用js寫桌面应用, atom就是基于Electron
(Tomoe) Postcss:http://www.oschina.net/p/postcss/好像挺火
(Tomoe) wangeditor:http://www.kancloud.cn/wangfupeng/wangeditor2/113992
(Tomoe & 茄子) vue-loader: 加载.vue格式的文件,可以實現單文件開發組件的loader ,webpack的,只是單純對同一個文件解析html, js, style,最後再讓他們關聯在一起.原本你可能要另外把html寫在一塊 ,還有style也是另外寫個css,現在把這些事情放在一起就比較好開發,其實他也是把這些東西按照標籤切割解析後,最後在js中重新import進來. 而require.js 解决的是加载模块的问题。 webpack本身只能处理js文件,loader是它处理其他文件的插架形式.
(超神) JWT & Oauth2: jwt与oauth方向不一样,oauth 专注认证流程,jwt专注安全认证信息的加密,OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。
Git Flow: 一套使用Git进行源代码管理时的一套行为规范和简化部分Git操作的工具
SourceTree: Windows 和Mac OS X 下免费的 Git 和 Hg 客户端,同时也是Mercurial和Subversion版本控制系统工具。支持创建、克隆、提交、push、pull 和合并等操作。 SourceTree拥有一个精美简洁的界面,大大简化了开发者与代码库之间的Git操作方式,这对于那些不熟悉Git命令的开发者来说非常实用。
(安正超) scrutinizer: 号称是比 phpstorm 都强大的静态分析工具,代码重复 ,注释不规范 ,还有缩进不正确 ,还有各种
下一篇,6月14号