https://www.netlify.com/

https://vercel.com/docs/getting-started-with-vercel

是什么

“无服务”前端部署,serverless

其实是你提供

  • “前端源代码”
  • “构建过程” 有的在vercel页面配置,也可以你的命令行脚本
  • “edge/serverless function”

它负责:

  • 源代码的构建(可以与github等平台关联,自动触发,也可以cli触发)
  • 并服务构建后的静态内容
  • 所有对edge/serverless function的请求再运行零时的后台代码
閱讀全文 »

众所周知, 常用的输出有print,而调bug有logging, 用起来就是 info/debug/warning/error

但还有一些常见的问题

  • 在命令行输出一些,在日志文件输出一些,两边等级和格式不同
  • 希望日至记录 时间/文件/输出的行数/上下文
  • 直接使用的软件的logging 和 库的logging有什么不同
  • 想重定向所用的库的logging, 调整库的logging的等级是否可行
閱讀全文 »

TLDR: 实践起来能获取和播放不少的歌,但还是有大量的歌在匹配和下载中有问题,所以还是不是一个”完美”的解决方案

众所周知 服务器只是别人的电脑, 在经历,小说/电影/音乐/文字 多次不同应用里不可靠时,最终回到原点还是本地离线方案

总览

工作流: 电脑负责下载, 使用电脑-手机同步,手机离线播放

  • 安装F-Droid
  • 安装Linux/Windows/Android同步软件, 例如Syncthing, 解决 电脑和手机之间的同步
  • 通过F-Droid安装音乐播放器Retro(支持动态lrc) (有的手机系统自带的音乐播放器也能播放本地的)
閱讀全文 »

https://cppquiz.org/quiz/question/1

辅助 https://godbolt.org/ https://cppinsights.io/

C++17 标准

Undefined: 一般是不可预期的行为,可能编译器在特定的时候特定处理了, 在使用不可移植的或错误的程序结构或错误的数据时的行为,而本国际标准对此没有规定要求。编译器可以 完全无视情况,产生不可预测(运行时)的结果;在翻译或程序执行过程中,以环境所特有的记录方式行事(无论是否发出诊断信息);终止翻译或执行(发出诊断信息)。如 integeer overflow

Implementation-defined: 标准未定义,编译器需要在编译器文档中 说明如何实现的

Unspecified: 使用一个未指定的值,或其他行为,本国际标准提供了两种或更多的可能性,并对在任何情况下选择哪一种没有进一步的要求。 未指定的行为的一个例子是函数的参数被评估的顺序。

閱讀全文 »

TLDR: 有可实施性,但是作为更简单的方案是像我现在这样直接用Ubuntu

背景

众所周知,在以前,通过vim+ssh可以容易的远端开发, 并且当我的主系统一直是Ubuntu时,连vmware里,连windows的wsl2里的linux都十分容易

但现实是很多win下的程序员,和不会vim的程序员, 以及大的项目需要用一下vscode

以及手上项目各种各样,不同语言的,同语言不同版本的,不同工具依赖同样三方库的不同版本的(虽然现在不少语言的隔离有了各自的方案,而且五花八门的,这个直接从上层解决了,甚至同时帮助了系统更换)

解决了什么问题

  • 远离了windows的ntfs,使用了Unix file permissions防止777
  • 统一了环境,即使linux也是一堆环境,解决了下游环境安装难的问题,现在只需要安装docker
  • 使用了现代化vscode(可以vim插件支持vim快捷键)
  • 性能不差
閱讀全文 »

TLDR: 在多次尝试 zsh之后,2023 还是回到了bash

閱讀全文 »

问题

那么多面经在说引用计数, 循环引用会无法gc,而以我对jvm python等多个有gc语言的了解,js 再怎么也不至于就是个引用计数

否则循环引用早爆了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function foo() {
var a = {};
function bar() {
console.log(a);
};
a.fn = bar;
return bar;
};

let wm1=new WeakMap();function f(){
let b={};
let a={};
a.x = a;
wm1.set(a,1);
wm1.set(b,2);
wm1.set(foo(),3);
wm1.set(wm1,4);
console.log(wm1.has(a));
console.log(wm1.has(b));
};f();console.log(wm1);

chrome performance 点垃圾桶 进行gc, 然后再执行

1
console.log(wm1);
閱讀全文 »

https://github.com/CroMarmot/ReactDemo/commits/master

Next

工具

功能 doc
Head https://github.com/CroMarmot/ReactDemo/commit/00dc0b74d4363e3be39433647a63c3fbe8a96d66
Script https://github.com/CroMarmot/ReactDemo/commit/0cb1c2aac95b276a689bb49e31f7a147d78c159e
静态生成,Link,route,404 getStaticPaths getStaticProps
global css, module css commit
static image https://github.com/CroMarmot/ReactDemo/commit/0a826c74cef03573ced89c2eb36c70a763401fba

Vercel 部署

https://vercel.com/new

Init

https://nextjs.org/learn/foundations/

1
npx create-next-app@latest --ts

React

React use Babel to compile JSX

严格模式

https://zh-hans.reactjs.org/docs/strict-mode.html

识别不安全的生命周期

关于使用过时字符串 ref API 的警告

关于使用废弃的 findDOMNode 方法的警告

检测意外的副作用

检测过时的 context API

确保可复用的状态

1
2
3
4
5
6
7
8
9
10
import React, { StrictMode } from 'react';

import ReactDOM from 'react-dom';

ReactDOM.render(
<StrictMode>
<App />
</StrictMode>,
document.getElementById('root')
);
閱讀全文 »

CORS

The server is responsible for reporting the allowed origins. The web browser is responsible for enforcing that requests are only sent from allowed domains.

Capture

1
tcpdump -i lo 'port 5000' -vv -x -X
閱讀全文 »
0%