假设我有将类型作为参数并返回该类型实例的函数:
def fun(t):
return t(42)
Run Code Online (Sandbox Code Playgroud)
然后我可以调用它并获取所提供类型的对象:
fun(int) # 42
fun(float) # 42.0
fun(complex) # (42+0j)
fun(str) # "42"
fun(MyCustomType) # something
Run Code Online (Sandbox Code Playgroud)
该列表并不详尽,我希望能够使用具有适当构造函数的任何类型。
然后,我想为该函数添加类型提示。该函数的返回值的类型提示应该是什么?
我试过使用 simplet,因为t是一种类型:
def fun(t: type) -> t:
return t(42)
Run Code Online (Sandbox Code Playgroud)
但这不起作用:
main.py:1: 错误:未定义名称“t”
from typing import TypeVar
T = TypeVar("T")
def fun(t: T) -> T:
return t(42)
Run Code Online (Sandbox Code Playgroud)
但这似乎不正确, asT表示一种类型,因此它表明返回的是类型本身,而不是其实例。Mypy 拒绝它:
main.py:6: 错误:“对象”不可调用
使用Any明显的工作,但我觉得它太模糊了,它没有传达意图:
from typing import Any
def fun(t: type) -> Any:
return t(42)
Run Code Online (Sandbox Code Playgroud) 我有一个上下文菜单,将触发不同的JavaScript函数.选择函数的天真解决方案如下所示:
function(action, el, pos) {
switch(action)
{
case "export_selected_to_excel":
exportSelectedToExcel(el);
break;
etc..
}
}
Run Code Online (Sandbox Code Playgroud)
我希望有一个函数映射,以便我可以将metod减少到与此类似的东西:
function(action, el, pos) {
menuAction[action](el);
}
Run Code Online (Sandbox Code Playgroud)
我像这样定义数组:
function exportSelectedToExcel(id){
//stuff...
}
var menuAction = new Array();
menuAction["export_selected_to_excel"] = exportSelectedToExcel;
Run Code Online (Sandbox Code Playgroud)
这似乎工作正常,感觉像一个合理的解决方案.
在javascript中有这样的缺点吗?
还有更好的方法吗?
如何在浏览器扩展和本机应用程序之间建立进程间通信?是否有任何跨平台(Linux和Mac OS X)和跨浏览器解决方案(Firefox,Chrome,Safari)?
我想到的唯一想法是使用本机Web技术,即在本机应用程序中嵌入HTTP服务器并使用XmlHttpRequest或WebSockets.然而,这听起来像笨重的过度杀戮一些问题(例如安全性).还有更好的选择吗?
ipc firefox-addon browser-extension google-chrome-extension safari-extension
我写了画两个笑脸的应用程序:
第一个直接画在QWidget上:
void DirectFace::paintEvent(QPaintEvent *ev)
{
QPainter painter(this);
paintFace(painter);
}
Run Code Online (Sandbox Code Playgroud)
第二个绘制在 a 上QPixmap,而后者又被 blit 到小部件:
void BufferedFace::paintEvent(QPaintEvent *ev)
{
QPixmap buffer(width(), height());
buffer.fill(Qt::transparent);
QPainter painter(&buffer);
paintFace(painter);
QPainter p(this);
p.drawPixmap(ev->rect(), buffer, ev->rect());
}
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好。我想看看我的应用程序在高分辨率屏幕上的样子(我没有),所以我设置QT_SCALE_FACTOR=2并运行我的应用程序:
第一张脸清晰明快,而 seconf 一张是像素化的。那是因为它被绘制到低分辨率像素图。所以我放大了它QPixmap并设置正确devicePixelRatio:
void BufferedFace::paintEvent(QPaintEvent *ev)
{
qreal pixelRatio = qApp->devicePixelRatio();
QPixmap buffer(width() * pixelRatio, height() * pixelRatio);
buffer.setDevicePixelRatio(pixelRatio);
buffer.fill(Qt::transparent);
QPainter painter(&buffer);
paintFace(painter);
QPainter p(this);
p.drawPixmap(ev->rect(), buffer, ev->rect());
}
Run Code Online (Sandbox Code Playgroud)
结果:
第二张脸看起来像是用正确的分辨率绘制的,但后来被放大了。现在我被困住了。如何绘制QPixmap然后绘制它QPixmap以便它在 Retina/HiDPI 屏幕上正常工作?
整体应用:
#include …Run Code Online (Sandbox Code Playgroud) 我有一个Perl CGI应用程序,有时超时,导致它被Apache杀死,并将504 Gateway Time-out错误发送到浏览器.我试图使用NYTProf来描述这个应用程序,但我无法读取配置文件数据:
$ nytprofhtml -f www/cgi-local/nytprof.out
Reading www/cgi-local/nytprof.out
Profile data incomplete, inflate error -5 ((null)) at end of input file, perhaps the process didn't exit cleanly or the file has been truncated (refer to TROUBLESHOOTING in the documentation)
Run Code Online (Sandbox Code Playgroud)
我正在使用sigexit=1NYTProf选项.这是重现问题的最小CGI脚本:
#!/usr/bin/perl -d:NYTProf
sleep 1 while 1;
Run Code Online (Sandbox Code Playgroud) 有没有办法比较嵌套数据结构unittest但忽略具体类型的对象,例如assertSequenceEqual但递归,例如:
#!/usr/bin/env python
import unittest
class DeepCompareTestCase(unittest.TestCase):
def test_compare(self):
# this test fails
self.assertSequenceEqual(
[['abc', 'def']],
(('abc', 'def'),)
)
unittest.main()
Run Code Online (Sandbox Code Playgroud)
(类似于Test::DeepPerl)
我希望您能帮助我理解如何执行以下操作:
我有一个包含由空格''分隔的整数的文件.我需要读取所有整数,对它们进行排序并将它们作为字符串写入另一个文件.我写了一个代码,但是我通过char读取char,把这个单词放在char sub_arr [Max_Int]中,当我遇到''时,我将这些字符放入另一个Main int数组后,现在放入一个字符串,直到到达文件的末尾,逐个字符串,然后我对它们进行排序并将它们写在另一个文件中.
但后来我记得有一个fscanf 功能:我读了它,但我仍然不完全理解它做了什么以及如何使用它.
在我的情况下,所有整数由空格分隔,我可以写fscanf(myFile,"%s",word)吗?它会不会考虑''并停在特定字符串的末尾?!怎么样?
更重要的是,我可以写fscanf(myFile,"%d",number),它会给我下一个号码吗?(我一定是误会了.感觉像魔术一样).
我需要获取一些有关在Mac OSX上运行进程的信息(PID,UID,GID,进程名称)。我试过了proc_pidinfo。对于我自己的流程,它可以正常工作。但是,对于其他用户拥有的进程,将返回0。没有此功能的文档,但是根据Internet上的信息,应该返回写入提供的缓冲区的字节数。在其他用户的进程上调用此函数将返回0,这意味着未提供任何信息。
例:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <libproc.h>
int main(int argc, char *argv[])
{
pid_t pid;
struct proc_bsdinfo proc;
if (argc == 2)
pid = atoi(argv[1]);
else
pid = getpid();
int st = proc_pidinfo(pid, PROC_PIDTBSDINFO, 0,
&proc, PROC_PIDTBSDINFO_SIZE);
if (st != PROC_PIDTBSDINFO_SIZE) {
fprintf(stderr, "Cannot get process info");
return 1;
}
printf(" pid: %d\n", (int)proc.pbi_pid);
printf("ppid: %d\n", (int)proc.pbi_ppid);
printf("comm: %s\n", proc.pbi_comm);
printf("name: %s\n", proc.pbi_name);
printf(" uid: %d\n", (int)proc.pbi_uid);
printf(" gid: %d\n", (int)proc.pbi_gid);
return …Run Code Online (Sandbox Code Playgroud) 当我尝试访问我的网站时出现以下错误:
Forbidden. You don't have permission to access / on this server.
我的虚拟主机文件如下所示:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /static ~/myproject/static
<Directory ~/myproject/static>
Require all granted
</Directory>
<Directory ~/myproject/myprojectapi>
Order allow,deny
Require all granted
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
而 myapache2.conf是默认文件。我在用Django 1.9 with Python 2.7 on Ubuntu 14.04
我已经尝试了大多数(如果不是全部)在站点上找到的解决方案,但由于某种原因,它们都不起作用。我遵循了本教程并授予了以下权限:
chmod 664 ~/myproject/db.sqlite3
sudo chown :www-data ~/myproject/db.sqlite3
sudo chown :www-data ~/myproject
我也是作为root用户操作的。
如果您需要任何其他信息,请告诉我;我将非常乐意提供它。任何帮助将不胜感激。
以下是 WSGI …