Задать вопрос
  • Есть ли open sourse Документооборот?

    @d-stream
    Готовые решения - не подаю, но...
    Нужно сделать документооборот для организации собственными силами
    А силы есть?

    Ну а если не такого то подскажите на каком языке лучше писать
    а где сила?

    Предлагаю начать с простого: на простом русском языке расписать подробное техзадание/требования к СДО на предприятии и схему внедрения. После этого уже думать дальше или же останавливаться.
    Ответ написан
    Комментировать
  • Как исполнить функцию условных операторов в регулярном выражении?

    @x_dmitry_x
    ^(1|2|3)/sometext/sometext/\1a$
    Ответ написан
    Комментировать
  • Как удалённо работать если заблокируют Ру сектор?

    saboteur_kiev
    @saboteur_kiev Куратор тега Компьютерные сети
    software engineer
    Нельзя обойти что-то, пряча голову в песок. Нужно всем неайтишникам наконец понять, что свобода интернета нужна не только админам в свитерах и дрыщам-очкарикам. Она нужна всем.

    Если заблокируют ру-сектор, либо становитесь безработным, либо едете в другую страну.
    Либо - митинговать пока не победит справедливость.
    Ответ написан
  • Как создать общую переменную для двух PHP скриптов?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Используй базу данных.

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

    @kudis
    Bitrix developer
    Сделайте отложенный метод.
    Ровно так, как работают нативные крошки.
    Например:
    // свойство ещё не установлено - будет пусто
    echo '"' . $APPLICATION->GetPageProperty('NOT_SHOW_NAV_CHAIN_CUSTOM') . '" ';
    
    // этот метод лучше определить где-нибудь в подключаемых классах
    class BufferMethods
    {
        public static function showCustomChain($chain)
        {
            global $APPLICATION;
            if ($APPLICATION->GetPageProperty('NOT_SHOW_NAV_CHAIN_CUSTOM') === 'Y') {
                return $chain;
            } else {
                return '';
            }
        }
    }
    
    // буферизируем Ваши хлебные крошки. Их не будет видно, они попадут в переменную $strChain
    ob_start();
    echo 'Здесь лежит компонент хлебных крошек, который будет появляться и исчезать в зависимости от значения NOT_SHOW_NAV_CHAIN_CUSTOM';
    $strChain = ob_get_clean();
    
    // свойство ещё не установлено, но мы используем отложенную функцию, значит будет результат в зависимости от значения
    $APPLICATION->AddBufferContent(['BufferMethods', 'showCustomChain'], $strChain);
    
    // свойство наконец установлено
    $APPLICATION->SetPageProperty('NOT_SHOW_NAV_CHAIN_CUSTOM', 'Y');
    
    // свойство уже установлено - будет значение
    echo ' "' . $APPLICATION->GetPageProperty('NOT_SHOW_NAV_CHAIN_CUSTOM') . '" ';
    Ответ написан
    Комментировать
  • Что эффективнее - один большой php файл или много маленьких в шаблонах?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Эффективнее провести нагрузочное тестирование с логированием времени обработки запросов и ключевых этапов обработки каждого запроса. Затем по итогам анализа логов выявить наиболее проблемные места и исправить недочеты, ошибки и прочее.
    А еще надо сразу грамотно делать декомпозицию проекта и грамотно проектировать архитектуру системы. Кроме того, есть еще такие штуки как БД и веб-сервер/прокси/балансер и т.п., которые вносят свои задержки в обработку запроса. Еще есть очень замечательная штука, которая называется "кэширование", с которой нет необходимости каждый раз загружать данные с диска. А так же еще куча других способов ускорения PHP.
    Ответ написан
    3 комментария
  • Чем отличается обявление int* a от int *a в Си?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега C
    Седой и строгий
    Ни чем не отличается. Пробельные символы допустимо ставить в любом месте, где они не разрывают ключевое слово, идентификатор или константу. Все варианты ниже полностью эквивалентны:
    int*a;
    int* a;
    int *a;
    int * a;

    Но есть некоторая тонкость. Если посмотреть на синтаксис объявления нескольких переменных:
    int * a, * b, c, * d, e; // a, b и d - указатели, c и e - числа

    то будет видно, что "звездочка" является скорее модификатором переменной, чем модификатором типа. Чтобы подчеркнуть этот факт, рекомендуется всегда писать "звездочку" около переменной. Такая привычка позволяет избежать глупых ошибок:
    int *a, *b; // нормально
    int* a, b;  // Ошибка: b кажется указателем, но на самом деле - число.

    А синтаксис у C простой.
    5c77e725c3f4a317612433.jpeg
    Ответ написан
    1 комментарий
  • Как заполнить таблицу по умолчанию, при создании миграций?

    xpert13
    @xpert13
    Full Stack Developer
    Для этого есть Database: Seeding
    Ответ написан
    Комментировать
  • Мне нужно сообщить программисту, как работает моя сложная система. Каким образом это лучше сделать?

    customtema
    @customtema
    arint.ru
    Разбейте общую схему на уровни. Общие планы и детализация. Предупредите разработчика о предстоящих изменениях, и попросите учесть это.

    Если не известны сами изменения, тем не менее известен их характер. "Измениться может все" - это тоже можно смело документировать.

    Графические форматы вас не спасут. Простой документ, написанный совместно с разработчиком, в беседе - да. Просто нанесите на бумагу то, что вы говорите вслух, в этом весь секрет. Судя по постановке задачи, сейчас вы этого не делаете.
    Ответ написан
    3 комментария
  • Что не так с областью видимости переменной?

    mosesfender
    @mosesfender
    Меланхолик, параноик, падал с коек
    Еще лучше function($reader) use (&$data) {…}
    Ответ написан
    1 комментарий
  • Как восстановить указатель на не первый базовый класс из неизвестного производного класса?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    #include <stdio.h>
    
    class A
    {
    public:
            virtual ~A()
            {
            }
    };
    
    class B
    {
    public:
            virtual ~B()
            {
            }
    };
    
    class C
    {
    public:
            virtual void dump() = 0;
            virtual ~C()
            {
            }
    };
    
    class D: public A, public C
    {
    public:
            virtual void dump()
            {
                    printf("D: %p\n", this);
            }
    };
    
    class E: public B, public C
    {
    public:
            virtual void dump()
            {
                    printf("E: %p\n", this);
            }
    };
    
    void f(void *p)
    {
            C *pc1 = dynamic_cast<C*>((A*)p);
            C *pc2 = dynamic_cast<C*>((B*)p);
            C *pc3 = dynamic_cast<C*>((C*)p);
    
            if (pc1)
                    pc1->dump();
            else if (pc2)
                    pc2->dump();
            else if (pc3)
                    pc3->dump();
    }
    
    int main()
    {       
            D d;
            E e;
    
            printf("d: %p, e: %p\n", &d, &e);
    
            A *pa = &d;
            f(pa);
    
            B *pb = &e;
            f(pb);
    
            C *pc1 = &d;
            f(pc1);
    
            C *pc2 = &e;
            f(pc2);
    
            D *pd = &d;
            f(pd);
    
            E *pe = &e;
            f(pe);
    
            return 0;
    }
    Ответ написан
    Комментировать
  • Как работать с websocket в php без библиотек?

    @xfg
    Прочитать соответствующий RFC https://tools.ietf.org/html/rfc6455 чтобы понять, как происходит рукопожатие и какие байты в переданном сообщении за что отвечают. После этого будет понятно как написать реализацию. Я досконально уже не помню, но фактически от клиента приходит обычный http запрос с определенными заголовками, сервер разбирает этот запрос и если всё ок, то сохраняет открытое соединение в массив, если нет, то отправляет соответствующий ответ и закрывает соединение. Дальше по открытому соединению начинает сыпаться поток байтов от клиента их нужно разбирать, чтобы понять длину сообщения, сами данные переданные в фрейме, закончился фрейм или еще нет и тому подобное. Обратно также кодировать данные в поток байтов и отправлять по открытому соединению. Каждый байт в переданном фрейме несет определенный смысл. Обо всем этом подробно написано в RFC, но на английском. Вообще это хорошо примерно понимать как работает, но глупо писать такую низкоуровневую реализацию, когда есть готовые. Такие вещи развивают и поддерживают годами. Вы же не пишите HTTP серверы, а берете готовые вроде nginx и тому подобное.

    В каком месте можно полученные данные подготовить к записи в бд.

    Как сделать, что бы на стороне клиента, один websocket отвечал за сообщения, другой за статьи. (Или за эти два действия отвечает один websocket, тогда как мне на сервере это различать).

    Вебсокет это низкоуровневая штука, для передачи потока байтов от клиента на сервер, в отличии например от HTTP, где есть заголовки и тело сообщения. Поверх вебсокета нужно делать еще один протокол или самописный или выбрать один из готовых. Это проще говоря, то как выглядят ваши фреймы (сообщения), которые вы отправляете с клиента на сервер и назад. Например клиент может отправлять такой фрейм:
    ["id", "controller/action", {param1: value1, param2: value2}]

    в ответ получать
    ["id", "OK"]
    если запрос был обработан успешно или
    ["id", "ERR", {error: "action not found"}]
    если произошла ошибка. По переданному id в массиве, можно понимать, к какому запросу относится ответ.
    Для уведомлений (событий) сервер может отправлять клиентам что-то такое
    ["user_added", {user: {...}}]
    и т.д. Этот протокол необходимо придумать самому или выбрать из готовых (популярных пока нет) и написать его реализацию (клиентскую и серверную часть) или опять же взять уже готовую.

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

    Но это уже всё должно быть, просто возьми real-time фреймворк. Там за тебя написали и websocket сервер и протокол поверх него и экшены уже есть. Всё низкоуровневое уже готово. Бери и пиши приложение. В nodejs самый популярный это например https://github.com/socketio/socket.io, а в php я не знаю, но уверен, что тоже есть что-то популярное.

    Своё написать не получится, без опыта и без попыток сделать приложение на чем-то готовом. Нужно как минимум прочитать RFC и посмотреть реализации других разработчиков. Для этого нужно быть кем-то больше, чем "программистом сайтов".
    Ответ написан
    1 комментарий
  • В чем ошибка (работа с памятью, деструкторы)?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    У вас же C++, т.е. можете использовать вектор для хранения элементов без необходимости явного выделения памяти:
    #include <vector>
    
    // double* _coords;
    std::vector<double> _coords;
    
    // _coords = new double[N];
    _coords.resize(N);

    Ну и деструктор можете не писать.
    Ответ написан
    Комментировать
  • Почему иногда делают так?

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Поставить каптчу.

    Это единственный вариант который будет работать по принципу "я тут что-то нашел, и воткнул себе на сайт но понятия не имею что это такое и как работает".
    Ответ написан
    1 комментарий
  • На ноутбуке не печатаются английские буквы, это конец?

    @lega
    у клавиатуры нет раскладки - это фича ОС, а в биос не можете войти потому что не правильно вводите пароль (либо некоторые кнопки перестали работать)

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

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    objaddr = objects + (sizeof(Object)*n);

    sizeof(Object) * не нужен, это не ассемблер.
    Ответ написан
    Комментировать