• Как написать браузер на C++ для Linux?

    revenger
    @revenger
    49.5
    Почитайте для начала, может передумаете
    https://habr.com/ru/post/541196/
    Ответ написан
    Комментировать
  • Плохая практика менять объект ненапрямую?

    DollyPapper
    @DollyPapper
    Нарушаете принцип инкапсуляции как минимум. Сделайте композицию, чтобы в конструктор передавалась начальная позиция персонажа, и метод чтобы менять эту позицию у самого персонажа. Сейчас у вас p
    это не свойство персонажа, а разделенное свойство в области видимости, хотя по логике это именно свойство персонажа.
    Ответ написан
    9 комментариев
  • Плохая практика менять объект ненапрямую?

    @rPman
    Согласен с ответом DollyPapper, но формально возможна ситуация когда так можно делать

    К примеру, если научить объект Position сообщать о действиях над собой своим овнерам, создав абстрактный класс CanHavePosition с виртуальным методом doMoving который должен быть имплементирован в классе Character (который наследуешь от CanHavePosition) и вызываться на каждое движение Position::to (способы оформления могут другими быть, например наоборот, в конструкторе Character будет вызываться метод init у Position с колбеком, который будет вызываться внутри Position::to) то такое оформление как у вас будет оправдано.

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

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

    Promise.all(proxies.map((p) => check(p)))
    .then((check_results) => check_results.filter(....))
    Ответ написан
    1 комментарий
  • Как создать десктопное браузерное НЕ web приложение?

    @rPman
    Во времена существования xul в mozilla firefox такая возможность была, возможно и сейчас есть, покопайся.
    Сейчас эту функцию взял на себя основанный хромиум electron.
    Ответ написан
    Комментировать
  • Есть ли видимая перспектива у Junior-а?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Есть ли видимая перспектива у Junior-а?

    Очевидно стать middle?
    Ответ написан
    Комментировать
  • Как писать техническую документацию к софту?

    Salangin
    @Salangin
    Technical writer
    Есть какие-то методологии по написанию документации?
    Да. В Вашем случае можно писать по ГОСТ 19. Если проект большой, то по ГОСТ 34. Есть стандарты ISO

    Есть какие-то удобные (платные, бурж) SAAS-сервисы для упрощения ведения документации?
    Например, в WIki можно ее хранить.

    Не нашел особо много информации, по написанию документации, подскажите запросы, по которым смогу "нарыть" больше инфы по этому вопросу, или ткните на конкретные ресурсы/статьи?
    В вашем случае это: техническая документация, описание API, описание БД, Javadoc, Doxygen

    Как называется профессия людей, кто занимается только написанием документации?
    Техписатели, techwriter-ы, разработчики документации.

    Сколько стоит в среднем работа людей пишущих документацию?
    Оклад техрайтера сильно зависит от квалификации, от языка, на которм он пишет, а также от сложности проекта и типа документации. Можно сказать, что от 30 до 100 тысяч в месяц.
    Ответ написан
    Комментировать
  • Полиморфизм - это обратное наследование?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Это ваше собственное определение про обратное наследование?
    Родительский класс ничего не знает о методах потомков.
    Полиморфизм нужен для организации уровня абстракции.
    У автомобиля есть абстрактный интерфейс: разгоняться, тормозить, поворачивать. Вы применяете соответствующие методы, а под капотом происходит полиморфизм в зависимости от того, на какой машине вы едете: на ДВС при ускорении отодвигается заслонка, обогащается сместь, поступает в форсунки, увеличиваются обороты; у электромобиля частотник увеличивает частоту, синусоиды, идущей на двигатели, он начинает крутиться быстрее... Потом кто-то придумал гибрид и там всё гораздо сложнее, но на уровне "предка" обо всём этом не нужно думать, благодаря полиморфизму мы имеем простые понятные методы, которые у потомков реализованы по-своему.
    Ответ написан
    Комментировать
  • Какие можно реализовать мини-проекты на PHP?

    @posters
    На мой взгляд, беда большинства программистов в том, что они зациклены на it сфере. В ней уже многое реализовано. Гитхаб заполонен никому не нужными велосипедами. Придумать и реализовать что-то уникальное в этой сфере уже довольно сложно. А чтобы улучшать уже имеющееся и востребованное может пока еще не хватать компетентности.

    Попробуйте выйти за рамки IT. Наверняка у вас есть друзья/родственники, работающие в сферах далеких от IT. Разузнайте больше о их деятельности, попробуйте вникнуть в рабочий процесс, мысленно представить себя на их месте. Подумайте, что бы вы могли сделать, чтобы как-то облегчить их труд, какая программа могла бы стать потенциально полезной. Обсудите идею с этим человеком и если он согласился, что программа может облегчить ему жизнь, ПРИСТУПАЙТЕ. Вот вам мотивация и почти настоящий проект.

    Если ну совсем никак, обратите внимание на отрасли науки. Вот, к примеру, об исторической информатике не думали? Научитесь работать с данными. Возьмите, например, информацию Международного мемориала ( https://www.memo.ru/ru-ru/projects/memoid и https://www.memo.ru/ru-ru/projects/hackathon ) и попробуйте на ее основе сделать какой-нибудь информационный сайт, который в перспективе будет интересен не только вам. Поработайте со статистикой, попробуйте выявить какие-нибудь закономерности.

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

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    Перенаправить вывод в файл.
    Ответ написан
    Комментировать
  • Как правильно внедрять БЭМ?

    profesor08
    @profesor08
    Ну вот, желание использовать БЭМ, породило кучу проблем. Нет БЭМ - нет проблем!

    Используй styled-components или модульные стили. Если нет возможности, то используй scss, там нет проблем, которые навязывает БЭМ и героически решает. Если используешь чистый CSS, то не используй, а используй scss.
    Ответ написан
  • Какие веб-технологии наименее требовательны к ресурсам памяти и ЦП сервера?

    @rPman
    Минимизировать потребление ресурсов позволит грамотная разработка, не хотите тратить лишнее - не тратьте. К сожалению затраты на саму разработку растут экспоненциально от сэкономленных ресурсов, начиная с определенного уровня это становится на столько накладно что проще купить больше железа чем платить очень дорогим разработчикам поддержку эффективного решения.

    Советы:
    * не используйте http rest с генерацией html на сервере (устаревший подход, но много готовых фреймворков его используют, у этого подхода только одно достоинство - дешевая горизонтальная масштабируемость), ваш бакэнд должен выглядеть готовым веб сервером и не должен на каждый запрос делать лишние инициализации.
    * переносите все что только можно на сторону клиента, всякие single page application, в идеале бакэнд должен быть чем то типа прослойки к базе данных и авторизация, все остальное пусть работает на клиенте
    * уменьшайте количество запросов (т.е. запросить 1 мб в виде одного файла менее ресурсоемко чем запросить сто по десять килобайт), никаких периодических запросов на сервер для проверки статусов, пользуйтесь вебсокетами
    * все что неизменно или редко меняется должно быть статикой, на ее поддержку тратится несравнимо меньше ресурсов сервера
    * не перебарщивайте с использованием готовых фреймворков, да это соблазняет простотой и получением готового результата путем комбинации решений как в конструкторе, но начиная с какого то момента ограничения подхода и борьба с особенностями и даже багами превысят затраты на самостоятельную разработку решения. Знаменитый анекдот 'как программист заваривает чайник' отличная иллюстрация того что готовые решения увеличивают затраты ресурсов и по простому это не исправить.
    Готовые репозитарии решений это конечно отлично но вы должны понимать что не вы их поддерживаете а значит становитесь заложником чужих решений и разработчиков, на которых вы не влияете. А уж когда у вас критичная и финансовая информация, чужие готовые решения становятся огромной дырой в безопасности.
    Ответ написан
    Комментировать
  • Как сверстать такое как на скрине (часть блока выходит за контейнер вплотную к правой стороне экрана)?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Вариантов несколько. Озвучу два.

    1. Блок с картой абсолютом. Размеры и отступы в vw.
    2. Карта во всю ширину на заднем плане. Сверху перекрыта текстовым блоком в контейнере.
    Ответ написан
    Комментировать
  • Комбинированная пагинация во Vue?

    0xD34F
    @0xD34F Куратор тега Vue.js
    https://jsfiddle.net/vp4qawfg/

    Или можно взять что-нибудь готовое, на awesome-vue есть подборка компонентов пагинации, среди которых можно найти такие, которые реализуют требуемую функциональность.
    Ответ написан
    Комментировать
  • Можете оценить тестовый проект на ReactJS + Redux?

    WblCHA
    @WblCHA
    1. Нет ни еслинта, ни преттиера.
    2. Нет тестов.
    3. Все коммиты без названий.
    4. Почти все комментарии на русском. Да и большая часть описывает банальные вещи.
    state[0] = state[index] // запись нового выбора на первое место
    state.splice(index, 1) // удаление нового выбора с предыдущей позиции в массиве

    5. Использование комментариев для функций вместо жсдока.
    6. Мне лень разбираться, но sort тут не подходит разве?
    spoiler
    for (let i = 1; i < state.length; i++) { // сортировка от меньшего к большему по первому числу для возврата предыдущего выбора на правильную позицию
                        if (state[i].split(' ')[0] > beforeSelected.split(' ')[0]) {
                            state.splice(i, 0, beforeSelected) // запись предыдущего выбора на правильную позицию
                            break
                        } else if (state[i].split(' ')[0] === beforeSelected.split(' ')[0]) { // если первые числа равны проверка по второму числу
                            if (state[i].split(' ')[2] >= beforeSelected.split(' ')[2]) {
                                state.splice(i, 0, beforeSelected) // запись предыдущего выбора на правильную позицию
                                break
                            }
                        }
                        if (i === state.length - 1) { // если предыдущий выбор оказалася наибольшим
                            state.push(beforeSelected)
                            break
                        }
                    }

    7. Не используй деструктуризацию в аргументе функции, если используешь параметр лишь раз.
    spoiler
    const resize = ({ param }) => { // изменение select
        ...
      }

    Это равносильно:
    const resize = (obj) => { // изменение select
        const param = obj.param;
        ...
      }


    8. Все тексты захардкожены прямо в коде.
    9. Питон-стайл (где точки с запятой?).
    10. Почему в папка types лежат компоненты, а не типы? Это, конечно, жс, а не тс, но сути это не меняет.

    Короче, это так, беглый осмотр.
    Ответ написан
    6 комментариев
  • Какие проекты JavaScript отлично иметь в своём портфолио?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Как считаете, что подойдёт лучше всего?
    Тот, который сделан качественно, с душой и для людей. Лучше всего: с востребованным функционалом, которого сейчас нигде нет.

    Покажите, как лично Вы способны упростить жизнь разработчикам не требуя ничего взамен.
    Это будет лучшим портфолио!
    Ответ написан
    Комментировать
  • Какие проекты JavaScript отлично иметь в своём портфолио?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    Вот и напишите проект, который будет генерировать идеи проектов.
    Ответ написан
    Комментировать
  • Как вызывать вложенные асинхронные функции?

    Aetae
    @Aetae
    Тлен
    forEach - синхронный. Либо используйте либы умеющие в асинхронный forEach, либо используйте обычные циклы:
    export const setGenderThunk = (gender, login) => {
      return async dispatch => {
        const users = await getUsers || [];     // там внутри fetch
        for(let user of users) {
          if(user.login === login) {
            const user_ = { ...user, gender: gender };
            await setUser(user_, user.id);      // там тоже внутри fetch
            debugger
            if(result.ok) {
              dispatch(setGenderAC(user_.gender));
            }
    
          }
        };
      }
    }


    P.S. Второй вариант кстати у вас очень плох: forEach отрабатывает всё равно синхрнно, но при этом единовременно плодит множество асинхронных функций выполняющихся параллельно (которых, само собой, никто не ждёт).
    Ответ написан
    6 комментариев
  • Знать ООП или нет?

    AleksandrB
    @AleksandrB
    Совсем недавно вывел "Hello world"
    Любой.
    Программист.
    Должен.
    Знать.
    ООП.
    Ответ написан
    Комментировать
  • Где тут ошибка?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    То есть ты пишешь класс еггог, но при этом не умеешь включать элементарное отображение ошибок в РНР?

    Забудь про классы на годик или два, сотри этот класс и учи основы. Это не наезд - я серьёзно.
    Всё, что новички так старательно выписывают в своем коде, на самом деле уже есть РНР. Ничего от себя писать не надо. Особенно класс еггог.

    Всегда пиши в начале своего кода две строчки
    error_reporting(E_ALL);
    ini_set('display_errors', 1);

    на боевом сервере меняй 1 на 0.
    Это ВСЁ что нужно для обработки ошибок
    Ответ написан
    3 комментария