Задать вопрос
  • Возможно ли реализовать запрет скачивания сайта через Flask?

    deepblack
    @deepblack
    все что может загрузить браузер - можно сказать уже скачано.
    Папку с сайтом? Что имеется ввиду: исходники на Python? Так при правильной настройке вебсервера они и так недоступны.
    html - он же для того и предназначен чтобы его качали.

    Если нужно, можно ограничить доступ некоторым useragent, таких образом отвалятся самые ленивые.
    Ответ написан
    Комментировать
  • Почему не записываются данные в бд SQLITE?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    После запросов, выполняющих изменения в БД, надо вызывать
    self.connection.commit()

    И имена колонок и таблиц нельзя брать в одинарные кавычки. Потому что в одинарных кавычках пишутся строки.
    И если даже иногда sqlite и смотрит сквозь пальцы на такую ошибку (когда она может понять по контексту, что имеется в виду), это не значит, что так будет везти всегда.
    Строка 'money' никогда не будет равна числу.
    Ответ написан
    8 комментариев
  • Как создать приложение на JavaScript с расписанием школьных уроков на 7 дней?

    Ankhena
    @Ankhena
    Нежно люблю верстку
    Разбейте задачу на этапы. Чем мельче, тем лучше. Отметьте те, которые можете решить (с помощью гугла, этого сервиса и т.д.). Те, которые совсем не можете - делегируйте.

    Это получается Понедельник это одна страница, а Вторник другая или как?

    Тут, наверное, нужно посмотреть как это сделано у других, благо таких приложений полно. И решить как оно должно быть у вас. Мы-то точно не знаем :)

    Дальше потихоньку решайте эти мелкие задачки.

    p.s. глядишь, пока это сделаете, всё и пройдёт и найдете приложение себе по вкусу.
    Ответ написан
    Комментировать
  • Как использовать в запросе результат выполнения процедуры?

    tsklab
    @tsklab Автор вопроса, куратор тега SQL Server
    Здесь отвечаю на вопросы.
    Нужно использовать временную таблицу:
    CREATE OR ALTER PROCEDURE EncyclNewPageGroup
    AS
      DECLARE @Temp TABLE( Alpha VARCHAR(100), [Path] VARCHAR(100), IDFrom INT, IDTo INT)
      INSERT INTO @Temp EXECUTE EncyclNewPage
      SELECT DISTINCT [Path], IDFrom, IDTo FROM @Temp WHERE NOT IDFrom IS NULL ORDER BY 1
    --
    GO
    Ответ написан
    Комментировать
  • Как правильно подобрать комплектующие?

    @Drno
    Куллер на ЦП - башенный, 120мм
    блок питания - thermaltek с КПД от Bronze
    корпус - 1 куллер на вдув 1 на выдув, этого хватит. по 120мм
    Ответ написан
    6 комментариев
  • Как сконструировать класс в Python, содержащий подкласс Meta с "опциями"?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Надо понимать, что у Django "под капотом" много сложной логики и класс Meta - один из инструментов, предназначенный для того, чтобы упростить программисту, использующему django, работу.
    Собственно, если вы не делаете еще один "инструмент" или не пишите большой проект в команде, то задумайтесь - а нужно ли тратить много времени на переусложнение конструкции ради того чтобы в паре мест немного сократить время разработки?
    Касательно вопроса - ко вложенным классам можно обращаться через self. Далее, как говориться:
    Без ТЗ - результат ХЗ

    Для чего этот класс, что за Field и т.д.
    Да и даже с этой инфой это слишком комплексный вопрос, чтобы можно было нормально ответить в рамках вопроса.
    Ответ написан
    Комментировать
  • Почему не работает код?

    @o5a
    "Работает". Только
    def log_into_steam(self):
            pass

    Функция запускается, просто ничего не делает - все, как запрограммировали.

    Учитывайте правильно отступы. Методы класса должны находиться внутри класса (по отступам), а не абы как.

    Плюс ко всему, метод инициализации пишется с двойным подчеркиванием - __init__
    Ответ написан
    Комментировать
  • Какие бывают запрещающие символы при создании файла?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    В Django есть slugify

    Есть еще вот такой вариант:
    "".join(x for x in s if x.isalnum())

    А так винда сама подсказывает:
    62f54f97bd5c5963993478.jpeg
    Ответ написан
    Комментировать
  • Зачем требовать достоверную личную информацию в регистрации Хабра?

    gluck59
    @gluck59
    Виртуальный глюк
    Во-1 любой ресурс c UGC хочет обезопасить собственый зад, если юзер начнет писать всякое.
    Во-2 данные с привязанными и проверенными документами можно продать многократно дороже.
    Ответ написан
    4 комментария
  • Ошибка RuntimeError: can't start new thread на Python (MacBook Pro M1 2020 ОЗУ 8 Гб) как настроить или обойти?

    ScriptKiddo
    @ScriptKiddo
    Попробуйте выставить параметр threads в False, чтобы грузить в один поток или числом укажите нужное количество потоков. Например: 10
    yf.download(tickers = nasdaq_tickers, period = 'max', interval = '1d', group_by = 'ticker', threads=False)
    yf.download(tickers = nasdaq_tickers, period = 'max', interval = '1d', group_by = 'ticker', threads=10)
    Ответ написан
    6 комментариев
  • Как спрятать приложения и переписки?

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

    Vindicar
    @Vindicar
    RTFM!
    Запомни одну простую вещь: переменная в питоне - это просто ссылка, ярлык!
    Покажу на примере:
    a = [1, 2, 3]  # а содержит ссылку на некий список
    b = a  # b содержит ссылку на тот же список!
    print(b is a)  # True. b - это тот же объект, что и a
    a.append(4)  # Ссылка а не меняется, меняется объект по этой ссылке!
    print(a)  # [1, 2, 3, 4]
    print(b)  # [1, 2, 3, 4] так как b ссылается на то же, что и a
    a = [1, 2]  # теперь a хранит ссылку на другой объект-список!
    print(b is a)  # False. Даже если бы содержимое списков совпало, это два разных объекта.
    print(a)  # [1, 2]
    print(b)  # [1, 2, 3, 4] так как b хранит ссылку на старый список
    a.append(5)
    print(a)  # [1, 2, 5] изменили объект, на который ссылается a
    print(b)  # [1, 2, 3, 4] b ссылается на другой объект, он остался не изменён.


    Соответственно, у твоей проблемы есть четыре разных решения.
    1. Делай копию тогда, когда она тебе понадобится (т.е. тогда, когда в исходном списке уже лежат нужные значения). Не полагайся на то, что две доступные извне переменные всегда будут указывать на один и тот же список.
    2а. Не заменяй список на другой. Если ты хочешь заменить именно содержимое списка, а не заменять один объект-список на другой, можно написать так: a[:] = [1, 2, 3, 4] Для надёжности можешь этот список показать как read-only property вместо обычного поля класса - тогда можно будет модифицировать объект списка (добавлять/удалять элементы), но нельзя будет заменить список на другой.
    2б. Покажи наружу список как read-write property, при записи в property записывай список в обе переменные.
    3. Добавь в класс методы для управления элементами списка, сам список наружу не показывай.
    Ответ написан
    3 комментария
  • Почему список lambda выражений возвращает одинаковые числа?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Все сгенерированные лямбды используют ссылку на переменную из включения. К моменту, их вызова включение уже завершило свою работу и x имеет значение последней итерации - 2. Чтобы избежать такого поведения, нужно замкнуть значение переменной: l1 = [lambda x=x: x for x in range(3)]
    Ответ написан
    1 комментарий
  • TypeError: Boom() takes no arguments ПОЧЕМУ?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Потому что __init__, а не __int__.
    Ответ написан
    Комментировать
  • Как выбрать базу данных?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Есть такая старая поговорка из тайм-менеджмента - "что СРОЧНО - то не важно".

    Если есть некий источник который продуцирует записи со скоростью 10к в секунду и мы хотим писать их сразу (мгновенно) то наверное у нас есть такой-же потребитель который так-же быстро способен их потребить.

    А есть вообще такой? Мне сложно себе представить. Если это биг-дата со стримингом - то там надо использовать не постгрес а другие системы. Kafka+Spark например. Но я не буду давать таких советов потому что люди обычно сидят на консервативных системах типа реляционок и хотят делать на них все. Просто им так удобнее.

    Давайте немного арифметики. Если мы формируем 10к в секунду то за сутки у нас набегает 10000L * 60 * 60 * 24 = 864 000 000 или восемьсот миллионов строк. Это вот если загрузка будет постоянно такая.
    Ответ написан
    Комментировать
  • Что такое SQL inline view?

    @Codebaker
    Всё умею, всё могу!
    Inline view -- это SELECT в FROM части SQL-запроса.
    Их также называют derived table.

    Чтобы реализовать такое поведение БЕЗ inline view, вам пришлось бы сначала создать промежуточную таблицу, в неё вставить результаты первого SQL запроса. Затем на этой временной таблице выполнить свой SQL запрос. Чтобы этого не делать, придумали механизм inline view -- вы просто делаете так:

    SELECT t.a, t.b, iv.c FROM table t, (SELECT b, c, d FROM table2 t2) iv WHERE 1;
    Ответ написан
    1 комментарий
  • Как в цикле создать кнопки с отличающимся аргументом command (Tkinter Python3)?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Использовать замыкание
    ...command=lambda dirIndex=dirIndex: copyImageToDir(dirIndex))
    Ответ написан
    1 комментарий
  • Как выбрать базу данных?

    @rPman
    Ни один адекватный разработчик не будет не разобравшись с задачей писать 10k событий как отдельные события, в подавляющем большинстве случаев данные собираются в пакеты и только тогда пишутся, причем зачастую можно так и хранить.

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

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

    Отделяй модуль/место сбора оперативных данных от их анализа, например делай две базы, отличающиеся как по месту размещения так и по типу (например оперативные данные можно просто собирать в ram, с космическими скоростями, без sql отдельным приложением-демоном), а аналитику собирать паралельно и периодически, под задачу.
    Ответ написан
    1 комментарий
  • Как можно узнать типы данных которые может кушать класс?

    drygdryg
    @drygdryg
    Python-разработчик
    Вызвать функцию help в интерактивном режиме Python, передав ей класс или функцию:
    >>> help(set)
    Ещё для этого удобно использовать среду IPython, в которой можно отдельно получить сигнатуру класса/функции, исходный код, документацию:
    Python 3.10.5 (main, Aug  1 2022, 07:53:20) [GCC 12.1.0]
    Type 'copyright', 'credits' or 'license' for more information
    IPython 8.4.0 -- An enhanced Interactive Python. Type '?' for help.
    
    In [1]: set?
    Init signature: set(self, /, *args, **kwargs)
    Docstring:     
    set() -> new empty set object
    set(iterable) -> new set object
    
    Build an unordered collection of unique elements.
    Type:           type
    Subclasses:     
    
    In [2]: %pdef set
    No definition header found for set
    
    In [3]: %pdoc set
    Class docstring:
        set() -> new empty set object
        set(iterable) -> new set object
        
        Build an unordered collection of unique elements.
    Init docstring:
        Initialize self.  See help(type(self)) for accurate signature.
    
    In [4]: %psource set
    No source found for set
    Ответ написан
    2 комментария