• Как перейти на JAVA после PHP?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Последние год полтора пишу продакшен в основном на Laravel.

    Попробуйте Symfony, так же рекомендую почитать

    Собственно в последнее время мне стало скучно и решил я поискать себе приключений на свою точку.

    Смените проект на более крупный))

    Глянул курс по JAVA SE (синтаксис, пару либ), куда двигаться дальше?

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

    Что посоветуете попилить в качестве тестового проекта, чтобы посмотреть, что вообще можно реализовать?

    Для начала попробуйте портировать проекты, или их модули из тех, в которых вы участвовали.
    Ответ написан
    1 комментарий
  • Как вы считаете так делать тупо?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Для 2006-го года вполне норм.
    С тех пор на php нашли следующие напасти:
    * PSR-2 - это набор соглашений по форматированию кода.
    * PSR-4 - это правила по реализации автолодинга.
    * Composer - это библиотека для управления зависимостями и генерации автолодинга.
    * Появилось много шаблонизаторов типа twig.
    * Устоялось понятие router и это понятие реализовано практически в каждом современном фреймворке.

    Как вы считаете, такой подход приемлимый, или быдлокодинг в квадрате?

    Это не говнокод, который нет смысла поддерживать.

    Почитайте на досуге, думаю вам будет полезно.
    Ответ написан
    Комментировать
  • Есть ли аналог php-fig в javascript?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    jslint
    Ответ написан
    Комментировать
  • Как поступить с заказчиком который не платит?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Потребуйте оплату за проделанную работу, после этого отправьте им код.
    Ответ написан
    2 комментария
  • Почему goto зло?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Потому, что сложно читать и дебажить так как ваш код выполняется в хрен знает какой последовательности. Ваш метод на 6 строк, как пример - так себе. Если метод на 300-400, и этих goto штук 15? Не запуская код с таймером, выпишите на бумажку что будет выведено на экран в таком примере (там всего 50 строк).
    Код с goto пишется один раз, а дальше выбрасывается.

    З.Ы. Конкретно ваш пример стоит делать в цикле и рекурсия вам тут тоже не нужна.

    func () (id string) {
    	for id = generateString(32); unique(id); id = generateString(32) {
    	}
    
    	return id
    }
    Ответ написан
    3 комментария
  • Как динамически в зависимости от условий, передавать то или иное количество параметров в функцию?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Почитайте про рефлексию. Будьте осторожны, велика вероятность отстрелить себе яйцы подобной магией.
    Ответ написан
    Комментировать
  • Как открывать приложение если нет выделенного домена?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    vagrant
    Ответ написан
    Комментировать
  • Что не так c моим мега php "демоном"?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    TL;DR
    * Стартуйте воркеры через supervisor
    * Для очередей используйте сервер очередей, например rabbitmq
    * Используйте PSR-3 совместимый логгер

    1. Запускалка воркеров по крону... посмотрите supervisor, не создавайте костыльных велосипедов.
    2. Лок таблицы - жирно, очень жирно)) Лок записи - еще куда ни шло. Вы даже малую нагрузку так выдержать не сможете.
    3. Воркер - такая штука, что спокойнейшим образом может отвалиться, по этому лучше ее рестратовать сразу, см. supervisor
    4. В случае проблемных тасок рискуете потерять не отработавшие.
    5. Вы не проверяете аргументы методов - вот это печально, что будет, если вызвать
    $task->start("'; DROP TABLE " . PREFIX . '_tasks');

    6. Для логгирования очень рекомендую использовать что-то на базе PSR-3, Monolog например, не плодите костылей.
    7. В воркере вы локаете таску, в таскере разлокиваете, зачем таскеру это делать? Если уж так, то лок И анлок - задача воркера.
    8. Вы когда выгребаете новые таски, смотрите на lock=0, при завершении ставите lock=0, похоже на хрень. Получается одна и та же таска постоянно будет выполняться.
    Ответ написан
  • На каком основании писать заявление при краже репозитария?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Я понимаю, что веб часть (мою часть) где-то развернули и активно исследуют (читай п****т).

    Доступ к репозиторию был исключительно у вас? В смысле он был приватный и остальные участники о нем не знали?

    как построить доказательную базу имея (пока что) в арсенале только репозитарий с историей разработки и знание о том, что проект был где-то развернут?

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

    Вы можете посмотреть в сторону неправомерного доступа, однако, если доступ вы предоставляли И NDA не подписывали - это Филькина грамота и доказать ничего не можете.
    Ответ написан
    Комментировать
  • Что не так в данном коде PHP и почему?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Проще сказать, что у вас так...
    <?php
    // Не стоит использовать глобальные И суперглобальные переменные.
    // Лучше в принципе забудьте про их существование.
    // В начале обработки сформируйте Request и уже далее с ним работайте.
    // Вы данные на входе даже не проверяете, это ужасно
     $uname = $_REQUEST['user_name'];
     $upass = $_REQUEST['user_pass'];
    
    // Это уже прошлое, mysql_*** НЕ поддерживается.
     mysql_connect("localhost", "root", "12345678");
     mysql_select_db("orders");
    
    // см. выше на счет суперглобальных переменных.
     $user_ip = $_SERVER['REMOTE_ADDR'];
    // Почитайте про PSR и забудьте про существование однострочных управляющих конструкций
     if ($_SERVER['HTTP_X_FORWARDED_FOR']) $user_ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    
     if ($user_ip=="127.0.0.1")
        {
    // Авторизация по ip, вы серьезно?))
          echo "Добрый день Администратор<br>";
        }
        else
        {
    // Что будет, если отправить $upass="';DROP TABLE users; SELECT '1" ?
    // Это называется sql инъекция
    // Параметры подставляются по другому
           $sqlQuery = "SELECT * FROM users WHERE uname='$uname' and upass='$upass' and `real`=1";
           $result = mysql_quеry($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
    // Не используйте присваивания в условиях
           if ($user = mysql_fеtch_array($result));
              {
                echo "Здравствуйте ".$user['fio']."<br>";
              }
              else
              {
                echo "Я вас не знаю"; exit;
              }
        }
    // см. выше на счет суперглобальных переменных
     if ($_REQUEST['search'])
        { // Выводим результаты поиска
          echo "Результат поиска: <br>";
          $search_name=$_REQUEST['search'];
    // Что будет, если отправить $search_name="';SELECT CONCAT(uname, ' ', upass) AS info FROM users" ?
    // тоже sql-инъекция
    // и входящие данные вы не проверяете
          $sqlQuery = "SELECT * FROM forms WHERE satus='$search_name'";
          $result = mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
          while ($one_form = mysql_fetch_аrray($result))
            {
               echо $one_form['info']."<br>";
            }
    
          }
     echo "<form>Введите поиск: <input type=text name='search'><input type=submit></form>".;
    ?>

    Обязательно посмотрите
    Ответ написан
  • Как собрать логику и работу websockets?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Можете посмотреть в направлении систем типа centrifugo
    Ответ написан
    Комментировать
  • Может ли разработчик украсть доступ?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Может ли разработчик украсть доступ?

    Как в принципе возможно украсть то, что вы и так предоставляете?))

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

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

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

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Гуглим на тему: zen-coding, live tamplates
    Ответ написан
  • Организовать phpDoc для __get property где property это экземпляр класса, как?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Вам магический геттер не нужен, о слова "совсем". Под приватные свойства сделайте геттеры, это вам здорово облегчит жизнь. Да и костыли с док блоками городить не придется.
    Рекомендую почитать про SOLID, ваш Base - это божественный объект.
    Так же очень настоятельно рекомендую почитать про PSR-4, сейчас никто не пишет свои автолодеры.

    На счет dock block property, он объявляется:

    /**
     * @property TYPE_HERE VAR_NAME_HERE [DESCRIPTION]
     */


    П.С. Код не мой, переписать не хочется, так как есть много проектов на этом движке.

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

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Вы зря указываете проценты, это не корректно. 20, 40, 60 - это просто множители вероятности попадания. Так что даже если будет 20, 40, 60, 100 - это проблемой не будет. Считаете rand(0, 20+40+60+100), далее определяете в какие пределы попало число.
    Ответ написан
    1 комментарий
  • Как и где хранить код?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Любая VCS, самая популярная сейчас - git. Есть SAAS под это дело: gihub.com / bitbucket.com. Можно у себя поднять gitlab (не путайте с github), или bitbucket.

    А как себя защитить ? Вдруг они с меня то денег потом возьмут и код и все наработки оставят у себя

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

    git push --force
    Стоит запретить. В ветку master ваш программист вливает изменения только после кодревью.
    Ответ написан
    Комментировать
  • Класс управления зависимостями, как вам реализация?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    // Должен быть приватным
    DependencyManager::$dependencies;
    
    // Что это за хардкод?))
    DependencyManager::__construct
    
    // 1. Вы не проверяете аргументы, что будет, если я передам в $class
    // например new \Exception()? А еще лучше строку "trololo"?
    // 2. Нейминг - гуано, вы не проверяете зависимость, а возвращаете.
    // 3. Если зависимость не найдена - будьте добры исключение.
    DependencyManager::checkDependencies($class)
    
    // Эта переменная не нужна, передавайте ее в метод
    Loader::$className
    
    // Эта переменная должна быть приватная, что будет, если туда вставить
    // например строку и попытаться обработать?
    Loader::$dependencyManager;
    
    // Херня. У вас метод делает какую-то магию.
    Loader::loadClass


    Из SOLID вы нарушили:
    * SRP - Loader выполняет И управление зависимостями и подгрузку. То что вы называете DependencyManager - это конфигурация, но ни как не менеджер зависимостей
    * OCP - у вас явно открыты свойства, которые отвечают за внутреннюю логику выполнения. А то вот конфиги из вашей конфигурации зависимостей стоит возвращать через геттер
    * ISP - вы в принципе не заморачиваетесь с интерфейсами, а полностью зависите от реализации.

    Странно то, что загрузку не делаете рекурсивной, что если у вас у зависимого класса тоже есть зависимость?
    Плохо то, что инициализируете сразу все классы, что если их будет много?

    Еще пришла идея в классы с зависимостями передавать в аргументах интерфейсы, а не объекты.

    Отличная идея)) как только в PHP появится инициализация интерфейсов - вернетесь к ней, а пока что забудьте.

    Когда наиграетесь - выбрасывайте и переходите на качественные решения, по совету shaqster
    Ответ написан
    Комментировать
  • Как фронтенд разработчик взаимодействует с командой?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    как работают фронтенд разработчики в команде

    Либо хорошо, либо с ним проводят воспитательную работу и становится хорошо, либо его уходют

    как они взаимодействуют с бэкенд разработчиками

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

    что входит в обязанности фронтендера

    Все то, что увидите пользователь в браузере, за исключением динамических данных с сервера.

    как связан бэкенд с фронтендом(и кто за это отвечает).

    HTTP, за данные отвечает бэк, за визуализацию и взаимодействие с пользователем - фронт
    Ответ написан
    Комментировать
  • Считается ли плохим тоном, наследование PDO в класс вспомогательной обертки?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Вообще говоря \PDO - это чужой вендроский код, вам на прямую неподвластный (разве что сырцы пыхи пилить будете), так что лучше все таки обертку, так как она будет гарантировать вам постоянство интерфейса работы с БД.
    С другой стороны, если выделаете что-то не большое - выбирайте по удобству, если удобнее и быстрее наследование - пусть будет так, если обертка - тогда обертка. Руководствуйтесь здравым смыслом.
    Посмотрите Doctrine на досуге
    Ответ написан
    Комментировать