Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как добавить новый контакт в телефон через сайт?

Лучший ответ:
Никак. У браузера нет доступа к api платформы для создания контактов. Сделано это разработчиками с той целью, чтоб такие вот гении не забивали контактную книжку своими ненужными контактами.
https://yandex.ru/support/webmaster/hcard/general.html
Еще есть https://www.w3.org/TR/contacts-api/
Собственно по одной из ссылок, скорее всего по первой, будет удовлетворяющий ответ. Все упрется в поддержку браузером, но на это уже никак не повлиять.

Худший ответ:
Что-то близкое и пару вариантов есть для более быстрого добавления в "книгу контактов" чем через vcf.  vcf не всегда удобен для добавления на телефонах. https://stackoverflow.com/questions/8669912/add-a-...
Вопрос: Почему не передаётся форма через AJAX в php файл?

Лучший ответ:
Вы отсылаете запрос с содержимым типа application/json, а принять пытаетесь содержимое типа multipart/form-data (переменная $_POST).
$json = file_get_contents('php://input');
$data = json_decode($json, true);

Худший ответ:
проще отдавать не в json а в multipart/form-data тогда все будет работать привычно через $_POST
Вопрос: Как вы тестируете PlayBook Ansible?

Лучший ответ:
Не путаем контейнеры и ansible) Это разный подход и не надо их вообще мешать. контейнеры для контейнеров, ansible/salt и иже с ними для виртуалок. Поставьте себе hyper-v/vmware/...да что угодно и играйтесь) у меня для этого есть окружение в облаке, которое я запускаю на время эксперимента

Худший ответ:
Для конфигурации докер-контейнера пишите докер файл. 
Ansible для другого.
Более или менее полноценные ОС в контейнерах OpenVZ и LXD.
Вопрос: Как на определенной итерации v-for обнулить индекс?

Лучший ответ:
<div for="(item, index) in items">
ID: {{index % x}} // x - определенная итерация
</div>
p.s. Скорее всего, если вам нужно решение через индекс, 99%, что вы что-то делаете неправильно

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

Лучший ответ:
Это не от языка зависит, а от движка.
Посмотрте константу Number.MAX_SAFE_INTEGER // -> 9007199254740991
https://developer.mozilla.org/ru/docs/Web/JavaScri...
В другой среде число может отличаться.
(другой браузер, другая операционка, телефон, вот это все)
Если сегодня вы не нашли систему, где оно отличается, это еще не значит, что завтра такая не появится.

Худший ответ:
Наибольшее «безопасное» целое 253-1 или 9007199254740991
Числа больше будут записываться неточно, в экспоненциальной нотации, и возможны косяки, например var a = 9007199254740991 + 1;
var b = 9007199254740991 + 2;
a === b; // true
См. MAX_SAFE_INTEGER
В вашей задаче стоит работать не с целыми, а со строками.
Вопрос: Как добавить значение к существующему элементу массива?

Лучший ответ:
$data['fruit'] .= ', банан';
ужс

Худший ответ:
$data['fruit'] .= ', банан';
ужс
Вопрос: Может ли смартфон «хакнуть» мой PC?

Лучший ответ:
Конечно могут.
Ты забыл в каком мире мы живём?
Поинтересуйся кто такой Джулиан Ассанж, если ты ещё не знаешь кто это такой.
Не знаю что ты подразумеваешь под "корпорацией добра", но все компании имеют тебя по самые гланды.

Худший ответ:
Самый страшный аспект  Usb в том, что любое подключенное устройство может притвориться клавиатурой, мышью, флешкой и сетевой картой. И корпорация добра, как и любое вирьё получившее root могут сделать это смартфоном. Соответственно если Вы не вошли в систему риск минимален, возможен брутфорс, но он будет прекрасно виден на экране и очень вероятно возможен MITM. Если вошли в систему, то смартфон может получить права пользователя и например вытащить сохранённые пароли из файлов браузера, если sudo без пароля или есть дыры, то может получить полный доступ.
Вопрос: Как разбить массив на равные части?

Лучший ответ:
Ответ легко ищется поисковиком

a = [0, 1, 2, 3, 4, 5, 6, 7]
a.each_slice(3) # => #<Enumerator: [0, 1, 2, 3, 4, 5, 6, 7]:each_slice(3)>
a.each_slice(3).to_a # => [[0, 1, 2], [3, 4, 5], [6, 7]]
https://rdoc.info/stdlib/core/Enumerable#each_slic...

Худший ответ:
l = [1, 2, 3, 4, 5, 3, 4, 2, 5, 2, 4, 4, 1, nil, "uuusk",
     616, 8, 12, 42, 34, 23, 42, 31, nil, "jojo"]
le = l.length / 3
p l[0..le]
p l[le..le * 2]
p l[le * 2..]А ты что, правда левит? И как?
Вопрос: Есть ли альтернатива querySelectorAll во Vue.js?

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

$ref единственное и по сути правильное получение DOM элемента внутри vue. $ref это по сути id, иных вещей нет, только уже указание селекторов для querySelectorAll.
Если вам приходится каждому элементу DOM давать ref внутри 1го шаблона, то опять же, скорей всего вы что-то делаете не так. 

Покажите или расскажите детальнее, какую задачу вы решаете и скорей всего есть решение лучше, нежели то, что вы пытаетесь сделать

Худший ответ:
https://ru.vuejs.org/v2/guide/components-edge-case...
Когда ref используется вместе с v-for, то ref будет массивом, содержащим дочерние компоненты, отображаемых от источника данных.
Вопрос: Показать 100 слов после запятой?

Лучший ответ:
$str = '13,342,33,344,5,36,745,845,449,310,1231,12';
$numbers = explode(',', $str);
print_r(array_slice($numbers, 0, 10)); // первые десять
print_r(array_slice($numbers, 2, 4)); // с 3 по 6https://ideone.com/b3IoBr

Худший ответ:
Разбейте через split, получите массив строк.
Выводите до 10-й.
Это первое, что в голову пришло.
Вопрос: Как предоставить права доступа в линукс к множеству файлов?

Лучший ответ:
find type -f. 
а дальше уже на выбор: exec или xargs через пайп.

Худший ответ:
man chmodchmod всё это позволяет сделать. Напримерchmod -R gu+w,o-w,a-x+rX *
рекурсивно даст права на запись собственнику файла и членам группы, отберёт права на запись у всех не собственников и не членов группы, даст права на чтение всем, уберёт у всех права на исполнение и для всех сделает директории доступные на чтение, И т.д., просто с опциями chmod надо поиграться.
Ну или уже сказал DevMan:find /home/test -type f -exec chmod ТУТ_ТРЕБУЕМЫЕ_ПРАВА {} \;
Вопрос: Как добавить и сохранить кастомный js, css на страницу в браузере?

Лучший ответ:
Дополнения Tampermonkey Greasemonkey и др. подобные
можно подключать как css так и javascript

Худший ответ:
https://github.com/openstyles/stylus - есть плагины под хром, фф и т.п.
Вопрос: Почему надо скачивать шрифты?

Лучший ответ:
Потому что не у всех указанные вами шрифты есть. Очень много хороших шрифтов есть в Google Fonts, их можно скачать или же использовать через сервер гугла

Худший ответ:
Потому что на разных устройствах дефолтные шрифты будут выглядеть по-разному. Скачивать лучше всё, даже Verdana, Arial или Times new roman. С последним у меня как раз случилась неприятная ситуация. На компьютере заголовок был в три строки, та же самая картина была и на низком разрешении в инспекторе, однако, когда я открыла сайт на телефоне, то 3 строки превратились в 4, потому что на Android этот шрифт немного отличается. Из-за этого полетели некоторые стили и отступы.
Также нерекомендовано использовать подключение шрифтов через сервер гугла. Нужно быть придурком, чтобы так делать (увы их большинство). Все файлы, изображения и шрифты должны храниться только у вас на сервере и нигде больше.
Вопрос: Постоянная работа node js, как реализовать?

Лучший ответ:
Ой, аж больно стало от одной мысли так часто в базу писать.
Не дурнее ли ввести понятие "множитель" валюты зависящий от предметов? 
Множитель изменился - сохранил его и время его изменения; перемножая множитель на время получишь валюту. 
Игроку то об этом знать не обязательно.

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

Лучший ответ:
Учите оптику. Она поможет при чтении документации.

Худший ответ:
Биология. Дойдёшь до нейронных сетей, поймёшь суть, и вот, ты уже близок к ИНС. Это всяко ближе к блокчейну, нежели физика: нейросети и блокчейн стоят рядом в списке хайповых слов.
Вопрос: Как использовать скрипты на практике в системном администрировании?

Лучший ответ:
Автоматизация жизненного цикла объектов в частях инфраструктуры (не только AD), создание/развёртывание/тестирование целостности бэкапов, мониторинг, вот это вот всё.
Вообще в подобной ситуации надо заниматься самообразованием вбок или вглубь на задачах, не связанных с рабочими, поскольку свободного времени должно быть достаточно.

Худший ответ:
В облака углубляйтесь, DevOps - пригодится
Вопрос: Как сверстать подобный блок с переносом текста на следующую колонку?

Лучший ответ:
Наркоманский вариант:
snippet

Чуть менее наркоманский вариант через clip-path:
snippet

Только сейчас увидел, что clip-path не двигает текст, а просто режет его. Увы :) Тогда второй вариант отменяется.

Худший ответ:
у вас в первой колонке похоже отдельный блок контента, который не переходит в другие колонки? 

тогда можно сделать его отдельным элементом и картинка будет залезать только на одну колонку с текстом, а это уже решаемо.  

в смысле 1) отдельный блок с первой колонкой с отступом сверху по высоте картинки, 2) блок с тремя цсс-колонками, с отступом сверху в первой колонке по высоте картинки,  3) картинка поверх этих двух блоков.

а так да, нормальных способов нет.  адобовскую спецификацию css regions подонки-изготовители браузеров слили, занимаются всем подряд вместо того, что действительно полезно.
Вопрос: Можно ли продать идею приложения (дизайн figma)?

Лучший ответ:
Убийцу фейсбука придумали? 
Успешный стартап — это на 99% люди и маркетинг. 1% — новизна идеи. Но новизна никогда не являлась гарантией успеха. 
Подарите кому-нибудь или сами сделайте.

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

Лучший ответ:
а можно ли использовать Python на Linux?
Это что, стеб такой?

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

Лучший ответ:
Просто несколько мыслей.
1. Нет требований к форме лодки, так что она может быть сферической или кубической. При такой форме лодка будет быстро останавливаться после выключения мотора, а значит управлять будет проще.
2. Совместить киль с рулём направления (поворачиваться может весь киль). Для настоящей лодки это неудобно, а для модели нормально. Такая схема позволит уменьшить радиус поворота.
3. Рассмотреть вариант аэровинта в качестве двигателя. Чуть было не назвал это аэроглиссером, но глиссер - это скоростное судно с малой осадкой, так что термин был бы неправильный. И это несовместимо с пунктом 1, т.к. при сферической форме и воздушном винте будет нечто крайне неустойчивое. В этом случае подойдёт традиционная форма лодки.
4. (Если бы у меня было такое задание, то я бы остановился на этом варианте). В качестве движителя - два гребных колеса - с правого и левого борта, каждое на отдельном моторе. Руль вообще не требуется, возможен разворот на месте при движении колёс в противоположные стороны. Схема с самым простым управлением - по сути, это водный аналог гусеничного трактора или танка.
И небольшая экскурсия в 1986 год:12

Худший ответ:
как уже писали выше- лодка квадратная или цилиндрическая, с колесами по бокам (у вас в наборе как раз есть пара мотор редукторов)
Севропривод по центру и ультразвуковой датчик  на него- получаем радар.
ориентируясь на его показания можно заставить лодку не касаться стенок.
алгоритм движения придется забивать в код, тупо как набор команд "на север до стенки, поворот, на запад до стенки и т.д." поскольку на той схеме что у вас есть "правая рука" не подходит, вы перекресток по прямой должны пройти.
т.е. по ходу движения крутим севрой, если берег слишком близко даем команду на временное ускорение соответсвующего колеса (плыть будем слегка зигзагом но ничего).
периодически контролируем наличие препятствия впереди и если оно появилось на нужном расстоянии делаем поворот туда куда указано в "списке команд" и вновь вперед.
Разумеется как кораблик будет готов, проверить в ванной, сколько секунд работы движков требуется корытцу чтобы развернутся на 90 градусов, сколько чтоб разогнаться, сколько чтоб затормозить, сколько чтоб затормозить при обратном вращении колес. На основе этих данных закладывать параметры в код.
Вопрос: Зачем нужны interface, если можно создавать функции?

Лучший ответ:
Не сможешь хранить в одной переменной кошку, собаку и прочих говорящих роботов.

Худший ответ:
Раз уж на примере животных.

С интефрейсами можно сделать так:
interface ISpeaking {
  public void Speak();
}

public class Dog: ISpeaking {
  public void Speak() => Console.WriteLine("Гав!");
}

public class Cat: ISpeaking {
  public void Speak() => Console.WriteLine("Мяу!");
}

public static void Main() {
 ISpeaking[] speakers = new ISpeaking[] {new Cat(), new Dog()};
 foreach(ISpeaking speaker in speakers)
   speaker.Speak();
}

Более применимый пример - интерфейс IEnumerable.
IEnumerable реализуют разные коллекции: массивы, List, HashSet, Dictionary.
С помощью IEnumerable можно пройтись по всем элементам коллекции. Это позволяет избавиться от дублирования кода:
Без интефрейсов:
static void PrintAll(string[] array) {
  foreach(var e in array)
    Console.WriteLine(e);
}

static void PrintAll(List<string> list) {
  foreach(var e in list) { // Дублирование!
    Console.WriteLine(e);
}

C интерфейсом:
// Можно использовать и для string[], и для List<string>, и даже для того, о чём мы ещё не знаем!
static void PrintAll(IEnumerable<string> collection) {
  foreach(var e in collection) {
    Console.WriteLine(e);
  }
}

Интерфейсы - это один из способов достичь полиморфизма.
Вопрос: Можете объяснить простыми словами, в чем разница между сущностью и таблицей?

Лучший ответ:
То есть, сущность - это более удобочитаемые данные для человека, которые являются результатом запроса к таблице(ам)?
В этом и состоит разница. Я правильно понимаю?
Нет, вы наверное путаете с проекцией(указание нужных столбцов для вывода при операции select).
Сущность - это что-то, о чем хранится информация в таблице.
Если таблица Users - в ней хранится информация о сущности Пользователь.
Если таблица Cars - в ней хранится информация о сущности Автомобиль.
И т.д.
Термин сущность пришел отсюда. В реляционных базах данных информация о сущностях хранится в таблицах, но есть другие типы баз данных, где информация о сущностях хранится не в таблицах. То есть сущность - это то о чем храним информацию, а вашем случае в mysql вы храните информацию о сущностях в таблицах.
upd: для вашего случая таблица Books хранит информацию по сущности Книга, таблица Authors - хранит информацию по сущности Автор, таблица Genres - информацию пр сущности Жанр

Худший ответ:
https://ru.wikipedia.org/wiki/ER-модель
Вопрос: Куда пойти помощником системного администратора на общественных началах?

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

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

Лучший ответ:
А технически какими операторами лучше принимать платежи? 
https://stripe.com/spoiler
Странно что вы про них не слышали.

Худший ответ:
Как организовать продажи с т.з. российских законов?Да никаких особых проблем нет, это не сложнее чем организовать продажи пирожков с капустой.
Закон не запрещает продавать. Просто не торгуйте запрещенными товарами, и платите налоги. можно, чтобы они помесячно оплачивали доступ самостоятельно). Как организовать продажи с т.з. российских законов? Или лучше уходить в другую юрисдикцию и там продаватьМожете переехать в Сомали, там Российские законы проблем не создают. А лучше это для вас или нет -  вам решать. Как принимать платежи от всего мираБанки и платежные системы в этом помогут.как узаконить такие операцииНикак. Если операция законна, ее невозможно узаконить.
Вопрос: Какая программа переводит из mp3 в txt?

Лучший ответ:
Под Линуксом - нет.
Те, что есть, уж лучше бы и не существовали.
Да и онлайн-сервисы далеки от совершенства.

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

Кроме того, по хорошему - такая распознавалка должна учитывать контекст. Т.е. если речь о какой-то теме, то распознавалка должна понимать: вероятность появления определённых слов резко вырастает. Но мне кажется - этого туда ещё не прикрутили.
Вопрос: Стоит ли переходить на Хуки?

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

Худший ответ:
Стоит, но так же стоит перестать их сравнивать в дальнейшем, иначе это вызовет больше ошибок
https://overreacted.io/react-as-a-ui-runtime/

 Одно из очевидных - невозможность нормального красивого переюзания stateful-логики. Хуки ты можешь заталкивать друг в друга, комбинировать куски логики и потом всё это юзать в любом количестве компонентов. На классах так просто это не сделать.
Вопрос: Почему так происходит со строкой PHP?

Лучший ответ:
Всё работает и кавычку дописывает sandbox.onlinephpfunctions.com/code/bc1292655b07cf...

Худший ответ:
Всё работает и кавычку дописывает sandbox.onlinephpfunctions.com/code/bc1292655b07cf...
Вопрос: Xubuntu или Lubuntu?

Лучший ответ:
В чём отличие?xubuntu или Lubuntuгугл просто ломится от таких запросов и ответов на них по простой причине:Что лучше?это дело личного вкуса и навыков. чужие вам не помогут. к примеру мой выбор - кубунту. это за примерно 10 лет, медленного, настороженного вхождения, имея за спиной 30 лет жизни в MS, начиная еще с DOS

Худший ответ:
Xubuntu - дистрибутив, основанный на Ubuntu  с графической оболочкой Xfce. Хорошо подойдёт для старых компьютеров, но не самая лучшая реализация Xfce.
Lubuntu - дистрибутив, основанный на Ubuntu с графической оболочкой Lxde, Lxqt. Подходит также для старых компьютеров, но работает все же быстрее Xubuntu. Но внешний вид очень сильно страдает. Я долгое время сидел на Xubuntu, потом перешёл на Peppermint OS. Там тот же Xfce, но внешний вид и производительность гораздо выше, чем у Xubuntu
Вопрос: PNG, JPG или SVG: что использовать?

Лучший ответ:
Для фото - JPEG.
Для схематических изображений (иконки, схемы, чертежи, графические примитивы) - PNG или SVG. Для сложных схематических изображений PNG может быть выгоднее.
Также замечу, что внедрение растрового изображения в SVG - возможно, но бессмысленно.

Худший ответ:
Для разных целей разные форматы. 
Добавлю свое мнение к предыдущему ответу.
Скажем, фон. Может быть простым, неким абстрактным, но который нельзя отобразить с помощью чистого css. Для этих целей svg тоже будет идеальным выбором, поскольку может быть в пару килобайтов при неограниченном размере, при том что для jpg это же изображение может быть очень сложным и при самом идеальном варианте его можно будет ужать до пары сотен кб. 
Однако, если тот же svg фон будет переполнен мелкими элементами, с достаточно большим количеством точек, то такой svg использовать в качестве фона будет нецелесообразно, поскольку даже при весе, меньшем чем в аналогичном по размеру jpg, этот svg будет визуально долго отрисовываться. 
Еще момент, для chrome настоятельно рекомендуется использовать webp, которые при том же визуальном качестве существенно меньше по весу, чем jpg и png. Да и google любит его как свой формат и как следствие очень благоволит ему - достаточно прогнать сайт через PageSpeed Insights и посмотреть, что он там будет рекомендовать. 
Если на сайте нет webp, таки рекомендация будет обязательно )
Вопрос: Сортировка таблицы методом sort на чистом JavaScript или js-библиотека?

Лучший ответ:
Лучше использовать sort(). Это нативная, а потому быстрая, функция. Своя функция, если опустить время на создание массива, будет на порядок медленнее.
Таким образом, всё упирается в копирование данных. И здесь могу посоветовать только одно: данные должны быть уже в переменных JS на момент загрузки страницы. Конечно, в самой таблице - тоже, на случай отсутствия JS у пользователя. И каждая сортировка просто формирует таблицу заново.
Ещё вариант, сделать массив непосредственно из DOM-элементов, как-то так (пример):[...document.querySelectorAll('tr')]
А после применения sort(), можно с помощью insert'ов сделать новую таблицу или даже пушить в существующую. Здесь плюс в том, что вы не меняете оформление и формат таблицы. То есть если другой программист (или вы в будущем) добавит новый столбец, то код, вероятно, не сломается.
К слову, если у вас 100-500 элементов, а на странице редко бывает больше 500, то сортировать можно как угодно, пользователь не заметит разницы.

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

Лучший ответ:
Используйте очереди. Консьюмеры, обрабатывающие сообщения из очереди, будут держать соединение с бд, чего Вы так боитесь. Продюсеры могут вызываться из крона (определённое время запуска), а могут и из отдельного воркера (запуски через малые промежутки времени)

Худший ответ:
Есть готовые интеграционные системы типа tiid или апачевского них. Там все уже сделано. Либо можно взять брокер очередей типа кафки или рэббита и спокойно написать гору консюмеров продюссеров с переиспользованием кода...и свагеровским описанием клиентов что бы не помереть от бесконечного их описания...и у многих сервисов свагер готовый пошукать или на стороне что бы клиентов нагенерить.
Вопрос: Windows 7 из Windows 10. Как сделать такой же послушной?

Лучший ответ:
Cтавьте  ltsc. Это самый простой способ.
Или настраивайте через политики - посложнее но тоже работает.

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

Лучший ответ:
В серии Head First есть и учебник Python.

Худший ответ:
Мэтиз Эрик ускоренный курс
Маркс Лутц кстати пятое издание выпустил, только, если не ошибаюсь, оно еще не переведено
Вопрос: Тема OceanWP не готова к WP5.3 или причина в php 7.3.6?

Лучший ответ:
Две минуты поиска на wp.org:
https://wordpress.org/support/topic/5-3-throws-an-...
Объяснение причины + вариант "срочного разрешения" проблемы... Или можно подождать, пока разрабы пофиксят

Худший ответ:
Почему вы не можете задать этот вопрос авторам темы?
Вопрос: Правильный перебор Json?

Лучший ответ:
Вопрос некорректный. JSON - это формат хранения данных в виде текста. Его нельзя перебрать. Можно перебрать сами данные, но для этого их нужно сначала перевести в другой формат, в переменные JS, что вы и делаете. То есть вы перебираете не JSON и даже не данные в виде текста, а массив.
Перебрать JSON можно примерно также, как перебрать JavaScript.

Худший ответ:
Нужна была мелкая правка, чтобы первая мартышка прогрузилась:$.ajax({
type: 'POST',
cache: false,
url: 'https://woobl.ru/php/api/apiMusic/photo.php',
success: function(data) {
var dates = JSON.parse(data);
dates.photos.forEach(function(i, item) {
let url = dates.photos[item].photo_direct_url || dates.photos[item].photo_url;
$('body').append('<img src="//woobl.ru/'+url+'">');
});
}
});
Проблема была в том, что вы доставали photo_direct_url, которого у первой фотки просто не было.