Задать вопрос
  • Какой php фреймворк наиболее прост в освоении?

    eastywest
    @eastywest
    Backend developer
    Laravel
    Ответ написан
    Комментировать
  • Какой JS фрэймворк/библиотеку использовать совместно с laravel?

    erniesto77
    @erniesto77
    oop, rb, py, php, js
    AngularJS и выстроить структуру js-файлов по принципу MVC
    Ответ написан
    4 комментария
  • Где проверить знания по php?

    Denormalization
    @Denormalization
    У upwork куча тестов по языкам. Стоит глянуть.
    Ответ написан
    2 комментария
  • Стоит ли работать программистом?

    copist
    @copist
    Empower people to give
    Я тут всем пролайкал ответы. Отвечу и сам.

    Денежный вопрос стоял остро, первые несколько лет, пока я сортировки пузырьками писал сам и фантазировал на тему своего мегакрутого фреймворка, который на поверку был 10% от Yii или Zend Framework.

    Затем мега скачок. И в стартапах поработал, и в интерпрайзе, и на фрилансе. Почему-то всё стало легко. И дедлайны легко переживаю. Постепенно выбрал себе специализацию: веб-архитектор и backend-разработчик.

    Самообразование идёт без проблем. За технологиями, в общем-то слежу, но не рвусь знать вообще всё. Тут прочитал книгу, тут статью, там попробовал покодить, здесь знаю у кого спросить. Хорошие умные ребята встречались, многому научили, всегда помогут. В общем, я в тренде и я не один, если что - не закопаюсь.

    Знаю 15+ языков программирования, в разной степени.

    Что я всегда за собой замечал - всё в IT всегда было в удовольствие. И сервера ставил, и интернет-магазины делал с интересом, и веб-порталы кодил.

    Ответом на часть твоих вопросов будет следующее:
    * Чтобы нравилась работа, делай то что нравится тебе
    * Чтобы стОило, делай то, что нужно другим
    * Когда первое и второе совпадут, ты будешь финансово обеспечен и морально удовлетворён

    А про тяжести работы ... у меня всегда перед глазами вот это и я просто помолчу.
    Ответ написан
    1 комментарий
  • Как новичку найти клиентов на upwork и на что рассчитывать?

    Punkie
    @Punkie
    Почитайте блог: jff.name . В своё время он мне очень помог. И автор у него отзывчивый - всегда подскажет.
    Ответ написан
    1 комментарий
  • Как развиться от фрилансера до серьезной компании?

    franzolka
    @franzolka
    Co-founder & CEO в Tamaranga.com
    У нас было примерно все тоже самое, только начинала я в 2005м. В 2008м код уже не писала и полностью занялась управлением.
    Во-первых, ничего не будет получается, пока вы не выберете между кодом и менеджментом, как уже правильно подметил Александр Данилов. Плюс, если вы выберете код, у вас никогда не будет собственного бизнеса, он будет бизнесом вашего наемного менеджера, который просто его уведет в один не прекрасный день вместе со всей командой.
    Во-вторых, чтобы получались свои проекты и продукты одновременно с аутсорсом нужно выделить часть команды и вместе с тем, кто будет ей управлять, посадить в другой офис. Обязательно посмотрите видео от основателя invisiblecrm по этой теме, у них именно так и было аутсорс, который они не хотели отпускать, плюс продукт, который только начинали делать https://www.youtube.com/watch?v=ie1aw5N055U
    Сейчас у нас команда сократилась из 10 человека на аутсорсе до 5 человек на продуктах. Уже 3 года как мы полностью ушли от разработки на заказ. Путь до прибыльности занял примерно 8 месяцев, потребовался некоторый запас средств для перехода и после "тестирования темы на прочность" полного отказа от лавирования между двумя вариантами. Риск был, но оно того стоило. И да, откатиться обратно на разработку на заказ проще всего, но не спешите - вы всегда туда успеете.
    Ответ написан
    4 комментария
  • Как найти работу джуниору?

    viktorvsk
    @viktorvsk
    Из языков знаю C++, Java, C#, Python, неплохо ориентируюсь в Unix, базах данных.

    Для начала сами для себя проясните, что это неправда. Плюсы "знает" Страуструпп. А вы, наверняка частично, знакомы с синтаксисом. А Торвальдс "неплохо" ориентируется в никсах.

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

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

    Lucian
    @Lucian
    https://t.me/MakeFreelance
    Привет, использую во фрилансе Python, насколько успешно, можно почитать в моем блоге. Многие здесь на тостере пишут, что работы на Python вы не найдете, Вы их не слушайте, хороший разработчик всегда востребован, заказы берутся легко, если научитесь доносить до клиента, что на Python он получит готовое решение на порядок быстрее, чем на том-же php.
    Ответ написан
    1 комментарий
  • Какую серверную технологию выбрать для работы на фрилансе?

    @RadmirZ
    Делаем интернет-магазины на движке minicart.su
    PHP потихоньку улучшается и новые версии уже гораздо лучше чем раньше и сейчас это наиболее распостраненный язык для сайтов. Мы бы с радостью писали на питоне и работали с монго или чем нибудь другим новомодным, но когда 95% клиентов это php и mysql то выбора особо нет =)
    Ответ написан
    Комментировать
  • Какую серверную технологию выбрать для работы на фрилансе?

    Bandicoot
    @Bandicoot
    Вась-программист
    PHP, фреймворк Yii2 - пользуюсь и не нарадуюсь. В русскоязычном сегменте весьма популярен. Но для работы на зарубеж выбрал бы WordPress - там в ходу проверенные временем решения: habrahabr.ru/post/248719
    Ответ написан
    Комментировать
  • Какова роль интерфейсов в ООП?

    Приведу пример на коленке. Хотим, например, написать абстрактную файловую систему. Для начала, определим интерфейс, для ФС:

    interface FileSystemInterface {
      public function write($file, $data);
      public function read($file);
    }


    Затем, хочу реализацию интерфейса ФС для работы с файликами:

    class OSFileSystem implements FileSystemInterface {
      public function write($file, $data) {
         // открываем файлик, пишем данные
      }
    
      public function read($file) {
        // открываем файлик, возвращаем данные
      }
    }


    Вдруг, кому-то захотелось файловую систему в облаке. Окей, не проблема, реализуем это:
    class CloudFileSystem implements FileSystemInterface {
      public function write($file, $data) {
         // открываем соединение с облаком, пишем данные
      }
    
      public function read($file) {
        // открываем соединение с облаком, возвращаем данные
      }
    }

    Пусть у нас есть кой-то код, работающий с файловой системой, назовем его "Хранилище файлов". Пусть он выглядит примерно так:

    class FileStorage {
      protected $Fs;
      
      public function __construct(FileSystemInterface $Fs) {
        $this->Fs = $Fs;
      }  
    
      public function saveFile() {
        $this->Fs->write('file.txt', 'file data');
      }
    
      public function getFile() {
        return $this->Fs->read('file.txt', 'file data');
      }
    }


    Отлично! Теперь мы можем хранилищу файлов отдать любой объект с реализованным интерфейсом FileSystemInterface. Пример:

    // Хранилище файлов работает с файловой системой ОС:
    $FS = new OSFileSystem();
    $FileStorage = new FileStorage($Fs);
    $FileStorage->getFile();
    
    // Хранилище файлов работает с файловой системой в облаке:
    $FS = new CloudFileSystem();
    $FileStorage = new FileStorage($Fs);
    $FileStorage->getFile();


    Использование интерфейса, в данном случае. позволяет нам писать только реализацию работы файловой системы, а бизнес-логика, работающая с файловой системой никак не меняется, она знает, что в любом случае файловая система реализует интерфейс FileSystemInterface и может без опаски использовать методы этого интерфейса.
    Ответ написан
    14 комментариев
  • Найти работу web-программистом в Америке/Майами/NY?

    Спроси Петра - недавно с ними была колонка на ЦП, где неплохо все объяснялось. Попробуйте прислать туда резюме.

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

    У меня есть пара знакомых, которые уехали в начале 2000-х по программе "ворк-енд-тревел" от универа и не вернулись - оставались там нелегалами какое-то время, легализовались через браки.

    Есть еще вариант попробовать уехать через учебу в Школе Портнова. У него на ютуб-канале много роликов на эту тему.
    Ответ написан
    9 комментариев
  • Каковы основные принципы регистрации и авторизации через социальные сети OAuth2?

    hbuser
    @hbuser Автор вопроса
    Отвечу сам себе.
    Здесь есть полезная конкретная информация о технической реализации.

    А если вкратце, то...

    Для авторизации, регистрации используется все та же таблица 'users'. Вместе с обычной регистрацией и авторизацией, когда при регистрации (в самом простом виде) в таблицу 'users' добавляются email, password и login пользователя, а при авторизации проверяется соответствие введенных login'а и password'а существующим в базе данных, аналогичным образом используется и регистрация/авторизация через социальные сети. Только в данном случае источником данных о пользователе для его регистрации является не непосредственный пользователь, который вводит данные в форму, а соц. сеть. Регистрация в данном случае достаточно прозрачная, т.е. не видна пользователю. Схема примерно следующая (без особенностей работы Oauth-протокола):


    1) Пользователь выбирает вход через соц. сеть.
    2) Происходит обращение к странице авторизации в этой соц. сети, если человек еще не авторизовывался там. После ввода данных, а если он ранее авторизовывался, происходит запрос на разрешение использования его данных.
    3) Если человек отказывается, то на этом конец. Если дает согласие, то выполняется перенаправление на указанную в настройках Oauth страницу сайта.
    4) У каждого пользователя в соц. сетях есть свой уникальный идентификатор, который можно запрашивать. Для своей таблицы 'users' нужно добавить пару дополнительных полей (например, вот такие): auth_via (enum('native, 'vk', 'mailru', '...')) - для обозначения типа регистрации пользователя, и social_id - здесь будет храниться уникальный идентификатор в соц. сети. Если нужно хранить какие-то специфические данные этого пользователя из соц. сетей, то можно создать доп. поля для этих данных.
    5) После того, как пользователь дал разрешение на использование его данных, необходимо запросить нужные данные от соц. сети, в т.ч. и идентификатор пользователя в соц. сети. Вот здесь и начинается невидимый процесс регистрации. Нужно проверить есть ли в БД пользователь с таким social_id, если нет, то вставляем social_id, данные пользователя из соц. сети, по необходимости, в БД. Все, пользователь зарегистрирован.
    Если же данные о пользователе есть, то необходимо запросить актуальные данные из соц. сети, сравнить их с теми, что в базе и если они изменились, то обновить их и в своей базе данных, если нет, то просто переходим к следующему шагу.
    6) Создается сессия с данными пользователя.

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

    ca4a4b263fd1424085988c9deaeb6d5b.png

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

    'AND WHERE `auth_via`="native"'

    , чтобы исключить пользователей, зарегистрированных из соц. сетей.

    Как видно, для каждого пользователя в таблице создается внутренний (внутрисайтовый, если так можно выразиться) первичный, автоинкрементный ключ. Соответственно, нет разницы для логики сайта между пользователем, зарегистрированным через соц. сеть и через сайт. Если говорить об интернет-магазине, то, для привязки заказов к пользователю, можно использовать единый, внутренний идентификатор ID.
    Ответ написан
    3 комментария
  • Почему ВКонтакте не подцепляет мой OpenGraph image?

    Mycelin
    @Mycelin
    Эквиумист
    Кто-нибудь знает, обновляется ли кэш вообще? Нигде нет информации, раньше у меня менялся быстро, сейчас что-то изменилось.

    UPD: Они сделали инструмент для этого! :)
    vk.com/dev/pages.clearCache
    Как и Фейсбук (developers.facebook.com/tools/debug)
    Ответ написан
    4 комментария
  • Вывод комментариев с иерархической структурой

    taliban
    @taliban
    php программист
    Серверный вариант:
    1. Считываем все из базы
    2. Строим дерево
    3. Проходим по дереву и выводим каменты
    4.!!!
    5. PROFIT
    Ответ написан
    1 комментарий