• Как "расшарить" сессию между вкладками?

    Seasle
    @Seasle Куратор тега JavaScript
    Ответ написан
    Комментировать
  • Где найти рекрутера, который найдет тебе работу за %?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    С таким вопросом можно просто обратиться в любое кадровое агентство.
    Ответ написан
    Комментировать
  • Best practice бэкенда на express?

    @ned4ded
    Верстка, Фронтенд
    я просто оставлю это здесь
    Ответ написан
    Комментировать
  • Как спарсить клиентов Telegram из чата?

    @NooBick
    1) Методы обновляют из-за этого, у тебя их не находит, если искать, то новые.
    2) Ищи здесь
    Вот что нашёл:
    5e6b24ba3dafd770517777.png
    И вот:
    5e6b24e52eef3107404297.png
    Ответ написан
    Комментировать
  • Как отправлять сообщение пользователю в Telegram через бота?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    По-хорошему никак. Дело в том, что, если бы была штатная возможность этого, то мы бы утонули в спаме. Очевидно, что если пользователю нужна ваша рассылка, то у него есть возможность подписаться на нее: прийти и подписаться на ваш канал, подружиться с вашим ботом и т.д.. Кроме того, вы можете попробовать дать официальную рекламу в том канале, к пользователям которого хотите обратиться. Конечно администратор канала вряд ли захочет рекламировать конкурента и реклама вроде "Приходите на мой канал, там всё стырено с этого, но есть много полезных дополнительных плюшек..." не прокатит.

    Технически вы можете сделать бота, который будет не ботом по факту, а выступать в роли телеграм-клиента притворяясь человеком. Это даст ему возможность вступить в какую-то группу, получить её пользователей и что-то им слать, но это не канал, это группа. А вашего клиента придётся регистрировать, а если он начнёт рассылать спам и на это начнут жаловаться люди, вашего клиента мгновенно прикроют.

    Короче, плохая идея. Не делайте так.
    Сделайте лучше что-то полезное и люди сами к вам придут.
    Ответ написан
    Комментировать
  • Поддержка Ethernet rj45 на ESP32?

    AndyKorg
    @AndyKorg
    Кнопконажиматель и припоерасплавлятель
    Че-то нету у esp32 phy интерфейса, нужно пристяжной чип городить. Ну и драйвер Lwip для этого чипа в esp32 писать.
    Ответ написан
    2 комментария
  • Как работает websocket на низком уровне?

    bingo347
    @bingo347
    Crazy on performance...
    Вопрос 1
    Браузер инициирует новое tcp соединение на тот же 80 порт сервера или бывают случаи что на другой ?
    WebSocket работает не поверх голого tcp, а поверх http (а тот уже поверх tcp или tls -> tcp). 80 порт стандартный для http, а 443 - для https (http поверх tls). WebSocket по умолчанию использует те же 80 и 443 порты для ws и wss протоколов соответственно. Но никто не мешает использовать кастомный порт. Конкретные порты для конкретных протоколов - это не более соглашения. Порты работают на IP уровне, который ничего не знает о прикладном уровне.

    Вопрос 2
    Что сервер делает с ws пакетами - проксирует их к СП как есть в обертке, или же обертку раскрывает и передает "чистые/сырые" данные далее ?
    Если речь идет о nginx как о реверси прокси, то для него это обычный http запрос, просто клиент очень долго шлет тело запроса, а сервер тело ответа (главное таймауты тут выключить). Так как http в принципе не запрещает серверу начать слать ответ не закончив чтение запроса, все вполне прекрасно работает.

    Вопрос 3
    Как сервер отличает ws от http - по некой сигнатуре - типа по последовательности первых пришедших байт, по которым можно распознать что это именно ws а не http ?
    По http заголовкам. В частности клиент шлет заголовок upgrade в котором говорит, что хочет WebSocket и еще несколько специфичных для WebSocket заголовков, а сервер отвечает статусом 101 и своим набором заголовков. Это и есть WebSocket рукопожатие. Само общение происходит уже в теле запроса и теле ответа.

    Вопрос 4
    Как эти данные передаются в сторону СП - через переменные окружения, или через unix-socket или через tcp стек?
    Если используя последние два варианта, то получается что сервер держит внутри системы соединения с СП до тех пор пока "наружное" tcp соединение между клиентом и сервером не буде закрыто?
    На уровне tcp вообще пофиг сколько времени открыто соединение, какая из сторон в какой последовательности и сколько данных отправляет. Тут лишь то, что клиент может попробовать открыть соединение, сервер его может принять (или отклонить), а после любая из сторон может слать данные другой или закрыть соединение. Ну и плюс есть гарантии, что потерянные данные будут отправлены повторно и порядок получения совпадет с порядком отправки. На уровне http у нас обычный запрос-ответ, просто клиент слишком долго шлет тело запроса, а сервер - тело ответа. На уровне WebSocket у нас в обе стороны ходят MessageFrame'ы, содержащие данные + метаданные и имеющие четкие границы.

    Вопрос 5
    В свою очередь СП это отдельный unix процесс отличный от основного бекенд приложения, которое работает по принципу "спросили - запустился - обработал - сформировал ответ - отправил - завершился" Или же это все то же бекенд приложение только в том случае если с ним установлено ws-соединение, оно не прекращает свою работу?
    Как реализуете, так и будет. Но одно можно сказать точно, соединение должно быть открытым на протяжении всего сеанса обмена сообщениями.
    Важно еще понимать, что в контексте WebSocket нет понятий запрос и ответ (хотя их могут реализовывать нижележащие протоколы), есть лишь понятие сообщение. Каждая из сторон, пока открыто соединение, может в любой момент времени отправлять любое количество сообщений.

    P.S. если обе стороны (и клиент и сервер) не ограничены только http протоколом для общения через tcp (как например это происходит у браузерных приложений), то WebSocket будет лишней нагрузкой как на сеть, так и на вычисления. Лучше взять какой-нибудь бинарный сериализатор, с четкими границами (msgpack, flatbuffer) и гонять данные по raw tcp или tls.
    Ответ написан
    2 комментария
  • Как работает websocket на низком уровне?

    Ответ на этот и многие другие вопросы в RFC 6455
    https://tools.ietf.org/html/rfc6455
    Ответ написан
    Комментировать
  • Почему не добавляются записи в БД?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Потому что вы пытаетесь записать строку с дублем первичного ключа. Вам MySQL об этом пишет английским по белому.
    Ответ написан
    Комментировать
  • Ошибка inconsistent use of tabs and spaces in indentation?

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

    @Yurchello
    Мы тоже ломали голову в оптовом инетмагазе. За год выстрадали такую схему:
    Например, есть 10 штук некого товара. При добавлении в корзину 4 штуки, для этого же посетителя показывает, что осталось 6 штук, а остальным показывает, что остались всё те же 10 штук, а значит что другой может закинуть в корзину все 10 штук. Ну к примеру, другой чел закидывает 8 штук и резко покупает, а первый находится в корзине и любуеться своим выбором. В этот момент МГНОВЕННО (используя вебсокеты) у первого прямо на глазах происходит драмма - карточка товара, в которой изменились остатки, меняет цвет, красным и перечеркнуто пишется то количество, которое он ранее добавлял ( 4 шт), а количественный input заполняется оставшимися товарами, т.е цифрой 2
    Далее, под товаром пишется грозная надпись, мол по данному товару изменились остатки.
    И завершает эту драмму очень грозная надпись, которая появляется перед кнопкой "оформить заказ", мол обратите внимание, что по некоторым товарам из корзины изменились остатки (вдруг там в корзине сотня товаров и на экран они не помещяются).
    Эта функция для нас крайне актуальная, т.к. во время рассылки про новый товар на сайт налетает много оптовиков, и без этой функции (мы её именуем "реалтаймовой корзиной") начинался полный ХАОС.
    Ответ написан
    2 комментария
  • Какой выбрать простой язык программирования?

    VITYUSHA
    @VITYUSHA
    Game Developer
    Python
    Ответ написан
    Комментировать
  • Как хранить текст в бд?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    VARCHAR(500)
    For column values less than 8KB in size, use binary VARCHAR instead of BLOB. The GROUP BY and ORDER BY clauses can generate temporary tables, and these temporary tables can use the MEMORY storage engine if the original table does not contain any BLOB columns.
    Ответ написан
    Комментировать
  • Кто может объяснить суть решения задачи?

    @MagicMight
    no magic quotes
    Числа у тебя в десятичной системе. Следовательно, каждый разряд числа может быть представлен одной из десяти цифр.

    n % 10 - получаешь остаток от деления всего твоего числа на 10. Так ты получаешь младший разряд.
    Пример:
    12345678 % 10 = 8.

    Math.trunc( n / 10 ) - отбрасывание дробной части. В данном случае операция нужна для того, чтобы выбрасывать на каждом шаге младший разряд.
    Пример:
    12345678 / 10 = 1234567.8
    Math.trunc( 1234567.8 ) = 1234567
    Ответ написан
    2 комментария
  • Нужна помощь в написании бота для телеграмм?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Да, вам нужна помощь в написании бота для телеграмм.
    Ответ написан
    1 комментарий
  • Как стать олимпиадником с нуля?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Вы не понимаете сути олимпиад, олимпиады это не "ОЛОЛО, Я ЩАС КИНУ ЗАДАЧУ НА ТОСТЕР, ТАМ РЕШАТ". На олимпиаде вы столкнетесь с профессиональными, дистиллированными задротами из самого нижнего уровня ада преисподней, которые активно писали код с того момента, как смогли дотянуться до клавиатуры.

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

    Самодельный архиватор, бутсектор, чекдиск, 2D платформер - мы бездушно напишем что угодно, лишь бы посмеяться в лицо серой массе, не отличающей O(1) от O(n log n)

    Олимпиада призвана как раз найти таких самородков среди серой массы "обычных" мальчиков и девочек, которым все это задротство за компом - до лампочки.

    Без внутреннего мотиватора добраться до уровня талантливого соперника (который придет, не сомневайтесь) невозможно.
    Ответ написан
    2 комментария
  • Что не верно в Telegram Боте в коде?

    вам надо просто сходить на https://www.coingecko.com/api/documentations/v3#/c...
    получит ьот туда данные в браузере или консоле
    curl -X GET "https://api.coingecko.com/api/v3/coins/list" -H "accept: application/json" | json_pp  >> cash_list

    и посмотреть как правильно пишется нужный id
    cat cash_list | grep -E  "id.+bitcoin.+cash"
    
          "id" : "10x-long-bitcoin-cash-token",
          "id" : "10x-short-bitcoin-cash-token",
          "id" : "1x-short-bitcoin-cash-token",
          "id" : "3x-long-bitcoin-cash-token",
          "id" : "3x-short-bitcoin-cash-token",
          "id" : "bitcoin-cash",
          "id" : "bitcoin-cash-sv",
          "id" : "bitcoin-free-cash",
          "id" : "ebitcoin-cash",
    Ответ написан
    Комментировать
  • Как сделать гиперссылку в Telegram Боте?

    @twistfire92
    Python backend developer
    Если используете библиотеку pyTelegramBotAPI (telebot), то при отправке сообщения пользуйтесь parse_mode и форматированием текста. В случае с гиперссылкой следует делать так:
    text = '[<Ваш текст>](<Ссылка>)'
    bot.send_message(message.chat.id, text, parse_mode='MarkdownV2')


    Подробнее о parse_mode можно найти тут: https://core.telegram.org/bots/api#formatting-options
    Ответ написан
    3 комментария
  • Почему программисты идут работать в Яндекс?

    @PurplePowder
    Немного про меня: работаю в Яндексе уже 6.5 лет, большую часть из которых проработал в браузере, а сейчас работаю в облаке. Приходил джуном-мидлом, сейчас работаю ведущим разработчиком. Также я один из интервьюеров, кто проводит эти самые алгоритмические секции (каунтер секций перевалил за 250 за пару лет).
    Так вот, если по пунктам, то:

    1) Один из этапов собеседования всегда связан с алгоритмами (даже несмотря на то, что в работе они использоваться не будут).


    Это не совсем верно. На этой секции проверяют не столько зубодробительные алгоритмы, сколько навык написания кода. Да, над задачами нужно будет подумать и применить сортировку/хэшмап/что-то еще, но основной сигнал как раз в том, как человек пишет код. Думает ли он наперед, какие баги сажает, в состоянии ли написать цикл без off by one, если посадил баг, то как будет чинить (проверит по кейсам или попросит кейс? если дать кейс, то найдет ли проблему сам?) - эти навыки как раз дает опыт. На мой взгляд тут нет никакого rocket science

    2) Как правило, собеседование состоит минимум из трех этапов.


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

    3) Требования выше, чем в среднем требуется для рассматриваемой позиции (особенно это касается джуниоров).


    Define "в среднем"? Если говорить по-честному, то грейды в разных компаниях очень сильно разнятся. Человек может быть старшим в компании Х, но при этом отсобеседоваться на уровне младшего разработчика. С другой стороны я видел как люди уходили на должность старшего разработчика после стажировки в Яндексе. Важно, что я говорю именно про то, что везде оценивают людей по-разному

    4) Заработная плата ниже, чем в среднем по рынку.

    Опять же смотря что брать за среднее. Я не жалуюсь :) Но если серьезно, то у нас в стране еще пока не научились воспринимать бонусы типа акций компании как зарплату и считают чем-то ненастоящим. Хотя если их учесть, то получается иной расклад.
    Впрочем еще бывают случаи, когда людям переплачивают на текущем месте. То есть человек дорос до старшего/ведущего/CTO в текущей конторе и у него была какая-то определенная компенсация, но мы его оцениваем на мидла по навыкам и предлагам компенсацию ниже. Что поделать, так тоже бывает.

    Поэтому я не могу понять: что именно с точки зрения специалиста может получить программист, который пойдет к ним работать? Особенно опытный.

    Если ставить вопрос в таком несколько прагматичном ключе, то:
    - Масштаб. Когда DAU исчисляется миллионами, то это вносит очень много нюансов в том числе в разработку. Не так много мест (особенно в России), где можно получить такой опыт
    - Если после предыдущего пункта сразу подумалось "а чего бы тогда не сразу в FAANG?", то в Яндексе интересных и важных задач все еще больше, чем рук, которые способны их решить. То есть большой простор для роста влияния на проект и не только
    - На мой взгляд рост не ограничен примерно ничем. Если человек готов к дополнительной ответственности и способен ее вывезти, то все будет только рады дать ее ему

    Добавлю еще менее прагматичного от себя:
    - Люди и атмосфера. Работать действительно очень комфортно. Правда трудно объяснить детально в чем это выражается, да и это субъективное ощущение
    - Всегда можно учиться чему-то новому. Во-первых можно переходить между проектами, даже если делаешь довольно серьезный шаг в сторону от текущих навыков (до перехода в облако я не знал ничего про распределенные системы/сеть, сейчас знаю). А во-вторых можно поделать что-то помимо своих основных задач (например, я делаю доклады, пишу статьи, собеседую людей, помогаю студентам)
    Ответ написан
    Комментировать