Сайт Романа ПарпалакаБлог

Как улучшить legacy-код

25 июня 2017 года, 21:15

Статья на хабре «Как улучшить legacy-код». Многим пригодится, потому что легаси-код есть в большинстве проектов. Особенно рекомендуется тем, кто сразу хочет переписать такую систему с нуля, едва столкнувшись с ней.

    Оставить комментарий

Митинги в День России

12 июня 2017 года, 21:29

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

Результат акции показался мне странным. Протестующие растворились среди отдыхающих. Сколько было тех и других — непонятно. И полиция испортила праздник реконструкторам исторических событий.

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

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

    Оставить комментарий

Пишем объектно-ориентированный код в PhpStorm — В кресле препода №1

8 мая 2017 года, 16:13

В прошлом посте я разрушал мифы о среде разработки PhpStorm. В продолжение я записал скринкаст о том, как в ней писать объектно-ориентированный код.

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

Содержание:
00:19 Процедурный стиль vs. объектно-ориентированный стиль
01:11 PHP не для процедурного программирования
02:22 ООП в PHP: много рутины
03:05 Задача: показать не только приемы работы в PhpStorm, но и пользу от ООП
04:08 Выбираем код для рефакторинга
05:10 Создаем класс: пространство имен; методы; константы
10:36 Автозагрузка классов через composer
13:28 Разбираем проблемы кода
15:34 Возвращаем вместо массива объект (DTO)
24:29 Избавляемся от глобальных переменных по принципу инверсии зависимостей (dependency inversion)
29:29 Наполняем DTO логикой: __toString
33:16 Рефакторинг
35:14 Наполняем DTO логикой: валидация в конструкторе
39:40 Получился код по принципам SOLID
40:24 Проблема создания сервисов
41:04 Решение с помощью контейнеров зависимостей; подключение Pimple через composer
46:01 Обзор изменений, привнесенных объектно-ориентированным подходом
48:09 Дополнение: подключаем библиотеку поиска Rose, описывая сервисы в контейнере
01:01:38 Подведение итогов

    Оставить комментарий

Разрушаем мифы о PhpStorm

16 апреля 2017 года, 11:57

Илья Бирман написал о редакторах и средах разработки:

Я много лет использовал редактор кода «Сублайм-текст». Он не дотягивал по функциональности даже до «Эдитплюса», которым я пользовался на Винде больше десяти лет назад, но казался мне самым приятным и продвинутым из того, что есть на Маке. Всякие ИДЕ я не рассматривал — они уродские и тормозные. Однажды я видел, как разработчик переименовывал файл в «ПХПШторме». На экране несколько секунд заполнялся прогрессбар. Нет, спасибо.

Давайте я тоже поддержу межблоговые дискуссии и отвечу Илье. А ответить есть что.

Уже лет 5 я использую PhpStorm как один из основных инструментов. Как такое могло произойти, если среды разработки — уродские и тормознутые? Давайте разбираться.

Переход на PhpStorm

Раньше я программировал в Notepad++. Вершина его функций — поиск и замена по всем файлам в папке. Казалось, этого вполне достаточно. Мне тоже нравилась скорость работы редактора, и я тоже относился к IDE снисходительно. «Я и так знаю названия функций, нахрена мне тормознутая подсветка синтаксических ошибок в коде?»

Я не помню, что заставило меня скачать PhpStorm. Мне могли понадобиться какие-то возможности, которых не было в плагинах к Notepad++. Или я заинтересовался, что же всё-таки находят в нем люди. Помню только, что он подсвечивал желтым слишком много подозрительных мест в моем коде.

Тем не менее, PhpStorm у меня прижился. Как автор опенсорсного продукта — движка S2 — я получил бесплатную лицензию. С тех пор PhpStorm стал одним из основных моих инструментов.

Миф №1: PhpStorm тормозит

PhpStorm как IDE отличается от текстовых редакторов:

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

Миф №2: переименование файла занимает в PhpStorm несколько секунд с прогресс-баром

Зависит от того, что нужно программисту. PhpStorm способен искать вхождения старого названия файла по всему проекту и по контексту определять, нужно ли это название изменить. Альтернатива в обычных редакторах — поиск и замена по всем файлам — занимает несколько минут рутинной работы. Экономия времени на два порядка.

Поиск старого названия файла можно отключить прямо в окне переименования. Тогда файл переименовывается мгновенно.

Миф №3: PhpStorm «устанавливать и настраивать год»

Установка проходит не сложнее установки любых других программ. Первоначальной настройки PhpStorm не требует. Может открыть любую папку как проект без предварительных вопросов.

Настройку дополнительных инструментов делаете тогда, когда они вам понадобятся:

Пошаговая отладка через Xdebug настраивается сложнее из-за самой природы веб-приложений. Но если не хотите пользоваться пошаговой отладкой с просмотром значений переменных по всему стеку вызовов, отлаживайте по-старинке вар-дампами, никто не запрещает :)

Миф №4: PhpStorm «выглядит как говно»

Вкусовщина, конечно. Нормально он выглядит. Внешний вид работать не мешает. Чтобы не приводить зря громадный скриншот, покажу заодно «git blame»:

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

    7 комментариев

Прогулка против коррупции

26 марта 2017 года, 19:35

— Уважаемые граждане! Проходим все вниз. Площадь Пушкина переполнена.
— Переполнена полицейскими!

    Оставить комментарий

Так кто же судьи?

5 марта 2017 года, 23:00

Почти всё, что нам задавали выучить наизусть на уроках литературы, я учил механически. Редко когда сочувствовал и сопереживал. Смысл некоторых отрывков вообще от меня уходил. Слова знакомые, но вместе не складываются.

Одно из таких неосмысленных произведений — монолог Чацкого «А судьи кто?». Я до сих пор могу его продекламировать. Про чепчики было прикольно. А что там в забытых газетах времен Очаковских — фиг его знает. У современников наверняка проблем с пониманием не было. Но я был вне контекста.

И вот на моих глазах произошла удивительная вещь: этот монолог обрел смысл. И не потому, что я повзрослел и поумнел. А потому, что история России сделала очередной виток, и сатира Грибоедова вновь стала актуальной.

Давайте освежим в памяти этот монолог:

А судьи кто? — За древностию лет
К свободной жизни их вражда непримирима.
Сужденья черпают из забытых газет
Времен Очаковских и покоренья Крыма;
Всегда готовые к журьбе,
Поют все песнь одну и ту же,
Не замечая об себе:
Что старее, то хуже.
Где, укажите нам, отечества отцы,
Которых мы должны принять за образцы?
Не эти ли, грабительством богаты?
Защиту от суда в друзьях нашли, в родстве,
Великолепные соорудя палаты,
Где разливаются в пирах и мотовстве,
И где не воскресят клиенты-иностранцы *
Прошедшего житья подлейшие черты
Да и кому в Москве не зажимали рты
Обеды, ужины и танцы?
Не тот ли, вы к кому меня еще с пелен,
Для замыслов каких-то непонятных,
Дитёй возили на поклон?
Тот Нестор ** негодяев знатных,
Толпою окруженный слуг;
Усердствуя, они в часы вина и драки
И честь и жизнь его не раз спасали: вдруг
На них он выменил борзые три собаки!!!
Или вон тот еще, который для затей
На крепостной балет согнал на многих фурах
От матерей, отцов отторженных детей?!
Сам погружен умом в Зефирах и в Амурах,
Заставил всю Москву дивиться их красе!
Но должников *** не согласил к отсрочке:
Амуры и Зефиры все
Распроданы поодиночке!!!
Вот те, которые дожили до седин!
Вот уважать кого должны мы на безлюдьи!
Вот наши строгие ценители и судьи!
Теперь пускай из нас один,
Из молодых людей, найдется — враг исканий,
Не требуя ни мест, ни повышенья в чин,
В науки он вперит ум, алчущий познаний;
Или в душе его сам бог возбудит жар
К искусствам творческим, высоким и прекрасным,
Они тотчас: разбой! пожар!
И прослывет у них мечтателем! опасным!! -
Мундир! один мундир! он в прежнем их быту
Когда-то укрывал, расшитый и красивый,
Их слабодушие, рассудка нищету;
И нам за ними в путь счастливый!
И в женах, дочерях — к мундиру та же страсть!
Я сам к нему давно ль от нежности отрекся?!
Теперь уж в это мне ребячество не впасть;
Но кто б тогда за всеми не повлекся?
Когда из гвардии, иные от двора
Сюда на время приезжали, -
Кричали женщины: ура!
И в воздух чепчики бросали!

* Клиенты-иностранцы. — В древнем Риме клиентами называли тех, кто, находясь в зависимости от римских граждан, пользовался их поддержкой и выполнял их поручения. Здесь Чацкий намекает на французов, живших в богатых дворянских домах. Среди этих французов было много реакционных политических эмигрантов, бежавших из Франции во время французской буржуазной революции.
** Нестор — имя греческого полководца (из поэмы Гомера «Илиада»). В нарицательном смысле имя Нестор стало обозначать предводителя, главаря.
*** Должник — В грибоедовское время это слово обозначало не только того, кто должен деньги, но и того, кто одолжил их (кредитора).

Перечислим сходство с нашим временем. Уже три года как у строк о покорении Крыма новое содержание. Прогнившая судебная система. «Отечества отцы […] защиту от суда в друзьях нашли, в родстве, великолепные соорудя палаты» (конечно, отечества отец у нас один, но и у сына палаты ничего так). Мундир выше познаний и искусств.

Сегодня школьникам легче учить монолог Чацкого, чем лет 15 назад. Единственное, что не воскресло два века спустя — крепостное право.

Так и живем.

    Оставить комментарий

Невзоров защищает курильщиков

22 января 2017 года, 21:00

Невзоров комментирует предложение запретить продажу сигарет людям, родившимся после 2015 года:

Но мы говорим сейчас о чем-то сейчас непосредственно живом и бытовом. Вообще, я вам могу сказать следующее, ребята. Вообще, вся эта кампания, как ни странно, в России, по крайней мере — на Западе все жестко, но немного по-другому, там в любом аэропорту есть курительные комнаты и, вообще, как-то к обычаям курильщиков относятся с гораздо большим пониманием и терпимостью — а у нас вот эта вся конструкция — не знаю, кто является ее чистым живым автором — списана, знаете с кого? — с Третьего рейха. Вот в Третьем рейхе истерия по поводу курения была невероятная! И ни на какую карьерную ступеньку следующую не мог рассчитывать курящий персонаж. Все был поражены и заражены мыслями о здоровом образе жизни.

Этот прием называется демагогией. В Третьем Рейхе дороги строили. Теперь нам нельзя строить дороги?

    1 комментарий

С Новым годом!

31 декабря 2016 года, 16:51

Под Новый год принято подводить итоги года уходящего. А я хочу вспомнить о событиях двенадцатилетней давности. Тогда на международной олимпиаде по физике мы обсуждали, что в Молдавии олимпиада будет проходить в 2017 году. Страна станет нормальной и достойно проведет олимпиаду. Но так не случилось. Власть передала (или продала?) это право Индонезии, и олимпиада будет на Бали.

Тогда казалось, что впереди много времени, и столько всего случится. Хоть я поступал учиться на физика, я выбирал между физикой и информатикой. Поэтому мало удивительного в том, что сейчас я зарабатываю программированием. Удивительно другое: за это время я заинтересовался и увлекся музыкой.

2004 год, поездка на вступительные экзамены, общежитие ФОПФ МФТИ:

Музыкальное поздравление с 2017 годом:

    Оставить комментарий

Сочиняем музыку по первой фразе

27 декабря 2016 года, 20:27

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

Если вы пробовали сочинять стихи, то знаете, что с первой строчкой дело упрощается. Действительно, первая строчка задает тему. Чередование ударных и безударных слогов определяет размер стихотворения. Последнее слово рифмуется. Эти ограничения более-менее однозначно направляют творчество.

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

Основа композиции

Выбираем тональность. Я опустил расслабленные руки на клавиатуру. В левой оказалась октава до, в правой — октава ми. Это неполный до-мажорный аккорд. Значит, тональностью будет до мажор.

Добавляем ритм. Левая рука играет октавы через равные промежутки времени. Правая начинает вместе с левой, но затем отстает, и звуки до и ми начинают чередоваться. Такова наша первая фраза.

Добавляем движение. Левая рука постепенно спускается по звукам тональности до-мажор (белым клавишам). В правой задержим не только ритм, но и звук предыдущей гармонии, когда левая переходит к новой.

Определяемся с последовательностью аккордов. Продолжаем спуск и получаем C, Bm, Am, G, F, Em, Dm, E, Am/C. Обратите внимание на последние три аккорда. В предпоследнем бас повернул назад, в ми. Это нужно, чтобы сыграть основную формулу гармонии Dm — E — Am и перейти в параллельную тональность ля минор.

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

Форма

Первая часть готова. Она начинается в до мажоре и заканчивается в ля миноре. Звуки этих аккордов между собой сочетаются, так что после первой части повторяем ее же с другим аккомпанементом. Мелодия первой части сама по себе разнообразна, и я решил обойтись без вариаций. Повторять эту часть по кругу больше нельзя. Придумаем другие части.

Мелодическая пауза. Первая часть заканчивается в тональности ля минор, так что заполняю паузу звуками аккорда ля минор. Следуя приему первой части спускаюсь по ступеням: Аm, G, F, E. Повторяю первую часть.

Вторая часть. Чтобы повторить первую часть еще раз, опять переходим из ля минора в до мажор. Возьмем первые четыре аккорда золотой секвенции (Am, Dm, G, C) и поддержим простой мелодией.

Итоговая форма:

Часть 1* — часть 1 — мелодическая пауза — часть 1 — часть 2 — часть 1

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

В следующий раз поговорим о сочинении музыки к стихотворениям.

    Оставить комментарий

Планшет-трансформер Acer Aspire

27 ноября 2016 года, 22:15

Неделю назад отдал ноутбук в ремонт. Из компьютерных устройств кроме телефона остался планшет-трансформер Acer Aspire Switch 10 v. После покупки я поигрался с ним и стал иногда использовать для чтения. Когда есть альтернатива, трудно по-другому использовать не очень отзывчивый планшет с заляпывающимся экраном. Но теперь пришлось сделать его основным компьютером. Делюсь впечатлениями.

Экран. Разрешение 10-дюймового экрана 1920×1200. Я установил увеличение в 2 раза, как на ретине, так что эффективное разрешение 960×600. Для чтения — в самый раз. Для серьезной работы, конечно, мало.

Аккумулятор. Одной зарядки аккумулятора хватает где-то на 6 часов работы планшета. Или на 9 часов чтения при нулевой яркости (комфортный уровень, когда не светит Солнце). Система управления питанием вызывает вопросы. Если оставить планшет заряжаться на сутки, то он отключается так, что не реагирует на обычное нажатие на кнопку включения. Нужно удерживать одновременно и кнопку включения, и кнопку «Домой» в течение непонятного промежутка времени. Или не просто удерживать, но и периодически нажимать. Я так и не разобрался до конца.

Периферия. Планшет через Micro-HDMI подключается к монитору и проектору. На планшете один разъем USB-C, в который мне нечего воткнуть. На собственной клавиатуре трансформера есть один обычный разъем USB. К нему через хаб я подключаю внешнюю клавиатуру, мышь, беспроводные наушники, внешний жесткий диск. Планшет превращается в компьютер, за которым работать немного удобнее.

Производительность. Полноразмерная клавиатура и монитор не помогут решать на планшете абсолютно все задачи. Оперативная память — 2 гигабайта, процессор — Intel Atom на 4 ядра. Даже с быстрым интернетом приходится ждать загрузку сайтов на секунду-другую дольше чем обычно.

Внутренняя память — 64 гигабайта. Я докупил microSD на 128 гигабайт.

Производительности планшета вполне хватает для проигрывания видео 720p. По идее, он должен тянуть и Full HD, но я не пробовал.

Особенности питания. Тут меня поджидал другой неприятный сюрприз. После нескольких минут воспроизведения видео через стандартный плеер планшет отключает периферию и повисает. Помогает только перезагрузка. Media Player Classic работает лучше, но и с ним такое иногда происходит. Моя гипотеза — перегрев видеочипа. Я отключаю питание, и после этого можно нормально смотреть фильмы. Видимо, на аккумуляторе видеоплата работает в режиме экономии электроэнергии.

При простое система уходит в спящий режим, из которого выходит секунд за 15. Не самый лучший показатель для планшета.

Софт. На планшете установлена Windows 10, собравшая неоднозначные отзывы. В магазине приложений выбор хуже, чем на Андроиде. Например, для Feedly я не нашел ничего лучше программы Readiy, которая показывает рекламу, но не может добавить или удалить подписки. С другой стороны, это всё еще обычная винда, на которую можно установить, наверно, любую программу, написанную за последние 15 лет.

Приятно удивил браузер Edge. Я давно предлагал Микрософту назвать нормальный браузер по-другому. Они сделали нормальный браузер и назвали его по-другому. Edge работает быстрее Хрома. Или, по крайней мере, отзывчивее. И в нем работает кнопка Backspace!

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

Для чтения и серфинга выбирайте айпады или планшеты на андроиде. Для серьезной работы доложите денег и купите ультрабук.

★★★☆☆

    Оставить комментарий

← сюда туда →

Поделиться
Записи