小编hur*_*n77的帖子

代码挑战:Bash提示路径缩短

我实现了一个包含在PS1环境变量中的bash快速路径缩短器,它将工作目录缩短为更紧凑但仍然具有描述性的东西.我很好奇其他想法可能存在.

这是挑战:

创建一个bash函数_dir_chomp,可以像这样包含在PS1中(插入换行符以便于阅读):

PS1='\[\033[01;32m\]\u@\h\[\033[01;34m\] $(
  _dir_chomp "$(pwd)" 20
)\[\033[01;37m\]$(parse_git_branch)\[\033[01;34m\] \$\[\033[00m\] '
Run Code Online (Sandbox Code Playgroud)

"20"是最大长度的参数,作为软限制.这些是例子:

  1. /usr/portage/media-plugins/banshee-community-extensions/files/u/p/m/b/files
  2. /home/user1/media/video/music/live-sets成为~/m/v/m/live-sets(注意〜字符作为$ HOME的替代)
  3. /home/user2/media 不会改变(不超过20个限额)
  4. /home/user1/this-is-a-very-long-path-name-with-more-than-20-chars成为~/this-is-a-very-long-path-name-with-more-than-20-chars(最后一个组件保持不变:软限制)
  5. /home/user1/src变成~/src($ HOME总是缩短)
  6. /home/user1/.kde4/share/config/kresources变成~/.k/s/c/kresources(注意保留前缀点)

当前用户是user1.

它允许调用外部口译一样awk,perl,ruby,python但没有编译C程序或类似.换句话说:不允许使用外部源文件,代码必须是内联的.最短版本获胜.bash函数体的长度(和称为子函数)计数,表示:

_sub_helper() {
  # this counts
}
_dir_chomp() {
  # these characters count (between { and })
  _sub_helper "foobar" # _sub_helper body counts, too
}
Run Code Online (Sandbox Code Playgroud)

bash prompt path

21
推荐指数
2
解决办法
6223
查看次数

如何使用cmake和QRC将Qt4 qm文件集成到二进制文件中?

我有一个Qt4 CMake项目,我想将i18n的QM文件集成到输出二进制文件中.这些是我到目前为止生成TS和QM文件的规则:

set(myapp_TRANSLATIONS
    i18n/myapp_de.ts
)

set(FILES_TO_TRANSLATE
    ${myapp_SRCS}
    ${myapp_MOC_HDRS}
)

QT4_CREATE_TRANSLATION(QM_FILES ${FILES_TO_TRANSLATE} ${myapp_TRANSLATIONS})
QT4_ADD_TRANSLATION(QM ${myapp_TRANSLATIONS})
Run Code Online (Sandbox Code Playgroud)

我尝试了以下操作将QM文件添加到可执行文件中:

add_executable(myapp ${myapp_SRCS} ${myapp_MOC_SRCS} ${myapp_RCC_SRCS} ${QM})
Run Code Online (Sandbox Code Playgroud)

这是main.cpp的初始化:

QTranslator qtTranslator;
qtTranslator.load("qt_" + QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath));
app.installTranslator(&qtTranslator);

QTranslator appTranslator;
appTranslator.load("myapp_" + QLocale::system().name());
app.installTranslator(&appTranslator);
Run Code Online (Sandbox Code Playgroud)

但是,strings mypp表明翻译不会进入二进制文件.

更新:我将每个qm文件添加到i18n/translations.qrc:

<!DOCTYPE RCC><RCC version="1.0">
  <qresource prefix="/resources">
    <file>myapp_de.qm</file>
    <file>  ...   .qm</file>
  </qresource>
</RCC>
Run Code Online (Sandbox Code Playgroud)

和使用

QT4_ADD_RESOURCES(myapp_QM_RCC_SRCS i18n/translations.qrc)
Run Code Online (Sandbox Code Playgroud)

并添加myapp_QM_RCC_SRCS到可执行的依赖项.

但是由于CMake执行了阴影构建(在源目录之外构建)但是解析了QRC文件以寻找相对于QRC文件的引用文件的依赖性(这很好的功能但是没有制定规则如何构建该位置的QM文件).QM文件位于${CMAKE_CURRENT_BINARY_DIR}(它们属于使用阴影构建的地方)但是期望它${CMAKE_CURRENT_SOURCE_DIR}(非生成的文件应该是 - 所以两个位置都是正确的,具体取决于具体情况).

translation localization qt4 cmake internationalization

12
推荐指数
2
解决办法
6459
查看次数

为什么QFile不能从"〜"目录中读取?

我尝试了以下简短示例,以了解我正在开展的更大程序中的错误.看起来QFile不支持主目录的unix(或shell)表示法:

#include <QFile>
#include <QDebug>

int main()
{
        QFile f("~/.vimrc");
        if (f.open(QIODevice::ReadOnly))
        {
                qDebug() << f.readAll();
                f.close();
        }
        else
        {
                qDebug() << f.error();
        }
}
Run Code Online (Sandbox Code Playgroud)

一旦我用我真正的主目录路径替换"〜",它就可以工作.有一个简单的解决方法 - 一些设置启用?或者我是否必须采用"丑陋"的方式并向QDir询问当前用户的主目录,并将其手动添加到每个路径?

附录:很明显,shell通常执行代字号扩展,因此程序永远不会看到.在unix shell中它仍然非常方便,我希望文件访问的Qt实现包含该扩展.

c++ qt qt4 tilde-expansion qfile

5
推荐指数
2
解决办法
3246
查看次数

IE9只有_sometimes_忽略<base href>

我们正在开发一个大量使用的网站<base href>(这是典型的TYPO3网站).该站点在子目录中开发,稍后将重新定位到顶层目录,因此我们无法轻松删除<base href>.

我们的客户告诉我们,有时当她浏览新页面时,她会在没有应用布局的情况下获取页面内容.我们调试了这个:它只发生在IE9中.查看日志,我们发现当错误发生时,IE9会尝试从错误的位置加载CSS,JS和所有图像:相对于当前URL,而不是相对于BASE HREF ...进一步检查日志显示我们IE8的用户也受到了影响,包括一些愚蠢的网络蜘蛛(对我们来说没有问题,后者,谁在乎?).

我们已经了解IE8推测下载器/前瞻解析器:http://blogs.msdn.com/b/ieinternals/archive/2009/07/27/bugs-in-the-ie8-lookahead-downloader.aspx

我确信我们不会面对所描述的错误:所有页面元素(包括第一个标题元素)都是从错误的位置加载的.此错误描述了页眉中只有第二个和更晚的元素受到影响.我们可以通过在问题发生时查看访问日志来证明这一点.

一个简单的重新加载修复了这个问题,将页面源代码与发生的错误进行比较,如果没有发生,则显示没有区别.只有IE受到影响,所有其他浏览器都没问题.

<base href>标签是在第一个<head>标签.我们尝试了所有可能的解决方案,没什 似乎是一个IE错误.

其他人遇到这种情况并找到了解决方法吗?我们有几个其他网站使用<base href>我们无法在我们的测试系统中重现这种行为 - 所以有些东西可能触发或解决这个bug.但我分析了这些网站的日志,可以看到一些使用IE8的访问者即使遇到了这个bug.

根据评论中的要求,这是我的html头部的一个模糊的例子:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>

<base href="http://client.site/cms/" />

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- 
    This website is powered by TYPO3 - inspiring people to share!
    TYPO3 is a free open source Content Management Framework initially created by Kasper Skaarhoj …
Run Code Online (Sandbox Code Playgroud)

html internet-explorer internet-explorer-9

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

RuntimeError:为User声明attr_protected或attr_accessible,但不是两者都声明

由于我的rails应用程序在短时间内在测试套件中产生以下运行时错误:

RuntimeError: Declare either attr_protected or attr_accessible for User, but not both.
Run Code Online (Sandbox Code Playgroud)

这可能是由restful_authentication的更新引入的.但是扫描代码"attr_protected"只会告诉我它永远不会被调用.那么为什么会出现这个错

我的用户模型只有以下代码:

attr_accessible :login, :email, :name, :password, :password_confirmation, :identity_url
Run Code Online (Sandbox Code Playgroud)

那应该是完全可以的吗?有什么线索在哪里寻找问题?搜索谷歌显示了一些无知的人,他们也只在测试环境中看到这个问题,偶尔也会在开发环境中看到这个问题.

unit-testing ruby-on-rails restful-authentication

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

为时间紧迫的(可能)Qt项目寻找编程挑战(访谈级别)

对于程序员向我们展示她/他的技能,你会建议什么是一个很好的挑战?我正在考虑一个GUI程序的小型演示实现,不需要花太多时间.

以下是情况:(这不应该意味着在这里寻找程序员的意图,我认为还有其他论坛可以做到这一点)

我们正在计划一个时间紧迫的项目,但显然我们缺乏资源,所以我们想吸引外部开发人员.该项目的目标是在Windows平台上基于Qt(尽管尚未最终设置).我们更喜欢Qt,因为稍后当需要将功能添加到软件中并且我们熟悉Qt平台时,这允许使用自己的资源.

该项目需要与HID USB硬件接口(写出一些数据块,读回结果,保证时间范围内)和显示分析图的GUI.

然而,主要目的不是找到一个Qt程序员(虽然我们更喜欢这个),而是一个有能力的程序员 - 因此这个问题的重要部分是关于挑战.

usb project-planning user-interface qt

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

使用QtPropertyBrowser作为高级配置编辑器

有没有人使用QtPropertyBrowser作为高级配置编辑器?我只看到GUI示例,编辑GUI元素的属性.但是,如果我想编辑更抽象的东西,比如应用程序配置,我将如何开始呢?

这是一个例子:

我正在创建一个具有多页配置对话框的应用程序.一些设置是关于打印机,一些是关于数据库,一些是通用应用程序设置,一些是关于模板文件名和/或模板.但是在编辑器中设计所有这些详细的配置页面之前,我想在对话框中有一个"高级"或"专家"选项卡,其中列出了所有可以想象的配置选项.在设计过程的后期,我会收集越来越多的选项,决定哪些是"简单"选项放入一些更加用户友好的配置页面.谷歌搜索我来到QtPropertyBrowser,似乎是正确的工具.但我不确定如何开始?我很确定,我需要某种抽象配置对象(一个或多个),而不是GUI对象.但我不喜欢 知道在哪里或如何开始.目前我的所有想法都看起来很复杂.

有关提示的任何建议或指示?

configuration user-interface qt qt4

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

滚动时将div保持在视口或任意div内

我正在尝试找到一个scriptaculous脚本(或创建一个),它在我的视口中保持垂直导航栏"粘性".虽然这可能不是黑魔法(可以使用位置:固定css)但这种方法存在问题:如果导航栏比视口高度长,则访问者将无法看到整个导航.所以我希望导航栏不要将视口保留在顶部,但不要将父容器留在底部.它应该立即跟随滚动事件而不用花哨/弹跳动画.

那可能吗?谷歌透露没有什么对我有用.你可能会从slashdot的文章评论导航器或谷歌视频的播放器框中知道这种效果.

更新:基本上这将是jQuery插件scrollFollow的重写.如果它缺少动画就没问题,因为我不会使用它们.但它应该能够保持在定义的父容器内而不会剪切.不需要cookie处理.

javascript css scriptaculous prototypejs

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

脚本删除Git中所有二进制文件的历史记录,而不删除文件本身

假设我有一个巨大的git存储库,它有很多swfs和图像.我希望它们包含在托管的github存储库中,但它们不需要版本化,我不想将它们存储在其他地方.

每次我提交存储库时,我可以删除历史记录的最简单方法是什么?......最后,我拥有所有swfs和图像,但没有历史记录.

编辑:swf文件可能经常更改,因此我们可以指望每个提交有不同的版本.

git history github

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