Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как поменять global на return в коде? Как сделать, чтобы все сообщения от пользователя из разных функций передавались в последнюю функцию?

Лучший ответ:
Зачем у вас тег JIRA в этом вопросе, если вопрос никакого отношения не имеет к ней?
Ваша проблема в том, что вы не знаете языка, на котором пытаетесь писать. Вернее даже не писать, а исправлять что-то уже написанное.

global - это инструкция, которая объявляет переменную в функции глобальной на уровне модуля. return - это инструкция. позволяющая вернуть из вункции значение в точку вызова.
Вы пишете бота, и функции, задекорированные как обработчики событий от библиотеки для работы с протоколом мессенджера, не вызываются вами в коде непосредственно. Нет никакого смысла, чтобы эти функции что-то возвращали. Там, где они вызываются в недрах библиотеки их результаты не будут никем востребованы.
Здесь использованы глобальные переменные для сохранения результатов рботы хендлеров. По-хорошему нужно создать объектный контекст для этих хначений, сохранять отдельный контекст для каждой сессии общения бота с каждым человеком, но судя по вашему вопросу, вам всё это еще рано. 

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

Худший ответ:
Вбиваете в гугле "Машина состояний телеграм" и хорошенько читаете.
global оставьте в покое.
Вопрос: Как установить Dev и Prod режимы в php.ini?

Лучший ответ:
никак: это просто рекомендуемые настройки, а не реальные.

Худший ответ:
никак: это просто рекомендуемые настройки, а не реальные.
Вопрос: Как сделать кнопку выполнения метода в эдиторе?

Лучший ответ:
А в чем проблема?
Привяжи UI кнопку к методу и во время выполнения нажми - все должно сработать

Худший ответ:
ButtonMethod из библиотеки MyBox - https://github.com/Deadcows/MyBox/wiki/Attributes#...
Вопрос: Только PHP ли такой?

Лучший ответ:
Вариант 1 - шаблонизаторы плюс рендер на стороне сервера
Вариант 2 - RESTful API на PHP а рендер на фронте по полученным данным

Худший ответ:
Вы конечно можете отдельно написать бек, а на фронт сделать на статическом HTML (потеряв при этом ряд возможностей, но представим, что они вам не нужны). Можете добавить на фронт js скриптов, которые будут что-то подгружать.
Никто не заставляет вас использовать php как шаблонизатор.

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

Лучший ответ:
Забудь. Если ты на родных биржах работу не нашёл, то там тем более не найдёшь.

Худший ответ:
Идею о том, что ты гений, который без опыта освоил эти технологии, отметём. Иначе бы и работу нашёл без труда.

Значит ты хочешь выполнять проекты для обучения, чтоб тебе ещё и денег платили? Нет, такого там тоже нет, как и у нас.
Вопрос: Это правильная реализация бинарного поиска?

Лучший ответ:
Работает медленно, потому что вы обрезаете входной массив каждый раз. Для этого приходится обходить и копировать всю нужную часть. Поэтому суммарное время работы будет O(n). 

Чтобы работало быстро вам надо не менять lst, а помнить индексы границ текущего куска.

Ещё, вам надо останавливаться, когда рассматриваемый кусок станет пустым, чтобы решение не вылетало, если искомого числа в списке нет.

И последнее, в питоне есть операция целочисленного деления - //. Используйте ее вместо приведения к int после деления.

Худший ответ:
Твоя реализация зациклится, если такого элемента нет в списке.
Вопрос: Насколько правильный код?

Лучший ответ:
Ошибка:
Не правильно, что backBlock.addEventListener добавляется внутри обработчика клика. Т.е. каждый раз, как нажимаем на openBlock, вешается ещё и ещё один обработчик на backBlock. Достаточно один раз, заранее, так же как сейчас openBlock.addEventListener

Мелочи:

openBlock и backBlock не меняются, их можно вместо let объявить const
внутри обработчиков событий снова и снова искать document.querySelector('.hidden-block') наверное, не имеет смысла, достаточно один раз, заранее const hiddenBlock = document.querySelector('.hidden-block');и далее обращаться к этой константе hiddenBlock.

Культура:
Хорошо бы песочницу на CodePen, где можно вживую проверить работу этого кода. И вставить её в сам вопрос, через кнопку [ + ]

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

<button class="open" data-target="b1">Open1</button>
<button class="open" data-target="b2">Open2</button>
<div class="hidden-block" id="b1">
  <ul>
    <li>Первый</li>
  </ul>
  <button class="close">Close</button>
</div>
<div class="hidden-block" id="b2">
  <ul>
    <li>Второй</li>
  </ul>
  <button class="close">Close</button>
</div>

// 1. Константа, значение не меняется
// 2. Это кнопка, а не блок (название фиговое)
// 3. Их может быть несколько на странице
const openButtons = document.querySelectorAll('.open');

// Закрывашка находится внутри блока, поэтому искать ее нужно именно внутри блока
// чтобы она закрывала только свой блок. Это выкидываем
// let backBlock = document.querySelector('.close');

// Вешаем клики на все открывашки
openButtons.forEach(btn => {
  btn.addEventListener('click', e => {  
    // дергаем ID из data-атрибута
    const targetId = e.target.dataset.target;
    document.getElementById(targetId).classList.add('open-hidden-block');
  });
});

// Перебираем все блоки и ищем в них закрывашки
document.querySelectorAll('.hidden-block').forEach(block => {
  const closer = block.querySelector('.close');
  closer.addEventListener('click', () => {
    block.classList.remove('open-hidden-block');
  });
});
Вопрос: Как создать обственные BB коды на сайт или форум?

Лучший ответ:
Простейший вариант - заменять [CODE] на < pre > и закрывающий [/CODE] на < /pre>. Это не то, что нужно в этом месте ? Чтобы не задумываться о непарных тегах - можно менять регуляркой
$text=preg_replace('~\[CODE\](.*?)\[/CODE\]~si', '<pre>$1</pre>',$text);
Если, внезапно, захочется что-то более навороченного - можно посмотреть ответ nokimaro

Худший ответ:
Берем - используем
Можно создать свои теги
https://github.com/chriskonnertz/bbcode
https://github.com/jbowens/jBBCode

Самый простой вариант сохранять в базу текст с бб-кодами и парсить в html на PHP при рендеринге. Кеширование рендера - опционально.

На js можете сделать сам редактор с кнопочками для удобного оборачивания блоков текста в бб-коды.
Вопрос: Целесообразен ли переход на windows server 2016 и выше?

Лучший ответ:
Главное правило системного администратора: "Работает? - Не трогай!"
У меня есть конторка где все сервера на Win2008 включая терминальный сервер. 
Сам поднимал в 2009 году. 
Только в 2016м сменил железяку, поставил 2012 HyperV и перетащил виртуалки "наживую"
Всех всё устраивает, Всё работает. (тьфу-тьфу-тьфу)
Два года назад поднял терминалку на Win2019 - пререползать отказались
Так что смотри сам - нужно ли оно вашей конторе....

Худший ответ:
Переход с версий с закончившимся сроком поддержки (EOL) не просто целесообразен, а является стандартным походом в жизненном цикле ПО.
Да в общем и целом можно все операции делать как In-Place Upgrade. Но нужны бекапы, подготовка и желательно прогон в тестовом окружении.
Вопрос: Как правильно расшарить второй роутер что бы он раздавал wifi?

Лучший ответ:
Второй роутер переключить в режим точки доступа
Отключить на нем dhcp
Кабель от первого роутера воткнуть в LAN порт а не в WAN

Худший ответ:
Спасибо ребятам выше, решение реально было максимально простым - переключения кабеля в LAN и отключение DHCP
Вопрос: Видео по изучению C++?

Лучший ответ:
Почему не книга/текст? Мне удобно смотреть видео на втором экране.
При таком "изучении" стать хотя бы говнокодером будет вряд ли возможно.

Зато потом можно будет вписать в резюме С++. А на вопрос работодателя об опыте в этом ЯП сказать, что смотрел видяшки на Ютубчике.

Худший ответ:
Я начинал организовывать свои фрагментированные знания по записям лекций Computer Science Center Валерия Лесина и лекций Алексея Петрова "Углубленное программирование C/C++".  Они хостятся на youtube.  Охват очень хороший. Практические задания я придумывал сам и что-то брал из сборника каталогов awesome awesomeness в разделе C++ (github).
Вопрос: Какая CMS подойдет для России в 2022?

Лучший ответ:
Сейчас бы еще CMS отключать)))

Берите опенсорсные... типо October или SantaFox

Вторая вроде даже отечественная и довольно гибкая.

Худший ответ:
Никита Савченко Dev403 wadowad заблокировать wp легко хоть и не полностью, но можно, просто блокировка *.wordpress.org и 98% пользователей на хостингах внутри страны приедут в эротическое путешествие без компаса, вопрос в том, что такие проекты не за что блокировать,(ИМХО пока что), но это как факт к сожалению возможно, и это судьба любой cms которая не сертифицированна в стране
Вопрос: Препроцессоры CSS, зачем их знать чтобы получить работу?

Лучший ответ:
Потому что нанимают в команду, в которой приняты определённые технологии, инструменты и подходы. Нанимают, чтобы сотрудник делал ровно то, что от него хочет наниматель, а не то, что сотруднику нравится.

Худший ответ:
Всё просто. На проекте используют препроцессоры. Поэтому нет смысла нанимать человека, который на них не пишет. Даже не знаю чем они вам не нравятся ведь время они объективно сокращают (их из-за этого и используют обычно)
Вопрос: Есть ли смысл сдавать CCIE?

Лучший ответ:
Если возникает подобный вопрос - то не нужно.

Худший ответ:
Вам нет,  но есть люди, которым есть смысл сдавать этот экзамен.
темы которые там вроде редко используются
это какие?
Вопрос: В чем отличие реляционных от нереляционных БД?

Лучший ответ:
Секунда факт-чекинга:

Кассандра хранит данные не в таблицах, а в семействах столбцов aka в разреженной матрице.
+ В ней нельзя просто так заджоинить или отфлитровать по какому-нибудь полю.
+ Соответственно нет никакой гарантии целостности на уровне ссылок на сущности из другой таблицы.

А NoSQL это не только реляционное/нереляционное, но и про нарушение ACID и использование самого по себе SQL

Худший ответ:
...потому что везде акцент на то, как хранятся данные - структурированно в таблицах
...как уже сказал, везде акцент на таблицы, не на связиКак же так? Я вот отрыл вики, и там сразу акцент на связи (отношения), даже явно говорится, что делать акцент на таблицах - это неправильно:
https://ru.wikipedia.org/wiki/Реляционная_модель_данных
Термин «реляционный» означает, что теория основана на математическом понятии отношение (relation). В качестве неформального синонима термину «отношение» часто встречается слово таблица. Необходимо помнить, что «таблица» есть понятие нестрогое и неформальное и часто означает не «отношение» как абстрактное понятие, а визуальное представление отношения на бумаге или экране. Некорректное и нестрогое использование термина «таблица» вместо термина «отношение» нередко приводит к недопониманию. Наиболее частая ошибка состоит в рассуждениях о том, что РМД имеет дело с «плоскими», или «двумерными» таблицами, тогда как таковыми могут быть только визуальные представления таблиц. Отношения же являются абстракциями и не могут быть ни «плоскими», ни «неплоскими».

Для лучшего понимания РМД следует отметить три важных обстоятельства:


    модель является логической, то есть отношения являются логическими (абстрактными), а не физическими (хранимыми) структурами;
    для реляционных баз данных верен информационный принцип: всё информационное наполнение базы данных представлено одним и только одним способом, а именно — явным заданием значений атрибутов в кортежах отношений; в частности, нет никаких указателей (адресов), связывающих одно значение с другим;
    наличие реляционной алгебры позволяет реализовать декларативное программирование и декларативное описание ограничений целостности, в дополнение к навигационному (процедурному) программированию и процедурной проверке условий.
Вопрос: Связь Javascript с интернетом?

Лучший ответ:
всё придумано за вас: distill.io и аналоги.

Худший ответ:
Для этого нужно написать расширение для браузера, при помощи него можно инжектить свой код на чужие сайты.
Вопрос: Стоит ли уволняться для поиска работы java разработчиком?

Лучший ответ:
как работодатель отнесется к тому, что в данный момент у меня есть работа. Будут ли меня ждать 2 недели (если я подойду компании)?
Часто в таких случаях идут навстречу. Или договоритесь с текущим работодателем, чтобы уволили раньше, без отработки.

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

Худший ответ:
На фоне кадрового голода можно и дольше ждать
Вопрос: Как клонировать виртуальную машину на жесткий диск?

Лучший ответ:
Загружаетесь в Linux и используете команду qemu-img для конвертации из vmdk в raw (или гуглите другую утилиту для конвертации, так или иначе вам нужен raw-образ диска).
Потом raw копируете на физический диск линуксовой командой dd.

Худший ответ:
Берешь rdrive image или clonezilla
Снимаешь образ вирт системы
Грузишься с них на реальном железе, разворачиваешь образ обратно. 

Только гостевые дополнения удали
Вопрос: Как сделать выравнивание img по горизонту, при вращении родителя?

Лучший ответ:
Иконки нужно крутить в обратную сторону с той же скоростью. У каждой иконки, в зависимости от ее начального положения, задать определенный начальный угол поворота. 10 иконок - это с шагом 36 градусов.

Худший ответ:
Иконки нужно крутить в обратную сторону с той же скоростью. У каждой иконки, в зависимости от ее начального положения, задать определенный начальный угол поворота. 10 иконок - это с шагом 36 градусов.
Вопрос: Если JPG с компрессией 85% пересохранить еще раз с компрессией 85%, качество ухудшится?

Лучший ответ:
Если обсуждать конкретно приложение ACDSee то чорт его знает. Вообще JPEG кодек управляется большим набором параметров (progressive, chroma subsampling) и это всё идет вне самого параметра сжатия. 

Я думаю что после десятка пережатий картинка должна достигнуть некого стационарного состояния (аттрактор типа)  и после этого уже не изменятся. Но достигать этого состояния явно не стоит.

А к автору возникает здравый вопрос. Для чего собственно надо что-то пережимать? В мире и так много электроэнергии тратится впустую. Майнинг крипты и прочее. Зачем еще добавлять безсмысленного нагревания атмосферы?

Худший ответ:
Вроде бы вот тут пишут, что потери качества, хотя и незначительные, таки будут (основная потеря  происходит при первом сжатии). Есть упоминание о том, что это зависит от промежуточных операций - обработка jpeg->jpeg идёт иначе, чем когда между джпегами есть преобразование в промежуточный формат (даже если этот промежуточный - без сжатия).
Кроме качества, есть ведь и другие критерии. Вот лично я экспериментально убедился в том, что при многократном повторном jpeg-сжатии файл картинки увеличивается в размерах, иногда довольно значительно (т.е. в нём накапливается какой-то мусор). Качество картинки на взгляд оценить не так уж легко (особенно если оно достаточно близко к 100%), а вот её размер - элементарно. Уже по одной лишь этой причине делать повторное сжатие уже сжатого не стоит, и если что-то не устраивает, то лучше перекомпрессировать исходник заново с изменёнными параметрами.
Вопрос: Что должен уметь Junior C# Web разработчик?

Лучший ответ:
1. Уметь работать с asp net core.
Написание нового контроллера не должно вызывать никаких сложностей.
Должен знать про middleware и разные фильтры. Знать, какими сущностями в разные моменты времени обрабатывается запрос
2. Знать как устроен HTTP хотябы на поверхностом уровне.
Знать что в http-запросе есть заголовки и тело.
3. Уметь работать с dotnet cli, если понадобится. Уметь вызывать dotnet build, dotnet watch, dotnet run, и dotnet publish
4. Уметь искать нужные библиотеки в гугле и в нугете.
5. Уметь работать с git хотябы на базовом уровне: git init, git branch, git add, git commit, git merge.
Можно через GUI. Можно через встроенный плагин в IDE
6. Уметь работать с какой-нибудь одной IDE на базовом уровне: с VS или с Rider.
На базовом уровне - это значит, что ты можешь мышкой создать проект, добавить в него новые файлы, и запустить проект.
7. Хотябы поверхностно знать про фронтенд. Чтобы мог загуглить и решить несложную задачу.
8. Уметь работать с debugger-ом. Ставить точки останова, делать шаг вперёд, с заходом, с обходом.
9. Уметь работать с какой-нибудь реляционной БД. Знать основы про всякие нормальные формы, уметь писать сырой sql запрос.
10. Ну и кнонечно C#, ООП, всякие паттерны.

Худший ответ:
Примерные вопросы к собесу по .NET в целом.
https://qna.habr.com/q/966117#answer_1914755

Для ASP.NET добавляются вопросы про IIS, пул приложений и режим: классический/встроенный.

Поскольку речь про веб, то могут еще спросить: 
- про HTTP, POST/GET/PUT/DELETE, REST API, CORS.
- что такое сессия и куки
- Html, CSS, js. Мучить в том объеме, в котором мучают фронтендеров, конечно, не будут, но проверить, что человек в состоянии отправить ajax запрос, поманипулировать с DOM или поменять в стилях цвет рамки, могут.

В общем, те вещи, которые должен знать любой веб-разработчик, не обязательно C#.
Вопрос: Почему массивы в Си заполняются «М»?

Лучший ответ:
Uninitialized variables are not set to zero; they are initialized to special fill patterns, 0xcc and 0xcd (depending on whether the memory was allocated on the stack or the debug heap). The debugger can also be configured to break when uninitialized memory is read (though there are probably some restrictions on when this feature can be used)

В вашем случае 0xcc
Компилятор заполняет неициализированные переменные именно этим значением, что бы отлавливать значения которые не были инициализированы. Поэтому бывает забавно. В дебаге работает, а в релизе нет.

Худший ответ:
Не заполняются они М.
Если объявляется массив автоматический на стеке без инициализатора, то просто отводится память на стеке (уменьшение/увеличение регистра счетчика стека), никаких "теневых" присваиваний элементам не происходит, элементы массива принимают те значения, которые были в этих ячейках памяти ранее.
То же самое и с динамическим массивом, только механизам выделения памяти другой.
По любому адресу в памяти всегда находится какое-то значение, даже если эта память еще не выделена, просто потому что плашка  памяти уже вставлена в материнку и на нее подано питание.

Возможно в вашем случае это и не случайность - вы же не приводите код, которым выделяете память.
Вопрос: Как работа WiFi зависит от диска?

Лучший ответ:
И причем тут диск?
У вас в одной ОС вифи работает, в другой нет. Логичный вывод - во второй ОС нет поддержки вашего вифи адаптера.

Худший ответ:
В общем проблема решилась. Пришлось установить Brunch второй системой к Linux Mint. только так Wi-Fi заработал.
Вопрос: Как ускорить код?

Лучший ответ:
Там от "цикла в цикле" - одно название. Средняя длина вложенного цикла равна l/(l-1), а вовсе не k. То есть каждое новое размещение делается из предыдущего за амортизированное O(1)

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

Во-вторых, как вам уже сказали - амортизационно это все будет O(s). Потому что внутренний цикл делает "лишних" операций суммарно столько, сколько l-1 на конце всех размещений. Их 0 в l^(n-1)*(l-1) размещениях, 1 в l^(n-2)*(l-1), и т.д. если все это просуммировать, то результат будет меньше l^n - количества итераций внешнего цикла.
Вопрос: Как рассчитать сколько всего вариаций для слова может быть если менять регистр букв?

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

Худший ответ:
Длина слова возведенная в степень количества допустимых символов. Т.е. слово из 10 русских букв будет иметь 10 в 33 степени вариантов.... В твоем случае 4^26
Как-то так...
Я бы не рискнул выводить это в консоль ))))
Вопрос: Почему парсинг на Golang тратит больше времени для выполнения работы, чем парсинг на Python?

Лучший ответ:
Судя по коду на голанге вы посещаете каждую страницу, а на питоне вы просто получаете атрибут href

Худший ответ:
1. Без профилирования результаты можешь выбросить
2. lxml - это си а не питон и вполне может быть быстрее го
3. Парсить страницу 43 секунды - неадекватно. Так что возвращаемся к пункту #1
Вопрос: Что за ошибки...?

Лучший ответ:
Ой, даже не знаю...
ImportError: No module named PIL



Худший ответ:
Модуль pyscreenshot требует PIL, но почему-то не указывает его в зависимостях. Поставь через pip install pillow
Вопрос: Где найти бесплатные курсы по data analytics?

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

Худший ответ:
Насчет data anlytics не скажу. Но вот на https://databricks.com/ я находил бесплатные курсы по инжерении bigdata. Если повезет - там еще акции всякие прилетают.
Вопрос: Стоит ли тратить время на самописный клиент/sdk для какого то (rest) api?

Лучший ответ:
Основной минус кодогенераторов в том что они за тебя думают. На типовых задачах все хорошо, но "внезапно" MS сменила механизм получения токена, и ты перед разбитым корытом. Из личного опыта.

Худший ответ:
 есть ли у автоматической генерации минусыПомимо того, что озвучили еще есть проблема с тем, что генерируемый код обычно трудночитаемый.

какие плюсы у самописных инструментов?Так тут все зависит от разраба. Например обычно бывают тесты, примеры использования, +/- понятный код, мб кто-то будет с вами еще работать над проектом, с автогенерацией вряд ли такое будет. Но в целом людям не так часто нужно полноценное sdk, поэтому многие могут просто запилить пару своих функций для взаимодействия с сервисом.
По сравнению с одной библеотекой-sdk, которая на гитхабе дорабатывается уже 7 лет 
Вообще странно, что существующий столько лет сервис не имеет нормального sdk, либо он не особо популярный.
Вопрос: Как запустить python через php?

Лучший ответ:
Главная проблема музыки в России начинающих программистов в том, что они "перерывают интернет" в поисках решения своей задачи. А надо - в поисках того, как разобраться, в чем проблема.
Потому что само решение и так уже есть.

Как минимум - в начало пхп скрипта и смотреть на ошибки
ini_set('display_errors',1);
error_reporting(E_ALL);

Худший ответ:
Полный путь к файлу пропиши

$python =  shell_exec('python PATH_TO_FILE/bot.py');

или смотри так
$python =  shell_exec('python PATH_TO_FILE/bot.py > PATH_TO_FILE/log.txt');
Вопрос: Возможно ли записывать данные в файл на js?

Лучший ответ:
Можно. 

Если просто сгенерировать на сайте и скачать:

const blob = new Blob(["The content of the txt file."], {type: "text/plain"});
const blobUrl = URL.createObjectURL(blob);
const a = document.createElement("a");
a.download = "filename.txt";
a.href = blobUrl;
a.click();
setTimeout(() => URL.revokeObjectURL(blobUrl), 10_000);

Если нужно дописать в существующий файл или изменить его содержимое:
https://web.dev/file-system-access/
Только его перед этим нужно "открыть". Работает лишь в Chromium браузерах.

"File System Access API" и "FileSystem API" — не одно и то же.

Худший ответ:
В браузере все взаимодействие с файловой системой отключено, так как это опасно.

А сам js конечно может.