• Авто создание поддомена с сайтом?

    copist
    @copist
    Empower people to give
    Когда я впервые познакомился с сервером, который создаёт поддомены третьего уровня, а также умеет "парковать" домены второго уровня, я прежде всего представил себе, что там автоматически создаются директории для пользовательских скриптов, конфиг для апача и какой-то рутовый демон делает sudo service apache reload

    Но на деле оказалось не так.
    1. В DNS стоит правило (см https://toster.ru/q/7456) - все поддомены ***.myservice.ru отправляются на один IP
    * IN A 192.168.1.1
    Замени 192.168.1.1 на IP твоего сервера

    2. В апаче/nginx не стоит привязка виртуального хоста к имени домена (myservice.ru или иной), все запросы отправляются на обработку на один скрипт (PHP?)

    nginx
    {
        listen 80;
        # server_name не указывать
    }


    3. В коде приложения (PHP) вычисляется домен в запросе HTTP и исходя из этого строится ответ
    У пользователя в таблице user прописано имя домена, то есть пользователь Вася - это домен vasya.myservice.ru

    $domainName = $_SERVER['HTTP_HOST']; // vasya.myservice.ru
    $userDomain = $db->findUserByDomain($domainName);
    echo 'Владелец этой страницы: ', $userDomain->fullName; // Владелец этой страницы: Вася
    // ...


    Это если речь про веб-интерфейс. А если у тебя реально разные приложения (бинарники?) ставятся из архива, то тебе нужно запускать разные команды из PHP, например

    1. Создать директорию, сгенерировать конфиги htaccess или host для Apache
    2. Распаковать архив /или слинковать какую-то общую часть через symlink
    3. Заставить Apache сделать reload конфигов

    Для этих команд тебе пригодится php.net/manual/en/function.system.php php.net/manual/en/function.exec.php или php.net/manual/en/function.shell-exec.php

    Последний пункт самый небезопасный, потому нужно пользователю апач дать права на выполнение команды от рута. Лучше делать это по крону или от имени специального сервиса-демона, а не из PHP.
    Ответ написан
    7 комментариев
  • Что умеет настоящий senior/lead developer кроме знания какого-то языка и его фреймворков?

    Что умеет настоящий senior/lead developer кроме знания какого-то языка и его фреймворков?
    Что бы вы ни изучали, вы выйдете из вуза джуниором. Сеньорами становятся не выучив синтаксис 10 языков программирования, а сделав 10 крупных проектов. Как и на чём они сделаны не так важно, главное - это те уроки, которые разработчик с них вынес.

    Чему стоит научиться за первые курсы для того чтобы повысить свою "цену" как разработчика в будущем?
    Исходя из написанного выше: изучите "какой-то язык и его фреймворки" на высоком уровне, чтобы сразу при устройстве на работу начать приносить пользу и получать опыт реализации проектов, а не борьбы с компилятором java. Изучите свою IDE, используйте её эффективно. Ну и посматривайте в смежные области, чтобы расширять кругозор: графический дизайн, UX, другие парадигмы программирования.
    Ответ написан
    Комментировать
  • Как сделать такую двигающуюся линию с помощью Canvas?

    iiiBird
    @iiiBird Куратор тега CSS
    Пока ты спишь - твой конкурент совершенствуется
    там ж код открыт. посмотреть лень?
    __modules['oscillation'] = function(module){
      //getViewport().width РР· Р·Р° небольших отступов РїРѕ бокам
      var SW = new SiriWave({
          container: module.get(0),
          width: getViewport().width+10,
          height: 140,
          color: 'ed1c24',
          frequency: 2,
          speed: 0.07,
          amplitude: .01,
          autostart: true
      });
    
      // dirty resize
      $(window).resize(_.throttle(function(){
        SW.width = (getViewport().width+10)*SW.ratio;
        SW.canvas.width = (getViewport().width+10)*SW.ratio;
        SW.canvas.style.width = (getViewport().width+10)*SW.ratio + 'px';
        SW.width_2 = SW.width / 2;
        SW.width_4 = SW.width / 4;
        SW._clear();
      },80));
    
      function impulse(impulse, factor) {
        factor  = factor || 1;
        impulse = impulse || 3;
        TweenMax.to(SW, .15, { amplitude: .1*impulse*1.2, frequency:2+(impulse/2), ease:Power2.easeOut, onComplete:function(){
            TweenMax.to(SW, (.15+(impulse/80))/factor, { amplitude:.0001, frequency:2, ease:Power2.easeIn });
          }
        })
      }
    
      function set(impulse) {
        impulse = impulse || 3;
        TweenMax.to(SW, .3, { amplitude: .1*impulse, frequency:2+(impulse/3), ease:Power2.easeOut })
    
      }
    
      function impulseFrequency(impulse) {
        impulse = impulse || 3;
        TweenMax.to(SW, .3, { frequency:2+(impulse/3), ease:Power2.easeOut, onComplete:function(){
            TweenMax.to(SW, .2+(impulse/50), { frequency:2, ease:Power2.easeIn });
          }
        })
      }
    
      function setFrequency(impulse) {
        impulse = impulse || 3;
        TweenMax.to(SW, .3, { frequency:2+(impulse/3), ease:Power2.easeOut });
      }
    
      function setAmplitude(impulse) {
        TweenMax.to(SW, .3, { amplitude:impulse, ease:Power2.easeOut });
      }
    
      function impulseSpeed(impulse) {
        impulse = impulse || 3;
        TweenMax.to(SW, .3, { speed:0.1+(impulse/30), ease:Power2.easeOut, onComplete:function(){
            TweenMax.to(SW, .2+(impulse/50), { speed:0.1, ease:Power2.easeIn });
          }
        })
      }
    
      function setSpeed(impulse) {
        impulse = impulse || 3;
        TweenMax.to(SW, .3, { frequency:0.1+(impulse/30), ease:Power2.easeOut });
      }
    
      function stop(impulse, factor){
        factor  = factor || 1;
        impulse = impulse || 3;
        TweenMax.to(SW, 0, { amplitude: .1*impulse*1.2, frequency:2+(impulse/2), ease:Power2.easeOut, onComplete:function(){
            TweenMax.to(SW, 0, { amplitude:.0001, frequency:2, ease:Power2.easeIn });
          }
        })
      }
    
      window.line = {
        setAmplitude : setSpeed,
        set : set,
        impulse : impulse,
        setFrequency : setFrequency,
        impulseFrequency : impulseFrequency,
        setSpeed : setSpeed,
        impulseSpeed : impulseSpeed,
        stop : stop
      }
    
      $('body').on('mouseenter','.button',function(){ set(2
    Ответ написан
    2 комментария
  • Модульный фреймворк на PHP, как защитить?

    Denormalization
    @Denormalization
    Данный пост напомнил мне местного кулибина, который тоже делал свой супер фреймворк со всякими безумными идеями а-ля "запретить модулям использовать PDO" и "Я использую eval, я дурачек".

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

    Лучше придумайте нормальный интерфейс для общения с ядром, чтобы это было удобно, вместо того чтобы заниматься ерундой.
    Ответ написан
    2 комментария
  • На каком движке можно максимально быстро создать интернет магазин?

    Antonoff
    @Antonoff
    Разработчик
    WordPress + WooCommerce в 2 клика установка, огрмоное количество готовых шаблонов, да и ручками за пару дней можно самому переписать всё что только нужно. По сути там 4-5 страничных темплейтов и готово. Руководств в интернете оверлевел.

    Если нужно ещё быстрее, смотри в сторону Shopify
    Ответ написан
    Комментировать
  • На каком движке можно максимально быстро создать интернет магазин?

    gordon_shamway
    @gordon_shamway
    Wordpress
    Ответ написан
    Комментировать
  • В чем смысл Vanilla.js?

    miraage
    @miraage
    Старый прогер
    Vanilla.js - это шутка. Подразумевается Ecmascript.
    Работодатели намекают, что Вы должны владеть всеми основными возможностями, которые предоставляет язык.
    Ответ написан
    2 комментария
  • Чем нарисовать план дома?

    @AlexandrKom
    MS Visio думаю хорошо подходит для задач подобного рода, сам рисовал планы установки электро-оборудования в здании.
    Есть неплохая библиотека элементов: само собой - стены разной толщины, двери, окна, лестницы, и в соответствии с гостами библиотеки электро-разводки, трансформаторы и тд. Сантехника (гв, хв, канализ) так же присутствуют - td-visio.ru/biblioteki-visio/inzhenernye-sistemy/s...
    Ответ написан
    1 комментарий
  • Почему не работает содержимое, загруженное методом load()?

    Bellicus
    @Bellicus
    И швец, и жнец, и на дуде игрец.
    Вешайте события через $('body').on(event, elem, callback);
    Ответ написан
    2 комментария
  • Чем нарисовать план дома?

    Если брать простые проекты, то я их в MS Visio рисую.
    Ответ написан
    Комментировать
  • Render на стороне сервера или клиента. для AJAX ответа?

    @Firik67
    Middle PHP Developer
    Во 2 способе плохо то, что если вам эти данные нужно будет отправить ещё куда нибудь, то придётся переделывать весь рендер. Первый способ универсален. Получили данные и делайте уже что хотите с ними.
    Ответ написан
    4 комментария
  • И все-таки PHP 7 быстрее Python 3?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Бенчмарки - это бесполезные писькомерки.

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

    Что в вашей жизни изменится после того, как в ответах к вопросу один человек напишет, что php быстрее, другой, что быстрее python и ещё десять разведут срач не по теме?

    Но вот есть ли смысл в удобстве, если это удобство не дает нужных результатов?
    Нам надо вас уговорить вернуться на php? Вы благословения испрашиваете? Вы уже столкнулись с реальными проблемами производительности?
    Ответ написан
    6 комментариев
  • Должен ли Фронт енд рисовать дизайн?

    begemot_sun
    @begemot_sun
    Программист в душе.
    нет.
    Ответ написан
    Комментировать
  • Как сделать сборку комплектации кухни на сайте?

    @daihatsu
    А бабла у него хватит?

    Если он не предлагает тебе воспользоваться каким-либо уже готовым 3D конструктором (с встроенным API!!!!), куда уже вбиты все параметры кухни, то это очень специфическая задача.

    Не стесняйся - повышай цену. На эту задачу он вряд ли найдет дешевого исполнителя. Да и вряд ли вообще найдет исполнителя.

    Навскидку - от нескольких штук баксов (не меньше 3, а скорее - еще раза в 2-3 больше).

    P.S.:
    Возможно, под словом "клиент может выбрать как хочет" подразумевается 5 встроенный фиксированных моделей кухонь с возможность их окраски?

    Тогда задача существенно упрощается. Первая для тебя задача - чтобы клиент тебе выдал эти 3D модели в удобном для тебя формате.

    Для этого у него есть специальный дизайнер, работающий с 3D-пакетами.
    Ответ написан
    Комментировать
  • Вид шаблона Wordpress?

    @iFlashka
    Заполнить контентом
    Ответ написан
    Комментировать
  • Правильно ли я составил класс взаимодействия с сервером?

    SkryabinD
    @SkryabinD
    Программирование, управление проектами.
    У вас все запросы в GET, хотя тот же /process/create по хорошему должен быть в POST. Метод sendAjax сильно ограничен - туда не передать параметры запроса. Я бы не стал выделять отдельно обращение к серверу в sendAjax, а использовал бы в каждом методе $http.get или $http.post - это более гибко получится, а кода столько же, если не меньше.
    Ответ написан
    2 комментария
  • Как сверстать такую секцию?

    lunpully
    @lunpully
    Тут вроде все блоки одинаковой ширины.
    • Тогда можно для больших разрешений задать ширину через проценты.
    • Линии сделать исходя из ширины секции, повернуть трансформом и абсолютно позиционировать. Кругляши с числами естественно тогда должны быть уровнем выше (z-index)
    • Для меньших разрешений дизайн несколько поменять, отказавшись от линий, так как такое оформление в две строки смотреться не будет (имхо), а в одну не войдет
    Ответ написан
    2 комментария
  • Как подходить к решению нетривиальных задач?

    Привет.

    Всегда использую модель боли:

    1) Смотришь задачу
    2) Пытаешься её решить
    3) Понимаешь, что ты тупой идиот, который ничего не может.
    4) Поднимаешь в помощь гугл
    5) Поднимаешь в помощь литературу
    6) Спрашиваешь ребят на тему: "почему так, а не иначе".
    7) Выполняешь задание, осознавая, что ты тупой, раз на решение этой задачи тебе пришлось потратить столько времени.

    Повторить до бесконечности, и ты станешь профи.
    Ответ написан
    7 комментариев
  • UpWork для Крыма, как работать?

    b0nn1e
    @b0nn1e
    Alcohol & Ruby on Rails
    Частично проблема решается использованием VPN. Но опасно, где-то что то отвалилось, забыли подключить - бан с заморозкой всех средств на счету.
    Переезд полностью решает проблему.
    Ответ написан
    3 комментария
  • UpWork для Крыма, как работать?

    sim3x
    @sim3x
    Переезжать

    Ведь после получения денег от заказчика их еще будет проблемно снять или потратить
    Ответ написан
    Комментировать