Задать вопрос
  • Что такое и зачем нужен новый тип данный Symbol в ES15?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Что такое

    Новый тип данных symbol - это попытка ввести уникальные идентификаторы. Все крутится вокруг функции Symbol. Это не конструктор в полном смысле слова, с new ее использовать не получится. Это скорее маленькая фабрика. Она просто возвращает новый символ каждый раз. Это важно. Каждый раз новый. В качестве аргумента можно передать строку, но она используется только для отладки.
    Symbol() === Symbol() // false

    Что такое глобальный символ? Какой еще реестр?

    Есть Symbol.for(), это еще один метод, который не просто возвращает символ, но и сохраняет информацию о том, для какого параметра он создавался. Внешне логика работы напоминает хеширование - для разных параметров символы получаются разные, а для одинаковых - одинаковые.
    Symbol.for('my-string') === Symbol.for('my-string') // true
    Symbol.for('my-string') === Symbol.for('another-string') // false


    Зачем это надо?

    Применение этого типа данных - предмет для споров. Большая часть кейсов из интернета - это попытки поиспользовать новую фишку только ради того, чтобы ее поиспользовать. Самые популярные и практически применимые варианты:
    • В качестве ключа для доступа к свойству объекта. Грубо говоря вместо obj[key] использовать obj[some-magic-unique-key]. Позволяет избежать коллизии этих самых ключей если вы расширяете существующий объект из сторонней библиотеки. На практике встречается не очень часто, особенно в небольших проектах, но по всей видимости это - причина появления символов в языке.
    • Некоторая иллюзия приватных свойств. Символы по-своему работают с циклами и многими методами, связанными со свойствами объекта, становясь невидимыми для них. В результате можно разделить "все свойства с обычными ключами" и "все свойства с ключами-символами". А еще можно запутать код до безобразия.
    • Также, пользуясь предыдущей мыслью, можно сделать что-то вроде метаданных для любого объекта, которые опять же не сломают существующий код, но могут быть использованы для хранения какой-то информации и мередачи ее между отдельными модулями. Штука довольно интересная.
    Ответ написан
    Комментировать
  • Как могут взломать базу данных MySQL?

    @Z1odeypnd
    Здравствуйте.
    Технологий взлома уйма.
    В зависимости от того, какие привелегии получил "хакер" при вломе вашей БД - зависит очень много.
    Если он получил доступ только на чтение, то захешированные в MD5 пароли ему мало чем помогут, т.к. MD5 не имеет алгоритма обратной расшифровки и хэширование спасёт тем, что взломщик получивший доступ на чтение паролей - самих паролей не получит (есть конечно словарь MD5 хешей, то это другая история).
    Вообще для защиты любой БД есть несколько золотых правил:
    0. Переименовать дефолтного админа и защитить его сложным паролем.
    1. Для каждой БД должен создаваться свой владелец и несколько пользователей с разными наборами привелегий.
    2. Ни у одного из пользователей, созданных в п.1 не должно быть прав на изменение таблиц в соседней БД.
    Если есть необходимость обновлять соседние БД - делайте это триггером в соседней БД.
    3. Каждый внешний веб-сервис должен ходить в БД только с тем набором прав, которых ему достаточно для работы. Т.е. не нужно везде прописывать root и надеяться на лучшее.
    В этом случае, если взломщик получит привелегии этого пользователя, то сможет сделать только то, что разрешено этому пользователю. Тогда не выйдет "удалить все и сразу".
    Например, для наполнения католога товаров в интернет-магазине может быть отдельный пользователь, с правами на SELECT, INSERT, UPDATE, DELETE в таблице SHOP_PRODUCTS, например. И ничего более.
    А пользователи, приходящие в магазин за покупками могут делать SELECT, INSERT, UPDATE, DELETE только в таблицу CUSTOMER_CART. В коде веб-сервиса, естественно должна быть проверка, что покупатель редактирует СВОЮ корзину.
    Для показа каталога товаров - отдельный пользователь, имеющий право только на SELECT из таблицы SHOP_PRODUCTS.
    А продажу товара может делать отдельный пользователь, с правом только на UPDATE колонки AMOUNT в таблице SHOP_PRODUCTS. Пример:
    GRANT SELECT ON shopdb.SHOP_PRODUCTS TO 'trader_bot'@'shophost';
    GRANT UPDATE (AMOUNT) ON shopdb.SHOP_PRODUCTS TO 'trader_bot'@'shophost';

    И т.п. По принципу "Разделяй и властвуй."
    4. Писать запросы с использованием placeholder'ов (подстановку данных), что убережёт от SQL-инъекций.
    Пример:
    $DB->select('SELECT * FROM tbl WHERE a=? AND b=?', $a, $b);

    5. Если и БД и приложение, используещее БД установлены на одном сервере - отключить удалённый доступ к БД и работать через сокеты.
    6. Последний, но самый важный - БЕКАПЫ. При удалении всего и вся - нужно откуда-то восстановиться. Делайте бекапы и храните на отдельном сервере (не выставленном наружу).
    Ответ написан
    3 комментария
  • Как могут взломать базу данных MySQL?

    @mirzok
    Information Security
    Взломать могут через web-приложение, найдя SQL-инъекцию в коде. Это часто бывает в самописных CMS на PHP, где пренебрегают использованием синтаксиса параметров для запроса и делают простое сложение строк.

    Есть подозрение, что взломали? Проверьте свой код, проверьте своё приложение. Для этого каждый URL, где есть какие-либо параметры, прогоните через sqlmap - специальная программа для поиска таких уязвимостей. Если не поможет или слишком долго, то попробуйте онлайн сканерами вроде metascan.ru и detectify.com.

    И самое банальное - меняйте пароли доступа и делайте ограничение на вход по порту 3306 (mysql), если есть такая возможность.
    Ответ написан
    Комментировать
  • Какой выбрать биллинг?

    creativeworm
    @creativeworm
    Даже под оффлайн-проект я приспособил BILLmanager. До 50 клиентов бесплатно.
    Ответ написан
    3 комментария
  • Где добывать заказы на разработку сайтов вне фриланс-биржи?

    @Stalinko Куратор тега Фриланс
    PHP'шник и фрилансер до мозга костей
    Учите английский и учитесь уважать себя.

    1. На зарубежных биржах платят очень хорошо тем, кто реально по уровню выше среднего.
    2. Забейте на Вась, готовых работать за еду. Вы ведь лучше них (если нет, то на этом стоит прекратить обсуждение)? Состоятельные клиенты гонятся за качеством, а не низкой ценой, и отметают всех "индусов" на первом же этапе. Смело ставьте себе ставку повыше. Вполне возможно это улучшит ваши результаты.
    3. Реальная тема LinkedIn. Просто зарегайте профиль, добавьте в друзья всех своих коллег и знакомых, кто там зареган, заполните всю инфу про свои умения, и вы удивитесь как к вам сами начнут стучаться HR'ы. Иногда с довольно вкусными предложениями.
    4. StackOverflow Jobs, remote work.
    Ответ написан
  • Каким способом (книги, курсы, лекции, вебинары и пр.) порекомендуете учить WEB? Расскажете свои истории становления в этой сфере?

    @Ariurn
    Единственная книга, которую мне за всё время пришлось использовать - Герберт Шилдт по плюсам. Да и то не для Web-разработки, а чисто для понимания основ логики программирования.
    Если говорить конкретно про Web: самоучка методом проб и ошибок, лазанья по форумам итд. Сначала просто начал глядеть исходный код различных сайтов (было интересно, как оно всё устроено). Потом начал гуглить на различные темы типа: минимальный html шаблон, основы css итд. Вполне достаточно статеек/мануалов с различных тематических сайтов. Сначала пробуете писать простенькие одностраничники, безо всякой серверной части. Потом попробуйте поиграться со стилями, js/jquery фишками. Это Front-end.
    Касательно Back-end'a: сначала рисовал простые скрипты на php (хотя и я бы на вашем месте сразу полез в python) по типу динамического вывода той или иной информации. Потом научился соединять с БД (PostgreSql, MySql, SqLite итд, погуглите разные варианты, каждому своё). Дальше пробовал что-то типа написания мини-блога.
    Когда приучитесь творить подобные мини-проекты, посмотрите в сторону фреймворков.
    Для фронтенда это Bootstrap, Semantic-UI (как наиболее адекватные с моей точки зрения).
    Для бэкэнда (в зависимости от языка, на котором пишете): для PHP - Laravel, для Python - Django.
    В любом случае, основные советы следующие:
    1) Как можно больше практики. Теория в этом деле ничего не стоит, опыт - ваше всё.
    2) Сразу учитесь "этике" программирования: соблюдайте табуляцию, давайте переменным/классам нормальные названия итд.
    3) stackoverflow - ваше всё (вы ещё попомните эти слова).
    4) Хорошие работы (на поздних этапах) сохраняйте для будущего портфолио (будет, что показать).
    Ответ написан
  • Что нужно уметь, чтобы я справедливо мог вписать git в резюме?

    bask
    @bask
    Этого достаточно.
    Но придерживаться Git Flow крайне рекомендую.
    Здесь простым языком и по-русски:
    https://proglib.io/p/git-github-gitflow/
    Ответ написан
    1 комментарий
  • Какие книги по веб-разработке на данный момент актуальны?

    @sdgroup14
    я бы вам посоветовал очень хорошо понять базу https://learn.javascript.ru/ (по несколько раз прочитывал весь сайт перед собеседованиями, потому что именно такие вещи и будут спрашивать и этими методами вы всегда будете пользоваться).
    Насчет css читайте все что только можно. Суть знаний в css - это опыт. Я свои знания заработал только на практике. Ни в одном гайде не встречал к примеру ситуации, "что в Safari(IOS) в некоторых ситуациях если вы div сделали js кликабельным - то нужно div сделать cursor: pointer... иначе не будет отрабатывать обработчик" + Интерпритаторы в разных браузерах по разному воспринимают свойства... Практика практика и еще раз практика
    Ответ написан
    5 комментариев
  • Актуально ли изучать nodejs для бекенда или лучше оставаться на php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Изучать надо программирование.
    Все эти вопросы, "Какую машину лучше учиться водить - Рено или Фольксваген?" - это детский сад, честное слово.
    Если для вас потолок - это несколько десятков встроенных функций одного языка, то всё равно что учить - ковыряться помаленьку можно на любом.
    Программист же мыслит не инструкциями, а алгоритмами, паттернами, потоками данных, структурами объектов, шинами сообщений. На каком языке это все реализуется - не принципиально.
    Ответ написан
    2 комментария
  • Это вообще люди делают?

    dimovich85
    @dimovich85 Куратор тега CSS
    https://u-academy.net/
    Поделюсь с вами вот такой ссылкой:
    https://www.youtube.com/playlist?list=PLswdBLT9llb...
    Ответ написан
    1 комментарий
  • Как обезопасить сервер при получении POST?

    Adamos
    @Adamos
    Обычное дело - добавляете подпись: sha256(собранные в строку данные + известный обеим сторонам ключ). И проверяете ее, отбрасывая прочие запросы.
    У меня, например, хостер (Таймвеб) своими роботами регулярно щупает мои скрипты, к которым происходят внешние обращения. От платежных систем, например. При том, что ссылок на них нигде нет. То ли ботов ищут, то ли еще что. Естественно, такие запросы обрабатывать - себе дороже.
    Ответ написан
    7 комментариев
  • Моргнул свет, компьютеры перестали получать IP от DHCP, как вернуть?

    @SuNbka
    1) Использовать ИБП для сетевого оборудования.
    2) Без конфига микротика можно только гадать ( к примеру нету записей в ARP таблице и поэтому микротик игнорирует неизвестное оборудование )
    Предварительно сделайте резервную копию (Зайдите через Winbox далее Files -> Backup и скопируйте себе на компьютер дополнительно)
    Зайдите через Winbox далее IP -> DHCP Server -> Leases и удалите все записи (если они там имеются), после попробуйте бутнуть один компьютер из тех что не видел микротик и посмотрите в таблицу и логи микротика.
    Ответ написан
    Комментировать
  • Моргнул свет, компьютеры перестали получать IP от DHCP, как вернуть?

    @solalex
    если на компах винда то:
    ipconfig /release
    ipconfig /renew
    если линух то
    sudo dhclient -v -r
    Ответ написан
    Комментировать
  • Почему не работает кнопка "скачать"?

    streetflush
    @streetflush
    <a class="splash__button"  href="page.txt" download></a>
    Ответ написан
    1 комментарий
  • Почему не работает Hover?

    Vlad_IT
    @Vlad_IT Куратор тега CSS
    Front-end разработчик
    border-bottom у меню есть, просто он не влез в блок
    Ответ написан
    3 комментария
  • Как сделать, чтобы логотип крутился как монета (анимация)?

    ixon
    @ixon
    
    https://codepen.io/anon/pen/XBQgKa
    Используя css3 анимацию добавим к логотипу ссылку на анимацию coin, установим итерацию в 5 секунд и бесконечное повторение:
    animation:coin 5s infinite;

    .coin{
      display:block;
      background:url('https://2ch.hk/b/arch/2018-05-23/src/176403732/15270649403080.jpg');
      background-size: 100% 100%;
      width:120px;
      height:120px;
      border-radius:50%;
      animation:coin 5s infinite;
    }

    Добавим анимацию coin, изменив ширину до 0, затем вернём её в изначальное положение.
    И сделаем отступ, чтобы анимация происходила относительно центра монеты.
    @keyframes coin {
        0%   {
          width: 120px;
          margin-left:0px;
        }
        50%  {
          width: 0px;
          margin-left:60px;
        }
        100% {
          width: 120px;
          margin-left:0px;
        }
    }
    Ответ написан
    Комментировать
  • Шрифт в h1 отличается от текста который в div что это?

    SexyMonkey
    @SexyMonkey
    Разный font-weight. 400 у div и 700 у h1
    Ответ написан
    Комментировать