Задать вопрос
  • Как сделать портативную колонку из активной компьютерной колонки и портативной колонки плохого качества?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    1. Возьмите у мамки тазик, а лучше пластиковый прямоугольный ящик из под рассады. Серьёзно. В него поставьте два пластиковых контейнера, в которых папка на работу обеды берёт.
    2. В эти коробки собираем все винтики и болтики и болтики при разборке девайсов. Каждый девайс в свою коробку.
    3. Организуйте себе удобное сидячее место с хорошим светом.
    4. При разборе фотайте при хорошем свете почаще что как стоит и как было подключено на телефон с разных ракурсов, следите за фокусировкой.
    5. Разберите оба девайса и примерьте нужные внутренности одного к внутренностям корпуса другого. Учтите, звук при этом ухудшится. Можете попробовать вставить аккум и плату от мелкой колонки в большую и включить большую как обычно в комп и послушать. Если устраивает, продолжаете.
    6. Следующий этап - смотрите сопротивление написанное на динамике большой колонки и сопротивление на мелком. Это цифра рядом с буквой омега. Если нашли и цифра близка по значению, то это хороший признак. Нет, всё равно можно попробовать.
    7. Отпаяйте один проводок одного из больших динамиков (тот, который разобрали, второй же пассивный можно пока не трогать). Присоедините отрезком провода этот динамик вместо динамика в мелкой. Включите мелкую, послушайте на разных громкостях? Завелось? Работает? -- считайте повезло.
    8. Посмотрите на плату мелкой колонки. Она Моно? там видно второй контакт,к уда можно было бы подключить второй канал? Не понятно? Запостьте отдельным вопросом снимки платы и внутренностей мелкой колонки, спросите тут куда подпаять второй канал. Если найдёте куда - припаивайте парочку проводов, потом приделаете моно-джек или тюльпанский разьём на основную ретро-колонку, чтобы пару подключать к ней.
    9. Примеряйте уже как следует внутрянку мелкой колонки вовнутрь старой. Некоторые пластиковые перегородки можно поплавить аккуратно заточенным фикспрайсовским паяльником (его не жалко), не изгадьте основной паяльник -- пожалеете потом.
    10. О! Вспомнил! Бинго! Посмотрете на ютубе канал Алекса Гувера. Чувак очень крутой и, имея мастерскую, 3д-принтер и прямые руки, много заморачивается над тем, чтобы рассказать как делать крутые штуки на кухне из сантеха и палок руками, растущими из области таза. У него есть сайт, где подобраны инструкции, схемы, проверенные компоненты и детали, чтобы проапгрейдить колонки не ломая китайскую шайбу. По цене то на то и выйдет, да еще и, может быть, радио добавиите или интернет радио сделаете опциональное.
    11. Ну что там... не отпало желание еще домучивать свой диайвай?
    12. Отпаиваете лишнее, примеряете, пропиливаете, снова примеряете чтоб карточка влезала и всё везде вставлялось. Подпаиваете динамики. Сажаете на горячие сопли всё, чтобы не болталось, собираете постукивая молотком всё в кучу.
    13. Не переживайте. Ещё раз десять всё придётся разобрать и переотприклеить, потому что забыли что-то припаять, потому что забыли что-то отпаять, потому что, ой блин, провод через дырку надо было продеть... Это нормально. Всегда так.
    14. У вас получится какая-то хрень, которая хорош если работает и не дымится при этом.
    15. Там обязательно что-то отпаяется через недлельку или отвалится, или закоротит, но вам уже лень будет починять, потому что вы помните как матерились, когда это всё переприпронаклеивали и аобирали.

    З.Ы.
    Глянул профиль. Крч. Про мамку и папку я так, для красного словца.
    Ну и оно ж ичсто из литературных соображений стилистика. не обессутьте
    З.З.Ы.
    С вашим профилем я бы пилил wifi-интернет-радио на ESP8266. Аккумуляторное питание и зарядку добавить не сложно из отдельных компонентов.
    Ответ написан
    1 комментарий
  • Post и Get запросы, какая между ними разница и что лучше и для каких целей?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    Общего между ними то что они работают одинаково. Разницы между ними технически никакой. А вот идеологические различия есть.

    Я расскажу о них в контексте PHP. Прошу заметить что протокол HTTP к PHP имеет косвенное отношение потому что он создавался для обмена html страницами а PHP просто расширяет возможности и того и другого.

    GET запрос используется чтобы получить данные а POST чтобы отправить. (Напоминаю что технически они работают одинаково).

    Поэтому в контексте PHP опираясь на эту идеологию сделали следующим образом:
    1. При каждом запуске PHP по умолчанию создаются суперглобальные массивы ($_GET, $_POST).
    2. Если в строке запроса есть вопросительный знак(?). То все что после него считается параметрами GET запроса они представлены в формате 'ключ'='значение' и в качестве разделителя используется знак амперсанда (&)
    Пример:
    GET /index.php?name=Андрей&surname=Галкин
    это строка запроса, тут 2 параметра. эти параметры попадут в массив $_GET.
    3. $_POST заполняется другим способом. содержимое этого массива заполняется из "заголовков запроса". То есть из места, скрытого от глаз в явном виде. Всю рутину по созданию таких заголовков берет на себя браузер. Хотя иногда и что-то редактируется в заголовках в ручную.

    Чаще всего пост запрос используется в формах (для отправки данных).

    Например у нас есть форма для входа 2 поля логин и пароль.

    Представим что мы используем GET метод. Тогда при отправке формы мы перейдем на следующий адрес /login.php?login=Андрей&password=123 согласитесь что так передавать такую информацию совсем не безопасно. Любой может открыть ваш браузер и начиная вводить адрес сайта он из истории может увидеть ваши пароли и логины.

    А вот если бы мы указали методом POST то мы бы получили следующий запрос:
    POST /login.php (login=Андрей&password=123) то что в скобочках было бы скрыто и никак не сохранено в браузере.

    Теперь другая ситуация например форма поиска. Мы вводим текст и получаем страницу с результатами. Вот тут уместнее GET форма. потому что нам было бы удобно сразу иметь ссылку на результат поиска, то есть добавить в строку запроса можно выразится "Публичные параметры", которыми можно поделиться. И как результат в строке браузера будет конкретная ссылка на текущую страницу. Мы можем ее скопировать, и разместить где-нибудь, или например скинуть другу. И получить при переходе одну и ту же страницу. А не просить других людей зайти на сайт и в поиск вбить определенную фразу чтобы получить необходимую страницу.

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

    И еще одна хорошая новость их можно комбинировать, например
    POST /index.php?page=login (login=Андрей&password=123) Думаю я уже достаточно объяснил что из этого получится и какие параметры в какой массив попадут.
    Ответ написан
    2 комментария
  • Как в беседе использовать messages.getHistory?

    Xaeruz
    @Xaeruz
    Программный Змей
    #Групповой бот:
    msg_history = vk.method("messages.getHistory", {"peer_id": peer_id})
    #Страничный бот:
    msg_history = vk.messages.getHistory(peer_id=peer_id)
    Ответ написан
    8 комментариев
  • Как работать с pymysql?

    enotcode
    @enotcode
    Front-end developer
    Можете посмотреть на MongoDB. В ней как раз JSON-подобные документы, а в MySQL лучше не хранить так данные.
    Ответ написан
    1 комментарий
  • Поможете найти ошибку в создании бота телеграм?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    1) Код и ошибки запрещено постить картинками. Нужно текстом в соответствующем теге.
    2) Импорты всегда должны быть в начале файла (так принято по стандарту PEP8)
    3) Глупо закрашивать токен в коде, при этом оставлять его в ошибке(Facepalm)
    4) Библиотека telebot установлена?(скорее всего да)
    5) telebot.py переименуйте в что-то другое.
    Ответ написан
    2 комментария
  • Как сделать так, чтобы питон не оставался в time.sleep навечно?

    @Nickellick
    Было бы неплохо предоставить пример кода, где и как вы используете эти функции
    Ответ написан
    1 комментарий
  • В чем суть декораторов?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    В питоне функции и классы - это тоже объекты. У них есть особый синтаксис объявления, после объявления эти объекты доступны по имени как и любой другой объект с именем (переменная).

    Лирическое отступление. В питоне переменные работают не так же как в Си. В Си переменная - это ящичек, а значение в нём как бы лежит. В питоне объект - это как чайный пакетик, а имя как ярлычок на ниточке. Можно к одному пакетику несколько ярлычков привязать, то есть несколько имён. В Си это достигается указателями. В питоне, получается, всё "как бы указатели" и разыменовываются они неявно, под капотом. Но сейчас не о том...

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

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

    Итак:
    my_object_instance = MyClass()
    my_object_instance = my_decorator1(my_object_instance)
    my_object_instance2 = my_decorator2(my_object_instance)

    В этом примере дважды задекорирован объект. Здесь при первом декорировании оригинал нам, судя по коду, не нужен (или декоратор его не менял, смотря что за декоратор, может просто зарегал где-то в списке...), а при втором декорировании нам остаётся доступным и оригинал и задекорированная версия.

    Пока всё просто и не ясно причем тут собаки и чем эти декораторы отличаются от обычных функций. На второй вопрос ответ прост -- ничем особенным. Просто мы такой смысл вкладываем в эти функции. Такая абстрактная концепция.

    В Питоне есть синтаксический сахар, чтобы декорировать объявления функций и классов.

    Иногда хочется наглядно модифицировать или зарегистрировать в каком-то глобальном реестре класс или функцию, но объявление при этом сильно менять не хочется.
    Можно так:
    my_pretty_functions = {}
    
    def my_deco(decorated_function):
        '''Это декоратор, который не меняет декорируемый объект, 
        лишь регистрирует его в словаре'''
        my_pretty_functions[decorated_function.__name__] = decorated_function
        return decorated_function
    
    def my_function(x):
        return x ** 2
    
    # вот декорирование вручную, без сахара
    my_function = my_deco(my_function)
    
    # Но в питоне же есть сахар для этого, и вот альтернативный вариант декорирования:
    @my_deco
    def my_other_function(x):
        return x ** 3

    Эти два способа декорирования работают одинаково, просто "собака" - это синтаксический сахар.

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

    Но замыкания - это отдельная большая история, а узнать об этом вы сможете, к примеру, на занятиях по питону на otus.ru, где я скоро, надеюсь, стану преподавать=).

    Спрашивайте сто не понятно. Я тут не рассмотрел даже малой доли от разных способов применения декораторов в народном хозяйстве. Надо будет состряпать специальный курс про это.
    Ответ написан
    Комментировать
  • В чем суть декораторов?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Комментировать
  • В чем суть декораторов?

    netpastor
    @netpastor
    Python developer
    Если совсем коротко - то декораторы позволяют тебе делать пре- и постобработку результатов выполнения функции
    Ответ написан
    Комментировать
  • В чем суть декораторов?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    если после
    https://habr.com/ru/post/141411/

    но так и не понял ничего(

    то только так:
    https://www.youtube.com/watch?v=iX_z-ePCCWw&t=39s
    Ответ написан
    Комментировать
  • Как сделать чтобы цикл for прошелся по списку и при условии True вывел текст один раз?

    @danSamara
    Цикл не нужен.
    if user in passworld:
        print('Ваш пароль найден!')
    else:
        print('пароль не найден...')


    Но если необходимо всё же через цикл, то:
    for i in passworld:  # Скобки не нужны
        if i == user:  # Скобки не нужны
            print('Ваш пароль найден!')
            break
    else:
        print('пароль не найден...')
    Ответ написан
    2 комментария
  • Какой добавить функционал боту вк?

    Хм, много, что можно добавить.
    Например, переводчик слов, просмотр погоды для Севастополя, курс доллара и евро, определение животных на картинке или текст голосовых сообщений.
    Применений - масса.
    Как вариант можно посмотреть, что уже есть.
    Ответ написан
    Комментировать
  • Какой добавить функционал боту вк?

    joeberetta
    @joeberetta
    Читай: https://epdf.pub/google-for-dummies.html
    Регулярки не знаю, пожалуйста без них

    Вот именно с них и начните. Вы же хотите прокачать скиллы, а тема, которую вы не знаете, но необходима для работы - это лучшее чему можно посвятить проект.

    Напоследок, полезный туториал на который периодически заглядываю
    Ответ написан
    Комментировать
  • Как работают точки в python?

    npanuhin
    @npanuhin
    Разберём pygame.display.set_mode((800, 600)):
    • pygame - имя модуля. Модули могут содержать классы, фунции, переменные. Можно прочитать, например, здесь
    • display (pygame.display) - класс модуля pygame. Обычный класс в каком-то файле модуля. Как из вашего примера про Person и Student
    • set_mode (pygame.display.set_mode) - функция в этом классе

    Например, создадим файл test.py:
    class Person():   # аналог display
        b = lambda x: x**2
        def count(a):   # аналог set_mode
            return 3 * a

    Тогда верна следующая конструкция (для любого файла в той же директории):
    import test
    print( test.Person.count(2) )  # выведет 6


    Так что это работает не так, как вы предложили.
    set_mode это функция, а не класс - функция в классе display.
    Ответ написан
    Комментировать
  • Как получить ориентацию в Xamarin Android?

    newross
    @newross
    Product owner
    Код выше не соотвествует задаче. В базовых доках есть пример
    public override void OnConfigurationChanged (Android.Content.Res.Configuration newConfig)
      {
        base.OnConfigurationChanged (newConfig);
                            
        if (newConfig.Orientation == Android.Content.Res.Orientation.Portrait) {
          _tv.LayoutParameters = _layoutParamsPortrait;
          _tv.Text = "Changed to portrait";
        } else if (newConfig.Orientation == Android.Content.Res.Orientation.Landscape) {
          _tv.LayoutParameters = _layoutParamsLandscape;
          _tv.Text = "Changed to landscape";
        }
      }
    }
    Ответ написан
    2 комментария
  • Как найти нужный файл?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    А не проще при создании сейва просто писать наименование файла сейва в определенный файлик?
    И в Python - просто вычитывать имя этого файла.
    Ответ написан
    Комментировать