Хоспаде, изначально я хотел этот пост написать сразу после публикации того видео от 3b1b. Почему на это ушла целая неделя?
#prog #php #cpp #article
Как мы наш большой проект на KPHP мигрировали
Безумству храбрых поём мы песню
Как мы наш большой проект на KPHP мигрировали
Безумству храбрых поём мы песню
Хабр
Как мы наш большой проект на KPHP мигрировали
История о том, как мы мигрировали нашу систему управления проектами на KPHP. Если у вас есть PHP-проект с длинной историей и вы хотите запуститься на KPHP для получения выгод, то приготовьтесь! Будет...
😱5🔥2
Блог*
Делать ли отдельный хештег под неочевидные способы потерять производительность?
Сделал, performancetrap
🔥5🤨3🤯1🤮1
#prog #rust #rustlib
smart-default
Custom derive for automatically implementing the Default trait with customized default values:
smart-default
Custom derive for automatically implementing the Default trait with customized default values:
#[macro_use]
extern crate smart_default;
#[derive(SmartDefault)]
enum Foo {
Bar,
#[default]
Baz {
#[default = 12]
a: i32,
b: i32,
#[default(Some(Default::default()))]
c: Option<i32>,
#[default(_code = "vec![1, 2, 3]")]
d: Vec<u32>,
#[default = "four"]
e: String,
},
Qux(i32),
}
assert_eq!(
Foo::default(),
Foo::Baz {
a: 12,
b: 0,
c: Some(0),
d: vec![1, 2, 3],
e: "four".to_owned(),
},
);👍9🤔3👎2🥴2😁1
Forwarded from Питонические атаки
Оказывается, механизм разрешения зависимостей из Poetry можно использовать для решения судоку. И судоку, и разрешение зависимостей — это задачи удовлетворения ограничений (constraint satisfaction problem), поэтому достаточно лишь записать правила судоку в виде пакетов с зависимостями и заставить Poetry это установить. А если добавить флажки для подробного вывода, то Poetry еще по пути будет объяснять, почему он решает судоку именно так. Офигенно!
Статья | Тред на реддите
Статья | Тред на реддите
🔥17👍2❤1👎1
#prog #parsing #rust #rustlib
Chumsky
A parser library for humans with powerful error recovery.
Пример парсера brainfuck:
Chumsky
A parser library for humans with powerful error recovery.
Пример парсера brainfuck:
use chumsky::prelude::*;
#[derive(Clone)]
enum Instr {
Left, Right,
Incr, Decr,
Read, Write,
Loop(Vec<Self>),
}
fn parser() -> impl Parser<char, Vec<Instr>, Error = Simple<char>> {
recursive(|bf| {
choice((
just('<').to(Instr::Left),
just('>').to(Instr::Right),
just('+').to(Instr::Incr),
just('-').to(Instr::Decr),
just(',').to(Instr::Read),
just('.').to(Instr::Write),
bf.delimited_by(just('['), just(']')).map(Instr::Loop),
))
.repeated()
})
}GitHub
GitHub - zesterer/chumsky: Write expressive, high-performance parsers with ease.
Write expressive, high-performance parsers with ease. - zesterer/chumsky
🔥12
Блог*
#prog #parsing #rust #rustlib Chumsky A parser library for humans with powerful error recovery. Пример парсера brainfuck: use chumsky::prelude::*; #[derive(Clone)] enum Instr { Left, Right, Incr, Decr, Read, Write, Loop(Vec<Self>), } …
Пример сообщения о синтаксической ошибке для разрабатываемого этим же человеком своего языка программирования.
🤯30