Программирование {BookFlow}
16.2K subscribers
1.58K photos
468 videos
145 files
2.1K links
Мы публикуем лекции и книги по программированию, видеоуроки, доклады с IT конференций, новости технологий.

Группа в https://vk.com/bookflow.

По всем вопросам @evgenycarter

РКН https://clck.ru/3KoAbH
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Бывают вопросы на которые трудно найти ответ😁

Подписывайтесь на канал 👉@tipsysdmin
👍3😁2
Советы и рекомендации по управлению памятью

В течение прошлого года я усовершенствовал мой подход к управлению памятью. С практикой он стал эффективным, простым и быстрым; обычно так же прост в использовании, как и сбор мусора, но без дополнительных затрат.

https://nullprogram.com/blog/2023/09/27/

👉 @bookflow
👍1
Личный сайт — на каждом телефоне

На Хабре нередко встречаются статьи о том, как запустить веб-сервер на старом смартфоне. В принципе, здесь ничего сложного, тем более что современные телефоны — это мощнейшие компьютеры с многоядерными 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
👍3
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
👍1
Поговорим об оптимизирующих компиляторах. Сказ первый: SSA-форма

Всем привет. Сегодня я хотел бы поговорить об устройстве современных оптимизирующих компиляторов. Я никогда не публиковался на Хабре ранее, но надеюсь, что мне удастся написать серию статей, которая просуммирует мой опыт в этой области.

Коротко обо мне. Меня зовут Макс, и так получилось, что я вот уже 10 лет, почти с самого начала своей карьеры, занимаюсь оптимизирующими компиляторами. Я начинал в Intel, потом перешёл в Azul Systems, год провёл в Cadence и вернулся обратно, всё это время занимаясь компиляторными оптимизациями для Java, C++ и нейросетевых моделей. На момент написания статьи у меня чуть за 900 патчей в LLVM, большинство из них посвящено цикловым оптимизациям.

За это время я провёл десятки собеседований на позиции как интернов, так и инженеров сеньорного уровня, и довольно часто люди, приходя на эти собеседования, многих вещей не знают или знают поверхностно. И я подумал: а мог бы я написать такой цикл статей, чтобы человек, прочитав их, узнал бы всю ту базу, которая, на мой собственный взгляд, необходима начинающему компиляторному инженеру? Очень бы хотелось, чтобы новичку в этой области можно бы было дать один (относительно небольшой по объёму) набор текстов, чтобы он получил оттуда всё необходимое для старта. Это не перевод, текст оригинальный, поэтому в нём могут быть ошибки и неточности, которые я буду рад исправить, если вы мне их укажете.

https://habr.com/ru/articles/735152/

👉 @bookflow
👍2
Поговорим об оптимизирующих компиляторах. Сказ второй: Доминирование

Сегодня мы поговорим о доминировании. Это одна из фундаментальных вещей, на которых стоит как теория компиляторов вообще, так и многие компиляторные оптимизации в частности. Пристегните ремни и запишите стоп-слово на бумажке, чтобы не забыть.

https://habr.com/ru/articles/737646/

👉 @bookflow
🔥2👍1
Растение молочай черный дрозд выглядит точно так же, как бинарное дерево :)

Подписывайтесь на канал 👉@itumor
👍7💯2
Как работает CPU, память, процессы ОС (на примере Linux)?

Инструкции, регистры, режимы, многозадачность, системные вызовы, прерывания
Запуск программы, execve, shebang, обработчики, ELF
Память, paging, fork, CoW, порождение процессов

источник

👉 @bookflow
👍51👎1🔥1
Перевод статей из серии «Кунг-фу стиля Linux»:

Удобная работа с файлами по 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
👍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
👍2
Поговорим об оптимизирующих компиляторах. Сказ пятый: удаление общих подвыражений

В этой статье мы поговорим о классе оптимизаций, которые позволяют избегать лишних вычислений при помощи переиспользования уже имеющихся результатов, а именно -- оптимизации семейства CSE. В разном виде такие оптимизации есть практически во всех известных компиляторах.

https://habr.com/ru/articles/754298/

👉 @bookflow
👍5👎1
Коллекция библиотек C++ HTTP, включающая простой в использовании HTTP-сервер.

https://cpp.libhunt.com/proxygen-alternatives

#cpp #programming

👉 @cpp_lib
👍3
Отладка C при помощи пакета Cosmopolitan Libc

Cosmopolitan Libc предоставляет набор отладочных возможностей, повышающих удобство разработки на C: трассировка вызовов функций, интеграция с gdb, среда выполнения ASAN/UBSAN и многое другое! На C написано много быстрого и критически важного кода. Если вы пользуетесь программами, написанными на C, если вам приходится предусматривать интерфейсы для работы с библиотеками на C, исправлять баги в коде на C, либо даже переписывать имеющуюся на С программу на каком-то другом языке, то именно этот инструмент помогает понять, что делается в вашем коде на C. Отладка – это не просто россыпь инструкций printf. В этом посте будет рассмотрено, как Cosmopolitan Libc помогает наверняка и как следует отлаживать код C. Все примеры находятся в этом репозитории.

https://ahgamut.github.io/2022/10/23/debugging-c-with-cosmo/

👉 @bookflow
👍3
Поговорим об оптимизирующих компиляторах. Сказ шестой: цикловые инварианты

Сегодня мы поговорим о нескольких разных классах оптимизаций, которые позволяют компилятору увеличивать быстродействие наших программ. Для тех, кто здесь впервые, стоит сначала прочитать статьи об SSA-форме, доминировании, циклах и (опционально) неопределённом поведении, чтобы понимать, о чём идёт речь.

https://habr.com/ru/articles/764636/

👉 @bookflow
👍1
Изучаем веб-сервисы ChatGPT и пробуем программировать

Прямого доступа к сервисам OpenAI в РФ, как известно, нет. Для работы с ChatGPT многие пользуются телеграм-ботами, чаще всего бесплатными. В основном, запросы к ним — непритязательные. Пользователи практикуются в английском и, не раздражая никого пробелами в орфографии, получают списком все свои ошибки. Можно задавать ботам относительно простые вопросы.

https://habr.com/ru/articles/768004/

👉 @bookflow
👍2
C# 9 и .NET 5. Разработка и оптимизация
Марк Прайс (2021)

В этой книге опытный преподаватель Марк Прайс дает все необходимое для разработки приложений на C#. В пятом издании для работы со всеми основными операционными системами используется популярный редактор кода Visual Studio Code. Издание полностью обновлено и дополнено новой главой, касающейся Microsoft Blazor.

Скачать книгу

👉 @cpp_knigi
👍2