我实现了一个包含在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"是最大长度的参数,作为软限制.这些是例子:
/usr/portage/media-plugins/banshee-community-extensions/files 变 /u/p/m/b/files/home/user1/media/video/music/live-sets成为~/m/v/m/live-sets(注意〜字符作为$ HOME的替代)/home/user2/media 不会改变(不超过20个限额)/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(最后一个组件保持不变:软限制)/home/user1/src变成~/src($ HOME总是缩短)/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) 我有一个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}(非生成的文件应该是 - 所以两个位置都是正确的,具体取决于具体情况).
我尝试了以下简短示例,以了解我正在开展的更大程序中的错误.看起来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实现包含该扩展.
我们正在开发一个大量使用的网站<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) 由于我的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)
那应该是完全可以的吗?有什么线索在哪里寻找问题?搜索谷歌显示了一些无知的人,他们也只在测试环境中看到这个问题,偶尔也会在开发环境中看到这个问题.
对于程序员向我们展示她/他的技能,你会建议什么是一个很好的挑战?我正在考虑一个GUI程序的小型演示实现,不需要花太多时间.
以下是情况:(这不应该意味着在这里寻找程序员的意图,我认为还有其他论坛可以做到这一点)
我们正在计划一个时间紧迫的项目,但显然我们缺乏资源,所以我们想吸引外部开发人员.该项目的目标是在Windows平台上基于Qt(尽管尚未最终设置).我们更喜欢Qt,因为稍后当需要将功能添加到软件中并且我们熟悉Qt平台时,这允许使用自己的资源.
该项目需要与HID USB硬件接口(写出一些数据块,读回结果,保证时间范围内)和显示分析图的GUI.
然而,主要目的不是找到一个Qt程序员(虽然我们更喜欢这个),而是一个有能力的程序员 - 因此这个问题的重要部分是关于挑战.
有没有人使用QtPropertyBrowser作为高级配置编辑器?我只看到GUI示例,编辑GUI元素的属性.但是,如果我想编辑更抽象的东西,比如应用程序配置,我将如何开始呢?
这是一个例子:
我正在创建一个具有多页配置对话框的应用程序.一些设置是关于打印机,一些是关于数据库,一些是通用应用程序设置,一些是关于模板文件名和/或模板.但是在编辑器中设计所有这些详细的配置页面之前,我想在对话框中有一个"高级"或"专家"选项卡,其中列出了所有可以想象的配置选项.在设计过程的后期,我会收集越来越多的选项,决定哪些是"简单"选项放入一些更加用户友好的配置页面.谷歌搜索我来到QtPropertyBrowser,似乎是正确的工具.但我不确定如何开始?我很确定,我需要某种抽象配置对象(一个或多个),而不是GUI对象.但我不喜欢 知道在哪里或如何开始.目前我的所有想法都看起来很复杂.
有关提示的任何建议或指示?
我正在尝试找到一个scriptaculous脚本(或创建一个),它在我的视口中保持垂直导航栏"粘性".虽然这可能不是黑魔法(可以使用位置:固定css)但这种方法存在问题:如果导航栏比视口高度长,则访问者将无法看到整个导航.所以我希望导航栏不要将视口保留在顶部,但不要将父容器留在底部.它应该立即跟随滚动事件而不用花哨/弹跳动画.
那可能吗?谷歌透露没有什么对我有用.你可能会从slashdot的文章评论导航器或谷歌视频的播放器框中知道这种效果.
更新:基本上这将是jQuery插件scrollFollow的重写.如果它缺少动画就没问题,因为我不会使用它们.但它应该能够保持在定义的父容器内而不会剪切.不需要cookie处理.
假设我有一个巨大的git存储库,它有很多swfs和图像.我希望它们包含在托管的github存储库中,但它们不需要版本化,我不想将它们存储在其他地方.
每次我提交存储库时,我可以删除历史记录的最简单方法是什么?......最后,我拥有所有swfs和图像,但没有历史记录.
编辑:swf文件可能经常更改,因此我们可以指望每个提交有不同的版本.
qt ×3
qt4 ×3
bash ×1
c++ ×1
cmake ×1
css ×1
git ×1
github ×1
history ×1
html ×1
javascript ×1
localization ×1
path ×1
prompt ×1
prototypejs ×1
qfile ×1
translation ×1
unit-testing ×1
usb ×1