我正在使用permalink_fu插件来创建标题的永久链接.我的问题是:如果标题包含德语字符,它们只是替换为'_'.
我需要的是用oeö与ae取代ä的东西
我知道String.tr但这里的问题是它用1个替换替换1个字符,所以它可以用于替换
é与eøwitho
等等
有没有人有一个漂亮而干净的解决方案呢?
谢谢
我发现的奇怪的事情。当转换#579f2f为 hsl 时,我到达hsl(99, 54%, 40%);. 当将其转换回十六进制时,我得到#559d2f。我使用了各种在线工具来测试这一点。
我猜原因是 hsl 将颜色描述为色调 (0-360)、饱和度 (0-100%) 和亮度 (0-100%),而十六进制只是 RGB (0-255,0-255,0-255 )写为三个十六进制数,因此 hsl 描述的颜色空间(或您可能表达的颜色数量)是不同的。
RGB: 255^3 = 16,581,375 colors
HSL: 360*100*100 = 3,600,000 colors
Run Code Online (Sandbox Code Playgroud)
我的这个假设是正确的还是有其他原因?
我刚刚开始使用Neo4j和Graph数据库,并想知道嵌套的分层树是否是Neo4j的一个很好的用例.一个常见的例子是嵌套的注释.例如:
- Article
- Comment 1 on Article
- Comment 2 on Comment 1
- Comment 3 on Comment 1
- Comment 4 on Comment 3
- Comment 5 on Article
Run Code Online (Sandbox Code Playgroud)
据我了解,文章和评论都是节点.每条评论都会有亲子关系.对文章(1和5)进行所有直接评论都很容易.但是如何检索整套?
请原谅使用外行条款.我认为这样做更好,然后尝试使用适当的单词,同时让每个人感到困惑.
我正在使用自定义数据库适配器构建一个elixir phoenix应用程序来连接到OrientDB.因此我使用该--no-ecto选项生成了基本应用程序,因为我没有使用Ecto.
我正在构建自定义模型和自定义验证,但当然希望进行单元测试.
如果我尝试在我的单元测试中包含ModelCase,如下所示:
defmodule App.UserTest do
use App.ModelCase
end
Run Code Online (Sandbox Code Playgroud)
我收到了错误
module App.ModelCase is not loaded and could not be found
Run Code Online (Sandbox Code Playgroud)
这可能是因为它是Ecto的一部分.
如果我不包含它,代码会在以后失败,告诉我
undefined function test/2
Run Code Online (Sandbox Code Playgroud)
我该怎么处理?
在测试控制器时,在测试数据库中包含一些数据会很有用.有时您可能想要测试数据创建.设置它的正确方法是什么?控制器测试应该测试控制器的create功能是否正常,而不是模型.
作为一个例子,我想测试一个Session控制器,我有两个测试.一个是测试创建的用户是否可以登录.另一个是,如果密码错误,他就不能.两者都依赖于用户在数据库中.我现在如何处理它是首先创建用户:
defmodule MyApp.SessionControllerTest do
use MyApp.ConnCase
alias MyApp.Admin
@valid_attrs %{email: "email@example.com", name: "John Doe", password: "goodpassword", password_confirmation: "goodpassword", password_hash: "somecontent", username: "username"}
@invalid_attrs %{}
setup do
{:ok, conn: put_req_header(conn, "accept", "application/json")}
end
test "admin can login after creation" do
conn = post conn, admin_path(conn, :create), admin: @valid_attrs
body = json_response(conn, 201)
assert Repo.get_by(Admin, email: @valid_attrs[:email])
conn = post conn, session_path(conn, :create), %{data: %{attributes: %{email: @valid_attrs[:email], password: @valid_attrs[:password]}}}
body = json_response(conn, 201)
assert body["data"]["token"]
end
test "login with …Run Code Online (Sandbox Code Playgroud) 我喜欢JWT的简单性,只是在为Web应用程序实现身份验证机制时使用它们,我有一个Elixir/Phoenix后端,提供RESTful JSON API和Angular 2前端.
今天我偶然发现了这篇文章(我与这个网站没有任何关系),这让我对JWT的使用产生了一些疑问,我想讨论一下.主要是:
与cookie不同,本地存储不会在每次请求时发送数据存储的内容.从本地存储中检索数据的唯一方法是使用JavaScript,这意味着任何提供通过内容安全策略的JavaScript的攻击者都可以访问和泄露它.不仅如此,JavaScript还不关心或跟踪数据是否通过HTTPS发送.就JavaScript而言,它只是数据,浏览器将像任何其他数据一样对其进行操作.
在经历了所有麻烦后,这些工程师经历了确保没有人会用我们的饼干罐子来消磨,在这里我们试图忽略他们给我们的所有花哨的技巧.这似乎有点落后于我.
到目前为止,我认为他的观点无效 - 只要通过https服务一切并防止XSS和CORS攻击.我的意思是如果恶意JS可以在网站上执行,这实际上不是JWT的问题.JS不允许混合内容(http和https).
使所有令牌无效:只需使用类似JWT生成数字变量的东西,它可以存在于您的环境变量中并在每个令牌中编码.这是一个简单的整数.如果要使所有令牌无效,请将其递增.然后你只需要一种机制来检查世代号是否匹配.这不一定是数据库,不应该是性能问题.使用可靠的部署策略在多个实例上进行推广应该不会太困难.
对于使单个令牌无效:使用刷新令牌和JWT的非常短的生命周期(几分钟).如果JWT的TTL几乎结束,则用户通过刷新令牌获得新的TTL.这意味着数据库每隔几分钟命中一次.
还是我弄错了?
该文档的状态
run(t, name, module, function, args) :: t when function: atom, args: [any]
Run Code Online (Sandbox Code Playgroud)
类似于
run/3,但允许传递模块名称,函数和参数.该函数应该返回{:ok, value}或者{:error,value},并且将接收到第一个参数的变化(预先设置为在函数调用中传递的参数).
但我不确定如何使用它.假设我有这个函数我想在里面运行Ecto.Multi:
def some_fun(value, other_value) do
case value do
nil -> {:error, other_value}
_ -> {:ok, other_value}
end
end
Run Code Online (Sandbox Code Playgroud)
那会怎么样?
以下场景:GenStage生产者处理Twitter Stream(使用Stream API和ExTwitter)并向GenStage消费者提供一组推文(最大消费者要求的需求).然后消费者只是打印它们.
以下问题:我正在寻找具体的推文,因此并不总是有新推文.如果GenStage生产者返回一个空的事件列表,消费者将停止询问.看到这个问题,JoséValims回复了更多.
我不知道如何解决这个问题.任何帮助是极大的赞赏.这是我到目前为止:
defmodule MyApp.TwitterProducer do
use GenStage
alias MyApp.TwitterStream
def start_link(:ok) do
GenStage.start_link(__MODULE__, :ok)
end
def init(:ok) do
# This creates a regular Elixir Stream
# I use this as the state so that not every
# time the consumer asks for new data
# a new stream is initiated
stream = TwitterStream.get_stream
{:producer, stream}
end
def handle_demand(demand, stream) do
# Take tweets from the stream and
# turn them into …Run Code Online (Sandbox Code Playgroud) 我有一个用Elixir/Phoenix构建的后端和一个用Angular 2构建的前端(Typescript,Brunch,io用于构建,ES6).我现在想要使用Phoenix Channels.而且我有点绝望在我的前端尝试使用Phoenix Javascript Client.
当我安装https://www.npmjs.com/package/phoenix-js通过npm install phoenix-js,然后尝试将其注入到这样的角度服务:
import { Socket } from "phoenix-js";
Run Code Online (Sandbox Code Playgroud)
我总是Cannot find module phoenix-js在编译期间得到错误.
我有点卡住,每一个如何让这个工作的提示将不胜感激.
谢谢
所以我有一个堰问题。我在 S3 上有文件,我想使用正则表达式将单词与文件名进行匹配。正则表达式应该明确匹配,但它不匹配:
irb(main):048:0> p.original_filename
=> "Ku?che.png"
irb(main):049:0> "Küche.png"
=> "Küche.png"
irb(main):013:0> reg = /(\A|\W|\d|_)#{Regexp.quote("Küche")}(\W|\z|\d|_)/i
=> /(\A|\W|\d|_)Küche(\W|\z|\d|_)/i
irb(main):014:0> reg.match?("Küche.png")
=> true
irb(main):015:0> reg.match?(p.original_filename)
=> false
irb(main):050:0> p.original_filename == "Küche.png"
=> false
Run Code Online (Sandbox Code Playgroud)
所以我进一步检查并假设存在编码问题:
irb(main):017:0> p.original_filename.encoding
=> #<Encoding:UTF-8>
irb(main):018:0> "Küche.png".encoding
=> #<Encoding:UTF-8>
Run Code Online (Sandbox Code Playgroud)
这很奇怪。但是让我们看看表示背后的字符和字节是什么:
irb(main):025:0> "Küche.png".chars
=> ["K", "ü", "c", "h", "e", ".", "p", "n", "g"]
irb(main):026:0> p.original_filename.chars
=> ["K", "u", "?", "c", "h", "e", ".", "p", "n", "g"]
irb(main):032:0> p.original_filename.bytes
=> [75, 117, 204, 136, 99, 104, 101, 46, 112, 110, 103] …Run Code Online (Sandbox Code Playgroud)