分类 编程 下的文章


来玩Arduino——做一个高考倒计时表


0x00 写在前面

为啥要写这篇文章呢?因为最近想用数码管做个高考倒计时牌,但是数码管还没买,于是先用自己有的OLED屏幕做了个桌面版的。班里一些同学看到这个逼格这么高的的玩具,也想做一个玩。于是我来写这篇文章教一下。

也是找个理由更新一下许久没更的博客……

本文写的非常简单适合小白,一些大佬请不要吐槽。

photo_2017-06-16_19-24-57.jpg

// 点开我,里面还有许多内容!


到底该怎么学编程


首先声明,这篇文章来自于我自己的经历,对于他人的适用性不确定。

我刚刚写完了我们队伍(Team 6385 - TrueMoe)的FRC2017机器人基础RobotCode(仅operator操作时的手柄控制系统)。用的是C#,一个我在今天之前只知道怎么拼写、长什么样的语言。

身边的朋友好许人认为我是“大神”,只是因为我“很会写程序”,也有想学编程的小伙伴来问我,怎么才能学编程。我当然没有这么厉害,我只是一个全能又全不精的一个高中生。当然我是更希望我能精一样东西的。(不过我总比现在青少年IT圈中涌现出的一批批处理小学生、改代码小学生、单机打站小学生、花样装(zuo)逼(si)小学生要好,自认为。)别人在问我怎么学编程的时候,我听到最多的一句话是“诶,我听说是不是要学C语言开始啊?”当然不是啊!显然很多人认为编程是一个“打怪升级”的过程,我先学什么,然后学什么,才能学什么。多插一句,C的确是一个非常经典的语言,如果能学精,那是非常棒的,但是我并不认为它适合一个新手。举个简单的例子,中国大部分地区的高中的信息技术教学中的编程教学,大多是Visual BASIC 6.0。

那么该怎么按照我的路子开始学编程呢?

第一,相信靠谱的资料。这里靠谱的资料是指官方文档一类的,当然也包括市场上一些书籍,但我个人建议不要使用书籍,能用官方文档就用官方文档。因为图书市场鱼龙混杂,举个例子,谭老的C语言书。一般如果不是专业的朋友推荐,还是尽量看官方文档吧。然后多看点官方例程或者书上的例程(最好敲一遍),我第一门学会的语言Pascal就是把书上所有例程在Free Pascal上敲了一遍就学会了,每敲一个程序都会对这个语言的语法有点感觉。(别找我推荐!除了我小学的OI入门(keng)时专门买过《Pascal基础》外,我基本不看编程类书。)

第二,要会使用搜索引擎。能用Google就用Google,都打算入程序大坑了,还舍不得一点点“求学费”搞点必要的东西用用?百度我曾经试过几次,很难找到让我满意的结果。当然搜索也是要有技巧的,要简明扼要而又不失真的构建搜索词,才能找到前人给你铺的路。(用搜索引擎查找官方文档也是个不错的主意哦!)

第三,要会问。问,主要是在通讯工具上找朋友问,或者是StackOverflow、SegmentFault等在线交流(you)平台问。问的时候要说清楚问题是怎么出现的,出现了什么问题,如果你说的模模糊糊,怎么让别人帮你?注意,这是最后一步,只有第一第二不行才走这一步。毕竟大部分人没这个空来帮你解决一些明明网上一大堆solution的问题。(想起我一个同学,连VB6里面的数组定义和使用方式都错了,问我为什么不能运行,我当时很烦躁,直接就一句“老师上课时候都不听。”,就不理了。)

编程本身就不需要有人来教,只要你好学,没什么搞不定的。况且还有附加值:可以提高你的英语水平,毕竟以上三点你不可避免的要接触大量英文,讲个事实,英语是我三门主科中唯一的优势了。

我到目前为止(除了Pascal)没有一个我目前会的编程语言亲自写的第一个程序是很简单的。PHP第一个程序是OIH的爬虫,用了正则和数据库连接。Node.js的第一个程序是一个小纸条盒(Web应用)。C#的第一个程序是今天写的FRC2017的控制程序。C++的第一个程序是CRC2016的控制程序。最后,装完b跑路。npm install b

本文同时在Immortal.Work发表:https://immortal.work/p/yMoGdcTit6Estw2J6


知乎中学生寻找计划


0x00 为啥要搞这个

今天吃晚饭的时候刷知乎刷到了千赞以上99/00后答主及其高赞回答 一览,最后发现施子怡大大是“人肉搜索”,于是打算借助神秘的程序力量找出一部分。

0x01 构思

知乎不是使用数字id展示个人页面,因此我决定使用通过一个人的关注者来爬,我觉得我们总会关注一些自己同龄人的动向。(因为我就是啊)关于符合要求的人的判断,因为知乎并没有生日的选项(就算有也会有很多人不填写或者填写假的吧),我打算通过找关键字的方法。比如高一|高二|高三|高中学生|00后等等。

打算使用Node.js开发(的确很独特),用队列的形式,引入diskdb这种好玩的数据库。

0x02 环境准备

npm install cheerio request diskdb async

0x03 简单的搞事流程

知乎的用户界面使用了React框架,用户数据都存放在一个id为datadiv里的data-state参数里,提取出这段参数就可以get用户数据了。然后配合cheerio的dom操作,提取出数据。

还有为了节省时间,grab.js里是直接提取出关注者页面的信息,并没有赞、感谢等数据,所以还要getDetail.js帮助把queue这个collection里用户信息保存在list这个collection里。

0x04 执行

npm install
node ./grab.js sohaking
node ./getDetail.js

最后我以用户sohaking(也就是我自己)为起始节点搜寻出378名包含设定关键字的用户。

Result

0x05 其他的

相关源码公布在GitHub:sohaking/zhihu-people-finder

知乎专栏:https://zhuanlan.zhihu.com/p/25092211


自动登录浙江省高校招生考试信息管理系统


刚刚经历了浙江省的2016年10月学考选考,但不知道什么时候出成绩,于是我决定写一个自动查询的脚本。

0x00 准备

首先我打开了http://pgzy.zjzs.net:8011/login.htm ,仔细观察了它的验证码。

pgzy.zjzs.net:8011

看了一下这个验证码的干扰因子很少,应该很方便识别。为了研究,我用wget下载了20个验证码。

// 点开我,里面还有许多内容!


Cordova中deviceready事件不能触发


这两天在做一个HTML5App项目,我用Cordova进行开发。但是调试的时候却发现deviceready事件没有被触发。

deviceready没有被触发,里面的东西也没运行。后来在google上爬了一会儿,才知道页面上要引入cordova.js。

于是加了

<script src="cordova.js"></script>

程序正常运行。

cordova.js直接引入即可,是自动生成的。