• Как идет процесс разработки Laravel + Angular?

    @cluberr
    Laravel - по факту только ходит в базу достает данные и отдает их в JSON или добавляет их в базу при запросе на определенный в роутах URL - это все называется REST IP,
    из Angular по заданным событиям Events через HttpClient шлются запросы на нужные URL бэкенда , получают от Laravel данные в JSON и инджектят в компоненты из которых состоит страница.

    То есть у вас на сервере с определенным ip, которому прописан в dns адрес site.ru, на 80 порту лежит фронтенд , который отдает главную страницу при запросе на site.ru из Angular (это просто html страница с Javascript) а потом javascript шлет запросы на бекенд который может работать на этом сервере на другом порту или в любом месте , главное знать ip и порт куда слать запросы
    Ответ написан
    4 комментария
  • Несколько вопросов к толковым разработчикам относительно mvc и php?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    M — модели… если упростить — это просто проекция вашего хранилища данных (будь то ORM/ODM или обычные файлы) на объекты. И все… Бизнес логику они содержать не должны. Так же модель никак не должна знать как именно она будет сохраняться в хранилище, ибо тогда при смене хранилища начнутся приключения. В этом смысле концепция AR в том виде, в котором она реализована в Yii мне не нравится. Какой-то класс CActiveRecord который знает кучу всего о том что и как он будет сохранять, и от него надо наследовать нашу простенькую модельку содержащую в себе всего пару полей. Опять же есть разные реализации паттерна ActiveRecord, хотя мне больше по душе DataMapper (например Doctrine), при котором у вас есть отдельный компонент, знающий о том что и куда пихать. Логика по выборкам в этом случае выносится в репозитории, эдакие менеджеры записей. Плюсы этого способа — очень легко в системе заменить тип хранилища, расширять и поддерживать за счет слабой связанности компонентов. Контроллеры знают только о том что есть репозитории, которые имеют для каждой записи свой интерфейс (аля getPendingPayments()), и они не знают откуда эти модели выходят, из базы, висят в памяти или еще чего.

    V — тут все просто… шаблоны призваны отвязать представление от логики работы с данными, что бы изменение первого не вызывало редактирование какого-то сервиса/контроллера.

    C — тут сложнее. Есть две концепции, толстые и тонкие контроллеры. Последние наиболее распространены, и включают в себя два слоя: сами контроллеры и сервисный слой. Контроллеры разруливают какое действие нужно произвести с данными в зависимости от пришедших параметров, прав пользователя и т.д. Они же разруливают ситуации когда нету исхомых данных, различные ошибки и т.д. Вся бизнес логика же выносится в сервисный слой. Сервисы должны минимально знать о контексте использования и заниматься только тем, для чего они были написанны. Скажем, сервис валидации данных ничего не должен знать о сервисе для обработки платежей, или о правах доступа и т.д. Ему на вход приходят данные, и он их проверяет по правилам, описанным для этой модели.

    Так же есть некоторые рекомендации по поводу использования тонких контроллеров: дублирование кода контроллеров — это нормально. Если у вас есть несколько контроллеров, реализующих примерно одно и тоже. То есть если отличия минимальны, скажем права пользователей разные, разные вьюшки, разные модели (актуально для простых CRUD операций), то лучше уж пусть будет много очень похожих методов, чем городить какой-то один базовый контроллер и внутри городить логику для обработки всего этого. Так как вся бизнес логика вынесена в сервисы, дублирования именно ее нету. А за время жизни проекта многое может и поменяться, и намного удобнее вносить изменения в отдельные методы а не в один здоровенный супер класс.

    Так же при работе с сервисами очень помогает использование контейнера зависимостей. Благо готовых реализаций (как простых, как Pimple так и сложных, как например DiC в Symfony2 или Zend2) достаточно много.

    p.s. Мое мнение не претендует на истину. Если кто-то увидел что-то в таком подходе что-то не корректное, буду рад если укажите.
    Ответ написан
    Комментировать
  • Актуальная документация по symfony на русском?

    GTRxShock
    @GTRxShock
    Full-stack developer (Symfony, Angular)
    Как заметили выше, сначала ООП и базовые концепции. Чтобы было понятно на деле, для чего вообще нужны фреймворки и какую задачу они выполняют. Рекомендую книгу Мэт Зандстра - PHP: объекты, шаблоны и методики программирования (желательно в бумажном варианте) + www.phptherightway.com (есть русская версия, но вроде не совсем актуальная, хотя для первого ознакомления сойдет)

    По симфони вот гайд по созданию блога: tutorial.symblog.co.uk но он на английском. Русская версия была, но видно у автора иссяк энтузиазм :) Если с английским совсем трудно - могу поискать бекап русской версии. Когда-то сохранял, на всякий случай)

    p.s. Английский язык тоже обязателен. А то дальше простенького приложения копнуть не сможете в итоге.
    Ответ написан
    3 комментария
  • Стандартный поиск - не вытягивает таксономии?

    opium
    @opium
    Просто люблю качественно работать
    Увы придется написать свою реализацию поиска
    Ответ написан
  • Как позиционируют блоки сегодня?

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

    Элементарная сетка из блоков:
    IE10+ => flexbox
    IE9- => float + clearfix
    IE9- и разная высота блоков в строке (картинка + 1-2 стоки текста под ней) => inline-block
    в какой-то ситуации тут даже display: table будет иметь право на жизнь

    "Прилипающее" при прокрутке меню:
    position: fixed
    position: absolute + js
    position: sticky + js fallback

    Кнопка с иконкой и текстом:
    inline-block + vertical-align: middle для обоих элементов
    position: absolute для иконки и padding для кнопки
    display: flex для кнопки

    Ну и т.д.

    Учитесь решать конкретные задачи и искать для конкретных задач лучший способ.

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

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

    Считаю, что БЭМ - как идея организации стилей, наименования и решения проблемы отсутствия неймспэйсов в css - лучшее, что есть на сегодняшний день. Да, css-модули это интересно, но их просто открыв в блокноте styles.css не реализуешь.

    Получается следующая идея.

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

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

    Это позволяет быстро разметить страницу и реализовать адаптив, а так же не изобретать классы вроде header-left, footer-right в каждом блоке.
    Ответ написан
    Комментировать
  • Почему не работает свойство transition?

    iiiBird
    @iiiBird Куратор тега CSS
    Пока ты спишь - твой конкурент совершенствуется
    transition на display не работает, а на height надо задавать точную высоту, а не auto. так что либо делай через js. либо оперируй через max-height. сначала 0, потом 1000px к примеру

    https://jsfiddle.net/b0dxdou9/1/
    Ответ написан
    3 комментария
  • Скрипт скрытия блока,если другой блок становится больше какой то длинны?

    fnnzzz
    @fnnzzz
    front-end dev
    это можно сделать нативно на CSS, без JS.
    https://jsfiddle.net/dtd4r7yd/
    Ответ написан
    Комментировать
  • В таблице появляются лишние строки?

    Austin_Powers
    @Austin_Powers
    Web developer (Symfony, Go, Vue.js)
    40f7911f992349b5bd340561f8510cc0.jpeg
    Ответ написан
    Комментировать
  • Есть ли преимущество Java над Python для веб-приложения?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Преимущество лишь в том, на каком языке умеешь хорошо писать ты и если есть то команда.
    Ответ написан
    4 комментария
  • Как новому типу записей получить доступ к рубрикам стандартных постов?

    deniscopro
    @deniscopro Куратор тега WordPress
    WordPress-разработчик, denisco.pro
    Попробуйте указать 'taxonomies' => array( 'category' ) :
    add_action( 'init', 'register_post_type_init' ); 
     
    function register_post_type_init() {
        $labels = array(
            'name' => 'Видео',
            'singular_name' => 'Видео', 
            'add_new' => 'Добавить видео',
            'add_new_item' => 'Добавить новое видео', 
            'edit_item' => 'Редактировать видео',
            'new_item' => 'Новое видео',
            'all_items' => 'Все видео',
            'view_item' => 'Просмотр видео на сайте',
            'search_items' => 'Искать видео',
            'not_found' =>  'Видео не найдено.',
            'not_found_in_trash' => 'В корзине нет видео.',
            'menu_name' => 'Видеоновости' 
        );
        $args = array(
            'labels' => $labels,
            'public' => true,
            'show_ui' => true, 
            'has_archive' => true, 
            'menu_icon' => 'dashicons-video-alt3',
            'menu_position' => 20, 
            'supports' => array( 'title', 'editor', 'comments', 'author', 'thumbnail'),
            'taxonomies' => array( 'category' )
        );
        register_post_type('video', $args);
    }
    Ответ написан
    1 комментарий
  • Как вывести курс валют в блог wordpress прямо в текст, без виджета?

    @imsha
    В wp есть механизм https://codex.wordpress.org/Shortcode_API

    Грубо говоря тебе нужно написать функцию, которая зарегистрирует новый shortcode, который ты будешь вставлять в редакторе в любом месте, например [exchange_rates].

    Для этого в functions.php добавь строки:
    function exchange_rates( $atts ) {
    //Здесь ты от куда-то получаешь курс валют
    return "результат";
    }
    add_shortcode( 'exchange_rates', 'exchange_rates' );
    Ответ написан
    Комментировать
  • Как увеличить скорость разработки и внимательность?

    Xenobyte
    @Xenobyte
    Насчет внимательности: https://toster.ru/answer?answer_id=690893#comments...
    По поводу скорости разработки: попробуй поработать по методологии скрама (хоть она и для команды), в начале каждого спринта берешь задачи из бэклога, планируешь их на неделю, и смотришь что успеваешь сделать, запланированное тобой должно утвердиться заказчиком (начальником), пусть делит задачи на срочные и не очень, в конце спринта сдаешь ему. В течении спринта, каждый день отчет о том, что сделал вчера, что будешь делать сегодня.
    Ответ написан
    2 комментария
  • Где можно фрилансить без лишних затрат?

    lunaticman
    @lunaticman
    Дерзкий айтишник
    Я наверно не отвечу на ваш вопрос, потому что все нормальные биржы теперь уже "по приглашению" или с техническим интервью. В фрилансе джуны никому не нужны.

    Я бы вам настоятельно рекомендовал найти работу - лучший способ перестать быть junior'ом.
    Ответ написан
    4 комментария
  • Как добавить класс "active" к двум спискам одновременно при клике по item любого?

    Bowen
    @Bowen
    Японский бог
    var className = 'active';
    $('.sorting-items').on('click', 'a', function(){
        var g = $(this).parent().data('group');
        $('[data-group='+ g +']').addClass(className).siblings().removeClass(className);
        return false;
    });
    Ответ написан
    1 комментарий
  • Как считать данные из файла и записать их в список?

    sim3x
    @sim3x
    prob_list = []
    with open('textfile.txt', 'r') as probs:
       for line in probs:
          prob_list.append(float(line.strip()))
    print('\nprob_list\n', prob_list)
    Ответ написан
    Комментировать
  • Как уйти с распутья технологий?

    @0x131315
    Стратегию уже подсказали: найти любую работу, чтобы кушать, и тем самым выиграть время на изучение чего-то, что поможет зарабатывать больше, и тем самым выиграть еще больше времени, и в конце концов изучить то, благодаря чему будешь работать не на зарплату, а на удовлетворение.

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

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

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

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

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

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

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

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

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

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

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

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

    С третьим - придешь, когда поймешь, что тебе это нужно. Из-под палки не учатся.

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

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

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

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

    Сложность задачи не особо влияет на мотивацию, а вот факт решения/нерешения - влияет сильно. Не решил - значит не осилил, не осилил - значит не достоин, не достоин - значит иди ко дну и не рыпайся. Это как импотенция: импотент - значит не мужик, не мужик - значит никто, ничего не достоин и об тебя можно ноги вытирать. Подсознание портит всю малину, так что не следует давать ему шанса - лучше решить задачу попроще, чем не решить по сложнее.
    Ответ написан
    7 комментариев
  • Сколько взять за просто ИМ?

    opium
    @opium
    Просто люблю качественно работать
    берите в три дорого
    клиент который обычно не знает точно чего хочет потребляет времени в десять раз больше, так что даже взяв в три дорого окажетесь в минусе.
    Ответ написан
    Комментировать
  • Заменить северный мост в ноутбуке реально только паяльным феном?

    @vilgeforce
    Раздолбай и программист
    Без опыта вы скорее всего угробите новый чип и/или материнку.
    Ответ написан
    3 комментария