发表时间
评论 没有

打印机是经常会用到的计算机输出设备,安装和使用打印机是使用 Ubuntu 系统绕不过去的一道必做作业。

我使用的是惠普打印机 Laserjet 1018。

惠普公司为 Linux 下使用打印机提供了一个开源的安装和使用软件 HPLIP,在很多 Linux 发行版中,该软件很有可能已经安装。通过使用 安装向导 ,会知道您所使用的系统是否已经安装 HPLIP 。例如我选择了“系统”是 Ubuntu ,“版本”为 16.04,“打印机系列”为 LaserJet ,“具体型号”为 1018 ,那么向导会告诉我使用的系统中已经包含并且安装了该软件,而且支持该型号打印机!如果型号有误可以重新选择,如果想要是用更新的软件可以重新下载安装。我决定使用默认软件。

接下来就可以使用已经安装的软件安装打印机了。

hp-setup

提示很多,但是发现安装有两种模式,一种是图像化模式,但是需要安装一些图形化的软件,第二种是交互式模式,默认使用图形化模式。我使用了交互模式。

hp-setup -i

会有提示,当安装到插件时,推荐是下载,但是我这里下载不成功,而且是屡次没有成功,最后我到 这里下载 插件和对应的校验码,然后告诉其下载到本地的位置即可本地安装插件,接下来的过程很顺利。

安装完毕,提示打印测试页,当然!

测试页与 Windows 下的很不一样。

作者
分类

发表时间
评论 没有

Github 是现在知名的软件/程序员集散地。任何人可以免费注册一个帐号,然后使用基于网络的Git软件托管服务。服务分为两种:收费的似有库(软件)和免费的开源库(软件)托管。

GitHub 鼓励开源。那么,如何参与到开源软件开发中呢?也就是贡献代码。通常的流程如下:

第一步:将您看中的软件复制(GitHub 叫做 Fork)自己的库中,例如:

https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git

Fork 后成为

https://github.com/YOUR_USERNAME/YOUR_FORK.git

那么,您就拥有了跟源程序库完全一样的一份备份,这份程序归您所有,是您开发的代码基地。

第二步:将GitHub上您的代码库复制到本地计算机上,

git clone git@github.com:hfl/sinatra.git

任意修改,知道满意为止,再将您修改的代码再推送到GitHub。

第三步:将修改好的代码向原程序库做一个推送请求,等待原程序主管开发人员批准后将代码汇入源程序即完成了一个贡献循环。

这看似正常的过程其实存在着几个问题:

  1. 我们在修改代码的时候如果别人提前修改了我要修改的代码怎么办?
  2. 我怎么才能获得别人的修改?毕竟我只是帮忙,不是专职,有可能很长时间我不会关注该软件,而想关注的时候,我的代码竟然还是我 Fork 时候的样子,没有自动更新!
  3. 如果我只是想做一个单独的分支,而且不想破坏原来的程序怎么办?

由于以上问题,其实上面的贡献代码步骤就需要稍作调整:

同步源

在复制到自己的计算机上后,要添加上游分支的同步源,这是为了随时保持本地程序原程序随时同步。

git remote -v

如果显示的是:

origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)

那么需要增加上游原

git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git

再次验证

git remote -v
origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)

上游源已经添加成功了。接下来,如果需要更新本地源与上游源同步:

git fetch upstream
remote: Counting objects: 75, done.
remote: Compressing objects: 100% (53/53), done.
remote: Total 62 (delta 27), reused 44 (delta 9)
Unpacking objects: 100% (62/62), done.
From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY
 * [new branch]      master     -> upstream/master

上游源已经同步到 upbstream/master ,然后需要同步本地 master 分支:

git checkout master
Switched to branch 'master'
git merge upstream/master
Updating a422352..5fdff0f
Fast-forward
 README                    |    9 -------
 README.md                 |    7 ++++++
 2 files changed, 7 insertions(+), 9 deletions(-)
 delete mode 100644 README
 create mode 100644 README.md

如果您的本地分支同上游分支没有任何冲突,那么 Git 将使用“快速合并”(fast-forward):

git merge upstream/master
Updating 34e91da..16c56ad
Fast-forward
 README.md                 |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

现在,随时都有同上游分支完全一样的分支了。

不要或者少动主分支 master

最好使用一个工作分支,做完开发在合并到主分支。

作者
分类

发表时间
评论 没有

天生爱折腾,导致网站系统崩溃!

经过一番整理,前面的文章得以保留,但是日期就不再转发了。

喜欢 Textpattern 很长时间了,喜欢她的简洁、优雅以及对信息有条不紊的组织,甚至很多人不喜欢或者不用她的原因——默认使用 Textile 标记语言记录文字——我都很喜欢,因为这很不利于对于他人文章的直接转载,更利于原创!

Textpattern 很小众,但是不等于没有粉丝,例如在 We Love TXP 就有很多帅气到爆的网站,这里的网站使用者都属于 TXP 的铁粉。

Textpattern 出道多年,但是一直不温不火,或许是源于其高冷气质, TXP 的几位主创也是很拼的,研发软件、写书、建站,一系列的 Textpattern 周边产品一应俱全, Textpattern 的生态圈就这样自成系统。

当然,我对于 Textpattern 也仅仅是初步了解和简单使用,更深层次的了解还在努力中……

作者
分类

发表时间
评论 没有

作为一个非专业的程序员,拥有一款舒心的编辑器是很有必要的。

从开始编程序,我大概用过这些编辑器:

  • 用 FrontPage:编辑网页,仅仅是网页;
  • DreamWeaver:编辑网页,编写JSP;
  • Windows 记事本:编写Java程序以及其他需要严格使用Unicode的程序;
  • JCreator:编写Java程序和JSP;
  • JEditor:编写Java程序和JSP;
  • Netbeans:编写Java程序和JSP,但是太大了,当时计算机配置低,没有多使用;
  • Eclipse:编写Java程序和JSP,但是太大了,当时计算机配置低,没有多使用;
  • NotePad++:可以编写各种程序,确实是程序员的“匕首”;
  • Vim:转战Linux系统,开始使用Vim,但是没有大规模长时间使用;
  • Gedit:类似于记事本,但是通过定制之后,类似于NotePad++,无往而不胜啊;
  • Sublime Text:非常好用,但是在Linux上对于汉文的支持很差,而这在很多时候又是避不开的,所以在Linux上弃用;
  • Geany:类似与Gedit,通过安装插件定制之后,也很好用;
  • Atom:Github推出的可定制的21世纪的编辑器,好用;

经过这么多选择之后,还是很难说哪个编辑器就是最好的编辑器,只能是根据使用情况,根据个人爱好,你可以选择最适合你的那款编辑器。例如输入一些很简单的东西,记事本、Gedit就可以胜任;Vim可以胜任各种情况,前提是你对她够熟悉,定制够到位;而一些大的编辑器,甚至不能叫做编辑器了,是一种大规模的程序开发软件,例如Eclipse和Netbeans更适合规模化开发。

所以,萝卜白菜,各有所爱,选择最适合你的——才是最好的。

作者
分类

发表时间
评论 没有

前面曾经简单介绍过 ISBN ,关于ISBN的校对,有新码和旧码两种校对方法:

  • 新码的校对方法:取前12位数字,将奇数位乘以1,偶数位乘以3,然后将12个积加到一起除以10得到余数,再用10减去余数,得到的数字即为校验数(第12位);
  • 旧码的校对方法:取前9位数字,依次乘以10,9,8,7,6,5,4,3,2,然后将乘积相加除以11得到余数,再用11减去余数,如果得到10,校验位(第10位)应该是X;如果得到11,校验位应该是0,其他的得到几即为几;

这是Ruby写的校验方法(isbn.rb):

def check_isbn(isbn)
  # delete all - from isbn string
  isbn = isbn.gsub(/-/,"")
  sum = 0
  # new isbn
  if isbn.length == 13
    for i in 0..11
      if isbn[i].to_i.odd?
        sum += isbn[i].to_i * 1
      else
        sum += isbn[i].to_i * 3
      end
    end
    if 10 - sum%10 == isbn[12].to_i
      return true
    else
      return false
    end
  # old isbn
  elsif isbn.length == 10
    for i in 0..8
      sum += isbn[i].to_i * (10 - i)
    end
    if 11 - sum%11 == 10 and isbn[9] == "X"
      return true
    elsif 11 - sum%11 == 11 and isbn[9] == "0"
      return true
    elsif 11 - sum%11 == isbn[9].to_i
      return true
    else
      return false
    end
  else
    return false
  end
end

if check_isbn(ARGV[0])
  puts 'yes'
else
  puts 'wrong'
end

运行 ruby isbn.rb 978-7-2343-266-3 即可得到校对结果。

作者
分类

← 较早的 较新的 →