小编Ned*_*der的帖子

Objective-C和sqlite的DATETIME类型

我有一个sqlite3表,我试图映射到objective-C中的对象.该表的一个属性是'completed_at',它存储为DATETIME.

我想在我的objective-C类(继承自NSObject)上创建一个属性,该类将很好地映射到'completed_at'属性.

Objective-C有一个NSDate类型,但我不确定它是否会直接映射?

sqlite objective-c

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

使用Py_BEGIN_ALLOW_THREADS时如何避免Python C扩展中的gcc警告

在Python C扩展中操作GIL的最简单方法是使用提供的宏:

my_awesome_C_function() 
{
    blah;

    Py_BEGIN_ALLOW_THREADS

    // do stuff that doesn't need the GIL

    if (should_i_call_back) {
        Py_BLOCK_THREADS
        // do stuff that needs the GIL
        Py_UNBLOCK_THREADS
    }

    Py_END_ALLOW_THREADS

    return blah blah;
}
Run Code Online (Sandbox Code Playgroud)

这很好用,让我为我的大部分代码发布GIL,但重新抓取它需要它的一小部分代码.

问题是当我用gcc编译它时,我得到:

ext/engine.c:548: warning: '_save' might be used uninitialized in this function
Run Code Online (Sandbox Code Playgroud)

因为Py_BEGIN_ALLOW_THREADS定义如下:

#define Py_BEGIN_ALLOW_THREADS { \
        PyThreadState *_save; \
        _save = PyEval_SaveThread();
Run Code Online (Sandbox Code Playgroud)

那么,三个问题:

  1. 是否有可能压制gcc的警告,
  2. 有没有人知道为什么gcc认为_save可以使用未初始化,因为它在声明后立即分配,并且
  3. 为什么不定义宏来在一个语句中声明和初始化变量以避免问题?

(最后两个真的只是为了我自己的好奇心).

我可以通过不使用宏并自己完成所有操作来避免这个问题,但我宁愿不这样做.

python gcc gil cextension

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

保证邮件发送到邮箱处理器的邮件顺序

我有一个邮箱处理器,它接收固定数量的邮件:

let consumeThreeMessages = MailboxProcessor.Start(fun inbox ->
        async {
            let! msg1 = inbox.Receive()
            printfn "msg1: %s" msg1

            let! msg2 = inbox.Receive()
            printfn "msg2: %s" msg2

            let! msg3 = inbox.Receive()
            printfn "msg3: %s" msg3
        }
    )

consumeThreeMessages.Post("First message")
consumeThreeMessages.Post("Second message")
consumeThreeMessages.Post("Third message")
Run Code Online (Sandbox Code Playgroud)

应该按照发送的顺序处理这些消息.在我的测试过程中,它会准确打印出它应该是什么:

First message
Second message
Third message
Run Code Online (Sandbox Code Playgroud)

但是,由于邮件发布是异步的,因此听起来像快速发布3条消息可能会导致按任何顺序处理项目.例如,我不想不按顺序接收消息并得到类似这样的信息:

Second message // <-- oh noes!
First message
Third message 
Run Code Online (Sandbox Code Playgroud)

是否保证在发送的订单中接收和处理消息?或者是否可能无序接收或处理消息?

concurrency f#

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

多处理池在任何线程中存在异常时挂起

我是Python的新手,并尝试使用multiprocessing.pool程序来处理文件,只要没有例外,它就可以正常工作.如果任何线程/进程获得异常,则整个程序等待该线程

代码片段:

cp = ConfigParser.ConfigParser()
cp.read(gdbini)
for table in cp.sections():
    jobs.append(table)
#print jobs
poolreturn = pool.map(worker, jobs)
pool.close()
pool.join()
Run Code Online (Sandbox Code Playgroud)

失败消息:


Traceback (most recent call last):
  File "/opt/cnet-python/default-2.6/lib/python2.6/threading.py", line 525, in __bootstrap_inner
    self.run()
  File "/opt/cnet-python/default-2.6/lib/python2.6/threading.py", line 477, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/opt/cnet-python/default-2.6/lib/python2.6/multiprocessing/pool.py", line 259, in _handle_results
    task = get()
TypeError: ('__init__() takes exactly 3 arguments (2 given)', <class 'ConfigParser.NoOptionError'>, ("No option 'inputfilename' in section: 'section-1'",))
Run Code Online (Sandbox Code Playgroud)

我继续添加了一个异常处理程序来终止进程

try:
    ifile=cp.get(table,'inputfilename')
except ConfigParser.NoSectionError,ConfigParser.NoOptionError:
    usage("One of Parameter not found for"+ table)
    terminate()
Run Code Online (Sandbox Code Playgroud)

但它仍然等待,不知道什么是失踪.

python pool exception hang multiprocessing

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

Android JVM可以在PC上运行吗?

Android JVM也可以在PC上运行吗?

或仅限于在移动设备上工作?

根据我的理解,当你使用eclipse进行开发时,它是模拟的,而不是运行实际的jvm正确吗?

java android

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

以前为jQuery的兄弟选择器

如果我有一个简单的HTML列表

<ul>
  <li>Item 1</li>
  <li>Item 2</li>
  <li id="some-id">Item 3</li>
  <li>Item 4</li>
  <li>Item 5</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

可以很容易地选择每一个列表项 #some-id:

$("#some-id ~ li")
Run Code Online (Sandbox Code Playgroud)

但我如何选择之前 的项目#some-id

jquery jquery-selectors

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

为什么dir()函数没有列出一些可调用的属性?

为什么Python中的dir()函数没有显示所有可调用属性?

import win32com.client

iTunes = win32com.client.gencache.EnsureDispatch("iTunes.Application")
currentTrack = win32com.client.CastTo(iTunes.CurrentTrack,"IITFileOrCDTrack")

print dir(currentTrack)
Run Code Online (Sandbox Code Playgroud)

结果:

['AddArtworkFromFile', 'CLSID', 'Delete', 'GetITObjectIDs', 'Play', 'Reveal', 'UpdateInfoFromFile', 'UpdatePodcastFeed', '_ApplyTypes_', '__doc__', '__eq__', '__getattr__', '__init__', '__module__', '__ne__', '__repr__', '__setattr__', '_get_good_object_', '_get_good_single_object_', '_oleobj_', '_prop_map_get_', '_prop_map_put_', 'coclass_clsid']

print currentTrack.Location
Run Code Online (Sandbox Code Playgroud)

位置可调用并返回文件路径,但未在第一个结果中列出.它也没有显示代码完成工具.是因为它是通过getter方法获取的吗?我看到它列在_prop_map_get_和_prop_map_put_下.

另外,当currentTrack._prop_map_get _ ['Location']返回"(1610874880,2,(8,0),(),'Location',None)时,currentTrack.Location为什么会返回文件路径?" 它在哪里获取文件路径字符串?

python itunes win32com

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

如何大写Javascript对象键?

有人知道转这个的好方法吗?:

var obj = [{key1: value1,key2: value2},{key3: value3,key4: value4}];
Run Code Online (Sandbox Code Playgroud)

成:

var obj = [{Key1: value1,Key2: value2},{Key3: value3,Key4: value4}];
Run Code Online (Sandbox Code Playgroud)

javascript jquery

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

iPhone编程 - 印象,意见?

多年来,我一直使用C,C++,C#和其他一些语言进行编程,主要用于Windows和Linux,还有嵌入式平台.最近开始做一些iPhone编程作为一个侧面项目,所以我自Apple II天以来第一次使用Apple平台.我想知道其他开发人员对Mac OSX,Xcode和iPhone SDK的看法.到目前为止,这是我的印象:

  • Mac OSX:非常令人困惑,我倾向于打开太多打开的窗口而不知道它在哪里.幸运的是鸟瞰图,没有它我会迷路.至少有贝壳所有熟悉的东西,这对我帮助很大.

  • Xcode:感觉不像VisualStudio或Eclipse,我熟悉的两个环境.我想我可以习惯它,但我想知道Apple是不是会更好用Eclipse.在我找到所有窗户粘在一起的设置之前我讨厌它,现在我可以容忍它.

  • iPhone SDK:确实很奇怪.我理解苹果希望控制他们的环境,但在这个时代,它似乎有点低俗,他们因为破坏了开发人员的善意而错过了很多东西.

  • Objective-C:我已经了解它多年,但从未看过它.语法令人反感,但实际上我对语言非常感兴趣.我认为这是C++和C#之间有趣的第三站,我喜欢这两者.由于Apple技术的普及,Obj-C有没有机会突破Mac沙盒?

很想读你的想法,

安德鲁

c# c++ iphone development-environment objective-c

6
推荐指数
1
解决办法
2668
查看次数

编程珍珠 - 随机选择算法

编程珍珠第1版提出了这种算法,用于从N个整数的群体中选择M个等概率的随机元素.

InitToEmpty
Size := 0
While Size < M do
  T := RandInt(1,N)
  if not Member(T)    
     Insert(T)
     Size := Size + 1
Run Code Online (Sandbox Code Playgroud)

据称,只要M <N/2,预期会员测试的数量小于2M.

我想知道如何证明它,但我的算法分析背景让我失望.

我理解M越接近N,程序将花费的时间越长,因为结果集将具有更多元素,并且RandInt选择现有元素的可能性将按比例增加.

你能帮我弄清楚这个证明吗?

algorithm

6
推荐指数
1
解决办法
724
查看次数