在mac osx构建测试用途的linux服务器

mac osx从10.9升级到10.10测试版,导致有些程序无法使用,包括之前使用port安装的系列软件(apache、postgresql、php),因此需要另想办法来处理测试系统。

VirtualBox在10.10上可以正常使用,因此就想用virtualbox虚拟一个ubuntu server来当做本机的测试服务器。作为测试用途的linux虚拟服务器,在网络上有一定要求,即host可以任意访问vm,vm可以上外网,但外网不能直接访问vm。

VirtualBox默认的几个网络类型,好像都不能直接满足此要求(包括NAT、Host-only等),但搜索后突然想起可以用多网卡来混合支持此测试服务器的网络要求,即用一个NAT网卡加上一个Host-only网卡,即可以直接满足其作为测试服务器的要求。

下载、安装,分配了8G的硬盘空间,然后分配2个对应的网卡,最后安装完成后在虚拟服务器中设置对应的网卡,两个网络可以设置为dhcp,其中host-only的网卡默认分配的网络地址是192.168.56.102(假如只有一个虚拟主机),而mac osx上会添加一个虚拟网卡,分配的地址是192.168.56.1。然后就可以ssh、pgadmin等工具直接访问虚拟服务器。

mac下使用goagentx的安全证书问题

不晓得从啥时候开始,air笔记本上的goagentx就有问题了。最近google封的厉害,于是又将其折腾了一下,发现遇到的问题主要是安全证书的问题,才这个博客发现了解决方法:
解决Mac版Firefox使用GoagentX遇到的安全证书问题

主要方法总结:
1. 运行goagentx
2. 在finder中拷贝goagentx中的ca.crt证书,
在~/Library/Application Support/GoAgentX/Running/目录下可以看到一个uuid目录,进入后可以拷贝local/CA.crt文件到桌面或其他目录。
3. 将CA.crt导入到Firefox,这样就可以解决安全证书的问题

mac/linux下处理不能显示英文数字的pdf

在mac下看中文文献(特别是来自于cnki的文献),有时会遇到奇怪的问题。这次就遇到了英文及数字不显示的问题,即中文显示正常,但其他都不正常。在网上搜索发现,大家都没有提到很好的解决方法,多数是安装adobe reader了事,算是临时解决看的问题。但这个方案不能对pdf进行注记、高亮。因此还是有问题的。

最终在stackexchange上找到一个相关的方法:将pdf重新生成。
即通过两个命令进行转换:

pdftops source.pdf tmp.ps
ps2pdf tmp.ps dest.pdf

这样就可以完美解决!

mac下使用preview就可以继续处理了。

 

更新:

不能使用已编辑过的pdf转换,否则转换不成功。如保存高亮后的pdf,必须使用原始下载的pdf,先转换再标注。

mac osx 下安装geoR

geoR是R中的一个地统计插件。

在mac下安装R很简单,直接下载安装包,然后安装即可。

但在安装geoR插件时出现问题,导致R无反应,最后检查发现mac osx下需要先安装X11,可以在http://xquartz.macosforge.org/首先下载X11安装包,安装后需要重新登陆,在terminal下执行:

sudo R64

在R中执行以下命令:

install.packages(“geoR”,dependencies=T)

会提示选择一个cran镜像,然后就就开始下载安装了。

然后下次就不需要sudo,可以直接执行R64,然后:

library(“geoR”)

就可以执行geoR中的命令了

 

iphone4安装ios6不能运行电话程序

iphone4 美版已解锁越狱,就用itunes直接安装ios6,安装倒没有什么问题,安装完后直接恢复,但运行电话程序时,弹出电话窗口(中间没有内容),一会(2-3秒)后就直接退出了,从通讯录里可以直接拨打电话,呼入电话也可以接通,晕。

搜索了一下,网上有相同问题的人很少,weiphone上只有一个,也还没有解决。想了想,估计可能和5.1.1的越狱有关系,因此又重新安装了一遍,但不恢复,设置为新的iphone,此次打电话没有问题了,但短信和通话记录又没有了,但这个应该可以通过越狱后恢复的,参考前面一贴:iphone4另类恢复。因此用redsn0w最新版本先不完美越狱,保证系统可以ssh进去,然后再恢复就可以了(注意:consolidated.db不要恢复,有可能这个就是不能打电话的原因)。

iphone4备份的另类恢复:无法使用itunes恢复的解决方法

美版iphone4有锁,之前一直都是采用伪激活方法,没法使用推送和facetime,最近在taobao上买了att激活卡,在激活和越狱后遇到了iphone的备份恢复问题,特此记录,供有类似问题的同学参考。

重新激活后不能恢复之前的备份,需要设置为新iphone,就在这一步带来了问题。但之前的之前的最新call_history、sms等还没有单独备份出来,因此首先想到的就是先从旧的备份里恢复。

但在itunes里恢复的时候傻眼了,从备份中恢复的窗口里显示的备份居然不完整(此备份是好久以前了),而刚刚最新的备份居然不显示。

抱着侥幸的心态,先从此次新的备份里先恢复看看。恢复完成后发现通话记录、sms都只到这个次新的时间点,大量的信息丢失,因此不可接受。

为什么itunes里不显示所有的备份?找了很久也没有找到一个合适的解决办法。

进入到itunes的备份目录,我在mac下是在 ~/Library/Application Support/MobileSync目录下,进去后发现系统重装之前的时间点的确是有备份的。

同时在google过程中发现还有别的软件可以读取itunes的备份记录,而itunes的备份中文件名都是一个编码后的文件。包括data recovery for itunes,下载下来运行后先试用发现最新的备份记录中各种信息的确在那儿,但试用版不能恢复文件。又找到了另外一个iphone backup extractor,这个是用.net实现的,在mac下可以通过mono来运行,但速度超慢,不知为何。

但从其官网网站的帮助里找到了这个好东西:iphone备份文件各种重要信息的命名方法!(iTunes stores the backup files with hex-encoded SHA1 hashes.)

几个重要文件的备份文件如下表。

Contents OS Real filename Backup filename Type
SMS / Text messages 1-6 sms.db 3d0d7e5fb2ce288813306e4d4636395e047a3d28 SQLite 3
Contacts / address book 1 AddressBook.sqlitedb adb8c77534444e97c31ff15924d50f3ed1fbd3b1 SQLite 3
Contacts / address book 2-6 AddressBook.sqlitedb 31bb7ba8914766d4ba40d6dfb6113c8b614be442 SQLite 3
Calendar 1 Calendar.sqlitedb 14ee8cdc3e6e0220399ff210246e1c92b7df89a0 SQLite 3
Calendar 2-6 Calendar.sqlitedb 2041457d5fe04d39d0ab481178355df6781e6858 SQLite 3
Notes 1-3 notes.db 740b7eaf93d6ea5d305e88bb349c8e9643f48c3b SQLite 3
Notes 4-6 notes.sqlite ca3bc056d4da0bbf88b5fb3be254f3b7147e639c SQLite 3
Call history 1 call_history.db a49bfab36504be1bf563c1d1813b05efd6076717 SQLite 3
Call history 2-3 call_history.db ff1324e6b949111b2fb449ecddb50c89c3699a78 SQLite 3
Call history 4-6 call_history.db 2b2b0084a1bc3a5ac8c27afdf14afb42c61a19ca SQLite 3
Locations 4-6 consolidated.db 4096c9ec676f2847dc283405900e284a7c815836 SQLite 3

因此想是否可以直接从这些备份里找到几个关键的数据库文件,然后越狱后用ssh覆盖对应的文件。重新安装系统、越狱、安装openssh。然后通过ssh拷贝所有的文件到iphone中:

/private/var/mobile/Library/SMS/sms.db
/var/root/Library/AddressBook/AddressBook.sqlitedb
/var/root/Library/Caches/locationd/consolidated.db
/private/var/wireless/Library/CallHistory/call_history.db

其实,最重要的就是sms和call history,其他的关系不大。同时要注意,其中数据库文件的另外缓存文件(如sms.db-wal等文件)是需要删除的,然后将手机重新启动即可。

iphone4下突然“其他”容量大增导致可用空间变小

在itunes里iphone连接的时候有个各类型的文件大小图,最近突然发现里面的“其他”所占空间突然大增,印象之前一直是不到1G,现在突然增大8G左右,而一共也才16G而已。在网上找了很多帖子进行参考,但是都没有效果:

http://bbs.weiphone.com/read-htm-tid-1341935.html

因此决定将iphone下的所有文件(即/private/var目录)都拷贝到台式机上看看到底是什么东西占了这么大(主要是在ios下没有一个命令可以直接看各目录的大小,也没有du命令)。

拷贝到ubuntu下用baobab一看,一目了然:

发现其中的Media/HackStore目录应该就是无缘无故突然多出来的“其他”容量,再次搜索,发现这个是ios5用absinthe越狱后遗留下的产物,其中多数是照片,正常情况下应该是转移到Photos目录下的,直接删除这个目录就可以了!

 

Install OpenSceneGraph in mac lion

This post describe the problem when compiled the OSG in mac lion, a simple step by step to compile osg is here.

1. download the latest OSG code by svn:

svn checkout http://www.openscenegraph.org/svn/osg/OpenSceneGraph/trunk OpenSceneGraph-SVN

2. change to OSG directory

cd OpenSceneGraph-SVN

3. prepare jasper library by a tricky

sudo ln -s /opt/local/include/jasper /Library/Frameworks/UnixImageIO.framework/Headers/jasper

4. change the cmake

cmake -D BUILD_OSG_APPLICATIONS:BOOL=OFF \
-D CMAKE_OSX_ARCHITECTURES:STRING=x86_64 \
-D OSG_WINDOWING_SYSTEM:STRING=macosx10.7 \
-D OSG_DEFAULT_IMAGE_PLUGIN_FOR_OSX:STRING=imageio \
-D OPENTHREADS_ATOMIC_USE_MUTEX:BOOL=ON \
.

5. make & install

make
sudo make install

在mac lion下安装OpenSceneGraph

因项目汇报需要,需演示一个简单的基于OpenSceneGraph的三维科学数据展示平台,但之前该系统在linux(ubuntu和fedora)下运行都没有问题,但现在手头找不到一台装ubuntu的笔记本了,临时和G借了一台,但系统做完后发现其外接视频口是坏的(硬件问题,之前在windows下就无法外接了,估计是主板的问题,或者哪个接口松动了)。
首先想到,能否在虚拟机下完成此工作,在mac下安装免费的virtualbox是没有问题的,因此马上就试验了一下,发现其中二维作图部分都没有问题,但是一旦进入了三维部分,即调用了OpenGL就出现问题,各种不正常。(BTW:在台式机上用同样的虚拟机,可以进行三维演示,主机是UBUNTU系统,估计和显卡驱动有关,air的显卡太烂了)
虚拟机的办法不同,那就看看能否在mac下直接编译三维演示程序,相应的代码都是开源程序的,想当然觉得问题不大,但实际试验下来,发现问题还是挺多的,而且有时候还很麻烦。

1、软件包管理形式尝试
在mac下也有些类似于debian\ubuntu的软件包管理系统,如fink和port,之前二者都有尝试,但整体的感觉和linux下的软件包维护相比,活力要差很多,导致软件库整体偏小,而且有的更新不及时。
而且,在安装OpenSceneGraph时出现编译错误
2. 二进制包尝试
在OpenSceneGraph官方网站上有for mac的官方二进制包,下载下来后直接解压就可以使用。但我在在编译三维代码时遇到了奇怪的错误:

Undefined symbols for architecture x86_64:
“OpenThreads::Atomic::operator++()”, referenced from:
osg::Referenced::ref() constin ccMX2NbX.o
“OpenThreads::Atomic::operator–()”, referenced from:
osg::Referenced::unref() constin ccMX2NbX.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

搜索了一下,没有找到原因,也没找到解决方法。试验了两个版本:3.0.1和2.8.5,都是同样的问题。
3. 源代码安装
根据这个网址,下载最新的svn代码,然后编译之。

svn checkout http://www.openscenegraph.org/svn/osg/OpenSceneGraph/trunk OpenSceneGraph-SVN
cd OpenSceneGraph-SVN
cmake -D BUILD_OSG_APPLICATIONS:BOOL=OFF \
-D CMAKE_OSX_ARCHITECTURES:STRING=x86_64 \
-D OSG_WINDOWING_SYSTEM:STRING=Cocoa \
-D OSG_DEFAULT_IMAGE_PLUGIN_FOR_OSX:STRING=imageio \
.

编译的速度好慢,但到了84%的时候,突然跳出个错误,说是找不到jasper头文件,于是用port安装:

sudo port install jasper

然后重新编译,但仍然有同样的错误,好奇怪,但也有比较诡异的解决办法,软链接过去:

sudo ln -s /opt/local/include/jasper /Library/Frameworks/UnixImageIO.framework/Headers/jasper

好了,编译成功,但编译我们的三维代码仍然有之前的问题!再搜索,说是在MAC下有两种编译方法,推荐使用Xcode来编译,好吧,于是再尝试用Xcode来编译:
进入svn目录,建立Xcode目录,然后cmake生成:

mkdir Xcode
cd Xcode
cmake -D BUILD_OSG_APPLICATIONS:BOOL=OFF -D CMAKE_OSX_ARCHITECTURES:STRING=x86_64 -D OSG_WINDOWING_SYSTEM=Cocoa -D OSG_DEFAULT_IMAGE_PLUGIN_FOR_OSX:STRING=imageio -G Xcode ..

进入Xcode后的确可以编译,但编译的结果同上,仍然有问题,再搜,最终在这个地方找到了问题:
在cmake要指定一个参数:

-D OPENTHREADS_ATOMIC_USE_MUTEX:BOOL=ON

果然,加了这个参数就万事大吉了!

BTW: 写代码、管理软件包还是在LINUX下方便啊。

在mac及ios上使用sip软件

参见上篇:在ubuntu上安装使用sip软件。 笔记本用的是apple air,也需要安装对应的软件才能使用,在mac下比较方便的是可以使用appstore来安装,搜索telephone就可以,安装之后设置即可。

在accounts中设置账号,在network中设置stun服务器,其中默认的端口号为3478。

既然mac可以用,那iphone、ipad是否也可以用?搜索后发现也可以啊,而且有free的app可用,最终选择了dialer+,感觉不错,同样也需要设置,注意也要打开stun服务器。