以下JavaScript如何工作?
我明白它是缩小的代码.我尝试过去混淆它,但是我无法弄清楚它是如何实现这种效果的.我可以看到它使用Strings进行某种迭代,使用Date对象,奇怪的字符串操作,Math函数,然后代码打印自己.
如何用最小的例子重写相同的效果?
eval(z='p="<"+"pre>"/* ,.oq#+ ,._, */;for(y in n="zw24l6k\
4e3t4jnt4qj24xh2 x/* =<,m#F^ A W###q. */42kty24wrt413n243n\
9h243pdxt41csb yz/* #K q##H######Am */43iyb6k43pk7243nm\
r24".split(4)){/* dP cpq#q##########b, */for(a in t=pars\
eInt(n[y],36)+/* p##@###YG=[#######y */(e=x=r=[]))for\
(r=!r,i=0;t[a/* d#qg `*PWo##q#######D */]>i;i+=.05)wi\
th(Math)x-= /* aem1k.com Q###KWR#### W[ */.05,0>cos(o=\
new Date/1e3/* .Q#########Md#.###OP A@ , */+x/PI)&&(e[~\
~(32*sin(o)*/* , (W#####Xx######.P^ T % */sin(.5+y/7))\
+60] =-~ r);/* #y `^TqW####P###BP */for(x=0;122>\
x;)p+=" *#"/* b. OQ####x#K */[e[x++]+e[x++\
]]||(S=("eval"/* l `X#####D , */+"(z=\'"+z.spl\
it(B = "\\\\")./* G####B" # */join(B+B).split\
(Q="\'").join(B+Q/* VQBP` */)+Q+")//m1k")[x/2\
+61*y-1]).fontcolor/* TP */(/\\w/.test(S)&&"#\
03B");document.body.innerHTML=p+=B+"\\n"}setTimeout(z)')// …Run Code Online (Sandbox Code Playgroud) 让我们说我有一个元素列表:
<ol>
<li>First</li>
<li>Second</li>
<li>Third</li>
</ol>
Run Code Online (Sandbox Code Playgroud)
当我悬停列表项时,我需要能够获得有关每个主题的更多信息.我用CSS :after伪元素做了这个.
ol {
list-style-type: decimal-leading-zero;
}
li:hover:after {
content: " + More info";
}
Run Code Online (Sandbox Code Playgroud)
现在,当我将鼠标悬停在More info文本上时,我想改变它的颜色.我真的不明白如何实现这种效果.我已经尝试了以下css规则,但它没有按预期工作.
li:after:hover {
color: red;
}
li:hover:after:hover {
color: red;
}
Run Code Online (Sandbox Code Playgroud)
在CSS中可以做到吗?
如果是,另一个问题很有趣,我可以将一个onclick事件附加到该:after元素吗?
我的目标是在OSX环境中的QT项目中使用C++解析大型csv文件.(当我说csv我的意思是tsv和其他变种1GB~5GB).
这似乎是一项简单的任务,但是当文件大小变大时,事情会变得复杂.我不想编写自己的解析器,因为许多边缘情况与解析csv文件有关.
我已经找到了各种csv处理库来处理这个工作,但解析1GB文件在我的机器上大约需要90~120秒,这是不可接受的.我现在没有对数据做任何事情,我只是为了测试目的而处理和丢弃数据.
cccsvparser是我尝试过的库之一.但唯一足够快的库是fast-cpp-csv-parser,它给出了可接受的结果:我的机器上15秒,但只有在知道文件结构时它才有效.
使用示例:fast-cpp-csv-parser
#include "csv.h"
int main(){
io::CSVReader<3> in("ram.csv");
in.read_header(io::ignore_extra_column, "vendor", "size", "speed");
std::string vendor; int size; double speed;
while(in.read_row(vendor, size, speed)){
// do stuff with the data
}
}
Run Code Online (Sandbox Code Playgroud)
如你所见,我无法加载任意文件,我必须专门定义变量以匹配我的文件结构.我不知道任何允许我在运行时动态创建这些变量的方法.
我尝试过的另一种方法是逐行读取csv文件,使用fast-cpp-csv-parser, LineReader类非常快(读取整个文件大约需要7秒),然后使用可以处理字符串的cccsvparser lib 解析每一行.但这需要大约40秒才能完成,与第一次尝试相比这是一个改进,但仍然是不可接受的.
我已经看到了与csv文件解析相关的各种stackoverflow问题,它们都没有将大文件处理到帐户中.
此外,我花了很多时间谷歌搜索找到这个问题的解决方案,我真的很想念包裹经理喜欢npm或pip在搜索开箱即用的解决方案时提供的自由.
我将不胜感激任何有关如何处理此问题的建议.
编辑:
当使用@fbucek的方法时,处理时间减少到25秒,这是一个很大的改进.
我们可以进一步优化这个吗?
我正在使用Gjs(Gnome JavaScript绑定)编写gtk +应用程序由于没有可用的文档,我正在阅读gnome-shell JavaScript的源代码.在我的应用程序中,我需要访问global.userdatadir.
我试图将Shell对象添加到我的脚本:
const Shell = imports.gi.Shell;
Run Code Online (Sandbox Code Playgroud)
然后运行它#gjs myscript.js
但是当我这样做时它会抛出一个错误说:
JS ERROR: !!! Exception was: Error: Requiring Shell, version none: Typelib file for namespace 'Shell' (any version) not found
JS ERROR: !!! lineNumber = '0'
JS ERROR: !!! fileName = '"gjs_throw"'
JS ERROR: !!! stack = '"("Requiring Shell, version none: Typelib file for namespace 'Shell' (any version) not found")@gjs_throw:0
@manager.js:5
"'
JS ERROR: !!! message = '"Requiring Shell, version none: Typelib file for namespace 'Shell' …Run Code Online (Sandbox Code Playgroud) 我编写了一个小型Web应用程序,每次请求都应该打开并读取JSON文件.我为此目的使用pickledb.我关心的是,库open()作为json.load()函数的参数传递.所以它让我思考..
当我写这样的代码时:
with open("filename.json", "rb") as json_data:
my_data = json.load(json_data)
Run Code Online (Sandbox Code Playgroud)
要么
json_data = open("filename.json", "rb")
my_data = json.load(json_data)
json_data.close()
Run Code Online (Sandbox Code Playgroud)
我很确定文件句柄正在关闭.
但是当我以这种方式打开它时:
my_data = json.load(open("filename.json", "rb"))
Run Code Online (Sandbox Code Playgroud)
的文档说,json.load()期待一个.read() -支撑含JSON文档类文件对象.
所以问题是,这个句柄是否会保持开放并且每次请求都会占用更多内存?在这种情况下谁负责关闭手柄?
我不是按位运算符的专家,但我经常看到一个模式,在比赛中由256k演示的程序员使用.而不是使用Math.floor()函数,使用双位NOT运算符~~(可能更快?).
像这样:
Math.floor(2.1); // 2
~~2.1 // 2
Run Code Online (Sandbox Code Playgroud)
搜索显示有更多模式使用相同的方式:
2.1 | 0 // 2
2.1 >> 0 // 2
Run Code Online (Sandbox Code Playgroud)
在开发控制台中玩这个时,我注意到了一个我不确定我完全理解的行为.
Math.floor(2e+21); // 2e+21
~~2e+21; // -1119879168
2e+21 | 0; // -1119879168
Run Code Online (Sandbox Code Playgroud)
引擎盖下发生了什么?
我有一个用作div背景的精灵表.尺寸是:
宽度:105920 高度:240.
这是一个大小为620kb 的单色png文件,所以我认为大小不是问题.
当我尝试将其用作background-image: url("spritesheet.png");Firefox时会抛出错误,说"图像损坏或截断".Chrome未显示任何错误消息,但未显示图像.
如果我用gimp将图像的宽度调整为10,000,一切都很好.但显然我不能再用它了.
CSS中允许的最大图像大小是否有任何限制?难道我做错了什么 ?
我正在使用扩展 WPF 工具包。
https://wpftoolkit.codeplex.com/wikipage?title=TimeSpanUpDown
当我单击箭头时,默认情况下它会增加 hours 的值。
有没有办法让它首先增加秒数作为默认行为?
写完html几年后,我意识到我真的不知道为什么这个href属性被命名为"href".
该HTML Recomendation不说关于这个问题的揭示:
此属性指定Web资源的位置,从而定义当前元素(源锚点)与此属性定义的目标锚点之间的链接.
另外,HTML 4.01 DTD不提供了很多线索.
href%URI; #IMPLIED - 链接资源的URI -
我可以对这个含义进行有根据的猜测,但我希望能有一些规范的东西.
我正在使用NSSM在 Windows 服务中运行 Node.js 应用程序,每天一次,我检查远程 API 并生成一个可执行文件,该文件会在系统托盘中弹出一个通知气球。
当我从控制台会话运行它时,它按预期工作,但是当从 Windows 服务运行时,我在运行进程列表中看到通知可执行文件,但气球没有显示。我想服务不应该有用户界面。但一定有办法做到这一点..
当我运行时services.msc,选择我的服务>属性>登录>标记“允许服务与桌面交互”没有帮助。
代码是:spawn("notify.exe", {cwd: path.resolve(__dirname, "/tools")});
什么会导致这种行为?
我应该如何在 python 中格式化 long for in语句?
for param_one, param_two, param_three, param_four, param_five in get_params(some_stuff_here, and_another stuff):
Run Code Online (Sandbox Code Playgroud)
我发现我只能用反斜杠来制动for in语句:
for param_one, param_two, param_three, param_four, param_five \
in get_params(some_stuff_here, and_another_stuff):
Run Code Online (Sandbox Code Playgroud)
但我的 linter 对这种格式有问题,像这样的格式化语句的Pythonic方式是什么?
我想在这里理解一些东西,解释自己的最佳方式是举个例子:
"" == false
// true
"0" == false
// true
false == false
// true
Run Code Online (Sandbox Code Playgroud)
但这里发生了什么?
"" == "0"
// false
Run Code Online (Sandbox Code Playgroud)
如果""评估false并"0"评估false逻辑,则预测它与我写的相同false == false.
我确实意识到我试图在这里比较两个字符串,但语言如何知道"a" == "b"或者之间的区别"" == "0"?在这种情况下如何发生强制?
javascript ×3
css ×2
css3 ×2
html ×2
node.js ×2
python ×2
botframework ×1
c# ×1
c++ ×1
coding-style ×1
csv ×1
facebook ×1
gnome-shell ×1
html5 ×1
json ×1
large-files ×1
pep ×1
pep8 ×1
qt ×1
timespan ×1
w3c ×1
windows ×1
wpf ×1
wpftoolkit ×1