我不知道这是否可能,但我不妨给它一个机会并问.我正在做一个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) 我现在正试着将这个转换成Swift而没有太多的背景.
这是我到目前为止所得到的...而且我一直在寻找谷歌并不知道要搜索什么才能更具体.你能否详细说明我做错了什么?谢谢
更新:
我已经找到了objective-c标签,因此更多与此线程相关的人可能能够看到它并希望得到答案.
我已经搜索了类似于这个问题的一些问题,但没有一个问题我遇到了同样的问题.我有一个单位的地图,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)
正如你在下一张图片中看到的那样,这个实际算法的结果是一个问题,因为它倾向于使点更密集于圆的中心并广泛分散在它的边缘.

任何建议都将受到高度赞赏.
我presence-channels在Pusher的平台上有点困惑,因为我正在从头开始构建一个聊天应用程序.现在,我知道你们中的一些人已经看到了大量的"实时聊天应用程序"主题,但是,我正在寻找点对点聊天,而不是整个站点的全球性事物.更像是一个Facebook聊天,你可以在那里一对一.
现在,我已经在PubNub的演示中看到了一个例子(名为Babel),但是,这个东西远非我正在寻找的东西,因为我已经在控制台中检查了请求,即使它没有显示,在其他之间发送的消息用户也显示在我的网络请求日志中,因为它在JS中被过滤而不是服务器端,这不是我想要的.
所以,回到主题,我知道频道/私人频道/在线频道功能,我决定这样做:
打开应用程序时,每个用户都会记录到他的private-user_id频道(创建,如果它已经不存在).
同时(在打开应用程序时)user1订阅一个presence-global频道,如果朋友在线,其他人会跟踪.
当别人想送他一个消息,例如user2到user1,他赞同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连接等的新手,但我已经学会了如何验证,如何创建,检测和处理频道中的事件,我可以创建一个与在线成员进行简单的全局聊天,但是,当涉及到私人频道我对如何为两个用户创建单独的频道感到困惑.
提前致谢 !
好吧,如果这有点令人困惑,我很抱歉,但我不知道如何更好地解释它.我有一个聊天表单,在用户事先在TLoginForm中进行身份验证后显示.
用户登录然后显示chatForm:
with TChatForm.Create(Application) do
begin
Show;
end;
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何将用户名传递给chatForm,以便我可以在聊天中将其用作昵称,考虑到表单自动连接到服务器OnShow的事实,所以我将需要已经发送的用户名.
我是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图形方法的新手,我一直在创建一个...视口,这就是我在为一个项目做的时候如何调用它.对不起,我不能提供任何代码,但我被困在逻辑部分,搜索谷歌指向我一些OnPaint,Draw方法.但那些不是我想要完成的,因为我有,例如:
我的逻辑(在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)
为什么我们在created_at字段的时候timestamp可以在字段的前4个字节中找到ObjectId
ObjectId("5349b4ddd2781d08c09890f4").getTimestamp()
Run Code Online (Sandbox Code Playgroud)
所以,我有以下屏幕:
- 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)
并且它理论上是有效的……但是在到达新房间后删除之前的路线时出现了一个奇怪的动画,如下所示。如果你们有任何解决这个问题的方法,请告诉我......
所以,我知道有一些类似命名的问题,但这是不一样的。我很想知道是否有人可以解释缺少increment哨兵的原因,类似于哨兵delete。
据我所知,字段删除与文档更新没有什么不同。意思是,我可以delete通过简单地将整个文档更新为一些新数据来只使用我的字段,而忽略该字段,因此,问题。
如果我们有一个FieldValue.delete(),为什么缺少一个FieldValue.increment()
注意:我知道 1QPS 限制,我怀疑它与上述有关。
问候!
delphi ×3
delphi-2010 ×2
electron ×1
image ×1
ios ×1
javascript ×1
math ×1
mongodb ×1
objective-c ×1
pan ×1
parameters ×1
php ×1
pusher ×1
react-native ×1
reactjs ×1
swift ×1
trigonometry ×1
vcl ×1
websocket ×1