我一直在尝试进行实验,看看函数中的局部变量是否存储在堆栈中.
所以我写了一点性能测试
function test(fn, times){
var i = times;
var t = Date.now()
while(i--){
fn()
}
return Date.now() - t;
}
ene
function straight(){
var a = 1
var b = 2
var c = 3
var d = 4
var e = 5
a = a * 5
b = Math.pow(b, 10)
c = Math.pow(c, 11)
d = Math.pow(d, 12)
e = Math.pow(e, 25)
}
function inversed(){
var a = 1
var b = 2
var c = 3 …Run Code Online (Sandbox Code Playgroud) 在std Elixir包中有很多行
@type t :: %__MODULE__{}
Run Code Online (Sandbox Code Playgroud)
我知道@type注释用于注释注释中类型的短符号@spec,但是这一行用于诸如uri.ex之类的模块中,它根本没有@spec注释.
这个注释的目的是什么?
我正在努力了解Elixir中的模块.因为在Erlang中他们只是原子,但在Elixir中,原子始于:人物.所以我在iex中检查了这些表达式:
iex(16)> is_atom(List)
true
iex(17)> is_atom(:List)
true
iex(18)> List == :List
false
iex(19)> a = List
List
iex(20)> b = :List
:List
Run Code Online (Sandbox Code Playgroud)
所以,很明显,这两个List和:List的原子.但是,它如何在Erlang互操作层上运行?因为Erlang ok等于Elixir的:ok.
那么这两个(List和:List)中的哪一个'List'在Erlang中是相同的?
我遵循了本教程,我的简单测试总是因为这个错误而失败
1) test /index returns a list of contacts (WorldNote.ChatsControllerTest)
test/controllers/chats_controller_test.exs:16
** (RuntimeError) cannot begin test transaction because we are already inside one
stacktrace:
(ecto) lib/ecto/adapters/sql.ex:321: anonymous fn/6 in Ecto.Adapters.SQL.start_test_transaction/3
(ecto) lib/ecto/adapters/sql.ex:615: Ecto.Adapters.SQL.pool_transaction/4
(ecto) lib/ecto/adapters/sql.ex:314: Ecto.Adapters.SQL.start_test_transaction/3
test/controllers/chats_controller_test.exs:9: WorldNote.ChatsControllerTest.__ex_unit_setup_0/1
test/controllers/chats_controller_test.exs:1: WorldNote.ChatsControllerTest.__ex_unit__/2
Run Code Online (Sandbox Code Playgroud)
代码很简单
defmodule WorldNote.ChatsControllerTest do
use ExUnit.Case, async: false
use Plug.Test
alias WorldNote.Chats
alias WorldNote.Repo
alias Ecto.Adapters.SQL
setup do
SQL.begin_test_transaction(Repo)
on_exit fn ->
SQL.rollback_test_transaction(Repo)
end
end
test "/index returns a list of contacts" do
contacts_as_json =
%Chats{fbid: 1234567890, latitude: …Run Code Online (Sandbox Code Playgroud) 我想在特定文件夹中递归地编译和加载所有模块.我知道我可以用Mix项目做到这一点
iex -S mix run
Run Code Online (Sandbox Code Playgroud)
这将加载lib/目录中的所有文件.
但是,我想在非混合脚本中使用相同的行为 - 如果可能的话,编程方式.有什么像这样的Code.compile_all("directory/")
API吗?
我一直在读Scala Futures多次减少回调问题.我有一个代码开始看起来有问题.
val a = Future(Option(Future(Option(10))))
a.map { b =>
b.map { c =>
c.map { d =>
d.map { res =>
res + 10
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何让这段代码更平坦?
//编辑@againstmethod
for{
b <- a
c <- b
d <- c
res <- d
} yield res + 10
Run Code Online (Sandbox Code Playgroud)
此代码将无法编译
错误:(21,8)类型不匹配; 找到:需要选项[Int]:
scala.concurrent.Future [?] res < - d
^
一开始我想标记这不是一个常规的IDE vs IDE问题,因为Dart仍处于初期阶段,而且不是哪个更好,而是哪个更新.
目前只有两个不错的Dart IDE.Dart编辑器和WebStorm.哪一个有更好的Dart开发功能?
我知道Dart编辑器是由负责Dart语言的人制作的,但JetBrains(WebStorm)更加成熟和经验丰富.
任何人都可以列出今天这些IDE之间的差异吗?
我正在做我的第一个凤凰应用程序,并试图做新的/ 2控制器.我写的代码是
def new(conn, %{"fbid" => fbid, "latitude" => lat, "longitude" => lng, "content" => content}) do
{fbid, _} = Integer.parse(fbid);
{lat, _} = Float.parse(lat);
{lng, _} = Float.parse(lng);
chats = %Chat{:fbid => fbid, :latitude => lat, :longitude => lng, :content => content}
|> Repo.insert
|> List.wrap
|> Poison.encode!
render conn, chats: chats
end
Run Code Online (Sandbox Code Playgroud)
但它看起来非常多余,我找不到更好的方法来做到这一点.我已经读过没有办法将Map转换为Struct,并且由于params的类型不同,所以它无论如何都无法工作.
那么有人能告诉我一些神奇的方式来映射它吗?
我想制作一个自动使用 github 存储库的系统
System.cmd("git",["pull", link])
Run Code Online (Sandbox Code Playgroud)
此命令是否阻塞?如果我在许多演员中同时启动它,我是否总是能够获得与演员一样多的拉动(或至少系统的套接字限制)?
如果没有,无论如何要实现它?
我试图用EXRM发布我的应用程序.除了无法启动的WebSockets之外,整个应用程序正在运行
这是浏览器中的错误(Chrome)
与'ws:// localhost:4001/socket/websocket?token = undefined'的WebSocket连接失败:WebSocket握手期间出错:意外响应代码:403
似乎变量token可能是个问题.一开始Mix phoenix.server就一切顺利.但随着命令发布:
$ mix deps.get
$ mix compile
$ MIX_ENV=prod mix digest
$ MIX_ENV=prod mix release
$ ./rel/project/bin/project
Run Code Online (Sandbox Code Playgroud)
可能是关于我的一些错过的步骤或凤凰相关的问题.
elixir ×7
ecto ×2
callback ×1
concurrency ×1
dart ×1
dart-editor ×1
erlang ×1
exrm ×1
future ×1
javascript ×1
performance ×1
scala ×1
v8 ×1
webstorm ×1