Задать вопрос
  • В чем разница между архитектурой Linux и Windows с точки зрения программиста?

    mindtester
    @mindtester Куратор тега Windows
    http://iczin.su/hexagram_48
    а упростить формулировку и начать с гугла не судьба? В чем разница между архитектурой Linux и Windows

    ps все еще хуже - у программистов 1С, java, не поверите, но возможно даже для многих веб/мобайл разработчиков, такой точки зрения может и не быть. не до этого им. при том что большая часть популярных средств и инструментов для них, уже есть на обоих платформах
    Ответ написан
    1 комментарий
  • Это одно и тоже с точки зрения стандарта?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Казалось бы, в обоих случаях у нас вызов конструктора,

    А вот и нет. A a(); -- это объявление функции a, без параметров, возвращающей значение типа A.


    И получаем странную ошибку при компиляции:
    ssd1306_128x32_i2c_test.ino:50:3: error: request for member 'f' in 'a', which is of non-class type 'A()'

    В сообщении об ошибке об этом явно написано.
    Ответ написан
  • Пожалуйста оцените мое убогое ООП?

    Stasgar
    @Stasgar
    Обученная макака
    Во-первых: начните изучать архитектурную часть программирования, изучите паттерны проектирования, изучите SOLID, DRY, KISS и остальные модные словечки, постарайтесь всё это осознать, или, на крайняк - зазубрить. Всё придет с опытом, изначально все не понимали зачем всё так сложно, но эта сложность обусловлена неисчислимыми литрами слёз и потраченных нервов, всё не просто так.

    Судя по всему это тестовое или учебное задание. От вас требовалось отоверинжинирить простую задачу. Давайте попробуем:

    Суть задачи - есть файл с определенной структурой хранения данных, структура строковая. Требуется этот файл преобразовать в другую структуру данных и вывести эту структуру в json формате. Задача ясна.

    Разобъем задачу на отдельные независимые этапы:
    1) Преобразование одной структуры данных (текстового файла) в другую (объект, понятный PHP, к примеру)
    2) Преобразование этой структуры данных в Json формат.
    Первый вопрос, который может возникнуть - почему сразу не преобразовать в json? Ответ - при расширении системы в будущем - нам понадобится вывести данные в виде массива, или в виде XML, или даже в виде готового файла Excel. Нам будет сложно дополнять логику изначального класса, ничего при этом не сломав и не затронув уже существующий функционал. Также ответом на этот вопрос может являться каждая буква из SOLID принципов, подробнее отвечу дальше, когда буду пояснять за реализацию, см. ниже

    Теперь рассмотрим эту задачу с точки зрения ООП, начнем думать не от конкретной реализации, а от интерфейса и абстракции (мы не парсим конкретный файл, мы парсим просто файл, мы не переводим его в конкретное представление json, мы переводим его просто в представление):
    Нам понадобится 2 класса - непосредственно класс, читающий файл и преобразующий его в простейший тип данных (например PHP array). Второй класс - преобразователь простейшего типа данных парсера в какой-то определенный тип:
    1. LogFileReaded implements/extends FileReaderContract(интерфейс, возможно абстрактный класс, если понадобится предустановленная логика)

      Непосредственно наш преобразователь (не забываем, что передавать путь к файлу и все настройки нужно из вне, к примеру, в конструктор. Нельзя, как вы - хардкодить всё внутрь файла, на крайний случай - можно использовать конфигурацию), на ввод получает файл определенного типа с определенной известной структурой, на выходе выдает информацию из файла, преобразованную в базовый тип (массив, в нашем случае). Если нам когда-то понадобится парсить другой тип данных или структура данных будет изменена - мы сможем написать отдельный класс для этой логики, а не рушить целостность уже работающего кода, добавляя туда новую логику. Запомните - нужно стремиться не менять, а дополнять.

    2. JsonPresenter implements/extends DataTypePresenterContract

      Абстракция содержит контракт на метод output(), а в конструкторе принимются исходные данные. В конкретной реализации JsonPresenter в output() будет банальный json_encode() (да, это нормально, нет, класс не лишний и нет, json_encode() нельзя пихать в сам парсер) А теперь к вопросу - почему не следует просто запихать это всё в парсер и вместо массива отдать json: в будущем, когда система будет расширяться - нам понадобится представить данные в виде XML - что тогда будем делать - переписывать весь код парсера ради добавления switch case "json" и т.д.? А если что-то сломается во всей системе? А если вариантов представления станет настолько много, что файл будет просто не читаем? А при данном подходе достаточно будет просто написать новый класс XMLPresenter, или даже ExcelPresenter, который на выводе не строку будет выдавать, а целый файл (опустим типизацию output пока)). Также этот класс можно реализовать в виде декоратора (паттерн), да и много еще как.



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

    К примеру: в итоге, если вас уже повысили, и вы вместо парсинга стали заниматься более высшими материями - новому программисту, чтобы дописать логику преобразования данных в Excel не нужно знать как конкретно вы преобразовывали когда-то эти данные в json, ему не нужно дебажить ваш код, ему достаточно посмотреть на интерфейс - отнаследоваться от него и написать свой собственный метод преобразования и дальше использовать его в нужном месте.

    P.S. В данной реализации опускаются и упрощаются некоторые моменты для понятности
    Ответ написан
    21 комментарий
  • Где найти словарик программиста?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    учите английский и набирайтесь опыта. Этот словарь растет быстрее чем вы успеваете учиться. И его никогда никто не составит
    Ответ написан
    Комментировать
  • Как составить письмо руководителю о нелегальном ПО?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Самое главное - это осознать, что наличие такого письма или другого подобного документа трактуется, как преступный сговор. Если руководство не готово в кратчайшие сроки отказаться от пиратского ПО, лучше сразу уволиться.

    бухгалтерия отмазывается на нехватку денег

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

    Zifix
    @Zifix
    Barbatum
    И чему не устраивает тот же Qt, который вы уже знаете?
    Ответ написан
    Комментировать
  • Linux дистрибутив для предприятия?

    @TeleNadym
    Я бы посоветовал посмотреть в сторону самых массовых дистров: debian и ubuntu, графическую оболочку по проще, без всяких рюшечек... (xfce или lxde)
    Почему? Ответ очевиден: хорошая поддержка сообществом, много инфы на форумах и т.д., да и опыт использования на кассах организации, парк машин более 1000 компьютеров...(занимаюсь аутсорсингом этой организации)
    Ответ написан
    Комментировать
  • Ошибка в c++ нахождения e^x?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    num —; - Это что за оператор?
    Ну, собственно, из всех вариантов расчёта вы выбрали самый неэффективный.
    Такие задачи решаются с помощью индукции. Необходимо выразить следующий член ряда через предыдущий. В данном случае
    yi = yi-1 * x / i
    y0 = 1
    Соответственно, цикл будет
    res = 0;
    y = 1;
    i = 0;
    do {
      res += y;
      y *= x / (++i);
    } while (fabs(y) > 10e-6);
    Ответ написан
    Комментировать
  • Как выработать уверенность при взаимодействии с более сильным руководителем чем вы?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Вы боец, выходите на ринг, а там такой же боец только 2 метра роста и 198 кг. Ваша реакция?:)
    Внезапный удар первым в самое незащищённое и болезненное место. Это повысит мои шансы в дальнейшей борьбе.

    Более проигрышной стратегии поединка, чем зажаться в своем углу, все равно не бывает. А страх, удерживающий от действия, страшнее любых ошибок.
    ©2018, Adamos

    Louna - Бойцовский клуб

    НО! Есть более умный вариант: сказать ему, что я на его стороне и мы - вместе: результат для окружающих - непредсказуем: теперь - их двое! Если цель общая - бывшая моя (и соперника) проблема становится автоматически БОЛЬШОЙ проблемой для всех окружающих... ("ядро" приобрело положительный потенциал...)

    Как выработали в себе уверенность при работе, взаимодействии с более сильными руководителями чем вы? Как стать сильнее их?
    Вы сейчас говорите про проблему того, как проехать из Питера в Москву через Владик!
    Это не нужно делать! Важно: понимать общую цель команды и грамотно рапределять обязанности для достижения этой цели.

    Есть базовое правило логики. Оно применяется всегда, когда нужно "взвесить" все "ЗА" и "ПРОТИВ". Очень хорошо на этот вопрос ответит логика НС:
    Если это способствует достижению цели НС - это утверждение верно!

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

    И главное:
    Ошибки человека - обучение!
    Жизнь без ошибок - заблуждение!

    ©2018, xmoonlight
    Ответ написан
    2 комментария
  • Что нужно сделать перед изучением ЯП?

    @Ambrosian
    То исть как начать думать как программист, а не как кодер.


    Программистом делает программиста не знания языка программирования.
    А знание алгоритмов, паттернов, концепций, парадигм программирования.

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

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

    Поэтому ответ - нужно программировать начинать уже. Хватит задавать вопросы на форумах.
    Ответ написан
    1 комментарий
  • Где и как хранить данные пользователей, пароли, логины?

    @deliro
    Пароли вообще не хранить. Платёжные данные — только если ты создал фишинговый сайт.

    Остаются логины. Можешь хранить их хоть в блокнотике.
    Ответ написан
    3 комментария
  • Какими аргументами мотивировать верстальщика перейти с Ps на XD?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    О, это просто: платите за работы выполненные на XD сильно больше, чем за работы на PS.
    Ответ написан
    Комментировать
  • В чём может быть ошибка?

    SagePtr
    @SagePtr
    Еда - это святое
    rand(0,strlen($keys)-1) надо
    Ответ написан
    3 комментария
  • С чего целесообразнее начать изучение программирования?

    @Wentixon
    С программирования

    Вообще такие вопросы задаются каждый день, так что научись пользоваться поиском! А совет один - бери и пили интересные тебе вещи (игру, сайт, мобильное приложение и т.д..) По ходу будешь понимать, чего не хватает. Фундаменталка, книги и все остальное строго после практики и понимания, что вообще такое программирование
    Ответ написан
    Комментировать
  • Как включить возможность редактировать файл сразу несколькими пользователями?

    paulfcdd
    @paulfcdd
    PHP/Sf/WEB developer
    Никак
    Ответ написан
    Комментировать
  • Как эффективно (время) записать огромное количество данных в файл?

    @pfg21
    ex-турист
    сделать тестовый прогон и посмотреть какое место системы работает бутылочным горлышком.
    если затык в записи на носитель применить сжатие данных.
    если затык в обработке результатов, то поставить проц помощнее.
    если затык в получении кучи информации о файлах, то ускорить файловую систему.
    и т.д. и т.п.
    Ответ написан
    4 комментария
  • Можно ли улучшить код?

    @tarthur
    Забудьте этот код и начните решать другие задачи, чем больше тем лучше,. Оптимизируйте как знаете на данный момент и не более.
    Продолжайте искать идеальное решение и вы будете постепенно замедлятся в развитии, давать себе задачи которые вам не давали, а потом не делать их потому, что, все учесть и перепроверить не так то просто.
    Перфекционизм порождает лень, лень будет уничтожать мотивацию.
    Ответ написан
    2 комментария
  • Как сделать рабочую виртуальныю машину на windiows 10 и продакшн на Linux Centos 7?

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

    Yertuwernat
    @Yertuwernat
    Кратко о себе: живу в России, не женат, характер
    Да!

    Это называется "веб-приложение"
    Ответ написан
    Комментировать