Skip to content

Instantly share code, notes, and snippets.

View njam's full-sized avatar

Reto Kaiser njam

View GitHub Profile
@njam
njam / restic-backup@.service
Last active February 15, 2020 10:52
restic systemd config
[Unit]
Description=Restic backup %I
[Service]
Type=oneshot
Environment="HOME=%h"
ExecStart=/usr/bin/restic backup $BACKUP_ARGS "${BACKUP_PATH}"
ExecStart=/usr/bin/restic forget --prune $FORGET_ARGS
ExecStart=/usr/bin/restic check
@njam
njam / dominator-headless.rs
Created February 5, 2020 19:21
Rendering rust-dominator app in headless browser with wasm-bindgen-test
use wasm_bindgen::prelude::*;
use wasm_bindgen_test::*;
use wasm_bindgen_test::wasm_bindgen_test_configure;
use dominator_test::App;
wasm_bindgen_test_configure!(run_in_browser);
#[wasm_bindgen_test(async)]
async fn test_html() {
use std::pin::Pin;
use std::rc::Rc;
use std::task::Poll;
use futures_executor::block_on;
use futures_util::future::poll_fn;
use futures_signals::signal::{Mutable, Signal};
use futures_signals::signal_vec::{MutableVec};
use futures_signals::signal_vec::SignalVecExt;
#[test]
fn filter_signal_cloned() {
let list = signal_vec::always(vec![3, 1, 6, 2]).map(Rc::new);
#[derive(Copy, Clone)]
enum FilterOption { Odd, Even }
let filter_option = Rc::new(Mutable::new(FilterOption::Odd));
let mut signal = list
extern crate gtk;
extern crate gio;
extern crate glib;
#[macro_use]
extern crate relm;
#[macro_use]
extern crate relm_derive;
use relm::{Relm, Update, Widget};
use gio::prelude::*;
<?xml version="1.0" encoding="utf-8"?>
<CityModel xmlns="http://www.opengis.net/citygml/2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xAL="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:gml="http://www.opengis.net/gml"
xmlns:bldg="http://www.opengis.net/citygml/building/2.0"
xmlns:wtr="http://www.opengis.net/citygml/waterbody/2.0"
xmlns:veg="http://www.opengis.net/citygml/vegetation/2.0"
xmlns:dem="http://www.opengis.net/citygml/relief/2.0"
package main
func printDiff(suppressedKinds []string, kind string, context int, before, after string, to io.Writer) {
diffs := difflib.Diff(strings.Split(before, "\n"), strings.Split(after, "\n"))
for _, ckind := range suppressedKinds {
if ckind == kind {
str := fmt.Sprintf("+ Changes suppressed on sensitive content of type %s\n", kind)
fmt.Fprintf(to, ansi.Color(str, "yellow"))
return
@njam
njam / asyncio_pool.py
Created October 13, 2017 18:24
Limit number of concurrently running asyncio tasks
import asyncio
from collections import deque
class AsyncioPool:
def __init__(self, concurrency, loop=None):
"""
@param loop: asyncio loop
@param concurrency: Maximum number of concurrently running tasks
"""
@njam
njam / arch-linux
Last active July 13, 2023 06:54
Install Arch Linux on XPS 13 9360
# Installation on Dell XPS
# Please also consult official documentation:
# https://wiki.archlinux.org/index.php/Installation_Guide
# https://wiki.archlinux.org/index.php/Dell_XPS_13_(9360)
# https://wiki.archlinux.org/index.php/Dell_XPS_15_(9550)
# Enter BIOS with F2 and configure:
# - "System Configuration" > "SATA Operation": "AHCI"
# - "Secure Boot" > "Secure Boot Enable": "Disabled"

Keybase proof

I hereby claim:

  • I am njam on github.
  • I am njam (https://keybase.io/njam) on keybase.
  • I have a public key ASC-YBOm7q4wL-uRQU9id9E7Z4dRkDiF8Dqn1q5gL6341Ao

To claim this, I am signing this object: