五分钟搭建个人博客:使用lighbox预览图片

大家好。 今天接着研究个人站长探索之博客搭建。 前阵子来了趟西北环线旅行,写了几天游记,并附上几张图,但图片大小不一,也不能占太多空间,就想着要是能有那种点击图片放大查看的功能就好了,找了一圈没找到hugo PaperMod有类似的设置。 ...

六月 3, 2024 · 2 分钟 · 727 字

从版号排序到手写Sort

给版本号排序 var versions = ['2.0.1', '1.1.0', '1.0.2', '2.0.0', '1.0.0', '3.0.10', '2.1.10', '2.0.0']; versions.sort((a, b) => { const alist = a.split('.'); const blist = b.split('.'); for (let i = 0; i < alist.length; i ++) { if (alist[i] > blist[i]) { return 1; } else if (alist[i] < blist[i]) { return -1; } else { continue; } } return 0; }) sort是怎么实现的 compareFn(a, b) 返回值 排序顺序 > 0 a 在 b 后,如 [b, a] < 0 a 在 b 前,如 [a, b] === 0 保持 a 和 b 原来的顺序 const MySort = function (list, compareFn) { if (!compareFn) throw "compareFn is not a function"; if (list.length <= 1) return list; // null list fn ... const mid = Math.floor(list.length / 2); const midValue = list[mid]; const beforeList = []; const midList = [] const afterList = []; for(let i = 0; i < list.length; i ++) { if ( compareFn(list[i], list[mid]) < 0 ) { beforeList.push(list[i]) } else if ( compareFn(list[i], list[mid]) > 0 ) { afterList.push(list[i]) } else { midList.push(list[i]) } } return [].concat( MySort(beforeList, compareFn), midList, MySort(afterList, compareFn) ) } (别的实现方式) ...

六月 3, 2024 · 1 分钟 · 217 字

奇怪的知识:js如何判断系统架构

场景:点击按钮下载什么架构的客户端 为啥需要JS判断当前浏览器所属的系统架构?可以代入到场景:如果需要自行分发arm、x86技术架构的客户端安装包(为了控制包大小等),怎么能让用户直接点击下载按钮,下载正确的技术架构,而不是需要用户了解相关内容,查看本机架构呢? ...

六月 3, 2024 · 2 分钟 · 986 字

http相关

三次握手四次挥手 客户端发起请求,携带请求序列号 服务端接收,发送应答,返回请求序列号,携带新的服务序列号 客户端收到应答和对应的请求序列号,发送确认应答,发送数据 序列号保证请求的正确性。接收之后再发送请求,避免超时重复发送。 ...

六月 2, 2024 · 5 分钟 · 2006 字

script中的defer和async属性

html.spec.whatwg.org 对属性的描述 The async and defer attributes are boolean attributes that indicate how the script should be evaluated. Classic scripts may specify defer or async, but must not specify either unless the src attribute is present. Module scripts may specify the async attribute, but must not specify the defer attribute. Async 和defer 是用于指示脚本应该怎么被解析的布尔值属性。 对于传统的脚本,除非src属性存在,否则不能指定defer或者async属性。 对于module类型的脚本,可以指定async,但不能指定defer属性。 ...

六月 1, 2024 · 3 分钟 · 1236 字

薅羊毛:使用kagi + r.jina.ai 浅浅的翻半拉墙

大家好,今天继续薅jina.ai的羊毛。 起因是有朋友使用kagi搜索能搜出来被墙了的内容,但是没挂梯子,点进去就是404 Not Found,就很尴尬,而且刚好还体验了jinaAI的URL读取功能。 所以产生了这么个薅羊毛的流程:kagi搜索 - 404的地址 - r.jina.ai处理后展示。 ...

五月 27, 2024 · 4 分钟 · 1882 字

青海-甘肃环线:第六天

第六天:张掖 - 祁连山山顶 - 峨堡 - 岗什卡雪峰 - 海北油菜花 - 西宁机场 - 北京 特种兵的特。因为时间关系,到西宁还能赶上夜晚的航班,就不再停留了,初到西宁夜晚也有浅逛了下大新街夜市,那里有杯甜胚子绿茶很好喝,给当时的我们清爽的感觉。 ...

五月 14, 2024 · 2 分钟 · 704 字

青海-甘肃环线:第五天

第五天:敦煌 - 大地之子、无界、汉武大帝 - 瓜州 - 嘉峪关 - 七彩丹霞 - 张掖。 继续早起的一天,已经开始略显疲态,主要是日落时间较晚,吃完收拾完就不早了。 ...

五月 13, 2024 · 2 分钟 · 912 字

青海-甘肃环线:第四天

第四天:敦煌 - 莫高窟 - 月牙泉 - 敦煌。 莫高窟 久闻敦煌壁画之盛名,环线旅程自然不能错过,在报好团的时候,就已经把这里的票给买上了。为了能更好的观赏,敦煌研究院采用了内部研究人员带团参观的方式,所以每天能接纳的数量非常有限,壁画信息量也大,普通票有多条路线(买票的时候选择),参观八个洞窟,临时票参观四个洞窟。 ...

五月 12, 2024 · 4 分钟 · 1816 字

青海-甘肃环线:第三天

第三天: 大柴旦翡翠湖 - 阿塞克石油小镇(九层妖塔取景地)- 阳关 - 敦煌。 连着两天长距离跋涉,高密度的到达景点,确实不能有太多时间停留。今天第一站是大柴旦市区不远的翡翠湖,去之前稍微了解了下,翡翠的美和东台形成的方式类似,都是矿物质沉积形成。观赏方式更是如出一辙,就是再高一点儿。幸运的是,导游李哥带了无人机,在没有义务的情况下,不仅昨天愿意带我们去东台,还买票进翡翠湖给我们拍照,还和我们说了没有无人机的情况下从什么位置和角度能拍到倒影。更幸运的是,李哥主动帮忙给我俩(我和我媳妇)拍了合照、视频。 ...

五月 11, 2024 · 2 分钟 · 717 字