Tags: web

beyond

А кто какими PM-сервисами пользуется?

Одно время считал, что рулит Битрикс24 - всё удобно так, по уму вроде. Но в последнее время столкнулся с большим количеством задач и обнаружил, что работать в нём не очень хорошо. Что-нибудь обязательно потеряется, где найти задачу после передачи - неочевидно. То есть, если покопаться, то норм, но вот чтобы прямо сразу в запарке ничего не упустить - сложно. Например, я по инерции просматриваю вкладку своих задач, а "Помогаю" игнорирую (вообще правильнее было бы не "Помогаю" писать, а "Соисполнитель", для сохранения единой семантики со статусами пользователей в задаче). А там, вдруг, откуда ни возьмись, с десяток задач на меня висит. И никто из коллег их не видит, потому что исполнителем сам постановщик себя и выбрал.

Начал думать, чем можно заменить. Знаю про Мегаплан, но он как-то колхозно выглядит. Сейчас присматриваюсь к Jira - достаточно интересная платформа, плюс она вроде завязана на BitBucket, в котором у меня все репозитории.

А чем all пользуется?
beyond

CANVAS - пляски с бубном

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

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

Как это видел я: берём JS + Canvas, обвешиваем обработчиками опции, на лету меняем в Canvas отображение того, что получилось. Трабл в том, что, прекрасно представляя, как сделать фронтенд, я слабо знал потроха WC, а на разбор времени не было. Что и привело к необходимости найма человека.

Как это предложил исполнитель: JS + GD. "Ну, GD так GD - чел уверен в себе и, наверное, знает, что делает" - подумал я. А получив плагин, который сразу даже не запустился у меня на тестовом сервере, стал стекать по стулу. У исполнителя всё было заебок - просто у меня виндовс-хостинг, похапе не та версия, ошибки не отключены (делать isset перед использованием переменной мама не научила), и т.п. - а у него полный УМВР. На этом этапе я с ним поругался, поскольку делать правильно чел не хотел, а хотел денег. В итоге я забил, написал на человека жалобу (которую сайт freelance.ru решил в пользу исполнителя - привет, пидорасы!) и решил, что доработаю плагин сам.

Доработка увеличивала поток нецензурных эпитетов в сторону разработчика. Переменные названы абы как, любое действие с опциями приводило к двум (ДВУМ, КАРЛ!) запросам к скрипту, формирующему и отдающему картинку, фильтра ввода не было (кастомеру пришлось бы копаться в доках, чтобы просто увидеть свой товар), параметры на уровне админки приходилось писать особенным образом, пропуск любого параметра товара убивал клиентский скрипт, при включенном плагине половина страничек админки показывала ошибку прав доступа, и так далее. Единственное, в чём работа исполнителя оказалась полезной - этот кривой монстр был подключен к WC и мне не пришлось копать эту тему.

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

Попробовал. Обломался. Стал думать. В Сети нашёл оооочень странный совет, который предлагал нарисовать перед канвасом див с nbsp и нужным font-family. Попробовал его использовать. Обломался. Снова стал думать. Сделал прорисовку с задержкой в 0.1s после загрузки страницы. Заработало! Но то был тестовый шрифт из библиотеки гугла. После этого я подключил нужные шрифты, и получил следующий забавный эффект: при первом выводе шрифт всегда был дефолтный. Но стоило мне кликнуть по полю ввода (что вызывало ту же самую процедуру вывода) - как шрифт выбирался верный. Почему оно так работало, я не понял до сих пор.

На поиск причин я убил половину ночи. А потом вспомнил про левый див с пробелом , стоящий перед канвасом. Там всё ещё был указан тестовый шрифт. Сделав прописывание выбранного шрифта в этот див (на минуточку, вообще к канвасу отношения не имеющий!), я вдруг получил абсолютно правильно работающий код.

Резюмируя:
<canvas></canvas>
- не работает для шрифтов.

<div style="font-family: %Font Name%;">&nbsp;</div>
<canvas></canvas>
- работает

Note: весь этот треш происходил в Гугл Хром. В Мозилле вывод получился без лишних плясок. Ну или, по крайней мере, без их большей части.
Note2: про этот плагин была ещё одна забавная история, когда нужно было применять цсс-фильтры к загруженной картинке - и выяснилось, что IE эти фильтры тупо не умеет. Пришлось делать динамическую вставку SVG, который эти фильтры умел даже в IE. Пожалуй, это был первый лютый косяк IE за долгое время.
beyond

Алярмы

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

1. "Спасибо, Друг, отличная работа!" - вместо "друга" может быть "брат", либо какое-то иное установление взаимосвязи, подразумевающее некоммерческие отношения. Ну и не обязательно это будет сказано про уже сделанную работу - может быть и в процессе, и в обсуждении.

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

2. "Дизайн должен быть современным, государственным". Чем более веское приложено прилагательное - тем большие проблемы будут при сдаче дизайна. Показывает, что заказчик руководствуется рядом примеров и неким общим впечатлением, которые они на него производят, - и амбициями, очерченными (на осознаваемом уровне, по крайней мере) весом этого прилагательного.

Если сделанная работа не попадает в эту смутную субъективную цель соответствия ожиданиям, будет масса придирок, переделок, попыток переформулировать ТЗ, и так далее.

3. "Я сам дизайнер ..." - упоминание такой фразы столь же печально, что и предыдущий пункт, и содержит похожие последствия. Возможны и другие варианты фразы, но общий смысл - позиционирование себя на ниве визуального творчества. Оформитель, фотограф, просто "человек, знающий толк"... Наиболее существенным может стать, помимо повышенных ожиданий, то, что заказчик начнёт делать вашу работу. Говорить, где и какие цвета использовать, что куда положить - вот только спрашивать будет не с себя, а с исполнителя. В итоге разочарованно сообщив, что получилось "так себе".

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

4. "Давай делать бизнес вместе!" Опять же, с возможными вариациями. Вроде "от успеха этого сайта зависит мой бизнес", скажем.

Бизнес зависит исключительно от его руководителя. Задача разработчика/продвиженца/дизайнера - хорошо сделать свою работу. Но если руководитель произносит свою фразу, значит, скорее всего, кроме денег на разработку у него нет ни чёткого плана действий, ни фундамента, от которого он отталкивается, ни умения работать в сфере web, через которую он собирается вести дела. Впрочем, денег тоже может не быть - некоторые Амбициозные Будущие Руководители почему-то считают, что их воображаемое дело для стороннего исполнителя имеет больший приоритет, чем уже налаженная собственная работа.

Помимо возможной нервозности и попыток перейти на оплату по факту великого коммерческого успеха тут будет ещё попытка повесить ответственность за дело на разработчика.

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

SCSS/LESS - проблема внедрения

Около года работаю с LESS - крайне приятная и правильная штука, реализующая то, чего очень не хватало CSS. Коллега подсел на SCSS, в результате чего мы заимели небольшой холивор на тему "чем пользоваться".

В целом существенных отличий между двумя этими языками найти не удалось. В качестве аргумента я приводил, в основном, less.js, позволяющий сборку less->css "на лету", но не рекомендуемый для продакшна. На этом, собственно, и обжёгся - на Safari оно не хочет работать правильно. В итоге разница между языками стала ещё более смутной.

Вместе с тем, отсутствие возможности сборки "на лету" выявляет серьёзную проблему в использовании любого из языков, включая им подобные - эта проблема состоит в том, что на сервер грузится css, и в основном именно css используется для редактирования стилей.

То есть, создаём продуманную, оптимизированную и т.п. структуру стилей в том же LESS. Компилируем, грузим на сайт. Приходит кто-то, привлечённый со стороны (или сам заказчик, если он правит сайт параллельно с нами), открывает CSS, редактирует. И дальше два варианта:
1) на сервер загружается новая версия скомпилированного CSS после очередных правок. Правки, сделанные в CSS, умирают.
2) информация о сделанных правках становится известна до загрузки => либо мертва создаваемая логика, либо теперь нужно проверять ВЕСЬ CSS на предмет правок и вносить их в соответствующие места LESS.

Собственно, на этом этапе я решил отказаться от использования LESS/SCSS. Потому что без хорошо продуманного принципа внедрения кому-то рано или поздно придётся переделывать свою часть работы. И, по идее, передавать такие решения заказчику надо под подпись, с инструкцией по эксплуатации и доработке. Либо обговорив, что и где мы будем использовать, если проект в стадии постоянной доработки.

Затем, впрочем, я обнаружил нечто, похожее на решение - плагины, которые компилируют LESS/SCSS на стороне сервера. С одной стороны, это позволяет редактировать исходные файлы, не заморачиваясь с промежуточным этапом. С другой стороны, присутствие этих файлов на сервере и в скриптах, подключающих стили, делает более очевидным, что именно и как нужно править.

От этого пока и буду отталкиваться, тем более что использование чистого CSS становится всё более нецелесообразным.
beyond

Таки свершилось!

Мы с камрадом vvilddrive строили, строили, и наконец - построили!

Интернет-магазин Время Ведьм, прошу любить и жаловать :).

Впереди ещё овер ОченьМного работы, начиная от приведения в порядок слайдера на главной страничке и текстов сайта, и заканчивая раскруткой, но начало положено, и это очень-очень радует.

Радует также и то, что хоть нам ещё и предстоит стать самым крутым магазином в России, в плане мимимишности мы если не первые, то фдисятке. Основная заслуга тут, конечно, относится к авторам использованной нами темы, но далеко не последнюю роль играют и фото made by vvilddrive, наравне с организацией оффлайновых мероприятий с его стороны. Я же, со своей стороны, обеспечил техническую платформу, и сейчас буду понемногу развивать @ допиливать, а также забивать магазинчик полезной информацией.

И да, если вы вдруг знаете гуру эзо-хендмейда, которые горят желанием выставлять товары на нашей площадке - то тащите их всех сюда! Будем рады продвигать их товар.

P.S. На очереди отдельная торговая площадка для Волгограда, уже почти полностью с моим дезигном (основательно перепиленная фри-тема). Отчасти будет local-дублем основной, отчасти информационным проектом + директорией местных магазинчиков и разных тематических тусовок, официальных и не очень.

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