小编Chr*_*loe的帖子

如何通过偏移获取/设置结构成员

忽略填充/对齐问题并给出以下结构,在不使用成员名称的情况下获取和设置member_b的值的最佳方法是什么.

struct mystruct {
    int member_a;
    int member_b;
}
struct mystruct *s = malloc(sizeof(struct mystruct));
Run Code Online (Sandbox Code Playgroud)

换一种方式; 您如何在指针/偏移方面表达以下内容:

s->member_b = 3;
printf("%i",s->member_b);
Run Code Online (Sandbox Code Playgroud)

我的猜测是

  • 通过查找member_a(int)的size来计算偏移量
  • 将结构转换为单个指针类型(char?)
  • 创建一个int指针并设置地址(到*charpointer + offset?)
  • 使用我的int指针设置内存内容

但是我对于转换为char类型有点困惑,或者如果类似的东西memset更合适或者通常我正在处理这个完全错误.

欢呼任何帮助

c struct

27
推荐指数
2
解决办法
4万
查看次数

从App Engine中的ReferenceProperty中获取Key/id

我可以在AppEngine土地上使用一些帮助......

使用[Python] API我从文档中创建这个例子的关系:

class Author(db.Model):
    name = db.StringProperty()

class Story(db.Model):
    author = db.ReferenceProperty(Author)

story = db.get(story_key)
author_name = story.author.name
Run Code Online (Sandbox Code Playgroud)

据我了解,该示例将进行两次数据存储查询.一个用于获取故事,然后一个用于尊重作者以便访问该名称.但是我希望能够获取id,所以做类似的事情:

story = db.get(story_key)
author_id = story.author.key().id()
Run Code Online (Sandbox Code Playgroud)

我想刚刚得到的参考ID.我不想依赖(因此查询数据存储区)ReferenceProperty值.

从阅读文档说它

ReferenceProperty的值是一个Key

这让我觉得我可以在引用的值上调用.id().但它也说:

ReferenceProperty模型提供Key属性值的功能,例如自动解除引用.

我找不到任何可以解释何时进行此引用的内容?
在ReferenceProperty的值上调用.id()是否安全?
是否可以假设调用.id()不会导致数据存储查找?

python google-app-engine google-cloud-datastore

16
推荐指数
1
解决办法
1683
查看次数

在Ext.DataView中显示商店的有限子集(或单个记录)

在Sencha Touch中,我经常需要一个Ext.DataView面板,它包含一个小的子集记录,甚至是商店中集合中的一条记录.

例如,我可能有一个模型Car,它的app.stores.cars商店里有成千上万的汽车记录,但我想在我的listOfSportsCars中显示这些项目的较小子集(比如说; 只是跑车),DataView同时还在我的listOfCars中显示更大的完整汽车组DataView.

我的第一个想法是使用多个商店.所以我有一个主要商店用于所有汽车的大清单,第二个商店有一个过滤器用于我的运动车子集.但是,现在从一个商店更新模型不会自动更新另一个商店中的记录,因此这会破坏使用DataView的目的,因为更新记录时更改不会在页面中的任何位置更新.

我的第二次尝试是覆盖collectData的数据视图,这听起来方法究竟喜欢什么我是后:

var card = new Ext.DataView({
    store: app.stores.cars,
    collectData: function(records, startIndex){
        // map over the records and collect just the ones we want
        var r = [];
        for( var i=0; i<records.length; i++ )
            if( records[i].data.is_sports_car )
                r.push( this.prepareData(records[i].data, 0, records[i]) );
            return r;
    },
    tpl: new Ext.XTemplate([
            '<tpl for=".">',
                  '<div class="car">{name}</div>',
            '</tpl>'
    ]),
    itemSelector: 'div.car'
});
Run Code Online (Sandbox Code Playgroud)

完整的例子可以发现在这里 …

extjs sencha-touch

11
推荐指数
1
解决办法
6690
查看次数

如何从我的reportError函数中获取SpiderMonkey(JSAPI)中的完整回溯?

我正在使用spidermonkey在我的应用程序中嵌入javascript,并且我有一个调用的函数reportError,它接收一个JSErrorReport.

获取错误的当前行似乎很简单,但是可以让整个调用路径显示完整的回溯吗?

javascript c spidermonkey jsapi

9
推荐指数
1
解决办法
1228
查看次数

为什么我应该使用Ext.dispatch而不是直接调用控制器代码?

在Sencha Touch中使用[相对较新的] MVC位时,我发现90%的调度调用看起来像:

Ext.dispatch({
    controller: "customers",
    action: 'show',
    record: record
});
Run Code Online (Sandbox Code Playgroud)

这很好,我喜欢将流程委托给单独的控制器代码,而不是复杂的事件路径,但我还没有看到任何优势,而不仅仅是做以下事情:

controllers.customers.show({
    record: record
});
Run Code Online (Sandbox Code Playgroud)

哪个更短更清洁.我觉得我只是Ext.dispatch为了它而遵循这个模式.我的应用程序没有受益于状态的推送/弹出网址历史记录,这是我可以看到使用这种更复杂的更复杂方法的唯一原因.

我错过了什么?使用Ext.dispatch调用控制器可以获得什么?

extjs sencha-touch

9
推荐指数
1
解决办法
3891
查看次数

如何在JavaScript中定义对象的比较方式

我想定义一个JavaScript类,Foo.

Foo = function(value){
    this.value = value;
};
Run Code Online (Sandbox Code Playgroud)

我将创建我的Foo的"实例":

foo1 = new Foo(1);
foo2 = new Foo(1);
Run Code Online (Sandbox Code Playgroud)

我希望我的Foo实例可以使用标准的==相等运算符相互比较:

foo1 == foo2;      // this should be true
Run Code Online (Sandbox Code Playgroud)

我找不到办法做到这一点.我以为我正在使用该valueOf()函数,但这仅在比较的一侧是基元时才有用,而不是如上所述两者都是对象类型.

我是否遗漏了一些非常类似于Ruby的东西

def ==(obj); end
Run Code Online (Sandbox Code Playgroud)

javascript comparison equals

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

Image Gurus:优化我的Python PNG透明度功能

我需要用alpha透明度替换PNG图像中的所有白色(ish)像素.

我在AppEngine中使用Python,因此无法访问像PIL,imagemagick等库.AppEngine确实有一个图像库,但主要是调整图像大小.

我发现了一个优秀的小pyPNG模块,并成功地完成了我需要的一个小功能:

make_transparent.py

主循环的伪代码类似于:

for each pixel:
    if pixel looks "quite white":
        set pixel values to transparent
    otherwise:
        keep existing pixel values
Run Code Online (Sandbox Code Playgroud)

和(假设8位值)"相当白"将是:

where each r,g,b value is greater than "240" 
AND each r,g,b value is within "20" of each other
Run Code Online (Sandbox Code Playgroud)

这是我第一次以这种方式处理原始像素数据,虽然有效,但它的表现也非常糟糕.似乎必须有一种更有效的方式处理数据而不以这种方式迭代每个像素?(矩阵?)

我希望有更多处理这些事情经验的人可能能够指出我的算法中一些更明显的错误/改进.

谢谢!

python algorithm google-app-engine png image

5
推荐指数
1
解决办法
776
查看次数