版本:v1.2
摘要
本文主要介绍了软件开发的相关基础知识,主要包括上层软件和嵌入式方面的,比如Cygwin,Windows中的cmd,环境变量,注册表编辑器regedit,Linux的shell,开源协议,Java等。并且推荐了一些值得看的资料。
2015-04-24
修订历史 | ||
---|---|---|
修订 1.2 | 2015-04-24 | crl |
| ||
修订 0.8 | 2012-11-26 | crl |
|
版权 © 2015 Crifan, http://crifan.com
目录
插图清单
计算机软件开发,涉及到很多基础方面的背景知识
只有搞懂了了这些基础方面的知识之后
后续的软件开发,才可能得心应手
计算机世界中,现存很多种计算机语言
比如常见的C,C++,Java,C#,Python,Ruby,等等
对于这些常见的语言的一些总结,可以参考教程:
而对于这些常见的计算机语言
其实很多核心的概念和逻辑是相同的,通用的
所以,后来又专门写教程,去总结这些基本的,核心的,通用的概念和逻辑
感兴趣的可参考:
目录
摘要
如果想要在Windows下折腾Linux方面的开发,往往要用到Cywgin
Cygwin是用来在Windows平台下模拟Linux环境的
关于Cygwin的详细解释,可参考教程:
通过windows的查找,找到regedit:
其对应的位置在:C:\Windows
点击打开regedit:
regedit会记住上次打开的位置 | |
---|---|
打开regedit,其默认会自动定位到上次关闭时所在的位置。 |
Windows下面的命令行界面,命令工具,是对应的cmd程序。
其对应的位置在:C:\Windows\System32
在win7下,可以通过开始的查找,找到cmd:
其全称为:Windows Command Processor
其运行时的截图为:
cmd下运行的bat脚本文件 | |
---|---|
在Windows的cmd下面,支持运行后缀为bat或cmd的文件,成为windows下的(bat)脚本文件/批处理文件 关于Windows下的Bat脚本,详情参看Windows Batch File |
右击cmd的左上角的图标 ,会出现对应的菜单:
可以看到,有两个配置,一个是默认配置Defaults,一个是当前窗口的属性配置properties,两者基本的操作,都是一样的。
下面来介绍一下,常见的配置:
上图:
默认的cmd,一般是关闭了编辑选项中的快速编辑模式的。
当关闭了快速编辑模式的话:
如果你系统剪贴板中已经拷贝了一些字符,然后想要粘贴到cmd中,那么就需要点击右键:
选择对应的粘贴,才可以粘贴对应的字符:
鼠标是无法直接选择对应的文字的,需要:
即右键,选择标记,然后再选择一些文字:
然后点击右键或输入键盘的Enter键,就可以实现复制对应所选内容了。
此时:
而如果启用了快速编辑模式的话,那么就不会再出现上述的右键菜单了,不需要选择粘贴,通过直接点击右键,就可以实现上述字符的粘贴了。
同理,对于复制cmd中的文字,用鼠标选择后:
然后直接通过键盘上的Enter键或点击鼠标右键,即可实现将选中的文字,拷贝到系统剪贴板中,然后就可以粘贴到别的地方/别的程序中了。
需要说明一下的是,关于屏幕缓冲区大小,指的是系统本身最大所存储的内容,
而窗口大小,指的是你当前的cmd的窗口大小。
屏幕缓冲区的大小,肯定是要大于等于窗口大小的设置的。
屏幕缓冲区大小的设置,决定了你的cmd窗口,最大能多大,即用鼠标拖拉窗口的话,最大能变成多大。
对于屏幕缓冲区:
自己试试,改成不超过你的屏幕的宽度为宜,否则横向太长,输出的内容,就不容易看清了。
一般设置为大于窗口的大小,这样方便窗口在上下的高度方面,可以随时进行调整。
提示 | |
---|---|
相关的旧帖为:【整理】Win7中的Cmd命令行的使用技巧 |
cmd中按F7,可以调出(之前所输入的)命令的历史列表
直接上图:
用法是,在cmd中,按F7,即可出现上图的效果。
其实,默认的通过键盘上的上线箭头,可以输入之前/后输入过的命令的。
但是之前不知道,原来F7可以跳出命令历史列表的窗口的。
win7默认的cmd,是支持自动补全的(就像Linux中shell中的效果一样)
即你输入字母后,按TAB键,则会自动帮你匹配出相应的支持的命令(或当前文件夹下面的文件名)
但是之前不知道,此功能,还是可以自己设置开启或关闭的。
直接上图:
即,cmd中,右键窗口左上角的图标,选择 默认值,然后打开了 控制台窗口的属性 的对话框,对于其中的编辑选项中的自动完成,可以自己开启或关闭。
我之前就遇到过一次,不小心,不知道系统怎么出了异怪的事情,cmd中自动补全功能失效了,按TAB键不起作用了,只是光标向右跳动一个TAB的距离,变成了输入TAB键的功能了。后来才找到此选项,关闭后,再启用,才折腾好,TAB才可以继续实现自动补全的功能的。
即 控制台窗口 属性中的默认代码页的设置:
此处中文的win7,一般已经默认设置为了936了,这样显示出来的文字,是对应的中文GBK的编码的。
因此,如果你使用其他程序向控制台输出中文字符的话,比如之前用过python的logging.info输入中文信息到cmd中,此时如果你输出的汉字的编码也是GBK的话,和cmd中的GBK一致,则汉字是可以正确显示的。
如果你输出的汉字是其他编码,比如UTF-8,那么和cmd中的GBK编码不一致,就导致cmd中显示出来的汉字,是乱码了。对于python中,输入汉字是unicode话,logging.info会自动输出匹配的汉字,使得其可以正确显示的。
有两种方法:
HKEY_CLASSES_ROOT\Directory\shell
提示 | |
---|---|
对注册表不了解的,请参考第 2.2.1 节 “Windows的注册表编辑器:regedit” |
OpenCmd
OpenCmd
下新建一个项(目录),名为command
command
下面那个ab图标的,REG_SZ类型的值,设置为cmd.exe /k pushd %L
上述步骤,也可通过导入注册表的方式来实现统一功能。
把下面的内容:
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\shell\OpenCmd\command] @="cmd.exe /k pushd %L"
保存为OpenCmd.reg
,然后双击运行OpenCmd.reg
,即可。
提示 | |
---|---|
相关的旧帖为:【整理】在windows下添加右键使得可以运行cygwin且直接定位到当前文件夹 + 【整理】如何在Windows XP中,右键添加命令行cmd command,打开当前文件夹,定位到当前路径 |
无意间,从Windows 7使用技巧:在当前路径下打开命令行(cmd)命令窗口中发现,原来Win7中已经支持了此功能了。
即,在Win7中,在右击某文件夹的之前,先按Shift,然后再右击
此时就会多出一个“在此处打开命令行窗口”,"Open command window here"
同样可以实现快速打开cmd并定位到该文件夹所在路径。
Microsoft .NET Framework是windows操作系统下很常见的一个和开发人员有关的组件。
Microsoft .NET Framework的作用是为了提供此平台,此平台包含很多功能,供其他软件调用,而不需要关心细节,实现程序可移植性更好。
Microsoft .NET Framework目前已有很多个版本。大家最常见的有这几个:
其不同的版本,新版本兼容旧版本。
现在很多人常用的很多软件,也是利用到Microsoft .NET Framework里面的功能了。
某个程序如果用到了Microsoft .NET Framework,会在程序发布的时候,说明最低需要哪个版本的Microsoft .NET Framework的。
比如,如果你安装的Microsoft .NET Framework 3.5,而程序要求最低是Microsoft .NET Framework 2.0,则你是完全满足了程序要求的,可以正常运行程序的。
目前最常见的Windows的操作系统是XP和Win7
XP系统默认情况下,是没有安装Microsoft .NET Framework
只不过,由于其他很多程序的运行也需要Microsoft .NET Framework,所以之前运行某软件的时候,就已经安装了Microsoft .NET Framework。
另外还由于目前很多人安装的XP系统,是通过别人制作的GHOST版本的XP,其内在也已经集成了Microsoft .NET Framework了
所以,换句话说,对于绝大多数人来说,此时此刻,你的XP中极有可能也已经安装了Microsoft .NET Framework了。
而Win7默认本身已经集成了Microsoft .NET Framework 3.5了。
综上所述,你的XP或Win7中,多数情况下,都已经支持Microsoft .NET Framework了。
而再去运行一般的软件的时候,也都可以正常运行的。
但是,凡事总有例外,如果遇到系统上没有装Microsoft .NET Framework,而去运行那些需要Microsoft .NET Framework支持的程序的时候,就会遇到0xC0000135错误
比如,我的一个小程序:downloadSongtasteMusic,别人在XP上运行,结果出错:
即显示:应用程序正常初始化(0xc0000135)失败。请单击"确定",终止应用程序。
解决办法是:
可以去网上随便下载一个,比如非凡软件网站的Microsoft .NET Framework v2.0 简体中文版
然后安装即可。
当然,如果本身程序所依赖的Microsoft .NET Framework版本很高,比如要求必须是Microsoft .NET Framework 3.5以上,那么你就必须去找Microsoft .NET Framework 3.5或Microsoft .NET Framework 4.0去安装,才可以的
很多软件,书籍,文章等,在发布的时候,都声明遵从某种协议。
Linux/Unix世界中,多数软件都是遵循GPL等协议的。
最新看到很多的书籍,文章等,声明说是遵循“署名-非商业性使用(CC BY-NC)”的。
下面就对一些常见的协议,做个最简单的介绍。
署名-非商业性使用(CC BY-NC)有很多个版本,之前的有2.0的,后来又2.5的,最新的有3.0的
关于2.5的中文版的,官网的解释,请参见:署名-非商业性使用 2.5 中国大陆(CC BY-NC 2.5)
关于其含义,此处借用简明Python教程-前言-约定条款中的说明:
“简单地说,你只要署上我的名字,就可以免费复制、分发和展示本书。
未得到我的允许,你禁止把本书用于商业目的。
你在修改本书的时候,必须清楚地标明所有做了改动的地方,
你发布修改后的作品时也必须遵照与本书相同的约定。
”如此,CC BY NC的含义,就很清晰明了。
其基本等价于如此的声明:
在应用程序不修改的前提下,支持更多的平台。
是程序和操作系统之间信息沟通的一种方式。
下面,通过,把xsltproc所在的路径:E:\DevRoot\docbook\tools\xslt\bin
,添加到windows中的Path环境变量中去,为例
详细详解每一步是如何操作的:
右键桌面上的
,选择 :高级⇒环境变量:
可以看到,一个是当前用户的环境变量,一个是系统的全局的环境变量:
其中:
从作用范围来说,只是针对当前用户有效,所以可称为是局部的环境变量
从作用范围来说,针对所有用户都有效,所以可称为全局的环境变量
一般设置环境变量,是希望所有用户都有效,所以往往都是去设置系统的环境变量。
然后去找到系统的Path环境变量:
双击后,可以编辑对应环境变量的值:
关于windows中的环境变量的值,此处简单说明一下。
其某个环境变量的值,比如此处的path,其值可以有很多个部分,对应的每个部分之间,都是以分号;来分隔开的:
然后对于想要编辑环境变量的值的话,除了可以左右键移动之外,也可以通过使用Home和End键,分别定为到最开始和最后的位置。
而Ctrl+←或Ctrl+→可以实现一次移动一个单词(word)。
此处,通过End键移动到最后,可以看出,对于变量值的最后,可以没有分号分隔:
当前为了方便后续再添加其他的只,也可以写上。
而此处需要在后面添加新的一部分的值,所以是必须要加上冒号来分隔开。
然后加上此处的xsltproc的路径:E:\DevRoot\docbook\tools\xslt\bin
然后再点击
:其会稍微停顿一下,那是由于系统去更新此环境变量的值了。
最后再点击
,即可完成对环境变量的修改:之后,你再重新打开windows的命令行cmd,此时的环境变量,就真正生效了。
在Windows系统中,Java安装完毕之后,需要去设置必要的环境变量:
新建JAVA_HOME,设置值为jdk的安装路径,比如:
C:\Program Files\Java\jdk1.7.0
新建CLASSPATH,设置值为
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
修改PATH环境变量,(往往是在最后的位置去)添加:
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
然后再去重新打开一个Windows中的命令行cmd,去输入javac即可验证是否已正常安装了java了。
其实关于常见图片格式的大小问题,之前就写过一个帖子,整理了向word中粘贴不同格式的图片,导致word大小不同的问题。
当时好像是发现,gif是相对尺寸最小的。
此处,之所以在软件开发中提及到各种图片的尺寸,是因为,在有些和软件开发相关的过程中,会希望在不降低图片的视觉效果的前提下,而使用最小的图片。
比如docbook等开发过程中,遇到在写xml源码中,用到对应的figure图片,想要在生成的html中显示的话,则希望图片的文件大小,尽量小,以减少服务器的负荷。
而经过折腾发现,同样一副图片,分辨率相同和看起来肉眼分辨不出差距的前提下,不同的格式的图片的文件大小,很多时候,还是差距很大的。
所以,就希望在不影响视觉的前提下,仅保留图片大小是最小的那种格式。
此时,最小的格式,并不一定完全是gif格式。目前已经发现的规律是:
多数时候,将图片从jpf和gif转换为png的时候,图片尺寸都会减少的。
之前用PhotoFiltre转换过很多的图片,比如从gif转换为png,很多图片尺寸,都是降低40%左右,比如从49K变成34K
word另存为html而获得的png图片的文件大小是相对比较大的,可以转换为更小的 | |
---|---|
我刚开始遇到的情况,其实和上述结果相反。因为是用PhotoFiltre将png图片转换为gif,结果尺寸是降低了50%。 后来才发现,把转换后的gif再去转换为png,结果又在gif基础上降低了40%左右。 然后才想起来,原来那些png格式的图片,都是从word另存为html而导出的,所以好像是其故意保留了较高的颜色等内在参数,而使得图片大小相对较大。 经过PhotoFiltre转换后,可以在另存为的时候,选择默认配置,就可以只包括基本内容,大大降低了图片的尺寸。 而转换后的图片,至少肉眼是看不出前后的差距的。 所以,对于自己觉得尺寸大的图片,还是要通过PhotoFiltre去转换为png试试,看看是否可以降低图片尺寸。 |
比如这样的图片,本身图片所包含内容不多:
比如这张图片,本身图片包含不少,但是是低分辨率:
关于嵌入式开发,其实也有很多的背景知识。
只有了解了背景知识、整体概念后,才能真正搞懂每个细节内部具体实现的原因。
关于嵌入式方面的知识,目前已整理出系列的教程:
嵌入式开发中,对于交叉编译的概念,是第一个需要去搞懂的。
以及,搞清楚,如何得到交叉编译器,是使用已有的,还是自己编一个自己的
关于这方面的内容,可参考教程:
其中关于如何用crosstool-ng去制作交叉编译器方面的知识,也专门整理出了教程:
有些软件开发的基础知识,是主要用于上层软件领域的。
此处,就来介绍这些软件基础知识。
上层软件开发时,很多时候,会遇到和字符的编码格式方面的处理
比如用C#,Python处理抓取的网页时,就涉及到对应的charset
就要用正确的编码去编码,解码对应的字符串。
此时,就需要对字符编码,这个相对比较通用的基础知识,有个了解。
关于字符编码,之前写了个极其详尽的教程:
后来发现,该教程,还是内容太多,太繁琐。
所以,后来为了更容易看懂常见的字符编码,了解常见的字符编码之间的关系
又去写了个相对简要的介绍:
如果是在上层软件开发期间,涉及到复杂的字符串处理的话
尤其是查找,替换等操作的话
很多时候,都可以利用,正则表达式,这个工具,或者说语言,去高效的实现你要的操作
关于正则表达式,可参见教程:
和
在折腾,网络抓取,模拟登陆,动态网页等等期间
总结了很多基本的原理,逻辑,以及示例代码等等
然后整理出来称为一个独立的教程
对于这方面的需要参考的,可以去看: