小编Fir*_*gon的帖子

psql:无法连接到服务器:没有这样的文件或目录(Mac OS X)

重启我的Mac后,我遇到了可怕的Postgres错误:

psql: could not connect to server: No such file or directory
 Is the server running locally and accepting
 connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
Run Code Online (Sandbox Code Playgroud)

发生这种情况的原因是因为我的macbook完全因为一个无关的问题而冻结,我不得​​不使用电源按钮进行硬重启.重新启动后,由于此错误,我无法启动Postgres.

postgresql macos

213
推荐指数
12
解决办法
17万
查看次数

Angular 2动态嵌套表单

基本上我想用嵌套对象创建一个动态表单,如下图所示: Angular 2嵌套表单示例

  • 付款是在模型上的阵列中
  • 我们应该能够根据需要添加/取消支付.
  • 表单应同步底层表单控件和模型
  • 支付的数量是任意的,应该从模型中加载到表单中

在Angular 2中我没有找到如何做到这一点的工作示例,尽管在Angular 1中这很容易做到.


以下是我原来的问题,我已经更新了它以便澄清(见上文):

首先,我只是想指出,我知道几天前刚刚发布了新版本的Angular 2 rc.2.因此,创建动态嵌套表单的代码可能已经改变了一些,但是没有足够的文档可以解决这个问题.

在Angular 2的最新版本中(我目前正在使用rc.1但计划更新到rc.2)我需要创建一个这样的表单(伪代码视图):

<form [ngFormModel]="form" (ngSubmit)="onSubmit()">
  <input type="text" ngControl="name">

  <div *ngFor="let expense for expenses; let i = index;" control-group="expenses">
    <input type="text" ngControl="expense.amount" [(ngModel)]="myModel.expenses[i].amount"> 
    <input type="checkbox" ngControl="expense.final" [(ngModel)]="myModel.expenses[i].final"> 
  </div>

  <a class="button" (click)="addExpenseControl()">Add</a>
  <a class="button" (click)="deleteExpenseControl()">Delete</a>
</form>
Run Code Online (Sandbox Code Playgroud)

所以上面的伪代码不起作用,但说实话,因为缺乏文档,我无法弄清楚如何连接这样的东西.有一些关于嵌套ControlGroup的教程,但由于我们需要能够动态添加和删除控制组,所以这不适合这种情况,而且我还需要能够将它们与模型同步.

我发现这个plunkr在这里由Angular团队提供,它允许向表单添加控件 - 但这不是添加/删除ControlGroup,而是使用ControlArray,我不确定这是否适用于此?

我非常熟悉使用较新的基于模型的Angular 2表单,但是我正在掌握资源以便正确地嵌套它们(动态!),并将这些嵌套数据绑定到主表单模型中.我如何在视图中引用嵌套控件?上面的伪代码是否接近?我会从我的控制器发布代码,但说实话,我不知道上面的嵌套费用(ControlGroup ??)从哪里开始......

forms angular2-forms angular

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

从*Routed*Child Component访问Parent @Component和vars

我正在尝试使用嵌套子组件中的按钮切换位于主App模板顶部的侧面导航菜单.我无法弄清楚如何到达父级中的sidenav组件来告诉它sidenav.open().

我知道子组件上的@Input和@Output,但据我所知,要使用它,我需要为子组件添加某种DOM标记来附加它们吗?如:

<app>
  <sidenav-component #sidenav>...</sidenav-component>

  <child [someInput]="some_parent_var" (childOpensNav)="sidenav.open()"></child>
</app>
Run Code Online (Sandbox Code Playgroud)

关于如何做到这一点的文章很多.问题是我正在路由到此组件,因此<child>代码中没有明确存在标记.相反,我的代码是这样的:

<app>
  <sidenav-component #sidenav>...</sidenav-component>

  <router-outlet></router-outlet>
</app>
Run Code Online (Sandbox Code Playgroud)

如果我有一个子组件被路由到,我该怎么做sidenav.open()或以某种方式访问​​孩子的父组件?

一些想法:我已经做了一些研究并思考了几种方法,并且不确定它们是否正确或甚至可以工作......一种方法是使用Injector服务并尝试遍历父母,但这感觉不对:

// child component
constructor(injector: Injector) {
  this.something = injector.parent.get(Something);
}
Run Code Online (Sandbox Code Playgroud)

或者可能在父级中创建一个服务,以某种方式附加到Sidenav组件,然后将此服务注入到子级中?

angular2-routing angular2-services angular

11
推荐指数
1
解决办法
3690
查看次数

CarrierWave_Direct gem:在S3上保持当前目录结构

所以我有一个网站已经在生产中使用了载波波浪宝石,图像存储在亚马逊s3上.我的上传器使用该store_dir方法指定要放入已处理图像的特定结构.

好吧,现在在我的开发环境中,我添加了carrierwave_direct gem以开始直接上传到S3.问题是这个gem完全覆盖了我的上传器中的store_dir和filename默认值.我无法推动我的完全工作上传者,因为我的所有旧图像链接都将被破坏.

我的理解是CWdirect gem会将原始图像文件上传到S3上的"temp"目录,然后S3会响应并为您提供一个key变量,这样您就可以抓住这个文件并按照您认为合适的方式处理它.那么,我应该在carrierwave中使用一个完全独立的图像上传器类来处理图像并将它们放在正确的文件夹中吗?这意味着我将有一个专用于carrierwave_direct的上传器上传到这个宝石似乎要上传的地方; 我将使用链接到我的真实模型的另一个uploader.rb类来保存我当前的store_dir和文件名结构?

在任何情况下,我的基本问题是,如果我已经在生产中使用特定文件夹结构中的图像运行CW,我该如何使用CarrierWave_Direct gem?

ruby-on-rails image amazon-s3 carrierwave

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

iOS网络连接失败政策建议

我正在寻找有关处理iPhone应用程序(iOS9/Swift2/Xcode7)网络连接问题的最佳方法的建议,以提供最佳用户体验,因为我们知道移动数据网络不可靠.我有我的编码选项,但我想知道什么对其他有经验的技术人员有效.那里有很多信息,但是当发生连接失败时,我找不到具体的策略.

这是我处理我想要实现的失败连接的基本策略(以及问题):

  1. 应用程序向api.myserver.com发送请求,请求失败
  2. 等待X秒(s)并再次尝试向api.myserver.com请求(您会建议多少次尝试以及在什么时间间隔?)
  3. 尝试ping其他服务器(即google.com),看看我们是否可以访问api.myserver.com以外的资源
  4. 如果我们能够成功ping google.com,那么我们就知道我们的互联网正在运行,所以我们再次尝试ping api.myserver.com
  5. 如果最后一次ping失败,那么我们会提醒用户我们由于某种原因无法通信,请稍后再试

我正在使用Apple技术推荐的这个SO答案中概述的理念,这通常意味着您始终首先检查与服务器的连接,使用Reachability作为单独检查以确保手机硬件可用.

在此过程中的任何时候,如果Reachability为false,那么我们会将请求放入队列中,以便在恢复电话硬件连接时再次尝试.

我认为我已经掌握了所涉及的代码,但是寻找诸如"这对我们的应用程序有用并且在连接问题期间提供良好的用户体验......"并且被批准在Apple应用程序商店中使用的见解. ".我理解在失败的情况下尝试/重试连接的概念并警告用户(目前我的代码已成功完成此操作),但仍然不能很好地使用一个好的策略来使用多少次我应该尝试重新连接以及什么间隔?

nsurlconnection reachability ios swift alamofire

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

CarrierWave文件夹结构的最佳实践

我一直在搜索这个网站,但似乎无法找到构建图像和文件上传文件夹/文件的最佳方法.我使用以下方法部署Ruby on Rails网站:

  • CarrierWave(上传)
  • Capistrano(部署)
  • 亚马逊S3(存储)
  • Capistrano(部署)

该网站允许用户设置他们将上传图像的配置文件.我想使用一个文件夹结构,可以很好地扩展到数千(或数万)用户上传多个图像.

目前我正在使用默认的CarrierWave目录结构:

def store_dir
  "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
Run Code Online (Sandbox Code Playgroud)

但我认为或许在文件夹名称中包含user_id会更好?将此文件夹移到文件夹之外是否更好public/uploads?我不应该在开发,生产和测试环境中使用不同的文件夹吗?我想以最佳方式覆盖store_dir,对于拥有数千名用户的网站,每个配置文件上传大约15个文件(存储为完整大小,个人资料和缩略图大小).

capistrano ruby-on-rails carrierwave

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

ruby gem 的版本控制最佳实践

我经常向它添加新的宝石和功能。在我上次发布之前,我的一些代码在我的开发环境中崩溃了,我发现这是因为我的一些 gem(特别是 CarrierWave 和 jQuery)已经更新并且无法使用某些代码。

管理有关版本控制的 gem 的最佳方法是什么?有些人似乎说您应该始终在 Gemfile 中指定版本号......但是对于所有 gems 来说?一些?

我知道对于某些 gem,由于错误等原因,您可能必须存储版本号。但除此之外,在开发过程中,有时我会添加新的 gem,并且可能需要执行 abundle update来让新的东西正常工作,但随后不想破坏旧东西。

我有很好的测试,希望在投入生产之前发现很多错误。其他用户如何确保 gem 更新在开发时不会破坏完全不相关的功能?

versioning version-control rubygems ruby-on-rails

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