我用他的JavaScript代码帮助了一个人,我的眼睛被一个看起来像这样的部分抓住了:
function randOrd(){
return (Math.round(Math.random())-0.5);
}
coords.sort(randOrd);
alert(coords);
Run Code Online (Sandbox Code Playgroud)
我的第一个是:嘿,这不可能奏效!但后来我做了一些实验,发现它确实至少似乎提供了很好的随机结果.
然后我做了一些网络搜索,几乎在顶部发现了一篇文章,这段代码最简单地被复制.看起来像一个相当可敬的网站和作者......
但我的直觉告诉我,这一定是错的.特别是因为ECMA标准没有规定排序算法.我认为不同的排序算法会导致不同的非均匀混洗.一些排序算法甚至可能无限循环...
但你怎么看?
而另一个问题是......现在我将如何衡量这种改组技术的结果是多么随机?
更新:我做了一些测量并将结果发布在下面作为答案之一.
要在地图上绘制圆,我有一个中心GLatLng(A)和一个以米为单位的半径(r).
这是一个图表:
-----------
--/ \--
-/ \-
/ \
/ \
/ r \
| *-------------*
\ A / B
\ /
\ /
-\ /-
--\ /--
-----------
Run Code Online (Sandbox Code Playgroud)
如何计算位置B的GLatLng?假设r与赤道平行.
使用GLatLng.distanceFrom()方法获得A和B时的半径是微不足道的 - 但是反过来却不是这样.似乎我需要做一些更重的数学.
git log
有一个很好的--format
选项来指定如何格式化输出.
但git blame
似乎没有相应的,虽然默认输出blame
不是很人性化.我希望看到更少.
例如,而不是:
5600cab7 js/sidebar/VehicleGrid.js (Rene Saarsoo 2009-10-08 18:55:24 +0000 127) if (x > y) {
b5f1040c js/map/monitoring/VehicleGrid.js (Mihkel Muhkel 2010-05-31 07:20:13 +0000 128) return x;
Run Code Online (Sandbox Code Playgroud)
我想拥有:
5600cab7 Rene Saarsoo (1 year ago) 127: if (x > y) {
b5f1040c Mihkel Muhkel (5 months ago) 128: return x;
Run Code Online (Sandbox Code Playgroud)
我认为我可以编写一个脚本来解析输出,git blame --porcelain
但是考虑到可怕的默认输出,blame
我觉得有人在那里已经做了一些事情.
有任何想法吗?或者实现这样一个脚本的任何提示?
编辑:通过编写小脚本解决它.
目前在项目上使用Gettext,.po文件很好地保存在版本控制之下.
PO文件当然包含翻译,但除此之外,它们还包含一些元数据 - 有关可翻译字符串所在的确切文件和行号的信息.
问题是每次更新PO文件时,元数据的变化比实际的翻译要多得多.这使得以后很难从版本控制差异中看到实际更改的内容 - 您只看到文件名和行号的无数更改.像那样:
- #: somefile.js:43
- #: somefile.js:45
- #: somefile.js:118
+ #: somefile.js:203
+ #: somefile.js:215
msgid "Translate me please"
msgstr "Tõlgi mind palun"
- #: somefile.js:23
- #: somefile.js:135
+ #: otherfile.js:23
+ #: otherfile.js:135
msgid "Note"
msgstr "Märkus"
- #: andThatFile.js:18
#: orThisFile.js:131
- msgid "Before I was like this"
- msgstr "Selline olin ma enne"
+ msgid "I happen to be changed"
+ msgstr "Paistab, et mind muudeti"
Run Code Online (Sandbox Code Playgroud)
当然,一个简单的解决方法是在xgettext输出中禁用filename/linenumber注释的生成.但实际上我发现这些文件名在翻译时非常有用.
我当然不可能是唯一一个不喜欢他的PO文件的差异的人.建议?
我读过的所有ExtJS文档和示例都建议调用这样的超类方法:
MyApp.MyPanel = Ext.extend(Ext.Panel, {
initComponent: function() {
// do something MyPanel specific here...
MyApp.MyPanel.superclass.initComponent.call(this);
}
});
Run Code Online (Sandbox Code Playgroud)
我已经使用这种模式很长一段时间了,主要的问题是,当你重命名你的类时,你还必须改变所有对超类方法的调用.这很不方便,经常我会忘记,然后我必须追查奇怪的错误.
但是看完来源Ext.extend()
,我发现,这不是我可以使用superclass()
或super()
该方法Ext.extend()
增加了原形:
MyApp.MyPanel = Ext.extend(Ext.Panel, {
initComponent: function() {
// do something MyPanel specific here...
this.superclass().initComponent.call(this);
}
});
Run Code Online (Sandbox Code Playgroud)
在这个代码中,将MyPanel重命名为其他东西很简单 - 我只需更改一行.
但我怀疑......
我没有在任何地方看到过这种情况,旧的智慧说,我不应该依赖于无证件的行为.
我没有在ExtJS源代码中找到这些superclass()
和supr()
方法的单独使用.为什么在你不打算使用它们时创建它们?
也许这些方法在某些旧版本的ExtJS中使用但现在已被弃用?但它似乎是一个非常有用的功能,你为什么要弃用呢?
那么,我应该使用这些方法吗?
在像Java这样的静态语言中,你需要接口,否则类型系统就不会让你做某些事情.但是在PHP和Python这样的动态语言中,你只需要利用duck-typing.
PHP支持接口.Ruby和Python没有它们.所以你可以在没有他们的情况下幸福地生活.
我一直在用PHP工作,并且从未真正使用定义接口的能力.当我需要一组类来实现某些通用接口时,我只是在文档中描述它.
所以你怎么看?如果不使用动态语言中的接口,你最好不是最好的吗?
我试图创建一个简单的ComboBox:
var combo1 = new Ext.form.ComboBox({
store: [1,2,3],
renderTo: document.body
});
Run Code Online (Sandbox Code Playgroud)
但是以这种方式编写它的行为很奇怪:
我将我的代码与Ext主页上的示例进行了比较,发现添加triggerAction: "all"
解决了我的问题:
var combo2 = new Ext.form.ComboBox({
triggerAction: "all",
store: [1,2,3],
renderTo: document.body
});
Run Code Online (Sandbox Code Playgroud)
ExtJS文档triggerAction
并没有告诉我很多:
单击触发器时要执行的操作.使用'all'运行allQuery配置选项指定的查询(默认为'query')
我没有指定allQuery选项.实际上,我根本不想对服务器执行查询.
那triggerAction
真的是什么呢?
"all"
当我只想要一个简单的静态组合框时,它是否真的应该做到这一点?
如何根据严重性条件更改数据网格中的行颜色?我是这个EXTJS主题的新手.我曾经读过阅读,存储到存储和编写器来编写数据.将所有数据提取到网格后,如何根据严重性条件更改数据网格中的行颜色?你可以用代码工作来解释我吗?
我正在尝试在 TypeScript 中使用AbortController
。
给定这个小文件:
const controller = new AbortController();
Run Code Online (Sandbox Code Playgroud)
我从 TypeScript 编译器收到以下错误:
src/testAbort.ts:1:24 - error TS2304: Cannot find name 'AbortController'.
1 const controller = new AbortController();
~~~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)
TypeScript 有关于AbortController 的文档。我还从 Github 发现了一个问题,该问题已通过合并包含 AbortController 类型定义的拉取请求得到解决。所以它应该是可用的。
我的tsconfig.json
包含:
src/testAbort.ts:1:24 - error TS2304: Cannot find name 'AbortController'.
1 const controller = new AbortController();
~~~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)
我尝试过的:
lib
和选项设置为.target
"ESNext"
global.AbortController
。javascript ×4
extjs ×3
git ×2
blame ×1
combobox ×1
diff ×1
duck-typing ×1
extend ×1
extjs3 ×1
fetch-api ×1
gettext ×1
google-maps ×1
gridpanel ×1
gridview ×1
interface ×1
php ×1
po-file ×1
random ×1
semantics ×1
shuffle ×1
sorting ×1
superclass ×1
typescript ×1