Обновить
256K+

JavaScript *

Прототипно-ориентированный язык программирования

268,26
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

5 полезных плагинов для webpack

Время на прочтение5 мин
Охват и читатели23K
Привет, Хабр!

У webpack'а есть много полезных плагинов, о которых многие не знают и не используют в своих проектах. Под катом я собрал 5 таких, они могут здорово упростить вам жизнь!


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

Часто задаваемые вопросы о системах типов

Время на прочтение10 мин
Охват и читатели15K
Автор статьи, перевод которой мы сегодня публикуем, говорит, что источником вдохновения для её написания послужил этот пост и комментарии к нему. По его словам, IT-специалисты имеют неправильные представления о типах, используют некорректную терминологию и, обсуждая вопросы, связанные с типами, приходят к ошибочным выводам. Он отмечает то, что не является защитником статической системы типов. Единственное, что его беспокоит — это правильное использование терминов. Это позволяет вести конструктивные дискуссии. Автор говорит, что написал этот материал спонтанно, но надеется на то, что в нём нет ошибок. Если же он что-то и напутал — он просит дать ему об этом знать.



Давайте раз и навсегда разберёмся во всём том, что вызывает неразбериху при разговорах о системах типов.
Читать дальше →

Moscow SPA Meetup #5 — анонс встречи

Время на прочтение4 мин
Охват и читатели2.3K

Привет! Меня зовут Сергей Мелюков, я senior engineer в команде Frontend Architecture в Авито.
17 августа в нашем офисе пройдет пятый по счёту митап-сателлит Moscow.js — Moscow SPA, встреча для фронтенд-разработчиков, которым интересна тема веб-приложений (Single Page Application). Поговорим об интеграции Jest с QA-инфраструктурой, DI в качестве способа масштабирования, может ли UIKIt быть максимально гибким и подходящим для всего, росте библиотек компонентов и платформенной команде. С докладами, кроме меня, выступят эксперты из Mail.Ru, Яндекса, ВКонтакте и Тинькофф.


Встреча начнётся в 11:00. Регистрируйтесь сами и приглашайте коллег. Под катом — тезисы выступлений, ссылки на регистрацию и видеотрансляцию митапа.


О митапе

Material как WebComponents

Время на прочтение11 мин
Охват и читатели3.9K
В последнее время, как я уже отмечал в предыдущей статье, вполне себе активно ведутся разработки WebComponents оберток для популярных фреймворков позволяющий использовать их через браузерное API. Это значит, что если вы хотите использовать готовые компоненты созданные на том или ином фреймворке, то вам не обязательно разворачивать проект и собирать его. Также это значит, что вы можете использовать разработки на разных фреймворках связывая их между собой посредством взаимодействия через API браузера.

Не очень давно я пытался найти приличный грид для веб-компонент, на тот момент такового, полноценного, но при том не обязывающего использовать какой-либо фреймворк, особенно если он представляет собой что-то типа Polymer не оказалось. В недалеком прошлом у меня был до того достаточно успешный опыт с material/cdk. Тогда мне относительно легко удавалось серьезно кастомизировать фильтры и пейджер для таблицы, локализовать подсказки и все это без переписывания библиотечного кода или мрачных хуков, использовав механизмы переопределения. На момент рассмотрения оказалось, что биндингов конкретно для компонента таблицы еще не успели сделать, но вот пару недель назад я заметил, что в репозитории на эту тему что-то появилось и решил в рамках эксперимента попробовать подключить их как веб-компоненты.

Функциональное программирование: дурацкая игрушка, которая убивает производительность труда. Часть 2

Время на прочтение8 мин
Охват и читатели21K
Сегодня мы представляем вашему вниманию продолжение перевода материала о вреде так называемого «функционального» программирования.


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

На пути к долговечным приложениям на примере генератора статических сайтов ПСКОВ

Время на прочтение4 мин
Охват и читатели4K

Псковское вече


Здравствуйте, меня зовут Михаил Капелько. Занимаюсь профессиональной разработкой ПО более 10 лет, в свободное время разрабатываю игры и средства для их создания.


В этой статье я расскажу о своём первом долговечном приложении для настольных ПК — генераторе статических сайтов ПСКОВ.


Долговечность


Под долговечным приложением я понимаю такое приложение, которое работает без единого изменения на операционных системах, выпущенных в период 2010-2030 годов. Иными словами, долговечное приложение обладает 10-летней обратной совместимостью и 10-летней прочностью. Впрочем, ПСКОВ работает даже на Windows 2000, так что у него 19-летняя обратная совместимость.

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

Как я не занял первое место в конкурсе для JavaScript-разработчиков от Telegram

Время на прочтение8 мин
Охват и читатели51K
Активные пользователи Телеграма, особенно те, кто подписан на Павла Дурова, наверняка что-то слышали о том, что Телеграм проводил в этих ваших интернетах конкурс для iOS, Android и JavaScript разработчиков, а также для дизайнеров. Несмотря на то, что это было довольно эпичное событие с раздачей солидных призов (один из участников получил 50к долларов за первое место, написав самое быстрое и лёгкое приложение для Android), о нём как-то слабо писали, во всяком случае в Рунете. Своим дебютным постом попробую исправить ситуацию.

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

Приключения неуловимой малвари: многосторонняя оборона (заключительные мысли)

Время на прочтение3 мин
Охват и читатели3.5K


Эта статья является частью серии «Fileless Malware». Все остальные части серии:


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

Функциональное программирование: дурацкая игрушка, которая убивает производительность труда. Часть 1

Время на прочтение10 мин
Охват и читатели88K
Возможно, вы уже слышали о так называемом «функциональном» программировании. Возможно, вы даже подумываете о том, что вам стоит его как-нибудь попробовать.

Ни в коем случае этого не делайте!



Функциональное программирование полно недочётов, оно не подходит для реальных проектов. Его применение приведёт к резкому падению производительности труда. Почему это так? Давайте выясним.

▍→ Часть 2
Читать дальше →

Дайджест свежих материалов из мира фронтенда за последнюю неделю №374 (29 июля — 4 августа 2019)

Время на прочтение3 мин
Охват и читатели12K
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него.


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

VueJs + VueRouter + modal. Очередной велосипед

Время на прочтение2 мин
Охват и читатели8.2K
Добрый день. В этой статье я разберу способ, который позволяет при смене адреса показывать модальное окно для наших нужд. Я знаю, что есть собственное решение для компонента «modal» на официальном сайте. Вдобавок к этому на Хабре есть много других статей, посвященных теме модальных окон во VueJs (например, вот эта).

Однако, на мой взгляд, каждый из них имеет свои минусы, например:

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

Опять же, я всего знать не могу, поэтому, если если у вас есть что сказать или отметить, то я открыт к конструктивной критике. Далее мы будем использовать исключительно стандартный функционал инструментов, которые используем (Vue, VueRouter, Bootstrap Modal). Итак, ближе к делу…
Читать дальше →

Асинхронное программирование в JavaScript (Callback, Promise, RxJs )

Время на прочтение10 мин
Охват и читатели48K

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



Но перед тем как начать основной материал нам нужно сделать вводную. Итак, давайте начнем с определений: что такое стек и очередь?


Стек — это коллекция, элементы которой получают по принципу «последний вошел, первый вышел» LIFO


Очередь — это коллекция, элементы которой получают по принципу («первый вошел, первый вышел» FIFO


Окей, продолжим.



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

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

Травим данные с travajs

Время на прочтение8 мин
Охват и читатели4K


В своем предыдущем посте я описал основные моменты при разработке другой opensource библиотеки. Забыл упомянуть еще один: если никому не рассказывать про библиотеку, какая бы нужная она ни была, скорее всего никто про нее так и не узнает.

Итак, встречайте trava.js — сочная валидация на пользу проекту. К слову траву мы используем уже больше полугода, и я подумал, пришло время рассказать вам о преимуществах ее использования. Уже даже подсушили, так что задержите дыхание. И вперед.
Читать дальше →

Ближайшие события

Опыт перевода большого проекта с Flow на TypeScript

Время на прочтение8 мин
Охват и читатели12K
Логотип Directum

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

Можно начать разрабатывать код на TypeScript или включить в проект Flow. TypeScript – это компилируемая версия JavaScript, разработанная компанией Microsoft. Flow, в отличие от TypeScript, это не язык, а инструмент, который позволяет анализировать код и проверять типы. В сети можно найти множество статей и видео об этих подходах, а также руководство по тому, как начать использовать типизацию. В этой статье мы бы хотели рассказать, почему нам не подошел Flow, и как мы начали переходить на Typescript.
Читать дальше →

Работа с Worker “как хочется“, а не “как можно”

Время на прочтение6 мин
Охват и читатели7.2K

В этой статье будет использоваться ГРЯЗНЫЙ, небезопасный, "костыльный", страшный и т. д. метод eval. Слабонервным не читать!


Сразу скажу, что некоторые проблемы удобства использования решить не удалось: в коде, который будет передан в worker, нельзя использовать замыкание.
Работа с Worker "как хочется", а не "как можно"

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

Уместить звездное небо на WebGL в 1009 байт JavaScript

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

JS1k — ежегодное соревнование, где надо вместить демо, игру или все что угодно, в 1024 символа на JavaScript. В этом году мое демо заняло четвертое место (до третьего не хватило каких-то два балла). Посмотреть демо можно на сайте JS1k. У кого не открывается или не работает, выглядеть должно так:



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

Обходим лимит поиска LinkedIn, играя с API

Время на прочтение6 мин
Охват и читатели25K

Лимит


Есть на LinkedIn такое ограничение — Лимит коммерческого использования. Крайне вероятно, что вы, как и я до недавнего времени, никогда не сталкивались и не слышали о нем.



Суть лимита в том, что если вы используете поиск людей вне ваших контактов слишком часто (точных метрик нет, решает алгоритм, на основе ваших действий — как часто и много искали, добавляли людей), то результат поиска будет ограничен тремя профилями, вместо 1000 (по умолчанию 100 страниц, по 10 профилей на страницу). Лимит сбрасывается в начале каждого месяца. Естественно, премиум аккаунты такого ограничения не имеют.

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

Что ты такое, Event Loop? Или как устроен цикл событий в браузере Chrome

Время на прочтение3 мин
Охват и читатели162K
Как думаете, что произойдет, если запустить в консоли браузера этот фрагмент кода?

function foo() {
  setTimeout(foo, 0);
}

foo();

А этот?

function foo() {
  Promise.resolve().then(foo);
}

foo();

Если вы также, как и я, прочитали кучу статей про Event Loop, Main Thread, таски, микротаски и прочее, но затрудняетесь ответить на вопросы выше — эта статья для вас.
Читать дальше →

Руководство по логированию в Node.js

Время на прочтение10 мин
Охват и читатели42K

Первая задача, с которой чаще всего сталкиваются разработчики, начинающие программировать на JavaScript, – как регистрировать события в журнале консоли с помощью метода console.log. В поисках информации по отладке кода на JavaScript вы найдёте сотни статей в блогах, а также инструкций на StackOverflow, советующих «просто» вывести данные в консоль через метод console.log. Это настолько распространённая практика, что пришлось ввести правила для контроля качества кода, подобные no-console, чтобы не оставлять случайные записи из журнала в коде для продакшена. Но что делать, если нужно специально зарегистрировать какое-нибудь событие, чтобы предоставить дополнительную информацию?

В этой статье рассматриваются различные ситуации, в которых требуется вести логи; показывается разница между методами console.log и console.error в Node.js и демонстрируется, как передать функцию логирования библиотекам, не перегружая пользовательскую консоль.
Читать дальше →

Собираем окружение для современного TDD на JavaScript + VS code

Время на прочтение2 мин
Охват и читатели13K
TDD уже давно не является чем-то диковинным: на хабре можно найти об этом подходе сотни статей, а каждый новичок знает, какую книгу об экстремальном программировании ему нужно прочитать.

image

Многие мои коллеги тоже используют TDD. Они добавляют тест, пишут код, рефакторят, повторяют. Процесс вроде одинаковый, но у одних он занимает одну минуту, а у других пять. И дело не в том, что вторые медленнее думают. Просто у первых есть набор хитростей, позволяющих оптимизировать работу с тестами.
Читать дальше →