MySQL 中,不可直接修改数据库名称。有一种变通的方式如下:如果有一个数据库名称是 “old_database”,想把这个数据库的名字改成 “new_database”;首先创建一个新的数据库 “new_database”create database new_database;
获取所有源库的表名use information_schema;
select table_name from TABLES where TABLE_SCHEMA=’old_database’;
然后按照以下命令一个个修改rename table old_database.[tablename] to new_da
网上看过很多 Switch 的例子,很多还需要额外的 label 或者 i 标签配合来实现,看到有个完全使用 CSS3 来实现的例子。只使用 CSS3 的伪类就可以实现。HTML: input type="checkbox" class="switch"
input type="checkbox" class="switch" checked
input type="checkbox" class="switch" disabled
input type="checkbox" class="switch" checked disabled
CSS.switch {
box-s
简介Rollup 是一个 JavaScript 模块打包器,可以将小块代码编译成大块复杂的代码,例如 library 或应用程序。Rollup 对代码模块使用ESM。ES6 模块最终还是要由浏览器原生实现,但当前 Rollup 可以使你提前体验。Webpack 的理念是“万物皆是模块”,rollup.js 从一开始,就没有那样宏大的愿景,它描述自己是:“一个 JavaScript 模块打包器”。致力于“将小块的代码编译成大的复杂的代码”。快速使用Rollup 可以通过命令行接口(command line interface)配合可选配置文件(optional configuration fil
一,放大图标方法一:直接修改图标的 font-size。方法二:使用 transform:scale(1.5) 放大图标,需要注意有时在 iconfont 上是无效的,因为 transform 只能使用在块状元素上。比如:display:block 或者 display:inline-block。二,图标位置图标和文字往往不在一条基线上,常常需要调整 iconfont 图标的位置,最简单的方法是:.some-div .iconfont{
position: relative;
top:0.1rem;
}
另一种方法是使用 vertical-align 属性设置元素的垂直对齐方式。该属性
简介做爬虫解析 HTML,之前一直是用 cheerio,随着 jQuery 的渐行渐远,使用 cheerio 的类 jQuery API 已经成为一种负担, 我使用这个支持 Selectors API 的解析器 node-html-parser 来代替 cheerio。前后端的 HTML Selectors API 终于统一了。官方地址:https://www.npmjs.com/package/node-html-parser在 npmjs.com 的周下载量是:1,777,505。 cheerio 的周下载量是 6,696,323。执行速度上:cheerio :12.072
媒体查询(Media queries)非常实用,尤其是当你想要根据设备的大致类型(如打印设备与带屏幕的设备)或者特定的特征和设备参数(例如屏幕分辨率和浏览器视窗宽度)来修改网站或应用程序时。使用Window.matchMedia() 和MediaQueryList.addListener() 方法来测试和监控媒体状态。媒体特性(Media features)描述了 user agent、输出设备,或是浏览环境的具体特征。媒体特性表达式是完全可选的,它负责测试这些特性或特征是否存在、值为多少。每条媒体特性表达式都必须用括号括起来。最常用的媒体特性肯定就是“width"了。今天介绍的这个 CSS
var assert = require("assert");
var request = require('supertest');
// describe('接口测试', async function () {
const http = require('http');
const app = require('../../app');
const PORT = process.env.PORT || 3003;
const SERVER = http.createServer(app.callback());
it('获取 API 版本信息', (done) = {
let
Jest 简介Jest 是一个越来越流行的测试框架,使用率渐渐超过了Mocha, 这些项目都在使用 Jest:Babel、 TypeScript、 Node、 React、 Angular、 Vue 等等!Jest 的目标是在大部分 JavaScript 项目上实现开箱即用, 无需配置。从 it 到 expect - Jest 将整个工具包放在同一个 地方。好书写、好维护、非常方便。快速上手npm install --save-dev jest
下面我们开始给一个假定的函数写测试,这个函数的功能是两数相加。首先创建 sum.js 文件:function sum(a, b) {
return
1,数据库中间表一般,使用下划线连接两个表作为中间表表名(table1_table2)。比如,表前缀是tb,表 tb_article 和 tb_tag 的中间表的表名就应该是 tb_article_tag。有时候可以把表命名为 "tb_article_tag_relation" 来突出一个表是中间表。2,在项目简单的时候,这种命名方式是没有问题的。如果复杂一点, 一个文章表 tb_post,和一个文章的类型表 tb_post_type,按照上面方式命名方式,就会出现 tb_post_post_type 这样的奇葩表名。看到有人使用双下划线“__”或者“_to_“连接两个表,比如“tb_post
一,TypeScript 基本操作安装 TypeScript:npm install -g typescript
编写 test.ts 文件function greeter(person: string) {
return "Hello, " + person;
}
let user = [0, 1, 2];
document.body.innerHTML = greeter(user);
编译 ts 文件生成 js 文件:tsc test.ts
提示:greeter.ts(7,26): error TS2345: Argument of type 'number[]'
is no
一、N-API 开发方式介绍在 NAN 的开发方式下,一次编写好的代码在不同版本的 Node.js 下也需要重新编译,否则版本不符的话 Node.js 无法正常载入一个 C++ 扩展。即一次编写,到处编译。而 N-API 相较于 NAN 来说,它把 Node.js 的所有底层数据结构全部黑盒化,抽象成 N-API 当中的接口。不同版本的 Node.js 使用同样的接口,这些接口是稳定地 ABI 化的,即应用二进制接口(Application Binary Interface)。这使得在不同 Node.js 下,只要 ABI 的版本号一致,编译好的 C++ 扩展就可以直接使用,而不需要重新编译。
Window.getComputedStyle()Window.getComputedStyle()方法返回一个对象,该对象包含元素的所有 CSS 属性的值。获取元素属性 style
#elem-container{
position: absolute;
left: 100px;
top: 200px;
height: 100px;
}
/style
div id="elem-container" dummy /div
div id="output" /div
script
function getTheStyle
njs 简介Nginx 是C语言开发的,很多人扩展 Nginx 的功能,并未使用 C 语言开发,更常见的是使用 Lua 扩展和定制 Nginx 服务。比较著名的是 OpenResty 使用 lua-nginx-module 模块运行 Lua 语言,并集成了大量精良的 Lua 库、第三方模块,可以方便地搭建能够处理超高并发、扩展性极高的 Web 服务。就像Atwood定律所描述一样,该来的又来了。现在最新版本的 Nginx 1.9.11+ 已经推出了 njs 模块,可以在 nginx 的配置中引入 JavaScript 脚本,从而实现一些更复杂的 nginx 配置功能。NJS 模块并不是运行一个
SVG 的知识基础你可能学习过关于 SVG 的基础知识,并且能读懂 SVG 的结构。至少你知道:SVG 元素: svg , symbol , g , path SVG 属性: d, fill, stroke, stroke-width注意:从绘图工具中导出的 SVG 经常带着一些不必要的内容和标签等(其中 d 下面包含了清晰的路径数据),可以使用工具比如 SVGOMG ,然后比较一下处理前后哪些东西是移除或简化过的。移除颜色数据通常单色图标的源文件中, path 的颜色都是黑色 #000000。并且没有 fill 属性。如果我们在 SVG 文件中设置了 fill 属性,就不能通过 CSS
iconfont.cn 官方给我们讲解 iconfont 的实现原理。字体内部我们来看下一个字体的样子。我们可以通过一些软件打开字体,比如fontforge,fontlab。比如下面的方正大草字体:我们打开看下:可以看到“我”这个字对应的的图形就是我们在网页上看到的样子。另外注意左上角的unicode。是6211,也就是我们的另一种表现形式。再双击可以看到我这个图形的样子:其实就是一些路径。而这个路径可以用ai,ps,sketch等等来画,画完粘贴到这里。iconfont1.0所以我们就可以做一些事情了,我们可以去改造字体,把一个字对应的图形换成我们设计师设计的样子,处理好兼容性就成了我们ic
\w匹配的仅仅是中文,数字,字母,对于国人来讲,仅匹配中文时常会用到,见下匹配中文字符的正则表达式: [\u4e00-\u9fa5]或许你也需要匹配双字节字符,中文也是双字节的字符匹配双字节字符(包括汉字在内):[^\x00-\xff]注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)更多常用正则表达式匹配规则:英文字母:[a-zA-Z]数字:[0-9]匹配中文,英文字母和数字及_:^[\u4e00-\u9fa5_a-zA-Z0-9]+$同时判断输入长度:[\u4e00-\u9fa5_a-zA-Z0-9_]{4,10}^[\w\u4E00-\u9FA5\uF900-\u
进制 (system of numeration)进制也就是进位制。进行加法运算时逢X进一(满X进一),进行减法运算时借一当X,这就是X进制,这种进制也就包含X个数字,基数为X。十进制有 0~9 共10个数字,基数为10,在加减法运算中,逢十进一,借一当十。十进制(Decimalism)使用的数字都是由 0~9 共十个数字组成的,逢十进一,也因为只有 0~9 共十个数字,所以叫做十进制。 人类算数采用十进制,可能跟人类有十根手指有关。 数位有一定的意义,从右往左分别表示个位、十位、百位、千位……二进制(Binary)从十进制计数法类推,使用的数字只有 0、1两种,这就是二进制。例如,数字 0、
蛮荒时期 CSS Sprites在很久很久以前,使用图标一般是直接使用图片,或者使用雪碧图。缺点是颜色单一,难以维护。//CSS
[class^="icon-"],[class*=" icon-"] {
display: inline-block;
width: 14px;
height: 14px;
margin-top: 1px;
*margin-right: .3em;
line-height: 14px;
vertical-align: text-top;
background-image: url(bootstrap/img/glyphicons-h
node-sass 的问题之前一直用的是 node-sass,他包含两部分,一个是使用 Node.js 编写的包裹器 Wrapper,一个是使用C++编写的 Sass 编译器 libsass,最开始是不同平台编译这个编译器麻烦,后来node-sass就直接发布各个平台编译好的编译器了。在国外就解决了编译的问题。在国内因为下载源被墙,所以常出现各种安装失败。https://javascript.net.cn/articles/657https://javascript.net.cn/articles/631sass 官方主推 dart-sassdart-sass是Sass的主要实现,它快速,易于
项目地址:https://www.npmjs.com/package/koa-csrf安装:npm install koa-csrf
需要配合session使用:// CSRF 防御
const CSRF = require('koa-csrf');
const csrfMD = new CSRF({
invalidSessionSecretMessage: 'Invalid session secret',
invalidTokenMessage: 'Invalid CSRF token',
invalidTokenStatusCode: 403,
});
router.post
所有标签