【Ok周志】开源代码链接地址:https://github.com/Okroie/OkZZ.git

前段时间看了一本书名叫《大数据平台基础架构指南》作者是蘑菇街大数据平台负责人, 他在书中这样说到:只有代码的开源那叫晒代码,真正的开源还要开放思想。所以这篇文章会说到三点内容,一是开发初衷,二是开发流程,三是开发感悟

一:开发初衷

大学实习期间每周会写一篇200字左右的周志,有时候因为学习或其它事情的原因没有时间写。当时想如果有一个程序可以自动编写,对于那些因为学习和实习工作繁忙的大学生来说就很方便了

二:开发流程

首先这是我做的第一个小规模的电脑程序,用了22天的时间

其实程序成型只用了一周多的时间,但很多事情真的没有想象的那么简单,比如每台电脑的细小差异,程序漏洞等问题

程序主要用到的技术是:Python + 网络爬虫

程序构建思路:一篇周志大致分为四个部分,分别是:标题,开头,中间内容和结尾。

其实程序第一个版本只是半自动的,也就是用户需要输入中间的部分。因为当时考虑到它的普遍兼容性,比如每个大学生的专业,工作情况等都不一样,所以不能实现完全自动化

有一天,突然想到其实中间内容,可以使用一本书或一部电影的评论或介绍,于是通过编写爬虫程序从网上批量获取到了一些指定的内容,在整理后放入程序。

整个程序由三个Python文件组成,分别是AuRe.py(程序入口文件),AuRecord.py(主文件),AuReIn.py(资源文件)

(1)首先说程序入口文件(AuRe.py):

里面定义了一个Chief类,和默认方法,runn()方法。

值得说的是:因为程序只可以免费使用三次,三次后就需要输入密钥。我当时想了一会,然后用的是比较原始的方法,那就是根据程序生成的文件夹数量来判断程序运行的次数,也就是其实每打开一次程序,电脑就会生成一个文件夹,当然后期也做了优化,具体细节就不细说了,总之你想破解也没有那么简单,哈哈

(2)然后说一下主文件(AuRecord.py):

里面定义了两个类:ZhouZhi和Day,Day类的功能是将时间转换为汉字的大写数字,因为很多人都知道“走人户”,也就是别人家请很多人吃饭,而且需要付费,他们的收款记录就是用的汉字大写数字,所以想记住它,因为确实很少见到啊!

ZhouZhi类定义了默认,xe1(),write(),main()方法。程序的整体运行逻辑我是直接写在默认方法里面的,xe1()方法是全自动模式,write()方法是半自动模式,和将输出内容以文件的形式保存在电脑上,并将其自动复制。

值得说的是:程序会根据当前时间自动推算你参加实习的天数,和周数。还会自动保存你离开程序的时间,也就是说这个程序会有一点记忆的功能,主要用到了pickle库,它能以文件形式保存数据。还有就是程序自带的音乐打包过程也比较棘手,因为Python打包是不能直接加入媒体文件的,所以其实是先将音频文件通过base64库(Base64是一种基于64个可打印字符来表示二进制数据的方法),将媒体文件压缩成Base64格式的字符放入AuReIn.py(资源文件)中,在程序第一次启动的时候,自动将Base64格式的字符转换为媒体文件,保存在电脑里。将文本自动复制用的pyperclip库,播放音频用的pygame库,退出程序用的是sys库,rich库让界面有了颜色显示。

(3)最后再说一下资源文件(AuReIn.py)

里面存放了许多数据,比如名人名言等,通过外部的随机抽取调用

三:开发感悟

学习技能就要学有所用,编程也是一样。通过制作【Ok周志】这个程序,让我再一次系统地巩固了这门编程语言,这是我第一次做,对于编程大神来说,或许这就很So easy,但我相信大神也是从菜鸟阶段,努力思考加实践和日积月累而成为的,值得敬佩。再说一下之前给学校做那个游戏,第一个版本的背景音乐是《Final Song》,其实当时正好在学习Python的后端框架Django,然后有一天午饭后一位同学就问我会不会做类似的游戏,我其实不怎么会,但我直接说会。遇到不会的问题,一般是先百度,发现那个游戏已经开源了,然后再看b站发现居然还有教学视频,我现在感觉这真的是巧合吗?还是真的努力就会有回报。其实本质上还是相信自己的力量。你相信你可以完成你就可以完成。当时那个游戏的难点其实只有两个一是找对应图片的位置,二是链接跳转的问题。也正好磊哥把它认识的会JS的朋友几乎都推荐给我了,其中李涛先生帮助我解决了那个问题,因为QQ和微信是屏蔽了JS直接跳转网址的功能,于是我们使用的是一个弹窗。还有那个游戏虽然开源了,但是内置了很多广告,所以也将这些细节优化了一下。也就是说其实第一个版本的游戏涉及到的技术并不多,但是放假后我们又对游戏进行了优化升级,比如会有游戏操作提示,在开始页面点击屏幕可以有爱国等字幕显示,进入游戏后的下方还会有音乐播放功能。其实这些对专业的JS和HTML&CSS的人来说这并不难,但我的大学课程并未开设JS这门编程语言课程,所以游戏的整个开发对我来说还是有一点挑战,在这之前专门花时间去了解了一下这门语言,总的来说它变化挺大的。其实也没有开设Python这门课程,刚上大学我都不怎么了解编程,但给自己定了一些小目标其中就包括掌握Python这门编程语言,虽然这并不是一个非常明智的选择,因为有句话叫做:底层永不过时,技术一直在变。也就是说入门先学C语言是不错的选择。但反过来想一下,刚入门就直接接触比较枯燥的语言,有可能会出现“从入门到放弃”,哈哈,言归正传,不管是先难后易,还是先易后难其实都有好处,主要是看个人,因为编程语言的核心几乎都差不多,比如现在就感觉Java的打印不能跟逗号必须用加号连接,和每条语句后面跟的分号这些操作都很不人性化。但如果一开始你就精通了C再去学习C++,Java,Python等语言,你就会觉得,哇,太简单了。当然世界不存在完美,编程语言也是一样,每个语言都有适合它的领域。所以到底学什么还是要取决于你想从事什么职业。后面,还有位朋友问我还想做一个关于医疗方面的程序不,我说算了,暂时先做目前最重要的事情。因为我只要做了就停不下来了,比如在做这个程序的时候,感觉时间飞逝啊,所以真的要多锻炼,身体才是最重要的。仔细想了想一位校长说的话真的很有道理,你不只要模仿,还要去创造。确实啊,编程再厉害也只是一个“工具”,大神那就是一个“好工具”。所以我一直坚信,不想当老板的程序员不是好程序员。哈哈,言归正传,或许社会就是这样运转的,每个人都有自己的责任和义务,正因为有无数个不一样的角色才构成了地球这个大家庭。
再说一下,为什么常怀感恩之心的人通常都比较优秀,我想是因为他们知道一个人的力量实在太微弱了,改变世界也是先改变自己,家庭,国家。总之,需要感恩的人太多了,前提是先让自己变得优秀。
正如我的笔名Okroie其实是英文rookie的改写,中文指新手,菜鸟的意思。我深知优秀的的人实在太多了,更何况他们还很努力。
还记得一位院长说的不要读死书,确实啊,虽然书是人类进步的阶梯,阅读就相当于是站在巨人的肩膀上思考,但书的内容会受到一些规则的限制,所以实践也很重要。也就是人们所说的经验,所谓经验就是许多人通过思考或行动后总结的一致结果,但这并不代表适用于所有人,所以适合自己的才有可能是最好的。我写这些不是为了什么才写,而是心有所感,或许不全是正确的,但都是想表达的。当然,以上仅是个人的观点。最后,再引用那本书中的一句话:
It's never wrong to do the right thing. 
做正确的事永远不会有错。

【Ok周志】开源(程序功能:自动编写周志)相关推荐

  1. python123第一周作业答案程序题_Python第一周作业--三级菜单

    循环用的多,以后再优化吧 三级菜单: 运行程序输出第一级菜单 选择一级菜单某项,输出二级菜单,同理输出三级菜单 菜单数据保存在文件中 让用户选择是否要退出 有返回上一级菜单的功能 data.txt 保 ...

  2. mastercam测试软件功能,基于UG和MasterCAM测头自动编写探测程序探讨

    原标题:基于UG和MasterCAM测头自动编写探测程序探讨 最近在研究测头探测路径的自动编程,用了UG和mastercam分别进行了测试,感觉UG入门简单,但做探测路径编写太麻烦,没有Mc直观和&q ...

  3. 【开源程序(C++)】获取bing图片并自动设置为电脑桌面背景

    众所周知,bing搜索网站首页每日会更新一张图片,张张漂亮(额,也有一些不合我口味的),特别适合用来做电脑壁纸. 我们想要将bing网站背景图片设置为电脑桌面背景的通常做法是: 上网,搜索bing 找 ...

  4. 段错误 (核心已转储)_向大厂看齐!为自己的程序增加自动转储的功能!

    如果你还不清楚什么是转储文件,不知道什么时候需要转储文件,请参考转储文件系列文章的第一篇 -- 转储文件知多少. 前言 不知道各位小伙伴有没有遇到过 微信 或者 QQ 崩溃的情况.它们在崩溃的时候都会 ...

  5. php源代码compress,Php常见开源程序gzip网页压缩功能手动关闭或开启方法大全

    GZIP是个啥玩意?啥东西哈?据度娘说,gzip是GNUzip的缩写,它是一个GNU自由软件的文件压缩程序.网站配置或启动这个东东,可以得到加速网站访问的目的,这个是一个非常实用的功能.那么,无忧主机 ...

  6. 向大厂看齐!为自己的程序增加自动转储的功能!

    如果你还不清楚什么是转储文件,不知道什么时候需要转储文件,请参考转储文件系列文章的第一篇 -- 转储文件知多少. 前言 不知道各位小伙伴有没有遇到过 微信 或者 QQ 崩溃的情况.它们在崩溃的时候都会 ...

  7. VS+VAX的提示功能快速编写C51程序

    虽然有智能提示的软件有很多,比如Source Insight.Ultra Edit,但我都不太喜欢.周立功的TKStudio也用过,感觉还行,但还是不太满意. 由于学C#,我的电脑上安装了Visual ...

  8. 编写一个C程序,实现以下功能:编写一个函数decTobin(int n),该函数能将一个十进制数n转换成二进制数,输入13 输出 1101。在main函数中输入整数n,调用函数,输出它的二进制

    题目要求: 编写一个C程序,实现以下功能: //编写一个函数decTobin(int n),该函数能将一个十进制数n转换成二进制数,输入13 输出 1101. //在main函数中输入整数n,调用函数 ...

  9. 编写一个C程序,实现以下功能:编写一个常规的函数和一个递归函数,两个函数均能将输入的一个字符串以按反序形式的字符串作为返回值。在main函数中输入一行字符串,分别调用两个函数,输出反序后的字符串。

    题目要求: 编写一个C程序,实现以下功能:编写一个常规的函数和一个递归函数,两个函数均能将输入的一个字符串以按反序形式的字符串作为返回值.在main函数中输入一行字符串,分别调用两个函数,输出反序后的 ...

最新文章

  1. java中的关键字static
  2. 如何基于Weex实现创新交互体验?手淘开源技术BindingX案例解析
  3. 对属性可以赋值的位置
  4. 异步查询回调函数调用
  5. object中的toString方法
  6. SSM:Spring整合MyBatis框架时出现 java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManaged
  7. 5G(2)---NR协议栈及功能1 - 总体架构与物理层
  8. BackBone及其实例探究
  9. 使用Python进行多项式Lo​​gistic回归
  10. ssm+安卓APP校园学生疫情防范监控系统毕业设计源码281444
  11. 南京工业大学计算机科学与技术学院保研外校,南京工业大学计算机科学与技术学院2018年招收推荐免试研究生章程...
  12. UE4添加人物动画之前后左右移动
  13. python数据分析:词性标注
  14. Environment 的使用
  15. VC++界面编程之--实现工具栏自定义皮肤
  16. GNOME Evince开源项目作者Marco因癌症离世
  17. 详解EBS接口开发之销售订单挑库发放
  18. 我的世界服务器搭建原理,我的世界自动化农场的建造与原理 这里有你想知道的...
  19. 关于dash的基础学习
  20. 腾讯发布“天眼云镜”主机安全产品

热门文章

  1. 君が好きだと叫びたい(好想大声说爱你)
  2. apache2.4以上版本 make报错[exports.lo] Error 1 解决方法
  3. 代码注释更加和谐好不好?
  4. 如何利用Android赚钱
  5. NUC-家喻户晓的中药店
  6. 毕业设计 Spring Boot的中药店商城系统(含源码+论文)
  7. oracle 将包赋权给用户,oracle数据库如何创建用户和角色,并给其赋权?
  8. 【软件推荐】4K Video Downloader (4K视频下载界的王者)
  9. 可解释性机器学习_Feature Importance、Permutation Importance、SHAP
  10. 版本控制工具Git详细介绍和常用命令