零基础新生如何学技术——我的技术入门分享

今天曾老师发动大家在ifLab的问答社区回答关于新生学习技术的路线和技术栈,正好这几天还算不忙,就尽快写一下吧,免得之后又没时间。

首先,我自认为我目前技术算是比较一般的,只是会耍点小聪明,显得懂而已。不想以成功者的身份引导什么,只是分享下自己的学习经验,供大家参考。

编程接触的比较早,第一次是在初中,08年那会吧,选修vb课,什么都不懂,最后也啥都没学会,稀里糊涂就过去了,虽然没学到东西,不过编程这个事算是在内心埋下了种子,真正学习是在高中,高一选修了vb,又是vb,基本限于看懂老师的代码,改改的程度,自己写,完全写不出来。高二自己买了谭浩强的C语言红皮书,看了几章吧,不多,主要看了基本语句。自己试着写了命令行带菜单选择的简单计算器,就是输入特定字符选择加减乘除,输入第一个数,输入第二个数,输出结果,重新选择,这种。高三就没心思了。

入学前的暑假本来想好好学C,然而只是炒冷饭罢了,重新看了指针之前的内容,熟悉了基本语句和三大结构,重点难点的指针一点没搞定,更别提后面的了。当时,我只会用中文版VC6,不知道什么是VS,不知道编译器和集成开发环境的区别,代码格式全是谭浩强风格,不知道什么是命名法,喜欢用拼音命名函数,甚至不会盲打,敲字母是一个个看。

说前面这么多铺垫的接触经历,主要是想告诉各位新生,我并不比很多同届的人早学了很多,入学时大家其实都在同一起跑线上,只要你有兴趣,能投入精力,就一定能在技术路上走的比别人快,比别人远。

对于没有任何编程基础的新手,或者像当时的我一样接触不深,我觉得应该随便找一本C语言基础开始看!很多新生在问:我看什么书好啊?XXX的书是不是不好?XX天入门是不是写的很烂?我只能说,你的这个程度,遇不上什么烂书,与其纠结书好与不好,不如赶紧去看,看了才有提升,才看得懂,懂了才知道好不好。如果不喜欢看书,也可以去看视频,极客学院,网易云课堂,有很多C课程,同样是找一个自己喜欢的看。不管是书还是视频,自己喜欢,能看下去,就行了,不用考虑别的。很多人说黑皮的机械工业出版社出的C好,是国外大神写的……我想说的是,人与人不同,作为一个新手,你能适应国外的教学顺序吗,如果能,那当然很好,如果不能呢,看半截不看了,或者是看的很慢,还不如找个所谓的烂书看完呢!

然后说一下上手的语言吧,计算机专业的就是C了,没跑,早晚都要吃透,早学早熟悉。非计算机专业的我觉得其实可以直接上Python,更现代化,更友好,更容易出效果(有用的程序,能让自己有成就感,激励自己继续学)。

在学的过程中,切记一点就是,要去写!写!写!请问你整天看数学公式能考高分吗?整天看数学答案能会做题吗?所以,反复看书没用,看代码没用,要去写!写!写!不会写抄着写,一遍不会抄两遍,用电脑在和书上一样的环境里写,按照书上步骤模仿者操作。抄熟了再改写,仿写,直到能自己写!大学里有太多的人不写代码,或者打折扣的写,比如写在纸上,比如永远只抄写,你打折扣的写,就不要怪自己打折扣的编程能力!

说一下C语言的学习进度吧。指针之前要快看,没啥东西。尤其是helloworld之前的东西,读一遍了解即可,都是些思想之类的虚货,看懂了也理解不了,更何况还不一定能看懂,上道以后自然就懂了。主要看helloworld之后,有实际编程和操作的,但是不要拖沓。什么?你说看不懂,记不住?写啊,写会为止。到指针,你遇到了第一个硬骨头,指针需要尽量理解,光写也能会,就是会累一些,可以先多看几遍,理解了再写会快一些,如果理解不了,只有写!写!写!了。如果指针理解不了,后面都很难搞定,而一旦理解了指针,大一一整年都可以非常轻松搞定,所以在指针多花一点时间是值得的。指针搞定以后,链表也会很快搞定,C就算学的差不多了,建议之后写一个使用链表且储存文件的学生成绩管理系统或者大数加减乘计算器,或者类似的东西,虽然很无聊,没新意,但是对于提升熟练度非常有帮助。

C搞定以后,就可以找一些自己喜欢的语言了。然后会遇到第二个坎:面向对象,这个面向对象我理解了一年以上,在那一年中,随着写的代码量的增加,对面向对象有渐进式的理解,所以说还是要写。

 

最后说一些我觉得可以帮助新手入门的工具吧,还是本着顺手来,如果你就用着中文VC6舒服,没问题。

1、sublime text  用2或者3都可以,一个简单的文本编辑器,编辑功能强大,具体就不介绍了,官网有视频介绍。很轻量化,有基础语法提示。不过在Windows里用,写的代码运行时,中文会是乱码。。。可以下载一个win优化版

2、开发环境win就直接用VS吧,虽然复杂但是功能强大,值得花时间熟悉。而且中文加持,大大加分。Mac就用Xcode,简单便捷,英文不懂?看图啊,图标多形象啊!

 

先写这些,以后想到了再更。

iOS隐藏键盘

1、服从协议

2、设置代理

3、添加隐藏按钮

4、添加空白处点击隐藏

5、添加键盘隐藏方法

iOS7 8 UITableView Separatorinset 分割线从边框顶端开始

在Mac中用pip安装Scrapy

遇到了两个大问题,第一个在这里已经解决。

第二个问题是:

我使用了这个文章里的解决办法:

成功安装lxml后,再运行:

安装成功。

 

在OS X 10.11 (El Capitan)中用pip安装Scrapy遇到无法更新six包的错误

在OSX 10.11 (El Capitan) 中用pip安装Scrapy时遇到了这样的问题:

去网上查找解决方法,看到了这个:“OSError: [Errno 1] Operation not permitted” when installing Scrapy in OSX 10.11 (El Capitan) (System Integrity Protection),发现问题一模一样,于是就按照回答开始尝试。

按照最高票回答的方法尝试手动更新six:

然而并没有成功更新!于是去看了:Source: github.com/pypa/pip/issues/3165

按照里面的某些讨论进行尝试:

的确没有再次报错,但是我觉得并没有解决这个问题(后来检查日志应该是更新成功了)。

另一个同学在尝试中使用easy_install升级six,解决了这个问题,我也进行了这种尝试:

非常顺利就能完成six的升级。

 

一些思考:

在解决这个问题的过程中我一开始觉得是10.11中SIP的问题,而且很多文章也说是SIP的问题。

但是后来另一个同学用easy_install很容易的就升级了six,我突然意识到可能是six这个包本来是用easy_install安装的,因此pip才无法卸载six。

Xcode资源文件清理:删除无用的旧设备支持文件

Mac硬盘只剩下20G可用空间了,做了清理也只清理出了3G可用空间,但是印象里自己并没有在电脑存太多东西啊!于是开始做手动磁盘清理,在检查用户目录下的资源库时,发现这个目录异常的大:

~/Library/Developer/Xcode/iOS\ DeviceSupport

1

里面似乎是各个版本的iOS支持文件,甚至还有6.1.3版本的支持文件。如果能删除旧版的支持文件,那就能给电脑腾出一大块空间啊!于是找了一下资料,看能不能删除。

根据这个回答,删除旧版支持文件是完全没有问题的,甚至可以全部删除,并且应该定期删除!

AFDFCD85-9FAF-4097-92E6-0B086784478E

phpMyAdmin数据库乱码问题

第一次写后端,遇到了不少问题,这个问题比较坑!

问题描述:

1,从网页提交数据库数据,在phpmyadmin上显示乱码,在网页输出是好的。

2,用phpmyadmin从数据库插入数据,输出到网页后是乱码。

环境看似没有任何问题:网页已经声明使用『UTF-8』,数据库已经设置编码为『utf8_general_ci』。

为何还是出现了编码问题呢?

答:从网页提交数据库数据,在phpmyadmin上显示乱码,在网页输出是好的,说明提交的数据和数据库的编码不一样,提取数据的编码和提交数据的编码一样 。A->B->A型

解决方案:

把所以关于数据库查询、插入的语句前全部加上一行:

Ubuntu Server使用命令行版VPN客户端

为了能在外网玩上内网的MC服,朱总和我在腾讯云的学生优惠服务器上部署了一个VPN,想通过让内网MC服务器和客户端同时登录一个外网VPN的方式,曲线实现MC服务器和客户端处在同一局域网。

这样就涉及到让ubuntu server连接VPN的问题。

需要连接VPN的服务器是一台Ubuntu 14.04.3 LTS,使用pptp-linux软件连接VPN。

首先是安装软件包

确认已经安装好后,根据帮助使用pptpsetup建立VPN连接。

例如:

看到如下提示,表明连接成功。

 

用电脑模拟微信浏览器

想开发专为微信定制的网页,但用手机微信进行调试总是十分不方便,于是想用Chrome模拟微信浏览器。

打开Chrome的开发者工具,开启手机模拟。

将UA更改为以下任意一个:

iPhone:

安卓:

刷新页面即可。

参考资料:http://www.sky00.com/archives/1292.html/comment-page-1

 

ubuntu 1404 下安装 nginx+php5+mysql+phpmyadmin

1. 使用官方PPA安装 Nginx 最新版本,使用以下命令:

2. 安装 PHP:(不要尝试直接apt-get install php5,这样会默认安装apache)

3. 安装 MySQL 数据库:

4. nginx管理操作

5. 配置nginx

配置文件样本:

重启nginx:

6. 安装phpMyAdmin

参考资料:https://idefs.com/record-under-ubuntu-nginx-php5-mysql.html

Linux下批量替换文件名中的部分字段

从网上下载了一批旧的影视剧资源,命名倒是挺规范,但是不和我的胃口,想要重新命名。

但是不能用简单的批量重命名,因为原文件名里包含一个集名的字段,这个字段一定是不同的。如果用批量重命名,会导致这个字段消失,然而我想保留它,于是想批量替换掉我不想要的字段。

Mac上用brew安装了rename,默认安装的是Perl 语言版本。

命令格式:rename ‘s/原字符串/新字符串/’ 文件名

字符串支持正则,要注意字符元的使用和转义。

同时,原字符串只会在一个文件名中匹配一次,例如:

[舌尖上的中国][01][高清版][HR-HDTV].mp4

执行:rename ‘s/\]\[/./’

[舌尖上的中国.01][高清版][HR-HDTV].mp4

 

SSH攻击的检测与预防

经朋友提醒,意识到自己的服务器可能被SSH攻击,于是赶紧查了日志。

结果是:

10409 91.234.184.21
  3412 Failed
  1771 43.229.53.67
  1125 182.100.67.59
    270 218.87.109.253
    250 158.85.76.188
    233 27.191.209.88
    153 120.26.71.98
    148 218.65.30.92
    107 115.238.81.90
      70 222.186.21.100
      31 202.38.193.142
      27 218.98.39.43
      20 121.40.158.23
      18 218.5.9.226
      17 218.28.152.162
      15 222.186.21.71
      14 123.59.55.83
      13 119.167.156.38
      12 27.254.67.157
      12 103.6.223.61
      11 201.166.63.25
      11 119.163.120.202
      10 193.189.117.120
      10 107.150.19.184
        9 210.107.37.81
        9 202.99.207.123
        8 203.94.70.125
        8 180.210.201.106
        6 31.184.195.111
        6 187.62.210.26

这是要死的节奏啊,果然被试密码,仔细检查了日志,好在还没被破解,但是这样的事情很让人心烦!于是决定做一些预防措施。

换端口号,并禁止root登陆

测试不会冲突后修改

找到

Port 22

修改为自己想要的端口,找到

PermitRootLogin yes

改为 no 。

tree命令在Mac终端中文文件名显示异常

想要给一个朋友发自己硬盘里电子书资源列表,于是想到了tree命令。

安装后一试,

居然是这个样子!!!

A5C34B7A-E320-4EF5-AE1D-B236392E4B55

最先想到的是编码错误,于是百度『linux tree 乱码』,尝试若干种解决方法,并没有什么卵用!

无意中发现了这篇文章http://wwdd23.github.io/2015/01/09/mac-tree-chinese-display-error.html,终于解决了问题。

只需要加一个参数『-N』。

4315FF7E-7125-4F58-874A-153795587850

WordPress无法发送邮件问题的解决过程

前两天忘记了wordpress的后台密码,找回的过程中给出如下提示:

无法发送电子邮件。

可能原因:您的主机禁用了mail()函数。

后来发现注册的时候密码邮件发送也是不成功的,就寻思找个时间解决这个问题。

国庆假期刚好抽空研究,结果让我很惊讶,于是记录下来。

 

首先是wp提示禁用了mail()函数,但是之前在配置wecenter的时候已经把邮件发送调通了,一切正常。

但是毕竟提示了,那就测试一下吧。网上搜索,用个探针进行测试。

测试完全没有问题。然后又研究半天还是没找到头绪,决定彻底测试一下,确认不是mail()函数的问题,于是用了第二个探针。

这次发现个问题,网页显示发送完成,但是邮箱却收不到,看来是mail()函数运行中出了问题。

于是去找日志,结果发现根本没有日志,既找不到日志文件,又无法在系统日志中找到。不会是没装邮件程序吧,不应该啊,毕竟wecenter邮件好好的啊!还是检查下比较好。

返回

果然是没装!!!

So,直接安装好了。

 

树莓派更换软件源

1. 对原sources.list文件做备份

2. 修改sources.list

3. 更新软件列表

在R6300v2上安装Tomato固件并配置python环境

安装Optware
初始化JFFS分区:
192.168.1.1 > 系统管理 > JFFS > 启用 > 格式化
挂载/opt:

设定开机自动挂载
运行安装脚本:

安装软件包

终端不支持xterm-256color

在R6300v2的Tomato固件中使用nano和screen时出现不支持xterm-256color的情况,错误提示如下:
nano error: Error opening terminal: xterm-256color
screen error: Cannot find termcap entry for ‘xterm-256color’.
解决方案:
Quick fix: run TERM=xterm screen instead of screen.
参考资料:

WordPress因权限不足无法创建目录导致的一系列问题解决方案

wordpress有时候会出现以下错误提示:
无法建立目录wp-content/uploads/***。有没有上级目录的写权限?

错误原因:
wordpress目录属主错误

解决方法:
将整个wordpress目录属主改为www-data

代码: