在初始配置之后,有些命令必须作为普通用户运行.我以为我可以使用单独的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将它复制到盒子并执行这样的命令,但它看起来有点像黑客.
这样做的正确方法是什么?
为什么不适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()返回这样的东西:

...除了(索引)列包含汽车,卡车,自行车等,并且"值"列将包含计数.
更新:显然console.table()无法使用SO的代码片段...在这种情况下意味着它与浏览器的工作方式完全相同:P所以,我在CodePen上发布了一个问题示例: http:// codepen. IO/VAggrippino /笔/ qRraEP
这是第四个挑战,Array Cardio 1对于那些跟随你的人.
我意识到这不是一个严格的编程/ Javascript问题,因为控制台是浏览器的一个功能,而不是语言或DOM.我相信它是相关的,因为浏览器是所有Web开发人员使用的基本工具,并且每个主要浏览器都支持它.
谢谢.
我有一个网页,使用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有什么关系.
它工作正常:
我应该注意到我个人没有任何iOS设备来测试这个,但我确实有一个可靠的测试人员向我发送任何问题的视频和截图.
由于动画按预期工作,它似乎不是一个jQuery问题.
我刚刚注意到align-self我之前从未见过的一些属性值.什么是start,end,self-start,和self-end和是什么,从他们之间的分歧flex-start和flex-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)我可以使用 SVG 文件作为工具栏图标而不是创建多种尺寸的 PNG 文件吗?
我在 Chrome 开发人员文档中阅读了 browserAction 图标的以下内容:
静态图像可以是 WebKit 可以显示的任何格式,包括 BMP、GIF、ICO、JPEG 或 PNG。对于解压缩的扩展,图像必须是 PNG 格式。
——这里
由于 WebKit 支持 SVG 图像,因此我可以使用 SVG 图标是理所当然的。缺乏对解压扩展的支持似乎很奇怪,但打包我的扩展很容易。
不幸的是,在我打包我的扩展程序并尝试通过将它拖到 Chrome 中的扩展程序选项卡来安装它后,它说Could not decode image: logo.svg...
图像非常简单。我在 Inkscape 中创建它并使用“另存为类型:普通 SVG (*.svg)”保存它。
我正在使用 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)我偶然做到了这一点......
var numbers = [1, 2, 3, 4];
numbers.push[5];
Run Code Online (Sandbox Code Playgroud)
为什么没有错误信息?
推需要括号,而不是方括号.这只是一个简单的错字.我没有对我正在做的事情给予足够的关注......但为什么没有错误信息呢?
据我所知,数字数组没有以任何方式修改.它只是...没有.
我有一个行高设置的元素calc():
line-height: calc(3rem / 2);
Run Code Online (Sandbox Code Playgroud)
演示:http://codepen.io/Ghodmode/pen/vLxZZd
它在Chrome中运行良好,但Firefox的开发人员工具表示它是无效的属性值.
我敢肯定我错过了一些显而易见的事情.
仅供参考:
谢谢.
我在 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)
这一切都在我的本地网络上。
我在 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 中更正的错误?
gulp-filter正在过滤所有内容.
我正在尝试使用gulp-filter从gulp-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});var f = filter('!ToCOptions.js', {"restore": true});var f = filter('!src/ToCOptions.js', …