Jump to content

aplayer

Актив
  • Регистрация

  • В сети

Posts posted by aplayer

  1. В Windows у Libre Office есть модуль для COM. https://ru.wikipedia.org/wiki/Component_Object_Model

    В кратце это значит что можно было читать/писать любой офисный файл чуть ли не из командной строки Windows. XLS файлами можно было управлять почти из любой программы в котрой есть VBA. Маткад, Автокад итп.

    Возможно эта штука в современном мире реализована и для Линукса.

    Было бы на много проще получать данные методом типа Application.Document.GetCell("A1"), а не парсингом тесктового файла.

  2. Вот снова при попытке установить новую версию 4.4.1

    Цитата

    2019/03/05 20:46:59 [error] 13961#13961: *622 FastCGI sent in stderr: "PHP message: PHP Fatal error:  require(): Failed opening required '/home/site/conf_global.php' (include_path='.:/usr/share/php') in /home/site/system/Db/Db.php on line 153" while reading response header from upstream, client: 127.0.0.1, server: site.com, request: "GET /admin/install/ HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.0-site.com.sock:", host: "site.com"

    лог говорит, что форум не пытается запустить установку и сразу инклюдит conf_global.php который еще не создан.

    Может я что-то не так делаю и предварительно надо конфиг вручную приготовить?

     

  3. Версия форума 4.3.6. Обновлять не в ближайшее время не планирую. Снова прислали письмо, что 7 марта апи г+ отключат.

    Пробовал в консоли гугла заменить г+ на Cloud Identity. Авторизация на форуме перестает работать. Страница авторизации гугла отрабатывает все правильно, но при редиректе с нее на сайт пишет: "что - то пошло не так. попробуйте позже".

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

    Все равно мне такой подход не нравится. Невозможность инклюда многое портит

    У инклюдов кроме отрицательных есть и положительные моменты. Например некоторые скрипты можно не загружать и тем самым экономить память и обращения к диску:
     

    if($member_group_id == 1){include '1.php';}
    
    if($member_group_id == 2){include '2.php';}
    
    if($member_group_id == 3){include '3.php';}

    В этом примере из 3 скрптов загрузится только один.
     

    без инклюда скрипт будет выглядеть примерно так:

    if($member_group_id == 1){код скрипта для первой группы;}
    
    if($member_group_id == 2){код скрипта для второй группы;}
    
    if($member_group_id == 3){код скрипта для третьей группы;}

    то-есть весь код трех скриптов будет загружен в память, а выполнен только один. Получается  мы загрузили в память 2/3 ненужного кода, а выполнилась только 1/3. Это значит наш код использует всего лишь ~30% полезной мощности.

  5. 8 часов назад, Desti сказал:

    Вас пугает синтаксис классов в PHP и прочие новомодные примочки?

    да нет не пугает. Я наоборот хочу использовать весь функционал движка на полную катушку. Но писать весь {{ код }} в фигурных скобочках меня угнетает.

     

     

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

    Тот пример создания плагина который тут https://invisioncommunity.com/developers/docs/development/plugins/complete-example-of-a-plugin-in-ips-community-suite-r50/ не открывает всех секретов технологии.

    Синтаксис скобочек и шаблончиков мне понятен, не первый раз с подобным сталкивался, но он мне не нравится. Как представлю, что я сейчас начну обработчик post-запросов с проверкой sql-инъекций или сокет на этих скобочках писать буду мне аж дурно становится. Как а анекдоте: "бери лом - иди подметай"

    Ну и прикинул самый оптимальный вариант это минимум скобок а основная масса обычного php-кода иклюдится из других файлов.

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

     

  7. 1 минуту назад, Desti сказал:

    Давным давно правлю код в microsoft code, всё нормально подсвечивается. Вот обычный кусок phtml из dev

    на скрине чистый html в котром ips-теги стоят между html-тегами и воспринимаются редактором как обычный текст.

    А вот когда дело дойдет до php там редакторы начнут спотыкаться.

  8. 41 минуту назад, siv1987 сказал:

    Инклуды это дичь, и не знаю чем это спасет ситуацю

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

    Так же ни один редактор не выравнивает такой код лесенкой.

    Недостатков много.

    А с инклюдом, прописал в шаблоне одну строку и пиши весь остальной код в любимом редакторе на обычном php html js css итп.

     

     

  9. Так вот. Снова хочу вернуться к инклюдам.

    Дело в том, что ни один из моих любимых php-редакторов не поддерживает подсветку синтаксиса шаблонизаторов.

    Ситуацию может спасти инклюд обычных php файлов, которые можно писать на классическом php {{require "php.php";}}

    Но...

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

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

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

  10. 3 минуты назад, Lumenq сказал:

    Проблема в том, что Redis как раз на сервере установлен

    я не в курсе про редис. Но скорее всего должен быть установлен ее и модуль для php

    apt-get install php7.0-(здесь должно быть имя модуля для редиса, возможно php7.0-redis)

  11. хотя кешируется он только для гостей.

    Странно.

    10 минут назад, WaNted сказал:

    Я думаю если вы выводите какие-либо статьи, 30 секунд или минута тут не критично. 

    я не хочу  публично обсуждать подробности подробности поставленной мне задачи.

    Но кеширование вызовет проблему при тестировании. Сам понимаешь, ждать каждый раз по 30 секунд при проверке работы скрипта тоже не вариант.

  12. 5 минут назад, WaNted сказал:

    Попробуйте напрямую вставить свой код в содержимое Theme Hook, где вставляли тег своего шаблона.

    не помогает. Кешируется на 30 секунд. То-есть в течении 30 секунд обновлял страницу и ничего не менялось

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

     

    Вот новая проблема

    <ips:template parameters="" />
    
    {{$test = strftime('%d.%m.%Y %H:%M:%S', time());}}
    
    
    {$test}

    Этот код выводит текущее время на сервере. Но при обновлении страницы выводимое время не обновляется в  около минуты. То-есть результат работы этого кода где-то кэшируется.

    Мне кэширование в этом плагине не нужно. Динамичный контент должен выводиться всегда обновленным. где-то можно выключить кэш этого шаблона?

  14. Только что, WaNted сказал:

    Хм... Зачем использовать эти функции, когда шаблон итак уже выводит своё содержимое?

    Надо выводить динамическое содержимое.

    Например заголовки статей с новостного сайта. То-есть такое содержимое которое заранее не известно, постоянно изменяется, а иногда даже не существует

  15. 8 минут назад, WaNted сказал:

    А чем Вам скобочки не угодили?

    Ну это как в анекдоте про армию: "Берете ломы, идете подметать плац..."

    Мы не в армии. И если надо что-то подметать, то лучше всего это делать метелкой а не ломами.

    если в dev/html создать файл с таким кодом:

    <ips:template parameters="" />
    
    {{echo "test";}}

    то сайт не грузится, а выводится только такой текст и больше ничего:

    theme_core_global_plugins_test
    test
    
    {{echo "test";}}

    Где-то я читал, что в шаблонах нельзя использовать функции вывода информации на экран. Это совсем край. Для чего тогда вся эта возможность разработки плагинов придумана если в ней нельзя использовать php на 100%?

  16. Posted

    Проблема заключается в том, что при компиляции плагина удаляются все файлы котрые я создал вручную не через центр разработчика.

    При создании хука темы а папке hooks создается файл с таким содержимым.

    //<?php
    /* To prevent PHP errors (extending class does not exist) revealing path */
    if (!defined('\IPS\SUITE_UNIQUE_KEY')) {
        exit;
    }
    
    class hook35 extends _HOOK_CLASS_ {
        /* !Hook Data - DO NOT REMOVE */
    
        public static function hookData() {
            require 'file.php'; //здесь сделать инклюд который сформаирует перпменную $content
            return array_merge_recursive(array(
                'globalTemplate' =>
                array(
                    0 =>
                    array(
                        'selector' => '#ipsLayout_header',
                        'type' => 'add_after',
                        'content' => $content, //вывод переменной в блоке сайта
                    ),
                ),
                    ), parent::hookData());
        }
    
        /* End Hook Data */
    }
    

    В коде уже описано, что я хочу сделать.

    А именно. Не хочу городить 1000 строк кода в теле функции hookData(), а сделать инклюд который сформирует переменную $content.

    Но компилятор плагина удаляет все файлы которые я создаю сам вручную. В гугле информации ноль. Только несколько скудных абзацев на офсайте из которых я понял, что хуки кода не предназначены для решения моей проблемы. А если создать еще один хук темы и не привязывать его к месту в шаблоне, а потом сделать его инклюд, то при запуске сайта возникают различные ошибки на неопределённые классы и переменные.

     

    Моя задача. Сделать на сайте блок который будет выводить динамическую информацию средствами php.

    Из все й информации что мне удалось нарыть я понял, что сделать это можно через хук, код которого представлен выше, через элемент массива 'globalTemplate' => ....=>'content' в функции hookData().

    Если есть какие-то другие способы, то расскажите о них.

     

  17. 1 час назад, Lumenq сказал:

    Столкнулся с подобной проблемой, но с Redis, может кто-то подскажет?

    недавно включал memcached. Там надо было установить модуль  php-memcached

    для редиса скорее всего точно так же.

    После перезапустить всё

    apt-get install php7.0-memcached

     

    и перезапустить всё

  18. На чистом форуме все хорошо заработало.

    Но на всякий случай зашел в техподдержку и выбрал Something isn't working correctly (что-то работает не так)

    И вот:

    Screenshot_20190303_203710.thumb.png.e0fc6973e06af5c48c641320729d81e4.png

    Со временем на сервере все нормально, синхронизируется. Часовой пояс Москва, +3 от Гринвича.