我想为我正在编写的一个软件生成一些假人.这些人也有种族,与那些种族相比,我宁愿不要看起来不完全不合适的名字.
我的第一个想法是以数据为基础.有一张1990年美国人口普查的名字和姓氏的表格,附有频率,但没有提及种族.还有一张2000年美国人口普查的姓氏表,按种族划分,但它没有说出名字.
所以我需要一些基于种族生成名字的方法.有任何想法吗?
在MATLAB中,ode45有一个参数调用NonNegative,它将解决方案约束为非负.他们甚至写了一篇关于这种方法是如何工作的文章,以及它不是什么愚蠢的东西,只要将y_i设置为0就会变成负数,因为这通常不起作用.
现在,MATLAB也有dde23解决延迟微分方程的问题,但NonNegative该积分器没有等效参数.
不幸的是,我任务是将延迟到使用解决了现有的ODE系统ode45与NonNegative启用.
有什么想法我应该继续吗?
编辑:
我不确定这是否有用,但......
我的系统的DDE部分看起来像:
dx = 1/(1+y*z) - x;
dy = (y*z)^2/(1+(y*z)^2) - y;
dz = X - z;
Run Code Online (Sandbox Code Playgroud)
其中X(第三个等式中的大写字母变量)是延迟版本x.然后,我通过添加几个方面的方程此DDE系统连结至现有的(以及更大)的ODE系统x和z,然后将合并的系统集成在一起.
matlab scipy numerical-methods numerical-integration differential-equations
我一直在使用PyGTK FAQ中提供的答案,但这似乎不适用于PyGObject.为方便起见,这里有一个与PyGTK一起使用的测试用例,然后是一个不能与PyGObject一起使用的翻译版本.
PyGTK版本:
import gtk
def raise_window(widget, w2):
w2.window.show()
w1 = gtk.Window()
w1.set_title('Main window')
w2 = gtk.Window()
w2.set_title('Other window')
b = gtk.Button('Move something on top of the other window.\nOr, minimize the'
'other window.\nThen, click this button to raise the other'
'window to the front')
b.connect('clicked', raise_window, w2)
w1.add(b)
w1.show_all()
w2.show_all()
w1.connect('destroy', gtk.main_quit)
gtk.main()
Run Code Online (Sandbox Code Playgroud)
PyGObject版本:
from gi.repository import Gtk
def raise_window(widget, w2):
w2.window.show()
w1 = Gtk.Window()
w1.set_title('Main window')
w2 = Gtk.Window()
w2.set_title('Other window')
b = Gtk.Button('Move something on top …Run Code Online (Sandbox Code Playgroud) 我知道这IDBObjectStore.getAll不是IndexedDB标准的一部分,它可能永远不会.但它是在FireFox中实现的,如果您必须从数据库中检索大量对象,它会使您的代码更漂亮.
是否有可能制作某种polyfill或允许getAll在其他支持IndexedDB的浏览器中工作的东西?实际的功能getAll很简单,但我不知道如何在非Firefox浏览器中复制其精确语法的上下文中处理IndexedDB的异步性质.
抱歉,我没有这个问题的可重复测试案例,因为我什至从未亲眼看到过。我只知道发生这种情况是因为我的应用程序中有客户端登录以及用户的抱怨。
问题是:
我正在使用服务人员,我希望可以为这种情况不会发生提供一些保证。当新版本包括IndexedDB模式迁移时,这尤其令人不安,因为那时我的应用程序的旧版本甚至无法正常工作。
更多细节:
我正在使用Workbox 4.3.1。我的服务人员基本上是:
importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js");
workbox.precaching.precacheAndRoute([]);
workbox.routing.registerNavigationRoute("/index.html", {
blacklist: [
new RegExp("^/static"),
new RegExp("^/sw.js"),
],
});
Run Code Online (Sandbox Code Playgroud)
workbox.precaching.precacheAndRoute([]);被填充workboxBuild.injectManifest。我可以手动确认是否填写了正确的文件。通常,服务人员可以正常工作。我可以在浏览器开发工具中看到它。我可以断开与Internet的连接,但仍可以使用我的应用程序。一切似乎都很好。就像我在上面说的那样,我从未见过这个问题发生,并且我没有可复制的测试用例。
但是我的一些用户遇到了上述问题。我尝试使用客户端错误日志记录进行调查。我向我的应用程序添加了一些代码,以将其版本号存储在localStorage中,并在初始加载时将其与当前运行的版本号进行比较。如果localStorage中的版本比当前正在运行的版本新(即,它过去成功运行了一个新版本,但现在又回到了较旧的版本),它将记录版本号以及一些其他信息:
let registrations = [];
if (window.navigator.serviceWorker) {
registrations = await window.navigator.serviceWorker.getRegistrations();
}
log({
hasNavigatorServiceWorker:
window.navigator.serviceWorker !== undefined,
registrationsLength: registrations.length,
registrations: registrations.map(r => {
return {
scope: r.scope,
active: r.active
? {
scriptURL: r.active.scriptURL,
state: r.active.state,
}
: null,
installing: r.installing
? {
scriptURL: r.installing.scriptURL,
state: r.installing.state,
}
: null,
waiting: r.waiting
? {
scriptURL: …Run Code Online (Sandbox Code Playgroud) 我有一个庞大而复杂的MATLAB程序.在其中的某个地方,数字0正在被发射,所以当我运行它时,我看到这一次重复了很多次:
ans =
0
Run Code Online (Sandbox Code Playgroud)
这看起来很乱,所以我想摆脱它.有没有简单的方法让我弄清楚输出的来源?
我的目标是将async/await编译成Bluebird的承诺,同时将性能影响降至最低.
babel-plugin-transform-async-to-module-method似乎是最常见的编译async/await到Bluebird的方法,但它减慢了我的应用程序约10-20%,这是不可接受的.我怀疑这很多都是由于再生器,这似乎是必需的babel-plugin-transform-async-to-module-method.
例如,我在index.js中有这个代码:
var Promise = require('bluebird');
async function foo() {
console.log('foo');
await Promise.delay(500);
console.log('bar');
}
foo();
Run Code Online (Sandbox Code Playgroud)
而这个package.json:
{
"name": "async-regenerator",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"build": "browserify index.js -t babelify --outfile bundle.js"
},
"author": "",
"license": "ISC",
"devDependencies": {
"babel-plugin-transform-async-to-module-method": "^6.7.0",
"babel-preset-es2015": "^6.6.0",
"babelify": "^7.2.0",
"browserify": "^13.0.0"
},
"dependencies": {
"bluebird": "^3.3.5"
},
"browserify": {
"transform": [
"babelify"
]
},
"babel": {
"presets": [
"es2015"
],
"plugins": [
[
"transform-async-to-module-method",
{
"module": "bluebird", …Run Code Online (Sandbox Code Playgroud) 我觉得这是一件非常平凡的事情.我想更新IndexedDB数据库中的对象,然后运行一些代码,然后使用更新的值.
我最初做的只是在调用后运行我的回调函数cursor.update,它在Firefox中运行.但它在Chrome中失败,在运行以下代码之前不会发生更新.这可能是竞争条件,因为(据我所知)更新是异步的.
那么我想我应该使用onsuccess信号cursor.update来调用我的回调函数.但令我惊讶的是,这似乎也不适用于Chrome!
你可以在jsFiddle上运行的一些示例代码......虽然有趣的是这似乎因为某种原因在jsFiddle的Firefox中崩溃,但Chrome工作正常; 对于Firefox,您可以在本地运行它并且它可以工作(这会在浏览器的JavaScript控制台上生成输出):
<html>
<head>
<script>
var db, request;
request = indexedDB.open("test", 1);
request.onupgradeneeded = function (event) {
var i, leagueStore, teams, teamStore;
db = event.target.result;
objectStore = db.createObjectStore("objects", {keyPath: "id"});
};
request.onsuccess = function (event) {
db = request.result;
// Add some dummy data
db.transaction("objects", "readwrite").objectStore("objects").put({
id: 0,
value: 42
});
// Update data
db.transaction("objects", "readwrite").objectStore("objects").openCursor(0).onsuccess = function (event) {
var cursor, object;
cursor = event.target.result;
object = …Run Code Online (Sandbox Code Playgroud) javascript asynchronous google-chrome cross-browser indexeddb
我有一个对象,其中所有键都是数字,所有值都是字符串,如下所示:
var object = {
1: "whatever",
7: "whateverrr",
...
};
Run Code Online (Sandbox Code Playgroud)
有什么方法可以为此编写TypeScript接口吗?我不知道所有的键是什么,但我知道它们将是数字,并且值将是字符串,所以我觉得应该可以进行某种类型的检查.
IndexedDB 允许您在多个属性上创建索引。就像你有对象一样,{a: 0, b: 0}你可以在a和上创建索引b。
复合索引的行为非常奇怪,但显然应该可以使用比复合索引短的数组进行查询。所以在我的例子中,我应该能够查询类似的东西[0]并获得 a==0 的结果。
但我似乎无法让它发挥作用。这是您可以在 JS Bin 上运行的示例:
var db;
request = indexedDB.open("test", 1);
request.onerror = function (event) { console.log(event); };
request.onupgradeneeded = function (event) {
var db = event.target.result;
db.onerror = function (event) { console.log(event); };
var store = db.createObjectStore("store", {keyPath: "id", autoIncrement: true});
store.createIndex("a, b", ["a", "b"], {unique: true});
store.add({a: 0, b: 0});
store.add({a: 0, b: 1});
store.add({a: 1, b: 0});
store.add({a: …Run Code Online (Sandbox Code Playgroud) javascript ×5
indexeddb ×3
matlab ×2
async-await ×1
asynchronous ×1
babel ×1
bluebird ×1
debugging ×1
gtk ×1
gtk3 ×1
names ×1
pygobject ×1
pygtk ×1
python ×1
scipy ×1
typescript ×1
workbox ×1