我的Ruby脚本需要一个小的非结构化数据库.不是Sqlite,更像是持久化哈希表的东西可以完美地工作,只要它可以存储基本的Ruby结构(数组,字符串,哈希等 - 所有可序列化的)并且在Ruby脚本崩溃时不会被破坏.
我知道Perl和Tie :: Hash有很多类似的解决方案,所以可能有一些类似于Ruby的宝石.那是什么宝石?
编辑:据我所知,PStore和yaml解决方案基于读取,解组,重新编组和在每次更改时编写整个数据库.这不仅要求所有它都适合内存,它是O(n ^ 2).所以它们都不是一个特别好的解决方案.
这是一个相当古老的话题:主持人和吸气者是好还是坏?
我的问题是:C++/D/Java中的编译器是否内联getter和setter?
与直接字段访问相比,getter/setter在多大程度上影响性能(函数调用,堆栈帧).除了使用它们的所有其他原因之外,我想知道除了是一个好的OOP练习之外它们是否应该影响性能.
我真的很难弄清楚为什么我的Web服务调用充斥着垃圾数据.
我有一个UITableViewController调用Web服务,也充当NSURLConnectionDelegate.
这是感兴趣的委托方法,请注意NSLog语句.
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
NSLog(@"data %@", [[NSString alloc] initWithUTF8String: [data bytes]]);
NSLog(@"before %@", [NSString stringWithUTF8String: self.rawData.bytes]);
[self.rawData appendData:data];
NSLog(@"after %@", [NSString stringWithUTF8String: self.rawData.bytes]);
}
Run Code Online (Sandbox Code Playgroud)
以下是经过多次尝试后生成的日志:
2009-07-10 09:04:20.339 SundialInvoice[91493:20b] data {"items": [], "request":
"/inventory/delivered.json"}
2009-07-10 09:04:20.339 SundialInvoice[91493:20b] before
2009-07-10 09:04:20.340 SundialInvoice[91493:20b] after {"items": [], "request": "/inventory/delivered.json"} SundialInvoice] [PID
2009-07-10 09:04:23.153 SundialInvoice[91493:20b] data {"items": [], "request": "/inventory/delivered.json"}l 4] [Mes
2009-07-10 09:04:23.154 SundialInvoice[91493:20b] before
2009-07-10 09:04:23.154 SundialInvoice[91493:20b] after {"items": [], "request": "/inventory/delivered.json"} SundialInvoice] [PID
2009-07-10 09:04:27.913 SundialInvoice[91493:20b] data …Run Code Online (Sandbox Code Playgroud) 假设您有四种产品,每种产品都有自己的发布时间表.每种产品都有50%的共享代码(所有产品的通用功能)和50%的产品特定代码.
您是否需要为每个产品单独的源控制分支?是否应始终在四个产品分支之一中开发通用功能,并在以后合并到其他产品中?
典型场景:产品A将在下个月发布,需要核心(共享)增强1,产品B将在四个月内发布,并需要核心(共享)增强2(需要三个月才能完成).
Flex应用程序是否有可用于Web Developer或Firebug工具栏以检查UI元素的工具?
基本上在复杂的UI控件层次结构中,您可以浏览元素并查看x和y坐标,宽度,高度,id等属性.
我对可以在运行时执行此操作的工具感兴趣,因为大多数属性都是动态的.
是否可以在两个列表之间拖动jQuery UI可排序列表项,其中一个列在jQuery UI对话中,哪一个不在?
我正在尝试创建一个对话框,用户可以将对话框中的表单字段拖动到页面上的表单中,但我无法将对象边框中的项目拖出.
提前致谢
编辑
看起来拖拽和粪便实际上是有效的,但是一旦你超越了对话,你就看不到这个项目了.这不是很理想.(见redsquare的演示)
另一个编辑
为对话创建的主要div就是overflow:hidden它.如果我在Firebug中禁用它,拖动工作正常,所以我想我可以以某种方式覆盖它,但我怀疑这将导致我更多的问题.
我有一个应用程序,有一个标签栏和导航栏,用于正常交互.我的一个屏幕是文本的很大一部分,所以我允许用户点击全屏(有点像Photos.app).
导航栏和标签栏被隐藏,我将文本视图的框架设置为全屏.问题是,标签栏曾经是大约50px的空白区域.你可以看看是否从这个屏幕截图:
删除了死的ImageShack链接
我不确定是什么导致了这个.空白绝对不是文本视图背后的视图,因为我将它的背景颜色设置为红色只是为了确定.可能是什么导致了这个?
**更新**
我在UIWindow子类中做了一些命中测试,发现空白实际上是未记录/未发布的UILayoutContainerView.这是tabBar的父视图.我不认为建议直接操作此视图,那么如何隐藏标签栏?
**更新#2**
我在动画之前和之后检查了self.view的帧,看起来父视图没有足够大小.
全屏后,视图的框架只有411像素高.我已经尝试手动搞乱框架,并设置autoResizeMask没有运气.
****更新:这是最终结果****
- (void)toggleFullscreen {
isFullScreen = !isFullScreen; //ivar
//hide status bar & navigation bar
[[UIApplication sharedApplication] setStatusBarHidden:isFullScreen animated:YES];
[self.navigationController setNavigationBarHidden:isFullScreen animated:YES];
[UIView beginAnimations:@"fullscreen" context:nil];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:.3];
//move tab bar up/down
CGRect tabBarFrame = self.tabBarController.tabBar.frame;
int tabBarHeight = tabBarFrame.size.height;
int offset = isFullScreen ? tabBarHeight : -1 * tabBarHeight;
int tabBarY = tabBarFrame.origin.y + offset;
tabBarFrame.origin.y = tabBarY;
self.tabBarController.tabBar.frame = tabBarFrame;
//fade it in/out
self.tabBarController.tabBar.alpha = isFullScreen ? 0 : …Run Code Online (Sandbox Code Playgroud) 我正在修改Windows窗体以允许在UI保持响应的同时在后台加载数据.数据需要花费大量时间来检索和绑定.理想情况下,我会在后台执行这两项工作,但是我在后台应该做什么样的UI更新(如在主线程外部),这有些含糊不清.在后台显示数据检索和数据绑定的一个可靠示例将非常有用.
data-binding user-interface multithreading backgroundworker winforms
我很确定我已经知道答案,但我仍然很好奇在 Try、Catch、Finally 块中处理错误的意见是什么 -但是当您重复自己时。
顺便说一句 - 我不是在谈论用户输入 - 而是使用它作为示例,因为它清晰且简短
考虑这段代码...
try {
if (success) {
return someSuccessMessage;
}
else {
logError("User input not correct format");
return someErrorMessage; // repeats itself
}
}
catch (Exception ex) {
logError(ex.Message);
return someErrorMessage; // repeats itself
}
Run Code Online (Sandbox Code Playgroud)
假设我们有一个函数,如果它失败了,我们想返回一条错误消息,因为异常是无关紧要的——我们的函数没有成功,用户不需要任何额外的细节。
我一直坚信,如果你能处理错误,就避免异常——因为它不再是异常了,但我想知道关于避免重复自己的意见......你可以执行以下操作来避免重复你自己...
try {
if (success) {
return someSuccessMessage;
}
else {
throw new Exception("User input not correct format");
}
}
catch (Exception ex) {
logError(ex.Message);
return someErrorMessage;
}
Run Code Online (Sandbox Code Playgroud)
这不是最好的例子,但为了简洁起见,我想说明重复代码的要点。
众所周知,异常会导致性能损失,但是对于这种情况有何想法呢?
想象一下,我有一个这样的枚举(仅作为一个例子):
public enum Direction{
Horizontal = 0,
Vertical = 1,
Diagonal = 2
}
Run Code Online (Sandbox Code Playgroud)
我如何编写一个例程来将这些值放入System.Web.Mvc.SelectList中,因为枚举的内容将来会发生变化?我想将每个枚举名称作为选项文本,并将其值作为值文本,如下所示:
<select>
<option value="0">Horizontal</option>
<option value="1">Vertical</option>
<option value="2">Diagonal</option>
</select>
Run Code Online (Sandbox Code Playgroud)
这是迄今为止我能想到的最好的:
public static SelectList GetDirectionSelectList()
{
Array values = Enum.GetValues(typeof(Direction));
List<ListItem> items = new List<ListItem>(values.Length);
foreach (var i in values)
{
items.Add(new ListItem
{
Text = Enum.GetName(typeof(Direction), i),
Value = i.ToString()
});
}
return new SelectList(items);
}
Run Code Online (Sandbox Code Playgroud)
但是,这总是将选项文本呈现为"System.Web.Mvc.ListItem".通过这个调试也告诉我,Enum.GetValues()正在返回'Horizontal,Vertical'等而不是0,1,正如我所期望的那样,这让我想知道Enum.GetName()和Enum之间有什么区别.的GetValue().
iphone ×2
actionscript ×1
apache-flex ×1
asp.net-mvc ×1
branch ×1
c# ×1
c++ ×1
cocoa-touch ×1
d ×1
data-binding ×1
enums ×1
exception ×1
flex3 ×1
flexbuilder ×1
java ×1
jquery ×1
jquery-ui ×1
objective-c ×1
ruby ×1
svn ×1
tfs ×1
try-catch ×1
uitextview ×1
winforms ×1