Web

Блог посвящен Веб разработке, HTML, CSS, Javascript, всевозможные браузерные технологии. Разработка для мобильных браузеров. HTML5, CSS3, WebGL, и другие веб технологии. SEO Поисковая оптимизация, интернет коммерция, браузерные игры, Серверные языки программирования. PHP.

Что не так с SOLID

Я профессионально занимаюсь веб разработкой более 25 лет, за это время у меня накопился достаточно большой опыт, но некоторые вещи всегда вызывали противоречие, среди них:

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

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

Marketing first

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

 

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

  • Автор: kosmom
  • Просмотров: 110
  • Комментариев: 0
  • Создан: 25.09.2024 23:00

Вам не нужен Axios

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

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

  • Автор: kosmom
  • Просмотров: 126
  • Комментариев: 0
  • Создан: 14.09.2024 17:33

Иллюзия вечного хостинга

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

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

  • Автор: kosmom
  • Просмотров: 291
  • Комментариев: 0
  • Создан: 04.04.2024 22:48

Рецепт высоконагрузочной архитектуры

1. Общая архитектура системы
Принцип автомасштабирования и автовосстановления. Вместо одного единого монолита (точки отказа) — система делится на несколько согласованных микросервисов, управляемых через механизм оркестрации в облачной инфраструктуре

2 Читать далее

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

  • Автор: kosmom
  • Просмотров: 456
  • Комментариев: 0
  • Создан: 25.11.2023 22:31

Элегантный способ провести синхронизацию не деактивировав все записи

Такая инженерная задачка:

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

Речь идет о средней сложности интеграциях, не слишком быстрых и не слишком долгих

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

Предлагаю обсудить задачу и элегантное решение далее

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

  • Автор: kosmom
  • Просмотров: 413
  • Комментариев: 0
  • Создан: 26.10.2023 17:17

Рекомендации правильного проектирования кода чтобы максимально избежать легаси

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

Давайте обсудим способы избежания этого неприятного явления

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

  • Автор: kosmom
  • Просмотров: 529
  • Комментариев: 0
  • Создан: 12.08.2023 16:08

Cvid. Первый опыт публичных сервисов

Первый публичный хобби проект. 

В 2010 году в мире веб разработки случился прорыв под названием jquery. Тонны js кода под разные браузеры превратились в элегантные понятные обращения. Киллер фича с вау эффектом была анимация блоков. Css анимации тогда не существовало, был js который раз в минимальный интервал двигал параметр на определенную дельту и получалась плавная анимация. Лёгкая и понятная, наивная в отличие от флеша. Флеш тогда ещё был, но уже отмирал. 

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

Тогда с сервисами вообще было туго. Были сервисы а-ля залей картинки, мы тебе их них сами слайд шоу соберем. 

Как вы понимаете, мощь jquery способна на большее, чем тупо кинуть клинки картинки

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

  • Автор: kosmom
  • Просмотров: 542
  • Комментариев: 0
  • Создан: 09.04.2023 11:03

Prodob.История успешного неуспеха

Prodob 2012 - 2023

Продажа и обмен

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

Основная фича сервиса - упростить размещение объявлений. Если это обмен БУ товаров - то тратить много времени на размещение своих мелких вещей - это не выгодно. По этому идея была максимально упростить данный процесс. Для этого нужно ответить на вопросы кто где что и когда за что готов продать.

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

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

Далее - остальная история развития проекта от идеи до закрытия

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

  • Автор: kosmom
  • Просмотров: 491
  • Комментариев: 0
  • Создан: 07.04.2023 11:00

Ресурсы GraphQl

авторы graphQl хотели добиться максимальной гибкости при взаимодействии клиента и сервера. Сервер не должен знать обо всех клиентских версиях и набора данных в каждый момент. А поиск должен проходить по переданным клиентам условиям и с подтягиванием указанных клиентом связей

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

Перетягивание всего механизма graphql слишком объемно и сложно, особенно для простых проектов.

Но сама идея запросов ресурсов через клиента в рамках дозволенного - реализуется достаточно просто и не требует каких-либо серьезных затрат и алгоритмов, что позволяет использовать их в обычном запросе.

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

  • Автор: kosmom
  • Просмотров: 567
  • Комментариев: 0
  • Создан: 02.01.2023 16:14

KPI, Грейды и оценки

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

Нельзя оценивать всех разработчиков по заранее известным критериям
При разработке сложной системы - теоретически можно разложить все ее составляюзие компоненты и как-то классифицировать сложность каждого из навыков

Если это веб система - наверное всем знакома общая классификация направлений, таких как фронт, бек, веб-дизайнер
Иногда ее делят на более узкие специализации, такие как андройд, иос, администратор базы данных, UX дизайнер
Иногда обобщают в более широкие специализации - фулстек, техлид

(Это всё еще не брало во внимание управленческие компетенции, где всё становится в разы неоднозначней)

Разбираемся в мире компетенций

 

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

  • Автор: kosmom
  • Просмотров: 612
  • Комментариев: 0
  • Создан: 13.06.2022 13:09
Что не так с SOLID Вам не нужен Axios Иллюзия вечного хостинга Рецепт высоконагрузочной архитектуры Элегантный способ провести синхронизацию не деактивировав все записи Рекомендации правильного проектирования кода чтобы максимально избежать легаси Cvid. Первый опыт публичных сервисов Prodob.История успешного неуспеха Ресурсы GraphQl KPI, Грейды и оценки Скроллинг при возвращении назад Говорят, клик не настоящий Скроллинг фона в модальных окнах на Iphone Undefined не перехватывается через watch Полиморфное отношение к множеству одинаковых сущностей в Eloquent Laravel Общая папка со скриптами на несколько версий приложения VUE Keep-alive активна ли страница Создаем аналог select2 стандартными средствами vuetify Печать из браузера в один клик без подтверждения без смс и регистрации Продвинутый механизм файлового логирования Пишите пароль без звездочек VUE дружим с Роутингом Управление расширением через GET параметр Не шутите с html Временная зона и боль Ошибки при проектировании Избегайте исключений в английском языке при написании сущностей Пробел в начале или конце пароля Стандарты именования. Текущее положение дел Апи Прокси для хостинга на шаред хостинге Вам больше не нужны бекапы Самопис, или готовое решение? Полный аякс Фиксируемый по горизонтали заголовок страницы Загружаем сторонние скрипты асинхронно CSRF универсальный способ защиты Bootstrap snippet Резиновое отображение таблицы Соединение JS и CSS между собой Правильная Ориентация при заливке изображений JPEG Доработка для Bootstrap, используем Progressbar во всех элементах Мгновенное отображение страницы Объединяем CSS и JS файлы Open-Filemanager Правила простого кода в веб-разработке Полукеш, или Суперкеш. Простая реализация Progressbar долго открывающейся страницы PHP Fatal error: Allowed memory size of . Хватит. Давайте решим проблему 7 Методов, которые помогут сделать любую WEB страничку лучше Вычисление математических формул на PHP и Javascript Простое программирование сайтов. Суть Сокращение числа лишних переменных из HTML формы Простая реализация взаимодействия между приложениями через SOAP Простое программирование сайтов. Суть. ООП Раскрутка сайта. Инструменты продвижения Раскрутка сайта. Продвижение сайта. На простом языке Кодировка для сайта. Какую выбрать? Как сменить? Реализация качественного вывода данных. ч3. Сортировка Реализация качественного вывода данных. ч2. Постраничник Реализация качественного вывода данных. ч1. Фильтр Оптимизация работы сайта. Часть 2. Сжатие мелких изображений Оптимизация работы сайта. Часть 1. Сжатие стилей и скриптов Правильная Передача данных AJAX в веб-приложении Быстродействие. Избавляемся от Smarty Как писать правильное ТЗ. Ошибки при взаимодействии с разработчиками Упрощаем множественное вложение файлов Экономим на доменах В поисках лучшего Flash FLV Player проигрывателя видео для сайта Безопасность сайта Создаем один портал из множества проектов Как запустить сайт Что такое хороший дизайн для сайта? Нужны ли готовые CMS? Сколько стоит сайт? Веб сайты – инертны Читаем Excel 2007 (XLSX) при помощи PHP Пишем формочку обратной связи аля Reformal Заработок через Интернет. Рубль в день просто так – это много или мало? Авторизация. Запомнить меня. Как это делается? Реализация постраничника Эволюция создания ядра для сайтов Перевод статических блоков сайта средствами CSS Универсальный экспорт отчета в word и excel Ввод паролей через последовательность зажатия клавиш Теория управления компонентами из админки
Ваши предложения и пожелания пишите на pro@kosmom.ru

Теги

ajax axios backup bootstrap core framework eloquent excel home project html ios javascript keep-alive kpi laravel legacy mvp orm php rip scroll solid timestamp undefined vue vuetify watch безопасность биометрический паспорт ваша любаша для путешествий загран на 10 лет загран паспорт загранпаспорт нового образца зимние книги как заполнить анкеты кеширование книги на новый год логирование мцф недвижимость новогодние книги образец заполнения антеты паспорт для путешествий паспорт нового поколения печать продукт проектирование прокси разработка ремонт ремонт в апартаментах ремонт нежилого помещения самокат сдача сколько стоил ремонт апартаментов спорт стандарты таблица финансы хостинг цена ремонта что почитать зимой юзабилити

Случайный пост

13.06.2022 13:09
KPI, Грейды и оценки