• Пожалуйста оцените мое убогое ООП?

    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 комментарий
  • Зачем изучать несколько языков программирования(c++, java)?

    profesor08
    @profesor08
    Потому что это интересно.
    Ответ написан
    Комментировать
  • Как реализовать личный денежный счет пользователя на сайте (Yii2)?

    Maksclub
    @Maksclub
    maksfedorov.ru
    :) схематично так :)
    https://habrahabr.ru/post/259921/

    вот нашел модули биллинга
    https://github.com/modernkernel/yii2-billing
    https://github.com/jlorente/yii2-billing

    Видео, которое будем смотреть вместе :) от sports.ru (надо зарегаться)
    https://yiiconf.ru/ru/offers/272
    Ответ написан
    Комментировать
  • В чем смысл ВУЗа?

    nki
    @nki
    bezkart.ru готовая система лояльности
    Иди в армию, там получишь ответ на свой вопрос.
    Ответ написан
    1 комментарий
  • В чем смысл ВУЗа?

    @garik_R
    On my way
    В ВУЗе учат взаимодействовать с людьми. Не в том смысле, что прогулять пары, прибухнуть, а наоборот, решить проблемную контрольную, написать курсовую. Развивать навыки, в любой сфере. Часто, именно этим, люди в Вузе и пренебрегают. Это социальная структура, где, по идеи, должны были собраться люди со схожими интересами. К сожалению, у нас это простой способ откосить от армии. Или родители сказали: "Ты должен поступить..." еtc. Кроме того, диплом поможет устроиться на хорошую работу у нас в стране или где-то в другой.

    Зачем учить? Что касается "странных" предметов, которые, казалось бы, никому не нужны - это ошибочная точка зрения. Любая работа сталкивает нас с такими неожиданностями, о которых мы и не думали. Вот тогда и вспоминаешь про какое-то ОБЖ и так далее. Часто негодование на этот счет связано не с большим умом, а наоборот, с большим незнанением и узким взглядом на жизнь. Подобные предметы нужно проглотить, отмучаться и знать где подсмотреть в случае чего. Или просто посмотреть шире. Вы же не станете отрицать, что даже если Вы учитесь на программиста, знать основы экономики необходимо, верно? А потом вы можете устроиться на работу, где будете писать какой-то софт где уже и не помешают и глубокие знания?

    Без математики можно заниматься только формошлепством. Везде так или иначе нужна математика. Где-то простая арифметика, где-то нюансы шифрования.

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

    Учить наизусть? Скажем так - хуже не будет. Да, сейчас всё немного изменилось. Если до ~2000х важно было иметь хорошую память. По книгам сложней искать, но других способов тогда не было. Сейчас нет острой необходимости помнить важную информацию. Сейчас важно знать где найти. Это умение стало более важным сейчас, из-за доступности интернета. Важная информация откладывается у вас в голове, если вы её постоянно используете - этого не избежать. Тут действительно, сейчас важно знать где найти, чем помнить досконально. Но человек, который является ходячей библиотекой оставляет гаааараздо более интересное впечатление, нежели тот, который говорит: "Щас, сек, я точно знаю, это вот здесь было написано". Перед работодателем это совершенно точно. Если вы помните, умеете развивать мысль, а не тупо заучили - то вы оставите более яркое впечатление. Мне кажется, это старомодный подход и со временем действительно можно будет погуглить и это всех будет устраивать. Но сейчас имидж умного, начитаного человека всё еще очень важен. Всё еще интересно поговорить вживую, с телефоном в кармане, нежели общаться отрывками статей, которые только что прочитал.

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

    ВУЗ нужен. Он учит, учит общению с людьми, решению социальных проблем. Учит решать поставленные задачи, порой, которых вы не ожидали. Дает возможность встретить людей, которым интересна таже область, что и Вам. Встретить людей, которые умнее Вас и прокачаться до их уровня. И да, как ни крути он даёт вам бумажечку. Может быть, она Вам и не пригодится, а может, вы в какой-то момент сильно пожалеете, что не получили её. Я бы даже сказал, что ВУЗ - это часть молодости, и не нужно её себя лишать. :-) И добавил бы, что желательно учится не в родном городе. Но это уже лирика :)
    Ответ написан
    4 комментария
  • Как сломать антенну бесконтактной оплаты в карте?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    Например, MasterCard от Яндексаa2fd7704299d74a280762a7884d5f670.jpgРазберётесь, где колоть/резать?
    Ответ написан
    3 комментария
  • Как добавить. key value в moya?

    doublench21
    @doublench21 Куратор тега Swift
    Сам чёрт ногу сломит. Наверное тут должно быть как-то так. parameters и есть ваши key=val. Зачем везде писать public? Зачем подключить Foundation, если уже есть UIKit? Тоже самое и с Alamofire?
    public var parameters: [String: Any]? {
            var params:[String: Any] = [:] // for post params
            var query:[String: Any] = [:] // for get params
    }
    
    public var parameterEncoding: ParameterEncoding {
            switch self {
            case .addComment, .uploadReportImage,
                 .addReport, .addFavorite, .getFavorites, .removeFavorite, .uploadAvatar,
                 .getProfile, .updateProfile, .getUserComments:
                return CompositeJsonEncoding()
            default:
                return CompositeEncoding()
            }
    }
    Ответ написан
    Комментировать
  • Почему нет профсоюза IT-работников?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Imho все адекватные люди аполитичны и предпочитают тратить время на зарабатывание денег.
    В текущих реалиях проще эмигрировать, чем тратить время на это вот все.

    А про забастовку, ну право смешно. Вы реально считаете что правительство рассматривать it отрасль как социально значимую? Это скорее что-то непонятное, мешающее свету из телевизора проникать глубь народных масс.

    Тем более что государственных то it компаний практически нет. Будете бастовать внутри своей коммерческой структуры - никому кроме этой структуры вы не навредите.

    Поднимите столько хайпа что государство обратит внимание на регулирование работников - вот тут то вы и взвоете по настоящему.
    Ответ написан
    10 комментариев
  • При установке osX на SSD диск выбивает ошибка "There is not enough free space on os x base system to install". В чем может быть проблема?

    @doublewaffle
    Base system - это установочный раздел, а не целевой. Целевой, судя по всему, тот, что называется OS X в Toshiba
    Ответ написан
    Комментировать
  • Где можно попрактиковаться в разговорном английском?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Как раз интервью и т.д. https://www.pramp.com/
    Ответ написан
    Комментировать
  • Где можно попрактиковаться в разговорном английском?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Interpals.net
    Ответ написан
    Комментировать
  • Эффективна ли такая методика обучения английскому?

    Эффективна ли такая методика обучения английскому?
    Если конкретно вы чувствуете от неё эффект - конкретно для вас она эффективна. Если нет - нет.

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

    Обратитесь с этими проблемами к преподавателю. Если он не сможет вас убедить - выбирайте курсы, где методика лучше подходит вам.
    Ответ написан
    1 комментарий
  • Разница между словами availability и opportunity?

    DevMan
    @DevMan
    opportunity - возможность в смысле шанс.
    availability - доступность в смысле наличия чего-либо. например, для покупки или применения для определенной задачи.
    Ответ написан
    1 комментарий
  • Какие стратегии повышения зарплаты существуют?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Центральный показатель для бизнеса, а следовательно и руководителей, как людей представляющих интересы этого самого бизнеса - это коэффициент возврата инвестиций (ROI). Соответственно, сотрудник должен приносить компании больше денег, чем потребляет. Естественно, что чем выше разрыв между затратами и прибылью, тем лучше, поэтому фонд оплаты труда руководитель должен держать на том минимальном уровне, который гарантирует бесперебойную работу сотрудников. Один из факторов этой бесперебойности - низкая текучка. Сотрудников терять нежелательно. И чем ценнее для компании сотрудник, чем более он профессионален и/или чем больше на него завязано, тем дороже обходится его потеря. Натурально в деньгах. Придётся затратить больше, чем обычно, денег на поддержание работы без него. Придётся затратить деньги и время (те же деньги) на поиск, найм, введение в работу, возможно, обучение нового сотрудника. При этом он может оказаться совсем неподходящих и цикл придётся повторить. Или может оказаться просто хуже прошлого и эффективность отдела снизится. Поэтому, когда сотрудник приходит просить прибавку, руководитель оценивает может ли этот сотрудник уйти или только блефует, насколько легко его будет заменить, какой урон компании будет нанесён его уходом. Потом руководитель оценивает стоимость расширения ФОТ - есть ли резервы, какой сейчас ROI, будет ли больший ROI от реинвестиции этих средств во что-то другое? Если уход сотрудника будет стоить меньше, чем увеличение ФОТа, сотруднику откажут.

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

    Из этого вывод, стратегия проста - увеличивайте собственный профессиональный уровень на столько, чтобы свободно менять компанию, как только вас что-то перестало устраивать.
    Ответ написан
    4 комментария
  • Дизайнер интерфейсов с нуля. С чего начать и как двигаться?

    ZaykaPupkin
    @ZaykaPupkin
    Кратко о себе
    Я бы дал более практичные советы:
    1. Ютуб-> ui process 4-5 видосов.
    2. Ютуб-> ui tutorial 4-5 видосов.
    3. Ютуб-> дизайн интервейсов семинары, лекции часов 6-15 позырить разного в общем.
    --
    4 Гугл -> best ui design 4-5 сайтов скачивайте примеры в папку ui вдохновение
    5 Pinterest - ui design - часа 2-3 пролазить по квадратикам снизу, скачивай примеры
    6 Behance, dribble - каждый день смотри, скачивай.
    -- Прошло 3 месяца, каша голове перемешалась, устаканилась.
    7.1 Типографика, композиция, модульные сетки, вебдизайн - гугл по каждому топику в течении 1-2 дня.
    72 Открываешь фотошоп/скетч/иллюстратор/пэйнт в нем открываешь 3-5 экранов с любого проекта скачанных. И БЫЛА НЕ БЫЛА! ноль ноль перерисовываешь. организуешь слои, представляешь что все это передаешь заказчику, его требования итд.
    8 Идешь на сайт типа dayly ui challenge, или russiandesigncup и пиздрячишь нечто оттуда.
    -- Прошло 3 месяца
    9 Гугл, Ютуб: UX, information architecture, personas, userflow итд. - подтягиваешь UX
    10 Гугл, Ютуб: Resolutions for UI, android screen Sizes/ iOS screen sizes. - сходить с ума в данном пункте - норма. https://stackoverflow.com/questions/2634898/what-a...
    https://stackoverflow.com/questions/13487124/andro...
    11 Гугл, Ютуб: Style guidelines, deliverables UI, deliverables UX - учишься что давать заказчику

    --
    12 ФИНАЛ ПЬЕСЫ: оформляешь красивое портфолио. На качественную презентацию по началу уходит 3-10 дней. Это норма. Наработай 4-6 презентаций, проектов-проектиков из 4-12 экранов. Выкладывай на беханс

    Самое сложное в миллионный раз искать рефы, мониторить еженедельно новые стили, идеи. ctrl+c ctrl+v, сохранить изображение как... в первый год - самые частые действия.
    книги: куча списков, Отдельные книги по типографике, композиции, интерфейсам итд можно потом, когда возникнут вопросы связанные с ПРАКТИКОЙ. По мне беханс и блоги ux чуваков с живыми кейсами лучше. на skillshare много инфы и на slideshare (в росси не доступен по впн ходи)
    После портфельки и понимания процессов го на фриланс делаешь первые 5-10 проектов по рабским ценам за отзывы. Гордость можно засунуть в жопу. Дальше все зависит от качества портфельки, социальных навыков, умения делать бизнес в сети. Можно продолжить на биржах, можно отправить 100500 писем студиям с предложением о выполнении заказов за 10-30 процентов им. Можно самому стать агенством.
    По деньгам - это не нефть и даже не солярка. 10-30тр по началу. Потом как повезет. потолок среднему фрилансеру за проект 100тр. а сколько ты его будешь делать(неделю или 2 месяца и спать по 5 часов в сутки) никого не епет.
    Ответ написан
    3 комментария
  • Как въехать в программирование (ООП, паттерны)?

    GTRxShock
    @GTRxShock
    Full-stack developer (Symfony, Angular)
    если программируете на php 2-3 года, то пора бы перед сном почитать РНР: объекты, шаблоны и методики программирования (Зандстра) желательно в бумажном варианте.

    + Паттерны проектирования (Фримен) для общего/наглядного понимания паттернов
    + www.phptherightway.com основные тезисы
    + Рефакторинг: улучшение проекта существующего кода (Фаулер) & https://refactoring.guru/ru на будущее, к чему стремиться :)
    Ответ написан
    4 комментария
  • Английский. Где учить в интернете?

    @AnneSmith
    самая ленивая
    радио, прежде всего слушать радиопрограммы или аудио подкасты, пока тошнить не начнет
    словарь - только английский толковый, никаких переводов на русский

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

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

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

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

    осилите преподавателя-носителя языка хоть по скайпу - это будет идеально, но это должен быть именно преподаватель, который умеет преподавать english as a second language - ESL

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

    а потом всю оставшуюся жизнь много слушать и запоминать выражения, которыми пользуются носители, отмечать, как они думают и как строят фразы в контексте, ну и читать, конечно, без этого никак

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

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Вот сейчас сижу и думаю, что в итоге ни к чему не пришел. У однакласников которые даже 150 баллов за ЕГЭ не смогли набрать уже семьи, они ВУЗы заканчивают(ужасные ВУЗы, но корочка у них будет), бухают там, детишек по пьяне заводят. А чего добился я? Позвоночника формой золотого сечения? Того что в свои 20 нет ни работы, ни девушки, ни друзей? Я просто ноулайфер, что тратил свободное время на все эту хрень думая, что все это принисет плоды. Но нет, жизнь меня на*бала или я сам себя на*бал.

    Т.е., травить свой организм наркотиком класса А, не уметь предохраняться, шататься по клубам и вечеринкам - это нынче считается достижением? А что же тогда развитые способности к мышлению, аналитике, выстраиванию сложнейших логических цепочек в голове, способность к ежедневному самообучению, знание нескольких языков, причем языков не предназначенных для человека (да, да, я про ЯП, если кто не понял), а то нескольких десятков, знание того, как работает вся эта современная машинерия? Вот что это? Подумайте тщательно и подвергните критической оценке вашу оценку "успеха". А вобще - все это не имеет смысла. Главное делать то, что делает тебя счастливым, развиваться и самосовершенствоваться, познавать мир. Многие забывают, что все люди с детства начинают познавать мир и стремятся к саморазвитию, а взрослея перестают это делать просто получая сиюминутную порцию эндорфинов от простейших стимуляторов типа алкоголя, табака и прочего.
    Дело не в стеке, а в том, чего именно вы хотите достичь в далекой перспективе. А программирование - всего лишь один из множества путей. Так что совет простой: если есть желание продолжать программировать и не боитесь сложностей (а это сложно, очень сложно, по трудовому кодексу тяжесть сравнима с шахтерским трудом) - то просто выкиньте из головы весь этот бред про "пацанов", "важные вещи", "корочки", "хипсетров" - это все информационный шум, определите для себя чего именно вы хотите достичь в итоге и двигайтесь к этой цели. А путей много: один из самых популярных сегодня - это работа на международных биржах. Вот тут например очень неплохой гайд по апворку: odeskconf.github.io/guide и вот на дошик и сарай на месяц вполне можно заработать за день-два, было бы желание. На вкат в апворк уходит в среднем от нескольких недель до нескольких месяцев.
    Ответ написан
    6 комментариев
  • Как вы пишите тесты для rest api?

    Maksclub
    @Maksclub Куратор тега PHP
    maksfedorov.ru
    Нормальный объем инфы по тестам https://www.youtube.com/watch?v=gRmEpUYaS20&index=...

    относится конечно Yii2, но Дмитрию свойственно раскрывать очень общий функционал, что куда и как, в чем минусы и плюсы подходов...
    Ответ написан
    Комментировать