小编Kal*_*ule的帖子

找出我在 nix 中使用的系统类型

我想以在 NixOs (linux) 和 MacOs (darwin) 上都能工作的方式编写我的 nixos-configuration 和 home-manager-configuration 文件。

虽然有些东西在两个系统上的配置方式相同(例如 git),但其他东西仅在其中一个系统上有意义(例如 wayland-windowmanagers 仅在 Linux 上)。

Nix 语言具有if-else-语句,所以现在我需要的是一种方法来找出我所在的系统类型。

我所追求的是这样的:

wayland.sway.enable = if (os == "MacOs") then false else true;
Run Code Online (Sandbox Code Playgroud)

有没有办法找出我在 nix 上的系统?

nix

8
推荐指数
2
解决办法
3345
查看次数

在 Nixos 上使用 systemd 计时器运行脚本

我有一个小的 shell 脚本scrape.sh,可以抓取网站并将结果数据放入新目录中:

\n
website=\'test.com\'\ndir_name="datev_data/$(date -u +\'%Y-%m-%dT%H:%M:%S\')"\nmkdir $dirname\nwget --directory-prefix="$dir_name" "$website"\n
Run Code Online (Sandbox Code Playgroud)\n

(我并不关心数据最终在哪里,只要它每次都会获得一个新目录并且我可以访问数据。因此,我现在将其放入我的主目录中/home/kaligule。)

\n

手动运行这个脚本效果很好,所以现在我想在我的 nixos 服务器上每小时运行这个脚本。因此,我将以下内容放入我的配置中(受这篇文章的启发):

\n
    systemd.services.test_systemd_timers = {\n      serviceConfig.Type = "oneshot";\n      script = \'\'\n        echo "Will start scraping now."\n        {pkgs.bash}/bin/bash /home/kaligule/scrape.sh\n        echo "Done scraping."\n      \'\';\n    };\n\n    systemd.timers.test_systemd_timers = {\n      wantedBy = [ "timers.target" ];\n      partOf = [ "test_systemd_timers.service" ];\n      timerConfig.OnCalendar = [ "*-*-* *:00:00" ];\n    };\n
Run Code Online (Sandbox Code Playgroud)\n

然后我测试一下:

\n
sudo nixos-rebuild switch # everything is fine\nsudo systemctl start test_systemd_timers # run it …
Run Code Online (Sandbox Code Playgroud)

timer web-scraping systemd nixos

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

编译器无法看到参数

我是C++的新手,想要上课.

我的代码

在我的世界里有英雄和剑.英雄携带剑.这不应该太难.

// Defining swords                                                                                                                                 
class Sword
{
  // The most important thing about a sword is its length.                                                                                         
  int lenght;
public:
  // only constructor and destructor                                                                                                               
  Sword(int swordlength){
    lenght = swordlength;
  };
  ~Sword(){};
};

// defining heros (as people with magic swords)                                                                                                    
class Hero
{
  Sword magic_sword;
public:
  // each hero gets a standard sword                                                                                                               
  Hero(){
    int meters = 2;
    magic_sword = Sword(meters);
  };
  ~Hero(){};
};

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

编译器对它的看法

当我编译这段代码(g++ hero.cpp)时,我收到一个错误:

 In constructor …
Run Code Online (Sandbox Code Playgroud)

c++ constructor class

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

复制/移动未实现复制的字段

费里斯船长有一张地图 ( seven_seas.png),显示他隐藏了多个宝藏(在坐标 (5,7) 和 (7,9) 处)。他想为每个宝藏创建一个单独的藏宝图。不应更改原始地图。

为此,他决定使用 Rust 和图像箱

extern crate image;
use crate::image::GenericImage;


struct Desk {
    map_of_seven_seas: image::DynamicImage,
    colored_ink: image::Rgba<u8>,
}

impl Desk {
    fn create_treasure_map(mut self, x: u32, y:u32) -> image::DynamicImage {
        self.map_of_seven_seas.put_pixel(x, y, self.colored_ink);
        self.map_of_seven_seas
    }

}

fn main() {
    let desk = Desk {
        map_of_seven_seas: image::open("seven_seas.png").unwrap(),
        colored_ink: image::Rgba([255, 0, 0, 255]), // red             
    };

    println!("Marking my treasures!");
    // works fine
    let treasure_map_0 = desk.create_treasure_map(5, 7);
    treasure_map_0.save("treasure_map_0.png").unwrap();

    // breaks
    let treasure_map_1 = desk.create_treasure_map(7, …
Run Code Online (Sandbox Code Playgroud)

image deep-copy move-semantics rust

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