小编Non*_*ona的帖子

为什么哈希转换为符号的字符串键?

使用Ruby 2.3:

在示例1中,字符串键"a"自动转换为符号,而在示例2中,它保持字符串.

例1

{"a": 1}
# => {:a=>1} 
Run Code Online (Sandbox Code Playgroud)

例2

{"a"=>"c"}
# => {"a"=>"c"}
Run Code Online (Sandbox Code Playgroud)

我认为:与旧式哈希火箭=>语法相同.到底是怎么回事?为什么我在Rails中从未注意到这一点?这HashWithIndifferentAccess是否模糊了这个?

ruby string hash symbols literals

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

如何在Elixir中打印出地图的数组值?

来自Ruby的Elixir新手,我正在尝试使用以下代码打印出地图的数组值:

地图script.ex

list = [0, 1]
map = %{0 => [1, 2], 1 => [2, 3]}

Enum.each list, fn n ->
  IO.puts map[n]
end
Run Code Online (Sandbox Code Playgroud)

输出:

^A^B
^B^C
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?Elixir看起来类似于Ruby,但它的表现不同......

elixir

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

Elixir中的函数参数中双反斜杠的含义是什么?

我最近遇到了一个代码段,例如:

def loop(ring_pid \\ self, nil, true) do
  #some code 
end
Run Code Online (Sandbox Code Playgroud)

双反斜杠是什么意思?我用Google搜索并找到http://elixir-lang.org/getting-started/sigils.html,但这适用于正常表达式而不是函数params.

elixir

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

在地图上操作时,Elixir中是否保留了键和值的排序?

假设我在Elixir有一张地图:

m = %{"a"=>1, "b"=>2, "c" => 3}
Run Code Online (Sandbox Code Playgroud)

如果我打电话Map.values(m),我保证返回值总是按[1, 2, 3]顺序而不是说,[3, 1, 2]

这是我从文档中不清楚的一件事.经过一些初步测试,我认为是.

elixir

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

如何打印出elasticsearch创建的倒排索引?

如果我想获得elasticsearch创建的索引的所有标记(我正在使用rails elasticsearch gem),我将如何去做呢?做这样的事情只会获得搜索词的一组特定标记:

curl -XGET 'http://localhost:9200/development_test/_analyze?text=John Smith'
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails elasticsearch

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

如何在sql查询中添加具有默认值的自定义列?

所以我在SQL(postgres)中进行基本的连接查询...

SELECT first_name, last_name 
FROM table1, table2 
WHERE table1.id = table2.customer_id
Run Code Online (Sandbox Code Playgroud)

在返回的结果查询中,是否可以在返回的每一行中生成一个名为"default_value"的额外列,其字符串值为"test",如果是,如何?我不是要尝试使用新数据永久更改表,只需在结果集中添加一个额外的列.用例是将sql查询存储在Heroku dataclip中,以便生成csv报告.

sql postgresql

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

为什么在 Rails 5 应用程序上的 Postgres 中插入重复值会触发此错误?

我正在使用下面的 Postgres 查询批量插入重复值(重复类型和 uuid)。

我在日志中看到一个错误,例如ActiveRecord::StatementInvalid: PG::CardinalityViolation: ERROR: ON CONFLICT DO UPDATE command cannot affect row a second time HINT: Ensure that no rows proposed for insertion within the same command have duplicate constrained values.

为什么这个冲突解决方案不起作用?

ActiveRecord::Base.connection.execute <<-POSTGRESQL
  INSERT INTO #{Movie.table_name} (#{headers})
  VALUES #{values}
  ON CONFLICT (uuid, type) DO UPDATE SET video_id = EXCLUDED.video_id,
  status = 1,
  category = EXCLUDED.category, updated_at = EXCLUDED.updated_at
POSTGRESQL


CREATE TABLE movies (
    id integer NOT NULL,
    video_id integer NOT NULL,
    category integer NOT NULL, …
Run Code Online (Sandbox Code Playgroud)

postgresql ruby-on-rails

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

使用 asdf 让 tkinter 在 macos 上使用 python 3.x

所以我很困惑。如何让 python 3.7.x 与 tkinter 和 asdf 一起使用?

我做了以下事情:

1)asdf local python 3.7.4

2)brew install tcl-tk

3)brew link tcl-tk --force

4)python -m venv --system-site-packages nltk

我有一些代码,例如:

import nltk
from nltk.corpus import wordnet as wn
from tkinter import *

# Let's get the first sense of vehicle
vehicle = wn.synsets('vehicle')[0]
# Let's build a concept tree
t = nltk.Tree(vehicle.name(), children=[
    nltk.Tree(vehicle.hyponyms()[3].name(), children=[]),
    nltk.Tree(vehicle.hyponyms()[4].name(), children=[]),
    nltk.Tree(vehicle.hyponyms()[5].name(), children=[]),
    nltk.Tree(vehicle.hyponyms()[7].name(), children=[
        nltk.Tree(vehicle.hyponyms()[7].hyponyms()[1].name(), children=[]),
        nltk.Tree(vehicle.hyponyms()[7].hyponyms()[3].name(), children=[]),
        nltk.Tree(vehicle.hyponyms()[7].hyponyms()[4].name(), children=[]),
        nltk.Tree(vehicle.hyponyms()[7].hyponyms()[5].name(), children=[]), nltk.Tree(vehicle.hyponyms()[7].hyponyms()[6].name(), …
Run Code Online (Sandbox Code Playgroud)

python tkinter python-3.x

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

是否可以在另一个应用程序上显示 Sidekiq Web 仪表板?

Sidekiq 监视器自述文件中,您可以使用以下命令保护当前 Rails 服务器(例如在端口 3000 上运行的本地主机)上的 sidekiq Web 仪表板路由:

http://localhost:3000上执行经过身份验证的 sidekiq 仪表板路由的典型方法

# config/routes.rb
authenticate :user, lambda { |u| u.admin? } do
  mount Sidekiq::Web => '/sidekiq'
end
Run Code Online (Sandbox Code Playgroud)

我想使用另一个 Rails 应用程序访问 Sidekiq 仪表板(而不是运行 Sidekiq 的 Rails 应用程序):

是否可以执行以下操作:

App 1 - 在http://localhost:3000 rails server:(Sidekiq 运行和收集数据的服务器)

# config/routes.rb
mount Sidekiq::Web => 'http://localhost:5000/sidekiq'
Run Code Online (Sandbox Code Playgroud)

应用程序 2 - 在http://localhost:5000 rails 服务器(单独的服务器我想捕获 Sidekiq 数据,并且仍然保护可以看到仪表板的人的访问权限)

# config/routes.rb
authenticate :user, lambda { |u| u.admin? } do
  get '/sidekiq'
end
Run Code Online (Sandbox Code Playgroud)

我认为这不是基于我对安装 Rails 引擎和 …

ruby-on-rails sidekiq

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

redis中的flushall导致加载内存中的数据集错误

在这种情况下我该如何在redis中“FLUSHALL”?

在 PopOs 21.0.4 上通过 docker 运行 redis,如以下 docker-compose.yml 所示

version: "2.4"
services:
  redis:
    image: redis:5-alpine
    command: redis-server --save "" --appendonly yes
    restart: always
    volumes:
      - "${PWD}//redis/data:/data"
    ports:
      - "6379:6379"
Run Code Online (Sandbox Code Playgroud)

连接到 redis-cli 并发出 FLUSHALL (或 FLUSHDB)命令,我收到错误:

127.0.0.1:6379[1]> FLUSHALL
(error) LOADING Redis is loading the dataset in memory
Run Code Online (Sandbox Code Playgroud)

这是泊坞窗版本:

Client: Docker Engine - Community
 Version:           20.10.10
 API version:       1.41
 Go version:        go1.16.9
 Git commit:        b485636
 Built:             Mon Oct 25 07:43:13 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - …
Run Code Online (Sandbox Code Playgroud)

redis docker

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