我有一个python脚本,可以接收零或三个命令行参数.(它可以在默认行为上运行,也可以需要指定所有三个值.)
什么是理想的语法:
if a and (not b or not c) or b and (not a or not c) or c and (not b or not a):
Run Code Online (Sandbox Code Playgroud)
?
我正在使用NLTK来分析一些经典文本而我正在努力解决逐句文本的问题.例如,这是我从Moby Dick获得的代码段:
import nltk
sent_tokenize = nltk.data.load('tokenizers/punkt/english.pickle')
'''
(Chapter 16)
A clam for supper? a cold clam; is THAT what you mean, Mrs. Hussey?" says I, "but
that's a rather cold and clammy reception in the winter time, ain't it, Mrs. Hussey?"
'''
sample = 'A clam for supper? a cold clam; is THAT what you mean, Mrs. Hussey?" says I, "but that\'s a rather cold and clammy reception in the winter time, ain\'t it, Mrs. Hussey?"'
print …Run Code Online (Sandbox Code Playgroud) 我为每个网络应用程序使用Node.js(通过browserify),所有这些应用程序都有一些共同的依赖关系,其他依赖关系.这些应用程序中的每一个都有一个package.json文件,用于指定所需模块的版本.
现在,我/node_modules在我的应用程序的父文件夹中有一个目录,用于他们都需要引用的模块,然后我将特定于应用程序的模块node_modules放在该应用程序目录中的一个文件夹中.这在短期内工作正常,因为我的require()语句能够在文件结构中向上查找,直到找到node_modules包含正确app 的目录.
这很棘手的是当我想回到一个旧项目并运行npm install以确保它仍然可以找到它所需的所有依赖项时.(谁知道从那时起在父目录级别发生了什么搞笑业务.)我的印象就是npm install:
package.json中,首先检查它是否存在,移动以同样的方式的目录require做.如果不是,请将其安装到本地node_modules目录(如有必要,创建该目录).npm install但是,当我在app文件夹中运行时,它似乎在本地安装所有内容,而不管上游可能存在的其他位置.这是正确的行为吗?(这可能是另一个原因,比如我的坏版本语言package.json).如果这是正确的行为,有没有办法让我npm install表现得像上面那样?
在每个应用程序中广泛复制模块并不是什么大问题,但它感觉很乱,并且阻止我对常见模块进行小的改进而不必更新每个旧package.json文件.当然,这可能是一件好事......
有没有人见过美国国会选区的topoJSON文件?或者,如果我可以找到坐标或geoJSON文件,是否可以轻松转换为弧形?
我有一个适度的Node.js脚本,它通过API从维基百科中提取数据并将其存储在SQLite数据库中.我正在使用这个node-sqlite3模块.
在某些情况下,我正在下载600,000篇文章的数据,并在数据库中连续存储关于每一篇文章的一些元数据.这些文章是从API中以500个为一组进行检索的.
使用500篇文章中的数据检索JSON对象的请求将对象传递给此回调:
//(db already instantiated as 'new sqlite.Database("wikipedia.sqlite");')
function callback(articles) {
articles.forEach(function(article) {
db.run("INSERT OR IGNORE INTO articles (name, id, created) VALUES (?,?,?)", [article["title"], article["pageid"], article["timestamp"]]);
});
}
Run Code Online (Sandbox Code Playgroud)
这些模块默认并行运行,但node-sqlite3的文档包含一个串行操作示例,如下所示:
db.serialize(function() {
db.run("CREATE TABLE lorem (info TEXT)");
var stmt = db.prepare("INSERT INTO lorem VALUES (?)");
for (var i = 0; i < 10; i++) {
stmt.run("Ipsum " + i);
}
stmt.finalize();
}
Run Code Online (Sandbox Code Playgroud)
我试图模仿这个,看到几乎没有性能差异.我做错了吗?现在,数据从API检索的速度比写入数据库的速度快得多,尽管速度并不慢.但是用600K个别INSERT命令击败数据库感觉很笨拙.
更新:每个接受的答案,这似乎适用于node-sqlite3,而不是本机解决方案.(见本期).
db.run("BEGIN TRANSACTION");
function callback(articles) {
articles.forEach(function(article) {
db.run("INSERT OR …Run Code Online (Sandbox Code Playgroud) 我svg在一个页面上有三个元素,每个元素由D3陪伴.每个人都有自己的页面调整大小逻辑,由我编写的简单模块分配,以使其响应.
问题是只有最后一个resize事件被触发,因为它似乎覆盖了之前的页面调整大小事件.这是预期的行为d3.select(window).on('resize', ...)吗?我已经习惯了$(window).resize(...),多次调用时效果很好.
我已经看到这个先前的答案表明在D3中可能有多个调整大小事件.我在做一些蠢事吗?
这是一个我坚持使用jsFiddle的简单示例:
d3.select(window).on("resize", function() {
d3.select("#d3console").append("div").html("d3 resize event A!");
});
d3.select(window).on("resize", function() {
d3.select("#d3console").append("div").html("d3 resize event B!");
});
$(window).bind("resize", function() {
d3.select("#jQconsole").append("div").html("jQ resize event A!");
});
$(window).bind("resize", function() {
d3.select("#jQconsole").append("div").html("jQ resize event B!");
});
Run Code Online (Sandbox Code Playgroud)
哪个输出:
d3 resize event B!
d3 resize event B!
jQ resize event A!
jQ resize event B!
jQ resize event A!
jQ resize event B!
Run Code Online (Sandbox Code Playgroud)
我知道可以继续将之前的调整大小功能分流到像这样的链中.刚想到D3的不同行为.
我正在使用KeystoneJS构建的网站,该网站允许用户发布单词并从其他用户获取建议的同义词.单词是作为短语或句子的一部分提交的,例如"猫是[危险地]接近敲击玻璃."
My Sentence模型如下所示:
Sentence.add({
sentence: { type: Types.Text, required: true, initial: "New Sentence", index: true },
word: { type: Types.Relationship, ref: 'Word', required: true, index: true, unique: true, initial: true },
submitter: { type: Types.Relationship, ref: 'User', required: true, index: true, unique: true, initial: true },
source: { type: Types.Text },
createdAt: { type: Date, default: Date.now }
});
Run Code Online (Sandbox Code Playgroud)
我试图根据Mongoose文档使Word模型独一无二:
var Word = new keystone.List('Word', {
map: { name: 'word' },
_id: { from: 'word', path: 'word', unique: true, fixed: …Run Code Online (Sandbox Code Playgroud) 我有一些与iframe通信的代码.postMessage(),这意味着它需要添加一个监听器message来接收来自iframe的通信.我正在使用通常的代码:
window.addEventListener('message', processMessage, false);
Run Code Online (Sandbox Code Playgroud)
此代码客户端的页面,有一堆关于它的其他东西上运行:分析,社交按钮,等等,等等,当我加了我注意到console.log的processMessage函数从IFRAME调试通信,这是捡了很多其他来自第三方插件的流量也使用.postMessage.
忽略它们不是问题,因为我正在寻找来自iframe的非常具体的消息,但是我想确保我不会覆盖任何应该从FB脚本中获取这些消息的侦听器等等.我之前遇到过多个window.onresize事件覆盖彼此的问题.这是消息的事件监听器的问题吗?
有没有人.animateWith()在Raphael中成功地保持快速动画同步?记录很少.图书馆的创建者有一个视频演示,但没有我能找到的代码.
我有一个Javascript节拍器,由一条线(节拍器的臂)和一个梯形的"重量"组成,最终会上下移动以表示节奏.我在这里有一个工作小提琴,所涉及的线条是:
var ticktock = Raphael.animation({
"50%": { transform:"R20 " + x + "," + y, easing: "sinoid", callback: function() { tick(this, repeats, done); }},
"100%": { transform:"R-20 " + x + "," + y, easing: "sinoid", callback: function() { tick(this, repeats, done); }}
}, interval).repeat(repeats / 2);
arm.animate(ticktock);
weight.animateWith(arm, ticktock, ticktock);
Run Code Online (Sandbox Code Playgroud)
如果你检查小提琴并给它一个高节奏和大约20个蜱,你应该看到重量滞后于手臂.(如果没有,请尝试几次 - 墨菲定律等)我认为这正是animateWith()所阻止的.也许我错误地使用它.
如果您查看.animateWith()函数的Raphael源代码,您会看到它同步每个动画的.start参数FWIW.
我在过去的国会期间建立了参议院投票模式的强制导向布局.基于将至少75%的时间投票在一起的任何两位参议员连接起来,有102个节点和2,600个边缘:

我已经使用了电荷,重力和linkDistance的系数,希望找到一个节点不会过于聚集或人为分离的最佳点.使用linkDistance创建的空间比连接两个集群的四个红色节点之间的逻辑空间大得多.不设置linkDistance会导致两个群集相距很远.
是否有基于边缘密度或任何其他社交网络分析指标选择正确值的指导原则?
当前布局定义是:
var force = d3.layout.force()
.nodes(d3.values(nodes))
.links(d3.values(links))
.size([width - 2 * margin, height - 2 * margin])
.charge(-80)
.gravity(0.25)
.linkDistance(50)
.on("tick", tick)
.start();
Run Code Online (Sandbox Code Playgroud)
谢谢!
更新:这在jsFiddle上有点复杂,但可以随意在GitHub上克隆或分叉.
javascript ×4
node.js ×3
d3.js ×2
python ×2
animation ×1
force-layout ×1
geojson ×1
if-statement ×1
iframe ×1
keystonejs ×1
module ×1
mongodb ×1
mongoose ×1
nlp ×1
nltk ×1
nosql ×1
npm ×1
postmessage ×1
raphael ×1
resize ×1
sqlite ×1
svg ×1