我正在为使用Google Apps登录的公司开发Intranet django项目(不使用GAE).所以我希望我的用户能够使用他们的谷歌帐户登录登录我的django项目.OpenID看起来很合适,虽然Oauth可能也有用吗?
我看到很多类似命名的库将django的auth系统连接到外部登录系统:
以下是我要对集成进行的操作:让用户使用他们的Google帐户登录,而不是使用本机django系统.保留django的管理系统之类的权限模型.所以我认为这意味着在我们登录之前没有看到的新帐户第一次在django中自动创建新的用户记录.
任何有这些项目经验的人都可以告诉我哪种方法效果最好?或者只是在您尝试过时最有效/最有效的建议?谢谢!
我需要生成CSV格式的联系人列表,就像Outlook导出一样.但我没有Outlook(或Windows)来检查它生成的确切标题.
我要求的是由Microsoft Office Outlook Contacts导出的CSV联系人文件样本(另一个问题表明不同的版本产生相同的输出,因此Outlook的确切版本并不重要).它的第一行就足够了.确定行结尾是什么(\n或\ r \n)也很好.
是否有完整的JSON指针规范的Javascript实现,如http://tools.ietf.org/html/rfc6901?
我找到了一些(json-pointer,node-jsonpointer,jsonpointer.js),但似乎没有人处理,例如,特殊的" - "标记.
有没有人有使用JSON指针的经验?哪种实施最成熟?
该温斯顿库是伟大的运输和灵活性。我想用它来允许配置级别和重定向到文件,但想重现 console.log 行为以进行格式化,并且遇到问题。
这是我到目前为止所拥有的:
const log = winston.createLogger({
level: 'debug',
format: format.combine(
format.timestamp({format: 'YYYY-MM-DD HH:mm:ss.SSS'}),
format.splat(),
format.colorize(),
format.printf(({level, message, label, timestamp}) => `${timestamp} ${label || '-'} ${level}: ${message}`),
),
transports: [
new winston.transports.Stream({
stream: process.stderr,
level: 'debug',
})
],
});
log.info("Hello, %s", "Bob"); // Works: outputs "Hello, Bob"
Run Code Online (Sandbox Code Playgroud)
但这不起作用:
log.info("Hello", "Bob");
log.info("Hello", 123, {someObj: 1});
Run Code Online (Sandbox Code Playgroud)
我希望所有无关的对象在被占用的对象之后splat()
添加、空格分隔并转换为字符串,最好使用util.inspect()
.
假设我有这些类型:
struct A {
int a;
};
struct B {
int b;
};
struct C : public A, public B {
int c;
};
Run Code Online (Sandbox Code Playgroud)
一个C*
指针可以被转换为A*
指针,而完全不调整的实际地址.但是当C*
被投射时B*
,价值必须改变.我想确保我所拥有的两个相关类型可以在不改变地址的情况下相互转换(即没有多重继承,或者基类是派生类的第一个基础).这可以在运行时检查,例如像这样
assert(size_t(static_cast<A*>((C*)0xF000) == 0xF000);
assert(size_t(static_cast<B*>((C*)0xF000) != 0xF000);
Run Code Online (Sandbox Code Playgroud)
这样可行.但是这个信息在编译时是已知的,所以我正在寻找一种方法来对它进行编译时断言.将上面的内容转换为静态断言的明显方法(例如assert
,BOOST_STATIC_ASSERT
使用g ++ 4.2 将替换为错误的"强制转换为除积分或枚举类型以外的类型"不能出现在常量表达式中).
便携性不是很重要.使用gcc扩展或hacky模板技巧都可以.
更新:发现以前几乎同样的问题:C++,静态检测具有不同地址的基类?.使用offsetof()
也是唯一有用的建议.