我正在开发一个服务器的自定义实现(非常基本的WebDAV),它接受Outlook发布的日历.
Outlook似乎有一个设置(参见下面的屏幕截图),它接受服务器的参数,告诉它重新发布日历的频率,这是我想要弄清楚的参数.
如果设置未指定的Outlook默认到60分钟,这不为我工作,但我找不到什么参数可以是任何信息(我知道,Outlook的设置可以在UI内进行调整,但我需要它通过自动完成来自服务器的响应).使用Wireshark时,我发现当第一次发布日历时,Outlook会向PROPFIND服务器的URL 发送一个方法:
PROPFIND /path/to/url HTTP/1.1
X-Office-Version: 15.0.4771
Depth: 1
Content-Type: text/xml
User-Agent: Microsoft Office/15.0 (Windows NT 6.3; Microsoft Outlook 15.0.4771; Pro)
Host: example.com
Content-Length: 114
Connection: Keep-Alive
Cache-Control: no-cache
<?xml version="1.0" encoding="utf-8" ?> <D:propfind xmlns:D="DAV:"><D:prop><D:resourcetype/></D:prop></D:propfind>
Run Code Online (Sandbox Code Playgroud)
然后用XML响应(我假设这是设置的位置,但无法找到任何信息):
<?xml version="1.0"?><a:multistatus xmlns:a="DAV:"/>
Run Code Online (Sandbox Code Playgroud)
我在这一点上丢失,不知道还有什么地方寻找大量的谷歌搜索和流量嗅探后(展望< - >我发现交流沟通,但没有人可以使用非默认PARAM).任何建议在哪里寻找这样的东西都是个好主意?
我有一些GAE应用程序,我正在考虑分成三个模块:default(www), mobile而api但我有理解模块以及如何组织代码中的一些困难.
这是我到目前为止提出的简化结构:
gae-app/
??? modules
? ??? api
? ? ??? app.yaml
? ? ??? src
? ? ??? main.py
? ??? mobile
? ? ??? app.yaml
? ? ??? src
? ? ??? index.html
? ??? www
? ??? app.yaml
? ??? src
? ??? main.py
? ??? templates
??? cron.yaml
??? index.yaml
??? queue.yaml
Run Code Online (Sandbox Code Playgroud)
该api模块提供了大量的API函数,并且可以自行运行.
该mobile模块只是一堆html + js,api通过ajax 与模块配合得很好. …
我正想通过后交有关如何观察者模式可以在Python中实现.在同一篇文章中有这些评论.
1)在python中你也可以只使用普通函数,"观察者"类并不是真正需要的.
2)这是Java程序员在切换到Python后尝试做的很好的例子 - 他们觉得Python缺少所有垃圾并尝试"移植"它.
这些注释暗示观察者模式在python中并不真正有用,并且存在其他方法来实现相同的效果.这是真的,如果能做到这一点?
这是观察者模式的代码:
class Observable(object):
def __init__(self):
self.observers = []
def register(self, observer):
if not observer in self.observers:
self.observers.append(observer)
def unregister(self, observer):
if observer in self.observers:
self.observers.remove(observer)
def unregister_all(self):
if self.observers:
del self.observers[:]
def update_observers(self, *args, **kwargs):
for observer in self.observers:
observer.update(*args, **kwargs)
from abc import ABCMeta, abstractmethod
class Observer(object):
__metaclass__ = ABCMeta
@abstractmethod
def update(self, *args, **kwargs):
pass
class AmericanStockMarket(Observer):
def update(self, *args, **kwargs):
print("American stock market received: {0}\n{1}".format(args, kwargs))
class EuropeanStockMarket(Observer):
def …Run Code Online (Sandbox Code Playgroud)