Pull to refresh
0
@lihhanaread⁠-⁠only

User

Send message

Любимая задачка на знание React

Level of difficultyEasy
Reading time3 min
Views27K

Всем привет! Меня зовут Олег и я fullstack-программист в компании Тензор. Опыт в разработке, без малого, 20 лет (как-то раз батя спаял на кухне ZX Spectrum и все заверте..., сам не понял как так вышло). В данный момент являюсь тимлидом собственной команды разработчиков, которая периодически нуждается в пополнении толковыми программистами.

Как и многие руководители, я активно принимаю участие в подборе сотрудников для себя и помогаю на собесах коллегам соседних отделов.

Наша команда занимается разработкой веб-приложения на React. Соответственно, мне важно найти программистов уверенно владеющих основами (!) этого фреймворка. Есть много способов проверки компетенций на собеседовании, один из любимых - задача по написанию hook для загрузки данных.

Если вы тоже в вечном поиске классных фронтендеров или сами часто проходите собесы - велком в эту статью :)

Итак, задачка...

О функциональном программировании на примере решения судоку

Level of difficultyMedium
Reading time10 min
Views8.1K

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

Читать

Алгоритм minimax в шахматах

Level of difficultyMedium
Reading time6 min
Views11K

Привет, Хабр!

Сейчас, когда вы слышите про ИИ в шахматах, наверняка первое, что приходит в голову – это AlphaZero, который "научился" играть в шахматы, превзойдя чемпионов мира, не имея никакого предварительного знания об игре. Но позвольте, это же только верхушка айсберга!

Не будем тратить время на объяснение того, как двигаются фигуры – это вы и так знаете. В сегодняшней статьи мы разберем алогоритм Minimax.

Читать далее

15 отличных подкастов про стартапы и развитие ИТ-проектов на русском языке

Reading time9 min
Views11K

Лайфхаки, живой опыт и ошибки, скрытые возможности на разных рынках, а еще новые идеи для развития своего продукта – все это вы найдете в свежих подкастах из подборки.  

Читать далее

Foundational models: приведет ли масштабирование к AGI

Level of difficultyMedium
Reading time2 min
Views3.9K

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

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

Читать далее

11lc — инновационный компилятор для нового языка программирования

Reading time23 min
Views18K
Данная статья посвящена находящемуся на стадии проектирования компилятору 11lc. В ней перечисляются наиболее яркие особенности этого компилятора.

Отсутствие скрытой неэффективности


Это свойство скорее языка программирования 11l, нежели компилятора. Однако оно настолько важно и настолько отличает язык 11l от C++, D или даже Nim, что я решил разобрать его подробно в данной статье.

Уолтер Брайт, создатель языка D, писал:
Templates in C++ have evolved from little more than token substitution into a programming language in itself. Many useful aspects of C++ templates have been discovered rather than designed.

Так вот, как я считаю, нечто похожее произошло и с семантикой перемещения (move semantics). И в C++ и в D она появилась достаточно поздно, и если бы эти языки проектировались с опорой на семантику перемещения изначально, то в них было бы гораздо меньше скрытой неэффективности (hidden inefficiency). О чём идёт речь? Рассмотрю это на примере C++.
Читать дальше →

Путеводитель по DDoS: основные виды и методы борьбы

Level of difficultyMedium
Reading time10 min
Views6.1K

Всем привет! На связи Николай Едомский, руководитель группы сетевых инженеров в ЕДИНОМ ЦУПИС.

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

Читать далее

Jenkins Pipeline для АТ

Level of difficultyEasy
Reading time10 min
Views9.5K

В данной статье хочу поделиться содержанием pipeline.jenkinsfile с минимальной необходимостью для организации автоматизированного тестирования. Установку, настройку самого Jenkins мы рассматривать не будем, только pipeline и его содержание для АТ.

Читать далее

Кодогенерация и парсинг TypeScript с помощью typescript

Level of difficultyEasy
Reading time8 min
Views7.4K

Одной из интересных возможностей пакета typescript является то, что он содержит API для генерации TypeScript-кода, а также парсер для работы с написанным на TypeScript кодом. Кодогенерация часто используется для автоматического создания типов для работы с http api (типизация тела запроса, ответа, query параметров и тд.). В npm есть модули, генерирующие сервисы для работы с api на основе openapi, graphQl схем и тому подобное, и обычно возможностей существующих модулей хватает для решения большей части задач.

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

Читать далее

Аутентификация в Kubernetes через Gitlab'овские JWT токены

Reading time5 min
Views5.3K

Представим ситуацию, что мы деплоим по push-модели. В качестве платформы для запуска деплоя у нас используется Gitlab: в нём настроен пайплайн и джобы, разворачивающие приложения в разные окружения в Kubernetes

Какой бы инструмент мы не использовали (kubectl, helm), для манипуляций с ресурсами API нам в любом случае будет необходимо аутентифицироваться при выполнении запросов к Kubernetes. Для этого в запросе надо передать данные для аутентификации, будь то токен или сертификат. И тут возникает несколько вопросов:

1. Где хранить эти креды?

Хранить креды от кластера можно, например, в Gitlab CI/CD Variables и подставлять в джобу деплоя, но тогда потенциально все пользователи будут деплоить с одними и теми же доступами

2. Как сделать так, чтобы у каждого пользователя были свои данные для доступа в кластер?

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

А что если сделать так, чтобы в качестве провайдера аутентификационных данных для Kubernetes выступал сам Gitlab? Тогда не надо было бы нигде хранить креды, и каждый пользователь мог бы аутентифицироваться в кубере под своей учёткой при запуске деплоя

Читать далее

Kotlin — язык программирования: для чего используется, плюсы и минусы

Level of difficultyEasy
Reading time6 min
Views34K

Узнайте больше о языке программирования Котлин. Я расскажу, где применяется Kotlin и почему он оптимален для приложений на Android. Подробнее в блоге CREAZARD.

Приветствую! Меня зовут Громова Алена и я основатель компании мобильной разработки. Этот материал в своем блоге решила посвятить языку Kotlin, как одному из “ходовых” языков программирования, с которыми давно работает моя команда.

Читать далее

NativeScript в мире кроссплатформенной разработки

Level of difficultyMedium
Reading time7 min
Views6.3K

Давайте знакомиться! Меня зовут Игорь. Я разработчик кроссплатформенных мобильных приложений в компании Smartex. В этой статье я расскажу о NativeScript, основных преимуществах платформы и ее недостатках.

Материал будет полезен не только разработчикам, которые уже пишут приложения на React Native, Ionic, Framework7, а также тем, кто собирается погрузиться в разработку кроссплатформенных мобильных приложений на JavaScript.

Погнали!

Свой путь в кроссплатформенную разработку я начал за пределами Smartex, с Cordova + Framework7.

Framework7 это как и Ionic просто UI-библиотека для создания интерфейса которая в последующим просто отрисовывается через WebView. Само приложение (общение с API платформы) создается на платформе Cordova или Capacitor, как раз они и создают экран с WebView и транслирует туда HTML.

Framework7 прекрасно работает с Vue, но по ряду причин он начал меня подбешивать. Я хотел найти инструмент именно для нативной разработки, а не на технологии основанной на WebView. Стал смотреть в сторону Angular, и какие вообще есть на рынке технологии для разработки нативных кроссплатформенных приложений с Angular под капотом. Так я и познакомился с NativeScript.

Читать далее

Oxlint — более быстрая альтернатива ESLint

Level of difficultyEasy
Reading time4 min
Views12K

Друзья, всем привет! Меня зовут Игорь Карелин, я frontend-разработчик в компании Домклик. Недавно стал общедоступен новый линтер «Oxlint», основанный на языке программирования Rust, и многие эксперты высоко оценили его. Какие преимущества Oxlint предоставляет по сравнению со своим предшественником ESLint?

Читать далее

PWA vs Native: чек-лист, который поможет выбрать

Level of difficultyEasy
Reading time5 min
Views8K

Привет! Меня зовут Никита Грибков, я работаю Flutter-разработчиком в AGIMA. Мы с командой часто консультируем заказчиков о том, какой тип приложения им выбрать: нативное, кросс-платформенное или PWA. Я решил упростить себе работу и написать об этом статью. Но поскольку о разнице между кросс-платформой и нативом мы уже писали, сосредоточусь на разнице между нативом и PWA.

Читать далее

Зачем Тинькофф Путешествиям офлайн-режим

Reading time7 min
Views3.4K

Всем привет! Я — Катя из Тинькофф Путешествий. Хочу рассказать, как у нас в Тинькофф Путешествиях появился офлайн-режим с классной игрой, в которой нужно управлять самолетом с помощью акселерометра устройства и собирать монетки.

Сейчас в Тинькофф есть красивая заглушка на случай, когда у пользователя пропадает интернет-соединение. Попадая на нее, пользователь с большой вероятностью попробует обновить страницу. Если это не поможет, то он может перейти на другие сайты/к конкурентам. То есть имеется большая доля вероятности, что можно потерять потенциального клиента. И тут мы задумались, а как можно исправить эту ситуацию и что можно придумать для пользователя.

Самым известным примером офлайн режима можно назвать игру с динозавриком в браузере Chrome.

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

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

Читать далее

CancellationTokenSource и «утечки памяти»

Reading time10 min
Views12K

Всем привет!

Я работаю в Тинькофф, в проекте «Тинькофф Телефония». Наша основная задача — организация IP-телефонии внутри компании и за ее пределами. В день через нас проходит несколько миллионов звонков. Всей этой кухней занимаются около 10 сервисов. 

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

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

В один прекрасный день терпение лопнуло, и мы с Женей Мишустиным и Кириллом Марковым накинулись на эту проблему: Женя с Кириллом ловили и анализировали дампы, а я занимался поиском причин такого поведения.

В этой статье хочу рассказать о том, какой интересный подводный камень таит в себе CancellationTokenSource и как это связано с нашими «утечками» памяти.

Читать далее

Обезболиваем RegEx

Reading time5 min
Views11K

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

Можно ли вообще не использовать регулярные выражения? А в каких случаях нельзя? Что делать, если использовать все-таки приходится? Предлагаю разобраться с этим. Определим ситуации, когда регулярные выражения можно не использовать, когда нужно использовать и как сделать так, чтобы не было мучительно больно к ним возвращаться.

Читать далее

Компоненты-конструкторы: мощь ng-content в Angular

Reading time9 min
Views18K

Проекция контента — одна из базовых возможностей Angular, о которой слышали почти все. А с недавних пор по ней появилась и хорошая официальная документация. Тем не менее в реальных задачах разработчики часто обходят ng-content стороной, прибегая к более сложным и перегруженным решениям и усложняя дальнейшее использование и поддержку компонента.

В этой статье я хотел бы показать несколько типовых кейсов для ng-content при разработке многократно используемых компонентов. А еще — рассказать о преимуществах, которые они могут нам дать.

Давайте посмотрим

Как гореть не выгорая, или 10 лайфхаков, помогающих структурировать рабочий процесс и не ощущать себя в горящем танке

Reading time9 min
Views20K

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

Читать далее

Information

Rating
Does not participate
Registered
Activity