显示项目的所有文件列表及行数
1 | git ls-files | xargs wc -l |
只统计项目代码的总行数
1 | git ls-files | xargs cat | wc -l |
只查看项目文件列表
1 | git ls-files |
后记
转载来源
补充
也可以装一个 VSCode 插件,叫做 VS Code Counter,可以统计项目
每日一题里面的问题
css 实现碰撞变色的小球
答案来自 大佐 巨佬
Codepen: https://codepen.io/wheatup/pen/poQMdKP/365119e821503f753fb778db16b54896
1 | <figure style="--seedX: 1.34; --seedY: 2.41;"></figure> |
1 | void day2() { |
大佐在群里出了一道题是在页面上显示一个毫秒级的定时器,下面是大佐发的答案,赶紧收藏起来
index.js
1 | import { StrictMode } from "react"; |
App.js
1 | import { useState, useCallback, useEffect, useMemo, useRef } from "react"; |
styles.css
1 | * { |
requestAnimationFrame() 方法告诉浏览器您希望执行动画并请求浏览器在下一次重绘之前调用指定的函数来更新动画。该方法使用一个回调函数作为参数,这个回调函数会在浏览器重绘之前调用。
performance.now() 方法返回一个 DOMHighResTimeStamp,以毫秒为单位,精确度可达 5 微秒(在实现中,将时间戳的第 12 位四舍五入到最接近的整数)。
useCallback 会返回一个 memoized 回调函数。
在这里使用 useCallback 的原因是因为 onClickButton 函数会在每次渲染时都会被创建,如果不使用 useCallback 的话,每次渲染都会创建一个新的函数,这样会导致每次渲染都会触发 useEffect,这样就会导致页面卡顿。
useRef 返回一个可变的 ref 对象,其 .current 属性被初始化为传入的参数(initialValue)。返回的 ref 对象在组件的整个生命周期内保持不变。
在这里使用 useRef 的原因是因为 useRef 返回的 ref 对象在组件的整个生命周期内保持不变,这样就可以保证 phase.current 的值在每次渲染时都不会被重置。
useMemo 会在渲染期间执行,它会返回一个 memoized 值。
在这里使用 useMemo 的原因是因为 useMemo 会在渲染期间执行,它会返回一个 memoized 值,这样就可以保证 time 的值在每次渲染时都不会被重置。
在开发过程中,我们经常需要查看 Sequelize 生成的 SQL 语句,以便于调试。
主要是添加 logQueryParameters: true
,logging: true
这两个参数
1 | var sequelize = new Sequelize('database', 'username', 'password', { |
其中 logQueryParameters
表示是否打印参数,logging
表示是否打印 SQL 语句
但实际上会出现这样的状况,会发现控制台打印的参数无法在 SQL 里面执行。
1 | UPDATE `users` SET `age`=10; |
会变成
1 | UPDATE `users` SET `age`=?; 10 |
对于使用 Sequelize 进行插入操作,日志输出会显示带有占位符的 SQL 查询语句,这是因为 Sequelize 会使用参数化查询来防止 SQL 注入攻击,并提高查询的性能。
然后我去看了源码
1 | const complete = this._logQuery(sql, debug, parameters); |
1 | _logQuery(sql, debugContext, parameters) { |
发现它并没有直接把参数替换掉,而是传入到了数组中,最后调用了 mysql2 的 execute
方法
见
1 | const [rows, fields] = await connection.execute( |
使用 MySQL2,您还可以提前准备好SQL预处理语句。 使用准备好的SQL预处理语句,MySQL 不必每次都为相同的查询做准备,这会带来更好的性能。 如果您不知道为什么它们很重要,请查看这些讨论:
所以我只简单的修改了一下源码,添加了一个输出实际 SQL 的方法
1 | const mysql = require('mysql2'); |
我司的网真是一言难尽,有时候会出现网速很慢的情况需要开手机热点,但是调用接口上传代码又需要内网,所以需要双网卡。
刚好我是苹果手机,所以又有了另一个更好的方案,这样就不用拉公司的网线了哈哈哈哈哈。
如图所示设置一下优先级,让网络优先走我的手机 iPhone USB
想让公司的内网走无线网卡,其它的走手机,所以需要设置一下路由。
先查看一下路由表
1 | netstat -nr |
可以看到有两个 default
,其中第一个就是我的手机(iPhone USB),第二个就是公司内网(无线网卡)。
1 | Internet: |
然后可以用 nslookup
命令查看一下公司内网的域名解析
1 | nslookup www.baidu.com |
拿到IP地址后,添加路由
1 | sudo route add -net 解析到的IP地址 -netmask 你要转发的网关 你的手机IP地址 |
网关可以在网络设置中查看,我的是 255.255.255.0
如
1 | sudo route add -net 192.168.1.123 -netmask 255.255.255.0 10.1.17.254 |
https://discussionschinese.apple.com/thread/250389463
有时候公司WIFI会断掉,这时候就需要恢复路由了,不然会导致无法访问外网。
1>先获得当前的路由表:
1 | netstat -nr |
2> 然后手动清楚路由表,最好运行多次,直到控制台不打印任何信息为止
1 | sudo route -n flush |