Search
Write a publication
Pull to refresh
-13
0

Инженер

Send message

Запустился бесплатный курс «Подготовка к алгоритмическому собеседованию» от Яндекс Практикума

Reading time2 min
Views19K
Сервис онлайн-образования Яндекс Практикум запустил бесплатный курс «Подготовка к алгоритмическому собеседованию» для специалистов, которые планируют проходить алгоритмические собеседования или просто хотят познакомиться с понятием «алгоритмическая секция».

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

  • если вы раньше изучали алгоритмы и структуры данных, вы сможете применить их на практике;
  • если вы только планируете их изучать, то курс поможет вам сориентироваться и уделять время только тому, что пригодится на собеседованиях.



Читать дальше →

[Личный опыт] Турция: как здесь живется сейчас

Reading time7 min
Views69K

Аланья

Маша Меркушина, продакт-менеджер одной из московских компаний, в начале марта без особого плана отправилась в Турцию.


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


С чем ей пришлось столкнуться в первые недели после переезда — и какие уроки она извлекла.


Слово Маше.

Читать дальше →

Как программировать многоядерные микроконтроллеры

Level of difficultyMedium
Reading time16 min
Views22K


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


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

Читать дальше →

Линейная регрессия. Разбор математики и реализации на python

Reading time3 min
Views29K

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

Читать далее

Как большинство Java проектов выглядят изнутри

Reading time6 min
Views21K

Меня зовут Аксёнов Вячеслав, я бэкенд разработчик и в последние годы пишу веб приложения на java/kotlin. Основная идея этой статьи описать основные технические задачи, которые ставятся перед современными веб приложениями, а также перечислить те библиотеки, которые чаще всего используются для решения этих задач.

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

Читать далее

Как работать с числами с плавающей точкой в Python

Reading time9 min
Views72K

К старту курса по Fullstack-разработке на Python делимся решениями классической проблемы неточности чисел с плавающей точкой для новичков. В материале вы найдёте примеры работы с функциями и классами, предназначенными специально для решения проблем чисел с плавающей точкой.

Читать далее

Docker: заметки веб-разработчика. Итерация первая

Reading time23 min
Views58K


Привет, друзья!


Хочу поделиться с вами заметками о Docker.


Заметки состоят из 4 частей: 2 теоретических и 2 практических.


Если быть более конкретным:


  • эта часть посвящена самому Docker, Docker CLI и Dockerfile;
  • в второй части рассказывается о Docker Compose;
  • в третьей части мы разработаем приложение, состоящее из 3 сервисов (клиента, админки и API) и базы данных (PostgreSQL);
  • в четвертой части мы это приложение "контейнеризуем".

Если вам это интересно, прошу под кат.

Читать дальше →

Что такое Netcat? Bind Shell и Reverse Shell в действии

Reading time5 min
Views55K

Друзья, всех приветствую!

В этой статье мы поговорим о том, что такое Netcat и с помощью него реализуем Bind и Reverse Shell соответственно.

Netcat

Netcat, впервые выпущенный в 1995 году (!), является одним из "оригинальных" инструментов тестирования на проникновение в сеть. Netcat настолько универсален, что вполне оправдывает авторское название "швейцарский армейский нож" хакера. Самое четкое определение Netcat дают сами разработчики: "простая утилита, которая считывает и записывает данные через сетевые соединения, используя протоколы TCP или UDP".

Подключение к порту TCP/UDP

Как следует из описания, Netcat может работать как в режиме клиента, так и в режиме сервера. Для начала давайте рассмотрим клиентский режим. Мы можем использовать клиентский режим для подключения к любому порту TCP/UDP, что позволяет нам: Проверить, открыт или закрыт порт или подключиться к сетевой службе.

Давайте начнем с использования Netcat (nc), чтобы проверить, открыт ли порт 80 на тестируемой машине (в качестве тестируемой машины мы будем использовать основную машину на которой установлена ВМ !!!).

Мы введем несколько аргументов: опцию -n, чтобы отключить DNS и поиск номеров портов по /etc/services; -v для вывода информации о процессе работы; IP-адрес назначения; и номер порта назначения:

P.S. Чтобы узнать IP-адрес основной машины выполните команду ipconfig в командной строке если у вас основная машина Windows, и ifconfig если у вас Linux или MacOS.

Читать далее

Как Kubernetes создает и запускает контейнеры: Иллюстрированное руководство

Reading time7 min
Views28K

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

Kubernetes позволяет выполнять много полезной работы без глубокого понимания деталей. Утилита командной строки kubectl и дашборды в Openshift помогают управлять вашими контейнерами. Однако, как только вы заглянете глубже в Kubernetes все может быстро усложниться.

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

Такая аналогия правдива и для работы с Kubernetes. Просто сказать: "Давайте оставим это на усмотрение разработчиков" - недостаточно, с таким же успехом можно предоставить выбор системы кондиционирования обычным рабочим со строительной площадки. За каждой хорошо спроектированной системой стоит как множество деталей, так и архитектор, который понимает их значение.

Для системного архитектора в IT важно понимать как Kubernetes создает и запускает контейнеры. Изучение контейнерной оркестрации необходимо по двум причинам. Во-первых, это хорошее знание для архитектора уровня компании (как для обычного архитектора знание систем кондиционирования). Во-вторых, понимание механизмов, благодаря которым Kubernetes создает и запускает контейнеры, позволяет настраивать пользовательские конфигурации кластеров Kubernetes для специфичных кейсов, но для этого необходимо понимать основы.

Читать далее

Docker: заметки веб-разработчика. Итерация четвертая

Reading time7 min
Views12K


Привет, друзья!


В этой статье я продолжаю (и заканчиваю) делиться с вами заметками о Docker.


Заметки состоят из 4 частей: 2 теоретических и 2 практических.


Если быть более конкретным:


  • первая часть посвящена Docker, Docker CLI и Dockerfile;
  • во второй части рассказывается о Docker Compose;
  • в третьей части мы разрабатываем приложение, состоящее из трех сервисов: клиента на React, админки на Vue и сервера на Express, и базы данных PostgreSQL, взаимодействие с которой осуществляется с помощью Prisma.

В этой заключительной части мы "контейнеризуем" наше приложение.


Репозиторий с кодом приложения.


Если вам это интересно, прошу под кат.

Читать дальше →

Кто такой Thread Pool и как его написать своими руками на С++

Level of difficultyEasy
Reading time12 min
Views47K

Thread Pool достаточно популярный паттерн в программировании, с которым рано или поздно сталкивается каждый первый программист. Если вы новичок и не хотите бездумно пользоваться пулом потоков, то эта статья поможет вам разобраться с его устройством и написать наивные реализации с использованием С++ 14 и С++ 17. Так же статья будет полезна всем, кто изучил теорию по многопоточности, но не знает как можно применить свои знания.

Читать далее

Шаблоны C++: как итерировать по std::tuple — std::apply и еще пара приемов

Reading time7 min
Views9.5K

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

Сегодня мы пойдем немного дальше и рассмотрим другие техники. Первая — с применением std::apply из C++17, вспомогательной функции для кортежей. В этой статье также будут рассмотрены некоторые стратегии, позволяющие сделать итерацию более универсальной и обрабатывать кастомные callable-объекты, а не только выводить их в консоль.

Читать далее

Разбираем алгоритмы компьютерной графики. Часть 1 — «Starfield Simulation»

Reading time7 min
Views18K

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

Действовать буду по следующему принципу: беру какой-либо графический эффект (из демо, программы, игры – не важно) и пытаюсь реализовать этот же эффект максимально простым и понятным способом, разъясняя что, как и почему сделано именно так.

В качестве основы для вывода графики будет использован язык Python и библиотека PyGame. Этим набором можно очень просто что-то выдать на экран, сделать анимацию и т.п. не отвлекаясь на технические детали реализации.

Читать далее

Как устроены цикл событий и стек вызовов в JavaScript

Reading time6 min
Views61K

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

Статья будет полезна как новичкам, так и опытным разработчикам. Первым она поможет понять, почему JavaScript настолько сильно отличается от других языков программирования и чем функция обратного вызова очень полезна на практике. Вторым — глубже разобраться в среде исполнения этого языка программирования.

Читать далее

Пишем асинхронного Телеграм-бота

Level of difficultyEasy
Reading time10 min
Views71K

Привет! Меня зовут Александр, я руководитель бэкенд-разработки в KTS.

Сегодня я покажу, как написать своего Телеграм-бота на основе asyncio и aiohttp.

Мы не будем использовать ни aiogram, ни любые другие библиотеки, а напишем бота с нуля, чтобы немного познакомиться с асинхронным программированием, корутинами и некоторыми примитивами синхронизации. Углубляться в устройство Телеграма не будем.

Статья предназначена для начинающих асинхронных программистов.

Читать далее

Альтернативные фронтэнды

Reading time3 min
Views13K

В связи с блокировками (в том числе и возможными) и уходами сервисов из России возможно стоит подумать о пересмотре выбора приложений и прочих сервисов и замене их на другие (желательно, этичные), но, конечно, ясно, что такое не всегда возможно. Не стоит и забывать, что такие гиганты как Google и Facebook вечно охотятся за вашими данными чтобы проще продать их подороже.

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

Читать далее

JavaScript: разрабатываем чат с помощью Socket.io, Express и React с акцентом на работе с медиа

Reading time25 min
Views34K



Привет, друзья!


В данной статье я хочу показать вам, как разработать простое приложение для обмена сообщениями в режиме реального времени с использованием Socket.io, Express и React с акцентом на работе с медиа.


Функционал нашего приложения будет следующим:


  • при первом запуске приложение предлагает пользователю ввести свое имя;
  • имя пользователя и его идентификатор записываются в локальное хранилище;
  • при повторном запуске приложения имя и идентификатор пользователя извлекаются из локального хранилища (имитация системы аутентификации/авторизации);
  • выполняется подключение к серверу через веб-сокеты и вход в комнату main_room (при желании можно легко реализовать возможность выбора или создания других комнат);
  • пользователи обмениваются сообщениями в реальном времени;
  • типом сообщения может быть текст, аудио, видео или изображение;
  • передаваемые файлы сохраняются на сервере;
  • путь к сохраненному на сервере файлу добавляется в сообщение;
  • сообщение записывается в базу данных;
  • пользователи могут записывать аудио и видеосообщения;
  • после прикрепления файла и записи аудио или видео сообщения, отображается превью созданного контента;
  • пользователи могут добавлять в текст сообщения эмодзи;
  • текстовые сообщения могут озвучиваться;
  • и т.д.

Репозиторий с исходным кодом проекта.


Если вам это интересно, прошу под кат.

Читать дальше →

Короли инференса: PyTorch, Tensorflow или MATLAB?

Reading time7 min
Views15K

Что вам важнее в DL-проекте, удобство или производительность? Посмотрим на проблему глазами инженера-разработчика сложных систем с элементами искусственного интеллекта. Как типичный инструментарий в этой сфере справляется с обучением и выполнением?

В этой статье мы запустим пару нейросетей в MATLAB и сравним быстродействие ResNet с opensource-фреймворками. Так что, если хотите обсудить, в чем (кроме удобства) коммерческий фреймворк может выиграть у опенсорса, добро пожаловать!

Читать далее

Аннотации в Java и их обработка

Reading time15 min
Views54K

Аннотация — это специальная конструкция языка, связанная с классом, методом или переменной, предоставляющая программе дополнительную информацию, на основе которой программа может предпринять дальнейшие действия или реализовать дополнительную функциональность, такую как генерация кода, проверка ошибок и т. д.

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

Читать далее

Information

Rating
5,926-th
Location
Санкт-Петербург и область, Россия
Registered
Activity