Задать вопрос
  • Как реализовать диалоговый бот на PHP?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    $data = json_decode(file_get_contents('php://input'), TRUE);

    Вот тут в $data у вас не только сообщение, но и много другой информации. В частности, айди юзера.
    я думаю, что этот айди можно использовать в качестве идентификатора сессии, передавая в session_id() перед вызовом session_start()
    Во всяком случае можно попробовать
    если сессия не взлетит, то эмулировать её на любом другом хранилище, используя идентификатор юзера чтобы сохранять состояние бота для него

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

    Поставьте локальный прокси, который не будет требовать авторизации и пробрасывать на родительский, например в 3proxy конфигурация что-нибудь типа

    auth iponly
    fakeresolve
    internal 127.0.0.1

    allow *
    parent socks5+ proxyhost 8080 user password
    socks -p1080

    и используйте в браузере 127.0.0.1 1080.
    P.S. но вообще в браузерах лучше использовать http/https прокси, в них хендшейк короче.
    Ответ написан
    2 комментария
  • Как замаскировать "безголовый" браузер (PHP,Nesk\Puphpeteer)?

    @JWprogrammer
    Вы можете использовать PuPHPeteer вместе с puppeteer-extra-plugin-stealth.

    1) Установка PuPHPeteer
    composer require nesk/puphpeteer
    
    npm install @nesk/puphpeteer

    2) Установка плагина puppeteer-extra-plugin-stealth
    npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealth

    3) Модификация PuPHPeteer для использования плагина
    Изменяем файл vendor/nesk/puphpeteer/src/PuppeteerConnectionDelegate.js

    Строка 3:
    const puppeteer = require('puppeteer'),
    Заменить на:
    const puppeteer = require('puppeteer-extra'),

    Строка 31:
    instruction.setDefaultResource(puppeteer);
    Заменить на:
    puppeteer.use(require('puppeteer-extra-plugin-stealth')())
    instruction.setDefaultResource(puppeteer);


    Вы можете также сделать патч с помощью composer-patches, чтобы не делать каждый раз изменение вручную.

    Источник
    Ответ написан
    Комментировать
  • Как авторизоваться в instagram используя Node.js с подключённым puppeteer?

    @Nc_Soft
    Всё просто (у меня лишь недоумения про наркоманию типа page.$eval и page.click('.Igw0E.IwRSH.eGOV_._4EzTm') )
    const puppeteer = require('puppeteer');
    
    (async () => {
      const browser = await puppeteer.launch({headless: false});
      const page = await browser.newPage();
      await page.goto('https://www.instagram.com/accounts/login/');
      await page.waitFor('input[name="username"]');
      await page.focus('input[name="username"]');
      await page.keyboard.type('login111');
      await page.focus('input[name="password"]');
      await page.keyboard.type('password');
      await page.click('button[type="submit"]');
      await new Promise(r => setTimeout(r, 5000));
    
      await browser.close();
    })();
    Ответ написан
    Комментировать
  • Как сделать так, чтобы в VS Code список новых тегов в html был с новой строки?

    @wibiwa Автор вопроса
    UPD. Нашла решение.
    Если кому-то нужно:

    в файле settings.json прописать следующую команду:

    "emmet.preferences": {
          "output.inlineBreak": 1,
        }

    648ff3cc05dc1740423401.png
    Ответ написан
    Комментировать
  • Как обходят проверку смс-подтверждения при регистрации почты?

    CityCat4
    @CityCat4 Куратор тега Электронная почта
    Дома с переломом ноги
    Никак не обходят. Есть сервисы, которые за долю малую предоставят в аренду на 5 мин. номер - российский, казахский, американский. Все равно не для себя регишь ведь, так что пофиг к какому номеру он привязан. Причем там наваяны уже скрипты по обходу защит - есть и на mail.ru (причем он самый дешевый) и на вконтактик.
    Ответ написан
    5 комментариев
  • Почему продолжает индексироваться сайт?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    проверка в онлайн сервисах показывает

    это несерьезно

    должны логи "показывать"

    но в целом все верно: робот не ходит "на главную и дальше", робот ходит по сохраненным и с них

    так что, думаю, ничего вы, кроме главной, индексировать не запретили
    Ответ написан
    Комментировать
  • Какой гайд поможет делать авторизацию на сайте golang?

    DollyPapper
    @DollyPapper
    Во первых аутентификацию. Авторизация это про проверку прав.
    Если без REST API, то классика это принимать через POST запрос данные с формы.
    Вот статья
    Если кратко:
    Делаете ручку /signin, которая проверяет пароль присланный пользователем с хешем паролей в базе данных (ну или где вы храните данные)
    Если всё ок, создаете сессию, сохраняете сессию где нибудь в хранилище (опять же это может быть база данных, может быть ин мемори, есть библиотеки для этого, погуглите, да хоть в памяти приложения в мапе храните)
    Далее ID сессии записываете в куки и посылаете ответ пользователю в заголовком Set-Cookie sessid="session_id", где session_id это айди который вы раньше сгенерили.
    А далее пользователь ходит на ваш сайт, и какая нибудь мидлвара берет из запроса куки, берете оттуда id сессии, ищет этот айди в хранилище. Если нашла, то пропускает запрос дальше, если нет - 401 Unauthorized.
    Ну в статье вобщем всё подробно описано.
    Ответ написан
    Комментировать
  • Взаимодействие приложений на разных стэках?

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

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

    А потом приходит начальник, и говорит. - эээ, мы вообще планировали распараллеливать эту нейронку, у нас будет от 10 до 10500 инстансов в в облаке. Данные давайте сложим вот в монго-кластер, задачи по обработке сбрасываем в очередь в celery, если очередь вырастает больше чем на N, то кубер автоматически поднимает еще несколько инстансов... и так далее, насколько у него фантазия разгуляется.

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

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

    А кроме производительности бывают вопросы типа "сервис упал во время работы, что случилось с задачей которую он обрабатывал? Нужно ли его рестартнуть? Нужно ли перебросить эту задачу на другой инстанс? Если все таски работают нормально, а эта уже в пятый раз упала, то может она кривая какая-то?" И тут понеслось новым слоем - система мониторинга, оповещения, автоматический или полуавтоматический "кризис менеджмент".

    В общем тема большая, и большие коммпании решают ее по разному - структура сервисов фейсбука и алиэкспресса может сильно отличаться, и каждый будет уверен что его подход хорош. Ну или не очень хорош, но менять архитектуру для сотени или тысяч сервисов - дорого. И комания binance основанная 5 лет назад может архитектурно оказаться гораздо современнее и технологичнее какого-нибудь paypal'а основанного в прошлом тысячелетии. И не потому что paypal не шарит, а потому что переделывать большую систему очень дорого.

    А в майкрософте, основанном 50 лет назад, можно вообще очень странные и неэффективные штуки найти, я уверен.

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

    OtshelnikFm
    @OtshelnikFm Куратор тега WordPress
    Обо мне расскажет yawncato.com
    1. Определение целей и требований: Определение основных целей сайта и требований к его функционалу и дизайну. Это включает определение типа сайта (коммерческий, информационный, портал), структуры и контента.

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

    3. Разработка дизайна: Определяется внешний вид сайта - цветовая гамма, шрифты, стили интерфейса и дизайн элементов.

    4. Верстка: Сверстывание сайта. На этом этапе создаются HTML-страницы сайта и связываются элементы дизайна и функционала.

    5. Наполнение контентом: Внесение информации на сайт в соответствии с его целями.

    6. Тестирование: Проверка сайта на работоспособность, работоспособность функционала и дизайна. На этом этапе исправляются найденные ошибки.

    7. Запуск сайта: После тестирования и устранения ошибок сайт запускается в работу.

    8. Поддержание сайта: Поддержание сайта в актуальном состоянии - добавление нового контента, исправление ошибок, обновление дизайна и функционала.

    регистрация домена и выбор/покупка хостинга также являются важными шагами при создании сайта. Регистрация домена - это процесс выбора и регистрации уникального интернет-адреса сайта. Это можно сделать на специальных сайтах, таких как Namecheap, GoDaddy, 1&1 и т.д.

    Хостинг - это услуга, которая позволяет размещать сайт на сервере и обеспечивает его доступность для интернет-пользователей. Хостинг выбирается в зависимости от потребностей сайта, его трафика, скорости и прочих параметров. Также можно выбрать хостинг-провайдера на специальных сайтах, таких как Hostinger, Bluehost, DreamHost и т.д.

    Касательно WordPress: после того, как домен и хостинг были выбраны и зарегистрированы, можно установить WordPress на свой сайт. WordPress - это платформа для управления содержимым сайта, которая позволяет легко работать с контентом, дизайном и функциональностью сайта. Есть несколько способов установки WordPress, но один из самых простых - это использовать специальные автоматизированные установщики, такие как Softaculous, доступный в панели управления хостингом.

    СЕО составляющие:

    1. Ключевые слова: для успешного продвижения сайта необходимо определить основные ключевые слова, по которым пользователи будут находить вас в поисковых системах.

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

    3. Качественные ссылки: для увеличения авторитетности сайта в поисковых системах необходимы качественные внешние ссылки. Чтобы получить их, нужно предоставлять полезный и высококачественный контент.

    Реклама и продвижение в сети:

    1. PPC-реклама: это тип рекламы, который позволяет быстро привлечь целевую аудиторию на сайт.

    2. Контент-маркетинг: это метод продвижения, который основан на создании и распространении уникального и полезного контента для вашей целевой аудитории.

    3. Email-маркетинг: это метод, который заключается в рассылке электронных писем целевой аудитории для продвижения продукта или услуги.

    4. Социальные сети: один из самых эффективных методов продвижения и рекламы в интернете. Создание качественного контента, взаимодействие с пользователем, повышение узнаваемости бренда – все это возможно благодаря социальным сетям.
    Ответ написан
    Комментировать
  • Как сделан обход NAT в i2p?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если гора не ходит к магомету...

    Скорее всего клиентский софт i2p сам инициирует соединение.
    Ответ написан
  • Что выбрать для CI/CD .NET без докера?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Jenkins.

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

    Можете даже через батник в планировщике задач реализовать
    Ответ написан
    Комментировать
  • С чего начать изучение Linux?

    CityCat4
    @CityCat4
    Дома с переломом ноги
    Дебиан является таковым?

    Является. Базовый дистриб, на основе которого делают многие другие. Мощное коммунити, много документации. Неплохой выбор. На базе дебиана сделана Astra linux, например.
    Поначалу рекомендую не лезть bare-metal, а ставить на виртуалку - первые пять раз точно придется сносить :)

    Кстати, советчиков-комитетчиков, которые предлагают бубунту - слушать не стоит. Иначе есть риск "изучить линукс" на уровне знания блондинкой автомобиля - она знает, как в него сесть, какк завести и поехать, но малейшая неисправность поставит ее в ... позу :) Бубунта - это такой "линух для блондинок", бубунтовод выявляется сразу, как только просишь сделать что-то через консоль :)
    Ответ написан
    8 комментариев
  • Существует ли инструмент для управления серверами ssh?

    saboteur_kiev
    @saboteur_kiev Куратор тега SSH
    software engineer
    Я бы замутил велосипед на ансибл.
    настроить все sshd, чтобы ключи читались только из /etc/ssh/keys/%user/, чтобы никто себе руками ничего не ковырял. И все. Раз в сутки по всем машинам пробежался, обновился и готово
    Ответ написан
    Комментировать
  • Стоит ли идти в Embedded разработку?

    @dima20155
    you don't choose c++. It chooses you
    Диагонально прочитал статью и хочу сказать, что с частью пунктов соглашусь, но, не абсолюнто со всем.
    Прежде всего задайте себе вопрос а чего вы хотите? Что вам интересно?
    Действительно написание ПО под MCU требует понимание (в основном, цифровой) электроники. Например, классические цифровые интерфейсы передачи данных (UART, I2C, SPI) это прямой мостик между знаниями software и hardware и хороший embedder должен понимать как эти протоколы работают и куда ткнуть осцилограф/логический анализатор, чтобы понять что не так.

    Помимо описанного выше есть более hardcore уровень - программирование под embedded Linux. В ситуации, когда вам не хватает ресурсов MCU для, например, проигрывания высококачественного звука, считывания изображений с камер, а также все ещё нужно управлять сигналами на плате напрямую, то ваш выбор это embedded Linux и так далее. Тут опять же много чистого С.

    Есть и третья известная мне сфера для embedded разработчиков (которая также не лишена славы). Компании, занимающиеся разработкой CPU, MCU и иных цифровых/цифроаналоговых микросхем. Да, вам покажется, что это только про Intel, AMD, Samsung, Huawei. Но даже в РФ минимум с пол десятка компаний, которые занимаются подобными разработками и активно нанимают людей. Все это довольно сложные и, в то же время, интересные темы.

    Как вы догадываетесь, для каждого из трех пунктов нужны немного разные знания (хотя базовое образование, в основном, требуется одно и тоже). Также для 2 и 3 пункта ваше физическое присуствие на рабочем месте, вряд ли, потребуется, ровно как и лезть руками что-то паять (просто потому что руками в этих областях уже никто не паяет). Обычно, для embedded из 1 абзаца, требуется больше работы с железом, но и тут есть вариации.

    P.S. Лично мне несколько наскучило копаться с железками (а их проектирование - это моя магистерская работа)) и отлаживать низкоуровневые интерфейсы и код, поэтому я и сам немного свернул с этой embedded дорожки, но я занимался только тем, что описано в 1 пункте и совсем немного из 2 (к слову оба успел поработать и оффлайн и онлайн). Найти работу с моим опытом не было особо сложно, так что embedded не приговор: разонравилось вполне сможете перейти в С++/Rust было бы желание.
    P.S.S. Извиняюсь, что получилось немного скомкано, спрашивайте, могу рассказать про свой опыт подробнее.
    Ответ написан
    5 комментариев
  • Стоит ли идти в Embedded разработку?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Идти надо туда, чем интересно заниматься. Тем более, что в каждой области свои проблемы. У кровавого энтерпрайза может и красивые офисы на 37-м этаже, но из них тоже хочется выйти в окно. Как мне кажется, сейчас как раз такое время, когда спрос на железячников может сильно возрасти, а как следствие, и условия работы улучшатся.
    Ответ написан
    Комментировать
  • Что эффективней, чтение из файла или массив?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вопрос не глупый а вполне себе хороший.

    Его плавное развитие приводит к концепции баз данных. Самое главное что можно сказать тезисно это
    1) Пока памяти хватает (массив) - используй смело память
    2) Диск - больше и дешевле памяти
    3) С памятью работать легко. С диском - очень неудобно и надо обрабатывать IOExceptions почти всегда.
    Диски внезапно полны сюрпризов. Могут быть сетевыми дисками.
    4) Разные диски имеют скорость на порядки разную.
    5) Диски ведут себя очень плохо на random access. От этого даже метрика IOPS появилась.
    Ее очень любят обсуждать админы баз данных.
    6) Существуют структуры данных которые спецом создавались только для дисков (B+Tree)
    7) Диск - переживает выключение питания.
    8) Самые разумные решения - сочетают в себе и диск и память в тех частях кода где это нужно.
    9) Есть интерфейсы программирования которые виртуализирут диск как память. Этим пользуется
    SQLite например.
    10) Диск может достигать очень высокой последовательной скорости чтения или записи в файл
    при условии отсутствия конкурирующих записей в данный момент. Этим пользуются в БД
    для журналирования событий.

    В принципе если современный программист просто будет использовать только оперативную память
    то никто ему не сможет ударить по рукам или подойти с какой-то метрикой и чего-то там измерив
    сказать что он неправ. Тут уж только падения по OOM и потери информации и performance issues
    могут быть каким-то значимым аргументом.
    Ответ написан
    3 комментария
  • Как называется стандартная форма для MacOS?

    Ключевое слово: Cocoa
    https://stackoverflow.com/questions/30269329/creat...

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

    Steel_Balls
    @Steel_Balls
    Считай, что тебе сильно повезло. Джуна да ещё и на такой бэкграунд...
    Будешь дураком, если откажешься
    Ответ написан
    Комментировать