小编Ulf*_*lfR的帖子

我可以用 gtag() 替换 dataLayer.push() 吗?

dataLayer.push()在尝试实现和理解 Google 标签管理器和 Google Analytics 的使用时,我想知道为什么在某些地方谈论,而在其他地方gtag()用于类似的操作。尽管结果并不完全相同,但它们似乎服务于相同的目的。

gtag()定义为:

function gtag(){dataLayer.push(arguments)};
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用 gtag 时的代码,我会得到一个包装参数对象。所以我明白这是有区别的,但这有关系吗?它们应该用于不同的目的吗?

> dataLayer = []
> dataLayer.push({'event','login'})
[{'event','login'}]
> dataLayer = []
> gtag({'event','login'})
[Arguments({'event','login'})]
Run Code Online (Sandbox Code Playgroud)

什么时候应该使用其中之一,或者我可以决定只使用其中之一?

google-analytics google-tag-manager

17
推荐指数
1
解决办法
8256
查看次数

用随机数替换序列

我想用我自己定制的id生成器替换我在postgresql数据库中用于id的一些序列.生成器将生成一个随机数,最后带有一个checkdigit.所以这:

SELECT nextval('customers')
Run Code Online (Sandbox Code Playgroud)

会被这样的东西取代:

SELECT get_new_rand_id('customer')
Run Code Online (Sandbox Code Playgroud)

然后该函数将返回一个数值,例如:[1-9][0-9]{9}最后一个数字是校验和.

我担心的是:

  1. 我如何使事物成为原子
  2. 我如何避免两次返回相同的id(这可以通过尝试将其插入具有唯一约束的列中来捕获,但是我认为它迟到了)
  3. 这根本不是一个好主意吗?

注1:我不想使用uuid,因为它要与客户沟通,10个数字比36个字符uuid更容易沟通.

注意2:该函数很少被调用,SELECT get_new_rand_id()但会在id-column上被指定为默认值而不是nextval().

编辑:好的,下面的讨论很好!以下是对原因的一些解释:

  1. 那么为什么我会用这种方式过度复杂呢?purpouse是隐藏客户的主键.

    我给每个新客户一个唯一的customerId(在db中生成序列号).由于我与客户沟通该号码,我的竞争对手监控我的业务是一项相当简单的任务(还有其他数字,例如发票nr和订单nr具有相同的属性).正是这种监控我想更加努力(注意:并非不可能,但更难).

  2. 为什么是校验位?

    在有任何关于隐藏序列号的讨论之前我添加了一个checkdigit到ordernr,因为在制作中的某些点有klumbsy手指,我的想法是这将是一个很好的做法,以保持在未来.

在阅读完讨论后,我当然可以看到我的方法不是解决问题的最佳方法,但我对如何解决它没有其他好处,所以请在这里帮助我.

  1. 我应该添加一个额外的列,我将我公开的ID放在客户面上,并将串口作为主键吗?
  2. 如何以健全有效的方式生成要公开的id?
  3. 是否必须使用checkdigit?

sql random postgresql

12
推荐指数
1
解决办法
5113
查看次数

psql提示中的颜色

当我在提示中添加颜色时浏览历史记录时,我在提示后收到垃圾.

我尝试了postgres doc中提出的颜色提示命令:

\set PROMPT1 '%[%033[1;33;40m%]%n@%/%R%[%033[0m%]%# '
Run Code Online (Sandbox Code Playgroud)

我也尝试了很多其他的提示示例,我发现谷歌,但结果相同.

所以在设置提示后我有一个黄色提示符如下:

ulf@mydb=#
Run Code Online (Sandbox Code Playgroud)

然后我运行查询:

ulf@mydb=# select * from country;
Run Code Online (Sandbox Code Playgroud)

然后我浏览历史.这会给我带来更多的选择线,但我得到:

ulf@mydb=# \set PROMPT1 'select * from country;
Run Code Online (Sandbox Code Playgroud)

注意\set...之前的select是最初的promt-setting中的残余.

如果我将\set PROMPT1-command 放入,我也会得到类似的结果.pslqrc

我在xterm和gnome-terminal中得到了相同的结果.我的bash-prompt以类似的方式着色,但我对该提示没有任何问题.

我做错了什么?

postgresql command-prompt

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

字符串连接的变体?

字符串文字串联中的以下两个变体(带或不带加号):

  • 什么是首选方式?
  • 有什么不同?
  • 何时应该使用其中一种?
  • 是否应该使用它们,如果是这样,为什么?
  • join首选?

码:

>>> # variant 1. Plus
>>> 'A'+'B'
'AB'
>>> # variant 2. Just a blank space
>>> 'A' 'B'
'AB'
>>> # They seems to be both equal
>>> 'A'+'B' == 'A' 'B'
True
Run Code Online (Sandbox Code Playgroud)

python string string-concatenation

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

我可以用redmine创建跨项目源引用吗?

如果您有两个单独的项目以某种方式连接.如何引用其他项目的来源?

要引用您自己项目的源,请使用:

source:some/file
Run Code Online (Sandbox Code Playgroud)

但是因为我想在另一个项目中引用代码,我的想法是我可以这样写:

other_project:source:some/file
Run Code Online (Sandbox Code Playgroud)

有谁知道这是否可能以某种方式?我已经阅读了http://www.redmine.org/wiki/redmine/RedmineTextFormatting#Redmine-links,但没有发现任何线索.

redmine

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

grep可以显示与“上下文”匹配的行的一部分吗?

说我有这个文本文件(lorem.txt):

Lorem ipsum dolor sit amet, consectetur
adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna
aliqua.
Run Code Online (Sandbox Code Playgroud)

如果使用,grep现在可以轻松找到包含eiusmod以下内容的行:

$ grep eiusmod lorem.txt
adipiscing elit, sed do eiusmod tempor
Run Code Online (Sandbox Code Playgroud)

通过使用类似的上下文切换,-C我什至可以得到围绕比赛的内容:

$ grep -C1 eiusmod lorem.txt
Lorem ipsum dolor sit amet, consectetur
adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna
Run Code Online (Sandbox Code Playgroud)

很好 但是,如果我只想在同一行上看到一些最接近比赛的字符怎么办?没有完整的行。所以这样的行为:

$ grep --char-context=3 eiusmod lorem.txt
do eiusmod te
$ grep -n --char-context=5 dol lorem.txt
1:psum …
Run Code Online (Sandbox Code Playgroud)

git grep sed

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

Awesome 中的不同布局是如何工作的?

我在 ubuntu 14.04 上使用了awesome有一段时间了。中定义的默认布局rc.lua是:

layouts =
{
    awful.layout.suit.floating,
    awful.layout.suit.tile,
    awful.layout.suit.tile.left,
    awful.layout.suit.tile.bottom,
    awful.layout.suit.tile.top,
    awful.layout.suit.fair,
    awful.layout.suit.fair.horizontal,
    awful.layout.suit.spiral,
    awful.layout.suit.spiral.dwindle,
    awful.layout.suit.max,
    awful.layout.suit.max.fullscreen,
    awful.layout.suit.magnifier
}
Run Code Online (Sandbox Code Playgroud)

我很难理解这个问题!其中一些我设法理解(我认为)只是通过测试它们,但不是全部。

我试图找到一些描述它的文档,但没有成功。是否有一些文档可以让我阅读它们及其背后的概念?它们何时以及如何适用于不同的任务。

我知道它是个人的,但是如果有关于这些事情的某种信息,那么我认为很棒的社区将从中受益匪浅!

awesome-wm

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

我可以从超类中实例化一个子类对象

我有以下示例代码:

class A(object):
    def __init__(self, id):
        self.myid = id
    def foo(self, x):
        print 'foo', self.myid*x

class B(A):
    def __init__(self, id):
        self.myid = id
        self.mybid = id*2
    def bar(self, x):
        print 'bar', self.myid, self.mybid, x
Run Code Online (Sandbox Code Playgroud)

使用时,可以生成以下内容:

>>> a = A(2)
>>> a.foo(10)
foo 20
>>> 
>>> b = B(3)
>>> b.foo(10)
foo 30
>>> b.bar(12)
bar 3 6 12
Run Code Online (Sandbox Code Playgroud)

现在让我说我有更多的子类class C(A):class D(A):.我也知道id总是适合B,C或D,但同时也不会在2中.

现在我想调用A(23)并获得正确子类的对象.像这样的东西:

>>> type(A(2))
<class '__main__.B'>
>>> type(A(22))
<class '__main__.D'>
>>> type(A(31))
<class '__main__.C'>
>>> type(A(12)) …
Run Code Online (Sandbox Code Playgroud)

python oop

4
推荐指数
1
解决办法
1869
查看次数

如何重新安装 cpan-autobundle

我目前正在处理备份,而不是备份完整的磁盘,对我来说只是备份系统配置会更有效率。因此,对于 perl 部分,我希望有一种方法可以列出已安装的模块,然后在需要时重新安装这些模块。

我阅读了如何获取已安装 CPAN 模块的列表?关于如何获取列表以及阅读时perldoc -l install我发现了这一点:

您还可以使用“cpan”的“-a”开关来创建一个“CPAN.pm”理解的自动捆绑文件,并可以用来重新安装每个模块:

$ cpan -a
Run Code Online (Sandbox Code Playgroud)

所以我运行cpan -a,输出的最后两行是:

Wrote bundle file
    /home/ulf/.cpan/Bundle/Snapshot_2017_11_30_01.pm
Run Code Online (Sandbox Code Playgroud)

并且该文件存在,但我怎么用它来“重新安装每个模块”另一台主机上?

注意:在 pip 中使用需求文件后,我对此有一些先入之见所以请耐心等待。

perl cpan

4
推荐指数
1
解决办法
1109
查看次数

为什么我的输出没有显示在日志中?

我是systemd的新手,但由于它是我新安装的 Ubuntu 16.04 上的默认设置,并且似乎是所有 *nix 系统上现在的事实上的标准,我想我可以尝试一下。

但我正在努力处理我的应用程序的输出。

有时,我的应用程序或使用的某些库会在 stdout 或 stderr 上发出输出。这不是我的本意,也并非总是可以避免的。因此,为了跟踪正在发生的事情,我希望这些消息出现在日记中。

例如,如果我的服务文件中有以下内容,则不会将任何内容写入日志:

ExecStart=/usr/bin/python -c "print 'Hello';"
Run Code Online (Sandbox Code Playgroud)

另一方面,如果我在代码中包含异常,则初始Hello和异常都会写入日志:

ExecStart=/usr/bin/python -c "print 'Hello';raise Exception('Oh noooo...');"
Run Code Online (Sandbox Code Playgroud)

我应该怎么做才能让正常的标准输出消息显示在日志中?

我使用的是 systemd 229 版本。

systemd

3
推荐指数
1
解决办法
1759
查看次数