2020-06
6

烦恼不断

By xrspook @ 18:04:34 归类于: 烂日记

与日复一日的雨下个不停,仿佛根本就没有要停下的意思。其实这不怪老天爷,今年春节的时候,他已经给了我们无数个晴天,而且还是空气质量非常好的那种,但是偏偏人类不争气,把那些天都浪费了,所有人都只能窝在家里。现在希望疫情稍微缓和,理论上大家可以出去活动活动了,但是雨却一直下个不停,说不准什么时候会下,说不准突然会下到什么程度。

对我来说,下雨跟单位的作业仿佛是正比例关系的。晴天的时候没有业务,也没有雨。下雨的时候业务也来了,但是业务却只能挤在那里,完全开动不了,尤其是那些大批量高效率的。这让人非常的抓狂,但是却没有一点办法。机会这种东西,不是说主观上你想抓住就可以抓住。根本不给你机会的话,你甚至连门都没有。

这个2020年我觉得非常生气,还记得很久以前。2000年的时候,世界各地都有各种谣言说千禧年世界会毁灭,但实际上,我们安然无恙度过了2000年。2020年,大家都觉得这个年份的意头非常好,但实际上,我们却摊上了一桩又一桩的糟糕事。如果没有新冠病毒,2020年就真的会如我们想象中的那么美好吗?我觉得大概不会,顶多是大家能在阳光灿烂的日子里能多快活一些时间。

说到民生大事,说到国家关系,还是一团糟。即便没有新冠,美国还是会无理地制裁中国的科技企业,还是会莫名其妙地提高各种关税,还是会以各种理由拒绝发给中国留学生签证。至于某些国家的种族歧视问题,从来都存在,差的只是一根导火索,当某件事件引起大家内心中存在已久的愤怒,爆炸开来是显而易见的事。种族歧视为什么会在2020年爆发得尤为严重,大概是因为被不平等对待的那些人,因为新冠疫情在2020年被整得非常惨。他们其中的某些或者不是社会的底层人士,但很大一部分,对他们来说,没有工作就意味着没有饭吃。从前,我真没有这个感觉,但今年我真的觉得美国不过是一个富裕版的印度罢了。印度里各个邦之间的关系,跟美国实在太类似了。那是一个国家,但到了关键时候,每个地方还是各自为政。美国的种族歧视跟印度由来已久的种姓问题有何区别?在印度,低种姓的人即便有知识、有能力,还是会被人家歧视。这种情况在美国,在非纯种白人身上一样存在。只要你的血统里有一滴血不是白人的,你就是有色人种。现在都什么年代了,居然还会有这种看法,而且他们还觉得这个理所当然,凭什么纯种白人的血统就会高人一等。在我遇到的人之中,在我的生活圈子里,也有过小数民族,但直到他们把身份证亮出来,我们才知道原来他们不是汉族。其他民族也好,汉族也好,这一点问题都没有,只要日子过得好,是什么民族根本不重要。

大概我不应该用我们的理所当然觉得别人的事也应该这么办吧。

2020-06
5

随机单词扎堆成文

By xrspook @ 14:47:54 归类于: 扮IT

从某本书里随机找单词拼出句子段落。重点是把握好前缀和后缀,前缀要捆绑查找,后缀要关联对应。

Exercise 8: Markov analysis: Write a program to read a text from a file and perform Markov analysis. The result should be a dictionary that maps from prefixes to a collection of possible suffixes. The collection might be a list, tuple, or dictionary; it is up to you to make an appropriate choice. You can test your program with prefix length two, but you should write the program in a way that makes it easy to try other lengths. Add a function to the previous program to generate random text based on the Markov analysis. Here is an example from Emma with prefix length 2: He was very clever, be it sweetness or be angry, ashamed or only amused, at such a stroke. She had never thought of Hannah till you were never meant for me?” “I cannot make speeches, Emma:” he soon cut it all himself. For this example, I left the punctuation attached to the words. The result is almost syntactically correct, but not quite. Semantically, it almost makes sense, but not quite. What happens if you increase the prefix length? Does the random text make more sense? Once your program is working, you might want to try a mash-up: if you combine text from two or more books, the random text you generate will blend the vocabulary and phrases from the sources in interesting ways. Credit: This case study is based on an example from Kernighan and Pike, The Practice of Programming, Addison-Wesley, 1999. You should attempt this exercise before you go on; then you can download my solution from http://thinkpython2.com/code/markov.py. You will also need http://thinkpython2.com/code/emma.txt.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import string
import random
from collections import defaultdict
def set_book(fin1,num):
    d = defaultdict(list) # 默认键值为列表
    l = []
    header = ()
    for line in fin1:
        line = line.replace('-', ' ')
        for word in line.rstrip().split(): # 空格换行为分割,单词存入列表
            l.append(word)
    for i in range(len(l)-num): # 以列表序号逐一推进方式建立字典
        header = (l[i-1],) # 元组header为前缀,做键
        for j in range(i,i+num-1):
            header += (l[j],)
            j += 1
        if l[i+num-1] not in d[header]:
            d[header].append(l[i+num-1]) # 列表后缀做键值
    return d
def next(start, book):
    return random.choice(book[start])
fin1 = open('emma.txt', encoding='utf-8')
prefix_num = 3 # 前缀个数
suffix_num = 100 # 后缀个数
book = set_book(fin1,prefix_num)
start = random.choice(list(book.keys())) # 随机前缀开头
final =  start
for i in range(suffix_num): # 截取最后几个单词为前缀找后缀
    final += (next(final[len(final)-prefix_num:], book),) 
for word in final:
    print(word, end=' ')
# reigns alone. A very proper compliment! and then follows the application, 
# which I think, my dear, you said you had a great deal happier if she had no 
# intellectual superiority to make atonement to herself, or frighten those 
# who might hate her into outward respect. She had never seen her look so well, 
# so lovely, so engaging. There was consciousness, animation, and warmth; 
# there was every appearance of its being all in proof of how much he was 
# in love with, how to be able to return! I shall try what I can do. 
# Harriet's features are very delicate, which makes a likeness
2020-06
5

上路

By xrspook @ 8:29:07 归类于: 烂日记

我已经不记得对上一次,写python是什么时候的事了,感觉好遥远,起码一个多月以前。具体时间,我实在记不清了,但是我依然记得,上一次我卡在了哪里,我应该在哪里重新开始。当时我看到的是第14章,但实际上第13章的内容我还没有全部消化掉,前面的那些我花的时间还多一点,后面的那些简直就是囫囵吞枣。第13章最后一道练习题,我觉得自己是无论如何不会去想的了,因为我根本不知道题目到底要我做些什么,之所以这样,大概是因为我的数学学得不好,所以我无法理解题目的意思。但是倒数第二道题目,我觉得自己还是可以做到的。

那是一道从一本书里随机的选择某些单词组成一些可能有意思的句子。随机拼凑句子语意当然乱来,但是如果能保证单词前面和后面相对稳定,那么起码单词组合起来会有某些意思,虽然可能句子的意思还是很无厘头。随着前面后面单词的整体性加强,整个句子的意思也会越发明了。这其实就是一个靠着前缀找后缀的运行模式。开始的时候默认的前缀是两个单词。由前面的两个单词找出后面一个单词,然后再利用后面的两个单词找下一个单词,如此类推。这种方法理论上可以扩展为结合前面N个单词找后面一个单词,然后再撇掉第1个单词,继续找下一个。思路不复杂,但是该用什么实现这个呢?的确是需要点心思的是Think Python那本书没有把所有方法都告诉你,在最终写出这道题目的解答之前,我看过他们的答案,但我觉得自己没看懂,因为里面加入了很多书里之前根本没说过的东西。里面默认带入了很多他们认为你必须知道,所以无需解释的东西。如果这是一本传统的教程,这简直让人日子没法过了!做这本书的习题的时候,我也吐槽过无数次,他们会无底线地超纲。但也正是因为这些说来就来的超纲,让你除了要看这本书以外,你还必须动脑筋,还必须自己手动去搜索解决方法,找那些他们觉得你一定得懂,但实际上他们又没说的东西。最终我写出了我想要的东西,至于结果跟他们的差多远,我没有比较。很多人说python是一种类似于乐高积木的编程,是一个模块叠加一个模块的。但是里面的递归却让我很头晕,所以当参考答案用上全局函数,用上递归的时候,我选择的依然是循环,依然是在主函数里输出那些东西,同时也在一句话里面嵌套了好几个我想做的事。我当然可以把我嵌套的东西单独出来定制一个函数,但是一句话能说清的事情我不想再写几行,虽然在用的时候,多写几行可能会调取得方便一些。现在我之所以不这么干,是因为我要实现的功能暂时来说还很简单。我用一句话就实现了,只不过嵌套了好几个参数而已,Excel的函数也是这么玩的。虽然有些时候,我也会狠狠地吐槽那些几万公里那么长的Excel函数公式。

我从来没想过,自己能在半天之内解决一个之前我曾经想过但是却没想出解决办法的问题。

2020-06
4

Excel动态数组

By xrspook @ 9:55:22 归类于: 烂日记

动态数组是一个非常酷的功能。这个东西据说只有在Microsoft 365里面才能使用,但有些人说,在Office 2019已经具备了这个功能。不同人有不同的版本,而之所以有这样的结果,大概是时间点没有取得一致。动态数组这个东西从搜索的结果看来,大概是从2019年夏天开始。那估计是灰度测试,又或者那称不上是灰度测试,只能说是内部的测试。不知道当时作为新功能试用的用户是否能有那些功能,但起码那个时候我就没听说过,我也没有在其他Excel相关的教程里听说有这种事。动态数组我是近几个月才听说的,第一次看到相关教程的时候,我简直震惊了。看到教程以后,我赶紧去我的Office 365里面测试,发现是没有的。当时微软已经不支持Win7系统了,而我是在Win7上面的Office 365里找那个功能的。当我手动更新了Office 365以后那些动态数组的功能有了!这让我非常喜出望外,因为在微软不支持Win7之前,Office 365里几乎每天都会提示。微软不支持Win7,因为这样,所以Office 365只会更新安全方面的东西。但实际上,他们把功能也更新了,虽然是不声不响的。我不知道他们是怎么想的,有些功能可能是Win7和Win10之间的差异造成的,但有一些纯粹是他们为了让你连系统也花钱换掉。Office 365我是花钱买回来的服务。为什么我花了钱,却不给我服务呢?如果说这是Windows系统的问题,那么为什么连苹果系统你们都支持,却不持支持你们自家的系统呢?

动态数组这个东西挺高端,但实际上在久远的年代,实际上已经可以实现了。很久很久以前,高级搜索就能做到这个功能,但那个时候你顶多只能说那个是数组而不是动态。因为高级搜索只能用一次,下一次再用的话,你得重新复杂的步骤。如果不用高级搜索,你也可以用ctrl+shift+enter的数组结束方式来表达某些公式。长长的一段公式的确能实现动态数组的功能,但是对一般用户来说,门槛太高了,更重要的是,如果以三键数组公式结束,而某个筛选的表又很大的话。Excel的计算速度会大打折扣。如果数据非常多的话,简直会进入一个让人无法忍受的地步。我是一个很懒的人,所以我经常不选择数据的具体行数而直接选择整列,但是在某些公式里,这样的做法是不行的。比如SUMPRODUCT。某段时间我非常喜欢用这个大杀四方的公式,但后来我倾向于选择一些。可以整列选择的组合拳方公式。Microsoft 365引入动态数组公式以后,等于是简化了从前需要很长才能表达的出来的组合拳。实际上我只是稍微的体验过那个东西,这样的动态数组会不会在面对大数据的时候也瘫痪呢?昨天我明白到,原来Microsoft 365在处理方式公式的时候,实际上已经默认把它们当作是数组公式,这个大概就是为了铺开他们的组合拳做准备。

据数Win10将是最后一个Windows系统,以后的升级,再不会在名字上发生改变了,但会一直升级下去。

我觉得以后某天,我们的电脑将变得不再是一个具体的机器,那只是一个面板,真正的数据计算将会在远程的服务器里完成。要做到这个的前提是我们的云端必须非常完备,我们的网速可以支持我们无缝对接,就像虽然那个服务器在千里之外,但实际上我们的感受应该是那东西就在身边。

2020-06
3

默认理解为数组公式

By xrspook @ 10:22:24 归类于: 烂日记

昨天我才发现,我把Excel文件升级完以后,我的搭档没有用过。因为连续好长一段时间,单位的作业时间都超长,每天都在正常办公室下班时间之前,还没结束。通常会折腾到晚上11点多,运气好的话,可能晚上七八点就结束了,反正总的来说,在我升级完我自己的文件以后,一直都只是我一个人使用。我在三台电脑上用过那个文件。我用的是同一个软件打开,用的是Microsoft 365。其中两台电脑是台式机,搭配的是64位的Win7系统,而另外一个是笔记本电脑,搭配的是64位Win10。二者是有区别的,因为某些功能只有在Win10系统才有更新,但到底具体是些什么,至今我还没搞清楚。自从用了Microsoft 365以后,我也说不准那个软件会什么时候给我更新,比如说晚上回到宿舍,单位的作业很晚才结束,我赶着要把数据搞完然后睡觉,但偏偏在那个时候,打开电脑,打开Microsoft 365,却告诉我他正在升级。这种状况很让人抓狂,因为晚上10-11点的时候,单位宿舍的网速可能非常慢。如果Office在那个时候进行升级,而那个安装包又非常大,这将是毁灭性的。所以下次大概我要给软件设置提醒我升级,但不能为我自动升级,应该由我去选择升级时间,这比开电脑就被吓一跳好多了。理论上说Win7系统上的Microsoft 365对应的是2016的功能,Win上的365对应的是2019的功能,但无论是Win7还是Win10,我的365还是会比传统的Office 2016高级那么一点点,至于高级在哪里,我不知道。

Microsoft是个神奇的存在。office软件不知道从什么版本开始都有32跟64位的版本,365貌似给我的安装包都是32位的版本,但是365在不同的Windows系统下面又有其他分支。

大体上我觉得,Win7下的Microsoft 365,应该跟Office 2016差不多吧。但昨天的实际遭遇告诉我,不是那回事。昨天我才发现,在我三台电脑上都开得好好的公式,在我的搭档的电脑上几乎所有地方都显示错误。这不可能吧!一开始,我怀疑是SUMIFS不能在2016上使用,但搜索过后发现那个函数已经在Office 2016上通行了,那到底是什么呢?结果发现原来是我搭档Excel的选项设置里面勾选了引用空单元格时显示错误,为什么居然有这种脑残设定呢?我用了这么多年的office,从来没遇到过这种事,昨天之前我甚至不知道原来还有个这样的设置。把那个勾去掉以后,还有不少公式的地方显示错误,点击那些公式后发现,在我的电脑上没有表示数组公式的地方,在她的电脑上居然默认成了数组公式,那些东西根本不是数组变成了数组,当然会出状况。所以解决办法也很简单,重新把那个公式确定变回普通公式,所有数据都回来了。为什么在不同的电脑上普通公式会自动变成数组公式呢?这个问题之前我也曾经遇到过,但没有让我的公式全部失效,所以我也就没有理会了,但我发现在某些函数前会多了个@的标志,至于那个东西是干什么的,我不知道。

带着这个问题,我立马去搜索。先是去百度,接着是去必应,最后我还是在Google找到了答案12。原来在Microsoft 365里,默认把所有公式都认为是数组公式,虽然没有很明确地标注出来。不是所有函数都会被误解,但一些包含相对变量的函数就会出现这种毛病,比如说公式里大量使用的indirect。这些公式在数组与非数组里理解是不一样的。当我的搭档在她电脑上把数组公式转为普通公式以后,在我的电脑上,发现数组公式前面多了个@,而这个东西。就是为了让老office兼容,在365里面有没有@,效果完全一致,但在老office里面,多了个@,就说明这个不是数组公式。

我不知道为什么office的进化经常会在一些相对引用与绝对引用里纠缠不清,之前有数据透视表的数据源变成绝对引用,搞死所有人。现在又有偷偷地把公式默认为数组公式。让老版本的软件看到一大片数据错误。他们在这个默默改变的的时候,其实完全可以推荐用户另存为别的Excel格式,通过转换格式把公式修正为老版本可以理解。

这个默认数组公式的问题我没见过中文解释,是不是因为谁用Microsoft 365中文版的人还不够多呢?

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