小编Rob*_*Rob的帖子

Shell提示行换行问题

我已经做了一些事情来破坏OS X(10.5.7)终端中的Bash Shell提示符.

这是我配置的PS1:

PS1='\[\e[1;32m\]\h\[\e[0m\]:\[\e[1;34m\]\w\[\e[0m\]\$ '
Run Code Online (Sandbox Code Playgroud)

据我所知,我有正确的颜色命令逃逸.然而,当我在命令历史中向上和向下滚动时,如果历史命令包裹在多行上,我经常会遇到换行问题.

我将提示简化为以下内容:

PS1='\[\e[1m\]\h:\w\$ \[\e[0m\]'
PS2='> '
Run Code Online (Sandbox Code Playgroud)

我仍然看到类似的东西:

localhost:~/Library/Application Support/Firefox/Profiles/knpmxpup.Defau
lt/extensions/{1A2D0EC4-75F5-4c91-89C4-3656F6E44B68}$ expocd \{1A2D0EC4-7
5F5-4c91-89C4-3656F6E                                           export PS1="\[
\e[1;32m\]\h\[\e[0m\]:                                          cd Library/Appl
ication\ Support/

我也试过\033而不是\e.我刚刚将PS2包含在那里以获取信息,我没有从安装默认值中更改它.如果我完全删除颜色代码,那么一切正常,任何想法?

bash prompt colors ansi-escape

37
推荐指数
3
解决办法
3万
查看次数

在启动时设置Ubuntu Sound Volume

Ubuntu启动/登录声音可能非常响亮,但我确实喜欢它.我写了一个脚本,使用amixer将音量设置为25%.这是我喜欢的水平,但是当我使用电视或耳机时,我必须调高音量.在登录声音播放之前,我似乎无法让脚本运行.我已经尝试了一个cron @reboot,并在/etc/rc3.d/和我的.bash_profile脚本中为脚本添加了一个符号链接.只有第三种方法实际上正确设置了音量,但是在播放登录声音之后.

理想情况下,我希望在我退出当晚或在ubuntu登录屏幕显示之前运行脚本.

以下是设置音量的命令:

`/usr/bin/amixer -c 0 sset Master,0 25% > /dev/null`
Run Code Online (Sandbox Code Playgroud)

其他方法的建议值得赞赏.

audio ubuntu volume

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

为什么这种随机播放算法没有偏差

我的同事和我正在争论为什么在这个JS提示和技巧列表中给出的随机算法不会产生偏见的结果,就像杰夫阿特伍德描述的天真洗牌一样.

提示中的数组shuffle代码是:

list.sort(function() Math.random() - 0.5);
Run Code Online (Sandbox Code Playgroud)

Jeff的天真洗牌代码是:


for (int i = 0; i < cards.Length; i++)
{
  int n = rand.Next(cards.Length);
  Swap(ref cards[i], ref cards[n]);
}
Run Code Online (Sandbox Code Playgroud)

我写了这个JS来测试shuffle:


var list = [1,2,3];
var result = {123:0,132:0,321:0,213:0,231:0,312:0};
function shuffle() { return Math.random() - 0.5; }
for (var i=0; i<60000000; i++) {
    result[ list.sort(shuffle).join('') ]++;
}
Run Code Online (Sandbox Code Playgroud)

为此我获得了结果(来自Firefox 5),如:

Order   Count          %Diff True Avg
123      9997461       -0.0002539
132     10003451        0.0003451
213     10001507        0.0001507
231      9997563       -0.0002437
312      9995658       -0.0004342
321 …

javascript sorting shuffle

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

什么是celeryev队列?

我正在使用MongoDB作为代理运行python芹菜,因为它存储了我应用程序的其余数据.(这是芹菜的实验设置,所以我知道我做错了.)我发现芹菜消息集包含2000万个文件,这太荒谬了.所以我删除了超过7天的任何文件,但这仍然留下了超过一百万份文件的消息.他们中的大多数人都有一个队列:celeryev.35159580-6c35-40cd-b75b-66eb8333963d.该队列用于什么,可以安全删除吗?

python mongodb celery

6
推荐指数
0
解决办法
1567
查看次数

如何更改OS X应用程序包中的可执行文件

我希望在Firefox启动之前和退出之后运行脚本.在Ubuntu中,我通过创建一个先调用我的函数的新快捷方式,然后调用firefox命令,然后调用我的最后一个函数来完成此操作.由于firefox命令阻塞直到应用程序退出,因此在进程结束后立即调用我的最后一个函数.

但是,OS XI不能很好地做到这一点,因为我最终在Dock上有两个图标.一个用于我的脚本变成一个应用程序,另一个用于Firefox应用程序.我宁愿只有一个停靠图标并且不会破坏Firefox更新.

我目前的解决方案是将MacOS/firefox {, - bin}重命名为'real-'前缀,然后将我的shell脚本命名为"firefox-bin".这有效,但我很确定下次firefox尝试更新我自己敬酒.

我已经尝试将bundle的Info.plist文件中的"CFBundleExecutable"属性更改为我的脚本,但这不起作用.

有人可以提供任何其他建议吗?

macos firefox

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

识别在Firefox Addon SDK中发出请求的选项卡

我正在使用Firefox Addon SDK来构建监视和显示浏览器中HTTP流量的内容.与HTTPFoxLive HTTP Headers类似.我有兴趣确定浏览器中的哪个选项卡(如果有)生成了请求

使用观察者服务我正在监视"http-on-examine-response"事件.我有以下代码来识别生成请求的nsIDomWindow:


const observer = require("observer-service"),
    {Ci} = require("chrome");

function getTabFromChannel(channel) {
    try {
        var noteCB= channel.notificationCallbacks ? channel.notificationCallbacks : channel.loadGroup.notificationCallbacks;

        if (!noteCB) { return null; }

        var domWin = noteCB.getInterface(Ci.nsIDOMWindow);
        return domWin.top;
    } catch (e) {
        dump(e + "\n");
        return null;
    }
}

function logHTTPTraffic(sub, data) {
    sub.QueryInterface(Ci.nsIHttpChannel);
    var ab = getTabFromChannel(sub);
    console.log(tab);
}

observer.add("http-on-examine-response", logHTTPTraffic);
Run Code Online (Sandbox Code Playgroud)

主要是从文档中了解如何识别生成请求的浏览器.有些也来自Google PageSpeed Firefox插件.

是否有推荐或首选的方法从nsIDOMWindow对象domWin转到 …

javascript firefox-addon firefox-addon-sdk

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

如何在git中存储Greasmonkey 4脚本

随着Firefox 57和Greasemonkey 4.0的新更新,该gm_scripts文件夹似乎不再存储user.js脚本.

现在存储脚本在哪里?

有关将这些脚本保存在git中的任何建议吗?

firefox firefox-addon-webextensions firefox-57+ greasemonkey-4

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

IE中关闭开启器时的JavaScript关闭窗口

对于我的Web应用程序,我需要在父窗口关闭时关闭子窗口."关闭"是指浏览器窗口实际上已关闭,而不仅仅是导航到新页面.

我已经看到" 如果父窗口关闭,我如何关闭子窗口? "问题已经存在,但是我的问题是一个扩展.该问题的答案解决了在父级的任何卸载事件上关闭子窗口的问题.然而卸载!=关闭(IMO); 只需单击链接即可触发卸载事件.

由于JS中没有"onclose"事件,我认为最好的方法是在子节点上父节点的卸载事件setTimeout上查看它的父节点是否仍然存在,如果不存在则关闭:

var w = window.open("", "Logger", "height=480,width=640,resizeable,scrollbars=yes");
if (w) {
  JSEvents.on(window,'unload',function(){
    if (w && !w.closed) {
      w.setTimeout(function(){
        //IE this==w.opener
        if (!w.opener || w.opener.closed) {
          w.close();
        }
      },500);
    }
  });
}
Run Code Online (Sandbox Code Playgroud)

但是,我相信我已经非常确切地证明,在IE(7)中,您无法在父窗口或子窗口上的卸载事件期间使用setTimeout.在上面的例子this == w.opener里面有setTimeout匿名函数.此测试从不产生警报:

JSEvents.on(window, 'unload', function(){
  window.setTimeout(function(){alert('HERE');},500);
});
Run Code Online (Sandbox Code Playgroud)

alert没有的直线setTimeout会产生警报.

是否有一个技巧可以从我可以使用的父项中为子项设置setTimeout?

是否有另一种方法可以检测父母何时关闭我可以使用?

在FF中这样做要容易得多,所以我专注于让它在IE下工作.

javascript internet-explorer

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

Greasemonkey脚本使固定定位元素静态

我发现网页上的元素经常被固定在我的位置.我想找到一种方法来禁用position: fixed我访问的任何网站中的CSS规则.

我编写了一个用户脚本(Firefox,Greasemonkey),它扫描文档中的每个节点,并确定它是否已修复计算出的样式位置,然后将其覆盖为静态.

有没有更好的方法来实现我的目标?

这是我写的剧本,我现在把它缩小为div:

Array.forEach(
    document.querySelectorAll("div")
    ,function(el) {
        if (window.getComputedStyle(el).position === 'fixed') {
            el.style.position = 'static';
        }
    }
);
Run Code Online (Sandbox Code Playgroud)

javascript css firefox greasemonkey

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

仅使用一些列进行排序

我有一个600MB制表符分隔文件,需要仅使用前两列进行排序.这些列按顺序排列的所有行都应保留在现有顺序中.我努力使用sort并且--key似乎继续按其他列对行进行排序.

这是未分类文件的示例:

1244072768  7234    Z
1244072768  7234    e
1244072768  7234    b
1244072768  7234    r
1244072768  7234    a
1244072768  7341    C
1244072768  7341    a
1244072768  7234    -
1244072768  7341    r
1244072768  7341    t
1244072768  7341    -
1244072769  4237    W
1244072769  4237    a
1244072769  4237    s
1244072769  4237    h
1244072769  4237    -

结果应该是这样的:

1244072768  7234    Z
1244072768  7234    e
1244072768  7234    b
1244072768  7234    r
1244072768  7234    a
1244072768  7234    -
1244072768  7341    C
1244072768  7341    a
1244072768 …

unix sorting

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

如何使这个Perl单线程在文件中排成一行?

我正在尝试编写一个单行的Perl脚本,它将配置文件中的一行从"已注释"切换为不返回.到目前为止,我有以下内容:

perl -pi -e 's/^(#?)(\tDefaultServerLayout)/ ... /e' xorg.conf
Run Code Online (Sandbox Code Playgroud)

我试图找出替换(...)部分中的代码.如果没有匹配,我希望替换插入'#',如果匹配则删除它.

伪代码:

if ( $1 == '#' ) then
   print $2
else
   print "#$2"
Run Code Online (Sandbox Code Playgroud)

我的Perl非常生锈,我不知道如何将它变成s///e替代品.

我之所以这样做是为了创建一个脚本,它将在两个布局之间更改(切换)我的显示设置.我希望只在一个脚本中完成此操作.

我对替代方法的建议持开放态度,但我想保留一个单线程,我可以将其包含在一个shell脚本中,该脚本在我更改布局时正在做其他我希望发生的事情.

regex perl

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