Илья Кочергин | WEB разработчик
2 subscribers
27 photos
2 links
Я создаю сайты, web-приложения, а также мобильные приложения. От вёрстки до деплоя.
Download Telegram
Мне понадобился узор для заголовков на сайте мастерской чонгов. Т.к. тема китайская, дизайн нужен с китайскими мотивами. Я собрал пачку референсов.

Оказалось, что в узоры в китайской культуре глубоко символичны. Круг изображает бесконечность и совершенство. Квадрат - землю и стабильность. Узел созвучен достижению желаемого самым счастливым образом.

Мне нужен был лёгкий узор, который разнообразил бы визуал, но не отвлекал внимание. Вряд-ли посетители сайта мастерской будут разбирать его значение. Я скомбинировал самые простые фигуры, перечисленные выше: круг, квадрат и узел.

Получился вот такой рисунок. Я старался сделать его похожим на чонг. Вид сверху. По центру бревно, а по бокам рама и рессоры. Красиво и весьма символично ) Надеюсь, хозяину сайта тоже понравится.
Во время теста нового мобильного приложения для Такси 42 нашел неприятную особенность. Иногда не приходят оповещения о том, что автомобиль подъехал и ожидает. Это случается на слабых устройствах с небольшим количеством памяти. Если одновременно запустить что-то тяжелое, то из-за нехватки ресурсов Андроид "убивает" сервис, следящий за статусом заказа.

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

Я стал дебажить библиотеку Notifee, которую использую для фоновой работы с оповещениями. Пришлось залезть к ней "под капот" в нативный Java-код, хоть я и не особо силён в нём. Напомню, что я пишу на React Native.

Так вот, есть два режима, в которых можно стартовать сервис: START_STICKY и START_NOT_STICKY. В первом Андроид будет пытаться заново запустить его после принудительного завершения. А во втором - нет. Так вот, библиотека Notifee использует именно второй режим. И нет никакого способа повлиять на это через параметры или настройки.

Я встал перед дилеммой: форкать и модифицировать Notifee, либо вовсе от неё отказаться и переписать сервис на нативном модуле. Выбор пал на нативный модуль. Править чужой код не зная нюансов - такое себе занятие. Тем более, я за любой способ сделать приложение легче. А тут такая возможность избавиться от целой библиотеки. Заодно попрактикуюсь в написании кода на Java.

Я выкинул Notifee, переписал сервис и вернулся к тестам. START_STICKY помог, но не совсем. В особенно тяжелых случаях Андроид после рестарта сервиса тут же снова его "прибивал". На этот раз окончательно.

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

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

Словом, на сегодня проблема решена на половину. Приложение старается перезапустить сервис оповещений после "убийства". Это получается не всегда, поэтому по прежнему сохраняется опасность пропустить оповещение о подъехавшей машине. Хорошо, что оно дублируется звонком от робота.

Хорошим решением было бы использовать push-уведомления вместо сервиса. Возможно, мы перейдём на них. Хотя, сейчас, в условиях ограничений мобильного интернета, всё равно не обойтись от дублирования оповещений звонком. Поэтому пока работаем в этом режиме и копим статистику.
Таксишный сайт атаковали боты. Они делают прямые заходы с IPv6 на главную страницу и проводят на ней от 5 до 20 сек. В первые дни они хаотично скроллили, затем кликали email в подвале и уходили. А теперь не кликают, только скроллят.

Посещаемость сайта небольшая. Не больше сотни в день, в основном из поиска. А теперь выросла кратно. Боты забили всю Метрику.

Это не DDoS. Заходов слишком мало для серьёзной нагрузки. Это прогрев поведенческих ботов, либо компрометация ПФ конкретно на нашем сайте.

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

Капча простейшая самодельная. Интересно, как быстро её сломают. Затем повешу Recaptcha от Гугла. Естественно, на странице с капчей нет никакой Метрики. А Google Аналитику мы убрали ещё когда РКН повысил штрафы за неуведомление о трансграничной передаче данных.

Сейчас ботов в Метрике не видно. Посещаемость вернулась к норме. Продолжаю наблюдение.
Прошло 1,5 года, как я собрал новый ПК. Время его почистить и рассказать о нём. Он простой: 12400 и 32Gb DDR4. Интереснее корпус, который я долго выбирал.

Я работаю на лоджии, поэтому важны размеры. Старый ПК был большой. Я часто пинал его ногами под столом. Хотелось компактный и вместительный корпус. Нашел Thermaltake Core G3. Редкий корпус SFX, вмещающий ATX плату.

Ширина всего 140мм. Материнка ставится вверх ногами. Видеокарта через райзер. Можно вместить водянку. Хотя, я поставил низкопрофильный кулер Be Quiet! и холодный CPU. Этого мне достаточно.

Корпуса уже нет продаже. Я нашёл его на Авито. Спасибо продавцу Марии за сохранность. Б/у выдаёт лишь приклеенная эмблема Noctua. Она понравилось, и я не стал отдирать.

ПК тихий. Помогают холодный проц и кулер. В комплекте идут две вертушки. Их тоже не слышно.

Есть и недостатки. SFX блоки дорогие. Хотелось бы закалёнку. Нет USB-C, вертушки сзади и кабель-менеджмента.

С этим можно мириться. Зато теперь есть место под столом. Я не пинаю ногами комп.
Добавил в приложение такси кнопку "Сообщить о проблеме". Теперь клиент может написать службе поддержки.

Основную работу делают система сбора заявок и АПИ приложения. Моя же часть состояла в добавлении приложению трёх несложных экранов.

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

Обычно для обрезки задают лимит на длину. Например, сто символов. Если текст длиннее, то его обрезают, а в конце добавляют многоточие.

Плохо, что автоматическая обрезка часто идёт по середине слова. Это может искажать смысл. А иногда делать его и вовсе пошлым.

Илья Бирман как-то писал об этом. Он предлагает резать по концу предложения. Если же фрагмент превышает лимит, то резать хотя бы по ближайшей запятой или пробелу.

Я вспомнил ту заметку и решил применить метод Ильи. Сделал просто: у меня обрезка идёт по ближайшему к лимиту знаку препинания. Я теперь спокоен, что обрезка не приведёт к конфузу.
В мае этого года РКН значительно увеличил штрафы за нарушения законодательства в сфере обработки персональных данных. После этого многие поспешили убрать со своих сайтов формы заказа, счётчики, гостевые книги и т.д. Я тоже убрал форму отправки сообщения и Яндекс.Метрику. Оставил только свои контакты, чтобы посетители всё же могли со мной связаться.

Поработав месяц-два в таком режиме, я понял, что он мне не нравится. Во-первых, я всё же хочу получать статистику посещений — то есть вернуть счётчик Метрики. И хочу, чтобы посетители могли отправить мне сообщение прямо с сайта.

А во-вторых, мне было интересно пройти этот «квест» с уведомлением в РКН. Хотелось самому посмотреть, как это работает и к чему приводит. Получить этот опыт, чтобы затем делиться им со своими заказчиками. Говорят, что отправка уведомления якобы может стать поводом для проверки со стороны РКН. Так ли это? Я думаю, что нет. Юрлиц по стране — тысячи, и вряд ли будут проверять каждого: это огромные затраты времени и ресурсов.

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

Итак, в августе я составил уведомление и отправил его в РКН. Скажу честно: мне помогла жена — она уже проходила это по работе. Форма уведомления есть на сайте РКН. В ней, среди прочего, я указал, какие персональные данные собираю, как их обрабатываю и с какой целью. Я выбрал цель «Осуществление научной, литературной или иной творческой деятельности». Сайт некоммерческий, я ничего здесь не продаю. Только рассказываю о своём опыте веб-разработки через «литературную и творческую деятельность» в блоге.

Если быть точным, я отправил уведомление 24 августа. А первого октября его рассмотрели и приняли. Никакого уведомления об этом мне не пришло — ни на почту, ни куда-либо ещё. Узнать о решении можно только периодически проверяя статус уведомления на сайте РКН.

Сейчас 7 ноября. Пока никто не обращался ко мне с вопросами по поводу работы сайта, не говоря уже о штрафах. Надеюсь, так будет и дальше. А главное — я могу спокойно использовать форму обратной связи и счётчик статистики на сайте.
Обновил диалог доплаты водителю на сайте Такси 42. В часы пик желающих уехать бывает гораздо больше, чем водителей на линии. В это время служба такси старается уравновесить спрос надбавками к стоимости. Однако, такси в наше время — это не роскошь, а социально значимый сервис. Поэтому в Такси 42 такие надбавки не бывают большими. Чтобы сделать заказ привлекательнее для водителя клиент может самостоятельно добавить денег.

Часто клиентам бывает сложно выбрать размер доплаты. Это как с чаевыми в ресторане. Сколько отдать чтобы было не накладно для себя и приятно для официанта? Разница только в том, что в ресторане оплата идёт после ужина, а в такси стоимость поездки рассчитывается заранее.

Чтобы помочь клиенту определиться в диалоге доплаты есть готовые варианты: 30, 50, 70 и 100 рублей. Можно выбрать сумму, которая не ударит по кошельку. А можно воспользоваться опцией «Своя сумма» и ввести свой размер доплаты. Обычно так поступают при оплате наличными чтобы добить до круглой суммы и не искать мелочь.

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

По-моему новый диалог выглядит интереснее и лаконичнее. Сейчас на сайте временно работает вариант без эмодзи. Думаю, скоро мы их утвердим, и станет ещё лучше!
Я обновил логотип сайта chong.su. Напомню, что это мастерская манекенов для отработки техники кун-фу. Она принадлежит Дмитрию Затуло — моему учителю, у которого я долгое время практиковался. Замечательный мастер как в изготовлении чонгов, так и в технике единоборств.

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

Сейчас серый чонг мне уже не нравиnся. Кажется, будто он сделан не из дерева, а из бетона. А хотелось бы как раз передать текстуру и цвет дерева, красиво окрашенного и покрытого лаком. Поэтому я поменял цвет на «деревянный» и даже наложил текстуру.

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

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

Чтобы логотип был объёмнее, я поместил его на круглую подложку. Однако, он всё ещё показался простоватым. Тогда я обернул его орнаментом в виде волны. В китайской традиции волна олицетворяет непрерывность, власть, удачу и жизненную силу. В таком виде логотип выглядит законченным, компактным и узнаваемым.
Приведу ещё одну иллюстрацию для сайта мастерской chong.su. Она будет использоваться для страницы ошибки 404. Я нарисовал эти цифры тоже в виде стилизованных деревянных брёвен и брусков. С такой же окраской и текстурой, как на логотипе. Это подчёркивает целостность стиля и смотрится интересно и оригинально.
Работая на редизайном сайта для мастерской чонгов, я изучил на страницу о мастере. Это не только биография, но и рассказ о том, что такое чонг, какие они бывают, как отличить настоящий от подделки и почему он стоит столько.

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

Поэтому я предложил разделить текст на несколько страниц. Тем более, что он легко бьётся на перечисленные темы. Для этого даже не нужны правки.

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

Я подготовил вариант с разбивкой и теперь дело за согласованием с мастером. Надеюсь, пройдёт хорошо. В таком случае приступим уже к разворачиванию сайта.
Долгие годы я использовал для своего сайта хостинг Ru-Центра. А в этом году, когда пришла пора оплаты, неприятно удивился. Стоимость значительно выросла. Я давно не слежу за рынком виртуального хостинга — в этом просто не было необходимости. RU-Центр полностью меня устраивал по всем параметрам: скорость работы сайта, панель управления, служба поддержки и т.д. На динамику цен я тоже не обращал внимания, они тоже вполне устраивали. Раз в год оплачивал хостинг и забывал до следующего раза.

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

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

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

Кстати, перенос сайта прошел проще, чем я рассчитывал. Новый хостинг радует скоростью и удобством. Называть его я, конечно же, не буду, потому что за рекламу мне не платили. Кому интересно, всегда можно заглянуть в сервис WHOIS.
В приложении Такси 42 есть экран ввода адреса. Нужно набрать улицу и дом. Можно сокращать: вместо "ул. Ленина, д. 21" набрать "Лен 21". Приложение предложит подходящие адреса.

Наш бэкендер вложил много усилий в этот сервис. Поэтому мы используем его и на сайте.

Проблема: не все понимают, как им пользоваться. Я понял это через Webvisor. Системе нужен номер дома для подобра вариантов. Без него она предлагает только названия улиц. А люди не знают, что можно сокращать.

А ведь бывают длинные названия. Например, Большая Воробьёвская. Пользователи вводят его целиком. Опечатываются, стирают, начинают снова. Я переживаю, наблюдая за этим. Приложение не должно оставлять негатив. Хочется подсказать о быстром способе ввода.

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

PS. В своё время у нас на пр. Ленина, 21 находилась легендарная дискотека Авария.