Hardcore programmer @hardcore_programmer Channel on Telegram

Hardcore programmer

@hardcore_programmer


Продвинутые темы из программирования и computer science. Особенности различных языков программирования. Глубокое погружение в software engineering.

Поддержать канал:
https://www.donationalerts.com/r/hardcore_programmer

Hardcore programmer (Russian)

Хардкорный программист - это канал для тех, кто жаждет продвинутых тем из программирования и computer science. Здесь вы найдете обсуждения особенностей различных языков программирования, а также глубокое погружение в software engineering.

Если вы хотите быть в курсе последних тенденций в мире программирования, узнать о самых сложных задачах и их решениях, то этот канал создан специально для вас. Hardcore programmer обещает предоставить вам уникальные знания, которые помогут вам стать лучшим специалистом в сфере IT. Присоединяйтесь к нам и станьте частью сообщества профессионалов, готовых развиваться и совершенствовать свои навыки.

Поддержите наш канал, перейдя по ссылке:
https://www.donationalerts.com/r/hardcore_programmer

Hardcore programmer

27 Sep, 17:21


Немного лирики про провайдеров, тех поддержку, "а что так можно было?" и "блин, что я сразу так не сделал".

Дисклеймер:
Данный пост является просто прикольной историей или рассуждением на тему. Я не преследую цель выразить недовольство провайдером или технической поддержкой. Я вообще доволен своим провайдером ибо за 7 лет с ним помню только 2-3 случая падения сети, притом в одном из них сети не было у всего района, да и гигабит за вменяемые деньги мало у кого есть.


Примерно к часу ночи я закончил настройку OPNsense на малыше из поста выше. И я собравшись с духом твёрдо решил, что пора ему переехать из состояния WAN в локалке LAN в ноуте в состояние WAN к провайдеру LAN к роутеру. Вбиваю на интерфейс настройки провайдера и цепляю провод. Дожидаюсь пинга до шлюза и иду привязывать mac адрес.

Тут нужно немного пояснить немного о "безопасности" с точки зрения моего провайдера. В мой дом заходит оптика, а уже до квартир идёт медь. На стыке стоит маршрутизатор (надо сказать, что по сети он представляется весьма крутой железкой от Huawei, а не каким-то ширпотребом вроде микроблювотика), который держит домовую локалку, опять же грамотно настроенную, с изоляцией всех клиентов. Каждому клиенту в этой сети присвоен свой ip, а на маршрутизаторе прописаны жесткие связки ip и mac. Если с ip клиента подключается кто-то с левым mac, то пойти он сможет только во внутреннюю сеть провайдера и никуда больше. Ну то есть подсмотри я ip и mac у соседа - могу пользоваться его интернетом, пока он в отпуске и делать от его имени нехорошие дела - безопасность!

В личном кабинете на сайте провайдера есть формочка, куда можно вбить новый mac. Правда есть она только при подключении из сети провайдера, если зайти с мобильной сети, то её нет. Не знаю почему я не сообразил воспользоваться ей подключившись с роутера... "хорошая мысля приходит опосля". Но при отсутствии доступа в интернет сайт провайдера вроде как работает, но на самом деле нет. Добраться до этой формы с горем пополам можно, но вот самой форме не хватает скриптов, ибо грузятся они с CDN, классика фронтенд разработки...

Помучавшись с формой до 2 ночи, я решаюсь таки решить проблему через чат тех поддержки. Примерно в 2:30 я пробиваюсь через робота и добираюсь до живого человека. Надо сказать, что всё это время из терминала OPNsense работал пинг до шлюза. Не знаю, что сделала девушка на той стороне, может перезагрузила маршрутизатор или что ещё, но в момент когда она начала привязывать мне новый mac, пинг до маршрутизатора оборвался... Дальше какое-то время был цирк вида "не вижу коннекта до вас", "перезагрузите роутер", "выньте и вставьте провод" и тому подобное. Уж не знаю как банальная смена записи в табличке маршрутизатора могла положить сеть, но девушке это удалось. Интересно, сеть легла только у меня или у всего дома, а никто этого не заметил, так как была глубокая ночь. Примерно в 3:30 мне предложили вызвать техника, который решит проблему "с моим оборудованием" у меня 🤣... Перспектива так себе, остаться к рабочему дню без интернета меня никак не радовало и я уговорил девушку попробовать решить таки проблему удалённо. Не знаю что она сделала, но в какой-то момент пинг до шлюза появился. Но всплыла новая проблема...

Навороченная железка от Huawei не захотела есть mac сетевухи малыша... Китайцы невзлюбили других китайцев? Нет, мой TP-Link с локалкой настроенной на только mac из белого списка съел, а их Huawei не захотел... Это вообще как?

Девушка предложила мне подключить ноут напрямую к проводу провайдера. Ок, вбиваю настройки ip, подключаю, пишу девушке - 5 минут и интернет есть. Железку от Huawei вполне устроил mac адрес сетевухи моего ноута. На часах было уже 4 ночи. Приключений больше не хотелось. Пишу девушке, чтоб больше ничего не трогала. Подменяю в OPNSense mac адрес на тот, что у ноута. Профит. Интернет работает через малыша.

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

Hardcore programmer

26 Sep, 20:40


До сих пор я экспериментировал с OPNsense на виртуалке, но сегодня мне доставили вот такую малютку. По размерам сравнимо с моей мышкой.

Когда-то давно у меня в качестве роутера использовался обычный комп, в который через PCIe были подключены 2 дополнительные сетевые: Ethernet и WiFi с поддержкой режима AccessPoint. В ethernet на материнке заходил провод от провайдера, а в доп ethernet подключался хаб, через который подключались локальные девайсы по проводу. Всё это неплохо работало, за одним исключением - я так и не смог настроить WiFi на работу сразу в двух диапазонах.

В итоге я перешёл на обычный TP-Link, позже на TP-Link понавороченее. Но с тех пор меня не оставляла мысль, что я потерял какую-то часть контроля над домашней сетью. А в первую очередь контроль над фаерволом для wan порта, что при наличии белого IP не очень хорошо.

В августе потребность воткнуть что-то управляемое между роутером и провайдером резко усилилась... Но при этом хотелось недорого и с низким энергопотреблением. Стоимость готовых решений с полноценным Linux/FreeBSD на борту - улетает в космос. При этом оперативки мало, что ограничивает в количестве маршрутов и поднятых на устройстве сервисов. Поэтому всякие MikroTik и Ubiquiti я рассматривать не стал.

Вначале я думал взять OrangePi 5 Plus и накатить на неё OpenWRT. Необходимые 2 Ethernet тут присутствуют. Неплохой ARM CPU и 4ГБ оперативы. Но пообщавшись с теми кто пробовал OrangePi в деле и посчитав сколько всего нужно дополнительно докупить, данный вариант отбросил.

И тут я наткнулся на Junibox Q-ube pro. 2 Ethernet есть. Проц Intel N100, слабенький, зато кушает мало, а для задач фаервола его достаточно. 16ГБ оперативы и sata-m2 SSD на 512ГБ - хороший запас. За рекламу мне не платили, по этому ссылок не будет, кому надо сам найдёт. Был с предустановленной Win11Pro, но я в неё даже не загружался, так что тут ничего не скажу.

Hardcore programmer

22 Sep, 21:03


Последнее время совсем не хватает времени что-то написать.
Очень много работы, сил не остаётся на действительно полезные тексты.
Изредка удаётся сделать что-то для курса по Rust, но и это не часто...

В августе был в отпуске, но там совсем не хотелось заниматься чем-либо кроме распития алкоголя и купания в море.

Но всё это не означает, что я забросил канал. Надеюсь на понимание.

Постараюсь накидывать изредка небольшие заметки о том, что происходит вокруг меня.
Например по работе мне пришлось достаточно глубоко погрузится в устройство HTTP/3
А для себя ковыряю OPNsense (опенсорсный маршрутизатор/фаервол на базе FreeBSD) и Proxmox VE (окружение для виртуализации на базе kvm)

Hardcore programmer

22 Sep, 20:39


Немного полезностей для тех кто пользуется "носками из тени" (далее по тексту сократим до ss).
Замечено, что некоторые интернет провайдеры, вероятно с поощрения организации на 3 буквы, не хотят пускать в прекрасное далёко неопознанный трафик, а так же tls трафик, который не совсем tls. Но при этом в пределах большой китайской русской стены (далее стена) такой трафик прекрасно бегает.

Давайте представим, что у вас уже есть сервак в прекрасном далёко (для примера его ip будет 123.123.123.123), где поднят ss сервак на порту 4321 и вы вдруг потеряли с ним связь.
Справиться с сей неприятной ситуацией поможет банальный nginx на сервере в пределах стены.

Нужно добавить следующие строчки в корень конфига nginx (естественно поменяв ip и порт на свои):
stream {
server {
listen 4321;
proxy_pass 123.123.123.123:4321;
}

server {
listen 4321 udp;
proxy_pass 123.123.123.123:4321;
}
}


Теперь в ss клиенте можно поменять ip на тот, что у тачки с nginx и всё должно работать

Hardcore programmer

01 Jul, 18:11


Начал понемногу делать собственные виджеты для Rainmeter.
Когда будут готовы, думаю выложить на github

Hardcore programmer

30 Jun, 18:07


За выходные поставил и настроил Windows 11 на своём основном ПК, краткий обзор того что получилось

Hardcore programmer

26 Jun, 21:35


Всем привет!
Писать свой обзор на MacOS начну лишь в эти выходные, но нет полной уверенности, что закончу и опубликую.
А пока ловите краткое мнение на OpenSUSE Tumbleweed.

Если быть совсем кратким - данная ОС мне не понравилась.
Но, обо всём по порядку.

Для начала два момента, которые всё же понравились:
1. Утилита YaST2, работает как через GUI так и через терминальный ncurses интерфейс. Позволяет удобно настраивать многие вещи в системе, смотреть логи ядра и systemd. При необходимости сама может доустановить пакеты, когда пытаешься что-то включить. Для людей, которые "боятся" терминала - самое то.
2. Пакетный менеджер zypper. По ощущениям работает быстрее, чем dnf и apt, но медленнее чем pacman. Если корень системы размечен в btrfs с каноничными сабволами, то делает снапшот перед каждым изменением. Допом к ней в YaST2 есть интерфейс для управления пакетами очень похожий на synaptic из Debian.

А теперь о минусах:

Очень мудрёный установщик. Я скачивал вариант с net-install, возможно в другом варианте чуть проще. Сначала грузится в ncurses интерфейс, где надо произвести первоначальную настройку. WiFi адаптер вроде нашёл, но списка сетей нет, всё вводим вручную. Ну и в итоге не подконнектился и я подрубил к ноуту Ethernet и устанавливал по кабелю. Обязательно просит указать репозитории, с которых будем устанавливать, всё вбиваем ручками, есть вариант по умолчанию, но я пока разбирался, умолчания несколько раз слетали и восстановить их только reboot и всё сначала. В конце предлагает загрузится непосредственно в сам установщик в двух вариантах - GUI и текстовый. GUI у меня так и не загрузился, но текстовый вполне неплох, тут уже явно что-то посовременнее ncurses и в нём даже мышь работает.

На выбор есть Gnome, KDE Plasma (версия 6 уже в наличии), XFCE, IceWM и "серверный" вариант без GUI. Я ставил последний, так как решил поставить сюда Hyprland. Дополнительно можно настроить своё ПО, есть пресеты для частых задач и есть тот самый интерфейс из YaST2, через который мне удалось затащить Hyprland и sddm сразу в момент установки, так что голую консоль я в итоге не увидел. Но в итоге у меня таки затащился IceWM и я особо не понял как.

Разметка диска по умолчанию выбрала из двух SSD тот что больше и полностью проигнорировала второй. Сделала раздел под efi, swap на 2 гига и остатки предложила сделать btrfs, в котором уже размечены сабволы. При ручной разметке сабволы так же предложила автоматом (а снапшоты в zypper будут работать только с такой разметкой). По умолчанию делает сабвол под /home, но если вынести на отдельный диск или раздел, то предлагает сделать его в xfs, хотя на выбор есть ext4 и btrfs. Ну и совсем не шарит в типах GPT разметки, кроме efi и swap всё остальное предлагает просто как Linux Partition, но руками можно поменять и разметить где будет корень, а где /home.

Пакеты здесь rpm, но названия у них часто отличаются от RedHat (RHEL, Fedora, CentOS), а значит если просто скачать rpm с сайта, то или не найдёт зависимости или поставит что-то другое. Ну и сами зависимости порой странные, например установка waybar затащила мне целый sway...

Нельзя оставить root без пароля. Я считаю, что это плохо, ибо в root без пароля нельзя логиниться напрямую, что чуток увеличивает безопасность. Особенно если учесть, что sshd здесь можно поднять мышкой, но настройки будут дефолтные, с возможностью войти в root и с разрешением входить по паролю. Очень странно работает sudo, просит не пароль текущего пользователя, а пароль root, притом об этом надо только догадаться. В репозиториях есть doas и shim к нему для sudo (то есть sudo можно подменить на doas).

В целом пользоваться можно, как альтернатива Ubuntu или Fedora - очень даже ок. Но уверенным пользователям Arch/Void/Gentoo думаю не зайдёт.

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

Hardcore programmer

21 Jun, 16:55


Думаю с экспериментами с виндой на ноуте можно закончить.
Да и если планирую в последствии поставить винду на основной комп, то надо перестать использовать тут, лицензия то у меня на 1 устройство.

А на ноуте можно поэкспериментировать с чем-то ещё.
И вот смотрю я на опрос, и как-то одну из ОС совсем голосами обделили...

Ок, вызов принят

Hardcore programmer

21 Jun, 08:05


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

Первой на очереди у нас Windows - самая популярная ОС на десктопе, в том числе и по вашим ответам на опрос.

https://telegra.ph/Kak-zhivyotsya-na-Windows-razrabotchiku-06-21

Приятного чтения! 😉

Hardcore programmer

15 Jun, 03:56


Скоро планирую продолжить разбирать ОС от лица разработчика ПО. Посты будут выходить отдельные на каждую ОС, а выпускать я их планирую в порядке популярности на десктопе.

А прямо сейчас решил немного отдаться ностальгии и вспомнить свой путь по различным ОС и по языкам программирования (ибо это у меня оказалось связано).

Получилось немного автобиографично.
https://telegra.ph/Moj-put-v-razrabotke-i-na-kakih-OS-ya-ego-proshyol-06-15

Приятного чтения

Hardcore programmer

12 Jun, 16:11


В сети периодически встречаются статьи и видео сравнивающие различные ОС в разных аспектах. Кто-то ревностно отстаивает преимущества одной ОС перед другой, часто имея о второй весьма поверхностные представления, кто-то приводит более объективное сравнение. Но почти все они несут взгляд со стороны обычного пользователя. Я же хочу привнести своё видение разработчика на различные десктопные ОС.

Скорее всего, взгляд будет всё равно субъективным. Во-первых больше всего я занимаюсь серверной разработкой, что сильно отличается от типичных нюансов десктопа, но в своё оправдание скажу, что имею не малый опыт с вебом, а так же мне приходилось иметь дело с десктопной разработкой (пару раз это были корпоративные штуки на электрон, ну и для себя мучаю таури, во всех случаях сразу под 3 ОС - винда, мак и линукс). Во-вторых, моей основной ОС многие годы являются различные линуксы и конкретно сейчас я считаю Арч линукс лучшей ОС для десктопа и именно она у меня стоит на ПК, но в своё оправдание скажу, что с другими ОС я всё таки имею дело достаточно часто, макбук мой основной инструмент для работы вне дома, а на втором ноуте у меня установлена Win11 pro + у меня несколько лет назад был почти 2х летний эксперимент жизни на Win10 pro (хоть он и закончился не успешно, но я подумываю его повторить, уже с 11 виндой). Так что будем считать, что моё сравнение всё-таки подтверждено некоторым опытом.

Для начала хочу отметить, что большинству разработчиков скорее всего должно быть всё равно из под какой ОС разрабатывать. Большинство популярных IDE одинаково работают и под виндой и под линуксом и под маком. То же самое можно сказать про git. А многие другие инструменты вообще живут в web.
Но есть нюансы, поэтому начнём с них.

Мобильным разработчикам под iOS без вариантов придётся работать под MacOS, неважно пишут ли они нативку на Swift или кросплатформу на ReactNative/Flutter/Xamarin или чём-то подобном. Собрать приложение получится только из под MacOS и подключиться дебаггером тоже. С теми же проблемами Вы столкнётесь если захотите собрать что-то под саму MacOS, кросскомпиляция здесь отсутствует от слова совсем.
Чуть лучше живётся тем кто разрабатывает web-приложения, индустрия зовёт их фронтендерами (надо доделать видео про исковерканные индустрией термины...). С одной стороны браузер есть везде, вот только не любой. Когда-то давно огромной болью был Internet Explorer живущий только на винде, на благо он сдох. И теперь пальму первенства, как самый проблемный браузер занимает Safari, который есть только на устройствах Apple. Особая боль это Safari на iOS, дебаггером в него можно подключиться только с Safari на MacOS, так ещё и другие браузеры на iOS бывают только на его движке (и дебаггером к ним вообще не подключиться).
Ну и последняя категория - это .Net разработчики. Хоть в последнее время .Net и стал кросплатформенным, нормально разрабатывать можно только в Visual Studio, которая есть только под виндой. И Rider от JB здесь не панцея, хотя в какой-то степени может помочь.

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

Большинство серверов сегодня живут на линуксе, изредка встречается FreeBSD, которая тем не менее Unix и достаточно схожа с линуксом. Крайне редко можно встретить сервера на винде. Однако популярные сегодня Python, Node.js, Java, Go практически полностью прячут от нас нюансы операционок. Rust и C++ стремятся к тому же. Однако бывают моменты, когда приходится завязываться на Linux-специфичные вещи, вроде inotify - потестить их из под винды или макос будет проблематично, виртуалки в помощь.

А ещё стандартом индустрии сегодня стал Docker, который основан на линуксовых cgroups и namespaces. Правда есть Docker Desktop, который на маке поднимет виртуалку с минималистичным Linux, а на винде умеет работать из под WSL или так же с виртуалкой как на MacOS.

Особенностей различных ОС много. Здесь я пробежался лишь по самым верхам. Продолжение следует...

Hardcore programmer

01 Jun, 16:38


https://www.youtube.com/watch?v=02iOwfBWtjY

Стартуем через пару минут

Hardcore programmer

30 May, 20:37


Всем привет!

Есть мысли в ближайшую субботу сделать стрим, ориентируемся на 19:00 мск

В программе:
- Ответы на ваши вопросы
- Напишем небольшую либу на Rust и опубликуем её на crates.io
- По изучаем исходники чегоо-нибудь из опенсорс

Свои вопросы к стриму можно задавать заранее в комментах под этим постом

Hardcore programmer

28 May, 10:04


В комментах к последним постам несколько человек заинтересовались вакансиями Wildberries. Специально для вас узнал что есть сейчас:

Что такое Wildberries сейчас - это 30 млн пользователей ежедневно, сотни тысяч сотрудников и одна из сильнейших IT-команд в стране. У нас гибкий современный стек, около-rocket-science задачи прилагаются. Можно работать из любой локации🌎
Если ты back-end разработчик, у нас есть, что предложить для тебя в нашем департаменте Инфраструктура:

Rust Developer🔥

Что мы делаем на Rust:
Видеонаблюдение - мы обеспечиваем работу и развитие системы видеонаблюдения на складах и сортировочных центрах. Это сотни локаций, десятки тысяч камер, петабайты видеоданных.

FaceID - наша команда реализовала и развивает систему двухфакторной авторизации на проходных.

Рендер - отвечает за получение медиафайлов, их обработку и отправку в различные хранилища данных. Масштабы: сотни картинок в секунду на входе, тысячи на выходе, сотни тысяч RPS на отдачу.

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

Что для нас важно в тебе:
- Имеешь опыт разработки на Rust или желание его освоить.
- Имеешь большой опыт разработки и траблшутинга backend-сервисов.
- Хорошо знаешь, что такое highload.
- Отлично знаком с Linux.

Go Senior developer / Tech Lead (управление небольшой командой)🔥

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

Что для нас важно в тебе:
- Алгоритмы и структуры данных.
- Опыт коммерческой разработки на Golang от 4 лет.
- Опыт работы с БД, а также с брокерами сообщений.
- Опыт работы с Linux.

Что готовы предложить на всех позициях:
- Быстрый процессинг: 1 или 2 технические встречи, быстрый фидбек после интервью.
- Команда профессионалов, у которой можно учиться.
- Возможность работать из любой локации.
- Работа над интересными проектами, которые прокачают твои технические навыки и аналитическое мышление.
- Минимум бюрократии.

Hardcore programmer

28 May, 02:51


Выравнивание памяти - что это и зачем оно нужно?

Если ответить совсем кратко, то это размещение данных в памяти таким образом, чтобы они распологались по адресам кратным некоторой степени 2. Но что это даёт?

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

Но наши программы зачастую хотят оперировать типами меньшей размерности. Например многие программы работают со строками, которые по своей сути являются массивами отдельных байт, то есть нам нужно оперировать типом вроде char в языке C. Для процессора не является большой проблемой загрузить подобный тип на регистр, но сделает он это следующим образом:
1. загрузит машинное слово содержащие нужный нам байт,
2. побитовым сдвигом переместит его в 0 позицию,
3. побитовым И откинет лишние биты.
После этого мы можем применять к регистру любые операции, которые мы хотим применить к нашему байту. Проблем здесь нет никаких в каком бы адресе не был размещён наш char. Поэтому его выравнивание будет 1, что позволит разместить его в любом адресе.

Но теперь давайте посмотрим на тип int, который занимает 4 байта. Давайте для простоты представим, что он размещён по адресу 3. Вроде проблем пока тоже никаких, процессор применит все те же операции и на регистре окажется наш int. Но что если у нас массив этих int? Тогда следующий из них будет расположен по адресу 7 и будет пересекать границу машинного слова. Процессору уже придётся загрузить сразу 2 машинных слова (по адресам 0 и 8) на разные регистры, каждый из них очистить от лишних бит, выставить биты на нужные позиции, а затем объединить 2 регистра через побитовое ИЛИ. Процессоры Intel и AMD вполне справляются с подобной задачей, но затрачивают на неё гораздо больше операций. А вот процессоры с архитектурой ARM откажутся исполнять такое непотребство, по крайней мере в автоматическом режиме (никто не мешает нам то же самое проделать в собственном коде). Но гораздо эффективнее всегда размещать int только по адресам кратным 4, или по простому выравнивать по 4 байта.

К нашему счастью компиляторы достаточно умные, что бы соблюдать выравнивание для всех типов. Правда при этом возникает один нюанс, для понимания которого давайте посмотрим на такую структуру:

struct example {
char a;
int b;
};

Поле a имеет выравнивание 1, а поле b - 4. Что бы это соблюдалось вся структура должна иметь выравнивание, как самое большое выравнивание её полей, то есть 4. Что в итоге приведёт к тому, что наш char так же будет выравнен по 4 байтам. При этом вся структура будет иметь размер 8 байт, а возле поля a окажутся 3 мусорных байта, которые никак не используются. Такие байты называют "паддинг". Это вынужденая трата памяти, которая обеспечивает нам быстродействие и работоспособность на разных платформах.

При проектировании структур имеет смысл учитывать эту особенность. К тому же стандарты языков C и C++ требуют, чтобы поля структуры были расположены в памяти в том же порядке, что и в коде. А вот компилятор языка Rust умеет переставлять поля местами ради оптимизации места занимаемого паддингами, что несомненно плюс, но требует более аккуратного подхода при низкоуровневых операциях с памятью структур. В крайних случаях ему можно указать, чтоб он обращался с конкретными типами так же как принято в C.

Hardcore programmer

28 May, 02:51


Всем привет!

Решил так же восстановить свою активность на ютубе и в процессе создания видео. Но как всегда времени это отнимает много, а выделить его я могу только на выходных.

И чтобы вы пока не скучали, сейчас будет небольшой пост про выравнивание данных в памяти.

Ну а бонусом ловите скрин переписки с наглядным пособием как отшивать назойливых рекрутёров, так чтоб они хотели вас ещё больше