我正在尝试将一个数字范围转换为另一个数字,保持比率.数学不是我的强项.
我有一个图像文件,其中点值可能在-16000.00到16000.00之间,尽管典型范围可能要小得多.我想要做的是将这些值压缩到整数范围0-100,其中0是最小点的值,100是最大值的值.中间的所有点都应该保持相对比率,即使丢失了一些精度我想在python中这样做,但即使是一般算法也应该足够.我宁愿一个算法,其中最小/最大或任一范围可被调整(即,在第二范围可以是-50℃至800,而不是0到100).
为什么display:block;width:auto;
我的文本输入不像div那样填充容器宽度?
我的印象是div只是一个具有自动宽度的块元素.在下面的代码中,div和输入不应该有相同的尺寸吗?
如何获得填充宽度的输入?100%宽度不起作用,因为输入具有填充和边框(导致最终宽度为1像素+5像素+ 100%+ 5像素+ 1像素).固定宽度不是一个选项,我正在寻找更灵活的东西.
我更喜欢直接回答变通方法.这似乎是一个CSS怪癖,理解它可能会有用.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>width:auto</title>
<style>
div, input {
border: 1px solid red;
height: 5px;
padding: 5px;
}
input, form {
display: block;
width: auto;
}
</style>
</head>
<body>
<div></div>
<form>
<input type="text" name="foo" />
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我应该指出我已经可以使用包装器解决方法做到这一点.除了与页面语义和CSS选择器关系的这种联系之外,我试图理解问题的本质以及是否可以通过改变INPUT本身的性质来克服它.
好的,这很奇怪!我发现解决方案是简单地添加max-width:100%
到输入width:100%;padding:5px;
.然而,这引发了更多问题(我将在另一个问题中提出),但似乎宽度使用普通的CSS框模型,max-width使用Internet Explorer边框模型.真奇怪.
好吧,最后一个似乎是Firefox 3中的一个错误.Internet Explorer 8和Safari 4将最大宽度限制为100%+填充+边框,这是规范所要做的.最后,Internet Explorer做对了.
天啊,这真棒!在玩这个游戏的过程中,在尊敬的大师Dean Edwards和Erik Arvidsson的帮助下,我设法将三个独立的解决方案拼凑在一起,在具有任意填充和边框的元素上实现真正的跨浏览器100%宽度.见下面的答案.此解决方案不需要任何额外的HTML标记,只需要一个类(或选择器)和旧版Internet Explorer的可选行为.
我正在使用专有的MS'filter'属性来尝试创建一个非丑陋的等同于css3 text-shadow和box-shadow;
在我遇到这个问题之前,我确实做得非常好.看起来当我将一个过滤器应用于另一个div中的div时,该div也有一个过滤器,过滤器效果最终被组合在子对象上.
我无法解释它比这更好,这是一个演示:http: //cableflow.dev.arc.net.au/test/filters.html
我尝试过使用filter:none; 做重置但没有快乐.我也尝试了不同的语法变体,即"-ms-filter:'progid:... Glow()'","filter:progid:... Glow()","filter:Glow()"等等..
在IE8中测试
我在我的网站上密切监视404s,这有助于我检测断开的链接和黑客攻击但我最近在用户代理中从这些字符串的浏览器中获取了日志垃圾邮件.他们似乎试图扫描有效资源的父目录,但由于SEO重写,目录对我的网站有特殊意义.
在我决定如何处理之前,我想知道这些UA正在尝试做什么以及为什么.如果它只是"噪音"我会很乐意完全放弃连接,否则如果他们做了一些有用的事情,我可以提供适当的回应.
我相信有些要求来自我的客户,所以我不能做任何太多破坏性的事情,就像我想的那样.
我想构建一个C预处理器/编译器,允许从本地和在线资源收集功能.即:
#fetch MP3FileBuilder http://scripts.com/MP3Builder.gz
#fetch IpodDeviceReader http://apple.com/modules/MP3Builder.gz
void mymodule_main() {
MP3FileBuilder(&some_data);
}
Run Code Online (Sandbox Code Playgroud)
这很容易.
困难的部分是我需要一种可靠的方法来"沙箱化"导入的代码,直接或不受限制地访问磁盘或系统资源(包括内存分配和堆栈).我想要一种方法来安全地运行不受信任的C代码(模块)的小片段,而没有将它们放在单独的进程,VM或解释器中的开销(尽管可以接受单独的线程).
要求
我很乐意接受C的一个子集.我不需要像模板或类这样的东西.我主要对高级语言不能像快速数学,位操作以及二进制数据的搜索和处理这样的事情感兴趣.
这是不现有C代码可以不加修改地重复使用,以创建一个模块的意图.目的是要求模块符合一组规则和限制,旨在将模块限制为基本逻辑和转换操作(例如视频转码或压缩操作).
这种编译器/预处理器的理论输入是单个ANSI C文件(或安全子集),带有module_main函数,NO包含或预处理器指令,没有ASM,它将允许循环,分支,函数调用,指针数学(限于分配给模块的范围),位移,位域,强制转换,枚举,数组,整数,浮点数,字符串和数学.其他任何东西都是可选的.
示例实施
这是一个伪代码片段,可以更好地解释这一点.这里一个模块超出了它的内存分配配额,并且还创建了无限递归.
buffer* transcodeToAVI_main( &in_buffer ) {
int buffer[1000000000]; // allocation exceeding quota
while(true) {} // infinite loop
return buffer;
}
Run Code Online (Sandbox Code Playgroud)
这是一个转换版本,我们的预处理器添加了观察点来检查内存使用和递归,并将整个事件包装在异常处理程序中.
buffer* transcodeToAVI_main( &in_buffer ) {
try {
core_funcStart(__FILE__,__FUNC__); // tell core we're executing this function
buffer = …
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个类似英语的小语言来指定任务.基本思想是将一个陈述分成这些动词应该适用的动词和名词短语.我正在使用nltk,但没有得到我希望的结果,例如:
>>> nltk.pos_tag(nltk.word_tokenize("select the files and copy to harddrive'"))
[('select', 'NN'), ('the', 'DT'), ('files', 'NNS'), ('and', 'CC'), ('copy', 'VB'), ('to', 'TO'), ("harddrive'", 'NNP')]
>>> nltk.pos_tag(nltk.word_tokenize("move the files to harddrive'"))
[('move', 'NN'), ('the', 'DT'), ('files', 'NNS'), ('to', 'TO'), ("harddrive'", 'NNP')]
>>> nltk.pos_tag(nltk.word_tokenize("copy the files to harddrive'"))
[('copy', 'NN'), ('the', 'DT'), ('files', 'NNS'), ('to', 'TO'), ("harddrive'", 'NNP')]
Run Code Online (Sandbox Code Playgroud)
在每种情况下,它都没有意识到第一个单词(选择,移动和复制)是作为动词.我知道我可以创建自定义标注器和语法来解决这一点,但在同一时间,我不愿去重新发明轮子,当很多东西是我的联赛.我特别希望能够处理非英语语言的解决方案.
所以无论如何,我的问题之一是:这种语法有更好的标记吗?有没有办法可以比现有的标记更加频繁地使用动词形式?有没有办法训练标记器?有更好的方法吗?
我喜欢Eclipse,但是我讨厌自动完成复仇!我发誓,不管我在prefs或Google看起来多么努力,我找不到我关闭它的地方!
我遇到了CFEclipse和PHP编辑器的问题.
如何完全禁用所有"智能"引号/标签/大括号自动插入.不是一些..所有这一切.无论我选择了多少选项,两位编辑都会继续尝试为我完成代码...通常会产生令人不快的结果.喜欢这个(PHP编辑器):
<img alt="banner" src="/images/banner.jpg"></img>
Run Code Online (Sandbox Code Playgroud)
这是HTML,而不是XHTML - 我不想或不需要我的img标签已关闭.
无论如何,在我进入首选项|之后,这仍然会发生 PHP | 编辑| 打字和偏好| PHP | 编辑| 代码辅助并取消选中每个选项.
我不能成为唯一一个遇到这个问题的人,但是我找不到任何有关此问题的建议或帮助.
我将日志记录模块MemoryHandler设置为为SMTPHandler目标排队调试和错误消息.我想要的是当包含所有调试语句的进程错误(每行一个)时发送一封电子邮件.我得到的是每个调试消息的单独电子邮件.
这似乎应该是微不足道的,并且是日志包的一部分,但我找不到任何关于它的内容,没有例子,谷歌上没有任何内容.
log = logging.getLogger()
log.setLevel(logging.DEBUG)
debug_format = logging.Formatter("%(levelname)s at %(asctime)s in %(filename)s (line %(lineno)d):: %(message)s")
# write errors to email
error_mail_subject = "ERROR: Script error in %s on %s" % (sys.argv[0], os.uname()[1])
error_mail_handler = logging.handlers.SMTPHandler(SMTP_HOST, 'errors@'+os.uname()[1], [LOG_EMAIL], error_mail_subject)
error_mail_handler.setLevel(logging.ERROR)
#error_mail_handler.setLevel(logging.DEBUG)
error_mail_handler.setFormatter(debug_format)
# buffer debug messages so they can be sent with error emails
memory_handler = logging.handlers.MemoryHandler(1024*10, logging.ERROR, error_mail_handler)
memory_handler.setLevel(logging.DEBUG)
# attach handlers
log.addHandler(memory_handler)
log.addHandler(error_mail_handler)
Run Code Online (Sandbox Code Playgroud)
与此相关:
error_mail_handler
如果它是目标,我是否需要明确地添加到记录器memory_handler
?应该error_mail_handler
设置为DEBUG还是ERROR目标?当它被喂食时它甚至需要一个目标memory_handler
吗?
很想看到解决这个问题的任何人的一些工作代码.
我有一个查询,如果缺少某个列,我基本上需要一个回退值.我想知道我是否可以在我的查询中完全处理这个问题(而不是先探测并发送一个单独的查询.本质上我正在寻找一个等效的COALESCE
处理丢失列的情况.
想象一下以下2个表.
T1
id | title | extra
1 A | value
- and -
T2
id | title
1 A
Run Code Online (Sandbox Code Playgroud)
我希望能够使用相同的查询从这些表中的任何一个中进行选择.
例如,如果t2实际上有一个我可以使用的"额外"列
SELECT id,title, COALESCE(extra, 'default') as extra
Run Code Online (Sandbox Code Playgroud)
但是只有在列值为NULL时才有效,而不是在列完全丢失时.
我更喜欢SQL版本,但我也可以接受PLPGSQL函数(行为类似于COALLESCE).
SQL纯粹主义者的注意事项:我真的不想辩论为什么我想在SQL中而不是在应用程序逻辑中这样做(或者为什么我不会只是将列永久地添加到模式中)所以请限制你的评论/答案具体要求,而不是你对数据库"正确性"的看法,或者其他任何可能会冒犯你的问题.
我正在尝试将console.log()方法的条件赋值实现为变量,如下所示:
var dbglevel = 1;
var dbg = (dbglevel > 0) ? console.log : function(){};
dbg('message'); // throws TypeError
Run Code Online (Sandbox Code Playgroud)
TypeError:在没有实现接口控制台的对象上调用'log'.
它曾经工作但在Firefox 30中发生了一些变化.现在我不知道它是否应该工作.我怀疑的原因是我在文档对象中看到了同样的事情.比较这两个函数赋值的结果,第一个是函数包装器,第二个是直接赋值给方法:
function qs1(q) { return document.querySelector(q); }; // wrapper
qs1('head'); // works
var qs2 = document.querySelector;
qs2('head'); // throws TypeError
Run Code Online (Sandbox Code Playgroud)
TypeError:'querySelector'调用未实现接口Document的对象.
我在这看到什么?为什么将方法直接赋值给变量会破坏它与父对象的"接口"?
我想要做到这一点的理由是双重的:
1.)赋值语法较短,我不需要担心声明参数,2.)更重要的是,我希望我的dbg()调用向控制台报告正确的文件和行号.如果函数是包装器,则控制台始终在该包装器中显示console.log调用的行号.我不想模拟行号记录,因为console.log
直接调用的常规方法为您提供了一个可单击的链接,以查看以调用它为中心的源为中心的源.
我不是在寻找涉及FireBug,预处理(LESS/SASS)或第三方脚本等插件的解决方法.解决方案只需要在vanilla Firefox 30或更高版本上运行,我想解决的具体问题是如何在我想要有条件地记录的每一行上压缩以下代码:
if (typeof cfg.DEBUG != 'undefined' && cfg.DEBUG > 2) console.log(something);
Run Code Online (Sandbox Code Playgroud)
......对......
dbg(something);
Run Code Online (Sandbox Code Playgroud)
... dbg()
函数执行任何适当的条件评估,然后显示相同的行号,就像我直接调用console.log一样.