Как стать автором
Обновить
-1
0.1

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

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

Чистый код: Начало

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров7.6K

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

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

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

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

Transact SQL для анализа данных

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

Язык Transact SQL является процедурным расширением языка SQL и используется в СУБД Microsoft SQL Server. В этой статье мы рассмотрим использование некоторых элементов T-SQL для анализа данных. Сначала мы рассмотрим оконные функции, а затем поговорим о методах сводки (pivoting) данных и его отмены. При сводки данные преобразуются из состояния строк в столбцы, а при отмене обработки данные преобразуются из столбцов в строки, аналогично Excel.

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

Абсолютно все способы обхода блокировки Ютуб

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров125K

В связи с этим решил собрать в 1 статью абсолютно все доступные способы ускорения YouTube, начиная от GoodByeDPI и подробными мануалами для Smart TV, Android и настройкой своего личного сервера

Читать далее
Всего голосов 67: ↑31 и ↓36+3
Комментарии62

Resume и CV: в чём разница и как откликнуться на иностранную вакансию

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров12K

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

Методисты курсов по английскому в Практикуме объяснили разницу между CV и resume — в США, Европе и Великобритании эти слова означают разные вещи. А ещё поделились общим алгоритмом составления «резюме» и посоветовали, как грамотно заполнить все разделы.

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

Дата-Сторителлинг: для Бизнеса и СМИ

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров1.2K

В сфере визуализации данных есть понятие «Дата-Сторителлинг». Буквально оно означает – рассказывание историй на основе данных.

Но дальше оно разделяется на два схожих, но при этом разных направления, назовем их: Дата-журналистика и Дата-презнетация.

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

Задачка, которая сломала 5 датавиз-инструментов

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров3.5K

Дан набор данных, в нем — информация об отделе, эффективности, длительности работы, количестве отгулов, о рабочих часах нескольких сотрудников. 

Чтобы увидеть проблемы с эффективностью нам нужно показать взаимосвязь между двумя числовыми переменными. Легко! Скаттерплот (он же график рассеяния) нам решит эту задачку на раз-два.

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

Читать далее
Всего голосов 14: ↑13 и ↓1+15
Комментарии21

Создание конфигурируемого Webhook-модуля для NestJS-приложении

Время на прочтение93 мин
Количество просмотров992

В рамках этой статьи я опишу создание двух NestJS-модулей с различным способом конфигурирования: утилитарный модуль и бизнес-модуль со своей базой данных.

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

Делегаты и делегированные свойства в Kotlin

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров2.3K

Привет, Хабр! Меня зовут Артем и я автор и ведущий YouTube канала Android Insights

Сегодня мы погрузимся в мир делегатов и делегированных свойств в Kotlin. Эта тема может показаться сложной на первый взгляд, но я постараюсь объяснить её максимально понятно и подробно. Итак, приступим!

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

Место Duolingo в моей жизни

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

У меня всегда был пристойный уровень разговорного английского языка, особенно во времена, когда я работал в сырьевой сфере. Достаточный, для того, чтобы читать Financial Times за завтраком в роскошном, Four Seasons в Лондоне, и удивляться, что понимаешь общий смысл статьи. А сейчас, о дорогих отелях и путешествиях в Великобританию можно только вспоминать, смахивая скупую мужскую слезу. Всё это в прошлом, как и мой английский.

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

А вот с написанием текстов и перепиской начались проблемы. Когда я пишу, у меня возникают сомнения в том, что я правильно построил предложение. И я лезу в Google проверять это, что занимает время и раздражает. Таким образом, обладая значительным словарным запасом, я не уверен, что мои предложения построены правильно. К счастью, мне не нужно подтверждать уровень языка сертификатами для каких‑либо целей.

Пару лет назад, мне захотелось как‑то это починить и могу с уверенностью сказать, что всё получилось. Сейчас мне вполне комфортно смотреть специализированные YouTube‑ролики на английском и делать заметки в Obsidian. Именно так мне нравится учиться и накапливать знания по всему многообразию интересов, на которые указывает необходимость и любопытство.

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

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

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров4.1K

Самое главное, что никакого отношения к слову алко это не имеет.
В течении нескольких лет я торговал в связке программы технического анализа AmiBroker + торговый терминал QUIK через .tri и .trr файлы в основном на фьючерсах на срочном рынке.
Не могу сказать что это было неудачным опытом, но со временем я узнал про распределение активов (Asset allocation) и понял что очень сложно соревноваться с бенчмарком в виде фондового индекса.

В теории это означает что можно купить индекс и забыть об этом, заниматься своими делами, бизнесом, семьёй - а индекс растёт (ну или падает, смотря какое время) и для этого не нужно прикладывать никаких действий.
А за связкой AmiBroker + QUIK постоянно нужно было присматривать, следить не отвалился ли адаптер импорта через .tri файл. А ещё иметь несколько виртуальных машин с установленными копиями Windows на каждой виртуалке на одном физическом компьютере для разных брокеров. Ведь возможна была установка только одной пары AmiBroker + QUIK на одну винду.
Всё это мне не особо нравилось.

В 2024 году захотелось что-то лёгкое - без Windows и современное - через API интерфейс. Желательно бесплатное для пользователя. Несколько лет назад я уже пытался узнать появились ли у российских брокеров API для работы с ними, но так и не собрался. Этой осенью я стал активно искать информацию - какой брокер имеет АПИ для работы с физлицами. Не смог найти никакой сводной таблицы и нашёл только три варианта:

📍 ФИНАМ
📍 Алор
📍 Тинькофф Инвестиции
📍 (на полноту сведений не претендую и буду рад узнать ещё варианты брокеров с АПИ)

По субъективным причинам я выбрать работать с T‑Bank Invest API (это бывший Тинькофф) через среду выполнения JavaScript Node.JS.

В статье ссылка на GitHub с кодом робота.

Самые первые шаги 🤖
Всего голосов 13: ↑9 и ↓4+13
Комментарии32

Создание AI-ассистента с OpenAI Assistants API на Go

Уровень сложностиПростой
Время на прочтение18 мин
Количество просмотров2.1K

Всем привет!

Недавно возникла необходимость создать AI-ассистента, обученного искать и выдавать информацию из базы знаний, предоставленных заказчиком.

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

Для создания ассистента будем использовать функциональность OpenAI Assistants API с помощью сторонних прокси-сервисов.

Все это напишем на Go, а код, готовый к запуску и компиляции, будет доступен в конце статьи.

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

К статье
Всего голосов 9: ↑9 и ↓0+11
Комментарии14

Как перехватывают зашифрованный HTTP-трафик на мобильном устройстве

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


Реверс-инжиниринг VPN-сервиса Onavo Protect под Android позволил определить методы, которые можно использовать для перехвата зашифрованного HTTPS-трафика на мобильном устройстве. Если вкратце, злоумышленник должен поставить на телефон собственное приложение и сертификат УЦ (удостоверяющего центра).

Например, в РФ вступил в действие закон, который требует с 2025 года обязательной предустановки на все смартфоны конкретных приложений. Теоретически, при наличии уязвимостей это может угрожать безопасности многих пользователей.
Читать дальше →
Всего голосов 16: ↑10 и ↓6+10
Комментарии3

Транзакции в БД на Go с использованием многослойной архитектуры

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров6.7K

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

Однажды, я столкнулся с инцидентом на проде и обратился за помощью к самому опытному инженеру. Он пришел на помощь и с легкостью изменил значение в БД с помощью... ручного обновления. 🤯 Проблема заключалась в том, что набор SQL-обновлений не был выполнен внутри транзакции.

Работа в новой компании — это всегда увлекательно. Я осознал, что даже если какой-то аспект кажется простым, например, SQL-транзакции, его легко упустить из виду.

SQL кажется чем-то, что мы все хорошо знаем, и мало чем может удивить. (Ему уже 50 лет!) Возможно, пришло время пересмотреть подходы, так как мы уже прошли фазу хайпа по поводу NoSQL, и снова возвращаемся к “используйте просто Postgres”, а иногда и к “SQLite тут за глаза”.

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

Основной принцип многослойной архитектуры заключается в разделении критически важных частей кода (логики) от деталей реализации (например, SQL-запросов). Одним из способов достижения такого разделения является паттерн «Репозиторий». Однако, наиболее сложным аспектом такой архитектуры является обработка транзакций.

Читать далее
Всего голосов 14: ↑13 и ↓1+15
Комментарии10

Самые быстрые мьютексы

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров7.4K

Cosmopolitan Libc хорошо известна своим «полиглотным жирным бинарным» хаком, который позволяем исполняемым файлам запускаться на шести операционных системах для AMD64/ARM64. Вас может удивить, что при этом она может быть лучше С‑библиотекой для вашего продакшена. Чтобы продемонстрировать это, давайте сравним библиотеку мьютексов Cosmo с другими платформами.

Мы напишем простой тест, который создает 30 потоков, увеличивающих одно и то же число 100 000 раз. Это поможет проверить, насколько хорошо реализация мьютексов справляется с задачей при интенсивном использовании.

Читать далее
Всего голосов 25: ↑23 и ↓2+27
Комментарии7

Cordova. Quick start

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

Не так давно мне пришлось открыть для себя новую страницу IT - разработку мобильных приложений под Android с использованием платформы Cordova. Полученный опыт я хотел бы изложить в формате, который идеально упростил бы мне вхождение в эту платформу, попадись он мне на тот момент.

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

Markdown Editor: WYSIWYG и markup-редактор на базе Gravity UI

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров11K

Привет, Хабр! Меня зовут Сергей Махнаткин, я работаю разработчиком в отделе User Experience в Yandex Cloud. В прошлом году мы писали о нашей дизайн-системе и библиотеке компонентов Gravity UI. С тех пор система не раз обновлялась и обрастала новыми функциями, и сегодня я хочу рассказать о новом инструменте — Markdown Editor, который значительно упрощает процесс работы с документацией.

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

Читать далее
Всего голосов 44: ↑43 и ↓1+61
Комментарии22

Что было, что стало: Путешествие в мир 3D-редактора на Three.js

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров2.9K

Привет, друзья!
Сегодня я хочу поделиться с вами важной новостью: проект HyperCube Dream подходит к концу своей активной разработки, и я рад представить последнее обновление этого увлекательного инструмента для создания и анимации 3D фигур в браузере. Однако есть и хорошая новость — проект будет доступен в открытом исходном коде! Это значит, что каждый сможет использовать, модифицировать и развивать его, как пожелает.

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

Погрузиться в мир 3D
Всего голосов 8: ↑4 и ↓40
Комментарии9

Точки соприкосновения: Java & GC

Уровень сложностиСложный
Время на прочтение24 мин
Количество просмотров5.8K

Можно писать на Java, вообще не задумываясь, как работает сборка мусора: «ну оно же там само собой происходит как-то». Однако разобраться как следует — не только интересно, но и полезно: например, какой из подходов к GC лучше соответствует конкретно вашему проекту?

На нашей конференции JPoint 2024 был доклад Дмитрия Силина об этом, участникам он понравился, и мы решили сделать для Хабра текстовую версию. Публикуем и текст, и видеозапись.

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

Подсчет уникальных значений поля в ClickHouse

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

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

Одной из таких задач является приближенный расчет количества уникальных значений в поле таблицы (или кардинальности). Казалось бы, практическая польза от быстрого расчета количества уникальных значений поля без больших затрат памяти невелика, однако это позволяет, например, построить оптимальный с точки зрения производительности SQL запрос с этим полем, или использовать это поле в UI (например, элемент с бесконечной прокруткой или элемент с поиском при значительном количестве уникальных значений, а не отображение конечного списка) и т.д. Задача может быть эффективно решена в СУБД, обладающей соответствующими инструментами, поэтому будет рассмотрен ClickHouse.

Интересно решение задачи расчета количества уникальных значений столбца в ClickHouse? Добро пожаловать :)

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

Шаблоны проектирования для баз данных

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

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

СУБД является неотъемлемой частью хоть сколько‑нибудь серьезного современного приложения. Соответственно, при проектировании приложения может возникнуть вопрос, как лучше сервисам взаимодействовать с базой данных: предоставляя общий доступ к одной базе или же у каждого микросервиса должна быть своя база данных. Мы рассмотрим два шаблона, предназначенных для решения данной задачи — это Shared database и Database per Microservice. Начнем с Shared database.

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

Информация

В рейтинге
4 171-й
Зарегистрирован
Активность