• Как оплатить зарубежные сервисы, если Visa, Mastercard и PayPal приостановили деятельность?

    xenon
    @xenon
    Too drunk to fsck
    Мое решение (частичное, но дешевое). Через зарубежные prepaid карты. Но возникает проблема, как оплатить. И на этот случай - оплачивать криптой. Палить места, где так продается - не хочу. (Кому реально нужно - легко найдут).

    Как пользоваться криптой (если вообще не знаете) - можно посмотреть в видео на канале "диджитализируй" по запросу "крипта". Потратите может быть полчаса на все, а потом будет не сложнее, чем в банковском приложении.

    У меня получилась такая схема:
    1. Prepaid карта (я взял Mastercard, есть и Visa) на 10 USD (минимальная, для теста) продается за 11.
    2. На сайте где продаются карты за крипту честно указал Россию.
    3. Оплатил эфиром (у меня был эфир, можно было оплатить и другой валютой, может быть меньше бы ушло за транзакцию. Но я не разбирался. У меня вышло 0.0065762 ETH за саму карту + 0.00110887 ETH за транзакцию. В пересчете - 13 долларов. Гораздо дешевле, чем у нас prepaid продают.
    4. Минут через 5-10 платеж полностью обработался и мне прислали "код" для получения карты и ссылку где получать
    5. Там тоже пришлось зарегаться, но России там не было, указал другую страну (а ZIP российский). Карту выдали.
    6. Карта работает. Оплатил ею scaleway. Карта проходит "привязку" (когда надо посмотреть транзакции и сказать код из транзакции) - смотреть транзакции можно.

    Минусы - это именно prepaid карта, с нее можно платить, но Google Cloud и Oracle Cloud ее не берут, им нужна "настоящая" (не prepaid) карта, привязанная к счету. С другой стороны, если нужно купить хостинг, домен или VPN, то очень много кто (может быть, большинство) принимают prepaid - им же, главное, деньги получать, а деньги с нее снимаются вполне хорошо.
    Ответ написан
    Комментировать
  • Как хранить сайт на гитхабе?

    xenon
    @xenon
    Too drunk to fsck
    Хостить такие статические сайты можно на разных хостингах: github pages, gitlab pages (да, у них же хостите и гит-репозиторий и у них же сайт), netlify, cloudflare pages.

    Общая схема: если хостинг там же, где и репозиторий, то обычно через CI/CD делается. Если снаружи (например, репозиторий на гитхабе, а хостинг на cloudflare), то при обновлении репозитория дергается хук и хостинг выкачивает новые странички себе.

    Возможно вам будет интересно почитать про концепцию JAMstack, это как бы "старые" статические сайты (которые быстро загружаются из CDN, не рендерятся на сервере), как из 90-ых, но со всеми фичами из XXI века через javascript API. Вот авто-обновление контента на хостинге из репозитория - это часть JAMstack.
    Ответ написан
    Комментировать
  • Что интересного полезного можно писать на GO для прокачки как разработчика?

    xenon
    @xenon
    Too drunk to fsck
    У Go есть хорошее преимущество - он быстрый, относительно интерпретируемых языков. У меня была идея сделать на базе Go сервис быстрых вычислений, куда можно накидать разных данных из другой программы (на php/python), и вызвать какую-то операцию, которую этот сервис сделает быстрее, чем родной интепретируемый код.

    Примерно, как redis делает для key-value данных. Ведь почти все нужные от редиса функции можно реализовать и внутри python/php программы, но redis все сделает гораздо быстрее.

    Одна из задач для "вычислителя" - безопасный eval(), я такой делал для python (evalidate). eval() почти всегда - очень опасная функция, чтобы использовать ее в своем коде, но хочется. evalidate - только для python, и это плохо. Удобнее было бы как отдельный сервис (на том же хосте), куда можно загрузить данные, юзерский код и исполнить его. Причем сервис с максимально ужатыми правами, чтобы были минимальные риски по безопасности. Я думал сделать evalidate как сервис, но на пайтоне он слишком медленный был бы, а вот на Go - в самый раз.

    Пример типовой задачи: Онлайн-магазин, у нас есть список товаров (может быть в mysql или в redis или прямо в нашу программу загружается как список). Потом пользователь задает какой-то свой сложный поиск, вроде "Найти все смартфоны до 25 000 рублей, с памятью 128, но не Huawei, а если Apple, то можно и до 50 000" и медленное веб-приложение прокидывает это запрос на наш быстрый вычислитель и получает от него ответ.

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

    Если интересно, можно обсудить эту идею.
    Ответ написан
    Комментировать
  • Как сделать так чтобы бот упоминал пользователя который написал ему команду(в группе)?

    xenon
    @xenon
    Too drunk to fsck
    В моем случае, в моем боте, с той либой, которую я использую:

    tgname = message.from_user.username

    Чтоб можно было ответить конкретнее - надо знать, какая библиотека для телеграм-бота используется.
    Но универсальный ответ - смотрите все доступные в коде данные (параметр message обычно), и печатаете его на консоль или делаете dir(message) и увидите имеющиеся поля. Что-то из них наверняка будет тем, что нужно.
    Ответ написан
    Комментировать
  • Используются ли сегодня back end templating engines?

    xenon
    @xenon
    Too drunk to fsck
    Не как вариант ответа/решения, а как дополнение - мне кажется, сегодня все больше "новых статических" вебсайтов (JAMstack), так что, шаблонизаторы (стандартные или собственные) используются еще и в них.

    Но если цель - просто учеба-образование, то изучать стоит на уровне чуть-чуть глубже, чем hello world, может на уровне первой четверти-половины туториала. А остальное просто пробежаться глазами по диагонали, чтобы примерно понять о чем там. А когда (если) возникнет необходимость в более-менее сложных аспектах этого - тогда и вникать уже.
    Ответ написан
    2 комментария
  • Как сделать sleep на N секунд либо до прихода HTTP запроса (асинхронный cron с http сервером)?

    xenon
    @xenon Автор вопроса
    Too drunk to fsck
    Был совет использовать Firebase Cloud Messaging (FCM), которым доставляются push уведомления на устройство. Немного странно, но похоже, его невозможно использовать на десктопе в качестве клиента (принимать сообщения). В python библиотеке нет кода для этого. Даже задал вопрос разработчику PyFCM, его ответ:

    You can only receive messages via an Android, iOS or web client https://firebase.google.com/docs/cloud-messaging#h...

    An iOS, Android, or web (JavaScript) client app that receives messages via the corresponding platform-specific transport service.



    Для себя решил так:

    from http.server import BaseHTTPRequestHandler, HTTPServer
    class RequestHandler(BaseHTTPRequestHandler):
            # implementation
    
    httpd = HTTPServer((self.address, self.port), RequestHandler)
    httpd.timeout = 1
            
    while True:
        httpd.handle_request()
        # check if quit


    Использование метода handle_request вместо serve_forever() позволяет нам получать управление каждый раз по обработке каждого запроса и проверять, не пора ли выйти или исполнить другие действия. А использование timeout=1 дает нам возврат через 1 секунду даже если запросов не было. В итоге
    Ответ написан
    Комментировать
  • Стоит ли идти в NoCode разработку?

    xenon
    @xenon
    Too drunk to fsck
    Общее правило: Если технологию можно легко освоить в короткое время, тогда, даже если такая технология будет в самом деле ценной, все равно, в ней будет слишком много специалистов, высокая конкуренция и низкие доходы. (например, Uber. Стать таксистом несложно, зарабатывают таксисты немного.)

    Либо же технология в принципе будет мало востребована (каждый, кто хочет, сам себе может пожарить яичницу и заварить растворимый кофе, специалисты, освоившие эту технологию не слишком востребованы)
    Ответ написан
    1 комментарий
  • Создание DNS сервера с ответом по умолчанию?

    xenon
    @xenon
    Too drunk to fsck
    Может быть проще на всех доменах прописывать алиасы (CNAME) на другое доменное имя, и тогда если надо всем "переехать" - то достаточно будет поменять только одну запись ?
    Ответ написан
  • Почему Flask игнорирует SESSION_COOKIE_SAMESITE?

    xenon
    @xenon Автор вопроса
    Too drunk to fsck
    Разобрался сам. Текущая версия Flask-Session (0.3.2) в принципе "не знает" про samesite, и использует такой код для установки куки:

    response.set_cookie(app.session_cookie_name, session_id,
                                expires=expires, httponly=httponly,
                                domain=domain, path=path, secure=secure)


    Требуются очень простые изменения в код, Pull request'ы уже есть, но маинтайнер их так и не принял пока что. Сделал свой форк, ставится:
    pip install git+https://github.com/yaroslaff/flask-session.git@samesite


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

    xenon
    @xenon
    Too drunk to fsck
    На всякий случай, если нужно для регистрации в ВК, то SMS-сервисы тоже подходят. ВК делает звонок, но через минуту можно выбрать "послать SMS"
    Ответ написан
  • Почему я не могу сделать запись в базу данных SQlite?

    xenon
    @xenon
    Too drunk to fsck
    Упростите код, уберите все ненужные для отладки строчки (даже если они нужны в работе), чтобы четко было видно, где происходит чудо и почему. Добавьте print'ов чтобы посмотреть, как проходит код и распечатывайте переменные. Дальше, скорее всего, вы сами увидите, где у вас проблема, а если нет - то сможете ее свести до кода с 2-3 строчками.

    Возможно, забыли сделать commit() ?
    Ответ написан
  • На каком уровне должен быть твой javascript для перехода к изучению фреймворка(vue,react)?

    xenon
    @xenon
    Too drunk to fsck
    Думаю, надо учить именно на недостаточном уровне. Тогда и уровень заодно в нужных местах подтянется.
    Ответ написан
    Комментировать
  • Как держать больше 65535 одновременных TCP соединений?

    xenon
    @xenon
    Too drunk to fsck
    Вы говорите об ограничении в 64k портов. Оно проявляется, например, в том, что вы не сможете на сервере запустить (на одном IP) больше 64k сетевых сервисов. (ssh слушает порт 22, apache слушает 80, mysql слушает 3306) итд. Каждый слушающий сервис идентифицируется по сокету ( IP + порт), IP у вас один, портов 64k, значит, 64k слушающих сокетов.

    А вот для установленных TCP соединений:

    socket
    An address which specifically includes a port identifier, that
    is, the concatenation of an Internet Address with a TCP port.

    connection
    A logical communication path identified by a pair of sockets.

    https://tools.ietf.org/html/rfc793

    То есть, соединение идентифицируется по IP сервера, порт сервера, IP клиента, порт клиента.

    Да и вы сами на любом более-менее активном веб-сервере видите через lsof множество соединений, и они все установлены с одним вашим сокетом (IP:80 или IP:443), но у них разный второй сокет. Если пользователь, например, качает какой-то файл в два потока, будет один коннект: server:80 - client:4444 и еще один коннект: server:80 - client:4445. Это разные TCP соединения.
    Ответ написан
    Комментировать
  • Как понять этот тарифный план Contentful?

    xenon
    @xenon
    Too drunk to fsck
    Я, конечно, понимаю, что вы спрашивали 3 года назад... но мало ли - вдруг вопрос еще актуален (или поисковиком кто-то с похожим вопросом зайдет). :-)

    Про API requests - я только что проверял - при работе сайта, он не лезет в Contentful, все данные, которые берутся из Contentful, берутся на этапе генерации статики и хранятся статично. Так что API реквесты выполняются только при перестроении сайта, и сайт даже с очень высокой посещаемостью не использует эти запросы.
    Ответ написан
    Комментировать
  • Как выделить пользователю место на диске?

    xenon
    @xenon
    Too drunk to fsck
    Можно сделать (через dd) файл нужного размера, через mkfs его отформатировать и подмонтировать. Дать юзеру полномочия на эту файловую систему. Железно не выйдет за ее пределы.
    Ответ написан
    Комментировать
  • Как проверить VPS или выделенный сервер?

    xenon
    @xenon
    Too drunk to fsck
    Помимо того, что вам правильно ответили - замерьте еще бенчмарком, например, https://github.com/kdlucas/byte-unixbench . Еще: cat /proc/cpuinfo

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

    xenon
    @xenon
    Too drunk to fsck
    Не будет это толком работать. mailchimp и подобные потому и существуют, что если вы не хотите серьезно погружаться в сферу bulk mailing (учить всякие greylisting, DKIM, DCC, DMARC, SPF, DNSBL, FBL, ARF, а еще и SMTP и DNS, автоматически обрабатывать баунсы и ансабскрайбы) - а это займет серьезное время - то толком запустить это не получится. Сервисы рассылок существуют не потому, что дураки-клиенты не догадались сто тысяч раз в цикле письмо отправить, а потому что они дешевле, чем рассылать самому (время ведь тоже не бесплатное, и упущенная прибыль от недоставленных писем - реальная)

    1. MTA
    постфикс - как и любой другой MTA для обычного применения, не самый удачный вариант. Не факт, что справится. Он - для очень надежной доставки, а это плохо. Нужна быстрая и менее надежная.
    Если у вас сто тысяч получателей - среди них неизбежно будут "дохлые". Письма на них будут оставаться в очереди на несколько дней и постоянно будут происходит перепосылки. Попытки достучаться до мертвого сервера будут отнимать время, в которое не будет рассылаться прочая почта. Ну или придется очень хорошо его изучать, крутить настройки очереди. ( = тратить время, которое деньги).

    2. Спам
    Даже если вам кажется, что ваши письма кристально чистые - все равно, они будут попадать в спам. Хотя бы потому, что многие пользователи жмут кнопку "это спам" вместо отписки. И очень скоро почти вся ваша почта будет валиться в спам везде (даже для тех пользователей, которые хотят ее получать) и толку от рассылок не будет. Кроме того, будут абузы хостеру, и он очень скоро вас попросит, и придется переезжать на плохой и дорогой абузоустойчивый хостинг.
    Ответ написан
    Комментировать
  • Почему Python пропускает первую строку?

    xenon
    @xenon
    Too drunk to fsck
    Да нормально вроде выводит:

    xenon@braconnier:/tmp$ cat x.py
    with open('txt') as text:
        for line in range(0, 3):
            line = text.readline()
            print(line) # Вывод начинается со Addidas
    xenon@braconnier:/tmp$ cat txt 
    Termit
    Addidas
    Nike
    xenon@braconnier:/tmp$ python x.py 
    Termit
    
    Addidas
    
    Nike


    Вы может открываете как-то странно? (в примере не показали откуда text берется)
    Ответ написан
    1 комментарий
  • Как удалить все неиспользуемые зависимости в Linux?

    xenon
    @xenon
    Too drunk to fsck
    apt autoremove может быть? (в новых debian'ах просто apt, не apt-get)
    Ответ написан
    Комментировать
  • Стеганография на картинках?

    xenon
    @xenon
    Too drunk to fsck
    Один из простейших методов стеганографии (но далеко не единственный) в том, чтобы изменять подряд младший бит каждого пикселя подряд.

    Фактически препод говорил об извлечении зашифрованного сообщения из изображения. Но суть стеганографии в том, что не известен сам факт, что в нем есть зашифрованное сообщение, и уж тем более не известно, как именно оно туда вшивалось и в каком формате само это сообщение.

    Конечно, если вы извлечете так побитово поток байтов и он будет осмысленным, например, строкой "Hello world!" - то вряд ли это случайность, скорее всего это на самом деле было спрятано. (Бинго! Вы обнаружили стеганографию и извлекли ее). Но такое можно только если:
    1. Вы угадали правильный алгоритм извлечения, тот же, которым вшивали информацию (из бесконечного множества возможных)
    2. Вы можете легко определить, что полученный результат - осмысленный, а не просто мусор

    Но при правильном использовании, вшиваемая информация будет зашифрованной, поэтому отличить ее от мусора будет невозможно. Это можно проверить простым gzip'ом. Если поток хорошо сжимается - в нем сильная избыточность, это какой-то текст, структура, но не поток шума.

    Это все равно что расшифровать очень надежно зашифрованный файл, потому что шифровал его дурак и не сделал все как надо (например, использовал пароль). В частном случае - возможно, в общем случае - невозможно.
    Ответ написан
    Комментировать