
Web-технологии
Деплой NodeJs приложений
Недавно, ко всеобщему сожалению, heroku урезал свой бесплатный тариф для хостинга приложений, который использовался многими разработчиками для хостинга своих пэт проектов. В качестве альтернативы можно использовать:
- Render
- Railway
- Vercel
Ещё по теме:
- 3 free Heroku alternatives to deploy a Node.js app
- Using Express.js with Vercel
А каким бесплатным хостингом пользуетесь вы❓
https://t.me/cherkashindev/72
Новый проект Паши Дурова!!!!!!11
Народ, аська подыхает, но гля, чего я нашёл!!!!!
Вопрос к кодерам
Привет пикабу, подскажите как можно реализовать эту идею.
Имеется доступ к базе по API с правами чтения и записи в базу, но проблема в том, что запрос должен быть привязан к 1 IP, можно ли как то перенаправлять запросы к базе через другой сервер минуя привязку по IP ( т.е привязать IP одного сервера и перенаправлять запросы?)
Сам я не кодер и не айтишник, поэтому заранее извиняйте.
Как сейчас войти в IT frontend-разработчику?
Прошу прощения за, казалось бы, тупой вопрос, но хотелось бы получить ответ от шарящих в теме. Я написал несколько небольших учебных проектов (без курсов, всё изучал сам, английский хороший), есть небольшой коммерческий опыт вёрстки, кое-какие знания ES 6+, TS, Vue 3, React, Effector, Python (Flask), PostgreSQL, Linux. В данный момент в основном занят решением задач на leetcode и на codewars и подтягиванием общей теории. В общей сложности учусь уже около 7 месяцев, но за последние 4 месяца отзывов на подобного рода вакансии и тонны написанных сопроводительных дали всего три тестовых задания, которые были выполнены по требованиям и в срок: одно из них вообще не смотрели, т.к. после отправки буквально через минуту пришёл отказ, второе долго проверяли, но сказали, что позиция уже занята, третье (чтобы попасть на месячную неоплачиваемую стажировку!) я выполнил, но не прошёл собеседование (сказали, недостаточно знаний по TS и React). Т.е., из нескольких сотен откликов на подобные вакансии в разных городах с готовностью переехать и работать буквально за еду - 3 тестовых задания и одно непройденное собеседование на стажировку. Я, конечно, понимаю, СВО, рынок упал, но складывается ощущение, что "начинальщики" сейчас попросту не нужны вообще, а с учётом того, что мне уже за 30 и нет технического ВО, то, судя по всему, дела мои совсем плохи...
Подскажите, что я делаю не так? Продолжать искать и учиться? Или попробовать освоить другой стек? Или объективно лучше заниматься другой деятельностью, а IT отложить "до лучших времён"?
Спасибо.
Новый подход в разработке веб приложений — HTMX
После появления jQuery, захватившего практически всю веб-разработку, прошло уже довольно много времени, сейчас уже мало кто использует эту библиотеку, кто-то перешёл на разработку на чистом JS, кто-то на React и Vue, и вот пару лет назад появилась новая идея, сравнимая по простоте с jQuery, это HTMX.
Теперь взаимодействие с сервером можно описывать декларативно в HTML атрибутах, создавая быстрые веб-приложения без JavaScript кода.
Автор этой небольшой библиотеки переписал со своей командой из 4 человек свой сервис, созданный на React и Django, и получил уменьшение кода на 67% при той же функциональности, при этом команда из двух фронтендеров, одного бэкендера, и одного фуллстека, превратилась полностью в фуллстековую.
Я тоже начал использовать htmx.js в своей работе, теперь можно выкинуть много ванильного JS кода, заменив его на декларативщину HTMX, сложно устроенные интерфейсы становятся простыми и более функциональными.
Бэкенд может быть любым, можно даже вообще без него обойтись для некоторых задач, например, подгрузку при клике какой-то информации можно осуществлять прямо из статичного HTML файла, и это будет отлично и быстро работать.
Выпадающее меню на css
Здравствуйте уважаемые, очень нужна помощь. На основе первого примера с сайта https://html5book.ru/mnogourovnevoe-vypadayushee-menu/
делаю 4х уровневое выпадающее меню. В связи с большим количеством планируемых пунктов нужно укоротить меню до 200-300px и сделать прокрутку. Кому не лень, гляньте пожалуйста код по ссылке и скажите, как его поправить. Сам пытался пихать overflow-y, у меня ничего не вышло
Убираем спагетти-код
Иногда при написании проги появляется спагетти-код. Это значит, что для простоты и скорости решения мы копируем одинаковые куски кода, которые делают почти одно и то же. У них внутри одинаковая логика, но разные входные данные, и мы их просто скопировали-вставили.
У такого подхода к программированию есть несколько проблем:
• расширять функциональность сложно, так как легко запутаться, какую именно часть кода мы расширяем или оптимизируем;
• читать такой код трудно, потому что один и тот же код встречается много раз.
Единственное, когда можно использовать такой подход — если нужно что-то быстро протестировать и понять, работает оно или нет. Если не работает — значит, мы сэкономили время и не стали тратить его на неудачное решение.
А если всё работает как нужно, значит, настало время переписать код в нормальном виде. Для этого нам понадобится некоторое подобие объекта, но не на основе класса, а созданное вручную.
Делаем красивые пуши для вашего сайта в стиле MacOS
Новый тип переменной: объект
У переменной типа «объект» есть одна отличительная особенность: она состоит как бы из двух частей — свойства и значения, и здесь всё то же самое — у объекта меняются только значения свойств. Поясним на примере языка JavaScript.
Сделаем переменную-объект, у которой будет два свойства — имя и возраст:
var person = {
name: "Миша",
age: 35
}
Чтобы поменять имя, нужно написать название переменной и через точку указать название свойства, которое хотим изменить:
person.name = "Илья";
person.age = 31;
Свойств у объекта может быть сколько угодно:
var person = {
name1: "Миша",
name2: "Саша",
name3: "Лена",
age1: 35,
age2: 21,
age3: 19
}
Но если у объекта получается много однотипных свойств, можно сделать их массивом и обращаться к ним по номерам. А если элементы массива тоже сделать объектами с одинаковыми названиями свойств, получится вот такая магия:
Смотрите, так как у каждого элемента массива одинаковое название свойств, то, меняя просто номер элемента, мы можем запоминать разные свойства у одинаковых по сути элементов. Это нам пригодится на следующем шаге.
Собираем дубли
Пройдёмся по нашему старому коду из прошлой статьи и соберём все одинаковые переменные, которые отличаются только цифрами:
• Mask(1,2,3,4)
• element_Id_(1,2,3,4)
• number_Id_(1,2,3,4)
Первые две переменные задают ссылку на объект и маску для сравнения элементов, а вторые две отвечают за количество задач в колонках.
Свернём эти 16 переменных в один большой объект:
Теперь, зная только номер колонки, мы можем обратиться к объекту, маске и количеству задач в колонке. Сначала это может показаться громоздким, но на самом деле сокращает наш финальный объём программы в 4 раза.
Чтобы избавиться от дублей в коде, используют циклы или выносят повторяющийся код в отдельную функцию. На самом деле вариантов больше, но основные — эти.
Используем цикл
Циклы применяют в тех случаях, когда спагетти-код по очереди используется несколько раз, где отличаются только порядковые номера элементов. В нашем случае это функция showTasks (). Она берёт по очереди все элементы из локального хранилища и по очереди же сравнивает их с шаблоном — для первой, второй, третьей или чётвёртой колонки. Единственное, чем отличаются фрагменты — маской и колонкой, куда их отправлять:
Сделаем то же самое в цикле, используя нашу большую переменную-объект. Для этого мы организуем цикл от 0 до 3 (потому что нумерация элементов массива начинается с нуля) и по очереди проверяем все значения:
Код сократился в 4 раза, читать стало проще, и всё меняется в одном месте. Красота.
Делаем отдельную функцию
У нас есть вот такой огромный кусок кода, который делает одно и то же, только с разными элементами.
Здесь 4 раза задаётся обработчик нажатия клавиш в поле ввода у каждой колонки. Очевидно, что проще вынести повторяющийся код в отдельную функцию и вызывать её по мере необходимости:
Что дальше
Мы только что убрали почти весь спагетти-код из нашего проекта. Почти — потому что у нас осталось два неопрятных фрагмента:
2. У нас остались 4 обработчика нажатий, которые делают одинаковые вещи — вызывают одну и ту же функцию с разными параметрами.
Оба фрагмента можно оптимизировать, например, с помощью jQuery.
Попробуйте сделать это сами, пока это не сделали мы








