- 博客(399)
- 资源 (24)
- 收藏
- 关注
原创 antd按需加载
Ant Design 是一个致力于提升『用户』和『设计者』使用体验的中后台设计语言,利用统一的设计规范、前端实现、设计/研发工具链对产品研发赋能,全面提高中后台产品体验和研发效率。本来react首页渲染速度就很慢,ant按需加载是非常有必要的。打开react-script/config/webpack.config.dev.js找到“Process JS with Babel.”在o...
2018-02-19 08:51:10 3234
转载 API设计原则(下)
API的语义和文档当传值为-1的参数给函数,函数会是什么行为?有很多类似的问题……是警告、致命错误还是其它?API需要的是质量保证。API第一个版本一定是不对的;必须对其进行测试。 以阅读使用API的代码的方式编写用例,且验证这样代码是可读的。还有其他的验证方法,比如 * 让别人使用API(看了文档或是先不看文档都可以) * 给类写文档(包含类的概述和每个函数)命名的艺...
2018-02-19 08:50:30 315
转载 API设计原则(中)
C++相关值 vs. 对象1. 指针 vs. 引用指针(pointer)还是引用(reference)哪个是最好的输出参数(out-parameters)?void getHsv(int *h, int *s, int *v) const;void getHsv(int &h, int &s, int &v) const;大多数C++书籍推...
2018-02-19 08:49:52 445
转载 API设计原则(上)
译序Qt的设计水准在业界很有口碑,一致、易于掌握和强大的API是Qt最著名的优点之一。此文既是Qt官网上的API设计指导准则,也是Qt在API设计上的实践总结。虽然Qt用的是C++,但其中设计原则和思考是具有普适性的(如果你对C++还不精通,可以忽略与C++强相关或是过于细节的部分,仍然可以学习或梳理关于API设计最有价值的内容)。整个篇幅中有很多示例,是关于API设计一篇难得的好文章。需...
2018-02-19 08:49:11 462
原创 mongodb模糊匹配正则转义
如果我要根据标题和内容搜索关键字,可以如下写法: return this.find({ '$or': [ {title: new RegExp(keyword, 'i')}, {content: new RegExp(keyword, 'i')} ] }) .sort({ 'pv': -1 }) .exec();但是,keyword关键字有特殊字
2017-11-04 12:21:41 6768
原创 19个JavaScript常用的简写技术
三元操作符当想写if…else语句时,使用三元操作符来代替。const x = 20;let answer;if (x > 10) { answer = 'is greater';} else { answer = 'is lesser';}简写const answer = x > 10 ? 'is greater' : 'is lesser';短路求值当给一个变量分配另一
2017-11-04 12:21:14 399
原创 nodejs批量ping
在一批大量的ip地址之中查找哪个地址是有效的并且应答的时间最快nodejs中可以使用net-ping模块ip地址所在的json文件格式如下,只粘贴部分信息,文件名:gui-config.json{ "configs" : [ { "remarks" : "德国", "server" : "172.104.155.76",
2017-11-04 12:20:46 6390 1
原创 koa2给所有页面渲染全局数据
场景给我的博客增加显示用户访问量,后台的每个请求访问量都新增1,每个页面的渲染都返回当前访问量计数。捕捉每次请求在所有路由之前新增 app.use(async (ctx, next) => { const totalhit = await Extends.addHit(ctx.path); ctx.state = Object.assign(ctx.state, { totalhi
2017-11-04 12:20:22 3192
原创 给marked增加TOC(Table of content)
一直使用marked库解析Markdown,现在想给它增加TOC功能 使用marked解析markdown文本是很简单的,如:marked(markdownText)就可以得到解析后的html内容初始化marked引入库var marked = require('marked');重写renderer.headingtocObj后面再介绍,返回的header中包含了用于定位的锚点。当然你也可以直接
2017-11-04 12:19:43 4024
原创 登录后自动跳转到登录前的页面
这个需求很常见,我们浏览自己写的博客文章的时候发现有些错误,此时想修改一下,所以必须得先登录才行。点击登录按钮后跳转到登录页面,登录成功后自动跳转到之前文章所在页面。实现方法就是在登录页面通过document.referrer获取进入到此页面前的地址,然后将地址写入到隐藏的表单元素中,提交表单后地址自然就传到后台了,后台判断登录成功后跳转到传过来的地址就可以了。signin.html页面html代码
2017-11-04 12:18:46 28862 3
原创 Markdown在线预览
Markdown在线预览上线了,拖动文件或者点击上传markdown文件就可以预览了。 服务器不保存文件副本,只是将上传的文件内容转换为html格式显示在网页上。点击地址访问:3inns.cn/mdviewer前端实现支持拖拽和点击打开文件夹选择文件的方式html代码<div id="content"> <div id="dropbox"> <h1>Drop file here
2017-10-20 15:59:44 3395
原创 mongodb部署分片集群
目标在3台CentOS 6服务器上部署mongodb分片集群,其中副本集(replica set)部署在不同的服务器上,每个服务器有一个配置(config)副本集,两个分片(sharding)副本集,以及一个mongos服务。所以3台服务器总共需要部署12个服务。3台服务器IP分别是:172.16.66.113,172.16.66.114,172.16.66.115,下面以113,114,115来代
2017-10-20 15:58:44 2091 5
原创 protobuf反射
C++本身是不支持反射的,但protobuf可以,下面介绍反射的两种主要的用途。通过proto对象的名字来创建一个对象google::protobuf::Message* ProtoHelp::createMessage(const std::string &typeName){ google::protobuf::Message *message = nullptr; const
2017-10-07 16:47:59 1110
转载 10个React小模式
在过去的几年,我经手过很多大大小小的React项目,在这个过程中,我不断的重复重复,逐渐的形成了一些模式,在这里分享给大家。如果你是刚开始接触React,能看到这篇文章,只能说你很幸运 :)。如果你没有接触过React,你可以跳过(3,6,8,10)节。1.数据向下和向上传递对于刚接触React新手,我通常都会告诉他们数据的传递模式,也就是父组件向子组件传递数据(比如一个对象,一个字符串等等),也可
2017-10-07 16:47:08 1274
转载 如何优雅的编写JavaScript代码
几乎每个大一点公司都有一个“运行时间长,维护的工程师换了一批又一批”的项目,如果参与到这样的项目中来,大部分人只有一个感觉——『climb the shit mountain』。所以我们经常会说谁谁谁写的代码就像排泄物一样,为了避免成为别人嘴里的谁谁谁,所以我写的代码一般不注明作者日期信息(抖机灵,其实是因为 Git 能够很好的管理这些信息),所以在项目中,我们应该编写可维护性良好的代码。同时,对于
2017-09-24 09:14:54 4413
原创 模拟QThreadPool实现
std::thread::hardware_concurrency()返回硬件线程上下文的数量,通常是CPU内核数量template numeric_limits根据当前平台,获取指定类型的信息 std::numeric_limits::min() 获取int最小值 std::numeric_limits::max() 获取unsigned long最大值std::unique_ptr
2017-09-24 09:13:57 1024
原创 std::move和右值引用
右值引用允许编程人员去避免不必要的内存拷贝,从而提高性能。 我们知道如果一个类A的成员变量中有指针,那么就要考虑深拷贝和浅拷贝了,深拷贝通常要实现下面几个函数: * 构造函数 * 拷贝构造 * 赋值操作符这样做是没问题的,但是会带来一个问题,会造成一些没必要的拷贝,如:std::string str("hello");str.resize(1024 * 1024 * 100);std::v
2017-09-24 09:13:24 537
原创 Qt只启动一个实例
要想实现这个需求,就涉及到进程间通信了,怎样让当前启动的程序知道在它之前有没有程序在运行。 其实实现方法还是蛮多的,简单介绍几种: * 两个进程读写同一个文件 * 创建一个有名字的事件CreateEvent * 共享内存下面是第三种方案的实现代码:#ifndef RUNGUARD_H#define RUNGUARD_H#include <QObject>#include <QShared
2017-09-24 09:12:42 1169
原创 Qt简单截屏
鼠标左键按下拉取截取范围,中间确认截图,右键取消截图。#ifndef GRABWIDGET_H#define GRABWIDGET_H#include <QWidget>#include <QMouseEvent>class GrabWidget : public QWidget{ Q_OBJECTpublic: explicit GrabWidget(QWidget *pa
2017-09-24 09:12:01 493
原创 mongodb 常用操作
连接mongodbmongo 默认连接到本地端口27017 mongo –host 123.57.244.111 –port 27017 连接远程数据库 插入数据插入一条数据: db.test.insert({title: “1111111111111111111”}) 循环插入数据: for (var i = 0; i < 100; i++) { db.test.insert(
2017-09-24 09:11:27 432
原创 Qt解决:warning : Z-order assignment
Qt中调整UI布局的时候,很容易出现如下警告:warning : Z-order assignment: '' is not a valid widget.warning : Z-order assignment: 'verticalSpacer' is not a valid widget.虽然编译后运行看起来没什么问题,但是对于有轻微代码洁癖的人肯定是忍受不了的,解决办法也很简单,如下步骤:
2017-09-24 09:10:54 5526 2
原创 WTL VS2013安装
WTL下载地址:https://sourceforge.net/projects/wtl/解压后双击运行WTL91_5321_Final\AppWiz\Setup.js,如果不能运行需要打开注册表HKEY_CLASSES_ROOT/.js将右边数据改为JSFile重新启动下就可以运行了。如果还是不行,打开cmd命令找到js所在目录执行:wscript Setup.js执行命令后没有安装上尝试使用管理
2017-09-24 09:10:20 476
原创 react native 配置方面的问题汇总
unable to load script from assets index.android.bundle(in project directory) mkdir android/app/src/main/assetsreact-native bundle –platform android –dev false –entry-file index.android.js –bundle-out
2017-08-23 20:31:09 340
转载 CSRF 攻击的应对之道(转载)
CSRF 背景与介绍CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一。其他安全隐患,比如 SQL 脚本注入,跨站域脚本攻击等在近年来已经逐渐为众人熟知,很多网站也都针对他们进行了防御。然而,对于大多数人来说,CSRF 却依然是一个陌生的概念。即便是大名鼎鼎的 Gmail, 在 2007 年底
2017-08-23 20:30:32 324
原创 nodejs下载图片保存到本地
我们经常在使用别人图片url的时候发现图片显示不了,很可能对方做防盗链处理。在浏览器端有这个限制但是在后端就没有这个问题了。所以我们可以通过图片的url在服务端将这个图片下载下来保存在服务器上,然后客户端去访问我们自己的服务器,为了保证最小的改动,最好是保持原来url的图片路径,我们只需要换url前面的域名就可以了。分析源url,创建本地目录以及解析出新的写入路径使用mkdirSync函数同步的进行
2017-08-23 20:30:09 27470 2
原创 fetch跨域post,后端express
使用fetch中的post方法进行跨域请求,前提是后端是我们自己写的,比如用的框架是express。首先在express中设置支持跨域,然后使用fetch的时候注意参数的填写。这里我们向后端post json数据。fetch post写法如下export function postData(url, json) { return fetch(url, { method: 'POST',
2017-08-23 20:29:48 1696
原创 js库支持CommonJs和浏览器的标准写法
现在github上的很多开源js库都同时支持CommonJs和浏览器,简单的介绍一下写法。如有两个库A.js和B.js,B.js引用了A.js,如果我们要使用B.js库,那应该怎么写呢?A.js源码(function(global, factory) { /* CommonJS */ if (typeof require === 'function' && typeof module ===
2017-08-23 20:29:27 3423
原创 react判断滚动到底部以及保持原来的滚动位置
这里解决两个问题: * 判断某个组件是否滚动到底部 * 页面切换出去再切换回来后怎样保持之前的滚动位置 要保证这个组件就是那个滚动的组件,overflowY为scroll 判断某个组件是否滚动到底部组件代码如下,通过ref获取真实的dom节点<div ref={ node => this.contentNode = node }>在组件加载完成后增加监听scroll事件,组件将要卸
2017-08-23 20:29:05 21115 2
原创 使用flex固定头部和底部中间滚动
使用flex固定头部和底部中间滚动关键点: * root纵向布局高度充满整个浏览器界面并且隐藏滚动条 * content设置滚动,flex设置1,否则当所有item的高度太小时footer会离开底部 * item设置高度后,必须设置flexShrink为0,否则当所有item高度超过content高度时item会被压缩掉 ‘100vh’浏览器视口高度的百分比,这里是100%; fle
2017-08-23 20:28:39 4898
原创 nodejs根据url下载图片存储到当前目录
nodejs根据url下载图片存储到当前目录 开发的过程中有时候需要一些图片资源,但是在浏览器上输入url一个一个的去下载太慢了 使用nodejs很简单就可以把它们下载到本地目录并且保存原始的名字 。模块安装: npm install request –savevar request = require('request')var fs = require('fs')const imag
2017-08-23 20:28:12 8703
原创 javascript原型和继承
原文链接对象和类javascript到处都是对象,一个对象是由方法和属性(值)组成的实体(这里我们叫实例)。例如:javascript中的数组就是一个具有值的对象,同时也包括了push,reverse和pop等方法。var aArray = [1, 2, 3];aArray.push(3);aArray.reverse();aArray.pop();var length = aArray.l
2017-07-02 11:38:53 419
原创 qDebug日志写入本地文件
原文链接在Qt中使用qDebug打印日志信息是非常方便的,它可以直接打印Qt提供的复杂数据结构,如:QStringList,QVariantMap等。不做处理的话它只能在编辑器中打印调试信息,下面介绍将日志信息写入文件的实现方法。static struct LogWrap { LogWrap::LogWrap() { reset(); } LogWrap::~LogWrap() {
2017-07-02 11:38:13 3077
原创 javascript怎么实现类似如C++函数中使用静态数据
原文链接静态数据是一些不变的数据可以多次使用而不用频繁创建,C++中通常把他们放在cpp文件的include下面,或者如果其他地方不会用到的话可以直接写在要用到的函数里面。如果是javascript的话把它直接写在函数外面就是全局变量了这个肯定是不好的,放在函数里面每次运行函数的时候都会构建这个对象对运行时是有损耗的,那应该放到哪里呢?先看C++的通常做法:// xxx.cppstatic std
2017-07-02 11:37:07 397
原创 网页聊天气泡效果实现
原文链接模板收发消息模板(使用ejs),可以认为发消息在右边显示,收消息在左边显示。 每条消息有三部分组成:头像、名字、聊天内容。 头像和名字垂直布局,尖角和消息水平布局,消息整体水平布局,左边消息左对齐,右边消息右对齐,最后是调整各元素之间的间距。<script id="left-message-template" type="text/template"> <div class="l
2017-07-02 11:35:17 2506
原创 Robomongo连接远程MongoDB数据库
修改远程服务器上mongodb配置打开/etc/mongodb.conf配置文件将bind_ip注释起来,如:#bind_ip = 127.0.0.1创建管理员用户mongouse admindb.createUser({user:"admin",pwd:"admin",roles:[{"role":"userAdminAnyDatabase","db":"admin"}]})// 重启服务
2017-06-02 09:05:15 12738 1
原创 bootstrap 有省略点才显示tooltip
让太长的文本显示省略点如果table中的td内容太长了可以使用省略点,给td标签增加如下类:.autocut { max-width:180px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; -o-text-overflow:ellipsis; -icab-text-over
2017-06-02 09:03:46 4169
转载 CHROME开发者工具的小技巧
转载自:酷 壳 – CoolShellChrome的开发者工具是个很强大的东西,相信程序员们都不会陌生,不过有些小功能可能并不为大众所知,所以,写下这篇文章罗列一下可能你所不知道的功能,有的功能可能会比较实用,有的则不一定,也欢迎大家补充交流。 话不多话,我们开始。代码格式化有很多css/js的代码都会被 minify 掉,你可以点击代码窗口左下角的那个 { } 标签,chrome会帮你给格式化
2017-06-02 09:03:13 479
原创 css中position属性(absolute|relative|static|fixed)详解
转载自:脚本之家我们先来看看CSS3 Api中对position属性的相关定义static:无特殊定位,对象遵循正常文档流。top,right,bottom,left等属性不会被应用relative:对象遵循正常文档流,但将依据top,right,bottom,left等属性在正常文档流中偏移位置。而其层叠通过z-index属性定义。absolute:对象脱离正常文档流,使用top,right
2017-06-02 09:02:24 522
原创 无法定位程序输入点strnlen于动态链接库msvcrt.dll上(Qt XP)
Qt应用程序在XP(sp3)系统上出现上述错误使用的Qt版本是5.6.2,我的应用程序中包含D3Dcompiler_47.dll和opengl32sw.dll解决方法1:移除D3Dcompiler_47.dll文件只使用opengl32sw.dll是可以的解决方法2:毕竟xp现在用的人比较少,方法1为了适应xp而移除文件总感觉有些隐患(这些依赖库是通过windeployqt.exe工具打包来的)。
2017-06-02 09:01:28 6752
原创 QWebEngineView支持XP
Qt应用程序中如果用到了QWebEngineView组件,在XP上是有问题的。现象是网页内容显示不出来,直接运行QtWebEngineProcess.exe发现是起不来的,解决办法是下载Qt源码自己编译这个文件。 好在编译QtWebEngineProcess.exe比起编译整个Qt源码简单多了下载Qt源码我用的Qt版本是5.6.2,地址是:http://download.qt.io/offic
2017-06-02 09:00:49 3152 9
xware-desktop_0.13.20141115_amd64.deb
2015-09-19
我的emacs配置
2011-10-30
GDI+ SDK参考(翻译版本)
2011-05-17
wtl81 支持vs2010
2011-03-18
WTL81_9127
2011-02-26
C++设计模式(用C++写的还有简单的介绍)
2011-01-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人