分类目录归档:学习

关于老马识途的思考

马克思主义哲学讲到直接经验和间接经验是人们获得知识的两条途径,两者是“源”与“流”的关系。很多人学到的知识都是间接经验,是从别人直接经验的基础上获取的。一个人的时间、经历有限,不可能所有东西都要去直接实践以获得知识,很多时候,还是要学习别人,从别人那里获得有用的信息。管仲和隰朋都是非常聪明的人,但是迷路了需要让老马认路,找不见水源了需要通过蚂蚁寻找水源,可见遇到不懂的问题,一定要向别人学习。

【典故】管仲、隰朋跟随齐桓公去讨伐孤竹国,春季出征,冬季返回,迷失了道路。管仲说:“老马的才智可以利用。”就放开老马前行,大家跟随在后,于是找到了路。走到山里没有水喝,隰朋说:“蚂蚁冬天住在山的南面,夏天住在山的北面。地上蚁封有一寸高的话,地下八尺深的地方就会有水。”于是掘地,结果找到了水。凭管仲的智慧和隰朋的聪明,碰到他们不知道的,不惜向老马和蚂蚁学习;现在的人不知道用他们的愚蠢之心去向圣人的智慧学习,不是失误了吗?

 

EXCEL条件判断函数IF IFERROR IFNA学习

EXCEL中经常用到条件判断的功能,例如不同的情况显示不同的值、计算出错如何显示、查询为空时如何显示等场景。EXCEL条件判断的函数有三个IF、IFERROR、IFNA,功能十分强大,下面系统地学习这些功能。

IF,if是如果的意思,能够根据不同的条件显示不同的数值,用法是IF(条件,条件为真是显示的值,条件为假时显示的值),举例如果A1的数值大于等于60就显示及格,否则显示不及格。
=IF(A1>=60,”及格”,”不及格”)

IFERROR,EXCEL在数值计算的时候,经常会遇到计算错误的情况,比如计算增速时去年的基数为0,这是结果会显示#DIV/0!,严重影响美观。IFERROR的作用是将这些错误替换成要显示的值,IFERROR用法是IFERROR(显示的值,如果结果为错时显示的值)。举例计算增速时,如果结果正常则显示增速,如果出错则显示0。
=IFERROR(B1/A1-1,0)

IFNA,使用VLOOKUP查询的时候,经常出现查不着的情况,这时系统就会显示#N/A,这样即影响美观,又无法完成汇总计算。类似IFERROR功能的函数是IFNA,能将#N/A显示成需要的值。用法与IFERROR一样,IFNA(显示的值,如果结果为空时显示的值)。举例当VLOOKUP查询没有结果时,显示空。
=IFNA(vlookup(,,,,),””)

关于子圉推荐孔子的思考

相传晋平公在位时,平公让祁黄羊推举一位南阳县令,祁黄羊却推举了仇人解狐。平公又请祁黄羊推荐一位军中尉,祁黄羊推荐了自己的儿子祁午。结果解狐和祁午工作都干得不错,祁黄羊也由此成了千古以来内举不避亲,外举不避仇的典范。

举贤荐能是一件复杂的事情,即关系到以后推荐对象能不能做好工作,也关系到自己的切身利益。像祁黄羊那样完全出于公心,需要有很高的觉悟,更多地情况下,还是多多少少考虑自身利益的。《韩非子·说林上》中讲到了子圉推荐孔子的故事,最终因为孔子太优秀了,怕推荐后遮住了自己的光芒,而放弃推荐。

【原文】子圉见孔子于商太宰。孔子出,子圉入,请问客。太宰曰:”吾已见孔子,则视子犹蚤虱之细者也。吾今见之于君。”子圉恐孔子贵于君也,因谓太宰曰:”君已见孔子,亦将视子犹蚤虱也。”太宰因弗复见也。

【翻译】子圉把孔子引见给宋国太宰。孔子走后,子圉进来,询问太宰对孔子的看法。太宰说:“我见过孔子之后,再看你就像渺小的跳蚤虱子一样了。我现在就把他引见给君主。”子圉怕孔子被君主看重,因而告诉太宰说:“君主见过孔子后,也会把你看作如同跳蚤虱子一般了。”于是太宰不再向宋君引见孔子。

关于甘茂和孟卯谈论选择官职的思考

《韩非子·说林上》讲了一个故事,是关于甘茂选择官职的事情,选择自己擅长熟悉的工作,还是选择其他的,是一个值得思考的问题。按照韩非子的理论,一个职位只能由一个人担任,一个人也不能兼任其他职务,这样才能保证刑名相符,充分发挥考核的作用,不会有扯皮推诿。韩非子是站在君主的角度看问题的,与下面的人立场不一样,如果从大臣的角度看问题,就得反着看。对于大臣来说,兼职能管得多,知道得多,权利也大。

【原文】秦武王令甘茂择所欲为于仆与行事,孟卯曰:”公不如为仆。公所长者使也。公虽为仆,王犹使之于公也。公佩仆玺而为行事,是兼官也。”
【翻译】秦武王叫甘茂在仆官与行事官中选择一种自己想要做的官职。孟卯说:“您不如做仆官。您的特长是做随从。您即使做了 ,君主仍会把使臣的事务交给您。您佩带着仆官的印信,又做着行事官的事情,这是身兼二职啊!”

秦武王叫甘茂在仆官与行事官中选择一种自己想要做的官职,仆官就是君主身边的侍从,没有实权,但是离君主近,容易得到恩宠;行事官掌管具体事务,有实权,但是离君主远,可以说两个职务各有优缺点。

甘茂擅长的是做使臣(行事官),如果选择行事官是跟甘茂专业对口的,但是孟卯劝说他选择仆官,因为君主知道甘茂擅长做使臣,即使担任仆官的职务,以后需要出使了,还是让他去。这样甘茂就同时拥有了两个官职,掌握更大的权利,即离君主近,又有掌握实权的差事。

windows系统C盘满了如何扩容

电脑一直使用的是win7系统,最近遇到了一个问题,C盘满了,无论打开什么应用,甚至使用word或excel都会提示磁盘满了,要清理空间。不知合适windows系统占用的空间越来越大了,记得第一台笔记本C盘分区只有10G,使用xp一点问题都没有,现在win7系统,C盘分配40G都不够用了。

实在没有什么软件可以卸载了,于是想到了对C盘扩容。第一次尝试,用系统自带的磁盘管理器,计划将D盘删除分区,然后分配给C盘,但是尝试失败,在给C盘扩展的时候,选项是灰色的。第二次尝试,使用第三方分区工具,经过搜索了解到一款分区工具“奥梅分区助手”,首先将D盘调整分区,缩小;然后调整C盘的分区,扩大到刚才D盘缩小的空间。

通过“奥梅分区助手”成功进行了分区,执行之后重启,C盘扩展到了100G,再也不用对C盘满了发愁了。

CSV双字符分隔符数据导入数据库的尝试

CSV是逗号分隔符文件,各列数据使用逗号作为分隔符,通用性较强,无论是记事本、EXCEL、各种文本处理工具或者数据库都能处理。曾经遇到过这样的问题,将某CSV文件数据导入数据库处理,该CSV文件分隔符不是逗号,而是两个字符||,为了解决这个问题,进行了一些尝试,成功导入了数据库。现对这些方法进行记录,以供以后使用。

一、该CSV原始数据的特点

接触到的CSV数据是从其他数据库导出的,各列使用双字符||作为分隔符,第一行为标题,但是导出设置应该有问题,例如空列没有任何标记,也就是说存在||||两次分隔符相连的情况,不太规范。

因此最开始尝试用EXCEL打开数据,先看看整体情况时,如果可行的话,将该EXCEL数据直接导入数据库,此方法尝试失败。EXCEL数据分列时有选项“连续分隔符作为单个处理”,由于数据中空列没有任何标记,将连续分隔符作为单个处理显然行不通,会把连续4个、6个、8个等等视为一个。

二、将双分隔符替换成单字符

之后,尝试了一种新方法,将双字符整体替换成单字符,这样直接导入数据库就不存在问题了。计划将分隔符替换成逗号,首先在整个CSV文件中查询不存在逗号,替换掉之后,数据完全变成了逗号分隔符文件,该方法成功。

三、先创建表结构再导入

数据库使用的是MariaDb,客户端是系统自带的HeidiSql,导入CSV数据时,能自动识别标题和数据。其实,在尝试上面的方法时,想过直接导入数据库,分隔符输入||,但是不知为何一直出错。如果使用上面的方法,将数据变成逗号分隔符文件,再直接导入数据库,不存在什么问题。

但是,如果数据量比较大,无法替换成常见的单字符时,如何解决?所以还是要想一个终极解决办法。经过尝试,先在数据库中建立表结构,然后导入CSV数据,并将分隔符输入||,成功导入。注意,前面尝试过直接导入CSV,自动识别标题,失败了。这次能成功,是因为提前建立了表结构。

一次较大规模数据处理的经历 EXCEL版

前一段时间写了一篇文章《一次较大规模数据处理的经历 PYTHON版》,尝试使用PYTHON和PANDAS解决较大规模数据的计算问题,近百万条数据如果使用EXCEL处理,速度比较慢,而且对于复杂的计算,还需要借助VBA程序,因此上次使用了PYTHON。但是EXCEL的优点不容忽视,比如简单直观,能够快速筛选、汇总等等,最终生成报表还得使用EXCEL,此次打算用EXCEL重新处理一遍数据,并寻找合适的方法避免EXCEL的缺点,使得EXCEL能够快速地处理较大规模的数据。

接之前的问题,数据规模在百万条,CSV格式,需要对数据进行计算,根据前三列数据的不同,公式分成四组,均类似于电费的阶梯电价计算方案,只不过具体标准不一样,【问题一】需要计算最终值;【问题二】后面还提出了一种探索的算法,即计算公式增加“次数”的条件,每一次的计算公式又不一样。

【问题一】针对该问题,最初使用if嵌套公式,发现嵌套起来复杂,而且复制公式时,机器非常卡,即使关闭了自动计算亦是如此。于是决定使用VBA编写程序解决,分为两部分:一是分段计算函数;二是调用的主函数。解决问题的思路是通过VBA计算数据,此时表中的数据结果是静态的,没有任何公式,因此避免了卡顿的问题。 继续阅读

一次较大规模数据处理的经历 PYTHON版

前一段时间遇到了一次数据处理的问题,原始数据是CSV数据(逗号分隔),近百万条,要根据不同的公式对每一条进行计算。在使用EXCEL进行计算时,只要一动就会重新计算,而且时常出现无响应的状态,有好几次强行关闭导致重头再来。

考虑到数据量大,使用EXCEL计算可能不适合,才导致不停地死机。最初打算使用数据库来计算,没有数据量的限制,在查询和更新的时候速度很快。但是每一行计算的时候,对于结果不是简单地赋值,而是分段乘以比例再累加计算(类似于电费阶梯计算),思来想去,不知道如何使用SQL语句实现,有可能需要很多个不同的语句。与其这么麻烦,不如写程序来实现,于是打算使用现在很流行的PYTHON语言来处理,一是简单易学,二是有丰富的模块,说不定就有解决该问题的方法。

经过了解,有一个模块PANDAS能够方便的处理CSV数据,而且非常灵活,打算试一试,最终成功解决了问题,现将过程记录以便以后再使用。 继续阅读

用海康威视H99部署家用NAS

熟悉的网盘有百度、天翼云等,百度容量大,但是限制下载速度;天翼速度快,但是个人使用的容量有限。使用网盘临时存储一些东西可以,但是如果长期存储,还是存放本地硬盘比较靠谱。本地存放能够避免网盘资料丢失,内容被和谐,也不用担心哪天网盘要关闭,还得没日没夜得从网盘下载文件到本地。

当然,网盘也不是没有优点,比如容量大价格便宜,能随时随地访问,有没有兼顾网盘和本地存储的有点呢?最近听到了一种解决方案,就是家用NAS,NAS是独立的网络存储设备,可以随时通过网络访问。既然是家用,那么不需要多张硬盘、RAID、电源等专用设备,建立一个复杂的NAS系统,简简单单一张硬盘、一个NAS设备,保持开机在线,能够在本地或者网络进行访问就行了。

经过网络搜索,找到了一个价格实惠,功能够用的NAS设备海康威视H99,一回家后就迫不及待得安装起来了。该设备类似一个硬盘盒,插入硬盘,接上电源和网线就能正常使用,经过配置,可以通过手机、电视、电脑在本地或者外面访问,当然WIFI或者移动网络都可以。经过测试,速度还行,在家使用WIFI速度达到了10M/s。经过几个月的使用,感觉物超所值。

PYTHON学习之sorted函数

PYTHON是一种非常灵活的语言,可以用来快速开发,语言简洁,而且功能强大,最近在处理数据时遇到了排序的问题,使用了SORTED函数,不得不感叹PYTHON的强大。

问题描述:遍历输出一个字典数据,输出前按照KEY的第9至12位数据进行排序。

第一步,认识sorted函数

Sorted可以对所有的可迭代对象进行排序,在PYTHON中,list、tuple、set、dict等数据结构都是可迭代的对象,因此都可以使用sorted函数进行排序,尤其是要进行遍历输出的时候,非常方便。sorted的语法是:

sorted(iterable, key=None, reverse=False)

iterable是可迭代的对象,key是排序的关键字,reverse是排序的顺序,默认是升序

第二步,认识lambda函数

lambda是匿名函数,不用单独定义,使用起来方便,正常的函数必须先定义,再使用。而lambda只用简单定义,即可实现一个函数的功能。

常规函数的定义和使用:

def sum(x,y):
    return x+y

result=sum(5,3)

使用lambda定义匿名函数:

sumFunc=lambda x,y:x+y
result=sumFunc(5,3)

第三步,解决问题

所要排序的数据时一个字典,排序的依据是KEY中的第9至12位数据,然后输出字典里面的数据。

for item in sorted(myDict,key=lambda item:item[9:12])
    print(item,myDict[item])