2020-11
16

硬盘屯货碎碎念

By xrspook @ 10:55:31 归类于: 烂日记

为什么家里电脑的硬盘没问题,单位电脑的硬盘却有问题呢?这估计是概率问题,因为电子元件这种东西好不好就像中彩票一样。还记得高中的时候我就有同学嚷嚷自己电脑的硬盘不好,出现了坏道什么的。大学4个人一个宿舍的时候,我的一个舍友电脑的硬盘就不知道什么时候就会出状况,出状况就会黑屏或蓝屏,折腾到了大三才终于确诊是硬盘抽风。我运气好,自己的电脑一直都没有遇到过让我无法继续下去的硬盘问题。或许从前我的硬盘也有问题,但不至于到蓝屏黑屏用不了的地步。电脑用了几年后速度变慢,因为内存的原因做什么事都很卡我早已习以为常。在我记忆之中,电脑卡住90%的原因都是内存不够,虽然我的CPU也不高端,但内存的问题更显著。大学的时候,我用40GB的硬盘下载了估计超过4TB的东西,依旧没事。从前大家总说用迅雷或BT下载会伤硬盘,但我完全没感觉,因为当时我用得最多的是eMule,那个东西的速度向来非常慢。我不知道最后我的同学是如何解决他们硬盘坏道的问题,迅雷下载会伤硬盘,难道他们就真的限速了吗?很多年以后我意识到再快的下载速度,屯回来再多的东西,绝大多数时候我们都是不看的。从前我下载了很多视频,但视频下载回来以后,屯到一定的量我就会刻光盘,只有这样我才能腾出空间来继续下载。下载几个小时甚至几天,下完的时候很兴奋,但实际上我只是打开视频拉一拉瞧一瞧,然后就放在哪里,到要刻盘的时候开始剪刀大法,把体积大的视频剪成适合CD刻录盘的大小。

下载就只是为了屯货,但不屯货又不行,因为网上的资源说不准什么时候就没了。那种今天还看到,明天就消失的事情我实在遇到过太多。如果我屯回来了,但我自己搞丢了,是我的错,而且不是故意的,但如果我明明看到却不去屯,最终资源消失了,我会怨自己。但资源到底屯在哪个地方才是相对安全的呢?我早期的刻录光盘已经有10年以上的历史了,里面的东西还能不能读取是个谜。从前没有那么大的硬盘,刻录光盘是唯一的出路。后来出了大的机械硬盘,但机械硬盘说不准什么时候就会自动挂。固态硬盘相对于机械硬盘来说或许会好一点,但无论哪种方式,要保住过去那些东西都没有绝对这个说法。

所以我该怎么办呢?下载专门用一个几十GB的固态硬盘?坏掉就直接换一个?系统用固态硬盘,这样启动速度快,运行速度也有保证。屯货依旧用机械硬盘?如果只是屯货,不经常擦写的话机械硬盘寿命应该会长一些吧,但有多长呢?20年?30年?还是无论什么方式,10年差不多就是极限了?

那些从前当作是宝贝的东西,在岁月的洗礼之中,渐渐就会淡忘,没了就没了吧。

2020-10
20

我要优化提速

By xrspook @ 8:36:19 归类于: 烂日记

当我终于把功能做出来以后,我却嫌弃出结果太慢了,居然要好几分钟。明明最终我想要的是一个表的合并,为了更快,我不得不拆分为两个查询。第2个查询以第1个查询的结果为基础。其实这么操作,无非我是想利用第1个查询已经得到的缓存结果。那个结果已经被我用表格输出。之前我试过从零开始弄第2个查询,结果发现实在太慢了。如果没有那么多的分组,速度还会那么慢吗?如果只是一个求和,根本无需分组,但问题是,每个批次的东西必须分开计算,然后才可以出现分段的结果。说白了,让我纠结的是一个累计求和。

累计求和这种东西的思路在PQ里通常都意味着新增一列,参数设定匹配某行的某些东西,符合条件就把某列的数据求和。所以实际上这是一个筛选的过程。如果数据很多,筛选肯定会很慢,但除了这样,还能有什么方法吗?据说可以用索引的方法。据说索引的方法比筛选的方法快非常多。如果用python的思路去考虑,我觉得筛选是一个列表的操作,而另外一个是字典的操作。如果不用二分法。历遍列表是非常慢的,但如果要立片字典,历遍是轻而易举的事,而且字典的效率比二分法还要高。所以我应该如何建立索引呢?如果筛选的是多条件,索引大法还能继续管用吗?我觉得现在我遇到的问题那些经常接触数据库的人估计已经纠结过了。这不仅仅是Power Query的问题,这是如何运用数据进行弯曲折叠的问题。只要是数据库,无论是SQL还是其他形式,都会有这种烦恼。

昨天我终于经历了一个Excel要跑好几分钟甚至十几分钟才能出结果的东西,我感觉那没多少数据。我曾经试过把那些东西输出,结果发现输出速度非常慢,每秒钟只处理了不到100个。那些数据粗略计算了一下,可能有超过2万条。为什么加载2万条数据会这么慢呢?这是一个令我纠结的结果,如果把最后的分组都做了,输出的数据只有365条,但如果不做最后的分组,有超过2万条。不做分组的话,那个结果可以在软件里直接展示出来,顶多只需要几秒的运算时间,但是不做分组,把数据输出却有超过2万条,即便我不输出表格只输出数据透视表,依然在输出的时候速度非常慢。为什么对2万条数据进行分组会这么慢呢?除了分组,还有其他快速的方式可以对某条件进行求和吗?整个操作之所以这么慢,除了因为分组,还有排序,还有一些,null转化为0,或者把0转化为null的操作,最后,还有一条我自己都觉得应该会很作死的向下填充。那个结果我花了好几分钟才计算出来,如果让高手去解答,估计运行时间会会是毫秒级的,顶多不会超过三秒钟。

一方面,我很想知道如何提升运行速度,直接拿去问人显然是最显而易见的办法,但在这之前,我想自己先思考一下,毕竟走到这一步已经很不容易,我不想在最后一步认输。这让我想起了高中数学老师的某句经典语录,学习数学几个境界里的最后一句——全而不好(前几句是“不懂不会,会而不对,对而不全”)。

2020-10
17

尝试手机投屏到电视

By xrspook @ 22:17:18 归类于: 烂日记

今天,我折腾了一番小米电视4A跟小米平板1的投屏。小米平板1的系统我用的是MIUI6,之所以是MIUI6,因为自动升级到MIUI9的时候,平板的电量就会尿崩,之所以会尿崩,因为某些进程无法禁止,而那个东西又异常耗电。MIUI6里没有米联。我猜如果这个不是小米平板系统,而是小米手机的系统的话,估计可以找到米联。小米平板的系统里面只有一个叫无线显示的东西。我试图在小米平板的应用市场里面下载乐播投屏,但结果最新版本的乐播投屏直接闪退。于是我要下载了当贝市场。那个东西下载的很多APP都是基于智能电视或者盒子的,而且APP下载的版本还可以选,于是我又下载了另外一个乐播投屏。但是那个老版本的乐播投屏我依然不知道该如何开始。

我想做到的是在小米平板上播放哔哩哔哩,然后投屏到小米电视上,理论这是非常简单的事,但实际上哔哩哔哩的客户端无论如何都找不到我的小米电视,于是,我在当贝市场上下载了哔哩哔哩的TV版。那个东西比哔哩哔哩本身启动速度快很多,但问题是理论上应该可以选择更多参数的按钮却无论如何按不出来。我折腾了半天都做不到,后来我感觉到,大概因为那个TV版是针对智能电视和盒子类的。那些东西一定会有遥控器,所以那个三角向下的符号就是遥控器的某个按键,但因为我用的是平板,所以我无论如何都做不了那个操作。为了验证我的想法,我在小米电视上安装了哔哩哔哩的TV版。果然用遥控器轻而易举就能做到所有我想做的事。

我在小米电视4A上装了哔哩哔哩TV版以后,想再装一个奇异果,结果告诉我空间不够了。小米电视4A的内存只有4GB,系统就占了一大半,只剩下300多M的空间可以任由个人发挥。装了一个哔哩哔哩TV版以后,只剩下几十MB,当然装不了奇异果。所以我手动卸载了一些我根本不需要的APP。奇异果终于装上去了。随便找了一个播放,感觉跟连接电脑用网页播放效果差不多,但最大的区别在于我是爱奇艺电脑手机版的会员,但电视版的会员费更贵,我没买。所以理论上用电脑可以播的东西,如果用奇异果,我反而看不了。所以我又在我妈的手机上装了一个爱奇艺,然后用投屏的方式去看。

小米平板1下载的老版本乐播投屏里有设置投屏分辨率的选项,所以我觉得投屏这种东西肯定可以控制分辨率,所以视频app自带的投屏效果要比直接手机数据投屏电视要好。因为我妈用的是MIUI 12,MIUI11以上的手机系统可以轻松连接小米电视4A,从小米手机到小米电视,通过爱奇艺app投屏,那不过是一个按钮而已,不需要其他任何操作。结束投屏以后,小米电视会自动切换回之前正在用的数据源。我默认的数据源是HDMI1,那通过VGA转换线连接我妈还在用XP系统的电脑。从电费层面考虑,这样看片更省事了,因为只需要开电视和手机app,只是一个连接传递的过程。测试了爱奇艺以后,我又在我妈的手机里安装了一个哔哩哔哩app。我妈手机上的哔哩哔哩自带的投屏轻易找到了小米电视4A,之前小米平板无论如何折腾都无法找到的电视。大概这是因为小米平板1太低端了,没办法以高端高清的模式连接小米电视4A,但小米平板1又不是一定连不上小米电视4A,但在小米电视的投屏设置里开启Miracast,小米平板就可以和小米电视建立连接,但是如果以那种方式建立连接,传送的图像质量远没有直接通过视频app投屏来得好,所以那些快速直连的东西大概用的是更高级的连接方式吧。

晚上我又测试了手机爱奇艺app投屏小米电视4A,怎么连怎么断,视频能投屏上去,但投上去以后手机就显示已经断开,所以电视上的视频无法控制进度,也无法关闭。看来投屏看电视这种事在我家是不可能做到的,因为wifi干扰实在太多了,简直就是我那个去!

2020-09
30

PQ里的IF要怎么加呢

By xrspook @ 9:35:06 归类于: 烂日记

昨天在设计某个Power Query查询的时候,我遇到了个问题。只需要做一个非常简单的IF判断,但貌似是不能直接用IF处理步骤。那些不过是非常简单的东西而已,如果符合这个条件,用这个步骤,如果不符合这个条件,用另外的步骤。我之所以被拦在那里,大概是因为我还没搞清IF使用的场景关系。判断步骤从理论上说再普通不过了。我该怎么做到这个呢?之所以有这个困惑,因为IF的判断,在举例子的时候,大都用在添加列这个功能里面。如果符合这个条件,就添加这种,否则就是另外一种,当然你也可以添加一大堆筛选。我正在开始构思这篇东西的时候,突然意识到,我要处理的实际上是一个列表。既然是一个列表,在后面引用的时候我就没必要把所有东西都摊开,我在前面就做好判断,后面直接一个判断好的列表扔过去就可以了。有些步骤我进行了排序,但是实际上排不排都无所谓,因为最后这些东西会到达数据透视表。月份参数必须排序,理论上那个参数不仅仅要排序,而且还应该以日期的数据格式展示出来。昨晚上我发现同样引用同一个数据表,如果我在展开的时候,不加以说明,反而会得出正确的东西。如果纯粹用可视化的操作,会有画蛇添足的效果。我的数据必须得用我想要的方式表达出来,如果默认的东西不对,我应该改到对为止。这一次我运气好,我没有解释某一列到底是什么东西,系统读对了,但有些时候情况不是这样的。当然,也会有我昨天下午遇到的那种情况,系统默认的不太靠谱。最终,我忍耐了那个不太靠谱,但是。既然有了晚上的的经历,系统默认画蛇添足的部分根本不应该存在。

一开始我只想实现某个功能,但在实现某个功能的过程中,我发现以前我的那种分类有点想太多了,因为根本没有必要。那些东西都是独立的存在。与其进行二级分类,不如多做几个一级分类。一级分类的非重复计算实际上用的都是一个模板。既然是模板,我当然可以用外部引入数据的方式实现动态筛选。关于非重复计算这种东西,加入了模型的数据透视表能轻而易举地做到,但经过这段时间的摸索以后,我发现Power Query只要能打开,基本上不会出错,但是Power Pivot我搞不懂为什么会出错,为什么会卡机。那个东西卡机的概率我感觉太高了,之所以有这么高的概率,也可能因为我用得比较少。有时我只是写了个非常简单的度量值,出来了以后,度量值不知道为什么选不上,不知道为什么选上了以后电脑就弹出了某些界面,关掉了以后Power Pivot的选项卡就消失了,但是你依然可以进入。关掉Excel,再次打开,Power Pivot的选项卡没有了,你得在加载项那里把那勾去掉,再重新加回去。实在说不准为什么会这样。如果不把那个曾经导致问题的文件的模型删掉,打开那个工作簿的时候永远存在这种问题,其它工作簿不也会被连累。删掉那个错误后,还得重启电脑才能解决问题。很久以前Power Query也是Excel的插件,但后来,那个东西已经不再是独立的选项卡,而直接内嵌到软件了,而Power Pivot在Microsoft 365里依然是个选项卡,依然要借助COM加载下。这就意味着这个东西还没有到非常成熟的地步。所以或许某一天我要玩Power Pivot的时候,我不在Excel里面玩,而会跑到Power BI里折腾。因为起码那样的话,我就不用烦恼Excel的加载项老是消失这个问题了。

越研究就越知道自己什么都不知道。

2020-09
28

迷糊

By xrspook @ 8:40:24 归类于: 烂日记

今天我终于看完了一本Power Query的教程。其实我也不知道叫不叫做看完了,因为最后的部分,我是囫囵吞枣的过的,因为那些功能我用不着。最后一章说的是函数,但是,每个函数都没有仔细说要怎么着,只是把函数列举了出来,大概说一下什么意思,但函数里面到底有什么具体参数,没说。看完那本书以后,我回去看那条我搞不懂的题目,结果发现,之前我卡在的那个地方其实不是难点,而是因为我没有仔细观察数据源,所以犯了一个错误。真正的难点,我没有意识到。因为我用的最多的是数据透视表,要做汇总计算,根本不是问题,任何类型都可以。Power Query非常擅长数据清洗。当然这个东西也可以用作汇总计算,但当一个表里,明细跟汇总都放在一起,感觉就不太靠谱了,作为Power BI的两剑客。我个人觉得Power Query更擅长于处理原始数据,让那更容易用于后续的Power Pivot分析使用。高手用了一个高级的公式,解决了某个汇总问题。我有主动了解那个东西到底是干嘛的。之后,我大概知道那要做什么,那里内置了一个循环功能,又或者说是迭代的功能。让我摸不着头脑的是,在使用那个公式之前,又套用了好几层东西,然后我就彻底蒙圈了,那简直就是连环套,就像俄罗斯套娃一样。有时我真的想不懂那些高手到底是怎么写那些脚本的。公式一层套一层,他们怎么就搞得清那些小括号、中括号和大括号呢?同样是引用一个列名,有用双引号的,用中括号的,也有用大括号加双引号的。貌似暂时我还没有看到纯粹小括号的。Power Query实际上就是搞清几种数据类型,在那几种东西之间来回变换,其中就包括表格,列表,记录和值。一个个说,貌似都能明白,但问题是,要把它们套用起来的时候,情况就比较复杂了。要表达一个表,用的是大括号,要表达一堆列表,也是用大括号。如果要表达某个表里面的一些记录,那得用3层的大括号,列表只是两层。这是纯粹用大括号的,你也可以在大括号里面嵌套中括号来定位某些记录。这些层层套套的关系,简直要把人逼疯。但实际上复杂的结构有哪个不是这种关系呢?只怪Power Query这个东西把这些关系放在表格里,而其它地方用的几层的缩进。Power Query不存在单元格这个概念,那个东西用的是上面说的那几种东西。

回到一开始那个难题,我觉得要解答那个东西,最简便的方式应该是用Power Query实现多表合并抓取数据,然后把抓取到的东西放到Power Pivot里面建立一个大表和一个索引表的关系。这样一来,就完全不需要考虑那种必须得用高端函数才能解决的汇总问题了。为什么我们非得吊死在一棵树上呢?当然,之所以不这么干,是因为做表那个人想一次性搞定所有。在没有Power BI两剑客之前,要实现这个功能,肯定会有高手用VBA解决问题。如果用的是VBA,那又是一个怎么样的思路呢?

我觉得Power Query现在对我来说很无解,这是因为我对这个东西的了解还不够深入。

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