Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как автоматизировать касания по экрану на iOS? Как подобрать пароль?

Лучший ответ:
купи 10 стилусов (или перчатки со специальной резинкой на конце)
10 релюшек
1 Ардуринку и камеру или датчик света
Напиши программу последовательного опускания релюшками стилусов на экран
с помощью камеры или датчика света отслеживай изменение экрана
Ну или купи (или одолжи у кого-нибудь) 3Д принтер, смартфон на подвижный стол, вместо сопла приспособь емкостную резинку или стилус и напиши программку для него.

Худший ответ:
Перебери вручную даты рождения... например с 1965 по 20... какой то.... в зависимости от возраста "жертвы"... обычно люди что то запоминающее вводят.... чуток социальной инженерии (???) - что за человек, год рождения любимой/любимого... даты наоборот... посмотри под наклоном на телефон (я так понял что есть доступ?), там как на старых домофонах будут потертости, т.к. это приложения про Фото, то человек по моей статистики (только что придуманной) часто заходит в фото.... Вообще это мои бредливые мысли =)

Распечатай все комбинации - найди человека, за копейку пусть перебирает и вычеркивает.

spoilerКак угадает, пусть сменит на посложнее :D
Вопрос: Динамически добавить elif ветки в функцию?

Лучший ответ:
Именно "динамически добавить elif ветки в функцию" никак, а альтернатив вы просите не предлагать.

Худший ответ:
Можно использовать exec для создания функции из строки, но помните, что функция exec небезопасна.

FUNCTION_SOURCE = """def __intermediary_func(digit_val: int):
    if digit_val == 1:
        pass"""

def some_func(digit_val: int, alt_branches_count: int):
    intermediary_func_source = FUNCTION_SOURCE
    for i in range(0, alt_branches_count):
        intermediary_func_source += f"""
    elif digit_val == {i+2}:
        pass"""
    exec(intermediary_func_source, globals())
    print(intermediary_func_source)
    return __intermediary_func(digit_val)

In [14]: print(some_func(10, 3))
def __intermediary_func(digit_val: int):
    if digit_val == 1:
        pass
    elif digit_val == 2:
        pass
    elif digit_val == 3:
        pass
    elif digit_val == 4:
        pass
None
Вопрос: Как правильно определить, нужен ли префикс браузера в коде?

Лучший ответ:
Как правильно определить, нужен ли префикс браузера в коде?
Алгоритм:
 - Научиться пользоваться сборщиками проектов вроде gulp или webpack
 - Не нужно лезть руками на caniuse и искать каждое свойство, этим занимется плагин autoprefixer, который на автомате, в зависимости от настроек степени поддержки браузера будет ставить вам всё.


https://webdesign-master.ru/blog/tools/gulp-4-less...

Худший ответ:
https://caniuse.com/ вводишь нужное свойство в поисковую строку и получишь подробную информацию о версиях браузера и поддержке свойств.
Вопрос: После metro exodus всё пошло по «наклонной» или как я так облажался?

Лучший ответ:
По наклонной всё пошло после третьих Героев и второго Фаллаута. Остальное уже последствия.

Худший ответ:
Если метро не официальное можно грешить на кривую таблетку или как там ее называют, может ошибка виндоус просто, проблема в том что Вы кроме тестов и метро ничего не запускали, можно подумать на криво установленный директикс или т.п.
Вопрос: Как лучше оформлять частичную занятость?

Лучший ответ:
Договор оказания услуг/Подряда/ГПХ - примерно одно и то же. Без ИП будет 13% налога.
Ну и достаточно сложно оформлять.

Самозанятость - самое простое в плане оформления, тк буквально никаких документов не оформляется, ну и 
Налог самый низкий (4% при работе с ФЛ). Но некоторые организации не очень охотно работают с самозанятыми.
Можно спокойно принимать оплату на свою личную карточку.

ИП - достаточно небольшой налог (6%), особенно если работать на патенте(фикс) в будущем можно нанять себе сотрудников, если нужно.
Требуется некоторое время на регистрацию и фиксированный платёж каждый год (вроде 50к сейчас), даже если дохода 0.
По хорошему надо оформлять ещё расчётный счёт.
Нет смысла брать ИП, если доход меньше 1.8млн/год

А ещё частичную занятость можно оформить через ТК

Худший ответ:
Для вас самое удобное это обычный трудовой договор
Вопрос: Книги по сетевому программированию на c++?

Лучший ответ:
Лучшее в этой области - "UNIX разработка сетевых приложений" Стивенса.

Худший ответ:
Не нужно зацикливаться на С++, т.к. все сетевое API операционной системы на Си. Изучайте просто сетевое программирование. Когда разберетесь, то просто возьмете сетевую библиотеку для плюсов и будете ее использовать. Как правило, подобные библиотеки просто оборачивают Си интерфейс ОС в классы.
Так же рекомендую книгу Стивенса. Но она старая (последнее издание 2007 года) и в продаже вы ее сейчас не найдете. Электронная версия есть. Не смотря на возраст книга вполне актуальна. Подобные основополагающие технологии изменяются довольно не торопливо.
Вопрос: Какой аналог GitKraken предпочесть?

Лучший ответ:
1. В последнее время чаще пользуюсь клиентом, встроенным в ide:
Для  VS Встроенный клиент + Code: GitLens, Git history, git graph, git extension pack
Для JB: встроенный клиент + GitToolbox

2. Если хочется самостоятельный клиент, то это git extensions (бесплатный) и smartgit (бесплатный для некоммерческого использования)
Раньше, когда я сидел на классической VS я как раз использовал smartgit, но сейчас перешёл на git extensions, тк не хочу пиратить.

Худший ответ:
1. В последнее время чаще пользуюсь клиентом, встроенным в ide:
Для  VS Встроенный клиент + Code: GitLens, Git history, git graph, git extension pack
Для JB: встроенный клиент + GitToolbox

2. Если хочется самостоятельный клиент, то это git extensions (бесплатный) и smartgit (бесплатный для некоммерческого использования)
Раньше, когда я сидел на классической VS я как раз использовал smartgit, но сейчас перешёл на git extensions, тк не хочу пиратить.
Вопрос: Как убрать зависимость композера от версии?

Лучший ответ:
> можно перейти на версию 8.1 ... но это далеко не самый лучший вариант
Не лучший вариант? Лучший вариант натягивать несовместимую версию пакета к версии PHP?

> появляется ошибка ... которая указывает куда то далеко в вендор папчоку:
Версии совместимости PHP для пакета указывают не просто так.

Тут уж или крестик снимай или штаны одевай.
Или обновляй PHP или ставь версию пакета совместимую с текущей.

Поставить то пакет ты можешь, просто в нём языковые конструкции используются, что подвезли только в 8ой версии.

Худший ответ:
Я у себя два композера настроил и ярлыки сделал.
Работает как часы.

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

Точнее не так. У меня для каждой версии пхп есть композер 1 и 2 и ярлыки назвал composer8, composer73, composer74 и _composer8, _composer73, _composer74 - для версии композера 1.0 для совсем уж старых проектов
Вопрос: Как быстрее разработать мобильное приложение, требующее доступ к камере?

Лучший ответ:
Нынче модные Telegram или VK боты, для начала может пойдёт

Худший ответ:
Склоняюсь к мнению, что для моих целей больше подойдет PWA
Вопрос: Как завершить ввод строки без нажатия enter?

Лучший ответ:
Программа должна считывать отдельные нажатия, а не ввод строки целиком.

Каждый раз после нажатия ввод (строка) должен формироваться из ранее нажатых клавиш. Пока он не валидный - продолжать ожидать следующие нажатия. Как только ввод стал валидным - принять его.

Такое обычно практикуют при вводе подтверждающего кода из смс. Как только ввёл нужное количество цифр и/или правильный код, принять его.

Худший ответ:
Через GetAsyncKeyState() , что то вводить , потом если пару или три секунды ничего не вводится уже делать то что нужно , либо когда совпадает с какой либо комбинацией
Вопрос: Почему когда копируешь ссылку статьи из сайта и вставляешь, она выглядит по другому, включая в себя много непонятных символов? Это нормально?

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

Худший ответ:
Ну используй русские буквы в ссылках и все будет ок
Вопрос: Допустимо ли использовать rg6, омедненая стальная жила, на расстояниях в 20-30 метров от источника сигнала?

Лучший ответ:
На такой длине линии  разницы не будет, от слова совсем. 
Больше внесут  коннекторы, наконечники розетки.

Худший ответ:
Работать будет норм, тем более для сигнала DVB-T2. Из проблем только потенциальная коррозия на соединениях, на скрытой проводке или в местах повышенной влаги я бы использовать не стал. ну и плюс сталь менее устойчива на излом, в постоянно двигающихся соединениях есть риск излома.
Вопрос: Как понять что ты развиваешься и как найти знакомых?

Лучший ответ:
Самый верный способ - устроиться на работу.

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

Сделать портфолио самостоятельно. Периодически выкладывать его на обозрение в тематических каналах, где отвечаешь на вопросы.

С кем-либо объединяться бессмысленно на этом этапе, так как отсутствует общая база и очень много времени уйдет на коммуникации. Ждать что появится ментор и научит программировать - наивно. Лучше методично делать проекты для портфолио и просить обратную связь на тематических ресурсах. Объединяться с кем-либо имеет смысл когда уже есть прочная база и хочется разделить обязанности. Например, запилить совместный проект, где один делает бекенд, а другой фронтенд и учитесь общаться в команде. 

Также с определенного этапа стоит начать ходить на собеседования. Там намного тщательней оценят портфолио и уровень, дадут рекомменданции куда копать и что изучать. Да, встречаются неадекваты, но в основном лично мне встречались позитивные и адекватные люди, с которыми было приятно общаться по 2-3-4 часа на собеседовании и даже после провала уходил с новыми знаниями.

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

Лучший ответ:
если вы хотите конкретно фронтенд, то битрикс вообще не упёрся: там упор на бэкенд.

Худший ответ:
С фронтендом Битрикс добавит Вам следующую сложность: есть стили и скрипты ядра, их много и они подключаются в публичной части в каком-то объеме. Лично мне приходилось наблюдать такую ситуацию:
есть чистая вёрстка, совпадающа с макетом.
интегрируем в Битрикс, смотрим в режиме анонимного пользователя - что-то поехало или отвалилось.
фиксим.
смотрим, залогинившись под администратором с подключенной панелью - ещё что-то поехало или отвалилось.
ещё раз фиксим.

Лично я поэтому сейчас предпочитаю делать наоборот: первую интеграцию вести под админом, а уже потом смотреть анонимно.
Вопрос: Что с Traceback?

Лучший ответ:
BoyFromDubai, тебе же ясно написали:
бразуеры при открытии страницы сайта делают дополнительный запрос к сайту, чтобы получить favicon. Этот запрос прилетает в ваш обработчик block. 
Т.е. запрос на /favicon.ico браузер сделает по своей инициативе, и тебе придётся с этим иметь дело. Вообще на будущее имей ввиду, что клиент может сделать любой бредовый запрос, так что ВСЕГДА нужно проверять, что тебе пришло.
Возможных решений 3.
1. Сменить url запроса, например так.
@views.route('/block/<height>', methods=['GET'])
Тогда у тебя запрос не будет конфликтовать с запросом favicon, но всё ещё будет ломаться, если клиент запросит /block/foobar вместо /block/123
2. Указать тип параметра
@views.route('/<height: int>', methods=['GET'])
Тогда фреймворк отфильтрует нечисловые запросы, и сам преобразует стркоу в число. Это умеет и Django, и Flask. Но запрос сломается, если полученное число не будет корректным индексом/ключом для chain[].
3. Вставить try-except
try:
    block = blockchain.chain[int(height) - 1]
except (ValueError, LookupError):
    # ловим ValueError от вызова int() и возможный LookupError от обращения к chain[]
    # хотя я фз что ещё может выбросить chain[]
    return "ОШИБКА БЛИН" # ну или более подробное сообщение об ошибке
else:
    from main import blockchain
    return render_template("block.html", block = block, blockchain=blockchain)

Я бы посоветовал сочетание методов 2 и 3. Пусть преобразованием в int занимается Flask, но всё же проверь, подходит ли это число.

Худший ответ:
Очевидно в переменной height содержится строка 'favicon.ico', которую невозможно преобразовать в число.
Вопрос: Как в MODX вывести данные в зависимости от полученного значения из сниппета?

Лучший ответ:
Если структура отличается - это другой шаблон и там выводите, что хотите.
Если структура не сильно отличается, но есть особенности, то ставьте проверку по текущему id.
[[*id:eq=`id-той-самой-страницы`:then=`код-для-той-самой-страницы`:else`ничего-либо-какой-то-еще-код`]]
на fenom это чуть проще
{ if $_modx->resource.id == '' }
...
{ /if }

Худший ответ:
Голый чанковый синтаксис:
[[*alias:is=`алиас_последнего_значения_uri,_но_не_факт,_что_не_будет_пересекаться_с_одноименными`:then=`вызов_чанка_блока_или_чистый_html`]]
С использованием сниппета If (нужно установить одноименный пакет):
[[!If?
  &subject=`[[*alias]]`
  &operator=`==`
  &operand=`алиас_последнего_значения_uri,_но_не_факт,_что_не_будет_пересекаться_с_одноименными`
  &then=`вызов_чанка_блока_или_чистый_html`
]]
Вопрос: Куда выложить решение проблемы Linux?

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

Худший ответ:
https://www.opennet.ru/tips/ - тут люди как раз делятся своими велосипедами и оперативно огребают по ним критику.
Вопрос: Почему метод «хочет стать» функцией?

Лучший ответ:
Потому что точки с запятой нужно ставить.
const greeting = {
...
}; // <-- вот тут!!!

(username) ? ...
или убрать ненужные скобки
const greeting = {
...
}

username ? ...

Худший ответ:
Потому что тернарный оператор должен вернуть значение.
Вопрос: Плохо ли иметь зависимости в проекте в виде исполняемых файлов в го и других языках?

Лучший ответ:
А какая у вас альтернатива? 
Вы можете реализовать весь функционал в своей программе без использования внешнего ПО за вменяемое время? 
Если да - реализуйте, это, конечно, будет лучше.
Но обычно подобный сложный функционал реализуется в динамических библиотеках. Программы, типа lowrite используют этот функционал. Вы то же можете использовать библиотеку, а не запускать внешнее ПО. Но это, конечно, гораздо сложнее и на это может уйти много времени.
От установки .net вы можете отказаться, только используя ЯП не связанные с .net. 
lowrite возможно содержиться в других пакетах, более мелких, которые ставятся вместе с libre office, а библиотеки, которые он использует может находится в третьем пакете.

Худший ответ:
В идеале - этого лучше избегать. Но это не трагедия.

Как вы свой проект распространяете-то? Пользователю приходит исполняемый файл же. И не страшно, что там файлов несколько и один другие иногда запускает.

Единственная проблема - вы не можете свой проект пересобрать под другую систему, или править баги в этом стороннем исполняемом файле. С этой точки зрения лучше использовать сторонние проекты, как библиотеки.
Вопрос: Где на Windows имеет смысл хранить приватные SSH-ключи?

Лучший ответ:

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

Это стандартная директория, с которой работает openssh.
И вроде нет никаких способов её переназначить.
Аналогично и в других ОС.


2. Добирать до папки .ssh не очень удобно, да и смысл её имени неочевиден.

~/.ssh - это не очевидно?
В ней хранится всё что относится к ssh конкретного пользователя: ключи и доверенные хосты


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

2. Добирать до папки .ssh не очень удобно, да и смысл её имени неочевиден.
Вкусовщина и непонимание используемых инструментов.
Добираться до неё нужно полтора раза в жизни, чтобы написать 
cat ~/.ssh/id_rsa.pub
Ввиду этой логики, я думаю что можно на диске `D` (или другом несистемном) создать папку `SSH Private Keys` (или даже по-русски - `Приватные ключи SSH`) и хранить их там. Единственное, при наличии нескольких пользователей необходимо ограничить доступ к этой папке.
Почему бы тогда программы устанавливать не в "C:\Program files", а в "D:\Все программы"?
Вот мне неочевидной кажется идея хранить публичные ключи в папке "D:\Приватные ключи SSH" тем более на русском языке.

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

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

должна же быть какая-то причина, по которой сохранять резервную копию системы на системный диск смысла не имеет
Ну извини, как бы ежу понятно что бэкап СИСТЕМЫ (с системного диска) лучше хранить на ДРУГОМ диске, а не на нем же. Причина как бы элементарна - не хранить все яйца в одной корзине.

2. Добирать до папки .ssh не очень удобно, да и смысл её имени неочевиден.
Абсолютно очевиден - домашний каталог пользователя, конфигурационная директория по соглашению *nix и openssl

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

Лучший ответ:
открываете консоль браузера, и смотрите ошибки.
вангую: ошибки в регистре названий файлов.

Худший ответ:
Ну во первых изображения нужно пихать в папку с сайтом (можно создать папку в папке и пихнуть туда чтоб не мешали) и ещё можно использовать ссылку на изображение <img src="https://avatars.mds.yandex.net/i?id=ae9c70ab9ece9e603bb517773110f0bf-5869035-images-thumbs&n=13 " alt=""/>
Вопрос: В чём суть сравнения массивов типа char на C?

Лучший ответ:
Вы сравниваете указатели (почитайте по них в любой книжке про C).
Указатели - это адреса, на 64-битной системе представляемые 64-битными положительными числами. Как именно и в каком порядке им выдаются значения - внутреннее дело компилятора, но, как правило, адреса переменных на стеке действительно идут в порядке их объявления.

Худший ответ:
Вы сами поняли. Тут сравнивается память хотите сравнивать значения сравнивайте их

В более навороченных языках немного хитрее, например в c# для скорости строки неизменные и хранятся в области памяти и дубликаты имеют один адрес
Вопрос: Как работать с JSON?

Лучший ответ:
Можно из строки\в строку. А что с ней делать дальше уже неважно.
Есть прям в мануале ньютонсофта, ответ легко ищется поисковником

Худший ответ:
Newtonsoft.Json Занимается только сериализацией/десериализацией, т. е. 
1) строка Json => объект C#
2) объект C# => строка Json

Для чтения/записи в файлы используются совсем другие инструменты. Например, FileStream
Вопрос: Как массово скачать файлы по списку?

Лучший ответ:
Т.е. не получится это сделать с помощью wget в командной строке, т.к. куков не будет
Кто сказал? 
https://qna.habr.com/q/444245
wget --no-check-certificate --quiet \
  --method GET \
  --timeout=0 \
  --header 'Cookie: PHPSESSID=ocqfdbv0kv6qs5jv4at6uk36pf' \
   'https://test-mis.ru/api/****************************************'

Худший ответ:
Можно так автоматизировать:

for i in 1 2 3 4; do curl ..... "/attachment.php?attachmentid=$i"; done
Вопрос: Как в html и css сделать одновременно обтекаемый текст и подпись снизу картинки?

Лучший ответ:
Сделайте див внутри него картинка и подпись, и обтекайте его

Худший ответ:
клик
Вопрос: Как в больших организациях присваиваются ip-адреса для всех устройств?

Лучший ответ:
Ведь, максимумом является 255 IP-адресов в одной сети
нет

Худший ответ:
Почитайте хотя бы банально Википедию про локальный адрес.
Обратите внимание, что есть адресация:
10.0.0.0 с маской 255.0.0.0, что в сумме даёт максимум 16777214 ip-адресов.
Вопрос: Почему массивы выводятся именно так?

Лучший ответ:
Через запятую указываются не конкретные индексы, а задаётся интервал индексов. Первое число - начальный индекс, второе - сколько элементов надо взять. Читайте документацию.

Худший ответ:
Array["George", "Bob", "Alex"]
George - 1 index
bob - 2
alex - 3
diana 0
от 0 до 2
0 - диана, 2 - боб
ruby не паскаль, здесь интервал от какого индекса отчитывать 
вроде так
names = Array["George", "Bob", "Alex"]
names[0] = "Diana"
puts(names[0,  3])
нет никаких проблем, пока проблема не станет действительно проблемой
Вопрос: Как приветствовать новых участников в телеграмм чате с помощью библиотеки python-telegram-bot?

Лучший ответ:
Предлагаю так приветствовать:Здравствуйте, здравствуйте, и кого добавили! Вас приветствует телеграм-бот, написанный с помощью библиотеки python-telegram-bot

Худший ответ:
При поступления нового участника передается параметр new_chat_participant $data['message']['new_chat_participant']['firs_name'];
После забирать нужные данные и отправлять приветствие.
Вопрос: Почему не добавляется mixin?

Лучший ответ:
Не mixin, а mixins, наверное.

Худший ответ:
Импортируете itemsMixin, а подключаете awardsMixin. Так задумано?
Вопрос: С чего начать системному администратору в школе?

Лучший ответ:
1. - беги оттуда... работы дохера, денег нифига
А по теме - 

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

Худший ответ:
Если сеть надо будет тянуть самому, да еще по этажам и по кабинетам я бы стал браться. Только действительно интересно и хочется этим заниматься. 
Вангую что будет компьютерный класс, плюс минимум по одному пк в каждый класс.
Если будете сеть планировать компьютерном классе то закладывайте на количество интернет розеток на 15-20 больше чему нужно. 
И наверно главный вопрос к вам, если сети уже есть, вы все подключить и настроить как им надо сможете?
Вопрос: Почему футер справа не отходит от стенки?

Лучший ответ:
Потому что width у вас по факту 110% с учетом margin.

1. Либо width:90%;
2. Либо margin: 0 auto;

Худший ответ:
Потому что margin это внешний отступ, в данном случае, от футера до его родителя body. 
Но body закончился вместе с окном браузера, если вы зададите ему фон, то увидите это. 

Вы сказали футеру, что он должен взять себе ширину body и еще добавили margin'ы. Пока футер был просто 100% он ровненько помещался в body (хорошо, что у body нет padding). Но вместе с margin вся эта композиция превышает размер body.

скрин инспектора
Вопрос: Какие проекты вы бы порекомендовали для портфолио начинающего ReactJS девелопера?

Лучший ответ:
Не уверен что оно вообще нужно. Не видел ни одного человека, который смотрел бы портфолио перед собеседованием на React девелопера, сам тоже ни разу не заглядывал. Лучше потрать больше времени на чтение официальной доки, да блог официальный почитай, в них мало кто заглядывает, все курсами довольствуются. Ну и в JS Core есть что читать.

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