是否有一种显而易见的方法可以解决这个问题?我只是想制作缩略图.
我有一个朋友喜欢使用元类,并定期提供它们作为解决方案.
我很想你几乎不需要使用元类.为什么?因为我认为如果你正在对一个类做类似的事情,你应该把它做成一个对象.并且需要一个小的重新设计/重构.
能够使用元类导致许多地方的很多人使用类作为某种二流对象,这对我来说似乎是灾难性的.编程是否被元编程取代?遗憾的是,类装饰器的添加使其更加可接受.
所以,我非常想知道Python中元类的有效(具体)用例.或者开悟为什么变异类有时比变异对象更好.
我将开始:
有时,在使用第三方库时,能够以某种方式改变类是有用的.
(这是我能想到的唯一一个案例,并不具体)
Python全局解释器锁的功能究竟是什么?编译为字节码的其他语言是否采用类似的机制?
有没有办法确保所有创建的子进程在Python程序的退出时间都死了?通过子进程,我指的是使用subprocess.Popen()创建的.
如果没有,我应该迭代所有发出的杀戮然后杀死-9?什么更干净?
有一些很好的免费"图像到ASCII艺术"转换网站,如下所示:ASCII-art.org
这种图像转换算法如何工作?
,
. W ,
W W @
W ,W W
, W, :W* .W .
# WW @WW WW #
W WW.WWW WW: W
W. WW*WWW# WW@ W
* :WW.WWWWWWW@WWW@W #
+* #WW#WWWWWWWWWWWWW# W
W# @WWWWWWWWWWWWWWWWW W
WW WWWWWWWWWWWWWWWWWW W
WW WWWWWWWWWWWWWWWWWW@W#
,WW.WWWWWWWWWWWWWWWWWWWWW
WW@WWWWWWWWWWWWWWWWWWWWW
: WWWWWWWWWWWWWWWWWWWWWWWW :
@ WWWWWWWW@WWWWWWW@@WWWWWW.
W*WWWWWW::::@WWW:::::#WWWWW
WWWWWW@:: :+*:. ::@WWWW
WWWWW@:*:.:: .,.:.:WWWW
@WWWW#:.:::. .:: #:@WWW
:WWW@:#. :: :WWWW:@WWWW
WWW#*:W@*@W . W:#WWW
#WWWW:@ :: :: *WWWW
W@WW*W .::,.::::,:+ @@WW#,
WWWW## ,,.: .:::.: . .WWW:,
@WWW@: … 部署WSGI应用程序.有很多方法可以给这只猫上皮.我目前正在使用mod-wsgi的apache2,但我可以看到一些潜在的问题.
那怎么办呢?
更多?
我想知道你是怎么做的,以及为什么这是最好的方法.我绝对会爱你,向我提供有关最新情况和具体应用的详细信息等等.我会赞成任何非疯狂的答案.
例如,在一个简单的目录创建操作中,我可以像这样制作一个OSError:
(Ubuntu Linux)
>>> import os
>>> os.mkdir('foo')
>>> os.mkdir('foo')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 17] File exists: 'foo'
Run Code Online (Sandbox Code Playgroud)
现在我可以像这样抓住这个错误:
>>> import os
>>> os.mkdir('foo')
>>> try:
... os.mkdir('foo')
... except OSError, e:
... print e.args
...
(17, 'File exists')
Run Code Online (Sandbox Code Playgroud)
是否有一种跨平台的方式,我可以知道17或"文件存在"将始终意味着相同的事情,以便我可以根据情况采取不同的行动?
(这是在另一个问题中出现的.)
以下每个文件扩展名的MIME类型是什么:
引用"间接水平解决每个问题"的含义在计算机科学中意味着什么?
目前,我有经验,使用Google Drive API的一段代码在没有引入ProGuard的情况下运行正常.
但是,在引入ProGuard之后,我遇到了以下运行时错误.
at java.lang.Thread.run(Thread.java:856)
Caused by: java.lang.NullPointerException
at com.google.api.client.util.Types.getActualParameterAtPosition(Types.java:329)
at com.google.api.client.util.Types.getIterableParameter(Types.java:309)
at com.google.api.client.json.JsonParser.parseValue(JsonParser.java:546)
at com.google.api.client.json.JsonParser.parse(JsonParser.java:350)
at com.google.api.client.json.JsonParser.parseValue(JsonParser.java:586)
at com.google.api.client.json.JsonParser.parse(JsonParser.java:289)
at com.google.api.client.json.JsonObjectParser.parseAndClose(JsonObjectParser.java:76)
at com.google.api.client.json.JsonObjectParser.parseAndClose(JsonObjectParser.java:71)
at com.google.api.client.http.HttpResponse.parseAs(HttpResponse.java:491)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:456)
at com.jstock.c.b.a(CloudFile.java:136)
Run Code Online (Sandbox Code Playgroud)
请注意,崩溃发生在我的代码中(如果我使用mapping.txt进行回溯,则为com.jstock.cba)
// request is Files.List
FileList files = request.execute();
Run Code Online (Sandbox Code Playgroud)
在我的项目中,我认为有以下两个关键指令,能够防止崩溃发生:我告诉ProGuard永远不要触及jackson和Google库.
-keep class org.codehaus.** { *; }
-keep class com.google.** { *; }
-keep interface org.codehaus.** { *; }
-keep interface com.google.** { *; }
Run Code Online (Sandbox Code Playgroud)
但这不起作用.NPE仍然发生在Types.java上
请注意,我还有另一种尝试是,我认为混淆过程会导致NPE发生.因此,我尝试使用它来禁用它-dontobfuscate.但这一次,我将无法生成APK文件,并得到一个流行的错误消息:转换为Dalvik格式失败,错误1
以下是在Google Drive API中导致NPE的proguard配置.
-optimizationpasses 1 …Run Code Online (Sandbox Code Playgroud) android google-api proguard google-api-java-client google-drive-api
python ×6
abstraction ×1
algorithm ×1
android ×1
ascii-art ×1
bytecode ×1
deployment ×1
exception ×1
file-type ×1
google-api ×1
google-docs ×1
image ×1
indirection ×1
kill ×1
locking ×1
metaclass ×1
mime-types ×1
proguard ×1
scripting ×1
subprocess ×1
thumbnails ×1
wsgi ×1