• Как сделать постоянное копирование гугл таблицы на гугл диск?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Пишите в url вместо /edit?... - copy и получаете актуальную копию файла.
    Ответ написан
    Комментировать
  • Возможно ли купить подсеть и вписать себе в маршрутизатор:)?

    @asmelnik
    Если вы хотите вот совсем независимо и самостоятельно всем распоряжаться:
    Технически как физлицо вы не можете "купить" адреса, собственно они вообще не продаются :).
    Вы можете взять в аренду, вернее даже в субаренду, блок адресов у LIR-а.
    Кто такой LIR- Local Internet Registry- https://ru.wikipedia.org/wiki/%D0%9B%D0%BE%D0%BA%D...
    Блоки IPv4 адресов для провайдеронезависимой маршрутизации кратны 256штукам.
    Т.е. вы можете взять 256, 512, 768, 1024, ... и никак иначе.
    В "довесок" к блоку адресов ван нужен будет номер Автономной системы (AS) -- так же аренда.
    И уже потом вы договариваетесь с 1-2-3 и т.д .провайдерами о взаимодействии.
    Вы "объявляете" им, что у вас есть такой-то блок адресов, они передают дальше и т.д.
    И таким образом весь Internet узнаёт, что такой-то блок адресов "приписан" к такому-то номеру AS, а сама AS достижима по такому-то направлению (интерфейсу)....
    В домашних условиях технически возможно, но судя из вашей формулировке вопроса вам понадобится соответствующий специалист... ну или много и долго самостоятельно разбираться с новой для себя темой :)
    Маршрутизация в глобальных сетях выглядит несколько иначе, чем в локальных.
    Ответ написан
    6 комментариев
  • Как убрать черный экран при подключении anydesk?

    @Drno
    Никак. Анидеск подключается к сессии пользователя и берет картинку из неё.
    Без рдп её нет, этой сессии

    Чем рдп не устроил? Зачем нужен платный и неудобный анидеск?
    Ответ написан
    6 комментариев
  • Как зайти в админку WordPress без доступа к хостингу?

    @Refguser
    Делаю ИМ и другие решения
    Имея доступ к ФТП можно сделать всё. Наиболее "легально" - это скинуть пароль, но боюсь это не понравиться заказчику.

    В общем, в твоём случае правильнее дождаться заказчика с правильными данными.
    Ответ написан
  • Установка FASTPANEL на сервере, какую ОС в 2024год?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Любой дистрибутив из списка поддерживаемых панелью и получающий обновления безопасности (не EOL).
    Ответ написан
    Комментировать
  • Как решить проблему при загрузки линукс?

    @Everything_is_bad
    Пробовал вести команды fdisk -l, fsck -f /dev/sdX не помогло.
    Сделать именно то, что тебе написали в сообщении.
    Ответ написан
    Комментировать
  • Как с помощью .htaccess заменять url и возможно ли это?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    не сумел разобраться

    Потому что и не пытался. Это называется ЧПУ. Делается так: https://webfanat.com/article_id/?id=151
    Ответ написан
    Комментировать
  • Поможет ли переустановка Windows при bad блоках на жестком диске?

    Daemon23RUS
    @Daemon23RUS
    Если переставить Windows то это поможет убрать bad блоки на HDD из за которых все тормозит ?
    Вы пропустили важное уточнение "на новый HDD" и в этом случае ответ - ДА
    Ответ написан
    1 комментарий
  • Как в Notepad++ включить подтверждение сохранения при закрытии?

    @alexalexes
    А зачем ему подтверждение? Он временные правки налету в черновики сохраняет. Еще бы история правок была бы доступна после прерывания работы по навигации Ctrl+Z <-> Ctrl-Y, то было бы замечательно.

    PS:
    Настройки -> Резервное копирование -> снимаете галочку "Запоминать текущую сессию для следующего запуска". Остаетесь без автосохранения черновиков, но имеете при этом предупреждение при закрытии программы.
    Ответ написан
    Комментировать
  • В чем заключаются архитектурные ошибки моего кода?

    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 комментария
  • Пойдет ли такой ноутбук для работы в фотошопе и илюстраторре?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Ээээ, эттт чиво такое за чудище-снежище?
    Вы его откуда вынули, из какой заначки? На нем офисная тачка с бразуером и либрой тормозить будет, а Вы на фото#опу замахнулись...
    Ответ написан
    Комментировать
  • Можно ли установить NFC-модуль в телефон?

    @pfg21
    ex-турист
    практически нереально.
    к железкам надо будет написать драйвера под древний андроид, а скорей всего к данному телефону нет никаких исходников и потом налаживать на работу....
    Ответ написан
    2 комментария
  • Перестал работать CCleaner Free в Windows и Android. Какой очиститель порекомендуете?

    mindtester
    @mindtester Куратор тега Windows
    http://iczin.su/hexagram_48
    ни какой. опасны эти программы. CCLEANER уже не однократно был замечен в полном убийстве винды. редко, но метко

    ps
    - в винде уже давно есть штатные средства очистки временных файлов. а чистить реестр.. ну тут если сама мс удосужится, тогда доверился бы.. да и не грузят лишние ветки реестра. могу порекомендовать geekunistaler. в убийстве винды замечен не был, а хвосты подчищает грамотно )))
    - в андроиде, вроде как штатные средства более чем достаточны. у меня сяоми, не скажу на 100% гугловские или сяомивские тулы.. но мне более чем достаточно
    Ответ написан
    5 комментариев
  • Пропал интернет на пк?

    @Drno
    дело или в кабеле или в сетевой карте)

    Раз на ПК показывает что нет линка( не горит лампочка), то что то из этого...

    Проверять можно только опытным путем. Для очистки совести можно еще проверить порт на роутере, переключив кабель в другой LAN порт на нём
    Ответ написан
  • Возможно ли установить Windows XP на внешний жесткий диск?

    saboteur_kiev
    @saboteur_kiev Куратор тега Windows
    software engineer
    Проблема не в самом диске Hitachi, а в интерфейсе (драйвер материнки который отвечает за подключение). XP не умеет с ним работать и поэтому не видит диска.
    Если для этой материнки нет драйверов на XP (производитель не выпускал), то не факт что у вас получится что-то сделать.
    Ответ написан
    Комментировать
  • Компьютер для Видеонаблюдения какой собрать?

    @Drno
    Зависит от ПО. У них немного отличаются требования.
    Так же зависит от фич, типа распознавания движений, дыма, людей, оставленных предметов.
    В любом случае я бы брал минимум современный intel i7 + 32гб оперативки.

    Видеокарта не требуется, если на нём не будет просмотра. (А его не должно быть)

    А так - советую поделить на 2 регистратора фирмы hikvision
    Ответ написан
    Комментировать
  • Как заблокировать загрузку тик тока через модем?

    Если модель роутера позволяет делать такие настройки, то можно добавить ограничение доступа. В интернете полно инструкций как это сделать.
    https://yandex.ru/search/?text=как+на+роутере+забл...
    Ответ написан
    Комментировать
  • Что делать если не открывается диск D на Линукс?

    @va_k
    Нужно делать fsck. В зависимости от того какая там ФС. Если это ntfs, то чекать лучше виндой.
    Ответ написан
    Комментировать
  • Как скачать все файлы из Cloud.mail.ru через мобильное приложение Android?

    @pfg21
    ex-турист
    отписаться в службу поддержки, объяснить ситуацию и попросить сменить номер привязанного телефона.
    это если по правильному.

    к телефону подключить через usb-sata переходник какойнить винчестер с 300 гб свободного места. скопировать.
    Ответ написан
    2 комментария