根据socket.io示例:
要广播,只需添加一个
broadcast标志emit和send方法调用.广播意味着向除了启动它的套接字之外的所有人发送消息.
var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
socket.broadcast.emit('user connected');
});
Run Code Online (Sandbox Code Playgroud)
我试图将它与新的socket.io namsepace功能结合起来,所以我得到了这个:
var chat = ioserver.of('/chat');
chat.on('connection', function (socket) {
console.log('chat connection');
socket.on('message', function (msg) {
console.log(msg);
chat.send(msg);
});
});
Run Code Online (Sandbox Code Playgroud)
这很好用,聊天频道(没有其他频道)的每个人都收到消息.但发件人也得到了它.所以我尝试做以下事情:
chat.on('connection', function (socket) {
console.log('chat connection');
socket.on('message', function (msg) {
console.log(msg);
chat.broadcast.send(msg);
});
});
Run Code Online (Sandbox Code Playgroud)
并得到一个异常:'无法调用方法'发送'未定义'.好吧,所以我想,广播是单个套接字的特性(虽然它感觉有点奇怪 - 单个套接字如何能够与其他套接字交换......).所以我尝试过:
chat.on('connection', function (socket) {
console.log('chat connection');
socket.on('message', function (msg) {
console.log(msg);
socket.broadcast.send(msg);
});
});
Run Code Online (Sandbox Code Playgroud)
但现在情况更糟 - 没有人收到邮件,甚至没有收到邮件.无论如何,这是我逻辑上所期望的 - 一个套接字无法通过自身广播.这次没有例外,因此为套接字定义了广播.
如果我做:
chat.on('connection', function (socket) …Run Code Online (Sandbox Code Playgroud) 我创建了一个自定义Web API全局异常处理程序,如下所示:
public class MyGlobalExceptionHandler : ExceptionHandler
{
public override void Handle(ExceptionHandlerContext context)
{
// here I handle them all, no matter sync or not
}
public override Task HandleAsync(ExceptionHandlerContext context,
CancellationToken cancellationToken)
{
// not needed, but I left it to debug and find out why it never reaches Handle() method
return base.HandleAsync(context, cancellationToken);
}
public override bool ShouldHandle(ExceptionHandlerContext context)
{
// not needed, but I left it to debug and find out why it never reaches Handle() method …Run Code Online (Sandbox Code Playgroud) 我的团队的开发人员已经习惯了Laravel迁移的强大功能,他们在本地计算机和我们的开发服务器上工作得很好.但客户的数据库管理员不接受Laravel迁移.他为每个新版本的应用程序请求原始SQL脚本.
是否有任何工具或编程技术可以将Laravel迁移的输出捕获到上/下SQL脚本?
如果我们可以在创建生产构建时将SQL脚本生成集成到CI系统(TeamCity)中,那将是完美的.
顺便说一句,我们将在这个项目中使用Laravel 5和PostgreSQL.
我们的webdesigner创建了一个带有以下font-face的CSS:
@font-face {
font-family: 'oxygenregular';
src: url('oxygen-regular-webfont.eot');
src: url('oxygen-regular-webfont.eot?#iefix') format('embedded-opentype'),
url('oxygen-regular-webfont.woff') format('woff'),
url('oxygen-regular-webfont.ttf') format('truetype'),
url('oxygen-regular-webfont.svg#oxygenregular') format('svg');
font-weight: normal;
font-style: normal;
}
Run Code Online (Sandbox Code Playgroud)
它适用于IE和Firefix.但是有一个问题:在IE上,只有当我使用内部网页链接导航页面时才能正确呈现字体.如果我点击"刷新"或"返回"按钮,则字体将被默认字体(Times New Roman)替换.
目前该网站使用的是HTTPS,但在使用HTTP时遇到了同样的问题.
当我使用内部网站链接导航时,在IE Developer工具的网络选项卡(Shift-F12)中,我看到以下内容:
/Content/oxygen-regular-webfont.eot? GET 200 application/vnd.ms-fontobject
Run Code Online (Sandbox Code Playgroud)
当我使用刷新/返回按钮时,还有两个其他字体的条目:
/Content/oxygen-regular-webfont.woff GET 200 application/x-font-woff
/Content/oxygen-regular-webfont.ttf GET 200 application/octet-stream
Run Code Online (Sandbox Code Playgroud)
CSS文件本身以下列方式加载:
/Content/site.css GET 200 text/css
Run Code Online (Sandbox Code Playgroud)
我试图删除woff和ttf所以我有以下内容:
@font-face {
font-family: 'oxygenregular';
src: url('oxygen-regular-webfont.eot');
src: url('oxygen-regular-webfont.eot?#iefix') format('embedded-opentype');
font-weight: normal;
font-style: normal;
}
Run Code Online (Sandbox Code Playgroud)
但仍然IE的行为方式相同(除了它不再下载woff和ttf):在浏览Back/Refresh时显示不正确的回退字体.
如何使IE在刷新/返回操作上加载正确的字体?
在为包含多个项目的解决方案运行代码覆盖时,我注意到Code Coverage还包括我的测试程序集.
我发现了一篇文章,建议使用.runsettings的以下模板:
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<DataCollectionRunSettings>
<DataCollectors>
<DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<Configuration>
<CodeCoverage>
<ModulePaths>
<Include>
<!-- Do not specify any includes. This will attempt to include all binaries -->
</Include>
<Exclude>
<!-- Exclude modules that aren't to be processed, by their name / path -->
<ModulePath>.*Tests\.dll$</ModulePath> <!-- I put it here -->
</Exclude>
</ModulePaths>
<UseVerifiableInstrumentation>True</UseVerifiableInstrumentation>
<AllowLowIntegrityProcesses>True</AllowLowIntegrityProcesses>
<CollectFromChildProcesses>True</CollectFromChildProcesses>
<CollectAspDotNet>False</CollectAspDotNet>
<!--
Additional paths to search for symbol files. Symbols must be found for modules to …Run Code Online (Sandbox Code Playgroud) .net unit-testing code-coverage visual-studio vs-unit-testing-framework
我有一个带有C#dll项目的Visual Studio解决方案.该解决方案还有一个测试项目,它引用了C#dll项目的输出.引用的项目dll已设置Copy Local = true.
如果我从Visual Studio运行此测试,它可以正常工作.
但是如果我从MSBuild任务运行它,由于某种原因,MSTest不会将引用的C#dll复制到MSTest工作文件夹,因此测试失败.奇怪的是,所有其他引用的库都被复制到MSTest工作文件夹.如果我放了一个
[DeploymentItem(@"PleaseCopyThis.dll")]
Run Code Online (Sandbox Code Playgroud)
在我的测试方法之前,最后它被复制到MSTest工作文件夹,我的测试运行正常.
但是为什么Visual Studio只复制不属于解决方案的引用dll,但不复制引用的项目dll?
当我为SQL 2012创建Visual Studio数据库项目并将其与现有数据库同步(使用比较模式)时,我还同步SQL服务器登录.Visual Studio为登录生成以下脚本:
CREATE LOGIN [my_user] WITH PASSWORD = 'somesecurepass'
Run Code Online (Sandbox Code Playgroud)
当我尝试在存在此登录的服务器上发布生成的SQL时,sqlcmd向我显示错误:
The server principal my_user already exists.
Run Code Online (Sandbox Code Playgroud)
当我查看Visual Studio生成的sql脚本时,我看到许多对象都包含在IF EXISTS语句中,但是CREATE LOGIN没有被包装!
我试图在项目的SQL脚本中手动包装它,但是然后项目没有构建,并且指向IF的错误:
SQL70001: This statement is not recognized in this context.
Run Code Online (Sandbox Code Playgroud)
现在,如何强制Visual Studio使用IF EXISTS检查生成登录创建脚本,并且不会丢失同步功能?
我将所有DateTime字段存储为UTC时间.当用户请求网页时,我想采用他首选的本地时区(而不是服务器计算机的本地时区)并自动将所有Web表单中的所有DateTime字段显示为本地日期.
当然,我可以在每个表单中的每个DateTime.ToString()调用上应用转换,或者实现一些帮助程序实用程序但是这是一个耗时的任务,并且还有一些第三方组件使用自定义DateTime显示模板进行配置很棘手.
基本上,我想使DateTime类的行为如下:
from this moment on for this web request,
whenever some code calls DateTime.ToString(), convert it to the local time
using the timezone offset given at the very beginning of the web request,
but if possible, please keep .NET core library DateTime.ToString() calls intact
(I don't want to mess up event logging timestamps etc.)
Run Code Online (Sandbox Code Playgroud)
有什么办法吗?
顺便说一下,我使用的是ASP.NET MVC 4,如果重要的话.
我们的客户希望在浏览器中显示日期和时间值,就像它们在数据库中一样,我们将它们作为UTC存储在数据库中.
起初我们在序列化和Javascript方面遇到了一些问题.DateTime值被移动了两次 - 首先匹配机器的本地时区,然后匹配浏览器中的时区.我们通过向JavaScriptSerializer添加自定义转换器来修复它.我们在Serialize覆盖中将DateTime标记为DateTimeKind.Utc.从Serialize中提取数据有点困难,但是我们发现了一些Uri hack,这有助于在相同的JavaScriptSerializer/Date(286769410010)/格式中返回DateTime值,但没有转移到本地时间.在Javascript方面,我们修补了KendoUI JS库来偏移构造的Date()对象,使它们看起来好像是UTC.
然后我们开始在另一方面工作,反序列化.同样,我们必须调整我们的代码以使用自定义stringify而不是JSON.stringify,这会在从本地时间转换为UTC时再次抵消数据.到目前为止,一切似乎都很好.
但看看这个测试:
public void DeserialiseDatesTest()
{
var dateExpected = new DateTime(1979, 2, 2,
2, 10, 10, 10, DateTimeKind.Utc);
// this how the Dates look like after serializing
// anothe issue, unrelated to the core problem, is that the "\" might get stripped out when dates come back from the browser
// so I have to add missing "\" or else Deserialize will break
string s = "\"\\/Date(286769410010)\\/\"";
// this get deserialized to UTC date …Run Code Online (Sandbox Code Playgroud) 我发现要在视图周围添加边框,我可以使用以下代码作为视图的背景:
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF" />
<stroke android:width="1dp" android:color="#999999" />
<padding android:left="1dp" android:top="1dp" android:right="1dp"
android:bottom="1dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)
但是如果我想要一个仅用于底部或顶部或右侧或左侧的边框怎么办?我尝试了以下方法:
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<stroke android:color="#000"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
但是当我把它设置为背景时
android:background="@drawable/my_border"
Run Code Online (Sandbox Code Playgroud)
它在视图的中间绘制线条,所以我有一个穿透效果.有什么方法可以在底部或顶部绘制这条线或使其垂直?
在WPF中,我们有一个形状的相对坐标,所以我可以根据需要偏移线.Android上有类似的东西吗?如果我们没有边框,至少我们应该有好的线形绘图工具,所以我们可以根据需要绘制边框.Android开发者是否计划对此采取行动?