小编Vit*_*aev的帖子

使用Docker容器部署Golang Web应用程序静态文件

我正在开发一个包含一些静态文件(配置和html模板)的小型Web应用程序:

??? Dockerfile
??? manifest.json
??? session
?   ??? config.go
?   ??? handlers.go
?   ??? restapi_client.go
??? templates
?   ??? header.tmpl
?   ??? index.tmpl
??? webserver.go
Run Code Online (Sandbox Code Playgroud)

例如,代码中的模板是使用本地路径发现的(这是一个好习惯吗?):

func init() {
    templates = template.Must(template.ParseGlob("templates/*.tmpl"))
}
Run Code Online (Sandbox Code Playgroud)

Docker容器用于应用程序部署.正如您在中看到的Dockerfile,我必须复制/go/bin目录中的所有静态文件:

FROM golang:latest

ENV PORT=8000

ADD . /go/src/webserver/
RUN go install webserver
RUN go get webserver

# Copy static files
RUN cp -r /go/src/webserver/templates /go/bin/templates
RUN cp -r /go/src/webserver/manifest.json /go/bin/manifest.json

EXPOSE $PORT
ENTRYPOINT cd /go/bin && PORT=$PORT REDIRECT=mailtest-1.dev.search.km /go/bin/webserver -manifest=manifest.json …
Run Code Online (Sandbox Code Playgroud)

deployment static-files go docker

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

如何调试 gRPC-Go 服务?

使用gRPC-Go无疑是构建弹性、高性能和可扩展分布式系统的好方法。我不太明白的是如何实际调试用它编写的服务。另外,HTTP/2 是唯一受支持的有线协议吗?

debugging go http2 grpc grpc-go

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

C++项目使用现代编译器编译,但与过时的libstdc ++链接

考虑在Centos 7虚拟机或容器中构建和发布C++项目时的情况.默认gccCentos 74.8.为了允许开发人员使用现代C++,最新版本gcc(例如6.3)安装在作为CI服务器运行的Centos 7中.这提供了-std=c++14支持.

[builder@f7279ae9f33f build (master %)]$ /usr/bin/c++ -v 2>&1 | grep version
gcc version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) 
[builder@f7279ae9f33f build (master %)]$ /opt/rh/devtoolset-6/root/usr/bin/c++  -v 2>&1 | grep version
gcc version 6.3.1 20170216 (Red Hat 6.3.1-3) (GCC) 
export CXX=/opt/rh/devtoolset-6/root/usr/bin/c++
make all -j4
...
Run Code Online (Sandbox Code Playgroud)

这是编译和链接命令的简短示例:

[ 78%] Building CXX object CMakeFiles/ucsdos.dir/src/merge_operator_string.cpp.o
/opt/rh/devtoolset-6/root/usr/bin/c++  -Ducsdos_EXPORTS -I/home/builder/src/dos/libucsdos/./src -I/home/builder/src/dos/libucsdos/./include -I/home/builder/src/dos/libucsdos/build/schema/cpp -I/home/builder/src/dos/libucsdos/build/schema -isystem /usr/local/include  -O2 -g -DNDEBUG -fPIC   -frtti …
Run Code Online (Sandbox Code Playgroud)

c++ gcc libstdc++ devtoolset

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

Web应用程序的对象存储

我目前正在开发一个网站,其中应该向其用户提供大约4000万份文档和图像.我需要建议哪种方法最适合存储符合这些要求的内容.

  • 系统应具有高可用性,可扩展性和耐用性.
  • 文件必须永久存储,用户应该能够修改它们.
  • 由于客户端的限制,第三方对象存储提供商(如Amazon S3和CDN)不适合.
  • 内容的文件大小可以从1 MB到30 MB不等.(但是大约90%的文件小于2 MB)
  • 内容检索延迟不是什么大问题.因此索引或缓存不是很重要.

我做了一些研究,发现了以下解决方案;

  • 将内容存储为数据库中的BLOB.
  • 使用GridFS来分块和存储内容.
  • 使用散列将内容存储在目录中的文件服务器中,并将元数据存储在数据库中.
  • 使用分布式文件系统(如GlusterFS或HDFS)并将文件元数据存储在数据库中.

该网站使用PHP开发,Couchbase Community Edition用作数据库.

我真的很感激任何输入.

谢谢.

blob gridfs distributed-filesystem glusterfs object-storage

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

在本地主机上使用 TLS 的 web gRPC

我有一个使用本地可信证书的 Go 服务器和客户端,它们相互通信完美无缺。现在我希望 Go 服务器也与 web-grpc 实例进行通信。Insecure 不起作用,因为浏览器强制 HTTP2 通过 TLS 或完全拒绝它。毕竟;无论如何,它也应该适用于生产中的 TLS。另一个问题也是 CORS,我无法弄清楚要给https://github.com/improbable-eng/grpc-web的服务器实现版本添加原始标头。但首先。

我提供了一个简单的 HTML 和 Webpack 构建 JS,我通过 TLS 为它提供了一个简单的 Golang FileServer。

我首先生成了一个新的 TLS 证书/密钥(已成功使用的 Go Server/Client 对):

openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj "/C=US/ST=State/L=Town/O=Office/CN=www.wp-ts.loc" -keyout ./www.wp-ts.loc.key -out ./www.wp-ts.loc
Run Code Online (Sandbox Code Playgroud)

然后我将它添加到 macOS 钥匙串中以供信任:

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain www.wp-ts.loc
Run Code Online (Sandbox Code Playgroud)

这是我使用的 Protobuf 文件:

syntax = "proto3";

package pb;

service GCDService {
    rpc Compute (GCDRequest) returns (GCDResponse) {}
}

message GCDRequest { …
Run Code Online (Sandbox Code Playgroud)

javascript protocol-buffers grpc grpc-web grpc-go

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

如何在 Python 3 中使用 Python 2 中的 .so 模块?

可能我的问题很明显,但我找不到明显的决定。

有 Python 2.6+ 扩展名为auditauparse。这些是与audit-libs-python包一起分发的动态库:

[vitaly@thermaltake tmp]$ repoquery -lq audit-libs-python
/usr/lib64/python2.7/site-packages/_audit.so
/usr/lib64/python2.7/site-packages/audit.py
/usr/lib64/python2.7/site-packages/audit.pyc
/usr/lib64/python2.7/site-packages/audit.pyo
/usr/lib64/python2.7/site-packages/auparse.so
Run Code Online (Sandbox Code Playgroud)

我想在最新的 Python 解释器中使用这个扩展,因为怀疑在 python 2.6+ 中对动态内存的处理不正确。出于某种原因,我无法从 Python 3.3 加载它们:

[vitaly@thermaltake ~]$ python3.3
Python 3.3.2 (default, Mar  5 2014, 08:21:05) 
[GCC 4.8.2 20131212 (Red Hat 4.8.2-7)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path.append("/usr/lib64/python2.7/site-packages/")
>>> import auparse
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: /usr/lib64/python2.7/site-packages/auparse.so: …
Run Code Online (Sandbox Code Playgroud)

python linux python-module shared-libraries

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

计算OWL本体中子类的深度

我正在寻找一个 SPARQL 查询,它可以返回 OWL 层次结构中指定子类的位置。我研究了几个例子,但我能达到的最好结果是计算指定超类与其子类之间的相对路径(感谢 Joshua Taylor)。相反,我需要计算给定子类的“绝对”深度。

我的本体包含几个顶级类,每个类后面都有一个单独的子类树。这是我的 OWL 的一部分(使用 rdfcat 实用程序转换为 TTL):

@prefix :      <http://www.semanticweb.org/administrator/ontologies/2014/7/untitled-ontology-9#> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .

:depression  a              owl:Class ;
    rdfs:subClassOf  :pit .

:pit    a                owl:Class ;
    rdfs:subClassOf  :on_the_road .

:on_the_road  a            owl:Class ;
    rdfs:subClassOf  :traffic_accident .

:traffic_accident  a  owl:Class .
Run Code Online (Sandbox Code Playgroud)

在这种情况下,对于给定的depression类,我期望得到3pit-> 2on_the_road-> 1traffc_accident(顶级类) -> 0 。

rdf owl sparql

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

Golang:"compress/flate"模块无法解压缩有效的deflate压缩HTTP正文

这个问题继续在这里开始讨论.我发现由于deflate后者的压缩,无法将HTTP响应主体解组为JSON对象.现在我想知道如何使用Golang进行解压缩.我将非常感谢能够在我的代码中显示错误的任何人.

输入数据

我已将HTTP响应主体转储到' test '文件中.就这个:

$ cat test
x??PAN?0?
;??NtJ?F?dU?|"oVR?C%?f?????Z.?^Hs?dW??'??DH?S?SFVC????r)G,?????<???z}?x_g?+?2??sl?r/?Oy>??J3\?G?9???N???#[5M?^v/?2???|?h??[?~7?_?<D*???/??i
Run Code Online (Sandbox Code Playgroud)

让我们确保这个文件可以解压缩,甚至包含有效的JSON:

$ zlib-flate -uncompress < test
{"timestamp":{"tv_sec":1428488670,"tv_usec":197041},"string_timestamp":"2015-04-08 10:24:30.197041","monitor_status":"enabled","commands":{"REVERSE_LOOKUP":{"cache":{"outside":{"successes":0,"failures":0,"size":0,"time":0},"internal":{"successes":0,"failures":0,"size":0,"time":0}},"disk":{"outside":{"successes":0,"failures":0,"size":0,"time":0},"internal":{"successes":13366,"failures":0,"size":0,"time":501808}},"total":{"storage":{"successes":0,"failures":0},"proxy":{"successes":13366,"failures":0}}},"clients":{}}}
$ zlib-flate -uncompress < test | python -m json.tool
{
    "commands": {
        "REVERSE_LOOKUP": {
            "cache": {
               ....
Run Code Online (Sandbox Code Playgroud)

源代码

package main

import (
    "bytes"
    "compress/flate"
    "fmt"
    "io/ioutil"
)

func main() {
    fname := "./test"
    content, err := ioutil.ReadFile(fname)
    if err != nil {
        panic(err)
    }
    fmt.Println("File content:\n", content)

    enflated, err := ioutil.ReadAll(flate.NewReader(bytes.NewReader(content)))
    if err != nil {
        panic(err)
    } …
Run Code Online (Sandbox Code Playgroud)

zlib deflate go

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

C ++:`enable_if`来限制支持特定算术运算的类型

我想定义可只适用于各类模板函数的支持乘法,例如intlongfloat,和自定义类型的重载运营商如Martix

class Matrix {
    public:
        Matrix operator*(const Matrix& other) const;
}
Run Code Online (Sandbox Code Playgroud)

是否可以通过这种方式限制模板类型?

template <typename T, typename = std::enable_if_t< /* multiplication is defined */ >>
T power (T base, unsigned int exponent) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

c++ sfinae

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

获取Linux中父进程调用的子进程列表

我想确定父进程调用了哪些进程(或者可能得到一个“堆栈”或分层引起的进程树)。

不幸的是,由于进程终止太快,因此很难“动态”确定 PID、GPID 和 PPID。可能这些信息可以在系统日志中找到?

我使用 RHEL 6.4。

非常感谢。

linux process parent-child

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