小编Rob*_*tin的帖子

如何使用Symfony2中的查询字符串路由URL?

我正在使用Symfony2重写一个旧项目,所以我可以试用这个框架.我有以下形式的网址:

/profile/{id}
Run Code Online (Sandbox Code Playgroud)

以Symfony2做的时髦方式.但是,最初通过执行以下操作找到了同一页面:

/profile.php?id=12345
Run Code Online (Sandbox Code Playgroud)

因此,如果某人有旧网址,我想重定向这些链接.问题是,我不知道如何捕捉这种性质的路线.我试过了

/profile.php?id={id}
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.我该如何设置这条路线?

后续行动:我不想做"全能"(因为它对我来说不直观,所以我担心未来的错误),我宁愿不通过htaccess这样做也是出于同样的原因.我认为最好的选择是匹配"/profile.php"然后在控制器中,检查查询字符串中是否存在"id"并相应地重定向.如果没有,我将重定向到404.

php symfony

5
推荐指数
1
解决办法
2925
查看次数

为什么RDTSC是现代处理器的虚拟化指令?

我正在研究RDTSC,并了解它是如何虚拟化虚拟机,如VirtualBox和VMWare.为什么Intel/AMD会遇到虚拟化此指令的麻烦?

我觉得它可以很容易地用陷阱来模拟它并不是一个超常用的指令(我测试过并且在禁用硬件RDTSC虚拟化的虚拟机中一般用法没有明显的减速).

但是,我知道英特尔/ AMD不会把这个指令添加到虚拟化硬件中,除非能够非常快速地执行它是很重要的.

有谁知道为什么?

hardware virtualization rdtsc

5
推荐指数
1
解决办法
3731
查看次数

使用 snprintf 的缓冲区溢出

这是一项作业,但我在基本理解方面遇到了问题。

易受攻击的代码:

int choc(char *arg)
{
  char buf[400];
  snprintf(buf, sizeof buf, arg);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我知道 arg 需要是一个格式字符串,它将用我要执行的代码的地址覆盖返回地址。但是我在创建格式字符串时遇到了问题。

因此,格式字符串需要具备的内容:

  1. 返回指令的地址,我需要覆盖它
  2. %x 的列表
  3. 我会写在返回地址上的值。这将是我要执行的代码的地址。

为了获得返回地址,我只需要查看gdb中'ret'指令的地址,对吗?%x 的目的究竟是什么?以及如何在格式字符串中对要执行的代码的地址进行编码?

我做的一个测试:使用gdb我发现我的buf的地址是0xbffffba0。我生成的 arg 为 "\xa0\xfb\xff\xbf_%x.%x.%n"; 这不应该在地址 0xbffffba0 处向 buff 的开头写入一些值吗?但是我得到了一个段错误。我究竟做错了什么?

任何帮助,将不胜感激!

c buffer

5
推荐指数
1
解决办法
1万
查看次数

在Bash中,我怎么知道我目前是否在终端

我想创建自己的个人日志文件,不仅可以在我登录和退出时记录,还可以在我锁定/解锁屏幕时记录.有点类似/ var/log/wtmp类固醇.

为此,我决定在登录到后台运行的Ubuntu时运行脚本,直到我退出.我这样做的计划是将脚本添加到脚本中.bashrc,./startlogging.sh &并使用脚本trap来捕获信号.这很好,除了.bashrc每次打开一个新终端时运行,这不是我想要的记录器.

有没有办法告诉Bash当前登录是gnome登录?或者,有什么.gnomerc我可以用来运行我的脚本?

编辑:这是我的脚本:

编辑2:删除了脚本,因为它与问题无关.我将重新提出我的另一个问题,而不是重新利用这个问题.

bash gnome

5
推荐指数
1
解决办法
276
查看次数

如何在 gnome 中记录我的登录/注销和屏幕锁定/解锁

我想创建一个日志文件,其中包含某些事件的日志,例如:

  • 登录侏儒
  • 日志屏幕
  • 解锁屏幕
  • 登出

我的计划是编写一个脚本,作为 gnome 会话的子进程在后台运行。它将首先附加“LOGIN”,监视屏幕锁定/解锁,并在收到 SIGHUP 时附加“LOGOUT”(意味着会话结束)。

我写了一个脚本 [1],如果我在 shell 中启动它就可以工作,但它很笨重。我希望这个程序在后台运行——我不想每次登录时都要记住启动它。

有人可以指出我正确的方向吗?

[1] 脚本:

#!/bin/bash
# param $1: type, in:
#     ["SCREEN_LOCKED",
#     "SCREEN_UNLOCKED",
#     "LOGIN",
#     "LOGOUT",
#     "SIGINT",
#     "SIGTERM"]
function write_log {
  if [ -z $1 ]; then
    1="unspecified"
  fi
  echo -e "$1\t$(date)" >> "$LOG"
}

function notify {
  echo "$@" >&2
}

function show_usage {
  notify "Usage: $0 login <address> <logfile>"
  notify "Parameters:"
  notify "  login: You must use the string 'login' to …
Run Code Online (Sandbox Code Playgroud)

bash gnome login

5
推荐指数
1
解决办法
2126
查看次数

在 Gnome 中,dbus-monitor 上的什么信号表明用户正在注销?

我想编写一个在后台运行并检测用户何时注销的脚本。我在 dbus-monitor 上找不到文档。我能做的最好的事情就是我看到一连串的EndSessionQuery, EndSession,EndSessionResponse但是这些都带有布尔值,因此不能完全信任它们(也许程序说它不希望用户注销?) ,如果没有程序打开怎么办?这太不靠谱了。

我想要的是监听用户注销时总会发生的信号。有人可以提供那个信号吗?目前我正在运行这个命令:

dbus-monitor --session \
    "type='signal',interface='org.gnome.ScreenSaver',member='ActiveChanged'" | \
        myprog
Run Code Online (Sandbox Code Playgroud)

它捕获 ScreenSaver 事件。但我也想赶上注销。我希望的是这样的:

dbus-monitor --session \
    "type='signal',interface='org.gnome.Session',member='LogoutSuccess'" \
    "type='signal',interface='org.gnome.ScreenSaver',member='ActiveChanged'" | \
        myprog
Run Code Online (Sandbox Code Playgroud)

gnome dbus

5
推荐指数
1
解决办法
2281
查看次数

在使用Forms的内置用户登录的ASP.NET MVC 3中,如何检索当前登录用户的列表?

我正在使用MVC 3在C#中创建一个应用程序,我正在尝试了解免费(在Membership课堂上)内置的用户内容.

我想在我的网站上创建一个页面,其中列出了当前登录的每个用户.有没有办法轻松完成此操作?

c# asp.net-mvc-3

4
推荐指数
1
解决办法
580
查看次数

为什么for_each_process不显示每个任务?

我正在尝试遍历/proc我正在编写的实用程序中的每个进程(内核模块/fs/proc).问题是,我只看到根命名空间中的进程.我试图使用宏for_each_processsched.h.

我可以键入ps一个shell并查看大量进程,但我的for_each_process循环看不到它们.是什么赋予了?

注意:我想知道它是否与某些事有关rcu_read_lock?我害怕放一个rcu_read_lock,我不知道应该去哪里.麻烦的是,我读到的文档似乎说在一个可抢占的内核(我的)中,睡在里面是非法的rcu_read_lock.我需要打电话down_read(mmap_sem),我害怕会睡觉.那意味着我不能用rcu_read_lock

linux process linux-kernel

4
推荐指数
1
解决办法
1万
查看次数

如何在Express中添加"查看选项"?

我正在学习使用Express.我想要做:

app.configure(function(){
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.set('view options', { layout: false });    /* asterisk */
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);                           /* dagger */
  app.use(express.static(__dirname + '/public'));
});

app.configure('development', function(){
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
  app.use(express.logger('dev'));
  app.set('view options', { pretty: true });     /* asterisk */
});
Run Code Online (Sandbox Code Playgroud)

我做的补充是:

  • 对Jade使用'layout:false'.
  • 在Jade中打印HTML.
  • 使用'dev'格式打开记录器

有两个问题:

  1. /* asterisk */当我设置'pretty:true'时,我会覆盖我以前的选项,而不是添加它们.即,我的程序会中断,除非我添加{ pretty: true, layout: false }哪些感觉多余并且不正确.我如何纠正它,以便我只是"修改"视图选项,而不是"定义"它们?

  2. /* dagger */记录器不会确认我的请求,除了/favicon.ico.我发现如果我删除该app.use(app.router);行,那么我会看到两者//favicon.ico.这里发生了什么?

configuration node.js express

3
推荐指数
1
解决办法
5217
查看次数

什么是"ld-2.11.1.so",如何查看源代码?

我试图在我的计算机上编目RDTSC指令的使用.我的第一个想法是运行我的/lib文件夹objdump并搜索RDTSC

$ for f in ls /lib/*; do echo "*** $f ***" && objdump -d $f | grep -n  rdtsc; done > ~/tmp/out
Run Code Online (Sandbox Code Playgroud)

我注意到ld.2.11.1.so文件中存在很多RDTSC.我很确定它与动态库链接有关,但我不确定.我真正的问题是,如何找到源代码,以便查看RDTSC指令的用途?

linux

2
推荐指数
1
解决办法
3808
查看次数