-
入手MacBook Air(MD760)
在苹果团观望了一个多月后下手MacBook Air(MD760, 2013年款,13寸低配,128GB SSD)。总价包括苹果团的180和快递费60比国行平均7200要低,比1月10日苹果活动7000也要低一些。 个人的本职是个码农,在苹果团的帖子上看到很多码农都买了MacBook Pro比如ME865,不过考虑到自己的实际用途和在苹果实体店比对过RMBP(Retina MacBook Pro)和MacBook Air之后决定入手MD760就足够了。 周三下的单,周四晚上深圳顺丰发货,周五晚上上海这边估计是收不到了,只能改地址送家里,终于在周六上午的时候到手。到手后之前买过2012年款MacBook Air的某姐就开始帮我拆封和配系统——因为我之前把某姐的WII U给拆封了。 第一次配置系统的时候发现wifi连接不上,一直报timeout或者invalid password。google下了发现是个普遍的问题。我参照了一篇iteye上博客尝试开关wifi,问题没有解决。最后我重启笔记本后解决。 进一步配置中,我发现自己有好多地方是小白。比如安装软件优先从app store上安装,没有的话再考虑官网下载。对于码农来说terminal就是刀叉,osx自带的terminal确实不怎么样,某姐帮我装了iterm2。alfred是一个快捷入口,有些时候可以代替四指抓(我给这个手势定的名字)或者launchpad。切换程序的时候可以不用最小化,直接点击dock上的图标或者四指向上滑选择程序。配置中参考了这篇开发人员用mac配置文章。 顺便说一句,进入app store貌似是要apple id的,我是在Apple中国的官方网站上注册的,记得填写正确真实的信息。还有在另外一个页面输入序列号填写购买日期用于保修,页面我忘记是哪个了,在某个论坛中搜索到的。 最后,祝贺终于不用在周末和某姐抢台式机了。
-
python linux administrator学习小结
看《Python Linux Administrator》这本书时,我并不是按照从头到尾的方式读的,而是看了一遍目录,选择性地读了部分章节。以下是我选择的章节: GUI 有GUI肯定更直观一些,特别是在一些报表展示上。书中提到主要是三种方式,基于pygtk/wxPython的桌面程序,基于cursers的CLI方式和基于django的web方式。个人觉得web方式综合下面比较好一些,而且django并不比想象中要难。我也把django作为定期学习的一个候选。 network unix/linux下网络相关命令很多,python也有很多针对网络的库。书中介绍了从底层socket,到上层httplib/ftplib/paramiko(sftp),urllib/urllib2,xmlprclib/Pyro和强大的twisted。针对不同协议场景用不同的库,前提是你要了解足够多的网络库。 operaton system 通用的有platform,可以用来判断操作系统。接下来都是一些指定系统下的库,比如mac的dscl/asr,windows的zenoss,还有libvert, libvirt, cobbler, virt-factory, func等。这块和系统相关,个人认为要根据实际环境选择性的学习。 package manager 较多篇幅介绍了easy_install。同时提到了buildout, virtualenv, epm。个人对virutalenv有点兴趣,因为可以多版本python共存。 demo 一些使用python管理系统的实例。和之前介绍内容可能有交集。个人感兴趣的是python查询dns,还有python管理ldap等。 data 主要是操作文件。比如常用的os模块,还有glob,shutil,filecmp。用于产生摘要的hashlib等。更多的在python标准库文档中。
-
python标准库学习笔记3
以下内容来自这里的学习。 类型判断 理论上动态语言不建议判断类型,不过python还是有提供判断的方法。 import types type(1) == types.IntType isinstance(1, int) 第一种是使用types模块,第二种是使用内建的isinstance方法。 decimal 因为Java有BigInteger和BigDecimal,所以不会陌生。 import decimal decimal.getcontext().prec = 7 # set precision to 7, default is 28 decimal.Decimal(1) # create from int decimal.Decimal(‘3.14’) # create from string decimal.Decimal(1) / decimal.Decimal(7) 默认decimal精度为28,可以通过getcontext()修改配置。带小数的建议使用字符串创建,否则你用decimal.Decimal(3.14)试试看。 分数 就是那种几分之几的分数。 import fractions fractions.Fraction(16, -10) # – 8/5 fractions.Fraction(decimal.Decimal(‘1.1’)) # 11/10 fractions.gcd(60, 56) #…
-
终于完成了路由器(openwrt)上pptp客户端的设置
在路由器上设置pptp的初衷是为了解决类似3DS等不能设置VPN,所以必须同过带VPN的路由器或者代理等方式设置。如何使用代理设置以前有讲过,这里讲带VPN的路由器。 带VPN的路由器一般指的是用ddwrt或者openwrt刷过固件的路由器,我的路由器是tl-wr841n v7.1,ddwrt和openwrt都支持。 一开始我刷了ddwrt,虽然能够上网了,但是pptp死活连接不上。在放置了一段时间之后,看到还有openwrt,就想刷openwrt试试。
-
shell学习小记2
到昨天为止,把《Linux脚本攻略》看完了,全书有273页,老实说是最近少有的我能从头看到尾的书。evernote中我大概记了10个note,以下是从中抽选的一些笔记,之后有空的话还会加更多的。 按照CPU使用量排序(倒序)进程 ps -eo comm,pcpu –sort -pcpu | head ps -e 表示显示所有进程 ps -o 表示筛选显示的列,comm是可执行文件,pcpu是CPU使用量 ps –sort 表示排序依据,-pcpu表示按照CPU使用量倒排(+pcpu表示正排) head表示截图头十行 kill相关 列出所有执行的信号 kill -l 给指定的进程发送信号 kill -s SIGNAL process_id 常见信号 SIGINT 2 ctrl + c SIGKILL 9 强制退出 SIGSTP 20 ctrl + z which, whereis & whatis which cmd # 打印命令位置 whereis cmd # 打印命令位置和手册位置 whatis…
-
用tput做一个简单的倒计时
以前一直很好奇那种在shell里面出现的动态改变当前行内容的效果,比如你用apt-get install安装包时,shell最下面一行是进度,是不会被冲掉的,内容会动态改变;还有类似wget下载文件时的进度效果等。 最近学习shell,发现这些效果可以通过一个叫做tput的命令来实现,以下就是我在学习tput时做出来的一个简单的倒计时效果。shell脚本如下: #!/bin/bash if [ $# -ne 1 ]; then echo “Usage $0 count” exit 1 fi echo -n ‘Countdown: ‘ tput sc for i in `seq $1 | tac`; do tput rc tput ed echo -n $i sleep 1 done echo 第一段是简单的参数检查,要求必须带一个参数,即count,比如10。 从echo -n ‘Countdown: ‘开始倒计时。tput这里有三次命令sc, rc, ed分别是保存当前光标位置,恢复保存的光标位置和清除从当前光标位置到设置行末尾的内容。 你可以想象,当前位置不断显示不同内容的原理是动态改变这个位置上的内容,对于图像来说,记录某个对象的位置,刷新显示时定位笔刷到对象的位置,清除对象所在位置上的内容,最后绘制内容。用tput来说,就是rc -> ed -> “绘制”命令。sc肯定是在最前面只做一次的,因为只要记录一次光标位置就行。…
-
导出并整理android通话记录的简单方法
最近需要导出自己手机的通话记录,找了个应用导出,之后自己做一些处理,得到了表格样子的通话记录。 应用我用的是Call Logs Backup & Backup,没有用腾讯手机助手之类的,简单为上。 简单的应用操作也很简单,Backup按钮帮你导出最近500条通话记录,默认备份到内部存储,建议备份到/mnt/sdcard下。 应用备份出来的是一个XML,同目录下还有一个XSL文件,用来美化XML样式的。XML的格式大致是这样: <?xml version=’1.0′ encoding=’UTF-8′ standalone=’yes’ ?><!–File Created By Call Logs Backup & Restore v3.22 on 24/12/2013 13:26:12–><?xml-stylesheet type=”text/xsl” href=”calls.xsl”?> <calls count=”500″> <call number=”12345678901″ duration=”0″ date=”1376741581884″ type=”2″ readable_date=”Aug 17, 2013 8:13:01 PM” contact_name=”Foo” /> ….. </calls> calls.xsl就是同目录下的样式文件。 用浏览器显示XML时,默认会应用XSL,样子就是表格。和我的要求很接近了,除了默认通话记录是从最早到最近的,我想要的是最近到最早的。应用的配置我大致看了下,没有设置排序依据。写一段简单的python/ruby脚本肯定是可以做的。不过我看到call记录都是一行一行的,又知道有一个shell命令tac倒序输出,所以我自己做了点简单处理: head -n 2 calls.xml > calls-desc.xml tail -n +3 calls.xml |…
-
shell学习小记1
以下内容为本人学习《Linux Shell脚本攻略》的一些笔记。如果你想好好学shell的话,个人非常推荐这本书。 关于软链接和链接文件 除了常规的ls -l找出链接文件之外,还有以下两种方式: readline link_file 上面的命令直接打印链接文件的目标文件。 find -type l 上面的命令查找当前目录下的所有链接文件。 链接文件的方式基本上都是ln命令,ln的参数-s指定创建的是软链接文件而不是硬链接。软链接和硬链接的主要区别个人归纳为: 目录必须用软链接 软链接支持跨分区,硬链接不行 硬链接创建的文件和原始文件大小一致
-
vagrant使用小记
vagrant是一个简单实用的适合本地开发使用的虚拟机管理工具。默认基于virtualbox,也可以切换为基于vmware的模式。基于Ruby的配置文件相对在命令行操作virtualbox更容易些,特别是配置多虚拟机的情况下。以下主要是个人在使用时记录的一些点。 安装 ubuntu可以直接用apt-get安装。不过12.04版本的ubuntu对应的vagrant配对的是ruby 1.8,这可能不是你想要的。这时你可以从vagrant官网上下载deb,用dpkg -i方式安装。 因为我之前就装过virtualbox和ruby 1.9,所以不清楚如果这两个没有的时候dpkg -i安装时是否有问题。virtualbox和ruby实际也是用apt-get安装的。 下载base box 因为vagrant实际是操作virtualbox的,所以实际需要一个类似vbox的文件,或者说是安装了指定系统的虚拟硬盘,又称base box。如果你没有base box的话,就需要自己加载对应操作系统镜像逐步安装。 vagrant给的方法是执行 vagrant box add base http://files.vagrantup.com/precise32.box 后面的URL实际就是vagrant提供的一个base box。执行这条命令时,vagrant会下载这个base box然后加入box列表中。有兴趣的人可以执行 vagrant box list 查看所有安装的box。
-
无聊之作:简单模拟电梯程序[Java]
记得刚开始学Java时用的是《Java大学教程》,这本书每章都在介绍一点电梯程序的样子,加上上班天天都要坐电梯,突发奇想想要做一个模拟电梯程序。 一开始没想清楚电梯程序的运行方式,但是知道几个关键表现。 电梯有静止的时候 电梯往往停在最后请求的楼层,也有最后静止在底层(1楼)的,这相当于电梯在没有请求时自己按了一下1 电梯存在插队现象,即电梯在1楼,A在8楼先按,B在4楼后按,如果电梯没到4楼的话,后按的人先进 其实还有一个关键点,一般电梯都是有向上向下提示的,电梯上行时,A在8楼按下,B在4楼按下的话,B是不会插队的。不过如果把这个也考虑在内的话问题会复杂很多,因为操作电梯会有两步:指示方向和指出具体楼层。为了简化问题,我实际考虑每个楼层只有一个按钮,不指示方向,电梯内仍旧有具体到达楼层的按钮。这样的电梯可能有点怪,但也可以用。