Программирование {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
Растение молочай черный дрозд выглядит точно так же, как бинарное дерево :)

Подписывайтесь на канал 👉@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
Forwarded from React
React with TypeScript

Возможности TypeScript и опыт разработчиков отлично сочетаются с React, но начало работы может оказаться запутанным.

Как лучше всего типизировать реквизиты компонентов? Что это за странные ошибки useRef?
Именно для этого и предназначен данный учебник по React с TypeScript!
Начиная с самого начала внедрения поддержки TS в проект React, вы вскоре научитесь правильно вводить хуки и осваивать компоненты. Вы узнаете все, что нужно для продуктивной работы с React и TypeScript.

Темы учебника включают:

Чтение определений типов React для отладки ошибок и обеспечения правильного использования
Определение реквизитов для пользовательских компонентов и компонентов функций React.FC.
Использование умозаключений TypeScript в своей работе
Поддержка дочерних компонентов
Типизация и переопределение обработчиков событий
Использование ComponentProps для извлечения свойств из импортированных компонентов или элементов HTML DOM
Понимание API и типизация useState, useCallback, useEffect и других крючков React Hooks. К концу семинара вы будете уверенно использовать React с TypeScript в своих собственных проектах!

https://www.totaltypescript.com/tutorials/react-with-typescript


✍️ @React_lib
🔥2
Ряды Фурье

Ряд Фурье поможет найти сумму ряда с функцией Бесселя
Ряд Фурье для cos(at) ведет к разложению котангенса на простые дроби
Ряд Фурье для функции x^2 и нахождение суммы трех числовых рядов.
Cумма ряда 1/n^2. Базельская проблема: решение через разложения в ряд Фурье.
Разложим функцию в ряд Фурье и получим суммы 4 числовых рядов

источник

👉 @bookflow
👍2🔥1
Я мыслю MOV EAX, 1

Чем больше усилий ты прикладываешь, тем лучше это у тебя получается. Программирование не исключение, и чтобы с уверенностью сказать: "Я могу написать это" нужно много работать. Эта статья о том с какого языка начать путь в программировании и о том как понять принципы работы компьютера на низком уровне.

Что делает компьютер
Остановимся на абстракции, следующей за аппаратным уровнем - машинном коде, или его читабельной версии, ассемблере. Ассемблер - очень простой язык. Машина делает в точности то что вы ей указываете. Вы раскладываете происходящее на маленькие действия, которые в совокупности составляют сложную (комплексную) систему. Код выполняется по шагам (тактам), за один шаг исполняется одна машинная инструкция. Среди машинных инструкций есть те, которые работают с арифметикой, условиями, вводом-выводом и другими аспектами, но всё их объединяет одно: типов данных не существует.

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

👉 @bookflow
👍3