Ответы пользователя по тегу Программирование
  • CMS для музыкальной социальной сети?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Вы собираетесь сделать клон вконтакта, только кривой. А так как речь идет о поиске CMS - то денег на разработку у вас нет. А стало быть нет денег на маркетинг. А стало быть.... ну короче зачем продолжать?

    Сделать MVP на CMS можно только из расчета найти инвесторов что бы заплатить за разработку реального продукта. Реальность такова что такие проекты намного дешевле в последствии писать сразу на фреймворках, вроде laravel или symfony, и потом уже дальше подкручивать расширяя команду разработки.

    Словом... удачи с вашей задумкой, но это проигранная битва.
    Ответ написан
    7 комментариев
  • Лучший способ обучения?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Лучший способ обучения, прочитать вот эту книгу: Структура и интерпритация компьютерных программ. И все что не понятно - гуглить и читать на википедии. И далее и далее. И задавать вопросы.

    более легкий и эффективный способ обучения

    Смотря что считать легким. Можно легко научиться не тому. Скажем пока вы не понимаете как информация внутри комьютера представлена, даже если вы на JS будете писать вы рискуете быстро проиграть. Это фундаментальные основы которые должен знать каждый.

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

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    То есть varName : TypeName вместо TypeName varName ?


    Читабельность. "идентификатор varName содержащий TypeName" намного логичнее записывать именно в таком порядке. Ну и да, этот синтаксис не новый, далеко не новый.
    Ответ написан
    Комментировать
  • Для программирования и верстки 13" хватает?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    для работы только прошка. Эйра не хватит.

    В целом же мне 13" ретины хватает, но большую часть времени я подключаю еще 24" монитор сверху (что бы головой не вертеть), хотя 80% времени всеравно пялюсь в 13-ку.
    Ответ написан
    Комментировать
  • Что отличает freelance программиста от корпоративного?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Проблема как раз таки в том, что нужен опыт командной разработки. То есть если вы фрилансер и вы работаете еще с десятком человек - то это не сильно отличается от "корпоративного" разработчика.

    А по поводу стэка... ну как правило фрилансеры одиночки плохо знают git/hg (commit, push что еще надо), не знакомы с такими вещами как CI, CD, не пишут тесты. А что уж говорить о методологиях разработки, их и "корпоративные разработчики" частенько не понимают.
    Ответ написан
    18 комментариев
  • Одинаковые куски кода в разных классах допустимо или нубство?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    нубство. Выносите общее в методы, в общие зависимости. Почитайте про DRY.

    Дублирование позволительно если это... ну тупой код и от дублирования никуда не деться. Но у вас тут какие-то выражения, логика, поведение дублируется. А это уже нубство.
    Ответ написан
    3 комментария
  • Какой стиль комментирования кода правильнее?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    с последовательным объяснением всех действий


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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Laravel бери и не мудри. Если нет нормального опыта работы с javascript (jquery не считается) - лучше не брать angular. Лучше погоди чутка пока не релизнится ng2, по ng1 слишком много булшита написано, достаточно вопросы на тостере глянуть.

    Но по вопросу "совмещение" - учить надо по отдельности, да и работать это все независимо друг от друга. Ангуляры отдельно, бэкэнды отдельно, между ними rest api. Ну то есть бэкэнды ничего не знают о том на чем написан клиент и наоборот.
    Ответ написан
  • Как быстро вспомнить былые школьно-университетские знания по математике, геометрии, тригонометрии?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    вики и гугл.
    Ответ написан
    Комментировать
  • PHP. Умножение 6-ти float, переместительный закон умножения не работает?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    https://en.wikipedia.org/wiki/IEEE_754-1985

    в PHP оператор умножения имеет левую ассоциативность, то есть выражение выполняется слева на право. В вашем случае - по порядку.

    $d4 = ((((6031 * 8109) * 980) * 1909) * 429) * 1714;
    Ответ написан
    Комментировать
  • На что это больше похоже: паттерн или говнокод?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Никакого отношения сингелтону этот код не имеет.

    с какой целью его автор создает экземпляр объекта в статичном методе


    У этого приема много названий. По сути это статический метод-фабрика, еще можно встретить "именованный конструктор".

    class User {
        private function __construct($email, $password) { /* ... */}
        public static function create($email, $password) { 
             return new static($email, $password); 
        }
        public static function createWithProfile($email, $password, UserProfile $profile) {
             $user = static::create($email, $password);
             $user->profile = $profile;
             return $user;
        }
    }
    
    $user1 = User::create('example@example.com', 'example');
    $user2 = User::createWithProfile('example@example.com', 'example', new UserProfile(
        $firstName, $lastName, $avatar /* ... */
    ));


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

    Отличие тут в том что мы не возвращаем экземпляр класса, он однаразовый. Только для этой последовательности.

    Почему бы не сделать так, спросите вы:
    (new Reboot())->reboot();

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

    По сути можно было бы спокойно сделать это обычной функцией, но автор посчитал что так будет читабельнее. Говнокод часть тут только имя класса - Reboot. Имена классов, интерфейсов и т.д. должны быть существительными. Мы описываем тип объектов. Но это единственное место к которому я могу придраться.
    Ответ написан
    2 комментария
  • Откуда функция берёт переменные?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    но откуда вложенная функция в функцию byField берёт переменные


    вы вызываете функцию sort и в качестве аргумента даете ей эту "вложенную" функцию. Функции в JS это такие же объекты как числа, строки и т.д.
    Ответ написан
    Комментировать
  • В чём отличие pair от map?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    pair - одна пара ключ -> значений, map - коллекция пар ключ -> значений или хэш-мэпа в общем смысле.

    Иногда эффективнее хранить маленький массив pair-ов нежели мелекькую коллекцию map-ов. Ну и для одного элемента map использовать уж явно не очень эффективно.
    Ответ написан
    Комментировать
  • Что такое распределенная система?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    A distributed system is a software system in which components located on networked computers communicate and coordinate their actions by passing messages. The components interact with each other in order to achieve a common goal.


    Мне кажется более чем понятное определение.

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

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    с переменными вида obj_jlabName вы код ревью не пройдете у подавляющего большинства разработчиков. Именуйте переменные адекватно, что бы можно было определить что в них. Завязывать имена переменных на модификаторы доступа (вообще все стоит делать приватным), или тип. Вы и так явно задаете тип, просто не пишите код так, что это бы вызывало двусмысленность. Ну и определение переменных должно быть рядом с их использованием, никаких методов на 100+ строк, если хотите добавить комментарий перед блоком кода - лучше вынести это добро в отдельный метод...

    Словом, называйте все своими именами, и будет вам счастье.
    Ответ написан
    5 комментариев
  • Как преобразовать число 568be27e005bd6b61a8b4567?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    ваша строка - число в 16-ти ричной системе счисления. Переводим в систему счисления с более высоким основанием (64 например) и радуемся.
    Ответ написан
    2 комментария
  • Как повысить квалификацию php-программисту?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Сделаны даже не по MVC.

    Могу открыть страшную тайну - большинство людей так делают, даже если называют это MVC.

    думая только о логике приложения, а не вспоминая какие именно функции мне нужны.

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

    Уверенные знания заключаются в понимании того, что вы делаете. Заучивать API глупо, сегодня оно одно - завра другое. Вам нужно только помнить что что-то такое есть и уметь составлять поисковые запросы. То чем вы пользуетесь каждый день и так в памяти отложится.
    Ответ написан
    Комментировать
  • Когда появилась первая ORM(Object-relational mapping)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Насколько я могу судить "первопроходцами" решения проблема мэппинга данных из базы на объекты... стали те у кого эта проблема возникла впервые. А именно у чуваков из Oracle, которые предложили одну из первых ORM - TOPLink. Сначала для Smalltalk в начале 90-х и потом для Java.
    Ответ написан
  • В чем преимущество SOA и когда такую архитектуру нужно юзать?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    В общем, я в проекте новенький, но уже прекрасно вижу насколько сильно такое решение усложняет разработку.


    В чем именно неудобство?

    Вообще проблема с SOA в том, что многие воспринимают этот термин немножко по разному. Кто-то вспоминает IBM ESB, кто-то что-то слышал про микросервисы и SCM...

    Если под СОА разработчики понимают именно вещи типа SCM и микросервисов грамотно организованных, то я не думаю что "шардинги. кластеризация и т.д." вам сильно помогут (хотя кто его знает, сложно удить не зная бизнес логики, но если это магазин но думаю не помогут).

    При использовании SOA и т.д. можно на каждый микросервис посадить свою команду. И так у вас скейлиться будет приложение не только в плане производительности но и в плане поддерживаемости и управления командами.

    Словом... погуглите на эту тему может для начала. У Мартина Фаулера например есть неплохие лекции на эту тему И да:

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


    Я не знаю откуда вы взяли эту информацию. Все крупные проекты которые я знаю скейлятся именно за счет микросервисов.
    Ответ написан
    Комментировать
  • Стоит ли читать WEB-программисту книгу "Д.Е Кнут искусство программирования"?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    подойдет для Компьютерного программирования ?


    А как вы думаете, есть разница между "компьютерным" программированием и web программированием?

    В целом книгу эту прочитать стоит, но в качестве факультатива. Более полного понимания того что происходит за кадром, что бы потом небыло этого разделения "компьютерное" и "web". Ну и опять же основные алгоритмы понимать надо.
    Ответ написан