关于开发node.js个人网站,你需要的知识都在这里了
nodejs.jpg从2016年5月份开始,接触Node.js到现在已经有一年半的时间了。从最初的懵懵懂懂,到一篇一篇地啃大部头、看教程,再到自己开始写笔记、写教程,以及上手做了一些小功能,最终到部署自己的网站到云服务器上。中间踩过坑(MongoDB基础X——踩过的坑以及解决方案),也走过弯路;为此付出过代价,也绞尽脑汁去解决。但总的来说,还算一路顺利。而当饱含自己心血的作品真正部署在了云服务并正常运行的时候,那份激动真的没法用语言来描述。当知识积累到一定程度后,我希望能分享给新人们,让他们少走一些弯路,让他们能更快地上手、做出更多酷炫的作品来;于是我在简书创建了一个专题,把我的经验、我收集的资料以及其他人的经验都呈现给大家。>>>>移步【Node.js专题】最后,向大家推荐我的网站:OneLib智库。这是我的博客,也是我发布最新资料的地方,欢迎大家留言和讨论。爱吐纳。这是我为林明老师做的网站,主要服务于高中学生和教师。工具集。这是我的工具集,提供了IP查询、火车票查询、图片解析、颜色等工具。汤圆直播。这是我做的一个简易直播网站
[贝聊科技] 一个炫酷大屏展示页的打造过程
首发于贝聊移动开发写文章登录[贝聊科技]一个炫酷大屏展示页的打造过程黑猫3hoursago作者:韩永豪移动开发部前端开发工程师今年的11月初,我们公司参加了「2017年亚洲幼教年会(APEAC)」并取得了很不错的成果。本人有幸负责关于这次展示页的前端开发,特以此文记录开发过程中的关键环节。展示页分为三大模块:数据展示、动态展示和地图展示。效果如下:数据展示此模块展示我们公司至今为止的各项数据,通过异步请求定时更新。数字过渡的动态效果为类似于老虎机的效果,对应数位的新数字从下至上替换旧数字,如果该位数的数字没有发生变化,则没有过渡效果。要实现这种效果,第一步要把数字按位切分://分离每个数字functionsplit(num){return(num||0).toString().split('');}然后,增加千分位,即从个位开始,每隔三位插入一个逗号,实现代码如下:functiontoThousands(num){varnum=(num||0).toString(),resul
Leaflet.js爬坑记录(1)
转载请注明出处:王亟亟的大牛之路初衷以及传送门:因为要做一个防碰撞的警报/预警系统,所以带着小伙伴最近在整地图相关的技术,有一些特殊要求不使用收费的地图源非瓦片图加载性能在秒级丰富的API成熟的实际商业案例综合上述需要和朋友的推荐,使用/学习了Leaflet.js。基于播撒欢笑播撒爱的初衷,把体验过程中遇到的一些情况和积累,分享给大家。不想看介绍,想直接看源码的可以进传送门运行的案例地址在src/html下,3个demo拽浏览器都能跑Leaflet倒包的小要点倒包需要样式的css和功能的js,但是js一定要在css后加载
前端本地文件操作与上传
前端无法像原生APP一样直接操作本地文件,否则的话打开个网页就能把用户电脑上的文件偷光了,所以需要通过用户触发,用户可通过以下三种方式操作触发:通过inputtype=”file”选择本地文件通过拖拽的方式把文件拖过来在编辑框里面复制粘贴第一种是最常用的手段,通常还会自定义一个按钮,然后盖在它上面,因为type=”file”的input不好改变样式。如下代码写一个选择控件,并放在form里面:
然后就可以用FormData获取整个表单的内容:$("#file-input").on("change",function(){console.log(`filenameis${this.value}`);letformData=newFormData(this.form);formData.append("fileName",this.valueJboot v1.1.1 新增 websocket 和 flashMessage 支持
Jboot是一个基于jfinal和undertow开发的微服务框架。提供了AOP、RPC、分布式缓存、限流、降级、熔断、统一配置中心、swaggerapi自动生成、Opentracing数据追踪、metrics数据监控、分布式session、代码生成器、shiro安全控制等功能。Jbootv1.1.1主要更新内容如下:新增:FlashMessage功能,方便Controller进行redirect的时候可以通知用户。新增:websocket的功能和具体使用demo。新增:在JbootAppListener里新增onAppStartBefore方法,方便扩展。新增:zbusrpc的实现和支持。优化:重构JfinalHandler,可以自由添加Handler的顺序。优化:重构hystrix的降级功能,在进行降级回调的时候获取更多的细节。优化:重构JbootCache模块,方便获取底层具体对象,方便扩展。其他:更新依赖、完善文档。希望用的开心,Jboot正在参加开源中国的#2017年度最受欢迎中国开源软件评选#活动,请投J
微软云计算 Massive Data 处理语言Scope 1
微软云计算大数据处理语言Scope-1MassiveData处理一直是云计算中很重要的一个环节.目前像Google,Yahoo在相关方面都有自己专有的技术.例如Google的基于MapReduce的Sawzall语言.和Yahoo基于Hadoop的Pig。对于大数据处理,Cosmos是微软的一个运行在大规模服务器集群上的分布式技术平台.专门用来存储和分析MassiveData.而Scope是运行在Cosmos环境下的数据处理工具。有了Scope,相信微软自己的云计算架构将会更有吸引力.不同于Google,和Yahoo的是微软的Scope语言虽然像SQL语句,但其实是来自C#语言扩展。什么是Scope?它更像是在SQL中插入C#方法的复合语言,结合了SQL处理格式化数据便捷等优点和C#能灵活处理文本内容等优点,是处理大数据的利器。其次:1.ScopeistheQueryLanguageforCosmos(Scope是在Cosmos平台下运行的Query语言)2.ScopeIsNotSQL(Scope像S
asp.net core 实现一个简单的仓储
一直有自己写个框架的想法,但是一直没有行动起来,最近比较闲,正好可以开工了.现在已经完成了两部分.1.一个简单仓储,实现使用的是ef2.IOC部分,这里是把内置的ioc替换成了aotofac,这部分感觉还是有一点缺陷的.下面说仓储部分这里主要是接口是实现,目前使用ef实现了仓储的接口.看一下代码publicinterfaceIRepository>GetAllListAsync();List
针对VBA宏勒索软件BLUFISH的检测分析与有效防护
导语:传统勒索软件的重要功能模块多半为二进制可执行程序,而脚本仅作为加载器使用。安天在近期捕获的样本中发现了一种新型的完全使用VBA宏编写的文件加密勒索软件家族BluFish。一、VBA宏勒索软件BluFish概述传统勒索软件的重要功能模块多半为二进制可执行程序,而脚本仅作为加载器使用。安天在近期捕获的样本中发现了一种新型的完全使用VBA宏编写的文件加密勒索软件家族BluFish。不同于其他勒索软件(如Locky),其加密文件时不会改变文件名称,亦不会修改文件结构,而仅对MicrosoftWord文档内容进行加密,其勒索信息将连同加密内容一起显示在Word文档内容中。该勒索软件通过感染MicrosoftWord的Normal模板进行传播,并在每个被感染的Word文档中增加名为“qkG”的恶意宏代码。当用户启用宏时,normal.dot模板就会被感染,当用户关闭文档时,它就会将文件加密。从目前的情况来看,该家族勒索软件处于编写者技术摸索进化阶段,并不完全成熟,但VBA宏编写勒索软件后续可能成为一种典型手法。技术成熟后,此类攻击
解析Dataworks中的运行和测试运行的区别
有很多用户在使用Dataworks的数据开发中运行SQL和在数据集成中运行同步任务时,都会有一个疑惑。我在页面上运行和测试运行有什么区别呢?为什么我明明配置了系统参数,在代码中运行时,却没有自动解析,而提醒我去填写系统变量的临时值?下面我就给大家讲讲这两者的主要区别。页面上的运行页面上的运行是不会经过调度系统的,直接将任务下发到底层去执行。所以在使用了调度参数后,运行时,是需要指定调度参数解析出来的值的。页面上触发的运行是不会生成实例的,所以也就没有办法去指定运行任务的机器,只能下发到Dataworks的默认资源组上去执行。数据开发在页面上运行时如何给自定义参数赋值在数据开发中,创建了SQL节点任务时,在SQL中使用了自定义参数。点击页面上的运行,会弹出一个提示框,在这个提示框里一定要填一个具体的值,而不要填$[yyyymmdd]这种,不然在代码中$[yyyymmdd]是不会识别出来的。数据集成在页面上运行时如何给自定义参数赋值在数据集成中,创建脚本模式的任务时。在脚本中使用了自定义参数,保存后,点击页面上的运行,提示我需要
c# winform treelistview的使用(treegridview)
TreeView控件显示的内容比较单一,如果需要呈现更详细信息TreeListView是一个不错的选择。先看效果:首先需要引用文件System.Windows.Forms.TreeListView.dll、System.Runtime.InteropServices.APIs.dll你可以将TreeListView加入到工具箱中然后在添加到窗体中。1.你需要添加列2.你需要添加一个ImageList作为节点图标的容器(你还需要配置TreeListView的SmallImageList属性为ImageList控件的ID)3.现在可以给控件绑定数据了此控件比较适合呈现具有父子级关系的复杂数据结构,当然也包含XML格式的数据下面尝试解析一个设备树XML然后绑定到控件中:
ASP.NET没有魔法——ASP.NET Identity 的“多重”身份验证代码篇
上篇文章介绍了ASP.NET中身份验证的机制与流程,本文将使用代码的来介绍如何实现第三方账户验证与双因子验证。本章主要内容有:●实现基于微软账户的第三方身份验证●实现双因子身份验证●验证码机制实现基于微软账户的第三方身份验证在微软提供的ASP.NETMVC模板代码中,默认添加了微软、Google、twitter以及Facebook的账户登录代码(虽然被注释了),另外针对国内的一些社交账户提供了相应的组件,所有组件都可以通过Nuget包管理器安装:从上图中看到有优酷、微信、QQ、微博等组件,其中一些是微软提供的,一些是其它开发者提供的。而本文将使用微软账户为例来介绍如何实现一个第三方登录。注:本章主要代码参考ASP.NETMVC模板代码,所以在文章中只列出关键代码,其余代码与模板中的完全一致。组件安装及Key申请在开发之前首先需要通过Nuget安装Microsoft.Owin.Security.MicrosoftAccount:另外就是需要去微软的开发者中心使用微软账
.net中ThreadPool与Task的认识总结
线程池和Task是多线程编程中两个经常使用的技术,大家在熟悉不过了。他们有什么关联关系?Task又是怎么工作的呢?估计很多时候会犯糊涂。通过翻阅资料,终于弄明白了,与大家分享一下。工作线程与I/O线程在ThreadPool中有这样一个方法:publicstaticboolSetMaxThreads(intworkerThreads,intcompletionPortThreads);此方法中有两个参数:workerThreads和completionPortThreads。这两个参数引申出了两个概念:辅助线程(也叫工作线程)和异步I/O线程。这两个线程有什么区别么?通过查阅资料,我们可以了解到,工作线程其实就是我们编码主动向ThreadPool中创建的线程。而I/O线程是线程池中预先保留出来的部分线程,这部分线程的作用是为了分发从IOCP(I/Ocompletionport)中的回调。那么什么是IOCP回调呢?在CLR内部,系统维护了一个IOCP(I/Ocompl
中小型研发团队架构实践:如何用好消息队列RabbitMQ?
一、写在前面使用过分布式中间件的人都知道,程序员使用起来并不复杂,常用的客户端API就那么几个,比我们日常编写程序时用到的API要少得多。但是分布式中间件在中小研发团队中使用得并不多,为什么会这样呢?原因是中间件的职责相对单一,客户端的使用虽然简单,但整个环境搭起来却不容易。所以对于系列中的几篇中间件文章,我们重点放在解决门槛问题,把服务端环境搭好(后期可云或运维解决),把中间件的基本职责和功能介绍好,把客户端Demo写好,让程序员抬抬脚,在调试代码中即可轻松入门。根据我们以往几年的经验,初次接触也可以自主快速学习,文章和Demo以实用为主,以下是消息队列RabbitMQ的快速入门及应用。二、为什么要用消息队列MQ1、业务系统往往要求响应能力特别强,能够起到削峰填谷的作用。2、解耦:如果一个系统挂了,则不会影响另外个系统的继续运行。3、业务系统往往有对消息的高可靠要求,以及有对复杂功能如Ack的要求。4、增强业务系统的异步处理能力,减少甚至几乎不可能出现并发现象:使用消息队列,就好比为了防汛而
RabbitMQ消费者是消费一条接收一条还是会被不断推送消息?
问题:RabbitMQ消费者是消费一条接收一条还是会被不断推送消息?实验:写一个最简单的生产者,一直发消息:StringQUEUE_NAME="hello";//建立服务器连接,获取通道ConnectionFactoryfactory=newConnectionFactory();factory.setHost("cl-dev-rabbitmq-ndss-m98rq6.docker.sdp");factory.setPort(6055);factory.setUsername("ndss_dev_nl9EAk");factory.setPassword("oqENVfQVqOsV");Connectionconnection=factory.newConnection();Channelchannel=connection.createChannel();//声明一个发送队列//声明一个队列是幂等的,仅仅在要声明的队列不存在时才创建channel.queueDeclare(QUEUE_NAME,false,
分享10个优美的程序员把玩儿的实用科技设计酷站(5)
今天为优美的程序员们带来了科技设计酷站第5期!哈哈哈~~~绝对实用!快来看看吧~~~O(∩_∩)O~DraggableDraggable是一个来自Shopify的有趣的库,它是建立在一个支持浏览器内托拽的API之上的,你可以将它轻松地应用到其他的地方,甚至可以编写自定义的模块对它进行拓展。VueraVuera是一款JS库,让你可以同时使用Vue和React,简而言之就是在Vue中使用React组件,在React中使用Vue组件。ImageAsyncAttribute这是影响到网页技术发展的另一革新,img元素的async属性。这篇文章涵盖了图片异步加载的方法以及牵涉到JavaScript的一些小技巧。FirefoxQuantumMozilla一直致力于Firefox浏览器的更新,而今天我们看到的代号为ProjectQuantum无疑意味着火狐浏览器的下一个更新。FirefoxQuantum中包含了一个名名为QuantumCSS的全新的CSS渲染引擎,全新
Programming Languages: Application and Interpretation【译11】
11内存管理11.1垃圾垃圾(garbage)指的是已分配但是不再需要的内存。典型的编程语言的运行时系统采用两种不同的内存分配方式。一种是分配给环境;这种分配方式要和静态作用域保持一致,所以它只需要支持推入(push)和弹出(pop)操作。函数调用返回时,为其环境分配的空间也被返回,供后续函数使用,看似没有成本。【注释】与之相对,在贮存中分配的内存必须伴随某个值的一生,可能要超过其创建位置的作用域——事实上,它可能一直存活下去。因此,我们需要不同的策略来回收在贮存中分配空间所产生的垃圾。并非没有成本。硬件必须执行“弹出”指令。这不见得就一定比其他内存管理策略更高效。空间回收的方法有很多,大体可以分到两个阵营中:人工和自动。人工的方式依赖于开发者能够了解内存的使用,并正确的释放不需要的内存。一般认为,人并不擅长做这种事(虽然在某些情况下,人类拥有机器所无法获取的知识)。因此,几十年来,自动化的方法越来越普及。11.2什么样的垃圾回收是“正确的”?垃圾回收既不应该太早地收回空间(可靠性,soundness)也不能太晚(完备性,compl
高逼格程序员指南
一.开始准备工作1.首先,你的电脑不一定要高配置,但是必须得是双屏,而且越大越好,如果能一个横屏一个竖屏那就更好了。这样,一个用来查资料,一个用来写代码。总之要显得信息量很大,效率特别高。2.再次,你的椅子不一定要舒服,但是一定要可以半躺下。3.然后,要有大量便签,最好是各种颜色的,用来记录每天要完成的事务。尽量沿着电脑屏幕边框贴满,这样,更能显出有很多事情的样子。4.工具书,机械工业,orelly的,电子工业什么的都可以,能英文就英文,不行影印版的也可以,反正越厚越好,切记,千万不要放在书架上,一定要半打开状的堆在桌上。二.从进门开始1.着装!着装!着装!(重要的事情说三遍)不管你是去实验室,还是去公司大楼,还是在小公司的民宅,还是在自己创业的黑作坊;无论春夏秋冬、白天晚上、刮风下雨、电闪雷鸣、台风龙卷风,一个高逼格的程序员都应该十分在意自己着装!这里提供给你几点专业的进阶建议,如:初级装:衬衣+牛仔裤+休闲鞋。中级装:T恤+宽松短裤+拖鞋。高级装:背心+宽松大花裤衩+人字拖。2.举止得体。在走廊或者过道里时,一定要双手插
程序员的17种状态,你有过几种?
点击上方蓝字关注,做一名有趣有料的程序员1明明是个小bug但就是死活修不好...2作为一个码工我意外走入了一个充满PM的会议室...3偶然间看到了自己多年前写的代码4调试过多线程的都会懂!5这就是你们追捧的结对编程6Gitmerge7当他们问我是否需要兼容IE的时候8当我以为已捕获了所有可能的异常...的时候9你永远try...catch不到所有的可能性!10数据库的Delete语句忘了使用限定词where...11当我试图把一个bug踢给别人的时候....12好像真的没人发现我产品里的bug...13第一次尝试退出vim14当我试图清理几行所谓的旧代码的时候...15当我按照StackOverfl
[译] 容器的可移植性真实含义究竟是什么?
容器提供了可移植性和灵活性的承诺:将应用程序从开发人员的笔记本电脑移动到内部数据中心,并将其转移到不同的云提供商的难度很小?他们可以提供新的自定义版本的软件,以快速满足最后签署的合同期限,甚至可能为您的客户提供自助服务。它们启动速度更快,并且比虚拟机更容易移动。真的是这样吗?这是目标,但可移植性和兼容性是不一样的。可移植性是一个业务问题,而兼容性是一个技术问题。便携性只能通过规划不同环境中的兼容性来实现。单独采用容器不能保证应用程序的兼容性。为什么会这样?容器真的只是包装应用程序和所有操作系统依赖关系的一种奇特方式。这是什么意思?这意味着要真正实现可移植性,从而实现业务灵活性,您需要进行规划。以下是一系列有助于确保成功的建议:1.标准操作环境这需要包括容器主机,容器图像,容器引擎和容器编排。所有这些移动部件都需要对齐和标准化。所有这些组件需要一起进行版本化和测试。升级需要作为一个单位一起计划,因为有很多相互依赖关系。在容器建造或运行的每个环境中,包括开发人员的笔记本电脑,测试服务器和虚拟机都需要保
Kevin Webber:Java 的云迁移
KevinWebber在开始演讲的时候说,企业软件构建应用程序的形式比较散碎,不够系统,集成很复杂。传统的基础架构(Traditionalinfrastructures)具备主动/被动的粗糙故障转移(crudefailover),支持在主动和被动系统之间复制复杂的状态。在一个现代化项目中,架构师必须做出的最初几项决定(“第一英里(TheFirstmile)”)是至关重要的。他不仅谈到了关键的架构决策,也提及了如何根据领域驱动设计(Domain-DrivenDesign)的原则来做出这些决策。为了定义所涉及的业务过程以及如何将这些过程转换为事件驱动(event-driven)系统,事件风暴(Eventstorming)将关键的利益相关者聚集到一个协作的环境中。团队应该关注在业务中已经发生的最有趣的事件。在从遗留系统(legacysysems)到反应系统(Reactivesystems)的迁移中,其他一些诸如防护层(ACL)和Strangler模式的概念也同样有用。洋葱架构(Onio