在我最近的一个项目中,我从.gitignoring包含秘密和环境变量的文件开始.所以整个项目都致力于repo,除了包含第三方秘密的文件,如Stripe,Twitter API或Facebook Graph或内部api_keys,./config/initializers/secret_token.rb文件等.
现在我正处于项目即将上线的地步(兴奋!)我需要使用Capistrano将所有环境变量移植到生产服务器上,即 cap production deploy.
[编辑4:是的,2018年]在initializers/secret_token.rb的情况下,很明显Rails 4.1有一种处理secrets.yml文件的新方法,该文件将:secret_key_base值拉入生产服务器.在这里,我建议使用capistrano-secrets-yml gem,它开箱即用,并且易于使用.
剩下的是将其他秘密(如API_KEYS,APP_ID等)传送到生产服务器而不检查任何进入仓库的方法.如何做到这一点,最推荐/最安全的方式或最佳做法是什么?
注意:随着时间的推移,我将编辑问题/我会更清晰.
EDIT1:Server是DigitalOcean上的Ubuntu/Linux VPS [回答丹尼斯,下面].
EDIT2:env_variables/secrets可以通过secrets.yml转发到服务器吗?会话的Secret_token毕竟不是唯一的秘密![在Edit3上回答]
编辑3:是的!根据这个博客,可以通过secrets.yml发送API_keys .将在某个时候分享我的发现.:-)
我真的想禁用捏缩放我的网页(iframe)并使用手指捏事件进行另一次自定义交互.因此,虽然Safari的文档说它支持以下条款:
<meta name="viewport" content="width=device-width, user-scalable=no" />
Run Code Online (Sandbox Code Playgroud)
......在实践中,Safari并不尊重它.
防止视口缩放的能力通常对于网络游戏体验以及围绕按钮,输入框和幻灯片输入/输出类型的界面,甚至视频的更紧密的用户体验很重要,同时它仍然是低视力阅读器的良好默认值.readeriOS Safari上还有一个精简模式,可提供具有所需辅助功能的整洁阅读.
恕我直言,应用无障碍原则针对每个网络用户的低视力读者是严苛的.可以使用passive事件监听器来修复缩放缩放,但为了卫生,问题是:是否有一种非黑客的方法呢?
在最近与W3C/WCAG团队的讨论中,澄清了(强调我的)可访问性指南仅指明......
一个不应该是自2016年以来一直在规范中的一致性要求arronei/html @ 877b59c.它仅是作者一致性要求,不禁止使用,但要求作者认真考虑缩小用户的缩放能力.苹果在safari中做了什么超出了这个问题的范围,因为它不需要任何浏览器实现者.
随着iOS Safari最近的变化,Apple似乎已经将可访问性指导方针转向了一项CANNOT author conformance要求,而不是出于他们所知的原因.重要的是,此处突出显示规范和实现之间的差异以备记录.
在与Apple iOS Safari团队讨论之后,这里针对此一致性问题向webkit提交了一个错误.
我正在开发一个应用程序,在该应用程序中,在HTML5画布上创建/编辑图像,然后将其保存到文件存储/云中.问题在于"节约效率".保存空白画布时,即发送完全透明的空白PNG toDataURL().检测空白PNG的一种方法是在点击任何编辑/绘图功能时切换布尔值,并在清除屏幕上重置该值.
然而,这样的方法并非万无一失,因为用户可以在点击绘制/编辑功能之后保存图像但是不绘制任何东西.是否有更原生的方法来检测画布是否返回自浏览器打开后已更改的二进制字符串?或者其他一些方法来确保在客户端检测到空白的透明PNG?
如何使用nodejs纯JavaScript或包计算目录中的文件数?我想做这样的事情:
或者在bash脚本中我会这样做:
getLength() {
DIRLENGTH=1
until [ ! -d "DIR-$((DIRLENGTH+1))" ]; do
DIRLENGTH=$((DIRLENGTH+1))
done
}
Run Code Online (Sandbox Code Playgroud) 我需要一个 serviceworker 的配套脚本,我现在正在试用。
该脚本的工作原理如下:
((n, d) => {
if (!(n.serviceWorker && (typeof Cache !== 'undefined' && Cache.prototype.addAll))) return;
n.serviceWorker.register('/serviceworker.js', { scope: './book/' })
.then(function(reg) {
if (!n.serviceWorker.controller) return;
reg.onupdatefound = () => {
let installingWorker = reg.installing;
installingWorker.onstatechange = () => {
switch (installingWorker.state) {
case 'installed':
if (navigator.serviceWorker.controller) {
updateReady(reg.waiting);
} else {
// This is the initial serviceworker…
console.log('May be skipwaiting here?');
}
break;
case 'waiting':
updateReady(reg.waiting);
break;
case 'redundant':
// Something went wrong?
console.log('[Companion] new SW could …Run Code Online (Sandbox Code Playgroud) 我有一个包含数千个静态单页应用程序的市场/ Web应用程序.
希望为每个单页面应用程序添加一个Web App Manifest(<head> </head>对应stem_url于所有urls给定SPA 的{root} /index.html ).
标准方法:
<link rel="manifest" href="/manifest.json">
Run Code Online (Sandbox Code Playgroud)
...似乎不是一个很好的前进方式,因为这意味着数千个manifest.js文件被转储到/public文件夹中(它是一个rails应用程序!)并且最终会使app/assets编译工作非常繁重起来.
有没有一种方法可以像我们做样式标签一样内联清单json:
<style>
body { // style here }
…
</style>
Run Code Online (Sandbox Code Playgroud)
相当于清单声明:
<manifest>
{
"name": "HackerWeb",
"short_name": "HackerWeb",
…
}
</manifest>
Run Code Online (Sandbox Code Playgroud) 这是问题所在:
我有一个ol li具有如下start属性的有序列表:
.custom {
margin: 0;
padding: 0;
list-style-type: none;
}
.custom li {
counter-increment: step-counter;
margin-bottom: 10px;
}
.custom li::before {
content: counter(step-counter);
margin-right: 5px;
font-size: 80%;
background-color: rgb(0,200,200);
color: white;
font-weight: bold;
padding: 3px 8px;
border-radius: 3px;
}Run Code Online (Sandbox Code Playgroud)
<ol start="6" class="custom">
<li>This is the sixth item</li>
<li>This is the seventh item</li>
<li>This is the eighth item</li>
<li>This is the ninth item</li>
<li>This is the tenth item</li>
</ol>Run Code Online (Sandbox Code Playgroud)
我在浏览器上得到以下输出:
是否可以list-style使用start属性中的值而不是序列化序列表上的编号 …
我有一个父级和一个子级div,其 id 和尺寸如下图所示:
<div id="clip"> \n <div id="page"> \n <!-- Content/Images here -->\n </div>\n</div>\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n父div和子div的尺寸如下:
\n\n#clip {\n height: 1000px;\n width: 1414px;\n}\n\n#page {\n height: 1000px;\n width: 707px; \n}\nRun Code Online (Sandbox Code Playgroud)\n\n现在我想将 的一侧从孩子的div处倾斜angle \xc3\xb8并剪掉 的右侧div,如下所示:
单独用 CSS 可以做到吗?
\n\n\n\n\n限制:不能使用三角形边框 hack,#page 子项内的内容
\ndiv不能倾斜,并且解决方案越少 hack,对所有内容都越好。我希望这可以通过 CSS3 转换来完成,但到目前为止我找不到方法。
@ksav 的回答很接近,但它仍然使用具有绝对位置的伪 :before 元素的模糊技术。它不允许我消失div#page 的剪切部分,以便它看起来像这样:
\n\n\n我希望在 iOS Safari 上使用 100% 屏幕宽度作为我的网站标题在有缺口的 iOS/Android 设备上,并为实现这一点,我在我的页面上添加了以下视口元标记<head></head>:
<meta name='viewport' content='initial-scale=1, viewport-fit=cover'>
Run Code Online (Sandbox Code Playgroud)
然后在<header>我页面的元素上,我指定了 100%(或 100vmin)的 css 宽度。我不需要env(safe-area-insets)在我的任何网页上使用填充,因为它们以特定方式设计。
这几乎是 Apple 在其官方文档中为带缺口的 iPhone 描述的 iOS Safari web api 的方式,但它似乎不起作用!
我错过了什么吗?
编辑:我在 iPhone 11 Pro Max 上使用 iOS Safari 13.3.1。
我们有一个 node_module bookiza,它本质上是一个命令行工具,人们使用 --global 标志安装,然后使用它来在线创建和发布书籍。我们正在(主要)关注 semver,但我认为将来会如此严格。
有没有办法让这个模块成为一个自我更新的模块?以便我们的所有客户(作者)始终使用相同版本的 bookiza(除非他们禁用自动更新)。本质上,npm update [-g] bookiza每 15 天运行一次,或者在发布新版本时运行。
我应该如何实施这个?
我知道大多数rails专家都知道这个简单问题的答案,但是因为不是每个新的rails应用程序都是聊天应用程序,或者甚至需要一个redis/websockets,如何在没有actioncable的情况下创建一个新的rails项目?
$ rails new <project name> --option
$(window).on('unload', function() {
db.flipCounter.get(gon.slug, function(obj) {
var payload = {
slug: gon.slug,
localFlipCount: obj.fc,
time: Date.now()
}
navigator.sendBeacon('/analytics', csrfProtect(payload))
})
})
function csrfProtect(payload) {
var param = $("meta[name=csrf-param]").attr("content")
var token = $("meta[name=csrf-token]").attr("content")
if (param && token) payload[param] = token
return new Blob([JSON.stringify(payload)], { type: "application/x-www-form-urlencoded; charset=utf-8" })
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我希望使用有效负载将 POST 发送到“/analytics”网址。我在尝试触发请求时收到以下错误(警告):
Promise.js:840 未处理的拒绝:TypeError:无法在字符串 '{"slug":"test-page-by-marvin-danig","localFlipCount":1,"time":1524241435403}' 上创建属性 'authenticity_token'
嗯。
…发出请求,我得到:
Processing by BooksController#analytics as */*
Parameters: {"{\"slug\":\"test-book-by-marvin-danig\",\"localFlipCount\":1,\"time\":1524243279653,\"param\":\"8rzDx/TNL8YeU1/NWgWSk6gB/UvmbB9Ip VajDCgfDUv5Q4pjh7x0GUG1il1jDJajtJyHf84Xv5Pt14fiCnA9w"=>"=\"}"}
Can't verify CSRF token authenticity.
exception
ActionController::InvalidAuthenticityToken
Run Code Online (Sandbox Code Playgroud)
更新:问题仍未解决。这是我现在所处的位置:
我的 GET 和 …
javascript ruby-on-rails navigator authenticity-token beacon
重要信息:请参阅下面的更新-1,建议新的目录结构.
重要提示:请参阅下面的更新-2以了解我为什么要查找bash_script来编写我的书.
重要信息:请参阅update-3,了解是否需要与addPage()分开的insertPage()命令.
最后更新:这是我用这个脚本写的书!:六十秒演示
我手动写书,它有以下directory结构:
The-Solar-System/
??? README.md
??? css
? ??? page-1
? ? ??? style.css
? ??? page-2
? ? ??? style.css
? ??? page-3
? ??? style.css
??? head
? ??? page-1
? ? ??? head.html
? ??? page-2
? ? ??? head.html
? ??? page-3
? ??? head.html
??? html
? ??? page-1
? ? ??? body.html
? ??? page-2
? ? ??? body.html
? ??? page-3 …Run Code Online (Sandbox Code Playgroud) javascript ×5
css ×3
html ×3
ios ×2
node.js ×2
auto-update ×1
bash ×1
beacon ×1
bookiza ×1
capistrano ×1
html-lists ×1
html5-canvas ×1
manifest ×1
navigator ×1
npm ×1
security ×1
shell ×1
web ×1