Задать вопрос
  • Почему иногда выходит ошибка " Uncaught TypeError: Cannot read property '3' of undefined "?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Кажется, кто-то не в курсе, что индексация массивов начинается с нуля.

    Ну нет у вас ни в одном из массивов элемента с индексом 10, нет. Соответственно, когда lon принимает значение 10, map[lon] оказывается undefined, отсюда и ошибка.
    Ответ написан
    1 комментарий
  • Как это сверстать?

    @McBernar
    Самое лучшее решение — отобрать у дизайнера компьютер.
    Это я вам как дизайнер говорю.

    Кажется, что <pre> будет самым простым вариантом.
    Ответ написан
    1 комментарий
  • Есть смысл делать сайт каталог на vue?

    1. Кривят мины при слове jquery только старые деды, потому что библиотека полезна и экономит много времени (особенно у новичков). Даже если эта библиотека будет объективно считаться полным дерьмом, какая вам разница если она решает ваши задачи?

    2. Раньше говорили, vue используют там, где jquery уже не хватает. Я не понимал что это значит, столкнувшись с некоторыми задачами я понял смысл этой фразы. В действительности, если вам нужно повесить пару обработчиков на кнопки, формы и тд, vue вам не нужен. Если вам, как и мне, нужно подгружать постоянно обновляемые данные, всю эту информацию выводить в разных блоках, на каждый из который вешаются свои обработчики, когда появляются какие-то динамичные элементы в приложении и вы видите что в своем js-коде вы уже ничерта не можете разобраться, потому что вы пытались каждый модуль писать в отдельном файле и совмещать их вы уже не можете, вы открываете для себя vue-компоненты, за которыми легко следить и связывать между собой.

    Сайт, что вы кинули - обычный лендос, прям обычный на все 167%. Для чего вам париться лепить компоненты в vue, если вам нужно написать 10 строк js кода? Конечно нет смысл использовать.

    В качестве примера, для чего vue подошел бы, могу сказать то, что приходилось делать мне: есть проект с криптовалютой, который выводит кучу графиков по валюте, по каждому графику можно выбирать временной интервал и получать какие-то результирующие данные по этим интервалам. Для каждого блока начинка и обработчики разные (vue-компоненты), все это хранится в одном файле, отвечающий за каждый компонент. Помимо этих блоков есть некоторый объем периодично подгружаемой информации, которая тоже имеет вид графиков, круговых диаграмм итд. Все это прекрасно работало и на голом js, но когда проект стал разрастаться - в коде было уже сложно разбираться и я пытался сам писать какой-то аналог компонентов vue, понял что горожу велосипеды, перелез на vue и все.
    Ответ написан
    Комментировать
  • Как спарсить категории и подкатегории с сайта?

    @Yan-s
    Парсинг начинается с анализа сайта, сбора информации. Смотрим как работает поиск, пагинация, каталог, какая структура урлов и тд. Если используется js, анализируем запросы в инспекторе браузера.

    Составляем план парсинга, пишем скрипт.

    Часто процесс упрощают (при наличии) api, RSS лента, карта сайта, или подобный структурированный сервис агрегации (самого сайта).

    Например в данном случае у сайта есть карта для поисковиков https://automig.ru/sitemap1.xml и https://automig.ru/sitemap2.xml

    Так как урлы строятся по определенной схеме и интерсуют только страницы с /vaz/ не составит труда отфильтровать список урлов в карте оставив только те, что ведут на нужные страницы.

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

    sim3x
    @sim3x
    Делаете работу
    В процессе находите ошибку в стороннем коде
    Находите ее источник
    Пишите багрепорт и тесткей
    Так как всем пофиг
    Сами фиксите баг
    Неделю стучитесь мейнтейнеру, чтоб он принял ваш пушреквест
    Он вас посылает, тк ето не баг
    Ответ написан
    10 комментариев
  • В чем преимущества использование GraphQL чем ручками?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Первая же ссылка в Google по запросу "GraphQL REST" - Сравнение REST и GraphQL. В конце статьи перечислены теги, если клацнуть по тегу "graphql" вывалится ещё 40 подобных публикаций.

    Только я не понимаю, почему вы противопоставляете соглашение о форме обмена данными GraphQL с написанием "API ручками". Неважно, какая форма обмена у вас выбрана - SOAP, REST, GraphQL, обработчики запросов всё равно придётся писать, автоматом за вас никто ничего не сделает.
    Ответ написан
  • Как обезопасить проект с полностью раздельным фронтендом и бекендом?

    Sanasol
    @Sanasol Куратор тега Веб-разработка
    нельзя просто так взять и загуглить ошибку
    Какие еще вопросы по безопасности нужно закрыть?

    ровно всё тоже самое что и при монолитном приложении.
    пишите нормальный код без дыр в виде sql инъекций и всякого такого.

    Насколько это безопасно и как защититься от подделок запросов в целом?

    для вас неважно подделка это или нет.
    Запросы выглядят одинаково и в случае отправки с сайта, и в случае отправки например каким-нибудь скриптом "злоумышленника".
    Если надо защиту, то делайте проверку авторизации и лимит на количество запросов.
    Больше вы ничего не сделаете.

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

    usdglander
    @usdglander Куратор тега PHP
    Yipee-ki-yay
    return in_array($a, ["яблоко", "груша", "персик"])
        ? 'Это фрукты'
        : null;
    Ответ написан
    9 комментариев
  • В какой последовательности изучать JavaScript?

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

    JS сам по себе объёмный, все эти инструменты, что ты перечислил, не составят и 5% от JS.
    Там ведь есть ES5, ES6, ES7, ES8, зоопарк старых браузеров, которые, возможно, придётся поддерживать.

    jQuery — это не "начать изучать". Это либа, как lodash, например, которая просто используется и гуглится способ её использования. И читается за пару вечеров документация. Она, кстати, идёт в разрез с SPA фреймворками, потому что использует императивный подход, а они — декларативный.

    Node.js — это вообще отдельная тема. Это тоже JS, но отдельный. Он не выполняется в браузере. И для мозга лучше воспринимать ноду — как другой язык.
    Ответ написан
    Комментировать
  • Что лучше или быстрее, memcached или redis?

    VELIK505
    @VELIK505
    Руководитель департамента profitcentr.com
    Да примерно одинаково всё + -. Что больше нравится то и используй. Я раньше кешировал всякую инфу часто запрашиваемую в мемкеш а потом чёто на redis перешёл. Разницы в скорости и реализации на глаз не заметно конечно вообще. Но в целом вроде как если судить по кучи тестов в инете то редис в целом чуточку гдето побыстрее мемкеша но это не точно.
    Ответ написан
    Комментировать
  • Можно ли верстать на ноутбуке?

    rim89
    @rim89
    программист-велосипедист
    Верстали еще на селеронах, когда notepade++ был "лучший IDE" , так что чего тут спрашивать то
    Ответ написан
    4 комментария
  • Есть ли какие-то глобальные отличия symfony от django?

    voronkovich
    @voronkovich
    1. Symfony - компонентный фрейморк, Django - нет.

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

    2. У Symfony нет ORM, у Django - есть.

    Обычно для Symfony используют Doctrine, похожую на SQLAlchemy т. е. DapaMapper. ORM поставляемая в Django - это ActiveRecord.

    3. В Symfony все завязано вокруг DI-контейнера. В Django этого нет.

    4. Symfony - это микрофреймворк, Django - нет.

    5. Django Reinhardt - джазовый гитарист, SymFony - это просто Sensio Framework.

    Как видите, эти фреймворки похожи друг на друга как Python и PHP.
    Ответ написан
    2 комментария
  • Развеете мои стереотипы по ubuntu, linux mint?

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

    О крутости шляпы.

    Шляпа - корпоративный дистриб. И его основная цель - чтобы работало. И этой цели он достигает. CentOS, его коммунити-зеркало, взлетает быстро, работает хорошо, обновления на el6 до сих пор выпускаются, несмотря на ведро 2.6.32 :) Но - повторюсь - это корпоративный дистриб. То есть там нет новых программ. Там нет ничего про игры и мультимедию и вообще про развлечения ничего нет. Это суровый набор рабочих инструментов :) Для дома он не годится.

    О "сверхкрутости" FreeBSD.

    Как человек, проработавший на FreeBSD c 1997 по 2013 год - могу сказать совершенно точно - это все лажа. Да, FreeBSD - это совсем не линух. Да, там другое ведро, там другой сетевой стек, там другой файрволл, там другое все. Но "другое" не значит "лучшее". Потеря коммунити - это самая серьезная потеря, а коммунити FreeBSD если не сокращается, то по крайней мере не растет.

    Почему?

    Проблемы с железом, то есть с дровами
    Проблемы с совместимостью, когда программы, работающие в линухе, скрипят и еле везут на FreeBSD
    Проблемы с разработчиками - ведь код ведра, дрова, специфические вещи нужно же кому-то писать!
    ...
    словом все то же самое, что убило когда-то одну из самых замечательных, красивых и весьма популярных ОС - OS/2...
    Ответ написан
    Комментировать
  • Как работать с очень длинными списками в JavaScript (angular, react, vuejs)?

    alvvi
    @alvvi
    export default apathy;
    (angular не использует vdom, для него история другая)
    перерисует целиком свой виртуальный dom

    Давайте немного проясним: виртуальный DOM - это грубо говоря js объект содержащий другие объекты.
    При добавлении нового сообщения туда добавится новый объект и весь DOM сравнится со старой версией с помощью diff-алгоритма специфичного для конкретного фреймворка.
    И только результат этого сравнения добавится в реальный DOM.
    Работа с объектом значительно быстрее работы с самим DOM-ом, поэтому чтобы оно начало работать заметно медленее у вас должен быть дикий уровень вложенности или очень большой DOM.

    100 сообщений и 50 контактов - это небольшие цифры, с таким любой из упомянутых фреймворков справится без просадок.

    Вот пример бенчмарков с большим количеством объектов(1000+) для многих фреймворков на примере незамысловатой таблицы:
    www.stefankrause.net/js-frameworks-benchmark6/webd...
    (там же есть ссылка на репо чтобы увидеть как она выглядит)
    Как видите, там в таблицу уже содержащую 10 000 добавляется еще 1000(!) объектов, и многие фреймворки впонле с этим справляются.

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

    И самое главное: кто придумал слабую типизацию?

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

    Динамическую типизацию придумали для того, чтобы было легче писать обобщённые алгоритмы и мета-алгоритмы, в дин. языке для обобщения кода не нужны ухищрения типа дженериков (TypeScript, C# и много чего ещё) или шаблонов/макросов (C++). В ОО-языках часто доступны и другие удобства, например смена интерфейса объекта в зависимости от его состояния (т.к. решение о возможности вызова метода/свойства объект может принимать сам).

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

    Как вы пишете код на жс?

    Мы не пишем код на JS, мы пишем код на TypeScript. Да, такие сейчас странные времена, когда язык со статической типизацией компилится в язык с динамической, т.к. исполнять на клиенте (в браузере) больше нечего пока.

    Он же не должен быть напичкан parseInt() и !== undefined.

    Не должен. Если писать на голом JS, можно а) использовать JSDoc для аннотаций о типах, и работать с типами на уровне документации и договорённостей; б) писать алгоритмы в максимально обобщенной манере, и требовать по возможности не конкретных типов данных, а значений, над которыми допустимы нужные вам операции; в) покрывать код тестами, что и спасает в динамических языках.

    Чем больше проект, тем важнее статическая типизация, это нормально. JS - это язык который популярен по техническим причинам и по стечению обстоятельств, а не потому что он этого заслуживает (имхо). Очень неглупые дяди и тёти не стали бы тратить годы своего времени и кучу денег на разработку TypeScript и Flow, если бы это было ненужно.
    Ответ написан
    1 комментарий
  • С чего начать в IT в 27 лет для девушки?

    @chromimon
    Если вы пишете "для девушки", то подразумеваете, что вы не равны? Сами себе хотите снизить планку трудности?

    Ну тогда:
    1. Спортзал.
    2. Косметический салон
    3. Модный магазин
    И - вперед, соблазнять руководителя ИТ-предприятия.

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

    ВУЗ не нужен.
    ВУЗы учат более фундаментальным вещам. Для того, чтобы начать зарабатывать в ИТ это не нужно.
    Курс как правило ничему до дела не учат, но хоть вводное дают.

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

    Среди высококвалифицированных специалистов ситуация обратная. Заказчики ищут путного специалиста, переворачивая горы шлака.

    Чтобы стать квалифицированным специалистом - нужно время.
    Чтобы за это время не растерять интерес - нужно заниматься тем, что интересно именно тебе.

    Вывод: если хочешь зарабатывать в ИТ, то найди то, что тебе нравится.

    Основные направления программирования, по которым много предложений:
    фронтенд веб-серверов (программирования внешнего вида сайтов), бэкенд веб-серверов, мобильные приложения (Андроид, Эппл айОС).

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

    Если стоит цель максимально быстро: я бы предложил фронтенд.
    Есть и сложный фронтенд.

    Но нижняя планка довольно низка.
    Там даже программирование знать не нужно.

    Еще вариант - почему то очень много девушек в тестировании.
    Но это тоже элементы программирования.

    И третий вариант - лабать сайты на CMS Wordpress.
    Предложений очень много. Но это скорее фриланс, вряд ли найдется такая работа на фирме, чтобы вам дали рабочую визу
    Ответ написан
    7 комментариев
  • Почему блокируют Google из-за telegram?

    delphinpro
    @delphinpro
    frontend developer
    Причин нет, не питайте иллюзий.
    Это — рождение Великого Русского Файрвола.
    Ответ написан
    Комментировать
  • Как собрать nginx с модулем http_ssi_module?

    Lynn
    @Lynn
    nginx, js, css
    SSI в nginx есть.
    А проблема у вас в конфиге
    location = / {
      ssi on;
    }

    Этот location не действует на файл 1.htm
    Надо без равно
    location / {
      ssi on;
    }
    Ответ написан
    5 комментариев