我正在查看C++技术报告1中包含的Boost库,并尝试了解每个库的功能.
我刚刚完成了一个例子boost::mem_fn,现在我想知道使用它的意义何在而不是更好boost::bind.据我所知,它们都返回一个指向成员函数的函数对象.我发现mem_fn这么有限,以至于我找不到使用它会比使用它更好的场景bind.
我错过了什么吗?有没有绑定不能取代mem_fn的情况?
假设我从域名注册表中购买了一个新域名(somedomain.com),我想在具有两个IP地址的服务器上设置我自己的域名服务器.
我在哪里设置BIND,我该怎么做?
下一步:返回域名注册表并将DNS设置为指向NS1.SOMEDOMAIN.COM和NS2.SOMEDOMAIN.COM.
如果我转发的域名指向其OWN名称服务器域,这是一件坏事吗?我应该改变吗?当两个子域是转发给它们的域的一部分时,它如何知道NS1和NS2的去向?
我应该只使用我的注册商提供的DNS,并为NS1和NS2制作两个CNAME记录条目,指向新创建的DNS服务器的服务器ips吗?这会有用吗?
谁能向我解释这个过程?谢谢.
我有一个页面,用户可以拖放对象并将其保存为图像.当用户离开页面时,会触发事件beforeunload.现在,每次都会发生这种情况.我想要做的是,如果用户保存了他的工作,解除绑定事件,以便消息可能不会再次弹出.为此,我在jQuery中使用了 unbind方法.但是,它似乎不起作用.下面是绑定和解除绑定事件的代码.
var notSaved = function()
{
return 'You have not yet saved your work.Do you want to continue? Doing so, may cause loss of your work' ;
}
$(window).bind('beforeunload', notSaved);
Run Code Online (Sandbox Code Playgroud)
调用save方法后,
$(window).unbind('beforeunload', notSaved);
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?
另外,save方法实际上是一个Ajax调用.
我有一个绑定到持久服务的Android应用程序(一旦启动startService()).
该服务是应用程序不可或缺的一部分,因此几乎在每个Activity中都使用.因此,我想只绑定一次服务(而不是在每个Activity中绑定/解除绑定)并在我的应用程序的生命周期内保持绑定.
我已经从Application扩展并绑定到Application#onCreate()中的服务.但是我现在遇到的问题是我不知道我的应用程序何时存在,因为从未调用Application#onTerminate(),请参阅JavaDoc:
此方法用于模拟过程环境.永远不会在生产Android设备上调用它,只需杀死它们即可删除进程; 这样做时不会执行任何用户代码(包括此回调).
那么如何从Application中绑定的服务中干净地取消绑定?
我是ES5 Function.prototype.bind和粉碎参数的忠实粉丝(基本上为函数创建默认参数).
我有点愚弄,但我不能为我的生活找出自己的构造了.这是我的游乐场:
function hello( arg1, arg2 ) {
console.log('hello()');
console.log('"this" is: ', this);
console.log('arguments: ', arguments);
}
var foo = Function.prototype.call.bind( hello,{what: 'dafuq'}, 2 );
foo( 42 );
Run Code Online (Sandbox Code Playgroud)
此日志输出如下:
hello()
"this" is: Object{ what="dafuq" }
arguments: [2,42]
Run Code Online (Sandbox Code Playgroud)
但是我不明白这个{what: 'dafuq'}物体究竟是如何作为this内部参考的foo.据我所知,我们正在创造一个绑定调用到Function.prototype.call.让我们.bind()快速检查MDN概要:
fun.bind(thisArg[, arg1[, arg2[, ...]]])
Run Code Online (Sandbox Code Playgroud)
所以,thisArgfor .call是hello函数,后跟参数列表.基本上会发生这种情况
Function.prototype.call.call( hello, {what: 'dafuq'}, 2);
Run Code Online (Sandbox Code Playgroud)
...呃现在我的大脑有点疼.我想我现在有了一个想法会发生什么,但请有人找到可靠的单词来详细解释它.
{what: 'dafuq'}变成了this reference在2周前在这里问了同样的问题之后,我终于找到了"解决方案".这就是我回答自己问题的原因.;)
如何在JQUERY中绑定,组合和重新绑定事件?
这是我运行服务器的代码:
class MyRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
#....
PORT = 8089
httpd = SocketServer.TCPServer(("", PORT), MyRequestHandler)
httpd.allow_reuse_address = True
print "Serving forever at port", PORT
try:
httpd.serve_forever()
except:
print "Closing the server."
httpd.server_close()
raise
Run Code Online (Sandbox Code Playgroud)
然而这就是:
^CClosing the server.
Traceback (most recent call last):
File "server.py", line 118, in <module>
self.send_error(400, "Unimplemented GET command: %s" % (self.path,))
File "/home/claudiu/local/lib/python2.6/SocketServer.py", line 224, in serve_forever
r, w, e = select.select([self], [], [], poll_interval)
KeyboardInterrupt
(.virtualenv)claudiu@xxx:~/xxx$ python server.py
Traceback (most recent call last):
File "server.py", line 122, in …Run Code Online (Sandbox Code Playgroud) php文档中的示例Closure::bind包含static匿名函数声明.为什么?如果删除它,我找不到区别.
用:
class A { private static $sfoo = 1; }
$cl1 = static function() { return self::$sfoo; }; // notice the "static"
$bcl1 = Closure::bind($cl1, null, 'A');
echo $bcl1(); // output: 1
Run Code Online (Sandbox Code Playgroud)
没有:
class A { private static $sfoo = 1; }
$cl1 = function() { return self::$sfoo; };
$bcl1 = Closure::bind($cl1, null, 'A');
echo $bcl1(); // output: 1
Run Code Online (Sandbox Code Playgroud) 由于bind不是跨浏览器(旧的)功能,因此有一个polyfill :( 来自John Resig的书)
/*1*/ Function.prototype.bind = function ()
/*2*/ {
/*3*/ var fn = this,
/*4*/ args = Array.prototype.slice.call(arguments),
/*5*/ object = args.shift();
/*6*/ return function ()
/*7*/ {
/*8*/ return fn.apply(object,
/*9*/ args.concat(Array.prototype.slice.call(arguments)));
/*10*/ };
/*11*/ };
Run Code Online (Sandbox Code Playgroud)
但我不明白为什么我们需要arguments在线#9.
我的意思是 :
如果我有这个对象:
var foo = {
x: 3
}
Run Code Online (Sandbox Code Playgroud)
我有这个功能:
var bar = function(p,b){
console.log(this.x+' '+p+' '+b);
}
Run Code Online (Sandbox Code Playgroud)
所以,如果我想bar在foo上下文中运行参数 - 我需要做的就是:
var boundFunc = bar.bind(foo,1,2) …Run Code Online (Sandbox Code Playgroud) 尝试使用非Laravel包:https://packagist.org/packages/luceos/on-app
编辑composer.json来要求它并做作曲家安装,更新,然后dump-autoload -o.
这个包需要初始化:vendor/luceos/on-app/src/OnAppInit.php
哪个不是一个类,只有一个方法.但是当我尝试在服务提供者中绑定它时似乎没有加载它.云的版本是在OnAppInit.php中启动的,但是没有这样做,所以当然会出现"不支持版本"的错误.
我知道我错过了一个小细节,却找不到它.也许在服务提供商?
composer.json
"require": {
"luceos/on-app": "~3.5"
"autoload": {
"psr-4": {
"Luceos\\OnApp\\": "vendor/luceos/on-app/src/"
Run Code Online (Sandbox Code Playgroud)
配置/ app.php
'providers' => [
'App\Providers\OnAppServiceProvider',
Run Code Online (Sandbox Code Playgroud)
应用程序/提供者/ OnAppServiceProvider.php
public function register()
{
$this->app->bind('onapp', function($app)
{
$hostname = 'http://cloud';
$username = 'email@foo.com';
$password = 'api_key';
$factory = new \OnApp_Factory($hostname, $username, $password);
$setting = $factory->factory('Settings')->getList();
return $setting;
});
}
Run Code Online (Sandbox Code Playgroud)
看起来像那里... vendor/composer/autoload_files.php
$vendorDir . '/luceos/on-app/src/OnAppInit.php',
Run Code Online (Sandbox Code Playgroud)
供应商/作曲家/ autoload_psr4.php
'Luceos\\OnApp\\' => array($vendorDir . '/luceos/on-app/src'),
Run Code Online (Sandbox Code Playgroud) bind ×10
unbind ×3
javascript ×2
jquery ×2
android ×1
autoload ×1
boost ×1
c++ ×1
closures ×1
dns ×1
ecmascript-5 ×1
instance ×1
ip-address ×1
laravel ×1
nameservers ×1
php ×1
port ×1
python ×1
service ×1
tcp ×1