• Как зайти в админку WordPress без доступа к хостингу?

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

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

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Любой дистрибутив из списка поддерживаемых панелью и получающий обновления безопасности (не EOL).
    Ответ написан
    Комментировать
  • Как с помощью .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
    //COPY01 EXEC PGM=IEBGENER
    Ээээ, эттт чиво такое за чудище-снежище?
    Вы его откуда вынули, из какой заначки? На нем офисная тачка с бразуером и либрой тормозить будет, а Вы на фото#опу замахнулись...
    Ответ написан
    Комментировать
  • Можно ли установить 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
    Ответ написан
    Комментировать
  • Что делать если не открывается диск D на Линукс?

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

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

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

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Стоит ли верить тем самым "Топ языков" или нет?

    Нет.
    Если молоток стоит на 1 месте среди инструментов, то это не значит, что он подходит для починки двигателя автомобиля.
    Стоит ли уходить после 9 класса или нет?
    Какие вообще предметы нужно мне сдавать на ОГЭ, чтобы стать разработчиком игр и войти в IT сферу?

    Если ты собрался стать разработчиком игр, то 11 классов - обязательно. Потом в ВУЗ на высшую математику.
    Разработка игр (я имею ввиду всякие серьезные AAA проекты) это по большей части высшая математика: физ. движок, столкновения, рей-трейсинг, теория вероятностей + надо самому быть немного математиком, чтобы быть программистом
    Колледж это лофа, лучше самообучение?

    ВУЗ + самообучение
    ВУЗ - сложные темы по матану, опыт от преподавателей (практикующих), единомышленники/друзья, практика в компаниях
    Самообучение - никто не становится гением без мотивации и постоянных тренировок
    И что же по поводу книг?

    Читай.
    Единственное что могу сказать - практикуйся больше, чем читай. Без практики книги ты не поймешь.
    Так если я изучу C# и C++, смогу ли я делать десктопные, веб и мобильные проги?


    Короткий ответ - да
    Длинный - разработка приложений это навык и опыт. С опытом сможешь делать одно и то же на любом яп

    Вывод по всему лонгриду: доучивайся до 11 класса, иди в ВУЗ и параллельно со всем этим учи программирование. К моменту поступления уже будешь знать чего ожидать и куда копать. Эта нора глубока
    Ответ написан
    4 комментария
  • Сетевой инженер: каковы особенности данной профессии?

    @mordo445
    Пока связь есть, связист не нужен. По этому дорогостоящих специалистов не любят держать много, крои... ой, то есть оптимизация. Связист нужен, когда связи нет. По этому все сетевые инженеры вокруг меня, работающие с инфраструктурой в эксплуатации (провайдеры и кампусы 5000+ хостов) встают по ночам, выходят в соседнюю комнату с застолья, или проводят выходной в парке с детьми скрючившись за ноутбуком на скамейке решая проблемы со связью.
    Сетевики вокруг меня валят кто куда - техподдержка вендора, девопс, инженер майков/линьков, админ АД в банк, вахтой на газовый промысел...
    Оставшимся приходится заменять сваливших. Издержки профессии.
    Сложности же как раз в большом масштабе, первая в стыковке разномастного сетевого оборудования разных поколений и подбору костылей к нему; вторая в технической сложности и скорости развития технологий маршрутизации, когнитивная нагрузка как в программировании, цена ошибки выше, зарплата зачастую ниже.
    Ответ написан
    Комментировать
  • Что необходимо прописать домену, чтобы заработал почтовый сервер?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Вы в MX-записи указываете сервер mx.mail.danfa.net, но нигде не указываете A- или AAAA-запись для этого сервера.
    Скорее всего, MX-запись у вас должна ссылаться на mail.danfa.net
    Ответ написан
    2 комментария
  • Насколько глубоко нужно знать Linux дата-инженеру?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    По-хорошему, надо знать то, что потребуется для работы.
    Обычно это понимание как работает командная строка, терминал, ssh.
    Немножко вглубь: файлы, дескрипторы, файловая система, монтирование, симлинки, хардлдинки, пайпы, конвейеры, синтаксис перенаправления между стандартными потоками ввода/вывода, базовые утилиты командной строки (grep, ls, tee, tail, cat и т.д.), желателен какой-то опыт работы со всем этим, понимание как обычно устроен механизм передачи параметров в таких утилитах, как их выстроить в конвейер, как запаковать\распаковать поток данных на лету. Желательно понимать что такое, как устроены и для чего нужны make-файлы.
    Нужно понимать как пользоваться менеджерами пакетов основных дистрибутивов, желательно в общих чертах понимать что такое докер, контейнеризация в целом, ориентироваться в командах управления образами и контейнерами, понимать что такое вольюмы и где их искать, уметь читать докер-файлы и компоуз-файлы, понимать как вообще это всё работает. Ну и GIT нужно уметь использовать.

    Это основа, но наверно от джунов всего списка никто ожидать не будет - обучат по ходу дела, а если вы претендуете на большее, то сможете быстро разобраться в нужных вопросах, если претензии ваши обоснованы, а пробелы обнаружились.
    Ответ написан
    6 комментариев
  • Как удалить программу без обращения к пользователю?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Отследить трекерами реестра и файловой системы - что создается, обычно это папка в program files, ключи реестра в HKEY_LOCAL_MACHINE и ярлыки - и удалить это все скриптом, не забыв перед этим прибить возможно запущенный процесс этой программы.

    На будущее - в msi надо не инсталлятор оригинальный запихивать, а последовательность действий из этого инсталлятора. Отловить можно все - как написал выше.
    Ответ написан
    Комментировать