Обновить
512K+

Веб-разработка *

Делаем веб лучше

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

Генератор CRUD-виджета для Yii

Время на прочтение9 мин
Охват и читатели7.5K
Что общего у комментариев к статье на Хабре и дополнительных опций при покупке машины?



С точки зрения моделирования данных, и то, и другое — “вложенные” сущности, которые не имеют самостоятельного значения в отрыве от родительского объекта.

В Yii (php framework) есть Gii — встроенный генератор кода, который позволяет в несколько кликов мышкой создавать базовые CRUD-интерфейсы по модели данных, которые значительно ускоряют разработку, но применимы только для самостоятельных сущностей, как статья или машина в примерах выше.

Было бы здорово, чтобы можно было сгенерировать что-то подобное для “вложенных” объектов данных, верно? Теперь — можно, добро пожаловать под кат за подробностями.
Читать дальше →

ControlValueAccessor и contenteditable в Angular

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

Вы когда-нибудь задумывались, как работает связка форм Angular и HTML элементов, через которые пользователь заносит данные?


С самого начала для этого использовали ControlValueAccessor — специальный интерфейс, состоящий всего из 4 методов:


interface ControlValueAccessor {
  writeValue(value: any): void
  registerOnChange(fn: (value: any) => void): void
  registerOnTouched(fn: () => void): void
  setDisabledState(isDisabled: boolean)?: void
}

Из коробки, Angular имеет несколько таких аксессоров: для чекбоксов и радиокнопок, для инпутов и селектов. Однако, если вы разрабатываете чат, в котором вам нужно дать возможность писать курсивом, делать текст жирным или, допустим, вставлять смайлики — вы, скорее всего, воспользуетесь атрибутом contenteditable для создания содержимого с форматированием.


В Angular нет поддержки использования форм вместе с contenteditable, поэтому написать её придётся самим.


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

Оказывает ли React плохое влияние на Angular?

Время на прочтение6 мин
Охват и читатели10K
Автор материала, перевод которого мы сегодня публикуем, предлагает поразмышлять о будущем веб-разработки. По мере того, как тренды популярности технологий начинают смещаться в сторону библиотеки React, легко ощутить важность вопроса о том, насколько актуальным, через некоторое время, окажется фреймворк Angular. Ясно, что в итоге первое место достанется лишь одной технологии, и это заставляет веб-разработчиков, в особенности тех, которые только начинают свой путь, задаваться вопросом о том, что выбрать.


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

Дайджест Joomla за апрель 2019

Время на прочтение6 мин
Охват и читатели4.5K
Предлагаю вашему вниманию подборку ссылок на новые материалы по Joomla! CMS за март и апрель 2019. В дайджесте: новости о Joomla, подборка ссылок на инструменты для разработчиков и вебмастеров, обзор решений для e-commerce. К сожалению из-за многочисленных поездок по нашей родине, публикация запоздала настолько, что не было смысла ее выкладывать в марте.


Как мы считаем метрики разработки и поддержки документации. Доклад Яндекса

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

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



Рассказывает Юрий Никулин, руководитель службы разработки технической документации.


Для начала давайте определим, что такое производительность. В классическом понимании, это время на производство единицы продукции или количество продукции, произведенное в единицу времени.


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


PHP-Дайджест № 155 (22 апреля – 6 мая 2019)

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

Свежая подборка со ссылками на новости и материалы. В выпуске: обновления PHP, Codeception 3.0 и другие релизы, короткие лямбды в PHP 7.4 и обзор свежих RFC-предложений из PHP Internals, порция полезных инструментов, и многое другое.

Приятного чтения!


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

В PHP 7.4 войдут стрелочные функции (сокращенная запись анонимных функций)

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

Голосование по сокращенному синтаксису для функций завершено (51 "за", 8 "против").


Было:


$result = array_filter($paths,  function ($v) use ($names) {
    return in_array($v, $names);
});

Стало:


$result = array_filter($paths,  fn($v) => in_array($v, $names));

Подробности под катом

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

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

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


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

«Как мы строим IaaS»: материалы о работе 1cloud

Время на прочтение4 мин
Охват и читатели2.8K
Рассказываем о том, как мы запускали и развиваем облако 1cloud, говорим об эволюции его отдельных сервисов и архитектуры в целом. Еще — разбираем мифы об IT-инфраструктуре.

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

Метапрограммирование в JavaScript и TypeScript

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

Пролог


Хочу представить на Ваш суд ряд мини статеек, в которых будут описаны приемы и основы метапрограммирования. В основном я буду писать об использовании тех или иных техник в JavaScript либо в TypeScript
Эта первая (и надеюсь не последняя) статья из серии.


Так что же такое метапрограммирование


Metaprogramming is a programming technique in which computer programs have the ability to treat other programs as their data. It means that a program can be designed to read, generate, analyze or transform other programs, and even modify itself while running. In some cases, this allows programmers to minimize the number of lines of code to express a solution, in turn reducing development time.

Довольно запутанное описание, но основная польза от метапрограммирования вполне понятна:


… это позволяет программистам минимизировать количество строк кода для имплементации решения, что в свою очередь сокращает время разработки

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

Архитектура SPA-приложения биржи в 2019 году

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

Приветствую, хабровчане!


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


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

Руководство по Docker Compose для начинающих

Время на прочтение9 мин
Охват и читатели1.3M
Автор статьи, перевод которой мы сегодня публикуем, говорит, что она предназначена для тех разработчиков, которые хотят изучить Docker Compose и идут к тому, чтобы создать своё первое клиент-серверное приложение с использованием Docker. Предполагается, что читатель этого материала знаком с основами Docker. Если это не так — можете взглянуть на эту серию материалов, на эту публикацию, где основы Docker рассмотрены вместе с основами Kubernetes, и на эту статью для начинающих.

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

TDD: методология разработки, которая изменила мою жизнь

Время на прочтение10 мин
Охват и читатели168K
На часах 7:15 утра. Наша техподдержка завалена работой. О нас только что рассказали в передаче «Good Morning America» и множество тех, кто впервые посещает наш сайт, столкнулось с ошибками.

У нас настоящий аврал. Мы, прямо сейчас, до того, как потеряем возможность превратить посетителей ресурса в новых пользователей, собираемся выкатить пакет исправлений. Один из разработчиков кое-что подготовил. Он думает, что это поможет справиться с проблемой. Мы размещаем ссылку на обновлённую версию программы, пока ещё не ушедшей в продакшн, в чат компании, и просим всех её протестировать. Работает!

Наши героические инженеры запускают скрипты для развёртывания систем и через считанные минуты обновление уходит в бой. Внезапно число звонков в техподдержку удваивается. Наше срочное исправление что-то поломало, разработчики хватаются за git blame, а инженеры в это время откатывают систему к предыдущему состоянию.

image

Автор материала, перевод которого мы сегодня публикуем, полагает, что всего этого можно было бы избежать благодаря TDD.
Читать дальше →

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

Как работают веб-приложения

Время на прочтение6 мин
Охват и читатели275K
Это статья для начинающих разработчиков и тех, кто хочет немного ориентироваться в терминах и технологиях современных веб-приложений. В статье написано о том, чем веб-приложения отличаются от сайтов, какие бывают веб-приложения, из чего они состоят и как работают.
Читать дальше →

Заказчик Hertz подал иск против интегратора Accenture, требует $32+ млн. за «дефектную» модернизацию сайта

Время на прочтение4 мин
Охват и читатели11K
Интегратор «никогда не предоставлял функциональный сайт или мобильное приложение».



Гигант по прокату автомобилей Hertz судится за адский редизайн сайта.

Американская корпорация наняла фирму «монстра» по IT управлению Accenture в августе 2016 года, чтобы полностью обновить свой вид в Интернете. Новый сайт должен был заработать в декабре 2017 года. Сроки сорвали, сдвинули до января 2018 года, а затем снова сдвинули до апреля 2018 года, которые, как нам сказали, были опять сорваны.
Читать дальше →

SEO-оптимизация карточки товара: пошаговая инструкция + лайфхаки

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

Важная часть интернет-магазина — товар. Но большинство SEO-специалистов не уделяют ему должного внимания. Подготовили для вас обязательный список того, что должно быть в карточке товара и подробную информацию по ее оптимизации.


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

JavaScript: 7 полезных мелочей

Время на прочтение4 мин
Охват и читатели23K
Автор заметки, перевод которой мы сегодня публикуем, говорит, что в JavaScript, как и в любом другом языке программирования, можно обнаружить множество маленьких хитростей, предназначенных для решения самых разных задач, как простых, так и довольно сложных. Некоторые из подобных приёмов широко известны, а другие, не такие распространённые, могут приятно удивить тех, кто о них не знает. Сейчас мы рассмотрим 7 полезных приёмов программирования на JavaScript.


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

Поддержкой OpenJDK 8 и 11 займется новая компания — разбираемся в ситуации

Время на прочтение3 мин
Охват и читатели7K
Oracle прекращает поддержку старых версий OpenJDK для корпоративных клиентов. Но на этом посту компанию заменит Red Hat. Обсуждаем причины решения и общественное мнение.

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

(Справа налево (Зазеркалье

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

Кажется, с заголовком что-то не так? Это одна из проблем, с которыми сталкиваются веб-разработчики при добавлении поддержки таких языков, как арабский. В этой статье расскажем о проблемах, с которыми мы столкнулись, и решениях, которые придумали для поддержки арабского языка в десктопном клиенте Spotify и веб-плеере.

Локализация в Spotify — важное дело. Наша миссия состоит в том, чтобы «раскрыть потенциал человеческого творчества, предоставляя миллионам музыкантов возможность зарабатывать своим искусством на жизнь, а миллиардам поклонников — наслаждаться и вдохновляться им». Для достижения этой миссии важно, чтобы пользователи из разных стран могли эффективно общаться на своих языках. Недавно мы запустили Spotify в регионах Северной Африки и Западной Азии. Одним из языков в этих регионах является арабский. В отличие от английского, арабский читается справа налево. Это сказывается на веб-сайтах, которые хотят поддерживать арабский язык.
Читать дальше →

Таблицы в Figma. Дизайн Data Grid одним компонентом

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

Строительство таблицы из компонентов — задача, которая рано или поздно возникает перед каждым разработчиком дизайн-систем в Figma.

Существует три подхода к дизайну таблиц, чтобы создать data grid с гибкой архитектурой. В каждом из случаев используется либо row-компонент, либо column-компонент, либо cell-компонент. Каждый из случаев подробно рассмотрим ниже.

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