Задать вопрос
  • Как оптимизировать Zend Server и MySQL сервер для разработки?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    2GB RAM при двух запущенных хромах (привет Электрону!)- это ооооочень мало (если что, вкладка со slack кушает 80mb у меня вместо 240+ в отдельном аппе), а вы ещё апач и бд туда пытаетесь запихнуть. Или вы 2 вместо 12 написали?
    Ответ написан
    6 комментариев
  • Как заставить текущий объект перезаписать самого себя?

    @nirvimel
    В режиме телепатии догадываюсь, что вы хотите реализовать. Видимо, речь идет о совершенно стандартном механизме порождения объекта соединения из объекта БД.
    Чтобы понять как строятся подобные велосипеды загляните в код любой ORM или вообще любой ООП-обертки над драйвером БД. Вы увидите в большинстве случаев следующую картину:
    1. Конфигурация БД представляет собой фабрику (да, да, те самые паттерны, которые неофитам НИНУЖНЫ).
    2. Метод connect возвращает объект соединение.
    3. Объект соединение (кроме методов по выполнению запросов) имеет метод close, который закрывает соединение (попытка выполнения запроса на закрытом соединении будет выдавать ошибку).
    4. Соединение (как объект) живет один раз и не может быть переоткрыто после закрытия. Но из фабрики БД всегда можно открыть новое соединение.

    Почему так:
    Главный принцип ООП: отдельному понятию - отдельный класс. БД (на стороне клиента) представляет собой только конфигурацию: адрес сервера, имя юзера, пароль, имя БД и прочие параметры. Соединение к БД - это отдельная сущность, через которую создаются транзакции и курсоры (отдельные сущности), через которые выполняются запросы. Результат выполнения запроса - отдельная сущность. Отдельная строка в выборке - отдельная сущность (если только не кортеж). И только отдельные поля в строке имеют примитивные типы данных.
    Ответ написан
    Комментировать
  • Какие инструменты, среды, паттерны, фреймворки вы применяете для разработки веб-приложений на PHP?

    DevMan
    @DevMan
    1. какой смысл заливать код куда-то, если результат его работы удобнее и быстрее смотреть локально?
    2. error_reporting(E_ALL) - это здорово, а print_r/var_dump - это быдло-стайл. ибо есть xdebug.
    3. удобная среда разработки - интегрированный отладчик, комплит, всевозможные подсказки.
    только на этих пунктах можно уже здОрово сократить время написания/отладки кода.

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

    как выбрать среду разработки? попробовать разные и выбрать.
    фреймворк? попробовать разные и выбрать.
    архитектуру? надо знать какие есть вообще и уметь их применять.
    залипаю в хабр? это нормально залипать если у тебя не хватает знаний. чем больше знаний и опыта тем меньше необходимость залипать.
    всё работает, но не идеально? ограничь свой пыл: идеал трудно достижим и зачастую не нужен.

    итого: учиться и практиковать. сорян, но программистом быть непросто, а волшебной пилюли у меня нет.
    Ответ написан
    3 комментария
  • Какой стиль программирования на php лучше?

    @McBernar
    Как я понимаю — вы не используете классы и объекты?
    В любом случае, существует чудесный принцип единой ответственности, когда функция (в вашем случае модуль) должна делать только одну вещь и делать ее хорошо. Сейчас у вас огромное количество логики будет зашито в один файл. Так не стоит делать. Разбивайте все на отдельные небольшие сущности, повторяющийся код выносите на уровень вверх, тогда хоть какой-то порядок сохранится. Но гораздо лучше, если вы познакомитесь с ООП и MVC. Таких вопросов у вас больше не будет.
    Ответ написан
    1 комментарий
  • Какой стиль программирования на php лучше?

    @pudovMaxim
    web-developer
    Стиль пьяного девелопера Вам идеально подойдет! :)

    Лучше иметь модульность. Лучше иметь правильный маршрутизатор. Лучше иметь какую-то структуру, например MVC. Лучше придерживаться каких-то принципов, например ООП. Лучше не писать спаггети-код.

    Еще лучше - заглянуть в простенький фреймворк или популярную качественную CMS и изучить как устроено там и подумать как это можно применить у себя.

    И вопрос очень туманный с множеством неизвестных. Скорей всего советы, которые будут даны, не дадут ответ на Ваш вопрос "как лучше".
    Ответ написан
    Комментировать
  • Как загрузить классы без composer?

    @MadridianFox
    Web-программист, многостаночник
    spl_autoload_register() принимает функцию, которая принимает имя класса, который вы попытались использовать.
    Соответственно, вам нужно написать функцию, которая по имени класса делает include соответствующего файла.
    Важно - в функцию передаётся имя класса с пространством имён. Обычно люди располагают классы в пространстве имён точно так же как лежат файлы, т.е. файл в папке значит класс в одноимённом пространстве имён.
    В итоге, в файле test.php должен быть примерно такой код:
    spl_autoload_register(function($classname){
        $filename = // тут вычисляем имя файла из $classname
        include($filename);
    });
    Ответ написан
    1 комментарий
  • Как загрузить классы без composer?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    Ответ написан
    Комментировать
  • Как ставить между двумя массивами неизвестный математический знак?

    @smple
    можно это сделать с помощью eval конечно, но такой способ я не рекомендую, вот так например
    <?php
    $a = 5;
    $b = 6;
    $c = '+';
    
    echo eval("return $a $c $b;");

    Более правильно сделать интерфейс OperationInterface и для каждого действия сделать свою реализацию (например OperationPlus, OperationMinux, OperationMultiply и тд)
    Ну соответсвенно сделать выбор нужную реализацию, это по сути будет паттерн стратегия https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D...

    Как еще один вариант можно просто сделать массив функций, которые будут принимать аргументом два параметра и делать операцию вот так:
    <?php
    $a = 5;
    $b = 6;
    
    $operation = [];
    $operation['+'] = function ($a, $b) {
        return $a + $b;
    };
    $operation['*'] = function ($a, $b) {
        return $a * $b;
    };
    // тд на все варианты
    
    $c = '+';
    echo $operation[$c]($a, $b) . PHP_EOL;
    
    $c = '*';
    echo $operation[$c]($a, $b) . PHP_EOL;
    Ответ написан
    4 комментария
  • Как ставить между двумя массивами неизвестный математический знак?

    @McBernar
    Хм ) Прикольный вопрос.
    На ум пришла только функция со свитчем, как и у Immortal_pony.
    Ответ написан
    Комментировать
  • Как ставить между двумя массивами неизвестный математический знак?

    Immortal_pony
    @Immortal_pony Куратор тега PHP
    function doAction($a, $b, $action) {
         switch ($action) {
              case "+": return $a + $b;
              case "-": return $a - $b;
              case "*": return $a * $b;
              case "/": return $a / $b;
              default: throw new \BadFunctionCallException("Unknown action");
        }
    }

    <?php echo doAction($a, $b, $c) ?>

    Ну или использовать eval
    Ответ написан
    6 комментариев
  • Как парсить AJAX сайты в нативном PHP без расширений?

    DevMan
    @DevMan
    ответ прост: никак, никому не нужно писать интерпретатор js на php.
    кому нужно, те пользуют либо сторонние средства, либо пыхо-расширение v8js.
    Ответ написан
    8 комментариев
  • Как парсить AJAX сайты в нативном PHP без расширений?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    Не надо из php пытаться сделать браузер, он не для этого предназначен.
    Однако для того чтобы индексировать сайты, рендерить их вообще не надо(зачем?).
    Ваша задача получить контент(текст).
    Для большинства сайтов достаточно этого.

    А если нужно прям всё-всё поддерживать нужен "нормальный" браузер.

    Вот свежая наработка от ларавела для тестирования
    https://github.com/laravel/dusk

    В комплект входят бинарники headless браузера, можно взять такое решение за основу, на большинстве систем должно заводиться из "коробки".
    Ответ написан
    7 комментариев
  • Как учиться новому после рабочего дня?

    Godless
    @Godless
    Не удежусь и тоже вставлю свое словцо. Рискую местами побыть кЭпом, но вы же просили мнение... а в двух словах вон и ADollar сказал неплохо.

    Как вы видите, вариантов обучиться тонна. Но отвлечемся пока от этого.
    Первое что хочу заметить в рассуждениях - неуверенность. Не знать чего-то - это нормально.
    Не стыдно не знать, стыдно не учиться.
    Вам сколько лет? Опыт на то и опыт, что приходит не сразу, а со временем.
    Еще важно то, что любые неудачи - тоже опыт. Не нужно их записывать в фейлы. Нужно выяснить почему все пошло не так и исправить в следующий раз. Эти фейлы всегда сопровождают эмоции различной степени интенсивности - выпустите их, это нормально. И проанализируйте потом.

    Мы потихоньку пришли к тому, что важным ресурсом в нашей жизни является время. Я так подозреваю, что у вас семьи и детей пока нет, а значит вы сами вольны распоряжаться каждой своей минутой. ДЕЛАЙТЕ ВСЕ ЧТО МОЖЕТЕ. ВООБЩЕ ВСЕ.

    Спорт или любое увлечение с физическими нагрузками. Походы, рыбалки, DozoR, Encounter - это необходимая часть для поддержания тела. Я не врач, но жизнь без физнагрузок - это плохо.
    Не проводите 18 часов в сутках за компом или экраном монитора. Причина - у вас работа связанная с ПК. Неразрывно. Если вы будете много проводить за мониторами, то как бы вам это не нравилось - это надоест через полгода, год, два. В зависимости от вашего терпения.

    Читайте статьи, книги, общайтесь с коллегами. Дело в том, что без структурированной теории в голове сложно грамотно строить рассуждения, речь и, самое главное, практику.

    ДЕЛАЙТЕ. Найдите хобби. Умный дом. Просто какая-то электроника. Программирование под линукс. Написание драйверов. И под линукс тоже.
    Или поставьте цель - хочу сайт, хочу приложуху для автомобиля, чтоб по китайскому OBD адаптеру в бортовом ПК сбрасывать ошибки. Выше тоже варианты предлагали. Вообще не важно с чего вы начнете. Пусть это будет мелочь, но ЗАКОНЧИТЕ ее. Не стесняйтесь повторять. Т.е. взяли какую-то прогу, и пишем ее клон. Старайтесь выбирать вещи, которые вам интересны. К примеру, любите бегать - попробуйте сделать небольшой блютуз пульсометр. Любите рыбалку - сделайте прогу, усредняющую прогноз по координатам из разных источников. выбирайте интересные и полезные идеи.

    Учитесь экономить свое время. Если на работе выдалась минутка пока согласовывают изменения в бумажках или идет длинный ребилд - займитесь своими делами. Это не значит, что нельзя развлекаться, напротив. Но вместо просмотра дома2 можно и книжку почитать...

    При неудачах, пробуйте снова. Настойчивость поможет вам получать удовольствие от успехов, пусть и маленьких.

    Нет готового решения как стать суперменом. Не знаю к сожалению или к счастью, но его нет.
    Без вашего энтузиазма, усердия и системности ничего не получится. Еще нужно обладать определенной долей пофигизма по отношению к мнению окружающих. Большинство лишь пальцем в носу мастерски орудуют - пропускайте таких мимо ушей, делайте свое.

    Вы думаете, что вы ничего не знаете? Чем больше вы знаете, тем больше вы ничего не знаете. К сожалению, сейчас информации столько, что нельзя стать суперменом за год. Просто через год будет еще 10 новых технологий. Приходится выбирать интересующую предметную область и интересные технологии.

    Рано или поздно лирика закончится и захочется кушать. Или джинсы порвутся. Или телефон захочется другой.
    Выбирайте направления развития, помогающие зарабатывать. Идеальный вариант, когда хобби кормит семью. Но это 1 из миллиона, наверное. Чаще есть работа, приносящая бабло и отдушина в маленьком проекте, приносящая радость и гордость.

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

    ЗЫ: А вот когда появится семья и дети, квартира и ремонт, вот тогда вы поймете, что времени действительно нет =)

    ЗЫЫ: А и да, Welcome to real life ;-)
    Ответ написан
    Комментировать
  • Как побеждать в онлайн олимпиадах на платформе Codeforces?

    riot26
    @riot26
    <:З )~~
    e-maxx.ru немного теории. Для скорости важна практика. На сайте в книгах ищи "Олимпиадные задачи" и решай.
    Ответ написан
    Комментировать
  • Как сделать подобное?

    @f_ban
    Конкретно в данном примере canvas использован. А если взять в общем, разобрашись с стандартами/спецификациями HTML5 (CSS, DOM, JS) + SVG, то можно и более изящное решение сделать, у которого внешний вид и поведение каждого визуализируемого объекта настраивается в таблице стилей и обработке событий и легко меняется в коде JS. Таким образом, не придется по каждому чиху переписывать код отрисовки (да и вообще с ним заморачиваться).
    Если же визуализируемых объектов будет многовато, то наверное все таки лучше канвас.
    Ответ написан
    Комментировать
  • Как google индексирует сайты с похожим контентом?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Ранжирование простое: чем домен старее И имеет больше контента (страниц), чем домен-паразит, тем алгоритму ранжирования проще разобраться: какой из доменов является первоисточником и соответственно, верно разместить в поисковой выдаче.
    Также, очень учитывается тематика сайта: чем она уже, тем такой домен является более профильным.

    Важно соблюдать 3 вещи, чтобы Ваш сайт считался первоисточником:
    1. Срок домена с контентом по узкой специализации (т.е. чтобы не менялось направление),
    2. Узкая специализация информации на домене,
    3. Много постоянно обновляемого уникального контента по этой узкой специализации.

    Сколько длится индексация сайта в google ?
    в среднем: 15-20 суток

    Как влияет домены .space и .pw на SEO?
    никак абсолютно.
    Ответ написан
    2 комментария
  • Как google индексирует сайты с похожим контентом?

    snipeer777
    @snipeer777
    Middle E-Commerce
    1. Сайт который выше ранжируется а также/или на котором раньше появилась статья будет показан выше, сайт копирующий информацию - понижен.
    2. Неделя-месяц
    3. Согласно контенту
    Ответ написан
    2 комментария
  • Как google индексирует сайты с похожим контентом?

    blogopoisk
    @blogopoisk
    Google Top Contributor
    Добрый день. Вы похоже путаете индексирование и ранжирование.
    Есть случаи, когда Google выше ранжирует сайты-плагиаторы, но это не системное правило.
    Обычно выше ранжируется первоисточник.
    Что касается самого алгоритма ранжирования, то тут следует ичитывать целый набор сигналов (или как принято говорить - факторов). По этому однозначно сказать что будет выше Х или Z нельзя.
    Сколько длится индексация сайта в google ?

    Это тоже зависит от разных условий, но можно и мгновенно. Подробнее можно прочитать тут.
    Для Google не важно в какой доменной зоне находится ваш сайт, главное чтобы он был качественным.
    Ответ написан
    3 комментария