使用VueJS和Laravel对用户的输入进行实时验证

原文链接: https://itnext.io/vuejs-and-laravel-realtime-unique-input-validation-a6d9220be1c5

我经常面临的一个问题是需要对用户的输入做唯一性得实时验证。最常见的场景是当你在注册时验证用户名,用户必须不断尝试提交表单来验证输入的用户名是否可用使用。这是由于验证在服务端进行并展示结果给用户。

在我的项目中使用了Vuetify和VeeValidate,我将用它来解决我的问题。下面讨论的这些概念或方法,也可以使用其他的组件实现,但是也许需要一些修改调整。

我将使用一个从我的一系列多用户的网站应用(multi-tenant web applications)中提炼出一个DEMO项目。下面是演示项目的地址以及系列文章的第一部分:

laravel-tenancy-passport-demo
Laravel Passport and Hyn\Tenancy — Part 1

好戏开始!

在这个项目中,每一个注册用户都有自己唯一的子域名及其控制面板。域名是在注册时选择并且是唯一的,所以需要在用户填写域名的时候就立即告诉他是否可用,这需要通过API在数据库中检查域名是否可用,如果存在则返回false,反之true。

正如所上所说,这里使用VeeValidate进行验证,文档: https://baianat.github.io/vee-validate/

Vuetify 是一个非常棒的UI框架,它会大大提高开发效率。文档:https://vuetifyjs.com/en/getting-started/quick-start

VeeValidate 配置

使用极其简单,只需要引入并添加需要的配置即可。下面是我的app.js配置示例:

//Imports import Vue from 'vue' import VueRouter from 'vue-router' import Vuetify from 'vuetify' import VeeValidate from 'vee-validate' import App from '@/App' import routes from '@/routes.js' //Load Plugins Vue.use(VueRouter) Vue.use(Vuetify) Vue.use(VeeValidate, { inject: false }) //Router configuration const router = new VueRouter({ mode: 'history', routes }) export const vm = new Vue({ el: '#app', render: h => h(App), router }); Read More

Google Cloud 的 API 设计

转自: https://zhuanlan.zhihu.com/p/27458970

最近(很久前)在设计 API 接口的时候发现了一些很难取舍的地方,就看了下业界领先的企业都是怎么设计类似 API 的,发现了很多之前设计的缺陷和一些新的思路。主要参考了 AWS 和 Google Cloud 的 API 设计,两家的设计可以说是把两个不同的风格发挥到了极致,做同样的事情 API 的各个方面都可以设计的完全不一样。Google 有一个自己的 API Design 规范可以在网上找到,不过真实的 GCE API 规范略有一些出入。而 AWS 的 API 设计是没有什么文档的,只能通过现有的 API 进行逆向工程来反推设计理念。这篇文章会比较琐碎,更像是一个读书笔记,细节的东西会比较多。
Google Cloud API Read More

教你如何用 Macbook Air 支撑 20w 并发的抢购

方法一(较猥琐):

  • 购买 Macbook Air(必须)
  • 准备好瓜子、茶水、鸡蛋、板凳(必须)
  • 编写一个 json 文件,内容如下:
{"success":false,"message":"u6ca1u62a2u5230uff0cu8bf7u518du63a5u518du5389u54e6~"}
  • 到 Ari papapa cloud, seven cow 等各种云上注册试用帐号,越多越好,并上传准备好的 json 文件,抢购页面用到的静态文件也记得放上去
  • 使用世界上最好的语言写抢购逻辑,不用加缓存,直接访问数据库就好
  • 在 Macbook Air 上搭建 nginx + php-fpm,调整 php-fpm worker 数为 1,防止占用过多系统资源;调大 nginx worker_connections 数,修改所有报错的 HTTP 返回值为 200,内容为第三步的 json,最后部署上抢购代码
  • 将抢购的 api 域名指向各种云及 Macbook Air,并使用 CDN 等各种高端技术进行分流,确保 99.9% 的流量分到各种云上,server(Macbook Air) 上只承担很小很小的流量。如果不会用 CDN 之类的,也可以弄很多很多二级域名,比如 api1.xxx.com api2.xxx.com 这样的,指向各种各样的云,然后将抢购所用的域名 CNAME 过去。这样显得域名很多,机器也很多的样子
  • 重点来了:抢购开始,在 Air 上打开 flash、视频、游戏等,开的程序越多越好,制造服务器很忙,抢购很紧张的假象。搬来茶水、瓜子和板凳开始看电影、玩游戏
  • 抢购结束,把鸡蛋打碎倒在 Air 上,开始去各个云上删除或更换 json 文件
  • 发公关文,说抢购圆满结束,服务器热得都快起火了,并附上被煎熟的鸡蛋截图,换来各种惊叹

方法二(较优雅): Read More

Inotify: Linux文件系统事件监控框架

准备

安装

yum install -y inotify-tools incron

简单的文件变化通知样例

创建文件夹

mkdir /tmp/inotify-test

启动监控

inotifywait -rme modify,close_write,create,delete /tmp/inotify-test

测试

更多信息移步inotify-tools wiki

使用incron

incron,它是一个类似于cron的守护进程(daemon),传统的cron守护进程都是在规定的某个时间段内执行,而incron由于使用了Inotify,可以由事件触发执行。同时incron的安装简单而直观,比如在debian上,首先在/etc/incron.allow中添加使用incron的用户(debian默认不允许用户使用incron,因为如果incron使用不慎的话,例如形成死循环,则会导致系统宕机) Read More

JavaScript立即调用的函数表达式

什么是自执行?

在JavaScript里,任何function在执行的时候都会创建一个执行上下文,因为为function声明的变量和function有可能只在该function内部,这个上下文,在调用function的时候,提供了一种简单的方式来创建自由变量或私有子function。

// 由于该function里返回了另外一个function,其中这个function可以访问自由变量i
// 所有说,这个内部的function实际上是有权限可以调用内部的对象。

function makeCounter() {
// 只能在makeCounter内部访问i
var i = 0;

return function () {
console.log(++i);
};
}

// 注意,counter和counter2是不同的实例,分别有自己范围内的i。

var counter = makeCounter();
counter(); // logs: 1
counter(); // logs: 2

var counter2 = makeCounter();
counter2(); // logs: 1
counter2(); // logs: 2

alert(i); // 引用错误:i没有defind(因为i是存在于makeCounter内部)。 Read More

关于程序猿的冷笑话

1.
某女:你能让这个论坛的人都吵起来,我今晚就跟你走,随便你弄
程序猿:PHP是最好的语言! 某论坛炸锅了,各种吵架
某女:服了你了,我们走吧 你想干啥都行
程序猿:今天不行,我一定要说服他们,PHP必须是最好的语言 Read More

发布自己的nodejs的npm包

# mkdir example
# cd example
# npm init

按提示输入信息会自动生成package.json

{
“name”: “example”,
“version”: “0.0.1″,
“description”: “test npm”,
“main”: “index.js”,
“scripts”: {
“test”: “echo ”Error: no test specified” && exit 1″
},
“repository”: “”,
“author”: “”,
“license”: “MIT”
}
Read More

101 Tips to MySQL Tuning and Optimization

转自:101 Tips to MySQL Tuning and Optimization
英文原文:101 Tips to MySQL Tuning and Optimization

MySQL是一个功能强大的开源数据库。随着越来越多的数据库驱动的应用程序,人们一直在推动MySQL发展到它的极限。这里是101条调节和优化MySQL安装的技巧。一些技巧是针对特定的安装环境的,但这些思路是通用的。我已经把他们分成几类,来帮助你掌握更多MySQL的调节和优化技巧。 Read More