Ответы пользователя по тегу Программирование
  • Почему все называют TypeScript компилируемым языком программирования?

    Maksclub
    @Maksclub
    maksfedorov.ru
    В целом, если не упарываться терминами, везде для такого рода поведения как у Typescript указывается слово Compile.
    Например, контейнер в Symfony (язык php), чтобы ускорить тяжелую работу по разбору конфигов (всех разных) собирается контейнер один раз (компилируется) и спокойно все называют это дело компиляцией.
    https://symfony.com/doc/current/components/depende...

    Отдельно отмечу, что в английском языке это не самостоятельное слово для сборки программ, и может использоваться много где, где нужен смысл "собрать". Соответственно все, что собирает почти всегда корректно называть компилятором. Потому компиляция у нас — перевод "собирание вместе"
    Ответ написан
    1 комментарий
  • Зачем нужен статический анлизатор и как он работает?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Например для линтеров, очень подробное руководство зачем они нужны
    https://habr.com/ru/post/457970/

    Чтобы написать линтер — часто нужно сделать статич анализ кода.

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

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

    И ещё интересно, как именно происходит анализ кода?

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

    Или например есть код, но на самом деле он не вызывается никогда (утверждения всегда true дают, а IDE не может этого понять), вы находите такие случае в работе/на ревью со временем и вырабатываете правила как это детектить... Чтобы задетектить, вам надо разобрать инструкции кода, как понимаете без статанализа этого не возможно, не регулярками же делать.
    Ответ написан
    Комментировать
  • Входные и выходные параметры в теле функции - нормально?

    Maksclub
    @Maksclub
    maksfedorov.ru
    идёт обращение сразу напрямую к глобальным переменным и во мне всё протестует.

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

    Maksclub
    @Maksclub
    maksfedorov.ru
    Некоторые случаи использования коллбека (помимо асинхронного упомянутого использования):

    В коде: отложенный (ленивый) вызов.
    Например есть некий контейнер, в него мы регистрируем некие объекты с некоторой логикой.
    Но так как очень много таких кандидатов и они все запускаются, замедляя и работу и нагружая ресурсы, то мы бы хотели, чтобы контейнер просто знал о них, но при инициализации не запускал весь код создания этих объектов. На помощь приходят коллбеки — в коллбеке мы описываем логику создания объекта и (внимание) регистрируем именно коллбек с этой логикой создания, все — это очень быстро и легко, тк не наплодили объектов. Далее только при вызове нужного объекта контейнер видит, что зареган коллбек и вызывает его, тем самым инициализирует создание нужного объекта, описанное в этом коллбеке! ПРОФИТ!

    В коде: рекурсивно применить некоторый функционал к элементам коллекции.
    Очень популярное использование в Java в стримах.
    Есть коллекция элементов, запускаем некий map(), reduce(), filter(). walk() по набору элементов (коллекции) передавая в этот обход коллбек, и ожидаем, что получим результирующий набор после применения коллбека к каждому элементу. То есть этот коллбек будет выполнени внутри обхода, сама конструкция этих методов подразумевает, что вы передадите что-то что потом вызовется.

    Между системами: асинхронное взаимодействие
    Hook, callback
    Есть программа, которая ждет событий от внешней системы. Например есть платежная система Яндекс.Касса и есть ваш магазин. Вы отправили клиента на оплату в платежку, но он ушел "в путешествие" и вы не можете узнать судьбу платежа сразу. Вы можете бомбить сайт платежки, проверяя статус по номеру транзакции, а можете дождаться обратного вызова (коллбека, хука) от платежной системы с событием "Оплатил" или "Не оплатил, тк не хватило".
    Также в др системах — само оповестит, вызвав обратно уже меня.
    Ответ написан
    3 комментария
  • Как назвать класс, который имеет доступ к базе данных?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Yii есть ActiveRecord, который привязан к таблице

    Но он это делает через несколько абстракций...
    В самом Yii2 за работу с БД отвечает https://github.com/yiisoft/yii2/blob/master/framew...

    И как правильнее поступать, привязывать такие классы к сущности или к таблице?

    Вы вроде правильно работаете через репозиторий
    Вот хороший и популярный паттерн, решающий ваш случай:
    design-pattern.ru/patterns/data-mapper.html
    Ответ написан
    1 комментарий
  • Что закинуть в портфолио PHP-разработчику?

    Maksclub
    @Maksclub Куратор тега PHP
    maksfedorov.ru
    Создать гитхаб-профиль со своими модулями/компонентами/библиотеками/composer-пакетами

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

    Неправильно: https://github.com/Maksclub/trendtech
    Правильно: https://github.com/Maksclub/parser
    Ответ написан
    3 комментария
  • Является ли хорошей практикой делать интерфейсы даже тогда, когда класс не планируется заменять?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Абстракция зло, но необходимое зло... если нет необходимости, то...
    Ответ написан
    Комментировать
  • В чём причина постоянного переделывания кода?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Причин много:
    1. Бизнесу всегда нужно срочно. Из-за этого менеджер/заказчик бьет по рукам и говорит "не до архитектуры и главное быстрее", по итогу — пилятся костыли, которые блинным комом накатываются и в определенный момент нужно переписывать куски структуры, чтобы просто иметь техвозможность работать дальше
    2. Если было жирно по ресурсами и времени изначально и такая проблема — не правильная архитектура, экономия на тестах и прочее
    3. Плохая договоренность и плохое понимание задачи с каждой стороны, у кого-то завышенные/заниженные ожидания (один сказал сделай мне приложение, второй сказал, что сделает — вина обоих в таком случае)
    4. Не всегда это плохо. Сначала быстро запустили (проверили гипотезу, получили первые деньги, инвестиции и прочее), потом переделывают планово (просто этот план может не проговорен, отсюда плохие ожидания и чувство низкого КПД, а он может высокий как раз).

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

    UPD: Urukhayy речь не об этом проекте?
    Может ли проект быть собран с низким качеством кода, и пользоваться большим спросом?
    Ответ написан
    Комментировать
  • Где удобно хранить куски кода?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Целые, но мелкие куски можно вынести в Live Templates (бонусом -- быстрый набор в 2-3 символа + Tab)
    сюда можно засунуть разные GridView, ListView и прочие куски кода, которые нужны часто, но представляют собой 1-2 функции

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

    Maksclub
    @Maksclub
    maksfedorov.ru
    Чтобы у вас не своровали пароли — нужно, чтобы не было такой возможности...

    1. Как уже сказали выше — контроль версий (GIT, Mercurial)... то есть код будет виден через хостинг GIT (например Github) полностью с историей где и как изменяли его, выглядит примерно так:
    5a413fc724582712004587.pngкрасное — удаленная стркоа, зеленая — добавленная

    Также это даст вам возможность отделить работу с проектом от реального проекта на боевом сервере — к нему просто не будет доступа :) то есть работа идет с актуальной копией и у фрилансера есть код, с которым нужно работать.

    2. Как понимаете 1 способ не избавит вас от воровства самого кода, потому перейдем вот к чему — нужно тщательно искать специалиста, не отдавать все доступы первому же попавшемуся... если ваш программист занят, пусть порекомендует или даже он вас и проконсультирует!

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

    Советы предпринимателю
    Чтобы со всем этим разобраться рекомендую отдельно нанять консультанта, который бы прямо вам сел и нарисовал на А4 все виды способа работы, чтобы не превратиться в неприступного маньяка и при том выполнить все ваши бизнес-задачи... безопасность не должна вредить... НА 3-4 часа вполне хватит обдумать все...
    Также конечно есть разумный предел всему, может так оказаться, что воровство паролей может вполне входить в вашу бизнес-модель по затратам, если вы просто будете делать бекапы, а всякие GIT и сложные схемы вам не рентабельны... мало ли, посчитать нужно...
    Все нужно считать и смотреть!

    Даже у более правильных компаний с целым штатом прогеров есть косяки, доступ к боевой базе имеют программисты, он не контролируемый никак и все через 5 точку... и нормально компании себя чувствуют...
    Ответ написан
    2 комментария
  • Чем на работе занимается junior?

    Maksclub
    @Maksclub Куратор тега Карьера в IT
    maksfedorov.ru
    Немного описал тут (но это для веба)
    Как джуниор-разработчику найти работу

    По Java могу сказать, что берут с требованиями куда меньшими для джуниора, чем в вебе. Так что возможно возьмут и стажером... Тогда задачи будут чуть ли не учебными... Вообще, джуниор — младший разработчик, то есть выполняет полноценно все задачи
    Ответ написан
    Комментировать
  • Хочу создавать GUI программы, надо учить полностью язык?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Я понял твой вопрос, чтобы НАЧАТЬ, именно начать делать GUI --не нужно перед этим все зазубрить.
    начни с этого:
    https://www.youtube.com/watch?v=d7wZeAhn7B0

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

    Maksclub
    @Maksclub
    maksfedorov.ru
    Сдается, что нет нормальных примеров, опыта маловато у тебя еще объять в целом логику всего.
    Причины могут крыться в том, что алгебру то только недавно начал учить.

    В твоем возрасте сильно не скачи. Просто пока поверстай. HTML+CSS — просто управление блоками на страничке в браузере... постепенно поймешь зачем нужно динамически менять что-либо.... Не торопись за всем интернетом, во-первых никто не угонится за ним и всеми модами, во-вторых тебе бы на уроках сконцентрироваться, главное дела хорошо научись делать те, которые тебе дают... все получится...

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

    UPD
    Артём Гаврик
    Добавлю, тут обвчно просят не насиловать мелкими вопросами, но в твоем случае это только и нужно делать.

    Начни вот как:
    - Поставь задачу, например "Хочу 2 блока чтобы рядом были!"
    - Попробуй сам сделать,
    - Не получится -- на форум. Пиши что делал и что хочешь
    - Ответ получишь -- не останавливайся и попробуй уже самостоятельно сделать 3-4-5 блоков рядом. Это чтобы не привыкать к вопросам и самостоятельно разобраться...

    и так по кирпичам...
    Ответ написан
    Комментировать
  • Предпринимательский подход к разработке и программированию - как развивать, что именно прокачивать?

    Maksclub
    @Maksclub Куратор тега Веб-разработка
    maksfedorov.ru
    На самом деле навыки программирования хорошо себя показывают в проектах, связанных с этим программированием.
    Неоднократно видел, когда требовались продакт/проект-менеджеры с прогерским беком.

    Не нужно даже проверять код, как сам принцип работы со всем этим очень сильно упрощается... вы не боитесь отдать напрямую кодеру какую-то работу или что-то поручить по серверам... для некомпетентного специалиста это может вылиться в кровь — в деньги и время.

    В любом случае, если хотите стать предпринимателем — все то, чт оу вас есть — этого УЖЕ ОЧЕНЬ достаточно стать эффективным предпринимателем из технических компетенций.

    здесь лучший выбор - LAMP стек

    LEMP лучше :) (Nginx)
    Ответ написан
    Комментировать
  • Как поставить просто, слайдер на страницу сайта?

    Maksclub
    @Maksclub Куратор тега Веб-разработка
    maksfedorov.ru
    На самом деле вам тут могут помочь, но если вы это захотите.
    Например вы приведите примеры того, что делаете и что выходит, ссылку приведете... тк уже по ссылке после ваших стараний можно иногда увидеть правильные ли пути
    Ответ написан
  • Что такое экранирование в PHP, JS? И для чего оно используется?

    Maksclub
    @Maksclub
    maksfedorov.ru
    echo 'Однажды Арнольд сказал: "I'll be back"';
    выведет ошибку, так как после буквыIидет закрывающая кавычка команды echo, а потом для PHP идет куча мусора не из синтаксиса PHP

    а вот код:
    echo 'Однажды Арнольд сказал: "I\'ll be back"';
    выведетт: Однажды Арнольд сказал: "I'll be back"

    кстати синтаксис правильно подсветил редактор, обрати внимание на красный цвет кода

    ...

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

    Целая статья на закрепление https://habrahabr.ru/post/182424/
    Ответ написан
    2 комментария