pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Установка vmware esxi, redhat 7, raid. Как правильно начать?

Лучший ответ: vmware не надо выделять диск в 600ГБ, vmware работает с флешки.
раз есть дровишки на офсайте. я думаю проблем быть не должно
https://my.vmware.com/web/vmware/details?downloadG...

Худший ответ: да
Вопрос: Дополнительная безопасность паролей в KeePass

Лучший ответ: У keepass море плагинов. 

Я повседневно использую для автозаполнения форм в браузере. На стороне браузера и keepass ставятся по плагину, соединение между ними вроде как шифруется, по крайней мере при первой установке ключ запрашивает для соединения.

Есть плагины для putty если имеете дело с ssh.

В нем есть возможность писать что-то типа макросов для запуска программ и ввода там паролей.

Что касается скриншота, не оставляйте разблокированный keepass когда уходите :)

Худший ответ: Если кто-то может сделать на вашей машине скриншот в нужный момент (троян всмысле), он может прочитать из памяти программы всё, что там есть. А там, конечно же, есть всё содержимое со всеми паролями.
Имхо паранойя излишняя. Тогда уж вам надо запускать вашу хранилку паролей на телефоне и вводить пароль ручками. Я так и делаю, когда не доверяю машине, на которой нужно ввести пароль.
Вопрос: FAT32 или NTFS?

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

Худший ответ: Ntfs. Как уже выше писали. Прирост неочевиден. Но работа с файлами больше 4 ГБ приоритетна для жд.
Вопрос: Как заключить договор с фрилансером из другой страны?

Лучший ответ: Есть - общаться с бухгалтерами/юристами в упомянутых странах, а не с рандомом не тостере)

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

Лучший ответ: решение в лоб:>>> s1 = u'А роза упала на лапу Азора'
>>> s2 = u'Дай, Джим, на счастье лапу мне'
>>> words = s1.split(' ')
>>> [word for word in words if word in s2]
[u'на', u'лапу']

Худший ответ: Вам сюда:difflib.SequenceMatcher.find_longest_match()
Пример:>>> from difflib import SequenceMatcher as SM
>>> s1 = 'A roza upala na lapu Azora'
>>> s2 = 'Dai, Djim, na s4astie lapu mne'
>>> sm = SM(lambda c: c in set(' ,'), s1, s2)
>>> m = sm.find_longest_match(0, len(s1), 0, len(s2))
>>> s1[m.a:m.b]
' lapu '
Вопрос: Аудиоплеер под Linux (Ubuntu 9.10)

Лучший ответ: На самом деле, deadbeef, как вы верно заметили, действительно подходит. Может попробуем разобраться почему он не работает? Выдает ошибки или еще что-нибудь?
Из плееров можно еще qmmp посоветовать.

Худший ответ: Audacious +1
у него есть Вид — Винамп. покрайней мере он не глючный в использовании.

qxmpp и все в том же духе xmpp периодически глючит, например у меня если добавить в список папку где много файлов
Вопрос: Как заставить людей писать текст на сайте?

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

Худший ответ: Кнутом и пряником.
Вопрос: Какая информация о клиентах наиболее важна?

Лучший ответ: 1. Платёжеспособность (платежи, периодичность заказов услуг и т.д.).
2. Лицо, ответственное за принятие решений при переговорах с Вашей компанией.
3. Его заместитель
4. Руководитель компании-клиента
5. Общий уровень лояльности компании-клиента.

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

Лучший ответ: '<option ' + ((i == '1') ? 'disabled ' : '') + 'value="' + i + '">'Вот так. Читайте про тернарный оператор.

Худший ответ: Мне кажется, стоит сделать читаемый вариант(код не проверял):function(seriesList){
	carSelect.html('');
	$.each(seriesList, function(i){
		var option = $('<option />');

		if(i === 1) {
			option.text(this)
			.attr({
				value: i,
				disable: disable
			});
		} else {
			...
		}
	});
}
Вопрос: Есть ли более изящное решение?

Лучший ответ: Не очень понятно зачем вы формируете список, можно просто передать в шаблон queryset, а всю остальную работу сделать в шаблоне, т.к. вы в шаблоне можете делать цикл по queryset. Шаблон в итоге примерно так буде выглядеть:{% if stores_queryset %}
    <div class="footer-col-2">
        <div class="col-name">Наши магазины</div>
        <ul class='stores'>
        {% for store in stores_queryset %}
            <li>
                <span>{{ store.name }} - {{ store.address }}</span>
                <ul>
                    {% for phone in store. phones_set %}
                    <li>{{ phone.name }}: {{ phone.phone }}</li>
                    {% endfor %}
                </ul>
            </li>
        {% endfor %}
        </ul>
    </div>
{% endif %}
Насчет фильтрации телефонов с учетом show=1. Можно сделать кастомный manager, и тогда в phones_set будут уже только отфильтрованные телефоны.
Или проще - сделать property в моделе Store:class Store(models.Model):
    name = models.CharField(max_length=200)
    address = models.CharField(max_length=200)

    @property
    def showed_phones(self):
        return self.phones_set.filter(show=1)
и тогда в шаблоне в соотв месте нужно юзать цикл {% for phone in store. showed_phones %}

Худший ответ: 'stores': Store.objects.all(){% if stores %}
                <div class="footer-col-2">
                    <div class="col-name">Наши магазины</div>
                    <ul class='stores'>
                    {% for store in stores_queryset %}
                        <li>
                            <span>{{ store.name }} - {{ store.address }}</span>
                            <ul>
                                {% for phone in store.phones_set %}
                                <li>{{ phone.name }}: {{ phone.phone }}</li>
                                {% endfor %}
                            </ul>
                        </li>
                    {% endfor %}
                    </ul>
                </div>
                {% endif %}
Сделал так, но это ничего не выводит {% for store in stores_queryset %}
Вопрос: Как скрыть .php, используя .htaccess?

Лучший ответ: Проблема не в том. что откроет посетитель а какие ссылки вы будете прописывать с запросами. 
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

Худший ответ: Это называется ЧПУ (человеко-понятный урл). Гуглите по запросу "PHP чпу".
Вопрос: Как работает аппаратное распараллеливание?

Лучший ответ: Попробую рассказать.
Шаг 1. Конвейерная архитектура (Pentium 1).
Чем-то напоминает многоствольный пулемёт. Один патрон заряжается, другой выстреливается, третий выбрасывается. Стоп… Одна команда выбирается, вторая декодируется, третья и четвёртая исполняются.
Шаг 2. Суперскалярность (Pentium то ли Pro, то ли MMX).
У нас есть несколько исполнительных блоков (в данном случае целочисленных). Если команды не противоречат друг другу, их можно пустить на обоих блоках параллельно.
Шаг 3. Микрокоманды и VLIW (если не ошибаюсь, из x86 первым реализован в Transmeta Crusoe).
Состоит из таких этапов.
1. Разбиваем операции x86 на микрокоманды — например, «перебросить из eax в сумматор», «сдвинуть содержимое сумматора на 1 вправо»…
2. Собираем это самое «очень длинное слово операции» из микрокоманд, заботясь о том, чтобы не было зависимостей по данным. Один сумматор получает слово из eax, а параллельно второй сдвигает на 1. Каждый из разрядов «длинного слова» управляет своим блоком процессора: сумматором, памятью, вводом-выводом…
3. Ну и исполняем это самое слово.
Всем этим архитектурам важно т.н. предсказание ветвлений. Чтобы всё это дело работало, нужно, чтобы несколько операций были декодированы наперёд. Проблема — ветвление: если мы не угадаем, случилось ли ветвление, вся предварительная работа насмарку. В микроконтроллерах с коротким конвейером и предсказуемым до такта временем работы мы на это чхаем: например, в инструкции к AVR говорится, что там двухместный конвейер: один такт декодирование и один (два, три) — исполнение. Обычно такт на декодирование не важен (и не указан в инструкции), но мы теряем его, если случился переход.
А в x86 алгоритмы предсказания ветвлений довольно сложны.
ЗЫ. В суперскалярных процессорах несколько десятков регистров, на которые динамически навешиваются ярлыки: сейчас EAX=r5, а через две команды — уже r13. Так называемое «переименование регистров».

Худший ответ: ну вот представьте. Есть у вас поток команд. Скажем подряд идут команды в духе "сложи мне два числа", "скопируй значение из памяти в регистры", "пошли что-то на шину что бы к девайсу ушло". Для всех этих трех операций нужны разные штуки. Для первой - свободный АЛУ, для второго - управляющие сигналы на оперативку послать, для третьего - третье. И все эти операции занимают сильно по разному времени.
Вывод - мы можем отсортировать команды на этапе конвееризации процессора и таким образом отправлять на обработку команды по мере доступности ресурсов.
Или например... есть у нас у ядра процессора аж 4 АЛУ. То есть мы по хорошему можем сразу 4 арефмитические операции выполнять. Можно распаралелить если команды подряд идут.
Вообще тут лучше почитать по конвееризации процессоров. Это весьма жирная тема.Как операционная система выбирает ядро для исполнения
Почитайте про планировщики, например вот: Process Scheduling in linux
Вопрос: Как создать копию вещественного типа в js?

Лучший ответ: Простые объекты не являются ссылками.var a = 10;
var b = a;
a = 115;
alert(b); // 10

var hard = {};
var other = hard;
hard.test = 111;
alert(other.test); // 111

Худший ответ: Ну как вариант, если вы много работаете с коллекциями, воспользоваться underscorejs.org или https://lodash.com/ Они примерно одинаковы.
Вот так можно скопировать в Lodash: https://lodash.com/docs#clone и #deepClone
Вопрос: В Windows 7 не получается соединить компьютеры напрямую по второй сетевой карте

Лучший ответ: Не надо адреса прописывать руками. Подключение между ноутом и компом ставьте в автоматический режим (DHCP). Для подключения к интернету включайте опцию «Разрешить другим пользователям использовать это подключение к Интернету». На этом всё.

Худший ответ: Да, еще такой момент — 7-ка 64-битная. Не думаю правда что это влияет…
Вопрос: Ваша любимая тема для Gnome

Лучший ответ: Использую комбинированную из Orta + Radiance (от последней только window border) + Faenza иконки

Худший ответ: Gilouche (из старой Suse).
Вопрос: Обучающие материалы по С++/Python с применением ИИ?

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

Худший ответ: Есть полезная книга: Data Science from Scratch
Вопрос: Какой будет оптимальная структура таблиц БД в моем случае?

Лучший ответ: Три таблицы: одна с городами, другая с магазинами, третья с продуктами. 
+ Таблицы связей: 
1) магазины в городах в формате:
city_id | store_id
---------------------
2) еда в магазинах:
store_id |  food_id
----------------------

Худший ответ: Таблица с Городами city
Таблица с Магазинами store
Таблица с Продуктами food
Таблица с ценами на продукты pice: city_id, store_id, food_id, price.
city-pice, store-pice, food-pice - связь один ко многим.
Вопрос: Как увеличить скорость Wi-Fi на TP-Link TL-WR1043ND?

Лучший ответ: Дело в ноутбуке. Wi-Fi адаптер поддерживает 802.11n до 150мбит/с. Это еще нормально, бывают n-адаптеры, у которых потолок 65мбит/с.

Худший ответ: Дома точно такая же точка, но прошитая dd-wrt. Ноут Lenovo Thinkpad T410 подключается через две стены панельного дома на 180, вплотную к точке 230-250. 

У Вас скорее всего дело в адаптере ноутбука или антенне. Но можно поробовать поиграться с настройками роутера: укказать не автоматический, а ручной выбор канала работы (лучше перебрать вручную все и выбрать лучший), попробовать сменить несущую частоту, или указать режим работы точки bgn или gn.
Вопрос: Замена микросхемы (flash module) на плеере Zune HD. Реально?

Лучший ответ: Это чисто теоретически возможно, но совершенно нерентабельно. 
1) Нужно достать где-то чип на замену (вероятно, по конским ценам). Максимальная емкость тошибовских чипов из этой серии -- 32 гигабайта (TH58NVG8D2ELA89), указанный на рисунке TH58NVG7D2ELA89 -- это 16 ГБайт (128 Гбит, как принято считать объем памяти в битах :) )
2) Нужно найти тех, кто согласится перепаять (это недешевая услуга -- пайка нежных чипов в BGA корпусах).
3) Нужно модифицировать прошивку плеера для поддержки нужного объема (реверс-инжиниринг, дорогая услуга).
И результат при этом никто возьмется гарантировать.

Худший ответ: ОК, давайте прикинем еще раз:
1. Вот тут пишут, что 16-гиговый чип стоит 32$. Переводим в рубли, умножаем на два (надо-то 32 гига), и таких чипов у Вас два, = 4000 р. (без доставки и инфляции!).
2. Если поищете в сети, за пайку одного приличного чипа в корпусе BGA всякие сервисы (ремонт ноутбуков, телефонов) берут в районе 4000 р. У Вас таких чипов два, = 8000 р.
3. Предположим, уникальная работа по маленькой правке неизвестной прошивки (с запасом) это 0.5 ЧД приличного реверсера (по розничным ценам около 100$ в час) = 12000 р. При иных расценках -- или не будет сроков, или не будет результата, или ни того, ни другого.
Итого получается: 24000 р.
Это два айпода 6g classic по 160 гигов (только подумайте, белый и черный!), и еще на одни наушники соответствующего класса останется. 
Или: любой подходящий плеер на рынке, плюс несколько SDXC карточек к нему, общим объемом до 512 GB (полтерабайта!!!) и те же наушники, ну и т.д.
Вопрос: Какой Web-фреймворк для Node.js выбрать?

Лучший ответ: Koa.js и Total.js посмотрите. Думаю Koa вам подойдет больше даже

Худший ответ: Судя по описанию это KOA, 100 % ) КАк выйдет в node es7, то выйдет из альфы вторая весрия коа, и как раз async/await
Вопрос: JQuery: Как добавить класс динамически созданному элементу, если смежное с ним текстовое поле не является пустым?

Лучший ответ: Корректный код:$(".input_has-clear").append("<i class='input__clear'>x</i>");

// Ставим обработчик на событие изменения поля
$('.input__control').on('change', function () {
    // Находим родительский блок
    $(this).closest('.input_has-clear')
        // в родительском блоке находим нужный элемент
        .find(".input__clear")
        // скрываем или показываем элемент в зависимости от заполненности поля
        // обратите внимание, что toggleClass вторым аргументом принимает чисто булевое значение
        // поэтому при помощи двойного отрицания приводим строку к нему
        // если она пустая - будет false и класс уберется, иначе - добавится
        .toggleClass("input__clear_visible", !!$(this).val());
});
jsfiddle.net/koceg/j40vquoo
В вашем коде очень многое неверно:$(function() {
   $(".input_has-clear").append("<i class='input__clear'>");

   // 1. Этот код выполнится один раз при загрузке страницы,
   // вам же, наверняка, нужно, чтобы элемент скрывался или показывался
   // динамически по мере редактирования поля
   // 2. .input_has-clear - это span, у него нет value
   if($(".input_has-clear").val() != "") {
      // Логика определения скрытия и показа класса неверная
      // Если повесить на поле обработчик, то при вводе каждой буквы
      // Элемент будет то скрываться, то показываться
      $(this).find(".input__clear").toggleClass("input__clear_visible");
   }
});
P.S.цикл выполняться не хочетВ вашем коде нет ни одного цикла.

Худший ответ: Как вариант вот так
Вопрос: Ubuntu 12.10 убила загрузчик windows 8 и разметку на диске?

Лучший ответ: Так пробовали?
bootsect /nt60 SYS /mbr
bootrec /fixmbr
bootrec /fixboot


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

Лучший ответ: Если знания нулевые, как Вы говорите, начните с изучения базового синтаксиса. Java сегодня имеет довольно богатый, пусть и очень стандартный синтаксис: классы и интерфейсы, наследование, переменные и члены класса, методы и уровни доступа, управляющие операторы (циклы, условия), анотации, система пакетов. Вроде всё. Пусть этот список станет поводом для того, чтобы прочитать это в рамках java где угодно, будь то wikipedia, аль coursera, да хоть Шилтд. К слову, здесь не сильно важен язык программирования. Если до этого хоть что-нибудь изучали, втянете за пару дней. Иначе изучение может растянуться на пару недель.
Вот после этого уже можно копать вглубь. Здесь я бы рекомендовал вами упомянутого Кормена и Кнута. Первого нужно читать вдумчиво, выполнять все упражнения (каждое выполненое упражение это +10 к интеллекту). Кнута можно просто полистать. Оба годяться как справочники, но Кнут будто создавался таким образом. Математики у Кнута много больше и если Кормен может что-нибудь доказать "абы как", то Кнут себе такого не позволит. Из-за чего его читать долго и нудно: можете смело пропускать доказательства и возвращаться как было что-то не понятно. В любом случае, их читать действительно сложно. Осилите хотя бы Кормена - медаль Вам уготована.
Но и язык нужно знать и понимать. Поэтому здесь пора заняться и тем, для чего java предназначена - энтерпрайзом. А именно, умением не столько программировать, сколько разрабатывать продаваемые продукты. Здесь подойдёт филосифия java для начала. Когда наследование перестанет Вас пугать (или наоборот, пройдёт время чересчур увлечённого наследования всего и вся), можно приступить к банде четырёх. В то же время, умея строить сложную архитектуру, мы всё ещё смутно знаем что под капотом у java. Так что можно почитать про оптимизации в JVM (читал англ, не знаю есть ли перевод), ну и покопаться в openjdk, если будет излишняя увереность, лишнем не будет.
Собственно, это roadmap на очень долгое время. С самых начал до седой старости будете изучать java. Вполне возможно, что к тому времени, как начнёте банду четырёх (если начнёте), уже подойдёт долгожданная java 2.0 и всё нижеописанное потеряет значение, но чем чёрт не шутит? К слову, Кормен, и Кнут, и философия, и банда четырёх остануться, это скорее фундаменальные книги.

Худший ответ: А может быть просто сесть и написать змейку или плеер?)
Вопрос: Бюджетный ноутбук с адекватной матрицей (углы обзора)?

Лучший ответ: Имейте ввиду, что в одном и том же ноуте может стоять до 5-6 разных матриц. Соответственно нужно либо смотреть при покупке конкретный экземпляр.
На ixbt владельцы делятся впечатлением о той или иной матрице в популярных ноутах, можно почитать на формуме.

Худший ответ: Поборите лень и сходите в какой нибудь маркет ноутбуков и посмотрите матрицы в деле, выбор матрицы через комменты в вопросах бред, тут скажут одно, а в ноуте будет стоять другое.
Вопрос: Как реализовать систему онлайн-расписания для школы на php+mysql?

Лучший ответ: Не нужно её реализовывать. Таких систем десятки. Лучше взять что-нибудь готовое, например habrahabr.ru/company/raspisanie

Худший ответ: лично делал. могу помочь.
Вопрос: Backend какой выбрать?

Лучший ответ: Чего умеете на том и делайте.

Худший ответ: 1С: Предприятие, на котором ведут скорее всего учет на этих складах, само умеет притворяться веб-сервером. )))
Это будет оперативнее всего - все данные свежие прямо из учетной системы, без каких-либо экспортов-импортов и синхронизаций.
Вопрос: Инструменты для ускорения процесса верстки?

Лучший ответ: А чем плох локальный сервер?

К примеру можно установить node.js и использовать grunt. Преимущества:

Можно использовать какой-либо готовый процессор для HTML (к примеру такой)
Ватчеры. Их правда можно настроить и в любимой IDE но все же… как-то проще в гранте. Ребилд стилей по измению, ребилд шаблонов и т.д.
Оптимизация графики: при резке очень лениво каждый раз пережимать те же PNG-шки. Да, можно просто использовать консолькую утилиту и дергать ее руками, а можно и автоматизировать процесс. Да и есть imgmin и тому подобные.
Оптимизация JS — конкатенация, минификация
Управление JS зависимостями через bower


Правда придется потратить день два на настройку какого-то boilerplate проекта, но в итоге время окупится.

Худший ответ: Из редакторов кода я б использовал Sublime Text + нагрузку плагинами. Верстаю с емметом(ex. zen-coding), + сниппеты. В СТ можно выделять различные блоки и редактровать их или же однотипные элементы.
Вопрос: Как не потерять кошку на даче?

Лучший ответ: Вот такую штуку попробуйте

www.photoline.ru/photo/1225107976

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

Лучший ответ: Если хотите использовать нормальный сервер (не windows + IIS), то однозначно Java. Для прототипа плей подойдет отлично.

Худший ответ: Как говорит мой друг, писать стоит на том, что знаешь )
Вопрос: Какая проверка работает быстрее?

Лучший ответ: Какая проверка работает быстрее?
Которая вызывает переход, предсказанный предсказателем переходов (поскольку ветвь по которой пойдет код уйдет в конвеер)
Если в контексте PHP/Python/Ruby то разницы нету вообще, потому что поток команд формируется по мере выполнения и в итоге не особо получится что-то такое разруливать и тут вообще пофигу какое из перечисленных условий вы будете выполнять. А если говорить о java/javascript/c#/c++/etc то тут большее значение имеет то, как часто будет срабатывать одна или другая ветвь кода. Скажем если условие всегда выполняется или не выполняется, то современный процессор будет после первых двух итераций всегда угадывать какая ветвь кода будет грузиться и оверхэда вообще не будет. Не знаю как на AMD но на интеловских так же неплохо работает предсказание того, что ветви будут выполняться по переменно, один раз одна, другой раз другая.
Так что совсем не важно что будет выполняться в условии. Важно что бы это было предсказуемо, поддавалось каким-то шаблонам. И тогда это будет максимально производительно. А сама операция сравнения это одна операция. и не важно какая это будет операция. Намного важнее что бы весь поток команд который идет на выполнение был в кеше процессора.
И да, если это вообще разовое условие то можно просто забить. Это важно только в циклах.

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

Лучший ответ: printf("%06d", 000000 + 000001);
или если нужно в переменную, то
$x = sprintf("%06d", 000000 + 000001);

Худший ответ: нет таких чисел, вы складываете 0 + 1. 
Скорее всего пропустили плавающую точку.
Вопрос: Mongodb возвращает float вместо int. Как исправить?

Лучший ответ: MongoDB возвращает то что вы записали, если вы запишите int через pymongo то и вернется int, если писать из js-консоли, то нужно "привести" число к int с помощью NumberInt или NumberLong.

Худший ответ: В php в драйвере работы с монго можно было настроить какие значения брать, в php.ini
Думаю, в питоне что-то вроде этого должно быть, надо поискать
Вопрос: Изучение Objective-C: PC/notebook vs MAC?

Лучший ответ: Если вы учите только Objective-C, то gcc умеет компилировать 
Если вы учите разработку под iOS то у вас нет выбора, нужен mac

Худший ответ: Согласен, что мак предпочтительнее. Но думаю, что и установка Mac OS на обычный ПК (не на виртуалку) - тоже вполне вариант на первое время. Если с английским хорошо, то там танцев с бубном примерно на одни выходные. По крайней мере, так было пару лет назад, когда ставил себе хакинтош на домашний ПК. Проверить совместимость железа - много времени не займёт:
wiki.osx86project.org/wiki/index.php/Main_Page
Если будете пробовать, возможно еще полезными окажутся ссылки:
www.insanelymac.com
www.tonymacx86.com