小编Edu*_*ard的帖子

如何防止Electron中的多个实例

我不知道这是否可能,但我不妨给它一个机会并问.我正在做一个Electron应用程序,我想知道是否有可能一次只有一个实例.

我找到了这个要点,但我不确定使用它.有人可以分享一些更好的想法吗?

var preventMultipleInstances = function(window) {
    var socket = (process.platform === 'win32') ? '\\\\.\\pipe\\myapp-sock' : path.join(os.tmpdir(), 'myapp.sock');
    net.connect({path: socket}, function () {
        var errorMessage = 'Another instance of ' + pjson.productName + ' is already running. Only one instance of the app can be open at a time.'
        dialog.showMessageBox(window, {'type': 'error', message: errorMessage, buttons: ['OK']}, function() {
            window.destroy()
        })
    }).on('error', function (err) {
        if (process.platform !== 'win32') {
            // try to unlink older socket if it exists, …
Run Code Online (Sandbox Code Playgroud)

electron

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

在Swift中删除WKWebView Accesory栏

我现在正试着将这个转换成Swift而没有太多的背景.

这是我到目前为止所得到的...而且我一直在寻找谷歌并不知道要搜索什么才能更具体.你能否详细说明我做错了什么?谢谢

更新:

我已经找到了objective-c标签,因此更多与此线程相关的人可能能够看到它并希望得到答案.

在此输入图像描述

objective-c ios swift

9
推荐指数
3
解决办法
2666
查看次数

如何以圆形形式均匀地传播点

我已经搜索了类似于这个问题的一些问题,但没有一个问题我遇到了同样的问题.我有一个单位的地图,1000x1000单位,把它想象成像素.问题是我必须将圆形均匀地分布到1000x1000地图中,所有我想到的就是这样:

$quadrant = array_search(min($quadrants), $quadrants); // the quadrant with less points
$radius = (current_points_number / sqrt(pi() / $points_density);
$angle = pi() * mt_rand() / 2 / mt_getrandmax();
$x = round((($quadrant == 2 || $quadrant == 3) ? -1 : 1) * cos($angle) * $radius + 500);
$y = round((($quadrant == 3 || $quadrant == 4) ? -1 : 1) * sin($angle) * $radius + 500);
Run Code Online (Sandbox Code Playgroud)

正如你在下一张图片中看到的那样,这个实际算法的结果是一个问题,因为它倾向于使点更密集于圆的中心并广泛分散在它的边缘.

在此输入图像描述

任何建议都将受到高度赞赏.

php math trigonometry

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

推送一对一的聊天结构

presence-channels在Pusher的平台上有点困惑,因为我正在从头开始构建一个聊天应用程序.现在,我知道你们中的一些人已经看到了大量的"实时聊天应用程序"主题,但是,我正在寻找点对点聊天,而不是整个站点的全球性事物.更像是一个Facebook聊天,你可以在那里一对一.

现在,我已经在PubNub的演示中看到了一个例子(名为Babel),但是,这个东西远非我正在寻找的东西,因为我已经在控制台中检查了请求,即使它没有显示,在其他之间发送的消息用户也显示在我的网络请求日志中,因为它在JS中被过滤而不是服务器端,这不是我想要的.

所以,回到主题,我知道频道/私人频道/在线频道功能,我决定这样做:

  • 打开应用程序时,每个用户都会记录到他的private-user_id频道(创建,如果它已经不存在).

  • 同时(在打开应用程序时)user1订阅一个presence-global频道,如果朋友在线,其他人会跟踪.

  • 当别人想送他一个消息,例如user2user1,他赞同private-1其后的JavaScript将处理该事件.

现在,我知道这有什么不对,因为..如果user3会发送消息给user1他订阅,private-user1所以我猜他会看到user2发送消息时触发的事件user1,对吧?或者我弄错了?

我在他们的文档中读到presence频道实际上是一个private频道扩展,所以我现在在想..为什么再使用private频道,然后,我怎么能通知我在线的所有朋友.

但是,在他们的文档中出现了一些其他内容,告诉我channels提供两个重要的事情(其中包括),首先是a way of filtering data第二个,第二个是a way of controlling access.

我怎么应该"过滤数据",因为他们的文档中没有链接,或者更好,你在一对一的聊天中有什么想法.如果我的所有文档都错了,我很抱歉,我看了他们的示例应用程序,但没有一个使用我正在寻找的一对一技术.

我是Pusher和socket连接等的新手,但我已经学会了如何验证,如何创建,检测和处理频道中的事件,我可以创建一个与在线成员进行简单的全局聊天,但是,当涉及到私人频道我对如何为两个用户创建单独的频道感到困惑.

提前致谢 !

javascript websocket facebook-chat pusher

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

在delphi SDI中创建新表单时传递参数

好吧,如果这有点令人困惑,我很抱歉,但我不知道如何更好地解释它.我有一个聊天表单,在用户事先在TLoginForm中进行身份验证后显示.

用户登录然后显示chatForm:

with TChatForm.Create(Application) do
begin
    Show;
end;
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何将用户名传递给chatForm,以便我可以在聊天中将其用作昵称,考虑到表单自动连接到服务器OnShow的事实,所以我将需要已经发送的用户名.

我是delphi的新手,所以如果我的代码中有任何错误,请原谅.

delphi parameters vcl

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

TServerSocket Delphi上的多字节字符支持

在处理多用户聊天应用程序时,我一直困扰着让多字节字符在TServerSocket/TClientSocket上工作.

这是客户端将消息发送到服务器的部分:

  procedure TChatForm.SendBtnClick(Sender: TObject);
  var str : string;
  begin
    str := MsgLabel.Text;
    ClientSocket.Socket.SendText('message' + separator + nickname + separator + str);
    MsgLabel.Text := '';
    add_text(MsgBox,MsgLabel,nickname+': '+str,'none');
  end;
Run Code Online (Sandbox Code Playgroud)

这是服务器解析收到的数据的方式:

procedure TServerForm.ServerSocketClientRead(Sender: TObject;Socket: TCustomWinSocket);
var
  i,hnd : Integer;
  recv : string;
  arr : TStringArray; // type TStringArray = array of string;
begin
  recv := Socket.ReceiveText;
  hnd := Socket.Handle; //using this to avoid sending received data back to the client
  arr := SplitStr(recv,separator); 
  //SplitStr is a function i use because TStringList.DelimitedText uses …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-2010

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

如何在Delphi中从合成图像创建平移

我是delphi图形方法的新手,我一直在创建一个...视口,这就是我在为一个项目做的时候如何调用它.对不起,我不能提供任何代码,但我被困在逻辑部分,搜索谷歌指向我一些OnPaint,Draw方法.但那些不是我想要完成的,因为我有,例如:

  1. 1600x1000背景图像锚定到客户端的顶部/底部/右侧和左侧.
  2. 多个TImage元素放置在x/y坐标系上.
  3. 像HTML中的地图元素一样的"热点"我可以设置可点击区域(对于我在步骤2中放置的图像)
  4. 无需缩放.
  5. 而最重要的是,在拖动背景的同时,放置在背景上的那些TImages也需要被拖动.

我的逻辑(在HTML/jQuery中)是创建一个#viewportBinder(这是我正在拖动的div,透明的bg),然后是另一个名为#viewtown(1600x1000,背景)的div,其中包含div(那些TImages)放在CSS的设定坐标.

所以当我拖动viewportBinder时,jQuery会在#viewport上设置新的x/y.隐含地,#viewport内的div(TImages)正在移动,因为父级是相对的.

有没有人有这种项目的经验?任何代码片段?

更具体一点,我将给你我的html示例,说明我所完成的内容以及我想要移植到Delphi代码中的内容:http://www.youtube.com/watch?v = 9iYqzvZFnGA

对不起,如果我不够清楚,我没有起点,因为我根本没有在delphi中的经验.(使用RAD Studio 2010)

delphi image pan delphi-2010

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

为什么我们在MongoDB中需要created_at

为什么我们在created_at字段的时候timestamp可以在字段的前4个字节中找到ObjectId

ObjectId("5349b4ddd2781d08c09890f4").getTimestamp()
Run Code Online (Sandbox Code Playgroud)

取自MongoDB文档

mongodb

6
推荐指数
2
解决办法
5580
查看次数

从反应导航堆栈中删除最后一条路线

所以,我有以下屏幕:

- ChatList
- NewRoom
- ChatRoom
Run Code Online (Sandbox Code Playgroud)

基本上,我不想Start a new chat从刚刚创建的聊天室返回……而是直接进入聊天室列表。到目前为止,我想出了以下几点:

const prevGetStateForActionChatStack = ChatStack.router.getStateForAction

ChatStack.router.getStateForAction = (action, state) => {
    if (state && action.type === 'RemovePreviousScreen') {
        const routes = state.routes.slice( 0, state.routes.length - 2 ).concat( state.routes.slice( -1 ) )
        return {
            ...state,
            routes,
            index: routes.length - 1
        }
    }
    return prevGetStateForActionChatStack(action, state)
}
Run Code Online (Sandbox Code Playgroud)

并且它理论上是有效的……但是在到达新房间后删除之前的路线时出现了一个奇怪的动画,如下所示。如果你们有任何解决这个问题的方法,请告诉我......

例子

reactjs react-native react-navigation

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

Firestore 增量字段值

所以,我知道有一些类似命名的问题,但这是不一样的。我很想知道是否有人可以解释缺少increment哨兵的原因,类似于哨兵delete

据我所知,字段删除与文档更新没有什么不同。意思是,我可以delete通过简单地将整个文档更新为一些新数据来只使用我的字段,而忽略该字段,因此,问题。

如果我们有一个FieldValue.delete(),为什么缺少一个FieldValue.increment()

注意:我知道 1QPS 限制,我怀疑它与上述有关。

问候!

google-cloud-firestore

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