• Зачем использовать готовые решения?

    proudmore
    @proudmore
    Как разработчик, вы должны быстро и качественно выполнить задачу, которую вам дал бизнес. Это достигается за счёт переиспользования готового кода
    Ответ написан
    3 комментария
  • Зачем использовать готовые решения?

    Когда начинал, везде предлагали брать готовое решение, а не изобретать свое чудо...
    Есть две полярных и при этом правильных точки зрения.

    Нужно писать своё, чтобы учиться (как вы описываете в вопросе). И чтобы понимать как работают готовые решения и почему именно так.

    Нужно использовать готовое в работе. Ваша поделка, если у вас мало опыта, будет малофункциональной, неподдерживаемой другими разработчиками и, скорее всего, дырявой и не будет иметь тестов. Всё это важно в мире реальной разработки.

    1. Экономия времени. Достаточно написать и после интегрировать в свои проекты...
    "Достаточно написать" обычно для велосипедов измеряется годами, с учётом всё новых и новых требований и найденных багов.

    2. Правильное решение. Соглашусь, но если практиковать свои навыки, разве у вас не получится также?
    Опять же - речь про годы практики.
    Ответ написан
    Комментировать
  • Как думаете, так можно?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Да. Оператор = возвращает результат операции. Но выражение лучше в скобки возьмите.
    Первый же фрагмент кода не должен компилироваться, так как компилятор не может вывести тип переменной add2.
    Ответ написан
    8 комментариев
  • Что такое Мультиархитектура?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Мульти = много. Осталось загуглить, что такое архитектура.
    То есть по сути это множество архитектур (минимум две), объединенных в одну целую (цельную).

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

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

    А если источник уже умер (или не доступен), и не оставил точного определения, то от слова лучше отказаться. Иначе вы попадаете в патовую ситуацию, когда потом уже вас будут спрашивать, что означает слово, а ответить вы не сможете, ведь не вы же его придумали, и сослаться куда-то тоже не получится. Тупик.
    Ответ написан
    Комментировать
  • Как правильно редактировать сайт с с помощью git?

    Могу предложить такие варианты:
    • Сделать так, чтобы не приходилось проверять так тщательно после обновления на удалённом сервере. Настройте свое локальное окружение для лучшего соответствия.
    • Заведите на сервер поддомен, типа dev.mysite.org и проверяйте все там как удобно, прежде чем обновлять прод
    • Не используйте git на prod. Версионирование нужно для кода, а не сервера. Туда можно хоть архивом лить.


    Ну и как комбо вариант, начать использовать ci/cd, тот же Travis. Обновилась ветка с подготовлены релизом - автоматом вылился на сервер по scp/sftp с адресом-поддоменом. Все устроило? Мердж в мастер и автоматом(на самом деле, лучше вручную или с ограничением по git tag) поехало на прод.
    Ответ написан
    Комментировать
  • Пошаговый калькулятор на С#?

    yarosroman
    @yarosroman Куратор тега C#
    C# the best
    Можно преобразовать в обратную польскую нотацию и фактически у вас будет действие по шагам.
    Ответ написан
    Комментировать
  • Пошаговый калькулятор на С#?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    Один из вариантов решения:
    Превратить поток символов в поток лексем (лексема - это NUMBER , OPERATION , OPEN_BRACKET, CLOSE_BRACKET).
    Затем по одной лексеме складываем в стек.
    После очередной лексемы проверяем: можно ли три верхних лексемы заменить на одну по правилам:
    NUMBER OPERATION NUMBER -> NUMBER
    OPEN_BRACKET NUMBER CLOSE_BRACKET -> NUMBER.
    Если можно - заменяем.
    Если замена проведена, проверяем по правилам заново.
    При замене выводим содержимое стека и оставшиеся лексемы.
    Выполняем пока не закончатся лексемы, а в стеке не останется одна лексема типа NUMBER.
    Ответ написан
    1 комментарий
  • Какое ПО наиболее популярно для Linux-серверов разного типа?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    В линухе по большей части используется не "наиболее популярное", а единственное в своем классе - так же как в винде. Поехали.
    - файловый сервер (надо полагает имеется в виду расшаривание файлопомойки) - Samba. Причем the only, другие мне неизвестны.
    - FTP - вот здесь есть выбор. Я предпочитаю proftpd. FTP рекомендуется использовать только в доверенном окружении, потому что там безопасность не ночевала даже.
    - Что такое "сетевые службы" - непонятно, вопрос неконкретный
    - СУБД есть две - mysql и postgresql. Первая как правило для веба, полегче и побыстрее, вторая - этакий Opensource Oracle - потолще, потяжелее, помедленее, но ворочает гигантские обьемы.
    - Веб-сервер есть ровно один - apache. nginx, очень часть упоминаемый как альтернатива - это не веб-сервер. Это реверс-прокси, балансировщик и все что угодно, но построить полноценный сайт только на nginx невозможно. Впрочем, он и писался не для этого, хотя часть функционала веб-сервера он тащит, потому что обычно стоит на фронте.
    - Почтовый сервер - почта бывает разная. Для smtp - sendmail/postfix/qmail, для IMAP - обычно dovecot, хотя возможно есть и другие.
    Ответ написан
  • Должен ли верстальщик уметь поднимать сервер и разворачивать проект на Linux?

    php666
    @php666
    PHP-макака
    говорят я должен это уметь, поднимать сервак итд
    работаю PHP разработчиком, не умею на Убунте работать и не хочу. Когда надо на *nix подобных системах что-то разворачивать пишу письмо специалистам в группу под названием UnixAdmins и они это делают. И это нормально. Моя задача - разрабатывать проект, а не ковыряться в серваках.

    развернуть локально на убунту проект на php, nginx, mysql, итд .... говорят я должен это уметь, поднимать сервак итд
    Нет, не должен. Это был бы безусловно полезный навык, но ты лишь junior frontend.

    Может посоветуете как быстро этому научиться?)
    Никак. Это будет тупой копипаст из мануала без понимания. А понимание приходит лишь с годами опыта.

    То, что у них надо все с нуля настраивать каждому человеку - это кривая организация их структуры. Например, у нас работа ведется на сервере, по SSH через PHPStorm вносятся все изменения на хосты разработчиков, сервер настроен единожды и под всех. Поработал - зашел на сервак в свою директорию, закоммитил изменения. Всё.
    Придет новый чел - ему просто создадут директорию, настроют хост, он склонирует проект, подключится через PHPStorm к серверу и начнет работать. Все. И это - правильно.

    Наверно не пройду испытательный срок
    да и хрен бы с ними.
    Ответ написан
  • Возможно ли простое обновление зависимостей в множестве микросервисов?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Добро пожаловать в реальный мир. На самом деле эта проблема совсем не нова. Да, зависимости это удобно, но болезненно и именно поэтому необходимо тестирование, а некоторые организации даже применяют тестирование сторонних компонент на безопасность.

    Начинать лечить вашу проблему стоит с того чтобы внедрить CI/CD и получать отчеты об успешных сборках. Тестирование добавите позже. После этого вы поймете что необходимо довольно жестко фиксировать зависимости в проектах, делать форки сторонних библиотек, версионировать свой код в репозитории. Даже API придется со временем версионировать и учиться писать контракты, документацию) Много дополнительной работы, но при этом это все - единственное что держит на плаву проекты, выходящие из песочницы
    Ответ написан
    8 комментариев
  • Какой сервис API-карт лучше выбрать?

    @Dmtm
    Android
    ни один провайдер тайлов не захочет бесплатно раздавать под высокой нагрузкой
    надо платить или разворачивать сервер у себя, тем более что весь мир не нужен и как я понимаю речь о городе/области
    есть варианты с генерацией тайлов у себя по osm db, тут придется предварительно вырезать ненужную информацию про весь мир/страну и оставлять только актуальную область
    Ответ написан
    Комментировать
  • Как начать разрабатывать игры или написать свой игровой движок?

    WinPooh32
    @WinPooh32
    Stack Overflow answer searching expert
    Jason Gregory, Game Engine Architecture
    Ответ написан
    Комментировать
  • Программирование - это прикладная информатика?

    fzfx
    @fzfx
    18,5 дм
    да, примерно в той же степени, что и бухгалтерия - прикладная алгебра, работа грузчиком - прикладная физкультура, а фермерство - прикладная ботаника.
    Ответ написан
    Комментировать
  • Отличие терминов Инварианта и Свойства?

    @res2001
    Developer, ex-admin
    Из википедии:
    Инвариант в объектно-ориентированном программировании — выражение, определяющее непротиворечивое внутреннее состояние объекта.

    Но это относится не только к ООП, а в принципе.
    Из ваших примеров, по моему, только 4 про инвариант.

    Исходя из определения из вики, инвариант - логическое выражение (а не свойство), которое всегда должно выполняться для объекта. Если оно не выполняется, то объект (класс, структура и т.п.) находится в несогласованном состоянии и его дальнейшее использование опасно.
    Обычно инварианты нарушаются внутри методов класса, при выходе из метода инвариант должен снова восстанавливаться, иначе метод отработал не правильно.
    Простой пример: для Си строки инвариант - не нулевой указатель на начало и символ 0 в конце строки.
    Например у вас есть функция AddString, которая добавляет к существующей строке другую строку. Для простоты предположим, что не нужно перевыделять память. В процессе выполнения AddString инвариант нарушается - 0 символ заменяется добавляемыми символами второй строки. Но после добавления нулевой символ должен быть восстановлен в конце, после чего инвариант снова будет истинным.

    Для одного объекта может быть несколько инвариантов, для разных методов объекта могут быть важны не все инварианты. Если метод в ходе своей работы нарушает какой-то инвариант, есть смысл в начале и конце метода проверить этот инвариант с помощью assertа. Это предотвратит возможные ошибки.
    Ответ написан
    2 комментария
  • Что мотивирует open source сообщество?

    Zoominger
    @Zoominger
    System Integrator
    Говорю за себя.
    В моих открытых проектах мной двигали исключительно филантропические мотивы - вот нет такого ПО (для Linux, конечно), это неудобно, тогда я напишу его для себя. Теперь оно есть и можно сделать хорошее - распространить его среди страждущих. Правда, в моем случае ПО помогать сопровождать было некому (отчасти из-за того, что оно на Qt, которое мало кто знает, отчасти от того, что швабодное шаобщество в большинстве своём сборище фанатиков и балаболов, которое мало что умеет на деле).

    Дополнительно - тренировка, это ж хороший пет-проект, оттачивание навыков, прокачка.

    А вообще - читните “Just for fun” Торвальдса, там все написано.
    Ответ написан
    4 комментария
  • Что мотивирует open source сообщество?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Кто эти люди что делают "готовое", что ими движет?

    Это люди которые не нашли готовое или готовое им не подошло. Они просто решают свою проблему.
    Ответ написан
    Комментировать
  • Для чего нужны директивы препроцессора на языке С и С++?

    Zoominger
    @Zoominger
    System Integrator
    Лень печатать, почитайте сами:
    5d85f85fd3f76981179317.png
    5d85f89945186944026071.png
    Ответ написан
    Комментировать
  • Что читать во вне учебное время?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Читать основы - Фаулера, Макконелла, БандуЧетырёх. Для разнообразия - Джоэля Спольски; забавно, что все программисты пользуются его сайтом, но мало кто знает кто он такой и какие крутые статьи он писал.
    Ответ написан
    Комментировать
  • Что читать во вне учебное время?

    Совершенный код, Стив Макконнелл и много другой нестареющей классики, которая не относится к конкретному языку.
    Ответ написан
    Комментировать
  • Производительность в браузерной игре, что использовать Canvas или DOM rendering?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Тёплое и мягкое (Canvas vs HTML5) нельзя сравнивать.
    Посмотрите, что такое Canvas и что такое HTML5, точные определения.
    Подсказка
    Canvas - это элемент HTML5.
    То есть как бы нельзя использовать Canvas, не используя при этом HTML5.

    Дополнено:
    Элементы DOM достаточно медленные, потому что удобство поиска требует жертв.
    Кроме того, в геймдеве есть понятие основного игрового цикла, в котором формируется новый кадр. При этом обычно весь кадр целиком перерисовывается заново. Это даёт очень большую гибкость в плане изменчивости вида объектов, различных эффектов и т.д.

    Как следствие, конечно же Canvas лучше использовать. Состояние игры, соответственно, нужно хранить в переменных JavaScript, в объектах, и чем проще структура, тем быстрее перебор и отрисовка нового кадра.
    Ответ написан
    8 комментариев