Задать вопрос
  • Как получить только первое значение в таблице?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    С учётом изменения вопроса:
    SELECT to_char(c.date, 'YYYY-MM-dd HH24:MI:ss') as day,
           c.title, c.email, c.price, c.pages
      FROM (
        SELECT MIN(date) AS date, email FROM customer GROUP BY email
      ) AS t
      JOIN customer AS c ON c.date = t.date AND c.email = d.email
    Ответ написан
    1 комментарий
  • Формат даты при Select в ActiveRecord?

    qonand
    @qonand
    Software Engineer
    $query = new \yii\db\Query();
    $query ->select([
        'day' => "to_char(cd.date, 'YYYY-MM-dd HH24:MI')",
        'c.host_id', 
        'cd.customer_id'
    ])
    ->from('customer_download cd')
    ->leftJoin('customer c', '"c"."id" = "cd"."customer_id"')
    Ответ написан
    1 комментарий
  • Открытие изображений в новостях?

    pashted
    @pashted
    тыжпрограммист
    Ответ написан
    Комментировать
  • Как перенять объектно-ориентированное мышление?

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


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

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

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

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

    А все безхозные функции, которые не пренадлежат никаким объектам (например функции порождающие объекты) можно вынести в статические методы. Главное что бы статичесих переменных у нас небыло (ибо это те же глобальные переменные). И поменьше публичного ибо черт его знает что эти разработчики будут использовать. Причем "те разработчики" это вы завтра.

    Вообщем писав всё время на процедурке, сложно перейти на ооп.


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

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

    Подскажите, какой проект начать писать (гостевая, блог), или может начать изучать фреймворк.


    Фреймворки универсальны, а значит чистого ООП там быть не может. Во всяком случае нет ни одного фреймворка на котором стоит учиться ООП.

    Есть хорошие упражнения на развитие понимания объектно-ориентированного проектирования. Например вот: https://habrahabr.ru/post/206802/

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

    Или может подскажите книгу/сайт где пошагово в ооп написан какой-то проект, чтобы быстрее пришло понимание.


    Так вы научитесь делать один конкретный проект а на втором вы уже проиграете. Так дела не делаются. Надо разобраться с причинами появления идеи ООП. Ну то есть что было до. Можно еще с функциональным программированием попробовать разобраться. В PHP оно слабо применимо, но основные идеи очень тесно переплетаются с ООП и познав немного функциональщины ваше ООП будет лучше. Да и если про ООП вы можете найти много булшита, про функциональщину врут мало.
    Ответ написан
    3 комментария
  • Почему не срабатывает запрос через ActiveRecord?

    webinar
    @webinar Куратор тега Yii
    Учим yii: https://youtu.be/-WRMlGHLgRg
    вижу следующие ошибки в первом варианте:
    1 пропущена кавычка после request.customer_email
    2 вместо '"request"."email" наверное надо '"request"."customer_email"
    Ответ написан
    6 комментариев
  • Игнорировать элемент массива?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    $result = array_filter($array, function($el) { 
      return !(0 == $el['email'] && 
              0 == $el['facebook'] &&
              0 == $el['twitter'] &&
              0 == $el['google']);
    });
    Ответ написан
    Комментировать
  • Игнорировать элемент массива?

    Denormalization
    @Denormalization
    array_filter
    Ответ написан
    Комментировать
  • Как правильнее удалять устаревшие сессий из базы данных?

    Разве в mysql нет функционала периодического запуска кода по расписанию? Вроде Event Scheduler
    Ответ написан
    2 комментария
  • Как разобраться с вопросом авторизации/аутентификации и регистрации?

    slo_nik
    @slo_nik Куратор тега Yii
    Доброй ночи.
    Все ссылки по yii2, первые две от разработчиков.
    Документация
    Рецепты
    Авторизация
    Ответ написан
    Комментировать
  • Как разобраться с вопросом авторизации/аутентификации и регистрации?

    DVamp1r3
    @DVamp1r3
    Java/PHP программист
    документации по PHP должно хватить.
    Ответ написан
    Комментировать
  • Простая игра в браузере?

    L1Qu0R
    @L1Qu0R
    Веб разработчик
    Берешь yii2 как api, берешь на фронт какой-нибудь js фреймворк, типа angular или ember, общаешься с серваком по rest :)
    Ответ написан
    Комментировать
  • Как установить simple chat для yii2?

    slo_nik
    @slo_nik Куратор тега Yii
    Добрый вечер.
    Если Вы ставите на yii2-basic, то Вам надо прописать в config/console.php этот модуль, как в документации сказано.
    $config = [
        'bootstrap' => ['simplechat'],
        'modules' => [
            'simplechat' => [
                'class' => '\bubasuma\simplechat\Module',
            ],
        ],
    ]


    Тогда заработает консольная команда php yii simplechat.
    Если Вы устанавливаете в yii2-advanced, то всё должно работать и так.
    Проверял)))
    И ещё один момент.
    Чтобы чат заработал у Вас должен быть обязательно установлен yii2-twig и в composer.json, в секции
    require прописан "bower-asset/twig.js" : "0.8.4@stable",

    p.s. И ещё такая мелочь. Если есть директория messages с переводами, то при попытке перейти по адресу site.com/messages будет ошибка перенаправления. Для этого или переименовать папку с переводами и править в конфиге или попробовать создать свои правила urlManager для модуля чата (что будет правильней)
    Ответ написан
  • Как сделать генерацию ссылок?

    za4me
    @za4me
    Человек
    По блогу мануалы.
    ведь для каждой страницы нужен свой контроллер и своя views

    С чего такой вывод?
    Вы работали ранее с MVC?
    Ответ написан
    1 комментарий
  • Как сделать генерацию ссылок?

    slo_nik
    @slo_nik Куратор тега Yii
    Доброе утро.
    Зачем отдельный контроллер и вид?
    Может Вам поможет эта статья? Конечно если я Вас правильно понял.
    Ответ написан
    Комментировать
  • Как стилизовать option select?

    @maxnrg33
    верстальщик
    выпадающий список нельзя стилизовать

    пользуйтесь плагинами. один из них:
    https://select2.github.io/examples.html
    Ответ написан
    Комментировать
  • Аутентификация на Yii?

    slo_nik
    @slo_nik Куратор тега Yii
    Доброе утро.
    В этой статье всё расписано.

    А в этой целая лекция на четыре часа по авторизации, аутентификации и rbac.
    Ответ написан
    Комментировать
  • Как повлиять на элемент?

    @developinwed
    Пробуйте
    $(document).ready(function () {
    
        $('.Add').click(function(event){
    
            _wrapper = $(this).closest('.wrapper');
    
            sendPost('/add?id=' + $(this).attr('docId'), function(){
                console.log(window.myAdd);
                _wrapper.find('.Add').hide();
                _wrapper.find('.Del').show();
            });
        });
    
        $('.Del').click(function(event){
            _wrapper = $(this).closest('.wrapper');
    
            sendPost('/del?id=' + $(this).attr('docId'), function(){
                _wrapper.find('.Add').show();
                _wrapper.find('.Del').hide();
            });
        });
    
    
        function sendPost(url, action){
            $.post(url, function (data) {
                if (data.result == true) {
                    action();
                }
            });
        }
    });
    Ответ написан
    Комментировать
  • Как обратиться к элементу на странице по ID jquery?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    так и обращаешься $('#addWishlist')
    вообще id не надо забивать в переменную. забивают обычно сам объект полностью
    var Addid = $('#addWishlist');
    Ответ написан
    1 комментарий
  • Как развиваться начинающему web-разработчику?

    @toZavtra
    Принимаю заказы, пишите vasya@incream.org
    Послушай человека, у которого 4 года опыта управления веб-студией.

    Тебе нужно в первую очередь понять, где ты хочешь работать и только потом уже думать о технологиях и их прокачке. Когда ты узнаешь, где ты хочешь работать, над какими проектами, то узнаешь и какие технологии там используются. Потом устраивайся туда junior'ом и так вырастешь быстрее всего.
    Заодно, посмотришь, надо ли тебе оно и может тебе идти в другую область с другими технологиями.

    Помимо программистских советов есть еще чисто практичные и зачастую они решают, например, ты любишь делать законченный продукт или ковыряться в старом коде? Все эти басни и бредни про фреймворки, пойми, эти люди, которые до тебя писали код на твоей будущей работе, мозгами намного хуже тех же программистов, которые создали тот же Wordpress, зато они позволяют себе хаять его. Так вот ты придешь и будешь за таким человеком искать ЕГО баги 4-х летней давности. А представь, что баги эти от кривой архитектуры.

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

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

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

    Потом, не забывай еще главное, мы живем в стране, где даже автомобиль нормальный сделать не могут, качество разработки здесь абсолютно такое же, то есть никакое, люди они одинаковые, что в АВТОВАЗЕ, что в Яндексе, поэтому на весь этот флёр вокруг каких-то там разработчиков клади болт.

    Я тебе расскажу, как это работает с точки зрения бизнеса в России, а не со стороны парняги в свитере и очёчках:
    1) Есть богатый дядя, который наворовал в своё время денег, у него есть сын, сын начитался хабра и бизнес молодости, взял у бати своего миллионов 50-100 и пошел пилить абсолютно никому не нужный стартап, нанял 30 человек, поставил компы, вот сюда нужно знать не столько сами технологии, сколько МОДНЫЕ технологии, смотришь модные тренды и их учишь или просишься джуниором, вауаля, и вот ты в струе.
    Делали делали, сыночке надоело пилить стартап, у него пати на мальдивах, свадьба, дети и тд - все разбежались.
    2) Есть государство или крупная контора, которая так или иначе, принадлежит кому-то из власть имущих, им нужно какой-то проект, они этот проект отдают фирме (то есть сыну, брату, свату), у которой сайт визитка. Эта фирма отдаёт это другой фирме, та отдает это еще двум-пяти фирмам. Где-то там в конце сидишь ты за компом и делаешь то, что тебе написали в ТЗ. Чтобы тебе что-то изменить в этом ТЗ, это должно пройти через 8 ртов и кучу согласований, и ты вообще лучше сиди и поменьше высовывайся. В таких конторах будешь пилить и пилить какую-нибудь хрень, в которой уже запутались все вокруг, но ты как-то делай, ведь скоро сдача. А потом они за два дня до сдачи, всей аравой посредников и программистов собираются в одном месте и наконец-то звонят главному заказчику и спрашивают, а как надо делать, то есть то, что ты спрашивал месяц назад. Иногда этот брейншторм помогает, иногда нет. Как туда устроиться? Опять таки, иди джуном.
    Примечательно, что качество продукта таких контор обычно хуже самой захудалой Джумлы, зато там все хаят CMS, но чтобы им в продукте прикрутить голосовалку, им нужно напрячь 8 ртов, распилить бюджет в тысяч 180-400, через кучу согласований сделать всё через жопу, но через ООП и какую-нибудь Symfony. Круто.
    3) Компании типа Яндекса, каких-нибудь банков. В таких компаниях обычно умные люди только на самом верху - это основатели компании, усмотреть за всеми аспектами фирмы им технически невозможно, поэтому часть продукта у них хорошая, основная, например, как поиск у гугла, а 90% других сервисов полное говно (посмотрите, что сделали эти "умы" из яндекса, вроде, с кинопоиском). Зато ЧСВ у каждого там Васи на уровне основателя компании. Вот эти Васи и делают там 90% продуктов, которые, как-бы второстепенны. Чтобы туда попасть надо не технологии учить, а изучать тренды какого-нибудь хабра, что там сейчас ценятся, какие авторы зарубежные: "Мега алгоритмическое программирование Алана Коуэла" и тд, таких книжек прочитать штук 10, выучить всё азы чистого программирования без фреймворков, одеться как мудак, чтобы выглядеть еще мудачее того гика, который тебя будет собеседовать, а то они ранимые и завистливые и опять таки, устроиться джуном.
    4) Компании локальные по созданию сайтов и прочего программирования. В таких фирмах свободы намного больше, чем в первых трёх, но нет столько денег, зато сразу видно продукт, который делаешь. Тут тебе пригодится и вордпресс и битрикс. Туда тоже лучше идти джуном. В таких компаниях шанс того, что ты потом запустишь боком собственный проект намного выше, т.к. у тебя будет опыт создания веб-сервисов, сайтов за Реальные сроки и ты будешь видеть ход их развития. Но с точки зрения денег, редкий случай, когда они тебе могут предложить даже столько, сколько в стартапе.
    Поэтому, если для души программировать, получать удовольствие, то варианты 1 и 4. Если хочется работы, от которой многие воют, то 2, 3.

    5) Есть еще компании, которые работают на запад, денег сейчас там в теории, может быть столько же, сколько и в стартапе у богатого буратино, там тебе сильно повезет, если будете делать пункт 4, если 2-3, то можешь брать веревку и мыло.
    Стартапы таким компаниям дают мало когда, ведь хипстеру миллионеру нужна атмосфера, нужны работнички перед глазами, а не на аутсорце. А вот латать баги в 6 летнем коде по цене продавщицы в ларьке Нью-Йорка - это запросто, это аутсорц. Текучка в таких местах дикая, поэтому они, отчаявшись, ищут негров за рубежом, никто вменяемый этим заниматься не хочет у них на родине. Поэтому если на аутсорце будет создание сайтов или каких-нибудь новых систем, это большая удача.
    Туда тоже нужно идти джуниором. Еще они почти всегда требуют английский, а если у тебя есть английский, зачем тебе они?

    6) Учишь английский, вордпресс, джумлу, магенто, цсс и идешь искать клиентов на английском языке. Из тебя вылупляется фрилансер, в перспектике открываешь собственную контору номер 5.

    Есть еще лайфхак, берешь абонемент в дорогой фитнес центр и знакомишься там с парнями, когда-нибудь тебе повезет и выйдешь на кого-нибудь богатого из чиновничков или олигаршьих родственников. Всем говори, что ты программист и у тебя есть "команда". Этого хватит, у богатых всегда "куча идей" куда бы просрать бабки (стартап) или наоборот где-то "намутить денег" (пункт 2). Они тебе сами предложат "тему", если ты обмолвишься, что ты программист. Всё, что у тебя будет к тому моменту, это сайт визитка, понимаешь к чему я клоню? Пункт 2, но ты будешь сверху, вторым ртом. Если повезет, будет и пункт 1, но ты будешь ко-фаундерем, ты посмотришь модные технологии и будешь под смузи составлять вакансии с reactJS, Angular, high load и еще кучу умных слов. А на биржах заказы пусть обычные люди ищут, которые за деревьями леса не видят. Или идут через жопу в пункт 2, когда надо заходить с другой стороны. Think different.
    Тот, кто на основании выше написанного лайфхака понял, что он ходил по кругу, а ключик в другом месте открывается, может мне скинуть денег за совет на кошелек R738086405346
    Точнее, это даже не совет, это инструкция, которая действительно рабочая.
    Ответ написан
    2 комментария