Задать вопрос
  • Какую прочитать книгу/курс по проектированию баз данных?

    myjcom
    @myjcom
    плохо ищете )
    Поиски литературы почему-то не увенчались успехом, пара унылых статей на хабре, море старой литературы старше 15 лет и курсы для новичков на udemy где описывается разница между insert и select.


    все есть:

    SQL Queries for Mere Mortals, 4th Edition
    Год издания: 2018
    Автор: Viescas J.
    Жанр или тематика: Базы данных
    Издательство: Addison-Wesley Professional
    ISBN: 978-0134858333
    Язык: Английский

    Effective SQL: 61 Specific Ways to Write Better SQL
    Год издания: 2017
    Автор: Clothier B., Steele D., Viescas J.
    Издательство: Addison-Wesley
    ISBN: 978-0-13-457889-7
    Язык: Английский

    PostgreSQL Up and Running, 3rd Edition
    Год издания: 2018
    Автор: Obe R., Hsu L.
    Издательство: O'Reilly Media
    ISBN: 978-1-491-96341-8
    Язык: Английский

    PostgreSQL 9.6 High Performance
    Год издания: 2017
    Автор: Ahmed I., Smith G.
    Издательство: Packt Publishing
    ISBN: 9781784392970
    Язык: Английский

    PostgreSQL High Availability Cookbook
    Год издания: 2017
    Автор: Thomas S.M.
    Издательство: Packt
    ISBN: 978-1-78712-553-7
    Язык: Английский

    PostgreSQL 10 High Performance
    Год издания: 2018
    Автор: Ibrar Ahmed, Gregory Smith, Enrico Pirozzi
    Издательство: Packt Publishing Ltd.
    ISBN: 9781788474481
    Язык: Английский

    Database Systems: Design, Implementation and Management
    Год издания: 2017
    Автор: Coronel С., Morris S.
    Издательство: Cengage Learning
    ISBN: 978-1-305-62748-2
    Язык: Английский

    Designing Data-Intensive Applications / Высоконагруженные приложения. Программирование, масштабирование, поддержка.
    Год издания: 2018
    Автор: Martin Kleppmann / Клеппман Мартин
    Издательство: Питер
    ISBN: 978-5-4461-0512-0
    Язык: Русский

    Refactoring SQL Applications / Рефакторинг SQL-приложений
    Год: 2009
    Автор: Stephane Faroult / Стефан Фаро, Pascal L'Hermite / Паскаль Лерми
    Издательство: Символ
    ISBN: 978-5-93286-145-5, 978-0-596-51497-6
    Язык: Русский

    и даже ISO/IEC 9075:2011 буржуйский можно найти в pdf
    Ответ написан
    2 комментария
  • Как найти элементы, встречающиеся в массиве максимальное количество раз?

    rockon404
    @rockon404
    Frontend Developer
    const arr = [1,1,1,1,1, 3,3,3,3,3, 5,5 ,6,6,6, 7,7,7,7,7];
    
    const map = {};
    arr.forEach(el => map[el] = map[el] ? map[el] + 1 : 1);
    const max = Math.max(...Object.values(map));
    const result = Object.keys(map).filter(key => map[key] === max);
    
    console.log(result); // [1 ,3, 7]
    Ответ написан
    Комментировать
  • Верстка с нуля: какие основные этапы работы?

    Vlad_IT
    @Vlad_IT Куратор тега Вёрстка
    Front-end разработчик
    Использую vscode+webpack+pug+scss+бэм. Из физических инструментов, основной моник: lg ultrawide 29um69g, рядом прикручен моник от ноутбука повешенный вертикально, подключенный через универсальный скаллер.

    0) Запускаю Spotify :-)

    1) Произвожу установку всех необходимых модулей для сборки. В моем случае у меня набор конфигураций для webpack (отдельные файлы для pug, scss, static и.т.д., выбираю что нужно).

    2) Запускаю avocode, загружаю в него макет. Определяю в нем переменные (в то же время записываю их, чтобы сразу кинуть в scss файл) для цветов, размеров шрифтов и.т.д. чтобы при получении кусочков кода из него, он сразу расставлял переменные.

    3) Запускаю VS Code, открываю нужную папку.

    4) Пишу размету на Pug. Пишу с БЭМ, если встречаю повторяющийся блок, то открываю файл _mixins.pug, в который пишу миксины для повторяющихся блоков, например товаров, пунктов меню, каких-то блоков и.т.д. Pug умеет делать циклы, это ускоряет сильно.

    5) Когда HTML готов, начинаю делать каркас. Если дизайн сделан по сетке, определяю контейнеры, колонки, строки в свои классы (не пишу в html тучи классов аля col-md-6, а пишу в SCSS инклуды в нужные мне блоки, типа @include make-col(2) и.т.д.).

    6) Экспортирую картинки из Avocode. Очень делается просто, указываю папку и просто кликаю экспорт и ввожу название файла и расширения. Преимущественно для иконок использую svg, если нет svg, то ищу эту иконку в интернете (дизайнеры редко рисуют иконки сами, но зато любят вставлять их не в векторе). Если иконка простая, могу сам ее в inkscape обвести, ну и если нет, то экспортирую png в размере (благо авокод это позволяет, если конечно дизайнер не вставил в исходном маленьком размере). Когда есть контакт с дизайнером, трясу его, ибо растр это плохо для иконок.

    7) Пишу стили блоков из страницы. На этом этапе можно на втором монике параллельно смотреть футураму или
    Арчера :-) Но чаще на широком монике слева браузер, справа VS Code, а на втором монике Avocode (может меняться местами с браузером). Мысленно нарезаю страницу на блоки. Для каждого блока (БЭМ) создаю отдельный scss файл (кто-то даже для элемента создает, но мне лень), из него сразу выписываю все селекторы. Иногда могу сначала выписать все селекторы со страницы (но так лучше не делать, т.к. во время работы может потребоваться изменить что-то в разметке), но чаще для одного блока выполняю этот пункт и за ним сразу выполняю пункт 8, потом для нового блока опять 7 и 8 и.т.д.

    8) Пишу css код вместе с Avocode, у него беру нужные мне параметры (а он уже подставил в них переменные), и вставляю в мой код. И параллельно сверяю со скрином макета используя вот это расширение https://chrome.google.com/webstore/detail/perfectp...

    9) Пишу адаптив. Я не могу привыкнуть к методологии mobile-first, поэтому пишу всегда сначала полную версию сайта. Я понимаю, что это чревато всякими проблемами и это типа не модно, но мне норм.

    10) Медиа-запросы пишу прямо в блоках, для каждого блока/элемента/модификатора может быть отдельный медиа-запрос. Но для начала определяю breakpoint'ы для разных экранов (чтобы их не было сотни разных), если использую Bootstrap, то беру его breakpoint'ы.

    11) Добавляю анимашки. Даже если заказчик не просил отдельно (и если не указал отдельно, что нельзя), он все равно будет доволен, а с animate.css+onscreen.js это вообще работа 10 минут. Сложные анимации обговариваю отдельно, чтобы не сделать ненужную работу.

    11) Все снова сверяю, пишу скрипты где надо. Для слайдеров в 99% случаев подходит slick (с доработками конечно, но там хорошее API), для других случаев могу написать свой.

    12) Сдаю заказчику и жду ответа сидя на тостере/пикабу.

    Это чисто мой опыт, опыт фрилансера, не знаю, как делают другие и не могу на 100% утверждать что это 100% правильный способ. Я так и не смог заставить свой конфиг webpack правильно вставлять спрайты svg.
    Надеюсь чем-то поможет мой ответ.
    Ответ написан
    7 комментариев
  • Как оценить трудозатраты для дизайнера?

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

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

    Далее для каждой из задач выбирается что более приоритетно - ресурсы или результат.
    Если результат - то это классический Time&Material - дизайнер пашет пока заказчик не будет удовлетворен результатом, далее счет выставляется по факту.

    Если важнее уложиться в ресурсы - делается оценка в стиле "ну за 40 часов я точно нарисую логотип", умножается на количество вариантов дизайна по договору, умножается на юридические и прочие риски.
    Расчеты между студией и дизайнером как правило все равно T&M, но если студия верно учла все риски - проблемы в этом нет.

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

    PS + Какое должно быть ценообразование для ИТ услуг (разработка)?
    Ответ написан
    Комментировать
  • Инструменты для wordpress?

    zorca
    @zorca Куратор тега WordPress
    Ответ написан
    Комментировать
  • Совместимы ли хороший рейт, фултайм и long-term на фрилансе/удалёнке?

    IvanGW
    @IvanGW
    JavaScript developer @ Fundraise Up
    Вполне реально, сам так делаю — https://www.upwork.com/freelancers/~010d15364e8cf3268d

    Насчёт времени. Если взять и грубо посчитать всё, то за 2 года получится примерно по 5 часов в день. На самом деле получается 28-35 часов в неделю, больше — редко.

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

    Текущая ставка от $22 до $30, в зависимости от проекта.
    Проекты, кстати, разные. Последний для ARM, например.

    Не слушайте советчиков с Тостера и Хабра, которые говорят, что ни у кого ничего не получится. Тут большинство пользователей какие-то злые.

    Если вдруг кто заинтересован, периодически нужны разработчики в команду (разговорный английский и всё такое).
    Ответ написан
    4 комментария
  • В чём делают (это не тавтология) проект проекта?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Его делают в техническом задании, которое пишут например в ворде или любом другом редакторе.

    А куски кода и тех.задание обычно НЕ совмещают вместе, это разные документы.
    Для описаний классов - UML, для разбиения тех.задания на конкретные таски - бэктрекеры, в которых солюшен дизайн может быть прописан прямо в тикетах.
    Ответ написан
    Комментировать
  • Как научиться пользоваться ОС без мышки?

    dummyman
    @dummyman
    диссидент-схизматик
    Начните с малого
    Выкинь кеды и гном, используй человеческий менеджер окон.
    Пройди $ vimtutor и открой для себя vim awesome.

    Прямо стихами получилось.

    Чуть не забыл добавить tmux + powerline или terminator чтобы стать риил ганста хакер.

    UPD: Блин, забыл еще очень важное хозяйство. Как же без общения?
    Есть mcabber - поддерживает только xmpp, но к нему на github можно найти тысячи неофициальных плагинов, неговоря о сотнях официальных. Многие xmpp серверы поддерживают транспорты на другие более модные протоколы (icq, skype и проч.).

    Есть древний, но еще обновляемый неофициальными форками centericq. Этот мультипротокольный изначально. Официальный поддерживает без всяких транспортов ICQ, Yahoo!, AIM, MSN, IRC, XMPP, LiveJournal, and Gadu-Gadu. Но тут тоже... Можно найти много разных форков и тысячи неофициальных плагинов. Скорее всего можно прикрутить все современные непроприетарные протоколы.
    Ответ написан
    4 комментария
  • На чем писать фронтенд легко и непринужденно?

    AleksDesker
    @AleksDesker
    Легко и непринужденно это jQuery - он для всех хорош и никого ни к чему не обязывает. Фреймворк это уже серьезный выбор, он диктует архитектуру часто, фреймворк нужно неплохо знать, прежде чем начинать что-то более менее серьезное на нем писать.
    Ответ написан
    1 комментарий
  • Как часто используются дескрипторы, декораторы и bind, call, apply?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Обо всем по порядку

    Дескрипторы - так понимаю речь идет о дескрипторах свойств объекта. Вещь крайне полезная, позволяющая задать поведение свойству, сделав его не перечисляемым или, например, только для чтения, а так же можно задать функции getter/setter, которые будут вызываться при чтении/записи свойства. Используется довольно часто.

    Декораторы функций. Позволяют избежать дублирования кода. Допустим, подключаете Вы некую библиотеку, в которой есть некоторая функция, Вам необходимая. Пусть она делает некое действие А, но Вам регулярно нужна последовательность действий А и Б. Тогда Вы пишите над этой функцией обертку, выполняющий эту последовательность, и уже вместо библиотечной функции + действие Б используете везде свою обертку. А вот если у Вас таких оберток с действием Б довольно много, то уже нужен декоратор, который позволит создавать такие обертки для любой функции. Используется как правило в крупных проектах, так как снижает вероятность ошибок.

    bind - по сути является декоратором встроенным в язык. Позволяет привязать к функции контекст и начальные аргументы. Используется постоянно, особенно в случае передачи функции во внешний код.

    call и apply позволяют вызвать функцию с нужным контекстом, разница в том что apply принимает 2 аргумента - контекст и массиво-подобный объект содержащий аргументы, а call принимает произвольное число аргументов: 1й - контекст, последующие передаются как аргументы функции. Используется постоянно.

    Карринг. Хоть и используется не так часто, но бывает весьма полезным инструментом. По сути цепочки промисов построены на принципах карринга, только не функций, а объектов.

    Ну и напоследок, конструкция var self = this; позволяющая сохранить контекст в замыкании уже потихоньку уходит в прошлое, благодаря стрелочным функциям из es2015
    Ответ написан
    1 комментарий
  • Как закрывать выпадающее меню при клике вне его самого?

    @everdimension
    Использовать e.stopPropagation() — плохая идея. Читайте

    Правильный способ — проверять, является ли target сделанного клика элементом меню или чем-то другим. Если это не меню — закрывать меню.

    Появляется правильный вопрос, что делать, если кликнутый элемент — дочерний элемент меню? Для этого есть офигенный метод node.contains()

    Собственно, вся требуемая проверка получается совсем несложная — gist
    var el = document.getElementById('el');
    
    document.addEventListener('click', outsideEvtListener);
    
    function outsideEvtListener(evt) {
        if (evt.target === el || el.contains(evt.target)) {
            // клик внутри
            return;
        }
        // код для закрытия меню, например el.classList.add('hidden')
       
        // не забыть убрать слушатель событий (не для каждой имплементации требуется)
        document.removeEventListener(outsideEvtListener);
    }
    Ответ написан
    2 комментария
  • Друзья, есть ли какие задачи для практики по JavaScript?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Дружище, умение самому ставить себе задачи является основой работы программиста. Неважно, на каком языке вы пишете. Постановка задачи это сама по себе задача, которую надо научиться делать. Задача рассматривается со всех сторон в уме, прикидываются инструменты, фреймворки и т.д. Но сначала вам надо "увидеть" в уме какой результат должен быть на выходе, иначе, решая задачу, вы не сможете сказать, насколько ваши действия способствуют достижению конечного результата. А найти задачу несложно - посмотрие по сторонам, многие задачи просто валяются вокруг и только и ждут, чтобы вы их увидели и решили.
    Ответ написан
    2 комментария
  • Почему не корректно работает событие mouseenter/mouseleave?

    Либо маркеры отключайте, либо события ловите не на элементах меню, а на каком-то их содержимом. Ибо маркеры являются частью элемента, но обособленным от его содержимого. Когда курсор проходит через маркер, забивает очередь событий, которая отрабатывается в итоге. Если «уходить» с элемента через маркер, то он переоткроется и не закроется, так как на пункт меню (маркер) курсор попал, но был уже вне контейнера, на котором ловится mouseleave.

    В элементе меню сделайте два контейнера, один с заголовком, а другой с контентом, скрытый. И с ними уже работайте, дабы не городить костылей.

    Вместо mouseenter и mouseleave можно цепляться к событию hover. Так и лаконичнее, и не будет проблем, связанных с тем, что события ловятся на разных элементах.
    Ответ написан
    1 комментарий
  • Модальные окна Bootstrap 3 и полосы прокрутки - в чем может быть проблема?

    @zyets
    Тоже столкнулся с подобной бедой, только, очевидно, наоборот!...
    В моем случае было так:

    Я всегда ставлю принудительно:
    html{
    	overflow-y: scroll;
    	overflow-x: auto;
    }


    Для того, чтоб показывать полосу прокрутки на всех страницах. Зачем? Вот тут можно почитать:
    xiper.net/collect/html-and-css-tricks/css-tricks/t...

    В свою очередь в Bootstrap, при открытии модального окна, скролл-бар у html отключается (зачем и каким образом хз, не лез в такие дебри)
    Чтобы не был дергания, бутстрап ставит для body заглушку в виде padding-right: 15px; на время открытого окна!
    Поэтому в моем случае это лечится одной строчкой css:
    body{
    	padding-right: 0 !important;
    }
    Ответ написан
    Комментировать
  • Как написать смету на разработку сайта без чёткого понимания его концепции?

    losik34
    @losik34
    Инженер-строитель ПГС, ПТО, Сметчик
    Правильно. Взять деньги за составление ТЗ. Потом составить смету и за неё то же взять деньги. А там видно будет что и почём.
    Ответ написан
    Комментировать
  • Как сделать спецификацию макета сайта и нужно ли?

    Rrooom
    @Rrooom
    Я б расплакался и расцеловал дизайнера, который бы потрудился бы так над своим макетом!
    Ответ написан
    Комментировать