Pull to refresh
-14
0.2
Send message

Асинхронность в JS: как выполнять долгие сетевые запросы без блокирования основного потока

Level of difficultyMedium
Reading time9 min
Views9.4K

Асинхронность – это способ координации поведения программы на протяжении какого-то временного отрезка. Разбираем, как в синхронном JavaScript вынести операции за рамки единого потока, чтобы не блокировать действие кода после тяжёлых операций. 

Читать далее
Total votes 1: ↑0 and ↓1-1
Comments8

Автоматически ищем техдолг с помощью RefactorFirst

Level of difficultyEasy
Reading time4 min
Views2.4K

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

Она ищет в Java-коде Божественные Классы и классы с очень высоким уровнем связности, которые следовало бы отрефакторить. Для этого используются правила God Class Rule и Coupling Between Objects Rule из опенсорсного коданализатора PMD.

Коротко опишу, что это такое, и как этим пользоваться.

Интересно. Читать далее.
Total votes 6: ↑5 and ↓1+6
Comments3

Инструменты анализа эффективности работы приложения. PerfView

Reading time15 min
Views12K

Иногда приходится разбираться, почему .NET приложение работает "плохо". Не так, как мы ожидали. Тупит, медленно работает, зависает, запросы «не исполняются», утекает память или потребляется слишком много CPU.

Есть множество способов, как разбираться в таких ситуациях. Сегодня мы немного обсудим, что это за способы. Когда и какой способ нужно использовать. И более детально рассмотрим один из инструментов: PerfView.

Читать далее
Total votes 23: ↑23 and ↓0+23
Comments5

Prompt-инженер как новый тренд. Требования и зарплаты у специалистов

Reading time6 min
Views52K

Технологические компании со всего мира ищут квалифицированных и эффективных инженеров, которые бы облегчили общение с машиной и составление инструкций. Екатерина Саяпина, Product Owner личного кабинета платформы МТС Exolve, созданной компанией МТТ (входит в экосистему МТС), разбирается, как попасть в эту волну, какие вакансии представлены на рынке и чему стоит научиться, если вы хотите стать prompt-инженером. 

Читать далее
Total votes 9: ↑7 and ↓2+12
Comments9

Wireshark — подробное руководство по началу использования

Level of difficultyMedium
Reading time8 min
Views186K

Wireshark – это широко распространённый инструмент для захвата и анализа сетевого трафика, который активно используется как для образовательных целей, так и для устранения неполадок на компьютере или в сети. Wireshark работает практически со всеми протоколами модели OSI, обладает понятным для обычного пользователя интерфейсом и удобной системой фильтрации данных. Помимо всего этого, программа является кроссплатформенной и поддерживает следующие операционные системы: Windows, Linux, Mac OS X, Solaris, FreeBSD, NetBSD, OpenBSD.

Читать далее
Total votes 32: ↑30 and ↓2+36
Comments21

.NET 7 против российской криптографии

Level of difficultyMedium
Reading time9 min
Views25K

Разрабатывая один проект на свежем .NET 7 столкнулся с необходимостью подписывать данные с использованием отечественных криптоалгоритмов. Ранее, в .NET Framework хорошая поддержка работы с со сторонними криптопровайдерами, реализующими семейство алгоритмов ГОСТ (CryptoPro CSP, ViPNet CSP и пр.), шла "из коробки". К сожалению, в новые версии фреймворка часть ранее работающего функционала по работе с CMS-сообщениями не попала, и пришлось восполнять пробел надёжными дедовскими методами, т. е. с помощью старого доброго WinAPI.

Читать далее
Total votes 74: ↑74 and ↓0+74
Comments14

[Паттерны API] Списки и организация доступа к ним

Level of difficultyHard
Reading time11 min
Views7.9K

Это глава 20 моей книги «API». v2 будет содержать три новых раздела: «Паттерны API», «HTTP API и REST», «SDK и UI‑библиотеки». Если эта работа была для вас полезна, пожалуйста, оцените книгу на GitHub, Amazon или GoodReads. English version on Substack.

В предыдущей главе мы пришли вот к такому интерфейсу, позволяющему минимизировать коллизии при создании заказов:

Читать далее
Total votes 9: ↑8 and ↓1+7
Comments0

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

Level of difficultyMedium
Reading time8 min
Views9.7K

Не так давно мы в компании столкнулись с маленькой проблемкой - RabbitMQ (далее просто кроль и тп) на дев кластере упал, мы его оживили, а за definitions.json для восстановления юзеров, очередей и тд. пришлось бегать к разработчику, который по чистой случайности эти файлики часто снимал. Это был первый звоночек.

Вторым звоночком стал DR (Disaster Recovery) - сценарий/упражнение по экстренному поднятию нашего продукта в облаке в случае взрыва и уничтожения нашего физического дата центра. Тут надобность в бэкапах нашего кролика стала очевидной и мы занялись решением этой проблемы

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

Читать далее
Total votes 9: ↑8 and ↓1+11
Comments11

XSS атакует! Не краткий обзор где и как искать уязвимости

Level of difficultyMedium
Reading time11 min
Views12K

Казалось бы, XSS уязвимостям уже 100 лет в обед: написано огромное количество материала на эту тему, браузеры и инструменты которые мы используем тоже развиваются и добавляются новые уровни защиты. Но тема не перестает быть актуальной, ведь в новой версии Top 10 Web Application Security Risks (правда двухлетней давности) XSS уязвимости по-прежнему входят в ТОП 10 самых опасных и распространенных уязвимостей (хоть и включены теперь в группу injection), и 21% всех уязвимостей, найденных в web-приложениях были именно XSS. 

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

Читать далее
Total votes 26: ↑26 and ↓0+26
Comments3

Консистентность в конкуретной среде: как не захлебнуться в потоках данных

Level of difficultyEasy
Reading time21 min
Views6.5K

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

Напомню, что текст рассчитан в первую очередь на разработчиков, которые имеют мало практического опыта работы в конкурентной и/или микросервисной среде, поэтому многие вещи я объясню на пальцах. Для тех, кто захочет ознакомиться с более строгими формулировками, сразу скажу, что здесь будут затронуты упрощённые идеи паттернов Transactional Outbox и Saga.

Читать дальше
Total votes 19: ↑19 and ↓0+19
Comments10

RabbitMQ: дополнительные возможности

Reading time8 min
Views9.2K

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

Что конкретно разберём:

расчёт количества консьюмеров по формуле Эрланга;

шардирование — различные способы балансировки;

дедупликацию сообщений в очереди;

многоуровневую очередь повторных попыток;

приоритеты сообщений.

Читать далее
Total votes 16: ↑16 and ↓0+16
Comments0

Как разработать драйвер Linux с нуля

Level of difficultyHard
Reading time11 min
Views20K
image

Недавно я занимался изучением IoT и, так как мне не хватало устройств, при попытках симулировать работу прошивки я часто сталкивался с неимением нужного /dev/xxx. Так что я стал задумываться, а могу ли написать драйвер самостоятельно, чтобы заставить прошивку работать. Независимо от того, насколько сложно это будет, и удастся ли воплотить такое намерение, в любом случае вы не пожалеете, если научитесь разрабатывать драйвер Linux с нуля.
Читать дальше →
Total votes 33: ↑27 and ↓6+35
Comments7

PowerShell и LiveJournal (ЖЖ): скачивание постов журнала

Level of difficultyMedium
Reading time15 min
Views2.2K

У блог-платформы «LiveJournal» есть набор удалённых функций и протокол их вызова для сторонних веб-клиентов. В этой статье я описываю, какие из этих функций удобно использовать для загрузки к себе на компьютер всех постов своего журнала (блога). Также я даю пояснения к алгоритму загрузки всех постов, показанному в виде псевдокода в документации к клиент-серверному протоколу «LiveJournal», и привожу его перевод на русский язык с некоторыми изменениями.

В конце статьи я описываю свою практическую реализацию алгоритма загрузки постов на языке PowerShell. В статье есть иллюстрация работы полученного скрипта и ссылка на его исходный код на веб-сервисе «GitHub».

Читать далее
Total votes 4: ↑3 and ↓1+3
Comments10

Не придумывайте данные для интеграционных тестов — генерируйте их

Level of difficultyMedium
Reading time8 min
Views7.9K


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


Testcontainers "по щелчку пальцев" запускают базы данных, но для того, чтобы тесты начали проходить, нужно кое-что ещё: начальные данные внутри базы. Их необходимо подготовить перед запуском тестов, а по мере того, как схема растёт и усложняется, делать это становится всё труднее.


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

Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments5

Эволюция облачной системы авторизации

Level of difficultyMedium
Reading time12 min
Views5.1K

Краткий обзор истории развития принципов авторизации — начиная с локального использования идентификаторов и паролей, заканчивая современными предложениями облачных сервисов. В статье разбираются основные переходные этапы на этом пути, а также приводятся примеры передовых решений, реализованных крупнейшими платформами интернета.
Читать дальше →
Total votes 33: ↑32 and ↓1+42
Comments29

Простейший обход И-нет блокировок с обеих сторон

Reading time3 min
Views16K
C некоторых пор к задачам по обходу блокировок по IP страны добавились проблемы работы специализированного лицензионного софта. Последние не всегда решаются с помощью VPN (в переводе виртуальной частной сети [предприятия]). Кроме того, на провайдеров VPN, особенно предоставляющих бесплатный сервис, сложно полагаться в вопросах конфиденциальности. Поэтому разумно рассмотреть ручное решение с помощью удаленной виртуальной машины (VPS), которая имеет доступ в Интернет из страны её физического расположения.

Автор в свое время перебрал несколько вариантов и остановился на создании локальной сети из трех машин. Здесь будет изложен наипростейший вариант решения наглядным способом. Нужно собрать и сконфигурить локальную сеть в простейшей конфигурации, например, такую:
         +-----------+              +-------------+      +-----------------+
И-нет <->| VPS(Linux)|<-ssh tунель->| Mocт(Linux) |<-ЛС->| клиент(Windows) |
         +-----------+              +-------------+      +-----------------+
Читать дальше →
Total votes 13: ↑4 and ↓9-3
Comments20

Как живется в США «неайтишникам». Два года спустя

Reading time11 min
Views169K

Два года назад я написал на хабре статью Как живется в США «неайтишникам», которая собрала 194 000 просмотров, 561 комментарий и вошла в список лучших статей 2020 года. И вот, два года спустя я решил пробежаться по тем же тезисам, чтобы провести некий срез, как изменилась обстановка в США и мое место в ней, особенно в свете последних событий.

Про жизнь, траты, поиск и смены работы и перспективы. Мне 38, я по образованию биотехнолог, семья — два человека, английский язык — так себе. Живу в Северной Каролине почти два года. Обещаю без политики и максимально объективно.

Читать далее
Total votes 600: ↑539 and ↓61+587
Comments1315

Начинающие программисты боятся темноты

Reading time7 min
Views99K

Не могу больше. Это не моё. Я не тяну. Всю ночь не спал, ворочался, вставал, курил, читал, пытался смотреть телевизор, снова ложился… Ненавижу.

Всех, кто пишет эти радужные истории «войти в айти». Тех, кому я заплатил за курсы по программированию. «Друзей» и «советчиков», которые сказали: смело бросай свою старую, нелюбимую работу, и иди в программисты. Если бы вы только знали, о чём говорите…

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

Я один в темноте.

Читать далее
Total votes 179: ↑148 and ↓31+150
Comments301

Flutter: Создание расширения для Chrome

Reading time6 min
Views5.2K

Как создать расширение для браузера? Создание расширения для Google Chrome.

Сложность: Опытный

Всем привет. Месяц назад, пока бороздил просторы интернета, понял, что у меня есть проблема, я хотел проверить текущую цену Биткойна, но каждый раз заходить на сайт валюты мне было тяжело. Итак, я решил сделать расширение для Google Chrome с помощью Flutter. И хочу рассказать как я это сделал.

Расширение будет достаточно простым, будет лишь функционал проверки состояния Биткойна. Вам не понадобится дополнительная установка каких-либо плагинов. Мы напишем его с помощью встроенных средств web.

Читать далее
Total votes 7: ↑6 and ↓1+6
Comments6

Куда податься IT-специалисту: три страны для релокации

Reading time12 min
Views53K
Пожалуй впервые в новейшей истории, страна столкнулась с столь массовым оттоком IT-специалистов из страны. Причин много: часть сотрудников вывезла компании из-за трудностей с оплатой, другие выехали сами, так как работали на зарубежные компании и больше не могли получать оплату на российские счета, есть и те, кто уехал из страны по идеологическим причинам. Чаще всего россияне уезжают в страны ближнего зарубежья: Грузию, Армению и Казахстан. Мы поговорили с уехавшими о том, как в этих странах обстоят дела с айтишечкой, легко ли там обосноваться и есть ли место русофобии.


Приятного чтения!
Total votes 31: ↑23 and ↓8+20
Comments56

Information

Rating
2,591-st
Registered
Activity