2020-06-13
Windows 端安装jekyll

github中的page功能支持将代码库中的文件以静态网站的形式展示。支持jekyll框架下的网站转换。jekyll有很多网站模板,点击进入jekyll主题网站,选好主题模板后,只需要修改post里的文章即可在主页上看到文章了。post里的文件支持html格式,也支持makrdonwn格式。本篇是用makrdown写的。 在写完文章后,文章里多少可能会有问题,防止上传到github后出错,反复调试麻烦,可以在本地搭一个jekyll服务器调试好再上传。本文主要说明怎么在windows端搭建jekyll服务器。

Read More
 2020-06-12
服务器上的 Git - 配置服务器

我们来看看如何配置服务器端的 SSH 访问。 本例中,我们将使用 authorized_keys 方法来对用户进行认证。 同时我们假设你使用的操作系统是标准的 Linux 发行版,比如 Ubuntu。 首先,创建一个操作系统用户 git,并为其建立一个 .ssh 目录。

Note

以下操作可通过 ssh-copy-id 命令自动完成,这样就不必手动复制并安装公钥了。

首先,创建一个操作系统用户 git,并为其建立一个 .ssh 目录。

$ sudo adduser git
$ su git
$ cd
$ mkdir .ssh && chmod 700 .ssh
$ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys

接着,我们需要为系统用户 gitauthorized_keys 文件添加一些开发者 SSH 公钥。 假设我们已经获得了若干受信任的公钥,并将它们保存在临时文件中。 与前文类似,这些公钥看起来是这样的:

$ cat /tmp/id_rsa.john.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4L
ojG6rs6hPB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4k
Yjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9Ez
Sdfd8AcCIicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myiv
O7TCUSBdLQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPq
dAv8JggJICUvax2T9va5 gsg-keypair

将这些公钥加入系统用户 git.ssh 目录下 authorized_keys 文件的末尾:

$ cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.josie.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.jessica.pub >> ~/.ssh/authorized_keys

现在我们来为开发者新建一个空仓库。可以借助带 --bare 选项的 git init 命令来做到这一点,该命令在初始化仓库时不会创建工作目录:

$ cd /srv/git
$ mkdir project.git
$ cd project.git
$ git init --bare
Initialized empty Git repository in /srv/git/project.git/

接着,John、Josie 或者 Jessica 中的任意一人可以将他们项目的最初版本推送到这个仓库中, 他只需将此仓库设置为项目的远程仓库并向其推送分支。 请注意,每添加一个新项目,都需要有人登录服务器取得 shell,并创建一个裸仓库。 我们假定这个设置了 git 用户和 Git 仓库的服务器使用 gitserver 作为主机名。 同时,假设该服务器运行在内网,并且你已在 DNS 配置中将 gitserver 指向此服务器。 那么我们可以运行如下命令(假定 myproject 是已有项目且其中已包含文件):

# on John's computer
$ cd myproject
$ git init
$ git add .
$ git commit -m 'initial commit'
$ git remote add origin git@gitserver:/srv/git/project.git
$ git push origin master

此时,其他开发者可以克隆此仓库,并推回各自的改动,步骤很简单:

$ git clone git@gitserver:/srv/git/project.git
$ cd project
$ vim README
$ git commit -am 'fix for the README file'
$ git push origin master

通过这种方法,你可以快速搭建一个具有读写权限、面向多个开发者的 Git 服务器。

需要注意的是,目前所有(获得授权的)开发者用户都能以系统用户 git 的身份登录服务器从而获得一个普通 shell。 如果你想对此加以限制,则需要修改 /etc/passwd 文件中(git 用户所对应)的 shell 值。

借助一个名为 git-shell 的受限 shell 工具,你可以方便地将用户 git 的活动限制在与 Git 相关的范围内。 该工具随 Git 软件包一同提供。如果将 git-shell 设置为用户 git 的登录 shell(login shell), 那么该用户便不能获得此服务器的普通 shell 访问权限。 若要使用 git-shell,需要用它替换掉 bash 或 csh,使其成为该用户的登录 shell。 为进行上述操作,首先你必须确保 git-shell 的完整路径名已存在于 /etc/shells 文件中:

$ cat /etc/shells   # see if git-shell is already in there. If not...
$ which git-shell   # make sure git-shell is installed on your system.
$ sudo -e /etc/shells  # and add the path to git-shell from last command

现在你可以使用 chsh <username> -s <shell> 命令修改任一系统用户的 shell:

$ sudo chsh git -s $(which git-shell)

这样,用户 git 就只能利用 SSH 连接对 Git 仓库进行推送和拉取操作,而不能登录机器并取得普通 shell。 如果试图登录,你会发现尝试被拒绝,像这样:

$ ssh git@gitserver
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Connection to gitserver closed.

此时,用户仍可通过 SSH 端口转发来访问任何可达的 git 服务器。 如果你想要避免它,可编辑 authorized_keys 文件并在所有想要限制的公钥之前添加以下选项:

no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty

其结果如下:

$ cat ~/.ssh/authorized_keys
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4LojG6rs6h
PB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4kYjh6541N
YsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9EzSdfd8AcC
IicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myivO7TCUSBd
LQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPqdAv8JggJ
ICUvax2T9va5 gsg-keypair

Read More
 2011-07-13
I2C调试小结

文章首发:http://user.qzone.qq.com/276546441/blog/1303712793


1、硬件部分

I2C物理组成上,只有两根线,一根时钟线,一根数据线,线的具体位置原理图都为标注的,找ISCLISDA管脚即可。I2C的时钟线不像一般总线的时钟,时刻都存在,只有当总线上有数据发送时,才会产生时钟信号;数据线在没有数据传送时,一直为高电平,故如果发送数据时发现返回总线忙的错误,原因一般为数据线上电平被拉低了。

Read More
 2010-04-10
OMAP3530 WIFI 调试手记

       很久没有遇到过这么折磨人的工作了,随着昨天换了器件,设备工作正常后,折磨人的状态也可以告一段落了。调试最郁闷的阶段时,曾设想过结果,总觉得出个稳定结果是那么遥不可及,总觉得设备能正常工作了简直是天方夜谭,当时就想,要是有一天能调通了,一定得作个总结。称着现在还记得细节,把调试过程记录一下,好为以后工作时做个参考。

运行平台:OMAP3530-MINI开发板

操作系统:Linux 2.6.28

处理器:ARM ContexTM-A8

文件系统:Angstrom

调试设备:WIFI Ralink RT2571MF,摄像头 Sonix SN9C230A

调试需求:使WIFI和摄像头在 OMAP的开发板上正常运行。

调试过程:

首先进行摄像头的调试,到最后这玩意儿也没有成功,所以说这个起点的选择本身就增加了调试的难度。

设备插到无源USB HUB上,一直取不出设备ID和厂商ID值,总报错误:

Read More
 2010-04-08
基于Linux内核的OMAP3530 LCD屏驱动调试小记

背景:

   公司要在 OMAP3530平台上做产品,现在处于技术调查阶段。需求点之一是修改现有的3寸LCD屏为7寸屏。

问题:

   我们使用 的是瑞泰提供的开发板,开发文档中有关于屏使用的介绍。按照文档中提供的内核编译选项,找到对应的LCD屏驱动文件后,进行参数设定,没有效果,(最明显 的一个参数是时钟频率,修改后,应当花屏,事实上是还正常显示)。

Read More
 2009-09-22
Windows USB功能驱动开发总结

【文章标题】: Windows USB功能驱动开发总结
【文章作者】: yybing
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
——————————————————————————–

    最近做了一个USB设备的功能驱动,并对其速度的瓶颈做了一些分析,最后找到了影响此设备的速度的主要原因。由于USB设备的通用性,代码的主体直接使用DDK提供的示例代码:Bluckusb。从正确编译到能正常读写数据有几个关键点,总结了一下,特与大家分享,有不足之处请不吝赐教。

Read More