小编Pet*_*ons的帖子

在docker中恢复postgres

我遇到了一系列试图使用的问题docker exec和postgresql psql实用程序来恢复在docker 1.3中运行的postgresql安装.我有一个运行OK的备份docker exec mycontainer pg_dumpall --clean --user=postgres --no-password > /tmp/backup.sql.

我遇到了尝试恢复的问题,包括:

  • docker exec仅在容器运行时才有效,但psql无法通过主动连接的客户端正常还原
  • pg_ctl stop将退出postgres服务器进程,该进程将停止主容器和docker exec您正在运行的进程.
  • docker exec以root pg_ctl身份运行但必须以postgres运行(我试图使用pg_ctl来停止postgres,以便还原可以工作)

因此,假设postgresql容器正在运行并为应用程序提供活动连接,我该如何恢复它?寻找关于干净地停止,运行恢复,启动等的细节.

Env是docker 1.3,postgresql 9.4,数据存在于/var/lib/postgresql/data容器中安装的数据卷中.我.sql在docker主机文件系统上有一个有效的备份文件.

更新:仅供参考我对任何有效的解决方案持开放态度,无论是否涉及docker exec.如果我应该运行一个单独的容器并链接到主postgresql容器并通过TCP与它通信,例如,只要我得到一些可行的流程就可以了.


这是我到目前为止所拥有的.建议欢迎.它是一个bash脚本(带有一些在构建过程中进行插值的胡子变量),旨在在docker主机上运行.

#!/bin/bash
docker_sql() {
  docker exec \
    --interactive \
    --tty \
    "${container}" \
    psql --user="${user}" --no-password --file="$1"
}

export DOCKER_HOST=tcp://localhost:2375
container="{{appName}}_db"
user=postgres
backup_path="$1"
if [[ -z "${backup_path}" ]]; then
  echo "Provide a path …
Run Code Online (Sandbox Code Playgroud)

postgresql restore docker

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

会话到期时 SPA 重新登录

我正在使用 AngularJS 构建一个单页应用程序。我正在考虑 2 种方法来处理服务器端会话到期的长时间空闲期。

方法 A:在 AJAX、重新登录、重新发送期间检测

  • 用户最初加载应用程序并登录
  • 用户使用应用程序一段时间然后闲置让应用程序打开
  • 服务器端会话过期
  • 用户继续使用该应用程序
  • 尝试保存数据时,角度 http 拦截器检测到 401 状态代码响应,显示登录模式对话框,如果用户正确进行身份验证(从而启动新的服务器端会话),则将更改重新提交到服务器

我的看法是这在技术上是可行的,但 UX 可能有点刺耳,实现可能会变得复杂,因为可能有多种类型的 AJAX 请求触发 401 响应(单击链接、编辑字段等)

方法B:跟踪客户端空闲时间并提示重新登录

  • 用户最初加载应用程序并登录
  • 用户使用应用程序一段时间然后闲置让应用程序打开
  • 在每个服务器响应上,浏览器代码都会启动一个空闲计时器
  • 当超过会话有效期没有服务器交互时,浏览器会抢先显示登录模式对话框
  • 用户回来,看到对话框,并可以在继续使用应用程序之前登录。

我认为这种方法可能是一种更好的用户体验,并且由于没有重试逻辑,因此实施起来也更简单。


这些中的任何一个都让你觉得可靠吗?有更好的方法吗?

session angularjs single-page-application

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

在ES2015中切换语句和范围

考虑此ES2015模块以及在节点v4.4.5中运行时的行为.

'use strict'

const outer = 1

switch ('foo') {
  case 'bar':
    const heyBar = 'HEY_BAR'
    break
  case 'baz':
    const heyBaz = 'HEY_BAZ'
    break
  default:
    const heyDefault = 'HEY_DEFAULT'
}
console.log(
  outer, // 1, makes sense, same top-level scope
  heyBar, // undefined. huh? I thought switch did NOT create a child scope
  heyBaz, // undefined. huh? I thought switch did NOT create a child scope
  heyDefault) // 'HEY_DEFAULT' makes sense
Run Code Online (Sandbox Code Playgroud)

这似乎与我内部不一致.如果switch语句没有创建词法范围,我希望所有hey*变量都是主范围的一部分,并且所有变量都表现一致.如果switch语句确实创建了一个词法范围,我仍然希望它们是一致的,但是在case子句中声明的变量的行为就像它们在子范围内一样,而default子句中的变量的行为就像它在外部范围中一样.

我的问题是 switch语句中是否涉及任何子范围,如果是,那么它们的行为方式有哪些细节?

在节点v6.4.0中,行为是不同的.看起来切换块确实创建了子块范围. …

javascript v8 node.js ecmascript-6

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

CodeBuild 源阶段的 terraform AWS CodePipeline 配置

我正在尝试使用 terraform 创建 CodePipeline 作业。我已经有一个可用的 CodeBuild 项目。这是我的资源:

resource "aws_codepipeline" "my-project" {
  name     = "my-project"
  role_arn = "${aws_iam_role.my-project-codepipeline.arn}"

  artifact_store {
    location = "${aws_s3_bucket.my-artifacts.bucket}"
    type     = "S3"
  }

  stage {
    name = "Source"

    action {
      name     = "Source"
      category = "Source"
      owner    = "AWS"
      provider = "CodeCommit"
      version  = "1"

      configuration {
        ProjectName = "my-project"
        Branch      = "master"
      }
    }
  }

  stage {
    name = "Build"

    action {
      name     = "Build"
      category = "Build"
      owner    = "AWS"
      provider = "CodeBuild"
      version  = …
Run Code Online (Sandbox Code Playgroud)

terraform aws-codepipeline aws-codebuild

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

安装SP2 for SQL Server 2008 R2 Express

我需要将SQL Server 2008 R2 Express从SP1升级到SP2.选择@@版本显示10.50.2500.0

我已经下载了我认为正确的软件包,但是当我尝试安装时,我被提示安装新实例或升级现有实例.选择第二个选项最终会让我选择混合模式或Windows身份验证.我知道那是什么,但是,为什么要问我这个?除了安装Service Pack之外,我不想更改任何有关我的环境的信息,包括身份验证模式或SA帐户的密码等.

难道我做错了什么?

sql sql-server sql-server-2008

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

提取迭代器链调用辅助函数

我正在尝试编写一个函数,它将封装一系列链接的迭代器方法调用(.lines().map(...).filter(...)),我目前已经重复了这些调用.我无法弄清楚要编译的类型签名.如果对于Rust来说这是不可能的或非常单一的,我会接受一种惯用法的建议.

use std::fs;
use std::io;
use std::io::prelude::*;
use std::iter;

const WORDS_PATH: &str = "/usr/share/dict/words";

fn is_short(word: &String) -> bool {
    word.len() < 7
}

fn unwrap(result: Result<String, io::Error>) -> String {
    result.unwrap()
}

fn main_works_but_code_dupe() {
    let file = fs::File::open(WORDS_PATH).unwrap();
    let reader = io::BufReader::new(&file);
    let count = reader.lines().map(unwrap).filter(is_short).count();
    println!("{:?}", count);

    let mut reader = io::BufReader::new(&file);
    reader.seek(io::SeekFrom::Start(0));
    let sample_size = (0.05 * count as f32) as usize; // 5% sample

    // This chain of iterator logic is duplicated
    for …
Run Code Online (Sandbox Code Playgroud)

iterator rust

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