小编Ful*_*ine的帖子

Ruby的String #hex混乱

我发现Ruby中的String#hex没有为给定的char返回正确的十六进制值,这很奇怪.我可能会误解该方法,但请参考以下示例:

'a'.hex
=> 10
Run Code Online (Sandbox Code Playgroud)

而'a'的正确十六进制值为61:

'a'.unpack('H*')
=> 61
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?什么是十六进制?任何提示赞赏!

谢谢

ruby hex

8
推荐指数
1
解决办法
9929
查看次数

Emacs的Command-T?

我是很长时间的Emacs用户,但2年前部分切换到MacVim,并且已经将它用于我的所有编程工作(仍然使用Emacs进行其他工作).我决定现在切换回Emacs,主要是因为它很棒evil-mode.我很高兴,但我仍然没有找到像Vim Command-T插件一样简单的东西.

Emacs替代方案的主要问题是它们太复杂或太慢.

最接近Command-T的是helm/ helm-cmd-t,但它并不像它那样工作.

假设您有两条路径:

  • app/controllers/admin/feedback_controller.rb
  • app/controllers/fee_controller.rb

在Vim的Command-T中,你可以写:

app/controllers/fe
Run Code Online (Sandbox Code Playgroud)

它将匹配两条路径.

有了helm-cmd-t,如果我写的app/controllers/fee,它只会匹配fee_controller.如果我想要匹配两者,我必须使用正则表达式,如同app/controllers/.*,这不是那么糟糕,但需要更多的击键.

任何建议赞赏!

vim emacs elisp macvim

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

使用ElasticSearch模拟SQL LIKE搜索

我刚刚开始使用ElasticSearch并尝试基于它实现自动完成功能.

我有一个类型autocomplete字段的索引.以下是存储在此索引中的文档示例:citystring

{  
   "_index":"autocomplete_1435797593949",
   "_type":"listing",
   "_id":"40716",
   "_source":{  
      "city":"Rome",
      "tags":[  
         "listings"
      ]
   }
}
Run Code Online (Sandbox Code Playgroud)

分析配置如下所示:

{  
   "analyzer":{  
      "autocomplete_term":{  
         "tokenizer":"autocomplete_edge",
         "filter":[  
            "lowercase"
         ]
      },
      "autocomplete_search":{  
         "tokenizer":"keyword",
         "filter":[  
            "lowercase"
         ]
      }
   },
   "tokenizer":{  
      "autocomplete_edge":{  
         "type":"nGram",
         "min_gram":1,
         "max_gram":100
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

映射:

{  
   "autocomplete_1435795884170":{  
      "mappings":{  
         "listing":{  
            "properties":{  
               "city":{  
                  "type":"string",
                  "analyzer":"autocomplete_term"
               },
            }
         }
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

我正在向ES发送以下查询:

{  
   "query":{  
      "multi_match":{  
         "query":"Rio",
         "analyzer":"autocomplete_search",
         "fields":[  
            "city"
         ]
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

结果,我得到以下内容:

{  
   "took":2,
   "timed_out":false,
   "_shards":{  
      "total":5,
      "successful":5,
      "failed":0
   },
   "hits":{  
      "total":1,
      "max_score":2.7742395, …
Run Code Online (Sandbox Code Playgroud)

elasticsearch sql-like

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

加载状态 + 第二个 SSR 渲染通道导致客户端渲染故障

我正在material-ui与SSR一起使用。我已经根据文档上的说明material-ui在我的应用程序上设置了 SSR 机制。它确实有效,但并非没有渲染问题,迄今为止很难调试。更多详细信息如下。

SSR + 加载状态(这会导致相关组件无法在其中一个 SSR 渲染通道中渲染,更多内容见下文)导致在第二个 SSR 渲染通道上渲染的特定组件的 className 中 ID 不一致,但不会在第二个 SSR 渲染通道上渲染首先(因为它的渲染以数据可用为条件)。

这会导致从服务器发送的标记对该组件具有不同的 CSS 类名称,从而导致水合作用时出现视觉不一致,如下所示:

SSRed 成分:

在此输入图像描述

水合成分:

水合成分

DOM 中实际可用的类是:

.PrivateSwitchBase-input-393 {
  top: 0;
  left: 0;
  width: 100%;
  cursor: inherit;
  height: 100%;
  margin: 0;
  opacity: 0;
  padding: 0;
  z-index: 1;
  position: absolute;
}
Run Code Online (Sandbox Code Playgroud)

但由于 CSS 类名不匹配,一个不存在的类PrivateSwitchBase-input-411被应用于 CheckBox input,并且它没有像应该的那样变得不可见,导致客户端水合时出现视觉故障。

我从 React 收到以下警告:

警告:道具className不匹配。服务器:“PrivateSwitchBase-input-411”客户端:“PrivateSwitchBase-input-393”。

我希望className服务器和客户端中的匹配和组件渲染是相同的。

重现步骤

我有一个TodoItem组件:

import React from 'react';
import { …
Run Code Online (Sandbox Code Playgroud)

reactjs material-ui server-side-rendering

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

将monit作为受限用户运行,并使其监视需要root权限的进程

我有一个用Ruby编写的特定脚本需要root权限.大多数其他流程不需要,因此在Monit中很容易设置.不是这个.

服务器需要在386处侦听,此端口仅适用于root.我不会详细说明为什么,因为1)我不是一个低级别的人,2)到目前为止使用sudo时工作正常.

monit配置文件很简单,如下所示:

set logfile syslog facility LOG_daemon # Default facility is LOG_USER
set mailserver smtp.sendgrid.net
        username "blah", password "blah"
        with timeout 20 seconds
set alert blah@bleh.com
set logfile /home/deploy/monit.log


check process ldapserver
     with pidfile /var/pids/ldap_server.pid
     start program = "/usr/local/bin/ruby /var/lib/ldap_server.rb"
     stop program = "/bin/sh"
Run Code Online (Sandbox Code Playgroud)

注意:我已将/ bin/sh放入停止程序中,因为此过程没有停止程序.

如果我这样说:

start program = "/usr/local/bin/ruby /var/lib/ldap_server.rb"
Run Code Online (Sandbox Code Playgroud)

它无法启动.没有提示.

start program = "/usr/bin/sudo -u deploy /usr/local/bin/ruby /var/lib/ldap_server.rb
Run Code Online (Sandbox Code Playgroud)

也失败了.没有输出.

start program = "/bin/su deploy -c '/usr/local/bin/ruby /var/lib/ldap_server.rb'
Run Code Online (Sandbox Code Playgroud)

无法启动.

我也尝试使用> ~/out.log 2 > &1捕获stderr和stdout来重定向输出,但它似乎不起作用.

现在,我在部署用户下开始监控,这是受限制的.所以,我需要以某种方式以root身份运行ldap服务器,但事实证明这很难做到. …

bash privileges sudo su monit

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