我有一个简单的表单,将文本提交到我的SQL表.问题是,在用户提交文本后,他们可以刷新页面并再次提交数据,而无需再次填写表单.我可以在提交文本后将用户重定向到另一个页面,但我希望用户保持在同一页面上.
我记得读过一些关于为每个用户提供一个唯一的会话ID并将其与另一个值进行比较的方法,这个值解决了我遇到的问题,但我忘记了它的位置.
我知道这用于搜索:Ctrl+Shift+F或编辑| 找到| 在路径中查找它之前有效,但现在总是返回空集,虽然我知道我正在寻找的东西 - 项目中有
也许有人有这个问题?
$ pwd
/data/mdi2/classes
$ git blame -L22,+1 -- utils.js
99b7a802 mdi2/utils.js (user 2015-03-26 21:54:57 +0200 22) #comment
$ git blame -L22,+1 99b7a802^ -- utils.js
fatal: no such path mdi2/classes/utils.js in 99b7a802^
Run Code Online (Sandbox Code Playgroud)
您已经注意到,该文件位于该提交的不同目录中
$ git blame -L22,+1 99b7a802^ -- ../utils.js
c5105267 (user 2007-04-10 08:00:20 +0000 22) #comment 2
Run Code Online (Sandbox Code Playgroud)
尽管如此
The origin of lines is automatically followed across whole-file renames (currently there is no option to turn
the rename-following off)
Run Code Online (Sandbox Code Playgroud)
责备不遵循重命名.为什么?
更新:简答
git blame 按照重命名但不是 git blame COMMIT^ -- <filename>
但是,通过批量重命名和大量历史记录手动跟踪文件重命名太难了.我认为,必须修复此行为以静默跟随重命名 …
我有两个数组.我需要检查并查看其中一个元素是否出现在另一个元素中.
有没有比嵌套循环更有效的方法呢?我每个都有几千个元素,需要经常运行程序.
我感兴趣的是保持数据库中某些表发生的每个更改的运行历史记录,从而能够重建数据库的历史状态以进行分析.
我正在使用Postgres,这个MVCC似乎我应该能够为此目的利用它,但我找不到任何文档来支持这个.我可以做吗?有没有更好的办法?
任何输入都表示赞赏!
UPD
我已经将丹尼斯的回答标记为答案,因为他确实回答了MVCC是否是我想要的问题.但是,我已经确定的策略详述如下,以防有人发现它有用:
Postgres功能可以满足我的需求:在线备份/时间点恢复.
http://www.postgresql.org/docs/8.1/static/backup-online.html解释了如何使用此功能,但基本上您可以将此"预先写入日志"设置为存档模式,拍摄数据库的快照(比如说) ,在它上线之前),然后不断归档WAL.然后,您可以随时使用日志重播来调用数据库的状态,如果您选择(通过不断重播备用服务器上的新WAL),可以获得热备用的附带好处.
也许这种方法不像其他保存历史记录那样优雅,因为你需要为你想要查询的每个时间点实际构建数据库,但是它看起来非常容易设置并且丢失零信息.这意味着当我有时间改进对历史数据的处理时,我将拥有一切,因此能够将我笨重的系统转换为更优雅的系统.
使其如此完美的一个关键事实是,我的"有效时间"与特定应用程序的"交易时间"相同 - 如果不是这种情况,我只会捕获"交易时间".
在我发现WAL之前,我正在考虑每天拍摄快照或其他东西,但是大尺寸要求和数据丢失并不适合我.
为了快速启动和运行,从一开始就不影响我的数据保留,这似乎是一个完美的解决方案.
我正在尝试安装perl -DDEBUG_LEAKING_SCALARS
perlbrew install perl-5.24.1 -DDEBUGGING -DDEBUG_LEAKING_SCALARS --as perl-debug-5.24.1
Run Code Online (Sandbox Code Playgroud)
但没有成功:
$ perl -V | perl -MData::Dumper -e 'local $/; $_ = <>; $h{$1} = $2 while /(-(?:DDEBUGGING|DDEBUG_LEAKING_SCALARS))(?:=(.*?))?(?=\s|$)/g; print Dumper \%h'
$VAR1 = {
'-DDEBUGGING' => undef,
'-DDEBUG_LEAKING_SCALARS' => undef
};
kes@work ~/work/projects/github-forks/perl5 $ perl -V
Summary of my perl5 (revision 5 version 24 subversion 1) configuration:
Platform:
osname=linux, osvers=4.4.0-57-generic, archname=x86_64-linux
uname='linux work 4.4.0-57-generic #78-ubuntu smp fri dec 9 23:50:32 utc 2016 x86_64 x86_64 x86_64 gnulinux '
config_args='-de -Dprefix=/home/kes/perl5/perlbrew/perls/perl-debug-5.24.1 -DDEBUGGING -DDEBUG_LEAKING_SCALARS …Run Code Online (Sandbox Code Playgroud) 在perl的特殊标记一样__PACKAGE__,__SUB__,__FILE__,__LINE__存在并可以从脚本.
我可能会得到的值__PACKAGE__从XS作为HvNAME( PL_currstash ),我想.
但如何访问他人?
是否有特殊的界面来访问所有这些XS?我爱:CTX->package,CTX->sub等等.
来自美国商务部
inet 和 cidr 数据类型之间的本质区别在于 inet 接受网络掩码右侧带有非零位的值,而 cidr 则不接受。
请举例说明 PostgreSQL 中 cidr 和 inet 数据类型的差异。
我不完全理解这一点,想从视觉上看到差异。
为了获得当前的上下文,我找到了caller_cx函数perlapi.但是没有结构描述.在perl源代码中perl.h我只能找到这个typedef:
typedef struct context PERL_CONTEXT;
Run Code Online (Sandbox Code Playgroud)
是否有示例如何使用此结构返回caller_cx来从XS查找当前包?
我运行一个简单的程序:
my $_ = '/login/.htaccess/.htdf';
s!(/\.ht.*?)$!/!;
print "$_ $1";
Run Code Online (Sandbox Code Playgroud)
OUT
/login/ /.htaccess/.htdf
我希望这个正则表达式只匹配/.htdf.
例2:
my $_ = 'abcbc';
m/(b.*?)$/;
print "$_ $1\n";
Run Code Online (Sandbox Code Playgroud)
OUT
abcbc bcbc
我期待bc.
为什么*?还贪心?(我想要最小的比赛.)