目前我有通常的Controller/Action结构:
BlogController:
/blog/list
/blog/create
/blog/detail/my-blog-hash
Run Code Online (Sandbox Code Playgroud)
和PostController
/post/create
/post/detail/my-post-hash
Run Code Online (Sandbox Code Playgroud)
我想要的是博客帖子详细信息视图的URL:
/blog/detail/my-blog-hash/post/my-post-hash
Run Code Online (Sandbox Code Playgroud)
我知道有一个RESTBundle,但是这让IMO过于复杂,并且路由和表单验证存在一些我无法解决的真正问题(即使在IRC的帮助下).我不需要JSON,序列化器,特殊视图等的访问点,我只需要一种方法来以某种方式堆栈控制器.
有人可以帮我弄这个吗?
我正在尝试格式化表单,文本字段响应某些方法,而不是其他方法.
我可以这样做:
f.input :name, :input_html => { :maxlength => 10 }
f.input :name, :input_html => { :disabled => true }
Run Code Online (Sandbox Code Playgroud)
但是如果我尝试执行以下任何操作,它们就不起作用:
f.input :name, :input_html => { :size => 10 }
f.input :name, :input_html => { :class => 'autogrow' }
f.input :name, :input_html => { :rows => 10, :cols => 10 }
Run Code Online (Sandbox Code Playgroud)
例如,当我尝试使用:size时,生成的html显示size = 10,但不会反映在实际形式中.
这些或多或少是从Github上的Formtastic文档中提取的,Activeadmin文档引用了该文档.
在SQL Server 2008中是否可以创建一个包含两列同时为主键和外键的表?如果是的话,这样的代码怎么样?我已经搜索过,什么都没有.
如果我遇到if (!this) return;
应用程序中的旧代码,那么风险有多严重?这是一个危险的滴答作响的定时炸弹需要立即在应用程序范围内搜索并摧毁努力,还是更像是可以安静地留在原点的代码气味?
当然,我不打算编写执行此操作的代码.相反,我最近在我们的应用程序的许多部分使用的旧核心库中发现了一些东西.
想象一下,一个CLookupThingy
类具有非虚拟 CThingy *CLookupThingy::Lookup( name )
成员函数.显然,那些牛仔时代的程序员遇到了许多崩溃事件,其中NULL CLookupThingy *
是从函数传递的,而不是修复数百个调用站点,他悄悄地修复了Lookup():
CThingy *CLookupThingy::Lookup( name )
{
if (!this)
{
return NULL;
}
// else do the lookup code...
}
// now the above can be used like
CLookupThingy *GetLookup()
{
if (notReady()) return NULL;
// else etc...
}
CThingy *pFoo = GetLookup()->Lookup( "foo" ); // will set pFoo to NULL without crashing
Run Code Online (Sandbox Code Playgroud)
我本周早些时候发现了这颗宝石,但现在我是否应该解决这个问题.这是我们所有应用程序使用的核心库.其中一些应用程序已经发送给数百万客户,它似乎工作正常; 该代码没有崩溃或其他错误.删除if !this
查找函数将意味着修复数千个可能传递NULL的调用站点; 不可避免地会有一些人被遗漏,引入新的错误,这些错误将在未来一年的发展中随机出现.
所以除非绝对必要,否则我倾向于不管它. …
我正在做一个搜索图像数据库的项目,当我找到一些查询的结果--5个数据库图像时,我想直观地显示结果.我没有将所有图像保存在内存中,所以我先加载图像以显示它.
在伪代码中,我有一些简单的想法:
for image 1..5
load images
display image in a window
wait for any keypress
close the window
Run Code Online (Sandbox Code Playgroud)
这里是我的代码片段C++
使用OpenCV
用于此目的:
IplImage *img;
for (int i=0; i < 5; ++i){
img = cvLoadImage(images[i].name.c_str(),1);
cvShowImage(("Match" + images[i].name).c_str(), img);
cvWaitKey(0);
cvDestroyWindow(("Match" + images[i].name).c_str());
// sleep(1);
cvReleaseImage(&img);
}
Run Code Online (Sandbox Code Playgroud)
images
这里使用的数组并不存在于我的代码中,但是为了问题,它包含相对于当前程序运行点(如果是其name
成员)的图像的文件名.我在项目中存储的图像名称略有不同.
上面的代码几乎可以工作:我可以迭代4/5图像OK,但是当显示最后一个图像并按下一个键时,图像变为灰色,我无法关闭图像窗口而不会崩溃我的应用程序的其余部分.
我的第一个想法是因为编译时优化,cvReleaseImage
在cvDestroyWindow
完成之前释放图像,并以某种方式使其冻结.但是,我已经尝试添加一些等待时间(因此sleep(1)
我的代码注释掉了)并没有帮助.
我从我的控制台应用程序调用此显示功能,当图像冻结时,控件返回到我的应用程序,我可以继续使用它(但图像窗口仍然在后台冻结).
你能给我一些关于如何解决这个问题的建议吗?
编辑
自从提出问题以来,我已经定期与一些处理计算机视觉和OpenCV的人交谈,但仍然没有想法.
我也发现了类似的stackoverflow问题,但仍然没有接受的答案.谷歌只是提出类似的问题,但没有答案.
任何关于尝试什么的想法(即使它们不是完整的解决方案)都非常感谢.
我有一个Django User
模型的元类,我用它来添加额外的方法(过度简化的版本):
# project.models.pie_lover.py
from django.contrib.auth.models import User
class PieLover(User):
class Meta:
app_label = "core"
proxy = True
def likes_pie(self):
return True
Run Code Online (Sandbox Code Playgroud)
在我看来,我希望登录PieLover
,看看他是否喜欢馅饼(愚蠢的事情要做,因为PieLover
总是喜欢馅饼,但在现实世界的情况下,情况可能不是这样).我的问题在于Django登录用户的方式,我使用内置login(request)
函数,因此存储的对象request.user
是一个User
对象,而不是PieLover
.
# project.views.like_pie.py
from ..models.pie_lover import PieLover
def index(request):
pie_lover = request.user
if pie_lover.likes_pie():
print "Try pie, try!"
else:
print "BLASPHEMER!"
Run Code Online (Sandbox Code Playgroud)
如果我尝试这样做,Django告诉我该User
对象没有likes_pie
预期的方法,因为request.user
它不是一个PieLover
实例.
作为一个快速的解决方法,我只是得到PieLover
与其相同的ID,User
但这意味着额外的数据库命中.
如何PieLover
在请求中默认使用Django ?我在想,而不是进行另一个数据库查询来获取正确的PieLover
对象来创建一个新PieLover
对象并request.user
在初始化时传递给它,但我不知道这是什么意思.
我理解PHP将用户的会话ID存储在名为"PHPSESSID"的cookie中,该cookie存储在客户端的浏览器中,并与服务器上的会话进行匹配,以便能够关联2.关闭浏览器后,会话信息消失但是客户端上的cookie仍然存在.是否可以使用此cookie来恢复旧会话?或者,客户端关闭浏览器时,是否会从服务器中删除所有会话数据?
我首先在我的页面上有这个:
session_start();
$_SESSION['message'] = 'Hello';
echo $_SESSION['message']; // outputs hello
Run Code Online (Sandbox Code Playgroud)
然后我将页面更改为:
$old_session = session_id();
session_id($old_session);
session_start();
echo $_SESSION['message'];
Run Code Online (Sandbox Code Playgroud)
然后我关闭浏览器并重新打开它到这个页面并得到这些错误:
Warning: session_start() [function.session-start]: The session id is too long or contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in C:\xampp\htdocs\localhost\test.php on line 5
Notice: Undefined index: message in C:\xampp\htdocs\localhost\test.php on line 7
Run Code Online (Sandbox Code Playgroud)
关闭浏览器后,如何检索旧的会话信息,甚至可能吗?
在jQuery中,我正在向服务器提交表单.当出现验证错误时,我从服务器收到400错误,并且文档正文是有效的JSON.我想知道如何访问从服务器返回的数据.
我永远不会调用jQuery.Ajax对象上的.error回调函数,所以我使用的是.statusCode {400}函数.这运行得很好,但是没有一个参数包含响应主体.
我正在尝试编写一个脚本来自动下载和构建我正在通过命令行工作的项目的外部依赖项.
我需要的其中一个项目只提供VS6,VS2005和VS2008解决方案,但我需要使用VS2010构建项目.
如果我要在VS2010中打开任何这些项目,他们将升级,我可以构建它,但是因为我希望这是完全自动的,我想知道是否有一种方法可以通过MSBuild完成相同的升级.
我尝试使用VS2010命令行来构建VS2008 sln文件,但它仍然使用VS2008编译器构建它,而不是使用VS2010编译器.
有谁知道使用MSBuild是否可以这样做?
谢谢.
ARC迁移工具遇到了这个问题:
NSURL *fileURL = [NSURL fileURLWithPath:path];
AudioFileOpenURL((CFURLRef)fileURL, kAudioFileReadPermission, 0, &fileID);
Run Code Online (Sandbox Code Playgroud)
特别是,它不确定它是否应该执行__bridge或__bridge_retained.而我也是.
-fileURLWithPath返回一个自动释放的对象,在这个地方我不是fileURL的所有者.但与此同时,该对象的保留计数至少为+1.
我敢打赌,这只能用__bridge来完成.
c++ ×2
activeadmin ×1
browser ×1
c ×1
command-line ×1
django ×1
foreign-keys ×1
formtastic ×1
gcc ×1
ios ×1
javascript ×1
jquery ×1
msbuild ×1
opencv ×1
php ×1
primary-key ×1
rest ×1
routing ×1
session ×1
sql-server ×1
symfony ×1
visual-c++ ×1