我为什么不看好微信小程序
我自认为对新技术还是比较有热情的,可对于小程序这个“新技术”,我却完全是被动的。去年9月份的时候,微信小程序开始内测,瞬间引爆朋友圈、知乎等一众分享平台。当时我大概了解了一下,觉得从技术角度上来说没啥新意,也完全没有get到网上那些人激动的点在哪里,于是也就没有花很多精力去深入了解和学习相关知识。到了11月份,我和几个小伙伴去北京参加CSDN 举办的 SDCC,我特意去听了微信专场,滴滴团队的小程序经验分享干货十足,却依然让我觉得这个“新技术”无论是从技术角度还是从用户场景角度,都没什么吸引人的地方。今年1月9日,小程序正式发布,一下子又引爆了一众网络媒体,连我身边很多非IT圈的人都在找我了解讨论小程序的事情。这次我再也坐不住了,毕竟雷布斯说过“只要站在风口猪也能飞起来”,更何况背靠腾讯的张小龙,刮起的很可能是龙卷风。于是我向公司提出申请,注册了一个小程序账号,开始尝试开发一个给公司员工使用的办公助手。接着我就遇到了一些列问题。
程序大小限制
刚刚开始研究不久我就发现,每次预览的时候,微信开发者工具都会提示你编译包的大小是多少。因为微信小程序要求编译包的大小不能超过1MB,1MB大 ...
两分钟实现安全完备的登录模块
引言2016年中,我所在的项目组将原来系统中的登录模块拆出来做成一套集中账号管理系统,并对外提供单点登录的服务。后来,公司中需要使用员工账号进行登录的系统越来越多,但这些系统都是各有各的实现方式,管理比较混乱。为了推广我们组的账号管理系统,统一公司的账号体系,我写了一篇“软文”希望在公司技术月刊上发表,便是这篇文章的来历。
随着公司业务的不断发展,各种内部管理系统也越来越多,这些系统虽然功能职责各不相同,但有一个功能模块是所有这些系统都必备的,那就是登录模块。登录模块负责生成并存储识别用户身份的数据,在有用户对系统进行操作的时候验明用户的真实身份,并进行适当的权限限制。
如何实现登录模块要实现一个基础的登录模块非常简单,大概有下面几个步骤:
实现用户注册页面,用户填写包括用户名密码的基本信息之后,将用户信息存储到数据库。
用户尝试对系统进行操作前,判断用户是否登录,如果没有就跳转到登录页面让用户输入用户名密码。
用户输入正确的用户名密码之后,验明用户身份并生成 session 和 cookie,以便在用户做下一次操作时判断用户的身份和权限。
完成上述三个步骤,一个基本的用户登录模块 ...
基于大数据的用户行为预测在前端性能优化上的应用
首先,我得说,这篇文章有点标题党了,其实内容并没有标题看起来那么高大上。其次,本文只是做一个技术方案可能性的探讨,并没有提供完善的解决方案,至多给了一个 Demo 供参考。
目的
前端性能优化,我觉得最主要的目的就两个:1、提升页面加载速度;2、节约服务器资源。
这里特别提一下节约服务器资源,很多人在做前端性能优化的时候,往往只考虑前端性能的问题,而完全忽视前端的性能优化对后端服务器性能的影响。其实,对于一个网络流量比较大的站点来说,节约服务器资源就是省钱啊。比如,js 文件、图片文件的大小越小,服务器所需的磁盘 IO 贷款和网络 IO 贷款也就越小,自然就可相应省下部分开支了。
现有的方法
前端性能优化,我们目前主流的技术方案主要也就两个:1、合并;2、压缩;3、缓存。
举个例子,一个网站有 A,B,C,D 四个页面,分别需要引用 a\b, a\b\c, a\b\c\d, a\d 这几个 js 文件。于是我们考虑到 a 这个 js 文件在四个页面中均有引用,所以不参与合并。然后把 b\c 两个 js 文件合并成 x,把 b\c\d 三个 js 文件合并为 y。现在 A,B,C,D 四 ...
《深入浅出NodeJS》mindmap
接触NodeJS有快两年了,但因为和我的工作内容关系不大,所以一直没有系统的学习。最近终于有空能系统地了解学习一下这门技术,于是买了一本朴灵老师的《深入浅出NodeJS》仔细研读。这本书内容不算很高深,但是讲得还算细致,豆瓣上面评分也不错。个人认为还是挺适合我的。
根据自己的理解,整理了mindmap,以便今后复习。
如何设计一个异步Web服务——任务调度
接上一篇《如何设计一个异步Web服务——接口部分》
Application已经将任务信息发到了Service服务器中,接下来,Service服务器改如何对自身的资源进行合理分配以满足Application对功能、性能、用户体验等各方面的需求呢?
可以从如下几个方向入手去考虑:
当task提交到Service后,我们希望Service能够尽可能快的完成这个task并返回结果。
当大量task同时提交Service后,我们希望Service不要因为需要同时处理大量task导致性能下降,甚至失去响应。
当有多个task被提交到Service时,我们不希望某一个task占用了所有计算资源,导致其他task长时间处于等待状态。
根据上面的要求,我们会产生如下的设计要求:
根据第一点要求,为了能够尽快完成一个task,我们可以使用多线程(或多进程)技术,将一个task拆分为多个子task然后并行处理,充分利用多核CPU的计算资源。
根据第二点要求,我们需要为Service实现一个任务队列,以免大量并发请求导致Service计算资源被耗尽。同时,大量的并发也会导致CPU ...
如何设计一个异步Web服务——接口部分
需求比较简单,提供一个异步Web服务供使用者调用。比如说,某应用程序需要批量地给图片加lomo效果。由于加lomo效果这个操作非常消耗CPU资源,所以我们需要把这个加lomo效果的程序逻辑放到一台单独的服务器上去运行,以免影响应用本身所在服务器的性能。
这篇先讲讲服务的接口部分,侧重于理清应用和服务之间的调用关系,有时间的话,后面再写一篇关于服务内部任务分派资源调度的随笔。
根据这个需求,我们可以很快设计出一套流程:
Application通过向service的addTask接口post任务相关的信息创建一个任务,同时,service将此任务的任务id,即taskId返回给Application,以便Application接下来可以用这个taskId通过getStatus接口查询此任务的进行状态。
问题一:
Application作为一个独立的应用,他肯定需要有自己的任务管理逻辑。也就是说,Application在向Service发出创建任务的请求前,肯定需要先往自己的DB中写入一条对应这个任务的相关数据,以便后续跟踪每个任务的状态和数据。那么application在收到respon ...
html元素双击事件触发机制猜想及疑惑
今天有个同事遇到一个奇怪的问题,我照着他的代码做了一些简化写了这个demo
123456789101112131415161718192021222324252627282930<!DOCTYPE html><html><head> <style type="text/css"> div{position: absolute;top: 0;left: 0;height: 50px} #back{background-color: blue;left: 20px;width: 200px;z-index: 0} #front{background-color: green;top:10px;width: 100px;z-index: 1} </style></head><body> <div id="back"></div> ...
javascript典型bug——错误的闭包
昨天 QT 给我的一个功能提了一个 bug。大概意思就是说,一段在不同位置都会被调用的代码,在 A 处被调用的时候,似乎会对其他调用的地方产生影响。
我仔细 debug 了半天,终于找到了原因。简化过的代码如下:
1234567891011121314151617181920function C(name, id) { this.name = name; var privateId = id; if (typeof this.showName != "function") { C.prototype.showName = function () { console.log(this.name); }; C.prototype.showId = function () { console.log(privateId); }; }}var c1 = new C("name1", "id1");var ...
Closure Compiler应用程序使用入门[译]
Hello World 示例Closure Compiler 应用程序是一个 Java 命令行工具,用来对 JavaScript 代码进行压缩、优化和排错。按照下面的步骤,用一个简单的 JavaScript 程序尝试 Closure Compiler 应用程序。
要让程序成功运行,你需要 Java Runtime Environment version 6。
1、下载 Closure Compiler
创建一个叫 closure-compiler 的工作目录。
下载 Closure Compiler compiler.jar 文件并保存到 closure-compiler 目录。
2、创建一个 JavaScript 文件
创建一个名为 hello.js 的 JavaScript 文件,并输入下面的内容:
12345// A simple function.function hello(longName) { alert("Hello, " + longName);}hello("New User");
将这个文件保存到 c ...
《javascript语言精粹》mindmap
最近刚刚读完《javascript语言精粹》,感觉其中的内容确实给用js作开发语言的童鞋们提了个醒——js里面坑很多啊
不过,我也并不完全认同书中所讲的所有内容,有些书中认为是糟粕的特性,我觉得其实也无伤大雅。
根据自己的理解和认识,做了个归纳,方便以后自己时不时温习一下。








