• Какой самый эффективный способ контроля времени и внимания в рабочее время?

    @mkone112
    Начинающий питонист.
    Меняй работу на интересную. Самому приходится заставлять себя отвлекаться на еду и сон.
    Ответ написан
    1 комментарий
  • Standalone Система задач для одного разработчика?

    @dzhebrak
    Рекомендую попробовать Kanboard https://kanboard.org

    По вашим критерям:

    - для каждой задачи можно указывать планируемое и фактически затраченное время (как сразу, так и рассчитать с помощью счетчиков)
    - есть возможность настраивать (и создавать свои) связи между задачами (например, blocks|is blocked by; is a child of|is a parent of). С помощью плагина можно отобразить диаграмму Ганта https://github.com/kanboard/plugin-gantt , но у меня она не прижилась.
    - есть возможность создавать проекты (аналог доски в trello), при этом каждый проект можно настроить отдельно
    - есть возможность смотреть отчеты о работе, например, "Task Distribution (By Column)", "Cumulative Flow Diagram", "Burn Down Chart", "Average Time Spent Into Each Column", "Average Lead and Cycle time"
    - функционала, на мой взгляд, достаточно, и в тоже время автор проекта не хочет делать из проекта комбайн на все случаи жизни. Есть api, и можно писать свои плагины, если чего-то не хватает.
    - открытый исходный код https://github.com/kanboard/kanboard . Проект написан на PHP, регулярно обновляется.

    В документации https://docs.kanboard.org/en/latest/user_guide/ind... можно посмотреть другой функционал. Дизайн изначально не самый привлекательный, но подкорректировать его достаточно просто, и к тому же на github есть готовые темы.

    PS. Если будете устанавливать, то лучше сразу используйте mysql или postgresql, а не sqlite, т.к. на последней не поддерживается (самой базой данных, т.е. это не проблема проекта) некоторый функционал (например, не работает регистронезависимый поиск).
    Ответ написан
    Комментировать
  • Standalone Система задач для одного разработчика?

    iiifx
    @iiifx
    PHP, OOP, SOLID, Yii2, Composer, PHPStorm
    Ответ написан
    Комментировать
  • Пожалуйста оцените мое убогое ООП?

    Adamos
    @Adamos
    Во-первых, трудно поверить, что нет кучи готовых решений, разбирающих лог Апача.
    Так что задание, очевидно, учебное, на использование языка и понимание, что такое ООП.
    Так вот, ООП в РНР - это чтобы один раз сделать грязную работу, и больше в нее не заглядывать, используя готовый и по возможности очевидный интерфейс класса.
    У вас же одноразовая портянка, в которой даже имена файлов жестко прописаны в коде, убогие комментарии вместо PHPDoc и вообще ощущение, что ООП вы начали заниматься вчера и считаете его просто возможностью загнать побольше функций в один класс.
    Ну, и результат соответствующий. Вам нужно не исправить это решение, вам нужно позаниматься ООП в РНР некоторое время и прийти к соответствующей парадигме в мышлении. А этот класс можете просто выкинуть.
    Ответ написан
    4 комментария
  • Пожалуйста оцените мое убогое ООП?

    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 комментарий
  • Как стать Junior Java Developer, имея немалый опыт разработки на этом же языке?

    @jaxel
    Самый быстрый и правильный способ получить знания - это работать над реальными задачами в компании, где есть более квалифицированные коллеги. С грамотным тим-лидом, правильно построенным рабочим процессом и код ревью, ваш скилл будет расти с космической скоростью.

    Если вы пишете уже 2 года, у вас уже должен быть достаточный опыт для того, чтобы бы устроится стажёром или джуном на реальную работу. Это практически вариант с мертором, только лучше.

    Самостоятельное обучение будет хорошо только плюсом. С двумя годами опыта я бы уже не делал на него основную ставку.

    Курсы категорически не советую. Комбайн по выманиванию денег. Какой-то эффект могут дать только тем, кто пришёл с 0 знаний.
    Ответ написан
    Комментировать
  • Как стать Junior Java Developer, имея немалый опыт разработки на этом же языке?

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

    Пишешь резюме, указываешь свой опыт, идешь на собеседование:

    1) Либо тебя берут
    2) Либо тебе говорят, что бы безрукий мудак (уточняешь почему).

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

    Если ты не конченный тип, то одной книжки по языку и один учебный проект(который ты делал сам примерно месяц) достаточно для того, чтобы тебя взяли джуном на работу.
    Ответ написан
    Комментировать
  • Как построить свой рабочий день фрилансеру?

    saboteur_kiev
    @saboteur_kiev Куратор тега Веб-разработка
    software engineer
    Еще один скуксился в бездельники, а значит нам больше работы достанется.
    Ответ написан
    Комментировать
  • Как построить свой рабочий день фрилансеру?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    3 комментария
  • Как перенять объектно-ориентированное мышление?

    GTRxShock
    @GTRxShock
    SA
    Полистайте на досуге HeadFirst Паттерны проектирования:
    www.combook.ru/product/10741424

    + как писали выше, Мэтт Зандстра PНР: объекты, шаблоны и методики программирования:
    www.combook.ru/product/11140344

    p.s. www.phptherightway.com вот еще неплохой ориентир
    Ответ написан
    Комментировать
  • Есть ли простые примеры применения ООП?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    "Паттерны проектирования" O'Reilly. Шедевральные примеры, написано простым языком, кучи примером и отличные объяснения что\зачем\почему.
    Ответ написан
    1 комментарий
  • Java почему вылетает java.lang.NullPointerException?

    EugeneP2
    @EugeneP2
    Java Dev
    А массив кто создавать будет?

    int[] mass; - это ссылка на массив которая равна null, это означает, что любые обращения к ней, типа mass.length или mass[0] будут приводить NullPointerException. Вы пытаетесь узнать длину или получить доступ к нулевому элементу массива которого нет.

    this.mass[mass.length+1] = e; - это вы что пытаетесь сделать? Присвоить значение ячейки массива, которая находится за пределами размера массива.... получите еще одно исключение.

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

    Индекс массива может принимать значение от 0 до length - 1.

    В общем внимательно дочитайте всю главу о массивах...
    Ответ написан
    5 комментариев
  • С точки зрения парадигмы ООП какие объекты следует выделить в программе калькулятор?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Если вкратце: единственный класс - класс-вычислитель (calculator).
    Если создавать Грамотный калькулятор с использованием ООП, тогда:
    1. Нужно уметь хранить все предыдущие операции и состояния переменных
    2. Нужно уметь перемещаться в любое место предыдущих вычислений и вносить правки в виде версии (новое "ответвление" от места правки в истории вычислений)
    3. Нужно использовать поддержку ввода выражений алгебры прямой логики и вычисление выражений с применением польской обратной записи.
    Например: 1+3*(4-cos(0))
    4. Нужно уметь работать с конечными и бесконечными множествами с заданной точностью.
    5. Нужно уметь расписывать в истории весь порядок внутренних преобразования и вычислений по требованию пользователя.
    6. Нужно создать систему работы с преобразованием и упрощением выражений.
    7. Уметь работать с вещественными числами
    и т.д.
    Ответ написан
    Комментировать
  • Правильная архитектура Android приложений?

    atetc
    @atetc
    Админ Android dev-s чата: https://goo.gl/8JKF1f
    В вашем вопрос недостаточно данных для ответа.

    Всегда будет вопрос: правильная архитектура для чего именно?

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

    P.S. Кстати, если вы по отдельности тут опубликуете свои под-вопросы, вы с большей вероятностью получите менее абстрактные ответы.
    Ответ написан
    2 комментария
  • Как правильно построить архитектуру клиент-сервер приложения?

    @swdmitriy
    Java/android developer
    Хорошая русскоязычная статья о связке Service+ContentProvider+Loader - Android архитектура клиент-серверного приложения
    Ответ написан
    Комментировать
  • Как правильно построить архитектуру клиент-сервер приложения?

    gadfi
    @gadfi
    https://gamega.org
    Не смотря на то что сегодня появилось много новых удобных технологий связка Service+ContentProvider+CursorLoader мне нравится больше всего
    https://dl.google.com/googleio/2010/android-develo...
    Service можно заменить на что то привычно и готовое, не суть

    Для реализации запросов мне нравится связка retrofit + gson

    Также рекомендую посмотреть в сторону rxjava
    Ответ написан
    4 комментария
  • В чём разница между layout_alignParentTop и layout_alignParentStart?

    Обычно разницы нет, но если вы используете язык(режим) в котором используется стилиь письма справа налево, то Start у Вас будет с правой стороны.
    Ответ написан
    Комментировать
  • Как импортировать классы в Android Studio?

    Ewintory
    @Ewintory
    Java / Android developer
    А вы внимательнее смотрите на структуру проекта:
    homehome.testandengine.org.andengine.engine.Engine
    Ответ написан
    9 комментариев
  • Android, как сделать иконки в секциях Navigation Drawer?

    Ewintory
    @Ewintory
    Java / Android developer
    Гугл еще никто не отменял.
    Вот одна из хороших статей, в которой показано как сделать дровер с иконками при помощи саппорт либы.
    Ответ написан
    Комментировать