小编Jui*_*icy的帖子

禁用 <option> 在 iOS 上仍然可以选择

我使用 aselect作为移动设备的导航菜单。

因为optgroup在 iOS 上渲染得非常糟糕,我一直在使用禁用选项和连字符来分组一些子菜单。

IE:

<select>
    <option value="" disabled>Menu</option>
    <option value="sub1">- Sub 1</option>
    <option value="sub2">- Sub 2</option>
</select>
Run Code Online (Sandbox Code Playgroud)

option正如预期的那样,在桌面浏览器上无法选择禁用。但是在 iOS 上,您实际上可以选择它,即使它是灰色的。然后触发我的 AJAX 代码来动态更改页面内容,只会造成一团糟。

我可以通过if在我的 AJAX 函数中添加一些检查语句来“蛮力”取消它,但我真的很想知道为什么在 iOS Safari 上首先可以选择禁用的元素?

我的网站在这里(您必须在桌面上将宽度调整为 < 700px,但需要 iOS 才能选择禁用的元素)

html mobile-safari ios responsive-design

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

创建并通过管道传输类似文件的对象作为命令的输入

如果可能的话,我正在寻找更好的方法来做到这一点:

import subprocess

f = open('temp.file', 'w+')
f.write('hello world')
f.close()

out = subprocess.check_output(['cat', 'temp.file'])

print out

subprocess.check_output(['rm', 'temp.file'])
Run Code Online (Sandbox Code Playgroud)

在此示例中,我正在创建一个文件并将其作为输入传递给cat(实际上不是cat我正在运行,而是解析输入文件的其他程序pcap)。

我想知道的是,在 Python 中是否有一种方法可以创建一个包含某些内容的“类文件对象”,并将这个类文件对象通过管道作为命令行程序的输入。如果可能的话,我认为这比将文件写入磁盘然后删除该文件更有效。

python linux subprocess file

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

检测 Ctrl+L

我发现了一些检测特殊键盘命令(例如Ctrl+CCtrl+ )的示例D,但我想检测Ctrl+L并按如下方式处理它:

def ctrl_c():
   ...

signal.signal(signal.SIGINT, ctrl_c)
Run Code Online (Sandbox Code Playgroud)

我只针对 Linux 终端。不需要 GUI 和跨平台解决方案。

python signals

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

RegExp匹配的内容

我一直在尝试将以下内容从Python转换为node.js. 这是一个简单的程序,使用正则表达式来检查IP地址是公共还是私有:

import re

def is_private_ip(ip):
    """
    Returns `True` if the `ip` parameter is a private network address.
    """
    c = re.compile('(^127\.0\.0\.1)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^192\.168\.)')
    if c.match(ip): return True
    return False

print is_private_ip('192.168.0.1') # True
print is_private_ip('8.8.8.8') # False
print is_private_ip('109.231.231.221') # False
Run Code Online (Sandbox Code Playgroud)

我在Javascript中实现它,如下所示:

var localIp = new RegExp(/(^127\.0\.0\.1)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^192\.168\.)/);
console.log('192.168.0.1'.match(localIp));
console.log('8.8.8.8'.match(localIp));
console.log('109.231.231.221'.match(localIp));
Run Code Online (Sandbox Code Playgroud)

这给了我以下输出:

[ '192.168.',
  undefined,
  undefined,
  undefined,
  undefined,
  undefined,
  '192.168.',
  index: 0,
  input: '192.168.0.1' ]
null
null
Run Code Online (Sandbox Code Playgroud)

在我看来它是有效的(甚至不确定tbh).应该公开的两个IP正在返回,null所以我猜这是正确的.我不明白其他比赛的输出了吗?我无法弄清楚它意味着什么

javascript regex node.js

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

signal.alarm没有按时触发异常

我稍微修改了官方文档中的信号示例(页面底部).

我正在打电话sleep 10但是我想在1秒钟后发出警报.当我运行以下代码片段时,需要超过1秒才能触发异常(我认为它会运行整整10秒).

import signal, os

def handler(signum, frame):
    print 'Interrupted', signum
    raise IOError("Should after 1 second")

signal.signal(signal.SIGALRM, handler)
signal.alarm(1)

os.system('sleep 10')

signal.alarm(0)
Run Code Online (Sandbox Code Playgroud)

如何在单线程应用程序中超时后终止函数?

python signals timeout

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

同时输出到终端时保持用户输入完整

为了简单起见,假设我正在尝试用 Python 编写命令行双向聊天。我希望用户input()在命令提示符下输入他的消息,但是监听线程可以随时打印消息。默认情况下,这会“破坏”用户的输入。视觉上是这样的:

userB>Stop interuserA wrote:Hey check this out!
rupting me!
Run Code Online (Sandbox Code Playgroud)

我能找到的最接近的是这里的答案,它几乎但不完全是我正在寻找的东西,但它确实向我指出了blessings似乎是我需要的包(尽管我对答案很满意)对于任何软件包,甚至纯 ANSII)。

我想要实现的目标是打印来自用户输入上方的线程的传入输出,以便他的文本不会中断。假设用户正在输入:

userB>Stop inter
Run Code Online (Sandbox Code Playgroud)

突然,一条消息从线程中传入,但我们的用户输入并没有停止:

userA says: Ok I won't interrupt you
userB>Stop inter
Run Code Online (Sandbox Code Playgroud)

print_incoming_message()为了实现这一目标,我的线程理论方法应该是什么样的?

注意:我使用的是 Linux,对跨平台兼容性不感兴趣。

python multithreading python-3.x output

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

删除已撤销的 Celery 任务

根据文档task.revoke():​

所有工作节点都会保留已撤销任务 ID 的内存,无论是在内存中还是在磁盘上持久保存

撤销任务的工作原理是向所有工作人员发送广播消息,然后工作人员在内存中保存已撤销任务的列表。当一个worker启动时,它会将撤销的任务与集群中的其他worker同步。

这听起来好像任务在您撤销后仍然存在。我不明白为什么没有明确的方法来撤销任务并将其从队列中删除。

这些文档似乎暗示您需要无限期地保留已撤销任务的列表,以确保新工作人员在某些情况下不会接受它们。

我还知道有一个功能可以完全清除任务队列,但这不是我想要的。

有没有办法撤销任务并从 Celery 的任务队列中清除它(并且仅清除它)?

celery python-3.x

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

在docker-compose中使用主机网络

我正在尝试使用建立两个网络的容器docker-compose。我希望其中一个网络是host网络(即:好像我正在运行docker run --net=host),另一个是用户定义的网络。

我尝试了这个:

version: '3'

networks:
  test:
    driver: bridge
  host:
    external: true

services:
  helloworld:
    image: python:3.6-alpine
    networks:
      - test
      - host
    cap_add:
      - NET_ADMIN
      - NET_RAW
    ports:
      - 0.0.0.0:8080:8080
    command: sh -c "cd /tmp && python -m http.server 8080"
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

$ docker-compose up
Removing blah_helloworld_1
Starting 8743618e8af4_blah_helloworld_1 ... error

ERROR: for 8743618e8af4_blah_helloworld_1  network-scoped alias is supported only for containers in user defined networks

ERROR: for helloworld  network-scoped alias is supported only for containers …
Run Code Online (Sandbox Code Playgroud)

networking docker docker-compose

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

使用jQuery-UI的文件输入按钮样式

我正在使用jQuery UI,我注意到输入文件按钮:

<input type="file">
Run Code Online (Sandbox Code Playgroud)

不能像其他按钮一样设计.我发现这个插件看起来很酷,显然可以让你放一个图像而不是按钮,但是这些例子没有显示任何按钮样式.

如果没有jQuery将主题样式应用于该按钮,我可以在CSS中自己设置样式吗?

css jquery jquery-ui

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

无法从父目录加载Flask配置

我正在尝试遵循有关使用配置文件的文档:http : //exploreflask.com/en/latest/configuration.html#the-simple-case

我想使用他们所谓的“简单情况”,但我想config.py从父目录加载。我的项目树如下所示:

~/Learning/test $ tree
.
??? app
?   ??? __init__.py
??? config.py
Run Code Online (Sandbox Code Playgroud)

这是我的app/__init__.py

from flask import Flask

app = Flask(__name__)
app.config.from_object('config')
Run Code Online (Sandbox Code Playgroud)

这是我的config.py

DEBUG = True
Run Code Online (Sandbox Code Playgroud)

这是我尝试运行项目时遇到的错误:

Traceback (most recent call last):
  File "app/__init__.py", line 4, in <module>
    app.config.from_object('config')
  File "/usr/local/lib/python2.7/dist-packages/flask/config.py", line 163, in from_object
    obj = import_string(obj)
  File "/usr/local/lib/python2.7/dist-packages/werkzeug/utils.py", line 443, in import_string
    sys.exc_info()[2])
  File "/usr/local/lib/python2.7/dist-packages/werkzeug/utils.py", line 418, in import_string
    __import__(import_name)
werkzeug.utils.ImportStringError: import_string() failed for 'config'. Possible reasons are:

- …
Run Code Online (Sandbox Code Playgroud)

python flask

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