Задать вопрос
  • Почему PHP используется в не HighLoad приложениях?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    есть поптыки и в хайлоад
    успешные
    тратят на железо, и х с ним... перепсывать - муторно, новый коллектив, хз какой %% успеха и ваще
    конечно, не все php, на беке в том числе джжава и чуток го да и питона, но морда - php 100% неравифнрованный

    тебе нужно понимать следующее - говорю за Питон, в пихе ситуация +- такая же, но думаю ХУЖЕ

    одна питон переменная , в силу отсутствия типизации, занимает 56 байт (могу врать, 52 там, 62... короче такой порядок), одна го - 2 байта (тоже понятно +- 2-4-8), и это мы еще указателей не касались

    все

    возьми 56 грамм и 2 грамма, умножь ан 10 и на 100, и потаскай, узнаешь как процессор и память ими грузятся, и почему может и не может хайлоад
    Ответ написан
    1 комментарий
  • Как управлять яндекс-лампочкой в обход апи яндекса?

    @justslipknot Автор вопроса
    Как выяснилось, яндекс лампочки - это ребрендированная Tuya лампочка. У Tuya есть локальный протокол и модуль для Home Assistant. Но я решил вопрос немного иначе:
    1. Устанавливаем приложение Smart Life или Tuya Home (оба совместимы с яндекс лампами)
    2. Сбрасываем настройки лампочек и добавляем их в приложении Smart Life / Tuya Home
    3. Регистрируем приложение на платформе Tuya. Инструкция есть в этом репозитории.
      Пояснение
      Этот шаг нам нужно проделать, чтобы получить Local Key, который требуется для шифрования и расшифровки запросов (Local Key, как я понял, обновляется после сброса настроек). Инструкция, как быстро добавить устройства в приложение платформы Tuya так же представлено в репозитории

    4. Выбираем библиотеку для работы с Tuya local api. Я выбрал вот эту библиотеку для C#. На GitHub странице этой библиотеки есть инструкция по работе с Tuya local api.
    5. Реализуем нужный нам функционал


    Небольшой топорный пример из моего тестового проекта:
    Поиск устройств Tuya в сети

    // Эти данные можно получить на странице вашего приложения на платформе Tuya.
    var accessId = "<access id>";
    var apiSecret = "<api secret>";
    
    // Сканируем сеть на наличие доступных устройств Tuya. 
    // Хранение найденных устройств реализуется как душе угодно
    
    var scanner = new TuyaScanner();
    scanner.OnNewDeviceInfoReceived += (sender, info) =>
    {
       // логика сохранения найденных устройств 
    };


    Получение Local Key


    Самый важный этап.
    Пример взят из репозитория библиотеки
    var api = new TuyaApi(region: TuyaApi.Region.CentralEurope, accessId: ACCESS_ID, apiSecret: API_SECRET);
    var devices = await api.GetAllDevicesInfoAsync(anyDeviceId: DEVICE_ID);
    foreach(var device in devices)
    {
        Console.WriteLine($"Device: {device.Name}, device ID: {device.Id}, local key: {device.LocalKey}");
    }


    Отправка команд устройству

    var device = new TuyaDevice("<IP адрес>", "<local key>", "<device id>");
    
    // Пример команды включения лампочки
    // Метод FillJson автоматически подставляет нужные параметры, поэтому сразу пишем запрос.
    // Про методы DPS можно почитать в официальной документации Tuya
    var onCommand = device.FillJson("{\"dps\":{\"20\":true}}");
    
    var request = device.EncodeRequest(TuyaCommand.CONTROL, onCommand );
    
    // Посылаем сигнал. Если устройство не ответит, то падает исключение 
    var encodedResponse = await device.SendAsync(request);
    var response = device.DecodeResponse(encodedResponse);



    Далее остаётся разобраться с кодами команд и можете контролировать лампы как вам угодно.
    Ответ написан
    3 комментария
  • Как распространять приложение под linux?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Я не знаю, почему все так активно советуют собирать пакеты. Надо начать с того, что в Linux никогда не было принято использовать pyinstaller... почему? Потому что в Linux python идёт из коробки. В Windows сложно вынуждать пользователей устанавливать интерпретатор языка и все зависимости, тут же с этим проще гораздо.

    Так что можно просто распространять архив с приложением и инструкцией по запуску вида:

    virtualenv -p python3 env
    . env/bin/activate
    pip install -r requirements.txt
    ./app.py
    Ответ написан
    2 комментария
  • Как подписать дату и время на оси абсцисс в Matplotlib?

    @dmshar
    Ну, например, вот так:
    import pandas as pd
    import matplotlib.pyplot as plt
    from matplotlib.ticker import MultipleLocator
    ds=[
      ['14.06.2022 00:00', 1],
      ['14.06.2022 06:00', 2],
      ['14.06.2022 12:00', 3],
      ['14.06.2022 18:00', 4],
      ['15.06.2022 00:00', 1],
      ['15.06.2022 06:00', 2],
      ['15.06.2022 12:00', 3],
      ['15.06.2022 18:00', 4],
      ['16.06.2022 00:00', 1],
      ['16.06.2022 06:00', 2],
      ['16.06.2022 12:00', 3],
      ['16.06.2022 18:00', 4]
    ]
    
    df=pd.DataFrame(ds,columns=['D','A'])
    df['D']=pd.to_datetime(df['D'])
    df.set_index('D',inplace=True)
    ax=df.plot()
    ax.xaxis.set_minor_locator(MultipleLocator(6))


    62a8787e919cc437718429.png
    Ответ написан
    Комментировать
  • Импорт из XML в HTML локально?

    @rPman
    одно слово - xslt (первый же результат запроса в гугл)
    нативно поддерживается всеми браузерами (это очень старая технология), позволяет строить красивые страницы на основе данных xml, формально не требует javascript (это отдельная технология, так как она формирует html дальше можно использовать javascript но не обязательно)

    работает локально, даже из файла file://
    Ответ написан
    1 комментарий
  • Актуальны ли технологии AJAX и JQUERY при нынешних веб реалиях?

    @unreal_serg
    Jquery вполне актуален для дешевых проектов до 100к рублей примерно. Middle разработчик на React, Vue, Angular стоит тысяч 150 в месяц, в то время как специалист, знающий Jquery стоит чуть ли не в два раза дешевле, отсюда и актуальность Jquery.
    Jquery гораздо проще всех вышеперечисленных библиотек/фреймворков. Накидать на нем слайдер, счетчик и прочие мелкие модули для мелких сайтов - 5 минут, не говоря уже о бесчисленном множестве готовых решений. В то время как, намутить "клик вне элемента" на Vue3 CLI для компонента в списке будет тот еще гемор. В то время как на Jquery навесил слушатель по классу, сделал проверку и не паришься!
    Поэтому вывод: для более менее продвинутых приложений типа SPA, CRM, админка и пр. - актуальнее всего использовать прогрессивные фремворки. Для дешевых сайтов - смело бери Jquery, вероятность ошибиться будет минимальная. Особенно если ты бэкендер и знания фронта посредственные. И жадный заказчик тебе спасибо скажет (наверное).
    А все эти "Jquery не нужен" - детские понты среди программистов аля "я пишу на Vue, jquery - кал", "Я пишу на Java, PHP - кал", "Я пишу на C, Java - кал" и т.д.
    Ajax - это термин, означающий отправку асинхронных запросов. На сегодняшний день актуально использовать fetch в нативном JS/
    Ответ написан
    2 комментария
  • Как генерировать красивый PDF с помощью PHP?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Самый правильный путь генерация не на основе html а с нуля
    Посмотрите сюда https://habr.com/ru/post/31438/

    upd https://stackoverflow.com/questions/7364/edit-pdf-...

    Для вас есть 2 пути :
    Создать шаблон pdf загрузить его и четко по месту разместить текст
    Второй вариант это с 0 сформировать весь репорт.

    В любом случае рабочий процесс следующий: дизайнер отрисовывает макет, а вы вычисляете размеры плейсхолдеров и заполняете их в коде.
    Ответ написан
    8 комментариев
  • Как упаковать в exe скрипт?

    @MaxKozlov
    Скрипт на Powershell пойдёт ?
    # PSv7   $cert = [Convert]::ToBase64String((Get-Content D:\Path\To\Certificate.pfx/cer -AsByteStream), 'InsertLineBreaks')
    # PSv5.1 $cert = [Convert]::ToBase64String((Get-Content D:\Path\To\Certificate.pfx/cer -Encoding Byte), 'InsertLineBreaks')
    $Cert = @"
    MIILYgIBAzCCCx4GCSqGSIb3DQEH
    .....
    .....
    .....
    1y1lZqkQICB9A=
    "@
    
    #LocalMachine
    $location = [System.Security.Cryptography.X509Certificates.StoreLocation]::CurrentUser
    
    #ls Cert:\CurrentUser\
    #ls Cert:\LocalMachine\
    $storeName = 'TrustedPublisher'
    
    $store = [System.Security.Cryptography.X509Certificates.X509Store]::new($storeName, $location)
    $store.Open('ReadWrite')
    [byte[]]$content = [Convert]::FromBase64String($cert)
    $certificate = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($content)
    $store.Add($certificate)
    $store.Close()

    В комментариях сверху показано, как получить содержимое сертификата, которое надо подставить в $cert
    В комментариях к $location показано что ещё бывает
    В комментариях к $storeName Показано откуда его брать

    Поддерживается как импорт просто сертификата, так и pfx с ключом
    Пароль для pfx не проверял, но по идее будет работать если он будет указан как new($content, $password)
    Ответ написан
    Комментировать
  • Где были написана эта программа?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    Открой ехе через любой редактор ресурсов. Там могут быть сведения о сборщике и компиляторе
    Ответ написан
    Комментировать
  • Анимация из картинок в tkinter и асинхромная работа с discord, возможно ли это и как это сделать?

    Vindicar
    @Vindicar
    RTFM!
    Главная проблема: у любого GUI-приложения есть бесконечный цикл обработки оконных сообщений. У любого асинхронного приложения есть бесконечный цикл-реактор, который обрабатывает реакции на завершение асинхронных операций (в т.ч. ввода-вывода). Это два разных цикла, они друг о друге не знают, и в одном потоке может работать только один из них.

    Отсюда два решения.
    1. Плюнуть на Tkinter и использовать PyQT. Есть сторонняя библиотека pyqt-async, которая вроде как позволяет засунуть обработку оконных сообщений в цикл-реактор.
    2. Запустить в главном потоке цикл-реактор, а GUI (на базе любого фреймворка) создать и запустить во вспомогательном. Любые задачи для выполнения в главном потоке делать через asyncio.run_coroutine_threadsafe(). Любые модификации GUI делать, создавая статичный объект-описание операции над GUI и поместив его в очередь (Queue, например). Поток GUI должен периодически читать эту очередь, и вносить найденные там изменения. В ткинтере может помочь метод after(), наверно есть аналоги и в других фреймворках.
    Ответ написан
    Комментировать
  • У кого есть позитивный переход с Windows на Astra Linux в гос/бюджетной сфере?

    jamakasi666
    @jamakasi666 Куратор тега Linux
    Просто IT'шник.
    Вы зайдите по другому, выберете пару машин, накатитие на них желаемое. Итересуйтесь у тех кто за ними работает как оно, что не так, сами смотрите на проблемы и плюсы. Отсюда делайте выводы. Соскочить просто так с наскока точно не выйдет, но это справделиво с любой ОС хоть переход с винды хр\7\8\10\11 и между собой. Всегда будут те кому пофиг, там где проблемы, тех кому все не так и т.д.
    Начните с малого, это не большая кровь и реальный опыт с реальными отзывами от коллег и аналогично ваш опыт с этим хозяйством.
    Ответ написан
    1 комментарий
  • Софт/сервисы для рисования графиков/схем (для разработки софта)?

    zamboga
    @zamboga
    Аналитика данных, BI-аналитика, дашборды
    Софт для прототипирования, создания эскизов, макетов, скетчей, мокапсов, схем и т.п.

    1. Draw.io — бесплатный аналог Visio
    2. https://moqups.com/  (2 проекта на бесплатном акке)
    3. balsamiq.com (desktop бесплатно 30 дней, web версия бесплатная)
    4. ninjamock.com — отличный бесплатный софт для скетчей и макетов
    5. gotiggr.com
    6. pencil.evolus.vn/Default.html
    7. www.teehanlax.com/blog/2010/06/14/iphone-gui-psd-v4
    8. www.lumzy.com
    9. mockupbuilder.com (14 дней бесплатно)
    10. www.axure.com/download
    11. bohemiancoding.com/sketch
    12. Mockups.com = https://moqups.com
    13. https://wireframe.cc (триал 7 дней)
    14. mockups.me (триал-версия действует 30 дней)
    15. www.hotgloo.com (15 дней бесплатно)
    16. https://gomockingbird.com (1 проект на бесплатном акке)
    17. iplotz.com (в бесплатном тарифе возможность работать над 1 проектом, только 5 экранов)
    18. www.protoshare.com (триал-версия работает 30 дней)
    19. www.mockflow.com (1 проект на бесплатном акке)
    20. wireframesketcher.com/features.html
    21. https://www.yworks.com/products/yed
    Ответ написан
    5 комментариев
  • Как сделать, чтоб введенные пользователем данные записывались в список?

    Dunaevlad
    @Dunaevlad
    def user(**kwargs):
        return [kwargs]
    
    
    if __name__ == "__main__":
        data = user(n1="Text1", n2="Text2", n3="Text3")
        print(data)
    Ответ написан
    1 комментарий
  • Как понять блокчейн?

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

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

    Уже начиная от сюда - создана криптовалюта (и не одна, но имеет смысл только биткоин, почему - ниже), в которой с помощью блокчейна и надежного PoW консенсуса, создана 'амбарная книга' где записываются транзакции буквально 'кто кому сколько перевел монет' и все могут доверять этим записям при условии ограничений консенсуса (в случае с PoW это атака 50%+1 и возможность подобрать такое количество подтверждений от циркулирующих сумм, при котором этой атакой можно пренебречь)

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

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

    Сначала создавались криптовалюты, как копирующие bitcoin так и реализация с нуля с необычным функционалом и концепцией, эксперименты с альтернативными консенсусами и прочим,.. которые показали что самого по себе консенсуса недостаточно для обеспечения надежного функционирования системы, нужны еще такие вещи как качественное первоначальное распределение ценности (монет блокчейна, если грубо) и наличие независимых разработчиков, более чем одна команда, грамотное управление и воля участников к поддержанию системы на плаву. Требование про разработчиков очень философское и есть куча примеров когда вне зависимости от консенсуса, главные разработчики, владельцы основного объема ценностей были связаны/созависимы, и были способны уничтожить полезный проект (например что произошло с bitshares, если что это показало на сколько PoS консенсус уязвим).

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

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

    Вся околофилософская мишура, которой пичкают неофитов - это полный бред, который не выдерживает простейшего логического анализа. Главная цель основной массы криптопроектов в криптоэкономике - отъем денег у населения. Основной способ заработка на NFT это либо комиссионные сборы (этим занимаются централизованные площадки, продвигающие NFT проекты авторов, т.е. маркетинг) либо симуляция торговли, когда автор покупает сам у себя свой же товар - показывая фейковую заинтересованность им (ничего нового не изобрели и этим давно занимаются и до смартконтрактов как биржи так и сами авторы криптопроектов). И конечно отмывка денег, буквально - обеление серых финансов, когда ценность генерируется из ничего, это просто повод показать что деньги получены с продажи вот этих произведений искусств, что давно используется в большом мире денег,.. ничего нового.

    p.s. почему только bitcoin? потому что только в нем распределение богатств заметно равномерный (индекс джини), только его консенсус подкреплен огромными финансовыми вливаниями в оборудование для майнинга (очень дорогая атака) и огромное комьюнити независимых разработчиков (правда тут есть куча мест для слабости проекта, но по сравнению с другими - bitcoin выглядит как самый защищенный).
    Остальные проекты создаются не с целью привнести что либо полезное миру, а с целью собрать денег, либо как сбор средств на разработку (ICO или комиссия в блокчейне), а когда консенсус основывается буквально на объеме денег (чистый PoS), то сам факт того что основные деньги проекта сосредоточены у кого то одного (создателя или олигополии инвесторов как это сделано в EOS, точнее dPoS проектах) полностью обнуляет любую защиту.

    p.p.s. меня заинтересовал единственный альтернативный консенсус - proof of identity (сейчас это idena.io - примерно 2к-3к нод, 7к..14к 'майнеров' и количество растет ~10% в месяц , для молодого слабого проекта это чудо в криптоэкономике), основная беда большинства не PoW - возможность атаки количеством нод или деньгами, но тут одна идентити = один человек (ну ок, две - это норма), это гарантирует консенсус, а опасность сбора фермы рабов для атаки на проект усложняется низкой стоимостью монеты, т.е. как это не парадоксально, пока доходы майнеров тут будут низкими - консенсус будет надежным

    т.е. создавать проекты на основе блокчейна с консенсусом PoI - надежно, но вот ставить проект в финансовую зависимость от его монеты - уже опасно.

    хех, надо бы это оформить в виде статьи на хабр и отправлять народ туда
    Ответ написан
    3 комментария
  • Могу ли я как то сохранить python код в MySql?

    kotomyava
    @kotomyava
    Системный администратор
    Можно сохранять как текст, потом получать селектом и выполнять через eval() или exec(). Но делать так не нужно.
    Вероятнее всего, ваша задача решается как-то иначе более разумным способом.
    Ответ написан
    Комментировать
  • Используете ли вы витамины для "мозга"?

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

    Во-вторых, на такие вопросы в интернетах чудовищное количество ответов, в основном оплаченных. Поэтому, когда вам будут настойчиво советовать пить обычный компливит, вспомните, что обычный ундевит от него отличается только ценой - раз в десять, правда... Ну, и найти его в аптеках труднее, особенно на витрине - там как раз красивые коробочки, прославленные телевизором.
    А так - попить витамины пару раз в год, для профилактики, никому еще не вредило. Но надеяться, что они дадут вам способности, которых у вас нет - как минимум наивно. Они разве что спасут от депрессии, хронической усталости и прочих состояний, граничащих с нерабочим. Подстегивать чем-то здоровый организм - это брать взаймы у собственного будущего. Очень не советую.
    Ответ написан
    8 комментариев
  • Linux Mint простейшее приложение для защиты глаз?

    Adamos
    @Adamos
    Максимально простое приложение для защиты глаз - это приложение к монитору хорошо освещенного листа глянцевого журнала и регулировка яркости и контрастности экрана как можно ближе к этому самому листу.
    Поначалу покажется, что мир потускнел и краски потухли. Потом прекратятся кровавые слезы от того, как те мониторы настраивают для продажи.
    Ответ написан
    Комментировать
  • Стоит ли обновляться на Windows 11?

    xez
    @xez
    TL Junior Roo
    Перешел в первый день релиза.
    Проблем нет.
    Использую ПК как основной рабочий инструмент.
    Использую:
    хром, фф, докер (всл 2), идею, телегу, мс офис 19й, стим, эпик ну и по мелочи...

    Нет никакой 11й винды. Это очередное обновление десятки.
    О себе она думает следующее:
    Microsoft Windows [Version 10.0.22000.469]
    Ответ написан
    Комментировать
  • Как telegra.ph понимает, что я - это я?

    @psy667
    Node.js backend developer
    Там используются HttpOnly cookie. То есть сами cookie есть, но в браузере не видны, также к ним нельзя получить доступ из клиентского кода.
    В запросе /check можно увидеть, что в response headers они устанавливаются.
    Set-Cookie: tph_uuid=<token>; expires=Wed, 08 Feb 2023 05:42:55 GMT; path=/; secure; HttpOnly
    Ответ написан
    1 комментарий
  • Можно ли одновременно запустить вторую ОС с внешнего диска?

    @pfg21
    ex-турист
    "внутрь" виртуалбокса можно пробросить "железный" носитель.
    https://www.virtualbox.org/manual/ch09.html#rawdisk
    Ответ написан
    Комментировать