小编She*_*yar的帖子

"git add -u"和"git add -A"有什么区别?

好的,所以当我遇到" 从已从磁盘中删除的Git仓库中删除多个文件 "时,我正在搜索"如何从Git中删除手动删除的文件"而不实际git rm file.txt为每个文件执行操作.

两个最受欢迎的命令是:

  • git add -u
  • git add -A

虽然它们都适合我,但我仍然无法理解其中的差异,并且页面上的解决方案也没有解释.我的问题是,它们如何彼此不同,以及可以使用哪些其他git命令来删除从磁盘手动删除的文件?

git git-add

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

Android新的收件箱应用程序样式列表视图,左右滑动

我试图建立Android新的收件箱样式列表视图左右滑动,如图所示,我尝试了47deg swipelistview但它不稳定,有没有其他库可用?!

右键滑动 离开了

到目前为止尝试了47度

 public class MainActivity extends Activity {

        Listview pullToRefreshListView;
        SwipeListView swipelistview;
        ItemAdapter adapter;
        List<ItemRow> itemData;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            pullToRefreshListView = (ListView) findViewById(R.id.example_swipe_lv_list);
            swipelistview = pullToRefreshListView.getRefreshableView();
            itemData = new ArrayList<ItemRow>();
            adapter = new ItemAdapter(this, R.layout.custom_row, itemData);

            swipelistview.setSwipeListViewListener(new BaseSwipeListViewListener() {
                @Override
                public void onOpened(int position, boolean toRight) {
                    if (toRight) {
                        adapter.remove(position);
                        Toast.makeText(MainActivity.this, "Open to dismiss",
                                Toast.LENGTH_SHORT).show();
                    } // swipelistview.dismiss(position);
                    else {
                        Toast.makeText(MainActivity.this, "Open to edit",
                                Toast.LENGTH_SHORT).show();
                    }
                }

                @Override
                public void onClosed(int …
Run Code Online (Sandbox Code Playgroud)

android listview swipeview

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

Phoenix - 无效的CSRF(跨站点伪造保护)令牌错误

尝试更新(或创建)记录时,我收到无效的CSRF令牌错误.我正在使用Elixir v1.0.3,Erlang/OTP 17 [erts-6.3]和Phoenix v0.8.0(我想,我不知道如何查看Phoenix的版本).我正在创建一个Web应用程序,主要遵循Phoenix指南和Elixir Dose Jobsite示例资源.但是,当我尝试从html表单发布信息时,我收到无效的CSRF令牌错误.根据错误中给出的建议,我将'x-csrf-token':csrf_token添加到操作中.

edit.html.eex:

<h2>Edit Directory</h2>
<form class="form-horizontal" action="<%= directory_path @conn, :update, @directory.id, 'x-csrf-token': @csrf_token %>" method="post">
  <div class="form-group">
    <label for="directory" class="col-sm-2 control-label">Directory</label>
    <div class="col-sm-10">
      <input type="hidden" name="_method" value="PATCH">
      <input type="text" class="form-control" value="<%= @directory.directory %>" name="directory" placeholder="Directory" required="required">
    </div>
  </div>
...
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

[error] #PID<0.579.0> running Ainur.Endpoint terminated
Server: localhost:4000 (http)
Request: POST /config/directories/2?x-csrf-token=
** (exit) an exception was raised:
    ** (Plug.CSRFProtection.InvalidCSRFTokenError) Invalid CSRF (Cross Site Forgery Protection) token. Make sure that all your non-HEAD and non-GET …
Run Code Online (Sandbox Code Playgroud)

elixir phoenix-framework

20
推荐指数
3
解决办法
9352
查看次数

我可以在哪里放置插头,然后在我的Phoenix应用程序中使用不同控制器中的插件?

我创建了我的第一个Elixir- Phoenix应用程序.我已经写了一些我想在多个控制器中使用的插件,现在有很多代码重复,因为插件代码在我的所有控制器中重复.

我的问题是,是否有一个文件,我可以把所有的插头,然后访问并使用不同的控制器

# somefile to define my plugs

defp load_subject(conn, _) do
    subject = Subject |> Repo.get conn.params["subject_id"]

    assign(conn, :subject, subject)
end

defp load_topic(conn, _) do
    topic = Topic |> Repo.get conn.params["topic_id"]

    conn |> assign :topic, topic
end
Run Code Online (Sandbox Code Playgroud)

然后在我的控制器中使用它们:

# First Controller
defmodule MyApp.FirstController do
    use MyApp.Web, :controller

    plug :load_subject
    plug :load_topic
    plug :action

    def some_action(conn, _) do
        # do something
    end

    def another_action(conn, _) do
        # do some other thing
    end
end …
Run Code Online (Sandbox Code Playgroud)

elixir phoenix-framework

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

循环遍历Map的键值对

如何在Elixir中迭代地图的键值对?

这不起作用:

my_map = %{a: 1, b: 2, c: 3}

Enum.each my_map, fn %{k => v} ->
    IO.puts "#{k} --> #{v}"
end
Run Code Online (Sandbox Code Playgroud)

elixir

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

如何从凤凰城的环境文件中获取变量值?

我正在部署我的第一个Phoenix应用程序,并且我在环境文件(dev.exsprod.exs)中指定了变量的值.

现在我想弄清楚如何在我的控制器中访问它们.

# config/dev.exs
config :my_app, MyApp.Endpoint,
  http: [port: 4000],
  debug_errors: true,
  cache_static_lookup: false,
  my_var: "DEVELOPMENT VALUE"

# config/prod.exs
config :my_app, MyApp.Endpoint,
  http: [port: {:system, "PORT"}],
  url: [host: "example.com"],
  my_var: "PRODUCTION VALUE"
Run Code Online (Sandbox Code Playgroud)

elixir phoenix-framework

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

如何在Phoenix框架中有选择地禁用CSRF检查

我正在尝试创建指向我网站的Facebook页面标签.Facebook将HTTP POST请求发送到我网站的网址.这里的问题是服务器有一个内置的CSRF检查,它返回以下错误:

(Plug.CSRFProtection.InvalidCSRFTokenError) invalid CSRF (Cross Site  Forgery Protection) token, make sure all requests include a '_csrf_token' param or an 'x-csrf-token' header`
Run Code Online (Sandbox Code Playgroud)

服务器需要Facebook不能拥有的CSRF令牌.所以,我想有选择地为路径www.mywebsite.com/facebook禁用CSRF.

我怎么能在Phoenix Framework中做到这一点?

csrf elixir csrf-protection phoenix-framework

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

正常关闭GenServer

我用GenServer编写了一个Elixir应用程序,它在启动时启动外部应用程序并关闭它并在退出时进行其他清理.我在init/1回调中的回调和清理代码中添加了启动功能terminate/2.

init当GenServer开始代码工作正常,并且terminate也被称为方法中,当:stop被手动发送信号,但在意外停机和中断的情况下(如在按下Ctrl + C的情况下)在IEx标志,该终止代码是不叫.


目前,我已经完成了大量的论坛帖子,博客文章和文档,包括:

来自Elixir Docs - GenServers:

如果在没有捕获退出时从任何进程GenServer接收到退出信号(即不是:normal),它将以相同的原因突然退出,因此不会调用terminate/2.请注意,过程确实NOT默认陷阱退出,并且当链接的过程退出或它的节点断开发送一个退出信号.

因此,不保证terminate/2GenServer退出时调用 .出于这些原因,我们通常建议通过使用监控或链接本身在分离的流程中实现重要的清理规则.

但我完全不知道如何获得:init.stop,linked processes或其他任何与此相关的工作(因为这是我第一次使用GenServers).


这是我的代码:

defmodule MyAwesomeApp do
  use GenServer

  def start do
    GenServer.start_link(__MODULE__, nil)
  end

  def init(state) do
    # Do Bootup stuff

    IO.puts "Starting: #{inspect(state)}"
    {:ok, state}
  end

  def terminate(reason, state) do …
Run Code Online (Sandbox Code Playgroud)

elixir gen-server

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

访问模块外部的模块属性

我在elixir中有一个属性的模块:

defmodule MyAwesomeModule do
  @awesome_number 7

  # other stuff...
end
Run Code Online (Sandbox Code Playgroud)

我无法访问@awesome_number模块外部.我尝试过使用该Module.get_attribute/2方法,但它会抛出此错误:

iex(79)> Module.get_attribute(MyAwesomeModule, :awesome_number)
** (ArgumentError) could not call get_attribute on module MyAwesomeModule because it was already compiled
    (elixir) lib/module.ex:1101: Module.assert_not_compiled!/2
    (elixir) lib/module.ex:1016: Module.get_attribute/3
Run Code Online (Sandbox Code Playgroud)

所以现在,我将模块属性包装在一个方法中来访问它,但它对我来说并没有多大意义.我可以简单地使用该方法并停止一起使用该属性:

defmodule MyAwesomeModule do
  @awesome_number 7

  def awesome_number, do: @awesome_number

  # other stuff...
end
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,有更好/正确的方法吗?

elixir

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

在凤凰城的Rails'fore_filter等价物

我刚刚开始研究我的第一个凤凰应用程序,问题是我的控制器中的每个操作都有一些共同的代码行,我想分开.他们从多个Ecto模型中获取数据并将其保存到变量中以供使用.

在Rails中,我可以简单地定义一个方法并before_filter在我的控制器中调用它.我可以从一个访问结果@variable.我知道使用Plugs是关键,但我不知道如何实现这一点,更具体地说:

  • 访问params来自的请求Plug
  • 并使变量在动作中可访问

作为参考,这是我正在尝试做的rails版本:

class ClassController < ApplicationController
    before_filter :load_my_models

    def action_one
        # Do something with @class, @students, @subject and @topics
    end

    def action_two
        # Do something with @class, @students, @subject and @topics
    end

    def action_three
        # Do something with @class, @students, @subject and @topics
    end

    def load_my_models
        @class    = Class.find    params[:class_id]
        @subject  = Subject.find  params[:subject_id]

        @students = @class.students
        @topics   = @subject.topics
    end
end
Run Code Online (Sandbox Code Playgroud)

谢谢!

ruby-on-rails elixir phoenix-framework

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