Ответы пользователя по тегу Программирование
  • Правильно ли я использую PHP-DI?

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

    1) читаем про принцип инверсии зависимостей
    2) читаем про внедрение зависимостей
    3) если уж используете безымянные классы то они должны имплементить какой-то интерфейс или же экстендиться от какого-то класса.

    Вместо того что вы хотите должно быть:

    class Foo {
         private $db;
    
         public function __construct(Connection $connection) {
               $this->db = $connection;
         }
    
         public function makeFoo() {
              return $this->db->getRows(); // как вы и хотели
         }
    }
    
    // а это уже дергаем в конструкторе
    $foo = $di->get(Foo::class);
    $foo->makeFoo();


    то есть в контроллерах мы дожны дернуть сервис который вернет нам готовые данные.
    Ответ написан
    6 комментариев
  • Стоит ли мешать Golang с Js?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    а зачем? uglify + gzip + настроенное кеширование и оверхэд для пользователя от использования трансляторов/полифилов будет не так заметен (посмотрите статистику, сколько у вас пользователей этих "необычных" браузеров?).

    А вот поддерживать все это выйдет на порядки дороже.

    я вообще когда то думал сделать аналог node.js без их чокнутой виртуальной машины

    и что? Дошли до мысли "это невозможно"? Без полной информации о типах (она может быть получена только в рантайме) вам так или иначе придется писать свою чекнутую виртуальную машину.
    Ответ написан
    4 комментария
  • Как работать с большими файлами в PHP?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Изменить первый символ в файле, не загружая весь файл в память.


    читать про fopen, fwrite

    Убрать первый символ, не загружая весь файл в память.


    открываем файл (стрим), юзаем fseek, отправляем стрим на чтение на запись. То есть нам всеравно придется перезаписать весь файл, но мы это можем сделать через потоки и тогда не надо загружать файл целиком.

    Добавить 1 символ в начало файла, не загружая весь файл в память.

    Так же как и в предыдущем пункте. Только тут вместо fseek мы сначала добавим в новый поток один символ и потом добавим все из другого потока.

    Короче почитайте чего про streams в php.
    Ответ написан
  • 13" ноутбук Full HD реально использовать при 100% масштабировании для кодинга?

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

    Для организации рабочего пространства лучше воспользоваться вируальными рабочими столами (благо в win10 даже оно из коробки есть).
    Ответ написан
    7 комментариев
  • Путь от junior к web backend developer?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1) учим C# + алгоритмизацию (вы как минимум должны знать что происходит при вставке в хэш-таблицу и хотя бы примерно понимать что такое куча, на бэкэнде структуры данных знать очень полезно)
    2) учим ООП (читаем паралельно Фаулеров, Кентов Бэков, Бобов Мартинов)
    3) постепенно берем ASP MVC и вперед к свершениям.
    4) асинхронное/паралельное программирование

    Каждый пункт сдобрим практикой
    Ответ написан
    Комментировать
  • Функция в математике?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    y = x - вот вам функция зависящая от x

    y = t - вот вам функция зависящая от t (времени)

    y = sin(t) - вот вам синусоидальная функция зависащая от времени... ну вы поняли

    Суть в том что результат работы функции зависит от аргументов.
    Ответ написан
    3 комментария
  • Писать ли уроки по программированию?

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


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

    но не входящие в обычный цикл темы

    Что значит "не входящие"? В ВУЗах это все как бы дают еще на первых курсах. Опять же на усвоение этого материала нужно порядком времени.

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

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

    Особенно это касается первых 100 страниц, которые можно вообще ужать в десять.

    Книги бывают разные. Иногда выкинув эти первые 100 страниц дальше читать в принципе бесполезно так как вы не понимаете предпосылок.

    он дает отсылку, где и когда это будет изучено

    Так делают все адекватные авторы

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

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

    Поскольку данные уроки действительно долго и сложно делать, купили бы вы их?

    Все что вы описали я изучил в ВУЗе и из книг. Более того любой другой так же может это сделать.
    Ответ написан
    3 комментария
  • Как запретить UglifyJS минимизировать часть строки?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Комментировать
  • Как вы "держите" в голове функции, переменные и их значения при написании программы, или разборе чужого кода?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1) если речь о своем коде, я стараюсь писать его так что бы не нужно было все это помнить:
    - осмысленные названия функций/методов/переменных
    - локальность, все стремное выносится в отдельные функции/методы в рамках которой все просто и логично, дробить все на маленькие понятные вещи это пожалуй самое простое что можно делать
    - SOLID

    2) если речь о чужом коде, дебаггер, листик и ручка, рисую схемки и т.д, плачу... Если могу, опять же начинаю потихонку куски кода выновить в отдельные функции и т.д. если мне это мешает и этот код мне надо не тупо почитать да разобраться а потом еще и править придется.
    Ответ написан
    Комментировать
  • ООП. Как правильно организовать связь классов?

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Не могу решится что выбрать symfony или laravel.

    Для CRUD-а, если на сервере не будет ровным счетом никакой бизнес логики, лучше возьмите laravel, быстрее сделаете.

    от фрейма требуется только работа с базой и частичная валидация, кэширование, работа сессиями.

    А еще предоставление нормальной платформы для организации HTTP API но это мелочи да.

    Думаю что больше редис.

    redis универсальнее, но сложнее. В принципе тупо как key-value разница не существенна.

    Если есть возможность работать с вебсокетом, то будет хорошо, а если нет, то ajax.

    ajax (или XmlHttpRequest) это просто возможность делать HTTP запросы из браузера. То есть это поддерживают по дефолту все существующие фреймворки ориентированные на HTTP.

    Что до websockets - тут вам придется всеравно делать отдельное приложение, можно на пыхе но дешевле и проще взять node.js + socket-io. Причем не обязательно при этом все писать на node.js. Ваша апишка может быть реализована на PHP, и через очередь сообщений (redis умеет pub/sub и mq) просить другое приложение (простенькое на node.js + socket.io) отправить пользователям сообщения.

    Для авторизации в этом случае рекомендую JWT, так как тогда не нужно будет node.js-у стучаться в php приложение для подтверждения авторизации. Достаточно проверить сигнаруру токена и достать данных из оного. Опять же куча готовых решений как для symfony, так и для laravel и для socket-io.

    Ну и да, если у вас реально сервер нужен только в качестве клиента для базы данных + валидация - рассмотрите вариант использования инструментов типа loopback.io и прочего.
    Ответ написан
    6 комментариев
  • С чего начать алгоритмическую торговлю?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1) изучите предметную область
    2) изучайте алгоритмы, системы реального времени и т.д.
    Ответ написан
    Комментировать
  • Что делает программиста программистом?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1) это кодер
    2) да, но еще немаловажно умение их строить
    3) код-манки
    4) код-манки
    5) хипстер
    6) бизнес-аналитик, что в принципе норм. Программист должен в первую очередь решать задачи бизнеса а не код писать (это метод решения проблем), а для этого надо какое-никакое о погружение в предметную область
    7) это справедливо для всех специальностей.

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

    В целом... почитайте Эрика Эванса, Предметно Ориентированное Проектирование - он там чуть уделяет внимание задаче девелопера.
    Ответ написан
  • Как правильно сделать локализацию на уровне шаблонов?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    https://github.com/nicksnyder/go-i18n

    и не надо ничего выдумывать. И ради бога, называйте все осмысленно, не in1 а welcome и не in2 а exit
    Ответ написан
    1 комментарий
  • Можно ли считать это "говнокодом"?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1) дублирование
    2) разделить функцию на функции поменьше, что бы убрать вложенность ифов
    3) пусть функция возвращает строки, и какая-то другая уже выводит это в stdout, что бы у вас это происходило все в одно месте.
    Ответ написан
    8 комментариев
  • C# заменит ли Java?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    единственная причина малой распространенности C# (относительно) является завязка на windows. Пока .NET не станет официально кросплатформенной платформой Java чувакам нечего бояться. Да и после я думаю доля этих языков на рынке будет примерно одинаковой, C# просто может чуть потеснить джаву, но вытеснить полностью не сможет за счет огромного количества качественных решений.
    Ответ написан
    Комментировать
  • Будет ли польза в такой затеи?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Если будете делать то же API что и в php то не стоит. Да и потом большая часть этого добра есть в стандартной библиотеке.

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    inotify, есть для php и для js. Проще будет реализовать на js (socket-io, демон)
    Ответ написан
    Комментировать
  • Ребенок-Кодер или программист?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Мечтает же писать расширения в майнкрафт.)

    И это нормально для 8-ми лет, я помниться в программирование пришел потому что мне нравилось делать прикольные штуки в GTA (играть надоело в 13 лет где-то, было больше интересно что-то поменять, разобраться, добавить). Причем в WEB занесло как-то случайно и торчу тут уже 8 лет...

    Вопрос мотивации. Предлагайте ему задачки связанные с тем что ему нравится и тогда будет больший стимул разбираться. Тут книжки на алгоритмы могут спугнуть излишней скукой. У меня так в детстве любовь к музыке музыкальная школа отбила (ну в смысле желание развиваться как музыканта, музыку я всеравно люблю).
    Ответ написан
    2 комментария
  • Как узнать что передается именно JSON?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    В качестве языка

    в качестве языка вы используете javascript. Feel the difference.

    то Node.js сразу вылетает не выдавая никаких ошибок.

    оно где-то внутри выкидывает исключение когда делает JSON.parse.

    строка именно в JSON формате?

    Заголовок Content-Type, но есть шанс что писать клиент может слабоумный который не будет верно выставлять этот заголовок, так что вам надо всеравно наладить обработку ошибок. Это только в PHP позволительно ничего не делать, и то только если придерживаться классической умирающей модели.
    Ответ написан
    Комментировать