除非我弄错了,否则你只会遇到第三个查询的问题;前两个查询运行良好。对于第三个查询(总结最后两条记录的成本),您可以按降序对结果集进行排序,并将其限制为两条记录。
get_ip() 是如何工作的?
如果 nginx 是反向代理,gunicorn 是应用程序服务器,则它始终从本地计算机上的 nginx 获取请求。
在我的例子中,nginx 发送到应用程序服务器的真实 IP 是通过 nginx conf 行 HTTP_X_REAL_IP
proxy_set_header X-Real-IP $remote_addr;
所以你可能想要设置它,并在您的 django 应用帐户中使用新的 IP 标头或设置 request.META['REMOTE_ADDR']
= request.META['HTTP_X_REAL_IP']
如果您确实不喜欢 Boost asio,那么您可能会喜欢 dlib 中的套接字支持。它更简单,因为它使用传统的阻塞 IO 和线程,而不是 asio 的异步前摄器模式。例如,它可以轻松创建一个从 iostream 读取和写入的线程 TCP 服务器。例如,请参阅此示例。或者,如果不充当服务器,您可以制作一个简单的 iosockstream 。
XAML 页面无法显示在浏览器窗口中。 Silverlight 实际上所做的就是在 << 中显示 Silverlight 程序。对象> aspx(或html)页面中的标记;而已。
在您的 silverlight 项目中,如果您选择在新网站中托管您的项目,您将看到第二个项目,其中包含 htm 和 aspx 文件,该文件托管链接到您的 xap 文件的对象。
因此基本上,您需要创建第二个 Silverlight 项目,该项目将托管在不同的 aspx 页面中。然后,在您的主 silverlight 项目中,您可以在新的 Web 浏览器窗口中打开该新的 aspx 页面。
在深入研究代码并进行操作之后,我找到了一种方法来做到这一点,无论您在哪里获得框架,该方法都可能记录在案。
查看 iCodeOauthViewController.m,在 viewDidAppear:
内部,您可以在引擎上调用 isAuthorized
,它会告诉您是否已通过身份验证。如果返回 yes,您可以调用引擎对象上的 clearAccessToken
方法来清除该身份验证。当接下来调用 controllerToEnterCredentialsWithTwitterEngine: delegate:
时,它将返回视图控制器以重新输入用户名和密码。
编辑:
在 iCodeOauthViewController.m 内的 fo viewDidAppear: (line 46) 中,您将看到这一行:
UIViewController *controller = [SA_OAuthTwitterController controllerToEnterCredentialsWithTwitterEngine: _engine delegate: self];
如果用户尚未登录,此调用将返回您看到的登录屏幕。如果用户已登录,则返回 nil。如果控制器为零,则直接跳转到列表。
要“注销”用户,您可以使用此方法:
- (void)switchUser
{
// log off the existing user if one is validated
if ([_engine isAuthorized])
[_engine clearAccessToken];
// display the login prompt
UIViewController *controller = [SA_OAuthTwitterController controllerToEnterCredentialsWithTwitterEngine: _engine delegate: self];
if (controller)
[self presentModalViewController: controller animated: YES];
}
编辑2:
看来您的问题出在您的 tweet 方法内部。您已在推文尝试发送后添加了警报代码,如果用户未登录,这会导致崩溃。这是您的代码:
-(IBAction)tweet:(id)sender {
[textfield resignFirstResponder];
[_engine sendUpdate:[textfield text]];
[self updateStream:nil];
if([_engine isAuthorized]==NO){UIAlertView *alert = [[UIAlertView alloc]
initWithTitle: @"Please, Sign in"
message: @"You'll have to sign in for this app to work!"
delegate: nil
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alert show];
[alert release];
}
}
将其更改为如下所示:
-(IBAction)tweet:(id)sender {
if([_engine isAuthorized]==NO){
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle: @"Please, Sign in"
message: @"You'll have to sign in for this app to work!"
delegate: nil
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alert show];
[alert release];
}
else {
[textfield resignFirstResponder];
[_engine sendUpdate:[textfield text]];
[self updateStream:nil];
}
}
请注意,我们现在检查是否我们在尝试发送推文之前经过身份验证,如果我们未获得授权,则会弹出警报。抱歉,我可能在发布警报的事情上误导了您,我误解了您的意思。
我建议尝试更多地了解 Objective-C 的工作原理并获取 熟悉调试器。如果您运行调试器并且您的应用程序崩溃,调试器将在崩溃的代码中停止,您可以查看堆栈中的函数调用以确定代码做错了什么。请参阅此堆栈溢出问题(具体是答案),了解有关如何更好地开始使用 Objective-C。我会推荐一些在线网站,例如 CocoaDevCentral 教程。 记住这一点。您已经有了一个良好的开端,尝试根据示例制作自己的东西。如果一个想法不能立即在你的主项目中实现,不要害怕做一个副项目来尝试它,即使它像找出另一种方法来完成 2 + 2 一样简单。希望这会有所帮助。
将其添加到您的代码中(可能在 onCreate 中)
//textView.setMovementMethod(ScrollingMovementMethod.getInstance());
tv_service_ticketinfo_details.setMovementMethod(ScrollingMovementMethod.getInstance());
并进行测试。
您的许多具体问题都取决于实施。
SQL 查询是声明性的。他们没有指定获得答案的方式,只是表明您正在寻找什么。 DMBS(数据库管理系统)决定如何将这些付诸实践。大多数 SELECT 查询都包含某种类型的表扫描迭代(除非通过相关字段上的索引克服了这一点),但您在查询中间看不到显式循环。
我可以明确建议您的是,如果您对总和的实际值不感兴趣,则不要使用总和等聚合函数。如果您想要获取在任何行的这三个字段中的任何一个中具有正值的 UserId,请使用 DISTINCT。这至少让 DMBS 有机会做正确的事情并优化该查询。
索引可能对这个查询有帮助,但作用不大。索引真正有用的地方是在不同的表之间进行等式连接(当您将具有 m 行的表与具有 n 行的表进行等连接时,这可能需要 m*n 时间)。在这里,您要做的就是过滤,只要这 3 个字段之一为正。在最坏的情况下,您将每行查看一次。 UserId 上的索引与 DISTNCT 结合使用可以帮助排除您已决定包含的用户的检查行。
您可以将该方法作为构造函数的最后一行调用。
或者,如果您没有该课程,您可以选择面向方面编程(http://en.wikipedia。 org/wiki/Aspect_oriented_programming )
关于底部的黑线是因为你没有处理长宽比。
double aspectRatio = imageWidth/imageHeight;
double boxRatio = maxWidth/maxHeight;
double scaleFactor = 0;
if (boxRatio > aspectRatio)
//Use height, since that is the most restrictive dimension of box.
scaleFactor = maxHeight / imageHeight;
else
scaleFactor = maxWidth / imageWidth;
double newWidth = imageWidth * scaleFactor;
double newHeight = imageHeight * scaleFactor;
来源:http://nathanaeljones.com/163/20-image-resizing-pitfalls/
OpenGL ES 1.1 没有专用的拾取功能。你必须构建自己的系统才能做到这一点。
根据原始问题中更新的代码进行更新:
请记住,CodeIgniter 的 Hooks 类是在 Loader 类之前初始化的,因此您的 pre_controller 钩子正在实例化SiteObj
并尝试在通过 Loader 类加载 Site_model
之前调用 Site_model->create_site()
。
它会抛出错误,因为您无法在尚不存在的对象上调用方法。在本例中,Site_model
是尚不存在的对象。
请记住,您可以检查日志文件(位于 /system/logs/ 中)以查看资源的执行顺序。查看 CodeIgniter 应用程序流程图也可能会有所帮助。
希望有帮助!
结束更新
num_rows()
方法只能用于整个 $query
结果对象,就像您在您的 Site_model
:
$query = $this->db->query("SELECT * FROM sites WHERE siteid = '1' LIMIT 1");
if ($query->num_rows() > 0) {
// do stuff
}
但是,目前 Site_model
中的 create_site()
方法返回单行(return $row;
) 从结果对象中调用,然后您尝试在 SiteObj
控制器中的该单行上调用 num_rows()
。
实际上没有必要这样做,因为 $query->row();
将始终返回单个结果行。
如果您确实想从控制器内部调用 num_rows()
(同样,这确实没有意义,因为 $query->row()
总是只返回一行),您必须像这样返回整个 $query
结果对象:
$query = $this->db->query("SELECT * FROM sites WHERE siteid = '1' LIMIT 1");
if ($query->num_rows() > 0) {
return $query;
}
然后在您的 SiteObj
控制器中:
$this->load->model('Site_model');
$data = $this->Site_model->create_site();
if ($data->num_rows() == 1) {
//etc. etc.
}
希望有帮助 - 如果没有请告诉我。看起来你的代码并不太遥远!作为参考,请查看 num_rows() 方法 和 row() 方法。
确保您正在编辑您认为正在编辑的配置文件。看一下下面的代码
这是将 local.xml 文件合并到配置树的代码。添加一些调试代码
在浏览器中加载您的站点,并观察通过 var_dump 输出的路径。确保正在加载的文件是您认为正在加载的文件。请记住,它看起来像是 etc 文件夹中的每个 XML 文件都已加载并合并。
如果路径符合您的预期,接下来添加一些调试代码以输出 XML 文件的内容) 正在加载。
如果这些文件中的数据库信息是正确的,那么您的系统已经被定制和/或以某种方式被黑客攻击,有代码调用另一个数据库服务器。
如果是这种情况,您需要安装 xDebug 之类的东西才能获得一些不错的错误报告。这将使您找到引发错误的确切代码,此时您可以追溯到它获取连接信息的位置。
祝你好运。
Make sure you're editing the config file you think you're editing. Take a look at the following code
This is the code that merges in your local.xml file to the configuration tree. Add some debugging code
Load your site in a browser, and observe the paths being output via var_dump. Make sure that the file(s) being loaded are the ones you think are being loaded. Keep in mind that it looks like every XML file from the etc folder is loaded and merged in.
If the paths are what you expect, next add some debugging code to output the contents of the XML file(s) being loaded.
If the database information is correct in these files, then your system has been customized and/or hacked in some way that there's code calling out to another database server.
If that's the case you'll need to install something like xDebug to get some decent error reporting. This will let you find the exact code that's throwing the error, at which point you can trace it back to where it's getting it's connection information.
Good luck.
Magento 实例指向错误的数据库