小编Bas*_*asj的帖子

Cython函数中的字符串

我想这样做将字符串传递给Cython代码:

# test.py
s = "Bonjour"
myfunc(s)

# test.pyx
def myfunc(char *mystr):
    cdef int i
    for i in range(len(mystr)):           # error! len(mystr) is not the length of string
        print mystr[i]                    # but the length of the *pointer*, ie useless!
Run Code Online (Sandbox Code Playgroud)

但正如评论中所示,这里没有按预期工作.


我发现的唯一解决方法是传递长度作为参数myfunc.这是对的吗?难道真的将字符串传递到用Cython代码最简单的方法?

# test.py
s = "Bonjour"
myfunc(s, len(s))


# test.pyx
def myfunc(char *mystr, int length):
    cdef int i
    for i in range(length):  
        print mystr[i]       
Run Code Online (Sandbox Code Playgroud)

python string cython

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

修剪/剥离numpy数组的零

如何删除numpy数组的前导/尾随零?

import numpy as np
a = np.array([0,0,0,3,2,-1,0,0,7,9,13,0,0,0,0,0,0,0])

#Desired output
[3,2,-1,0,0,7,9,13]
Run Code Online (Sandbox Code Playgroud)

这不起作用:

a[a != 0]    
Run Code Online (Sandbox Code Playgroud)

因为它会删除所有零,包括里面的零.

python arrays numpy

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

带有箭头和边框的CSS工具提示

我正在尝试使用白色背景颜色和1px边框的CSS工具提示.如何使用边框而不是纯黑色箭头?

.up-arrow {
    display: inline-block;
    position: relative;
    border: 1px solid #777777;
    text-decoration: none;
    border-radius: 2px;
    padding: 20px;
}
.up-arrow:after {
    content: '';
    display: block;  
    position: absolute;
    left: 140px;
    bottom: 100%;
    width: 0;
    height: 0;
    border-bottom: 10px solid black;
    border-top: 10px solid transparent;
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
}
Run Code Online (Sandbox Code Playgroud)
<div href="#" class="up-arrow">Button with Up Arrow</div>
Run Code Online (Sandbox Code Playgroud)

PS:即使它看起来与另一个问题类似,设计的细节也非常重要.例如,这里最初有3个不同的答案(现在已删除其中2个),设计略有不同.即使差别很小,他们的箭头看起来也不如目前完美答案的完美!魔鬼在细节!
这里的目标是使用1px宽边框的纯白色工具提示.即使看起来与其他人相似,也不是其他问题(讲话泡泡)的重复.再一次细节对于实现如此光滑的外观非常重要.

css tooltip css-shapes

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

显示:flex; 不适用于iPad(Chrome和Safari)

此代码在计算机上按预期工作,但完全无法渲染display: flexChrome 47 for iPad和Safari for iPad(横向视图,宽度1024px).

这很奇怪,因为flex很久以来Chrome应该得到很好的支持.

* { margin: 0; padding: 0; }
#header { height: 60px; display: -webkit-flex; display: flex; }
#topleft { flex: 0 0 155px; height: 100%; background-color: green; }
#topmid { flex: 0 0 40%; height: 100%; background-color: blue; }
#topright { flex: 1; background-color: yellow; }
Run Code Online (Sandbox Code Playgroud)
<div id="header">
  <div id="topleft">Topleft</div>
  <div id="topmid">Topmid</div>
  <div id="topright">Topright</div>
</div>
Run Code Online (Sandbox Code Playgroud)

怎么了?

css google-chrome ios flexbox responsive-design

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

在主线程中调用一次时,Python线程运行两次

if __name__ == '__main__':

    t = threading.Thread(target = authtarget)
    t.daemon = True
    t.start()
    print 'running thread'
    app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)

这个主目录位于我们的服务器中,其中app.run将启动服务器并能够处理请求。我们正在创建的线程是一个计时器,它每5秒检查一次if语句。但是,t.start()将创建两个线程,而不是一个线程。我们曾尝试将t.start()更改为t.run(),但是这样做时,我们永远都不会进入需要运行服务器的app.run。

def authtarget():
    sp  = Spotify()
    db = Database()
    resultList = []
    while True:
        time.sleep(5)
        sp.timer(204) 
Run Code Online (Sandbox Code Playgroud)

timer()是我们需要每5秒调用一次的函数。但是,使用我们当前的代码,timer被调用两次,而不是每5秒一次

python multithreading bottle flask

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

Date.toISOString(),但使用本地时间而不是UTC

假设我们有这个日期时间:

var d = new Date("Sat Jul 21 2018 14:00:00 GMT+0200");
Run Code Online (Sandbox Code Playgroud)

将其导出为字符串(console.log(d))会在浏览器之间产生不一致的结果:

  • Sat Jul 21 2018 14:00:00 GMT+0200 (Paris, Madrid (heure d’été)) 使用Chrome

  • Sat Jul 21 14:00:00 UTC+0200 2018 使用Internet Explorer等

因此我们不能将日期时间发送到格式不一致的服务器。

那么自然的想法是要求一个ISO8601日期时间,并使用d.toISOString();它,但它给出了UTC日期时间:2018-07-21T12:00:00.000Z而我想使用本地时区时间:

2018-07-21T14:00:00+0200
or
2018-07-21T14:00:00
Run Code Online (Sandbox Code Playgroud)

如何获得它(不依赖诸如momentjs之类的第三方依赖项)?

我尝试了一下,似乎可行,但是没有更自然的方法吗?

var d = new Date("Sat Jul 21 2018 14:00:00 GMT+0200");
Run Code Online (Sandbox Code Playgroud)

javascript timezone datetime date

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

如何更改 distutils 的输出目录?

python setup.py build与此代码一起使用时:

import setuptools
from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules=cythonize("module1.pyx", build_dir="temp"))
Run Code Online (Sandbox Code Playgroud)

.pyd 库是在 .\build\lib.win-amd64-2.7\module1.pyd.

如何使输出.pyd文件到当前文件夹 .

注意:cythonize参数build_dir="temp"有效:module1.ccython 生成的文件temp\确实在。我的问题是关于输出 .pyd 文件。

python distutils setuptools cython

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

带有 WebAssembly 的浏览器中的 Python,无需重新编译

我看过Compiling Python to WebAssembly及其各种答案、各种项目(EmPython、EmCPythoncpython-emscripten、Pyodide 等),但大多数时候,它需要重新编译或使用 Docker 等。

有没有办法在浏览器中使用 Python(使用 WebAssembly),使其工作方式如下:

  • 您只需将foo.jsfoo.wasmindex.html或类似的即用型文件放在一个目录中

  • main.py在目录下放一个文件, WebAssembly Python解释index.html器会在我们在浏览器中打开时自动启动,直接在浏览器中显示Python stdout

  • 您可以通过简单地添加 .py 文件来导入标准 Python 模块 main.py

例子:

pythoninbrowser.js
pythoninbrowser.wasm
index.html
main.py    --> containing "import bs4"
bs4/
    __init__.py
    ...all the rest of the BeautifulSoup module...
Run Code Online (Sandbox Code Playgroud)

另请参阅此问题

python emscripten webassembly

7
推荐指数
0
解决办法
1166
查看次数

使用并排视图比较 Sublime Text 中两个文件的内容

我已经阅读了在 Sublime Text 中比较两个文件的内容,但答案(无论是本机“文件夹 > 差异文件”功能,还是使用FileDiffs)显示了 2 个文件之间的差异,就像使用该diff工具一样,这是我不想要的:

 --- file1.py
 +++ file2.py
 @@ -1,21 +1,19 @@
 -import os
 +import os, sys
 import numpy as np
 -print('hello')
 +print('hello world')
 -import sys
Run Code Online (Sandbox Code Playgroud)

相反,我想要与 PSPad 原生 diff 工具进行并排比较:

在此输入图像描述

如何在 Sublime Text(2 或 3)中实现两个打开的文件之间的并排比较?

Sublime Text 本身可以吗?

diff sublimetext sublimetext2 sublimetext3

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

如何触发简单的“添加到主屏幕”功能(没有 Service Worker 的功能)

事实上,Android 浏览器上有两个“添加到主屏幕”功能:

  • 当满足特定条件时,自动显示在 Chrome Android 底部的弹出对话框(可用、具有此处讨论的 Service Worker 、在 > 5 分钟内至少访问网站两次等)manifest.json

  • 我们可以为任何网站触发 Chrome 菜单项,即使它没有 Service Worker。这只是在移动设备的主屏幕上创建一个网站的快捷方式:

    在此输入图像描述

问题:如何在 HTML 页面上添加一个按钮来触发主屏幕快捷方式的创建,就像之前的第二个项目符号一样?(即一个非常简单的 HTML 网站,没有任何 Service Worker)

html javascript service-worker progressive-web-apps a2hs

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