Задать вопрос
  • Можно ли считать JavaScript полноценным языком программирования?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Может у него было тяжелое начало, но сейчас, можно ли его считать полноценным?
    JS тьюринг полный язык и всегда им был. Тьюринг полнота означает, что на нем можно посчитать все что в принципе вычислимо.

    Просто в нем даже импорт файла нормально нельзя сделать (даже в css он есть хоть и не полный)...
    Уже 5 лет как можно, в отличии, например, от C, где отдельные модули до сих пор нужно линковщиком собирать после компиляции. Так что, по Вашему C тоже не полноценный теперь?

    Нету многих приколов, фишек и функций, хотя я понимаю что внедрять их поздно, и для браузера он создавался.
    Хотелось бы конкретики, каких таких "приколов" Вам не хватает? Вот тут ребята открыты к предложениям: https://github.com/tc39/ecma262/blob/master/CONTRI...
    Ответ написан
    Комментировать
  • Что более востребовано react или Vue?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Магия доступная только избранным
    5f3ff078701c7850503649.png
    5f3ff0813a552401639622.png
    Ответ написан
    6 комментариев
  • Используете ли вы React-подход components/containers в проектах?

    TchernyavskD
    @TchernyavskD
    Formoshlep
    Если мы говорим про понятие контейнера в виде реакт - компонента:
    Почитайте Атомик дизайн под Реакт, либо Feature Sliced
    Если совсем проще, то можно достичь, что Реакт будет только для рендера вью, а вся логика уйдет из уровня реакта, либо ее большая часть. Это идеально можно реализовать, например, с effector. Последние полгода нигде нет контейнеров.

    Почему AtomicDesign спасет вашу душу.

    Некоторые считают, что этот подход слишком заморочен. Заставляет много думать о расположении элементов, а при усложнении - перемещать его в другие директории. Если спросить Родионова - найдется ещё несколько причин, почему не надо использовать Atomic Design. В этом посте я хочу рассказать об обратном: как использовать подход Брэда Фроста в React.

    В самом начале необходимо понять - нужен ли вашей команде этот архитектурный дизайн. Достаточно ответить на следующие вопросы:
    - сколько человек будут разрабатывать фронтенд?
    - сколько команд будут использовать ваш код?
    - сколько проектов используют один UI дизайн?
    Если у вас один небольшой проект, в котором всего два фронтендера - вам не нужен AtomicDesign. Если в вашем проекте около 10 фронтендеров и намечается второй проект - нужно задуматься о внедрении AtomicDesign. Тем более если в вашей компании проекты используют общую библиотеку компонентов или планируется внедрение.

    Многие задают мне один и тот же вопрос: "Куда положить компонент X?". Отвечаю сразу для всех компонентов: AtomicDesign - это подход, обеспечивающий вам архитектуру UI компонентов - не более. То есть контейнеры/коннекторы/роутеры вы можете класть в любую директорию, кроме ui. Я всегда рекомендую начать изучение с прочтения книги автора atomicdesign.bradfrost.com, но ниже немного опишу составные части.

    Сразу следует понять, что компоненты AtomicDesign — это бизнес-сущности, это то, чем могут оперировать дизайнеры и разработчики вместе. Не надо включать сюда различные таймеры появления блоков или логику переключения вкладок. Пусть даже они у вас описаны в виде компонентов или HOC'ов.

    Так почему это все спасает души? Чтобы понять ответ, обратимся к ещё одной теме фронтенда: типизированный javascript. Typescript/Flowtype придумали для наложения определенных ограничений на код, чтобы в дальнейшем его было проще поддерживать и читать. AtomicDesign накладывает ограничения на дизайнеров и фронтендеров, обязывая их общаться на одном языке бизнес-сущностей.

    Но необходимо добавить несколько слов о поддержке библиотеки компонентов AtomicKit. В какой-то момент возникает проблема усложнения компонентов, и многие задаются вопросом: "Как же быть, неужели теперь нужно перемещать компонент из атомов в молекулы?" — Нет.
    Перед стартом разработки необходимо тщательно проектировать набор компонентов и не менять его предназначения, пока он существует под таким названием. Если же вам необходимо усложнить компонент, добавить в него какие-то элементы - просто создайте ещё один компонент, который будет добавлять то, что вам нужно. Так вы не сломаете совместимость со всей библиотекой и реализуете необходимую вам фун
    Ответ написан
    1 комментарий
  • Опишите подробно деятельность фронтенд-разработчика в аутсорсинговой компании?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Чувааак.... я тебе как писатель писателю скажу - не берись писать про ИТ, не зная хоть немного его изнутри :) Тут едрить, все свое. Тебя сразу будет видно, что ты "чужой". Это все равно, что писать книгу о работе кардиохирурга высшей категории, не зная анатомии человека :)
    Ответом на твой вопрос была бы огромная портянка - если бы кому-то захотелось ее написать. Но мой тебе совет - не берись. Не получится. Все, кто работает в ИТ - они ржать будут над тобой в голос и кататься по полу.

    Да и нет ничего интересного в офисной работе...
    Ответ написан
    Комментировать
  • Нужно ли расчитывать при разработки сайтов на поддержку IE?

    notiv-nt
    @notiv-nt
    Как ваше ничего? Да, моё тоже
    В сотый раз:
    Поддержка технологий зависит от ПОЛЬЗОВАТЕЛЕЙ сайта/приложения
    Ответ написан
    Комментировать
  • Где найти друга программиста?

    SpacePurr
    @SpacePurr
    c#, wpf
    Ясное дело на дваче
    Ответ написан
    Комментировать
  • Разница при обучении javascript backend?

    @twoone
    Поскольку в основе и серверного и клиентского javascript лежит движок v8 синтаксис и основные языковые конструкции идентичны. Разница начинается в реализации api которые у браузера и десктопа значительно отличаются. Кроме того сильно разнятся архитектурные подходы, стек прилегающих технологий (БД, кеширование, nginx, логирование, docker, безопасность, управление нагрузкой, оптимизации которыми на клиенте принебрегают, зачастую администрирование) и повседневные задачи (работа с потоками, понимание сокетов, работа с байтами). Но нельзя сказать что мир фронтенда проще поскольку чуть в сторону от базовых фраймворков, сразу начинается геометрия, svg\сcanvas, анимация, понимание дизайна\арта, не совсем просто dom api.

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

    RAX7
    @RAX7
    1. Почему не используются нормальные ES6 классы или хотя бы классы на прототипах ES5?
    2. Адская помесь jquery и ванили
    3. Объявление функций в цикле (checkAttributeName, printErrorMessage, etc)
    4. WTF?
      if(0 < 1){
      let div = document.createElement('div');
      div.innerHTML="";

      if(reg.test(value) == false) {
      if(..){
          var nextTab = resultNumberActiveTab + 1;
      }
      else if(...){
          var nextTab = resultNumberActiveTab - 1;
      }


    Ответ написан
    1 комментарий
  • Как защитить JS код?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    Спрятать не выйдет, а вот затруднить немного чтение вполне. Например с помощью обфускации. Но будьте готовы к увеличению объёма кода.
    Например console.log('Лол, кек, чебурек'); превратиться в
    var _0xac52=["\u041B\u043E\u043B\x2C\x20\u043A\u0435\u043A\x2C\x20\u0447\u0435\u0431\u0443\u0440\u0435\u043A","\x6C\x6F\x67"];console[_0xac52[1]](_0xac52[0])
    . Оно вам надо? ИМХО всё это детский сад.
    Ответ написан
    5 комментариев
  • Достаточно ли книги Ильи Кантора для трудоустройства?

    @AndrewRusinas
    Я, попав на работу джуном, даже десятой части оттуда не знал. Прочел спустя полгода. И когда прочел, получил дичайший буст.
    Но тогда прочтение наложилось на уже имеющийся опыт, и я, глава за главой, получал реально ценную инфу о том, как сделать то, что я уже делал, лучше и быстрее.

    Разумеется, в начале карьеры я тоже пытался её прочитать, не осилил.

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

    Отвечая на вопрос:
    Трудоустройство джуном это лотерея. Где-то вас будут унижать вопросами, на которые порой сеньоры ответов не знают (случай из моей практики), где-то вас возьмут просто потому, что перед вами было 15 гастарбайтеров, а вы первый адекватный соискатель. У каждой компании свои рамки для грейдов.
    Но прочтение Кантора это, безусловно, огромный такой плюс и очень упростит жизнь. Если совмещать с практикой.
    Ответ написан
    Комментировать
  • Как устроена андроид разработка по аналогии с веб фронтенд разработкой?

    @AntonKrygin
    1. Нативная андроид разработка ведется в основном с использованием java(kotlin), иногда c++. Обычно интерфейс описывается в виде xml-файлов, которые отдаленно напоминают html, также есть возможность отдельно описывать стили/темы также в xml-файлах.
    2. Да. Логика - в java-классах, структура и стили - в xml-файлах.
    3. Как по мне, так общего у нативной андроид-разработки и веба очень мало.

    Дам совет, который вы не просили. Если вы хотите войти в мир мобильной разработки из веба как можно проще и быстрее, не выбирайте нативную разработку. Возьмите кроссплатформенный фреймворк типа Flutter или React Native - что вам ближе, вариантов сейчас много.
    Сам пересел на Flutter после нативной андроид разработки, впечатления можно описать фразой "а так можно было?". React Native и другие не пробовал.
    Главный плюс новых кроссплатформенных фреймворков - высокая абстракция от платформы. Для меня самая боль нативной разработки была в управлении жизненным циклом приложения. Во Flutter все намного проще. Если вам когда-нибудь перестанет хватать произодительности, всегда можно написать что-то на нативе и дергать из фреймворка типа Flutter.
    В общем, не ради холивара, не хотел никого оскорбить, просто совет.
    Ответ написан
    4 комментария
  • Как считать очень большие числа, и на каком языке программирования?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Не такие и большие числа :)
    https://github.com/aleaxit/gmpy

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

    В общем случае библиотеки есть для любого ЯП
    Ответ написан
    2 комментария
  • Откуда лезет реклама?

    @granty
    Чтобы показывать рекламу, надо внедрить яваскрипт в HTML-код страницы вашего сайта. Технически это могут сделать:


    =========На вашей стороне:========== (реклама будет только у вас)
    1. провайдер интернет.
    Вставляет рекламу на http-страницы, на https-страницах рекламы нет, через VPN рекламы тоже нет.


    2. браузерные плагины и расширения
    Реклама будет даже на https-страницах, и на любом VPN, так плагины работают с уже расшифрованной странице в браузере.
    Реклама появляется только в браузере с установленным плагином.
    Особо пакостные (типа mail.ru агента) устанавливаются на уровне операционки и гадят во всех браузерах одновременно.


    3. Вирус на компе
    Может вставлять рекламу во все браузеры, и по http: и по https:



    =========На стороне сайта========= (реклама будет у всех)
    4. Хостер.
    5. Взлом хостинга.
    6. Скрипт с чужого домена, используемый вами на сайте.


    Найдите в HTML-коде сайта этот "посторонний" яваскрипт, это сильно облегчит поиск того, кто его вставляет.
    Попросите друзей/знакомых пооткрывать сайт - если у них будет реклама, копайте в сторону пунктов 4, 5, 6

    PS: иногда такая реклама вставляется только на мобильных устройствах. Также рекламы может не быть с зарубежных IP (просто нет рекламодателей для чужой страны/языка)
    Ответ написан
    Комментировать
  • Как можно упростить код со множеством if?

    @StockholmSyndrome
    const types = {
      p: ['count', 'name', 'info', 'price'],
      c: ['count', 'name', 'info', 'price'], 
      m: ['value', 'price'], 
      disk: ['count', 'name', 'price'], 
      radio: ['name', 'price'], 
      button: ['value', 'price'], 
      checkbox: ['name', 'price']
    };
    
    const values = {
      name: optionName, 
      price: optionPrice,
      value: optionValue,
      count: optionCount,
      info: optionChars
    };
    
    const result = types[type].reduce((acc, curr) => ({...acc, [curr]: values[curr]}), {});
    if (type === 'checkbox') {
      this.selectedOptions[type][`check${data.checkId}`] = result;
    } else {
      this.selectedOptions[type === 'disk' ? type + t.diskNumber : type] = result;
    }
    Ответ написан
    1 комментарий
  • Разработка web-сайта для компании. Что выбрать?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ответ очевиден - нанять грамотного айти директора или хотя бы ведущего разработчика.
    И предоставить ему решать эти вопросы, для него это семечки.
    Ответ написан
    4 комментария
  • Какие модные фронтенд-фишки можете посоветовать?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Лучшее, что вы можете сделать - не тащить на сайт кучу всякой херни, которая обычно много весит, ухудшает перфоманс, затрудняет восприятие контента и не нужна никому, кроме вас. Серьёзно.
    Любая анимация должна быть уместна, и если вам, глядя на дизайн, никаких конкретных идей в голову не приходит - то и не нужно. Нет способа удешевить сайт сильнее, чем добавить элементам разного толка выпрыгивания со всех сторон, глитч-эффекты и всё такое.
    Хочется динамики - найдите какое-нибудь не сильно быстрое видео и поставьте его как фон, или по запросу "canvas background animation" найдите ненапрягающую анимацию.

    P.S. Речь идёт не о сайтах, которые должны побеждать на Awwwards, а об обычных сайтах, которые делаются для людей, а не для конкурсов.
    P.P.S. Если всё-таки очень хочется, то нужно гуглить по запросам "hover effects" и "canvas animation", остальное без конкретной дизайнерской задумки вреда несёт куда больше, чем пользы.
    Юзабилити - это про то, чтобы "работает быстро и понятно (как у всех)".
    Ответ написан
    2 комментария
  • Должен ли UX/UI дизайнер знать компоненты React/Vue?

    @vladdimir
    Верстальщик
    Реакт, Вью и прочие инструменты - это не Лпгенератор или Тильда)) Там компонент это абстракция, а не какая-то конкретная свистелка, поэтому хоть календарь с закгругленными углами, хоть с острыми - творите на здоровье)
    Нет разницы, что под реакт макет, что под вью, что под ваниллу.джэс.

    Если что-то сделать невозможно или это будет слишком дорого (для пользователя или по цене разработки, неважно), об этом вам скажет разраб.

    Другое дело, если вам самим хочется погрузиться в разработку. Если так, то думаю это перспективный вектор развития.
    Ответ написан
    Комментировать
  • Должен ли UX/UI дизайнер знать компоненты React/Vue?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Смешались в кучу кони, люди...
    Давайте по порядку.

    Должен ли UX/UI дизайнер знать компоненты таких фреймворков как React и Vue

    Если команда разработчиков заранее знает, что будут использовать какой-нибудь набор готовых компонентов для работы (Vuetify, Material UI, etc), то дизайнер должен их знать и использовать как основу, дабы не плодить лишних сущностей, так как без боли эти компоненты можно разве что перекрашивать.

    подготавливать макет прямо на React, но без логики

    "Макет на React без логики" - это вёрстка.
    И боже упаси, чтобы это делал дизайнер - с этим и большинство фронтов так себе справляется (во многом потому, что через 3 месяца работы над пет-проектом говорят "я уже хорошо знаю HTML и CSS, пошёл учить Реакт и получать ЗП в 200+", ха-ха).

    не зная можно ли вообще реализовать такой календарь

    Реализовать в принципе можно почти всё что угодно, вопрос кому оно нужно и кто готов за это платить.

    но наверное какие-то основы, работу с NPM, CSS/SASS препроцессоры он должен знать?

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

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

    Вообще такое ощущение, что все вокруг просто на самом деле ничего толково делать не умеют, но пытаются себе цену добавить мнимым знанием кучи всего. Сфокусируйтесь на одном чём-нибудь.
    Человеку, который делает гениальный дизайн, прощают всё - сложный характер, срывы сроков, никакую структуру файлов, Layer1-layer2 - и возвращаются к нему снова, потому что это профессионал в своём деле, и нет совершенно никакой нужды добавлять себе стоимость второстепенными навыками. Разве что самому интересно..
    Ответ написан
    Комментировать
  • Как вы реализуете взаимодействие frontend и backend?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Смотрите, сервер не просто возвращает JSON, он возвращает тот JSON который запрашивает клиент в соответствии с определенным API.

    Т.е, если клиент говорит:
    - Передай мне данные о товарах
    - Версия API 1.0

    То сервер всегда возвращает товары в том виде, как это указано в API версии 1.0.

    Если вы делаете изменения на сервере и сервер должен отдавать данные в новом виде, то вы должны лишь добавить новую версию.

    Если клиент скажет скажем:
    - Получить данные о товарах
    - Версия API 2.0
    -> Вернуть новый JSON

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

    Именно таким образом разрабатывается взаимодействие клиента и сервера. Сервер один, а клиентов может быть много и обновлять клиенты можно в разное время. Главное поддерживать все старые версии API.
    Ответ написан
    6 комментариев