小编n3r*_*3rd的帖子

哪些编程语言没有上下文?

或者,更准确一点:哪些编程语言是由无上下文语法定义的?

从我收集的内容来看,由于宏和模板之类的东西,C++不是无上下文的.我的直觉告诉我,函数式语言可能没有上下文,但我没有任何硬数据来支持.

额外的代表简洁的例子:-)

compiler-theory context-free-grammar

59
推荐指数
4
解决办法
2万
查看次数

什么时候应该返回接口和具体类?

用Java编程我几乎总是出于习惯,写下这样的东西:

public List<String> foo() {
    return new ArrayList<String>();
}
Run Code Online (Sandbox Code Playgroud)

大多数时候甚至没有考虑过它.现在,问题是:我是否应该始终将接口指定为返回类型?或者建议使用接口的实际实现,如果是,在什么情况下?

很明显,使用界面有很多优点(这就是它的原因).在大多数情况下,库函数使用的具体实现并不重要.但也许有些情况确实很重要.例如,如果我知道我将主要随机访问列表中的数据,LinkedList那就不好了.但是如果我的库函数只返回界面,我根本就不知道.为了安全起见,我甚至可能需要将列表明确地复制到ArrayList:

List bar = foo();
List myList = bar instanceof LinkedList ? new ArrayList(bar) : bar;
Run Code Online (Sandbox Code Playgroud)

但这看起来很可怕,我的同事可能会在自助餐厅里骂我.理所当然.

你们有什么感想?您的指导方针是什么?您何时倾向于抽象解决方案,何时会显示您的实施细节以获得潜在的性能提升?

java collections abstraction

22
推荐指数
7
解决办法
8402
查看次数

使用POST方法将参数发布到URL而不使用表单

我想使用POST方法将参数发布到URL,但我不能使用表单.即使我使用表单,也必须在没有用户交互的情况下自动发布.这可能吗?我怎样才能做到这一点?

javascript forms post

18
推荐指数
2
解决办法
11万
查看次数

将正方形定位在最小直径的圆上

给定n个边长为l的正方形,如何确定圆的最小半径r,以便我可以沿着圆周均匀分布所有正方形而不重叠?(约束:第一个方格将始终位于12点.)

后续问题:如何放置n个高度为h和宽度为w的相同矩形?

例如http://pub.n3rd.org/circle.png

algorithm math geometry

18
推荐指数
1
解决办法
1918
查看次数

如何检查(我的)SQL语句的语法正确性

我们目前正在设置集成服务器,在此过程中我们在SVN上设置了预提交挂钩,这样我们的开发人员就无法检查语法无效的文件(主要是PHP和XML).

我们还有一堆.sql文件(对于MySQL),我也想提到它们.不幸的是,谷歌没有提出任何有用的任务.

有任何想法吗?

mysql lint syntax-checking

17
推荐指数
2
解决办法
1万
查看次数

Mysql创建名称中包含特殊字符的数据库

我想创建一个名称将包含特殊字符的数据库.例如,(., - ,_,@,#,$,%,&,*)

任何人都可以提供任何输出吗?

mysql special-characters

15
推荐指数
1
解决办法
3万
查看次数

为什么浏览器阻止某些端口?

我正在使用websockets,看来,我测试的所有具有本机websocket支持的浏览器(Safari,Chrome)阻止了一些端口.如果我尝试通过端口80连接到我的服务器,每个工作正常.如果我尝试其他端口,如81,82或1000,则连接过早关闭,因为另一端没有任何东西.这是预期的行为,它的工作非常精彩.

但是,对于某些端口(例如20,37或79),Chrome开发人员控制台只是说,WebSocket port 79 blocked但我的JS代码没有收到任何有关此信息的信息(甚至没有某种超时).Safari有点冗长和评论SECURITY_ERR: DOM Exception 18: An attempt was made to break through the security policy of the user agent.

所以我的问题是:

如何可靠地检测到端口被阻塞?
我是否必须设置超时并手动检查?这似乎不是最明智的方式,尽管它可能是跨浏览器的唯一方法.

我在哪里可以找到被阻止端口的列表?
不幸的是,我的谷歌搜索没有发现任何有用的东西.

为什么这些端口首先被阻止?

提前致谢!

javascript browser websocket

13
推荐指数
3
解决办法
8489
查看次数

保证onmouseout事件开火

我目前正在开发一个Web应用程序,并遇到了一个小问题.我正在使用ExtJS,但我相信这是一个普遍的JS问题.

当光标进入HTML元素时,onmouseover触发该光标离开该元素时onmouseout触发该事件.到现在为止还挺好.不幸的是,似乎人们不能完全依赖这种行为.非常快速的鼠标移动可能导致事件无法触发(例如,使用数位板重新定位光标).

处理这些问题的最佳做法是什么?我是否需要监控所有onmousemove事件并手动跟踪光标的最后位置并自行触发相应的onmouseout事件?

javascript events

11
推荐指数
1
解决办法
3158
查看次数

Ansible使用systemd而不是服务模块

我刚刚用Ansible 2.2和Debops弄湿了,我遇到了以下问题.我有一个主机test-host,我部署了一个MySQL服务器(使用geerlingguy.mysql).

该角色使用以下处理程序重新启动服务:

---
- name: restart mysql
  service: "name={{ mysql_daemon }} state=restarted sleep=5"
Run Code Online (Sandbox Code Playgroud)

我认为,它使用Ansibles 服务模块来重启服务器.但是,失败了:

unsupported parameter for module: sleep
Run Code Online (Sandbox Code Playgroud)

所以只是为了排除那个自定义角色的任何怪异,我试图像这样直接执行模块:

ansible test-host -b -m service -a 'name=mysql sleep=5 state=restarted'
Run Code Online (Sandbox Code Playgroud)

结果相同.

使用更详细的输出显示运行Ansible(除其他外):

Running systemd
Using module file /usr/local/lib/python2.7/site-packages/ansible-2.2.0-py2.7.egg/ansible/modules/core/system/systemd.py
Run Code Online (Sandbox Code Playgroud)

因此,似乎使用该systemd模块而不是service(查看模块显示它确实是别名service).并且,瞧,systemd不支持sleep参数.

如何解决这个问题?

ansible devops

11
推荐指数
1
解决办法
3900
查看次数

让jsdoc和Crockford的设计模式相处融洽

我正在使用Douglas Crockford的设计模式来实现私有,特权和公共方法.它基本上看起来像这样(使用RequireJS):

define(function () {
    return function () {
        var that = {},

        _init = function () {
            // "constructor"
        },

        _privateFn = function () {
            return 42;
        };

        that.publicFn = function () {
            return 2 * _privateFn();
        };

        _init(arguments);

        return that;
    };
});
Run Code Online (Sandbox Code Playgroud)

但是,我无法让jsdoc工具包正确解析它.我玩过@name@memberOf注释(就像这里一样),但无论我做什么,我都无法让功能显示出来.

有谁知道解决方案?

javascript oop requirejs

9
推荐指数
1
解决办法
3267
查看次数