Задать вопрос
  • Выделение памяти в PHP ООП?

    @D3lphi
    1) При создании экземпляра new Class() в память забираются все его методы - чем больше методов тем больше памяти надо, или там память на метод в момент его вызова метода выделяется?


    При подключении ЛЮБОГО php файла производится лексический анализ, лексер генерирует из исходного кода программы набор токенов, из которых строится синтаксические дерево. Отсюда следует то что, чем больше кода, тем больше памяти выделяется.

    Само по себе создание каждого последующего объекта также несет затраты.

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


    Вы экономите на спичках. Хорошая архитектура важнее сэкономленной микросекунды и килобайта памяти.
    Ответ написан
    Комментировать
  • Есть ли минусы у 1C-Битрикс?

    jumpordie
    @jumpordie
    Веб-разработчик, Череповец
    https://habrahabr.ru/post/282333/
    Для мазохистов - самое оно ;)
    Ответ написан
    1 комментарий
  • Есть ли минусы у 1C-Битрикс?

    @kmg4e
    Много легаси. Не идеальная архитектура. Монстроидальность.
    Ответ написан
    1 комментарий
  • Зачем писать в ООП стиле в JS?

    Ptolemy_master
    @Ptolemy_master
    Мои пять копеек.
    В принципе незачем. Для маленьких проектов самое то.
    Но есть одно но. Когда ваш проект будет расти, управляться со всей этой коллекцией функций будет ох как сложно.
    Представьте, что помимо простого вызова пользователей и лайков, вам надо будет считать их, производить множество других манипуляций.
    Что вам больше понравится?

    1. Длиннющий список функций
    getUsers
    getLikes
    calculateUserRating
    moveUser
    copyUser
    saveUser
    saveLike
    getLike
    userLikes (это список лайков или пользователь ставит лайк?)
    ... и еще стопицот или
    2. Небольшой список объектов
    User
    Like
    Rating

    и простые, понятные вызовы типа

    User.getList
    User.calculateRating
    User.copy
    User.getLikes
    User.doLike

    Заметна разница?
    Ответ написан
    6 комментариев
  • Альтернатива OpenServer?

    Sanes
    @Sanes
    Для Ubuntu можно так поднять по-быстрому окружение.
    Ответ написан
    Комментировать
  • Как запустить Cron-задачу чаще минуты?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Стопудово это какая-то тупая задача вообще крона не требующая, эти "секреты" задолбали, напиши нормально - "я не могу сообразить как делать правильно %определенный_функционал%, пришла идея делать неправильно, как сделать правильно?". Нет же, все пишут - "мои лыжи не едут по асфальту, подскажите как приделать к ним колесики и ракетный двигатель, для чего не скажу, это ВеликаяТайна".
    Ответ написан
    Комментировать
  • Перенос вычислений таблицы Excel на сайт?

    POS_troi
    @POS_troi
    СадоМазо Админ, флудер, троль.
    Вы определитесь где вы это собираетесь считать:
    1. Фронт
    2. Бэк

    На фронте это будет 99% JavaScript, на бэке то на чёт написан бэк.

    Ну и при реализации забываем слово "эксель таблица", вам не логику таблицы нужно переносить а выводить формулу расчёта и уже её использовать.
    Ответ написан
    4 комментария
  • Какое техническое решение подобрать для создания сайта?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Поскольку я сталкивался с подобными задачами, сразу скажу, что нужно писать систему готовую к горизонтальному масштабированию.
    Сразу выкиньте из головы готовые CMS и прочую шелуху, когда вы засунуте в базу под лям объектов, вы начнете топить печь деньгами, чтобы обеспечить должный уровень отклика.
    Базу следует брать SQL, начинать с mysql и изначальной настройкой мультимастер шардинга+репликации+failover. Здесь очень долго посидеть над анализом документации, поиска по параметрам и т.д. На первичном этапе это не требуется, но потом часто выливается в гемор.
    На бэкэнд следует брать Go (Gorm для работы с базой). Он легко деплоится и просто масштабируется c помощью примитивной балансировки.
    Строительную документацию и картинки сразу хранить в S3-подобном хранилище.
    На фронтэнд берите последний AngularJS. Можете поиграться с Vue, но потом вам все равно прийдется это переписывать.

    Для такой работы вам потребуются следующие специалисты: дизайнер (фринлансер), devops-чел (проверенный, на удаленке), 2 программиста (frontend + backend) на полный рабочий день (они тоже могут работать удаленно) и руководитель проекта (технический директор).

    Не экономьте на специалистах, иначе получится неюзабельное говно.

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

    KorniloFF
    @KorniloFF Куратор тега JavaScript
    Работаю по font-end / JS
    Согласен с Ларисой, но немного дополню.
    Классы, собственно, введены для любителей ООП, и действительно - только эмулируют в JS классическое ООП.
    Нужны они для того, чтобы инкапсуллировать части кода, иметь возможности классового наследования и проч. Но нужно не забывать, что в JS используется наследование на прототипах и никакого другого в нем нет.
    Если понять вышесказанное, то от классов в JS лучше отказаться, и использовать встроенные инструменты. Сразу скажу единственный минус, который я не смог чисто обойти - отсутствие множественного наследования.

    Итак, инкапсулляцию лучше всего делать, размещая все функции отдельного блока кода не в классе, а в качестве методов объекта.
    var obj1= {
    prop1: value,
    met1: function(arguments) {
    body
    }
    // etc
    }


    При таком подходе мы имеем в глобальном скопе лишь одну переменную, но можем вполне использовать весь ее потенциал, как:
    obj1.met1();
    И зачем нам нужны классы при таком подходе?
    Если нам нужно унаследовать от другого объекта, самым простым способом будет разместить ссылку на родительский объект в свойстве __proto__ наследника.
    var parent= {...};
    var child= {
    __proto__: parent,
    .....
    }
    Ответ написан
    Комментировать
  • Что есть исключения?

    @xfg
    Исключение - это отклонение от нормы. Оно всегда будет. Всего не предусмотреть. Вы можете сделать исключения для Unprocessable, Forbidden, NotFound.
    Написать обработчик, который ловит все необработанные исключения и конвертирует Unprocessable в HTTP 422, Forbidden в HTTP 403, Not Found в HTTP 404, а все остальное в HTTP 500.

    О проблемах с сетью клиента уведомлять не надо. Таких технических проблем могут быть сотни и тысячи. Когда они возникнут, ваше приложение итак по очевидным причинам не сможет обработать запрос и упадет с исключением/ошибкой. Вам лишь надо, чтобы исключение/ошибка провалилась в обработчик и превратилась в 500 Internal Server Error. О большем клиенту знать не зачем.
    Ответ написан
    Комментировать
  • Си это основополагающий язык или просто популярный?

    gbg
    @gbg Куратор тега Программирование
    Любые ответы на любые вопросы
    Процессоры под языки - несколько исторических примеров, вроде lisp-машины.

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

    В этом как раз очень помогают C и C++, потому как они являются кросcплатформенными языками, для которых действует принцип вы платите (тратите ресурсы на) только те фичи языка, которыми пользуетесь.

    Именно поэтому большинство интерпретаторов и Runtime-окружений для некомпилируемых (Python) и JIT-компилируемых (Java) языков делаются на C или C++, либо являются трансляторами в C++ (KPHP)
    Ответ написан
    2 комментария
  • Если материнская плата сгорела(и пахнет сгоревшим), подлежит ли она гарантийному обслуживанию?

    CityCat4
    @CityCat4
    Жил да был черный кот за углом...
    Если контора уровня "три стола, два стула" ее можно просто припугнуть, но для этого надо знать закон о защите прав потребителей и все подобное. Придти, положить на стол работающий диктофон и начать качать права. Говорить тихо, вежливо, опираться на законы, попросить их показать все что обязана показать торгующая организация - книгу отзывов, уголок потребителя etc. Все фиксировать на телефон, упирать на то, что пойдете в суд и т.д.
    Обычно конторе такого уровня проще деньги вернуть, потому что там только копни - нарушение на нарушении верхом :D
    Ответ написан
    Комментировать
  • Запрашивает root пароль Linux Ubuntu?

    @immaculate
    Программист-путешественник
    Запрашиваемый пароль - это ваш пароль, который вы вводите при входе в систему.
    Ответ написан
    2 комментария
  • PHP фреймворки новые с Crud и возможностью создания модуля?

    sayber
    @sayber Куратор тега PHP
    Да, я программирую на PHP и еще асинхронно!
    (контроллер модель и view в одном пакете)

    Наверняка для любого популярного есть данная бесполезная вещь, просто надо посмотреть бандлы/пакеты в репозиториях.
    Данный механизм подходит исключительно для самого простого сайтика.
    Правильная работы - выбрать (на данный момент) Symfony/Laravel и понять как делаются качественные проекты на них.

    Для больших HL++ я бы посоветовал Symfony, по началу вы заметите, что он работает намного медленнее Laravel etc. Но при готовой архитектуре проекта, заметите что скорость сравняется и даже больше.
    Вся суть в использовании правильной и действенной архитектуры (не как в доке и туториалах).
    Если использовать подход DDD (CQRS/CommanBus/Persister etc..), то система будет оч. гибкой, что оч. важно бизнесу. Так же вся разработка будет в PHP коде в виде объектов. (за редким исключением, где потребуются билдеры) Можно еще оч. долго об этом говорить и расписывать.

    Все то же касается и Laravel/Yii, но с исключениями. Данные фреймворки придется не слабо расширять и учить работать с ORM.

    Если вам интересуют формы для запросов, то тут на помощь приходит swagger. Остальное ручками.
    Все выше сказанное - это если вас интересует качественный и хороший проект.

    UPD.
    Забыл упомянуть минус. Это то что придется писать много кода ручками. Но в последствии это окупится в крупных проектах.
    Так же, выше предложенная схема, дает возможность покрывать тестами 90% кода.
    Ответ написан
    4 комментария
  • PHP фреймворки новые с Crud и возможностью создания модуля?

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

    @Tabletko
    никого не трогаю, починяю примус
    Установка по сети (tftp) и настройка политиками (Ansible и пр.)
    Ответ написан
    1 комментарий
  • Вывод даты в нужном виде. Как сделать?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    Если абстрагироваться от того, что вы используете для работы с MySQL deprecated-расширение и не используете prepared statements, то проблема ваша как минимум в том, что вы не читали документацию:
    php.net/manual/ru/function.mysql-query.php
    Для запросов SELECT, SHOW, DESCRIBE, EXPLAIN и других запросов, возвращающих результат из нескольких рядов, mysql_query() возвращает дескриптор результата запроса (resource), или FALSE в случае ошибки.


    Вы получили дескриптор и пытаетесь с ним работать как с массивом.
    Ответ написан
    Комментировать
  • Установка нескольких ОС на одну машину?

    @Erelecano
    Админю сервера, починяю примуса.
    Сначала винду, потом линуху. Линуховые инсталяторы видят другие ОС на компе и настраивают GRUB на их загрузку, а винда затирает чужие загрузчики в MBR.
    Но разумней поставить Ubuntu GNU/Linux в качестве основной системы, а зоопарк развести в виртуалках(kvm и virt-manager вам в помощь).
    Ответ написан
    Комментировать