分类目录归档:技术

释放 Windows 系统盘空间

最近使用了一阵子 Windows 系统的电脑,系统版本是 Windows 10,买来电脑时电脑本身已经分好区,共两个盘,系统盘大约 80G 这么大,按照以往的使用习惯,一般将软件安装在非系统盘,正常使用应该没啥问题。随着使用时间的增加,有一天系统提示系统盘空间不足,我心想这 80G 这么快就满了?一看还真是,只剩 15G 多点的空余空间了,以往常常使用 360 安全卫士提供的功能来清理空间,图个方便,效果也不错,就是它会经常不经你同意就给你安装一些他自家的其他产品,这有点讨厌,最近凑巧又在我不留意下给我装了他家的浏览器,我直接就给卸载了,这下就只能自己动手解决了。

大概浏览了一下系统盘各个目录所占空间,整理了一下思路,除了系统本身之外,占用的空间大概分为两部分,其一是自己安装应用程序的缓存和未根据指定路径进行存储的内容;其二是系统自身的保留文件和临时文件。为简便,把它称为应用缓存和系统自身,接下来我就从这两方面着手,看看是否能释放一些空间。

– 应用缓存 –

应用缓存大多在「用户」目录中,在目录中找到当前用户为名的目录「类似 C:\Users\yourname」,进入后就能看到里面的诸多文件及文件夹,如下图所示。要想看到所有的文件和目录,应该将默认设置隐藏的项目也显示出来,通过切换到「查看」页(图中 1 所示),勾选「隐藏的项目」即可。

在图中我一共标注了 6 个地方,其实有关应用缓存的是 2,3,4,5 这 4 个标注,0 是我自己以前的使用习惯,在系统自身那块说,1 在上面说了。

先来说说 5 ,这里简单说一下,主要是 Apple 家的产品 iCloud 和微软自家的 OneDrive 产品,这俩产品默认的存储地方在系统盘,其中微软自家的 OneDrive 可以通过环境变量设置改变其路径,然后将其剪切到修改的路径就行了「微软官方也有方法,在其官方网站搜索『更改 OneDrive 文件夹位置』」。Apple 家的没找到有设置的地方,于是我将其关闭后硬生生的剪切到其他盘(D盘),然后在用户目录下建了个快捷方式指向我剪切到的路径,做完后发现没啥问题。这两项其实并没有占用多少空间,不把数据放到系统盘是习惯使然。大概看了看,发现占据空间的主要是 Android Studio 这个 IDE 相关的一些工具等缓存占据了不小的空间,具体就是 标注中的 2,3 部分,分别是 .Android、.AndroidStudio3.6 和 .gradle 这三个目录,其中 .Android 和 .gradle 占的空间加起来 10G + ,一个是模拟器相关文件,一个是构建工具相关文件,不知道这种安装策略是基于什么考虑的「毕竟这是 Windows 系统而非泛 Unix 系统」,释放空间只能想办法把这三个目录移动到 D 盘跟 Android Studio 这个 IDE 在一起。

我采用的方法是分别找到配置文件,修改为新的路径后直接剪切过去,具体来说:

.Android 在其目录下找到 avd 目录,修改其中的 ini 文件指向新的位置,然后将 .Android 整个目录剪切过去就行了;

.AndroidStudio3.6 目录,在其中的大概看了一下文件,发现这里面基本上都是 Android Studio 这个 IDE 的一些配置, 将 .AndroidStudio3.6 目录剪切到新的地方,在 Android Studio(IDE 所在的目录)目录寻找配置文件,在 bin 目录中的 idea.properties 文件就是其配置文件,找到 idea.config.path 和 idea.system.path 取消前面的注释符,修改为剪切到的新地址即可。

.gradle 这个可以先将这个目录复制到新位置,然后在 Android Studio 中通过菜单(File->Settings->Build,Execution,Deployment)将 Gradle user home 设定到新位置,然后将老目录删除即可。

这样清理完毕后,基本上系统盘的空间一下就释放了 10G 多,基本上我的问题就解决了。

在标注 4 的目录中有三个目录(Local、LocalLow、Roaming),这三个目录中有很多应用的缓存文件或者配置文件,其中尤以 Local 目录占空间大一些,但这个最好不要动,这个目录里可以安全删除的就是临时文件目录(Temp),其他的要视自己对于安装软件的熟悉程度,我草草的看了一遍,把两个我独立安装的软件迁到了数据盘,两个加起来不到 400M 这个样子,通过这项操作也说明了如果对其中的软件比较熟悉,也是可以迁移到其他地方的。

– 系统自身 –

每当开始使用 Windows 系统时或者刚装完系统后,我首先干的第一件事就是将上图中标注为 0 的那部分内容转移到数据盘中,在这台电脑上就是转移到 D 盘。

以文档举例,在文档上单击鼠标右键,在弹出的菜单中选择「属性」菜单项,在弹出的窗体(如下图)中选择「位置」选项,然后在中间位置可以通过「移动」按钮完成转移,标注 0 中的其他项均可采用这个方法进行转移。

转移完后开始装一些使用的软件,除了一些专业用途的,通常会安装微信和QQ,默认情况下微信和QQ的自动缓存文件会装在标注为 0 的文档内,默认情况下是在 C:\Users\yourname\My Documents 这个目录下,因为已经将文档移动到数据盘,所以微信和QQ的缓存会随着安装也就到数据盘了,再说QQ还可以在安装的时候指定将其数据存放于何处。

经过这么多年的发展,相信 Windows 应该有了一些新的对于存储的管理功能,打开存储「开始-设置-系统-存储」,跟以前比多了不少的功能,对于临时文件就可以通过这里来进行删除,还可以进行其他跟存储有关的管理,比如通过「更改新内容保存位置」直接提供我在上面标注的 0 那部分内容保存位置的修改。

其中有个名字起的挺奇怪叫「配置存储感知或立即运行」,这里会有计划的对存储进行一些清理。如果系统是刚好赶上那阵子免费从 Win7 升级到 Win 10 的,同样可以在这里面删除以前版本的 Windows,这个也会释放不少空间,除了存储提供的功能之外,使用磁盘清理功能也可以释放磁盘空间,在本地磁盘分区上单击鼠标右键,在弹出的菜单中选择「属性」菜单项,在中间偏右有个按钮「磁盘清理」鼠标左键单击后就进入磁盘清理界面,如下图所示,可在「要删除的文件」列表中选择要删除的文件,选择完毕后鼠标左键单击「清理系统文件」按钮即可释放空间。

另外还记得有两个地方能够释放一下,比如关闭 Windows 的休眠文件。Windows 10 引入了保留的存储,这个在使用其自身清理功能时有提示,这个也是可以禁用的,但这些个人不建议这么做,如果想尝试一番,按如下操作。

Windows 休眠文件

休眠文件会占据一定的空间,而且是可以关闭的,管理员身份运行 cmd ,运行  powercfg -h off  命令,重启电脑。

Windows 保留的存储

打开注册表如下位置:

MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/ReserveManager

将其中的 ShippedWithReserves 设置为 0.

其实把 Android Studio 相关的缓存文件迁移走后就解决了我的问题,很久不用 Windows 了,随着使用也逐渐开始熟悉了,这个版本的总体体验还是非常不错的,上一个有这种感觉的还是 XP。随着时间的累积,系统自身带的病毒安全防护已足够好用了,配合着现在的硬件,跑起来也是挺爽的。


记录两个问题

最后记录两个使用中的问题,没有找到太好的解决办法,在万能的互联网上查了一下,提供的解决办法都不太理想,静待升级。

1. 偶尔情况下「资源管理器」一直在占用 CPU;

2. 居然不能设定中英文切换默认键「Ctrl+空格」,目前我用安装英语语言来暂时解决这个问题。

本文首发于我的微信公众账号「时间易逝」,欢迎订阅我的微信公众账号
在微信中搜索「doevents」或用微信扫描页面右上方二维码可订阅我的微信公众账号

写给一般人的手机使用概要

身边周围的亲朋好友中,基本上人手一部智能手机,算是相当普及了,在使用上也比较顺畅,买来后基本都不用看说明书就会使用了,既然人人都会用,哪为什么还要写一篇手机使用概要呢?

这事得从五一小长假说起,妹妹一家来河南过小长假,在去少林寺一游的时候,妹夫的手机在藏经阁附近被偷了。手机被偷或者丢了的情况下,找回来的概率那就比较小了,而在很多时候,相比手机可能手机中的数据会更重要一些,尽可能保证安全和找回数据可能是我们所需要的。

在发现被偷后进行常规处理过程中「报案、各种挂失……」,我简单的了解了一下手机大概的设置与使用情况,发现数据也基本找回无望,而且中间的各种挂失也不太顺畅,随后我简单向周边朋友了解了一下针对手机设置与使用的情况,发现可能需要一份手机使用概要,以尽量减少数据损失和能够降低中间环节的繁琐,我先抛砖引玉,把我认为对此比较有益的方法做个总结,供大家参考。如果大家有好的方法,欢迎留言以让更多的朋友收益。

1,现在非常多的应用都需要实名制,针对我们频繁使用的 App 或服务,在实名过程中填写验证手机这块,我通常都是采用交叉手机号验证来进行,也就是一个手机上的 App 或服务用另一个手机的手机号来完成验证。对于没有两个手机的人可以使用家人或另一半的手机来完成验证。你说自己单身怎么办?单身难道不应该对自己好一点,给自己多买一部手机吗?当然不多买一个手机,多办一个手机号也是可以的。

这样在手机被偷或丢失时,处理各种挂失就会相对顺畅一些,毕竟现在的各种挂失、锁定帐号等等都需要短信验证,而又要第一时间挂失手机卡,这让人有点尴尬。

2,如果手机有查找手机功能,请一定要打开这个功能,一般情况下打开查找手机功能需要开启手机对应厂商的云服务功能,也就是需要注册一个手机对应厂家的云服务帐号,我发现不少人觉得打开云服务功能感觉不安全或者感觉没啥用什么的就没有打开这个功能,请一定要打开这个功能。

你可以不同步数据「其实厂家默认的空间大小大多是不够同步数据的,要花钱升级空间才行」,开启后就可以在手机丢失的时候看看手机在哪个位置「尽管大多数时间也就是看看」,开启这功能更多的时候是将手机锁定,并将手机上的数据清除,如下图红色方框的标注功能(左 iPhone,右华为),提高别人再次使用手机的困难度。

我个人的使用习惯是会花一些钱,升级一下空间,把内容做一些同步,这样可以最大程度上找回数据。通常我会碰到很多人在谈及数据安全的时候,都会说把数据放到服务提供商「这里指手机厂商」这里非常不安全,在某种程度上其实这种说法是错的,放到专门提供这种服务的厂家要比自己放着在很多时候更安全,简单来讲从硬件设置、灾备冗余、维保上他们会更专业,而且对于数据的保护也比自己有更多的经验和投入,要不怎么要收钱呢?所以如果可以,尽量还是升级一下云服务空间,把一些日常中手机的数据「如照片等」有选择的做个同步,这样碰到意外也能尽可能的找回数据。

3,手机上的传感器越来越多了,比如现在大部分的智能手机都有指纹识别,有些也有人脸识别等等,像类似这样的应用在手机上的新技术所提供的功能,尽可能的打开使用,一方面这会提高效率,另一方面带有生物识别会更安全一些,相比如果是图案解锁,那么很可能会在屏幕上留下手印路径,有时候用这个路径就很容易打开手机。

一般开启这方面的功能后,就同时可以在诸如微信、各个银行 App 中同步使用,这既提高了使用中登录验证环节的效率,又增强了安全,所以如果手机上有什么新技术采用了,请第一时间开启并尝试使用。

4, 最后,除了按照上述设置后使用手机之外,再说说常用软件的保护,主要说说全民性的,比如微信、QQ和支付宝。微信只需要另找一台手机登录一下就会顶掉原来的微信即可。支付宝需要找个地方「手机或电脑」登录一下,修改密码即可。对于 QQ 除了登录修改密码,锁定等还可以安装一个叫「QQ 安全中心」的 App,可以用它来第一时间维护 QQ 的安全。还有一些游戏类的产品会提供一些基于 OTP「One Time Password」 令牌类的 App 或相关硬件 「比如网易的将军令」,那么也可以在出现问题时第一时间使用冻结帐号。

对于一般的人来说,在使用手机中被盗或丢失时,这是我能想到的能最大程度提高安全、降低各种挂失繁琐、挽回数据的方法,在进行设置时也相对简单,希望对你会有所帮助。

如果你有更好的方法,请给我留言以便让更多的人知道。

本文首发于我的微信公众账号「时间易逝」,欢迎订阅我的微信公众账号
在微信中搜索「doevents」或用微信扫描页面右上方二维码可订阅我的微信公众账号

初识 Python(二):字符串

继续学习 Python 的基础。字符串是编程语言中经常处理的数据类型,Python 中的字符串可以使用单引号作为开始和结束的起止符表示,也可以使用双引号作为开始和结束的起止符表示,不少其他的编程语言也采用这样的方式来表示字符串。

对于一个字符串中本来就包含有单引号时,使用双引号会方便一些,不用使用转义符,其他两者并无不同,使用主要看个人喜好,我比较喜欢使用双引号。

转义符在各个编程语言中都有,反斜杠后面跟需要转义的字符,常见的需要转义的字符有单引号、双引号、制表符 「\t」、换行符 「\n」等等。

除此之外, Python 还有三引号作为字符串的起止符,三引号常用于多行字符串,三个单引号和三个双引号都可以,三引号起止符之间的字符串中的所有空格、引号、制表符和换行符都会被当作字符串的一部分。三引号也可以作为多行注释。

在字符串起始的引号前加小写字母「 r 」,将忽略该引号中字符串里所有的转义字符,也就是你引号中的字符串是什么它就是什么,同样的支持单引号、双引号、三引号。

对字符串的操作就像列表一样,可以用下标,同样也可以对字符串实行切片操作,切片操作使用「字符串[m:n]」来完成。

比较常见的字符串方法。

字符大小写转换相关的方法 upper()、lower()、isupper()、islower(),其中前两个是能够将字符串全部变成大写和全部变成小写的两个方法,需要注意的是调用该方法并不会改变原有的字符串,而是生成了新的字符串;后两个方法分别判断字符串是否全部为大写或全部为小写,返回 True 或 Flase。

isupper() 和 islower() 还有一些弟弟妹妹们:

isalpha() 如果字符串中只包含字母并且不为空,对字符串调用这个方法会返回 True 。

isalnum() 如果字符串中只包含字母和数字并且不为空,对字符串调用这个方法会返回 True 。

isdecimal() 如果字符串中只包含数字并且不为空,对字符串调用这个方法会返回 True 。

istitle() 如果字符串每个词的首字母大写后面为小写并且不为空,对字符串调用这个方法会返回 True 。

字符串的连接和拆分是字符串编程中常见的操作,Python 中的字符串拆分跟很多其他编程语言类似,都是使用split() 方法,使用 split() 可以将字符串拆分成列表。字符串连接的方法使用 join() ,这让我一下想起了 SQL 中的left join 和 right join ,对字符串使用 join() 可以连接字符串。

去除字符串前后的空格也是字符串编程中常见的,Python 中使用 strip() 、lstrip() 、 rstrip() 方法取出字符串前后的空格,strip 去除首尾空格,lstrip 去除字符串首部空格,rstrip 去除尾部空格。

Python 还提供了字符串对齐的方法,这个比较有意思,分别是用于左对齐的 ljust(),用于右对齐的 rjust() 何由居中对齐的 center()。 对齐方法有两个参数,第一个参数是对齐的长度,第二个参数是用于填充对齐中空白的字符。

还有比较字符串开头和结尾是否一致的方法,分别是 startswith() 和 endswith(),可以检查字符串的头尾是否和预期的一致。

Python 中提供了不少的字符串的方法,这门编程语言对于文本处理应该是比较强大的,再配合起第三方的模块应该比较强悍,继续学习。

相关阅读

初识 Python(一)

本文首发于我的微信公众账号「时间易逝」,欢迎订阅我的微信公众账号
在微信中搜索「doevents」或用微信扫描页面右上方二维码可订阅我的微信公众账号

初识 Python(一)

人生苦短,该学学 Python ,花时间看了看 Python 基础性的内容,做个记录。

Python 是一门解释性、面向对象、动态数据类型的高级程序设计语言。

代码块间无花括号,也没有诸如 begin…end 的开始结束分隔符,每条语句也不需要用分号作为结束,以自然换行为一条语句。同一层次的代码块用缩进来区分,简洁干净。

基础数据类型同其他程序设计语言,如整型、浮点型、字符串、布尔型。

操作符也很类似,其中 * 操作符比较有意思,除了作为乘法操作符外,在用于字符串和整型值时,这个操作符就变成了字符串复制符。

比如在命令行 >>> 后输入 China * 3 回车键后会复制 China 这个字符串 3 次,输出显示。

操作符 ** 可以用于求指数,操作符 // 用于整除。

流程控制跟其他程序设计语言差不多,if 、while 、for 这些都是有的。

用 def 关键字后跟函数名和参数完成函数的定义,比如定义一个函数 say_hello ,打印输出一行字符串。

def say_hello(name):
print('Hi, ' + name)

#调用 say_hello 函数
say_hello('Eric')

江湖中之所以有「人生苦短,我用 Python」的说法,是因为 Python 有大量的库可供使用,不必重复制造轮子,使用 import 关键字引入这些库的模块即可,好像 Java 也是这么干的 ,也有些类似 C# 的 using 。

异常处理使用 try…except 来完成。

有三个数据类型值得注意,它们分别是列表、元组、字典。

列表「list」是一个值的序列,有点类似其他程序设计语言中的数组,是一种以下标 0 开始的有序值的集合,这些有序值称为列表项。针对列表有一些操作,如以切片的方式获得子列表,增加列表项,插入列表项,删除列表项,排序等。可以视列表为一个「可变的」数据类型。列表使用方括号 []定义。

元组「tuple」跟列表很类似,所不同的是元组用圆括号()定义,另外比较重要的是元组初始化后是不可改变的。

字典「dict」也是一种多值的集合,与列表相比,字典的索引「下标」可以使用多种不同的数据类型,在字典中索引「下标」被称为键,字典是一种键值对的多值集合数据类型。另外,字典是非有序的。字典使用花括号{}定义。

以上是对 Python 的一些初步认识,学习一门程序设计语言唯一的方法就是将这门程序设计语言在实际项目中投入使用,通过使用中的刻意练习获得提高。把一门程序设计语言学到用它可以进行专职工作可能需要不短的时间,但是学会它并简单的写一点能够替代重复性工作的代码还是相对较容易的。

本文首发于我的微信公众账号「时间易逝」,欢迎订阅我的微信公众账号
在微信中搜索「doevents」或用微信扫描页面右上方二维码可订阅我的微信公众账号

怎样提高开发速度

软件产品想在市场上获得竞争力,开发速度是克敌制胜的重要因素之一。基于此,在产品开发的过程中,速度是每个团队都会重点关注的指标之一,每个团队都在极力想办法提升产品开发的速度,以便在市场的赛道上奔跑中领先那么一半个身位。从我自己的角度来看,我会尝试关注以下 6 方面的工作,这可能会对团队提高开发速度带来一些帮助。

及时清理技术债务,技术债务对团队生产率的影响是非常大的。技术债务很容易产生,产生后往往又不是一个能够快速修正的工作,当技术债务积累过多时,常常会花费数月乃至数年来偿还。避免产生技术债务需要优先考虑代码质量,实际中很多团队为追求开发速度往往并不注重代码的质量,或许开始能够在赛道上领先,但在整个赛程中,随着积累的技术债务,开发速度会越来越慢,直到花费巨大的成本偿还这些债务,这个阶段往往也是模仿者/追随者弯道超车的好时机。一开始就保持时时清理技术债务从整体是会提高开发速度的,毕竟开发是伴随着整个产品的生命周期而时刻在进行的一项工作。

技术债务并不是那么容易清理,依赖于技能水平与经验,但总可以从最简单的开始。比如,当发现有重复性代码的时候,可能就产生了技术债务,对这些重复的代码进行重构,既避免了技术债务的生成,又提高了自己的技能。伴随着勤快处理问题和系统演进中的即时重构除了能够降低技术债务的累积,也是提高个人竞争力的一条道路。

提高客户参与度,开发人员往往不具备客户领域内的知识,碰到需要客户解答的领域内问题时,要么等待,要么猜测,这么一来一往之中,会拖延开发的速度。提高客户参与度,有能够随时回答开发人员问题的客户,无疑会提高开发速度。

让客户参与进来往往并不那么容易,在这方面往常中采取的措施是引入行业领域内的专家,或者把整个团队进驻到客户所在的场地,通过这种方式来提高客户参与度往往会增加一定的成本,但相比缺乏领域知识造成的开发效率低下和不专业性无疑是值得的。另外一种做法是用专人往复于客户与团队之间传递这些领域内的知识,效果取决于这个专人横向的认知广度和纵向认知的深度,在以前可能由项目经理承担这个角色,现在更多会设置产品经理岗位。

精力充沛的工作,疲倦会带来成本高昂的错误,同时疲倦也会让人难以全力以赴地工作,长时间的加班是极不可取的。短暂的透支一下精力是可能的,长期透支则代表应该寻找问题的根源了。试试在单位时间的使用上投入更多的关注,这样或许会更好一些。加班普遍的现象有一部分原因是实际上投入工作的时间并没有那么长,拉长的时间线在补充了实际工作时间的同时很容易让人精力不济。

减少对开发人员的干扰,尽量将非开发的工作交给其他能完成的人来完成,减少不必要的会议,在产品开发进行中时,跟产品开发无关的事交由另外的人处理,比如行政事务类的事由专门的人负责。另一方面的干扰来自自我,面对众多的干扰源,要求我们自律一些是重要的,这方面一方面需要团队的文化制度塑造个人,另一方面选择合适的人可能是更合适的。

尽量提供优质的资源,一台电脑在手,天下我有。很大程度上开发人员的主要资源需求就是设备,不要让开发人员抱怨电脑慢、内存不足…,给他们提供优质的资源。在这些资源上省钱是毫无意义的。这方面我们可以简单的算笔账,如果每天因为设备耗去每个开发人员半小时,算算一年损耗的时间和因损耗减少的产出。

尽量谨慎地增加开发人员,除非团队人员严重不足,而且有经验的丰富员工可随时拿来用,否则开发人员的增加并不会带来速度的提升,项目往往还会进一步延期。假如开发一个产品需要 10 人月,那么并不能增加到 20 个人就能半月完成,这应该是产品开发中的常识。

将这些方法应用于开发过程中,随着时间推进,开发速度应该会有显著提高,从而使团队具有「小步快跑,试错迭代」的能力。当然有一个清晰的要达成的目标是最根本的,这就好比打仗,当团队知道为什么战斗时,具备这种能力的团队,往往每次迭代都会交付一个好结果。

本文首发于我的微信公众账号「时间易逝」,欢迎订阅我的微信公众账号
在微信中搜索「doevents」或用微信扫描页面右上方二维码可订阅我的微信公众账号