• Не понимаю механику запроса?

    Сразу бросается в глаза то, что скобка не там стоит:
    strlen($get>0)
    Должно быть:
    strlen($get)>0
    Ответ написан
    2 комментария
  • Как научиться делать "сайт под ключ"?

    @nirvimel
    К тому что сказал Антон Измайлов хочется добавить, что в одиночку "под ключ" берутся делать в основном отчаянные раздолбаи. Заказчикам нужно остерегаться таких "на все руки мастеров" как огня и обходить за километр. Это вообще - хороший детектор индуса-дилетанта, когда фрилансер одиночка (конторы, со своими представителями на фрилансе - исключение) горит желанием сделать заказчику под_ключ.

    Конечно, из этого правила (как из любого) есть исключения. Но если вы считаете себя таким исключением, тогда вы должны хорошо понимать то, кем являются 90% ваших "коллег"/конкурентов и с кем бок о бок вам придется работать, а точнее драться за клиентов, число которых всегда меньше числа индусов.

    Мой совет: Не стремиться стать полезным для каждого. Фриланс - это не профессия, а просто форма заработка за свой труд. Работа на фрилансе не отменяет необходимости в специализации и обретении конкретной профессии. Выберете себе сектор рынка труда и станьте профессионалом своей области. Это в будущем обеспечит (почти) постоянную трудовую занятость и достойную оплату своего труда. Тогда вам не придется конкурировать с легионом индусов и драться с ними за каждого клиента.
    Ответ написан
    3 комментария
  • Применение Puli в современных PHP разработках?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    https://github.com/puli/demo-application - реальный пример.

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

    syschel
    @syschel
    freelance/python/django/backend
    Самое сложное во фрилансе, не языки и технологии.
    • Умение продавать себя в толпе конкурентов. Это самое сложное. Есть много высококлассных специалистов, сидящих на среднем окладе. Они тупо не могут себя продать даже в другую компанию, а не редко и боятся менять привычное место.
    • Умение грамотно составить или согласовать ТЗ. Так что бы проблема заказчика решалась в оговоренные сроки и бюджет. А не перерастала в вечнострой с кучей доделок и переделок с базовым бюджетом. Когда обе стороны уже ненавидят друг друга. Ибо работая в офисе разработчиком, всё это ведут менеджеры и тим лиды, а вам спускают конкретные задачи. Вам же придётся научиться понимать, что хочет клиент, не разбирающийся в программировании, говоря то или это. Научиться понимать и предлагать те решения, которые будут ему актуальны с учётом технологий и отказывать в том, что сделать не реально. Находить компромиссы, но опять же, объясняя почему так или иначе.


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

    А технологии, языки. Это уже второстепенно. Главное развиваться. Ибо в попсовом PHP можно делать большие проекты и быть специалистом с большой стоимостью часа или на редком python/java сидеть и быдлокодить мелочь за копейки. Главное не метаться, а развиваться и расти, беря более сложные и более длинные проекты. И брать их не с "поддержкой", а с возможностью постоянного развития. Задачи "в стол", не интересны. А вот задачи на перспективу, на развитие. Это уже интересно. Ибо "в стол" это как правило теория(придумали, сделали, забыли). А развивающиеся, это практика на реальных условиях, когда в процессе приходится много менять (менять бизнес модель, менять архитектуру из-за возросших нагрузок, менять технологии).
    Ответ написан
    5 комментариев
  • Почему yii сьедает так много памяти при больших запросах?

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

    Проблемы может быть две:
    1) При каждой итерации создаются новые объекты и не очищаются по завершению
    2) Объекты очищаются, но из-за большого размера и малого количества не обрабатываются сборщиком мусора

    Для решения первой проблемы достаточно делать unset для ненужных объектов

    Для решения второй - делать gc_collect_cycles. Поскольку эта операция трудоемкая, можно делать ее раз в 10/100/1000 циклов, подберите сами.
    На тему сборки мусора: php.net/manual/ru/features.gc.performance-consider...
    Если вкратце, сборщик мусора вызывается при достижении кол-ва неиспользуемых объектов 10000. Поэтому, если объекты большие и 10000 штук не влезает в память, будет переполнение.
    Ответ написан
    4 комментария
  • Почему yii сьедает так много памяти при больших запросах?

    Demetriy
    @Demetriy
    веб и мобильная разработка
    Batch, наверно это должно помочь, почитайте.
    Ответ написан
    1 комментарий
  • PHP и MySql. Куда идем?

    nazarpc
    @nazarpc
    Open Source enthusiast
    Удаляются функции mysql_* (точнее уже удалены в PHP 7).
    На замену есть функции mysqli_* с похожим синтаксисом, класс MySQLi и PDO.
    Никто никуда не уходит, просто меняются инструменты работы с БД (при этом mysqli_* очень похожи на устаревшие аналоги). MySQL как БД никуда не девается.
    Ответ написан
    Комментировать
  • Почему не перезаписывается папка assets в Yii2?

    @Bojczuk
    Известная проблема, неужели её во второй версии не исправили?
    Попробуйте:
    touch /path/to/your/website/protected/assets
    Подробности: habrahabr.ru/post/139166
    Ответ написан
    2 комментария
  • Какую CMS использовать для разработки сайта для отзывов?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    есть,е сли умеете допиливать, а не просто плагины подключать

    или modx посмотрите
    Ответ написан
    1 комментарий
  • Как создать callback в php?

    miraage
    @miraage
    Старый прогер
    function foo(callable $bar)
    {
        $bar();
    }
    
    foo(function () {
        echo 5;
    });
    Ответ написан
    Комментировать
  • Как сделать локализацию через js/json/php файлы?

    miraage
    @miraage
    Старый прогер
    Предположим, у нас где-то есть локализация.

    App.lang = 'ru'; // app = вымышленный объект

    Затем надо всем элементам проставить директивы

    <span class="client__title" data-translate="client_title"></span>


    Не знаю, какие JS инструменты Вы используете - сделаем пример на jQuery.

    $(function() {
      var file = '/locale/' + App.lang + '.json';
      
      // Тут предположим, что response = есть содержимое файла
      $.get(file).then(function (response) {
        // Идем по всем файлам и заменяем контент
        $('[data-translate]').each(function () {
          var $elem = $(this),
              locKey = $elem.data('translate');
            
          // Если ключ найден  
          if (response[locKey]) {
            $elem.html(response[locKey]);
          }
        });
      });
    });
    Ответ написан
    5 комментариев
  • Нормален ли такой подход для работы с git'ом(хранение дизайн+код)?

    Был у нас заказчик, хранивший psd в репозитории.
    Ладно я, верстаю с этого макета. Но зачем back-end разработчику каждый раз тянуть 100 метров макета сливая изменения (кнопочку дорисовали!), да и вообще хранить это у себя?

    В общем профита никакого, лишний дискомфорт.
    Гораздо удобнее облачные хранилища. Версионность макетов обеспечит тот же Дропбокс.
    Ответ написан
    1 комментарий
  • ООП в высоконагруженных проектах считается устаревшим?

    miraage
    @miraage
    Старый прогер
    Мужик дегенерат, однозначно.

    // EDIT

    Посмотрел прикрепленные исходники. Закапал святую воду в глаза.
    Выкиньте это всё, покажите ему, например, PHP: The Right Way.

    Я бы на Вашем месте уволился, незадумываясь.
    Ответ написан
    Комментировать
  • Как создать приложение на Yii?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    вы пытаетесь разобраться с yii2 по документации к yii1 судя по всему.
    Ответ написан
    Комментировать
  • Насколько код ООП и что бы вы посоветовали по его улучшению?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    <?php
    // PSR-1, PSR-2, PSR-4 Читаем и пользуем!
    // namespace все дела... "Model_admin" - это прошлое.
    // phpDocumentor - твой друг, прописывай всюду типы данных
    class Model_admin extends Model
    {
    // Лишний перевод строки
        private $name;
        private $password;
        private $code;
        private $mail;
    // Не информативное название. get model admin... что бы это значило...
        public function get($login, $password) {
    // Где проверка аргумантов? Влететь может что угодно
            $this->name = $login;
            $this->password = $password;
    // Модель НЕ должна управлять подключением к БД, это должно выполняться выше в коде
            $this->db_connect();
    // Код вообще проверялся?)) у вас закрывающей строки нет.
            $result = msql_query("SELECT 'login', 'password', 'mail' FROM 'admin_authorization'";
    // сие уже deprecated, забудьте про mysql_*** функции, используйте PDO
            $arr = mysql_fetch_array($result);
    // Зачем нужен цикл, это дро*ба БД!!! Вытягиваете одну запись по логину и проверяете соответствует ли пароль
            do {
    // Лишний перевод строки
                if ($login === $arr['login']) {
    // Лишний перевод строки
                    if (
                        md5( md5( trim( $password ))) === $arr['password']
                    ) {
                        $this->mail = $arr['mail'];
                        $this->random_code();
    // Перед return лучше делать перевод строки
                        return true;
                    }
    // Лишний перевод строки
                }
    // сие уже deprecated, забудьте про mysql_*** функции, используйте PDO
    // Присваивание в условиях управляющих кнострукций лучше не делать, это операции разного характера
            } while ($arr = mysql_fetch_array($res));
    
            return false;
    // Лишний перевод строки
        }
    
        private function random_code($length = 15) {
    // Где проверка аргумантов? Влететь может что угодно
            $symbols = '0123456789abcdefghijklmnopqrstuvwxyz_-~!+*%$#&';
    
            for ($i = 0; $i < (int)$length; $i++)
            {
                $num = rand (1, strlen ($symbols));
                $this->code .= substr ($symbols, $num, 1);
            }
    // сие уже deprecated, забудьте про mysql_*** функции, используйте PDO
            $bool_update = mysql_query('UPDATE "admin_authorization" SET code="'.$this->code.'" WHERE login="'.$this->name.'"');
    // Вот так писать плохо, всегда используйте фигурные скобки.
            if ($bool_update) $this->send_code();
    // Лишний перевод строки
        }
    
        private function send_code() {
    // Модель НЕ должна отправлять письма, под отправку обычно пишется отдельная подсистема/сервис
            mail ($this->mail, "Admin code", $this->code);
        }
    
        public function check_code($user_code) {
    // Где проверка аргумантов? Влететь может что угодно
    // SQL инъекция!!!!
    // сие уже deprecated, забудьте про mysql_*** функции, используйте PDO
            $this->code = mysql_query("SELECT 'code' FROM admin_authorization WHERE code='".$user_code."'");
    // Вот так писать плохо, всегда используйте фигурные скобки.
            if ($this->code != '') return true;
        }
    // Лишний перевод строки
    }
    Ответ написан
    13 комментариев
  • Насколько код ООП и что бы вы посоветовали по его улучшению?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    забейте на время на MVC, почитайте про SOLID.

    1) mysql_* функции депрекейтед, используйте pdo (mysqli слишком низкоуровневая штука)
    2) делать 2 раза md5 не имеет никакого смысла. Сейчас можно генерить миллиарды хэшей в секунду на видеокартах так что подбор коллизии к хэшу займет не сильно много времени и большая часть паролей будет подобрана за первые пару часов. Используйте password_hash и password_verify. Для PHP < 5.5 есть флэбэк написанный на PHP.
    3) вы нарушили принцип единой ответственности, это к вопросу о том насколько ваш код ООП. Ну и принцип инверсии зависимостей туда же....
    Ответ написан
    5 комментариев
  • Yii2. Как подключить общие и отдельные ресурсы для определенных контроллеров/модулей?

    1. Создайте свой набор ресурсов PostAsset, аналогично AppAsset.
    2. Подключайте его в нужном представлении контроллера или модуля:
    use app\assets\PostAsset;
    PostAsset::register($this);  // $this - представляет собой объект представления

    PS. Для модуля это может быть app\modules\Post\assets\PostAsset.
    Ответ написан
    Комментировать