Рубрика «Веб-разработка» - 254

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

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

Так уж получилось, что сейчас я стажируюсь в одной компании, где очень тяжело выбить простую программку себе на десктоп, а тем более IDE, порой это даже превращается в целые недельные квесты. Но в то же время, в свободное от работы время, я очень люблю экспериментировать. Почитав статью про онлайн IDE и имея аккаунт в OpenShift решил все таки попробовать создать и развернуть Yii приложение в облаках.

Сразу оговорюсь, что статься для начинающих. Кому интересно заходите! Читать полностью »

Suit Up! Простой и легкий WYSIWYG

Статья делится на три части:

Вступление

Не так давно, а, точнее, года два назад, в кругу разработчиков, с которыми я имел честь общаться (почти все — новички), каждый, кому поступила задача поставить WYSIWYG, ставили монстрообразный TinyMCE. Этот редактор считался почему-то стандартом у многих веб разработчиков, хотя, мало кому нужны были то большое количество функций, которые предлагались программистам. Тут тебе и то и это. Наверно, таким образом, новички пытались сказать клиенту «смотри, мы тебе на сайт запилили Ворд».

Однажды (не помню при каких условиях), мне захотелось или понадобилось разобраться в том, как работают браузерные «рич эдиторы». Моему удивлению не было предела, когда я сам, не имея каких-либо глубоких познаний в веб разработке, сделал две кнопочки: Bold и Italic, что оказалось очень простой задачей. Мне захотелось больше узнать о том, что же делать дальше. Так я познакомился с серией статей «WYSIWYG HTML редактор в браузере» (по ссылке первая статья, советую прочесть). Но информация на тот момент мне показалась несколько сложноватой. Поэтому я решил методом тыка, наступая на уже растоптанные кем-то грабли, написать свой простой редактор.

Сделал я его в виде jQuery плагина, и, думаю, не стоит отвечать «почему». Получилось кое-как заставить работать его в разных браузерах. Тут мне пришла в голову идея написать статью на хабр, после некоторых доработок. Время шло, допиливание я откладывал, откладывал… Два года, черт, целых два года. Но я постараюсь исправиться.

Простейший редактор

Для того, чтоб дать возможность пользователю менять содержимое блока (в данном случае, обычного дива) просто задаём ему (блоку) атрибут contenteditable:

<div contenteditable></div>

Редактор готов!
Читать полностью »

Думаю, каждому программисту знаком принцип единственной ответственности, Избавляемся от дублирования сквозного кода в PHP: рефакторинг кода с АОП ведь не зря он существует: соблюдая его, можно написать код лучше, он будет более понятным, его будет легче дорабатывать.

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

Эта статья о том, как можно избавиться от дублирования сквозного кода, и как сделать его чуточку лучше с помощью АОП.

Читать полностью »

В данной статье приводится пример создания простого сайта-блога с использованием паттерна Dependency Injection. Применяется подход с внедрением зависимостей во все возможные компоненты Symfony: контроллеры, doctrine-репозитории, формы.

Для упрощения статьи сократим число страниц сайта до двух:

  • Добавление нового поста (/add)
  • Отображение списка всех постов (/list)

Финальная архитектура приложения будет выглядеть следующим образом:
Руководство по использованию Dependency Injection в Symfony2
Читать полностью »

В последнее время в облачных средах и хостингах все чаще стали попадаться «виртуальные» жесткие диски. Техническая служба хостера может заверять, что «виртуальный» диск — быстрый, как десяток рейдов 10 (рейд 100 ;-) ) и держит сотни, а то и тысячи IOPS – однако MySQL заметно для клиентов тормозит. А как это доказать хостеру?

Проблема в том, что измерить «скорость» виртуального жесткого диска изнутри виртуальной машины – непросто, т.к. неясно, что мерить в первую очередь, чем и зачем ;-) А сделать это нужно, чтобы убедить администраторов виртуальной конфигурации, что дело не в приложении и настройках MySQL. И нужно было, как говориться, просто «помыть руки» перед чтением мануала к хранилищу.

В статье я проиллюстрирую простую методику нахождения «точки опрокидывания» производительности виртуального жесткого диска, с использованием доступных в дистрибутивах инструментов – sysbench и iostat. Также мы измерим «точку опрокидывания» известных своей тормознутостью виртуальных дисков EBS от Амазона – как обычных EBS, так и Provisioned IOPS EBS (1000 и 2000 IOPS).
Читать полностью »

Работаю с Redis относительно недавно и вот возникла необходимость изменения одного ключа несколькими потоками одновременно. Для работы с Redis в php использую клиент Rediska. Еще когда читал мануал по Rediska видел раздел про транзакции, а сегодня пришло время почитать внимательнее.

Читать полностью »

В начале декабря мы начали делать небольшой, чисто новогодний проект amd2013.ru. Это конкурс, куда одни люди присылают свои креативные работы, а другие за них голосуют.

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

Как мы делали amd2013.ru

Во-первых (и это очень важно для меня), проект сделан на MODX Revolution и новом компоненте — Tickets. Это первое боевое применение компонента, «не для себя».
А во-вторых, там будет прикольная история, как мы считали голоса. =)
Читать полностью »

Всем давно известно, что jQuery легко расширяем. Сегодня мы добавим новый селектор — :regex.

Читать полностью »

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

Пролог

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


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js