KeePass

终于开始了 KeePass 的迁移。原因大概是最早的单机版本策略在现在有点过时,随着 NAS 的加入,我们可以更加安全的共享自己的密码,从而在多个不同的设备上访问。这里又回到了多年以前在 Windows 里面就知道的 KeePass,这么多年了,似乎它还是这个领域不多的佼佼者。

我们这里提供两个数据访问方式:

  • Synology Drive:它可以选择单向或者双向同步,如果有的设备永远只读,那么可以选择单向同步;通过 Drive 多设备访问时,应该创建一个独立的目录作为单独的 sync task 存在,尽量不要使用比较黑科技的想法(比如 symlink 或者 mount –bind),这样多个设备就能比较容易的同步这一小部分文件
  • WebDAV,这需要在 NAS 上安装 WebDAV 服务器,开通 https 后通过 router 的 port forwarding 将其暴露在公网上,不少 KeePass 的客户端如果不能从 Synology Drive 获得,还是可以通过 WebDAV 完成同步的

Windows

Windows 的 KeepPass 是原生支持,功能最丰富,而群晖在 Windows 上的 CloudStation 客户端 Synology Drive 也是存在一个比较稳定的版本的,我们通过 drive 从 NAS 上 two way sync 密码文件夹到本地,然后再使用 KeepPass 打开该文件即可,可以修改文件(sync)也可以选择覆盖。

Mac

同样存在 Synology Drive,客户端可以选择 MacPass 这个免费的程序。不支持 WebDAV,但是也可以考虑使用 WebDAV 的 mount。

Android

通过 Keepass2Android Password Safe 这个免费的客户端通过 WebDAV 访问 NAS 上的密码文件。

iOS

通过 Synology Drive 与 KeepPass Touch 实现。后者可以选择 import 然后可以打开 iCloud 或者 drive 里面的文件,这时打开 drive 里面的即可。但是似乎免费版本有些限制,比较猥琐。

Linux

Synology Drive 也提供了 Fedora 和 Ubuntu 的 package,自用的 debian 可以使用 Ubuntu 搞定。客户端有 mono 的 KeePass 和 Qt 的 KeepPassXC,差别似乎不大,前者应该跟 Windows 下面的是一样的

Advertisements
KeePass

GPS 之初见

购买了一个 MT3339 的片子来做 GPS logger,相关信息如下:

直接拿 FL232RL 和这个片子连接,然后通过 USB 接入 MBP 就能通过 minicom 这个程序读出数据了。在公司阳台上坐了一小会就搜索到了卫星,下面是一部分 NMEA 数据片段

$GPGGA,202439.100,4740.2168,N,12211.8122,W,1,8,1.81,49.9,M,-17.2,M,,*5E
$GPGSA,A,3,29,20,02,05,18,13,25,15,,,,,2.35,1.81,1.50*0C
$GPRMC,202439.100,A,4740.2168,N,12211.8122,W,0.01,128.32,220916,,,A*74
$GPVTG,128.32,T,,M,0.01,N,0.02,K,A*34
$GPGGA,202439.200,4740.2168,N,12211.8122,W,1,8,1.81,49.9,M,-17.2,M,,*5D
$GPGSA,A,3,29,20,02,05,18,13,25,15,,,,,2.35,1.81,1.50*0C
$GPGSV,2,1,08,29,73,122,44,20,68,157,43,05,38,056,43,18,22,205,42*76
$GPGSV,2,2,08,25,21,192,42,13,16,102,40,15,15,135,41,02,05,078,32*70
$GPRMC,202439.200,A,4740.2168,N,12211.8122,W,0.01,128.32,220916,,,A*77
$GPVTG,128.32,T,,M,0.01,N,0.02,K,A*34
$GPGGA,202439.300,4740.2168,N,12211.8122,W,1,8,1.81,49.9,M,-17.2,M,,*5C
$GPGSA,A,3,29,20,02,05,18,13,25,15,,,,,2.35,1.81,1.50*0C
$GPRMC,202439.300,A,4740.2168,N,12211.8122,W,0.01,128.32,220916,,,A*76
$GPVTG,128.32,T,,M,0.01,N,0.02,K,A*34

非常有意思,这里有这个数据格式的介绍,比如这段

$GPGGA,202439.100,4740.2168,N,12211.8122,W,1,8,1.81,49.9,M,-17.2,M,,*5E

表示的是 UTC 时间 20:24:39.100 我所处的经纬度为 N 47 度 40.2168 分,W 122 度 11.8122 分,GPS fix 数据,8 颗卫星,1.81 表示 horizontal dilution,平均海平面上高度 49.9 米,WGS84 椭球高度 -17.2 米。

有兴趣继续看看。待更新。

GPS 之初见

第一个 iPad 程序

总算把巨无霸 xcode 以及 ios 的 sdk 装了上去,安装程序巨傻,说要关掉 iTunes,我都关了但是还是不继续装下去,也没搞明白为啥。后来怒了,ps 看了一眼,居然有个叫 iTunesHelper 的进程,杀掉之后就开始正常的安装了下去(省略骂人字样若干)。

启动 Xcode,创建新的项目,选择 iOS 里面对应的程序,如 view 类型之后,xcode 纠缠生了一个基本的模板,可以运行,我们只需要点上面的开始按钮,xcode 就会启动编译器、连接器进行编译链接,末了还会启动模拟器。由于我们在界面上什么都没写,所以打开模拟器之后是这样的:

hello 项目运行起来之后的样子。

按一下 home 按钮,这个模拟器居然跟真的 iPad 一样会回到桌面。

由于没有进行任何设置,hello 的图标也是全白的。

可能细心的人已经看见这里 iOS 的版本号了,虽然我的 iPad 是 5.0.1 的 iOS,我却无法使用最新的 xcode 和 SDK,这是因为犯贱的 apple 认为那个只能在 Lion (Mac OS X 10.7)下运行,虽说 Xcode + iOS SDK 是免费的,但是 Lion 却不便宜。

Xcode 里面列出来了一些 source code,那些都是苹果设计 GUI 的理念的体现,我们这里只是简单的熟悉一下使用的 objective C 语言。因此从 hello world 开始好了。objective C 是 C 的扩展,扩展的启发来自 smalltalk,现在用的主要是 Apple 在 2007 年搞的 objective C 2.0。讽刺的很,apple 当初发布 iPhone 并没有给开发者 native API,而只是希望有人为 safari 开发一些基于 web 的应用。正如 chrome OS 到现在都一直没见到什么起色一样,当时的 iPhone 应用也是一潭死水,直到 apple 发布了基于 object C 的这个 SDK。为什么是 Object C?这大概是苹果的“历史包袱”,Jobs 出走阶段去了一个叫 NeXT 的公司,他们做了一个 NeXT 风格的界面,后来被苹果收购。其实这个玩意很早的时候还接触过其 GNU 版本,那就是集成在 window maker 里面的 GNUStep 界面:

GNUStep 的界面

这个 NeXT 系的都是使用 Objective C 写成的,在此之上 apple 现在使用的 Cocoa 界面也是 objective C 写的。和 C++ 的老祖 simula 不同,objective c 的祖先是 smalltalk,里面一些比较细节可以参考 wiki。objective C 是靠 message 实现成员方法调用,而且 message 是运行时自动 binding 上的,这跟 C++ 崇尚编译时 binding 的思路完全不同。

#import <Foundation/Foundation.h>

int
main (int argc, const char* argv[]) {
  NSAutoreleasePool* pool
    = [[NSAutoreleasePool alloc] init] ;

  NSLog (@"Hello World!") ;
  [pool drain] ;
  return 0 ;
}

不要惊讶于以上程序与 C 代码非常之象,因为 objective C 是 C 的 superset,完全兼容 C 的语法。同时我们也不难理解其中中括号部分,那就是 message,这里的字符串前面加 at 是为了标明这不是一个 C-style 的字符串,而是一个 NSString。编译也很简单,

$ make hello LDFLAGS+="-framework Foundation"
cc   -framework Foundation  hello.m   -o hello
$ ./hello
2011-11-21 08:17:33.331 hello[72422:903] Hello World!

这里的 framework 和动态链接库类似,只是是 objective C 写的。其实像 Qt 提供的 framework 估计也就是提供了类似的 binding?后面我们熟悉了更多关于界面设计以及 object C 的细节以后会详细的介绍更多的东西。

——————
And they said one to another, Go to, let us make brick, and burn them thoroughly. And they had brick for stone, and slime had they for mortar.

第一个 iPad 程序