小编orc*_*man的帖子

在Go中使用没有File的io.WriteSeeker

我正在使用第三方库来生成PDF.为了在最后编写PDF(在使用lib的API添加所有内容之后),该pdfWriter类型具有Write期望的函数io.WriteSeeker.

如果我想处理文件,这是可以的,但我需要在内存中工作.麻烦的是,我找不到任何办法 - 我发现实现的唯一本机类型io.WriteSeeker是File.

这是通过使用作品的部分Fileio.WriterWrite的功能pdfWriter:

fWrite, err := os.Create(outputPath)
if err != nil {
    return err
}

defer fWrite.Close()

err = pdfWriter.Write(fWrite)
Run Code Online (Sandbox Code Playgroud)

没有实际的文件,有没有办法做到这一点?喜欢得到[]byte什么?

go

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

从AWS SageMaker访问Google BigQuery

在本地运行时,我的Jupyter笔记本可以像这样引用Google BigQuery:

%%bigquery some_bq_table

SELECT *
FROM
  `some_bq_dataset.some_bq_table` 
Run Code Online (Sandbox Code Playgroud)

这样一来,在以后的笔记本中,我就可以将some_bq_table用作熊猫数据框,如下所示:https ://cloud.google.com/bigquery/docs/visualize-jupyter

我想在AWS SageMaker上运行我的笔记本以测试一些东西。要通过BigQuery进行身份验证,似乎仅有的两种方法是在GCP上(或在本地)使用服务帐户,或使用env var将SDK指向凭据JSON(如此处所述:https//cloud.google.com/ docs / authentication / getting-started)。

例如

export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/[FILE_NAME].json"
Run Code Online (Sandbox Code Playgroud)

有一种简单的方法可以从SageMaker连接到bigquery吗?现在,我最好的主意是将JSON从某处下载到SageMaker实例,然后从python代码设置env var。

例如,我会这样做:

os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "/home/user/Downloads/[FILE_NAME].json"
Run Code Online (Sandbox Code Playgroud)

但是,这不是很安全-我不喜欢将凭据JSON下载到SageMaker实例的想法(这意味着我必须将凭据上传到某些私有s3存储桶,然后将其存储在SageMaker实例中)。不是世界末日,而是我避免这种情况。

有任何想法吗?

python google-bigquery amazon-sagemaker

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

如何将整数列表连接到 Erlang 中的字符串?

我有一个看起来像这样的元组:

{127,0,0,1}
Run Code Online (Sandbox Code Playgroud)

现在我想将该元组作为字符串传递"127.0.0.1"给外部库(地理 IP 库)。将此元组转换为字符串的最佳方法是什么?

erlang

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

Golang:去协程还是不去协程?

很多时候在 Go 中开发 http 服务器时,我遇到了这个困境。

假设我想尽快回复客户http statuscode 200(然后在后面执行工作),这就是我通常这样做的原因:

我让我的主要 http 处理程序接收请求,我写http 200响应,然后我通过 a 发送一条消息channel(如果我有N工作人员在听channel,我正在使用 a buffered channelof N):

func myHttpHandler(rw http.ResponseWriter, req *http.Request) {
    rw.WriteHeader(200)
    log(req)
}

func log(req *http.Request) {
    msg := createLog(req)
    if msg != nil {
        channel <- msg
    }
}
Run Code Online (Sandbox Code Playgroud)

我让我的听众(在 init 上被解雇)永远在那个频道上听:

func init() {
    for i := 0; i < workerCount; i++ {
        go worker(i, maxEntrySize, maxBufferSize, maxBufferTime)
    }
}

func worker(workerID …
Run Code Online (Sandbox Code Playgroud)

multithreading http go goroutine

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

SQL:在 Google BigQuery 上查找最近的纬度/经度记录

我在 Google BigQuery 上有一个包含位置的数据表,称为 TABLE_A。

这是 TABLE_A 的样子:

ID,Lat,Lon
1,32.95,65.567
2,33.95,65.566
Run Code Online (Sandbox Code Playgroud)

还有一个包含不同项目的第二个表,称为 TABLE_B。TABLE_B 与 TABLE_A 具有相同的架构。这是来自 TABLE_B 的示例:

ID,Lat,Lon
a,32.96,65.566
b,33.96,65.566
Run Code Online (Sandbox Code Playgroud)

并且我想创建一个新表 TABLE_C,其中每一行都有来自 TABLE_A 和 TABLE_B 的项目,这样这些项目是最近的(即,纬度/经度对之间的距离是连接表时的最小距离)。这将是具有上述示例数据的 TABLE_C 示例:

ID_A,ID_B
1,a
2,b
Run Code Online (Sandbox Code Playgroud)

我的实际数据是一个带有纬度/经度对的属性表, bigquery-public-data.noaa_gsod.stations另一方面(我正在寻找每个属性最近的气象站)。

sql gis google-bigquery

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

熊猫:Bin和Sum

我有以下数据(以csv格式):

Country,City,Year,Value1,Value2
Germany,Berlin,2020,9,3
Germany,Berlin,2017,1,4
Germany,Berlin,2011,1,4
Israel,Tel Aviv, 2007,4.5,1
Run Code Online (Sandbox Code Playgroud)

我想根据创建仓Year这样的那个而不是使用特定的年将有一个5岁的范围列,然后在总结值Value1Value2通过分组CountryCity和Bin ID(在下面的例子中,我叫这个YearRange)。

例如,运行此过程后,数据将如下所示:

Country,City,YearRange,Value1,Value2
Germany,Berlin,2016-2020,10,7
Germany,Berlin,2011-2015,1,4
Israel,Tel Aviv,2006-2010,4.5,1
Run Code Online (Sandbox Code Playgroud)

如果这简化了流程,那么我不介意预先创建可能的范围(即,我将拥有一个表,其中包含所有可能的范围:2016-2020、2011-2015、2006-2010,直到我的数据中最早出现为止)。

如何使用熊猫实现这一目标?

谢谢!

python pandas

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

在 Go 中使用 map 时忽略 goroutine/thread-safety 的危险是什么?

map据说Go不是goroutine-safe(见这里这里)。我有兴趣找出在我忽略使用互斥锁/等保护对地图的访问的情况下会发生什么。

具体来说,是否会发生以下任何一种情况?

  1. 假设我有一个带有键k1, k2, ...,的映射,当我请求(i != j)时kn,并发问题会导致 get吗?map[ki]map[kj]
  2. 它会导致panic应用程序中的 a 吗?

multithreading thread-safety go

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