小编Afs*_*ami的帖子

使用operator + vs使用stringbuffer进行字符串连接?

如果我做实例方法,在连接方面是否存在b/w 1和2的差异.我的意思是在任何一种情况下,最终只会构造一个对象,即"abc".只是我看到的区别是测试将位于permgen空间内,即使线程来自实例方法,但是一旦线程超出方法,x将被垃圾收集但是构造的对象数量的术语将是相同的.对?

// option 1
String test="a"+"b"+"c";

// option 2  
StringBuffer x = new StringBuffer().append("a").append("b").append("c").toString()
Run Code Online (Sandbox Code Playgroud)

我引用链接http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuffer.html来得出这个结论.

java string

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

Phoenix/Ecto - 协会不工作

通过示例指南工作。本章中详细介绍的内容在我的应用程序中不起作用。看起来很简单的东西。我有一个视频模型:

defmodule Rumbl.Video do
  use Rumbl.Web, :model

  schema "videos" do
    field :url, :string
    field :title, :string
    field :description, :string
    belongs_to :user, Rumbl.User
    belongs_to :category, Rumbl.Category

    timestamps()
  end

  @doc """
  Builds a changeset based on the `struct` and `params`.
  """
  def changeset(struct, params \\ %{}) do
    struct
    |> cast(params, [:url, :title, :description])
    |> validate_required([:url, :title])
    |> assoc_constraint(:category)
  end
end
Run Code Online (Sandbox Code Playgroud)

我还有一个类别模型:

defmodule Rumbl.Category do
  use Rumbl.Web, :model

  schema "categories" do
    field :name, :string

    timestamps()
  end

  @doc """
  Builds a changeset based on …
Run Code Online (Sandbox Code Playgroud)

ecto phoenix-framework

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

凤凰会议未被删除

我正在为Phoenix Elixir应用程序编写身份验证.我有一个插件我的浏览器管道,检查会话中的user_id.如果它存在,我将用户添加到conn:

router.ex

pipeline :browser do
    plug :accepts, ["html"]
    plug :fetch_session
    plug :fetch_flash
    plug :protect_from_forgery
    plug :put_secure_browser_headers
    plug AccountMgr.Plugs.CheckSessionForUser
end
Run Code Online (Sandbox Code Playgroud)

check_for_user_on_session.ex

def call(conn, _opts) do
    user_id = get_session(conn, :user_id)

    cond do
      user = user_id && Repo.get(User, user_id) ->
        assign(conn, :current_user, user)
      true ->
        assign(conn, :current_user, nil)
    end
end
Run Code Online (Sandbox Code Playgroud)

在我的登录功能中,如果凭据正确,我将user_id添加到会话:

cond do
      user && checkpw(password, user.password_hash) ->
        conn
        |> assign(:user, user)
        |> put_session(:user_id, user.id)
        |> configure_session(renew: true) 
        |> redirect(to: portfolio_path(conn, :index)) …
Run Code Online (Sandbox Code Playgroud)

elixir phoenix-framework

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

Phoenix.HTML.Form不会从变更集中获取错误

我有模板代码,如下所示:

<%= form_for @changeset, @action, fn f -> %>
  <%= if Enum.any?(f.errors) do %>
    <%= for {attr, message} <- f.errors do %>
      <li><%= humanize(attr) %> <%= message %></li>
    <% end %>
  <% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

但即使更改集包含错误,也不会打印错误.这是检查的表单结构.请注意,即使错误列表是根据更改集生成的,但错误列表仍为空.

%Phoenix.HTML.Form{data: %BlogPhoenix.Comment{__meta__: #Ecto.Schema.Metadata<:built, "comments">,
  content: nil, id: nil, inserted_at: nil, name: nil, post_id: nil,
  posts: #Ecto.Association.NotLoaded<association :posts is not loaded>,
  updated_at: nil}, errors: [], hidden: [], id: "comment",
 impl: Phoenix.HTML.FormData.Ecto.Changeset, index: nil, name: "comment",
 options: [method: "post"],
 params: %{"content" => nil, "name" …
Run Code Online (Sandbox Code Playgroud)

elixir phoenix-framework

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

如何读取HTTP分块响应并在Elixir中向客户端发送分块响应?

我正在使用Elixir/Phoenix,我有一个端点,它返回一个分块响应,比如说一个永无止境的日志行流.但是,日志行来自另一个服务A,它也返回一个分块响应.我希望我的端点从服务A读取分块响应,并以块的形式将它们传递给客户端.从本质上讲,它只是服务A的代理,但我不能让客户端直接连接到服务A,因为我需要执行一些身份验证.

proxy logging elixir chunked-encoding phoenix-framework

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

Elixir 中错误处理的最佳方式是什么

我正在使用简单的凤凰灵药应用程序。在此应用程序中,我尝试公开一个 REST API 来保存和检索数据。

就我而言,如果主键(电子邮件地址)重复,我的应用程序将引发错误。我需要知道处理这个错误的最佳方法;try-catch 或任何其他更好的解决方案。

这是我的数据保存方法

def post(conn, %{"stooge" => stooge, "name" => name, "email" => email , "password" => password})do
    respond = Repo.insert!(%ApiDb.User{name: name, email: email, stooge: stooge, password: password})
    json conn, respond
  end
Run Code Online (Sandbox Code Playgroud)

样本有效载荷

{
    "stooge": "moe",
    "name": "Joe",
    "email": "p31111ww11eee32111111134@dmain.com",
    "password":"asdasd"
}
Run Code Online (Sandbox Code Playgroud)

模型/user.ex

defmodule ApiDb.User do
  use ApiDb.Web, :model
  schema "users" do
    field :password, :string
    field :name, :string
    field :email, :string
    field :stooge, :string
    timestamps()
  end

   @doc """
  Builds a changeset based on the `struct` and …
Run Code Online (Sandbox Code Playgroud)

elixir phoenix-framework

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

如何断开Postgrex连接?

我试图弄清楚如何连接到postgres数据库,运行查询,然后断开连接.

看看Postgrex,我建立了一个连接

{:ok, pid} = Postgrex.start_link(hostname: "localhost", username: "postgres", password: "postgres", database: "postgres")
Run Code Online (Sandbox Code Playgroud)

然后我使用执行我的查询

Postgrex.query!(pid, "SELECT user_id, text FROM comments", [])
Run Code Online (Sandbox Code Playgroud)

但是,我怎么断开?

我想断开连接,因为我循环遍历N个数据库并对所有数据库运行相同的查询.

我尝试退出过程,例如Process.exit(pid, :bye),但它也因为它的开始而杀死了产卵过程start_link/3.我找不到一个start/3功能Postgrex.

postgresql elixir ecto phoenix-framework postgrex

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

如何在phoenix elixir框架中访问地图内的值

我有message = %{"to" => "testuser", "value" => "asdads"}地图.我需要访问此地图中"to"键的值

message.to
message[:to]
Map.fetch!(message, to)
Run Code Online (Sandbox Code Playgroud)

到目前为止没什么用

这是控制台错误消息

[error] GenServer #PID<0.395.0> terminating
** (KeyError) key :to not found in: %{"to" => "testuser", "value" => "aadadadad"}
    (phoenix_chat) web/channels/room_channel.ex:31: PhoenixChat.RoomChannel.handle_in/3
    (phoenix) lib/phoenix/channel/server.ex:225: anonymous fn/4 in Phoenix.Channel.Server.handle_info/2
    (stdlib) gen_server.erl:601: :gen_server.try_dispatch/4
    (stdlib) gen_server.erl:667: :gen_server.handle_msg/5
    (stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3
Last message: %Phoenix.Socket.Message{event: "message:new", payload: %{"to" => "testuser", "value" => "aadadadad"}, ref: "4", topic: "room:Pamidu"}
State: %Phoenix.Socket{assigns: %{user: "Pamidu"}, channel: PhoenixChat.RoomChannel, channel_pid: #PID<0.395.0>, endpoint: PhoenixChat.Endpoint, handler: PhoenixChat.UserSocket, id: nil, …
Run Code Online (Sandbox Code Playgroud)

elixir phoenix-framework

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

MySQL查询用于查找图中边的权重

让我们说我们有表SP(sid,pid),表明学生sid参与项目pid.现在我想要一个mysql查询来选择至少参与一个项目的所有学生对,以及他们合作的项目数量.

例如:
输入:
S1 P1
S1 P2
S2 P1
S3 P1
S4 P1
S4 P2

输出:

S1 S2 1
S1 S3 1
S1 S4 2
S2 S3 1
S2 S4 1
S3 S4 1

mysql join

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

使用带有API代码示例的SimpleDateFormatter的"Unparseable date"

我正在尝试解析日期,例如"Sat, 29 Dec 2012 04:07:09 +0100" 我正在使用格式设置为的SimpleDateFormatter

new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.getDefault());
Run Code Online (Sandbox Code Playgroud)

不幸的是我得到了

12-29 04:44:29.890: E/MainActivity(3995): Unparseable date: "Sat, 29 Dec 2012 04:07:09 +0100" (at offset 0)
12-29 04:44:29.890: E/MainActivity(3995): java.text.ParseException: Unparseable date: "Sat, 29 Dec 2012 04:07:09 +0100" (at offset 0)
Run Code Online (Sandbox Code Playgroud)

我绝对不会得到,因为参数正则表达式是直接从文档http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html下复制和粘贴的

谢谢!

java parsing android date simpledateformat

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

Phoenix,模型架构中的功能

如何在架构中添加功能?我想创建用于动态地将字段添加到模型模式的函数.例:

  def func do
    # .. loop to create dynamic fields
    field :street, :string
  end

  schema "objects" do
    func
  end

... Error:

** (CompileError) web/models/objects.ex:12: undefined function func/0
Run Code Online (Sandbox Code Playgroud)

elixir ecto phoenix-framework

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

如何在phoenix elixir聊天应用程序中监控树中运行Redix并从不同模块访问

我想在我的聊天应用程序中使用{:redix,"〜> 0.6.1"} hex包,并从监督树开始

{:ok, conn} = Redix.start_link()
{:ok, conn} = Redix.start_link(host: "example.com", port: 5000)
{:ok, conn} = Redix.start_link("redis://localhost:6379/3", name: :redix)


Redix.command(conn, ["SET", "mykey", "foo"])
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将连接开始链接放到子进程时它会出错

children = [
      # Start the Ecto repository
      supervisor(PhoenixChat.Repo, []),
      # Start the endpoint when the application starts
      supervisor(PhoenixChat.Endpoint, []),
      # Start your own worker by calling: PhoenixChat.Worker.start_link(arg1, arg2, arg3)
      # worker(PhoenixChat.Worker, [arg1, arg2, arg3]),
      supervisor(PhoenixChat.Presence, []),

      #supervisor(Phoenix.PubSub.Redis, [:chat_pubsub, host: "127.0.0.1"])
    ]
Run Code Online (Sandbox Code Playgroud)

如何启动redix连接并将数据存储到Redis?

elixir redis elixir-framework phoenix-framework

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