• Что значит "в соответствии с подходом bootstrap" в постановке задачи?

    @djay
    Тестовое задание максимум на 10 минут. Этапы решения таковы:

    1. Найди на оф.сайте пустой каркас. Сохрани его к себе на диск.
    2. Тупо копируй, вставляй и модифицуруй инпуты. Примеры бери отсюда
    Ответ написан
    Комментировать
  • Виновен ли я в самописном движке?

    @djay
    Ты виновен в том, что будучи неопытным взялся за реальный проект.

    Теперь запомни раз и навсегда:

    Во-первых:

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

    Во-вторых,

    Никого не заботит весит ли ЦМС 5 или 20МБ и что там внутри. Самое главное - чтобы была админка и основной контент можно было оттуда редактировать. Всё! Остальное для заказчика не важно и тебя не должно тоже волновать.

    А сеошнику тому не понравилось вот это:

    - все УРЛшки должны выглядеть понятно, например так (и обязательно должны быть закрывающий слэш!):
    site.com/novaya-stranica/
    site.com/nashi-kontacti/

    А у тебя они выглядели наверное так: site.com/page/1

    - Не было 301-редиректа. То есть если на сайт зайдту с www, то всё должно перенаправлятся на домен без www.

    - И скорее всего не было robots.txt, sitemap.xml и возможности редактировать основные мета-теги.

    И на будущее запомни: навык владения какой-либо популярной CMS ценится гораздо больше, чем наличие самописной.
    Ответ написан
    21 комментарий
  • Какой выбрать JavaScript Framework для сложных приложений?

    @djay
    Сейчас Angular.js очень моден, да и тысячи плагинов и расширений, в том числе Angular UI написаны под него.
    Ответ написан
    4 комментария
  • Какими знаниями нужно обладать, чтобы работать с react.js?

    @djay
    Самый простой и эффективный способ - это найти видеуроки, где постепенно обьясняют как что-то создать. И если что-то не понимаешь, не старайся выучить заранее. Будешь гуглить по ходу, ибо так больше всего запоминается.
    Ответ написан
    4 комментария
  • Пойдут ли хорошие специалисты из РФ в новую неизвестную компанию за опцион?

    @djay
    Как считаете реально привлечь хороших специалистов за небольшой опцион?


    Почему хорошие специалисты должны пойти именно к вам даже за небольшой опцион? Чем вы можете их привлечь? Именно на этот вопрос вы должны ответить прежде сами себе, а потом им.

    и где это можно сделать?


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

    @djay
    Дописать несколько полей - будет менее затратным по времени и силам способом. А конструктор форм, если применять, то желательно еще с самого начала разработки.

    По поводу конструктора динамических форм, говорят что этот более-менее пригодный: metawidget.org

    И еще один - https://github.com/saymedia/angularjs-dynamic-form
    Ответ написан
    Комментировать
  • Как динамически добавлять новые select меню после выбора предыдущего?

    @djay
    1. У Джанго нет базы. Это в MySQL есть база. А в базе есть таблица с названиями треков. Джанго пингует базу и засовывает результат в словарь.
    2. Динамическая подрузка елементов обычно реализуется либо вручную через Jquery+Ajax, либо дата биндингами Angular + его http service.

    Погугли сам по 2-му пункту, мне лень все расписывать детально.
    Ответ написан
  • Правильно ли в данном случае использовать статические методы?

    @djay
    Когда использовать статику а когда нет? Это классический вопрос.

    Минусы статики:

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

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

    Теперь по существу:

    Работа с базой - создание, редактирование пользователя, а также проверка на валидность авторизации лучше всего будеть поместить в один DataMapper класс. И вообще погугли что такое Data Mapper.

    class UserMapper
    {
         private $pdo;
         
         public function __construct($pdo)
         {
              $this->pdo = $pdo;
         }
    
         public function authValid($login, $password)
         {
             // Выполнил запрос к базе через $pdo и вернул true или false
         }
    }


    Затем в классе Auth, в методе attemp() просто вызываешь UserMapper передавая данные, а не пишешь логику там.
    Ответ написан
    2 комментария
  • Как найти верстальщика-партнера?

    @djay
    > Где искать?

    Размести вакансию на МоемКруге описывая эти условия, так будет проще. В чем проблема то? Все так делают.
    Ответ написан
    Комментировать
  • Как установить Redis, Windows 8 x32, PHP 5.6?

    @djay
    Скачай лучше OpenServer - там Редис в коробке, готовый и настроенный.
    Ответ написан
    Комментировать
  • Какой дресскод у программистов? Как одеться на собеседование?

    @djay
    Ты не о том думаешь. Ты идешь устраиватся не в модельное агенство, а в контору. Носи тату, носи длинные волосы - всем по барабану. Самое главное - чтобы ты умел выпонлять поставленные задачи и все. И на собеседовании будь уверен и говори строго по существу. А серьёзный ты или нет, покажет общение с тим-лидом местным, а не то как ты одет.
    Ответ написан
    8 комментариев
  • Почему autoload лучше не использовать?

    @djay
    1. Потому что он не поддерживает пространства имен (классы под namespace)
    2. Потому что, нельзя зарегистрировать несколько автозагрузчиков. Только один.
    Ответ написан
  • Как российскому айтишнику уехать жить и работать в Украину?

    @djay
    Кое-какой багаж знаний - это не ответ на вопрос, который задаст тебе любой работодатель первым делом. У тебя будут спрашивать конкретно, про твои работы, про твой опыт. И если реального опыта и портфолио нет (либо портфолио слишком примитивное), тебе откажут везде. Такова правда, что тут поделаешь.

    Прежде чем решаться на такие шаги, тебе сначала нужно железно и точно найти работодателя который тебя возмёт. Зайди на https://djinni.co и поищи что-нибудь подходящее для твоих навыков. Если найдешь, договоришься, то только тогда уже езжай, на готовое место.

    И как сказал Пума, на украине сейчас творится беспредел и не безопастно, и не факт что через месяц другой не начнут Киев бомбить, поэтому хорошо подумай надо ли тебе это или нет.
    Ответ написан
    3 комментария
  • Как записать php файл с массивом?

    @djay
    Для этого есть встроенная функция var_export()

    Для решения твоей задачи, пропиши что-то аналогичное с этим:

    $filename = __DIR__.'/data.php';  // Путь куда записать содержимое файла
    
    $string = "<?php\n return ".var_export($data, true).';';
    file_put_contents($filename, $string);


    Где $data - это текущий либо текущий и модифицированный считанный массив.
    Ответ написан
    3 комментария
  • Статический или не статический метод?

    @djay
    Статика - это глобальное состояние. Статический метод или статическая переменная абсолютно ничем не отличаются от глобальной переменной, потому что, ни статика ни глобальная переменная не были переданны в качестве аргументов нигде и никак, а значит поступают из глобального пространства.

    Чем статика может быть опасна?
    Представь, что ты пишешь утилиту для загрузки изображений. И вот наступил момент, когда нужно указывать параметры обрезки для превьюшек. Со статикой это может выглядеть так:

    public function upload()
    {
         $width = Config::read('width');
         $height = Config::read('height');
         // .. Do upload..
    }

    (На заметку CakePHP кишит такими подходами)
    Проблемы такого подхода?

    1. Нужно знать и быть точно уверенным, что статичный класс Config, был где-то там далеко инициализирован. А вдруг он не был инициализированным?

    2. А что если ты решишь сменить источник конфига? Например читать, это все не из класса `Config` а откуда-нибудь из REST? Придется все переписывать, затем опять тестировать. Эта проблема известна как сильная связка.

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

    4. Скрытые зависимости.

    Например инициализуруя класс, в случае статики:

    $uploader = new Uploader();
    $uploader->upload(...);


    Ты и твои пользователи не видят какие у класса зависимости и от работы чего вообще он зависит. Проблема заметна особо, когда ты пишешь библиотеку или компонет.

    Но тогда почему такие популярные фреймворки как Yii или Laravel полностью покрыты статикой?

    Для того чтобы понять какие последствия несет статика, попробуй воспользоватся хоть одним компонентом Yii фреймворка отдельно. Например, если тебе нужна только CAPTCHA ты не сможешь её вытащить оттуда не переписав почти весь компонент, потому что везде внутри присутвует глобальное состояние, в виде `Yii::$app->`. То есть чтобы воспользоватся только капчей, придется подключать весь фреймворк и все его внутренние механизмы, когда это абсолютно не нужно.

    Что касается Laravel, то статики там меньше, поскольку некоторые компоненты, вроде Eloquent могут использоватся по отдельности. Статика в ларе, она существует как обёртка, но не как реализация, во многих местах в отличии от Yii.

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

    Вообще посмотри, как задачи решаются в Zend / Symfony
    Там почти везде все зависимости передаются в качестве аргументов, что есть хорошо, слабо связано, и тестируемо.
    Ответ написан
    5 комментариев
  • Корректно ли выполнять действия в конструкторе?

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

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

    И кстати, лучше будет писать так:

    $starter = new Starter();
    $starter->prepare();


    В то время как тело метода prepare() содержит те методы и ту последовательность:

    $this->iniConfig();
    $this->rewriteHeaders();
    Ответ написан
    1 комментарий
  • Не могу найти работу стажёром?

    @djay
    Таких стажеров как ты - тысячи. Посмотри сам - каждый день вопрос о том, как начать стажироватся, или как начать что-то делать. И да, почему они должны выбрать именно тебя среди стольких кандидатов?

    Подойти к этому вопросу с другой стороны. Заинтересуй их. Напиши резюме четко и без воды (т.е про ПО писать не надо), покажи им хотя бы тестовые проекты, верстку например.
    Ответ написан
    Комментировать
  • Фильтрация данных в Laravel?

    @djay
    Все что касается построения динамических SQL-запросов, должно строго находится в моделе. В контроллере, должны только передаватся переменные самого запроса в эту самую модель.

    Всю эту простыню, нужно просто вынести в модель.

    public function filter()
    {
         $validator = Validator::make(...);
        
         if ($validator->fails()) {
             // Ошибка
         } else {
             
             $data = Input::get();
             $result = Model::applyFilter($data);
    
             return View::make(..);
         }
    
    }
    Ответ написан
    Комментировать
  • ///////////////////////////////?

    @djay
    - Работодатели смотрят на портфолио. Будут спрашивать конкретно показать работы, а не диплом.
    - Никому не важно какое у тебя образование. Многие даже спрашивать этого не будут.

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

    И да, здесь только подходит Industrial Design.
    Ответ написан