Как стать автором
Обновить
1
0
Igor K. @rev42

Пользователь

Отправить сообщение

Миллион одновременных соединений

Время на прочтение8 мин
Количество просмотров63K

Я слышал ошибочные утверждения о том, что сервер может принять только 65 тысяч соединений или что сервер всегда использует по одному порту на каждое принятое подключение. Вот как они примерно выглядят:

Адрес TCP/IP поддерживает только 65000 подключений, поэтому придётся назначить этому серверу примерно 30000 IP-адресов.

Существует 65535 номеров TCP-портов, значит ли это, что к TCP-серверу может подключиться не более 65535 клиентов? Можно решить, что это накладывает строгое ограничение на количество клиентов, которые может поддерживать один компьютер/приложение.

Если есть ограничение на количество портов, которые может иметь одна машина, а сокет можно привязать только к неиспользуемому номеру порта, как с этим справляются серверы, имеющие чрезвычайно большое количество запросов (больше, чем максимальное количество портов)? Эта проблема решается распределением системы, то есть кучей серверов на множестве машин?

Поэтому я написал эту статью, чтобы развеять данный миф с трёх сторон:

  1. Мессенджер WhatsApp и веб-фреймворк Phoenix, построенный на основе Elixir, уже продемонстрировали миллионы подключений, прослушивающих один порт.
  2. Теоретические возможности на основе протокола TCP/IP.
  3. Простой эксперимент с Java, который может провести на своей машине любой, если его всё ещё не убедили мои слова.

Если вы не хотите изучать подробности, то перейдите в раздел «Итоги» в конце статьи.
Читать дальше →
Всего голосов 82: ↑80 и ↓2+99
Комментарии27

Как начать писать программный код Си в ОС Linux (Руководство для совсем начинающих)

Время на прочтение5 мин
Количество просмотров77K

Этот материал рассчитан на людей, будущих программистов, которые только начинают разбираться в программировании под ОС Linux, или может быть долго были пользователями ОС Windows. Я попробую здесь показать прямое руководство к действию на примере ОС Ubuntu и тех простых инструментов, которые использовал некогда сам при изучении Си в процессе знакомства с Linux.

Читать далее
Всего голосов 21: ↑13 и ↓8+10
Комментарии37

Алгоритм Томасуло как фактор импортозамещения российских процессоров

Время на прочтение7 мин
Количество просмотров43K

Проектированием простого процессора сейчас никого не удивишь. Любой способный студент может за пару недель написать на верилоге однотактный RISC-V или ARM процессор и синтезировать его для ПЛИС. Процессор будет работать на учебной плате и выполнять простые программы на Си и ассемблере.

Такой процессор можно постепенно усложнять: сделать его конвейерным, добавить кэш и прерывания. Но где находится граница между такими студенческими упражнениями - и взрослыми высокопроизводительными процессорными ядрами, которые стоят в сотовых телефонах и облачных серверах?

На границе между вводным и продвинутым курсом микроархитектуры CPU принято ставить внеочередное выполнение инструкций, именно оно отделяет мальчика от мужа. Эта фича впервые появилась еще в 1960-е годы в суперкомпьютерах CDC 6600 и IBM 360/91, но проникла в персоналки с PentiumPro только в 1996 году и в Apple iPhone в 2012 году.

Именно внеочередное выполнение инструкций - главная козырная карта самого горячего процессорного проекта российской микроэлектроники - двухгигагерцового RISC-V процессора для ноутбуков от компании Ядро / Syntacore. Этот проект был объявлен в прошлом году. Что с ним станет в результате известных событий?

Читать далее
Всего голосов 91: ↑70 и ↓21+68
Комментарии127

Мой новый домашний сервер, часть 4: использование unraid

Время на прочтение12 мин
Количество просмотров50K
Для тех, кому лень читать предыдущие части — я переходил с HP Microserver Gen8/Windows Server на самосборный сервер с Unraid в качестве базовой ОС. Unraid — это коммерческая ОС для NAS/домашнего сервера на базе ядра Linux. Основные возможности — гибкое управление массивом дисков, удобная установка докер-контейнеров из своего каталога и возможность запуска виртуальных машин. Почему выбрал именно unraid — написано во второй части.

Я не буду здесь расписывать установку и настройку unraid. Это делается элементарно — просто закидываются файлы на флэшку, флэшка вставляется в сервер — можно пользоваться. Всё понятно расписано у них на сайте, плюс много полезной информации есть на youtube-канале Spaceinvader One. Какие-то ранние вещи там уже устарели, потому, если видите несколько видео на одну тему, выбирайте более свежее. Ещё понятные доки на эту тему у ibracorp, есть и youtube-канал, если буквы не любите.



А я лучше просто опишу, как выглядят теперь перечисленные во второй части сервисы.

Читать дальше →
Всего голосов 13: ↑11 и ↓2+14
Комментарии65

K8s кластер в Oracle Cloud для Always Free аккаунтов

Время на прочтение6 мин
Количество просмотров10K

На хабре уже не раз писали про бесплатные вычислительные ресурсы (ARM, 4 CPU, 24ГБ), которые можно развернуть в Oracle Cloud. После регистрации вы получаете $300 и 30 дней триального аккаунта, когда для развёртывания доступны все виды ресурсов. Когда эти 30 дней заканчиваются, аккаунт получает статус Always Free, и количество доступных ресурсов значительно урезается. Чтобы снова получить доступ к ним ко всем, можно сделать upgrade своего аккаунта до Pay-as-You-Go. Это односторонняя операция, переход обратно на Always Free невозможен, и после такого перехода нужно аккуратно следить и и контролировать траты. Тем не менее, Pay-as-You-Go аккаунты также могут бесплатно использовать Always Free ресурсы.

Oracle Cloud предоставляет возможность managed развёртывания K8s кластера (в документации он называется OKE – Oracle Container Engine for Kubernetes), однако он недоступен для Always Free аккаунтов.

Чтобы обойти это ограничение, используем подход полностью ручного выделения облачных ресурсов (сети, виртуальных машин) и установки необходимых компонентов. На выходе получим кластер с четырьмя узлами (один control-plane и три worker'а) с установленным K8s'ом, балансировщиком нагрузки, публичным IP адресом и (бонусом) бесплатным доменом. Воспроизводимые Terraform скрипты (и readme по их использованию) опубликованы на github'е.

Читать далее
Всего голосов 6: ↑5 и ↓1+4
Комментарии10

Сравнение полносвязной сети и сверточной нейросети LeNet 5

Время на прочтение12 мин
Количество просмотров10K

Привет! Меня зовут Елдар, я – Machine Learning Engineer в компании Beeline Казахстан и студент магистратуры в Университете Цукуба. Работаю дистанционно из Японии, занимаюсь улучшением моделей аутентификации лиц.

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

Чтобы написать эту статью, я реализовал полносвязную многоуровневую сеть и архитектуру LeNet 5 в TensorFlow и протестировал на наборе данных MNIST по таким характеристикам как время обучения, время вывода (inference time), точность (accuracy) и потери (loss). А также сравнил полученные показатели с современными методами.  Время обучения включает проверку на валидационной выборке после каждой эпохи. Время вывода показывает время, необходимое для вывода результата после вскармливания одного изображения.

Сравниваем
Всего голосов 12: ↑11 и ↓1+11
Комментарии6

Переводы всех статей Пола Грэма на всех языках (210+)

Время на прочтение7 мин
Количество просмотров32K
image
(иллюстрация Asya_Dyu)

Пол Грэм — один из самых уважаемых людей среди ИТишников, основателей и инвесторов. Он первоклассный программист (написал два языка программирования), хакер, создатель дерзкого акселератора Y Combinator, философ.

Своими помыслами и разумом Пол Грэм врывается в широкий спектр областей: от прогнозирования развития языков программирования на сто лет вперед до человеческих качеств и способов починить/хакнуть экономику. А ещё он осознает важность того, чтобы формулировать свои мысли в текст и делиться ими с окружающими.

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

Сейчас около 2 миллиардов человек могут прочитать эссе Пола Грэма. Моя задумка в том, что если перевести его эссе на топ-20 языков, то это даст возможность еще 2 миллиардам людей случайно наткнуться на перевод на родном языке (как это было у меня) и встать на путь стартапера.

Читать лучше в оригинале, но путь к оригиналу иногда бывает (только) через перевод.
Читать дальше →
Всего голосов 28: ↑21 и ↓7+18
Комментарии15

Как я включил свое ПО в реестр Минкомсвязи

Время на прочтение5 мин
Количество просмотров13K

Подробное описание всего процесса включения ПО в реестр программного обеспечения минкомсвязи от частного лица на личном опыте.

Читать далее
Всего голосов 33: ↑31 и ↓2+37
Комментарии28

15 игр, которые прокачивают логику, алгоритмы, ассемблер и силу земли

Время на прочтение8 мин
Количество просмотров108K


Есть «Super Mario», признанная классика видео игр. Есть «Doom», который запускают на чайниках и тестах на беременность. Есть супер-популярные по статистике twitch.tv игры («League of Legends», «GTA V», «Fortnite», «Apex Legends») которые стримят пятая часть всех стриммеров.

А есть игры, на которые очень мало обзоров, но они супер крутые — игры про алгоритмы. Игры, в которых можно кодить на ретро-компьютере; игры, которые надо взламывать; игры, где можно программировать контроллеры или поведение персонажей; игры, где можно создавать свою игру внутри игры.

Под катом подборка классных игр про алгоритмы за последние 10 лет. Если что-то упустила — буду рада дополнениям.

Еще я создала канал в Telegram: GameDEVils, буду делиться там клевыми материалами (про геймдизайн, разработку и историю игр).
Читать дальше →
Всего голосов 78: ↑73 и ↓5+88
Комментарии98

Бесплатные Oracle Cloud серверы и Mikrotik — Site-to-Site VPN

Время на прочтение7 мин
Количество просмотров41K

Предоставление бесплатных серверов от малопопулярного облачного провайдера - это не новость. А новость в том, что теперь Oracle, вдобавок к двум едва живым бесплатным x86_64 серверам, открывает доступ к мощностям на ARM64 - для всех, даром, и пусть никто не уйдет обиженным!© Предложение по ARM значительно более производительное, чем на традиционных процессорах. Добавляя к этому отсальные бесплатные "плюшки", я задаюсь вопросом: а зачем я до сих пор плачу за VPS и держу собственный серверок в подвале?! Все это можно выкинуть если удастся надежно и безопасно связать дата центр с домашней сетью.

Читать далее
Всего голосов 22: ↑19 и ↓3+17
Комментарии104

Bare-metal kubernetes-кластер на своём локальном компьютере

Время на прочтение8 мин
Количество просмотров30K

Привет, я Кирилл Шаталаев, инженер инфраструктуры и автоматизации в X5 Tech.

Я в курсе, что статей на эту тему достаточно, в том числе и на Habr. И когда у меня возникла задача поднять кластер, я их все перечитал. Где-то очень подробно рассказывается, как ставить виртуалки с убунтой на Windows под virtualbox, и очень скудно про сам кубер. Где-то досконально описано, как это всё круто можно провернуть с terraform в Яндекс.Облаке. Где-то про сам kubespray скупо пару слов, зато куча скриншотов прометея с кибаной.

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

Читать далее
Всего голосов 14: ↑12 и ↓2+12
Комментарии22

Процесс управления тестированием: Полное руководство по тестированию проекта

Время на прочтение5 мин
Количество просмотров22K

Управление тестированием — это процесс управления тестовой деятельностью с целью обеспечения высококачественного и высококлассного тестирования программного приложения. Метод заключается в организации, контроле, обеспечении отслеживания и видимости процесса тестирования с целью создания высококачественного программного приложения. Это обеспечивает выполнение процесса тестирования программного обеспечения в соответствии с ожиданиями.

Вы становитесь тест-менеджером самого важного проекта в вашей компании. Задача проекта — протестировать банковскую сеть уважаемого "Guru99 Bank".

Читать далее
Всего голосов 7: ↑4 и ↓3+3
Комментарии3

Я всегда с собой беру…

Время на прочтение9 мин
Количество просмотров58K

Некоторые сотовые провайдеры не разрешают раздавать их безлимитный интернет без дополнительной оплаты. Приобретать отдельное походное устройство по обеспечению широкополосного беспроводного доступа в глобальную сеть с абонентской оплатой более 1к рублей в месяц ради нескольких дней в году может совсем не хотеться. В связи с этими обстоятельствами в статье рассмотрено, как сотовые операторы узнают о раздаче доступа в интернет с мобильных устройств, а также какие возможности имеются на борту RouterOS по обеспечению приватности подобных действий.
Читать дальше →
Всего голосов 90: ↑87 и ↓3+112
Комментарии134

Что необходимо знать, чтобы написать свою Embedded RTOS (часть 1)

Время на прочтение22 мин
Количество просмотров12K

Хотел бы написать небольшой цикл статей посвященных тому, как я написал свою RTOS с какими трудностями столкнулся и зачем вообще писать свою RTOS если уже есть FreeRTOS, RTX, embOS и т.д. список достаточно большой.

Начнем с того, что по мере работы я сталкивался с тем, что часть разработчиков (и я в том числе когда-то и сам) относятся к RTOS как к некоторому черному магическому ящику, мол что-то там происходит как-то все это работает и лучше туда не лесть, а то поломается ящик и проекту «ХАНА». И все хорошо пока хорошо, но как только появляются проблемы, то начинаются бессонные ночи с отладчиком, сроки по проекту горят, а самое главное и коварное, что ошибки в RTOS отловить крайне сложно. Зачастую они имеют плавающий характер и такие эффекты как переполнение стека, инверсия приоритетов, взаимные блокировки, и все, что связанное со средствами синхронизации отладить крайне сложно.

Cо всем этим я решил разобраться в корне, и чисто в академичесеких целях начал писать свою RTOS, чтобы так сказать прочувствовать все изнутри.

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

При написании RTOS, я осознанно отказался от поддержки проприетарных архитектур как AVR, PIC и мой выбор пал на семействе CORTEX, поскольку cortex-mX, на сегодня самая распространенная архитектура в Embedded.

Читать далее
Всего голосов 34: ↑34 и ↓0+34
Комментарии89

Ты ведь как раз собирался?

Время на прочтение2 мин
Количество просмотров15K

Контролировать исполнение поручений и задач – постоянная обязанность руководителя. В мечтах, конечно, всё не так – хочется работать с надёжными и ответственными людьми, вроде легендарного Роуэна из «Послания к Гарсиа» Э. Хаббарда. Ты ему такой говоришь, что надо сделать – он идёт и делает. Скинул и забыл. Ага, да.

Читать далее
Всего голосов 54: ↑48 и ↓6+59
Комментарии15

История Мэла, настоящего программиста

Время на прочтение7 мин
Количество просмотров21K

Эта заметка была впервые опубликована в Usenet автором, Эдом Натером (utastro! Nather) 21 мая 1983 года. Вполне вероятно, что на момент публикации вы еще даже не родились на свет. Полагаем, эту историю необходимо сохранить — хотя бы потому что теперь от настоящего «железа» мы отделены толстым слоем абстракций.

Читайте и получайте удовольствие!

Читать далее
Всего голосов 54: ↑49 и ↓5+59
Комментарии20

Эмуляторы советских процессорных систем

Время на прочтение6 мин
Количество просмотров20K

В этой статье я собрал обобщающую информацию по некоторым программным эмуляторам советских компьютерных систем - начиная от больших ЭВМ типа БЭСМ-6 и заканчивая микропроцессорными электронными играми.

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

Читать далее
Всего голосов 81: ↑81 и ↓0+81
Комментарии49

Пошаговая инструкция как использовать MkDocs для создания сайта с документацией продукта

Время на прочтение14 мин
Количество просмотров26K

Всем привет! Мы продолжаем разбирать наши решения. Сегодня расскажем о том, как, используя генератор Material for MkDocs, можно создать несложный, но удобный статический сайт с документацией (и не только!).

А ещё как встроить его в CI/CD для автосборки и автопубликации (мы используем Gitlab CI, о чём подробно рассказывалось в предыдущем туториале), а также как использовать плагины к генератору чтобы, к примеру, создавался не только сайт, но и его pdf-представление.

Добро пожаловать под кат!

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Комментарии15

Компьютер для «Бурана»

Время на прочтение5 мин
Количество просмотров35K
В прошлый раз мы рассказывали о первых советских наработках в области БЦВМ (бортовых цифровых вычислительных машин) для космической отрасли. А теперь обратим своё внимание на то, чем дело кончилось.

Пиком и, фактически, финалом советской космонавтики часто называют программу «Энергия» — «Буран». Оценки стоимости этого амбициозного проекта разнятся, но обычно называются цифры, превосходящие 14 миллиардов «тех» рублей. По нынешним ценам это триллионы «деревянных» — колоссальные затраты! Вполне возможно, что финал советского строя и государства в значительной степени был предрешён в т.ч. и подготовкой к единственному полёту «Бурана» 15 ноября 1988 года…


Читать дальше →
Всего голосов 66: ↑61 и ↓5+70
Комментарии59

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Fullstack Developer, Chief Technology Officer (CTO)
Lead
От 350 000 ₽
Project management
Development management
Linux
Golang
JavaScript
Agile
IT service management
Python
Git
Database