我试图使用Python中的SQLite参数替换IN子句.这是一个完整的运行示例,演示:
import sqlite3
c = sqlite3.connect(":memory:")
c.execute('CREATE TABLE distro (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)')
for name in 'Ubuntu Fedora Puppy DSL SuSE'.split():
c.execute('INSERT INTO distro (name) VALUES (?)', [ name ] )
desired_ids = ["1", "2", "5", "47"]
result_set = c.execute('SELECT * FROM distro WHERE id IN (%s)' % (", ".join(desired_ids)), ())
for result in result_set:
print result
Run Code Online (Sandbox Code Playgroud)
打印出来:
(1,u'Ubuntu')(2,u'Fedora')(5,u'SuSE')
正如文档所述,"[y]你不应该使用Python的字符串操作来组装你的查询,因为这样做是不安全的;它会使你的程序容易受到SQL注入攻击,"我希望使用参数替换.
当我尝试:
result_set = c.execute('SELECT * FROM distro WHERE id IN (?)', [ (", …Run Code Online (Sandbox Code Playgroud) 我正在学习Objective-C,并且拥有C/C++背景.
在面向对象的C++中,总是需要在定义(实现)它之前声明方法,即使它是在父类中声明的.
在过程式C,IIRC中,只要定义一个函数,只要从同一个编译单元中的其他东西(即同一个文件)调用它就可以远离文件中的某个函数(嗯,提供)你没有在其他地方用"extern"声明它.
现在,在Objective-C中,您似乎只需要在头文件中声明选择器,如果它们将被外部使用,并且您可以在.m文件中组合选择器就好了,并在其中调用它们.m文件.此外,似乎永远不会(重新)定义委托方法或继承的方法.
我是在正确的轨道上吗?什么时候需要在Objective-C中定义一个选择器?
Interface Builder向我发出有关设置.xib文件的警告.
它在一个名为"MainMenu.xib Info"的对话框中说
对象:窗口
ID:21
类型:非法配置
问题:此窗口的内容矩形不完全位于带有菜单栏的屏幕上,并且可能无法完全显示所有屏幕分辨率和配置.
我正在使用XCode版本3.1.2和Interface Builder版本3.1.2(677).我验证了我可以通过创建新的Core Data Application并打开.xib文件来重新创建该问题.同样有趣的是,当我打开.xib文件时,主窗口不会立即显示(与其他模板一样),但是当我使用文件所有者,首先在窗口中双击它的表示时,它会出现.响应者等它没有任何可见的内容(它里面有一个内容视图),Inspector显示的大小为213 x 107(px?).
我看到现在有一个3.1.3版本,它看起来像Interface Builder中的一个错误或Core Data Application的模板,但是,有什么方法可以解决这个问题吗?调整窗口大小没有任何帮助,在错误和警告出现的条件下(例如,如果我必须编译,或者如果我们在调整UI时它们发生变化),我一点也不清楚.)
我正在尝试使用Raphael文档中提到的print命令来打印带有漂亮字体的文本.[我看到这可以很好地使用"文本"功能完成,我在网上看到使用Cufon生成的字体和打印功能的例子(如'text'和'print'的例子),但是我我正在做的尽可能接近我在文档中的例子并且对我不起作用,我想知道为什么.
这是我的代码:
<html>
<head>
<title>Raphael Print Test</title>
<script src="raphael.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
window.onload = function() {
var paper = new Raphael('holder', 640, 480);
paper.ellipse(320, 240, 320, 240).attr({stroke: "grey"});
paper.print(100, 100, "Test string", paper.getFont("Times", 800), 30);
paper.text(50, 50, "Raphaël\nkicks\nbutt!");
}
</script>
<style type="text/css">
#holder { width: 640px; height: 480px; border: 2px solid #aaa; }
</style>
</head>
<body>
<div id="holder"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
重要的是:
paper.print(100, 100, "Test string", paper.getFont("Times", 800), 30);
Run Code Online (Sandbox Code Playgroud)
当我尝试它(在OS X上的Chrome和Opera中,到目前为止),我得到: …
是否可以使用自定义登录窗口应用程序替换Mac OS X登录窗口/System/Library/CoreServices/loginwindow.app?(参见我的理性这样做.)
我担心我的Cocoa编程技巧还不成熟.我觉得有趣的是,当我运行探测CGSession(这是一个执行快速用户切换的未记录的实用程序)来查看它使用的功能时,通过执行
nm -mg /System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession
Run Code Online (Sandbox Code Playgroud)
其中一个链接功能是:
(undefined [lazy bound]) external _CGSCreateLoginSession (from ApplicationServices)
Run Code Online (Sandbox Code Playgroud)
我还没有找到ApplicationServices框架的文档.我怀疑我正深入到服务提供程序接口而不是应用程序编程接口.
我确实发现这个非常有趣的片段:( 谷歌缓存)(直接链接到下页 ;看起来网站正在重新组织)来自声称切换到登录窗口的应用程序,即使禁用了快速用户切换.
#include "CGSInternal.h"
int main (int argc, const char * argv[]) {
// switch to the login window
CGSCreateLoginSession(NULL);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我认为CG意味着CoreGraphics,并且不明白与登录有什么关系(除非可能在当前用户的工作上放置登录对话框).
即使无法替换登录窗口,我也很想知道可以在这些方面做些什么(不适合Apple工作的人).
我在 Visual Studio Code 中安装了许多主题。有时,我希望能够查看所有其他扩展(所有不是主题的扩展),以便我可以禁用一两个。
我怎样才能做到这一点?该文档显示了如何使用过滤器,但我没有看到任何方法告诉它不显示某些内容。
此过滤器向我显示所有已安装的主题:
@installed @category:themes
Run Code Online (Sandbox Code Playgroud)
我尝试过使用 ~ 和 ! 而不是在不同的地方,只是猜测可能会实现一个功能来理解类似的东西,但它们不起作用。
我正在尝试使用PyObjC的私有框架.到目前为止我有这个:
from AppKit import *
from Foundation import *
import objc
framework="/System/Library/PrivateFrameworks/DSObjCWrappers.framework"
objc.loadBundle("DSObjCWrapper", globals(), framework)
directory = DSoDirectory.alloc()
directory.initWithHost_user_password_("server", "diradmin", "password")
eDSStartsWith = 0x2002
node = directory.findNode_matchType_(u"/LDAPv3", eDSStartsWith)
Run Code Online (Sandbox Code Playgroud)
这很好.现在,我想在我的节点(类DSoNode)上调用一个方法,使用此objective-c签名.
最明显的方法是不知道如何获取字符串并将其传递给char*:
node.hasRecordsOfType_("dsRecTypeStandard:ComputerLists")
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
/Users/clinton/<ipython console> in <module>()
ValueError: depythonifying 'char', got 'str' of 31
Run Code Online (Sandbox Code Playgroud)
看起来可以在python看到它时更改签名.我尝试了一些变化:
objc.registerMetaDataForSelector("DSoNode", "hasRecordsOfType_", dict( arguments={ 2+0: dict(type_modifier='n', type='^C') }))
Run Code Online (Sandbox Code Playgroud)
但是 - 坦率地说我不知道registerMetaDataForSelector函数是如何工作的,并且还没有找到文档 - 当我在节点上调用我的选择器时,我仍然会得到相同的错误.如何告诉PyObjC将字符串转换为char*?(或者有更好的方法,因为这些字符串是头文件中的C常量#defined.)
更新:我尝试使用gen_bridge_metadata(如本博文中所述),并在查阅手册页后,尝试如下:
sudo mkdir -p /System/Library/PrivateFrameworks/DSObjCWrappers.framework/Resources/BridgeSupport
sudo gen_bridge_metadata --framework ~/Downloads/DSTools-112.1/build/Deployment/DSObjCWrappers.framework/ …Run Code Online (Sandbox Code Playgroud) 我正在考虑构建一种类似于Scratch 的可视化编程语言,供儿童(又名可怜的打字员)在对微控制器或机器人进行编程时使用。
例如,有一个为 Arduino 构建图形编程环境的项目。
我真的很喜欢 Scratch,并且希望图形编码是类似的。 Scratchs 源代码可在其自己的免费许可下使用。它是用Squeak(基于Smalltalk)编写的,我不懂这种语言。
我突然想到可能还有其他项目可以构建。当我浏览维基百科的图形语言列表时,我没有看到太多开源且可以构建的语言。
我熟悉 C/C++、Python 和一点 Objective C。如果我要从头开始构建自己的项目,我想我会使用 Qt 库,因为我想构建跨平台的东西,但是不幸的是,我也不知道。
如果我有无限量的时间来研究它,你可以打赌我会学习 Squeak 和 Qt,并对所有现有的可视化编程项目进行详尽的搜索。事实并非如此,我想征求意见:
我正在开发一个名为Enchanting的应用程序.该应用程序基于Scratch,发出Java源代码并编译它以便上传到LEGO Mindstorms NXT机器人.
虽然应用程序很早,但用户很难安装它.
现在Windows用户必须:
如果我可以提供包含JDK和LeJOS的安装程序,我可以在运行时找出环境变量,并且该过程变为:
有没有办法重新分配JDK?
(顺便说一下,Processing(简化的基于文本的编程环境)似乎提供了JDK附带的一个版本,因此看起来有一种合法的方式).
附录:我希望没有安装java的Windows用户能够运行单个.exe文件来安装JDK,LeJOS和Enchanting.
问候.
我编写了一个在子进程中调用MySQL的python脚本.[是的,我知道正确的方法是使用MySQLdb,但在OS X Leopard下编译它是一件痛苦的事情,如果我想在不同架构的计算机上使用该脚本,可能会更痛苦.]子处理技术有效,前提是我在启动进程的命令中提供密码; 但是,这意味着计算机上的其他用户可以看到密码.
我写的原始代码可以在这里看到.
下面的这个变种非常相似,虽然我会省略测试例程以保持更短:
#!/usr/bin/env python
from subprocess import Popen, PIPE
# Set the command you need to connect to your database
mysql_cmd_line = "/Applications/MAMP/Library/bin/mysql -u root -p"
mysql_password = "root"
def RunSqlCommand(sql_statement, database=None):
"""Pass in the SQL statement that you would like executed.
Optionally, specify a database to operate on. Returns the result."""
command_list = mysql_cmd_line.split()
if database:
command_list.append(database)
# Run mysql in a subprocess
process = Popen(command_list, stdin=PIPE, stdout=PIPE,
stderr=PIPE, close_fds=True)
#print "Asking …Run Code Online (Sandbox Code Playgroud) objective-c ×2
python ×2
api-design ×1
c++ ×1
char ×1
cocoa ×1
cufon ×1
declaration ×1
definition ×1
java ×1
javascript ×1
lejos-nxj ×1
login ×1
macos ×1
mit-scratch ×1
mysql ×1
pointers ×1
pyobjc ×1
qt ×1
raphael ×1
sqlite ×1
squeak ×1
subprocess ×1
xcode ×1