Forwarded from Архонт щітпосту | #укртґ
Кстати, остался последний месяц 2020. Предлагаю собрать аптечки, патроны и броню, потому что боссфайт уже близко
#записки
#записки
#prog
А я напоминаю, что в декабре начинается очередной Advent of code. Предлагаю поучаствовать.
Advent of Code is an Advent calendar of small programming puzzles for a variety of skill sets and skill levels that can be solved in any programming language you like. People use them as a speed contest, interview prep, company training, university coursework, practice problems, or to challenge each other.
You don't need a computer science background to participate - just a little programming knowledge and some problem solving skills will get you pretty far. Nor do you need a fancy computer; every problem has a solution that completes in at most 15 seconds on ten-year-old hardware.
А я напоминаю, что в декабре начинается очередной Advent of code. Предлагаю поучаствовать.
Advent of Code is an Advent calendar of small programming puzzles for a variety of skill sets and skill levels that can be solved in any programming language you like. People use them as a speed contest, interview prep, company training, university coursework, practice problems, or to challenge each other.
You don't need a computer science background to participate - just a little programming knowledge and some problem solving skills will get you pretty far. Nor do you need a fancy computer; every problem has a solution that completes in at most 15 seconds on ten-year-old hardware.
Ты:
— Я смотрю диффы по merge request, и я бы хотел видеть файлы в порядке важности их изменений. Какой файл должен идти первым?
Gitlab:
— Cargo.lock
— Я смотрю диффы по merge request, и я бы хотел видеть файлы в порядке важности их изменений. Какой файл должен идти первым?
Gitlab:
— Cargo.lock
Forwarded from 🎵Илья проигрывает пианино 🎵
> а что произойдет если выстрелить в ногу?
> давай я тебе, а ты мне (два молодых C++ программиста)
> давай я тебе, а ты мне (два молодых C++ программиста)
#prog #article
Статья о io_uring и BPF и о том, что они могут привнести в процесс разработки под linux.
Статья о io_uring и BPF и о том, что они могут привнести в процесс разработки под linux.
ScyllaDB
How io_uring and eBPF Will Revolutionize Programming in Linux - ScyllaDB
ScyllaDB's Glauber Costa explains how two new APIs, io_uring and eBPF, are changing the fundamental nature of Linux programming.
Forwarded from мне не нравится реальность (вафель 🧇🍓)
Хочу подчеркнуть пару моментов из последнего TWIR:
— allow using generic trait methods in const fn
Этот PR добавляет возможность использовать трейты в
Это часть реализации (ещё не принятого, ммм) RFC #2632, которое предлагает позволить такое:
В любом случае хорошо что работы в этом направлении ведутся.
— allow Trait inheritance with cycles on associated types
Фиксит старое странное поведение, которое заставляло писать
— allow using generic trait methods in const fn
Этот PR добавляет возможность использовать трейты в
const fn
!Это часть реализации (ещё не принятого, ммм) RFC #2632, которое предлагает позволить такое:
impl const Add for MyInt {и такое:
fn add(self, other: Self) -> Self {
MyInt(self.0 + other.0)
}
}
const fn triple_add<T: Add<Output=T>>(a: T, b: T, c: T) -> T {Мне кажется что
a + b + c
}
const
требование на весь трейт слишком ограничивает, но впрочем другие варианты не лучше :(В любом случае хорошо что работы в этом направлении ведутся.
— allow Trait inheritance with cycles on associated types
Фиксит старое странное поведение, которое заставляло писать
trait Sub: Super<<Self as Sub>::Assoc> {
type Assoc;
}
вместоtrait Sub: Super<Self::Assoc> {
type Assoc;
}
this-week-in-rust.org
This Week in Rust 367 · This Week in Rust
мне не нравится реальность
Хочу подчеркнуть пару моментов из последнего TWIR: — allow using generic trait methods in const fn Этот PR добавляет возможность использовать трейты в const fn! Это часть реализации (ещё не принятого, ммм) RFC #2632, которое предлагает позволить такое: …
#prog #rust
Из более приземлённых вещей: наконец-то стабилизировали
Инновации!
Из более приземлённых вещей: наконец-то стабилизировали
pow
(и пачку схожих методов) как const fn.Инновации!
GitHub
stabilize const_int_pow by tspiteri · Pull Request #76829 · rust-lang/rust
This also requires stabilizing constctlz for const ctlz_nonzero.
#prog #rust #article
Статья об опыте оптимизации движка шаблонов для рендеринга документов. nom рулит.
Статья об опыте оптимизации движка шаблонов для рендеринга документов. nom рулит.
NodeBB Development Blog
Optimizing Benchpress
Optimizing Benchpress Recently, I saw the release of nom v6 and decided I wanted to try it out, and see if I could speed up my hobby JS template compiler, BenchpressJS. Background Benchpress is a template compiler and tiny runtime which is focused on two…
#prog #rust #article
Статья о внутреннем устройстве BTreeMap из стандартной библиотеки Rust. Старая, вышла ещё до Rust 1.0, но она даёт хороший обзор принципиального устройства этой структуры данных вкупе с обзором различных трюков для локализации небезопасных операций. Эти трюки применяются и в современной реализации BTreeMap
Статья о внутреннем устройстве BTreeMap из стандартной библиотеки Rust. Старая, вышла ещё до Rust 1.0, но она даёт хороший обзор принципиального устройства этой структуры данных вкупе с обзором различных трюков для локализации небезопасных операций. Эти трюки применяются и в современной реализации BTreeMap
#prog #rust #amazingopensource #article
Рантайм, позволяющий запускать легковесные процессы на WASM и изолировать их падения, а также ограничивать доступный процесcам API операционной системы. Обзорная статья прилагается.
А вы ещё спрашиваете, зачем WASM нужен.
Рантайм, позволяющий запускать легковесные процессы на WASM и изолировать их падения, а также ограничивать доступный процесcам API операционной системы. Обзорная статья прилагается.
А вы ещё спрашиваете, зачем WASM нужен.
GitHub
GitHub - lunatic-solutions/lunatic: Lunatic is an Erlang-inspired runtime for WebAssembly
Lunatic is an Erlang-inspired runtime for WebAssembly - GitHub - lunatic-solutions/lunatic: Lunatic is an Erlang-inspired runtime for WebAssembly
#prog #rust #rustlib #parsing #amazingopensource
Жора Geoffroy Couprie aka Geal в очередной раз переписал nom. На раст. С раста.
Стоило ли оно того? Определённо.
Во-первых, парсер-комбинаторы теперь вместо
Во-вторых, парсер теперь — это не что-то, реализующее
В-третьих, в nom теперь должно быть удобнее пользоваться ошибками. Ошибки из nom теперь реализуют std::error::Error, комбинатор
Я рассказал лишь о наиболее примечательных, на мой взгляд, изменениях в nom, остальное (вроде улучшенного парсинга на уровне битов и повышения качества документации) вы можете сами прочитать в changelog.
Стоило ли оно того? Определённо.
Во-первых, парсер-комбинаторы теперь вместо
impl Fn(...) -> ...
возвращают impl FnMut(...) -> ...
. Функциональность от этого не пострадала, но теперь из них убрано лишнее ограничение. Да, это означает, что теперь можно очень легко написать stateful парсер. Смиритесь с этим.Во-вторых, парсер теперь — это не что-то, реализующее
FnMut(I) -> IResult<O, E>
, а что-то реализующее nom::Parser. Помимо того, что это изменение поменяло ограничения на типы аргументов комбинаторов, оно позволяет теперь некоторые комбинаторы использовать не в качестве свободных функций, а в качестве методов этого трейта. Это сильно влияет на эргономику — теперь можно написать .map(...)
прямо на парсере, а также набирать альтернативные варианты парсинга цепочкой .or(...)
вместо того, чтобы передавать кортеж парсеров в alt. Разумеется, у трейта есть blanket impl для замыканий, так что все старые комбинаторы продолжат работать.В-третьих, в nom теперь должно быть удобнее пользоваться ошибками. Ошибки из nom теперь реализуют std::error::Error, комбинатор
Parser::into
позволяет сделать новый парсер, который применяет From
к результату и ошибке парсера, а к самим ошибкам можно прицепить контекст — к сожалению, на текущий момент это может быть только &'static str
.Я рассказал лишь о наиболее примечательных, на мой взгляд, изменениях в nom, остальное (вроде улучшенного парсинга на уровне битов и повышения качества документации) вы можете сами прочитать в changelog.
GitHub
nom/CHANGELOG.md at main · Geal/nom
Rust parser combinator framework. Contribute to Geal/nom development by creating an account on GitHub.
Итак, сегодня 5 декабря. Чем примечателен этот день? Это — день, когда Блог* появился на свет.
Тогда мои амбиции были невелики: я считал, что этот блог будут читать только моя семья и ближайшие знакомые — полтора-два десятка человек максимум. Собственно, само название, как и логотип, я считал временным — даже думал в какой-то момент его поменять. Оглядываясь назад, легко обвинить меня в недальновидности — но с другой стороны, кто тогда мог подумать, что канал с мемасиками и заметками по расту станет... Не популярным, но всё же достаточно известным?
Тем не менее, наиболее характерные черты канала, кажется, оформились уже тогда — пачки репостов и чужого контента (но обязательно только то, что я прочитал сам), малость разбавленные собственными постами про не совсем тривиальные вещи на Rust (собственно, свой самый первый пост я и сейчас считаю довольно хардкорным — большая часть остальных постов у меня вроде попроще). С течением времени канал обрёл лицо, но не изменил заложенным в самом начало принципам. Единственное, что существенно изменилось с тех пор — это то, что с весны я начал лично приветствовать всех новых подписчиков.
Разумеется, я повлиял на канал просто в силу того, что я являюсь его единственным автором, но вот повлиял ли он на меня? На самом деле — да. По себе я знаю, что я человек, который относительно быстро увлекается чем-то новым, но так же быстро к этому охладевает, и потому я опасался, что быстро забью на блог и тот просто умрёт. Именно поэтому я дал себе обещание выкладывать на канале хоть что-то каждый день. Те, кто подписан на Блог* достаточно давно, знают, что в полной мере я сдержать это обещание не смог (некоторые дни я всё же пропускал), но всё же мой план сработал — то, что вы сейчас читаете этот пост, является живым тому подтверждением. Я целый год ежедневно занимался чем-то исключительно по собственной прихоти. Это может показаться незначительным, но для меня — человека со слабой волей — это стало достижением.
Ещё более удивительным для меня стал тот факт, что за этот год я написал в общей сложности — так, дайте-ка посчитаю — 23 оригинальных авторских поста, причём без какого-то специального намерения. Я даже сделал на Хабре перевод весьма крутой и крупной статьи, сделав себя несколько заметным и за пределами Telegram. Если бы мне в начале предыдущего года сказали бы, что я столько напишу — я бы не поверил. Блог* не только замотивировал меня заниматься им ежедневно, но и раскрыл писательскую жилку. Одним словом, он повлиял на меня куда сильнее, чем я ожидал, когда выложил тот мем с жирафом.
Но, впрочем, достаточно разговоров обо мне. Своим нынешним состоянием Блог* обязан и другим людям.
Один из них — это Олег Ковалёв (@olegkovalov), ведущий @oleg_log. Именно он, обладающий поистине гигантским терпением, терпеливо выслушивал мои замечания в духе "А вот на расте!..", проявил искренний интерес к моему блогу, сделал первый, кажется, публичный репост и, подкинув мне идею для поста, помог мне набрать первую сотню подписчиков. Олег, если ты это читаешь — спасибо тебе большое.
Другой человек — это... Тоже Олег, но другой, который ведёт небезызвестный Профунктор (я ещё застал время, когда у него была ссылка @libmustdie). Он организовал подборку, в которую попал в том числе и канал вашего (не)покорного слуги, и разом нагнал мне больше сотни подписчиков. И тебе, Олег, спасибо (а также Моноид-тян).
Также я благодарен множеству других людей — владельцам каналов, которые репостили отдельные посты и тепло отзывались о канале (Рома, я типа до сих пор помню твой комплимент). Это очень греет душу и помогает осознавать, что я стараюсь над этим каналом не ради себя одного.
Но главные, кому я хочу сказать спасибо — это моим подписчикам (слишком многочисленным, чтобы перечислить их тут поимённо). Тот факт, что вы читаете мой канал — и даёте мне ценный фидбек — помог мне перестать относиться к каналу как к какой-то блажи и начать относиться к нему как чему-то, что имеет ценность для многих людей — куда большего числа, чем с которым я бы мог познакомиться лично.
Тогда мои амбиции были невелики: я считал, что этот блог будут читать только моя семья и ближайшие знакомые — полтора-два десятка человек максимум. Собственно, само название, как и логотип, я считал временным — даже думал в какой-то момент его поменять. Оглядываясь назад, легко обвинить меня в недальновидности — но с другой стороны, кто тогда мог подумать, что канал с мемасиками и заметками по расту станет... Не популярным, но всё же достаточно известным?
Тем не менее, наиболее характерные черты канала, кажется, оформились уже тогда — пачки репостов и чужого контента (но обязательно только то, что я прочитал сам), малость разбавленные собственными постами про не совсем тривиальные вещи на Rust (собственно, свой самый первый пост я и сейчас считаю довольно хардкорным — большая часть остальных постов у меня вроде попроще). С течением времени канал обрёл лицо, но не изменил заложенным в самом начало принципам. Единственное, что существенно изменилось с тех пор — это то, что с весны я начал лично приветствовать всех новых подписчиков.
Разумеется, я повлиял на канал просто в силу того, что я являюсь его единственным автором, но вот повлиял ли он на меня? На самом деле — да. По себе я знаю, что я человек, который относительно быстро увлекается чем-то новым, но так же быстро к этому охладевает, и потому я опасался, что быстро забью на блог и тот просто умрёт. Именно поэтому я дал себе обещание выкладывать на канале хоть что-то каждый день. Те, кто подписан на Блог* достаточно давно, знают, что в полной мере я сдержать это обещание не смог (некоторые дни я всё же пропускал), но всё же мой план сработал — то, что вы сейчас читаете этот пост, является живым тому подтверждением. Я целый год ежедневно занимался чем-то исключительно по собственной прихоти. Это может показаться незначительным, но для меня — человека со слабой волей — это стало достижением.
Ещё более удивительным для меня стал тот факт, что за этот год я написал в общей сложности — так, дайте-ка посчитаю — 23 оригинальных авторских поста, причём без какого-то специального намерения. Я даже сделал на Хабре перевод весьма крутой и крупной статьи, сделав себя несколько заметным и за пределами Telegram. Если бы мне в начале предыдущего года сказали бы, что я столько напишу — я бы не поверил. Блог* не только замотивировал меня заниматься им ежедневно, но и раскрыл писательскую жилку. Одним словом, он повлиял на меня куда сильнее, чем я ожидал, когда выложил тот мем с жирафом.
Но, впрочем, достаточно разговоров обо мне. Своим нынешним состоянием Блог* обязан и другим людям.
Один из них — это Олег Ковалёв (@olegkovalov), ведущий @oleg_log. Именно он, обладающий поистине гигантским терпением, терпеливо выслушивал мои замечания в духе "А вот на расте!..", проявил искренний интерес к моему блогу, сделал первый, кажется, публичный репост и, подкинув мне идею для поста, помог мне набрать первую сотню подписчиков. Олег, если ты это читаешь — спасибо тебе большое.
Другой человек — это... Тоже Олег, но другой, который ведёт небезызвестный Профунктор (я ещё застал время, когда у него была ссылка @libmustdie). Он организовал подборку, в которую попал в том числе и канал вашего (не)покорного слуги, и разом нагнал мне больше сотни подписчиков. И тебе, Олег, спасибо (а также Моноид-тян).
Также я благодарен множеству других людей — владельцам каналов, которые репостили отдельные посты и тепло отзывались о канале (Рома, я типа до сих пор помню твой комплимент). Это очень греет душу и помогает осознавать, что я стараюсь над этим каналом не ради себя одного.
Но главные, кому я хочу сказать спасибо — это моим подписчикам (слишком многочисленным, чтобы перечислить их тут поимённо). Тот факт, что вы читаете мой канал — и даёте мне ценный фидбек — помог мне перестать относиться к каналу как к какой-то блажи и начать относиться к нему как чему-то, что имеет ценность для многих людей — куда большего числа, чем с которым я бы мог познакомиться лично.
Telegram
Блог*
Количество подписчиков моего блога медленно, но неуклонно растёт. Я начал подумывать о том, чтобы дать своему каналу какое-то более выделяющееся имя, ибо из опыта общения с людьми, знающих о канале, я понял, что астериск в названии канала ("Блог*") многие…
Этот день рождения Блог*а — первый, но, надо думать, отнюдь не последний. Пусть в следующий раз я смогу похвастать уже тысячами подписчиков (впрочем, я не гонюсь в первую очередь за количеством — пусть их будет поменьше, но они будут действительно читать мой блог!), пусть в следующем году оригинального контента станет больше и пусть Блог* станет уважаемым СМИ, на которое будут ссылаться международные издания. Спасибо, что довели меня до этого.
Отпразднуем снова через год! Ура!
Отпразднуем снова через год! Ура!