В 2022 году в публичный доступ вышел GitHub Copilot – довольно удобный современный инструмент для разработчиков. В этой короткой статье поделюсь своим опытом взаимодействия с GitHub Copilot, а главное тем, как его использовать в IDE от JetBrains. Приятного чтения!
Frontend
Сколько можно не заработать на шаурме?
В 2018-м я с партнером открыл свою точку шаурмы. Сейчас у нас 3 шаурмячные.
Я слышал в интернете, что бизнес на шаверме это низкий порог входа, быстрая окупаемость и востребованный продукт. Поэтому решил рассказать, как обстоят дела в этом бизнесе на самом деле.
ДИСКЛЕЙМЕР: Статья написана на основе интервью с сооснователем точек шаурмы Кебаб МД Андреем Бычковым, г. Москва.
Интерпретатор Brainfuck на Brainfuck
Когда-то давно, году в 2013-м, на глаза мне попался следующий код:
>>>+[[-]>>[-]++>+>+++++++[<++++>>++<-]++>>+>+>+++++[>++>++++
++<<-]+>>>,<++[[>[->>]<[>>]<<-]<[<]<+>>[>]>[<+>-[[<+>-]>]<[[
[-]<]++<-[<+++++++++>[<->-]>>]>>]]<<]<]<[[<]>[[>]>>[>>]+[<<]
<[<]<+>>-]>[>]+[->>]<<<<[[<<]<[<]+<<[+>+<<-[>-->+<<-[>+<[>>+
<<-]]]>[<+>-]<]++>>-->[>]>>[>>]]<<[>>+<[[<]<]>[[<<]<[<]+[-<+
>>-[<<+>++>-[<->[<<+>>-]]]<[>+<-]>]>[>]>]>[>>]>>]<<[>>+>>+>>
]<<[->>>>>>>>]<<[>.>>>>>>>]<<[>->>>>>]<<[>,>>>]<<[>+>]<<[+<<
]<]
Это интерпретатор языка Brainfuck, написанный на самом Brainfuck. Ссылки на оригинал у меня не осталось, только код, так что автора я назвать не смогу.
Мне всегда было безумно интересно узнать, как он работает. И теперь я решил наконец-то это сделать!
Шпаргалка для алгособеса — алгоритмическая сложность, структуры данных, методы сортировки и Дейкстра
Привет, Хабр!
Так уж повелось, что любой уважающий себя работодатель перенимает передовые методики FAANG — по этой причине практически во всех IT-собесах есть она: секция алгоритмов. Кто-то ей рад, кто-то не очень, но секция есть и уходить пока не планирует. Поэтому нужно закатать рукава и достойно встретить суровую реальность.
Сказ о том, как я за год решил более 600 leetcode задач
Всем салют!
Хочу рассказать вам историю о том, как я начинал с уровня — «не могу решить даже 1 easy задачу из 10» до уровня — «могу решить каждую вторую medium задачу» и прошел несколько coding сессий в таких компаниях как Meta, Booking, Careem, Avito...
Когда старый софт лучше нового
У каждого из нас наверняка есть подборка старого проверенного софта, который много лет работает без сбоев. В такой ситуации возникает вопрос: а зачем его обновлять?
Практика показывает, что новые версии утилит часто изменяются к худшему, раздуваются, обрастают ненужными функциями, начинают тормозить или вовсе перестают запускаться. Ухудшение программного продукта со временем — известный процесс, для которого есть специальный термин: дерьмофикация (enshittification, слово придумал Кори Доктороу). Она происходит не только с десктопным или мобильным софтом, но и с платформами. Все мы за последние годы наблюдали дерьмофикацию Google, Reddit, Amazon, Twitter и Facebook (два последних вообще признаны экстремистами и запрещены в РФ). Аналогично с десктопным софтом и мобильными приложениями.
В то же время старый софт многолетней давности фантастически быстро работает. Программы в несколько мегабайт, которые запускаются мгновенно, потребляют минимум памяти и просто летают. По сути, ресурсы современных CPU для них избыточны. Пользоваться такими инструментами одно удовольствие. Такое чувство, что работаешь на суперкомпьютере, а не обычном ПК.
Вкатываемся в Machine Learning с нуля за ноль рублей: что, где, в какой последовательности изучить
Всем доброго времени суток. Я давно обещала выложить сюда подробный гайд на тему того, как можно изучать Machine Learning самостоятельно, не тратя деньги на платные курсы, и, наконец, выполняю свое обещание. Надеюсь, этот гайд станет подсказкой, которая поможет найти правильное направление новичкам, которые хотят погрузиться в нашу область.
Создание приложения для real-time обмена геоданными с React, Socket.io и Leaflet
Есть много руководств о том, как сделать приложение для общения в реальном времени на React и Socket.io. Создание таких приложений в том числе полезно для самообучения. Но мне захотелось чего-то более творческого. Пришла идея сделать приложение, где можно делиться местоположением.
VimPorn
На reddit большое комьюнити, которое посвящено vim: neovim, vim, vimplugins, vimporn. И чтобы не пропускать какие-то интересные вещи, которые случаются в мире vim, я накидал bash-скрипт. Скрипт выводит топ-5 лучших постов за год по каждому сабредиту. В статье будет сам скрипт, а также я своими словами расскажу о каждом посте, который попал в топ.
Anki — настолько круто, что я даже представить не мог
Если вдруг кто не знает, Anki - это бесплатная opensource программа для запоминания слов (и не только). Есть версии под декстоп и мобилы. Она довольно популярна при этом имеет интуитивно-НЕпонятный интерфейс. Мне понадобилось много лет, чтобы понять, насколько она крута, т.к. базовые статьи и туториалы этого не описывают. А многие люди используют ее даже не понимая ее возможностей.
Впервые про Anki я услышал много лет назад. Может быть 10 или больше, точно сказать сложно. Прочитал здесь на Хабре, что есть такая крутая штука как интервальное повторение, и что Anki как раз такая программа, которая использует этот механизм. Помню что в статье рассказывалось только про версию под декстоп.
Проблема код-ревью: ESLint — больше, чем просто «extend»
На код-ревью зачастую тратят слишком много времени и энергии. Перфекционизм часто заставляет размениваться на мелочи вместо сути, а холивары разрушают команды. Хотя есть специальные инструменты, задача которых автоматизировать процесс и убрать лишние споры, это часто не работает. Ведь всё взаимодействие с ESLint сводится к extend’у от популярных конфигурации типа airbnb. Проблема в том, что эти конфигурации не покрывают даже малую часть того, что на самом деле может ESLint.
Чтобы исправить ситуацию, нужно собрать мощный, оптимизированный, а главное, реюзабельный ESLint.
Это статья написана на основе доклада Дениса Красновского для FronendConf 2022. Денис, руководитель направления разработки и фронтэнд-лид в компании Домклик.
Снятие с воинского учета. Дистанционно. Пакет документов
По состоянию на лето 2023, в военных комиссариатах разных регионов и даже районов одного города требования к пакету документов отличаются, запись через Госуслуги может не гарантировать прием, а без личного присутствия заявителя могут вообще не захотеть общаться. Информация ниже не является полным гайдом по снятию с учета, это шаблоны документов + рекомендации из практики.
Если вкратце, то рабочий кейс, это когда: (А) имеется основание для снятия: уже живете зарубежом полгода, либо имеется иностранный ВНЖ, (B) грамотно составлено заявление на снятие с учета и подписано вашей подписью, (C) в военкомат идет ваш представитель по доверенности, которая оформлена у российского нотариуса или в зарубежном консульстве РФ.
Ниже пояснения и документы. Делайте все красиво, грамотно, и тогда результат будет 👍
Миллион одновременных соединений на Node.js
TL;DR:
- Node.js v0.8 позволяет обрабатывать 1 млн одновременных HTTP Comet соединений на Intel Core i7 Quad/16 Gb RAM практически без дополнительных настроек.
- На 1 соединение тратится чуть больше 10 Kb памяти (4.1 Kb Javascript Heap + 2.2 Kb Node.js Native + 3.8 Kb Kernel)..
- V8 Garbage Collector не рассчитан на управление > ~500Mb памяти. При превышении нужно переходить на альтернативный режим сборки мусора, иначе «отзывчивость» сервера сильно уменьшается.
- Подобный опыт можно (и нужно!) без особых затрат повторить самому (см. под катом).
Знай сложности алгоритмов
localStorage для авторизации
localStorage для авторизации в React приложении.
Алгоритмы балансировки нагрузок
Рано или поздно веб-приложения перерастают среду одного сервера. Компаниям требуется увеличить или их доступность, или масштабируемость, или и то, и другое. Чтобы сделать это, они развёртывают своё приложение на нескольких серверах и ставят перед ним балансировщик нагрузок для распределения входящих запросов. Чтобы справляться с нагрузками, большим компаниям могут потребоваться тысячи серверов, на которых запущено веб-приложение.
В этом посте мы рассмотрим способы, которыми один балансировщик нагрузок может распределять HTTP-запросы на множество серверов. Мы начнём снизу и проделаем весь путь вверх до современных алгоритмов балансировки нагрузок.
Пол — это лава: разработка прототипа интерактивной светодиодной игровой платформы
Дурная голова рукам покоя не даёт… история началась несколько месяцев назад: я увидел в интернете забавное видео игры в комнате с пиксельным светодиодным полом и решил сделать подобное для своих детей. За эти месяцы я получил массу удовольствия от процесса разработки и даже заразился идеей масштабирования проекта, но обо всём по порядку! Внимание, ниже будет много фото! А в конце статьи есть видео работы.
JavaScript: два интересных сниппета
Hello, world!
В этой небольшой заметке я хочу поделиться с вами двумя сниппетами, которые показались мне очень интересными. Первый сниппет представляет собой пример реализации простой реактивности (signal), второй — способ предотвращения несогласованности данных в результате состояния гонки (race condition). Первая конструкция используется в SolidJS (с некоторыми дополнительными оптимизациями), вторая — заимствована из одного рабочего проекта.
Интересно? Тогда прошу под кат.
Как мы разрабатывали браузерную игру: взгляд со стороны frontend-архитектора
Многие компании сегодня всячески пытаются мотивировать и удерживать своих сотрудников. Поэтому все чаще мы слышим о геймификации как о процессе, который позволяет значительно улучшить показатели вовлеченности, повысить продажи, заинтересовать и превратить ежедневную рутину в увлекательный игровой процесс. Мы в SimbirSoft приняли участие в разработке такого игрового приложения.
Я Антон, руководитель Архитектурного комитета SimbirSoft, и в этой статье я расскажу о полученном опыте с точки зрения технологических особенностей реализации frontend-части. Рассмотрим большое количество нестандартных элементов игрового интерфейса и общие требования и ограничения к frontеnd-части приложения (архитектура, model, service, store и т.д.). Поделюсь, как реализовали:
— набор визуальных элементов приложения;
— элементы пагинации;
— сложный компонент на примере кнопки;
— составной компонент на примере g-card-list;
— анимацию.
Улучшаем производительность сайта с помощью CSS
Всем привет, я Кирилл, frontend разработчик компании Usetech. Сегодня я бы хотел поговорить о том, как можно улучшить производительность сайта с помощью обычных CSS свойств и на что стоит обращать внимание. Но прежде чем приступим к улучшению производительности сайта, давайте поговорим о том, какие проблемы возникают с CSS:
Information
- Rating
- Does not participate
- Location
- Россия
- Registered
- Activity