Да, я ошибся, речь вообще шла об ntp и о надёжности не гуглового сервиса. systemd по умолчанию использует серверы Google, народ обсуждал, на что бы переехать другое. Как оказалось, pool.ntp.org не рекомендуют ставить стандартным сервером — это меня удивило, а упоминание Google просто в голове отложилось.
Google где-то писал, что эти адреса не для внешнего использования, они не рассчитаны на какую-либо нагрузку. А один из открытых проектов (dnsmasq?) использует их по умолчанию, поэтому нагрузка на них всегда есть.
Позабавил факт, что скрипты адаптируются под систему и тащат соответствующие файлы:
В Linux осуществлялась отправка содержимого /etc/passwd, .bash_history, .mysql_history, .pgsql_history, файлов из директории .ssh, настроек remina, Filezilla и Psi+, а также текстовых файлов, в именах которых имеются слова pass и access, и любых shell-скриптов.
Как бы ни расстраивала политика Mozilla в последнее время, браузера удобнее для себя ещё не нашёл.
На reddit порекомендовали песочницу firejail, решил попробовать. Пакет есть как минимум для Debian Stretch; из коробки поддерживает firefox, thunderbird, chromium, midori, vlc. Вроде пока устраивает.
Кто-нибудь пользуется этой песочницей или аналогами? Какие преимущества/недостатки?
Для чего вам вообще склеивать str? Он для этого не предназначен. Его можно сравнить с Сишным char * — просто немодифицируемая последовательность символов.
String предназначен для манипуляции строками. Более того, вам даже он не нужен.
Вы хотите передавать путь до файла в функцию — так и принимайте его! Для манипуляции Path есть тонна удобнейших функций.
std::path::Path usage
use std::path::Path;
struct Model {
u: f32,
}
impl Model {
fn new(file_path: &Path) -> Model {
let texture_path = file_path.with_extension("tga");
println!("path: {:?}", texture_path);
// outputs 'path: "/tmp/models/african_head.tga"'
Model{ u: 1.0 }
}
}
fn main() {
let model = Model::new(Path::new("/tmp/models/african_head.obj"));
}
Вы серьезно не понимаете, что время воспитания детей через ограничения информации, которое существовало в прошлом веке и раньше — кончилось
Что характерно, эта техника «воспитания» никогда и не работала. Можно, к примеру, вспомнить о парне по имени Сиддхартха Гаутама, которому до 29 ограничивали поток информации. Но зачем нам знать историю — будем повторять чужие ошибки.
Недопонял, зачем это здесь, и кому это можно понадобиться, ну да ладно.
Зачем-то ваш скрипт поправил. Мне кажется, стало немного читабельнее.
Скрытый текст
#!/bin/bash
path=./
temp=$path/temp
key_files="name.key masks.key masks2.key primary.key primary2.key header.key"
original_file="$temp/$1"
mkdir -p "$temp"
mkdir -p "$path/keys"
# CR to LF. Конвертируем файл в формат UNIX (Окончания строк LF, вместо CR)
dos2unix -n -q "$1" "$original_file"
# Записываем имена всех ключей во временный файл
grep -E -o 'Keys\\\w+]' "$original_file" | sed -E 's/Keys\\//; s/]//' > $temp/keysname
while read key
do
# Записываем полное содержимое ключа в отдельный файл с его именем
cat $original_file | sed -e '/./{H;$!d;}' -e "x;/$key]/!d" | sed -n "/$key]/!p" > $temp/$key
# Разделяем ключи (name, primary, masks, header...) и записываем в отдельные файлы в папку с именем ключа
mkdir -p "$path/keys/$key"
for file in $key_files;
do
hex=$(cat $temp/$key | tr -d '\n' | sed -E 's/\\//g; s/ //g; s/\$//g' | grep -E -o "$file\"=hex:(\w{2},?)+?" | sed -E "s/$file\"=hex://; s/,//g" | sed -E 's/\w{2}/\\x&/g')
echo -e -n "$hex" > "$path/keys/$key/$file"
# LF to CR ???
# sed 's/$'"/`echo \\\r`/" "$path/keys/$file" > "$path/keys/$file"
done
done < $temp/keysname
# Очистка временных файлов
rm -rf "$temp"
exit 0
Небольшие пояснения.
Не нужно проверять, существует ли директория, если вам нужно её создать — mkdir -p создаст её со всеми поддиректориями и не будет ныть, если всё уже создано.
Не нужно и проверять, если вам её нужно удалить — rm -rf не ругается, если ему ничего не дали.
Для итерации по списку файлов сойдёт и просто строка, ассоциативный массив на мой взгляд излишен. Да и синтаксис у него страшнее.
Зачастую можно обойтись без cat, многие утилиты могут принимать на вход файлы (в этом скрипте осталась ещё пара таких мест)
Пожалуй, вместо sed можно бы использовать скрипт на python или ещё чем-нибудь более человечном.
github.com/systemd/systemd/issues/437
(opennet).
Интересно, можно ли нагенерить на лету случайных скриптов, чтобы у чуваков место на диске кончилось…
На reddit порекомендовали песочницу firejail, решил попробовать. Пакет есть как минимум для Debian Stretch; из коробки поддерживает firefox, thunderbird, chromium, midori, vlc. Вроде пока устраивает.
Кто-нибудь пользуется этой песочницей или аналогами? Какие преимущества/недостатки?
На мой взгляд, здесь несколько недостатков:
Model::newпередаётся именно путь до файлаТогда вот вариант с использованием
format!иPathBuf(на gist тоже обновил, ссылка выше):Вот здесь ещё несколько вариантов: stackoverflow.com/a/30481077/1145239
Я бы на вашем месте просто сменил расширение или складывал в другую директорию.
char *— просто немодифицируемая последовательность символов.String предназначен для манипуляции строками. Более того, вам даже он не нужен.
Вы хотите передавать путь до файла в функцию — так и принимайте его! Для манипуляции Path есть тонна удобнейших функций.
gist mirror
Что характерно, эта техника «воспитания» никогда и не работала. Можно, к примеру, вспомнить о парне по имени Сиддхартха Гаутама, которому до 29 ограничивали поток информации. Но зачем нам знать историю — будем повторять чужие ошибки.
Там упоминается, что в Средние века животных судили наравне с людьми.
Зачем-то ваш скрипт поправил. Мне кажется, стало немного читабельнее.
Небольшие пояснения.
mkdir -pсоздаст её со всеми поддиректориями и не будет ныть, если всё уже создано.rm -rfне ругается, если ему ничего не дали.cat, многие утилиты могут принимать на вход файлы (в этом скрипте осталась ещё пара таких мест)Пожалуй, вместо
sedможно бы использовать скрипт на python или ещё чем-нибудь более человечном.