小编Siy*_*ion的帖子

Safari无法在嵌套的SVG中呈现图像

因此,鉴于此HTML,背景图像在Firefox,IE和Chrome中加载得很好.但在Safari中,它只是忽略它.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <meta http-equiv="Content-Style-Type" content="text/css">
  <title></title>
</head>
<body>
  <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="0 0 141.72999572753906 255.1199951171875">
    <image xlink:href="http://labels.labellogiclive.com/alfresco_10_p1_alf001_uk__v0.svg" preserveAspectRatio="none" x="0" y="0" width="141.73" height="255.12"></image>
  </svg>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

现在我认为它可能是一个服务器问题,没有给出正确的标题,但我已经检查过它看起来不错(image/svg+xml).所以我有点亏......有什么想法吗?

safari svg image

10
推荐指数
1
解决办法
573
查看次数

向C#公开C++ API

所以我所拥有的是*.dll中包含的C++ API,我想使用C#应用程序来调用API中的方法.

到目前为止,我已经创建了一个包含本机C++ API的C++/CLR项目,并设法创建一个类似于以下内容的"桥"类:

// ManagedBridge.h
#include <CoreAPI.h>
using namespace __CORE_API;

namespace ManagedAPIWrapper
{
    public ref class Bridge
    {
        public:
            int             bridge_test(void);
            int             bridge_test2(api_struct* temp);
    }
}
Run Code Online (Sandbox Code Playgroud)

.

// ManagedBridge.cpp
#include <ManagedBridge.h>

int Bridge::bridge_test(void)
{
    return test();
}

int Bridge::bridge_test2(api_struct* temp)
{
    return test2(temp);
}
Run Code Online (Sandbox Code Playgroud)

我还有一个C#应用程序,它引用了C++/CLR"Bridge.dll",然后使用其中包含的方法.我有很多问题:

  1. 我无法弄清楚如何在C#程序中调用bridge_test2,因为它不知道api_struct实际上是什么.我知道我需要在某个地方封送对象,但是我是在C#程序还是C++/CLR桥中做到的?
  2. 这似乎是暴露API中所有方法的一种非常冗长的方式,是不是有一种我错过的更简单的方法?(那不使用P/Invoke!)

编辑:好的,所以我现在有了基础工作,感谢下面的回复,但是我的结构(在这个例子中称之为"api_struct2")在C++本机代码中同时具有本机枚举和联合,如下所示:

typedef struct
{
    enum_type1  eEnumExample;
    union
    {
            long        lData;
            int     iData;
            unsigned char   ucArray[128];
            char        *cString;
            void        *pvoid;
    } uData;
} api_struct2;
Run Code Online (Sandbox Code Playgroud)

我想我已经想出如何让enum工作; 我已经在托管代码中重新声明它并执行"native_enum …

c# c++ clr interop marshalling

7
推荐指数
1
解决办法
2483
查看次数

C#Socket.Receive消息长度

我目前正在开发一个可以接受来自多个客户端计算机的多个连接的C#Socket服务器.服务器的目标是允许客户端从服务器事件"订阅"和"取消订阅".

到目前为止,我已经在这里采取了一个快乐的好看:http://msdn.microsoft.com/en-us/library/5w7b7x5f( v = VS.100).aspxhttp://msdn.microsoft.com/ en-us/library/fx6588te.aspx的想法.

我发送的所有消息都是加密的,所以我接收了我希望发送的字符串消息,将其转换为byte []数组,然后在将消息长度预先挂起到数据之前加密数据并通过连接发送出去.

令我印象深刻的一件事是:在接收端,当收到消息的一半时,Socket.EndReceive()(或相关的回调)似乎可能会返回.是否有一种简单的方法可以确保每封邮件都"完整"并且一次只收到一封邮件?

编辑:例如,我认为.NET/Windows套接字没有"包装"消息,以确保在一个Socket.Receive()调用中收到与Socket.Send()一起发送的单个消息?或者是吗?

到目前为止我的实施:

private void StartListening()
{
    IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint localEP = new IPEndPoint(ipHostInfo.AddressList[0], Constants.PortNumber);

    Socket listener = new Socket(localEP.Address.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
    listener.Bind(localEP);
    listener.Listen(10);

    while (true)
    {
        // Reset the event.
        this.listenAllDone.Reset();

        // Begin waiting for a connection
        listener.BeginAccept(new AsyncCallback(this.AcceptCallback), listener);

        // Wait for the event.
        this.listenAllDone.WaitOne();
    }
}

private void AcceptCallback(IAsyncResult ar)
{
    // Get the socket that handles the client …
Run Code Online (Sandbox Code Playgroud)

c# sockets asynchronous tcp asynccallback

7
推荐指数
2
解决办法
2万
查看次数

跟随/剪辑到文字的文字?

好的,所以我知道如何将文本剪辑到特定的几何体,但是文本不会根据剪辑自动换行,所以如果你有"勾号",怎么去实现类似于下面所示的效果呢?作为几何/路径?

是手动添加适合每一行的文本框然后根据将/不适合分割文本的情况?

示例图片

c# wpf text textbox textblock

5
推荐指数
1
解决办法
504
查看次数

如何创建不能使用AdornedElement扩展的装饰器?

很简单,我想创建一些调整大小/重新调整的装饰,以附加到FrameworkElement,如果他们使用正常的装饰,将允许用户调整元素的大小,并允许他们重新调整元素(如果他们使用底部)重新调整元素 - 正确的装饰并按住SHIFT按钮,同时这样做.

我已经尝试了各种方法来实现这一目标,但我总是最终将装饰者自己缩放,因此他们最终会变得庞大,或者拥有巨大的边界.我已经开始使用相对于窗口的位置来定位它们并忽略应用于AdornedElement的RenderTransform,但是我得到了一些非常不寻常的行为.

首先,当我将元素缩放(大致)2倍时,重新缩放行为会崩溃并开始遍布整个地方.

显然,这种行为比描述更容易看到,因此为什么我附加了一个示例解决方案(VS 2010)来演示问题以及导致它的代码.

示例VS 2010解决方案

如果有人能给我任何正确方向的指示,请随时告诉我,我做错了!大声笑.

另外,要记住,如果底层装饰元素被旋转,这个装饰器最终还必须正确显示,目前它不会.

更新:为了让NVM保持高兴,这是解决方案的方式:NVM的方式

c# wpf adorner scale

4
推荐指数
1
解决办法
2179
查看次数

自定义指令中的表单验证...?

我有一个HTML表单,它是从给定的"产品"对象及其拥有的字段动态构建的,允许用户修改关联的数据.我正在使用自定义"编辑器"指令来处理允许用户更新数据所需的HTML元素的创建.

这里可以看到一个例子:http://plnkr.co/edit/2fAVVpwTHFgxwTq4eAMI

首先,我不确定这是否是实现这一目标的最佳方法,但它(到目前为止)确实可以正常工作.(欢迎任何其他想法!)

但是,我想在控件中添加验证规则,例如.require这样当输入为空时会出现一条消息.我试图将这些验证规则添加到代码中(如指令中的模板中所示),但它永远不会触发.我很确定这与我的范围有线交叉在某处... AngularJS Batarang在主要范围上展示了一个对象:

form: {
  {{fieldName}}: {}
}
Run Code Online (Sandbox Code Playgroud)

这显然是错的(和胡说八道!)

angularjs

4
推荐指数
1
解决办法
4723
查看次数

将XAML存储在数据库糟糕的设计中?

例如,假设我正在编写一个允许用户设计自己的名片的应用程序,允许他们将可视对象添加到他们当前正在设计的"模板"中,这些对象中的每一个都绑定到用​​户的各个位置 - 数据.

例如.他们拖动一个"地址框",自动输入用户的地址,然后是"名称文本",它再次自动使用用户定义的名称.

这样做的原因是客户可以创建15个模板,所有模板都有自己的"外观",但是如果他们想要更改地址,他们只需要在一个地方修改它.

所有这些可视对象和模板本身都是用XAML编写的.我需要将这些用户创建的模板存储到数据库中,以便他们可以检索它们并在以后编辑它们.我看到它的方式,我有两个选择:

  1. 将整个模板作为XAML存储在名为"templates"的数据库表中,同时还包含ID和OwnerID.

  2. 为抽象类型的"可视对象"创建一个表.为每个具体类型的可视对象(即"AddressBox")创建一个表,该表将从抽象类型继承并具有每个用户可配置属性(字体大小,x/y坐标等)的字段.最后,创建一个名为template的表,它包含一组可视对象.

应该注意的是,我一直在使用实体框架来设计它,如果我在那里抛出了一些EF关键字,那么道歉!

就个人而言,目前XAML存储可能足以满足我们的要求,但是我所看到的一切似乎都表明这是将数据存储在数据库中的一种非常糟糕的方式.跳到这个35分钟:http://youtu.be/uFLRc6y_O3s是不是这正是他建议不要做?

使用XAML存储,我获得了属性值继承,这可能会使事情稍微容易一些,尽管我不确定用户是否会理解值如何"流"到链中.显然XAML也允许我存储我喜欢的任何属性值; 我不必先将它添加到数据库中.

缺点是,如果全部是XAML,我认为管理数据可能要困难得多; 最坏的情况可能需要检索每一块XAML,解析所有这些,找到我需要更改/查看的值,重新解析,保存更新后的XAML"blob".这显然会导致更大的读/写操作.

c# xaml database-design

3
推荐指数
1
解决办法
867
查看次数

node.js托管SSL?

所以说我有一个node.js应用程序,它同时托管HTTP和HTTPS服务器,如问题中所述:如何强制在Express.js中强制使用SSL/https

在我的代码中,我有以下内容:

// General configuration settings for production usage
app.configure(function () {
  app.set('port', process.env.PORT || 3000);
  app.set('sslport', process.env.SSLPORT || 4000);
  ...
}

http.createServer(app).listen(app.get('port'), function () {
  winston.info('Express server listening on port ' + app.get('port'));
});

var options = {
  key: fs.readFileSync('key.pem'),
  cert: fs.readFileSync('cert.pem')
};

https.createServer(options, app).listen(app.get('sslport'), function () {
  winston.info('Express server listening on port ' + app.get('sslport'));
});
Run Code Online (Sandbox Code Playgroud)

这适用于本地运行节点服务器.

但是,我想将我的网站发布到Azure网站,Heroku,Nodejitsu等云托管提供商.

所有云主机似乎都设置了一个process.env.PORT值,但只有一个.当我的HTTPS服务器被创建时,这通常会导致应用程序崩溃,因为PORT已经在使用/访问被拒绝/等等.

那么如何创建/托管一个只有一个端口的安全登录页面的网站呢?

cloud-hosting node.js

3
推荐指数
1
解决办法
3076
查看次数

使用 jQuery 创建和访问 SVG 标签?

是否可以像这样在 jQuery 中创建一个 SVG 标签:

var dragSVG = $('<svg xmlns="http://www.w3.org/2000/svg"></svg>');
dragSVG.append('<rect x="0" y="0" width="20" height="20" style="fill:red"></rect>');
Run Code Online (Sandbox Code Playgroud)

如果是这样,如何访问 DOM?IE。如果是 HTML,我会执行以下操作:

return dragSVG.html();
Run Code Online (Sandbox Code Playgroud)

但由于它不是 HTML,这会引发异常......或者我是否错过了一些完全基本的东西!?

编辑:

我将尝试更清楚地解释我想要实现的目标;我有一个代表 SVG 'item' 的按钮,可以将其拖到主 SVG 画布上。当用户开始拖动时,我想在鼠标下显示 SVG 'item' 以提供用户反馈。当用户将它放到画布上时,我需要将“项目”移动到主画布上。

      $('#testBtnDrag').draggable({
          opacity: 0.7,
          revert: 'invalid',
          cursorAt: { top: 0, left: 0},
          helper: function (event) {
              var dragSVG = '<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20"><rect x="0" y="0" width="20" height="20" style="fill:red"></rect></svg>';
              return dragSVG;
          }              
      });

      // I can't attach the droppable to the SVG tag directly, IE / FF don't work …
Run Code Online (Sandbox Code Playgroud)

javascript jquery svg

2
推荐指数
1
解决办法
8349
查看次数

如何检测Azure网站上的HTTPS重定向?

根据标题,我有一个Node.js应用程序,我希望能够检测是通过HTTPS还是HTTP发出请求.到目前为止,我的重定向看起来像这样:

// Ensure the page is secure, or that we are running a development build
if (req.headers['x-forwarded-proto'] === 'https' || process.env.NODE_ENV === 'development') {
    res.render('index');
} else {
    winston.info('Request for login page made over HTTP, redirecting to HTTPS');
    res.redirect('https://' + req.host);
}
Run Code Online (Sandbox Code Playgroud)

这在Nodejitsu上工作正常,但重定向的HTTPS请求没有在Azure上设置'x-forwarded-proto'标头.

azure node.js

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