我正在写一个快速的Elixir脚本,我想使用csv库依赖项.创建一个新的混合项目似乎有点过分,只是为这个库添加依赖管理.你会推荐什么?你会在混合项目路线中找到一个带有依赖关系的简单脚本吗?
注意:我不是在问全局如何安装和访问依赖项.问题是,"你会去混合项目路线......"建议的方法是什么?
我正试图在Elixir中测试一个属于该关联的人.
假设我有两个型号,一个产品和一个ProductType.产品属于产品类型.
defmodule Store.Product do
use Store.Web, :model
schema "products" do
field :name, :string
belongs_to :type, Store.ProductType, foreign_key: :product_type_id
timestamps
end
@required_fields ~w(name product_type_id)
@optional_fields ~w()
def changeset(model, params \\ :empty) do
model
|> cast(params, @required_fields, @optional_fields)
end
end
defmodule Store.ProductType do
use Store.Web, :model
schema "product_types" do
field :name, :string
timestamps
end
@required_fields ~w(name)
@optional_fields ~w()
def changeset(model, params \\ :empty) do
model
|> cast(params, @required_fields, @optional_fields)
end
end
Run Code Online (Sandbox Code Playgroud)
这是我在测试文件中的内容:
defmodule Store.ProductTest do
use Store.ModelCase
alias Store.Repo
alias Store.Product …Run Code Online (Sandbox Code Playgroud) 我有一个十六进制值的数据包,我正在尝试处理.它们以字符串形式出现.例如,一个数据包是C0,即192.但是,我不太确定如何将字符串值转换为整数值.
如果我用这个:
Base.decode16!("C0")
# <<192>>
Run Code Online (Sandbox Code Playgroud)
......我得到了二进制文件.
我能想到提取这个整数值的唯一方法是这样的:
<<x>> = Base.decode16!("C0")
x
# 192
Run Code Online (Sandbox Code Playgroud)
这是有效的,似乎有点惯用,但我是Elixir的新手,并且不确定这是否是最好的解决方案.您如何将字符串十六进制值转换为Elixir中的整数?
我遇到了一些反向端口隧道服务,例如http://progrium.com/localtunnel。我知道他们允许我轻松设置反向 SSH 端口隧道,这让我可以在线显示我的本地 Web 服务器(例如,我在端口 3000 上本地运行 Rails 应用程序,并使用 localtunnel 的服务,我可以通过 URL 在线与某人共享它像 xhd3s.localtunnel.com。)
不过,我对它的工作原理有些困惑。当您设置远程隧道时,您必须指定要接管的远程端口,这意味着远程服务器上的每个端口一个隧道。但是,使用这些端口隧道服务,每个人都指定相同的远程端口。唯一的区别是标记化的子域。
他们如何使用标记化的子域并将其转换为使用相同端口的唯一隧道?我怀疑有一些网络服务器魔法在起作用,但我不太确定这将如何工作。
编辑:
换句话说,我希望能够从两台不同的计算机发出这些命令:
# first computer
ssh -R 9000:localhost:3000 jim@xcvs.myserver.com
# second computer
ssh -R 9000:localhost:3000 john@csde.myserver.com
Run Code Online (Sandbox Code Playgroud)
我在 myserver.com 上做什么才能允许这两个反向端口隧道在端口 9000 上运行?
我们正在开发一个项目,其中大多数提交都是由前端开发人员添加的.他正在编辑主要是HTML,CSS,JavaScript文件,这些文件与我正在帮助的后端工作无关.如果我能显示git log前端开发人员添加的减号提交,那将是很好的,因此我可以获得与后端相关的提交视图.
我可以传递一个选项git log,允许我排除作者的所有提交吗?我只想排除这一个开发人员的提交,我仍然关心查看其他开发人员的提交.
我正在学习Golang并希望了解解决这个问题的"Go way".
具体来说,我正在使用该sql软件包,我在代码中看到了一些冗余功能,我想将其转换为函数.
我有,1)用户结构:
type User struct {
ID int
FirstName string
LastName string
}
Run Code Online (Sandbox Code Playgroud)
2)从数据库中获取ID的一个用户的函数(Postgresql):
func GetUserById(id int) (user User) {
sql := `
SELECT id, first_name, last_name
FROM users
WHERE id = $1
`
row := db.QueryRow(sql, id)
err := row.Scan(&user.ID, &user.FirstName, &user.LastName)
if err != nil {
panic(err)
}
return
}
Run Code Online (Sandbox Code Playgroud)
并且,3)用于获取数据库中的所有用户的功能:
func GetUsers() (users []User) {
sql := `
SELECT id, first_name, last_name
FROM users
ORDER BY last_name …Run Code Online (Sandbox Code Playgroud) 我想测试golang命令行应用程序的输出,但是我不太确定如何使用go的测试库来实现。
假设我有一个像这样的程序:
package main
import (
"flag"
"fmt"
)
func main() {
const (
cityDefault = "San Francisco"
cityDoc = "the city you want the forecast for"
)
var city string
flag.StringVar(&city, "city", cityDefault, cityDoc)
flag.StringVar(&city, "c", cityDefault, cityDoc)
flag.Parse()
fmt.Println(city)
}
Run Code Online (Sandbox Code Playgroud)
我想测试这两个:
$ ./myapp -c "Los Angeles"
$ ./myapp -city "Los Angeles"
Run Code Online (Sandbox Code Playgroud)
...输出Lost Angeles。因此,我想问题是,如何集成测试golang命令行应用程序的输出?
我刚刚在我的 Phoenix 应用程序中安装了Credo mix 库,它告诉我该web/views/error_helpers.ex文件在错误标记方法中有重构机会:
def error_tag(form, field) do
if error = form.errors[field] do
content_tag :span, translate_error(error), class: "help-block"
end
end
Run Code Online (Sandbox Code Playgroud)
信条给出的信息是:
条件中不应存在匹配项
if。
换句话说,if error = form.errors[field] do里面有一个模式匹配。但是,除了该消息之外,Credo 库没有详细说明。
为什么这样不好?
我正在尝试增加IEx.pry会话的超时时间。具体来说,我在Phoenix框架单元测试中试探。我在测试正文中添加了以下内容:
require IEx
IEx.pry
Run Code Online (Sandbox Code Playgroud)
我查看了该pry方法的IEx文档,它说第一个参数是以毫秒为单位的超时时间。但是,当我将撬叫更新为:
IEx.pry(60000)
Run Code Online (Sandbox Code Playgroud)
...它仍然会在30秒后超时。如何增加此超时时间?
为了后代的缘故,在Elixir 1.1中,您可以--trace在测试命令上使用该标志,并且将使用超时无限。例如:
$ iex -S mix test test/models/user_test.exs:37 --trace
Run Code Online (Sandbox Code Playgroud) 我正在使用Angular 2和AngularFire 2与Firebase进行交互.在Firebase中,我有一个标签集合.我想创建或增加标签的数量.我正在使用的代码看起来像这样:
let tagName = "angular";
let tagObs = this.af.database.object(`/tags/${tagName}`);
tagObs.subscribe(function(snapshot) {
let newValue = (snapshot.$value) ? (snapshot.$value + 1) : 1;
this.tagObs.set(newValue);
}.bind({ tagObs: tagObs ));
Run Code Online (Sandbox Code Playgroud)
我不清楚为什么,但这不起作用.它创建了一个无限循环,只是不断增加标记值.
使用AngularFire 2,我应该如何创建或增加节点的值(在这种情况下为"标签")?
这是具有"胖箭头"功能的相同代码.存在同样的问题......无限循环.
let tagName = "angular";
let tagObs = this.af.database.object(`/tags/${tagName}`);
tagObs.subscribe((snapshot) => {
let newValue = (snapshot.$value) ? (snapshot.$value + 1) : 1;
tagObs.set(newValue);
});
Run Code Online (Sandbox Code Playgroud)
为了清楚起见,这是我最终使用的实际代码:
let tagObs = this.af.database.object(`/tags/${tagName}`);
tagObs.transaction(function(currentCount) {
return currentCount + 1;
});
Run Code Online (Sandbox Code Playgroud)