我有一个搜索页面,其中包含各种参数.我想通过改变查询中的一个参数来创建一个新的URL.有没有一种简单的方法可以做到这一点 - 例如:
# example request url
http://example.com/search?q=foo&option=bar&option2=baz&change=before
# ideal template code
{% url_with change 'after' %}
# resulting url
http://example.com/search?q=foo&option=bar&option2=baz&change=after
Run Code Online (Sandbox Code Playgroud)
因此,这将获取请求URL,更改一个查询参数,然后返回新的URL.类似于在Perl的Catalyst中可以实现的$c->uri_with({change => 'after'})
.
或者,还有更好的方法?
[更新:删除了对分页的引用]
是否有一种标准方法来比较Python中的两个URL - are_url_the_same
在此示例中实现:
url_1 = 'http://www.foo.com/bar?a=b&c=d'
url_2 = 'http://www.foo.com:80/bar?c=d;a=b'
if are_urls_the_same(url_1, url2):
print "URLs are the same"
Run Code Online (Sandbox Code Playgroud)
同样我的意思是他们访问相同的资源 - 所以示例中的两个网址是相同的.
我有一种情况,我想创建一个数据结构的签名:
my $signature = ds_to_sig(
{ foo => 'bar',
baz => 'bundy',
boing => undef,
number => 1_234_567,
}
);
Run Code Online (Sandbox Code Playgroud)
目标应该是,如果数据结构发生变化,则签名也应如此.
有没有确定的方法来做到这一点?
我有一个webapp,当数据库重新启动并尝试使用旧连接时会发生段错误.在它下运行gdb --args apache -X
导致以下输出:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1212868928 (LWP 16098)]
0xb7471c20 in mysql_send_query () from /usr/lib/libmysqlclient.so.15
Run Code Online (Sandbox Code Playgroud)
我已经检查过驱动程序和数据库都是最新的(DBD :: mysql 4.0008,MySQL 5.0.32-Debian_7etch6-log).
令人讨厌的是,我不能用一个简单的脚本重现这个:
use DBI;
use Test::More tests => 2;
my $dbh = DBI->connect( "dbi:mysql:test", 'root' );
sub test_db {
my ($number) = $dbh->selectrow_array("select 1 ");
return $number;
}
is test_db, 1, "connected to db";
warn "restart db now";
getc;
is test_db, 1, "connected to db";
Run Code Online (Sandbox Code Playgroud)
这给出了以下内容:
ok 1 - connected to …
Run Code Online (Sandbox Code Playgroud) 我想阻止变量被更改.特别是Object的属性:
var foo = { bar: 'baz' };
// do something to foo to make it readonly
foo.bar = 'boing'; // should throw exception
Run Code Online (Sandbox Code Playgroud)
可以这样做吗?