• Восстановление данных с накопителя видеорегистратора?

    Zettabyte
    @Zettabyte
    Проф. восстановление данных ▪ Вопрос? См. профиль
    По глупой случайности инициализировал диск в Windows.
    Вполне типовая ситуация, с которой к нам регулярно приходят пользователи DVR.

    Можно ли с этим *.bin файлом секторов восстановить данные у профильных людей?
    Да, образ оригинального жёсткого диска, который был инициализирован, подойдёт для восстановления данных с видеорегистратора.

    И является ли полный бэкап данных секторов полной копией диска?
    Никогда не пользовался Bootice. Обязательно учтите, что вам нужен полный образ диска (посекторная копия, клон), сделанный в режиме "байт-в-байт". Без ухищрений, пропусков, сжатия, проприетарных форматов, и т.п. Т.е. Acronis и подобные инструменты не подойдут.
    Используйте CloneZilla или 16-тиричный редактор. Если потребуется, у нас есть бесплатный hex-редактор, не требующий установки.

    Начал экспериментировать на тестовом диске (объем меньший) и смог вернуть диск до исходного состояния ...
    К сожалению, вы очень вряд ли сможете самостоятельно привести диск к виду, когда его можно будет вставить обратно в регистратор и всё заработает как раньше, за исключением перетёртого куска.

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

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

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

    Диск требуется отдать в другие руки, но неизвестно что станет с диском в дальнейшем, а записи важные.
    Если содержимое критичное, то лучший вариант - взять полную копию и обратиться с ней к специалистам.
    Если вы в Москве, будем рады помочь с восстановлением видео, если нет, то выбирайте компанию поблизости, используя вот эту краткую памятку, она универсальная: Восстановление-данных.рф
    Ответ написан
    3 комментария
  • Доступное обучение по работе с сетевым оборудованием?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Подбор серверов и коммутаторов без знания того, как эти сервера и коммутаторы работают и что они делают и зачем они это делают - это примерно как подбор автомобиля человеком, всю жизнь ездившим на лошади...
    Ответ написан
    1 комментарий
  • Нормально к одной ip камере подключать 2 регика?

    mixatronik
    @mixatronik
    mixatronik.ru
    На самом деле, проблемы всё-таки могут быть. Протокол ONVIF двунаправленный и регистратор может заказывать параметры потока. Регистратора два и может возникнуть ситуация, когда они запросят поток с разными параметрами. Дальше всё зависит от того, насколько софт камеры и регов умеет обрабатывать такие ситуации. Работать то будет, но не очень стабильно. Камеры могут зависать, поток может прерываться. По ONVIF можно подключить к одному регу, а к другому по RTSP или к обоим по RTSP, а параметры потоков настроить на самой камере. Последний вариант самый трудозатратный, зато самый надёжный.
    Ответ написан
    Комментировать
  • В чем заключаются архитектурные ошибки моего кода?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    class Calculation():
    
      def __init__(self, calculation):
        #init
        self.calculation = calculation

    Вы сделали класс `Вычисления`, чтобы проводить вычисления, пока проводятся вычисления вычислений над вычислениями, которые вычисляются как аргумент вычислений для вычисления состояния вычислений.

    Вы бы хотя бы в предметную область нас тут погрузили хоть немножечку. Не понятно же ничерта. Обычно класс и инстанс можно называть одинаково, за исключением первой буквы, но вы тут в аргументы что-то передаёте и то нифига не понятно. Делайте докстринги.

    Используйте тайпхинтинг, это позволяет не только статичесий анализ кода делать и избегать лишних ошибок, но, к тому же, это мощный инструмент документирования кода, неотрывно связанный с самим кодом. Это значит, что документация не отстанет от кода, а, напротив, будет за счет формализма и машиночитаемости помогать IDE помогать нам писать код. К тому же ряд вопросов отпадёт у тех, кто пытается читать код. Не нужно гадать на кофейной гуще что есть что.

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

    У вас в коде полно "магических" констант. Именуйте их и выносите в начало модуля или, хотя бы, указывайте в инлайн-комментах единицы измерения для ясности. Не пренебрегайте свойствами, их можно документировать .

    Вы тут много работаете с календарными периодами. перебираете их с шагом... Это хорошее место для выделения функциональности в отдельную библиотеку, в отдельный тип данных. Возможно писать свой велосипед даже не придётся, ведь найдётся много готовых качественных протестированных библиотека для этих целей. Их будет легко и понятно инициализировать, у них будет простой, понятный и универсальный АПИ, они будут однотипно использованы в разных мемтах проекта, не придётся смешивать в одном контесте кучу переменных для обеспечения двух имплементаций одной и той же функциональности.
    Количество кода резко убавится, универсальный код будет вынесен в отдельный модуль и будет отдельно и полноценно протестирован, а в бизнес логике вы будете коротко и лаконично работать с абстракцией - понятной и простой.

    Вот тут у вас, очевидно, можно написать проще и без лишних повторений, провоцирующих ошибки:
    if i % self.inflation_indexation_period==0 and i != 0:
            if i not in range(0, self.inflation_indexation_period):
              init_indexation_inflation *= self.sales_init.inflation_indexation
            else:
              init_indexation_inflation = 1
            inflation_indexations.append(round(init_indexation_inflation, 5))
          else:
            inflation_indexations.append(round(init_indexation_inflation, 5))

    Лучше так:
    if i % self.inflation_indexation_period==0 and i != 0:
            if i in range(self.inflation_indexation_period):
              init_indexation_inflation = 1
            else:
              init_indexation_inflation *= self.sales_init.inflation_indexation
    
          inflation_indexations.append(round(init_indexation_inflation, 5))

    Функция get_inflation_indexations у вас имеет опасный побочный эффект. Она имеет префикс get_ но модифицирует контекст объекта. Это кэширование? Чем обусловлено такое поведение? Если такое делается "на всякий случай". то это плохая практика неявного внедрения побочного эффекта. Если нарочно, то такое надо документировать и корректно называть и описывать метод в докстринге.

    Опять же, get_inflation_indexations и get_value_indexations очень похожи по коду. Это повод вынести такую логику в отельную функцию, она будет проще и её будет проще тестировать!
    А у вас эти функции отличаются именами атрибутов внутри и магическими константами, которые в коде делать не хорошо, тем более без пояснений, тем более в кусках такого похожего кода.

    Перестаньте использовать i в качестве переменной для итерирования нетривиальных сущностей, отличных от протсого счетчика. i - это индекс. Используйте человеко-понятное название переменной для этого!

    Используйте декоратор итераторов enumerate. Это сделает код более прозрачным и читабельным, чем код с параллельными счетчиками. Увидев enumerate читатель кода сразу поймёт, что это простой счетчик итерируемых сущностей, что не нужно ожидать скачков этого счетчика и каких-то сложных корреляций.

    А вот здесь вообще всё плохо:
    count = 0
        revenue_list = []
        for i in total_price:
          revenue = i*total_value[count]
          revenue_list.append(revenue)
          count+=1

    count - это "количество", а вы его используете как "индекс" и никак иначе!
    i - это индекс, а вы туда суёте фактически цену!
    У вас total_price и total_value параллельные одноразмерные списки, их нужно состегнуть с помощью zip и пронумеровать с помощью enumerate (если надо, а здесь не надо!).
    Весь этот кусок понятнее, проще, короче и более питоничнее записать в такой форме:
    revenue_list = [price * value for price, value in zip(total_prices, total_values)]


    Итого вся вот эта громоздкая плохо читабельная функция:
    def get_revenue(self):
        '''Получить итоговую выручку'''
        total_price = []
        for i in self.get_inflation_indexations():
          price = self.sales_init.price*i
          total_price.append(price)
    
        total_value = []
        for i in self.get_value_indexations():
          value = self.sales_init.sales_volume*i
          total_value.append(value)
    
        count = 0
        revenue_list = []
        for i in total_price:
          revenue = i*total_value[count]
          revenue_list.append(revenue)
          count+=1
    
        return revenue_list

    Легко и читабельно для питониста заменяется на вот такую:
    def get_revenue(self):
        '''Получить итоговую выручку'''
        indexations = self.get_inflation_indexations()
    
        init_price = self.sales_init.price
        total_prices = [init_price * x for x in indexations]
    
        init_volume = self.sales_init.volume
        total_values = [init_volume * x for x in indexations]
    
        return [price * value for price, value in zip(total_prices, total_values)]


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

    Что это за ерунда:
    def get_interest_expenses(self):
        '''процентные расходы'''
        interest_expenses_list = []
        return interest_expenses_list


    Зачем много раз считать одно и то же целиком, чтобы взять только очередной кусочек из всего посчитанного?!
    Это вообще бред. Учитесь основам алгоритмизации и не надо программировать на питоне как не на питоне.

    Вот такое вообще жесть: self.get_revenue()[count]
    Отчего не сохранить в промежуточную переменную?!

    В общем, всё плохо.
    Если у вас есть функция, вычисляющая какой-то список, то зачем её вычислять каждый раз, когда вам нужен только один очередной элеиент этого списка, а вы перебираете его целиком?!
    И так много раз везде!
    Тут не архитектура хромает, тут основы алгоритмизации плачут. Тренируйтесь на кошках, сударь, больше решайте алгоритмических задачек. Структурируйте, декомпозируйте.

    Удачи.
    Ответ написан
    3 комментария
  • Мощный ноутбук для работы и игр?

    @LuchS-lynx
    инженер-ПТО
    С ноутбуками ситуация следующая: Более или менее нормальное железо за свои деньги можно найдти у любого производителя ноутбуков, но дьявол кроется в деталях. Начиная с 4000й серии Ryzen и с 8000-й серии Intel ядер в ноутбуках стало от 6штук/12потоков... что вылилось в полуторакратное увеличение потребляемого питания, т.е. ноутбучные ЦП сегодня потребляют в пике столько же сколько дисктопные ЦП в 2012-2015гг. Т.е. 80-120Вт, может и больше если больше ядер и блок питания, а так же настроенные лимиты по питанию позволяют. Тут не все вендоры одинаково полезны. Та же участь постигла и видеокарты начиная с 2000-й серии от NVidia (RTX это не только классная картинка, но и энергопотребление) Конечно производитель балансит потребление блоком питания и настройками в БИОСе, однако еще есть система охлаждения которая отвратительна в игровых ноутбука:
    - Asus TUF, ASUS ROG (что бы не перегревалось железо зажато под СО),
    - Acer (все модели)
    - MSI (за искл. топовых)
    - Dell (за искл. Alienware на десктопных процессорах)
    - HP (см. Asus)
    - Lenovo (Gaming3, Legion 5/5pro/7 на фоне остальных это сбалансированные игровые машинки, на которых охлад вывозит от 80Вт, в зависимости от модели)
    - Clevo (все ноутбуки, кроме X170/X270 требуют допиливания по частотам и питанию, но в отличие от других ноутбуков здесь сравнительно легко можно разлочить БИОС и становится доступным андервольтинг и изменение PL1 и PL2. Если не знаете что это такое или боитесь, то лучше не связываться. В РФ это Gigabyte G5/G7, DreamMachines, Hasee, Machenike, ThundeRobot, XMG, System76, EuroCom, Sager и др.)

    На счет Acer Nitro - Самый аварийный из всех игровых ноутбуков. Как печатная машинка пойдет, как игровая ... через год-полтора активного гейминга и здравствуй артефакты ВК = приплыли.
    Ответ написан
    1 комментарий
  • Что можно или нужно поменять в этой сборке пк?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Несбалансировано.

    1. Проц из как бы бюджетной сборки, а тачка как бэ игровая
    2. Чудовищная видюха при бюджетном проце и не особо большом количестве памяти будет тупо простаивать
    3. Проверяли, что кулер справится с тепловыделением проца?
    4. Памяти мало, надо 32
    5. сторы судя по цене - дишманские. Зачем?
    6. Мощность БП просчитана? Хватит? БП - очень важная часть, но ее обычно забывают.

    Рекомендации:
    - сократить бюджет на видюху впополам и на эти деньги:
    - проц не ниже i7
    - еще столько же, сколько заложено памяти
    - более надежные сторы, особенно ssd
    - БП от нормального производителя
    Ответ написан
    2 комментария
  • Скрипт для удаления файлов до определенного часа в Windows?

    Crovax
    @Crovax
    Да вообще одной строкой делается.
    Пример:
    Get-ChildItem c:\inetpub\logs\LogFiles\ -Recurse -Filter *.log | Where-Object {$_.LastWriteTime -lt [datetime]::Today.AddMonths(-1)} | Remove-Item
    Ответ написан
    3 комментария
  • Какой систему 2.1 выбрать?

    GavriKos
    @GavriKos
    Все перечисленные +- одно и то же. Идите в магаз, слушайте какие нравятся и все.
    Ответ написан
    4 комментария
  • Как 6 мониторов подключить к одному системнику?

    @tangro
    У, блин, насоветовали тут. Как человек, уже 5 лет собирающий видеостены и мультимониторные конфигурации, прокомментирую:
    -Eyefinity — будет работать. Если купите 4 активных переходника. Вместе с ценой карточки получается внушительно.
    -Nvidia SLI — вообще не при чем. SLI — технология увеличения производительности, а не количества выходов.
    -Nvidia Quadro — будет работать, но поскольку они максимум 4-ех входовые, Вам их понадобиться две (техподдержка Nvidia как-то мне официально подтвердила, что две квадры в одном системнике заработают, а на вопрос, заработают ли три ответила — «попробуйте и напишите нам что вышло, нам тоже интересно»)
    -Matrox — будет хорошо работать, если Вам нужно выводить на экраны только текст, статическую графику или окна какой-нибудь CAD-системы. Если речь идет о Full-HD видео или 3D играх — матрокс не вариант. Плюс купить его в наших края сложновато.
    -USB-мониторы — чушь. Это даже комментировать не хочу.

    В Вашем случае я бы посоветовал материнку с 3-мя PCI-Express и 3 средненьких видеокарты (почти любых, главное смотрите чтобы они были «тонкие» — занимали 1 слот PCI-Eхpress и имели 2 цифровых выхода (DVI\HDMI). Работать все будет хорошо. Сам собирал и 8-ми и 10-ти мониторные конфигурации (могу дать ссылку на фото). Не верьте всяких слухам про максимум 8 мониторов на винде — для Windows 7 это число равно 64.

    Удачи.
    Ответ написан
    7 комментариев
  • Как проще всего посмотреть историю входов пользователей Windows 10?

    @NortheR73
    системный инженер
    Системный журнал безопасности (Security Log), фильтр по событиям 4624, 4625
    Ответ написан
    2 комментария
  • Как пробросить порты на 3G/4G роутере в сети Мегафон со статическим IP?

    Jump
    @Jump
    Системный администратор со стажем.
    Браузер пишет, что сервер не найден
    Порты у вас проброшены. Все нормально.

    Скорее всего проблема в том, что вы пытаетесь открыть страницу из локальной сети по белому IP адресу.
    Ответ написан
    Комментировать
  • Что должен уметь системный администратор?

    Dagzio
    @Dagzio
    System administrator
    дополню: необходимо понимать работу сетей и уметь их подключать и настраивать (роутеры, локальная сеть), так же монтаж сетевых кабелей ( расчитать длину кабеля, правильно обжать), будет так же плюсом умение подключать и настраивать видеокамеры, будет так же огромным плюсом знание хотя бы простых вещей Active Directory. Ну и само собой стрессоустойчивость и умение хорошо пользоваться поисковой системой в интернете. Многое будете понимать и быстро усваивать уже по ходу работы (по личному опыту говорю)
    Ответ написан
    Комментировать
  • Самопроизвольное изменение даты и времени в Windows. Что сделать?

    n0vik0v
    @n0vik0v Автор вопроса
    Решил проблему обновлением BIOS последней прошивкой с сайта производителя.
    На всякий случай заменил и батарейку (не знал, что они отличаются по высоте), хотя дело было не в ней (проверял отключением ПК от питания - время шло).
    Ответ написан
    Комментировать
  • Как узнать адрес сети?

    RazorBlade
    @RazorBlade
    Включить Wireshark и посмотреть широковещательную рассылку с других компьютеров, таким образом узнаем адрес сети.
    Ответ написан
    5 комментариев
  • Как отыскать в сети vlan'ы которые отображаются на роутере но нету на свитче?

    vesper-bot
    @vesper-bot
    Любитель файрволлов
    Скорее всего вы упускаете настройку порта, которым свитч соединен с интерфейсом роутера eth1.20. Если там внезапно tagged vlan 20 (а может и 50 на нем же), а на портах, которыми остальные свитчи подключены, access vlan 20 (т.е. порт без поддержки vlan), остальные свитчи знать о vlan 20 не будут, для них вся сеть будет vlan0.
    Вообще, настройка vlan желательна сквозной, чтобы не поймать случайную петлю в бэкбоне или не соединить на L1 сети, должные быть развязанными, имхо админ, настраивавший это, поленился сделать одинаковые вланы везде, и настроил отображение default vlan остальных свитчей в vlan 20 на том, где вланы таки настроены.
    Ответ написан
    4 комментария
  • Как отыскать в сети vlan'ы которые отображаются на роутере но нету на свитче?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Нарисуйте полную схему магистральных соединений сети. Всё активное L2 оборудование, все соединения между ними с номерами портов на каждой стороне. На каждой единице оборудования по каждому магистральному порту проверьте, что на нём имеются только tagged VLANы, а по каждому клиентскому (включая неиспользуемые) - только один untagged VLAN.

    Если это не так (а, судя по описанию, именно такое состояние вещей и обнаружится) - составьте нужный план VLANов и план перенастройки оборудования на эту схему без прекращения предоставления услуги. И реализуйте. И сеть в порядок приведёте, и будете знать, что и где бегает.

    Да, не забудьте отдельный управляющий VLAN, чтобы рулить оборудованием. И не используйте VLANID=1.
    Ответ написан
    8 комментариев
  • Какое направление более востребовано?

    alexgp13
    @alexgp13
    Руководитель ИТ-проектов
    Data-аналитик - нужен соответствующий склад ума и приличный опыт в бизнесе, это не профессия для старта, начать можно с бизнес-аналитика
    1С-программист - востребовано, на начальном этапе даже можно заработать, нужно разбираться в бухгалтерии. Перспективы очень печальные, вырваться из 1С очень сложно, а через лет пять очень захочется
    Project manager - опять же, работа не для начинающего. Нужно понимать архитектуру, понимать опыт программирования, уметь управлять людьми, уметь заставлять людей работать в срок, сначала стоит идти или в бизнес-анализ, или в indoor-разработку
    Графический дизайн - если любите и умеете хорошо рисовать, то профессия очень приятная - видеть результат своей работы бесценно, по деньгам и перспективам много зависит от таланта и везения
    UI-дизайн - чуть больше кода, чуть меньше творчества, в остальном см. выше
    Цифровой маркетинг - работа под определенный склад характера, если нравится, то почему бы и нет
    SMM и таргетинг - модное направление, высокая конкуренция, крайне низкая отдача на старте
    Ответ написан
    1 комментарий
  • Как правильно вести схемы сети / хранить актуальную информацию?

    vvpoloskin
    @vvpoloskin
    Инженер связи
    Это вопрос не инструмента, а методологии. Для ответа на него, надо понять, кто будет на схемы смотреть.
    Мой опыт показал, что на детальные сетевые схемы не смотрит никто: они излишне перегружены, на них тяжело искать информацию, они огромны (попробуйте нарисовать на одной схеме хотя бы два 48-портовых коммутатора с полностью расключенными портами), не поддерживаю версионность, тяжело редактируемы (попробуйте добавить хотя бы один линк на схему с 50тью шнурками, уверен, вам придётся много чего подвигать)., а отсюда вытекает, что их редко поддерживают в актуальном состоянии.
    Поэтому верное решение при ведении РАБОЧЕЙ документации - это сочетание схем и таблиц. Схема делается одна на типовое решение, а к ней добавляется таблица с учётом портов, IP-адресов, патчкордов и тд.
    Для чего нужны детальные схемы?
    Во-первых, они используются как тех. задание для организации подключения. Например, в подключении участвуют 12 разных подразделений, с ним надо согласовывать работы. Но если вы сам себе админ и подключаете для себя без привлечения третьих лиц, они вам не нужны.
    Во-вторых, для тех поддержки. Но тех. поддержка работает с конкретным пользователем. То есть ей нужен один сервис. Но в мелких организациях админы сами являются тех поддержкой и все знают. Да и готовы ли вы держать отдельную схему на каждый компьютер? Опять же, такие схемы хороши, когда в организации сервиса принимают участие несколько отделов или компаний. Например, в моей типовой схеме при спутниковых включениях участвуют 12 отделов со своими сегментами сетей. Для этого нужна схема.
    В-третьих, для работы с внешними организациями. В первую очередь это операторы. Но часто ли они у вас меняются? Для этого достаточно нарисовать одну схему раз в год с четырьмя портами и забыть.

    Казалось бы, схемы должна смотреть дежурная смена. Но она смотрит на карту на заббиксе, нагиосе или другом инструменте мониторинга.

    Теперь про инструменты. Они все выбираются в зависимости от масштаба сети и количества изменений в ней за определенный отрезок времени. Я приведу список инструментов, которые используются по возрастанию размеров сети, частоте изменений на сетевых элементах и количестве организаций, вовлечённых в эти изменения.
    1) для совсем мелких организаций это draw.io для схем и гугл докс для таблиц.
    2) далее офисный набор Микрософт, включая визио.
    3) далее к офисному пакету добавляется система мониторинга или управления
    4) вики-движки и CMDB
    5) для ещё более крупных выделенные инструменты типа IPAM и NRI

    P.S. Это касается рабочей документации. К исполнительной и проектной другой подход.
    Ответ написан
    2 комментария
  • Какую программу выбрать для слежения за температурой компьютера + отчеты?

    dtrm
    @dtrm
    beginner
    Я Msi Afterburner использую, полет нормальный, даже есть аудио оповещение когда температура на процессоре выше 75.
    Ответ написан
    4 комментария
  • Какую программу выбрать для слежения за температурой компьютера + отчеты?

    nidalee
    @nidalee
    hwinfo
    Уведомления, логирование - все есть. И сенсоров гораздо больше, чем в большинстве альтернатив. Настолько много, что можно заблудиться, если честно...
    Видео на тему.
    Ответ написан
    Комментировать