• Где или как получить хорошую алгоритмическую базу?

    @cthulhudx
    1)Учите теорию.По моему мнению, самая лучшая книга -
    Алгоритмы: построение и анализ
    2)Решайте много задач.
    acm.timus.ru
    informatics.mccme.ru
    3)Соревнуйтесь с другими людьми
    codeforces.com
    P.S Получить действительно мощную алгоритмическую базу можно лишь с помощью отличного знания теории и решения большого количества задач.
    Ответ написан
    Комментировать
  • Почему в шаблоне проектирования MVC именно 3 компоненты?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    То что вы описываете - подход с использованием толстых контроллеров. Откройте для себя дивный мир Service-Oriented Architecture. Вообще как, модели, они же доменные модели, это просто представление данных. За сохранение данных и их обработку, валидацию и т.д. отвечают сервисы. Контроллеры так же можно представлять в виде сервисов, и из задача будет только проверка, имеет ли пользователь доступ к данной операции, что собственно нужно сделать и т.д. Таким образом контроллер может вообще не иметь понятия о том, где хранятся данные, как они обрабатываются... Он просто смотрит что пользователь может сохранять данные, передает данные пользователя сервису, тот сохраняет....

    Короче как-то так.

    Пример модели:
    class User
    {
        private $id;
        private $email;
        private $password;
        private $enabled;
    
        public function getId() {...}
        public function getEmail() {...}
        public function setEmail($email) {...}
        public function getPassword() {...}
        // за хэширование пароля отвечает сервис, модель ничего об этом знать не должна.    
        public function setPassword($password) {...} 
        public function isActive() {}
        public function activate() {}
    }


    пример контроллера
    /**
     * @Route("/users")
     * @Method("POST")
     */
    public function createUserAction(Request $request) {
        if (!$this->get('security.context')->isGranted('ROLE_ADMIN')) {
            throw new AccessDeniedException();
        }
    
        $user = new User();
        $form = $this->createForm(new UserForm(), $user);
        $form->bindRequest($request);
        if (!$form->isValid()) {
            // save errors to session, redirect     
            return $this->redirecti(...);
        }
     
        $user = $form->getData();
        $this->get('app.user_manager')->createUser($user);
    
        return $this->redirect();
    }
    Ответ написан
    Комментировать
  • Как улучшить практические знания по C#?

    @AlexP11223
    Чтобы "улучшить практические знания" нужно — (!) внезапно — практиковаться.
    Свои проекты придумать, или open source что-нибудь интересное вам найти и участвовать и т.д.
    Ответ написан
    Комментировать
  • Путь фрилансера. Как найти первый заказ?

    buttersmai
    @buttersmai
    Пишу свое мнение про Odesk и Elance, ибо работаю на них.
    1. Насчет "наладить поток заказов"-важно знать, что Вы вкладываете в это понятие. Ситуация "заказчики стучатся сами, а я только выбираю и программирую", как мне кажется, не совсем возможна. Так что готовьтесь, что часть времени Вы будете продавать себя. С другой стороны, если продадите на долгосрочный проект, то счастье Вам обеспечено.

    2. По поводу первых заказов: я брал первый заказ за 5$(за весь проект) и делал его по-максимуму, чтобы у заказчика и в мыслях не было поставить рейтинг ниже 5*.
    Первый отзыв-важный этап. После того, как добились его, начинайте просить более-менее сносные цены. На втором проекте я уже работал по 10$/час.
    Все Ваши рейты потом будут видны в профиле, поэтому чем больше платят сейчас-тем выше Вас ценят потом. Я еще как-то просил одного из первых заказчиков вместо 5 часов по 15$/час посчитать 3 часа по 25$/час(я заранее оговорил, что работы на 5 часов). Сумма для заказчика одна и та же, а у Вас в профиле уже хороший рейт светится и люди видят, что Вам уже платили такие деньги

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

    4. По-моему, Вы зря используете "опытные фрилансеры" и "армия индусов" в одном предложении. Я месяц назад видел заказ, где было английским по-белому написано "only for native Russian speakers", где оставили биды один русский и два индуса.

    Чтобы конкурировать с ними, многие советуют оставлять заявку в числе первых. Для этого стоит организовать работу так, чтобы сразу видеть новые заявки по нужным ключевым словам в одном месте. Я для этого использую lancemonitor.com (возможно, это мини-PR, но я безумно благодарен автору за сэкономленное время). Сервис отправляет проекты по нужным Вам ключевикам на почту по мере их поступления: все собрано в одном месте и позволяет быстро реагировать

    5. Составляйте cover letter грамотно, под каждого заказчика, стараясь показать, что Вы вникли в проект. Можно задать 1-2 вопроса.
    Если на Odesk я первый проект делал за 5$, то на Elance первый был за 18$/час. Так что при хорошем профиле и подаче себя можно и без отзывов получить нормальный первый проект.
    Ответ написан
    Комментировать