Задать вопрос
  • Как запретить импорт определённого модуля в python-скрипте?

    Vindicar
    @Vindicar
    RTFM!
    Как ты отличишь импорт из скрипта от импорта из библиотеки?
    Можно отреагировать на импорт в момент, когда он происходит - но понять, кто его выполнил, тяжело.
    И даже если ты сумеешь через анализ текущего фрейма стека понять, кто вызвал импорт - импортированный модуль будет закэширован, и скрипт потом сможет обратиться к нему через sys.modules. Так что либо запрещать импорт модуля в принципе (например, через аудит хук), либо разрешать его во всём скрипте.
    Ответ написан
    Комментировать
  • Как запретить импорт определённого модуля в python-скрипте?

    @angeloffy
    import sys
    import uuid
    module_name = "uuid"
    if sys.modules.get(module_name):
        raise ImportError(f"Запрет на модуль {module_name}")

    В ответе: ImportError: Запрет на модуль uuid
    Ответ написан
    Комментировать
  • Возможна ли загрузка по API ссылок на Диск из Яндекс.Почты?

    Да, можно. Вот документация https://tech.yandex.ru/disk/api/reference/public-d...

    Вкратце, необходимо взять полученную публичную ссылку и обработать ее через urlencode. Получите:
    https%3A%2F%2Fyadi.sk%2Fmail%3Fhash%3DcDPZbg71i2Bo80Y7kUnZyQ5WPKM685Cubv3A8j3rPPg%253D


    Затем отправить запрос, в котором в качестве public_key указать закодированный публичный url:
    https://cloud-api.yandex.net/v1/disk/public/resour...


    В ответ получите json с прямой ссылкой на скачивание файла:
    {"href":"https://downloader.disk.yandex.ru/disk/f9b20c3dbd34328c52b62dde0bc0af296c9744333cb39c4fd64e9715d8c895f1/5d0550ed/Gl5hixkLDPWPTXhYLxRGzwIU6SE6zbIztnJBcyBcjxKgxsJiX5ITcwuvga79wVd1Ag1LkmeJkjhEVwtWAwsZHA%3D%3D?uid=0&filename=IMG_1890.JPG&disposition=attachment&hash=cDPZbg71i2Bo80Y7kUnZyQ5WPKM685Cubv3A8j3rPPg%3D%3A&limit=0&content_type=image%2Fjpeg&fsize=5995787&hid=0b77247ae14e2c4d8933a22b211b6485&media_type=image&tknv=v2","method":"GET","templated":false}
    Ответ написан
    2 комментария
  • Какой дистрибутив Linux выбрать для ноутбука?

    @liks
    Простой вариант
    Debian+xfce = легко как убунту + мало ест ram
    после этого ставим kvm+virt-manager туда впихиваем винду 10 enterprise LTSB (там легче отключать слежку) в виртуалку, гуглим все гайды по отключению слежки, обрубаем всё, до чего возможно дотянуться, пробрасываем внутрь видеокарту nvidia, для игрушек, потеря производительности будет минимальна. Если всё еще страшен билл гейтс можете пойти дальше во второй виртуалке поднимаем простенький шлюз типа pfsense, пускаем весь трафик виртуалки с десяткой через него, и в правилах режем весь трафик от серверов слежки microsoft с маской /24 :D
    Итого, если вам не жалко 500-1000 мегабайт оперативки, то вы сможете минимально обезопаситься.

    Если хотите "go deeper" то гуглите qubes+whonix, но для обычного пользователя это пока избыточно. Хотя времена меняются...
    Ответ написан
    7 комментариев
  • Как эффективно и не теряя времени дорасти до трудоустройства web-разработчиком?

    @Beltoev
    Живу в своё удовольствие
    Ты готов, дуй на собеседования
    Ответ написан
    Комментировать
  • Как учиться новому после рабочего дня?

    @Yarrs
    Привет, тоже кину пять копеек.
    Во первых задай себе вопрос, чего ты хочешь, и чего тебе надо. С этого надо начать.
    Мы что-то делаем не просто так, а ради чего-то. Задай себе простые вопросы, кто ты, где ты находишься, в чем твои цели и предназначение. Программирование само по себе отстой, но с него можно начать. Когда то в 80 годы меня обуял восторг, когда я в классе третьем смог понять смысл a=a+1 Но с тех пор много воды утекло. Пойми чем ты хочешь на самом деле заниматься. Что является твоей настоящей целью, заработать денег, вырасти в социуме, поднять детей, прожить интересную жизнь. Как правило в жизни не выйдет получить всё, время это такой ресурс, который можно пустить либо туда, либо туда, либо еще куда. Делай всегда это с умом.

    Когда поймешь что тебе нужно, составь список целей, цели это не что-то постоянное, но вполне себе динамичное и постоянно меняющееся, мы меняемся, мир меняется. Следуй своим целям. Запомни один хороший принцип - возьми сначала себе. Работа хорошо, ты лучше. Как и где взять дело твое. Способы есть разные. Я ниже напишу немного конкретики. Каждый день нужно осознавать свой список целей и учитывать его в текущем дне. Ставить себе задачи на день и назначать самую важную. Если ты не выполнил эту задачу, считай что день неудачен. Каждый день выдели 15 минут времени вечером и делай анализ дня. Это вместе с пониманием своих ценностей и целей самое важное.

    Теперь немного конкретики.
    Вариантом отщепить время себе масса.
    1) Сними комнату рядом с работой.
    2) Вставай раньше. Ложись раньше
    3) Усталость, это усталость от схожего вида деятельности. Усталость можно легко побороть если заняться чем-то иным. Умственно / физически например переключается будь здоров.
    4) Первый час на работе посвяти только обучению. Обычно люди первый час тратят на котиков, чатики и прочую п-нь, будь не как все.
    5) Поговори с начальником, и скажи что тебе нужно развиваться и обучаться. Посмотри на реакцию. Если он не монстр вопрос можно решить.
    6) Всегда думай перед тем как делать. Решения существуют, часто не на поверхности.

    Теперь несколько вредных советов. Как стоит жить и работать.
    1) Если решил связать свою жизнь с программированием, стоит понимать, что платят те у кого есть деньги, и платят столько сколько готовы заплатить. Отсюда выводы. Больше получают узкие специалисты, которые работают с чем то редким и нужным тем у кого есть деньги. Работая на бедных ты заработаешь ровно чуть больше чем на спасибо. Это как у врачей, стоматологи, к которым захаживают сытые бюргеры с зубной болью на коне, кокой-нибудь травматолог / хирург имеют 90 процентов своей обычной клиентуры бомжей и нищебродов. Но процентов 10 попадается людей с деньгами. А вот анестезиолог вообще с клиентурой не работает, денег дополнительно ему вообще не приходит. Отсюда обилие медицинских анекдотов про бедных анестезиологов.
    2) Собственники и заинтересованные в бизнесе люди на платят просто так, а платят за решение проблем. Чем страшнее на первый взгляд проблема, тем больше за нее можно попросить денег. Сложные проблемы решаются разбиением на более мелкие задачки. Но переоценивать свои силы тоже не стоит. Если сделал что-то крутое скромничать не надо. Тебя будут оценивать в том числе по тому, сколько ты просишь.
    3) У предыдущего пункта есть небольшое следствие. Владельцу главное решение и сроки, ему похрен на красоту кода и прочий глупый перфекционизм.
    4) Лучше место работы для получения стартового опыта, какая-нибудь программисткая контора, но она же худшая в плане роста. Ты окружен людьми примерно твоего уровня и способностей, которые будут неизбежно грызться за место под солнцем, каждый твой начальник будет воспринимать тебе как угрозу своему месту. Прорваться в такой системе сложно. Кроме того работать надо на первое звено в пищевой цепочке. Пока линейному программисту что-то перепадет от базовой ставки 10 человек отщипнут по цепочке.
    5) Если ты работаешь в обычной конторе, постарайся выйти со своими идеями на руководителя бизнеса (гендира), он единственный кто заинтересован в проекте в целом, и может воспринять что-то от твоих мыслей лично. Люди ниже просто попытаются тебя использовать в своих целях.
    6) Люди если смотреть поверх бла бла бла всегда действуют в своих интересах, но только так как сами их понимают. Людей можно предсказывать и читать.
    7) Руководители нагружают тех лошадей что тянут. Идеальный работник тот, кто просит мало работает много. Повышения? Не слышали. Зачем повышать того кто хорош на своем месте.
    8) Добиваются чего-то только те, кто выходит за флажки. Есть загон для стада, где всегда будет скучно, обыденно и тухло, но жить можно, есть и другие возможности.
    9) Самая тупая ошибка людей верить, что если будешь хорошо и долго работать что-то изменится. Ничего не изменится.

    Ну хватит в общем, что-то я увлекся, всегда думай головой, вот мой совет.

    ПС: Забыл добавить. Обязательно надо выбираться из провинции в Москву Питер, лучше в Москву. Дальше уже можно как остаться, так и двигать дальше. Если возраст и прочие дела позволяют.
    Ответ написан
    10 комментариев
  • Как организовать самообучение языкам программирования?

    aRegius
    @aRegius
    Python Enthusiast
    1. Определяете минимум, который вам необходим для создания продукта-цели. Ну, то есть, самый минимум, minimum minimorum. Например: "Для создания моего продукта мне нужны HTML, CSS, JS и PHP. Без любого из них я свой продукт создать не смогу. Это мой необходимый минимум."

    2. Ищите по 1-му толковому материалу (чтобы не распылять усилия на 8 книг и 15 онлайн-курсов по JS, условно) для каждого инструмента. Более того, по трем из них я вам могу дать рекомендации: HTML5 + CSS3 + JS. PHP не мой "конек", возможно коллеги подскажут...

    3. Учите в том же порядке: HTML, потом CSS, потом JS/PHP (PHP/JS, тут уж сами смотрите).

    4. Открывайте соответствующий материал по предмету, ознакомьтесь со структурой подачи материала и определите для себя ключевые точки для разбития этого материала на блоки, каждый из которых вы будете стараться пройти "за один присест".
    Например: открываете книгу по HTML, смотрите содержание, и принимаете решение (исходя из имеющегося у вас времени, которое вы готовы в день уделять обучению), что будете в день работать над 2-мя главами материала.
    Или: открываете материал по JS, смотрите содержание, и принимаете решение, что будете в день работать над 1-ой темой (сегодня - "Основы JavaScript", завтра - "Качество кода" и т.п.)

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

    6. До тех пор, пока вы не реализуете свой стартовый проект, учите и практикуйте только то, что вам для этого необходимо. Работу непосредственно над самим проектом начинайте ровно в тот момент, когда почувствуете, что пора. Тут уж все индивидуально.

    7. После реализации проекта можете выдохнуть, осмотреться, наметить очередные цели с учетом приобретенного опыта - и дальше в путь!

    Подытожим: определитесь с минимумом технологий, распланируйте время на изучение, учите технологии step-by-step - не распыляйте усилий, придерживайтесь графика.

    P.S. Вам будет проще, если вы сконцентрируетесь, поставите себе минимально возможные сроки и "возьмете эту крепость блицкригом", ибо на скользкую горку проще всего забраться с разбегу :)
    Ответ написан
    4 комментария
  • Swap, SSD и Debian Linux?

    Jump
    @Jump Куратор тега Твердотельные накопители
    Системный администратор со стажем.
    1)Зависит от объемов записи, и работы TRIM - если нагрузка на запись небольшая и TRIM работает, то оставлять резерв нет смысла. Если TRIM не работает оставить неразмеченный резерв нужно обязательно.

    2)Можете спокойно использовать. Свопу самое место на SSD.

    3)Никаких проблем не вызовет, и никакого снижения скорости тоже. Хотя в тестах вы уже не сможете получить красивые показатели чтения в районе 550мб/с. Но на скорость работы это никак не повлияет.
    Ответ написан
    Комментировать
  • Swap, SSD и Debian Linux?

    @SKRSKR
    1. Как хочешь, так и размечай, производитель с завода уже оставил нужный запас.

    2. Юзай также как и HDD, современные SSD очень надежные и убить их ну очень-очень сложно.

    3. Не вызовет т.к. IOPS, Рандомное чтение станет намного больше.
    и не читай этот бред про оптимизацию и тд, купи, поставь и работай
    Ответ написан
    Комментировать
  • Swap, SSD и Debian Linux?

    @murlogen
    Ничего резервировать не нужно.
    Не парьтесь.

    1. Вы не сможете зарезервировать так, чтобы это использовалось автоматом. Это сделает сам диск. Он вам не отдает больше, чем зарезервировал сам. Вы просто не видите резервы снаружи.

    2. Резервы невидимые есть и в HDD и в SSD вообще то.

    3. Разница в размерах дисков вовсе не поэтому.

    4. SSD убиваются, да. Но не за один же день. У меня вон уже 5 лет работают в самых интенсивных режимах. Не бойтесь. Вы же его ради своего комфорта покупаете, а не ради того, чтобы диск вечно жил. Опасаетесь - возмите дорогой серверный (корпоративный вариант). Но, по моему, проще его через 4 года просто заменить на другой. Они конечно не дешевые. Но раз в 4 года можно себе позволить.
    Ответ написан
    1 комментарий
  • Как урезать свой перфекционизм?

    isqua
    @isqua
    Научу HTML, CSS, JS, BEM и Git
    Чтобы перестать делать лучше то, что ещё не сделано до конца, нужно понять одну простую истину: Запущенный проект лучше, чем не запущенный.

    Давайте потренируемся:
    • Что лучше: запущенный проект с несжатыми стилями или незапущенный со сжатыми?
    • Что лучше: не запущенный проект с десятью страницами или запущенный с тремя?
    • Что лучше: запущенный проект c jQuery или не запущенный без jQuery?


    Надеюсь, вы смогли выбрать! Как узнать, что пора запустить проект? (Под запуском я имею в виду «показать людям». Например, если вы решили написать библиотеку, давайте считать «проект запущенным», если вы выложили её на гитхаб) Нужно прикинуть, сколько времени вам надо на разработку и умножить на два. Если получилось больше двух недель, то стоит разбить проект на части и прикинуть так про каждую часть. Соответственно, ставите дедлайны.

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

    Ну и не беритесь за каждую идею, а выбирайте самые инетересные. Если вы будете делать пять проектов одновременно, скорее всего ни один не доделаете.

    Удачи!
    Ответ написан
    4 комментария
  • Как выбрать открытый проект на Python для поддержки?

    @bromzh
    Drugs-driven development
    1) Выбираешь проект (для начала небольшой), которым пользуешься сам.
    2) Смотришь список issues
    3) Выбираешь ту, которую сможешь сделать сам (для начала лучше поправить небольшую багу)
    4) Форкаешь проект
    5) Реализуешь issue
    6) Гоняешь тесты
    7) Если всё ок, делаешь пулл-реквест автору
    8) Повторить

    Ну и главное, надо следовать общему стилю всего проекта и про pep-8 помнить.
    Ответ написан
    Комментировать
  • Как объяснить разную скорость выполнения вложенных циклов в разных языках?

    Olej
    @Olej
    инженер, программист, преподаватель
    Я программировать только начинаю учиться, и у меня несколько вопросов:

    Вообще то, такие "измерения" во многом - бессмыслица.
    Ваши результаты будут зависеть:
    - от уровня оптимизации, установленного для компилятора...
    - от используемого компилятора с одного и того же языка (Clang из расхваливаемого здесь LLVM будет хуже GCC)
    - от того, насколько ваши массивы (особенно при большем их размере)будут попадать в процессорные кэши и какого уровня кэши, что зависит от способа размещения массивов, порядка дивжения по ним и др. (и разница в скорости может быть не 15%, а 4-5 раз и более)
    - от числа ядер и возможностей языковой системы задействовать несколько процессоров в исполняющей системе...
    - ... от времени восхода Солнца на вашей широте ;-)

    Так что такие "измерения" достаточно бессмысленное занятие, и ним можно оценивать только порядки величин.
    Любопытства ради см. Языки программирования: скорость, Сравнительное обозрение языков программирования.
    Ответ написан
    4 комментария
  • Как объяснить разную скорость выполнения вложенных циклов в разных языках?

    @nirvimel
    Меня как-то не устроило то, как вы оценили производительность Python, поэтому я взялся чуть подправить ваш пример для демонстрации совершенно других результатов. Запуск моего примера кроме установки numpy (pip install numpy), потребует установку еще одной интересной библиотеки (pip install numba) с ее установкой могут быть связанны некоторые трудности на различных ОС (она зависит еще и от llvm), но, поверьте, оно того стоит, полученные цифры производительности должны вам понравиться.
    Для демонстрации реальной скорости вычислений в моем примере миллион итераций это довольно мало, камень не успевает хорошо прогреться. Обратите внимание, я заменил миллион итераций на 100 миллионов, поэтому полученный результат надо разделить на 100 для сравнения с другими языками. Вот, собственно, сам код:
    from numba import jit
    import numpy
    
    
    @jit
    def inner_func(a_list, b_list):
        sum = 0
        j = 0
        for y in range(0, 16):
            for x in range(0, 16):
                p = a_list[j] - b_list[j]
                sum += p * p
                j += 1
        return sum
    
    
    @jit
    def outer_func(a_list, b_list):
        sum = 0
        for g in range(0, 100000000):  # 100 000 000 == 10^8 !!!
            sum += inner_func(a_list, b_list)
        return sum
    
    
    def main():
        maxint = numpy.iinfo(numpy.intc).max
        a_list = numpy.random.randint(maxint, size=256)
        b_list = numpy.random.randint(maxint, size=256)
        sum = outer_func(a_list, b_list)
        print(sum)
    
    
    if __name__ == '__main__':
        main()

    Если вам удалось это запустить и полученные цифры вас впечатлили, то я бы попросил подправить в вашем вопросе ту часть, которая касается Python, для восстановления справедливости в отношении этого великолепного языка.
    Ответ написан
  • Как удалить пакет в Debian?

    @solalex
    Для решения этой проблемы нужно стереть информацию от этом пакете в файле /var/lib/dpkg/status.
    Отредактируйте файл: sudo gedit /var/lib/dpkg/status
    Нажмите на CTRL+F.
    И ввести название проблемного пакета.
    Удалить весь блок информации о пакете.
    ВНИМАНИЕ: Не удалите ничего лишнего!
    Сохраните файл.
    Введите:
    sudo apt-get -f install
    Для полной надежности нужно удалить все файлы пакета.
    Для этого надо установить и удалить этот пакет.
    sudo apt-get install <имя пакета> -y && sudo apt-get remove <имя пакета> -y

    Все проблема решена.

    forum.ubuntu.ru/index.php?topic=144535.0
    Ответ написан
    1 комментарий
  • Идеальный ноут под Linux (Debian)

    @m_bormann
    Я бы обратил внимание, при таких требованиях, на Lenovo Thinkpad t серии. Есть 15-дюймовые, бывают с SSD.
    Ответ написан
    1 комментарий