1.84K subscribers
3.27K photos
130 videos
15 files
3.55K links
Блог со звёздочкой.

Много репостов, немножко программирования.

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
Forwarded from Антон
Это индустриальный стандарт. То есть нечто настолько плохое, что те, кто поддались на обманчивую простоту, обиделись достаточно сильно, чтобы заставить также страдать и своих коллег
👍5🔥2👎1😢1
Блог*
#prog #rust #cpp #java #article A Rust Gem: The Rust Map API
Вдобавок ко всему тому, что написано в статье, хочу отметить, что Entry API позволяет просто делать то, что в других языках выглядит зачастую весьма неловко: получить значение по ключу и в случае его отсутствия вставить новое значение, сконструированное при помощи функции, которая может завершиться ошибкой.

Пример:

fn get_file_contents(
name: PathBuf,
contents: &mut HashMap<PathBuf, String>,
) -> std::io::Result<&str> {
use std::collections::hash_map::Entry;

Ok(match contents.entry(name) {
Entry::Occupied(e) => e.into_mut(),
Entry::Vacant(e) => {
let file_contents = std::fs::read_to_string(e.key())?;
e.insert(file_contents)
}
})
}

Известные мне альтернативы в других языках позволяют сигнализировать об ошибке в подобных ситуациях лишь при помощи исключений
👍2
Using Go is a no-brainer in the sense that one has to have no brain in order to even consider using it
👎20👍11😁7👏1💩1
Давайте поговорим о прекрасном.

Например, о В...
#prog #parsing #article

Obliteratingly Fast Parser Combinators (pdf)

Lexers and parsers are typically defined separately and connected by a token stream. This separate definition is important for modularity, but harmful for performance.
We show how to fuse together separately-defined lexers and parsers, drastically improving performance without compromising modularity. Our staged parser combinator library, flap, provides a standard parser combinator interface, but generates psecialized token-free code that runs several times faster than ocamlyacc on a range of benchmarks.

(thanks @clayrat)
🔥6
Блог*
Сделать, что ли, отдельный хештег для serde 🤔
Таки сделал. А ещё сделал отдельный хештег parsing, а то материалов по парсингу на канале уже довольно много
Блог*
#моё #prog #rust В крейте time есть структура Date с методом format, который возвращает String со датой, отформатированной согласно переданному формату. Выглядит это примерно так (пример из документации): assert_eq!(date!(2019-01-02).format("%Y-%m-%d"),…
#prog #rust #rustlib

Хочу отметить, что моя претензия — парсинг форматной строки снова и снова — была решена в time начиная с версии 0.3.0, выпущенной 30 июля 2021 года, причём с подходом, похожим на описанный ранее мною в блоге.

Что там добавилось? Отдельный модуль format_description, который определяет пачку типов, описывающих компоненты формата — включая FormatItem и Component — и модуль formatting с трейтом Formattable, который реализовывается типами, описывающими формат форматирования даты и времени. Для того, чтобы получить формат из строки, достаточно вызвать функцию format_description::parse — или, если вы не хотите разбираться с ошибками при парсинге, макрос macros::format_description, который разберёт формат на этапе компиляции и проверит его правильность — и затем использовать результат в методах {Date, OffsetDateTime, PrimitiveDateTime, Time}::format, принимающих вторым аргументом ссылку на значение типа, реализующее Formattable.
#prog #python #article

Jupyter Ascending: A Retrograde Development

Computational notebooks have a history dating back to the late 1980s, <...>. They combine two much older, better, but less popular ideas into a synthesis which manages to be less than the sum of its parts.

(и вдогонку ссылка оттуда на презентацию доклада I Don't Like Notebooks от Joel Grus, сделанного для JupyterCon 2018)
👍21
Не IT — не ахти
👍2
Forwarded from Санечка Ъысь (Anna Weiss)
Блог*
— БОЖЕЧКИ КАКАЯ МИЛАЯ ПЛЮШЕВАЯ АКУЛА
В связи с уходом IKEA из России продам санкционный товар
unsafe auto trait Send: Nudes {}
1