• Где утекает память при работе с zip и ods?

    @DimkaI Автор вопроса
    Системный адинистратор, разработчик ПО
    Часть строк профайлера хоть с какими-то значимыми данными
    spoiler
    Ordered by: standard name
       ncalls  tottime  percall  cumtime  percall filename:lineno(function)
         43/1    0.000    0.000  817.188  817.188 :0(exec)
      5484818   20.692    0.000   46.853    0.000 :0(iter)
      5485353   10.412    0.000   10.412    0.000 :0(join)
          506    0.001    0.000    0.001    0.000 :0(keys)
    914595/914421    1.762    0.000    1.763    0.000 :0(len)
       446645    7.550    0.000    7.550    0.000 :0(print)
       921434   15.975    0.000  130.259    0.000 :0(sum)
            1    0.000    0.000  817.188  817.188 <string>:1(<module>)
      9605836   36.841    0.000   36.841    0.000 base.py:106(get_attr)
      7316831   11.915    0.000   11.915    0.000 base.py:20(__init__)
      5484988   26.161    0.000   26.161    0.000 base.py:26(__iter__)
      2742494    4.734    0.000    4.734    0.000 base.py:46(kind)
      2742154   22.981    0.000  210.510    0.000 cells.py:192(plaintext)
      2742154   28.185    0.000  159.323    0.000 cells.py:193(<listcomp>)
      3661017   18.466    0.000   24.486    0.000 cells.py:47(__init__)
      8693111   50.408    0.000   98.905    0.000 cells.py:57(value_type)
      5032094   27.218    0.000  294.807    0.000 cells.py:61(value)
       533047    1.942    0.000    1.942    0.000 cells.py:63(convert)
           85    0.002    0.000  798.238    9.391 core.py:29(get_book_stream)
           85    0.002    0.000  800.455    9.417 core.py:42(get_book)
           85    0.001    0.000  798.195    9.391 excel.py:26(parse_file_content)
           85    0.001    0.000  798.194    9.391 excel.py:31(_parse_any)
           85    0.876    0.010  798.187    9.390 io.py:146(load_data)
           85    0.001    0.000  798.193    9.391 io.py:58(get_data)
           85    0.002    0.000  798.193    9.391 io.py:92(_get_data)
           85    0.008    0.000  817.176    9.614 kadastr.py:51(do_zip)
           85    5.751    0.068  816.894    9.611 kadastr.py:63(ods_work)
            1    0.001    0.001  817.188  817.188 kadastr.py:89(work)
           85    0.001    0.000  798.195    9.391 memory_input.py:34(get_data)
      4118644   21.190    0.000  507.381    0.000 odsr.py:30(column_iterator)
      3661017   42.407    0.000  481.897    0.000 odsr.py:37(cell_value)
           85    0.002    0.000  229.133    2.696 odsr.py:63(__init__)
           85    0.001    0.000  221.581    2.607 odsr.py:66(<listcomp>)
           85    0.001    0.000  229.134    2.696 odsr.py:84(__init__)
          170    0.001    0.000  221.577    1.303 pagecontainer.py:23(<genexpr>)
            1    0.000    0.000  817.197  817.197 profile:0(kadastr.work())
      4118644   12.905    0.000  520.286    0.000 reader.py:125(column_iterator)
           85    0.002    0.000  229.176    2.696 reader.py:52(open_content)
       457712   32.921    0.000  568.112    0.001 sheet.py:53(to_array)
      3661017   22.863    0.000   96.874    0.000 table.py:108(get_cell)
           85    0.002    0.000  221.573    2.607 table.py:30(__init__)
           85    0.002    0.000  221.570    2.607 table.py:31(init_attributes_by_xmlnode)
           85    0.169    0.002   81.680    0.961 tablenormalizer.py:121(expand_repeated_table_content)
           85    0.003    0.000  138.726    1.632 tablenormalizer.py:137(align_table_columns)
           85    1.119    0.013   70.381    0.828 tablenormalizer.py:142(_align_table_columns)
           85    0.005    0.000  220.411    2.593 tablenormalizer.py:152(normalize_table)
       460717   14.005    0.000   71.672    0.000 tablenormalizer.py:39(expand_cells)
           85    2.420    0.028   80.858    0.951 tablenormalizer.py:50(normalize)
      3680721   22.298    0.000   57.667    0.000 tablenormalizer.py:91(expand_cell)
           85    0.002    0.000  220.914    2.599 tablerowcontroller.py:17(__init__)
       457628    1.594    0.000    2.579    0.000 tablerowcontroller.py:32(ncols)
      3661017   18.287    0.000   24.466    0.000 tablerowcontroller.py:38(get_cell)
      3661017    6.179    0.000    6.179    0.000 tablerowcontroller.py:46(_adjust_negative_indices)
            1    0.000    0.000    0.000    0.000 tablerowcontroller.py:63(TableRowController)
           85    0.001    0.000  220.914    2.599 tablerowcontroller.py:64(__init__)
            1    0.000    0.000    0.002    0.002 tablerowcontroller.py:7(<module>)
           85    0.002    0.000   68.342    0.804 tableutils.py:58(get_min_max_cell_count)
           85    1.072    0.013   67.846    0.798 tableutils.py:59(<listcomp>)
          340    2.167    0.006    2.168    0.006 tableutils.py:65(get_table_rows)
       921434    5.217    0.000  135.476    0.000 tableutils.py:68(count_cells_in_row)
      8290526   50.406    0.000  114.284    0.000 tableutils.py:69(<genexpr>)
     11511210   15.884    0.000   15.884    0.000 tableutils.py:81(__init__)
     11050493   60.123    0.000   80.124    0.000 tableutils.py:84(cols)
       460717    2.536    0.000    3.364    0.000 tableutils.py:89(rows)
       461907    2.797    0.000    3.647    0.000 tableutils.py:94(cols)
      2742664   13.829    0.000   18.279    0.000 text.py:24(__init__)
    2742664/2742494   33.405    0.000   90.295    0.000 text.py:41(plaintext)
       912640    5.406    0.000   10.239    0.000 whitespaces.py:43(count)
       912640    3.371    0.000   13.610    0.000 whitespaces.py:56(plaintext)
           85    0.001    0.000  221.576    2.607 wrapcache.py:16(wrap)
     21584297   38.183    0.000   38.184    0.000 xmlns.py:38(_prefix2clark_cached)
    317341/7317171   48.206    0.000  318.789    0.000 xmlns.py:87(wrap)
    Ответ написан
    Комментировать
  • Какое ПО есть для управления ПК в образовательном центре?

    @DimkaI
    Системный адинистратор, разработчик ПО
    Понизьте пользователя по умолчанию до гостевого. Включите родительский контроль.
    Ответ написан
    Комментировать
  • Как удалить бесконечный цикл папок?

    @DimkaI
    Системный адинистратор, разработчик ПО
    Возможно так?
    Или так.
    Ответ написан
    2 комментария
  • Как использовать интернационализацию в config Yii2?

    @DimkaI Автор вопроса
    Системный адинистратор, разработчик ПО
    Благодаря предложению Дмитрий сделал следующее:
    в корне проекта в каталоге /widgets создал файл ILinkPager.php:
    <?php
    namespace app\widgets;
    
    use Yii;
    use Yii\helpers\Html;
    use Yii\widgets\LinkPager;
    
    class ILinkPager extends yii\widgets\LinkPager
    {
        public function __construct() {
            $this->firstPageLabel = Html::tag('span', '', [ 'class' => 'glyphicon glyphicon-fast-backward', 'title' => Yii::t('app', 'First page'), ]);
            $this->prevPageLabel  = Html::tag('span', '', [ 'class' => 'glyphicon glyphicon-backward', 'title' => Yii::t('app', 'Previous page'), ]);
            $this->nextPageLabel  = Html::tag('span', '', [ 'class' => 'glyphicon glyphicon-forward', 'title' => Yii::t('app', 'Next page'), ]);
            $this->lastPageLabel  = Html::tag('span', '', [ 'class' => 'glyphicon glyphicon-fast-forward', 'title' => Yii::t('app', 'Last page'), ]);
        }
    }


    в файле конфигурации /config/web.php переопределил контейнер:
    $config = [
        ...
        'container' => [
            'definitions' => [
                'yii\grid\GridView' => [
                    'pager' => [
                        'class' => 'app\widgets\ILinkPager',
                    ],
                ],
            ],
        ],
       ...
    ];


    В результате на всех страницах у пагинатора стала корректно работать интернационализация.
    Ответ написан
  • Как преобразовать строку в имя переменной?

    @DimkaI
    Системный адинистратор, разработчик ПО
    Примерно так
    Ответ написан
    Комментировать
  • Как игнорировать нечисловые символы в числе?

    @DimkaI
    Системный адинистратор, разработчик ПО
    Например такой формулой:
    =ЗНАЧЕН(ЛЕВСИМВ(A1;ПОИСК(" ";A1)-1))>1200
    Ответ написан
    Комментировать
  • Python как определить правильный падеж?

    @DimkaI
    Системный адинистратор, разработчик ПО
    Вроде это здесь уже обсуждалось.
    Ответ написан
  • Как настроить фильтр при выводе данных из mysql?

    @DimkaI
    Системный адинистратор, разработчик ПО
    Евгений,
    $query = "SELECT * FROM users WHERE course LIKE '" . $course . "'";

    Примерно так вы сможете добавить фильтрацию по курсу.
    Ответ написан
  • Как выполнить такое действие на php?

    @DimkaI
    Системный адинистратор, разработчик ПО
    Это уже рассматривалось, например здесь. Или здесь.
    Ответ написан
    Комментировать
  • Почему не находится запись в базе данных при проведении теста?

    @DimkaI Автор вопроса
    Системный адинистратор, разработчик ПО
    Эх, видимо мой вопрос не такой уж и простой.
    Удивительно, но следующие строки показывают, что запись в базе данных появилась:
    $count = count(Types::find()->where([ 'name' => $validName ])->all());
    $this->assertGreaterThan(0, $count);
    $this->assertEquals(1, $count);

    То есть найдена одна запись. А следующая команда её не находит:
    $this->tester->seeInDatabase('types', [ 'name' => $validName ]);

    Такое впечатление, что взаимодействие происходит с разными слепками базы данных.
    И, действительно, код из теста:
    $this->tester->haveInDatabase('types', [ 'name' => $validName ]);

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

    Вопрос остаётся открытым, как правильно написать конфиг, чтобы результат теста искался в слепке базы для тестов, а не в реальной?
    Ответ написан
    Комментировать
  • Как в Yii2 DataProvider по ID узнать номер страницы в пагинаторе?

    @DimkaI Автор вопроса
    Системный адинистратор, разработчик ПО
    В общем получилось не очень оптимальное решение, но оно работает:
    public function actionIndex()
        {
            $searchModel = new ItemsSearch();
            if (isset(Yii::$app->request->queryParams['id'])) {
                $id = Yii::$app->request->queryParams['id'];
                $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
                $dataProvider->query->select(Items::tableName() . '.id');
                $pageSize = $dataProvider->pagination->pageSize;
                $dataProvider->pagination = FALSE;
                $rows = $dataProvider->getModels();
                $page = 0;
                foreach ($rows as $key => $val) {
                    if ($id == $val->id) {
                        $page = ceil(($key + 1) / $pageSize);
                        break;
                    }
                }
                return $this->redirect(['index', 'page' => $page]);
            }
            $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
    
            return $this->render('index', [
                'searchModel' => $searchModel,
                'dataProvider' => $dataProvider,
            ]);
        }


    Возможно кому-то понадобится в будущем.
    Ответ написан
    Комментировать
  • Можно ли как-то считать несуществующие элементы массива равными 0?

    @DimkaI
    Системный адинистратор, разработчик ПО
    Можно, например так:
    for ($i = 0; $i < 10; $i++) {
        if (isset($result[$i])) {
            print($result[$i]) . '<br>';
        } else {
            print('0') . '<br>';
        }
    }
    Ответ написан
    1 комментарий
  • Как убрать повторения имени?

    @DimkaI
    Системный адинистратор, разработчик ПО
    $label='';
    foreach ($values as $index => $value):
         if ($label != $value->valuesAttribute->name) {
               $label = $value->valuesAttribute->name;
              ?>
              <div class="disabled"><?=$value->valuesAttribute->name?></div>
              <?php
         }
         ....
    Ответ написан
  • Как поменять пробелы на %20 в Bash скрипте?

    @DimkaI
    Системный адинистратор, разработчик ПО
    Например так:
    LINE="test test test"
    LINE=$(echo $LINE | sed "s/ /%20/g")
    echo $LINE
    Ответ написан
  • Осуществить ответы на работу скрипта запущенного из скрипта bash?

    @DimkaI
    Системный адинистратор, разработчик ПО
    Этот вопрос уже поднимался здесь.
    И там даже есть решение
    Ответ написан
    1 комментарий
  • Какой windows поставить на мой ноут?

    @DimkaI
    Системный адинистратор, разработчик ПО
    64, семёрку. Для десятки 64 лучше всего будет 8 ГБ и выше.
    Ответ написан
    Комментировать
  • Как вытащить из массива строку с определенными значениями?

    @DimkaI
    Системный адинистратор, разработчик ПО
    foreach ($array as $key => $row) {
        if (($row->employee_id == 12345) && ($row->building_id == '12345') )
             print_r($array[$key]);
    }
    Ответ написан
  • Как исключить из массива первое значение?

    @DimkaI
    Системный адинистратор, разработчик ПО
    unset($array[0]);
    Ответ написан
    Комментировать
  • Как вставить ссылку в php?

    @DimkaI
    Системный адинистратор, разработчик ПО
    Ну сначала между тегами < a > и < /a > ничего нет. Почитайте здесь: htmlbook.ru/html/a
    /r, /n - это вероятно \r, \n
    php может заменить подстановки в тексте, но не внутри одиночных апострофов.
    В HTML разметке эти символы ничего не значат. Советую изучить разметку HTML.

    А как выглядит команда использования echo и что за ошибка?
    Ответ написан
    4 комментария
  • MySQL в Debian?

    @DimkaI
    Системный адинистратор, разработчик ПО
    Вероятно на вопрос "почему" стоило ответить этой цитатой:
    MariaDB является лёгкой заменой MySQL. MariaDB является аналогом MySQL и она стремится быть лучшим выбором для специалистов по базам данных, которые ищут надежный, масштабируемый SQL Server. Это руководство поможет начинающим установить и понять суть работы MariaDB на Debian 7 и 6. Для достижения этой цели, MariaDB Foundation тесно сотрудничает и совместно работает с большим сообществом пользователей и разработчиков в истинном духе свободного и открытого программного обеспечения, и выпускает ПО таким образом, чтобы оно было с высокой надежностью.

    Толчком к созданию стала необходимость обеспечения свободного статуса СУБД (под лицензией GPL), в противовес неопределенной политике лицензирования MySQL компанией Oracle. Ведущий разработчик — Майкл Видениус, автор оригинальной версии MySQL и основатель компании Monty Program AB.

    Поиск гугла
    подсказал...
    Ответ написан
    4 комментария