Как стать автором
Обновить
102.26
Рейтинг

C *

Типизированный язык программирования

Сначала показывать
  • Новые
  • Лучшие
Порог рейтинга
  • Все
  • ≥0
  • ≥10
  • ≥25
  • ≥50
  • ≥100

Архитектура приложения моего защищенного чата

*nix *C *Разработка под Linux *

В этой статье я хочу описать архитектуру своего приложения. Здесь будут представлен как графический клиент, так и сервер.

Оба приложения написаны на C. Это мой любимый язык и на нем я бы хотел писать код, если смогу когда нибудь устроиться на работу программистом. Попользовавшись ubuntu я понял что старые версии софта, это не хорошо. Например у меня несколько источников звука и микрофонов. И в ubuntu при каждой новой загрузке нужно переключать источник от наушников в источник телевизор. Также и микрофон. Как я обрадовался, что в opensuse нет с этим проблемы и доступна библиотека gtk4, которую я так давно ждал. Я мог писать приложение в gnome builder, что я иногда делаю, но в gnome builder мне не удалось сделать так, чтобы заработала библиотека ffmpeg. И как обычно я пишу в vim.

Итак. Я уже привык к объектной философии gobject и чувствую себя кофмортно в разработке. В gtk4 много изменений произошло. Например я раньше в gtk3 в text_view в сигнале "draw" выполнял функцию gtk_widget_queue_resize ();. и так получалось что это подгоняло размер под нужный, перед рисованием текста, но в gtk4 нельзя подключиться к методу отрисовки. И тогда я решил сделать свой виджет. Но свой виджет не нужно делать прям с нуля. В документации ясно сказано, что gtk_drawing_area как раз предназначен для custom виджетом.

Вот список файлов, которые учавствуют в проекте gui secure chat.

Читать далее
Всего голосов 2: ↑2 и ↓0 +2
Просмотры 398
Комментарии 0

Уроки по SDL 2: Урок 10 изменение цвета и прозрачность текстуры

C++ *Разработка игр *C *
Tutorial

изменение цвета у спрайтов, позволяет получить нам новый спрайт, а благодаря аппаратному ускорению, прозрачность создается гораздо быстрее чем в первом SDL

приступим к коду:

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Просмотры 586
Комментарии 0

Уроки по SDL 2: Урок 9 — Отрисовка части изображений

C++ *Разработка игр *C *
Tutorial

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

Читать далее
Рейтинг 0
Просмотры 996
Комментарии 0

Философия Unix: Краткое введение

Блог компании OTUS Программирование *C *
Перевод

Философия Unix лежит в основе не только оригинальной UNIX, разрабатываемой Кеном Томпсоном в Bell Labs с 1969 года, но и ее многочисленных прямых потомков и клонов, к коим относятся Solaris, Linux и семейство BSD1, называемые в совокупности Unix-подобными операционными системами. Она оказалась определяющим фактором быстрого роста и успеха Linux и стала причиной того, что эти операционные системы до сих пор считаются лучшими операционными системами, разработанными на сегодняшний день, несмотря на то, что они, безусловно, являются самыми старыми операционными системами в широком доступе.

Читать далее
Всего голосов 10: ↑8 и ↓2 +6
Просмотры 6.7K
Комментарии 7

Уроки по SDL 2: Урок 8 — прозрачный фон

C++ *Разработка игр *C *
Из песочницы

Дисклеймер: почему собрался это делать - потому что нет нигде нормального обучения, для С\С++, поэтому все бросают это дело, так как невозможно разобраться, просто ужас.

Читать далее
Всего голосов 10: ↑4 и ↓6 -2
Просмотры 1.9K
Комментарии 5

MISRA C: борьба за качество и безопасность кода

Блог компании PVS-Studio C++ *IT-стандарты *C *Программирование микроконтроллеров *

Пару лет назад в статическом анализаторе кода PVS-Studio появился ряд диагностических правил для проверки соответствия текста программ стандарту MISRA C и MISRA C++. Увидев интерес и собрав feedback, команда разработчиков стала дальше развивать анализатор в этом направлении. В статье будет рассказано про стандарт MISRA C/C++, отчёт MISRA Compliance, про то, что мы уже успели сделать и что собираемся достичь до конца года.


0866_MISRA_C_ru/image1.png

Читать дальше →
Всего голосов 15: ↑13 и ↓2 +11
Просмотры 3.1K
Комментарии 4

Книга «Эффективный C. Профессиональное программирование»

Блог компании Издательский дом «Питер» Программирование *C *Профессиональная литература
image Привет, Хаброжители! Мир работает на коде, написанном на C, но в большинстве учебных заведений программированию учат на Python или Java. Книга «Эффективный С для профессионалов» восполняет этот пробел и предлагает современный взгляд на C. Здесь рассмотрен C17, а также потенциальные возможности C2x. Издание неизбежно станет классикой, с его помощью вы научитесь писать профессиональные и надежные программы на C, которые лягут в основу устойчивых систем и решат реальные задачи.
Читать дальше →
Всего голосов 9: ↑7 и ↓2 +5
Просмотры 4.8K
Комментарии 14

Под капотом Ruby. GVL

Ruby *Программирование *Системное программирование *C *Параллельное программирование *

Давным давно уже уже была написана статья о том что такое GVL (или GIL, кому как привычнее) и как он работает, однако с того времени некоторые вещи поменялись (к примеру, , а так же в Ruby 3.0 завезли Ractor'ы - новую абстракцию для реальной параллельной работы тредов. Мне стало интересно узнать что поменялось в планировщике ruby для реализации множества GVL. В этой статье я попытаюсь понять алгоритм, по которому GVL передается от одного треда к другому, как блокирующее IO позволяет продолжить работать другим тредам, а так же выяснить до сих пор ли операция добавления элемента в массив является атомарной операцией

Читать далее
Всего голосов 12: ↑12 и ↓0 +12
Просмотры 1.6K
Комментарии 4

Пакетный обмен данными по UART

Программирование *C++ *C *Программирование микроконтроллеров *Разработка под Arduino *
Из песочницы

На сегодняшний день существует много способов организовать обмен данными между Desktop-приложением и устройствами на микроконтроллерах: Wi-Fi, Bluetooth, RF, USB, преобразователи интерфейсов и т.д.

В большинстве из вышеперечисленных вариантов реализован пакетный обмен данными между хостом и устройством. Передаваемые данными с гарантией целостности и доставки будут переданы от передатчика к приемнику.

В случае использования интерфейсов RS-232, RS-485, RS-422 или чистого UART организация пакетного обмена данными ложится на программиста.

В данной статье я хотел бы рассказать о своей реализации обмена данными между устройствами.

Читать далее
Всего голосов 8: ↑4 и ↓4 0
Просмотры 3.3K
Комментарии 44

Как я портировал DOS игру

C++ *Assembler *C *Реверс-инжиниринг *
Tutorial

Решил портировать одну старую давно забытую игрушку с DOS на современную платформу. Эта игра, в своё время, привлекала ураганным геймплеем, неплохой разрушаемостью, возможностью включить всё оружие одновременно и устроить настоящий бедлам. В 2021 году играть в такое всё ещё интересно, но делать это в родном разрешении 640х480, как-то не очень. Поэтому решил портировать игру и накатить хай-рез патч. Получилось!

Читать далее
Всего голосов 229: ↑229 и ↓0 +229
Просмотры 27K
Комментарии 40

Осваиваем новую базу кода: анализируем программу nginx

Блог компании RUVDS.com Nginx *C *
Перевод
В разработке nginxучастия я никогда не принимал, так как мой навык работы в Си находится где-то на уровне 1/10. Однако меня не страшит идея скачать исходный код, разобрать его, скомпилировать и запустить. Цель этой статьи помочь и вам преодолеть собственный страх проделать то же самое.
Читать дальше →
Всего голосов 60: ↑44 и ↓16 +28
Просмотры 9.4K
Комментарии 11

Как посчитать синус быстро

Алгоритмы *C *Математика *Программирование микроконтроллеров *
Из песочницы

... и точно. Точнее, с заданной точностью, простите за каламбур.

Под катом я расскажу, как сделать это с использованием школьного курса алгебры и целочисленной арифметики, при чём здесь полиномы Чебышёва I-го рода, и дам ссылки на примеры реализаций для ПК и Cortex-M3.

Читать далее
Всего голосов 54: ↑52 и ↓2 +50
Просмотры 10K
Комментарии 42

Быстрый, мощный интерфейс на Python

Блог компании SkillFactory Python *Программирование *Интерфейсы *C *
Перевод
Tutorial

Dear PyGui принципиально отличается от других фреймворков GUI Python. Рендеринг на GPU, более 70 виджетов, встроенная поддержка асинхронности — это лишь некоторые возможности Dear PyGui. Руководством по работе с этим пакетом делимся к старту курса по разработке на Python.

Читать далее
Всего голосов 62: ↑59 и ↓3 +56
Просмотры 32K
Комментарии 40

Зачем нужен отчёт MISRA Compliance и как его получить в PVS-Studio?

Блог компании PVS-Studio Информационная безопасность *C++ *C *Программирование микроконтроллеров *

Если вы не понаслышке знаете о MISRA и хотели бы понимать, соответствует ли ваш проект какому-то из стандартов ассоциации MISRA, то есть решение. Имя ему - MISRA Compliance. С недавних пор PVS-Studio научился генерировать отчёт соответствия по этому стандарту, и хочется поделиться тем, как это делается. Возможно, кому-то это упростит жизнь.

Читать далее
Всего голосов 9: ↑6 и ↓3 +3
Просмотры 1.3K
Комментарии 2

Шаги по устранению ошибок страницы

Блог компании OTUS Программирование *C *
Перевод

Основная идея пейджинга заключается в том, что при загрузке процесса страница загружает в память только те страницы, которые, как она ожидает, понадобятся процессу (сразу же).

Страницы, которые не загружаются в память, помечаются в таблице страниц как недопустимые с помощью двоичного кода invalid. ( Остальная часть записи в таблице страниц может быть либо пустой, либо содержать информацию о том, где найти вытесненную страницу на жестком диске. )

Если процесс обращается только к тем страницам, которые загружены в память (резидентные страницы памяти), то процесс работает точно так же, как если бы все страницы были загружены в память.

Читать далее
Всего голосов 5: ↑3 и ↓2 +1
Просмотры 679
Комментарии 1

Шрифты для графического дисплея? Это же очень просто

Open source *Алгоритмы *C *Программирование микроконтроллеров *Софт
Из песочницы

Скажете, это же все электрические приборы? Бесспорно. Но еще у них есть дисплей. Да, холодильники чаще могут обходиться без дисплея, чем смартфоны, но это неточно. В этом вопросе время на стороне холодильников.

Но это лирическое начало, а рассмотрим мы в статье вопрос создания растровых шрифтов для графических дисплеев.

Читать далее
Всего голосов 45: ↑45 и ↓0 +45
Просмотры 7.7K
Комментарии 75

Отладка C на ZX Spectrum

Отладка *C *Программирование микроконтроллеров *Старое железо Процессоры
Из песочницы

Если ваш Спектрум пылится на полке, эта статья подскажет, как дать ему вторую жизнь, а вам — новое хобби. Возможно, вы хотели бы встретить вызов: всего лишь ~40кб памяти, включая код программы. Реализовать хорошее приложение крайне затруднительно, так как вы столкнетесь не только с нехваткой памяти, медленным процессором, но и отсутствием нормальной отладки на уровне исходного кода.

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

LOAD ""
Всего голосов 51: ↑51 и ↓0 +51
Просмотры 11K
Комментарии 40

30 лет ядру Linux: поздравление от PVS-Studio

Блог компании PVS-Studio Open source *C++ *C *Разработка под Linux *

25 августа 2021 года ядру Linux исполняется 30 лет. За это время ядро пережило множество изменений, так же, как и мы. Сегодня это огромный проект, работающий на миллионах различных устройств. Предыдущую проверку мы делали 5 лет назад, поэтому не можем пропустить такое событие и не заглянуть в код этого эпического проекта.

Читать далее
Всего голосов 29: ↑25 и ↓4 +21
Просмотры 5.8K
Комментарии 11

Кратко об указателях в Си: присваивание, разыменование и перемещение по массивам

Программирование *Системное программирование *C *
Tutorial

Приветствую вас, дорогие читатели. В данной статье кратко описаны основные сведения об указателях в языке Си. Помимо основных операций с указателями (объявление, взятие адреса, разыменование) рассмотрены вопросы безопасности типов при работе с ними.

Читать полностью
Всего голосов 17: ↑4 и ↓13 -9
Просмотры 5K
Комментарии 10

Double or Nothing

Занимательные задачки C++ *C *
Из песочницы
Перевод

Фотография Esteban Lopez с Unsplash.com

Если вы выбрали C++ в качестве языка программирования, то учить его придётся всю жизнь. Смиритесь. Или выбирайте другой язык.

Чего только стоят новые стандарты, появляющиеся каждые 3 года. И каждый раз с какими-то полезными нововведениями в синтаксисе! Как им только это удаётся?

Есть разные способы совершенствоваться в С++. Кто-то читает Страуструпа от корки до корки, а потом почитывает стандарты. Кто-то ничего не читает и программирует по наитию - тупиковый путь, на мой взгляд.

Мне же нравится читать крупицы мудрости, бережно сформулированные для понимания простых смертных каким-нибудь гуру программирования.

Одна из моих любимых таких вещей - Guru of the Week (GotW) Херба Саттера.

Написано остроумно. И сколько пользы для программистки! Некоторые статьи уже морально устарели: кому нужен auto_ptr в наши дни? Но большинство ценно и сегодня.

Приведу здесь перевод выпуска №67 "Double or Nothing" от 29 февраля 2000 года. Моё любимое место — про тепловую смерть конечно ​

"Сложность 4/10

Нет. Этот выпуск не об азартных играх. Он, впрочем, о разных видах "float" так сказать, и даёт вам возможность проверить навыки касающиеся базовых операций над числами с плавающей точкой в C и C++.

Проблема

Вопрос Йуного Гуру (JG)

1) В чём разница между "float" и "double"?

Вопрос Гуру

2) Допустим следующая программа выполняется за 1 секунду, что неудивительно для современного настольного компьютера:

int main() {

double x = 1e8;

while (x > 0) { --x; }

return 0;

}

Как долго по-вашему она будет выполняться, если заменить "double" на "float"? Почему?

Читать далее
Всего голосов 16: ↑12 и ↓4 +8
Просмотры 8.7K
Комментарии 31

Вклад авторов