2023-08
24

时好时坏的焊点

By xrspook @ 8:32:49 归类于: 烂日记

周三的上午有人过来检查,所以在那之前我都不敢花时间去做我自己的事情。虽然实际上这种检查一年要发生好几回,早就已经习惯了,如果已经翻来覆去查了好几遍也就没什么好后悔的。问题是在检查之前,即便你有时间,要是你做其它事情的话,别人总觉得你不够认真。周三的中午,检查的人终于走了,没人跟我说发现了我的那个工作里有任何的问题,所以我也就当作什么事情都没有发生。周三的下午我开始检查上周六我那个坏掉的谷客HD98 1080P摄像头。

我知道肯定能用万用表测某条电线是否连通,但实际上怎么测我不知道,所以在开始之前我先度娘了一下。说是要调到 欧姆档,有些说调到风鸣器那里,如果连通,蜂鸣器会响。幸好我那个很便宜的万用表也有蜂鸣器。我首先测的是那条红色的手机充电线。红色跟黑色都很灵敏,但是绿色跟白色反应迟钝一些,线头那边是很清晰的,但是USB插头那里我估计那个铁片可能做得比较隐秘。红色充电线,四线都是通的。摄像头被我剪下来的USB头那一段也都是通的,而且反应正常。正在和摄像头连在一起的小米一代大概只有10cm长的橙色USB数据线四线都是通的,而且灵敏程度高于谷客的USB头,因为从那个USB头的铁片看来,非常久远的小米USB头是最好的。

接下来我再次拆开摄像头的外壳,让里面的电路板暴露出来。周六的晚上,当我第一次成功拆开那个的时候发现USB的四线是通过四个洞洞和电路板连接的。黑色绿色白色都是正常的,但红色的那个接线头真的做得非常糟糕,其它线虽然手工也不太好,但起码你看到一坨锡封住了那个洞,但红色的那个洞,锡若有若无,而且我觉得暴露出来红色的那个线的头也不是太多,因为露出来的就只有细细的一小根。家里没有万用表,但看到这么个状况,我觉得即便摸上去红线跟电路板结合得还是比较牢固的,但实际上里面有没有虚焊非常难说。非常有可能焊上去的人那个人测试过,能连通,但是经过某些震动或者暴力拉扯以后就虚焊了。

当我拿万用表去测试时,摄像头电路板上的四个点以及暴露的线头的时候,黑色白色绿色都马上有反应非常灵敏,但红色就是那种有时有反应有时没反应。如果我的万用表的针碰在那个细细的线上是几乎是不会有反应的,但即便我戳在洞洞旁边的那些锡上也是时有时无。周六的晚上,当我第一次把电路板暴露出来,把那四个焊点拍下来发给我网友的时候,作为老电工的他觉得只要我把红色那个点搞定了,这个东西就好了。当我用万用表测量红线那个点,发现的确是时好时坏的时候,我也觉得我应该马上在那个点补锡,又或者我应该先把那个点的锡融化掉,然后重新在那个线头上加锡再接连上去。想是这么想的,但是操作的时候又出现了其它幺蛾子。

至于具体是什么,下回分解。

2023-08
23

追求更好

By xrspook @ 8:32:56 归类于: 烂日记

实现功能,我觉得只是最基本的要求。接下来我会考虑到底有什么是可以优化的,比如如果我做了很多个判断,我能不能少做一些,把那些判断合并起来或者里面我做了不少循环,循环通常是为了赋值,赋值完以后我有没有立即就把那个数组或者字典之类的释放。我不知道那些东西释放跟不释放效率会不会相差很多,但可以肯定的是,如果我在一个脚本里同一个数组或者字典的名字被重复用多次,而在使用之前我又没有重新定义,在上一个数组或者字典使用完毕之后,把它清除干净会让我安心很多。

一开始要实现某个功能的时候,我都是写完一大堆,然后发现另外一个功能可能就是在那一大堆里面改一点点,然后就可以实现了,我就会把那一大堆复制粘贴,然后改一点点,发现的确是可以的,但是当这个脚本真的要放出来的时候,我就得合并同类项,能不能把这两个东西通过以某个判断把它们合并在一起呢?如果那两段话的差别就只是某个条件判断不一样,我能不能把那个条件判断放在前面,然后把判断结果赋值给一个变量接着后面就可以在同一段话里面引用那个变量了。这样的话从脚本的体积来说可以缩短很多,起码可以减肥一半,甚至更多。

一直以来我都想不通,如果我要从一个工作簿里复制某个工作表到另外一个新的工作簿。那么我是应该把整个工作表复制过去呢,还是说在新的那个工作簿里面新建一个工作表,然后把原来那个的内容复制到那边。在生成这篇blog的时候,其实我依然没有做过这种尝试,到底哪一个的效率会高一点呢?我选择的是直接把工作表复制过去。当我全部复制完毕以后,因为每个工作簿新建的时候都会有一个默认的工作表,我最后的步骤就是把默认的那个工作表删掉。但是让我想不明白的是,如果我不是在VBA里操作,而是直接操作Excel,我在某个已经打开的工作簿的工作表的表名那里点右键之后选择在新的工作簿里面建立这个工作表的副本,那么新的工作簿里是不会有默认空白工作表的。这是不是证明,如果我在新建工作簿里面设定某些参数可以不让那个默认空白的工作表生成呢?因为如果这样的话,我就不需要在后面再做一个删除的操作了。从数据上说,删不删除都无所谓,因为那个是空白的,但是对完美主义者来说,总觉得有那么一个空表实在很碍眼。

当我终于实现了批量生成文件以后,我发现批量生成文件的速度很慢。慢到大概每个表都需要一秒钟,如果要批量生成9个表就得9秒钟甚至更多。在考虑如何缩短时间的时候,我马上想到我把那些批量生成的表全部都放在一个工作簿里,事情就变成了批量生成一个工作簿里面的N个工作表,而不是生成N个工作簿。接着我发现这样的确能提高一点速度,如果要生成9个表的话,时间会从大概9秒钟下降到6秒钟,但是我觉得还是不行。于是我就开始研究我这个生成的过程到底有没有什么地方可以改进。因为之前我的策略是生成9个工作簿,所以我肯定是从原始的文件里先把自带格式的工作表复制到新的工作簿,然后再把新的数据粘贴到新的工作簿,然后保存。同样的思路,用在一个工作簿的N个工作表里,效率很低。所以接下来我做的就是新建一个工作簿,然后把带有格式的工作表复制过去。接着在新的工作簿里面复制里面带有格式的工作表,改名,接着在新的工作表里赋值。这样最大的区别就在于在多次复制工作表的时候,我不再需要跨工作簿了。这么一个不跨文件的操作,直接让批量生成的时间从6秒下降到2秒,效果非常明显。我觉得两秒也几乎基本上是个极限了,因为即便我用最简单的循环,基本上不在工作表里面录入什么数据也需要接近2秒的时间,现在我粘贴了那么多数据,还有就是生成这些数据之前还进行了N步操作,整个过程下来不到三秒,我觉得完全可以接受。

追求更快更好是从来没有尽头的。

2023-08
22

继续沉迷

By xrspook @ 9:12:09 归类于: 烂日记

星期天的晚上,我觉得自己睡了个寂寞。本来就很晚才去睡觉,再加上睡觉之前我正在想某些很烧脑的事情,所以现在躺在床上,我觉得整个晚上我的脑子里都是那些烧脑的玩意。在迷迷糊糊之中睡觉,我也说不准自己到底是清醒的还是睡着的。在睡梦之中我还在为那个睡觉之前折腾的问题烦恼,但醒了以后,我实在不记得睡梦之中我做了什么方案,所以说在其实在睡觉之前真的不应该努力思考,那样的话不仅仅会很久都睡不着,睡着了以后也会很挣扎。但我读书的时候不会这样,话说回来,读书的时候我就从来没有为某些问题主动这么努力过。如果是老师出的某些习题,通常都会有标准的答案。那个时候我们都不会自找麻烦,故意给自己制造难题,又或者说即便在那个时候我们找到了什么问题,你自己解决不了的,我也会主动去找同学或者直接去找老师。退一步说,我们找的那些答案只要到那是某些习题本上或者卷子上的题目,那些东西绝大多数情况之下都有标准答案,所以找到那个标准答案就好了,有可能是配套的答案也有可能是某些教辅的书籍里面有相关类似的解题说明。

现在我做的那些事情,我感觉没有一个标准答案。不同的人会用不同的方式去实现。不仅仅是实现的工具不一样,即便是一致的工具,也会有不同的实现思路。就我自己的实际情况而言,即便只是我一个人,可能今天跟明天的想法也会有区别,即便我把某个VBA脚本写得我自己满意,但说不准过上一段时间我又会有新的想法,觉得某些地方可以做某些改进。之所以这样,是因为首先我还一直在思考。其次,之所以一开始想得不周全,是因为我根本不知道周全应该是怎么样的,很多方法是参照过来的,可能在其它的编程里面是那么个用法,但什么才是最适合在VBA里实现的,又是另外一回事。比如其实VBA通过api是可以调用Excel自己前端函数,但那一定不是VBA最高效的方式。在VBA里,只要你玩好了判断和循环,对高手来说,就能解决几乎所有的问题。数组才是VBA的核心,但是数组不仅仅是一回事。可能是我一开始学VBA的时候并没有意识到原来数组是那么的复杂。因为在我印象之中,C语言的数组不是这样的。

VBA里的数组千变万化,虽然都用数组去命名,但实际定义赋值使用等等完全不一样,又或者是说它们的确有共性,但是它们的特性会让你觉得它们大概都是一回事的人无数次掉坑里,我就是这样的人。当我掉坑里很多次以后,我才发现原来它们是有很多特性的。

要清楚了解我的工具是做什么的。可以怎么用,然后我才能在用的时候得心应手。什么场合应该用什么样的数组,得到了数组以后,我又可以对那进行什么样的改造都是我应该烂熟于心的。

大概一周之前,我跟网友谈起我在VBA里遇到的烦恼的时候,我的网友说了一句,可能你连怎么VBA里调试都不知道。其实调试我是会的,因为如果我完全不懂调试的话,搞循环就是在数组瞎掰,显然除了碰壁就是碰壁。但是我真的没有系统的学习过在VBA里怎么高效调试。既然知道自己弱在哪里,我就得把这个补回来。现在我的调试要比之前高效那么一点点了。

在AI流行的现在,我还靠我自己写VBA,写那个超级八股又非常奇怪的编程语言,在别人看来非常反人类反潮流,但是当你从不大认识到比较熟悉一种编程语言,当你能得心应手轻而易举实现之前你想做到,但是却无法做到的事情的时候,那种成就感是无法言语的。

2023-08
21

见鬼后攒经验

By xrspook @ 16:16:16 归类于: 烂日记

回到家后我依然控制不住自己,要打开Excel的VBA实现各种功能。

前几天说过,我想把一个一维数组输出到Excel的列单元格。发现即便我用了转置,依然无法实现,于是我硬是把那个一维数组变成二维数组,然后不需要转置就可以把那输出到列单元格。这样我就需要在赋值的时候多写一些字,输出到单元格那里时完全按照一维的大小去设定。后来我在某天尝试之中偶然发现普通的数组的确是可以用一个转置输出到列,教程也是这么说的,但是如果那个数组里面有一个空值,就会导致错误。系统就会显示出现“类型不匹配”。到底这个不匹配是个什么东西?我觉得如果这是python,如果这是在VSCode里,问题会被描述得很精确,实际上就是因为我输出的那个一维数组里面有空值。为什么二维数组里面有空值可以随意输出,但一维数组却不行?这是让我觉得非常无语,因为我就是对同样的数据用过一维数组跟二维数组输出,就内容来说,两个没有任何区别,但问题就是VBA这个奇怪的东西,当你把有空值的一维数组输出到列单元格就会出错。一维数组正常输出到行单元格的时候是不会出错的,而列的时候之所以出错,是因为输出到列必须在外层套一个转置。处理掉那个null对我来说很简单,因为我要输出到列的那个数组是从其它数组里赋值过去的,赋值的时候我多一条判断,如果那是空就直接送一对双引号,也就是让那个元素变成空字符串,而不是null就行。这样的话我就可以在一维数组外面套一个转置,然后输出到列单元格。对所有编程语言来说,null都是一个让人觉得很敏感的东西,很难说得清那到底是什么,所以几乎所有编程语言都有个isnull去判断那个东西是不是null。如果你要对某些字段进行运算,一旦在里面遇到null,你的汇总全部会失败。那种风格跟在Excel里面处理器空的单元格,有没有都无所谓完全不一样。

第一次我是在Power Query里遇到null,当时我就觉得很奇怪,为什么明明应该是有数的,但我连加之后汇总列却没有数?后来发现原来被连加的某些列是空的,这样就导致其它列即便有数,最后汇总也是空。所以我就经常做很无聊的事情,如果我要连加,我就先把那些列全部转为0,然后在整个操作结束以后,再把那些0全部转为空。这些看上去很无聊,多此一举的事情如果不干,根本得不到正确的结果。当然,如果我不是在PQ里可视化操作,我完全可以在汇总列那里用条件语句把之前连加的那些列全部都用公式先判断,然后再加。如果所有这些事情都是在高级编辑器里面完成,显然修改汇总列会比较简单,但如果不想敲键盘,直接选定那些可能被连加的列,然后设为0,最后再把那设为空,从鼠标和人的逻辑操作上来说是比较直观的。

我发现如果要在VBA要进行工作簿open的操作,界面会闪,但如果用的是ADO+SQL的查询,完全没有那种感觉,但实际上ADO+SQL是可以进行写入操作的,所以我到底能不能通过那个东西无感新建文件呢?

2023-08
20

USB摄像头又挂了

By xrspook @ 10:57:21 归类于: 烂日记

到此为止,我试过四次给自己剪头发,只用三次在家里。第三第四次我都用上了谷客队HD98 1080P摄像头。但就是在第四次剪头发的时候,好不容易我终于剪完后面,当我要换个角度剪侧面的时候,一个踉跄,卡了一下,直接让我扯了那个摄像头的USB线并踩了一脚。接着我就发现笔记本里摄像头的画面直接停留在扯淡那里。当我拔掉USB再插回去以后。电脑可以识别到有USB摄像头,但是屏幕一片漆黑。也就是说这一个踉跄直接毁掉了我的这个摄像头。这个谷客摄像头的购买是有一段风波的,我先是在闲鱼上买,收货后发现全部都是马赛克,接着我就在淘宝上又买了一个,但闲鱼那个是1080P的,淘宝上那个新的是720P的。720P收货发现没有问题。当我即将要回家,在那之前打算把1080P的丢掉之前我试了一下,发现。我领了半天以后那个东西可以了,于是我赶紧联系卖家,把款还给他。在第四次剪头发之前,我把720P的带回来单位,家里只剩下1080P。其实把720P带走的时候,我有想过万一这个1080P坏掉了,我还有个720P的做替代。我不知道这种事情是不是根本就不应该去想。因为事实证明,有时候你不去想那个东西就不会发生,但如果一个不小心不知道为什么想了一下,接着就真的应验了。幸好头已经剪完了后面,也就是最需要摄像头的地方。侧面虽然也挺难搞的,但是用镜子大概差不多凑合着也能行。

坏掉的摄像头插到电脑上电脑可以识别出有USB摄像头这个设备,而且电脑说这个设备运转正常,所以说我觉得这意味着这个摄像头的硬件是没有问题的,但有可能USB里面的某条数据线断了。为什么我会有这种猜想呢?因为当我把摄像头插到电脑上,然后掰那条线的时候,曾经试过有两回,摄像头的监视画面从黑色变成了白色,但只有那么一刹那,仅有那么两次,接下来无论我怎么把那个线怎么甩那个摄像头都是黑屏。但我又发现,当我狠狠地折腾那个摄像头的时候。老旧台式机的USB也好像出状况了,因为首先是我那个USB的网卡接收信号变得很差,接着是那个网卡好像直接就不工作了,处于断网的状态。所以我赶紧把那个摄像头拔掉,然后把电脑关机。我不知道是不是我折腾那个摄像头USB线的时候,数据线里面断掉的那个部分又与某些东西短路了。拔掉摄像头以后,我就把台式机给关掉了,所以台式机之后有没有好过来我不知道。我感觉应该没有问题。理论上是没有问题的,因为我试过单位的那台台式机的某个USB口质量实在太糟糕,所以在某一次插进去的时候插不进去,我感觉机子直接就短路了,直接关机。当我把那个U盘拔出来的时候发现那个USB口直接里面某些东西就翘起来了。那一次真的把我吓得够呛的,在断电的情况下我尽量又把那翘起来的金属还原,然后尽可能地让它们完全不会互相触碰,接下来我就直接用胶纸把那个USB口给贴上,再也不能插那个地方。当然了,在贴那个胶纸之前,我还是试过的电脑能开正常运行,什么问题都没有,只是USB口少了两个。如果要保证在移动搬动情况下,那个USB口也不出状况,我感觉最好还是在里面打一些胶。最好当然是硅橡胶,但是没有的话,热熔胶估计也行。但是我还没那么狠真的要那么干。

既然我判断是USB线断了导致摄像头用不了,所以我就把其中一条充电线剪了,然后跟摄像头的线接起来。两条USB线都是黑红白绿。USB充电线红线和黑线特别粗,摄像头的四线没有特别粗特别细的,但从剥线的难易程度来说,红线跟黑线剥得轻松一点,绿线跟白线实在是太难剥了,但是当我把摄像头跟充电线接一起以后,发现无论是白对绿还是绿对白,电脑都再也无法识别到USB摄像头。也就是说,我把摄像头的USB线剪断再接上这个操作宣告失败。

这个波折的摄像头,我得拿回单位用万用表测一下原装的USB口和充电线的USB口。确定那4根线的接口位置完全一致。如果那两根USB口的线任何一根或者全部两根都没办法在线头和金属口那边连通,就意味着我这是在瞎折腾,再换一条USB线连摄像头估计就可以了。

一个USB摄像头,怎么会这么的纠结

© 2004 - 2026 我的天 | Theme by xrspook | Power by WordPress