小编Mic*_*mza的帖子

量角器:承诺如何运作?

我对角度有效的$ q库有一个很好的想法,但我不确定量角器或web-driver-js如何使用它们.(特别是因为我认为量角器/网络驱动器/角度之间的利用率略有不同)

例如,我在量角器教程中看到的示例代码似乎是逐行编写的,并假设前一个代码在下一个之前完成.(例如,browser.get(url)后跟browser.getTitle())是否存在某种隐含的前景?(我不必手动推迟解决/履行)

我通过https://github.com/angular/protractor/blob/master/docs/getting-started.md阅读 并浏览了webdriver文档和量角器api的链接,但我的理解仍然有点模糊.有些函数似乎返回值,有些函数返回许可,就像奇怪的同步和异步代码混合一样.

angularjs protractor

12
推荐指数
2
解决办法
9537
查看次数

缺少 inotify 事件(在 .git 目录中)

我正在使用 inotify 事件监视文件的更改(碰巧的是,从 Python 调用 libc)。

对于 a 期间的某些文件git clone,我看到了一些奇怪的东西:我看到了一个IN_CREATE事件,并且我通过ls该文件看到了该文件有内容,但是,我从未看到IN_MODIFYIN_CLOSE_WRITE. 这给我带来了问题,因为我想IN_CLOSE_WRITE对文件做出响应:具体来说,要启动文件内容的上传。

行为异常的文件在.git/objects/pack目录中,它们以.packor结尾.idx。git 创建的其他文件有一个更规则的IN_CREATE-> IN_MODIFY->IN_CLOSE_WRITE链(我不关注IN_OPEN事件)。

这是在 MacOS 上的 docker 内部,但我在远程系统中的 Linux 上的 docker 上看到了相同的证据,所以我怀疑 MacOS 方面不相关。如果正在观看并且git clone同一个docker 容器中,我就会看到这一点。

我的问题:

  • 为什么这些文件中缺少这些事件?

  • 可以做些什么呢?具体来说,我如何响应写入这些文件的完成?注意:理想情况下,我想在写作“完成”时做出回应,以避免不必要/(错误地)上传“未完成”的写作。


编辑:阅读https://developer.ibm.com/tutorials/l-inotify/看起来我所看到的与

  • 一个单独的临时文件,名称为tmp_pack_hBV4Alz,正在创建、修改和关闭;
  • 创建到该文件的链接,并带有最终.pack名称;
  • tmp_pack_hBV4Alz名称被删除。

我认为我的问题是尝试使用 inotify 作为上传文件的触发器,然后减少到注意到该.pack文件是另一个文件的硬链接,并在这种情况下上传?

linux git libc inotify docker

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

asyncio 任务的开销是多少?

任何 asyncio 任务在内存和速度方面的开销是多少?在不需要并发运行的情况下最小化任务数量是否值得?

python event-loop python-3.x python-asyncio

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

使用Emscripten Worker API传输数据而不进行复制

有没有办法让Emscripten在Web工作者和主UI线程之间传输而不是复制数据?

Emscripten有一个管理Web Workers之间通信API,我认为它只是使用了引擎盖下的postMessage/ onmessagemechanism.查看Emscripten Worker API的源代码,它似乎在调用时使用该transferList选项postMessage,因此数据将被复制.

实际上,我认为它至少被复制了两次:首先是线程之间的浏览器,然后是Emscripten第二次将它复制到Emscripten管理的堆空间中.如果您希望数据在回调后继续在接收端生存,则必须第三次复制,因为根据文档,传递给回调的数据仅保证在回调期间存在.

从顶部重复我的问题:有没有办法让Emscripten通过在Web worker和主UI线程之间传输而不是复制数据来避免所有这些复制?

javascript c c++ web-worker emscripten

8
推荐指数
1
解决办法
537
查看次数

FB.logout:在以后调用FB.getLoginStatus时应该怎么做?

根据https://developers.facebook.com/docs/reference/javascript/FB.logout/

方法FB.logout()将用户注销到您的站点

这对于后来调用FB.*函数意味着什么?

具体来说,我观察到即使对FB.logout的响应状态为"未知",在注销完成后,调用FB.getLoginStatus返回状态为"connected",当传递true作为第二个参数时或之后页面刷新.

这对我来说是意料之外的......也许我误解了"将用户从您的网站中注销"的含义:这对于FB.*功能意味着什么?我希望尽可能地扭转过程FB.login.如何才能做到这一点?


更新:我在http:// localhost:8080进行测试.当http://fbtest.charemza.name/我意识到注销作品如我所料,但注销在localhost:8080注销并不会似乎工作,即表现出上述问题.要清楚,控制台中任何时候都不会出现错误.该页面的代码如下.

要稍微改变一下这个问题,为什么它会在localhost:8080上执行此操作,是否有办法在本地开发注销,其行为与公共网站上的行为相同?

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Facebook Test</title>
</head>

<body>
  <script>
    window.fbAsyncInit = function() {
      FB.init({
        appId      : '1524395480985654',
        cookie     : true,
        xfbml      : false,
        status     : false,
        version    : 'v2.10'
      });

      FB.AppEvents.logPageView();   
    };

    (function(d, s, id){
       var js, fjs = d.getElementsByTagName(s)[0];
       if (d.getElementById(id)) {return;}
       js = d.createElement(s); js.id = id;
       js.src = "https://connect.facebook.net/en_US/sdk.js";
       fjs.parentNode.insertBefore(js, fjs);
     }(document, 'script', 'facebook-jssdk'));

    document.addEventListener("DOMContentLoaded", function(event) { …
Run Code Online (Sandbox Code Playgroud)

javascript facebook-javascript-sdk

8
推荐指数
1
解决办法
592
查看次数

将 bytes 可迭代对象转换为 str 可迭代对象,其中每个值都是一行

我有一个可迭代的bytes,例如

bytes_iter = (
    b'col_1,',
    b'c',
    b'ol_2\n1',
    b',"val',
    b'ue"\n',
)
Run Code Online (Sandbox Code Playgroud)

(但通常这不会硬编码或一次性全部可用,而是由生成器提供)并且我想将其转换为可迭代的str行,其中换行符预先未知,但可以是\r,\n或中的任何一个\r\n。所以在这种情况下将是:

bytes_iter = (
    b'col_1,',
    b'c',
    b'ol_2\n1',
    b',"val',
    b'ue"\n',
)
Run Code Online (Sandbox Code Playgroud)

(但同样,就像可迭代一样,而不是一次性全部存储在内存中)。

我怎样才能做到这一点?

上下文:我的目标是将 str 行的可迭代传递给csv.reader(我认为需要整行?),但我一般对这个答案感兴趣。

python csv newline

8
推荐指数
1
解决办法
1029
查看次数

在Mobile Safari上调试慢速angular-ui-router状态更改

我正在编写一个角度应用程序,使用angular-ui-router来管理状态/路由.

在桌面浏览器(Chrome/Safari)上,这很好用.但是,在iPhone 4上的IOS 6上的Mobile Safari上(以及在iPhone 5上的IOS 7上的较小范围),通过$ state.go更改状态可能需要长达2秒的时间.

我正在使用ngTouch,所以我认为它不是本机点击事件触发的300毫秒.没有调用$ state.go的ngClick属性现在似乎很快就会起作用.

我该怎么调试这个来找到花费的时间?

debugging mobile-safari ios angularjs angular-ui-router

6
推荐指数
1
解决办法
2481
查看次数

设置加载node-webkit窗口的背景颜色

在node-webkit中,如何在页面加载时设置窗口的背景颜色?它似乎总是白色的,但我要么是透明的,要么(在我的情况下)是绿色的.

我尝试过设置package.json transparent: truewindow选项,但似乎没有任何效果.

node-webkit

6
推荐指数
1
解决办法
1252
查看次数

Jerky在Chrome上使用ngAnimate中断了CSS过渡

我注意到,ngAnimate当Chrome被另一个转换中断时,加载的CSS转换在Chrome上"不稳定".也就是说,它们似乎跳到目标状态,而不是从当前值开始.如果没有加载ngAnimate,完全相同的过渡会更加平滑,并且在使用/不使用ngAnimate的Firefox上更平滑.

例如,在单击时添加/删除类的简单元素:

<bigger-on-click-class class="{{showBigger ? 'bigger' : ''}}" ng-click="showBigger = !showBigger"></bigger-on-click-class>
Run Code Online (Sandbox Code Playgroud)

CSS过渡动画:

bigger-on-click-class {
  display: block;
  height: 200px;
  width: 200px;
  background: red;
  -webkit-transition: height 5s;
  transition: height 5s;
}

bigger-on-click-class.bigger {
  height: 400px;
}
Run Code Online (Sandbox Code Playgroud)

快速连续的多次点击表现不同,具体取决于是否 ngAnimate加载:

http://plnkr.co/edit/Fhwbd3WRiz5wHRIm10y3?p=preview没有ngAnimate http://plnkr.co/edit/WSED064MV2dtPnsEQuti?p=previewngAnimate

如果您尝试在前面示例中的红色框上多次快速单击,您应该看到我的意思,或者单击下面的以查看截屏视频.

asdffsda

除了没有加载ngAnimate,有没有办法避免这种情况,因此中断动画从当前显示的值/位置开始?

编辑:初始链接不正确.此外,在Chrome中观察到不稳定的行为,但在Firefox中没有观察到.编辑:重新定义问题以使其更清晰,这是Chrome/Firefox的差异

google-chrome css3 css-transitions angularjs ng-animate

6
推荐指数
1
解决办法
2677
查看次数

$ http承诺链以错误的顺序运行

我是angularjs的新手.我的目标非常简单.我想进行ajax调用以获取数据,并且一旦完成,我想再次调用以获取依赖于第一组信息的另一组数据.

我正在尝试利用promise机制这样做,以便我可以利用链接而不是嵌套的ajax调用,并且更好地保留具有我可以根据需要绑定在一起的独立函数的能力.

我的代码类似于以下内容:

var promiseGetWorkTypes = function ($q, $scope, $http) {
	console.log("promiseGetWorkTypes");

	return $q(function (resolve, reject) {
		$http({
			method: 'GET',
			url: '/WorkTypes'
		}).then(
			function (payload) {
				console.log("Got workttypegroups")
				console.log(payload);

				$scope.WorkTypeGroups = payload.data;

				console.log("End of worktypegroups");
				resolve(payload);
			},
			function (payload) {
				reject(payload);
			});
	});
};

var promiseGetRecentActivities = function ($q, $scope, $http) {
	console.log("promiseGetRecentActivities");

	return $q(function (resolve, reject) {
		$http({
			method: 'GET',
			url: '/RecentHistory'
		}).then(
			function (payload) {
				$scope.RecentActivities = payload.data;

				resolve(payload);
			},
			// data contains the response
			// status is …
Run Code Online (Sandbox Code Playgroud)

javascript ajax promise angularjs angular-promise

6
推荐指数
1
解决办法
780
查看次数