这更像是一种好奇心.在处理多语言Web应用程序时,我注意到在块元素末尾的某些字符(如标点符号(!?.;,))被渲染为好像它们被放置在开头而不是写入方向是从右到左(因为我不会说某些亚洲语言的情况).
换句话说,字符串
Hello, World!
Run Code Online (Sandbox Code Playgroud)
呈现为
!Hello, World
Run Code Online (Sandbox Code Playgroud)
当放在div块中时 direction: rtl
如果文本被分成两部分并给出不同的颜色,则这变得更加明显:最后一个连续的文本块呈现在两个分开的区域中:
这种行为有什么意义?我想这必须是(所有?)从右到左语言的特性,这是由浏览器自动处理的,所以我不需要关心它,或者我应该这样做?
我只是偶然发现了这些GetFiles方法的无证行为System.IO.Directory.
每当searchPattern传递给方法的参数包含保留的Windows设备名称(例如"nul.*"或)时"aux.bmp",该方法返回一个包含不存在的文件名称的数组,如C:\Users\ft1\nul或D:\aux等.
我想知道那些设备名称是否具有特殊含义的上下文,如"." 或"..",或者如果这只是一种错误.无论如何,这看起来仍然很奇怪.例如,C#中的这段代码片段:
string[] fileNames = Directory.GetFiles(@"C:\D:\..\..\...\", "con.txt");
foreach (string fileName in fileNames) Console.WriteLine(fileName);
Run Code Online (Sandbox Code Playgroud)
版画
C:\D:\..\..\...\con
Run Code Online (Sandbox Code Playgroud)
有线索吗?
在Javascript中动态创建DOM选项元素的首选方法是什么?我发现在实际代码中使用了Option构造函数和createElement变体,如下所示:
var option = new Option(text, value);
Run Code Online (Sandbox Code Playgroud)
还有这个:
var option = document.createElement('option');
option.text = text;
option.value = value;
Run Code Online (Sandbox Code Playgroud)
这些方法有任何缺点/兼容性问题吗?此外,还有其他任何方法可以动态创建选项,出于某些原因应优先考虑上述选项吗?
我准备了一个示例jsfiddle来显示我目前面临的布局问题:当我将内容动态插入到特定元素(砖块)中时,元素与其父元素一起以一种超出我理解的方式下沉HTML/CSS.当我删除内容时,原始布局将被恢复,除非我使用Chrome ...然后它将保留其位置并在插入新内容时再次下降.
概念证明:http://jsfiddle.net/GADk9/
示例中的复选框只是切换砖内的文本,仅此而已.我想知道上面的余量(是吗?)来自哪里.
这是一个完整的HTML5文档:
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='UTF-8'>
<title>HTML5 Falling Brick - What is this?</title>
<style>
#brick {
background-color: lightgray;
border: solid black medium;
border-radius: 1em;
color: red;
font-size: 2em;
height: 100%;
text-align: center;
}
#contrail { background-color: lightblue; width: 20em; }
#pit { display: table; }
#pit>* { display: table-cell; }
#pit>*>* { height: 4em; }
</style>
</head>
<body>
<div>
<label>Click me twice
<input onchange="document.getElementById('brick').innerHTML = this.checked ? 'FALL!!!' : ''" type='checkbox'></input> …Run Code Online (Sandbox Code Playgroud) 我已经看到过reinterpret_cast常用于对枚举类应用增量,我想知道这种用法在标准C++中是否可以接受.
enum class Foo : int8_t
{
Bar1,
Bar2,
Bar3,
Bar4,
First = Bar1,
Last = Bar4
};
for (Foo foo = Foo::First; foo <= Foo::Last; ++reinterpret_cast<int8_t &>(foo))
{
...
}
Run Code Online (Sandbox Code Playgroud)
我知道,如果是普通的类,那么转换为基类的引用是安全的.但由于枚举类不是隐式转换为其底层类型的事件,因此我不确定上述代码是否以及如何保证在所有编译器中都能正常工作.有线索吗?
在一个项目中,我维护我们广泛使用null原型对象作为穷人的替代(仅限字符串键)映射,这些映射在许多较旧的ES6之前的浏览器中不是本机支持的.
基本上,要动态创建一个null原型对象,可以使用:
var foo = Object.create(null);
Run Code Online (Sandbox Code Playgroud)
这保证了新对象没有继承属性,例如"toString","constructor","__ proto__",这对于这个特定的用例是不可取的.
由于这种模式在代码中多次出现,我们提出了编写构造函数的想法,该构造函数将创建其原型具有null原型且没有自己的属性的对象.
var Empty = function () { };
Empty.prototype = Object.create(null);
Run Code Online (Sandbox Code Playgroud)
然后,要创建一个没有自己或继承属性的对象,可以使用:
var bar = new Empty;
Run Code Online (Sandbox Code Playgroud)
为了提高性能,我编写了一个测试,并发现在Object.create所有浏览器中,本机方法的意外执行速度比涉及带有ad hoc原型的额外构造函数的方法慢得多:http://jsperf.com/blank-object - 创造.
我非常期待后一种方法更慢,因为它涉及调用用户定义的构造函数,这在前一种情况下不会发生.
造成这种性能差异的原因是什么?
下面的示例代码在Visual C++中编译得很好:
class Test {
private:
struct {
struct {
int privateData;
};
};
};
int main(int, char **)
{
Test test;
test.privateData = 0;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但为什么?我期望编译器错误,因为privateData函数main应该无法访问该成员,因为它应该private像它的容器容器一样.我知道无名结构不是官方C++的一部分,但这个设计是asinine.
顺便说一句,我也试图改变private成protected和struct成union:它看起来像编译器拒绝兑付匿名结构和联合嵌套在另一个匿名结构或联合内部的访问修饰符.
有人可以解释这个功能吗?
有没有一个理由来Math.pow(-0, x)评估所有负面的无穷大x,除了它的 - 无穷的奇数?我的意思是:
Math.pow(-0, -6); // Infinity
Math.pow(-0, -7); // -Infinity
Math.pow(-0, -7.33); // Infinity
Math.pow(-0, -Infinity); // Infinity
Run Code Online (Sandbox Code Playgroud)
我知道负数的正奇数是负数,但这显然不是这里的情况:-7不是正指数,而如果你打开心思,-0确实是一个数字,它不是一个消极的.
这种行为在数学上没有意义,我也没有看到它的实际用途或技术方便,因此我怀疑规范必须依赖于历史/兼容性原因.任何见解?
如何检查计划的Quartz cron作业是否正在运行?有任何API可以进行检查吗?
我有一个 ES 模块,它使用我编写的 CommonJS 模块的命名导出。
es.mjs
import { MyNamedExport } from './commonjs.cjs';
console.log(MyNamedExport);
Run Code Online (Sandbox Code Playgroud)
commonjs.cjs(不错)
exports.MyNamedExport = 'OK';
Run Code Online (Sandbox Code Playgroud)
当我像这样在 Node.js 中运行 ES 模块时,一切都很好。
> node ./es.mjs
OK
Run Code Online (Sandbox Code Playgroud)
无论如何,如果 CommonJS 模块中的导出部分以某种看似无关的方式更改,即添加一对括号,则命名导出将停止工作。
commonjs.cjs(不好的)
> node ./es.mjs
OK
Run Code Online (Sandbox Code Playgroud)
> node ./es.mjs
file:///path/to/current/folder/es.mjs:1
import { MyNamedExport } from './commonjs.cjs';
^^^^^^^^^^^^^
SyntaxError: Named export 'MyNamedExport' not found. The requested module './commonjs.cjs' is a CommonJS module, which may not support all module.exports as named exports.
CommonJS modules can always be imported via the default export, …Run Code Online (Sandbox Code Playgroud) javascript ×4
c++ ×2
css ×2
.net ×1
c# ×1
c++11 ×1
commonjs ×1
constructor ×1
cron ×1
enum-class ×1
es6-modules ×1
file ×1
getfiles ×1
html ×1
html-select ×1
html5 ×1
java ×1
layout ×1
nested ×1
node.js ×1
performance ×1
pow ×1
private ×1
scheduler ×1
windows ×1