https://www.opennet.ru/opennews/art.shtml?num=54516
Критическая ошибка в Chrome, позволяющая обойти все уровни защиты браузера и выполнить код в системе, за пределами sandbox-окружения. ...она вызвана обращением к уже освобождённому блоку памяти
Очень специфическая проблема, редчайший случай в софте на C++🤔
Критическая ошибка в Chrome, позволяющая обойти все уровни защиты браузера и выполнить код в системе, за пределами sandbox-окружения. ...она вызвана обращением к уже освобождённому блоку памяти
Очень специфическая проблема, редчайший случай в софте на C++🤔
www.opennet.ru
Обновление Chrome 88.0.4324.146 с устранением критической уязвимости
Опубликовано обновление браузера Chrome 88.0.4324.146 в котором устранена уязвимость, имеющая статус критической проблемы, позволяющей обойти все уровни защиты браузера и выполнить код в системе, за пределами sandbox-окружения. Детали об уязвимости (CVE-2021…
Одно из самых интересных траекторий планет задачи трёх тел, маленькую планету колбасит просто!
Forwarded from Random three body problem
This media is not supported in your browser
VIEW IN TELEGRAM
Initial states:
m: 8.824 x: 2.963 y: -3.744 vx: 0.181 vy: 0.671
m: 0.105 x: 5.368 y: 6.131 vx: -0.438 vy: -0.021
m: 5.209 x: -3.997 y: 4.265 vx: 0.002 vy: 0.486
Interest-ness score: 73
m: 8.824 x: 2.963 y: -3.744 vx: 0.181 vy: 0.671
m: 0.105 x: 5.368 y: 6.131 vx: -0.438 vy: -0.021
m: 5.209 x: -3.997 y: 4.265 vx: 0.002 vy: 0.486
Interest-ness score: 73
Оставляю для себя потом прочитать, довольно важная тема оптимизации программ на Rust в одном единственном посте. Старый пост Achieving warp speed with Rust, 2017-го аж года, но при этом вроде бы актуальный. Единственное но, разные штуки, вроде
test::black_hole
пока доступны только в nightly и для них нужно включать #![feature(test)]
.Gist
Rust Optimization.md
GitHub Gist: instantly share code, notes, and snippets.
Навеяно постом Ильи
https://www.tgoop.com/optozorax_dev/298
У меня есть история из детства. Когда я только учился программировать (я на самом деле до сих пор не умею😭), я решил сделать компьютерный аналог игры в 1000 с пятью кубиками, игральными костьми то есть.
Особенность этой игры в том, что после того, как были сгенерировано 5 случайных чисел, нужно было этот массив проверить на то, содержится ли там 3, 4, 5 одинаковых числа и если да, выяснить, что это за числа, кроме этого есть ещё комбинации
Если попытаться вычислить вхождение каждой комбинации в лоб получая на вход массив чисел, то это порождает необходимость в переборе всех комбинаций троек, потом четвёрок, кучи проверок и когда я тогда попытался продавить это решение, оно было кошмарным и я утонул в багах.
И однажды мне неожиданно пришла простая мысль: давайте сделаем массив длины 6,
Прежние мои попытки я с радостью удалил и переписал проверку паттернов (и соответственно подсчёт очков). Я был так воодушевлён, что решил было сделать алгоритм игры, то есть бота, чтобы мне поиграть против компьютера. Увы, такого рода задачи уже были мне не по зубам вплоть до универа, когда я начал грызть "Программирование игр" Адельсона-Вельского и компании.
https://www.tgoop.com/optozorax_dev/298
У меня есть история из детства. Когда я только учился программировать (я на самом деле до сих пор не умею😭), я решил сделать компьютерный аналог игры в 1000 с пятью кубиками, игральными костьми то есть.
Особенность этой игры в том, что после того, как были сгенерировано 5 случайных чисел, нужно было этот массив проверить на то, содержится ли там 3, 4, 5 одинаковых числа и если да, выяснить, что это за числа, кроме этого есть ещё комбинации
1,2,3,4,5
и 2,3,4,5,6
.Если попытаться вычислить вхождение каждой комбинации в лоб получая на вход массив чисел, то это порождает необходимость в переборе всех комбинаций троек, потом четвёрок, кучи проверок и когда я тогда попытался продавить это решение, оно было кошмарным и я утонул в багах.
И однажды мне неожиданно пришла простая мысль: давайте сделаем массив длины 6,
s = [s1, s2, s3, s4, s5, s6]
и в нём будем накапливать количество выпавших на текущем ходу единиц, двоек и так далее шестёрок. Этот препроцессинг сделал проверку условий элементарным, скажем, "выпало ли 4 единицы" нам нужно проверить выполнено ли s1 == 4
.Прежние мои попытки я с радостью удалил и переписал проверку паттернов (и соответственно подсчёт очков). Я был так воодушевлён, что решил было сделать алгоритм игры, то есть бота, чтобы мне поиграть против компьютера. Увы, такого рода задачи уже были мне не по зубам вплоть до универа, когда я начал грызть "Программирование игр" Адельсона-Вельского и компании.
Telegram
dev optozorax
Как известно, я решил задачу "что будет если поместить портал в портал". Я написал программу, которая проводит вычисление этого, и срендерил результат.
По этому поводу я опубликовал маленькое видео на ютубе, а затем запостил это видео на реддите, и оно там…
По этому поводу я опубликовал маленькое видео на ютубе, а затем запостил это видео на реддите, и оно там…
Нужно будет тщательным образом просмотреть и намотать на ус
https://www.youtube.com/watch?v=czhNqUxmLks
https://www.youtube.com/watch?v=czhNqUxmLks
YouTube
Introduction to Starcraft, Strategy, and Bot AI Programming
Time Codes:
00:00 - Introduction / Links
02:13 - What is Starcraft / RTS?
05:23 - Basic RTS Strategies
08:31 - Starcraft Races
10:28 - Terran Overview
13:06 - Protoss Overview
15:26 - Zerg Overview
18:37 - Example Game Scenario
20:55 - What is a Build Order?…
00:00 - Introduction / Links
02:13 - What is Starcraft / RTS?
05:23 - Basic RTS Strategies
08:31 - Starcraft Races
10:28 - Terran Overview
13:06 - Protoss Overview
15:26 - Zerg Overview
18:37 - Example Game Scenario
20:55 - What is a Build Order?…
Интересное интервью с создателем Factorio известным как kovarex. Длинный 2.5-часовой подкаст, где товарищ kovarex рассказывает, что его связывало со старкрафтом, и как он пришёл к идее создания Factorio.
(Factorio — это такая игра, где вместо раздачи команд юнитам игрок создаёт всё более и более высокоуровневые структуры для решения стратегических задач).
https://makingcomputerdothings.com/the-undermind-episode-45-an-interview-with-kovarex-the-creator-of-factorio/
(Factorio — это такая игра, где вместо раздачи команд юнитам игрок создаёт всё более и более высокоуровневые структуры для решения стратегических задач).
https://makingcomputerdothings.com/the-undermind-episode-45-an-interview-with-kovarex-the-creator-of-factorio/
Making Computer Do Things
The Undermind Episode 45 – An interview with kovarex, the creator of Factorio
This episode is a very special one – few people know that kovarex actually one of the founders of the BWAPI project – and he agreed to have a talk about it, and of course, Factorio. Thi…
Воу воу, помедленнее там
https://www.zdnet.com/article/linus-torvalds-on-where-rust-will-fit-into-linux/
Линус говорит о том, где Раст будет зажигать на линуксе (хинт: на уровне приложений, дрова и утилиты, в ядро Линус его не пустит).
https://www.zdnet.com/article/linus-torvalds-on-where-rust-will-fit-into-linux/
Линус говорит о том, где Раст будет зажигать на линуксе (хинт: на уровне приложений, дрова и утилиты, в ядро Линус его не пустит).
ZDNET
Linus Torvalds on where Rust will fit into Linux
Slowly but surely the Rust language is making its way into Linux. I talked with Linus Torvalds and Greg Kroah-Hartman about where they see Rust and Linux working together.
А вы знали, что сегодня International Waffle Day?
Давайте поздравим Вафеля (www.tgoop.com/ihatereality), я уже съел вафельку за его здоровье🖐
Давайте поздравим Вафеля (www.tgoop.com/ihatereality), я уже съел вафельку за его здоровье🖐
Открываю релиз ноты Rust, вижу не очень красивый коде сниппет
Увы, нужно признать, разработчики языка допустили архитектурную ошибку💥, теперь это соглашение ушло в библиотеки и сторонний код. Бывает.
Теперь будем терпеть, если вдруг в каком-то месте нужно будет переключиться с вектора на массив (или обратно), нужно будет протыкать и форычи заодно.
fn main() {И дальше: "Обратите внимание, что это было добавлено как отдельный метод, вместо
let array = [1, 2, 3, 4, 5];
// Было
for item in array.iter().copied() {
println!("{}", item);
}
// Стало
for item in std::array::IntoIter::new(array) {
println!("{}", item);
}
}
.into_iter()
, так как сейчас оно ломает текущее соглашение о том, что .into_iter()
относится к срезам по ссылочному итератору."Увы, нужно признать, разработчики языка допустили архитектурную ошибку💥, теперь это соглашение ушло в библиотеки и сторонний код. Бывает.
Теперь будем терпеть, если вдруг в каком-то месте нужно будет переключиться с вектора на массив (или обратно), нужно будет протыкать и форычи заодно.
Статья, написанная ещё год назад, у меня дошли руки только сегодня.
https://oribenshir.github.io/afternoon_rusting/blog/copy-on-write
В этой статье автор ссылается на Герба Саттера (Herb Sutter), который (Герб) представляя свою библиотеку, реализующую
» 1. Библиотека сделана на случай возможного использования из нескольких потоков. Это означает, что деградация производительности будет иметь место даже если программа будет выполняться строго в одном потоке.
» 2. Примеры будут на C++, но рассуждения применимы к любому языку.
И тут оказывается, что-таки растовый
Так уж получается, что гуру, повидав C++ и изучив его досконально, намылил глаз и свой опыт нечаянно распространил на любые языки. Бывает 😃
https://oribenshir.github.io/afternoon_rusting/blog/copy-on-write
В этой статье автор ссылается на Герба Саттера (Herb Sutter), который (Герб) представляя свою библиотеку, реализующую
Copy-On-Write
в плюсах изрёк две противоречивые мысли:» 1. Библиотека сделана на случай возможного использования из нескольких потоков. Это означает, что деградация производительности будет иметь место даже если программа будет выполняться строго в одном потоке.
» 2. Примеры будут на C++, но рассуждения применимы к любому языку.
И тут оказывается, что-таки растовый
Cow<T>
избегает деградации производительности и накладных расходов, связанных с многопоточностью, если используется в одном потоке!Так уж получается, что гуру, повидав C++ и изучив его досконально, намылил глаз и свой опыт нечаянно распространил на любые языки. Бывает 😃
oribenshir.github.io
Optimizations That Aren't, Or Are They?
This blog is designed to cover topics related to both Rust & C++ languages. This blog has emphasis on strong typing and design choices.
Хороший крейт, если мне однажды надо сделать будет динамический диспатч, но нужно будет избежать лишнего косвенного вызова для быстродействия, этот крейт поможет.
https://crates.io/crates/enum_dispatch
Встречал как-то в обсуждениях, но самому использовать не доводилось. Чтобы не забыть, пусть повисит здесь.
https://crates.io/crates/enum_dispatch
Встречал как-то в обсуждениях, но самому использовать не доводилось. Чтобы не забыть, пусть повисит здесь.
Капец, только что майнтейнер
Нынешний PR, который я сделал 23 дня назад: https://github.com/mitsuhiko/indicatif/pull/258
Прошлый PR, аж с 13 Июля 2020 (!): https://github.com/mitsuhiko/indicatif/pull/185
Некоторые из комментариев меня почти выбивали из колеи, например, сначала товарищ говорит, мол
Потом "давай использовать BinaryHeap", а позже "ой, ну наверное BTreeSet лучше", а потом "да и пофиг, пусть будет Vec".🤪
Я так и не понял, куда надо стремиться, чтобы выполнить требования. Он не похож на бывшего джависта, у которого "память больше не ресурс", и не плюсовик, у которого "ты здесь сделал лишнее ветвление, ты заставляешь процессор сбрасывать конвейер😡", и не питонист, которому "похер, лишь бы работало".
Короче, я рад, но одновременно в растерянности.
indicatiff
замерджил мой PR, после разборок на 39 комментов и предыдущего PR, который за полгода устарел настолько, что его было проще переписать заново, чем ребейзить на новый мастер (простите, main🤮).Нынешний PR, который я сделал 23 дня назад: https://github.com/mitsuhiko/indicatif/pull/258
Прошлый PR, аж с 13 Июля 2020 (!): https://github.com/mitsuhiko/indicatif/pull/185
Некоторые из комментариев меня почти выбивали из колеи, например, сначала товарищ говорит, мол
HashSet
тормозит и жрёт память, а потом говорит, мол, зря я в следующих правках занимаюсь оптимизацией, ведь у нас ограниченное количество элементов.Потом "давай использовать BinaryHeap", а позже "ой, ну наверное BTreeSet лучше", а потом "да и пофиг, пусть будет Vec".🤪
Я так и не понял, куда надо стремиться, чтобы выполнить требования. Он не похож на бывшего джависта, у которого "память больше не ресурс", и не плюсовик, у которого "ты здесь сделал лишнее ветвление, ты заставляешь процессор сбрасывать конвейер😡", и не питонист, которому "похер, лишь бы работало".
Короче, я рад, но одновременно в растерянности.
GitHub
Implement `remove` method for `MultiProgress` by nlinker · Pull Request #258 · mitsuhiko/indicatif
Fixes #184
Redone #185 against other branch and rebased on the fresh main
Redone #185 against other branch and rebased on the fresh main
Единственное, что мне понравилось, это его предложение заменить
на
Блин,
if state.objects[*idx].is_some() {
state.objects[*idx] = None;
state.free_set.insert(*idx);
if let Some(idx) = state.ordering.iter().position(|x| *x == *idx) {
state.ordering.remove(idx);
}
...
}
на
if let Some(obj) = state.objects[*idx].take() {
state.free_set.insert(*idx);
state.ordering.retain(|&x| x != *idx);
...
}
Блин,
Option::take
никогда раньше не использовал и он офигенен.