WordPress最近遇到几个安全问题

1)Froget Password Disable
据说会被Hack, 查找了一下,可以通过filter取消forget password的功能。

function remove_lostpassword_text ( $text ) {
if ($text == 'Lost your password?'){$text = '';}
return $text;
}
add_filter( 'gettext', 'remove_lostpassword_text' );


function disable_password_reset() {
return false;
}
add_filter ( 'allow_password_reset', 'disable_password_reset' );

2) 删除不需要的主题
前一阵子我的一个网站被入侵,就是wordpress默认自带的主题Twenty Eleven. Google了一下,发现是个很典型的问题,所以现在新安装的wordpress就删除这些没用的主题吧。

 

Lumia 710 初体验

用了不到一年的HTC Mozart掉了,心疼。
对于Window Phone的体验还是相当好的,又想试试看不同厂家的OEM效果,于是注意力集中在了Nokia Lumia系列。主要比较了几款手机。

1) Lumia 800, 单核CPU 1.5G, 512M RAM. 800w 摄像头。
2) Lumia 710, 水货950,配置基本与800相同,摄像头从800w降级到了500w。外观没有那么方方酷酷的造型,用的也是比较轻的塑料材质。
3) Lumia 610, 水货800,各个配置都比710差了很多。
4) Lumia 920, 贵。。。

怎么看都是Lumia 710啊,果断下手,Lumia系列还都有各种彩壳,果断选了自己喜欢的蓝黑宽。补充一句,950的价格淘宝上就三家。主要特点都一样,店里只有三,四种产品,其他基本没有成交量,只有710的销量,评价被冲的很高很夸张。一度怀疑是黑店啊。为了便宜只好拼了。幸好貌似用起来没啥。

用了差不多一周,体验总结如下,需要说明的是用了HTC Mozart不到一年,对WP系统也算熟悉,主要的体验都是基于两个OEM系统的比较和性能上来说的。

1) 响应速度不如Mozart。硬件好了,响应速度却慢了,可以理解为Nokia的OEM水平不够么
2) 拍照体验好很多。虽然摄像头像素降低了,但是快门响应速度快了很多,有iphone一样的感受。
3) 九格中文输入法好亲切,按键不用那么精确了输入效果也好很多了。
4) 电量显示终于可以数字显示了。
5) Nokia Collection比HTC Collection强大很多,HTC Hub一度不知道有啥用处。
6) 三个实体按钮做成了凸起和亮灯,一开始不习惯,不再是一个平面了。现在用惯了还不错。

总体感觉还是不错的。何况性价比这么高。支持Nokia,支持Lumia!

 

百度网盘邀请码

http://pan.baidu.com/netdisk/beinvited?invite_code=6cbe66fbff2450fe7d32e56a983702c7
http://pan.baidu.com/netdisk/beinvited?invite_code=cdd6b60f1f36889cd76380484a98fcc5
http://pan.baidu.com/netdisk/beinvited?invite_code=078842192d3efeeffc78034584771a02
http://pan.baidu.com/netdisk/beinvited?invite_code=75a77625a6f703b042e68feda28119f3

 

在Webcenter Spaces中手动配置UCM

如果条件满足的话,Webcenter Spaces在安装过程中会自动建立一个UCM的连接。详情参见5.3.1.3 Content Server – Integration.引用部分内容如下:

To use Content Server as a content repository, you must create a repository connection. For Spaces, a repository connection is automatically configured and set as the default connection, if it does not already exist. The connection is configured at application startup if the general conditions specified in Section 4.2, “Working with Oracle WebCenter Portal: Spaces” are met. However, the connection is not configured if the Server Socket Port or the user granted the Administrator Role cannot be found.

For information about how to register content repositories and manage repository connections, see the “Registering Content Repositories” section in Oracle Fusion Middleware Administrator’s Guide for Oracle WebCenter Portal.

不过如果你之前没有安装好UCM,那就麻烦了。。。。不仅享受不到这个福利,而且后续的手动安装也不是很明了。这里大致介绍一下步骤,希望大家不要步我后尘。

在EM中建立Content Server链接

启动Weblogic Server, 访问Enterprise Manager, 默认链接http://localhost:7001/em.在左侧目录树中选择 -> WebCenter -> Portal -> Spaces -> webcenter. 如下图所示。



点击上方的”WebCenter Portal”->Settings->Service Configuration.
在这里可以配置各种服务链接,点击Content Repository,选择Add.出现下图所示表格.

注意一定要选择“Active Connection”,保证Spaces可以默认就连接到这个Content Server.
最后重启整个Weblogic Server.

在Spaces中配置Document Services

Spaces服务器启动后,访问它的默认主页http://localhost:8888/webcenter.选择你有管理员权限的空间,选择右上角的齿轮,选择”Manage”->”All Settings”.

如上图所示,选择”Service Tab”,勾选“Document”服务。

如上图所示,选择“Page Tab”,”Available Pages”,这是可以看到出现Documents(之前是没有的),勾选“Show pages”。

如上图所示,最后选择“Content Tab”,你就可以看到“Dcoument”了。Finally。。。

 

用Java实现ARP的收发

Tags: , ,

Jpcap的安装

  • 下载并安装Java Runtime.
  • 下载并安装Winpcap.
  • 下载并安装Jpcap.注意生成的jpcap.jar和jpcap.dll的文件路径。

在Eclipse中配置Jpcap

  • 创建Java Project
  • 将jpcap.jar添加到classpath中。
  • 将jpcap.dll拷贝到eclipse.exe同一目录下。


获得网络接口列表

现在的笔记本都至少有两个以上的网络接口,Jpcap只能针对一个网络接口进行网络包的监听收发,所以第一步是要了解你有哪些网络接口。这是一段现成的代码。

// Obtain the list of network interfaces
NetworkInterface[] devices = JpcapCaptor.getDeviceList();

// for each network interface
for (int i = 0; i < devices.length; i++) {
// print out its name and description
System.out.println(i + ": " + devices[i].name + "("
+ devices[i].description + ")");

// print out its datalink name and description
System.out.println(" datalink: " + devices[i].datalink_name + "("
+ devices[i].datalink_description + ")");

// print out its MAC address
System.out.print(" MAC address:");
for (byte b : devices[i].mac_address)
System.out.print(Integer.toHexString(b & 0xff) + ":");
System.out.println();

// print out its IP address, subnet mask and broadcast address
for (NetworkInterfaceAddress a : devices[i].addresses)
System.out.println(" address:" + a.address + " " + a.subnet
+ " " + a.broadcast);

访问ARP Table

Java没有办法直接访问Windows下的ARP Table,网上推荐的方法是调用Command Line和SNMP两种。我这里使用的是前者。

final String dosCommand = “arp -a “;
try {
final Process process = Runtime.getRuntime().exec(dosCommand);
BufferedReader br = new BufferedReader(new InputStreamReader(
process.getInputStream()));
String line = null;
/*
* example:192.168.124.255 ff-ff-ff-ff-ff-ff 静态
*/
while ((line = br.readLine()) != null) {
if (line.indexOf(” ” + ip.getHostName() + ” “) > -1) {
StringTokenizer st = new StringTokenizer(line);
st.nextToken();
// return the mac address according to the ip
return st.nextToken();
}
}
} catch (IOException e) {
e.printStackTrace();
}
return null;

针对特定IP发起ARP Request

注意“captor.setFilter(“arp”, true);”的作用是过滤除了ARP之外所有的网络包,用于之后的网络包监听。

int index = Integer.parseInt(args[0]);
InetAddress targetIP = InetAddress.getByName(args[1]);
NetworkInterface device = getDevice(index);
JpcapCaptor captor = JpcapCaptor.openDevice(device, 65535, false,
20);
captor.setFilter(“arp”, true);
JpcapSender sender = captor.getJpcapSenderInstance();
// 进行广播数据报的MAC地址
byte[] broadcast = new byte[] { (byte) 255, (byte) 255, (byte) 255,
(byte) 255, (byte) 255, (byte) 255 };
// 构造REQUEST 类型的ARP的数据包
ARPPacket arp = new ARPPacket();
arp.hardtype = ARPPacket.HARDTYPE_ETHER;
arp.prototype = ARPPacket.PROTOTYPE_IP;
arp.operation = ARPPacket.ARP_REQUEST;
arp.hlen = 6;
arp.plen = 4;
// 源MAC地址
arp.sender_hardaddr = device.mac_address;
// 源IP地址
arp.sender_protoaddr = device.addresses[0].address.getAddress();
// 目地MAC地址:广播地址全为1(二进制)
arp.target_hardaddr = broadcast;
// 目地IP地址
arp.target_protoaddr = targetIP.getAddress();
// 构造以太网头部
EthernetPacket ether = new EthernetPacket();
ether.frametype = EthernetPacket.ETHERTYPE_ARP;
ether.src_mac = device.mac_address;
ether.dst_mac = broadcast;
// ARP数据包加上以网关头部
arp.datalink = ether;
// 向局域网广播ARP请求数据报
sender.sendPacket(arp);

监听ARP

Jpacap处理网络包的形式有好几种,具体可以参考官网的Tutorial.我这里使用的getPacket使用的blocking模式,所以不会同步处理包监听。
这段代码最后会判断返回的mac是否是本地缓存的,如果不是则可以认为是ARP欺骗。

while (true) {
ARPPacket packet = (ARPPacket) captor.getPacket();
if (packet != null && packet.operation == ARPPacket.ARP_REPLY) {
Inet4Address ip = (Inet4Address) packet
.getSenderProtocolAddress();
if (ip.equals(targetIP)) {
String localMac = ARP.getMacByIP(ip);
if (localMac != null ){
localMac = localMac.replaceAll(“-”, “:”);
}
if (localMac.equals(packet.getSenderHardwareAddress())) {
//Cheat
System.exit(1);
}
}
}
}

问题总结

Can’t load IA 32-bit .dll on a AMD 64-bit platform
Jpcap目前不支持64位,如果你Eclipse运行的vm是64位的,就会报这个错,下载一个32位的JRE或者JDK就可以了。


java.lang.UnsatisfiedLinkError: no jpcap in java.library.path
这是classpath中找不到DLL文件,解决的办法很多。我的做法是把jpcap.dll拷贝到eclipse.exe的文件夹下。

参考链接

WinPcap
Jpcap Download
Jpcap How to install
Jpcap 在myeclipse下的安装
JPCAP——Java中的数据链路层控制(libpcap)

 

ASA Phone Proxy 配置 (Non-secure Mode)

ASA Phone Proxy 配置 (Non-secure Mode)。之前的老文,发出来记录一下。
Non-Secure Mode如下图所述,ASA对外网Signaling是加密的(TLS),语音也是加密的(SRTP);对内网Signaling是非加密的(TCP+SIP),语音也是非加密的(RTP)。

Phone Proxy Secure Deployment

ASA Phone Proxy ( None-Secure)

asa-pp-non# show run
asa-pp-non# show running-config
: Saved
:
ASA Version 8.2(1)4
!
hostname asa-pp-non
domain-name crdc.cisco.com
enable password 2KFQnbNIdI.2KYOU encrypted
passwd YuEtEaxrQQPO/oUA encrypted
names
!
interface Vlan1
nameif inside
security-level 100
ip address 100.100.8.19 255.255.255.240
!
interface Vlan888
nameif outside
security-level 0
ip address 8.8.8.251 255.255.255.240
!
interface Ethernet0/0
switchport access vlan 888
!
interface Ethernet0/1
!
interface Ethernet0/2
!
interface Ethernet0/3
!
interface Ethernet0/4
!
interface Ethernet0/5
!
interface Ethernet0/6
!
interface Ethernet0/7
!
ftp mode passive
dns domain-lookup inside
dns server-group DefaultDNS
name-server 10.74.53.182
domain-name crdc.cisco.com
same-security-traffic permit intra-interface
access-list inside_access_in extended permit ip any any
access-list outside_access_in extended permit ip any any
pager lines 24
mtu inside 1500
mtu outside 1500
no failover
icmp unreachable rate-limit 1 burst-size 1
no asdm history enable
arp timeout 14400
access-group inside_access_in in interface inside
access-group outside_access_in in interface outside
route inside 0.0.0.0 0.0.0.0 100.100.8.17 1
route outside 100.100.8.0 255.255.255.192 8.8.8.254 1
timeout xlate 3:00:00
timeout conn 1:00:00 half-closed 0:10:00 udp 0:02:00 icmp 0:00:02
timeout sunrpc 0:10:00 h323 0:05:00 h225 1:00:00 mgcp 0:05:00 mgcp-pat 0:05:00
timeout sip 0:30:00 sip_media 0:02:00 sip-invite 0:03:00 sip-disconnect 0:02:00
timeout sip-provisional-media 0:02:00 uauth 0:05:00 absolute
timeout tcp-proxy-reassembly 0:01:00
dynamic-access-policy-record DfltAccessPolicy
http server enable
http 100.100.8.0 255.255.255.0 inside
http 10.74.32.0 255.255.224.0 inside
no snmp-server location
no snmp-server contact
snmp-server enable traps snmp authentication linkup linkdown coldstart
crypto ipsec security-association lifetime seconds 28800
crypto ipsec security-association lifetime kilobytes 4608000
crypto ca trustpoint Cisco_Manufacturing_CA
enrollment terminal
crl configure
crypto ca trustpoint CAP-RTP-001
enrollment terminal
crl configure
crypto ca trustpoint CAP-RTP-002
enrollment terminal
crl configure
crypto ca trustpoint Pubcucm_tftp_server
enrollment self
serial-number
keypair Pubcucmtftp_kp
crl configure
crypto ca trustpoint _internal_myctl_SAST_1
enrollment self
keypair _internal_myctl_SAST_1
crl configure
crypto ca trustpoint _internal_myctl_SAST_0
enrollment self
keypair _internal_myctl_SAST_0
crl configure
crypto ca trustpoint _internal_PP_myctl
enrollment self
keypair _internal_PP_myct
crl configure
crypto ca certificate chain Cisco_Manufacturing_CA
certificate ca 6a6967b3000000000003
308204d9 308203c1 a0030201 02020a6a 6967b300 00000000 03300d06 092a8648
86f70d01 01050500 30353116 30140603 55040a13 0d436973 636f2053 79737465
6d73311b 30190603 55040313 12436973 636f2052 6f6f7420 43412032 30343830
1e170d30 35303631 30323231 3630315a 170d3239 30353134 32303235 34325a30
39311630 14060355 040a130d 43697363 6f205379 7374656d 73311f30 1d060355
04031316 43697363 6f204d61 6e756661 63747572 696e6720 43413082 0120300d
06092a86 4886f70d 01010105 00038201 0d003082 01080282 010100a0 c5f7dc96
943515f1 f4994ebb 9b41e17d db791691 bbf354f2 414a9432 6262c923 f79ae7bb
9b79e807 294e30f5 ae1bc521 5646b0f8 f4e68e81 b816cca8 9b85d242 81db7ccb
94a91161 121c5cea 33201c9a 16a77ddb 99066ae2 36afecf8 0aff9867 07f430ee
a5f8881a aae8c73c 1cceee48 fdcd5c37 f186939e 3d71757d 34ee4b14 a9c0297b
0510ef87 9e693130 f548363f d8abce15 e2e8589f 3e627104 8726a415 620125aa
d5dfc9c9 5bb8c9a1 077bbe68 92939320 a86cbd15 75d3445d 454beca8 da60c7d8
c8d5c8ed 41e1f55f 578e5332 9349d5d9 0ff836aa 07c43241 c5a7af1d 19fff673
99395a73 67621334 0d1f5e95 70526417 06ec535c 5cdb6aea 35004102 0103a382
01e73082 01e33012 0603551d 130101ff 04083006 0101ff02 0100301d 0603551d
0e041604 14d0c522 26ab4f46 60ecae05 91c7dc5a d1b047f7 6c300b06 03551d0f
04040302 01863010 06092b06 01040182 37150104 03020100 30190609 2b060104
01823714 02040c1e 0a005300 75006200 43004130 1f060355 1d230418 30168014
27f3c815 1e6e9a02 0916ad2b a089605f da7b2faa 30430603 551d1f04 3c303a30
38a036a0 34863268 7474703a 2f2f7777 772e6369 73636f2e 636f6d2f 73656375
72697479 2f706b69 2f63726c 2f637263 61323034 382e6372 6c305006 082b0601
05050701 01044430 42304006 082b0601 05050730 02863468 7474703a 2f2f7777
772e6369 73636f2e 636f6d2f 73656375 72697479 2f706b69 2f636572 74732f63
72636132 3034382e 63657230 5c060355 1d200455 30533051 060a2b06 01040109
15010200 30433041 06082b06 01050507 02011635 68747470 3a2f2f77 77772e63
6973636f 2e636f6d 2f736563 75726974 792f706b 692f706f 6c696369 65732f69
6e646578 2e68746d 6c305e06 03551d25 04573055 06082b06 01050507 03010608
2b060105 05070302 06082b06 01050507 03050608 2b060105 05070306 06082b06
01050507 0307060a 2b060104 0182370a 0301060a 2b060104 01823714 02010609
2b060104 01823715 06300d06 092a8648 86f70d01 01050500 03820101 0030f330
2d8cf2ca 374a6499 24290af2 86aa42d5 23e8a2ea 2b6f6923 7a828e1c 4c09cfa4
4fab842f 37e96560 d19ac6d8 f30bf5de d027005c 6f1d91bd d14e5851 1dc9e3f7
38e7d30b d168be8e 22a54b06 e1e6a4aa 337d1a75 ba26f370 c66100a5 c379265b
a719d193 8dab9b10 11291fa1 82fdfd3c 4b6e65dc 934505e9 af336b67 23070686
22daebdc 87cf5921 421ae9cf 707588e0 243d5d7d 4e963880 97d56ff0 9b71d8ba
6019a5b0 6186addd 6566f6b9 27a2ee2f 619bbaa1 3061fdbe ac3514f9 b82d9706
afc3ef6d cc3d3ceb 95e981d3 8a5eb6ce fa79a46b d7a25764 c43f4cc9 dbe882ec
0166d410 88a256e5 3c57ede9 02a84891 6307ab61 264b1a13 9fe4dcda 5f
quit
crypto ca certificate chain CAP-RTP-001
certificate ca 7612f960153d6f9f4e42202032b72356
308203a8 30820290 a0030201 02021076 12f96015 3d6f9f4e 42202032 b7235630
0d06092a 864886f7 0d010105 0500302e 31163014 06035504 0a130d43 6973636f
20537973 74656d73 31143012 06035504 03130b43 41502d52 54502d30 3031301e
170d3033 30323036 32333237 31335a17 0d323330 32303632 33333633 345a302e
31163014 06035504 0a130d43 6973636f 20537973 74656d73 31143012 06035504
03130b43 41502d52 54502d30 30313082 0120300d 06092a86 4886f70d 01010105
00038201 0d003082 01080282 010100ac 55bbed18 de9b8709 ffbc8f2d 509ab83a
21c1967f dea7f4b0 969694b7 80cc196a 463da516 54a28f47 5d903b5f 104a3d54
a981389b 2fc7ac49 956262b8 1c143038 5345bb2e 273fa7a6 46860573 ce5c998d
55de78aa 5a5cfe14 037d695b ac816409 c6211f0b 3bbf09cf b0bbb2d4 ac362f67
0fd145f1 620852b3 1f07e2f1 aa74f150 367632ed a289e374 af0c5b78 ce7dfb9f
c8ebbe54 6ecf4c77 99d6dc04 47476c0f 36e58a3b 6bcb24d7 6b6c84c2 7f61d326
be7cb4a6 60cd6579 9e1e3a84 8153b750 5527e865 423be2b5 cb575453 5aa96093
58b6a2e4 aa3ef081 c7068ec1 dd1ebdda 53e6f0d6 e2e0486b 109f1316 78c696a3
cfba84cc 7094034f c1eb9f81 931acb02 0103a381 c33081c0 300b0603 551d0f04
04030201 86300f06 03551d13 0101ff04 05300301 01ff301d 0603551d 0e041604
14e917b1 82c71fcf aca91b6e f4a9269c 70ae05a0 9a306f06 03551d1f 04683066
3064a062 a060862d 68747470 3a2f2f63 61702d72 74702d30 30312f43 65727445
6e726f6c 6c2f4341 502d5254 502d3030 312e6372 6c862f66 696c653a 2f2f5c5c
6361702d 7274702d 3030315c 43657274 456e726f 6c6c5c43 41502d52 54502d30
30312e63 726c3010 06092b06 01040182 37150104 03020100 300d0609 2a864886
f70d0101 05050003 82010100 ab64fdeb f60c32dc 360f0e10 5fe175fa 0d574ab5
02acdca3 c7bbed15 a4431f20 7e9286f0 770929a2 17e4cdf4 f2629244 2f3575af
e90c468c ae67ba08 aaa71c12 ba0c0e79 e6780a5c f814466c 326a4b56 73938380
73a11aed f9b9de74 1195c48f 99454b8c 30732980 cd6e7123 8b3a6d68 80b97e00
7f4bd4ba 0b5ab462 94d9167e 6d8d48f2 597cde61 25cfadcc 5bd141fb 210275a2
0a4e3400 1428ba0f 69953bb5 50d21f78 43e3e563 98bcb2b1 a2d4864b 0616bacd
a61cd9ae c5558a52 b5eeaa6a 08f96528 b1804b87 d26e4aee ab7affe9 2fd2a574
bafe0028 96304a8b 13fb656d 8fc60094 d5a53d71 444b3cef 79343385 3778c193
74a2a6ce dc56275c a20a303d
quit
crypto ca certificate chain CAP-RTP-002
certificate ca 353fb24bd70f14a346c1f3a9ac725675
308203a8 30820290 a0030201 02021035 3fb24bd7 0f14a346 c1f3a9ac 72567530
0d06092a 864886f7 0d010105 0500302e 31163014 06035504 0a130d43 6973636f
20537973 74656d73 31143012 06035504 03130b43 41502d52 54502d30 3032301e
170d3033 31303130 32303138 34395a17 0d323331 30313032 30323733 375a302e
31163014 06035504 0a130d43 6973636f 20537973 74656d73 31143012 06035504
03130b43 41502d52 54502d30 30323082 0120300d 06092a86 4886f70d 01010105
00038201 0d003082 01080282 010100c4 266504ad 7dc3fd8d 65556fa6 308fae95
b570263b 575abd96 1cc8f394 5965d9d0 d8ce02b9 f808ccd6 b7cd8c46 24801878
57dc4440 a7301ddf e40fb1ef 136212ec c4f3b50f bcafbb4b cd2e5826 34521b65
01555fe4 d4206776 03368357 83932638 d6fc953f 3a179e44 67255a73 45c69dee
fb4d221b 21d7a3ad 38184171 8fd8c271 42183e65 09461434 736c77cc f380eebf
632c7b3f a5f92aa6 a8ef3490 8724a84f 4daf7fd7 0928f585 764d3558 3c0fe9af
1ed8763f a299a802 970004ad 1912d265 7de335b4 bcb6f789 dc68b9fa c8fdf85e
8a28ad8f 0f4883c0 77112a47 141dbee0 948fbe53 fe67b308 d40c8029 87bd790e
cdab9fd7 a190c1a2 a462c5f2 4a6e0b02 0103a381 c33081c0 300b0603 551d0f04
04030201 86300f06 03551d13 0101ff04 05300301 01ff301d 0603551d 0e041604
1452922b e288ee2e 098a4e7e 702c56a5 9ab4d49b 96306f06 03551d1f 04683066
3064a062 a060862d 68747470 3a2f2f63 61702d72 74702d30 30322f43 65727445
6e726f6c 6c2f4341 502d5254 502d3030 322e6372 6c862f66 696c653a 2f2f5c5c
6361702d 7274702d 3030325c 43657274 456e726f 6c6c5c43 41502d52 54502d30
30322e63 726c3010 06092b06 01040182 37150104 03020100 300d0609 2a864886
f70d0101 05050003 82010100 56838cef c4da3ad1 ea8fbb15 2ffe6ee5 50a1972b
d4d7af1f d298892c d5a2a76b c3462866 13e0e55d dc0c4b92 5aa94b6e 69277f9b
fc73c697 11266e19 451c0fab a55e6a28 901a48c5 b9911ee6 348a8920 0aede1e0
b6ea781c ffd97ca4 b03c0e34 0e5b0649 8b0a34c9 b73a654e 09050c1f 4da53e44
bf78443d b08c3a41 2eeeb873 78cb8089 34f9d16e 91512f0d 3a8674ad 0991ed1a
92841e76 36d7740e cb787f11 685b9e9d 0c67e85d af6d05ba 3488e86d 7e2f7f65
6918de0f bd3c7f67 d8a33f70 9c4a596e d9f62b3b 1edee854 d5882ad4 3d71f72b
8fab7f3c 0b5f0759 d9828f83 954d7bb1 57a638ec 7d72bff1 8933c16f 760bca94
4c5b1931 67947a4f 89a1bdb5
quit
crypto ca certificate chain Pubcucm_tftp_server
certificate 24a5b649
308201f3 3082015c a0030201 02020424 a5b64930 0d06092a 864886f7 0d010104
0500303e 313c3012 06035504 05130b4a 4d583131 31375a31 42423026 06092a86
4886f70d 01090216 19617361 2d70702d 6e6f6e2e 63726463 2e636973 636f2e63
6f6d301e 170d3039 30333130 31373336 33365a17 0d313930 33303831 37333633
365a303e 313c3012 06035504 05130b4a 4d583131 31375a31 42423026 06092a86
4886f70d 01090216 19617361 2d70702d 6e6f6e2e 63726463 2e636973 636f2e63
6f6d3081 9f300d06 092a8648 86f70d01 01010500 03818d00 30818902 818100b1
86797193 9857a801 69a09b1b 10c8c7c1 82177a3f 2960abe3 0ccf1b91 09b4313c
7eb7be71 247e9613 ee525415 d06ea780 61806776 02cbcf5d fdb26b45 19032d14
6caf5377 0561515d 35835304 9ae29fe0 3adba7b8 4310fc54 67cf55d1 e8b19205
da83329e d25553df 970978d7 e9d5abdd d85e525a ab531ee0 cac31a39 1766eb02
03010001 300d0609 2a864886 f70d0101 04050003 818100a8 fc8a375a da45dc71
2be31558 0237eaf8 154c496c 7f415953 9ab75310 b82c727b 80c28a74 de5e9359
e92f97e7 3e9bc28b 56d93d0c a34c308a dc95daf4 63c99e08 baf3d18d a3d98f93
7970dc9f 0c61a7e9 4b3eb8fb a2310870 f36fbae3 e9cd2ffc 0c74c13b ff7b6b95
2e6a7bee 6ce8a2cc 3a79c4f2 376960ce be23d65c 873d4a
quit
crypto ca certificate chain _internal_myctl_SAST_1
certificate 4614284b
308201fd 30820166 a0030201 02020446 14284b30 0d06092a 864886f7 0d010104
05003043 31123010 06035504 0a130943 6973636f 20496e63 310c300a 06035504
0b130353 5447311f 301d0603 55040314 165f696e 7465726e 616c5f6d 7963746c
5f534153 545f3130 1e170d30 39313231 35323235 3731305a 170d3139 31323133
32323537 31305a30 43311230 10060355 040a1309 43697363 6f20496e 63310c30
0a060355 040b1303 53544731 1f301d06 03550403 14165f69 6e746572 6e616c5f
6d796374 6c5f5341 53545f31 30819f30 0d06092a 864886f7 0d010101 05000381
8d003081 89028181 00c79482 a1874081 a454cbd1 4dfaf5f3 2338d123 d5cf25e4
8aa352d2 edb56c0c a5456e00 4620beaf bc129d7e f4ad266b 6bdd4509 68313524
ad479e00 d4fbdf8d 505248b8 555b11f1 469157d0 303a4e32 4b5d6864 8806fb74
e67ae364 9ea9a92b 83a5a3fd b214cea3 46bed2f1 dc4f26fa fef382f9 541182ab
d0708d23 d6add1b7 7d020301 0001300d 06092a86 4886f70d 01010405 00038181
00611f4a 2483388a cd6b25ad d9553d95 28a5c03b ab21ca7e 0792dd95 1b6904ea
cfbd1ce8 abcf776a a60e2dca 3a29c5ab ea6d05ce cac14ce7 9d19b366 5619897f
98958f89 ebfc1411 4377bc66 915c2614 956bbab0 01199d1b 9763e4a0 421acf15
1f6c74ad c942c5e2 4a3915b7 4926e12f 93841dcf bcf1a03e 02d3923f ccf9c1fb 40
quit
crypto ca certificate chain _internal_myctl_SAST_0
certificate 4214284b
308201fd 30820166 a0030201 02020442 14284b30 0d06092a 864886f7 0d010104
05003043 31123010 06035504 0a130943 6973636f 20496e63 310c300a 06035504
0b130353 5447311f 301d0603 55040314 165f696e 7465726e 616c5f6d 7963746c
5f534153 545f3030 1e170d30 39313231 35323235 3730365a 170d3139 31323133
32323537 30365a30 43311230 10060355 040a1309 43697363 6f20496e 63310c30
0a060355 040b1303 53544731 1f301d06 03550403 14165f69 6e746572 6e616c5f
6d796374 6c5f5341 53545f30 30819f30 0d06092a 864886f7 0d010101 05000381
8d003081 89028181 009923e3 0fe633ea 1d6bb81e 5548b020 662a85c7 341b16ef
8c717adc f53dd5d5 805e4cc1 0de07216 ad57e1d6 292b1f6c a8721abf 02f96191
2c6274c7 8384ab50 38a6173b baa57f20 4c395880 38266645 7811a666 a36a0676
a0f4c82f a5c389a7 fe0d620c d3621b5c bf0aaf7f 081781d6 85c2f699 f11af8d4
bbf08443 d7fb255d 9d020301 0001300d 06092a86 4886f70d 01010405 00038181
0039aeff 5c3a5866 b1f9b5f4 01838e68 a7dbf5a6 fffda11f 3040767a b60d839f
d81a3b01 6bd079a3 7a446aa9 826ab8a4 e12ab2e0 45ea8a92 e0524e42 87bdc4cb
30198001 4c24c601 5d12a418 1f68806f bd250838 21723156 79276b68 449557e0
405de059 91a45e02 5ed6f96c 62d376ca 3480fa63 c17b3d20 5edfe380 882f73cc 77
quit
crypto ca certificate chain _internal_PP_myctl
certificate 4a14284b
308201f5 3082015e a0030201 0202044a 14284b30 0d06092a 864886f7 0d010104
0500303f 31123010 06035504 0a130943 6973636f 20496e63 310c300a 06035504
0b130353 5447311b 30190603 55040314 125f696e 7465726e 616c5f50 505f6d79
63746c30 1e170d30 39313231 35323235 3731345a 170d3139 31323133 32323537
31345a30 3f311230 10060355 040a1309 43697363 6f20496e 63310c30 0a060355
040b1303 53544731 1b301906 03550403 14125f69 6e746572 6e616c5f 50505f6d
7963746c 30819f30 0d06092a 864886f7 0d010101 05000381 8d003081 89028181
00e04e0a bba67d66 515c3ac8 0eea9e81 f1707049 123e9379 a750cc40 d0bc782e
7a41c1a6 e31e12df ee2f2122 adc04f47 541facc6 0abc1b91 b739fc45 2e6f7938
45a33010 3dc7ed31 41f0e5d6 a702cef9 a3404246 fbc3fdbd fce49764 cc639b6e
8a7d618a 57f1f63b ca4d2049 68d6ee3a fd993b0f 5b8dfef6 24a0b214 d94cce43
65020301 0001300d 06092a86 4886f70d 01010405 00038181 009f8e8a 476d5880
8648ee24 61ca25ab 9ddb375b 56ec16e1 fca53b6c 79d2a336 24e98ebb 48ba9e7a
bf063123 0b22101a e34039b5 e3717561 dc4a65eb 35345fa3 e55b5597 ce861648
d8cf7b5a 785a689e 3c69dc35 c45a29c6 c8b4c488 047687b2 101bae3d c6bda2c7
a1f16afb 95409a37 607ca103 3f97bffc fa34dbc3 8f709c53 f8
quit
telnet 10.74.32.0 255.255.224.0 inside
telnet 100.100.0.0 255.255.0.0 inside
telnet 8.8.8.240 255.255.255.240 outside
telnet timeout 1440
ssh timeout 5
console timeout 0
dhcpd address 100.100.8.20-100.100.8.29 inside
dhcpd option 15 ascii crdc.cisco.com interface inside
dhcpd option 6 ip 10.74.53.182 interface inside
dhcpd option 150 ip 100.100.8.14 interface inside
dhcpd option 3 ip 100.100.8.19 interface inside
dhcpd enable inside
!

!
tls-proxy mytls
server trust-point _internal_PP_myctl
ctl-file myctl
record-entry cucm-tftp trustpoint Pubcucm_tftp_server address 100.100.8.14
no shutdown
!
media-termination mediaterm1
address 100.100.8.30

!
phone-proxy myphoneproxyasa
media-termination mediaterm1
tftp-server address 100.100.8.14 interface outside
tls-proxy mytls
ctl-file myctl
threat-detection basic-threat
threat-detection statistics access-list
no threat-detection statistics tcp-intercept
ssl encryption null-sha1 rc4-sha1 aes128-sha1 aes256-sha1 3des-sha1
webvpn
!
class-map sec_sip
match port tcp eq 5061
class-map sec_sccp
match port tcp eq 2443
class-map inspection_default
match default-inspection-traffic
!
!
policy-map type inspect dns preset_dns_map
parameters
message-length maximum 512
policy-map Augustone
class inspection_default
inspect rsh
inspect rtsp
inspect esmtp
inspect sqlnet
inspect sunrpc
inspect xdmcp
inspect netbios
inspect icmp
inspect ftp
inspect h323 h225
inspect h323 ras
inspect skinny
inspect sip
policy-map pp_policy
class sec_sccp
inspect skinny phone-proxy myphoneproxyasa
class sec_sip
inspect sip phone-proxy myphoneproxyasa
!
service-policy pp_policy interface inside
prompt hostname context
Cryptochecksum:4572e35dd20b9193b8940c23f82f5b07
: end
asa-pp-non#
asa-pp-non#
asa-pp-non#
asa-pp-non#

参考链接

Cisco ASA Phone Proxy Configuration
7 Easy Steps to setup Cisco ASA Phone
ASA Phone Proxy sample configuration in 8.0

 

ODC ( Oracle Document Capture ) 的基本配置和使用

版本号10.1.3.5.1.

安装后的配置


第一次运行ODC的时候需要配置一些基础信息,主要包括:

  • 配置Batch Folder,用于存放录入的临时文件。
  • 配置Commit Folder,用于存放提交成文件格式的文件。
  • 配置Capture Database,主要就是ODBC数据源的配置,上一篇牢骚都用在这里了。
  • 点击”Test Connection”, 确认数据库链接没有问题。
  • 点击“Initialize DB”, 创建用于ODC配置的基本数据结构。
  • 配置安全性,我选择了“Capture”,直接配置用户名/密码就好了。
  • 选择“oracle.sql”,执行数据初始化。

到这里才能看到ODC的主界面,还需要做一些基本配置。

  • System->Settings,配置用于Index的字体,Index 数据库的存放位置,OCR的语言和编码。编码默认ANSI,我修改成了UTF-8。
  • 没有用到Recognize Server,因为它是需要license的,可惜。

OK,基本搞定。

ODC概述

援引一段Administration Guide上的话来说明ODC的主要功能和模块。

■ The Scan component allows users to scan and import pages into batches. Users
scan images using settings administrators save in scan profiles. See “About Scan”
on page 1-2.
■ The Index component allows users to index batches of scanned images, by
assigning values to them in index fields. Users index documents using settings
administrators save in index profiles. See “About Index” on page 1-13.
After indexing batches, users commit them, which creates documents from the
images and archives them so they can be accessed in the document management
system. Documents are committed using the settings selected in their assigned
commit profile. You create and assign commit profiles in Capture administration.
■ In addition to commit profiles, administrators use the Capture Administration
component as a centralized area for managing file cabinets, index fields, users,
pick-lists, database lookups in Capture components. See “Capture Administration
Overview” on page 2-1 for overview information.
■ The Commit Server, Recognition Server and Import Server components provide
expanded functionality for Oracle Document Capture, as described in “About the
Servers” on page 1-17. For example, organizations that want to perform scheduled
batch commit processing on a separate server use the Commit Server component.
■ Use the Batch Manager component to view all Capture batches on the network.

简单的总结一下。

  • Import Server通过Scan,Folder,FTP等各种途径录入图片或者电子文档,生成Batches。
  • Index组件对录入的Batches,主要是按照配置的规则添加Index值,对各个文档进行分类汇总。
  • 在Indexing过程中,可以通过链接Recognize Server对特定的Field动态的填写值。
  • Commit Server将处理好的Batches,按照配置提交到档案库中(可以是UCM,IPM或者本地目录)。

其中Import Server, Recognize Server(收License), Commit Server都可以配置Job,定时在后台运行。

配置Commit Profile/Server

打开ODC,输入配置的帐号密码。点击Admin->File Cabinets.

File Cabinets是整个Capture过程的配置集合,所有的Import, Index, Commit都是围绕着File Cabinets来做的。

  • 创建一个新的File Cabinets, 给它命名。
  • 点击该“File Cabinets”, 会显示当前Cabinets的Index列表。ODC提供了丰富的Index配置类型,我这里只添加了一个通过当前日期自动填值的Index。
  • 点击“Commit Profiles”, 默认会有一个“Commit Text Files”,就是把处理好的文档提交到本地文件夹。下面我会详细描述配置UCM,IPM的过程。

添加UCM 11g Commit Profile

  • 右键”Commit Profiles”, 选择“New Commit Profile”,输入名称。
  • 在Commit Driver下拉框中选择“Oracle UCM 11g Commit Driver”, 点击右边的Configure。
  • 输入你UCM的用户名,密码和链接,需要注意的是Service URL的链接格式如下http://192.168.56.101:16200/cs/idcplg
  • 点击Login,如果登陆成功,则右边的三个Tabs会变亮。
  • 选择Check In, 配置Document Title,这会变成UCM中的Content ID,可以配置Title的生成规则。
  • 选择Field Mappings,选择Capture Index和UCM Field的自动对应关系。UCM的Field可以通过UCM Configuration Manager配置。

OK,UCM 11g的Commit Profile的配置就好了。

添加IPM 11g Commit Profile

  • 右键”Commit Profiles”, 选择“New Commit Profile”,输入名称。
  • 在Commit Driver下拉框中选择“Oracle IPM 11g Commit Driver”, 点击右边的Configure。
  • 输入你UCM的用户名,密码,Basic Security和链接,需要注意的是Service URL的链接格式如下http://192.168.56.101:16000/imaging/ws
  • 点击Connect测试链接。
  • 选择Field Mappings,选择对应的Application,选择Capture Index和IPM 应用程序的自定义字段的对应关系。

配置Commit Server
Commit Server的配置相对简单一点。

  • 运行Commit Server,选择Setup->Batch Job.
  • General,新建一个Batch Job,选择你的File Cabinets。
  • 点击Save。
  • Server->Schedule配置定时任务。
  • Server->Activate激活任务。

配置Import Server

输入之前配置的帐号密码进入Import Server,如果已经有Job在重复执行需要通过Server->Pause先暂停才能进行Batch Job的配置。点击Setup->Batch Job,见到下面的图。

我选择了”Folder”,新建一个Job,然后进行了下面一些配置。

  • General,选择File Cabinets.
  • Folder, 选择导入的目录名,文件后缀名,以及导入的后续操作,为了方便我选择了更改文件名。
  • 点击Save。
  • Server->Schedule配置定时任务。
  • Server->Activate激活任务。

用户流程

大致描述一下用户的操作流程。

  • 将TIFF(Import中配置文件后缀名过滤)放到指定目录下。Import Server会定时处理成Batch。
  • 打开ODC,选择Open Batch Manager,可以在你的Cabinets下看到生成的Batch信息,此时Page的index信息都是空的。
  • 双击Batch,会对每一个Page进行Indexing操作,我这就自动填入了当天的日期。
  • 点击Commit,这步不是必要的,Commit Server会定时进行Commit。
  • Commit完成后,Batch会被删除。
  • 察看UCM,Document已经提交,自定义字段已经按照对应的规则填入了。

大致的流程就是这样,遗留的问题基本上都是在这个流程的基础上进行了扩展。

遗留问题

本文只是对基本的配置和使用分享了一些经验和心得,留下一些高级话题以后有机会再深入。

  • Field Index Settings, 特别是Sticky Index。
  • Scan Files, 没有扫描仪,苦。
  • Recognize Server,用于Index的动态设置。
  • OCR,这个优先级比较高。

参考链接

Oracle® Document Capture Administrator’s Guide
Oracle® Document Capture Installation Guide

 

在64位Window 7上配置Oracle OLEDB Provider

需要安装ODC ( Oracle Document Capture),遇到无数配置Oracle数据源的问题,总算搞定了,上来总结一下.与其说是总结不如说是吐槽.随便看看吧,说不定也能找到自己的影子。。。。

前期准备

已安装软件: Oracle Database Client 11g R2.

安装ODBC数据源

安装完ODC之后需要配置数据源,打开DB Configuration之后哥震惊鸟.遇到了第一个问题。


在数据库驱动程序中找不到Oracle Provider for OLEDB
我了个擦,回去打开Oracle Database Client的OUI,明明已经列明了安装了Oracle Provider for OLEDB,咋整。Google了一把,发现难兄难弟还挺多,还有人专门作了系统研究数据源管理器”找不到应用程序,可能是程序没有正确安装”问题解决.


于是哥释然了,基本判断是驱动程序本身问题,或者是32位/64位的兼容问题,决定先避开这个问题。选择了另外一个”Microsoft Provider for Oracle”,继续安装,结果遇到了第二个问题。


未找到Oracle客户端和网络组件
立马Google了一下,阵亡的同志也是一大堆阿,找得到的解决办法貌似就一种,基本都是转载来转载去的“未找到Oracle客户端和网络组件”解决(转载).但是按照这个办法我搞不定,我就差给C盘添加Everyone的完全控制权限了,还是不行。


OK,所有路都死了。回到问题一的思路,我就当Oracle Provider for OLEDB没有安装,咱再安装一个总可以吧。下载之Oracle10g Provider for OLE DB .发现最新的版本还是10g,心中顿时隐隐有了期待,解压缩,点击安装,结果连OUI的界面都没有看到就看到了错误信息。


程序异常终止,发生未知错误
一串的“未知”,“未知”,“未知”。骂人的心都有了,不过总算这次找到了行的通的解决办法oracle 10g 在win7下安装,提示程序异常终止,发生未知错误.

解决办法:在setup上右键,属性->兼容性->以兼容模式运行这个程序 windows xp( service pack 3),以管理员身份运行安装就解决了。



感激之情无以言表,总算一路安装都很顺利。

配置ODBC数据源

添加本地服务命名
需要注意的是10g和11g的客户端是独立的,所以之前11g客户端下注册的本地服务命名是无法直接使用的。调用Oracle Client->Configuration and Migration Tools->Net Configuration Assistant,这里基本没有问题,就不多说了。


配置ODBC数据源
控制面板-管理工具-数据源ODBC-用户DSN,点击添加。终于看到了传说中的Oracle Provider for OLEDB.哭了。选择时候应该可以在服务中找到之前配置的本地服务命名,添加用户名/密码之后测试一下链接,应该没啥问题。

其他问题

到这里数据源配置就可以了,在实际使用过程中还需要了另外一个问题。
在指定的DSN中,驱动程序和应用程序体系架构不匹配
解决办法win7 64位 java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 问题 .

参考链接

ODC Installation Guide

 

用Filter实现GAE上的User Authentication

编者按:好吧,就是spring security的雏形概念。

Google App Engine 提供了非常详细的User Authentication的方法,详情参见Users Java API 概述。主要包括了两种方法:

在 Java 中使用用户身份验证
如果你只有单个servlet,那么很简单,在逻辑处理前调用Google提供的API(UserService)判断当前用户登录情况就可以了。

import java.io.IOException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;
public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
UserService userService = UserServiceFactory.getUserService();
String thisURL = request.getRequestURI();
if (request.getUserPrincipal() != null) {
response.getWriter().println(“<p>Hello, ” +
request.getUserPrincipal().getName() +
“! You can <a href=\”" +
userService.createLogoutURL(thisURL) +
“\”>sign out</a>.</p>”);
} else {
response.getWriter().println(“<p>Please <a href=\”" +
userService.createLoginURL(thisURL) +
“\”>sign in</a>.</p>”);
}
}
}

使用 web.xml 强制登录和管理访问
如果你的应用比较复杂,不止一个servlet,Google App Engine支持标准部署描述符web.xml中的安全约束,但是不支持自定义角色,只支持login和admin两种权限。具体示例如下

<security-constraint>
<web-resource-collection>
<url-pattern>/profile/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>*</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>

另外也可以通过google自己的部署描述符app.yaml来编写。需要注意的是App在Deploy的时候,如果应用中有app.yaml,则SDK会按照它的内容重新生成web.xml和appengine-web.xml并覆盖原来的文件。所以如果你要启用app.yaml,你需要把web.xml和appengine-web.xml中所有的内容按照YAML文件的格式全部写到app.yaml里面去。具体示例如下:

handlers:
- url: /profile/*
login: required
- url: /admin/*
servlet: com.example.AdminServlet
login: admin

编者按:需要吐槽的是app.yaml并不完全支持web.xml,至少我没有找到如何配置load-on-startup=1怎么写,所以我个人不推荐这种用法。
编者又按:app.yaml的支持功能比web.xml+appengine-web.xml还要多,所以如果你不巧正好遇到,还是得听Google的话用app.yaml.
编者最后按:我的应用比较复杂,所以Java中写code的办法没法适用,但是很努力尝试第二种方法均告失败,不管是web.xml还是app.yaml都不成功。这才总结出了上述的一些经验,以及遇到了下面两种都没有找到解法的问题。

  • 登录之后仍然显示Your client does not have permission to get URL
  • Error: User not in required role

以上两个问题均没有比较明确的解法,所以才有了本文的内容。


用Filter实现User Authentication
主要借鉴了Spring Security的思想(明明是写完才发现的。。。),然后借用了第一种方法中的code。具体的方法说起来很简单,就是在需要做权限判断的URL前添加Filter,如果权限判断失败,则跳转到Google Login的URL。先看一下实现的代码。
UserFilter.java中的实现。

@Override
public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse, FilterChain filter)
throws IOException, ServletException {
log.info(“———–UserFilter doFilter Begin————”);
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
String thisURL = request.getRequestURI();
if (request.getUserPrincipal() == null
|| (!userService.isUserLoggedIn())) {
response.setContentType(“text/html”);
response.sendRedirect(userService.createLoginURL(thisURL));
} else {
log.info(userService.getCurrentUser().getEmail());
filter.doFilter(servletRequest, servletResponse);
}
}

web.xml中相应的配置。

<filter>
<filter-name>userFilter</filter-name>
<filter-class>com.pamirhostel.booking.filters.UserFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>userFilter</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>

说穿了很简单,但是基于GAE的实现略有不同,总结下来的几点经验。

  • URL最好按照功能划分子目录。例如“/cron/*”是用来实现cron job的。由于GAE的backend,cron job, task queue都是通过调用URL来实现的,所以之前喜欢把所有URI都放在Root下的习惯在这里就不适用了。
  • Filter默认不是HTTP的,所以调用request,response前需要下溯造型成HTTPRequest.
  • request.getUserPrincipal只能用来判断是否当前有Google帐号登录,这是有逻辑漏洞的。例如我的应用是For Google Apps的,所以即使当前用户登录了它自己的Google Account也是没用的。所以需要添加进一步的判断userService.isUserLoggedIn。
  • 如果多组功能需要进行用户验证,直接多添加几个filter-mapping就好了。

目前该Filter很好用,还没有什么further question,有什么问题留下评论一起讨论把。

 

我的GTD(doit.im+IPAD+Google Calendar)

作为拖延症的重度患者,GTD一直是我追求的目标。由于工作的关系,最近有了一些工作平台上的调整,于是更新了自己的一些GTD软件和对应的解决方案。个人觉得这是目前为止自己最满意的solution,所以写下来记录一下。


电脑环境(ipad+Ubuntu+Windows)
IPAD是主力设备,基本24小时傍身,信息录入基本靠它。Ubuntu是回家用的电脑,主要是浏览网页和简单开发。Windows基本可以忽略。


GTD软件-doit.im
GTD的软件很多,之前IPAD上的remember the milk, MAC上的Things,The Wunder List。注意到Doit.im是两三年前,之后貌似经历过一次重大改版变得非常global。Doit.im迅速在各个平台上实现了客户端,但是初期做得比较粗糙,这次因为平台的关系我再次尝试了之后只能用惊艳来形容了。二话不说就用上了。
iPad下的缩略图
Doit.im iPad
Ubuntu下使用Web版本的缩略图
Doit.im Web


Doit.im支持项目分类和情境分类(关于情境的设置可以参考下面的问题汇总)。并且提供了“今日待办“,”下一步行动“,”明日待办“,”日程“,”择日待办“,”等待“等若干个分类。对于略显严格的我来说简直是福音。具体的使用方法可以参考这个链接


Doit.im与Google Calendar同步
Doit.im如今已经非常强大了,设置了时间的任务可以自动同步到Google Calendar上。这一直是我的一个难题,明明GTD工具里面已经添加了任务,但是无法和我那些会议,个人安排整合在一个日历里面。具体的操作如下。

  • 登录Doit.im Web版 http://i.doit.im/
  • 点击右上角的齿轮,选择“设置“
  • 点击“与google日历同步“,会通过oauth获得Google Calendar的授权。
  • 进入Google Calendar,就可以在”我的日历“下发现多了一个“doit.im–”。



Google Calendar与iPad日历同步
标准的Google Calendar与iPad日历同步没有什么好讲的,我是通过exchange server连接的。但是默认的情况下,iPad只会同步Google Calendar的第一个日历,所以doit.im的日历没法在iPad中显示,这里要说的就是解决办法。


1)通过iPad的浏览器访问http://m.google.com/sync,默认情况下你会看到下面的画面。

2)更改语言,选择“US“,你就可以看到你同步过的设备列表,选择你的设备,就可以看到下面的画面。

3)在“我的日历“中增加选择“doit.im–“,点击“保存“。回到iPad的日历中就可以看到在doit.im中添加的日程任务了。


问题汇总
iPad日历中仍然看不到doit.im的日历内容
我个人遇到这个问题,死活搞不定。后来发现是我个人在共享日历中添加了已经过期的2011农历。去掉这个选择以后,就能看到了。个人经验,仅供借鉴。


情境怎么用
这是一个困扰我很久的问题,在情境到底有没有用 三上找到了令人满意的答案,情境就是用来区隔过长的列表的。具体的判断如下

  • 每天20个行动以下,不建议使用复杂的情境
  • 每天超过40个行动,或者超过你清单的一整页纸,建议你使用情境
  • 如果你使用数码产品作为GTD工具,那么建议你使用情境

可能的使用例子如下

  • 物理场景:例如@home,@phone,@office,@errands
  • 状态场景:例如@与人联系,@等待答复 (我觉得等待的东西很容易被忽略,这个超赞)

参考链接
GTD Life
Doit.im | Online Time and Task Management System, Always Online
Doit.im HD on Itunes

 

无觅相关文章插件,快速提升流量