我在网站上做了一些分析,发现strtolower调用花了很长时间.
背景是
function __autoload($class_name) {
require_once('app/model/' . strtolower($class_name) . '.php');
}
Run Code Online (Sandbox Code Playgroud)
结果是
_0.0092 - > ___ autoload()C:\ xxx\config.php:0_
0.0093 - > strtolower()C:\ xxx\config.php:77
0.0101 - > require-once(C:\ xxx. php)C:\ xxx\config.php:77
我在跟踪文件中的几个地方看到过这个.
然后,我在以下上下文中尝试了该函数
for($i=0;$i<100;$i++) {
strtolower('SomeStRIng' . $i)
}
Run Code Online (Sandbox Code Playgroud)
结果是
0.0026 - > strtolower()C:\ xxx\index.php:53
0.0027 - > strtolower()C:\ xxx\index.php:53
0.0027 - > strtolower()C:\ xxx\index.php :53
0.0027 - > strtolower()C:\ xxx\index.php:53
两者之间存在显着差异.当然,这并不是什么大事,但我仍然感到困惑.
我有几种不同的用户类型(买家、卖家、管理员)。
我希望它们都具有相同的 account_path URL,但使用不同的操作和视图。
我正在尝试这样的事情......
class AccountsController < ApplicationController
before_filter :render_by_user, :only => [:show]
def show
# see *_show below
end
def admin_show
...
end
def buyer_show
...
end
def client_show
...
end
end
Run Code Online (Sandbox Code Playgroud)
这就是我在 ApplicationController 中定义 render_by_user 的方式...
def render_by_user
action = "#{current_user.class.to_s.downcase}_#{action_name}"
if self.respond_to?(action)
instance_variable_set("@#{current_user.class.to_s.downcase}", current_user) # e.g. set @model to current_user
self.send(action)
else
flash[:error] ||= "You're not authorized to do that."
redirect_to root_path
end
end
Run Code Online (Sandbox Code Playgroud)
它在控制器中调用正确的 *_show 方法。但仍然尝试渲染“show.html.erb”并且不查找我在那里名为“admin_show.html.erb”“buyer_show.html.erb”等的正确模板。
我知道我可以手动调用render "admin_show"每个操作,但我认为可能有一种更干净的方法可以在之前的过滤器中完成这一切。
或者有其他人看到过插件或更优雅的方式来按用户类型分解操作和视图吗?谢谢!
顺便说一句,我正在使用 Rails 3(以防有所不同)。
我只想要那些标签外的文本.Hrpicot.XML有没有这方面的方法?
我希望能够从保存的文件中提取值,并且我可以编辑,并在程序中或在其外部添加.
只是一个基本的价值清单.
this = that
this2 = that2
this3 = that3
Run Code Online (Sandbox Code Playgroud)
然后查询这个,并从中得到它.
做这个的最好方式是什么?
我有一个单独的对象PoolManager,它在plist中加载并保存一些数据.在我的程序中,当需要了解我的池时,它会询问[PoolManager sharedPoolManager]它的属性.我有一个视图负责设置这些属性,而其他所有其他属性只是从中读取.一切正常,然后无缘无故地说,它开始崩溃了.我设置NSZombieEnabled = YES并且可以看到,当我访问这两个NSString属性中的一个时,它们似乎已被释放.调试器消息是:*** -[CFString respondsToSelector:]: message sent to deallocated instance 0x5a336d0
我尝试回到之前的快照,其中一切正常,它仍然这样做.我甚至使用TimeMachine从昨天开始回到项目中,它也是如此.我很困惑.
这是单例对象代码......它是surface和shape字符串显然是僵尸.对不起NSLogs
// MyPoolSingleton.h
#import <Foundation/Foundation.h>
#define kFileName @"data.plist"
@interface PoolManager : NSObject {
float volume;
float length;
float width;
float depth;
NSString *surface;
NSString *shape;
BOOL isMetric;
int fcTarget;
int cyaTarget;
int taTarget;
int chTarget;
int saltTarget;
}
@property float volume;
@property float length;
@property float width;
@property float depth;
@property (nonatomic, retain) …Run Code Online (Sandbox Code Playgroud) 我最近在OpenCV c ++中使用了一些跟踪基于颜色的对象的代码,并在python绑定中重写了它.
整体结果和方法显然是相同的减去语法.但是,当我在视频的每一帧上执行以下代码时,需要将近2-3秒才能完成,因为c ++变体(也在下面)是即时比较的,我可以在帧之间迭代,就像我的手指可以按下一样快键.
有什么想法或意见吗?
cv.PyrDown(img, dsimg)
for i in range( 0, dsimg.height ):
for j in range( 0, dsimg.width):
if dsimg[i,j][1] > ( _RED_DIFF + dsimg[i,j][2] ) and dsimg[i,j][1] > ( _BLU_DIFF + dsimg[i,j][0] ):
res[i,j] = 255
else:
res[i,j] = 0
Run Code Online (Sandbox Code Playgroud)
for( int i =0; i < (height); i++ )
{
for( int j = 0; j < (width); j++ )
{
if( ( (data[i * step + j * channels + 1]) > (RED_DIFF …Run Code Online (Sandbox Code Playgroud) 我正在关注一个教程.(真实世界Haskell)
我有一个关于头部和尾部的初学问题,在空列表上调用:在GHCi中,它返回异常.
直觉我想我会说他们都应该返回一个空列表.你能纠正我吗?为什么不 ?(据我记得在OzML左侧或右侧的空列表返回nil)
我当然还没有在教程中讨论这个主题,但它不是bug的来源(如果不提供参数)?我的意思是,如果传递给一个函数的参数列表可能是optionnal,用head读取它们可能会导致错误?
我只知道GHCi的行为,我不知道编译时会发生什么.
我用Ruby编写了各种脚本:
rails (symfony)
ruby (php, bash)
rb-appscript (applescript)
Run Code Online (Sandbox Code Playgroud)
是否有可能用Ruby替换低级语言?
我用Ruby编写并将其转换为java,c ++或c.
原因人们说当涉及到Ruby中更多性能关键任务时,你可以用C扩展它.但是,这个词意味着你编写你刚刚在Ruby代码中调用的C文件.我想,我可以改用Ruby并将其转换为C源代码,将其编译为机器代码.然后我可以用C语言"扩展"它,但是在Ruby代码中.
这就是这篇文章的内容.在Ruby中编写所有内容但获得C(或Java)的性能.
第二个优点是您不必学习其他语言.
就像HipHop for PHP一样.
这有实现吗?
我正在使用hello android教程并通过eclipse创建avd.启动仿真器时,不使用任何图像.它只显示一个黑色的背面屏幕,中间是单词ANDROID,单词ANDROID末尾有一个闪烁的光标.我已按照T的步骤安装SDK,Eclipse和ADT.即使将模拟器作为独立启动也会产生相同的结果.是否有一个步骤我缺少让模拟器加载一个Android环境进行测试?
我在映射以下内容时遇到了一些麻烦:
public class Operation {
private Integer id;
private String name;
private List<Item> items = new ArrayList<Item>();
//set/getters/hashcode/etc. omitted
public void addItem(Item i,Operation end) {
i.setOperationStart(this);
i.setOperationEnd(end};
items.add(i);
end.getItems().add(i);
}
public class Item {
private Integer id;
private String name;
private Operation operationStart;
private Operation operationEnd;
//set/getters/hashcode/etc. omitted
}
Run Code Online (Sandbox Code Playgroud)
所以基本上一个操作有一堆项目,一个项目属于2个操作。此外,如果其中一项操作不存在,则项目存在也没有意义,即如果我删除其中一项操作,我还想从它存储的其他任何地方删除该项目。
有没有人有关于我如何映射上述类的指针,或者可以指出一些示例,显示如何映射具有 2 个父级的子对象?