我目前正在尝试编译和测试一个小型Android应用程序.
我正在使用Eclipse,并安装了SDK 4.2(Api Level 17).我已经定了
<uses-sdk android:targetSdkVersion="17" android:minSdkVersion="8" />
Run Code Online (Sandbox Code Playgroud)
虽然我也尝试过不同的值(即17/17).
我不使用任何GoogleAPI函数,也不使用API级别8中没有的函数.或者至少我没有收到任何编译错误或警告.
当我编译项目并在运行Android 2.2.1的真实设备上运行它时,应用程序运行正常.但是当我尝试在Android 4.2,Api Level 17的模拟器(Android虚拟设备)上运行应用程序时,我收到以下错误:
[2012-12-10 21:10:29 - SoftKeyboard] Installation error: INSTALL_FAILED_VERSION_DOWNGRADE
[2012-12-10 21:10:29 - SoftKeyboard] Please check logcat output for more details.
[2012-12-10 21:10:29 - SoftKeyboard] Launch canceled!
Run Code Online (Sandbox Code Playgroud)
然而Logcat是空的.我真的不知道,这个错误甚至意味着什么......
你如何优化这个代码(没有向量化,因为这会导致使用计算的语义,这通常远非重要):
slow_lib.py:
import numpy as np
def foo():
size = 200
np.random.seed(1000031212)
bar = np.random.rand(size, size)
moo = np.zeros((size,size), dtype = np.float)
for i in range(0,size):
for j in range(0,size):
val = bar[j]
moo += np.outer(val, val)
Run Code Online (Sandbox Code Playgroud)
关键是这种类型的循环经常与对某些向量运算有双重和的运算相对应.
这很慢:
>>t = timeit.timeit('foo()', 'from slow_lib import foo', number = 10)
>>print ("took: "+str(t))
took: 41.165681839
Run Code Online (Sandbox Code Playgroud)
好的,那么让我们把它狠毒化并添加类型注释,就像没有明天一样:
c_slow_lib.pyx:
import numpy as np
cimport numpy as np
import cython
@cython.boundscheck(False)
@cython.wraparound(False)
def foo():
cdef int size = 200
cdef int i,j …
Run Code Online (Sandbox Code Playgroud) printf
,fprintf
等等:都接受%a
转换.
手册说%a
:
"用户定义的打印机.使用两个参数并将第一个参数应用于outchan(当前输出通道)和第二个参数.因此,第一个参数必须具有类型out_channel - >'b - > unit和第二个'b.因此,函数产生的输出被插入到当前点的fprintf输出中."
我无法理解用户定义的打印机的用途,以及如何实现和使用它.有人可以解释动机并提供一个例子吗?
例如,当您想要打印复杂的数据结构时,为什么不能直接将自定义函数的数据结构打印到字符串或输出?
发布这样长而不可编译的代码的道歉.但是尽管在ocaml的仿函数上阅读了stackoverflow上的几个问题和答案,我还是得不到如何解决这个问题:
假设我有一个非常抽象的数据结构:
ads.mli
module type ENTRY = sig
type t
val get_index : t -> int
val compare : t -> t -> int
end
module type T = sig
type entry
type t
val create : unit -> t
val insert : entry -> t -> t
val delete : entry -> t -> t
end
Run Code Online (Sandbox Code Playgroud)
基于此,我可以通过传递函数在这些抽象实现上建立具体的数据结构.例如,我做了:
concrete_ads.mli
module Make (Entry: Ads.ENTRY) : (ads.T with type entry = Entry.t)
Run Code Online (Sandbox Code Playgroud)
这项工作,我现在可以在其他源文件中使用我的实现,例如:
module AT = Concrete_ads.Make(
type t = int * …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将本地推送到网络驱动器上的共享仓库.我收到以下错误:
:~/git push origin master
Counting objects ... done
Writing objects ...
Total ....
Run Code Online (Sandbox Code Playgroud)
但是之后:
fatal: cannot pread pack file: No Permission
error: unpack failed: index-pack abnormal exit
To /networkshare/repo.git
! [remote rejected] master -> master (n/a unpack error)
Run Code Online (Sandbox Code Playgroud)
远程目录的权限如下:
:~/ls -all
drwxr-xr-x ndbd MyGroup Date Repo.Git
Run Code Online (Sandbox Code Playgroud)
任何线索?
我有"老式"C++编程经验(即我关心指针和内存管理).我确实想利用现代概念.
由于我的应用程序大量使用Qt,我想使用Qt的智能指针.然而,我对一般的智能指针以及它们在Qt中的使用感到有些困惑.
1.)据我了解,如果我从中得到QObject
,我应该更好地坚持Qt的对象树和所有权模型,而忘记智能指针.正确?
2.)在C++中我可以用std::shared_ptr
和std::unique_ptr
.Qt中的等效智能指针是什么?
假设我有以下代码:
QList<MyObject *> * foobar(MyOtherObject *ptr) {
// do some stuff with MyOtherObject
QList<MyObject* > ls = new QList<MyObject*>();
for(int i=0;i<10;i++) {
MyObject* mi = new MyObject();
...
ls.insert(mi);
}
return ls;
}
int main() {
MyOtherObject* foo = new MyOtherObject();
QList<MyObject*> *bar = foobar(foo);
// do stuff
// and don't care about cleaning up?!
}
Run Code Online (Sandbox Code Playgroud)
3.)如何使用智能指针将上述代码段翻译成版本?
4.)特别是:我应该将功能签名更改为使用智能指针吗?它似乎创建了非常复杂的类型签名(返回类型和传递的参数).另外,如果某些"遗留"函数调用另一个函数 - 使用原始指针编写函数签名更好,并且仅使用智能指针"内部"函数吗?
5)什么智能指针应更换ls
的功能foobar
?什么是应该用于的指针类型mi
,即存储在QList
?中的对象?