Ответы пользователя по тегу Веб-разработка
  • Какой ЯП выбрать для фронтэнда?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Но многие говорят, что с приходом webassembly javascript уже не будет так востребован.


    Те кто это говорят считают javascript плохим языком программированием и верят что есть хорошие. Не слушайте их.

    Javascript будет не "менее востребован", а просто перестанет быть "единственным" вариантом. webassembly просто позволит делать вещи, которые ранее делать было очень тяжело. Писать же приложения в 99% случаев будут всеравно на JS.
    Ответ написан
    11 комментариев
  • Как защитит самописный API?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    SSL + SSL Pinning.

    по поводу оплаты - сервер как бы должен валидировать отдельно транзакции, а не просто доверять всем подряд.
    Ответ написан
    Комментировать
  • Что выбрать для клиент-серверного приложения?

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

    А если просто хочется приложеньку с сервером написать - возьмите какой parse.com, contentful и прочие облачные сервисы. Они бесплатны в большинстве случаев для небольших нагрузок.
    Ответ написан
    Комментировать
  • Что все-таки должен уметь делать frond-end-разработчик?

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

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

    Если фронтэнд - это отдельное приложение, то и знать вы должны все что нужно для его построения. Это и архитектурные штуки (MVC/MVA/MVVM/MVP/Flux/паттерны всякие/функциональное программирование) и тесты писать уметь должны и т.д. Все как у бэкэндщиков по объемам знаний. Просто у бэкэндщиков геморой обычно в конкурентных запросах, локах, базах данных и другими веселыми штуками. а у фронтэндщиков - зоопарк браузеров, различия в окружениях и т.д.

    nodejs - это уже опционально. В любом случае если вы хорошо знаете JS то посмотреть как там чего в API ноды проблемы не составит (например что бы быстренько поднять expressjs сервачек для разработки с мидлвэрами, часто нужно для всяких webpack-ов и browsersync). Ну и опять же билд стэк у фронтэндщиков в принципе весь на ноде написан. Но это не бэкэнд.
    Ответ написан
    4 комментария
  • Как использовать одну виртуальную машину для нескольких приложений?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Docker это то что мне нужно? А может я хочу невозможного?


    У Docker чуть отличается концепция, но оно даже лучше подходит.

    Основная идея - каждый сервис в своем контейнере. То есть у базы данных свой контейнер, у приложения - свой, у nginx - свой отдельный контейнер. В среднем одно простенькое приложение требует 3 контейнера (приложение, база данных и web-сервер в качестве прокси). Если у вас 10 проектов то это будет 30 контейнеров. Ну и да, не забываем про data-only контейнеры, они не несут дополнительного расхода ресурсов и нужны только для удобной организации сохранения данных. Если вы используете контейнер с базой данных - то это сразу +1 data-only контейнер. Приложение может аплоадить файлы - еще один контейнер-пустышка. Звучит страшно, да?

    Каждый контейнер основан на другом контейнере, например все ваши контейнеры могут базироваться на одном образе, например Debian или Ubuntu. А особенность архитектуры файловой системы контейнеров позволяет реюзать оные, что значит что у нас будет всего один базовый контейнер с убунтой на остальные 30. Ну и далее, база данных обычно у нас так же частенько одна и та же (например в моем случае это postgresql), так что 10 контейнеров для 10-ти приложений превращаются в один контейнер с базой данных и 10 контейнеров-пустышек для сохранения данных приложения.

    Ну и далее, все общие вещи реюзаются между контейнерами (то есть смотрим по базовому образу).

    В случае же с виртуалками у нас 10 виртуалок в которых крутится 10 операционных систем (в докере только окружение, но ядро используется на уровне хоста), 10 баз данных ну и тд. То есть докер существенно сокращает количество необходимых ресурсов и вообще прикольно.

    Docker НЕ работает на windows. Точнее microsoft планирует сделать поддержку оного (если еще не сделала), но только для win server-ов. Что не ок. Так что linux в виртулку поставить придется, но только одну на все проекты. Что же до возни с самбами и прочим - тут уж как хотите. В целом же производительности обычных шаред фолдеров должно хватать (так как мы всеравно мэпим данные по большому счету на файловую систему виртуалки).

    Так что можно просто скачать Docker Toolbox и работать. Для Mac OS есть еще штука под названием dinghy, которая добавляет прозрачную поддержку NFS и т.д. но для винды такого нет (только черзе vagrant). Ишус на эту тему висит в репозитории docker-machine и возможно в скором времени и это запилят.

    мне не нужны танцы с виртуалками, самбой, настройкой хостов и тп?

    Вообще-то это никогда не нужно, все уже придумано до нас. Есть такая штука как vagrant которая полностью решает вопрос оркестрации виртуальными машинами для изоляции окружения. Но оверхэда оно дает сильно больше.
    Ответ написан
    8 комментариев
  • Как работает аутентификация мультисайтовая, например, здесь, на Toster?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Гуглите Single Sign-On (SSO). Кросс-доменные куки и прочее это лишь детали реализации. dimonchik2013 в принципе верную ссылку дал с подборкой существующих подходов для организации SSO.
    Ответ написан
  • Как продолжить обучение js?

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Может я просто иду не в том направлении.

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

    https://github.com/gdi2290/ngExam - вот вам список вопросов и план изучения. Ну а для того что бы составить общую картину - рисуйте mind maps.
    Ответ написан
    Комментировать
  • Пример front-end разработки?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    https://github.com/classeur/classeur - например. Не сказал бы что это "код которому стоиит подражать" но...
    Ответ написан
    Комментировать
  • Где вы храните сессии пользователя, почему?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Что делать если у пользователя отключены cookies и нельзя определить идентификатор сессии?


    Сообщать ему что мол "чувак у тебя куки отключены!"

    https://developer.mozilla.org/en-US/docs/Web/API/N...
    Ответ написан
    Комментировать
  • Каким образом должны создаваться движки на PHP?

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    nodejs + express + socket-io для апишки + websockets, что угодно для остального. Как вы и сказали, по запросы добавляются задачи в очередь, а как они выполняются - это уже дело третье. Обработчики задач могут периодически скидывать по http/tcp/udp ноде статус задач просто.

    Вычислялку - зависит от того что оно будет вычислять но либо java либо C++ (либо Си, либо go либо rust).
    Ответ написан
  • Стоит ли читать WEB-программисту книгу "Д.Е Кнут искусство программирования"?

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


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

    В целом книгу эту прочитать стоит, но в качестве факультатива. Более полного понимания того что происходит за кадром, что бы потом небыло этого разделения "компьютерное" и "web". Ну и опять же основные алгоритмы понимать надо.
    Ответ написан
  • Правильно ли я использую 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 комментариев
  • Что необходимо для современного веб-фреймворка?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    что есть хорошее в фреймворках

    - принцип единой ответственности
    - принцип открытости/закрытости
    - принцип подстановки Барбары Лисков
    - сегрегация интерфейсов
    - инверсия зависимостей (не путать с dependency injection)

    за основу взят CodeIgniter.

    это путь в никуда.
    Ответ написан
    2 комментария
  • Сервис конвертации видео с API?

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

    Для видеохостинга это выйдет сильно дешевле. Но на первое время можно заюзано

    https://aws.amazon.com/elastictranscoder/
    Ответ написан
    1 комментарий
  • Почему clearfix называют хаком, костылем?

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

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Комментировать
  • PHP vs. all. Имеет ли смысл учить (параллельно) что-то еще?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    но код, особенно после C++, не вызывает каких-то положительных эмоций.

    А у меня не вызывает положительных эмоций код на C++. Да и код разный бывает. 90% кода на PHP у меня так же не вызывают положительных эмоций, но писать на нем нормально более чем можно.

    1) под фразой "php умирает" позразумевает его модель работы. После каждого запроса он умирает, то есть воркер отчищается и запускается по сути заного. Это существенно упрощает работу (у вас хоть сегфлоты могут быть всеравно весь сервак не умрет), а так же масштабирование (за счет отсутствия у самого PHP состояния между запросами, сессии мы не берем в расчет), но существенно бьет по производительности. К счастью с PHP 5.3 писать демоны на PHP не так уж страшно.

    Если же посмотреть рынок и динамику развития сообщества - PHP живее всех живых.

    2) PHP не такой уж стремный язык. Я не считаю "не консистентные названия функций" таким уж прям фактором влияющим на выбор языка. С моей точки зрения Ruby уродливая отрыжка, попытка сделать объектно-ориентированный перл (это лично мое мнение, мне не приятно работать с ruby, пусть меня за это простят), но за счет того, насколько сообщество ruby-разработчиков ценит и понимает цели бизнеса, насколько уважает тестирование своих решений и т.д... словом PHP комьюнити в этом плане еще расти и расти. Но прогресс виден.

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

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

    4) судя по вопросу вы уже определились для себя. Дальнейшая дискуссия не имеет смысла. Разбирайтесь. Но если брать шаред хостинги то PHP это пожалуй единственный адекватный вариант на сегодняшний день (если не брать в расчет что шаред хостинги как таковые это не очень адекватный вариант).

    5) все зависит от вас. Хорошие разработчики зарабатывают примерно одинаково вне зависимости на каком языке программирования они работают. Они просто хорошие разработчики и таких всегда мало.

    6) как хотите.

    И так...

    Язык программирования - это лишь инструмент для решения задач. Фреймворки - это так же просто инструменты для решения задач. Что важно - уметь задачи решать. И решать эффективно. Понимать что кривыми решениями вы увеличиваете риски для бизнеса.

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

    Ruby например бизнес (и стартапы в особенности) выбирает не потому что это хороший язык, а потому что Ruby комьюнити в среднем больше приспособлено для эффективного решения задач бизнеса. Что говорить когда у них любовь тестирования прививают с первых дней знакомства с языком?

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

    p.s. Haters gonna hate
    Ответ написан
    4 комментария