• Зачем в сервисах типа github или jsfiddle у записи генерируется не порядковое число, а хеш?

    @Akela_wolf
    Extreme Programmer
    Это зависит от того как организована система хранения. Может получиться так, что искать по хэшу она будет быстрее чем по обычному числу т.к., например, может использоваться quad tree или octree. Если использовать число, то старшие биты будут плюс-минус одинаковы, что приведет к тому что данные скопятся в одной из веток дерева, а другие будут пустыми. А если дерево еще и распределенное - это будет означать что данные неравномерно распределены по нодам. Хэш такую проблему решает сразу. Для гита вероятность коллизий хэша пренебрежимо мала, практически нулевая.

    В случае гитхаба, вероятно, данные хранятся в гит-репозитории. Поэтому хэш коммита в ссылке - естественное и логичное решение. Насчет фиддла сказать не могу - но в принципе тоже, скорее всего, что-то аналогичное, только закодировано не в 16-ричную систему, а в 32-ричную (5 * 8 = 40 бит)

    Плюс хэш можно генерировать независимо от хранилища (по содержимому + времени, например). А для генерации последовательных идентификаторов нужно обращаться в систему хранения, которая должна следить за их уникальностью и, таким образом, может стать "узким местом".
    Ответ написан
    6 комментариев
  • Как актуально писать css?

    iiiBird
    @iiiBird Куратор тега Вёрстка
    Пока ты спишь - твой конкурент совершенствуется
    Не очень понятно, чем тебе библиотеки Bootstrap Tailwind и т.д. мешают дальше писать "использую scss модули с использованием _variables & _mixins"?
    я уже писал где то про Bootstrap, что это в первую очередь инструмент. и используют его, когда в нем есть необходимость. ты ж другие npm зависимости не используешь везде, правильно? а ставишь только те, которые тебе пригодятся в этом проекте.

    ну а про гриды ваще бред. это просто css стиль. это то же самое что говорить "border я выучил, а outline мне не нужен. стоит ли учить outline?" и так говоришь, что тебе на их изучение год потребуется.
    Ответ написан
    Комментировать
  • В каких случаях использовать SPA с серверным рендерингом, а когда обычный сайт?

    bootd
    @bootd
    Гугли и ты откроешь врата знаний!
    Мода есть, несомненно, но не только в ней дело!

    стоит вопрос делать его как SPA на Nuxt или как обычный сайт с перезагрузкой страниц


    Зависит от бекенда, если бекенд делает для вас api, тогда вам только SPA(не важно на чём), а если по старинке, значит по старинке, с перезагрузкой страниц. Тут как договоритесь.

    Плюсы подхода разделения бека и фронта аля SPA:
    1. Само по себе разделение ответственности. Фронт отвечает за отображение, бек за данные. В этом их суть

    2. Удобство работы. Вы работаете исключительной с той кодовой базой, которая вам понятна, приятна.

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

    4. Сами по себе преимущества spa. Обновление только нужных участков html, более быстрое решение рутинных задач, за счёт автоматизации многих процессов аля(vue cli, nuxt и т.п. - там всё уже из коробки собирается и настроено, только пиши код), разделение кода на чанки и т.п., думаю и так понятно

    5. Какая никакая, но архитектура приложения.
      Разворачивая проект через cli, вам уже даётся начальная структура папок, что уже говорит о том, что вам не нужно думать хотя бы об этом. Вы заранее знаете(если у вас есть опыт, если нету, ничто не поможет всё обговнять) что для решения тех или иных фич вам нужны те или те возможности фреймворка.
      Хоть реакт, хоть vue, уж тем более angular.



    Минусы подхода разделения бека и фронта аля SPA:
    1. Настройка всего деплоя приложения на сервере. Настроить gitlab.ci, настроить докер, настроить vps(если уже не готов), настройка nginx(не всегда, но бывает). Или вы думаете, за вас кто-то это будет делать? Бекенд себе всё настроит, а вы сами давайте. Вы же хотели разделение. Дай бог, что у вас в компании есть админ, который занимается подобными вопросами или же просто кореш, готовый вам помочь.


    2. SEO - большая проблема нашего времени. Если SEO, значит ssr, раз ssr, значит nuxt(ну или ручками настраивать, удачи). Тогда тут вступает в силу node.js. Его бы на сервере ещё запустить, на порту повесить и т.п. Просто SPA собрал и всё, а вот SEO, SEO накидывает на нас гемора и работы.


    3. Реализация "модулей" с 0, которые в старом подходе у бека уже можно скачать(из магазина готовых решений например, если это цмс, ну или готовые пакеты у фреймворков) и запустить(корзина товаров, фильтры, каталоги, сортировки и т.п. вещи). На фронте придётся всё делать заново, потому что готовых решений нет.

      Если взять какой нибудь вордпрес или битрикс, где уже имеется огромное кол-во готовых решений, которые подключил и они работают, минимально +- правя стили, то в spa подходе, дай бог что бы эти решения имели rest api для вашего чудо spa. А вы в свою очередь будете клипать вёрстку и логику с 0, мучаясь с кучей запросов, обновлением данных и т.п. вещами.

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


    4. Сложность понимания, на чьей стороне произошла ошибка. Фронт всегда будет выступать в первых рядах. Все камни полетят к вам. Не вывелось то-то, фронт иди сюда, не отправилась форма, фрооооонт, ауууууу!!!!!
      А как винить за это менеджеров? Они не должны сидеть кликая f12 и анализируя, где и какая ошибка получилась.
      Иногда бек виноват, иногда фронт.

      Да, можно подключить какой нибудь sentry. Но это, на мой взгляд, лишь доказывает, что с наш подход усложняет поддержку и разработку. Теперь у нас появился ещё 1 сайт, где мы смотрим логи фронта, что же у него случилося. У бека всё просто, зашёл на страницу, бац, ошибка sql на всю страницу, всё ясно становится)))

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


    5. Очень частая зависимость от данных бекенда. Изменилось 1 поле у бека, вам скорее всего нужно идти и править это. Добавилось новое поле, опять бежать и выводить 1 переменную. Мать твою, бек, сам не можешь что-ли переменную вывести??? Ах да, у нас же SPA.


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

      В то время, когда бы за вас всё бекенд делал, потому как многое у него уже готово, а вы просто вёрстку ему отдали бы и всё. Ну подвёрстывали бы иногда, ну пару скриптиков добавляли.


    7. Ну и последнее, удорожание поддержки такого проекта. Т.к. вместо единой кодовой базы, теперь их 2. Внесение изменений требует большего кол-ва людей, нежели при обычном подходе. Бекендер и без фронта может написать jquery ajax запрос или вывести кнопку с модальным окном и формой, потому что очень часто тупо юзают бутстрап и собрать подобные блоки просто, или же просто вывести новое поле с текстом или ещё чем-либо.



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

    saboteur_kiev
    @saboteur_kiev Куратор тега Организация работы
    software engineer
    В итоге оказывается что во-первых было очень много багов, и во-вторых, требование программисты поняли не так, прочитали не все, да и в требованиях прямо каждая мелочь не была учтена. Программисты правят то что не нравится тестировщику и цикл повторяется снова и снова, пока вся команда не поймет задачу одинаково и результат не станет похожим на ожидаемый в требованиях.


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

    Эм, если все настолько плохо, что надо повторять цикл снова и снова, то где все это время был тимлид, который давал изначальную задачу?
    Его привлекать в первую очередь, чтобы он либо переобъяснил разработчикам все, либо поправил свои требования, чтобы они были понятнее.
    В моем понимании тимлид - это один из разработчиков, который ежедневно контролирует их работу, а не ждет пока ему принесут готовое через месяц.
    А так да, тестировщик помогает разработчикам правильно понять требования, но он не должен биться головой об стену в одиночку. Если разработчикам что-то неясно, они могут и сами поднять жёпку и сходить к тимлиду, к аналитикам, к тестировщикам чтобы понять задачу правильно.
    Ответ написан
    1 комментарий
  • Почему за просмотр резюме HR необходимо платить деньги, а на биржах фриланса наоборот?

    @spaceatmoon
    На бирже покупателем является исполнитель, а на сайтах по поиску работы является работодатель.

    Биржа не занимается поиском исполнителей. Это такие услуги по рекламе на максималках с кабальными условиями. Кто будет исполнителем вообще не важно, его личность должна быть скрыта, ведь только хозяин должен видеть его паспорт. Исполнители хозяина должны слушаться и говорить с гостем Биржи должны так, как говорит хозяин и держать голову ниц. За лишние слова хозяин наказывает, вплоть до выгона на мороз без права вернуться. При выполнении поручения от гостя исполнитель обязуется платить дань на доход. В некоторых биржах есть ещё оброк раз в месяц. Каждый хозяин ведёт учёт лучших исполнителей. Прикол в том, что эти звёздочки ничего не дают при выходе из этой биржи. Совершив Юрьев день, исполнителю придётся начинать всё сначала, ибо звать вас никак. Ведь внутри любой биржи, личности вашей нет.

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

    Свободные люди не зависят от работодателей и соответственно их внимание привлечь сложнее. Чтобы привлечь внимание такого человека, необходимо немного поделиться золотом. У кого больше золота, тот имеет больший выбор и может выбрать себе подходящего кандидата.
    Ответ написан
    1 комментарий
  • Как профессионалы, создающие большие проекты, используют Vim / Emacs?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Emacs
    Седой и строгий
    Подозреваю, что старички легко могли бы работать даже в предельно примитивных текстовых редакторах, которые не позволяют ничего, кроме набора текста. Я не на столько стар и умудрён, но для меня зачастую тоже проще воспользоваться консолью и редактором кода, чем интегрированной средой разработки. Тем более, что расширяемость и конфигурируемость Emacs позволяет покрыть большинство потребностей разработчика, а запускается и работает он сильно быстрее. Вероятно, их можно испортить кучей плохо написанных плагинов, но мне с таким сталкиваться не приходилось.
    Ответ написан
    3 комментария
  • Где и как предложить идею нового свойства CSS?

    @Flying
    Спецификаций CSS занимается рабочая группа в составе W3C. Там же есть и информация о том, как принять участие / предложить свою идею.

    К примеру вы можете создать issue в репозитории рабочей группы.

    Однако вам стоит понимать, что работа над спецификацией уровня CSS Grid - это многолетний труд сотен людей для того, чтобы довести её до реального использования. Если вы предполагаете что за всё это время никто из них не додумался до этой идеи - то вам стоит подумать ещё раз.

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

    За примерами далеко ходить не нужно: parent selector - мечта уже нескольких поколений разработчиков и тема постоянных вопросов. Однако его нет в спецификации (хотя он был в первых драфтах CSS 3 насколько я помню) и скорее всего не будет. Причину, если интересно, попробуйте поискать сами.

    Или, к примеру, такое очевидное, казалось бы, опущение как отсутствие аналога :hover для "stuck" состояния элемента с position: sticky. Ведь его явно не хватает почти любому кто использовал этот стиль. Однако его не будет, о причинах (логичных, но далеко неочевидных) можно почитать в соответствующем issue.

    Конечно, если вы внимательно и детально изучите все спецификации и проработаете и напишете своё предложение - оно, вероятно, будет рассмотрено. Но более вероятна ситуация что где-то здесь вы найдёте аналогичную или близкую идею.
    Ответ написан
  • Заочное высшее образование для должности Team Lead?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    Профильное высшее может помочь при прохождении первичного отбора рекрутером разных резюме при трудоустройстве в фаанг, особенно за рубежом или в госсектор.
    Если рекрутера уже прошел, и добрался до технического интервью - там всем плевать на образование, важны знания и опыт.

    Просто нужно помнить, что есть определенные компании, где высшее - просто требование корпоративной политики. И есть отдельные рекрутеры, которые отбирают резюме, и у которых может быть свое мнение.
    За этим исключением на образование практически никто не смотрит, и уж тем более вообще никто не смотрит это была очка или заочка.
    Я бы даже сказал, что заочка лучше - человек мог в это время уже набирать опыт.
    Ответ написан
    Комментировать
  • Заочное высшее образование для должности Team Lead?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Как раз на высоких должностях всем вообще пофиг даже на наличие высшего образования.
    Ответ написан
    Комментировать
  • Как часто приходится обновлять знания и насколько широко развитие?

    saboteur_kiev
    @saboteur_kiev Куратор тега IT-образование
    software engineer
    Что-то новое постоянно узнаешь, может быть не каждый день, но это тоже зависит от проекта.
    Новый проект - может быть множество новых технологий, на каждую уйдет целая виртуальная жизнь.
    Старый проект - можно углубиться в нюансы, и изучить то, чем пользуешься, со сменой версий может меняться как незначительно, а может вызвать лавинообразные изменения в проекте, потому что либо депрекейтится то, чем ты пользовался, либо ты пользовался чем-то не особо разобравшись, а тут изменения коснулись так, что приходится разобраться досконально.

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

    Нелюбопытные программисты остаются на уровне стабильный джун - средний мид.
    Ответ написан
    4 комментария
  • Как часто приходится обновлять знания и насколько широко развитие?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Программист - это слишком широкое понятие, они знаете ли, люди, а все люди разные.

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

    Если этого не делать, можно просто покрыться мхом - в то время, когда он решает задачу X инструментом Y за 1 час, его товарищ по цеху решит X инструментом Z за 10 минут. Следовательно, у него будет больше свободного времени чтобы или отдохнуть, или заработать еще больше.

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

    Выбор того "нужно ли мне учиться" зависит от того, насколько вам нравится иметь свободу.
    Ответ написан
    Комментировать
  • Почему нужно гуглить на английском?

    Объясните мне почему программист должен гуглить на английском?
    Вас кто-то заставляет? Не хотите — не гуглите. Возможные причины вы написали в вопросе.

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

    RAX7
    @RAX7
    Можно сделать простой эффект на css

    Можно более сложный на WebGl
    Ответ написан
    Комментировать
  • Как стать хорошим аналитиком в IT?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Если вы аналитик то используйте эти навыки для достижения своей цели. Сформируйте цель, определите слабые места, недостаток компетенций, декомпозируйте. Если вы этого не можете сделать то вы не аналитик, а самозванец. Аналитик это одна из самых гибких профессий где умение номер ноль это справляться с новыми для себя проблемами
    Ответ написан
    2 комментария
  • Идеальный алгоритм вёрстки сайта?

    delphinpro
    @delphinpro Куратор тега Вёрстка
    frontend developer
    В целом согласен. До пункта №7.

    Я обычно придерживаюсь принципа верстки независимыми блоками.
    Поэтому после анализа макетов, я делаю одну-две-три (смотря по объему макетов) вспомогательных страниц, на которых верстаю:

    1. Базовые элементы. Общая типографика, кнопки, ссылки и т.п.
    2. Общие блоки. То что повторяется на нескольких страницах и/или может быть переиспользовано, какие-то виджеты, менюшки, и т.п.

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

    Для этого всё закидываю на гитхаб-пейдж, чтобы по ссылке я мог открыть с телефона или попросить знакомого проверить на другой ОС c телефона


    Это лишняя трата времени. Пусть небольшая, но все же. Плюс, отслеживать качество верстки все-таки удобнее в процессе, а не по окончании подкручивать.
    Поэтому используем browser-sync. Поднимается сайт, доступный по IP в домашней локалке с любого устройства. Совет: использовать всегда один порт в browser-sync, а на устройствах сделать закладки на этот адрес. Любой сайт, который в данное время разрабатывается, открывается одним тапом по закладке.
    Кроме того BS дает бонус в виде синхронизации действий сразу на всех устройствах: клики, прокрутка, ввод. Это мега-удобно — кликаешь на компе, краем глаза смотришь в планшет и телефоны, сразу видишь там все изменения и поведение.

    Всё готово, сжимаю CSS, JS. через веб-сервисы.


    Опять тратите время. Настроенный Gulp в одну команду проделает все оптимизации (на больших проектах даже кофе можно успеть сделать, пока собирается билд=).

    Еще обратите внимание на инструмент lighthouse в инструментах разработчика.

    скриншот
    608fcaa260f31153020142.png


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

    Про CMS ничего не скажу. Клиенту удобнее кнопочки тыкать в условном вордпрессе.

    Я не упомянул SASS-фигас и т. д, так как не увидел практической пользы для проектов на 1-15 страниц.


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

    Ну вот зачем PUG? Как конкретно он помогает на небольших проектах 1-15 шаблонов страниц.


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

    Префиксы? В кодовом редакторе они и так есть.


    Я считаю, что исходный код должен быть чистым, без префиксов. Это лишний визуальный мусор. Пусть лучше автопрефиксер этим занимается. К тому же этот плагин использует актуальную базу caniuse на основе вашего .browserlist. Пусть профит и не большой, но все же поменьше на выходе неактуальных свойств.
    Ответ написан
    2 комментария
  • Как делать фронтенд после бекенда?

    delphinpro
    @delphinpro
    frontend developer
    Тобеж мы правим не .scss а непонятно где разбросанные .css,


    Ну так вы сами себе злобные буратины.
    Также занимаюсь поддержкой сайтов. Те из них, которые сделаны мною с нуля имеют аккуратную кодовую базу (речь о фронте). Любые изменения вносятся в исходники, исходники билдятся, потом заливаются на сайт.
    В чем проблема-то?
    Ответ написан
    2 комментария
  • Встречались ли вам овер-инженеры среди джунов и миддлов? Как надо с такими поступать?

    DevMan
    @DevMan
    человек вообще ни у чом не уиноват.
    просто в компании не выстроены (или не правильно выстроены) бизнес-процессы.

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

    vabka
    @vabka
    Токсичный шарпист
    получить авторские права

    Нарисовать самостоятельно, тк это единственный способ получить авторские права)

    А самый надёжный способ получить исключительные права - заключить Договор об отчуждении исключительного права
    Ответ написан
    7 комментариев
  • Как выбрать технологии для изучения для карьерного роста?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Просто учу то, что мне нравится, но как-то так оказывается, что мне нравится то, что лет через 5-10 оказывается очень востребованным.
    Ответ написан
    3 комментария
  • Препроцессоры CSS, зачем их знать чтобы получить работу?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Потому что нанимают в команду, в которой приняты определённые технологии, инструменты и подходы. Нанимают, чтобы сотрудник делал ровно то, что от него хочет наниматель, а не то, что сотруднику нравится.
    Ответ написан
    4 комментария