Пользователь
Неожиданный порядок инициализации наследованных классов в JavaScript
Сегодня у меня была небольшая задачка на рефакторинг JS кода, и я натолкнулся на неожиданную особенность языка, о которой на протяжении 7 лет своего опыта программирования на этом ненавистном многими языке не задумывался и не сталкивался.
К тому же, я ничего не смог найти ни в русскоязычном, ни в английском интернете, в связи с чем решился опубликовать эту не очень длинную, не самую интересную, но полезную заметку.
Чтобы не пользоваться традиционными и бессмысленными константами foo/bar
, покажу непосредственно на примере, который был у нас в проекте, но всё же без кучи внутренней логики и с фейковыми значениями. Помните, что всё равно примеры получились довольно синтетические
Наступаем на грабли
Итак, у нас есть класс:
class BaseTooltip {
template = 'baseTemplate'
constructor(content) {
this.render(content)
}
render(content) {
console.log('render:', content, this.template)
}
}
const tooltip = new BaseTooltip('content')
// render: content baseTemplate
Всё логично
А потом нам понадобилось создать другой тип тултипов, в котором изменяется поле template
class SpecialTooltip extends BaseTooltip {
template = 'otherTemplate'
}
И вот тут меня ждал сюрприз, потому что при создании объекта нового типа происходит следующее
const specialTooltip = new SpecialTooltip('otherContent')
// render: otherContent baseTemplate
// ^ СТРАННО
Сколько стоит CRM-система?
Spring Boot — OAuth2 и JWT
В этой статье мы изучим использование OAuth2 и JWT совместно со Spring Boot и Spring Security.
Сервер авторизации (Authorization Server)
Сервер авторизации (Authorization Server) является наиболее важным компонентом в архитектуре безопасности Web API. Сервер авторизации действует как единая точка авторизации и позволяет вашим приложениям и HTTP endpoints определять функции вашего приложения.
Сервер ресурсов (Resource Server)
Сервер авторизации предоставляет клиентам токен доступа для доступа к HTTP Endpoints сервера ресурсов (Resource Server). Сервер ресурсов — это коллекция библиотек, которая содержит HTTP Endpoints, статические ресурсы и динамические веб-страницы.
Обмен данными между React-компонентами с использованием библиотеки RxJS
Появление библиотеки RxJS открыло массу новых возможностей в мире JS. Цель RxJS — достигать многого, используя небольшое количество кода. Прочитав эту статью, вы узнаете, как осуществлять обмен данными между компонентами приложения на React, применяя возможности RxJS.
Product Management Digest #7 (Март — Апрель 2019)
Все материалы Product Mindset, отчет PM Trands & Benchmarks, квартальный отчет по мобильному рынку, конкурс стартапов от Visa на 11 млн рублей.
Сериализация в Java. Не все так просто
Сериализация (Serialization) — это процесс, который переводит объект в последовательность байтов, по которой затем его можно полностью восстановить. Зачем это нужно?
Настройка домашней среды для разработки (docker + gitlab + DNS)
Intro
Не смог придумать подходящее название для поста, поэтому кратко опишу, о чем будет идти речь.
У большинства из нас есть какие-нибудь мелкие личные поделки, которые не выходят за рамки наших домов. Кто-то хостит их на рабочем компьютере, кто-то — на Heroku, кто-то — на VPS, а у кого-то есть домашний сервер. На реддите даже есть сообщество r/homelab, в котором люди обсуждают разные железки и софт для т.н. домашней лаборатории.
Я не настолько увлечен этим вопросом, но у меня дома стоит Intel NUC, который проигрывает музыку с NAS с помощью MPD. Помимо MPD на нем крутятся мои мелкие поделки, которые помогают мне с ним работать: ныне мертвый бот для телеграма, HTTP API на синатре и корявенький фронтенд для него.
В посте я без особых подробностей (многих из которых сам не понимаю) опишу процесс установки DNS-сервера для работы с доменными именами для сервисов, схему одновременной работы нескольких сервисов с помощью Docker и установку Gitlab с CI. Ничего нового вы не узнаете, но вдруг кому-нибудь пригодится этот "гайд". К тому же я бы хотел услышать предложения по поводу того, как можно было бы сделать это проще/элегантнее/правильнее.
Как настроить деплой web-приложения на Go для Gitlab на VDS
Предисловие
Эта статья является результатом недельного поиска весьма разрозненной информации о том, как же настроить деплой web-сервиса на Go. Не на Heroku, не на Docker, не на Digital Ocean, а просто на старомодный VDS с CentOS 7x64. Почему-то в сети нет этой информации, а большинство туториалов начинаются с того, как настроить билд, и заканчиваются запуском тестов.
Сразу предупрежу, что впервые настраивал CI/CD процесс, так что это статья от новичка новичку.
Использование промисов в JavaScript
JavaScript: методы асинхронного программирования
JavaScript ES8 и переход на async / await
Async/await: 6 причин забыть о промисах
Побег из ада async/await
JavaScript ES6: пишем меньше — делаем больше
Руководство по промисам для тех, кто хочет в них разобраться
Конструкция async/await в JavaScript: сильные стороны, подводные камни и особенности использования
Почему к промисам приковано столько внимания? Полагаем, всё дело в том, что технология эта весьма востребована, и в том, что в ней достаточно сложно разобраться.
Поэтому, если вы хотите лучше понять промисы, мы предлагаем вашему вниманию перевод очередной статьи, посвящённой этой теме. Её автор говорит, что он последние 10 лет занимался разработкой на Java и PHP, но всё это время с интересом поглядывал на JavaScript. Недавно он решил всерьёз заняться JS и первой заинтересовавшей его темой стали промисы.
Мы считаем, что этот материал будет интересен начинающим разработчикам, которые чувствуют, что, хотя и пользуются промисами, пока недостаточно хорошо их понимают. Вполне возможно, что рассказ того, кто смотрит на JavaScript свежим взглядом и стремится объяснить другим то, что понял сам, не считая, что какие-то вещи понятны всем и без объяснений, поможет начинающим в деле освоения механизмов JavaScript.
Как писать на Spring в 2017
В одной из классических статей для новичков, мелькавших недавно на Хабре, рассказывалось про создание базового Web приложения на Java. Все начиналось с сервлета, потом создания JSP страницы и, наконец, деплоймента в контейнер. Посмотрев на это свежим взглядом я понял, что для как раз для новичков это, наверняка, выглядит совершенно жутко — на фоне простых и понятных PHP или Node.js, где все просто — написал контроллер, вернул объект, он стал JSON или HTML. Чтобы немного развеять это ощущение, я решил написать "Гайд для новичков в Spring". Цель это статьи — показать, что создание Web приложений на Java, более того — на Spring Framework это не боль и мучительное продирание через web.xml, persistence.xml, beans.xml, и собирание приложения как карточного домика по кусочкам, а вполне себе быстрый и комфортный процесс. Аудитория — начинающие разработчики, разработчики на других языках, ну и те, кто видел Спринг в его не самые лучше времена.
Дайджест интересных материалов для мобильного разработчика #245 (12 марта— 18 марта)
20 полезных Node.js фреймворков
Руководство по работе с Redux
В этом руководстве мы рассмотрим создание с нуля full-stack приложения с использованием Redux и Immutable-js. Применив подход TDD, пройдём все этапы конструирования Node+Redux бэкенда и React+Redux фронтенда приложения. Помимо этого мы будем использовать такие инструменты, как ES6, Babel, Socket.io, Webpack и Mocha. Набор весьма любопытный, и вы мигом его освоите!
Подборка штук на основе искусственного интеллекта для личного использования (1/3)
Искусственный интеллект и четвёртая промышленная революция (wiki) достигли значительного прогресса за последние несколько лет. Большинство из того, что можно использовать уже сейчас, разрабатывается для коммерческих и промышленных целей, как вы увидите в следующих постах. Научно-исследовательские институты и специализированные компании работают над достижением конечной цели создания ИИ (а именно, создание сильного искусственного интеллекта artificial general intelligence), разрабатывая открытые платформы и исследуя появившиеся этические вопросы. Существуют также несколько компаний, разрабатывающих ИИ-продукты для конечных потребителей, их мы и рассмотрим в рамках этого поста.
Создание искусственного интеллекта — это как взбираться на дерево, пытаясь добраться до Луны. Можно сообщать о стабильном прогрессе, вплоть до самой вершины дерева.
Классические и новые пособия по интернет-маркетингу, которые стоит увидеть
В этот раз мы решили представить читателю подборку из актуальных книг последних лет по теме интернет-маркетинга в целом и отдельных его аспектах, которые могут оказаться полезными на всех этапах разработки и продвижения веб-сайта или мобильного приложения.
Ресурсы для стартаперов: план действий в ссылках
Робомобиль на базе Arduino Mega 2560 с Bluetooth управлением и автономным движением с объездом препятствий
Настольный пульт управления на JavaScript/Node.js для робота на Ардуине
Теперь пульт управления для своего станочка с ЧПУ сделать не сложнее, чем написать сайтик.
7 методик оптимизации рабочего процесса, о которых вы, возможно, не слышали
Информация
- В рейтинге
- Не участвует
- Зарегистрирован
- Активность