小编pse*_*ert的帖子

在 github markdown 中嵌入 openstreetmap iframe

从 openstreetmap 页面上的共享选项卡,我可以将地图视图导出为 HTML,例如:

<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://www.openstreetmap.org/export/embed.html?bbox=6.047544479370118%2C46.23053702499607%2C6.061706542968751%2C46.23821801159735&amp;layer=mapnik" style="border: 1px solid black"></iframe>
<br/><small><a href="https://www.openstreetmap.org/#map=17/46.23438/6.05463">View Larger Map</a></small>
Run Code Online (Sandbox Code Playgroud)

我想将它嵌入到 github 上的 README.md 页面中,例如

环顾四周,最接近iframe在 markdown 中嵌入s 的是git lab guide。随后我尝试了<figure class="video_container">标签,但在 gitlab 或 github 上都看不到它。

# how to find us?

we will be here:
<figure class="video_container">
<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://www.openstreetmap.org/export/embed.html?bbox=6.047544479370118%2C46.23053702499607%2C6.061706542968751%2C46.23821801159735&amp;layer=mapnik" style="border: 1px solid black"></iframe>
</figure>
Run Code Online (Sandbox Code Playgroud)

我是否遗漏了一些东西,或者这更好地留给真正的 HTML 而不是降价可以/应该做什么?

iframe openstreetmap github-flavored-markdown

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

$ gitlab ci脚本在哪?允许非零

在我们的项目中,我们有一个shell脚本,用于为后续构建过程设置环境变量或运行构建的应用程序.

它包含一个块,用于检查已设置的变量并进行一些调整.

# part of setup.sh
for LIBRARY in "${LIBRARIES_WE_NEED[@]}"
do
  echo $LD_LIBRARY_PATH | \grep $LIBRARY > /dev/null
  if [ $? -ne 0 ]
  then
   echo Adding $LIBRARY
   LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$LIBRARY
  else
   echo Not adding $LIBRARY
  fi
done
Run Code Online (Sandbox Code Playgroud)

即它检查库的路径是否已经存在$LD_LIBRARY_PATH,如果没有,则添加它.(公平地说,这可能是不同的写入(喜欢这里),但假设脚本应该实现的东西,这是非常难做到不调用程序,检查$?,然后要么做一件事或做另一件事).

.gitlab-ci.yml则包含

before_script:
  - yum install -y <various packages>
  - source setup.sh
Run Code Online (Sandbox Code Playgroud)

但是$?,当if-statement决定添加路径时,运行器决定停止前脚本的非零时刻$LD_LIBRARY_PATH.现在很高兴gitlab运行器检查$?我的脚本的每一行之后,但是如果这些行.gitlab-ci.yml被认为是原子的,那就太好了.

有没有办法避免在$?源自的脚本中进行中间检查.gitlab-ci.yml

bash gitlab-ci

12
推荐指数
2
解决办法
6491
查看次数

zsh完成long列表的last_prompt行为

我目前配置我的zsh选项卡完成:

 autoload -U compinit && compinit
 zstyle ':completion:*:default' menu select=0
 zstyle ':completion:*:default' select-scroll 0
Run Code Online (Sandbox Code Playgroud)

我喜欢这个是:

  1. 毫不含糊的完成立即完成
  2. 尽可能扩大模糊的完成(标签的第一次攻击)和歧义被列入我(第二次攻击)
  3. 进一步点击标签(列表出现后又一个标签笔划)我通过菜单选择',即提示停留在歧义列表上方,其中一个突出显示并插入提示中,然后进一步点击标签,我去下一个项目.即使在无法显示歧义列表的情况下,提示下方的列表也会滚动.

我不喜欢的:

  • 如果列表太长而无法显示,则首先完全打印并且提示结束于列表下方,并且仅在下一个笔划时,我再次在终端顶部进行菜单选择模式.

所以我想将行为改为:

  1. 毫不含糊的完成立即完成
  2. 模糊完成尽可能扩展(选项卡的第一次打击)和模糊性列在我身上,总是低于提示,即使列表太长也无法完全显示(无论是第一次还是第二次中风)
  3. 进一步点击标签(列表出现后又一个标签笔划)我通过菜单选择',即提示停留在歧义列表上方,其中一个突出显示并插入提示中,然后进一步点击标签,我去下一个项目.即使在无法显示歧义列表的情况下,提示下方的列表也会滚动.

一个关键的方面是在第一个插入提示之前显示歧义列表.否则我已经可以使用了

zstyle ':completion:*:default' menu select=0 yes=0
Run Code Online (Sandbox Code Playgroud)

zsh-completion

10
推荐指数
0
解决办法
266
查看次数

在 ninja/cmake 中操纵独立目标的构建顺序

我正在开发一个用 cmake+ninja 构建的 c++ 项目,在 64 线程计算机上有大约 1200 个构建目标。

有一个翻译单元需要 10 分钟来编译,大多数其他翻译单元都相当快,以至于所有其他目标的构建一起(在所有线程上构建)只需大约 9 分钟。慢速翻译单元与其他单元相当独立,所以它不必被安排得晚,但事实证明,默认情况下是安排得晚,这样一个完整的构建需要我 15 到 20 分钟,而在最后只有一个线程与几乎所有其他目标一起工作。如果先安排慢速翻译单元,阻塞一个线程大约 10 分钟,而所有其他线程在项目的其余部分工作,并且整个项目在 10 分钟内构建,那么构建对我来说会更快。

在 cmake 或 ninja 中有没有办法改变调度的优先级以指出缓慢或“请尽早”的目标而不会弄乱依赖关系?

cmake ninja

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

使用 ripgrep 搜索单词的开头/结尾

grep我可以搜索单词的开头和结尾

grep -e '\<leg\>' <where to search>
Run Code Online (Sandbox Code Playgroud)

这会找到I have a leg.但不会play allegro here

Ripgrep (0.10.0) 似乎不支持这种写正则表达式的方式。我的问题是:

如何“grep”出现在单词的开头/结尾ripgrep

ripgrep

9
推荐指数
1
解决办法
1381
查看次数

使用自定义析构函数时出现"未定义的引用"错误

我正在尝试编写一个需要释放一些内存的类,所以我已经定义了一个自定义析构函数.这被编译为共享库.但是,当我尝试编译一个基本程序来使用该库时,我找不到定义时通常的"未定义引用"错误.如果我删除析构函数,则不会发生这种情况.

这是一个精简的例子:

头文件:

#ifndef _SKYMAP_H_
#define _SKYMAP_H_

#include <vector>
#include "TCanvas.h"

class BL_Skymap {
 public:
   BL_Skymap();
   ~BL_Skymap();

 protected:
   TCanvas mCanvas;
};

#endif //_BENSLIBRARY_SKYMAP_H_
Run Code Online (Sandbox Code Playgroud)

源文件:

\#include "BL_Skymap.h"

BL_Skymap::BL_Skymap()
{
}

BL_Skymap::~BL_Skymap()
{
}
Run Code Online (Sandbox Code Playgroud)

现在我正在使用的程序就是这样:

\#include "BL_Skymap.h"

int main()
{
  BL_Skymap map;
  return(0);
}
Run Code Online (Sandbox Code Playgroud)

请注意,我正在使用ROOT分析包(即TCanvas对象).当我编译上面的小程序时,我得到以下错误(Skymap类被编译成libMyLibrary.so):

g++ test.cpp -o test -lMyLibrary `root-config --cflags --glibs`
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libMyLibrary.so: undefined reference to 'TCanvas::~TCanvas()'
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libMyLibrary.so: undefined reference to 'TCanvas::TCanvas(bool)'
Run Code Online (Sandbox Code Playgroud)

请注意,root包提供了一个实用程序来生成所需的编译器标志,这是root-config --cflags --glibs上面的目的.我在这里错过了什么?

更新:我编写了一个Makefile来执行我的库的编译,它执行以下操作:

g++ -Wall -Wextra -ansi -pedantic --std=c++11 -Isrc -Ihdr -MM -MT 'obj/BL_Skymap.o' src/BL_Skymap.cpp -MF …
Run Code Online (Sandbox Code Playgroud)

c++ root-framework

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

Python C API:省略变量赋值会导致意外行为

当使用python与pyroot(一个名为ROOT的CERN数据分析包的python接口)时,我遇到了以下奇怪的行为:

print ROOT.TFile(fname).GetListOfKeys()
Run Code Online (Sandbox Code Playgroud)

输出None而看似语义上等效的代码

f=ROOT.TFile(fname)
print f.GetListOfKeys()
Run Code Online (Sandbox Code Playgroud)

输出预期的<ROOT.THashList object ("THashList") at 0x13f0fa0>.

虽然这不是我在使用ROOT时遇到的第一个错误,但这次我很困惑python允许这个错误发生.

我认为,不知何故,TFile对象的引用计数在第一个示例中出错,并且在实际调用GetListOfKeys之前它被删除.(设置ROOT.TFile.__del__为某些打印命令后,确实会发生这种情况.)

我看到它的方式,在执行ROOT.TFile(fname)之后,但在调用GetListOfKeys()之前,指向TFile对象的指针位于堆栈上.因此,引用计数不应为零,并且在GetListOfKeys()返回之前不应调用析构函数.

谁能解释为什么会发生这种情况?

在一个相关的说明,有没有办法禁止python del隐藏我的对象只是因为引用计数变为零?我尝试了gc.disable(),并没有改变结果.是否有比将对象附加到某些全局定义的只写列表更优雅的解决方案?

python python-2.7 root-framework pyroot

6
推荐指数
0
解决办法
95
查看次数

GCC_COLORS与ccache结合使用

我正在将gcc 4.9.2与ccache 3.1.10一起使用。我的shell环境包含GCC_COLORS=auto(从这里,尝试yesalways太)。

作为最低限度的测试,我编译了该main.c文件

int main() {
    int a;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

gcc -c main.c -Wall -o main.o并观察(根据需要)

main.c: In function ‘main’:
main.c:2:7: warning: unused variable ‘a’ [-Wunused-variable]
   int a;
       ^
Run Code Online (Sandbox Code Playgroud)

main.c:main.c:2:7:‘main’:‘a’粗体的^黑体字绿色,warning:品红色粗体。

与编译ccache的colorisation消失。

注意:ccache gcc -Wall -c main.c -o main.o无色,但ccache gcc -Wall main.c -o main仍保持彩色。

NB2:ccache gcc -Wall -c …

gcc gcc-warning ccache

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

确定 cmake 项目生成器的正确方法

我在 cmake build 目录中,想构建项目,但不知道 cmake 是否使用-G Unix\ Makefile或运行-G Ninja

现在我知道我可能对此一无所知并使用cmake --build .,但是当我想提供其他选项时,cmake --build . -- SOMETHING我应该知道我是否应该提供 gnumake 或 ninja 选项。

作为可能的解决方案,我发现我可以只检查 aMakefilebuild.ninja文件的存在。或者在CMakeCache.txtfor 中使用grep CMAKE_GENERATOR

编辑

在一个类似的问题中,这里解释了传递给 cmake with 的值-D可以用cmake -LA -N. 但这并没有列出-G参数。

我想知道是否有更合适的方法(就像cmake -LA -N不是 grepping 变量值一样)。

cmake

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

带有@deprecated 装饰器的函数的 lint 用法

是否有一个 linter 可以检测被包中的@deprecated装饰器标记为已弃用的函数的使用情况deprecated

例如在

from deprecated import deprecated

def realfun():
    print('Hey there')

@deprecated(reason="this is a test")
def myfun():
    realfun()

if __name__ == "__main__":
    myfun()
Run Code Online (Sandbox Code Playgroud)

将它作为PYTHONWARNINGS="default::DeprecationWarning" python testfile.pybut pylintmypy、运行时,我会收到运行时警告,并且flake8似乎(至少我如何运行它们)对调用myfun.

python static-analysis deprecation-warning

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