鉴于波纹管类型的数据,下面的理解产生了两个Array{Any,1}的PlayerS:
[[team.players for team in [big_team_1, big_team_2]]]
Run Code Online (Sandbox Code Playgroud)
然而,下一个理解产生了Array{Player,1}12个元素的期望结果:
[[team.players for team in [big_team_1, big_team_2]]...]
Run Code Online (Sandbox Code Playgroud)
到底是...做什么的?这记录在哪里?
数据:
type Player
ranking::Int
end
type Team
players::Array{Player}
end
team_1 = Team([Player(10_000), Player(11_000), Player(9_000), Player(8_500),
Player(20_000), Player(10_500)])
team_2 = Team([Player(i.ranking + 3000) for i in team_1.players])
Run Code Online (Sandbox Code Playgroud) 我通常非常有资源自己寻找信息,但是当谈到这个问题时,那里的东西确实令人生畏.我收到了一些信息超载.
我已经找到了几十篇关于个人安全主题的文章,但我无法理解大局以及它们在实践中如何融合在一起.
我需要看一个鸟瞰路线图.拿这个假设的例子:
一个简单的假设"评论"部分:
注册:创建一个密码/用户名组合,安全地存储在MySQL表中.
登录.
发表评论.
这个最基本的案例将遵循什么是"安全路线图"?
这个星球上的每本教程和PHP书都使用MySQL扩展没有帮助,如果我理解正确的话,这是一个坏主意吗?
所以我开始本教程作为PHP PDO的介绍.到目前为止,我只使用基本mysql_*类型查询.
我注意到,在整个教程中,connect -> do action -> disconnect模式重复,只有do action部分发生变化.
在现实环境中,通过创建可以传递查询的函数来消除重复是否是个好主意?
例如:
<?php
function databaseDo($action) {
$db_hostname = 'localhost';
$db_username = 'root';
$db_password = 'root';
try {
// Establish DB connection
$dbh = new PDO("mysql:host=$hostname;dbname=mysql",
$db_username, $db_password);
echo 'Connected to database';
// Do something
$action($dbh); // <- here goes whatever action we wish to perform
// Close connection
$dbh = null;
}
catch(PDOException $e) {
echo $e->getMessage();
}
?>
Run Code Online (Sandbox Code Playgroud)
然后,假设我想在PDO教程的第一个示例中执行操作,我会将其设置为:
<?php
// …Run Code Online (Sandbox Code Playgroud) 为了在失败的集成测试期间进行调试,我希望仍然能够看到我的应用程序日志.是否有一个命令可以传递给mix test任务来完成此任务?
假设我希望将一组坐标 ( [[x1,y1], [x2,y2]]) 存储到 Postgres 中。首选的数据类型是什么?该文档允许采用以下形式的数组
:coordinates, {:array, :float}
Run Code Online (Sandbox Code Playgroud)
但这仅对一维数组有用。
我有一个生成进程的函数,它执行如下查询:
def trigger_schedule(u = %User{}) do
spawn(fn ->
(Repo.preload(p, :tasks)).tasks
|> Enum.map(fn ts -> trigger_schedule(ts) end)
end)
u
end
Run Code Online (Sandbox Code Playgroud)
此代码由某些操作触发,仅用于在后台运行。但是,当我运行测试时,我开始看到:
00:37:33.324 [error] Postgrex.Protocol (#PID<0.789.0>) disconnected: ** (DBConnection.ConnectionError) owner #PID<0.1531.0> exited while client #PID<0.1533.0> is still running with: shutdown
Run Code Online (Sandbox Code Playgroud)
在跨区函数内执行查询是否不正确,或者是否有办法解决此错误?我认为这与PG连接池有关...
如果我定义以下枚举,Nil不会增加枚举的大小:
use std::mem::size_of;
enum Foo {
Cons(~char)
}
enum Bar {
Cons(~char),
Nil
}
println!("{}", size_of::<Foo>());
println!("{}", size_of::<Bar>());
// -> 4
// -> 4
Run Code Online (Sandbox Code Playgroud)
另一方面:
enum Foo {
Cons(char)
}
enum Foo {
Cons(char),
Nil
}
Run Code Online (Sandbox Code Playgroud)
产量:
// -> 4
// -> 8
Run Code Online (Sandbox Code Playgroud)
定义枚举时发生了什么?如何为这些结构分配内存?
我有一个映射;;移动到行尾并插入一个冒号(在类似c语言中很有用).在我的scheme.vim档案中,我有:
iunmap ;;
Run Code Online (Sandbox Code Playgroud)
问题是:
每次打开方案文件时它都会尝试运行此命令,此时它已经取消映射,所以我会收到警告.
它将全局取消映射此键,因此如果我在同一会话中打开非方案文件,它将不记得此绑定.
至少我想解决#1,如果绑定处于活动状态,它只会尝试取消映射,这样我就不会收到错误.
我的一项服务与速率受限的外部 API 通信,因此我想确保每 10 秒发送不超过 1 个调用。
我天真的方法是拥有一个长时间运行的 API 服务,并在每次调用后超时:
def handle_cast({:call_api, data}, state) do
send_to_external_api(data)
:timer.sleep(10000)
{:noreply, state}
end
Run Code Online (Sandbox Code Playgroud)
我不确定是否有适当的方法来做到这一点。
我需要我的所有模型来实现特定的协议。我目前的尝试是MyApp.Convert定义了这个宏的模块:
defmodule ConvertMacro do
@moduledoc """
All model structs need to implement the convert interface and must be added
here.
"""
defmacro defimpl_convert_for(modules) do
Enum.map(modules, fn module ->
quote do
defimpl Units.Convert, for: unquote(module) do
require Units
def to_standard_metric(struct) do
Units.to_standard_metric_for_struct(unquote(module), struct)
end
def to_user_data(struct) do
Units.to_user_data_for_struct(unquote(module), struct)
end
end
end
end)
end
end
ConvertMacto.defimpl_convert_for([MyApp.User, MyApp.Block])
Run Code Online (Sandbox Code Playgroud)
错误:
== Compilation error on file lib/protocols/units_convert.ex ==
** (UndefinedFunctionError) function ConvertMacro.defimpl_convert_for/1 is undefined or private. Did you mean one of:
* …Run Code Online (Sandbox Code Playgroud)