О точности вычислений: как не потерять данные в цифровом шуме
«По мере того, как сложность возрастает,
точные утверждения теряют значимость,
а значимые утверждения теряют точность»,
—
математик Лотфи Заде
https://habr.com/ru/companies/kryptonite/articles/766294/
👉 @bookflow
«По мере того, как сложность возрастает,
точные утверждения теряют значимость,
а значимые утверждения теряют точность»,
—
математик Лотфи Заде
https://habr.com/ru/companies/kryptonite/articles/766294/
👉 @bookflow
👍4
Forwarded from GameDev: разработка игр
Сайт со скриншотами из игр
https://level-design.org/referencedb/index.php?/category/64
#gamedev
👉 @game_devv
https://level-design.org/referencedb/index.php?/category/64
#gamedev
👉 @game_devv
👍1
Первый проект длиною в полтора года…
На дворе 2021 год, я занимаюсь ремонтом электроники уже на протяжении десяти лет. Свободное от работы время я посвящаю изучению 3D-моделирования и печати. Для этих целей в 2018 году были куплены два самодельных FDM-принтера.
В один из дней приходит знакомый, держа в руках плату с большим количеством радиаторов. Предлагает посмотреть краем глаза, почему она не работает.
Я, конечно же, был не очень рад его предложению, так как занимаюсь больше ремонтом мобильных телефонов и планшетов. В процессе небольшой дискуссии соглашаюсь с одной оговоркой, что если за два выходных дня у меня получится погрузиться в проблему и изучить сам вопрос и понять, что это за плата, то я берусь.
Уже вечером этого дня я изучаю дома плату и первый раз узнаю такие слова, как "Asic", майнер, майнинг. Изучив немного вопрос, понимаю, что имею на руках плату одного такого устройства, а в данном случае именно AntMiner S9.
https://habr.com/ru/articles/746118/
👉 @bookflow
На дворе 2021 год, я занимаюсь ремонтом электроники уже на протяжении десяти лет. Свободное от работы время я посвящаю изучению 3D-моделирования и печати. Для этих целей в 2018 году были куплены два самодельных FDM-принтера.
В один из дней приходит знакомый, держа в руках плату с большим количеством радиаторов. Предлагает посмотреть краем глаза, почему она не работает.
Я, конечно же, был не очень рад его предложению, так как занимаюсь больше ремонтом мобильных телефонов и планшетов. В процессе небольшой дискуссии соглашаюсь с одной оговоркой, что если за два выходных дня у меня получится погрузиться в проблему и изучить сам вопрос и понять, что это за плата, то я берусь.
Уже вечером этого дня я изучаю дома плату и первый раз узнаю такие слова, как "Asic", майнер, майнинг. Изучив немного вопрос, понимаю, что имею на руках плату одного такого устройства, а в данном случае именно AntMiner S9.
https://habr.com/ru/articles/746118/
👉 @bookflow
👍6
Советы и рекомендации по управлению памятью
В течение прошлого года я усовершенствовал мой подход к управлению памятью. С практикой он стал эффективным, простым и быстрым; обычно так же прост в использовании, как и сбор мусора, но без дополнительных затрат.
https://nullprogram.com/blog/2023/09/27/
👉 @bookflow
В течение прошлого года я усовершенствовал мой подход к управлению памятью. С практикой он стал эффективным, простым и быстрым; обычно так же прост в использовании, как и сбор мусора, но без дополнительных затрат.
https://nullprogram.com/blog/2023/09/27/
👉 @bookflow
👍1
Личный сайт — на каждом телефоне
На Хабре нередко встречаются статьи о том, как запустить веб-сервер на старом смартфоне. В принципе, здесь ничего сложного, тем более что современные телефоны — это мощнейшие компьютеры с многоядерными CPU и гигабайтами оперативной памяти. Даже на самом стареньком смартфоне больше памяти (встроенная флэш-память), чем на промышленном сервере 20-летней давности, который ставили на профессиональный хостинг.
На любой современный (даже старенький) смартфон можно поставить веб-сервер, если проделать некоторые манипуляции, то есть рутануть телефон или установить Termux.
Можно пойти дальше и использовать сайт как универсальную мобильную платформу для пиринговых приложений, в том числе мессенджера и файлохранилища. Сайт как визитка просто идентифиц
https://habr.com/ru/companies/ruvds/articles/766518/
👉 @bookflow
На Хабре нередко встречаются статьи о том, как запустить веб-сервер на старом смартфоне. В принципе, здесь ничего сложного, тем более что современные телефоны — это мощнейшие компьютеры с многоядерными CPU и гигабайтами оперативной памяти. Даже на самом стареньком смартфоне больше памяти (встроенная флэш-память), чем на промышленном сервере 20-летней давности, который ставили на профессиональный хостинг.
На любой современный (даже старенький) смартфон можно поставить веб-сервер, если проделать некоторые манипуляции, то есть рутануть телефон или установить Termux.
Можно пойти дальше и использовать сайт как универсальную мобильную платформу для пиринговых приложений, в том числе мессенджера и файлохранилища. Сайт как визитка просто идентифиц
https://habr.com/ru/companies/ruvds/articles/766518/
👉 @bookflow
👍5🤡1
Media is too big
VIEW IN TELEGRAM
Алгоритмы (продвинутый поток)
1. Дерево Фенвика
3. Динамическое программирование
4. НВП и ДП на подотрезках
5. Динамика на подмножествах
6. Динамика по профилю
Все видео доступны на youtube
👉 @bookflow
1. Дерево Фенвика
3. Динамическое программирование
4. НВП и ДП на подотрезках
5. Динамика на подмножествах
6. Динамика по профилю
Все видео доступны на youtube
👉 @bookflow
👍3
Forwarded from Книги по Java | Books Java 📚
Designing Applications for Google Cloud Platform: Create and Deploy Applications Using Java
Автор: Ashutosh Shashi (2023)
Вы начнете с введения в службы GCP и обзора того, что предлагает Java при разработке приложений для GCP. Далее вам расскажут о том, как настроить Google App Engine, Google Storage Cloud и Google Cloud SQL с примерами использования, а также о разработке и развертывании приложений. По ходу книги вы познакомитесь с расширенными службами GCP, развертыванием и масштабированием приложений на службах GCP, а также с устранением неполадок и оптимизацией Java-приложений на GCP. В книге используются реальные примеры, чтобы помочь вам понять, как службы GCP могут решать повседневные проблемы.
Скачать
👉 @java_360
Автор: Ashutosh Shashi (2023)
Вы начнете с введения в службы GCP и обзора того, что предлагает Java при разработке приложений для GCP. Далее вам расскажут о том, как настроить Google App Engine, Google Storage Cloud и Google Cloud SQL с примерами использования, а также о разработке и развертывании приложений. По ходу книги вы познакомитесь с расширенными службами GCP, развертыванием и масштабированием приложений на службах GCP, а также с устранением неполадок и оптимизацией Java-приложений на GCP. В книге используются реальные примеры, чтобы помочь вам понять, как службы GCP могут решать повседневные проблемы.
Скачать
👉 @java_360
👍1
Поговорим об оптимизирующих компиляторах. Сказ первый: SSA-форма
Всем привет. Сегодня я хотел бы поговорить об устройстве современных оптимизирующих компиляторов. Я никогда не публиковался на Хабре ранее, но надеюсь, что мне удастся написать серию статей, которая просуммирует мой опыт в этой области.
Коротко обо мне. Меня зовут Макс, и так получилось, что я вот уже 10 лет, почти с самого начала своей карьеры, занимаюсь оптимизирующими компиляторами. Я начинал в Intel, потом перешёл в Azul Systems, год провёл в Cadence и вернулся обратно, всё это время занимаясь компиляторными оптимизациями для Java, C++ и нейросетевых моделей. На момент написания статьи у меня чуть за 900 патчей в LLVM, большинство из них посвящено цикловым оптимизациям.
За это время я провёл десятки собеседований на позиции как интернов, так и инженеров сеньорного уровня, и довольно часто люди, приходя на эти собеседования, многих вещей не знают или знают поверхностно. И я подумал: а мог бы я написать такой цикл статей, чтобы человек, прочитав их, узнал бы всю ту базу, которая, на мой собственный взгляд, необходима начинающему компиляторному инженеру? Очень бы хотелось, чтобы новичку в этой области можно бы было дать один (относительно небольшой по объёму) набор текстов, чтобы он получил оттуда всё необходимое для старта. Это не перевод, текст оригинальный, поэтому в нём могут быть ошибки и неточности, которые я буду рад исправить, если вы мне их укажете.
https://habr.com/ru/articles/735152/
👉 @bookflow
Всем привет. Сегодня я хотел бы поговорить об устройстве современных оптимизирующих компиляторов. Я никогда не публиковался на Хабре ранее, но надеюсь, что мне удастся написать серию статей, которая просуммирует мой опыт в этой области.
Коротко обо мне. Меня зовут Макс, и так получилось, что я вот уже 10 лет, почти с самого начала своей карьеры, занимаюсь оптимизирующими компиляторами. Я начинал в Intel, потом перешёл в Azul Systems, год провёл в Cadence и вернулся обратно, всё это время занимаясь компиляторными оптимизациями для Java, C++ и нейросетевых моделей. На момент написания статьи у меня чуть за 900 патчей в LLVM, большинство из них посвящено цикловым оптимизациям.
За это время я провёл десятки собеседований на позиции как интернов, так и инженеров сеньорного уровня, и довольно часто люди, приходя на эти собеседования, многих вещей не знают или знают поверхностно. И я подумал: а мог бы я написать такой цикл статей, чтобы человек, прочитав их, узнал бы всю ту базу, которая, на мой собственный взгляд, необходима начинающему компиляторному инженеру? Очень бы хотелось, чтобы новичку в этой области можно бы было дать один (относительно небольшой по объёму) набор текстов, чтобы он получил оттуда всё необходимое для старта. Это не перевод, текст оригинальный, поэтому в нём могут быть ошибки и неточности, которые я буду рад исправить, если вы мне их укажете.
https://habr.com/ru/articles/735152/
👉 @bookflow
👍2
Поговорим об оптимизирующих компиляторах. Сказ второй: Доминирование
Сегодня мы поговорим о доминировании. Это одна из фундаментальных вещей, на которых стоит как теория компиляторов вообще, так и многие компиляторные оптимизации в частности. Пристегните ремни и запишите стоп-слово на бумажке, чтобы не забыть.
https://habr.com/ru/articles/737646/
👉 @bookflow
Сегодня мы поговорим о доминировании. Это одна из фундаментальных вещей, на которых стоит как теория компиляторов вообще, так и многие компиляторные оптимизации в частности. Пристегните ремни и запишите стоп-слово на бумажке, чтобы не забыть.
https://habr.com/ru/articles/737646/
👉 @bookflow
🔥2👍1
Forwarded from ITumor | программисты шутят
Растение молочай черный дрозд выглядит точно так же, как бинарное дерево :)
Подписывайтесь на канал 👉@itumor
Подписывайтесь на канал 👉@itumor
👍7💯2
👍5❤1👎1🔥1
Forwarded from Системный администратор
Перевод статей из серии «Кунг-фу стиля Linux»:
— Удобная работа с файлами по SSH
— Мониторинг дисковой подсистемы
— Глобальный поиск и замена строк с помощью ripgrep
— Упрощение работы с awk
— Наблюдение за файловой системой
— Наблюдение за файлами
— Удобный доступ к справке при работе с bash
— Великая сила make
— Устранение неполадок в работе incron
— Расшаривание терминала в браузере
— Синхронизация настроек
— Бесплатный VPN по SSH
— Превращение веб-приложений в полноценные программы
— Утилита marker и меню для командной строки
— sudo и поворот двух ключей
— Программное управление окнами
— Организация работы программ после выхода из системы
— Регулярные выражения
— Запуск команд
— Разбираемся с последовательными портами
— Базы данных — это файловые системы нового уровня
— О повторении кое-каких событий сетевой истории
— PDF для пингвинов
— Делаем все и сразу
— Файловые системы пользовательского пространства теперь доступны и в Windows
— Делиться — это плохо
— Автоматическое генерирование заголовочных файлов
— Простые конвейеры
👉 @i_odmin
— Удобная работа с файлами по SSH
— Мониторинг дисковой подсистемы
— Глобальный поиск и замена строк с помощью ripgrep
— Упрощение работы с awk
— Наблюдение за файловой системой
— Наблюдение за файлами
— Удобный доступ к справке при работе с bash
— Великая сила make
— Устранение неполадок в работе incron
— Расшаривание терминала в браузере
— Синхронизация настроек
— Бесплатный VPN по SSH
— Превращение веб-приложений в полноценные программы
— Утилита marker и меню для командной строки
— sudo и поворот двух ключей
— Программное управление окнами
— Организация работы программ после выхода из системы
— Регулярные выражения
— Запуск команд
— Разбираемся с последовательными портами
— Базы данных — это файловые системы нового уровня
— О повторении кое-каких событий сетевой истории
— PDF для пингвинов
— Делаем все и сразу
— Файловые системы пользовательского пространства теперь доступны и в Windows
— Делиться — это плохо
— Автоматическое генерирование заголовочных файлов
— Простые конвейеры
👉 @i_odmin
👍3
Поговорим об оптимизирующих компиляторах. Сказ третий: неопределённое поведение и оптимизации
Вообще-то, третья статья данного цикла должна была рассказывать о конкретных оптимизациях. Но пока я прикидывал её план, стало ясно, что без освещения некоторых аспектов неопределённого поведения многое из дальнейших описаний будет непонятно. Поэтому сделаем ещё один осторожный шаг, прежде, чем окунаться в омут с головой.
Наверное, многие слышали, что неопределённое поведение (undefined behavior, UB) — постоянный источник разнообразных багов, иногда очень забавных, иногда довольно жутких. Тема также неоднократно освещалась и на Хабре, навскидку раз, два, три (и даже целый тег есть). Однако чаще всего статьи по данной теме посвящены тому, как можно отстрелить себе ногу, голову или случайно сжечь свой жёсткий диск, исполнив какой-нибудь опасный код. Я же намерен сделать акцент на том, зачем авторы языков программирования надобавляли всей этой красоты, и как оптимизатор может её эксплуатировать, чтобы делать из неё перфоманс. Всё будет проиллюстрировано наглядными примерами из LLVM и присыпано байками из собственного опыта, так что наливайте себе чай, располагайтесь поудобнее, и погнали.
https://habr.com/ru/articles/740056/
👉 @bookflow
Вообще-то, третья статья данного цикла должна была рассказывать о конкретных оптимизациях. Но пока я прикидывал её план, стало ясно, что без освещения некоторых аспектов неопределённого поведения многое из дальнейших описаний будет непонятно. Поэтому сделаем ещё один осторожный шаг, прежде, чем окунаться в омут с головой.
Наверное, многие слышали, что неопределённое поведение (undefined behavior, UB) — постоянный источник разнообразных багов, иногда очень забавных, иногда довольно жутких. Тема также неоднократно освещалась и на Хабре, навскидку раз, два, три (и даже целый тег есть). Однако чаще всего статьи по данной теме посвящены тому, как можно отстрелить себе ногу, голову или случайно сжечь свой жёсткий диск, исполнив какой-нибудь опасный код. Я же намерен сделать акцент на том, зачем авторы языков программирования надобавляли всей этой красоты, и как оптимизатор может её эксплуатировать, чтобы делать из неё перфоманс. Всё будет проиллюстрировано наглядными примерами из LLVM и присыпано байками из собственного опыта, так что наливайте себе чай, располагайтесь поудобнее, и погнали.
https://habr.com/ru/articles/740056/
👉 @bookflow
👍3
Поговорим об оптимизирующих компиляторах. Сказ четвёртый: Циклы
Так получилось, что в теории компиляторов различают понятия cycle (цикл) и loop (петля). Если мы говорим о CFG, то cycle -- это любая последовательность блоков, такая, что начав с некоторого блока и двигаясь по рёбрам, вы можете вернуться в исходный блок. А loop -- это цикл, обладающий некоторыми дополнительными свойствами (о них мы поговорим ниже), и это именно та конструкция, которая появляется, когда мы пишем цикл на языке программирования высокого уровня (например, на С++). Любой loop -- это cycle, но не любой cycle -- это loop.
При этом компиляторы (в большинстве своём) умеют оптимизировать только loop'ы, а циклы, не являющиеся loop'ами, чаще всего игнорируют или ведут себя с ними крайне осторожно. Сказать по правде, они их зачастую даже и не видят. При этом такие конструкции языков программирования, как for, while, do-while, foreach и т.п. порождают именно loop.
Поэтому в этой статье и дальше в этой серии мы слегка надругаемся над английским языком. Словом "цикл" я буду называть именно loop (правильно было бы говорить "петля", а не "цикл", но это плохо согласуется с русскоязычной традицией), а когда речь пойдёт о чём-то другом, я буду явно называть их cycle или non-loop cycle. На практике, если вы пишете программу и специально не ищете себе приключений на одно место, вы в 99% случаев будете иметь дело именно с loop'ами.
https://habr.com/ru/articles/742062/
👉 @bookflow
Так получилось, что в теории компиляторов различают понятия cycle (цикл) и loop (петля). Если мы говорим о CFG, то cycle -- это любая последовательность блоков, такая, что начав с некоторого блока и двигаясь по рёбрам, вы можете вернуться в исходный блок. А loop -- это цикл, обладающий некоторыми дополнительными свойствами (о них мы поговорим ниже), и это именно та конструкция, которая появляется, когда мы пишем цикл на языке программирования высокого уровня (например, на С++). Любой loop -- это cycle, но не любой cycle -- это loop.
При этом компиляторы (в большинстве своём) умеют оптимизировать только loop'ы, а циклы, не являющиеся loop'ами, чаще всего игнорируют или ведут себя с ними крайне осторожно. Сказать по правде, они их зачастую даже и не видят. При этом такие конструкции языков программирования, как for, while, do-while, foreach и т.п. порождают именно loop.
Поэтому в этой статье и дальше в этой серии мы слегка надругаемся над английским языком. Словом "цикл" я буду называть именно loop (правильно было бы говорить "петля", а не "цикл", но это плохо согласуется с русскоязычной традицией), а когда речь пойдёт о чём-то другом, я буду явно называть их cycle или non-loop cycle. На практике, если вы пишете программу и специально не ищете себе приключений на одно место, вы в 99% случаев будете иметь дело именно с loop'ами.
https://habr.com/ru/articles/742062/
👉 @bookflow
👍2
Поговорим об оптимизирующих компиляторах. Сказ пятый: удаление общих подвыражений
В этой статье мы поговорим о классе оптимизаций, которые позволяют избегать лишних вычислений при помощи переиспользования уже имеющихся результатов, а именно -- оптимизации семейства CSE. В разном виде такие оптимизации есть практически во всех известных компиляторах.
https://habr.com/ru/articles/754298/
👉 @bookflow
В этой статье мы поговорим о классе оптимизаций, которые позволяют избегать лишних вычислений при помощи переиспользования уже имеющихся результатов, а именно -- оптимизации семейства CSE. В разном виде такие оптимизации есть практически во всех известных компиляторах.
https://habr.com/ru/articles/754298/
👉 @bookflow
👍5👎1
Forwarded from Библиотека C/C++ разработчика
Коллекция библиотек C++ HTTP, включающая простой в использовании HTTP-сервер.
https://cpp.libhunt.com/proxygen-alternatives
#cpp #programming
👉 @cpp_lib
https://cpp.libhunt.com/proxygen-alternatives
#cpp #programming
👉 @cpp_lib
👍3