Hardcore programmer

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

Поддержать канал:
https://www.donationalerts.com/r/hardcore_programmer
Advertising
We recommend to visit
HAYZON
HAYZON
6,053,581 @hayzonn

لا اله الا الله محمد رسول الله

👤 𝐅𝐨𝐮𝐧𝐝𝐞𝐫: @Tg_Syprion
🗓 ᴀᴅᴠᴇʀᴛɪsɪɴɢ: @SEO_Fam
Мои каналы: @mazzafam

Last updated 3 weeks, 4 days ago

Architec.Ton is a ecosystem on the TON chain with non-custodial wallet, swap, apps catalog and launchpad.

Main app: @architec_ton_bot
Our Chat: @architec_ton
EU Channel: @architecton_eu
Twitter: x.com/architec_ton
Support: @architecton_support

Last updated 2 weeks, 5 days ago

Канал для поиска исполнителей для разных задач и организации мини конкурсов

Last updated 1 month ago

1 month, 1 week ago
2 months, 4 weeks ago

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

Дисклеймер:
Данный пост является просто прикольной историей или рассуждением на тему. Я не преследую цель выразить недовольство провайдером или технической поддержкой. Я вообще доволен своим провайдером ибо за 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 адрес на тот, что у ноута. Профит. Интернет работает через малыша.

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

3 months ago

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

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

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

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

6 months ago

Всем привет!
Писать свой обзор на 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, думаю попробовать ещё его.

6 months, 1 week ago

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

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

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

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

Telegraph

Как живётся на Windows разработчику

Небольшой дисклеймер. Автор гик и линуксоид, описанное в статье мнение субъективно. Основной ОС автора является ArchLinux, а Windows мучилась в свободное время и на ноуте отведенным под роль экспериментов, когда автор заменит свою основную ОС на Windows и…

6 months, 1 week ago
6 months, 4 weeks ago

Всем привет!

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

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

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

7 months ago

В комментах к последним постам несколько человек заинтересовались вакансиями 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 технические встречи, быстрый фидбек после интервью.
- Команда профессионалов, у которой можно учиться.
- Возможность работать из любой локации.
- Работа над интересными проектами, которые прокачают твои технические навыки и аналитическое мышление.
- Минимум бюрократии.

7 months ago

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

Если ответить совсем кратко, то это размещение данных в памяти таким образом, чтобы они распологались по адресам кратным некоторой степени 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.

We recommend to visit
HAYZON
HAYZON
6,053,581 @hayzonn

لا اله الا الله محمد رسول الله

👤 𝐅𝐨𝐮𝐧𝐝𝐞𝐫: @Tg_Syprion
🗓 ᴀᴅᴠᴇʀᴛɪsɪɴɢ: @SEO_Fam
Мои каналы: @mazzafam

Last updated 3 weeks, 4 days ago

Architec.Ton is a ecosystem on the TON chain with non-custodial wallet, swap, apps catalog and launchpad.

Main app: @architec_ton_bot
Our Chat: @architec_ton
EU Channel: @architecton_eu
Twitter: x.com/architec_ton
Support: @architecton_support

Last updated 2 weeks, 5 days ago

Канал для поиска исполнителей для разных задач и организации мини конкурсов

Last updated 1 month ago