我正在运行带有socket.io的Express js应用程序用于聊天webapp,并且我在24小时内随机获得以下错误5次左右.节点进程永远包装,并立即重新启动.
问题是重新启动快速将我的用户踢出他们的房间而没人想要.
Web服务器由HAProxy代理.没有套接字稳定性问题,只使用websockets和flashsockets传输.我无法故意重现这一点.
这是节点v0.10.11的错误:
events.js:72
throw er; // Unhandled 'error' event
^
Error: read ECONNRESET //alternatively it s a 'write'
at errnoException (net.js:900:11)
at TCP.onread (net.js:555:19)
error: Forever detected script exited with code: 8
error: Forever restarting script for 2 time
Run Code Online (Sandbox Code Playgroud)
编辑(2013-07-22)
添加了socket.io客户端错误处理程序和未捕获的异常处理程序.似乎这个捕获了错误:
process.on('uncaughtException', function (err) {
console.error(err.stack);
console.log("Node NOT Exiting...");
});
Run Code Online (Sandbox Code Playgroud)
所以我怀疑它不是socket.io问题,而是对我做的另一个服务器的http请求或mysql/redis连接.问题是错误堆栈无法帮助我识别代码问题.这是日志输出:
Error: read ECONNRESET
at errnoException (net.js:900:11)
at TCP.onread (net.js:555:19)
Run Code Online (Sandbox Code Playgroud)
我怎么知道是什么原因造成的?如何从错误中获得更多信息?
好吧,不是很冗长,但这里是带有"longjohn"的堆栈跟踪:
Exception caught: Error ECONNRESET
{ [Error: read ECONNRESET]
code: 'ECONNRESET',
errno: 'ECONNRESET',
syscall: 'read',
__cached_trace__: …
Run Code Online (Sandbox Code Playgroud) Android SDK应该安装在Mac OS X上的哪个位置?
我知道这听起来很容易.我需要在中心放置一个文本,但是当文本太长时,它需要在下面,但仍然在我的xml的中心对齐.
这是我的代码:
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/showdescriptioncontenttitle"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:layout_centerHorizontal="true"
>
<TextView
android:id="@+id/showdescriptiontitle"
android:text="Title"
android:textSize="35dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我把paddingTop和Bottom放在一边因为我需要一些空间.PS:我的代码更大; 它在RelativeLayout中.
我需要获取具有特定注释的字段的值,因此使用反射我可以获得此字段对象.问题是这个字段将永远是私有的,虽然我事先知道它总是有一个getter方法.我知道我可以使用setAccesible(true)并获取其值(当没有PermissionManager时),但我更喜欢调用其getter方法.
我知道我可以通过查找"get + fieldName"找到该方法(虽然我知道例如布尔字段有时被命名为"is + fieldName").
我想知道是否有更好的方法来调用这个getter(许多框架使用getters/setters来访问属性,所以也许他们以另一种方式做).
谢谢
我知道.NET中的结构不支持继承,但不清楚为什么它们以这种方式受限.
什么技术原因阻止结构继承其他结构?
在模拟框架中,您可以模拟对象或监视它.这两者之间有什么区别?我应该/何时使用一个而不是另一个?例如,看看mockito,我看到使用间谍和嘲讽做类似的事情,但我不确定两者之间的区别.
如何硬编码浮点数或双精度的绝对最大值或最小值?我想通过简单地迭代并捕获最大的数据来搜索数组的最大/最小值.
对于花车还有正负无穷大,我应该使用它们吗?如果是这样,我如何在我的代码中表示?
我有一个简单的Android项目,我用Android Studio 0.4.0创建.我使用Gradle 1.9和Gradle Android插件0.7.昨天我在我的gradle构建脚本中添加了Jake Wharton的ButterKnife库:
dependencies {
compile 'com.android.support:support-v4:19.0.0'
compile 'com.android.support:appcompat-v7:19.0.0'
// Butterknife
compile 'com.jakewharton:butterknife:4.0.1'
}
Run Code Online (Sandbox Code Playgroud)
当我从Android Studio运行应用程序时,构建运行正常并在我的设备上正确执行.但是当我尝试(从命令行)时gradle build
,构建失败.这是我的皮棉报告中的一部分:
InvalidPackage: Package not included in Android
/home/yami/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/4.0.1/f43b36925363701633d01adb8e54df7150397a78/butterknife-4.0.1.jar: Invalid package reference in library; not included in Android: javax.annotation.processing. Referenced from butterknife.internal.InjectViewProcessor.
/home/yami/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/4.0.1/f43b36925363701633d01adb8e54df7150397a78/butterknife-4.0.1.jar: Invalid package reference in library; not included in Android: javax.annotation.processing. Referenced from butterknife.internal.InjectViewProcessor.
/home/yami/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/4.0.1/f43b36925363701633d01adb8e54df7150397a78/butterknife-4.0.1.jar: Invalid package reference in library; not included in Android: javax.annotation.processing. Referenced from butterknife.internal.InjectViewProcessor.
/home/yami/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/4.0.1/f43b36925363701633d01adb8e54df7150397a78/butterknife-4.0.1.jar: Invalid package reference in library; not included …
Run Code Online (Sandbox Code Playgroud) 在IE中,下拉列表与dropbox的宽度相同(我希望我有意义),而在Firefox中,下拉列表的宽度根据内容而有所不同.
这基本上意味着我必须确保Dropbox足够宽以显示尽可能长的选择.这使我的页面看起来很难看:(
这个问题有解决方法吗?如何使用CSS为dropbox和下拉列表设置不同的宽度?
关于Arrange-Act-Assert的经典测试模式,我经常发现自己在Act之前添加了一个反主张.这样我知道传递的断言实际上是作为动作的结果传递的.
我认为它是类似于红-绿-重构红色,只有当我看到红条在我的测试过程中我知道,绿坝是指我写的代码有差别.如果我写一个通过测试,那么任何代码都会满足它; 同样,对于安排,断言法断言,如果我的第一个断言失败,我知道,任何法案会通过最后断言-因此,它实际上并没有证实有关都难.
你的测试是否遵循这种模式?为什么或者为什么不?
更新澄清:最初的断言基本上与最终断言相反.这不是安排工作的主张; 这是法案尚未奏效的断言.