小编tur*_*tle的帖子

使用Python启动最小的工作示例

我想用launchd每分钟运行一个python脚本.我的plist文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.turtle.script.plist</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/python</string>
        <string>/Users/turtle/Desktop/turtle.py</string>
        <string>/Users/turtle/Desktop/data/data.txt</string>
    </array>
    <key>StartInterval</key>
    <integer>60</integer>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

这个plist文件看起来很好,因为我得到以下内容:

plutil -lint com.turtle.script.plist
com.turtle.script.plist: OK
Run Code Online (Sandbox Code Playgroud)

当我从命令行运行脚本时,脚本可以正常工作:

/usr/bin/python /Users/turtle/Desktop/turtle.py /Users/turtle/Desktop/data/data.txt
Run Code Online (Sandbox Code Playgroud)

我通过以下方式加载此plist:

   launchctl load -w -F com.turtle.script.plist
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

sudo launchctl load -w -F com.turtle.script.plist
Run Code Online (Sandbox Code Playgroud)

我加载这个作业,python脚本应该写出一个文件到磁盘.但是没有生成任何文件.我检查了这份工作:

sudo launchctl list | grep com.turtle.script.plist
Run Code Online (Sandbox Code Playgroud)

输出是:

- 1 com.turtle.script.plist
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助解决问题吗?

python macos launchd

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

使用双端队列生成defaultdict的问题

我想生成一个包含双端队列的defaultdict.例如:

d = defaultdict(deque)
Run Code Online (Sandbox Code Playgroud)

上面的工作很好,但是我想通过传递一个参数来使deque成为一个固定的长度:

d = defaultdict(deque(maxlen=10))
Run Code Online (Sandbox Code Playgroud)

我如何将这样的参数传递给defaultdict?

python

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

使用jq减少JSON

我有一个JSON数组的对象:

[{key1: value},{key2:value}, ...]
Run Code Online (Sandbox Code Playgroud)

我想将这些减少到以下结构:

{key1: value, key2: value, ...} 
Run Code Online (Sandbox Code Playgroud)

这可能与jq有关吗?

我在努力:

cat myjson.json | jq '.[] | {(.key): value}'
Run Code Online (Sandbox Code Playgroud)

这不是很有效,因为它迭代每个数据而不是将其减少到一个对象.

unix jq

4
推荐指数
2
解决办法
4084
查看次数

安全的Amazon Gateway API只能从S3存储桶中的内容访问

我有一个暴露于公共互联网的API,我通过亚马逊的Gateway API服务创建了这个API.API调用触发查询后端数据库的Lambda函数.我创建的API由S3静态网页用于获取数据.

我想保护我的API,以便只有我的S3存储桶(index.html)的内容才有权访问我的API.我想阻止人们直接查询我的API并使用curl请求等来抓取数据.我已经阅读了一些关于IAM角色,Cognito和Lambda权限模型的内容,但我不确定使用所有这些不同的工具保护我的API.

保护我的API的最佳方法是什么,以便只有我的S3存储桶中的内容才有权访问我的API?

amazon-s3 amazon-web-services aws-lambda

4
推荐指数
2
解决办法
966
查看次数

Vim功能返回当前行

我正在尝试编写一个Vim函数,它将执行一系列操作,然后返回到首次触发函数的行.有可能以某种方式编写一个可以执行此行为的Vim函数吗?

例如,如果我在vim缓冲区中的某个位置 - 比如第55行并键入gg第一行,我可以返回第55行,<C-o>?如何在Vim函数中编写此行为?在此先感谢您的帮助.

vim

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

从URL解析JSON数据

我正在尝试创建可以从URL解析JSON的函数.这是我到目前为止所拥有的:

function get_json(url) {
    http.get(url, function(res) {
        var body = '';
        res.on('data', function(chunk) {
            body += chunk;
        });

        res.on('end', function() {
            var response = JSON.parse(body);
                return response;
        });
    });
}

var mydata = get_json(...)
Run Code Online (Sandbox Code Playgroud)

当我调用此函数时,我会收到错误.如何从此函数返回已解析的JSON?

javascript node.js

3
推荐指数
3
解决办法
5万
查看次数

将值附加到javascript字典

我想在javascript中创建以下数据结构:

d = {"foo": [3, 77, 100], "bar": [10], "baz": [99], "biff": [10]}
Run Code Online (Sandbox Code Playgroud)

我的起始数据结构是一个字典列表:

input = [{"key": "foo", "val": 3}, {"key": "bar", "val": 10}, {"key": "foo", "val": 100}, {"key": "baz", "val": 99}, {"key": "biff", "val": 10}, {"key": "foo", "val": 77]
Run Code Online (Sandbox Code Playgroud)

如何生成所需的数据结构?以下代码似乎没有将值附加到值数组.

var d = {}

for (var i in input) {
    var datum = input[i];
    d[datum.key] = datum.val
}
Run Code Online (Sandbox Code Playgroud)

javascript

3
推荐指数
2
解决办法
3万
查看次数

展平目录结构并保留重复文件

我有一个如下所示的目录结构:

foo
??? 1.txt
??? 2.txt
??? 3.txt
??? 4.txt
??? bar
    ??? 1.txt
    ??? 2.txt
    ??? 5.txt
Run Code Online (Sandbox Code Playgroud)

我想展平这个目录结构,以便所有文件都在foo目录中,并保留重复文件:

foo
??? 1.txt
??? 2.txt
??? 3.txt
??? 4.txt
??? bar-1.txt
??? bar-2.txt
??? bar-5.txt
Run Code Online (Sandbox Code Playgroud)

重命名的重复项的文件名无关紧要.

有没有一个简单的Unix单线程或简单的shell脚本我可以用它来做到这一点?

unix bash shell zsh

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

用于将修改顺序应用于字符串的函数

我有一个函数,它接受一个子字符串和一个字符串,并在字符串中查找匹配的子字符串,并将匹配的字符更改为大写.例如:

> upperCase "aaa" "---aaa---"
"---AAA---"
Run Code Online (Sandbox Code Playgroud)

我想使用这个函数,但是使用几个子串应用upperCase操作.例如:

> upperCases ["aaa", "bbb", "c"] "d---aaa---c--bbb"
"d---AAA---C--BBB"
Run Code Online (Sandbox Code Playgroud)

我正在努力理解的是我如何做到这一点.这是我最好的尝试:

upperCases [] st = st
upperCases [x] st = upperCase x st
upperCases (x:xs) st = upperCases xs st
Run Code Online (Sandbox Code Playgroud)

当我upperCases在上面的例子中使用此函数时,我得到以下不正确的输出:

"d---aaa---C--bbb"
Run Code Online (Sandbox Code Playgroud)

只更改了最后一个子字符串.这个函数有什么问题,我可以编写一个函数来执行示例操作吗?

haskell

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

如何使用 serde 读取 JSON 文件?

我想读取一个 JSON 文件并打印其内容。我正在尝试使用serde板条箱,但不明白为什么这不起作用:

use serde_json;
use std::fs;

fn main() {
    let path = "./src/input.json";
    let data = fs::read_to_string(path).expect("Unable to read file");
    let res = serde_json::from_str(&data);
    println!("{}", res)
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

use serde_json;
use std::fs;

fn main() {
    let path = "./src/input.json";
    let data = fs::read_to_string(path).expect("Unable to read file");
    let res = serde_json::from_str(&data);
    println!("{}", res)
}
Run Code Online (Sandbox Code Playgroud)

如何读取 JSON 文件?有一个更好的方法吗?我在serde文档或其他地方都找不到完整的例子。

rust

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