delusion.search(happyEnd)

日志 / 部落格 7676 views 831 replies
mod
#1 ·

开一贴记录学习生活和日常随想。希望能从日常里找到救赎
帖子大概率会记录到本科结束/本站倒闭,看一个垃圾本科到最后能做到什么地步。

[date-range from=2024-07-09T03:06:00 timezone="Asia/Shanghai"]

to be continue……

本来想换个帖子记录暑假,但为了连续性以及不要重复制造垃圾,还是接着用这个帖子的好。

❤️👍️🥰️kissing_heart_mouse
12
mod
#2 ·

不知道 cl 薄纱

mod
#3 ·
Hypocrisy rotartsinimdA

不要再提这位了,看到他我只能感觉到大学这两年活到狗身上去了。 🥲
幸好我还能用“自律也是一种天赋”来聊以自慰,心情总算不算太糟 😤

mod
#4 ·

👋最近的重点放在了 react 和 cs61B 的收尾 (gitlet) 上,react 速成课看完就能跟着 youtuber 写博客项目 (react+nodejs) 了 :shuiyuan3:

mod
#5 ·

todolist 虽然有 gdcpc,但哪怕是铜牌也绝不是蓝桥杯 javaB 组省三能够染指的 😭不过因为是弱校所以名额非常好拿(几乎是报名就有)。
虽然报完之后就后悔了,一度希望超过六支队伍能在校赛里被刷下去然后心安理得地做自己更擅长的事,但没想到一直没超过六支队伍。
我尽量把它想象成一场旅游,但报上了不努力也不是我的风格,于是打算间隙之中用 essential cpp 补完 cpp 的基础语法和 STL、刷一刷洛谷基础题单,仅此而已。

mod
#6 ·

4.30 回家那天感觉非常好,一个下午都在看 react crash course,原生 js 变成一个前端框架之后感觉异步处理变得更加的复杂,有大半个下午我都在调试 UseEffect() 这个 hook(为什么叫 hook?),有什么能够显示 js 任务队列的调试方法吗?
image|690x365

mod
#7 ·

image|690x381
这个看完了!准备开始跟另一个教程搓一个自己的博客 :shuiyuan3:
https://www.youtube.com/watch?v=Kkht2mwSL_I
react 在 build 的时候未被使用的变量会报错,可以关闭吗?查了一下好像没找到相关信息
image|690x392

#8 ·
Lorange 主治医师李大华

配置文件里可以改,检查你的 tsconfig.json

mod
#9 ·
ucw ucw

感谢,减少了不少 error,除了”使用类型里没有的属性“之外的报错都消掉了。这个报错貌似要手动使用 as 或者其他方法才能解决。
现在感觉 ts 似乎有点不伦不类?js 和其他语言相比特点之一就是弱类型,ts 反而要把这个特性去掉了。不过易读性确实好得多 :rofl_kissing_heart:

mod
#10 · (edited)

今天染上二次元了 😭
image|690x196
写了一下 cs61b 的 gitlet,因为看不懂文档完全没有头绪,遂破功开始看攻略
image|551x500

#11 ·
Lorange 主治医师李大华

弱类型的问题在于太容易出错,引入 typing 实际上能够提供一种保证,让更多的错误能够及早发现(我不懂类型论什么的,lz 感兴趣可以研究研究),以及提供更好的语言服务器支持。现在 Python 也更倾向于使用 typing 了。

我个人对 TypeScript 的感受是,它有必要,但没那么好。ts 作为 js 的 superset,它的类型系统设计上不够自然,需要大量的练习才能够熟练使用。

mod
#12 ·
ucw ucw

是的是的,我用起来感觉好难受

mod
#13 ·

image|317x500

给 gitlet 写了一下笔记,有些地方应该还要修正,看来自己脑子真的不够,有不看别人的攻略根本想不出来 :sob

mod
#14 ·

image|432x500
第一个完成的 todolist:youtube 上的速通 react 课程,虽然是最简单的但是好歹是写了一个了

❤️
1
#15 ·
Lorange 主治医师李大华

请问这是什么 tudo list 软件,感觉不错想体验一下

mod
#16 · (edited)
Harbour Harbour

ubuntu 自带的 todolist,叫 TO-DO,功能很简单很基础,想用的话类似的软件应该一抓一大把

mod
#17 ·

感觉自己的 todolist 太多了,非常需要舍弃掉相当一部分,有空要琢磨一下优先度。

mod
#18 ·
Harbour Harbour

Windows 自带的 TODO 就类似了已经

#19 ·
Hypocrisy rotartsinimdA

说的是 Microsoft To do 吗?我之前有用过那个,感觉还不错,现在在用的是幕布,不过始终有点说不出来的别扭,在寻找一个完全顺手的 Todo list 软件 😇

#20 ·
Lorange 主治医师李大华

ok 谢谢分享

mod
#21 ·
Harbour Harbour

返璞归真。手机备忘录就是最好的工具

#22 ·
Hypocrisy rotartsinimdA

hh 有道理的 感觉苹果上的备忘录做的很优雅,今天开始尝试一下 🥰

#23 ·

你好厉害。我一般用手机 TODO 和 Outlook 日历

mod
#24 ·
Hypocrisy rotartsinimdA

导师直接显示器底下贴便签 🤣 我忙的时候也试过,发现还真挺好用

mod
#25 ·
greyishsong greyishsong

不会影响专注力吗,看屏幕的时候很有可能被便签吸引,还是说要的就是这个效果

❤️
1
mod
#26 ·

😇突然感觉很无力,看 bug 看了一个小时,给的报错太有限了,也不懂怎么调试,只能反复看视频和 google,最后发现 npm 包下错地方了。

mod
#27 ·

image|690x228
实践可知,用一知半解的基础知识去学习一个完整的项目时,大概需要花费原视频 3 倍以上的时间,这样也只是稍微碰到一点皮毛而已。
如果有一天可以随心所欲地写东西,想到什么 idea 都能立即有思路,大概就能跟上正经开发者的步伐了吧?

❤️face_holding_back_tears_hugs
3
mod
#28 ·
m0rsun m0rsun

之前忘记回了,现在回一下。个人感觉专注工作的时候也不会去看屏幕下方挂着的便签,而我非常忙的时候就懒得去翻阅电子设备上的各种 todo list(总是要打开关闭软件),喜欢写在纸上。便签纸有点像是一个快捷方式,省掉了翻开 todo 软件的动作,乱但是快。

❤️
1
#30 ·
m0rsun m0rsun

对我而言不会,因为便签的内容是已知不变的,会吸引我注意力的是未知变化的事物(电脑自带便笺应用就挺好用的

--.-..-....-..----.

mod
#33 ·

今天做的 21 年四川省赛,好多模拟题……足足三题

mod
#34 ·

高中隔壁一间小医馆
IMG_20230726_231609|666x500

❤️
1
mod
#35 ·

突然发现把挎包和一本 essential cpp 弄丢了,sad

mod
#37 ·

好像学生认证能白嫖很多有用的东西,有空琢磨下写个攻略

❤️
1
mod
#38 ·

image|690x366
今天跟着写了个 google 登陆的功能,一碰到需要请求互联网数据的东西就感觉很折磨人。时好时坏的,不过大概是没问题。

❤️🥳️
2
mod
#39 · (edited)

image|669x251
总感觉很割裂,天才和努力的人太多,与其他专业的处境和学习方式也截然不同。
……学科原神?

mod
#40 ·

今天用了十几分钟跟着给博客实现了一个午夜模式,剩下的时间要么在路上要么在玩手机。

在办公室看大一打郑州邀请赛的虚拟重现赛拿到了银牌,sad。别人的成功与欢乐无时无刻不在衬托我的失败。

至今为止似乎从未做过任何一件发自内心觉得了不起的事。

半夜回宿舍的路上久违地情绪大爆发了。
1715591510723|320x356

mod
#41 ·
Lorange 主治医师李大华

如果有一天我摆脱了这个困境我会告诉门友如何接受自己的 failure🤗

mod
#42 ·
Lorange 主治医师李大华

如果你能做到一件事,那你多半不会觉得这件事特别了不起,因为你作为亲自完成了这一事件的当事人已经将一个艰难的任务拆解成了不那么难的小任务,并且在过程中专注于这些小任务,那么你对这件事难度的认知也更接近大部分时间所认知的难度,即小任务的“不那么难”。并且你的眼界和能力也在这个过程中提升了,那么回看时觉得没什么大不了的几乎是必然。

❤️🥰️
4
mod
#44 ·

xx 管理系统浓度太高了,三个相关大作业😨
满身疮痍也要继续战斗,这阵子忙完了一定一定要去旅游😭

mod
#45 ·

发现可以面向 CSDN 编程来应对数据库大作业 😋
java 大作业打算把博客用 nodejs 写完之后试试写一套 java 的 api 凑合、
软件工程的之后再考虑 :shuiyuan3: :shuiyuan3: :shuiyuan3:

mod
#46 · (edited)

image|690x376
在学校的时候想家,想念小时候。
回到家了又感觉不能在学校写东西不舒服。

mod
#47 ·

image|690x351
今天烂完了,因为一个括号把 stackoverflow 翻了个底朝天。
最后发现问题是导入的函数忘了加括号导致的服务器没办法正确处理请求 😄
3 个小时毫无进展,虽然学习到了一点点 git 的知识。
到底是 js 的问题还是我功力还不够?感觉 debug 无从下手

mod
#48 ·

在聊天室看见有人在聊信件的话题。
想起中学那会还是很喜欢寄信的。
需要笔友请联系我。

❤️🐈️
2
#49 ·
Lorange 主治医师李大华

js 的问题。js 非常不适合初学者作为入门语言,它的设计思维不严谨,自由度太高,各类错误的反馈不够人性化,没有办法让初学者“自回归”地学到 what is better 进而掌握 best practice。

mod
#50 ·
ucw ucw

byd 你会的真多啊。。。

#51 ·
Hypocrisy rotartsinimdA

小学的时候写网页会用一点点 js,那时候什么都不懂,开发工具用的是 Adobe 的 DW。代码是直接在 <script> 里面写的,非常少语法提示。这样写出来的 js 爆了的话,就表现为完全不 work,什么反应都没有,也不知道为什么不 work。最常见的情况是 xxx is undefined,加一个行号。

后来调试的水平上去了,打错字的情况也少了,逐渐也没最开始的痛苦了。直觉也许就是这样训练出来的。

❤️💯️
2
mod
#52 ·
ucw ucw

看到 DW 突然想起来小学计算机课还真教过。。。

mod
#53 ·

今天跟着写到了怎么验证 admin,应该很快就可以到写帖子的功能了。虽然好像写了多多少少也快一千多行,但是掌握得还是很差,让我自己从零开始写的话一定什么都写不出来。

export const jwttest = (req, res, next) => {
  const tokentest = "从浏览器里 copy 下来的 cookie";
  const decoded = jwt.decode(tokentest, { complete: true }); // 解码 JWT,包括未验证的签名
  // const payload2 = decoded.payload; // 获取有效载荷 Does'twork why?
  console.log(decoded); // 打印有效载荷
  next();
};

这一段代码最后给出来的结果是 null,暂时不知道原因。

image|653x500
image|513x500

mod
#54 ·

找到原因了,原来是 jwt 的位置在这里

image|690x211
image|528x169

mod
#55 ·

斥资 90 块买了个便宜国产 fumo,也许以后可以带着旅游。
Just Monika
IMG_20240519_232626|666x500

❤️wave_gif🐈️
5
mod
#56 ·

🫠今日基本没有做事,看了一会 csapp,看到了 CPE 和优化程序性能那一块。

不该去看大一写 acm 模拟赛的,每次看了都深感自己的失败。

知道自己的学校有机会去广东省赛之后高兴到瞎找队友,导致了非常难受的一个半月。

现在几乎是零基础,明年大三还想去打一场省赛的话会是很蠢的事情吗?目标是铜牌的话。
即使成功了性价比好像也低得离谱,不过还是很想赢一把。虽然我知道省赛铜完全不算什么 😭

#57 ·
Lorange 主治医师李大华
理发师傅李大华,post:56, topic:11892, username:Lorange:

性价比好像也很低

就看目的是什么了 🤗为了增添 bg 可能性价比并不高,但也可以纯粹地享受比赛 :cat_hugs:

--.-..-....-..----.

admin
#59 · (edited)
Lorange 主治医师李大华

Screenshot_20240520_204010|594x500

我最近在学 svelte(kit),感觉 React 看起来好高深啊

mod
#60 ·
IO IO

我学得很烂,没办法从很深的层面去评价 react。
这几天写起来的感觉是,相比原生好写多了,不过有些 hook(为啥叫 hook 啊)用起来确实挺消耗心智的。
redux 之类的工具链我也没完全搞懂。就像小孩子会拼积木但不一定知道塑料是高分子化合物一样。

❤️
1
#61 ·
IO IO

我反正觉得 yyx 的更烂,不懂为什么那么多人尬吹(纯个人意见,不作为医疗指导,我就是个 sb 没必要把我说的当回事)

我们在做一些商单的时候为了快都是能用就行,什么 React 什么 Vue 都是混着用的,实在没什么美感。但是从开发体验来讲,最近因为莫名其妙的原因 Volar 一直炸,而且 Volar 启动远远慢于 ts 的 ls,不得不黑 Vue 了。

yyx 这波锐评“被框架 PUA”其实是毫无道理的,React 实际上是形成了一种设计模式,这个文档是对这种设计模式的解读,这种模式在 Vue 中也是无所不在的(所谓的 Composition API),喷这个框架艰深复杂,多少有点牵强了。

❤️
1
#62 ·
Lorange 主治医师李大华

redux 之类的库做的是更复杂的状态管理(state 只能相邻层级传,context 没有原生持久化),需要管理什么状态、需要什么样的逻辑去管理状态、需要管理多大的状态,决定了状态管理的方式。

❤️
1
mod
#63 ·
ucw ucw

不是很能 get 到,还要多写😤

mod
#64 · (edited)
ucw ucw

想要系统地学习某个框架/领域有什么经验吗?(以随心所欲写自己想写的程序为终点的话

#65 ·
Lorange 主治医师李大华

我个人更喜欢“以随心所欲写自己想写的程序”为起点,在这个过程中就会自然而然地学到如何去做这个事情。整个流程做一遍下来,就会理解得更深入一点。然后随着不断迭代/做新的东西,每一次都能反思之前的设计存在什么问题,迭代的次数多了就会逐渐地学会。

具体一点来讲,我会更倾向于一边做,一边阅读文档学习我需要用到的部分,而不是先学完了再做。

“边写边学”会损失“系统性”吗?其实是不会的,开发是一个与实践强相关的事情,系统化、有体系的知识一定是在实践中建立起来的。实际上,在实践中经常会反复阅读文档数遍,这样建立起来的认识无论是在深度还是在熟练程度上都是远超“先学后写”的。

❤️
3
#66 ·
Lorange 主治医师李大华

我举一个很简单的例子,应用程序的登录状态(包括当前用户的必要数据)和计数器组件的当前值就是两类不同的状态。

应用程序的登录状态是一个全局的状态,组件树的各个层次都会有使用它的需求,例如 Navbar 右侧到底是显示头像框还是显示登录和注册按钮、内容区到底是显示回复按钮还是显示“登录以回复”。这样的状态通过 props 传递就会非常不合理,因为真正的 state 在最顶层组件上挂着,下级组件要用就必须一路透传下去,哪怕中间某个组件用不到(这样的组件远远多于用得到的),它也得给它的后继传递。对于这种状态,很显然 context 是更好的。

计数器组件的当前值就不一样,它是很典型的局部状态,它就是维护它自己功能用的,别的组件根本不会 care 这个,那它就是一个小小的 state。

❤️
1
mod
#67 · (edited)
ucw ucw

感谢解答,我现在在写的博客的登陆状态也是用的 redux 来管理。因为是跟的视频教程没正式看过文档所以对一些写法感觉很迷惑,比如 slice 和 dispatch。
打算写完之后自己看着文档加功能来提升一下功力。

mod
#69 ·

非常非常非常绝望。
觉得自己似乎有点水平了,并且不喜欢视频里的主页决定自己做一个,结果奋战 3h 也没得到想要的结果。
多数时间都花在了反复调整 css 这种无聊的事情上。最后因为疯狂 ctrl+z 丢失了所有代码。决定之后从视频里抄一抄就算了。
已经做完的部分也很糟糕,缺少了很多我想象中会有的功能。整个项目就像我之前预想的一样成了座不敢碰的史山。
image|690x493

mod
#70 ·

也许是努力的方法不对吧,目前来看悲壮已经足够,然而学习从来不需要悲壮。无论如何都消除不掉那份无意义感。

明天九点要坐地铁参加 xcpc 省赛的开幕式,算了下大概七点就要出门,然后拖着疲惫的身躯去见识对我来说完全是另一个世界的存在们。

要不给自己订一个铁牌纪念一下吧……

#71 ·
Lorange 主治医师李大华

调整 CSS 很困难,一般也脱离了正常意义的编码范畴。可以试试各种 UI 库,例如面向 React 用户的 MUI 或致力于简化 CSS 的 Tailwind。调整 CSS 需要熟练利用开发人员工具,直接在页面上对照着调,然后保存自己满意的结果。

不要畏惧“屎山”,对于个人项目而言,重构尽管听起来很难,做起来却是非常容易的,当你觉得做不下去的时候,大胆推翻就是了,Git 的各种功能允许我们放手做这些,just -> git checkout -b next 🎉

❤️
3
mod
#72 ·
ucw ucw

感谢,稍微得到一点 coding 能量了🥰
打算比完赛之后休息一段时间再跟着视频把基础功能做到至少能用的程度。

mod
#73 ·
Lorange 主治医师李大华

听起来更像是排版或设计样式的问题。如果你想要一个好看的样式,最好先用 PS/AI 等绘图工具画好设计稿,再去考虑怎么用 CSS 来实现样式,而不是马上开始调 CSS 属性。很多时候我们脑海里只有一个非常粗糙的想法,并不知道自己想要的页面具体是什么样子的,这时候用绘图工具去调整尝试省掉了在样式和代码间来回跳跃的思维过程,比用 CSS 快。

一个项目能做完就很不错了,不要太过担心 dirty 的问题,因为总有很多任务本身就是 dirty 的。我写实验框架的时候也为交互/输入部分头疼过很久,最后也没能完全将冗长混乱的代码清理干净,但差不多把混乱约束在一定的范围内了。别怕重构,尤其是个人项目规模不大,哪怕全都重构一遍也不是不可以的。

❤️
1
mod
#74 ·
greyishsong greyishsong

感谢指点,昨晚太晚大脑有点混乱。现在清醒之后回想了一下。感觉问题是我太 naive,只会对着视频 copy,离开了教程自己写东西就会一塌糊涂。

举个例子,使用 jwt 和 cookie 的用户认证我只会跟着视频写一写,离开了视频想要自己实现或者改动一些新功能就完全搞不懂。这大概不是 dirty 而是 naive?

现在想要实现 markdown 解析和像本站的编辑器一样拖动图片直接上传思路也不多。

昨天看了看其他学校前端的一些 博客,他们的深入程度让我感觉这么久学到的东西都只是皮毛,从来没有深入过。暑假需要好好沉淀一下了。

mod
#75 ·

今天去港科广的热身赛了,感觉他们的学校好高级。来打算法的小学生真的好多——坐在后面的一队就是三个小学生,奶声奶气敲算法的样子有很强的违和感。

IMG_20240525_074002|375x500
IMG_20240525_075731|666x500

❤️
1
#76 ·
Lorange 主治医师李大华

调研还是很重要的,不知道怎么做的时候就去看看别人会怎么做。例如你的这俩需求就能找到不少现成的 solution。

其实,想不到思路本质上还是因为见得不够。问题都是可以被分解的,例如“拖动图片直接上传”就很容易分解成“上传文件”和“捕获拖动的图片”这两个问题,前者也许可以用关键词“js upload file”之类的去搜,后者其实叫 Drag and drop API,简称 DnD。

相比之下,解析 Markdown 可能更单纯一点,具体来讲就是输入 Markdown 格式文本输出 HTML 格式文本这样的一个转换器。自己造轮子的话可能工作量比较大,因为 Markdown 语法其实还挺多的,如果需要语法扩展就更多了;但是像这样的需求往往可以找到很多现成的轮子用,JS 的 markdown-it、marked、PHP 的 parsedown、Rust 的 pulldown-cmark……

不用跟别人比,每个人的情况都是不一样的。

❤️💯️
4
mod
#77 ·
ucw ucw

分解问题和 Search The Fucking Web 确实是好方法。感谢你一直以来的回复,我将尝试在暑假持续完成上面楼层中的 todolist :shuiyuan3:

mod
#78 · (edited)

明天是正式赛,临时抱佛脚也没啥用,晚上回来干脆接着搓了搓博客,距离正式部署大概不远了。
)I5{Y3O8A715LHG(Y13M8XP|690x350
随便看了一道简单的铜牌题,六点半就要起来,准备睡觉。

mod
#79 · (edited)
Lorange 主治医师李大华

意料之中的打铁。
话说门友有算法小团体推荐一下吗,QQ 群什么的都可以。有些事情想问一问😥

admin
#80 · (edited)
Lorange 主治医师李大华

你站怎恁多 algo,三天两头看见个个词

mod
#81 ·
IO IO

计算机专业的多,而算法之于计算机就像数学之于高考😈
不管是就业还是 competetion 都需要 algo😚

mod
#82 ·

@aibot 教我假设我有一套 react 和 nodejs 的 web 程序,请教我怎么部署

#83 ·
Lorange 主治医师李大华

要部署一个包含 React 和 Node.js 的 Web 程序,你可以遵循以下步骤:

前置条件

  • 确保你已经安装了 Node.js 和 npm (Node Package Manager)。

1. 准备项目

这里假设你已经有一个 React 前端项目和一个 Node.js 后端项目。

2. 构建 React 前端项目

进入 React 项目目录,运行以下命令以生成生产版本的前端代码:

npm run build

这将创建一个名为 build 的目录,包含优化后的静态文件。

3. 将 React 静态文件传输到 Node.js 服务器

把生成的 build文件夹中的内容拷贝到 Node.js 项目中的一个合适位置,例如public 文件夹。

4. 设置 Node.js 服务器以提供静态文件

在你的 Node.js 项目中,确保使用了 express 这样的框架以提供静态文件:

const express = require('express');
const app = express();
const path = require('path');

// 提供静态文件
app.use(express.static(path.join(__dirname, 'public')));

app.get('*', (req, res) => {
  res.sendFile(path.resolve(__dirname, 'public', 'index.html'));
});

const port = process.env.PORT || 5000;
app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});

上面代码假设你的静态文件放在 public 目录下。

5. 部署到服务器

选择一种托管平台(如 Heroku、Vercel、DigitalOcean、AWS 等)来部署你的应用:

使用 Heroku(举例)

  1. 登录或注册 Heroku 账户。
  2. 安装 Heroku CLI:
    npm install -g heroku
    
  3. 在项目根目录下登录 Heroku:
    heroku login
    
  4. 创建一个 Heroku 应用:
    heroku create
    
  5. 部署代码:
    git add .
    git commit -m "Initial commit"
    git push heroku master
    

Heroku 将自动检测并安装 Node.js 依赖,并启动你的应用。

使用 Vercel(针对 React 前端)

  1. 登录或注册 Vercel 账户。
  2. 在 Vercel 上创建一个新的项目并连接到你的 Git 存储库(例如 GitHub、GitLab、Bitbucket)。
  3. Vercel 将自动构建和部署你的 React 前端项目。

总结

通过这些步骤,你可以成功部署 React 和 Node.js 的 Web 应用。如果还需要更多详细指导或遇到问题,请在以下细节中提供更多信息。

❤️
1
mod
#84 ·
ucw ucw
ucw:

其实,想不到思路本质上还是因为见得不够。

那你会觉得写前端是经验主义的事情吗

mod
#85 ·

今年第一次去 acm 类的竞赛,很开心,虽然打铁了还是在考虑明年大三接着去。

也考虑了很多东西,但最后也没想出到底该不该去。
来不及就不学了吗?想东想西瞻前顾后,至少先把洛谷基础题单刷一遍吧?
于是这里以后可能也记录一些算法。

#86 ·
Lorange 主治医师李大华

有一点,所以我现在比较不喜欢搓 UI,感觉这样对我来说没有什么创造性,是一种机械的劳动