关于手机的一些个人看法

个人一直很喜欢电子产品,且关于电子科技类新闻较多,近几年来可以说每日必看,曾经也经常混迹于各大论坛贴吧微博等。本文当然仅仅代表本人(一个非专业人事)对各个手机厂家品牌的一些看法,文章可能不会一次性写完,会随着我对手机了解成都的不断加深而更新本文。

Read More

git的配置及相关插件

一个好的工具,需要不断的打磨和熟悉使用技巧才可以把它用的炉火纯青,git同样如此,本文主要是推荐一些git常用的配置以及配套的一些工具。

git的相关配置:

.gitignore配置

Read More

通过git管理一个工程

GIT虽然能够实现各种版本控制,且功能强大,可以做到随时切换版本,回退等各种功能,但过多的分支,无效的分支,杂乱的提交,无意义的命名等等问题,往往会让像我这样的初学者,异常头痛,网络上关于git的往往都是指导你各个命令如何去用,部分命令的使用场景等,但却缺少一个完整工程项目的管理步骤。部分大神的确总结出了自己的使用习惯,但却不是作为教程来陈述的,下面我会将自己的一些习惯进行总结,后续可能遇到更好的也还会不断的更改。

下面是一张团队协作示意图:

通过这张图,我们可以初步了解git的工作流程,接下来将以这张图为基础,进行详细分析论述。

思路分析:

个人的GIT使用习惯,注意:不在master上面轻易进行提交,一般所有的工作步骤都放在develop分支上面进行,不做无意义的提交,所有提交最起码是能够通过编译的版本,有一定程度上的修改优化,且每次提交必须付上详细的commit说明。基于develop,如果平行进行多种不同类型版本的开发,则所有都建立相应的新分支dev_name,而基于dev_name,每个开发人员再次建立各自的分支,只有在完成相关开发后将各自分支合并到dev_name中。通过测试多个dev_name,选择最终确定的方案,将develop分支合并到某条dev_name上,继续开发,后续如果在遇到类似问题,继续重复上述步骤。默认的master分支只用来快速合并develop分支来确定发行版,对所有发行版都加入tag(release_name)。简单来说就是:GIT不断创建分支,master用来合并develop分支作为发行版发布;develop分支用来合并dev_name分支作为开发的主要分支;dev_name合并所有开发人员的各个提交的分支,在没有dev_name的情况下(即只有一个develop分支),develop分支用来合并所有开发人员的各个提交的分支。

git控制版本的过程就是分支不断提交合并的过程。

Read More

windows和虚拟机中的ubuntu实现文件共享

简介

国内很多用户习惯于使用 windows 系类操作系统,然而其中部分人员需要使用 ubuntu 进行一些开发测试,但他们并不想完全脱离 windows 系统,这时候虚拟机满足了他们的需求,虚拟机以安装配置简单,镜像还原起来方便安全,而被广大学习爱好者所喜爱。但有些时候,需要将真实机中的一些文档或者数据传输到虚拟机中,而如何实现虚拟机同真实机的共享往往是一些初学者头痛的事情。下面我列举出几种方法,可以满足解决这些问题。

以下的大多数方法,同样不仅适用于虚拟机和真实机之间交换文件,同样适用于同一个交换机/路由器下的不同主机进行通讯。

通过网盘进行传输

首先可以参照我之前写的桥接、nat、host-only 上网方式的区别里面介绍了如何配置虚拟机上网,一般虚拟机上方较为方便,如:vmware 或者 virtualbox 之类的都可以一键安装系统,即便手动安装,通过虚拟机拓展工具也都可以补全网卡显示上网的。如果对你所使用的linux发行版不是太熟悉,且极少传输文件的话,可以使用这种方法。推荐使用百度云之类的网盘,先将本地数据文件上传,然后再通过 linux 中的浏览器将数据文件下载下来。这种方式的好处是无需学习,没有门槛,不需要了解任何 linux 的知识,只需要当做一个桌面系统使用即可,坏处显而易见:1.依赖外网,2.机密文件不方便上传,3.必须上传下载,大型文件速度慢。

Read More

字符编码

字符编码(英语:Character encoding)、字集码是把字符集中的字符编码为指定集合中某一对象(例如:比特模式、自然数序列、8位组或者电脉冲),以便文本在计算机中存储和通过通信网络的传递。计算机中的字符编码算是一个历史遗留性问题,因为各个国家种族对应着不同的问题,以及各个组织机构推出不同的标准,因此现在计算机中的字符编码格式繁多。

打开某网页,或者用记事本打开某文本文件时,我们可能会看到一堆的乱码如”бЇЯАзЪСЯ”、”�????????”,出现这种问题,往往是我们选用的字符编码不对。

Read More

windows 7个人使用环境配置

windows 7作为个人使用最久的一个系统,无论是稳定性美观程度等等都相当优秀,虽然windows是商业软件,源代码不开放定制性差,但通过一些日常的配置,配合常用的软件还是能够将它打造成一个个性化很强用起来恨顺畅的系统。本人因为工作需要经常会用到windows系统,另外周围也有不少朋友都用的这个系统,所以这边着重总结个人的一些常用配置,以及推荐一些非专业类软件。通过本文的文章和截图,后续重装系统,也能够轻松对照配置修改回来。

假设你已经安装完了系统,这一个纯净版(非ghost版本,一般我都是安装这个版本)的windows 7,桌面仅有一个垃圾桶,没有其他软件。

windows 配置

配置任务栏

个人习惯采用小图标,窄任务栏,这样的好处是屏幕可以显示更多的内容。见下图:

修改窗体颜色

一是为了美观,修改aero的透明窗体颜色,可以让窗体和任务栏,另外改变窗体颜色外观可以起到护眼的作用。见下图:

修改显示器颜色

如果是台式机显示器,则显示器上面的配置按键可以进行手动修改,无需参照下面方式,下列方式主要适用于笔记本软件调节的方式,见下图:

通过调整这些参数可以过滤部分蓝光效果,让颜色显暖色更易于护眼,当然这样做的坏处就是整体颜色失真,观看电影视频时候观感下降,另外如果设计图片视频时会对你有较大的影响,这边也可以使用第三方软件更加智能的调节,软件部分会推荐介绍该软件。

电池管理

这边针对笔记本在会待机,合上盖子会休眠等进行修改。

修改输入法的切换按键

实现该功能的目的主要是切换中英文输入法,在使用ctrl或者shift切换时,很明显这两个键的位置远不如caps按起来方便,且shift往往作为大小写功能使用,用来作为切换中英文输入会恨混乱,而caps作为大小写时用起来相当罕见。大写完全可以用shift代替的用户群中,无疑是占用了一个最好的位置,却几乎完全被遗忘的一个按键。这边将右ctrl和caps进行功能对调。

打开注册表,在运行(win+R)中输入regedit,注册表位置:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] (注意: KeyBoard Layout, 而不是 KeyBoard Layouts)如果没有此键,就新建一个二进制值的Key,名叫:Scancode Map(注意名称不能够写错,错一个字母都没法实现功能)。

1
2
3
4
5
6
7
输入如下的值:
  00,00,00,00
  00,00,00,00
  03,00,00,00
  3A,00,1D,E0
  1D,E0,3A,00
  00,00,00,00

详细内容可以参见我的另外一篇专门介绍按键互换的文章。

Read More

ubuntu搭建wordpress服务

wordpress 是目前比较流行的博客模板,精美的外观强可定制性收到了国内外很多bloger的亲睐,之前在虚拟机的ubuntu_server上面搭建过这个环境,个人所使用的blog是基于jekyll的静态页面,所以对wordpress不是特别了解,这边以腾讯云的ubuntu服务器为基础搭建自己的wordpress服务,当然现在很多云服务已经支持一键搭建wordpress的功能,但据说“访问速度和灵活性会受到很大影响”,这边有兴趣的朋友可以自己去尝试一下。

简述

  • 需要搭建一个服务器,首先需要选定自己使用哪些服务套件,这边我选用LAMP套装,即linux(ubuntu), apache2.0, mysql, php(wordpress)。

Read More

网络监控工具wireshark

wireshark简介

Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。网络封包分析软件的功能可想像成 “电工技师使用电表来量测电流、电压、电阻” 的工作 - 只是将场景移植到网络上,并将电线替换成网络线。在过去,网络封包分析软件是非常昂贵的,或是专门属于营利用的软件。Ethereal的出现改变了这一切。在GNUGPL通用许可证的保障范围底下,使用者可以以免费的代价取得软件与其源代码,并拥有针对其源代码修改及客制化的权利。Ethereal是目前全世界最广泛的网络封包分析软件之一。

Read More

linux基本命令汇总

本文主要学习总结,使用 linux CLI 的基本命令,这边不以任何发行版为例,介绍的是绝大多数 linux 发行版上面都会含有的 CLI 软件,需要注意的是,这边是以完整安装为基础的,部分命令可能在最小安装上面无法使用。目前 安装 linux CLI 后可以使用的命令超过上千个,但最常用的命令一般只有 80 个左右,由于篇幅有限,本文会选取 80 个中的几十个最基本必须掌握的命令进行罗列和简介,不会展开详解,详细内容还是需要查看 manual 或者借助搜索引擎。

shell 命令的一般格式为:command [option] [arguments]。具体如下:

  • command 表示命令,command 事实上是一个可执行的软件,实上 linux 中所谓的命令绝大多数是预装的软件,因为地址被写入了全局,因此可以直接通过软件名来调用该软件。
  • option 表示选项,命令行中,选项是包含一个或者多个字母的字符串,一般在选项前有一个“-”用于区分参数,如:-l,-s等,这些都是设计程序时就已经被写在软件中的,用于方便用户选择软件执行的模式,选项这个词是并不是平白无故的,因为只有设计软件时被采用的一些字符才可以被称为选项,因此使用某个命令时,我们重点需要查看有哪些选项可以使用,以及使用后会有什么样的效果。
  • arguments 为参数,很多命令都可以接受参数,参数就是选项后紧跟的一个或多个字符串,这些字符串制定了命令的操作对象,如文件或者目录等。如:ls -al /etc ,这边 /etc 就是一个参数,而 -al 则是一个选项。

因为 linux 中的每个软件都是不同开发者提供的,因此表示一种功能模式的参数却往往不尽相同,如:有的递归是 -r 而有的是 -R 等等。因此你如果需要使用某个软件时,需要以 manual 为准,而不是想当然的认为某个选项一定表示某个功能。

文件管理

文件管理主要包含了,复制,移动,更改路径等等

ls

显示指定工作目录下的内容,常用参数:

  • -a 可以显示全部内容包含隐藏文件。
  • -l 用于列出文件的详细信息。

pwd

打印当前工作目录(print working directory),使用该命令后,你所在工作目录的绝对路径将会被打印出来。

cd

改变当前工作目录(change directory),后面可以用绝对路径或者相对路径。

mkdir

创建新目录,一般为 mkdir + 目录名

mv

将文件从一个位置移到另一个位置,可以用绝对路径或者相对路径,如:mv source /tmp/source 表示将当前目录下的 source 文件移到根目录下的 tmp 文件夹中。值得注意的是,mv 可以用来重命名,linux 中往往是通过 mv 来更改文件名称的。

cp

cp 命令的格式类似于 mv 命令,但相比而言会比 mv 多不少选项/模式,常用参数如: -r 用于递归复制文件夹中的内容。

rm

删除命令,用于删除文件等,一般常用 -rf 用于强制递归删除文件夹等。

touch

用于改变文件的时间戳(timestamp),注意该命令是改变文件时间的,并不是用来创建文件的,之所以我们用它来创建文件仅是因为在改变文件时间戳时,如果该文件不存在 touch 会新建一个空白的文件,所以创建文件是 touch 的一个附加功能。所以我们就不难理解在 touch 一个已经存在的文件时,原文件不会被改动,改动的是该文件的时间。

ln

ln 用来生成链接文件,提到链接,相信用过电脑的朋友对 windows 下的快捷方式都会有影响,在 linux 中我们将 windows 中的快捷方式称为软连接。

linux 下有两种链接:

  • 硬链接:文件 A 是文件 B 的硬链接,则 A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号相同,即一个 inode 节点对应两个不同的文件名,两个文件名指向同一个文件,A 和 B 对文件系统来说是完全平等的。如果删除了其中一个,对另外一个没有影响。每增加一个文件名,inode 节点上的链接数增加一,每删除一个对应的文件名,inode 节点上的链接数减一,直到为 0,inode 节点和对应的数据块被回收。注:文件和文件名是不同的东西,rm A 删除的只是 A 这个文件名,而 A 对应的数据块(文件)只有在 inode 节点链接数减少为 0 的时候才会被系统回收。我们这边提到的是 inode 节点,而并非路径,注意这点和软链接的区别。
  • 软链接:等同于 windows 的快捷方式,A 是 B 的软链接(A 和 B 都是文件名),A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号不相同,A 和 B 指向的是两个不同的 inode,继而指向两块不同的数据块。但是 A 的数据块中存放的只是 B 的路径名(可以根据这个找到B的目录项)。A 和 B 之间是“主从”关系,如果 B 被删除了,A 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。注意:软链接的 A 和 B 是对应的不同 inode 的,而 A 存储的仅是 B 的路径(并不是 inode 的信息),因此我们如果删除 B 文件后,A 会找不到链接方向,而如果我们再创建 B 后,A 又会有了新的目标,而事实上,再次创建的 B 和原来不是同一个 inode,已经和原来的 B 没有任何联系了。

file

直接使用该命令可以查看文件类型的详细信息,linux 中是不强制要求有后缀名的,但通过 file 我们可以看出文件类型。

文件查找

which

查找某指令名称/内置程序的完整路径。如:which updatedb –> /usr/bin/updatedb。

whereis

只能用于查找二进制文件,源文件以及用户手册文件。因此 whereis 搜索出来的内容要比 which 多些。

find

普通的查找命令,用于查找某个名称文件,后面可以跟多个选项,格式为 find+路径+选项+文件名,如 find . -name a.c 即查找当前目录下名称为 a.c 的文件,find 最大的特点就是速度慢,其次 find 查找如果不适用通配符的话默认为精确查找,这点注意和 locate 有很大的不同,因此查找以 ad 开头的文件需要执行:find . -name ad*

locate

find 每次会在目录下进行真正的搜索,一般这样做时间长,效率低。Linux 上更加优异的搜索命令,locate 会直接定位某个文件的位置,原理是 locate 寻找文件是通过 /var/lib/mlocate/ 数据库中的内容查找,不用去硬盘中检索,但往往新的变动对 locate 查找的数据库更新不及时,这是我们需要用 updatedb 命令手动更新(updatedb 需要 root 权限),locate 是默认为 *name* 的查找方式。如果需要精确查找,需要使用如下格式:locate -b '\NAME'

用户

passwd

passwd 用户修改用户密码,后面如果加用户名的话,可以直接修改该用户的登入密码,前提是你必须知道该原始登入密码。

su

su 主要用于改变用户登入身份,即快速切换登入用户,普通用户切换需要输入登录用户的密码,root 可以任意切换别的用户。

who

显示登录的所有用户的信息,whoami 只显示自己的登录信息,而 uname 表示的是打印系统信息和用户名等无关。

w

环境变量

Linux中set,env和export这三个命令的区别

set

命令显示当前shell的变量,包括当前用户的变量;

env

命令显示当前用户的变量;

export

命令显示当前导出成用户变量的shell变量。

每个shell有自己特有的变量(set)显示的变量,这个和用户变量是不同的,当前用户变量和你用什么shell无关,不管你用什么shell都在,比如HOME,SHELL等这些变量,

但shell自己的变量不同shell是不同的,比如BASH_ARGC, BASH等,这些变量只有set才会显示,是bash特有的,export不加参数的时候,显示哪些变量被导出成了用户变量,因为一个shell自己的变量可以通过export “导出”变成一个用户变量。

Read More

git问题总结FAQ

git 的使用过程真心不容易,尤其对于我这样没有其他版本控制器使用经验,且比较容易丢三落四的的初学者。按照网上所给的步骤操作,一旦漏做了一些步骤,或者做错了一些步骤,所引起的问题也是致命的,虽然肯定有解决问题的办法,但往往会引起分支结构混乱,经常做了一次提交然后就回不去了,或者经常不知名的无法进行提交,无法进行回退,pull失败等等。

可见要想真正让git成为你版本控制的工具,git的工作原理必定要相当清楚,版本控制的结构要特别清晰,一单出现问题立马就知道是哪一步做错了才行。

问题总结:

git checkout – filename:

在文件没有stage时可以通过这个命令将该文件撤销回来。一旦文件add后用该命令不再有效。这时需要使用 git reset HEAD – filename 意味着将文件unstage出库,还原到add之前,再使用git checkout – filename撤销文件。而如果你使用git checkout HEAD – filename 则直接会丢弃掉stage中的暂存内容,将文件还原。

Read More