在尝试实现C11解析器(用于教育目的)时,我发现在C11(p.470)中也在C99(p.412)中(感谢Johannes!),直接声明符定义为:
(6.7.6) direct-declarator:
direct-declarator [ type-qualifier-list? * ]
Run Code Online (Sandbox Code Playgroud)
起初,我认为这是语法中的错误(类型列表不应该是可选的).但是,当我在我的参考编译器(clang)中尝试这个时,我得到了一个意外的错误:
int array[*] = { 1, 2, 3 };
// error: star modifier used outside of function prototype
Run Code Online (Sandbox Code Playgroud)
显然,(在clang中)这被称为星形修饰符.
我很快就知道它们只能在函数签名中使用:
void foobar(int array[*])
Run Code Online (Sandbox Code Playgroud)
但是,它们只能用于声明中.尝试在函数定义中使用它也会导致错误:
void foobar(int array[*]) {
// variable length array must be bound in function definition
}
Run Code Online (Sandbox Code Playgroud)
所以据我所知,预期的行为是[*]在函数声明中使用,然后在函数定义中使用固定数字.
// public header
void foobar(int array[*]);
// private implementation
void foobar(int array[5]) {
}
Run Code Online (Sandbox Code Playgroud)
但是,我从未见过它,我也不太了解它的目的.
int[]?int * …说你有这个HTML:
<a href="#">
This is underlined
<span>
This isn't.
</span>
</a>
Run Code Online (Sandbox Code Playgroud)
这个css:
a:hover {
text-decoration: underline; /* I know, this is enabled by default. */
}
a:hover span {
text-decoration: none !important;
}
Run Code Online (Sandbox Code Playgroud)
为什么a> span元素仍然有下划线.我很确定你应该通过使用'none'来取消装饰.我知道你可以用这个来达到我想要的结果:
<a href="#">
<span class="underlined">
This is underlined
</span>
<span>
This isn't.
</span>
</a>
Run Code Online (Sandbox Code Playgroud)
再加上这个css:
a:hover {
text-decoration: none;
}
a:hover span.underlined {
text-decoration: underline;
}
Run Code Online (Sandbox Code Playgroud)
但是......这对我来说没有意义,为什么你不能取消子元素的文本修饰.所以为什么...?
编辑:内联块
根据@amosrivera,当你使用内联块时,它确实有效.我可以确认这适用于Safari和Chrome!
a:hover span{
text-decoration:none;
display:inline-block;
}
Run Code Online (Sandbox Code Playgroud)
如上所述,这适用于Safari和Chrome,但不适用于Firefox.以下解决方案适用于Firefox,但不适用于Safari和Chrome ...
a:hover span{
text-decoration:none;
display:block;
}
Run Code Online (Sandbox Code Playgroud)
小桌子:
CSS-Rule | Webkit | …Run Code Online (Sandbox Code Playgroud) 假设我需要插入以下文档:
{
title: 'Péter'
}
Run Code Online (Sandbox Code Playgroud)
(注意é)
当我使用以下PHP代码时,它给出了一个错误...:
$db->collection->insert(array("title" => "Péter"));
Run Code Online (Sandbox Code Playgroud)
......因为它需要是utf-8.
所以我应该使用这行代码:
$db->collection->insert(array("title" => utf8_encode("Péter")));
Run Code Online (Sandbox Code Playgroud)
现在,当我请求文档时,我仍然要解码它...:
$document = $db->collection->findOne(array("_id" => new MongoId("__someID__")));
$title = utf8_decode($document['title']);
Run Code Online (Sandbox Code Playgroud)
有没有办法自动化这个过程?我可以更改MongoDB的字符编码(我正在迁移使用cp1252西欧(latin1)的MySQL数据库吗?
我已经考虑过更改Content-Type-header,问题是所有静态字符串(硬编码)都不是utf8 ...
提前致谢!蒂姆
我正在构建一个基础设施(在C中),其中几个单独的服务通过ZeroMQ进行通信.现在,为了使这一切能够快速平稳地运行,我希望ZeroMQ能够异步运行.
我知道ZeroMQ的IO线程已经分离,但我想同时执行多个任务.
目前,我的模式如下:
Client -> REQ | /\
Router -> ROUTER | |
--- proxy --- | |
Dealer -> DEALER | |
Workers-> REP \/--|
Run Code Online (Sandbox Code Playgroud)
但是,这需要我设计一个阻塞的同步工作者.使这种异步的唯一方法是增加工作者(线程)的数量,但这对我来说似乎不太可扩展.
此外,工作人员执行的任务本身是异步的(使用他们自己的事件循环).所以基本上,我希望实现这样的目标:
void *socket = zmq_socket(context, ZMQ_REP);
zsocket_connect(socket, "inproc://backend");
while (1) {
zmq_msg_t request;
zmq_msg_init(&request);
zmq_msg_recv(&request, socket, 0);
zmq_msg_close(&request);
do_something(callback, socket);
}
Run Code Online (Sandbox Code Playgroud)
do_something 然后会执行一些操作,一旦完成,就会调用回调函数.
void callback(void *data, void *socket) {
zmq_msg_t reply;
zmq_msg_init_size(&reply, 5);
memcpy(zmq_msg_data(&reply), "World", 5);
zmq_msg_send(&reply, socket, 0);
zmq_msg_close(&reply);
}
Run Code Online (Sandbox Code Playgroud)
现在,有没有办法实现这一点(即组合两个事件循环)?
我已经查看了DEALER(客户端) - > ROUTER - > DEALER - > DEALER(worker),但这似乎也没有用,因为它仍然阻止了工作端的并发任务.
说我有以下设计:
id | participant_ids
...| [ObjectId(...), ObjectId(...)]
Run Code Online (Sandbox Code Playgroud)
现在我以这种方式查询它:
db.events.find({
participant_ids: ObjectId(...)
});
Run Code Online (Sandbox Code Playgroud)
与此相同:
db.events.find({
participant_ids: {
$in: ObjectId(...)
}
});
Run Code Online (Sandbox Code Playgroud)
我假设这两者之间的表现没有差别(但如果我错了,请纠正我!).
对于每个活动,至少有1个参与者,最多2个参与者.所以我也可以使用以下设计:
id | participant_1_id | participant_2_id
Run Code Online (Sandbox Code Playgroud)
...并像这样查询...:
db.events.find({
$or: {
participant_1_id: ObjectId(...),
participant_2_id: ObjectId(...)
}
});
Run Code Online (Sandbox Code Playgroud)
如果我不使用索引,这可能并没有真正有所作为,但是 - 当然 - 我是.
对于第一个设计,我使用以下索引:
db.events.ensureIndex({
participant_ids: 1
});
Run Code Online (Sandbox Code Playgroud)
对于第二个,我跟这个:
db.events.ensureIndex({
participant_1_id: 1,
participant_2_id: 1
});
Run Code Online (Sandbox Code Playgroud)
当你看他们的表现时,两者都有缺点.
Array可能比使用普通键慢.$or-operator不是很快.$or在查询的部分有无限的密钥和无限的项目).我的问题是: - 我应该使用什么样的设计?- 我可以索引Array吗?文档没有说明这一点,我不确定Array是什么(因为它们的内容可以变化很大).
当我尝试发送推送通知时,我收到此错误:"连接被拒绝",但我不知道为什么...我已将我的apns-dev.pem上传到根目录中的同一目录中但是也不行.
<?php
$payload['aps'] = array('alert' => 'This is the alert text', 'badge' => 1, 'sound' => 'default');
$payload = json_encode($payload);
$apnsHost = 'gateway.sandbox.push.apple.com';
$apnsPort = 2195;
$apnsCert = 'apns-dev.pem';
$apnsPass = 'secret';
$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);
stream_context_set_option($streamContext, 'ssl', 'passphrase', $apnsPass);
$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 60, STREAM_CLIENT_CONNECT, $streamContext);
if (!$apns) {
echo "Error: $errorString ($error)";
}
// Do this for each
$deviceToken = '00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000'; …Run Code Online (Sandbox Code Playgroud) 请注意我还没有在Mac机器上的Windows机器上测试过这个.我不太确定这是否也出现在Windows机器上......
当我调整Java应用程序的大小时,内容是不可见的.我已经找到一种方法来解决它后调整其大小,但不能同时在用户调整窗口的大小.
我没有使用Swing或其他东西,因为它使我的二进制文件变得如此缓慢(在我看来).
结构是这样的:
Frame 我的主窗口Container内容视图main-windowContainer基于paint(Graphics g)-method 的子视图我已经添加了所有监听器My main-window,现在我可以在调整窗口大小后重绘Content-view .
public void componentResized(ComponentEvent e) {
this.contentView.paint(this.contentView.getGraphics());
}
Run Code Online (Sandbox Code Playgroud)
我谨慎使用paint(getGraphics())-method并不是一个非常好的方法,但是因为repaint()-method根本没有做任何事情,所以它是唯一可行的方法.
调整大小时,所有绘制的内容都变得不可见.但是,当我向我添加Button-instance Content-view并调整我Main-window的大小时,该按钮不会被隐藏.
我是能够追踪"live'调整大小事件:
public void componentMoved(ComponentEvent e) {
System.out.println("Live-resize");
}
Run Code Online (Sandbox Code Playgroud)
当我将repaint-method(或官方重绘方法)添加到像这样的'live'-resize事件时,我仍然得到输出,但是,它没有重新绘制或者某些东西
public void componentMoved(ComponentEvent e) {
System.out.println("Live-resize");
this.contentView.paint(this.contentView.getGraphics());
}
Run Code Online (Sandbox Code Playgroud)
要么
public void componentMoved(ComponentEvent e) {
System.out.println("Live-resize");
this.contentView.repaint();
} …Run Code Online (Sandbox Code Playgroud) 目前我在mydomain.com上有我的网络服务器,在static.mydomain.com和media.mydomain.com有两个CDN.
是否有可能在mydomain.com下拥有所有权限?例如
mydomain.com - 网络服务器
mydomain.com/static - 静态CDN
mydomain.com/media - 媒体CDN
amazon-ec2 amazon-web-services amazon-cloudfront amazon-route53
我知道可以通过创建符号链接来创建动态可变的Default.png.但这在iPhone SDK 3.0中是不可能的(仅在2.0中).我怎么能在3.0中做到这一点,或者这是不可能的?蒂姆
这适用于iPhone OS 2.0 http://collison.ie/blog/2008/11/dynamic-defaultpng-files-on-the-iphone,但不再适用于iPhone OS 3.0.默认屏幕始终为黑色.
我可以更改documents-folder中的默认屏幕,symbolic-link会链接到该文件.我通过浏览到模拟器中的app-folder测试了它.我在documents-directory中看到了正确的文件,我看到符号链接指向该(右)文件.
当我查看我的日志文件时,我得到以下行:
...
Rendered partials/_something.html.erb (11.8ms)
Rendered partials/_something.html.erb (123.8ms)
Rendered partials/_something.html.erb (8.2ms)
Rendered partials/_something.html.erb (7.3ms)
Rendered partials/_something.html.erb (7.1ms)
Rendered partials/_something.html.erb (8.5ms)
Rendered partials/_something.html.erb (7.2ms)
Rendered partials/_something.html.erb (7.1ms)
Rendered partials/_something.html.erb (7.4ms)
Rendered partials/_something.html.erb (7.9ms)
...
Run Code Online (Sandbox Code Playgroud)
我按照以下方式包括它们
@collection.each do |something|
render :partial => 'partials/something', :locals => {:something => something}
end
Run Code Online (Sandbox Code Playgroud)
我觉得很奇怪,在这种情况下,第二个渲染(相同的部分渲染)需要比任何其他渲染更长的时间.但是,当我重新加载页面时,其他一些渲染需要花费更多时间,而@collection-variable仍然处于相同的顺序.
我实际上并不知道如何描述这个.我的意思是,当它something导致缓慢的反应时,我能够弄明白.但它接缝只是一个随机的.这可能是一些内存泄漏吗?
我希望你知道答案=)!
正常覆盖将以这种方式工作:
class Fruit {
public:
string color();
};
string Fruit::color() {
return "Unkown";
};
class Apple : public Fruit {
public:
string color();
};
string Apple::color() {
return "Green";
};
Run Code Online (Sandbox Code Playgroud)
现在,你称之为:
Apple *apple = new Apple();
std::cout << apple->color();
Run Code Online (Sandbox Code Playgroud)
这将输出Green,这是正确的!但是,在以下情况下运行它(当然这只是一个例子):
Apple *apple = new Apple();
printHealthy(apple);
// Method printHealthy:
void printHealthy(Fruit *fruit) {
std::cout << fruit->color();
};
Run Code Online (Sandbox Code Playgroud)
这将输出Unkown,我可以理解,因为你将Apple转换为Fruit,从而'替换'它的方法.但我怎么还能了解它的真实颜色呢?
要求:
Apple--class.将会有更多Apple的东西,在旅途中分配.Apple类(例如Tomato,它们当然有不同的名称)是它的子类Fruit.Apple哪种颜色为 …c ×2
iphone ×2
mongodb ×2
php ×2
amazon-ec2 ×1
c++ ×1
css ×1
function ×1
graphics ×1
html ×1
indexing ×1
java ×1
minimize ×1
overriding ×1
parameters ×1
partials ×1
performance ×1
push ×1
resize ×1
ssl ×1
subclassing ×1
symlink ×1
utf-8 ×1
window ×1
zeromq ×1