2024年6月27日星期四

举世维艰

假以春闱躺于郑,日日烦。试毕,遂贩辰以盈生计。荷月中,携裯衾、裹衣裳,即赴飘摇浮萍行。朝班之所颇远,打车之费甚高,奈何?高德尔尔,亦拙笨非凡。公交地铁,仅一条园博园市区专线,日复一程。不得已,日始出行。趺坐站亭观东海,车流澹澹危楼立,风亦萧瑟水恒凶,不闻丞相言簇拥。车来将上,车夫穆言“吾商帮有规,凡携行李箱者,不予入内”遂下,于商易行寻地铁线路。始发却蛇,忽觉豆滚雨师落,风亦起,公交未至,人不能去。少时,公交仍未至,伞已不堪风雨,片片零碎、重重泪痕。抬眼,手机电量不足十一,祸不单行矣。

一潦西流水

甲辰 五月廿二 于郑

2024年5月1日星期三

酒后乱言

我爱你,只因你在我最落魄,最孤独的,最需要温暖的时候给了我一束穿越无边黑暗的一束光。或许,那只是你无聊时的无意为止,但却在我心里开出花来,从未磨灭。两年,改变了许多,我已不在学校,你也不再为高考而担心,口罩也褪出了人们的视线,天空的星星也没那时那么耀眼了。我不知道这意味着什么,我只知道:我的爱依旧。我发这段文并非只是让你知晓有一个人一直深爱着你,而是同样告诉我自己,有这样的一个人将我从水深火热中拯救,告诉我:世界还有值得活下去的理由,不要再自甘堕落了。
我爱你,我爱你的仁慈,我爱你的热烈,我爱你的洒脱,我爱你的深邃,我爱你的落寞,我爱你的孤寂,我爱你的自卑,我爱你的一切,仅此而已,仅此而已……

愿你不要忘了我,愿我不要忘了你。

ps:大半夜11点来到办公室就要打这段文字,怕明天酒醒了就给忘了。都说酒后露真情,我想这大概就是了吧。不需要你的回应,不需要我的铭记,只要在这短暂的一刻,在这喝完酒大脑近乎空白的片刻里,我念着你,就足够了。

亲爱的林璃,你还好吗?别来无恙吗?你现在在哪里呢?有没有烦恼呢?春、夏、秋、冬,每个季节都轮番来临,唯独有你的季节迟迟不来。

似乎每次喝完酒,身体上就会出现不止为何而现的伤口,哈哈,也许只有这个时候我才能意识到:原来我也是有手的,就是不知道该如何去触碰你.。如果果有来生,希望我俩的每次的相逢,都能化作永恒,勿忘我······

愛してる,forever

2024年4月29日星期一

大城市or小乡村

昨天在B站上看到张雪峰的一个视频,见下

因为我的观点是选择大城市嘛,就想着写一个评论表达一下我的观点,结果写着写着睡着了🫠,今天续上:

我的观点

我倒是觉得大城市很累,但也很充足。

基本原因

虽然去了可能同样是底层,但是知识和精神层面却上去了。如果一直呆在乡下,可能初中的知识就能获得和大城市一样的生活水平(物价低),但是也一直会消磨人的斗志。

而在大城市里,就不会出现这样的情况(出现在这种情况的人都回乡下了),人的棱角或许会很快的被磨灭,但是心里那股子不服输的劲儿却仍埋*藏心头。我想,这不正是人之所以为人的意义吗?——至今一切社会的历史都是阶级斗争的历史

分析

在乡下,或许真就像是陶渊明眼里的黄发垂髫,天天吃喝嫖赌,怡然自乐,甚至比大城市里绝大部分人过的都要快乐。但是这使人变得懒散——天天书也不看了,课也不听了,也不锻炼了,就守着自己那屁都不是的自以为很厉害的技术,“潇洒一生”。

**这是满足吗?**每当我清早刷牙的时候,我只在镜子里看到了自卑,看到了懦弱,看到了遇难而避的不作为。那个为了打游戏熬夜到凌晨12点翻墙上网的少年呢?那份为了考大学笑言说想看朝阳的锐气呢?那根为了耍帅被老师抓到后死不出卖队友的傲骨呢?死了!都死了!!只剩下一副被酒精、女人以及虚假的友情填充的肉体。当一个人不再做梦的时候,他的灵魂就已经死了,我已经很久很久没有做过梦了,真正的梦。

大家都在猜测:那个仰剑吟诗颂明月的江湖侠客风清月还是被江湖共主杀死了吗?那个妄想吞并世界的恶魔法师DARK FLAME终于被自己的怨念吞噬了吗?那个誓要探索宇宙-人类的英雄-星空漫游者也要违背自己的诺言了吗?我不知道,昏暗的灯光中,我只能依稀听到,
酒精说:唯有火锅与美酒不可辜负
女人说:你无需知晓,我与你就是世界的全部
朋友说:对酒当歌,人生几何?享受当下才是要紧事。

当下,当下,我去你妈的当下。比起骇人的安逸,舒适的温床,我更怕我的心脏变了颜色;我更怕我的梦境失了色彩;我更怕这傻逼的世界上那仅剩的一点火光也没了温度;我怕,我怕——哈哈哈哈哈,想来我是真的懦弱啊,竟然也会害怕这些捕风捉影的东西,那个意气风发的中二少年无论如何都想不到,长大后竟然也变成了小时候最讨厌的猥琐大叔、怪老头……

当我放下牙杯,我分明看到,那漆黑的镜面中,我的灵魂正在被大火肆虐的燃烧着啊喂!谁又不是ヴァイオレット?我在因为自己做过的事,不断引火上身,却还浑然不觉,直到某天被烧的面目全非之后才恍然大悟。


在城市里,倒是恰恰与上文相反,在这里,更像是变成了永无止歇的陀螺,被巨大的鞭子一下又一下的抽打的娇弱的身躯,很疼,很累,但至少在旋转,不是吗?

这是满足

关于城市,突然没了想写的东西,有待考究。待我今年去闯荡一番后,再来回答,此篇暂时终结。

刚刚有一刻真的挺崩溃的,短信通知我“报名成功,请在人脸审核后缴费”

image-20240429170914197

image-20240429172858174

哈哈哈哈哈哈

做梦也没想到,我踏马穷到连学都上不起

我不知道我国所谓的社会主义优越性在哪里,我只知道考试报名费和医院看病费占据了我总支出的84.11%,这还是建立在我感冒发烧从不去医院只是硬抗过去的前提下。突然想到今年4月份考试,连那个装手机的信封都不提供了——隔壁商店,与去年一模一样的信封,1元一个。我特别想请问我国财政部门拨给教育行业支出的41242亿元都去哪儿了?

image-20240429171030678

学费倒是越来越贵了,考试报名费还是一点没减,服务质量却是越来越差了。

他奶奶的,你说什么?通货膨胀,没办法。我去你妈的,那我工资为什么不膨胀?反而还他娘的降了点,这合理吗?

还天天搁这世界第一,那世界第一。世界第一什么时候回过头来看看你们的累赘,我都嫌自己给你们丢脸——

国际交流舞会上,大哥穿的光鲜亮丽,甚至比好多别国大哥都要豪华,然后身后跟着一个臭乞丐。别的小弟虽说也算不上多豪华,但起码衣着得体。我是真的很愧疚,蓬头污垢、衣衫褴褛,有时候跟别人小弟打招呼,我都会习惯性的双膝一软“大哥,给点吧”

我知道,这篇发泄爽文没人看(不然也不敢发出来,我怕大哥打我啊),但是还是要发出来,用魁拔那句帅帅的话来说就是:我知道我没有能力也没有想法去改变现状,我只是以我的行动表达我的一个态度——作为本国土著,我很生气!😡

2024年4月17日星期三

土木工程_实习总结_3644字

写在开头

文中有大量的吹牛逼环节,切勿当真

并且其中部分内容使用了AI写作(我是废物),能看出来吗?

一、引言

实习背景及目的介绍

随着我国经济的持续发展,基础设施建设特别是水利工程的建设需求日益增长。河南省济源市小浪底工程作为我国重要的水利枢纽工程,其建设和管理水平对于保障国家水资源安全、促进地方经济发展具有重要意义。在学校的推荐下,我有幸能够参与到小浪底工程的实习中,通过实地学习和实践,深入了解水利工程的运作流程和管理模式,为今后的职业发展打下坚实的基础。

通过本次实习,我期望能够全面提升自己的专业素养和实践能力,为今后的职业发展奠定坚实的基础。同时,我也希望能够通过实习,更好地了解水利行业的实际情况和发展需求,为我国的水利事业贡献自己的力量

实习时间、地点

实习时间:2023年9月-2024年4月

实习地点:河南省济源市小浪底水利枢纽

二、实习期间的主要工作内容及收获

项目招投标知识学习与实践

刚来的时候,这里的前辈就告诉我说:在这里标书的制作是至关重要的,这直接关系到我们项目的存活,我大为震惊,不过也意识到标书制作的重要性。就这样,在前辈的带领下,我从一开始的连格式都会设置错误慢慢的到现在已经能够独自完成一份标书的制作。尤其在商务部分中,我能够详细阐述公司的资质、业绩、信誉等方面的优势,以及对于项目实施的保障措施。通过合理的报价和优质的服务承诺,力求展现公司的竞争力和合作诚意。

其次,在前辈的提醒下,我尤为关注技术方案的编写。技术方案是投标文件中的核心内容,它直接反映了企业的技术实力和实施能力。在编写技术方案时,充分调研项目的需求和特点,结合公司的技术优势和经验,才能制定了详细、可行的实施方案。多次的技术方案编写也让我的技术得到了提升,并开始接触其他如“应急预案”“处置方案”等类型方案的编写,更加的提高我的技术广度。

同时,我也开始接触到从上学期间就一直心心念念的“广联达”计价软件。这款软件在工程造价领域享有盛誉,其实用性和便捷性一直是我所向往的不过念于其高昂的价格一直也只是望而却步。在实习期间,我有幸能够深入学习和操作这款软件,这对于我来说是一次极为宝贵的经历。

在导师的悉心指导下,我逐步掌握了广联达计价软件的基本操作。从最初的建立项目、输入工程信息,到后续的套用定额、调整材料价格,再到最后的报表输出,每一个步骤我都认真学习,努力掌握。通过实际操作,我深刻体会到了广联达计价软件的折磨和在工程造价中的重要作用。它不仅能够提高计算效率,减少人为错误,还能够为项目管理提供有力的数据支持。同时,也可以使预算人员的发量大幅减少,免去头发太多的烦恼。

资料的汇总与分类整理

小浪底项目由于是维护类项目,所以大家基本上都很清闲,缺少了干劲,但是在项目经理的带领下,我们经常投标一些周边的小型项目,以此来提高大家的激情和活力,所以,我们就经常性的会进行竣工验收。于是整理资料这种没什么技术含量有不可或缺的任务就交到了实习生的头上,我也有幸参与其中。在收集到大量工程资料后,需要按照文件的性质、用途和重要性进行分类,建立清晰的资料目录和索引系统。这不仅能方便资料的查找和使用,也为后续的归档工作奠定基础。

通过参与工程资料的收集与整理工作,我不仅提高了自己的资料管理能力,更加加深了对工程项目管理流程的理解。这种将文档归类整理的习惯,相信这不仅对我当下进行标书制作提供帮助,更是会在未来久远的工作中都影响着我。

供排水管道施工工艺的掌握

在实习期间,我有幸深入了解了供排水管道的施工工艺,并亲自参与了部分施工环节,从而全面掌握了该工艺的关键技术和操作要点。

通过亲自参与施工环节,我熟悉了供排水管道施工前的准备工作,包括对施工图纸的详细解读,对施工现场的勘察与测量,对施工所需材料和设备的准备及进场。在铺设过程中,现场工人教会了我如何根据地形和地质条件选择合适的管道埋深和坡度,如何确保管道的稳固性和密封性,以及如何有效处理管道连接处的防水和防腐问题,这些实际上和课本上是有些出入的——当然,这也是我初到工地学到的第一课“方案永远也只是纸上的黑色文字,只有到现场,才能明白实际上是怎么一回事”。

通过现场体验,我也深切的感受到了工人的伟大,在一些犄角旮旯,周遭的恶劣环境致使吊车也无法进入,于是——34℃的太阳下,400公斤的钢管,伴随着工人们的一声“上肩”,被他们用肩膀一一抬入预定位置,我也切身体验,只是太阳实在太晒,脸上不知道,是汗水还是泪水蛰的我完全睁不开眼睛,或许随着时间的流淌,这一年实习的时光慢慢的会被我遗忘,但我却永远也无法忘记那一瞬的恍然,那一声“上肩”。

变电站变压设备及开关柜安装工艺的学习

在实习期间,我学习了变电站变压设备及开关柜的安装工艺,其实刚到项目就被安排到了东河清变电站现场进行工作,内心还是挺悲催的,虽说很累,不过通过两个月的理论学习和实践操作,也使我掌握了开关柜的安装流程、技术要求和注意事项,为今后的工作奠定了坚实的基础。

首先,变压器及开关柜的安装图纸和相关技术文件都是必须要熟悉的,这对了解设备的结构、性能及安装要求提供很大的帮助。通过对照图纸和实物,我逐渐熟悉了设备的各个部件及其功能,为后续的安装工作做好了充分的准备。

在安装过程中,需要严格按照操作规程进行,确保安装质量和安全。我学习了如何正确安装变压器的底座、附件及冷却装置(是的,我第一次知道原来变压器是离地工作的),并掌握了变压器油的处理和加注方法。同时,也掌握了变压器的接地和防雷措施,这将确保设备的安全运行。

不过一次接线还是很没有技术含量,最头疼的就是二次接线,那个图纸我甚至至今仍没有看明白,不过跟着老师傅还是学到了很多知识,虽然只有开关柜的调试和检测,但也同样使我在电力设备的运行方面有了极大的了解。

三、实习期间遇到的困难及克服方法

河边项目环境的适应与虫害的应对

因为项目临近河边,所以一年四季虫子特别多,甚至于就连一天到晚不开窗,晚上屋子里还是会有虫子嗡嗡的围着灯泡鸣叫。一年的时间里我杀死的虫子已经不下1000只了,为此我购买了多种品牌的杀虫剂但仍无济于事,现在,我已经逐渐开始适应与虫共眠了。

现场经验不足的克服与学习方法的调整

在实习期间,我深刻认识到自己在现场经验方面的不足,并意识到这已经成为我提升专业技能和适应工作环境的一大障碍。为了克服这一难题,我积极调整了自己的学习方法,并努力从实践中汲取经验。

我主动向经验丰富的前辈们请教和学习。并利用业余时间进行学习和充电——我阅读了大量的专业书籍和国家标准,同时还参加了一些线上的培训课程,通过系统的学习来提升自己的理论水平和实际操作能力。这些学习经历不仅让我更加深入地了解了专业知识,还为我解决现场问题提供了有力的支持。

饮食适应问题的解决方法

由于工作地点的变化,我面临着饮食适应的问题。不同于日常熟悉的饮食习惯,新的工作环境和地域特色带来了不同的饮食文化和口味,这在一定程度上影响了我的饮食体验和健康状态。为此,我不得不另起炉灶自给自足,通过网络购买食材和调料,我尝试着制作一些简单的家乡菜,这极大地满足了我的口味需求,也让我在忙碌的工作之余感受到了一丝家的温暖。同时,自己动手做饭也可以更好地控制了饮食的质量和卫生。

四、实习总结与感悟

实习期间的个人成长与收获

总之,实习期间的个人成长与收获是多方面的。我不仅提升了专业技能,还锻炼了团队协作和沟通能力,提高了问题解决和创新能力,并深刻体会到了职业精神和职业素养的重要性。这些宝贵的经历将对我未来的职业生涯产生积极的影响。

对未来职业规划的影响与启示

实习经历对我的未来职业规划的确产生了深远的影响和启示。它让我更加清晰地认识到自己的兴趣和优势所在,了解了职场的需求和规则,学会了面对挑战和困难,并认识到了持续学习和自我提升的重要性。这些经验和启示将指导我制定更加明确和可行的职业规划,为未来的职业发展奠定坚实的基础。

对实习单位及老师的感谢

在实习期间,我有幸得到了实习单位和指导老师的无私帮助与悉心指导,让我受益匪浅。在此,我衷心地向他们表达我的感激之情。

感谢实习单位为我提供了这次宝贵的实习机会。单位不仅为我创造了良好的实习环境,还让我有机会亲身参与到实际工作中,深入了解行业的运作机制和业务流程。通过这段时间的实习,我不仅积累了实践经验,还学会了如何将理论知识与实际工作相结合。这一切都离不开单位的信任和支持,我对此深感感激。

感谢我的指导老师及辅导员。在实习期间,老师始终给予我耐心的指导和热情的帮助。每当我在工作中遇到困惑或难题时,老师总是及时为我解答疑惑,提供宝贵的建议。老师严谨的工作态度、丰富的实践经验和深厚的专业知识,都对我产生了深远的影响。在老师的悉心指导下,我提高了自己的专业技能,也学会了如何在职场中与人沟通和协作。

感谢实习单位的领导和同事们。他们在我实习期间给予了我很多关心和帮助,让我感受到了团队的温暖和力量。与他们一起工作的日子,让我更加明白了团队合作的重要性,也锻炼了我的沟通能力和人际交往能力。

2024年4月7日星期日

搜狗输入法自制皮肤

废话篇

近日,最终不堪微软输入法的折磨,还是下载了搜狗输入法,但是下载后却并没有如网上所说的那样“广告遍地走”,看着还…挺干净的,而且它的词库是真的多啊!直接甩微软一个恒星纪元。但是他这个皮肤实在是有点丑,还不如微软的彩色渐变,于是就去它“更换皮肤”里面找嘛。不找还不知道,这一找之下,我真是好家伙了,一整页几乎全是付费

image-20240407150424788

已经不抱任何希望的尝试着搜了下“布洛妮娅”——出乎意料,竟然是“没有找到任何结果”,我都好不容易才提起的掏元子的决心,竟然没有使用的机会QAQ。话说这个搜狗的UI确实是上了年代了啊哈哈哈

image-20240407150536197

于是,我就想着能不能自己制作一款皮肤,然后就被我找到了这个。这就是搜狗对用户开放的用来制作皮肤的软件,我大为欣喜,直接开搞

image-20240407150654078

打开看了一下,自由度那是相当高呀,就是这上了年代的东西难免会有亿些卡顿

操作区解释

可以看到搜狗输入法的皮肤,往白了说,其实就是贴图。所以只要能够找到优美华丽的图片,基本就制作完成了,easy

并且他是支持.gif文件的,也就是动态皮肤也是可以被制作的,但是咱对动态皮肤没啥感觉,还是以静态为演示吧

image-20240407151147790

image-20240407151158004

而且这里有五个窗口(也就是背景图片)设置,制作前先来解释一下

image-20240407151440093

  1. 横排合窗口样式

    正如图片右侧所展示的,就是候选字是分列展示,这也应该是我们最常用的样式了吧

    image-20240407151656192

  2. 横排分窗口样式

    同上,也是横排展示候选词,只不过所谓分窗口就是把拼音和候选词分开了。分窗口的话就可以做到使用两张图片,拼音一张、候选词一张,极大的提高了可玩性,譬如这样,非常有意思:

    image-20240407153916714

image-20240407154013599

  1. 竖排合窗口

    直接一张图片解释,很直观,它的候选区是分行展示的

    image-20240407154117582

  2. 竖排分窗口

    不难猜到

  3. 状态栏

    就是右下角那个

    image-20240407154314678

    其他的,这里以横排合窗口解释:

    image-20240407155211073

    贴图制作

    话不多说,先上最终效果

    这是状态栏

    image-20240407161230803

    这是候选框

    image-20240407161329394

    状态栏贴图制作

    打开心爱的PS,挑选一张喜欢的图片开始抠图

    image-20240407155503221

    鉴于魔棒对于大部分图片都无法解决,建议直接上钢笔

    for a bit

    image-20240407160021074

    抠出来之后,在下面用矩形工具画一个圆角矩形,这其实就是用来放功能按钮的区域,随便什么形状都可以,咱这里用矩形

    image-20240407160238871

    将大小改为300*300px(等比例缩放,宽度为300就行,高度随意,100000000000000000000都没问题,只要你的电脑屏幕够大),导出为png,大功告成

    状态栏按钮制作

    这里推荐推荐一个网站Iconoir,里面有大量的矢量图片可供选择,随便挑两张,下载下来。打开ps栅格化图片,改一下大小,导出为png(注意:网站是svg格式,皮肤制作软件无法接受svg格式的图片,上文有提)

    横排合窗口贴图制作

    找到一张喜欢的图片,因为咱这张图片左侧刚好是一片空白区域,所以只要拉伸一下就行,不做其他处理

    image-20240407160806901

    用剪裁工具拉出一点距离

    image-20240407160909611

    选区-编辑-内容识别填充

    image-20240407161020134

    修改一下大小,完成

    其他贴图同上

    制作

    进入那个软件(官网在这儿

    根据上文“操作区解释”,导入图片,微调,完成

    ps:别问为什么最后这么短——“是牛马人,确信。但绝不加班!!”

2024年3月25日星期一

懒人福音?不!是摸鱼核心装:影刀

介绍就不多说了,官网已经很详细,直白来讲就是可以让不会编程的小白通过编程实现自动化办公(确信我没有打错字)。

它的核心功能就是将一些常用的命令可视化,并且抛弃了编程格式,直接的放在你屏幕的左侧。当你需要一个命令时,直接将其拖动到中间的画布上,就可以实现一系列动作。只需要你大学的时候公共计算机没挂科,能看懂伪代码(认字?),那么恭喜你,你将获得来自摸鱼界至强称号“摸鱼人皇”,从此走上工作五分钟,摸鱼十小时小说看到吐、下棋下到烦的辉煌正道……

image-20240325114016353

下面是一个例子:

<iframe width="640" height="360" src="https://short.ink/SBc_PVXXB" frameborder="0" scrolling="0" allowfullscreen></iframe>

原因:因为脑子笨,前期没考虑到,我将长达数20条的“项目特征描述”全部写在一个单元格里了,发现时,已经写了100多个了,要是一个一个改的话,改完估计都能吃上元宵了,所以尝试一下这个软件

image-20240325141546987

然后运行,就可以放心的摸鱼了。看到这个图片真是发现,完全没有出步骤的必要,真的是太简单了

回到开头,其实这已经不能称之为摸鱼了,成语“浑水摸鱼”的意思更多是表示那些啥也不干的。咱这虽然也玩了,但是也干了,更加合理的形容应该是“合理安排时间”image-20240325151445447

对不起,我投机取巧了。。。可恶,还不如不查,原本想增加点论证来着,结果反而把我的论点推翻了,简直倒反天罡

2024年3月22日星期五

关于一些可恶的进程自启动问题

打开“服务”

  • 方式1:按下win+r,输入services.msc
  • 方式2:右键“此电脑”→“管理”→“服务”

这里显示了一些启动进程,可以将不需要的进程选择“手动”或“禁用”

2024年3月20日星期三

玉液琼浆玉人杯,御风携剑剑随风,说什么御风御风?分明是风在御我

寻仙

飘然石隙飞,绰影侍似追
一剑断苍古,道道何人偎

一潦西流水

甲辰 花月十一 于豫北

附:

此篇为某在一岩壁旁等人时忘带了手机,甚是无聊,于是作壁上而观岩,渐渐被岩石上优雅华美的线条所魅惑,深不得明。再看时,哪里还有什么乳白色线条?这分明就是天上仙人的衣带飘飘。褐色的金乌赤日在这深色的岩作星空里仿若失去了光泽,在前方,唯有那一抹霜衣傲然,素手轻翻,行云流水般,此地訇然中开,裂隙将现。后人亦有诗曰:一剑开天道,济水避万古。惊云雾消散,提觞忘忧路。

2024年3月11日星期一

记录一次心态爆炸的瞬间

今天心态真是要爆炸了,两个工作簿,说是要把工作簿1中的F列(大概)复制道工作簿中的E列(大概)。当时我以为是“工作簿1中的A列和工作簿中的A列不一样,工作簿2中有缺少项或增加项,抑或是顺序与工作簿1中的A列不同”于是,天才的我瞬间就想到了用VLOOKUP直接秒了。

于是,我将工作簿1中的表复制到工作簿2,一个VLOOKUP下去,直接报错,不可能呀!于是我稍稍看了一下,好家伙,忘记绝对引用了。加上直接秒了!然后报错,当时大脑都空白了,难道VLOOKUP不是这样用的吗?打开浏览器“VLOOKUP如何使用”——来催,“马上”——搜索下来,玛德我没问题啊,哪里出错了?

回到表格往下一翻,“。。。”,原来表格中间有多余的行,可恶,竟然这样搞,看来一个VLOOKUP不行了,于是开始分段执行函数。哼哼,不过如此,秒了。欸?又报错?——又催,“快了”——再往下翻找,可恶!!工作簿中的F列前面是实际值,后面竟然变成了引用值,我都复制过来了还引用个屁,全没了,啊~心态炸裂。没关系,哥心态良好,转成实际值照样能秒。来到工作簿1,将F列转为实际值后,再次来到工作簿2,重复上列操作,没一会我就发现了一个重大问题“这TM A列有重复值啊,关键E列的值还不一样”然后立马将隐藏的列显示,想着利用B列中的“项目特征描述”增加一个条件直接秒了,再再次来到工作簿1,我是怒从心中起,为啥项目描述还会不一样啊啊啊。这还秒个屁啊,我直接被秒了。

果然,结合以往经验,交给我的任务应该都是繁琐的任务,这次也是不例外,一个一个来吧。“还没好吗?”直接过来看,我就说碰到了些麻烦,“你直接复制过来不就好了”“啊?这两张表格的A列一样吗?”“对啊”那一刻,世界仿佛失去了颜色…

重新下载两个新文件,转实际值,复制粘贴。这就…好了?WTF?一分钟都没到吧这…

总结:这傻吊没脑子吧。我之前的一系列操作全都是基于A列不同的情况下进行的操作,结果到头来,A列是相同的——一字不差。

唉,这次真的是吃了大意的亏,“观而后动”的处事方式我是忘得一干二净,心态炸裂,呵呵,粗心的人没资格心态炸裂,这最多只能叫“傻逼”

2024年3月7日星期四

hexo添加鼠标动作效果

  1. 在themes\next\source\js下新建文件夹cursor

  2. 在文件夹cursor下新建两个js文件

    1. cherry.js

      (function cherry() {
          var possibleColors = ["#D61C59", "#E7D84B", "#1B8798"]
          var width = window.innerWidth;
          var height = window.innerHeight;
          var cursor = {x: width/2, y: width/2};
          var particles = [];
          
          function init() {
            bindEvents();
            loop();
          }  
          // Bind events that are needed
          function bindEvents() {
            document.addEventListener('mousemove', onMouseMove);
            document.addEventListener('touchmove', onTouchMove);
            document.addEventListener('touchstart', onTouchMove);
            
            window.addEventListener('resize', onWindowResize);
          }  
          function onWindowResize(e) {
            width = window.innerWidth;
            height = window.innerHeight;
          } 
          function onTouchMove(e) {
            if( e.touches.length > 0 ) {
              for( var i = 0; i < e.touches.length; i++ ) {
                addParticle( e.touches[i].clientX, e.touches[i].clientY, possibleColors[Math.floor(Math.random()*possibleColors.length)]);
              }
            }
          }
          function onMouseMove(e) {    
            cursor.x = e.clientX;
            cursor.y = e.clientY;
            
            addParticle( cursor.x, cursor.y, possibleColors[Math.floor(Math.random()*possibleColors.length)]);
          }
          function addParticle(x, y, color) {
            var particle = new Particle();
            particle.init(x, y, color);
            particles.push(particle);
          }
          function updateParticles() {
            for( var i = 0; i < particles.length; i++ ) {
              particles[i].update();
            }
            for( var i = particles.length -1; i >= 0; i-- ) {
              if( particles[i].lifeSpan < 0 ) {
                particles[i].die();
                particles.splice(i, 1);
              }
            }
          }
          function loop() {
            requestAnimationFrame(loop);
            updateParticles();
          }
          function Particle() {
            this.character = "*";
            this.lifeSpan = 120; //ms
            this.initialStyles ={
              "position": "fixed",
              "top": "0", //必须加
              "display": "block",
              "pointerEvents": "none",
              "z-index": "10000000",
              "fontSize": "20px",
              "will-change": "transform"
            };
            this.init = function(x, y, color) {
              this.velocity = {
                x:  (Math.random() < 0.5 ? -1 : 1) * (Math.random() / 2),
                y: 1
              };
              this.position = {x: x - 10, y: y - 20};
              this.initialStyles.color = color;
              console.log(color);
        
              this.element = document.createElement('span');
              this.element.innerHTML = this.character;
              applyProperties(this.element, this.initialStyles);
              this.update();
              
              document.body.appendChild(this.element);
            };
            this.update = function() {
              this.position.x += this.velocity.x;
              this.position.y += this.velocity.y;
              this.lifeSpan--;
              this.element.style.transform = "translate3d(" + this.position.x + "px," + this.position.y + "px,0) scale(" + (this.lifeSpan / 120) + ")";
            }
            this.die = function() {
              this.element.parentNode.removeChild(this.element);
            }
          }
          function applyProperties( target, properties ) {
            for( var key in properties ) {
              target.style[ key ] = properties[ key ];
            }
          }
          init();
        })();
      
    2. explosion.min.js

      "use strict";
      function updateCoords(e) {
          pointerX = (e.clientX || e.touches[0].clientX) - canvasEl.getBoundingClientRect().left,
          pointerY = e.clientY || e.touches[0].clientY - canvasEl.getBoundingClientRect().top
      }
      function setParticuleDirection(e) {
          var t = anime.random(0, 360) * Math.PI / 180,
          a = anime.random(50, 180),
          n = [ - 1, 1][anime.random(0, 1)] * a;
          return {
              x: e.x + n * Math.cos(t),
              y: e.y + n * Math.sin(t)
          }
      }
      function createParticule(e, t) {
          var a = {};
          return a.x = e,
          a.y = t,
          a.color = colors[anime.random(0, colors.length - 1)],
          a.radius = anime.random(16, 32),
          a.endPos = setParticuleDirection(a),
          a.draw = function() {
              ctx.beginPath(),
              ctx.arc(a.x, a.y, a.radius, 0, 2 * Math.PI, !0),
              ctx.fillStyle = a.color,
              ctx.fill()
          },
          a
      }
      function createCircle(e, t) {
          var a = {};
          return a.x = e,
          a.y = t,
          a.color = "#F00",
          a.radius = 0.1,
          a.alpha = 0.5,
          a.lineWidth = 6,
          a.draw = function() {
              ctx.globalAlpha = a.alpha,
              ctx.beginPath(),
              ctx.arc(a.x, a.y, a.radius, 0, 2 * Math.PI, !0),
              ctx.lineWidth = a.lineWidth,
              ctx.strokeStyle = a.color,
              ctx.stroke(),
              ctx.globalAlpha = 1
          },
          a
      }
      function renderParticule(e) {
          for (var t = 0; t < e.animatables.length; t++) {
              e.animatables[t].target.draw()
          }
      }
      function animateParticules(e, t) {
          for (var a = createCircle(e, t), n = [], i = 0; i < numberOfParticules; i++) {
              n.push(createParticule(e, t))
          }
          anime.timeline().add({
              targets: n,
              x: function(e) {
                  return e.endPos.x
              },
              y: function(e) {
                  return e.endPos.y
              },
              radius: 0.1,
              duration: anime.random(1200, 1800),
              easing: "easeOutExpo",
              update: renderParticule
          }).add({
              targets: a,
              radius: anime.random(80, 160),
              lineWidth: 0,
              alpha: {
                  value: 0,
                  easing: "linear",
                  duration: anime.random(600, 800)
              },
              duration: anime.random(1200, 1800),
              easing: "easeOutExpo",
              update: renderParticule,
              offset: 0
          })
      }
      function debounce(e, t) {
          var a;
          return function() {
              var n = this,
              i = arguments;
              clearTimeout(a),
              a = setTimeout(function() {
                  e.apply(n, i)
              },
              t)
          }
      }
      var canvasEl = document.querySelector(".fireworks");
      if (canvasEl) {
          var ctx = canvasEl.getContext("2d"),
          numberOfParticules = 30,
          pointerX = 0,
          pointerY = 0,
          tap = "mousedown",
          colors = ["#FF1461", "#18FF92", "#5A87FF", "#FBF38C"],
          setCanvasSize = debounce(function() {
              canvasEl.width = 2 * window.innerWidth,
              canvasEl.height = 2 * window.innerHeight,
              canvasEl.style.width = window.innerWidth + "px",
              canvasEl.style.height = window.innerHeight + "px",
              canvasEl.getContext("2d").scale(2, 2)
          },
          500),
          render = anime({
              duration: 1 / 0,
              update: function() {
                  ctx.clearRect(0, 0, canvasEl.width, canvasEl.height)
              }
          });
          document.addEventListener(tap,
          function(e) {
              "sidebar" !== e.target.id && "toggle-sidebar" !== e.target.id && "A" !== e.target.nodeName && "IMG" !== e.target.nodeName && (render.play(), updateCoords(e), animateParticules(pointerX, pointerY))
          },
          !1),
          setCanvasSize(),
          window.addEventListener("resize", setCanvasSize, !1)
      }
      "use strict";
      function updateCoords(e) {
          pointerX = (e.clientX || e.touches[0].clientX) - canvasEl.getBoundingClientRect().left,
          pointerY = e.clientY || e.touches[0].clientY - canvasEl.getBoundingClientRect().top
      }
      function setParticuleDirection(e) {
          var t = anime.random(0, 360) * Math.PI / 180,
          a = anime.random(50, 180),
          n = [ - 1, 1][anime.random(0, 1)] * a;
          return {
              x: e.x + n * Math.cos(t),
              y: e.y + n * Math.sin(t)
          }
      }
      function createParticule(e, t) {
          var a = {};
          return a.x = e,
          a.y = t,
          a.color = colors[anime.random(0, colors.length - 1)],
          a.radius = anime.random(16, 32),
          a.endPos = setParticuleDirection(a),
          a.draw = function() {
              ctx.beginPath(),
              ctx.arc(a.x, a.y, a.radius, 0, 2 * Math.PI, !0),
              ctx.fillStyle = a.color,
              ctx.fill()
          },
          a
      }
      function createCircle(e, t) {
          var a = {};
          return a.x = e,
          a.y = t,
          a.color = "#F00",
          a.radius = 0.1,
          a.alpha = 0.5,
          a.lineWidth = 6,
          a.draw = function() {
              ctx.globalAlpha = a.alpha,
              ctx.beginPath(),
              ctx.arc(a.x, a.y, a.radius, 0, 2 * Math.PI, !0),
              ctx.lineWidth = a.lineWidth,
              ctx.strokeStyle = a.color,
              ctx.stroke(),
              ctx.globalAlpha = 1
          },
          a
      }
      function renderParticule(e) {
          for (var t = 0; t < e.animatables.length; t++) {
              e.animatables[t].target.draw()
          }
      }
      function animateParticules(e, t) {
          for (var a = createCircle(e, t), n = [], i = 0; i < numberOfParticules; i++) {
              n.push(createParticule(e, t))
          }
          anime.timeline().add({
              targets: n,
              x: function(e) {
                  return e.endPos.x
              },
              y: function(e) {
                  return e.endPos.y
              },
              radius: 0.1,
              duration: anime.random(1200, 1800),
              easing: "easeOutExpo",
              update: renderParticule
          }).add({
              targets: a,
              radius: anime.random(80, 160),
              lineWidth: 0,
              alpha: {
                  value: 0,
                  easing: "linear",
                  duration: anime.random(600, 800)
              },
              duration: anime.random(1200, 1800),
              easing: "easeOutExpo",
              update: renderParticule,
              offset: 0
          })
      }
      function debounce(e, t) {
          var a;
          return function() {
              var n = this,
              i = arguments;
              clearTimeout(a),
              a = setTimeout(function() {
                  e.apply(n, i)
              },
              t)
          }
      }
      var canvasEl = document.querySelector(".fireworks");
      if (canvasEl) {
          var ctx = canvasEl.getContext("2d"),
          numberOfParticules = 30,
          pointerX = 0,
          pointerY = 0,
          tap = "mousedown",
          colors = ["#FF1461", "#18FF92", "#5A87FF", "#FBF38C"],
          setCanvasSize = debounce(function() {
              canvasEl.width = 2 * window.innerWidth,
              canvasEl.height = 2 * window.innerHeight,
              canvasEl.style.width = window.innerWidth + "px",
              canvasEl.style.height = window.innerHeight + "px",
              canvasEl.getContext("2d").scale(2, 2)
          },
          500),
          render = anime({
              duration: 1 / 0,
              update: function() {
                  ctx.clearRect(0, 0, canvasEl.width, canvasEl.height)
              }
          });
          document.addEventListener(tap,
          function(e) {
              "sidebar" !== e.target.id && "toggle-sidebar" !== e.target.id && "A" !== e.target.nodeName && "IMG" !== e.target.nodeName && (render.play(), updateCoords(e), animateParticules(pointerX, pointerY))
          },
          !1),
          setCanvasSize(),
          window.addEventListener("resize", setCanvasSize, !1)
      };
      
  3. 在themes\next\layout下新建文件夹_custom

  4. 在新建文件夹_custom下新建一个custom.swig文件

    [%- if theme.cursor_effect %]
      [%- if theme.cursor_effect.type == "explosion" %]
        <canvas class="fireworks" style="position: fixed;left: 0;top: 0;z-index: 1; pointer-events: none;" ></canvas>
        <script src="//cdn.bootcss.com/animejs/2.2.0/anime.min.js"></script>
        <script src="/js/cursor/explosion.min.js"></script>
      [%- elseif theme.cursor_effect.type == "cherry" %]
        <script src="/js/cursor/cherry.js"></script>
      [%- endif %]
    [%- endif %]
    
    
  5. 在themes\next\layout下的_layout.swig文件中添加以下代码

    {% include '_custom/custom.swig' %}
    
  6. 在themes\next_config.yml中添加以下代码

    # cherry: 樱花 | explosion:爆炸 
    cursor_effect:
      enabled: true
      type: cherry 
    
  7. 大功告成

自体防御系统故障报告

夜静风清 犬吠空庭 君子何往 死月独行 一潦西流水 已巳 七月 廿三 于沪