最新文章
JavaScript中的数据类型自动转换时,空数组[]或空对象{}都的布尔类型不是false,而是 true当JavaScript遇到预期为布尔值的地方(比如if语句的条件部分),就会将非布尔值的参数自动转换为布尔值。系统内部会自动调用Boolean函数。因此除了以下六个值,其他都是自动转为true:undefinednull-00或+0NaN''(空字符串)
&::-webkit-scrollbar {
width: 5px;
height: 8px;
background-color: #aaa; /* or add it to the track */
}
&::-webkit-scrollbar-thumb {
background: #000;
}
主要文档:https://developer.mozilla.org/zh-CN/docs/Web/CSS/::-webkit-scrollbar
因为各种现代话框架的流行,SQL 注入的威胁相对已经减少很多。但是在看不见的角落,还是存在SQL注入的威胁。SQL 预处理可以解决绝大部分 SQL 注入问题,但是有些地方不能预处理,或者需要变通的方式处理这些问题。比如表名/列名/排序动态传入的场景,这些地方不能预编译,因此很多人还是直接拼接的,而没有有效过滤。 还有 LIKE语句/IN语句中,因为这两个地方的预编译写法都有些特殊,比如 IN 常常使用 FIND_IN_SET 函数代替。
统计指定某一天的PV数cat cn_net_javascript.access.log | sed -n '/22\/Jul\/2022/p' | wc -l
根据访问IP统计UVawk '{print $1}' cn_net_javascript.access.log | sort -n | uniq | wc -l
查看某一时间段的IP访问量(4-6点)grep "22/Jul/2022:0[4-6]" cn_net_javascript.access.log | awk '{print $1}' | sort | uniq -c| sort -nr | wc -l
grep "22/J
Node.js 18.x 开始支持内置单元测试
单元测试很重要,很多新兴的编程语言都是会内置对应的能力,但 Node.js 这块一直都是由社区来实现,前端同学耳熟能详的 Test Runner 有 Mocha、Jest。
2022年04月19日正式发布的 Node.js 18.x ,终于,官方支持了 Test 能力。Fetch API 也被集成到这个版本中了。测试 API 接口在一定程度上代替 SuperTest 了。
代码:
import test from 'node:test';
import assert from 'assert/strict';
// 等价于 describe()
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
本文方法已经过时,官方最新方法:https://uniapp.dcloud.net.cn/tutorial/darkmode.htmlhttps://ask.dcloud.net.cn/article/36995简介:uniapp 暗黑模式适配主要包括三部分,一部分是应用中的页面,另一部分是特定功能弹出系统原生界面(如alert提示框)和安全区域外背景颜色,下面会详细说明分别如何适配。方法一:官方方法,只能适配 ios这个方法是官方给的,但暂时只能适配 ios,地址:https://ask.dcloud.net.cn/article/36995官方给的方法主要是靠 plus.navigator
1 准备一个 1024 * 1024 的png图片,假设名字为 pic.png2 命令行 $ mkdir tmp.iconset,创建一个临时目录存放不同大小的图片3 把原图片转为不同大小的图片,并放入上面的临时目录# 全部拷贝到命令行回车执行,执行结束之后去tmp.iconset查看十张图片是否生成好sips -z 16 16 pic.png --out tmp.iconset/icon_16x16.png
sips -z 32 32 pic.png --out tmp.iconset/icon_16x16@2x.png
sips -z 32 32 pic.png -
一,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
简介curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。它的功能非常强大,命令行参数多达几十种。如果熟练的话,完全可以取代 Postman 这一类的图形界面工具。本文介绍它的主要命令行参数,作为日常的参考,方便查阅。内容主要翻译自《curl cookbook》。为了节约篇幅,下面的例子不包括运行时的输出,初学者可以先看我以前写的《curl 初学者教程》。不带有任何参数时,curl 就是发出 GET 请求。$ curl https://www.example.com上面命令向www.example.com发出 GET 请求,服务器返回
一、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
所有标签