{"list":[{"id":143,"title":"网站情况说明","content":"由于近日PHP漏洞的原因，尽管已经做一一些防御性配置，但是，为了以防万一，我决定将站点php模块关闭。并加快新版本的开发和迁移工作。\n\n目前考虑新版本优先开发本博客文章内容渲染，用户中心等功能后续逐步上线，由于数据库迁移，可能会丢失一些数据（后续大概是会放弃使用mysql，但也可能会过度一段时间）。\n\n这两台你真是整了个大的，PHP，node，都有各自的漏洞一起爆","keywords":"开发相关","time":"2026-10-22T11:59:14.000Z","sender":11,"updateTime":"1970-01-01T00:00:00.000Z","updateBy":0,"display":1,"hot":1,"tags":[{"id":2,"eName":null,"name":"开发相关","info":"","pid":0,"articleId":143}]},{"id":142,"title":"站点更新重构进展","content":"不知不觉，从上次我宣布回来已经过了两个月了，目前网站仍然没有更新，因为我还在做一些更基础的工作。\n\n\n现在这个站点，是我高中学习PHP搭建的，在当时来说这是一个非常实在的选择。然而，时过境迁，Nodejs和js生态的繁荣，尤其是打包的技术，我认为js也已经非常适合香我这样自己达着玩的系统，甚至可以支撑一些大型系统的需求。当然PHP也一直在更新迭代，例如更新了强类型和反射，这可比TS那套编译时反射要好用太多了。不过，如果我希望用上这些新特性，那我一定需要大规模重构整个系统，一方面，由于工作原因，我现在显然对js会更加熟悉，另外就是前后端同构对ssr来说还是要友好很多（尽管理论上PHP也是SSR，但是它毕竟不是通过前端框架实现的，因此操作起来会有一些麻烦，对于spa来说更是如此，在我现在这一版的博客中，就是在页面切换时将内容部分的html通过json返回然后塞入到dom中这种粗暴方式实现的，但是也会导致需要手动执行一些脚本等各种问题，更重要的是无法使用前端的框架，甚至为了解析markdown也是费力做了一套js版本和一套PHP版本，并且两个版本之间显然也会有差异。），因此尽管PHP仍然很香，但是我还是得在js森阿提重新开始（但是希望什么时候js也能有一个真正的反射的机制吧）\n\n\n我香做的，是一个前后端和ssr完全一体的框架，在现有市场中，尽管有nextjs这样的ssr+前后端框架，但是，一来其前后端开发本身是割裂的，其前后端拥有各自独立的路由，并且后端的开发体验也不好，本质上仍然还是一个前端框架。然而我希望的是一个真正的前后端一体的框架，至少，二者应当共享同一套路由，同时，我希望能和nestjs那样有方便的一来注入、类型声明既是TS类型也是参数校验，同时还能作为文档。因此我决定自己搓一个。\n\n\n我需要解决的第一个问题就是js本身仍然是一个弱类型语言，尽管TS可以提供类型定义，但由于TS本身不是运行时，其类型在实际执行前会被擦除，因此实际上它并不具备多少反射的能力，即便是nestjs，使用起来仍然处处受限，一个简单类型只能通过定义class，切某人情况下还获取不到这个class有什么属性，必须添加修饰器才会有对应的元数据生成。我这里使用了一些第三方的方案，在编译阶段将类型信息写入到产物js中，但是它的确不是那么稳定，毕竟TS的类型实在太灵活了。但总之我还是实现了DI和参数类型解析。接下来的问题是如何让前后端使用同一套路由的问题。\n\n\n当然，这个问题本身并不难，如果我们站在后端的角度来说，页面只是一种请求方式，甚至他只是一个get请求的返回。所以实际操作上，我为一个普通的后端加上了一个view模块，他本质会注册一个get路由，但是在返回内容时，会被view模块将其翻译成真实的HTML（后端处理时）或JS挂在指令（前端处理时），当然这个具体的转换过程需要对应的适配器（我把它叫做Render），通过不同的render我们就可以实现不同前端框架的内容渲染和挂载，同时，整个应用和前端框架无关。当然我们还需要一个Layout，不过这也不难，我们只需要允许每一级的路由能支持这样一个元数据，同时我们能定位每个请求中所有经过的路由对象就可以遍历出所有的layout，然后同样layout本身也是一个render，他们渲染时还接收一个child render渲染点即可。\n\n\n但是前面说到的事理想情况，实际上我们的页面需要跳转，我希望它能像正常spa那样能够避免页面切换，同时还要避免layout重新挂载导致状态丢失，因此我需要精确控制layout的渲染范围。所以我对缘由Render做了一次代理，首先它可以接受一个新的树来进行对比，精确找到需要更新参数和子节点需要重新渲染的位置，如果原有的Render声明了对应的更新方法，我们让对应的Render自行更新，如果没有，我们因为已经记录了挂载的dom，我们可以在这个代理render中执行解除挂载和重新挂载，同时，Render也不是必须同时拥有mount和renderToString两个方法，拥有renderToString时，前端切换页面也能直接使用这个html添加到页面上并找到route标签来实现子组件的渲染，只是这样的组件几乎不会有js的执行能力。当然如果自定义了mount方法那框架就不会去干涉子组件的mount了，毕竟这时候路由的dom全可以让render自行决定，框架试试检测router节点的创建还是有点费勒不讨好（也许未来可以尝试下有没有更加友好的方式），同时render还能决定是直接当组件渲染还是调用挂载（例如layout和page都是vue编写的，我们当然更希望二者是同一个实例和上下文，当然如果render判断为不同技术栈或者没这个必要，仍然可以使用mount方法独立挂载）。\n\n\n接下来的问题就是重新将前端路由分开，避免前端打包到后端代码，毕竟轻的话，后端代码通常没有也不会做模块拆分会导，着会导致到爆的路由部分异常庞大，同时数据库配置、密钥等信息被分发到前端也有非常大的安全隐患、node或其他后端特有代码被打包到前端甚至会直接因为找不到模块而无法加载。这里Minecraft的mod开发给我了一些思路，我们只需要将只能在特定的端执行的方法使用SideOnly修饰器标注即可。只要我们有处理ast语法树的处理能力，我们就可以很轻易的实现这个功能。我可不希望每次都要写SideOnly，另外由于TS本身没有反射能力，实际上修饰器的使用也仅限于class，因此我实现了文件内基于ts的ast静态追踪一个变量的定义（当然我做不到追踪动态赋值，也追踪不到跨文件的重新导出，或者合并后的调用），再给予自定义配置，实现特定修饰器的裁剪，同时也添加类型版的SideOnly解决元数据可能被污染的问题、SideSwitch便于在代码中分类执行代码、注释版SideOnly等。\n\n\n对于项目产出，我希望我各个子站点项目上彼此独立，就和现在一样，但是只有一个node进程来加载这些项目，甚至可以考虑打成包，甚至进行签名。当然，目前还是处理测试阶段，只有文件夹形式的测试\n\n\n整个项目目流程还是已经走通，思路上目前想到的基本都完成了验证，尽管存在很多限制且因为运行时类型有时候会出现一些纯类型的导出触发类型找不到（实际上是它写入的类型信息找不到，因为奔雷就没倒出这个），但已经初步满足我的需求了，接下来，还有一些需要处理的或者欠缺的东西：\n\n\n1. SideOnly模块需要进一步添加对特定调用的抹除，和一些特殊抹除方式，以便适配更多范围；\n2. 后端目前没有做请求体的解析，虽然这个解析的工作本身不难，但是一方面，我希望能将参数定义直接引入body解析环节，更早的阻止非法请求，对于文件，丢弃、内存存储或硬盘存储也有一个确定归宿。另一方面是我在想跨平台兼容等问题和性能问题的平衡，如果要抛弃node的数据类型就意味着我们需要先将node的Readable转换成包准格式，但是着会造成一些性能损失，这是我不希望看到的；\n3. 正如前面所说，我希望每个项目是个独立的模块，因此还需要探索模块隔离、热更新、签名和打包成单文件等；\n4、数据库选型，尽管mysql很好，但是SQLlite无需启动服务可以更方便的跨平台调试、PG者比Mysql更加强大和规范，可以肯定的是Mysql肯定是要退休了，但是具体什么形式我还无法确定。\n5、模块间调用，我希望有更好的用户中心调用方式，而不是在同一台服务器还需要http调用，当然，着也不一定是必须的，可以之后再看。\n\n\n整体而言，我想可能再过一段时间就会有一测试版的blog或者sucs上线了，当然数据不一定会保持同步，首次测试期间，原则上正式版的站点永远使用主数据库。","keywords":"开发相关","time":"2026-09-14T05:21:30.000Z","sender":11,"updateTime":"2026-09-14T05:23:36.000Z","updateBy":11,"display":1,"hot":69,"tags":[{"id":2,"eName":null,"name":"开发相关","info":"","pid":0,"articleId":142}]},{"id":141,"title":"我又回来了","content":"小时候，一方面因为舅舅是个工程师，退役了一台旧电脑放到我家，我也喜欢在上面画画还有各种探索折腾（那时候电脑还没有普及，电子游戏也就少嘞纸牌这些，甚至是windows 98，没有三维弹球，这些可以后面在说说），大概是受到一个已经忘记姓名的老师说说的话，大致上是：“你们是更希望成为只能按照别人设计好剧本行动的玩家，还是写剧本的游戏开发者？”。总之，小时候就非常乐于探索如何让自己的想法在计算机中实现。从第一次看到f老师用ppt回来之后自己在电脑里面逐个软件打开看是不是，到后来尝试用ppt穷举做一些看上去能操作的东西；从我以为所有电脑都是一样的，到知道原来电脑有不同的操作系统可以装不同的软件；从只有软盘和光盘传输文件的世界，到拨号网络，再到互联网走进普通家庭，最后Wi-Fi和互联的普及；从看到我伯伯用寻呼机还要去路边小卖部花五毛钱再给人家打电话回去，到我也有了手机可以和同学联系，再到我觉得我某个富哥同学的掌上电脑很酷，最后我也有了智能手机；从在我妈那知道五笔中4个d能打出“大”字（大概是我打出的第一个汉字），到知道“微软全拼输入法”，再到学校老师教我们用“智能ABC”\n输入中文，最后第一个好用的拼音输入法——“搜狗拼音”出世；从折腾办公三件套，到打开DW和FLASH、再到接触到DZ论坛，最后是从PHP开始入门了各种各样的编程语言。我已逐渐从一个小屁孩走到了高中毕业，然后有了网站现在的大致框架。\n\n高考完的天志愿时，经过综合考虑我最后还是选择了既能继续接触编程相关知识，但又不是只有写代码的“自动化”专业。然而，上大学之后，由于要处理的事情越来越多；同时，由于在代码层面上已知和未知比例的变化和探索欲望的减退。尽管我依然还是会进行一些更新但是确实是热情还是减少了不少。\n\n大学的时光过的比小时候快太多，转眼便是毕业，想来没有太多其他娱乐需求的我转头就开始了第一份工作，成为了社会人。也不知道是不是缘分，总之那家公司我同时投了3个相关的岗位，最后被分配到软件开发，然后在软件开发这边又继续给我分配到了前端开发，回到了中学时候就开始接触的东西。接触了更加现代化的前端开发方式：工程化、包管理、打包和框架。我也有想把我的网站进行一个改造。然而正如“初闻不知曲中意，再闻已是曲中人”那样，曾经我认为工作和学习护肺的时差不多的精力，但是不用做作业，可实际工作第一天结束我就只想葛优瘫。那不是因为累，但是却只是想放弃任何思考，暂时关闭大脑。于是，这个网站也就逐渐进入长期不更新的状态了。\n\n渐渐的我也换了其他的公司，接触了更加广泛的内容，比如Node。我这个站点也一直有个困扰我的问题：比如现在这个markdown解析用的是一个js的开源库，并且我做了一些修改，但是如果返回markdown然后前端解析的话，百度这种爬虫并不能很好的处理，于是我又用PHP重新实现了一部分功能在服务器渲染返回给爬虫，但是显然者不完善，甚至导致爬虫和前端渲染会有区别（似乎已经被认为是seo作弊了）。为什么不全部在服务器解析呢？我也不清楚当时是怎么想的了，但是，至少重新审视的话，如果用nodejs做服务端的话，前后端同构可太香了，尤其对我这种个人小站点来说。但是，现有的ssr框架，在我学之前不会用，学的时候又接触了一些更好的理念，个人觉得是觉得都不优雅，所以也一直没啥动力去折腾，仅仅停留在有一些想法的阶段。直到后面一个是vite处理了很多东西，另一方面，我也是接触了一些语法树的知识，能够在编译阶段做一些处理了，于是我才偶尔尝试一些思路\n\n不过最近，由于AI编程的火爆\n\n这里也未完待续\n\n---\n\n下面内容也许会在开一片文章单独写 但是先放到这里\n\n也许当时我并不知道为什么，但是也许我现在能想想这个问题。诚然，工作本身只是考了完成任务的话，要消耗的精力并不比上学多，尤其是还想好好学习的话。然而，在学校，尽管也会有很多不愉快，但是本质来说，在正常的家庭和学校中，我们只有一个目标——尽量取得更好的成绩，其余的都是为这个服务的，包括家长和老师都是为了这个目标为我们服务；，并且这个成绩是可被衡量的（尤其是对于理科来说），我们能有一个清晰的前进方向，如果后悔也也只会是后悔昨天只自己不够努力；同时学习本身也是为自己学习，看到的是自己未来在一步步变好。但是，对于工作本身是出卖自己的劳动来换取金钱，那么首先就会面临第一个问题：如何衡量工作的产出？有人可能会说，有KPI\n\n未完待续","keywords":"生活杂文","time":"2026-07-03T06:43:13.000Z","sender":11,"updateTime":"1970-01-01T00:00:00.000Z","updateBy":0,"display":1,"hot":225,"tags":[{"id":1,"eName":null,"name":"生活杂文","info":"随便记录点生活中遇到的事和感悟","pid":0,"articleId":141}]},{"id":140,"title":"朋友","content":"生活已经被各种事情占据，好久没有写文章了，网站也没维护过了，近日真的是心里憋得慌，感觉必须得写下来，一来发泄下，二来，也许哪天再看到还能有啥新的思考或者启发吧，再不行也是一段回忆。\n\n近来经济下行，对生活的冲击是真的很大，特别我这种求稳的。以前有父母照顾着，也不用自己赚钱，虽然生活算不上好，是不会有啥焦虑。但是现在，转眼房子就亏掉了首付，工作上也被腾讯云子公司开员节流了。虽然很快也是找到新的，可能对于很多人来说还不错的工作，但是，第一个和上家肯定是没得比，此外，在工作内容上，前面一个是做审核和封禁系统的，往大了说就是在维护现实中的稳定；而现在的工作，本质是为倒卖广告位服务，本身我也不太喜欢广告，这种服务自然也不会令我认同（尽管公司的氛围和管理上我很认同，并且以前也是会有一些相对实在的内容产出，但是毕竟最终都还是得想办法变现，不然没法存活下去），工作时间上，虽然错峰很好，但是也导致三餐永远不是在正点吃了。但总之，到这里还可以先做着\n\n接下来，就是邮件我很喜欢的饭店（尽管卫生差点，但是便宜量大还好吃，在湖南大概很难迟到这么好的叉烧了）关了门，再到是楼下卖菜的店铺关了门，一时间生活的无力感完全出来了，尽管我不怎么挑吃，但是总归要吃的啊。\n\n以上是物质上的折磨，但只有有朋友陪着，其实一切都能熬过去，可是好巧不巧，早年trove几乎占据了我除学习和工作外的全部。小时候的同学已经很难联系的上，大学同学关系好的本来也不多，并且要么也同样受着折磨，要么沉迷加班。尽管很早之前我就知道如果朋友之间关系是靠游戏为纽带是散得很快的，所以也是在想往游戏外走，尽管他们也陪我走过了疫情时一段我最迷茫的时期，但是要从游戏内走到游戏外还是很难啊。虽然也有几个关系特别好的，但是一个正在忙着搞竞赛；一个虽然被我拉着在玩别的，但我本来也就想随便玩玩但是他却挺上瘾了，并且虽然他人也很好，但是就感觉还是差点意思（在某些方面），感觉在生活和情感方面很难太多的共情；还有一个，我本认为和他时非常好的朋友，但是知道最近我希望他能陪着我才发现是我太想当然了，我才知道和他的关系有相当大的裂痕，也是我写这篇文章的原因；当然，我也还有一些其他朋友，他们也在这里给了我很多建议，但是情感也是复杂的，没有哪个朋友可以代替另一个朋友。\n\n好了，终于进入正题了，不过思路被打断一次（昨天写到这里就到了上班的点了），外加情况又有一些变化（这个后面再说），有点不知道怎么写。总之，这个朋友我很喜欢（喜欢可以有很多种，不要想歪），他身上有很多东西是我很欣赏的，甚至可以说有些羡慕的。在很早之前他把游戏号给我的时候，我就认定我要和他做很好的朋友了。就像以前看到某个朋友的签名：“是我在你身上花的时间使你变得如此珍贵”一样，每天给他号打日常，以及一些有的没的，总之我认为我们的关系是相当好了，所以每次见到他都会想和他多说几句话，但是可能我的方式不太对，实际上着让他并不太舒服。尽管他仍然有和我玩，但是我还是能明显感觉到隔阂，尽管他会照顾我的感受，但是也会躲避和我在一起的时间。直到我情感爆发，我知道他肯定是有什么但是和我说不出来的，不过经过连续几次终于是说出来了，但是也几乎是感觉我们的关系已经到了冰点。\n\n在这两天，我感觉自己就像一团行尸走肉一样，已经完全不知道自己要做啥。久久不能平静\n\n好在，他总能遇到一些还不错的朋友，当然以及一些我朋友，然后我也才能知道，一方面我确实太过想当然，我觉得我和他关系好，觉得他会陪着我，但是并不是他的想法，我没有保持好距离；另一方面，实际上我欠他一个道歉。总之，我尽力按这些去改，然后也和他道歉。接下来就是静静等待了。\n\n目前，他也是终于也是在昨天晚上回了一句话，释然了。随后我们进行了一些交流，当时整体还好，但毕竟作为认识这么久的人，自然是能察觉出异样，更何况实际上他有时候刻意区别对待我是完全能感觉出来的。\n\n当然这中间还发生了很多事，我也还是有很多做的不对的地方，只能说希望最后还能好起来吧。感觉这事情处理不好可能会成为一个心病。\n\n然后是近来回忆杀之后，我试图去找回一些初中时候的好友。可能是因为我的性格，很少有能一起出门玩的朋友，这样算下来，也就几个初中同学关系最好了（当然不是说其他朋友关系不好，只是相比之下，感觉会差点意思，没有那种能除了上课整天泡在一起的朋友了，虽然这个原因是多方面的）。我首先就想到了一个大学前清了好友，虽然人家确实是发了空间提醒（就如果还希望继续交往的就存下qq加回去），但是我当时太傲娇，觉得人家就不应该删我，或者至少私下也和我说。所以尽管我存了他的qq 当时就没加回去。现在想起来真是后悔死。找出他的qq赶紧加上，但是人家似乎已经并没有用qq了。但看介绍似乎层我弟校友了，于是联系我弟看能不能帮我找到一些联系方式。\n\n接下来，我发现我还存在以前的手机号码，但是尝试之后发现他的几个手机号码都已经是不正确的了。不过我还想到了他当年的好基友，上大学时我都还和他见过面，之前在珠海失意时也找过他，不过那时候他忙，建议我找前面那个朋友（实际上我们当时几个关系都很好），我自然也没找到什么安慰，我这次自然没有首先想到找他。打开他的QQ，发现已经时很长时间没用过的痕迹了，心有不甘的同时，打开通讯录一看 我果然存过他的号码，只是这个十几年前的号码还管用吗？我试了下，还真管用。于是我又和他聊了两小时，虽然能看出来太会有一些戒备，但是还是相当热情的。他倒是相当乐观的，当然，他的朋友也很多很多，他也和我分享了很多他其他朋友的故事。总之这次还是用开心的。当然也要到了另一个同学的微信，就是他先知啊连微信都不怎么看，还是得花时间等。\n\n未完待续，希望一切都能好起来吧","keywords":"生活杂文,回忆","time":"2025-07-31T00:48:08.000Z","sender":11,"updateTime":"2025-08-05T00:42:04.000Z","updateBy":11,"display":1,"hot":609,"tags":[{"id":1,"eName":null,"name":"生活杂文","info":"随便记录点生活中遇到的事和感悟","pid":0,"articleId":140},{"id":13,"eName":null,"name":"回忆","info":"","pid":1,"articleId":140}]},{"id":139,"title":"emo时间","content":"好久没写东西了，最近有些emo，来记录一下。\n\n应该说一直一来，在没有啥啥事情做 也没啥玩的时候就会emo。但是自工作后，对未来感觉更加迷茫了。在学校那会儿，唯一要做的就是过好在学校的时光，未来找个好工作，然后就能过上自己想要的生活了。但是时间飞逝，转眼我就度过了初中、高中，甚至大学的时光。转眼我已经到了打造自己生活的时间了。首先的第一份工作，因为初中那会儿看着金山的宣传，让我对珠海有了很多的好感，同时，因为在长沙、深圳玩出门随便去哪坐车都要很长的时间的经历，相比之下，我自己家在一个小城市的市中心，虽然确实不如大城市丰富，但是应有的都有，出行方式通常只需要走路，远的也不过半小时公交基本丢够了，从而在对大城市又很强的排斥。\n\n当这一天终于到来，毕业后的我便追随梦想来到珠海。但是，也只有亲身到达才会有所感受。到达珠海下车后，坐上公交，从海边拐过的时候，那景象，我真感觉我是来对了地方，休息时来这里坐坐可太惬意了。但是很快带入现实的是珠海的大，当时的公司是在金湾区的某处，我在第一辆公交上坐了一个半小时后，终于到达了目的地附近，地图显示还有一小段路需要换成其他公交，于是我准备走过去，可是当我打开地图步行导航后，发现还有十几公里，之前看着短，只不过是被前面的路映衬着短而已。于是无奈的反复确认后搭上后一趟公交然后再走了一小段终于到了。这里还是点名表扬珠海公交，便宜、覆盖范围广，发车频率虽然不能说很高，当时不至于让人等太久，毕竟不是每个线路都有那么大客流的，已经很好了。到达公司后，我便很快面对一个更加现实的问题——住宿。当然，公司提供了住宿，公司的住宿黄金说好不好 说坏不坏的，但是把就手上时不时会被大概是广东特有的虫子咬出很多红点。但是到这里也不过是普通的生活的感觉吧，工作压力不算大，开了个宽带，下班后玩玩游戏，混得一天是一天了。\n\n然后第二年，跟我同一天入职的室友突然离职，加上公司新领导上任开始想尽办法再工资上进行剥削，我便终于开始思考人生和未来，也是工作后，第一次emo时间，同时还是最严重的一次。有时候就怀疑人生：同样是城市大，但是地铁不比这香；家里虽然累点，但是工资差不多，并且每天能回家啊；房价这么贵，我想想我的工资，因为缺少前期调研随口谈的（着甚至可能是我一生的败笔了），工资这么低，我怕是到老也没有个归宿。。。。有朋友来珠海，甚至同在金湾，但是仍然需要很长时间的路程以至不了了之。那一夜，我基本没睡着，可是我依然没有看到任何出路。。好在再学校时认识的朋友陪我度过了那段时间，并在一定程度上激励着我学习。然后在那一年年底，在多方面因素的影响下，我终于离开了那家公司。但是我首先是找了一个市区的工作了。但是生活依旧没有那么惬意，去海边散步的情景只有梦里才有。不过当时为了尽快找到下家也是没太做纠结，想法上是先在这家做着好就继续做，不好就继续在市区找（如果是在金湾的话 找市区的，一天只能面一个，还得在路上折腾死）。\n\n出于疫情反复，在公司里住宿受气等多方面因素进一步推动下，于是我终于回到了长沙。这样离家更近了，同时我也是因为找到了更好的工作。在这之后很长一段时间我都是开心的。加上无论是现实里还是晚上认识的朋友，都有能说话的。直到过年在老家一直被我哥的小孩打扰。不过这段风波倒是过去了。生活很快又回归了正轨。\n\n当时最近因为一些原因，又跟网上认识的一个朋友在一些方面闹掰了，突然少了个可以瞎吹水的人了，又感觉比较emo了。emo时间一直有，当时在学校基本很快就过了，工作后的emo时间，感觉真是影响时间好长啊\n\n未完待续。。。","keywords":"生活杂文","time":"2022-08-21T05:35:24.000Z","sender":11,"updateTime":"2022-08-21T11:51:58.000Z","updateBy":11,"display":1,"hot":2810,"tags":[{"id":1,"eName":null,"name":"生活杂文","info":"随便记录点生活中遇到的事和感悟","pid":0,"articleId":139}]}]}