• Как практиковаться правильно?

    razumkov2015
    @razumkov2015
    "Программист" https://vk.com/cgs_game
    Попробуйте "Тостер" свертасть. Потом соц сети и по накатанной
    Ответ написан
    3 комментария
  • Звучание плеера при переходе по сайту?

    sabramovskikh
    @sabramovskikh
    Сделать SPA приложение, загружать страницы аяксом.
    Ответ написан
    Комментировать
  • Как это сверстать?

    doublench21
    @doublench21
    Ну неужели нельзя хоть немного подумать головой? Найди любой векторный редактор и нарисуй там, а затем экспортируй svg, если картинка тебя не устраивает. Сейчас бы такое лого верстать ...
    Ответ написан
    3 комментария
  • Java ( с либами ) против Node.js, что выбрать для вебсервиса?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    В Spring 5 есть WebFlux, который работает поверх Netty. А Netty это такой замечательный асинхронный фреймворк, про который один из инженеров Netflix'а писал, что у них один инстанс держит в среднем 20 000 одновременных соединений, пропуская через себя 40 Гбит/с трафика. На хабре ещё была статейка про написанную на Netty систему управления IoT-устройствами, которая обрабатывает 980 000 соединений с секунду, работая при этом на двух DO'шных VPS'ах за 20 и 40 баксов в месяц.
    Ответ написан
    2 комментария
  • Первые шаги в backend разработке?

    Wolfnsex
    @Wolfnsex Куратор тега Веб-разработка
    Если не хочешь быть первым - не вставай в очередь!
    Собственно сам вопрос, с чего начать изучение бэкенда
    Хм... я бы начал с начала. Начало - это основы (базис) сетей, протоколов (TCP/IP, HTTP), самые основы работы веб-серверов, того же Linux'а и т.д. Обратите внимание на слово основы, механизмы уровня ядра Linux или исходный код Apache - Вам изучать совершенно не обязательно.

    Далее, неплохо бы иметь хотя бы общее представление о базах данных, понимать как примерно работает SQL и чуть-чуть познакомиться с основными БД мира OpenSource - MySQL, PostgreSQL.

    Если после всего этого, у Вас не пропадёт напрочь желание изучать backend, можно выбирать язык. Какой? Любой. Python или PHP например. Особого значения как таковой язык в разработке не имеет. Гораздо важнее общее понимание процессов, чем конечный язык.

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

    rockon404
    @rockon404
    Frontend Developer
    Что сам читал:
    1. Брюс Эккель - Философия Java
    2. Корнелл Хорстманн - Java. Библиотека профессионала.
    3. Элизабет Фримен и Эрик Фримен - Паттерны проектирования
    4. Джошуа Блох - Java. Эффективное программирование
    5. Роберт Мартин - Чистый код

    Ну и что-нибудь поновее.
    Ответ написан
    1 комментарий
  • Как не стать тупым в общении, профессионально занимаясь программированием?

    vicodin
    @vicodin
    Имею некоторый опыт
    Если вы задаёте такие вопросы, то вам уже поздно их задавать, вы поверили в глупый стереотип и не смотрите шире. Уж кто, как не айтишники знают о том, что такое саморазвитие и применяют его не только в карьере если им это нужно? Кто, как не айтишники могут каждый месяц менять страну проживания не меняя работы(что тоже развивает кругозор и навыки общения)? Много вы видели медиков/слесарей/сварщиков, которые могут работать на парт-тайме 20 часов в неделю, а оставшееся время посвящать спорту+увлечениям?

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

    spoiler
    Что у меня, что у знакомых часто возникают разговоры, о том, что встретиться компанией со старыми друзьями/одноклассниками/одногруппниками - нереально. Все херачат на заводах/в офисах, а вечером и в выходные отдыхают. При этом со вкатом в айти, настолько расширился круг общения, что теперь в приезжая в крупный город России или даже путешествуя по миру происходят встречи с интересными в общении коллегами, с которыми реально интересно общаться и очевидно это необязательно рабочие темы.
    Ответ написан
    5 комментариев
  • Возвращаем функции как результаты?

    rockon404
    @rockon404
    Frontend Developer
    Обращение идет к первому аргументу.
    Вы при вызове:
    var snakify = attitude(/millenials/ig, "Snake People");

    возвращаете в snakify такую функцию:
    function(source) {
      return source.replace(/millenials/ig, "Snake People");
    };


    и она принимает только один аргумент source.
    Ответ написан
    1 комментарий
  • В чем заключается минус такого делегирования?

    rockon404
    @rockon404
    Frontend Developer
    И что дальше? Проверка if (target.tagName != 'TD') return; справляется со своей задчей - игнорирует все, кроме td.

    Так вы кликните по td, а попадете на вложенный элемент strong, вызов прервется и td не подсветится, так как
    target == 'strong'
    хотя вы кликнули по td.

    Затем и нужна беготня по иерархии. Примерно так же делегирование jQuery работает:
    $('table').on('click', 'td', function() { 
      //handler 
    });

    Там такая же "беготня" в реализации.
    Ответ написан
    1 комментарий
  • Как писать в прототипном стиле?

    @grom111
    JackShcherbakov Если уж вы взялись писать код в стиле ООП, то должны понять 1 простую суть. Класс это просто описание объекта и он содержит в себе методы для управления этим объектом.

    Объясню на вашем примере:
    У вас есть class Table {}, в нем сохраняются методы для работы с таблицей (добавление рядков, удаление и т.д), но не штуки подобно newH1Element или output(их можно вынести в те же самые методы).

    Подводя итог:
    class Table {
        constructor(name, columns, rows, defaultText) {
            this.name = name;
            this.columns = columns;
            this.rows = rows;
            this.defaultText = defaultText;
        }
        save() {
            localStorage.setItem(this.name, document.getElementById("rightControlPanel").innerHTML)
        }
        add() {
            /..создаете тот же tr и т.д../
        }
        delete() {}
    }
    Ответ написан
    Комментировать
  • Как сделать подобную сетку дивов?

    edli007
    @edli007
    full stack, team lead

    Можно ли обойтись без флекс-бокс?

    Только применив джаваскрипт и по-любому будет сложнее и хуже. На флексах это две строчки.
    Ответ написан
    3 комментария
  • Как сделать подобную сетку дивов?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Да любой framework возьмите. Если религия не позволяет (допустим Вы свидетель css1.0) тогда хотя бы посмотрите как они это реализовали, обычно это width, и padding в %.
    Отличный пример для подражания:
    https://getbootstrap.com/docs/3.3/css/#grid
    Есть и новее, но там уже flex:
    getbootstrap.com/docs/4.0/layout/grid
    Если аллергия конкретно на bootstrap, то вот:
    https://yandex.ru/search/?text=grid%20framework%20...
    Ответ написан
    4 комментария
  • Что имеется ввиду под "Работа в нескольких потоках(веб-приложение)"?

    @AnneSmith
    самая ленивая
    https://msdn.microsoft.com/en-us/library/ff647332.aspx
    • Multithreading
    • Asynchronous programming
    Ответ написан
    Комментировать
  • Правильное тестирование Javascript?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    То есть мы импортим в тест класс, который импортит в себя другие классы?

    Надо понимать, что класс не импортирует классы, импорт/экспорт — это модули. Класс может создавать инстансы других классов или принимать инстансы как параметр конструктора, это нормально — во втором случае вы просто пишете mock: заглушку, которая предсказуемо имитирует нужное поведение. Но если вы из модуля экспортируете инстанс класса, то будут проблемы с тестированием. Например, вот так плохо:
    // A.js
    class A {}
    export const a = new A();
    
    // B.js
    import { a } from './A';
    export class B {
        constructor() {
            this.a = a;
        }
    
        doStuff() {}
    };

    Так как класс B неявно зависит от A, то нельзя написать заглушку для A, и тесты для B будут тестировать поведение A.

    Вот так лучше:
    // A.js
    export class A {};
    
    // B.js
    export class B {
        constructor(a) {
            this.a = a;
        }
    
        doStuff() {}
    };
    
    // index.js
    import { A } from './A';
    import { B } from './B';
    
    const a = new A();
    const b = new B(a);
    b.doStuff();


    Возможно ли работать с DOM в импортируемом классе?

    Если пускалка тестов это поддерживает. Для mocha, ЕМНИП, надо прикручивать karma.

    Это будет считаться юнит-тестом?

    Unit-test по определению тестирует какую-то функциональную единицу — класс, модуль, функцию, метод.
    Ответ написан
    Комментировать
  • Как могут взломать базу данных 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 комментария
  • Как сверстать блоки, у которых неровный стык?

    Ni55aN
    @Ni55aN
    Используйте clip-path в CSS, хотя пишут, что его поддержка не ахти
    5a3cf1487989e157207073.pngПример с SVG path по кривым Безье
    Ответ написан
    Комментировать
  • Я прочитал всю документацию SASS на сайте sass-scss.ru. Как научиться эффективно пользоваться всем этим?

    vicodin
    @vicodin
    Имею некоторый опыт
    Вы поймете только в процессе работы, да и никто не будет 100% всех фич использовать в каждом проекте.

    Попишите 1000 раз один и тот же цвет, а потом дизайнер его изменит и вам придётся менять код в 1000 местах - надоест - начнёте использовать переменные.

    Напишите стили на 5000 строк и замучаетесь скроллить туда-сюда - начнёте использовать импорты.

    Замучались писать селекторы по 5 классов глубиной? Начнёте использовать наследование (а потом ещё и БЭМ).

    Надоест писать @media screen and max-width($width-md) {...} - напишите первый миксин $breakpoint-md {...}.

    И Т Д
    Ответ написан
    Комментировать
  • Как создать часы на JS c привязкой к серверному времени?

    Stalker_RED
    @Stalker_RED
    При загрузке страницы передаете время сервера.
    На клиенте берете текущее время, вычисляете насколько оно отличается от серверного.
    Затем по setInterval() раз в секунду берете время клиента, применяете к нему поправку, и обновляете циферки на дисплее.

    Делать сам отсчет на setInterval(..., 1000) - идея так себе, потому что он вообще не гарантирует, что следующий вызов функции будет через секунду. Он гарантирует, что вызов будет НЕ РАНЬШЕ ЧЕМ через секунду. Ну и есть еще замедление работы при переключении вкладки, сворачивании окна, а так же уход компьютера в сон, гибернацию, вот это все.
    Ответ написан
    Комментировать
  • Где можно набить руку в HTML и CSS?

    Посмотрите джедай верстку webdesign master на youtube(не реклама, чел действительно крутой), плюс у него есть общие ролики по css/html/препроцессорам и т.д.
    Ну и практика, пробуйте делать, что не получается - гуглите, смотрите как у других сделано
    Ответ написан
    7 комментариев
  • Что за шум вокруг темы, что программисты скоро не нужны?

    Vlad_IT
    @Vlad_IT
    Front-end разработчик
    программисты не будут скоро восстребованы.

    Когда мне было 16, я начинал только программировать, меня волновал тот же самый вопрос. Вот даже тему создавал на форуме www.cyberforum.ru/job/thread127123.html (сильно не читайте, мне стыдно за свои сообщения того времени =) ) Это было 7 лет назад, за это время особо ничего не изменилось, поэтому думаю через еще 7 лет будет все нормально.
    Работы для программиста море, а работники нормальные как правило отсутствуют. Понятное дело, что программирование стало "мейнстримом", делать сайты идут все кому не лень, т.к. везде кричат "Программирование сделает вас богатыми! Всего за месяц вы научитесь создавать сайты за деньги!", благо майнинг переманивает людей, желающих легких денег (не в обиду профессиональным майнерам). Но скажу точно, если вы прочитали хоть одну книжку по своему языку программирования, можете писать без использования jQuery и Boostrap (не в обиду этим технологиям, просто часто вижу, что люди учат не JS/CSS, а jQuery/Boostrap), умеете ставить правильные сроки, сможете написать игру "змейка" - то вы уже лучше 90% программистов, а то и больше.
    будут такие инструменты

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

    Так будет с большинством профессий, даже со специалистами по машинному обучению. Но надо понимать, что это случится еще не скоро, лет 10 у вас есть, а там сделают безусловных доход в развитых странах, а в менее развитых, сделают закон, требующий чтобы более 50% сотрудников были не ИИ :-)
    Скажу точно, если вам программирование не очень нравится, то советую уйти в другую профессию, т.к. без любви к этой профессии будет сложно часами сидеть и учить материал (когда тебя не заставляют). Деньги легкие вы тут тоже не сделаете.
    Ответ написан
    10 комментариев