社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
私信  •  关注

John

John 最近创建的主题
John 最近回复了
4 年前
回复了 John 创建的主题 » 在Python中如何使用Unix套接字?

正如@greencoptoguy所指出的,您可能希望使用管道,但是如果设置为使用Unix套接字,这里有一个使用StreamRequestHandler的粗略示例:

服务器:

#!/usr/bin/env python3

from socketserver import UnixStreamServer, StreamRequestHandler, ThreadingMixIn
import os

os.unlink("/tmp/test")

class Handler(StreamRequestHandler):
    def handle(self):
        while True:
            msg = self.rfile.readline().strip()
            if msg:
                print("Data Recieved from client is: {}".format(msg))
            else:
                return

class ThreadedUnixStreamServer(ThreadingMixIn, UnixStreamServer):
    pass

with ThreadedUnixStreamServer('/tmp/test', Handler) as server:
    server.serve_forever()

客户:

#!/usr/bin/env python3

import socket
import sys 
import time

with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as client:
    client.connect("/tmp/test")

    while True:
        client.send(b"Client 1: hi\n")
        time.sleep(1)

    client.close()

ThreadingMixIn不是必需的,但它允许您运行两个客户机,并同时接收来自这两个客户机的消息。将客户机代码复制到“client1.py”和“client2.py”,并在client2.py中将“client1”更改为“client2”,同时运行这两个代码,以便在实践中看到这一点。

我不是专家,但听起来虽然管道更有效,但它们的缺点是只有一个程序链接到另一个程序。如果您有多个客户机,并且只有一个服务器,那么Unix套接字(如本文所示)可能是您的最佳选择。

你可以用 eventDataTransform 函数检查事件是否具有所需的用户Id,然后将可编辑属性更改为true。

$('#calendar').fullCalendar({
  header: {
  left: 'prev,next today',
  center: 'title',
  right: 'month,agendaWeek,agendaDay'
},
  events: 'https://fullcalendar.io/demo-events.json?overload-day',
  eventDataTransform: function(event){
  if(event.userId === user.id){
  event.editable=true;
  }
 return event;
}
});

});

编辑:我认为eventRender函数是用来修改元素的。要修改事件,应该使用eventDataTransform函数

5 年前
回复了 John 创建的主题 » 了解docker-compose.yml中容器的主机名

是的,你说得对。

根据 README ,你应该先汇合。

4 年前
回复了 John 创建的主题 » 如何在jquery中进行for循环求和?

例如,

$(document).ready(function(){
  
  arr = $('#cover>div>p').map(function() {
    return $(this).html();
  });
  
var res = 0;
  for (i = 0; i < arr.length; i++) {
    res = res+parseInt(arr[i]);
    $('#resultTotal').html(res);
  }

});
<div id="cover">
  <div class="slider">
    <p class="content">100</p>
  </div>
  <div class="slider">
    <p class="content">200</p>
  </div>
</div>

<div id="resultTotal"></div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
7 年前
回复了 John 创建的主题 » 如何对多个表使用mysql group by和inner join限制记录数

做了一些工作,但是我认为我的解决方案是值得分享的,因为它看起来既优雅又快速。

SELECT h.year, h.id, h.rate 
  FROM (
    SELECT id, 
      SUBSTRING_INDEX(GROUP_CONCAT(CONCAT(id, '-', year) ORDER BY rate DESC), ',' , 5) AS l
      FROM h
      WHERE year BETWEEN 2000 AND 2009
      GROUP BY id
      ORDER BY id
  ) AS h_temp
    LEFT JOIN h ON h.id = h_temp.id 
      AND SUBSTRING_INDEX(h_temp.l, CONCAT(h.id, '-', h.year), 1) != h_temp.l

请注意,此示例是为问题的目的而指定的,并且可以很容易地为其他类似目的进行修改。

5 年前
回复了 John 创建的主题 » pycharm站点包文件夹标记为红色,无法导入模块

尝试检查当前的项目解释器是否正确:您应该看到安装了所有包的python环境的路径。 如图所示。

python interpreter path

5 年前
回复了 John 创建的主题 » Git Bash不显示tildes

我总是使用git bash,但是对于cmd建议,请参见 this StackExchange link 也就是说,您需要通过打开cmd并运行来将代码页更改为utf8 chcp 65001 在commandPromt属性--gt;字体上,将字体更改为“lucida console”。

5 年前
回复了 John 创建的主题 » 如何在Pycharm项目视图中隐藏Venv

您可以排除和隐藏“venv”目录(以及其他排除的目录),如下所示:

  1. 将其标记为排除:右键单击“venv”目录->将目录标记为排除。
  2. 隐藏排除的文件:单击项目视图面板中的小齿轮图标,然后 判定元件 从下拉菜单中选择“显示排除的文件”。
5 年前
回复了 John 创建的主题 » 未能在pycharm中导入numpy python模块

这真的是因为虚拟环境。我在Pycharm项目虚拟环境中指定的位置安装了numpty,它工作正常。我通过打开pycharm->首选项->项目解释器来完成此操作,我看到对于我的项目,配置了以下虚拟环境:

Project Interpreter in PyCharm

我通过来源激活了它 /Users/XXX/PycharmProjects/MachineLearning/venv/bin/activate 然后 pip3 install numpy

另一个选项是将解释器更改为包含已安装的所有包的解释器。

Change interpreter

尝试如下操作:

模式: (?<!\\)([$]+)([^$]*?)\\([^$]*?)(?<!\\)\1 替代: \1\2\\\\\\\\\3\1

使用您提供的测试的示例: https://regex101.com/r/X9lGCF/2

图案粗浅说明:

(?<!\\)([$]+) -匹配并捕获至少一个未捕获的 $ ; (?<!\\) 是一个负面的回顾,以确保 $ 的前面没有反斜杠

([^$]*?)\\([^$]*?) -捕获第一个匹配项之间的文本 $ 序列和相同的初始匹配 $ 序列在 \\

(?<!\\)\1 -重新使用最初匹配的 $ 我们的模式中的顺序(这加强了周围环境 $ 序列长度相同;例如不匹配 $\\$$ )确保最后一个序列也未被捕获。

替换将用周围捕获的文本替换反斜杠(它们已被转义,因此我们使用其中8个来获取4个反斜杠),并且 $ 序列。