这实际上取决于“数据”的含义。如果只是为了简单的请求,请尝试使用 AJAX。
在两台机器上尝试 var_dump ,它可能会说一些有趣的事情,“group”值似乎是一个对象,是什么类型的?它有一个 __sleep() 魔术方法吗?
确保您的测试机器和生产服务器具有相同的 php 版本,以便更好地理解问题。
@see http://www.php.net/manual/en/language .oop5.序列化.php
如果您想直接更新 Surfaces 像素,可以使用“Device.UpdateTexture”。这会将 Pool.SystemMemory 中创建的纹理更新为 Pool.Default 中创建的纹理。
但这听起来不像您想做的事情。使用效果来硬件加速。如果您想知道我如何向您展示。
至少部分问题(在更新的代码中)是在创建单元格之前不创建 UISwitch。当该表行进入和退出视图时,您的 codeSwitch
ivar 最终可能会指向不同的开关。
我的做法如下:在 tableView:numberOfRowsInSection:
中,使用 NSUserDefaults 来查看表应处于哪个状态,而不是使用开关的状态(可能尚不存在)。然后,在开关的操作方法中,在插入或删除表行之前调用 setBool:forKey:
以获取用户默认值。
从本质上讲,这使得代码更好地遵循 MVC 模型,因为它将视图(UISwitch)与模型(用户默认值中的 BOOL)分开,并且 em>控制器(视图控制器)在中间。通过混淆视图和模型(开关和布尔状态),当视图尚不可用时尝试处理状态时,您最终会遇到问题。
顺便说一句,您根本不需要在表格视图上调用 setNeedsDisplay
。
:hover
已经在 IE7+ 中工作,IE6 只允许它与 元素一起使用...所以我想说你已经可以在没有库的情况下单独使用 CSS,只要 IE6 不是问题。
#menusearchbutton { background-position: 0px 0px; }
#menusearchbutton:hover { background-position: 0px -24px; }
HTML 应该是语义化的,并且应该首先考虑它 - 即它应该具有清晰的结构和含义,而无需了解 javascript 位于之上。就像
元素一样,
应仅包含
<form id="bigform" action="bigform.php">
<!-- Tabs here -->
</form>
<form id="newperson" action="newform.php">
<input name="extra">
<button type="submit" value="Add">
<!-- Note also the use of <button> instead of <input> -->
</form>
重要的是您仍然可以在主窗体中实现所需的流程。在主窗体上,不要使用嵌套窗体,而是使用
<form id="bigform" action="bigform.php">
<!-- Tabs here -->
<fieldset id="newpersonProxy">
<input id="extra">
<button type="button" value="Add">
</fieldset>
</form>
现在通过 Javascript 不显眼地添加所需的行为,方法是:
- 隐藏第二个表单,
#newperson
。 - 通过绑定到 #newpersonProxy 内任何输入的 keyup 事件以及按钮的 click 事件来响应“提交”。对于 keyup 事件,请使用
event.which
而不是event.keyCode
,因为 jQuery 对此进行了规范化。您需要event.which == 13
作为回车键。 - 然后,在调用
$("#newperson").submit()
之前,将代理输入中的值复制到真实表单。
这有效地将序列化和发送数据的责任委托给第二种形式,允许将任何类型的逻辑附加到第二种形式,并与第一种形式解耦。
此外,由于首先考虑的是功能性 HTML,一个简单的调整就可以让表单在没有 Javascript 的情况下完美工作 - 只需使用 CSS 隐藏
确保您正在编辑您认为正在编辑的配置文件。看一下下面的代码
#File: app/code/core/Mage/Core/Model/Config.php
public function loadBase()
{
$etcDir = $this->getOptions()->getEtcDir();
$files = glob($etcDir.DS.'*.xml');
$this->loadFile(current($files));
while ($file = next($files)) {
$merge = clone $this->_prototype;
$merge->loadFile($file);
$this->extend($merge);
}
if (in_array($etcDir.DS.'local.xml', $files)) {
$this->_isLocalConfigLoaded = true;
}
return $this;
}
这是将 local.xml 文件合并到配置树的代码。添加一些调试代码
public function loadBase()
{
var_dump('Called ' . __METHOD__); //ensure we're being called
$etcDir = $this->getOptions()->getEtcDir();
$files = glob($etcDir.DS.'*.xml');
$this->loadFile(current($files));
while ($file = next($files)) {
var_dump($file); //dump the file path being loaded to the browser
$merge = clone $this->_prototype;
$merge->loadFile($file);
$this->extend($merge);
}
if (in_array($etcDir.DS.'local.xml', $files)) {
$this->_isLocalConfigLoaded = true;
}
exit; //bail out early
return $this;
}
在浏览器中加载您的站点,并观察通过 var_dump 输出的路径。确保正在加载的文件是您认为正在加载的文件。请记住,它看起来像是 etc 文件夹中的每个 XML 文件都已加载并合并。
如果路径符合您的预期,接下来添加一些调试代码以输出 XML 文件的内容) 正在加载。
public function loadBase()
{
var_dump('Called ' . __METHOD__ . ''); //ensure we're being called
$etcDir = $this->getOptions()->getEtcDir();
$files = glob($etcDir.DS.'*.xml');
$this->loadFile(current($files));
while ($file = next($files)) {
header('Content-Type: text/plain'); //so the browser renders it as plain text
echo file_get_contents($file); //dump the contents of the file being loaded to the browser
$merge = clone $this->_prototype;
$merge->loadFile($file);
$this->extend($merge);
}
if (in_array($etcDir.DS.'local.xml', $files)) {
$this->_isLocalConfigLoaded = true;
}
exit; //bail out early
return $this;
}
如果这些文件中的数据库信息是正确的,那么您的系统已经被定制和/或以某种方式被黑客攻击,有代码调用另一个数据库服务器。
如果是这种情况,您需要安装 xDebug 之类的东西才能获得一些不错的错误报告。这将使您找到引发错误的确切代码,此时您可以追溯到它获取连接信息的位置。
祝你好运。
除非我弄错了,否则你只会遇到第三个查询的问题;前两个查询运行良好。对于第三个查询(总结最后两条记录的成本),您可以按降序对结果集进行排序,并将其限制为两条记录。
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 一样简单。希望这会有所帮助。
第一个答案中的链接已损坏。这是此页面的网络存档的链接。
jQuery tablesorter 二次排序问题
我稍微修改了此代码以在 v.2.22.3 中工作(也许会在其他版本中工作)
从 tablesorter 的代码中剪切这些行:
并将其粘贴到
c.sortList 之后。 Push([ indx, order ]);
- 先前代码所在位置下方的一些行。Tablesorter v.2.0 对变量有其他名称(例如 c => config、indx => i 等),但您可以找到搜索
sortForce
的正确位置 - 它在Tablesorter的代码The link in first answer is broken. Here's a link to webarchive of this page.
jQuery tablesorter secondary sorting problem
I had slightly modified this code to work in v.2.22.3 (maybe will work in other versions)
Cut these lines from the tablesorter's code:
And paste it after
c.sortList.push([ indx, order ]);
- some lines below the place with previous code.Tablesorter v.2.0 had another names for variables (for c => config, indx => i, etc.) but you can find the right place searching for
sortForce
- it has several appearances in the code of TablesorterjQuery/Tablesorter:维护二级字母顺序排序