Правила работы с динамическими массивами и пользовательскими классами коллекций
Здесь представлены правила, которых я придерживаюсь при работе с динамическими массивами. По сути, это руководство по проектированию массивов, но я не захотел помещать его в руководство по проектированию объектов, потому что не в каждом объектно-ориентированном языке есть динамические массивы. Примеры написаны на PHP, потому что он похож на Java (с которым вы, возможно, уже знакомы), однако с динамическими массивами вместо встроенных классов коллекций и интерфейсов.
Читать полностью »
Рубрика «Разработка веб-сайтов» - 75
Правила работы с динамическими массивами и пользовательскими классами коллекций
2020-01-17 в 14:24, admin, рубрики: array, best practice, IT-стандарты, php, Блог компании Mail.Ru Group, никто не читает теги, Программирование, Разработка веб-сайтовО 30-кратном увеличении параллелизма в Node.js
2020-01-16 в 9:30, admin, рубрики: javascript, node.js, Блог компании RUVDS.com, разработка, Разработка веб-сайтовКаков наилучший способ беспроблемного увеличения параллелизма в Node.js-сервисе, который используется в продакшне? Это — вопрос, на который моей команде понадобилось ответить пару месяцев назад.
У нас запущено 4000 контейнеров Node (или «воркеров»), обеспечивающих работу нашего сервиса интеграции с банками. Сервис изначально был спроектирован так, что каждый воркер был рассчитан на обработку только одного запроса за раз. Это снижало воздействие на систему тех операций, которые могли неожиданно заблокировать цикл событий и позволяло нам игнорировать различия в использовании ресурсов различными подобными операциями. Но, так как наши мощности были ограничены одновременным выполнением лишь 4000 запросов, система не могла достойно масштабироваться. Скорость выдачи ответов на большинство запросов зависела не от мощности оборудования, а от возможностей сети. Поэтому мы могли бы улучшить систему и снизить стоимость её поддержки в том случае, если бы нашли способ надёжной параллельной обработки запросов.
Занявшись исследованием этого вопроса, мы не смогли найти хорошего руководства, в котором речь шла бы о переходе от «отсутствия параллелизма» в сервисе Node.js к «высокому уровню параллелизма». В результате мы разработали собственную стратегию перехода, которая была основана на тщательном планировании, на хороших инструментах, на средствах мониторинга и на здоровой дозе отладки. В итоге нам удалось повысить уровень параллелизма нашей системы в 30 раз. Это эквивалентно снижению затрат на поддержку системы примерно на 300 тысяч долларов в год.
Данный материал посвящён рассказу о том, как мы увеличили производительность и эффективность наших Node.js-воркеров, и о том, что мы узнали, пройдя этот путь.
Читать полностью »
Пишем свою стратегию для виртуального скролла из Angular CDK
2020-01-16 в 7:49, admin, рубрики: angular, cdk, infinite scrolling, javascript, scroll, scrolling, TypeScript, virtual scroll, Блог компании Tinkoff.ru, Разработка веб-сайтовПривет!
В Angular CDK в седьмой версии появился виртуальный скролл.
Он отлично работает, когда размер каждого элемента одинаков, — причем прямо «из коробки». Мы просто задаем размер в пикселях и указываем, к какому элементу нужно прокрутить контейнер, сделать ли это плавно, а также можем подписаться на индекс текущего элемента. Однако что делать, если размер элементов меняется? Для этого в CDK предусмотрен интерфейс VirtualScrollStrategy
, реализовав который мы научим скролл работать с нашим списком.
В моем случае требовалось сделать календарь для мобильного представления, который можно прокручивать непрерывно, а количество недель в месяце всегда разное. Попробуем разобраться, что представляет собой стратегия виртуального скролла и напишем свою.
Новый фронтенд Одноклассников: запуск React в Java. Часть I
2020-01-16 в 6:00, admin, рубрики: graalvm, java, javascript, ok.ru, React, react.js, ReactJS, Блог компании Одноклассники, одноклассники, ок.tech, Разработка веб-сайтов
Многие слышали название GraalVM, но опробовать эту технологию в продакшене пока довелось не всем. Для Однокласснииков эта технология уже стала «священным Граалем», меняющим фронтенд.
В этой статье я хочу рассказать о том, как нам удалось подружить Java и JavaScript, и начать миграцию в огромной системе с большим количеством legacy-кода, а так же как на этом пути помогает GraalVM.
Во время написания статьи оказалось, что весь объём материала не влезает в традиционный для ХАБРа размер и если выложить публикацию целиком, то на её прочтение уйдет несколько часов. Поэтому мы решили разделить статью на 2 части.
Из первой части вы узнаете об истории фронтенда в Одноклассниках и познакомитесь с его историческими особенностями, пройдете путь поиска решения проблем, которые накопились у нас за 11 лет существования проекта, а в самом конце окунетесь в технические особенности серверной реализации принятого нами решения.
Читать полностью »
Хаос зависимостей в Python
2020-01-15 в 8:08, admin, рубрики: dephell, Go, Moscow Python Conf++, opensource, python, Блог компании Конференции Олега Бунина (Онтико), интервью, Программирование, Разработка веб-сайтовЗнакомы ли вы с историей Python packaging? Ориентируетесь ли в форматах пакетов? Знаете ли, что распутывать клубок зависимостей придется даже когда кажется, что вот оно чудо — zero dependency? Уверен, что знакомы со всем этим не так хорошо, как автор библиотеки DepHell.
Мне удалось поговорить с Никитой Вороновым, больше известным как Gram или orsinium, и расспросить его о теме будущего доклада и болях плохих решений резолвинга зависимостей. Мы поговорили о DepHell, pip, принципе first match wins, о Гвидо и сообществе, Pipflie, инкрементальном развитии Python, какое решение из Go можно было бы взять в Python, и о будущем экосистемы в плане работы с зависимостями.
Читать полностью »
6 GitHub проектов для веб-разработчиков, на которые стоит взглянуть
2020-01-14 в 12:45, admin, рубрики: github, javascript, nodejs, Алгоритмы, Разработка веб-сайтовПривет! Представляю вам перевод статьи 6 Github Repos for web developers you should have a look at автора lampewebdev.
Однажды я пролистывал ленту dev.to и наткнулся на пост 6 GitHub проектов для быстрой прокачки знаний.
Я согласен с автором, что список действительно впечатляет, но порой списки ссылок в этих проектах очень большие.
Поэтому, вот список моих любимых проектов GitHub для быстрой прокачки знаний, но созданный специально для веб-разработчиков.
Читать полностью »
Бандлинг JavaScript-кода и производительность: передовые методики
2020-01-14 в 9:30, admin, рубрики: javascript, Блог компании RUVDS.com, высокая производительность, разработка, Разработка веб-сайтовСейчас, на рубеже десятилетий, самое время критически переоценить то, что считалось правильным в недалёком прошлом, и выяснить, не потеряло ли оно актуальности в наши дни. Иногда вчерашние передовые методики разработки становятся сегодняшними антипаттернами.
Автор статьи, перевод которой мы сегодня публикуем, собирается исследовать три подхода к бандлингу JavaScript-проектов на примере простого Hello World-приложения, созданного с помощью React. Некоторые из приводимых им примеров подразумевают знание читателем основ сборщиков модулей, таких, как Webpack, который, похоже, является сегодня самым популярным среди подобных инструментов.
Читать полностью »
Чем программирование сегодня отличается от программирования 20 лет назад?
2020-01-14 в 7:53, admin, рубрики: 20 лет назад, IT-стандарты, Программирование, Разработка веб-сайтов, разработка мобильных приложенийЯ увидел этот вопрос на Quora и начал писать ответ. Но ответ получился слишком большим, так что я превратил его в эту статью.
Вот часть изменений в случайном порядке, которые я заметил в программировании за последние 20 лет:
32 совета веб-разработчику, который хочет вырасти над собой в 2020 году
2020-01-13 в 9:30, admin, рубрики: Блог компании RUVDS.com, Карьера в IT-индустрии, Программирование, Разработка веб-сайтов, саморазвитиеУшёл 2019 год. Для нас, для веб-разработчиков, это был год испытаний и возможностей. Вокруг много всего такого, что можно изучить, и такого, в чём можно попытаться достичь мастерства. Например — это JavaScript-инструменты для разработки сайтов, такие, как React, Vue, Angular и Svelte. Но это, конечно, далеко не всё. Есть ещё генераторы статических сайтов, JAMstack, бессерверные технологии, Git… Этот список можно продолжать и продолжать.
Хотя в экосистеме веб-разработки каждый может найти что-то такое, что нужно именно ему, проблема тут заключается в том, чтобы поспеть за постоянно изменяющимися технологиями. Но и технологиями дело не ограничивается. Есть ещё множество вопросов, на которые должен найти ответы каждый разработчик. Где мне хочется работать и с кем? Стать ли мне фулстек-разработчиком или нет? Нужна ли мне постоянная работа или мне ближе фриланс? Как мне развиваться и приобретать новые знания и навыки?
Автор статьи, перевод которой мы сегодня представляем вашему вниманию, говорит, что он вложил в приведённые здесь 32 совета веб-разработчику все свои знания и весь свой опыт. Он надеется на то, что эти советы пригодятся и тем, кто только начал свой путь, и тем, кто уже кое-что понимает в веб-разработке. Хотя нельзя говорить о том, что тут каждый найдёт советы на все случаи жизни, и о том, что все эти советы идеально подойдут любому, автор хочет верить в то, что читатель этого материала сможет найти среди них такие, которые его вдохновят или послужат руководством к действию в 2020 году.
Читать полностью »
PHP-Дайджест № 171 (1 – 13 января 2020)
2020-01-13 в 0:15, admin, рубрики: Laminas, laravel, php, PHP 7.4, PHP 8, php-дайджест, symfony, zend, Zend Framework, дайджест, Разработка веб-сайтовСвежая подборка со ссылками на новости и материалы. В выпуске: 4 свежих RFC из PHP Internals и интересные пул-реквесты в PHP 8, порция полезных инструментов, подкасты, стримы и многое другое.
Приятного чтения!