我见过很多人说Symfony2,Zend Framework 2和其他人都是事件驱动的.
在桌面世界中,通过事件驱动编程,我了解应用程序将在其状态发生变化时通知其观察者.
由于PHP应用程序是无状态的,因此无法做到这一点.IE将观察者绑定到视图,观察用户使用界面时的更改.相反,它需要一个新的请求过程才能更新视图.所以,这不是一个事件,而是一个全新的要求.
另一方面,有一个类似的概念:事件驱动的架构.
在这里你可以阅读:
http://en.wikipedia.org/wiki/Event-driven_programming
http://en.wikipedia.org/wiki/Event-driven_architecture
另一个是:
http://en.wikipedia.org/wiki/Signal_programming
信号是向进程发出事件发生的通知.信号有时被描述为软件中断.信号类似于硬件中断,因为它们中断了程序的正常执行流程; 在大多数情况下,无法准确预测信号何时到达.
- Stackoverflow [singals]标签描述
而且,我以前称之为事件驱动的东西似乎与Qt引入的信号和插槽模式更相关(观察者模式实现)
举个例子,Prado框架声称是事件驱动的:
http://www.pradosoft.com/demos/quickstart/?page=Fundamentals.Applications(应用程序生命周期部分)
http://www.pradosoft.com/docs/manual/System/TApplication.html#methodonEndRequest
IIRC,这不是一个事件驱动的应用程序,而是只是实现该类的类所使用的插件钩子(信号和插槽)observable Interface
.我的意思是,考虑桌面应用程序使用事件的方式以及无状态应用程序使用事件的方式(作为插件):第一个使用整个应用程序的事件,包括视图,最后一个仅用于服务器端操作.
一个与面向方面的编程(带信号和插槽)更相关,另一个与横切关注点/AOP 没有特别的关系.换句话说,它与应用程序状态更相关.
那么,实际上这些术语之间的关系以及它们之间的区别是什么?
这些术语只是通用模式吗?因此,实现观察者模式的所有内容都可以被视为事件驱动的?
UPDATE
Zend框架2
我上面链接的关于AOP的文章(http://mwop.net/blog/251-Aspects,-Filters,-and-Signals,-Oh,-My!.html)由Matthew Weier O'Phinney撰写( ZF领袖).IIRC,它没有提到"事件驱动",只提到信号和插槽.
Symfony 2
Symfony2
EventDispatcher
组件描述没有提及"事件驱动"应用程序:http: //symfony.com/doc/current/components/event_dispatcher/introduction.html 它只包含对"事件"的引用(确实,由信号和插槽处理).
两个框架似乎都使用信号和插槽中的拦截过滤器模式,以便在请求过程中处理同步事件.
我想知道Doctrine 2和Propel 1.6的优点和缺点是什么.例如,Doctrine 2实际上是用户友好的,但如果你想要超越顺从,就会限制你.Doctrine 2文档缺乏更新......
如果可能的话,您可以分享您在Doctrine2表现良好或Propel完美的地方的经验.
提前致谢.
似乎BIGINT
是MySQL上可用的最大整数,对吧?
你需要存储BIGINT(80)时该怎么办?
为什么在某些情况下,比如Twitter API文档中的某个地方,他们建议我们将这些大整数存储为varchar
?
选择使用一种类型而不是另一种类型背后的真正原因是什么?
我需要在针对Active Directory的Web应用程序上更多地了解SSO.
对于只是要求用户登录到AD认证,我知道,我可以用这样一些图书馆Zend_Ldap
,adLdap
等等.但在这种情况下,用户仍需要输入两次登录信息.例如:从php验证Active Directory/ISA
Afaik,SSO
用于transparent login
,我需要实现一个额外的apache模块.例如:
如何使用Microsoft AD为内部PHP应用程序实现单点登录(SSO)?
在使用IE/Firefox时使用PHP,活动目录对ldap进行身份验证
首先,我需要知道我需要使用哪个apache模块以及为什么.在这篇文章中,例如主要有三种:mod_ntlm
,mod_auth_kerb
和Apache2:AuthenNTLM
.而那个人就是Apache2:AuthenNTLM
在上面提到的问题中,接受的答案是mod_auth_sspi
.
在谈论Active Directory时,我得到了这个答案,它将活动目录描述为ldap
+ kerberos
+"其他一些杂项"的实现.
我对所有这些名字都非常困惑,因为我已经非常努力了.有人可以向我澄清一下吗?(ldap
,kerberos
,ntlm
,sspi
等等)
最后,有人可以指出应用程序如何识别经过身份验证的用户(来自AD).它只是通过用户名传递的用户名$_SERVER['REMOTE_USER']
吗?是否发送了密码?浏览器如何发送这些额外的标头?是否需要在每个工作站中进行任何本地配置?
我有这张桌子:
CREATE TABLE `categories` (
`id` int(11) NOT NULL auto_increment,
`category_id` int(11) default NULL,
`root_id` int(11) default NULL,
`name` varchar(100) collate utf8_unicode_ci NOT NULL,
`lft` int(11) NOT NULL,
`rht` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `category_id` (`category_id`),
KEY `lft` (`lft`,`rht`),
KEY `root_id` (`root_id`)
)
Run Code Online (Sandbox Code Playgroud)
基于这个问题: 将修改后的预订树遍历模型(嵌套集)转换为<ul>
不同的是,我在一张桌子上有很多树.每行都有一个代表其父级及其顶级父级的外键:category_id和root_id.我还有基于这个例子的lft和rht字段:http://articles.sitepoint.com/article/hierarchical-data-database/2
基于这些行:
INSERT INTO `categories` VALUES(1, NULL, NULL, 'Fruits', 1, 14);
INSERT INTO `categories` VALUES(2, 1, 1, 'Apple', 2, 3);
INSERT INTO `categories` VALUES(3, 1, 1, 'Orange', 4, 9);
INSERT INTO …
Run Code Online (Sandbox Code Playgroud) 我注意到同样的情况发生在:
$moduleLoader = new Zend_Application_Module_Autoloader(array(
'namespace' => '',
'basePath' => APPLICATION_PATH));
$moduleLoader->addResourceType('acl','acls/','Acl');
Run Code Online (Sandbox Code Playgroud)
和
$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
'basePath' => APPLICATION_PATH,
'namespace' => '',
));
$resourceLoader->addResourceType('acl', 'acls', 'Acl')
Run Code Online (Sandbox Code Playgroud)
事实上,有什么区别?
目前我是一名PHP程序员,我想知道学习NLP的最佳方法,从理论到实践.语言无关紧要.
例如:
理论
技术
是否可以创建基于主题的教程?
我有一个使用 HTML5 + WebRTC 完美运行的视频会议应用程序。STUN/TURN 服务器由第三方公司提供,但不是免费的。您可能知道,WebRTC 在浏览器之间进行一些信息交换后,它会选择连接两个对等点的最佳方式,并且如果可能,它使用不涉及 TURN 服务器的直接连接。
问题是,是否可以使用直接连接或中间 TURN 服务器检测 RTCPeerConnection 何时建立?
我有这张桌子:
id
feed_id
...
Run Code Online (Sandbox Code Playgroud)
假设我有 500 行,我想为每个 feed_id 选择 3 个条目?和 50 作为总限制。
这个SQL怎么写?
解决:我有@EdnilsonMaia的答案并改编它 http://codepen.io/anon/pen/QNGroX
我有一个布局,其中有一连串的用户喜欢这样:
Window
-------------------
O - O - O - O - O |
| |
O - O - O - O - O |
| |
O - O - O |
------------------
O = user
- = chain (icon)
Run Code Online (Sandbox Code Playgroud)
当用户调整窗口大小时,每行的用户数量减少,并且需要重新排列链,增加行数并减少每行的用户数.我发现它与排序算法非常相似.
注意,当重新排列时,第一行的最后一个用户转到第二行的最后一个位置,第二行的第一个用户转到第三行的第一个位置,它必须在改变位置时遵守它们连接的顺序.
我需要的是如何在JS中编写算法的方向.到目前为止,我的代码更改了用户的位置,但没有考虑正确的顺序以及链图标.调整大小恢复原始大小时,它也不起作用.
这是我的代码,注意每行是一个单独的UL:
function log(msg, debug) {
debug = typeof debug !== 'undefined' ? debug : true;
if (debug) {
console.log(msg);
}
}
$(document).ready(function() {
$(window).on('resize', function() {
rearrangeChain(true);
});
function rearrangeChain(debug) {
debug = typeof …
Run Code Online (Sandbox Code Playgroud)