apr 16
今天在 Mac 下配置一个 Go Lang 的开发环境,我是使用 /bin/csh 作为默认 shell(爱上了其强大的历史命令回溯功能),所以需要将 $GOPATH 设置到 ~/.cshrc 文件里:
setenv GOPATH /export/projects/mygo
set path = ($path $GOPATH/bin)
设置后发现不能自动加载,即使重新启动系统也无效。每次需要手动 "source ~/.cshrc" 才能生效。
经过不断摸索和研究,发现这是由于我的 Home 目录下存在 .tcshrc 文件引起的问题。tcsh(MacOS 下的 csh 与 tcsh 相同)在登录、开启终端时会依照以下顺序读取配置文件:
- /etc/csh.cshrc : Read first by every shell.
- /etc/csh.login : Read by login shells after /etc/csh.cshrc.
- ~/.tcshrc : Read by every shell after /etc/csh.cshrc.
- ~/.cshrc : Read by every shell, if ~/.tcshrc doesn't exist.
- ~/.history : Read by login shells after ~/.tcshrc if savehist is set, but see also histfile.
- ~/.login : Read by login shells after ~/.tcshrc or ~/.history.
找到问题所在,将 ~/.tcshrc 文件移除即可(该文件是 Macports 自动安装,无实际设置)。
sep 05
很多网站都通过 HTTP 头信息中的 User-Agent 标志来判断设备和浏览器类型,如果是 3G 手机,显示手机页面内容,如果是普通浏览器,显示普通网页内容。
谷歌的 Chrome 浏览器,可以很方便的用来模拟手机下的浏览器,这样测试移动网站和页面就变得非常方便。
在 Mac OS X 的“终端”窗口 (Terminal.app) 中输入以下命令启动谷歌浏览器,就可以模拟不同手机设备下的移动浏览器去访问 3G 手机网页:
谷歌 Android:
open 'Google Chrome.app' --args '--user-agent="Mozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"'
苹果 iPhone:
open 'Google Chrome.app' --args '--user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25"'
苹果 iPad:
open 'Google Chrome.app' --args '--user-agent="Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25"'
三星手机:
open 'Google Chrome.app' --args '--user-agent="Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; GT-S6010 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30"'
更多手机浏览器的 User-Agent 标识:http://www.zytrax.com/tech/web/mobile_ids.html
如果想切换回普通浏览器模式,彻底关闭 Chrome 浏览器后重新开启即可(Command + Q 快捷键)。
dec 09
对于低版本系统,在命令行窗口(terminal)输入 lookupd -flushcache 即可:
[idesk@imac:~]$ sudo lookupd -flushcache
命令执行完毕,你的DNS缓存就得到了更新。
对于较新的苹果 Mac OS X 系统应该使用下面的命令:
[idesk@imac:~]$ sudo dscacheutil -flushcache
nov 30
Lion 下无线网络总是时不时的断线,而系统栏显示的状态没问题,每次都要关闭再开启一下无线才能恢复,有时候晚上无人看守的传东西经常中途断了,结果传输没完成,还浪费一晚的电费。
没太多时间和精力去研究,暂时写了一个 shell 脚本检测网络状态,如果断了,自动关闭再开启一下网络端口,虽然不能百分百解决问题,但 99.99% 的情况下能用,基本能连续保持几天的连接状态。
#!/bin/sh
echo "AirPort Monitor start at `date`"
while [ 1 ] ; do
ping -v -c 4 192.168.0.1 > /dev/null 2>&1
PINGSTA=$?
if [ ! $PINGSTA -eq 0 ]; then
echo "Lost AirPort, refresh now... `date` ..."
ifconfig en1 down
sleep 5
ifconfig en1 up
echo "Done."
fi
sleep 60
done
nov 01
“工欲善其事,必先利其器”向来是我的信条之一,所以对于天天敲打的键盘自然很挑剔,毕竟,自己的手指每天要经受将近20小时的磨砺。
99、2000年的时候,公司购买的是Sun服务器(Ultra 10),所配的键盘是Dell的SK-8000;从那以后的7、8年里,我几乎没有再使用过其他键盘,因为太喜欢SK-8000的手感了,其他的键盘都让我觉得无法忍受。
当几年前发现手里仅存的一块也有点岌岌可危的时候,突然意识到是否应该再买块SK-8000做个备用。于是在网络上开始了大搜索,结果在淘宝找到了仅剩的几个货源,而且,大部分的品质都是不太好的,不管如何,最终让我入手两块品质相当不错的SK-8000,现在,这两块难得的SK-8000让我作为最珍贵的东西珍藏了起来。
在搜索SK-8000的过程中,开始无意识的接触到机械键盘,当时的主流应该算Cherry系,但我喜欢的款式价位差不多7、800以上,让人心里难以接受。而在搜索SK-8000的过程中,接触到了外型很接近SK-8000的DELL AT101W,一款使用ALPS轴的机械键盘,由于也是非常古老的键盘(同样是9x年代的标配行货),二手货的价位相当便宜,所以选择AT101W作为自己的入门机械键盘。
这款键盘高品质的货源同样非常少,在淘了N久之后,断断续续购入了5、6块,才筛选到两块品质相当不错的AT101W。(有点夸张的说,淘宝上AT101W的价格都是让我给炒起来的,哈哈!)
在此之后的两、三年时间里,我始终在敲打着这块古老的ALPS机械键盘,也是我至今最喜欢的一款键盘。
后来,由于开发需要,需要转移到Mac OS X系统,这个时候,古老键盘的PS/2接口成了我心中的隐痛。在此期间,我也曾尝试过 Apple G5 键盘:
这款G5键盘令我非常失望,几乎没怎么用就放弃了。当时G6刚上市,远观觉得那么扁平,肯定键程非常短,心里根本没有考虑去尝试,所以,一直继续使用着AT101W。
前不久,在Jay的提示下,我也开始尝试 Apple G6,感觉撇开机械流,如果手指慢慢习惯的话,手感还是非常好的,比G5改进很多。而且,全键盘那款的全身铝合金结构,沉甸甸,非常棒的触摸感。哈!SO,前不久,终于入手了 Apple G6,暂时把 AT101W 替换到收藏柜了。
在遗憾机械流的感觉中,也在犹豫N久之后,终于入手了 Cherry G80-3484 红轴:
说实话,我对这款键盘的失望是非常大的。除了机械轴算满意点,外型、做工给我的感觉就是二流货色,初步被我搁置了,等哪天回到Ubuntu或者FreeBSD平台的时候再来试试。
最终,我现在暂时停留在 Apple G6 下,使用下来,感觉习惯了之后,还是比较舒服的,特别是深夜里,不用再担心机械流声音会打扰家人的休息。
最后,来个DIrk系的打分吧(总分10分):
- DELL SK-8000,9.5分,扣分是因为键盘比较古老,另外一个缺点是非机械流;
- DELL AT101W,9.8分,扣分是因为键盘比较古老,其他都是完美(是最结实的钢板架构);
- Apple G5,5分,手感太差;
- Apple G6,9分,非机械流,不过整体感觉不错,特别是铝合金面板和人体工程设计方面;
- Cherry G80-3484,8分,红轴不错,但外型、做工太糙(至少在我这个精致物体控看来,这个东西根本不值这个价;Apple G6无线版也不过才500出头人民币),键盘太厚,如果没有手托,感觉会有些难受。
恩,最后,我梦想的键盘就是Cherry G80-3484的轴加上AT101W的架子和壳。不过,要是乔老爷把未来的G7做成机械流,我一定会感激涕零。
哈!
oct 25
心血来潮,下了几个试音专辑文件,一听才发现我的音响原来低音这么棒。以前一听低音比较多的乐曲,我的音响就会低爆,感情是没找到好的曲源?
当然,也许也是音响没褒开,打算就用这几个专辑好好褒一下,回头再看看普通MP3的效果。
网上无损音频一般都是APE或者FLAC格式的,我的机器只有VLC能播放,效果不错。有人推荐另外一款叫 Cog 的Mac下无损播放器,试了试,效果也不错。
apr 24
在雪豹下,有时候在往非本地硬盘(比如网络共享或者外挂移动硬盘等)拷贝文件的时候,会发生“不能完成此操作,因为您没有权限访问一些项目”的错误信息。
刚开始碰到的时候,我以为我家文件服务器的 Samba 配置出了问题(因为那几天刚好我做了一点小调整),后来发现和 Samba 没有关系,并且拷贝到外挂移动硬盘或者 U 盘也会有这个错误,但只限于那几个文件。
将出错的文件仔细定位后,发现是一个视频字幕文件,具体做了哪些操作也忘了,在终端下使用 "ls -al" 命令发现该文件的权限位最后多了一个 “@” 符号,类似以下形式:
-rw-r--r--@ 1 dirk staff 62584 somefile.srt
在网上搜搜后,说得最多的是关于隐藏属性的标志,但实际此文件在 Finder 中并没有被隐藏。几番搜索并试验后,发现和 xattr 这个命令相关。
可是,可是,为什么 xattr 没有 man page 呢?为什么?
还好,可以看看 "xattr -h":
[dirk@idesk:~]$ xattr -h
usage: xattr [-l] [-r] [-v] [-x] file [file ...]
xattr -p [-l] [-r] [-v] [-x] attr_name file [file ...]
xattr -w [-r] [-v] [-x] attr_name attr_value file [file ...]
xattr -d [-r] [-v] attr_name file [file ...]
The first form lists the names of all xattrs on the given file(s).
The second form (-p) prints the value of the xattr attr_name.
The third form (-w) sets the value of the xattr attr_name to the string attr_value.
The fourth form (-d) deletes the xattr attr_name.
options:
-h: print this help
-r: act recursively
-l: print long format (attr_name: attr_value and hex output has offsets and
ascii representation)
-v: also print filename (automatic with -r and with multiple files)
-x: attr_value is represented as a hex string for input and output
最终的解决办法是分两步走:
- 首先,使用 "xattr 文件名" 命令看看该文件附加了什么属性,比如我那个字幕文件多了 “com.apple.metadata:kMDItemWhereFroms” 这么一个属性。
- 然后可以使用 xattr 删除此属性,文件就恢复正常了!(如果是多个属性,挨个删除即可)
[dirk@idesk:~]$ xattr -d com.apple.metadata:kMDItemWhereFroms somefile.srt
问题解决,打完收工!!!
jan 24
自从我在公司的开发用机器迁移到 Mac Mini 后,一直也想把家里运行 Leopard 的 Hacintosh 也升级到 Snow Leopard,一方面是觉得雪豹确实相当不错,另外一方面是由于雪豹下的 XCode 做出了很大的改进,某些界面都不同了,我只是想将两边的开发环境统一起来。断断续续尝试了两次,很麻烦,似乎不得其门而入。
这个周末,花费整整两天两夜(期间需要将我 Ubuntu 9.10 所在硬盘转换为 GUID 分区表格式),终于把家里的 Hacintosh 升级到了 Snow Leopard;最后的成果还是非常喜人的:CPU、内存、无线网卡、声卡、显卡、Time Machine均完美支持。还有,新版的变色龙启动器,嗯,挺漂亮;结合 Ubuntu 下的 GRUB2 使用,绝配啊!
说实话,在未得其道而入时,真的是感觉焦头烂额,比当初安装 Leopard 不知麻烦多少,但最后完成的时候,才发现其实 Snow Leopard 需要修改的东西简单的很多,关键就看能不能掌握那么几个关键点了。
另外,Mac 的迁移助手真是不错,哈哈!
我安装的是原版 Mac OS X,只要完成安装,可自由升级到最新子版本(目前更新到 10.6.2 没有任何问题)。
nov 05
我的 Mac OS X 系统里的 PostgreSQL 数据库是通过 MacPorts 安装的,默认配置容量非常小,只适合一般的小数据量试验之用,即使开发环境的数据增加到几万条,速度就明显慢了。
在 Mac OS X 下调整 PostgreSQL 的性能,需要做以下步骤:
1、调整postgresql.conf文件中参数,设置为你认为合理或者期望的数值。比如我会提高共享缓存数量到 128MB,并增大 work_mem 和 sort_mem 参数。调整完后,不出意外, PostgreSQL 服务将无法启动,查看其日志(注意,macports 安装的 PostgreSQL 的日志位于:/opt/local/var/log/postgresql83/postgres.log),报:
FATAL: could not create shared memory segment: Cannot allocate memory
DETAIL: Failed system call was shmget(key=5432001, size=139018240, 03600).
HINT: This error usually means that PostgreSQL's request for a shared \
memory segment exceeded available memory or swap space. To reduce the \
request size (currently 139018240 bytes), reduce PostgreSQL's shared_buffers \
parameter (currently 16384) and/or its max_connections parameter (currently 23).
The PostgreSQL documentation contains more information about shared \
memory configuration.
这是系统信号量不够,根据 PostgreSQL 官方网站文档 ,需要进行系统参数调整。
2、利用 sysctl 调整 kernel.sysv.* 相关参数。
先利用以下命令行测试可行的数量级别:
sysctl -w kern.sysv.shmall=327680
sysctl -w kern.sysv.shmmax=536870912
不断调整,不断尝试启动 PostgreSQL 服务,直到能正常启动。
3、最后将理想的 kern.sysv.* 相关参数写到 /etc/sysctl.conf 文件中,让系统启动的时候自动生效:
more /etc/sysctl.conf
kern.sysv.shmall=327680
kern.sysv.shmmax=536870912
调整完毕后,速度有明显提升。不过说实话,感觉没有 Ubuntu 桌面系统下高,也许有更多地方需要调整,有时间的时候好好研究一下。
Recent Comments