Forwarded from Kai Ren
Настоятельно рекомендую ознакомиться, либо освежить в памяти, если уже читали, это:
https://github.com/pretzelhammer/rust-blog/blob/master/posts/common-rust-lifetime-misconceptions.md
https://github.com/pretzelhammer/rust-blog/blob/master/posts/common-rust-lifetime-misconceptions.md
GitHub
rust-blog/posts/common-rust-lifetime-misconceptions.md at master · pretzelhammer/rust-blog
Educational blog posts for Rust beginners. Contribute to pretzelhammer/rust-blog development by creating an account on GitHub.
Forwarded from Технологический Болт Генона
Интересный цикл постов от автора визитки с linux на борту
Mastering Embedded Linux, Part 1: Concepts
https://www.thirtythreeforty.net/posts/2019/08/mastering-embedded-linux-part-1-concepts/
Mastering Embedded Linux, Part 2: Hardware
https://www.thirtythreeforty.net/posts/2019/12/mastering-embedded-linux-part-2-hardware/
Mastering Embedded Linux, Part 3: Buildroot
https://www.thirtythreeforty.net/posts/2020/01/mastering-embedded-linux-part-3-buildroot/
Mastering Embedded Linux, Part 4: Adding Features
https://www.thirtythreeforty.net/posts/2020/03/mastering-embedded-linux-part-4-adding-features/
Mastering Embedded Linux, Part 5: Platform Daemons
https://www.thirtythreeforty.net/posts/2020/05/mastering-embedded-linux-part-5-platform-daemons/
Mastering Embedded Linux, Part 1: Concepts
https://www.thirtythreeforty.net/posts/2019/08/mastering-embedded-linux-part-1-concepts/
Mastering Embedded Linux, Part 2: Hardware
https://www.thirtythreeforty.net/posts/2019/12/mastering-embedded-linux-part-2-hardware/
Mastering Embedded Linux, Part 3: Buildroot
https://www.thirtythreeforty.net/posts/2020/01/mastering-embedded-linux-part-3-buildroot/
Mastering Embedded Linux, Part 4: Adding Features
https://www.thirtythreeforty.net/posts/2020/03/mastering-embedded-linux-part-4-adding-features/
Mastering Embedded Linux, Part 5: Platform Daemons
https://www.thirtythreeforty.net/posts/2020/05/mastering-embedded-linux-part-5-platform-daemons/
www.thirtythreeforty.net
Mastering Embedded Linux, Part 1: Concepts
A high-level introduction to concepts in hacking cheap embedded Linux systems
Forwarded from Блог*
Forwarded from Darya
наши вопросы на собеседовании растовиков
# Раст
* c++ и rust: отличия в строении vtable
* зачем нужны ZST?
* как safe раст гарантирует отсутствие data race?
* что такое object safety
# Структуры данных
* btree
* hashmap (+ linkedhashmap)
* bloom filter (+ cuckoo filter)
# Растовое окружение
* как дела с сериализацией/десериализацией, какие форматы
* ошибки: операциональные/программерские, когда использовать assert, когда Error. failure
* асинхронщина: tokio, futures
* как устроен eventloop, как он связан с поллингом
# Общие вопросы
* чем low latency отличается от high throughput?
* sync/async? block/nonblock?
* linux планироващик
* cpu/numa affinity
* гипертрединг
* TCP vs UDP
* способы организации IPC в linux
* потоки vs корутины, когда что использовать
# Раст
* c++ и rust: отличия в строении vtable
* зачем нужны ZST?
* как safe раст гарантирует отсутствие data race?
* что такое object safety
# Структуры данных
* btree
* hashmap (+ linkedhashmap)
* bloom filter (+ cuckoo filter)
# Растовое окружение
* как дела с сериализацией/десериализацией, какие форматы
* ошибки: операциональные/программерские, когда использовать assert, когда Error. failure
* асинхронщина: tokio, futures
* как устроен eventloop, как он связан с поллингом
# Общие вопросы
* чем low latency отличается от high throughput?
* sync/async? block/nonblock?
* linux планироващик
* cpu/numa affinity
* гипертрединг
* TCP vs UDP
* способы организации IPC в linux
* потоки vs корутины, когда что использовать
Таненбаум "Архитектура компьютера"
Скиена "Алгоритмы"
Клеппман "Высоконагруженные приложения"
Эспозито "Архитектура корп. приложений"
Скиена "Алгоритмы"
Клеппман "Высоконагруженные приложения"
Эспозито "Архитектура корп. приложений"
Forwarded from kamyshev.code
Современный бэкенд для фронтенда на Node.js
Вчера посмотрел доклад про BFF на летнем HolyJS и очень кайфанул — классный обзор бекендов для фронтендов, решаемых задачи и возникающих проблем. Очень хотел им поделиться, но (почему-то) был уверен, что в паблик его еще не выложили. А оказалось, что выложили.
#фронтенд #проектирование
Вчера посмотрел доклад про BFF на летнем HolyJS и очень кайфанул — классный обзор бекендов для фронтендов, решаемых задачи и возникающих проблем. Очень хотел им поделиться, но (почему-то) был уверен, что в паблик его еще не выложили. А оказалось, что выложили.
#фронтенд #проектирование
Forwarded from oleg_log (Oleg Kovalov)
Ого, в Postgres планируют (ну пока не кор-тим) завезти новое хранилище - zheap.
Хоть пост и не загружен технически, смысл прост - вынесем из туплов (tuple, ед данных во внутренностях Постгри, поправьте меня) данные связанные с транзакциями и...да и все по большей части. Суммарно сократим колво потраченных байт унеся их подальше.
Не знаю, появится ли оно в 14 (в чем я сомневаюсь), но жить станет приятнее я думаю. Был еще вроде план на pluggable storage, но не уверен, что это сделали и в жтом есть смысл для конечного пользователя.
https://www.cybertec-postgresql.com/en/zheap-reinvented-postgresql-storage/
Хоть пост и не загружен технически, смысл прост - вынесем из туплов (tuple, ед данных во внутренностях Постгри, поправьте меня) данные связанные с транзакциями и...да и все по большей части. Суммарно сократим колво потраченных байт унеся их подальше.
Не знаю, появится ли оно в 14 (в чем я сомневаюсь), но жить станет приятнее я думаю. Был еще вроде план на pluggable storage, но не уверен, что это сделали и в жтом есть смысл для конечного пользователя.
https://www.cybertec-postgresql.com/en/zheap-reinvented-postgresql-storage/
CYBERTEC PostgreSQL | Services & Support
zheap: Reinvented PostgreSQL storage
zheap is a way to keep table bloat under control by implementing a storage engine capable of running UPDATE-intense workloads a lot more efficiently.
Forwarded from Alla Aleksandrovska
#Vacancy #Tech #Lead #Python
Есть ремоут в американский стартап на #FinTech проект.
Распределенная команда, постоянный ремоут, возможно в будущем откроют офис в Украине (Киев).
Ранняя стадия. У всех есть возможность решать проблемы с нуля и брать на себя ответственность за проекты.
По ЗП: готовы обсуждать все ожидания.
Responsibilities:
- Build and ship new products
- Act as a technical leader for the development team
- Help accelerate time-to-value for the initial customers
Requirements:
- Software development experience with Python/Django 7+ years
- Lead experience in managing developers
- Experience working directly with VP or CTOs of startups
- Recent product company experience
- Passionate for hands-on work
Мои контакты:
[email protected]
Skype: socioengineer
Есть ремоут в американский стартап на #FinTech проект.
Распределенная команда, постоянный ремоут, возможно в будущем откроют офис в Украине (Киев).
Ранняя стадия. У всех есть возможность решать проблемы с нуля и брать на себя ответственность за проекты.
По ЗП: готовы обсуждать все ожидания.
Responsibilities:
- Build and ship new products
- Act as a technical leader for the development team
- Help accelerate time-to-value for the initial customers
Requirements:
- Software development experience with Python/Django 7+ years
- Lead experience in managing developers
- Experience working directly with VP or CTOs of startups
- Recent product company experience
- Passionate for hands-on work
Мои контакты:
[email protected]
Skype: socioengineer
Forwarded from oleg_log (Oleg Kovalov)
Достаточно детальная статья с разбором, а почему Rust медленно собирается.
https://medium.com/@jondot/8-steps-for-troubleshooting-your-rust-build-times-2ffc965fd13e
Отдельно упомяну упомянутые https://github.com/google/bloaty и https://github.com/jondot/goweight и https://github.com/RazrFalcon/cargo-bloat (cpp gо, rust соотв)
https://medium.com/@jondot/8-steps-for-troubleshooting-your-rust-build-times-2ffc965fd13e
Отдельно упомяну упомянутые https://github.com/google/bloaty и https://github.com/jondot/goweight и https://github.com/RazrFalcon/cargo-bloat (cpp gо, rust соотв)
Medium
8 Steps for Troubleshooting Your Rust Build Times
To be able to troubleshoot Rust compilation, we first need to understand in a rough cut how it works. The goal is to give you a map that…
Forwarded from Senior Sigan blog (Ilya Siganov)
Осенний аниме-сезон не очень. Но что тогда смотреть за завтраком/обедом и вечером? Делюсь с вами подборочкой.
- Линейная алгебра и геометрия ФКН ВШЭ. Онгоинг. Прикольный, бодрый сериал про алгебру, мне нравится.
- Машобуч СПбГУ - Сергей Николенко. Онгоинг. Сериал про классический ML. (Вообще смотрите все видосы на канале)
- Маш обуч ФКН ВШЭ - Евгений Соколов. Онгоинг. Классический ML. Хороший сериал.
- Алгоритмы и структуры данных. Онгоинг. Смотрел пару серий, мне понравилось.
Вышедшие сериалы, которые можно посмотреть.
- Алгоритмы и структуры данных. ШАД. М.А.Бабенко. Вышло в 2014. Огонь сериал, смотрел на одном дыхании.
- Программирование на С++ от CSC. Первый сезон. Второй сезон. - лучший сериал про с++, что я смотрел.
- Программирование на Rust от CSC. - Советую смотреть после сериала про С++. Отлично дополнит.
- Линейная алгебра и геометрия ФКН ВШЭ. Онгоинг. Прикольный, бодрый сериал про алгебру, мне нравится.
- Машобуч СПбГУ - Сергей Николенко. Онгоинг. Сериал про классический ML. (Вообще смотрите все видосы на канале)
- Маш обуч ФКН ВШЭ - Евгений Соколов. Онгоинг. Классический ML. Хороший сериал.
- Алгоритмы и структуры данных. Онгоинг. Смотрел пару серий, мне понравилось.
Вышедшие сериалы, которые можно посмотреть.
- Алгоритмы и структуры данных. ШАД. М.А.Бабенко. Вышло в 2014. Огонь сериал, смотрел на одном дыхании.
- Программирование на С++ от CSC. Первый сезон. Второй сезон. - лучший сериал про с++, что я смотрел.
- Программирование на Rust от CSC. - Советую смотреть после сериала про С++. Отлично дополнит.
Forwarded from Блог*
#prog #rust
Пара советов по строкам в Rust:
1) Если вам нужно разбить строку по одному из нескольких возможных символов — не спешите расчехлять регулярки, для это задачи вполне хватит стандартной библиотеки. Множество строковых методов навроде {, r}split{, _terminator}, trim{, _start, _end}_matches, find и прочие принимают в качестве аргумента для поиска значение, тип которого реализует пока нестабильный трейт Pattern. В настоящий момент его реализуют
2) Если функция принимает на вход
Вызвать `next`?
Нет.
Также вызвать `next_back`?
Нет.
Это всё неполные ответы. Если мы получаем мутабельную ссылку на
Покажу на примере.
Вот первый способ вытащить строку из
Второй способ (побыстрее и не требующий аллокаций):
Пара советов по строкам в Rust:
1) Если вам нужно разбить строку по одному из нескольких возможных символов — не спешите расчехлять регулярки, для это задачи вполне хватит стандартной библиотеки. Множество строковых методов навроде {, r}split{, _terminator}, trim{, _start, _end}_matches, find и прочие принимают в качестве аргумента для поиска значение, тип которого реализует пока нестабильный трейт Pattern. В настоящий момент его реализуют
&str, &&str, &String, impl FnMut(char) -> bool и (почему-то малоизвестный) &[char]. Таким образом, разбить строку по нескольким символам легко:let result = "Hello, world!".split(&['o', 'l'][..]).collect::<Vec<_>>();
assert_eq!(result, vec!["He", "", "", ", w", "r", "d!"]);
2) Если функция принимает на вход
&mut std::str::Chars, что она может с ним сделать?Вызвать `next`?
Нет.
Также вызвать `next_back`?
Нет.
Это всё неполные ответы. Если мы получаем мутабельную ссылку на
Chars, мы можем редактировать произвольным образом, в том числе и поменять его целиком. Chars внутри себя содержит строки, символы которой он перебирает, и при помощи метода Chars::as_str эту строку можно достать. Таким образом, имея мутабельную ссылку на Chars, можно вытащить из него строку, вырезать из строки нужный кусок и переписать переданный итератор .chars() от этого кусочка.Покажу на примере.
Вот первый способ вытащить строку из
Chars (медленный, требующий аллокаций и не совсем корректный):fn extract_line2(chars: &mut Chars) -> String {
chars.take_while(|&ch| !matches!(ch, '\r' | '\n')).collect()
}Второй способ (побыстрее и не требующий аллокаций):
fn extract_line<'s>(chars: &mut Chars<'s>) -> Option<&'s str> {
let s = chars.as_str();
let line = s.lines().next()?;
*chars = s[line.len()..].chars();
Some(line)
}doc.rust-lang.org
Pattern in std::str::pattern - Rust
A string pattern.