小编Vin*_*nce的帖子

在Vagrant配置后以用户身份执行命令

在初始配置之后,有些命令必须作为普通用户运行.我以为我可以使用单独的shell脚本和命令来执行此操作su --login -c <command> vagrant,但它不会从.bashrc获取用户的路径或其他环境设置.

例如:

#!/usr/bin/env bash
su --login -c "rbenv install 2.0.0-p353" vagrant
su --login -c "rbenv global 2.0.0-p353" vagrant
su --login -c "gem update --system" vagrant
su --login -c "yes | gem update" vagrant
su --login -c "gem install rdoc" vagrant
su --login -c "gem install rails pg" vagrant
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?也许必须使用另一个配置工具,如Puppet或Chef?我想过创建另一个shell脚本来源.bashrc,使用:file provisioner将它复制到盒子并执行这样的命令,但它看起来有点像黑客.

这样做的正确方法是什么?

shell vagrant

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

为什么console.table()不适用于所有对象/数组?

为什么不适console.table()用于所有对象/数组?

通过一些数据,我可以在开发人员控制台中获得格式良好的表格.有了其他数据,我什么都没得到......甚至没有错误信息.

我刚刚console.table()经历了#Javascript30的挑战时学到了什么.演示者使用console.table()了一些输出,但不是全部,并且他没有解释原因.我试图将它用于所有(数组或对象)输出,并看到为什么......它不起作用.

这是一个不起作用的例子.

const data = ['car', 'car', 'truck', 'truck', 'bike', 'walk', 'car', 'van', 'bike', 'walk', 'car', 'van', 'car', 'truck' ];

const transportation = data.reduce((counters, item) => {
  if (!counters[item]) counters[item] = 0;
  counters[item]++;
  return counters;
}, {});
console.log('transportation table');
console.table(transportation);

console.log('transportation log');
console.log(transportation);
Run Code Online (Sandbox Code Playgroud)
<h1>Look at the console!</h1>
Run Code Online (Sandbox Code Playgroud)

我期望console.table()返回这样的东西:

MDN示例

...除了(索引)列包含汽车,卡车,自行车等,并且"值"列将包含计数.

更新:显然console.table()无法使用SO的代码片段...在这种情况下意味着它与浏览器的工作方式完全相同:P所以,我在CodePen上发布了一个问题示例: http:// codepen. IO/VAggrippino /笔/ qRraEP

这是第四个挑战,Array Cardio 1对于那些跟随你的人.

我意识到这不是一个严格的编程/ Javascript问题,因为控制台是浏览器的一个功能,而不是语言或DOM.我相信它是相关的,因为浏览器是所有Web开发人员使用的基本工具,并且每个主要浏览器都支持它.

谢谢.

javascript browser

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

iOS上的Chrome; back/forward不能与history.pushState一起使用?

我有一个网页,使用history.pushState片段标识符(ie #Heading1)和jQuery的animate方法在文档中导航.

这是我导航到文档中某个位置的方法:

$('nav a').click(function(e){
  e.preventDefault();
  var href = $(this).attr('href');
  history.pushState(null, null, href);
  $('#address').val(location.pathname + href);

  $('html, body').animate({
    'scrollTop': $(href).offset().top + 'px'
  });
Run Code Online (Sandbox Code Playgroud)

在iOS上使用谷歌浏览器,地址按预期更新,滚动动画工作正常,但后退/前进按钮不会转到识别的标签.

我应该注意,使用后退/前进按钮时,地址栏中的URL 发生变化.它只是没有去识别标签.

我在iOS上使用谷歌浏览器时才看到这个问题; iPhone和iPad都有.

我在CodePen上创建了一个Pen,其中包含我的代码子集,可以演示这个问题:http://codepen.io/Ghodmode/pen/YqKGga


更新:
我更新了笔,使其在iPhone/iPad上更容易测试.使用调试视图可能更好:http://s.codepen.io/Ghodmode/debug/YqKGga



更新2:
我在CodePen上创建了另一个应该展示问题的页面.这一次,没有jQuery:http://s.codepen.io/Ghodmode/debug/jqOqpq

我还没有能够测试这个,因为我没有直接访问iPhone/iPad,但我真的不认为这个问题与jQuery有什么关系.


它工作正常:

  • iPhone/iPad上的Safari
  • Android上的Google Chrome
  • Android上的Mozilla Firefox
  • Windows上的Google Chrome
  • Windows上的Mozilla Firefox
  • Windows上的Internet Explorer

我应该注意到我个人没有任何iOS设备来测试这个,但我确实有一个可靠的测试人员向我发送任何问题的视频和截图.

由于动画按预期工作,它似乎不是一个jQuery问题.

jquery html5 google-chrome ios pushstate

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

Flexbox:flex-start,自启动和启动; 有什么不同?

我刚刚注意到align-self我之前从未见过的一些属性值.什么是start,end,self-start,和self-end和是什么,从他们之间的分歧flex-startflex-end

当我使用flexbox时,我经常指的是CSS-Tricks指南,但它没有提到这些值.我在MDN上阅读了align-self文档,但是这些值的单行描述还不足以让我理解.

我以为我可以玩弄价值来解决它,但它们似乎都做同样的事情......

.container {
  display: flex;
  justify-content: center;
  align-items: center;
  background: papayawhip;
  width: 400px;
  height: 200px;
  margin: 1rem auto;
  box-shadow: 0px 0px 5px 1px rgba(0, 0, 0, 0.2);
  border-radius: 0.5em;
}

.block {
  color: white;
  font-size: 3em;
  font-family: sans-serif;
  padding: 0.5rem;
  margin: 0.5rem;
  display: flex;
  justify-content: center;
  align-items: center;
}

.block-1 {
  background: red;
}

.block-2 {
  background: orange; …
Run Code Online (Sandbox Code Playgroud)

css css3 flexbox css-grid

12
推荐指数
3
解决办法
2586
查看次数

我可以使用 SVG 工具栏图标吗?

我可以使用 SVG 文件作为工具栏图标而不是创建多种尺寸的 PNG 文件吗?

我在 Chrome 开发人员文档中阅读了 browserAction 图标的以下内容:

静态图像可以是 WebKit 可以显示的任何格式,包括 BMP、GIF、ICO、JPEG 或 PNG。对于解压缩的扩展,图像必须是 PNG 格式。

——这里

由于 WebKit 支持 SVG 图像,因此我可以使用 SVG 图标是理所当然的。缺乏对解压扩展的支持似乎很奇怪,但打包我的扩展很容易。

不幸的是,在我打包我的扩展程序并尝试通过将它拖到 Chrome 中的扩展程序选项卡来安装它后,它说Could not decode image: logo.svg...

扩展错误信息

图像非常简单。我在 Inkscape 中创建它并使用“另存为类型:普通 SVG (*.svg)”保存它。

google-chrome google-chrome-extension

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

全屏API;浏览器认为我不是从用户手势开始

我正在使用 HTML5 元素开发自定义视频播放器video,但无法让全屏按钮与Fullscreen API一起使用。

当我点击它时,我收到错误消息:

Failed to execute 'requestFullscreen' on 'Element': API can only be initiated by a user gesture.
Run Code Online (Sandbox Code Playgroud)

但是,我正在使用用户手势发起调用requestFullscreen...除非我误解了用户手势的构成。单击元素是一种用户手势,不是吗?

我意识到 SO 上有很多关于全屏 API 的问题,但看起来很多人都想在没有用户交互的情况下启动全屏模式。

我究竟做错了什么?

有一支带有此代码,但当我找到解决方案时,我可能会更改它。我不会改变这里的代码。

这是代码:

Failed to execute 'requestFullscreen' on 'Element': API can only be initiated by a user gesture.
Run Code Online (Sandbox Code Playgroud)
/* Get our elements. */
const player = document.querySelector('.player');
const video = player.querySelector('.viewer');
const progress = player.querySelector('.progress');
const progressBar = player.querySelector('.progress__filled');
const toggle = player.querySelector('.toggle');
const skipButtons = …
Run Code Online (Sandbox Code Playgroud)

html javascript fullscreen html5-fullscreen

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

带有方括号而不是括号的JavaScript数组`push` - 没有错误?

我偶然做到了这一点......

var numbers = [1, 2, 3, 4];
numbers.push[5];
Run Code Online (Sandbox Code Playgroud)

为什么没有错误信息?

需要括号,而不是方括号.这只是一个简单的错字.我没有对我正在做的事情给予足够的关注......但为什么没有错误信息呢?

据我所知,数字数组没有以任何方式修改.它只是...没有.

javascript arrays

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

Firefox:calc()无效的属性值

我有一个行高设置的元素calc():

line-height: calc(3rem / 2);
Run Code Online (Sandbox Code Playgroud)

演示:http://codepen.io/Ghodmode/pen/vLxZZd

它在Chrome中运行良好,但Firefox的开发人员工具表示它是无效的属性值.

我敢肯定我错过了一些显而易见的事情.

仅供参考:

谢谢.

css firefox css3 css-calc

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

使用带有私钥的 Git (Windows)

我在 Linux 服务器上有一个 Git 存储库,我想在 Windows 上克隆它。

我安装了 Windows 版 Git,并且更喜欢通过命令行使用它。

我使用带有公钥的 SSH 连接到我的 Linux 服务器,并且我已生成密钥并准备使用,但我不知道如何告诉 git 使用该密钥。

当我通过 SSH 进入盒子时,我使用以下命令:

ssh -i c:\path\to\private\key\id_rsa user@192.168.2.104
Run Code Online (Sandbox Code Playgroud)

所以,我想我正在寻找 Git 的等效选项-i

显然,这是行不通的:

git -i c:\path\to\private\key\id_rsa clone user@192.168.2.104:/home/user/dev/myproject.git myproject
Run Code Online (Sandbox Code Playgroud)

这一切都在我的本地网络上。

windows git

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

Express 路由参数正则表达式 `(*)` 是什么意思?

我在 Perl 上咬牙切齿。我对正则表达式很满意(但仍然容易出错)。

为什么(*)在名为 param 的 Express 路由中用作正则表达式?

为什么(.*)在名为 param 的 Express 路由中不能用作正则表达式?

是像([\\w:./]+)一个更可靠的方式做到这一点?


我正在尝试使用旨在在值中包含斜杠的路由参数。

例如

如果请求是:

http://www.example.com/new/https://www.youtube.com/trending
Run Code Online (Sandbox Code Playgroud)

...我正在使用这条路线:

app.get('/new/:url', (req, res) => {
  console.log('new')
  console.log(req.params.url)
})
Run Code Online (Sandbox Code Playgroud)

我要url平等https://www.youtube.com/trending

我知道路径在斜杠上分开,所以我想我可以在命名参数后的括号中使用正则表达式来匹配斜杠。

我试过/new/:url(.*),我认为它应该贪婪地匹配任何东西,包括斜线,但这使路线完全失败。为什么这不起作用?

通过我自己的反复试验,我发现这是/new/:url([\\w:./]+)有效的。这对我来说很有意义,但似乎不必要地复杂。这是“正确的方法”吗?

最让我困惑的是我在 YouTube 视频示例中找到的一个......为什么/new/:url(*)有效?该*说0或多个之前的项目,但没有什么星号之前。

我有一种感觉,答案就在这个 GitHub 问题中,但通过阅读线程我不清楚到底发生了什么。是否(*)依赖可能在下一版 Express 中更正的错误?

regex node.js express

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

gulp-filter正在过滤所有内容

gulp-filter正在过滤所有内容.

我正在尝试使用gulp-filtergulp-uglify中排除单个文件:

var uglify = require('gulp-uglify');
var filter = require('gulp-filter');

var paths = {
    css: 'src/*.css',
    html: 'src/*.html',
    js: 'src/*.js'
};

gulp.task('js', function() {
    // Create a filter for the ToC options file. We don't want to minify that.
    var f = filter(['*', '!src/ToCOptions.js'], {"restore": true});

    return gulp.src(paths.js)
        .pipe(f)
        .pipe(uglify())
        .pipe(f.restore)
        .pipe(gulp.dest('js'));
});
Run Code Online (Sandbox Code Playgroud)

我已经阅读了gulp-filter过滤掉所有文件,这似乎是同样的问题,但接受的答案对我不起作用.

我在过滤器上尝试了几种变体,包括:

  • var f = filter(['*', '!ToCOptions.js'], {"restore": true});
    没有任何东西由gulp-uglify处理.
  • var f = filter('!ToCOptions.js', {"restore": true});
    没有任何东西由gulp-uglify处理.
  • var f = filter('!src/ToCOptions.js', …

javascript node.js gulp gulp-filter

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