• Автоматическое выравнивание html кода SublimeText 3?

    ghaiklor
    @ghaiklor
    NodeJS TechLead
    Используйте хоткеи на Reindent.
    Открываете User Hotkeys и пишите
    [
        {
            "keys": ["ctrl+shift+r"],
            "command": "reindent",
            "args": {
                "single_line": false
                }
            }
    ]
    Ответ написан
    5 комментариев
  • Как правильно написать рекурсию в Python для сбора элементов по parent key?

    leahch
    @leahch
    Я мастер на все руки, я козлик Элек Мэк :-)
    Самое простое - преобразовать ваши данные в словарь (dict), где ключом будет являться Ref_Key (это я так понимаю, универсальный идентификатор объекта). Ну а уже по ключам можно бегать как угодно.
    Ну и данные у вас не читаются!
    >>> import json
    >>> f = open('t.json')
    >>> j = json.load(f)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/lib/python3.10/json/__init__.py", line 293, in load
        return loads(fp.read(),
      File "/usr/lib/python3.10/json/__init__.py", line 346, in loads
        return _default_decoder.decode(s)
      File "/usr/lib/python3.10/json/decoder.py", line 337, in decode
        obj, end = self.raw_decode(s, idx=_w(s, 0).end())
      File "/usr/lib/python3.10/json/decoder.py", line 353, in raw_decode
        obj, end = self.scan_once(s, idx)
    json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
    >>>
    Ответ написан
    2 комментария
  • Как правильно написать рекурсию в Python для сбора элементов по parent key?

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

    from collections import defaultdict
    from pprint import pprint
     <spoiler title="values">
    d =[{'Ref_Key': '33ed0832-9697-11eb-8568-18c04d0357e4', 'DataVersion': 'AAABRgAAAAA=', 'DeletionMark': False,
          'Parent_Key': 'a888a6c7-bb96-11ea-834d-f0795994df35', 'IsFolder': True, 'Code': 'СГ-000359',
          'Description': '1.1. Затраты на приобретение прав на ЗУ ', 'ВидДеятельностиДляНалоговогоУчетаЗатрат': None,
          'ВидРасходовНУ': None, 'РеквизитДопУпорядочивания': '12', 'Код_Добавленный': '', 'Синтека_projectId': '',
          'Predefined': False, 'PredefinedDataName': '',
          'Parent@navigationLinkUrl': "Catalog_СтатьиЗатрат(guid'33ed0832-9697-11eb-8568-18c04d0357e4')/Parent"},
         {'Ref_Key': '33ed0834-9697-11eb-8568-18c04d0357e4', 'DataVersion': 'AAABSAAAAAA=', 'DeletionMark': False,
          'Parent_Key': 'a888a6c7-bb96-11ea-834d-f0795994df35', 'IsFolder': True, 'Code': 'СГ-000361',
          'Description': '1.5. Затраты на аренду ЗУ ', 'ВидДеятельностиДляНалоговогоУчетаЗатрат': None,
          'ВидРасходовНУ': None, 'РеквизитДопУпорядочивания': '13', 'Код_Добавленный': '', 'Синтека_projectId': '',
          'Predefined': False, 'PredefinedDataName': '',
          'Parent@navigationLinkUrl': "Catalog_СтатьиЗатрат(guid'33ed0834-9697-11eb-8568-18c04d0357e4')/Parent"},
         {'Ref_Key': '33ed0836-9697-11eb-8568-18c04d0357e4', 'DataVersion': 'AAABSgAAAAA=', 'DeletionMark': False,
          'Parent_Key': 'a888a6c7-bb96-11ea-834d-f0795994df35', 'IsFolder': True, 'Code': 'СГ-000363',
          'Description': '1.6. Затраты на изменение ВРИ.Проектирование', 'ВидДеятельностиДляНалоговогоУчетаЗатрат': None,
          'ВидРасходовНУ': None, 'РеквизитДопУпорядочивания': '14', 'Код_Добавленный': '', 'Синтека_projectId': '',
          'Predefined': False, 'PredefinedDataName': '',
          'Parent@navigationLinkUrl': "Catalog_СтатьиЗатрат(guid'33ed0836-9697-11eb-8568-18c04d0357e4')/Parent"},
         {'Ref_Key': '33ed0838-9697-11eb-8568-18c04d0357e4', 'DataVersion': 'AAABTAAAAAA=', 'DeletionMark': False,
          'Parent_Key': 'a888a6c7-bb96-11ea-834d-f0795994df35', 'IsFolder': True, 'Code': 'СГ-000365',
          'Description': '1.8. Прочие затраты на улучшения и содержание ЗУ',
          'ВидДеятельностиДляНалоговогоУчетаЗатрат': None, 'ВидРасходовНУ': None, 'РеквизитДопУпорядочивания': '15',
          'Код_Добавленный': '', 'Синтека_projectId': '', 'Predefined': False, 'PredefinedDataName': '',
          'Parent@navigationLinkUrl': "Catalog_СтатьиЗатрат(guid'33ed0838-9697-11eb-8568-18c04d0357e4')/Parent"}]</spoiler>
    
    tree = defaultdict(list)
    
    for value in d:
        tree[value['Parent_Key']].append(value)
    
    pprint(tree)
    Ответ написан
    Комментировать
  • Как вывести первое и последнее значение за день в горизонтальный отчёт?

    phoinixrw
    @phoinixrw
    Архитектор информационных систем
    SELECT
        fio,
        date,
        MIN(reg_time) AS come_time,
        MAX(reg_time) AS out_time
    FROM logtable
    GROUP BY fio, date;
    Ответ написан
    Комментировать
  • Как вывести первое и последнее значение за день в горизонтальный отчёт?

    tsklab
    @tsklab Куратор тега SQL Server
    Здесь отвечаю на вопросы.
    SELECT [ФИО], 1 AS Line,
           [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], 
           [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31]
      FROM 
        ( SELECT [ФИО], 
                 DAY([Событие]) AS [День],
                 FORMAT([Событие], 'HH:mm') AS [Время]
            FROM [Проходная]
            WHERE FORMAT([Событие], 'yyyy-MM') = @P) AS enDay
        PIVOT ( MIN([Время])
          FOR [День] IN ( [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], 
                          [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], 
                          [21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31])
            ) AS enPivot
    UNION
    SELECT [ФИО], 2,
           [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], 
           [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31]
      FROM 
        ( SELECT [ФИО], 
                 DAY([Событие]) AS [День],
                 FORMAT([Событие], 'HH:mm') AS [Время]
            FROM [Проходная]
            WHERE FORMAT([Событие], 'yyyy-MM') = @P) AS enDay
        PIVOT ( MAX([Время])
          FOR [День] IN ( [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], 
                          [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], 
                          [21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31])
              ) AS enPivot
    UNION
    SELECT [ФИО], 3,
           [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], 
           [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31]
      FROM 
        ( SELECT [ФИО],
                 DAY([Событие]) AS [День],
                 FORMAT(MAX([Событие]) - MIN([Событие]), 'HH:mm') AS [Время]
            FROM [Проходная]
            WHERE FORMAT([Событие], 'yyyy-MM') = @P
            GROUP BY [ФИО], DAY([Событие])) AS enDay
        PIVOT ( MAX([Время])
          FOR [День] IN ( [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], 
                          [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], 
                          [21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31])
               ) AS enPivot
      ORDER BY 1, 2

    Список для параметра:
    SELECT DISTINCT FORMAT([Событие], 'yyyy-MM')
      FROM [Проходная]
      ORDER BY 1 DESC

    Значение по-умолчанию для параметра:
    SELECT FORMAT(MAX([Событие]), 'yyyy-MM')
      FROM [Проходная]
    Ответ написан
  • Как запрограммировать напоминание о предстоящем дне рождения в Python?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    import datetime
    
    nowday = datetime.datetime.now()
    birthday = datetime.datetime.strptime('01.09.1980', '%d.%m.%Y').replace(year=nowday.year)
    difference = (nowday - birthday).days
    
    if difference >= -3 and difference < 0:
        print('Скоро ДР')
    elif difference == 0:
        print('Сегодня ДР')
    Ответ написан
    Комментировать
  • Как запрограммировать напоминание о предстоящем дне рождения в Python?

    @DF0rig
    clay
    Смотря в каком формате вы храните строки о дате рождения
    import datetime
    import time
    from datetime import datetime, timedelta, date
    
    data = ["31.08.2022", "01.09.2022"]
    for key in data:
     datetime_data = datetime.strptime(key, "%Y-%m-%d") # Зависимость второго аргумента зависит от вашей строки с днём рождения
     d = datetime_data - timedelta(days=2)
     now = datetime.now()
     if d.date() >= now.date():
      print("Скоро у кого-то день рождение!")
    Ответ написан
    Комментировать
  • Веб-сервер Linux и сбор стат.отчетов. Что посоветуете?

    leahch
    @leahch Куратор тега Linux
    Я мастер на все руки, я козлик Элек Мэк :-)
    Скорее всего полностью варианта из коробки для вас нет. Для отчетов можно использовать eclipse birt или jasperpeports.
    В случае с Birt - https://www.eclipse.org/birt/ у него есть серверный вариант, я как-то очень давно с ним работал. Создаете report-файл, загружаете его на сервер и при запросе генерируется отчет из базы данных или другого источника. Да, есть плагин к эклипсу (среда разработки) для содания report-файлов, почти как эксель.
    C jasperReports https://community.jaspersoft.com/project/jasperrep... примерно тоже самое.
    Ответ написан
    1 комментарий