Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: У вас «математический склад ума»?

Лучший ответ:
Математический склад (кузница, рынок, ратуша, амбар) ума, это не про длину выражений, а про применение методов рационального мышления. Умеете их применять - ура, можете считать, что завели себе в голове небольшой складик с математикой. (Рис 0x00)
Рис 0x00 - складик математического ума (на самом деле, нет)

Худший ответ:
Математика для младшей школы: "Магистр Рассеянных Наук"
Вопрос: Почему браузер присваивает разную кодировку php-файлам: utf-8 кодируется в utf-8, а utf-8 без BOM — в windows-1251?

Лучший ответ:
BOM придуман для явного указания того, что в данном файле содержится текст в кодировке UTF-8. BOM - это простой байтовый маркер в начале любого файла. При его скачивании браузер принимает этот маркер и понимает, что нужно использовать выбранную кодировку. Кроме этого, сам веб-сервер на этапе интерпретации файла может распознать BOM и отправить  заголовок с соответствующим charset (кодировкой).
Если BOM не указан, то все зависит от конфигурации веб-сервера и браузера. Если на сервере не настроен DefaultCharset, то данные отдаются без указания charset и распознавание кодировки полностью ложится на плечи браузера. Поэтому он пытается сканировать документ на наличие мета-тега с кодировкой и, если его нет, использует кодировку по умолчанию. Кодировка по умолчанию зависит от браузера, его настроек и операционной системы. Это ответ на вопрос - почему в разных браузерах файл может выглядеть по-разному.
Чтобы избежать подобных проблем нужно на первоначальном этапе создания проекта определиться с кодировкой по умолчанию и использовать ее повсюду. На настоящий момент стандартом де-факто является UTF-8. Используйте ее. Далее следует настроить ваш веб-сервер, чтобы он по умолчанию отдавал utf-8.
Если такая возможность отсутствует, всегда есть возможность указать мета-тег <meta charset="UTF-8">
В идеале ваше php приложение должно отдавать корректный тип контента и кодировку в виде заголовка.
И напоследок - использовать IDE, которая может правильно работать с файлами в различных кодировках. Например PHPStorm.

Худший ответ:
Перейти на PHPStorm
Вопрос: Что значит эта строка(с++)?

Лучший ответ:
Вероятно, это функция, которая принимает указатель на массив float-ов и размер массива.
(тип size_t - целочисленный тип, предназначен специально для указания размеров контейнеров и массивов)

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

Лучший ответ:
<input required type="number"/>
Не?
Способ 2if (isNaN(input.value)) alert('Неверный формат числа...');
Способ 3<script>
function makeNumber(obj){
	obj.value = obj.value.replace(/,/, '.');
	if (/^(\-)?\d*(\.\d*)?$/.test(obj.value)) obj.defaultValue = obj.value;
	else obj.value = obj.defaultValue;
}
</script>
<input type="text" onkeyup="makeNumber(this)"/>

Худший ответ:
var re = /[^0-9]+/g;
var val = "123sss";

if (re.test(val) || val == '') {
  console.log("Есть буквы, или пустое");
} else {
 console.log("Нет букв");
}
Вопрос: Не отрабатывает success у $.ajax?

Лучший ответ:
{
	"id": "dummy",
	"summary": {
		"amount": 0
	},

	"module": "emarket",
	"method": "cart"
}

/* This page generated in 0.016368 secs */
профайлер выключите

Худший ответ:
Если я правильно понимаю, то скрипт срабатывает по нажатию кнопки купить.
И возвращается 
С чего должен наступить успех у dataType:'json'?
Вопрос: The new iPad???

Лучший ответ:
Никаких локов нет. Об этом говорил Тим Кук на презентации. Покупаете и пользуете.
Это касается и 4G. Русское LTE работать не будет (частоты разные с американским), а 3G — без проблем.

Худший ответ:
Если ценник будет отличаться не дальше $150 от Apple Store, то не сочтите за труд мне черкнуть письмецо. Хочу средний без 3г.
Вопрос: Linux в виртуальную машину на Mac OS с прямым доступом к диску?

Лучший ответ:
Да вроде как, если это внешний диск, то он прокинется в виртуалку просто как любое USB устройство, целиком.

Худший ответ:
Поддерживаю решение с LiveCD. Это самый простой вариант — загрузились с сд/флешки, форматнули юсб винт и перекинули данные с основного. Но если все же хотите подключить реальный винт в качестве хранилища виртулбокса то вам сюда www.virtualbox.org/manual/ch09.html#rawdisk
Вопрос: Как сделать появление фона по определенным датам?

Лучший ответ:
Получить текущую дату, сравнить с нужной, если условие выполняется - делаем фон

Худший ответ:
Странная, конечно, задача.
Возможно вам подойдет - codepen.io/anon/pen/adxdBG
Фон появляется в указанную дату, и исчезнет когда дата сменится.
Чтобы все это наблюдать вживую, нужно поставить дату побольше и несколько суток не закрывать окно браузера.
Вопрос: Как обеспечить подключение к серверу нескольких компьютеров через ssh-ключи?

Лучший ответ:
Аналогично.
Ключи могут быть разными. Могут быть и одинаковыми.

Худший ответ:
Вы можете взять свой приватный ключ и положить его же на все компьютеры.
Вы можете сгенерировать везде новые ключи, и скопировать публичные ключи вручную, зайдя с первого компьютера в файл ~/.ssh/authorized_keys - один публичный ключ = одна строка, можно в любом редакторе ее добавить, даже через echo "..." >> authorized_keys
Вопрос: Как зарегистрироваться в adwords без предоплаты?

Лучший ответ:
Недавно отвечал на такой вопрос.
Как создать аккаунт adwords без ввода платежных данных?

Худший ответ:
"Пропустить ввод платёжных данных" - такой кнопки нету. Сделал по-другому: выбрал "выставить банковский счет" и оплата не потребовалась
Вопрос: Как установить ограничение на размер папки в Ubuntu?

Лучший ответ:
dd if=/dev/zero of=/foobar.fs bs=1M count=500
mkfs /foobar.fs
mkdir /foobar
mount /foobar.fs /foobar
Готово

Худший ответ:
Запускайте сайты от разных пользователей.Настройте дисковые квоты.Profit!Пример настроек
Вопрос: Где найти хорошего копирайтера на it тематику?

Лучший ответ:
Пишите в личку на хабре авторам статей, которые вам понравились. Только учтите, что ценник будет не 80-100 р за 1k символов.

Худший ответ:
Хорошая статья на эту тему.
Вопрос: Windows 8 CP на нетбуке

Лучший ответ:
Попробуйте поставить на виртуалку, а затем откройте ее окно в ремиже fullscreen, выставив нужное разрешение экрана. Это будет вполне безопасно для системы, а заодно проверите, как это все работает с таким разрешением.

Худший ответ:
В виртуальной машине можно попробовать.
Вопрос: Возможно ли создать мультисайт с помощью Джанго?

Лучший ответ:
Python/Django/Rest Framework/Celery.
Вот этот стек нужен будет.

Худший ответ:
Что такое мультисайт? 
А насчёт задач, так конечно можно реализовать, можно и не ограничиваться django, по расписанию запускаете питоновский скрипт и делаете там что душе угодно.
Вопрос: Если микроконтроллер питается от 3.3в то нужен ли конвертер уровней?

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

Худший ответ:
для atmega328 конвертер не нужен. Но в любом случае почитайте даташит на ваш датчик
Вопрос: Автоматическое определение прохождения участников велогонки через контрольную точку

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

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

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

Лучший ответ:
Страдал таким во времена XP ещё, так как довольно муторно было всё накатывать,  да и с интернетом тогда дела не очень были.
А сейчас 90% потребностей покрывают стандартные программы, а что в 10% входит, так то ставится минут за 30.

Худший ответ:
1) У вас есть годами настроенная под себя система ОС, со всеми программами настройками ..Расскажите,как вы переносите ее если покупаете новый компьютер\ноутбук ..?
Настраиваю под себя то что основное. Программы ставлю по мере надобности, от понадобился фотошоп тогда и поставил, смысл его сразу после установки ставить если понадобится он тебе через месяца 3.3) Поделитесь своим списком проверенных временем программ,которые работают у вас на Windows? И для Linux ?
Это для каждого индивидуально, некоторым, даже MS Office бывает не нужен. 4) Поделитесь своим списком must have плагинов расширений для Хрома и для Мозиллы?
Если не считать флеша и некоторых специфических, то можно сказать вообще не использую.У вас есть флешка с ОС линукс допустим, и там чтоб все программы работали свои ..Когда надо по работать а оказываешься за чужим компьютером?
Когда учился в универе, то ходил с флешкой на которой был квип. После того как закончил вообще перестал этим страдать, так как в основном на чужих ПК уже есть нужные тебе программы
Вопрос: Как маршрутизатор определяет в какую подсеть отправлять ARP-запрос при пересылке пакетов?

Лучший ответ:
По IP адресу назначения и таблице маршрутизации определяется в какой интерфейс отправлять пакет. 
Если адрес назначения непосредственно доступен в сети на интерфейсе, то отправляется ARP запрос в этот интерфейс. 
Если адрес назначения непосредственно не доступен, то пакет отправляется на следующий маршрутизатор согласно таблице маршрутизации.
Это обычная схема работы IP маршрутизации, она одинакова, что на шлюзе Cisco, что в винде дома.

Худший ответ:
Он разве не широковещательный запрос отправляет?
Вопрос: Как создать json файл из массива в PHP и потом обратиться с этому json файлу через AJAX запрос?

Лучший ответ:
серьезно?
php.net/manual/ru/function.json-encode.php
php.net/manual/ru/function.file-put-contents.php

Худший ответ:
а вот так на JQuery встретить: api.jquery.com/jquery.parsejson
Вопрос: Есть ли программа чтобы при фокусе программ автоматически менялась раскладка клавиатуры?

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

Худший ответ:
я уже не помню умеет ли Punto Switcher https://yandex.ru/soft/punto/ такое. но в любом случае он тебе поможет. тока не так как ты хочешь
Вопрос: Чем отличаются STATIC_ROOT, STATIC_URL, MEDIA_ROOT, MEDIA_URL и подобные?

Лучший ответ:
STATIC_ROOT - место хранения на диске ваших статичных файлов (js, стили, изображения)
STATIC_URL -  префикс url'a до этих файлов
MEDIA_ROOT - место хранения на диске файлов, загружаемых пользователями
MEDIA_URL - префикс url'a до этих файлов

Худший ответ:
В MEDIA_ROOT сохраняются файлы, которые загрузил пользователь. Или которые сгенерировались в результате работы скриптов. А STATIC_ROOT предназначен для хранения "нединамических" файлы, которые самостоятельно не изменяются в процессе работы и являются частью проекта. Стили, скрипты, картинки оформления, шрифты.
А MEDIA_URL и STATIC_URL — урлы, по которым доступны директории для медиафайлов и статики соответственно
Что касается слайдера: загружаемые файлы попадут в MEDIA_ROOT. А получить URL каждого кадра можно так: <img src="{{ slide.image.url }}">
Вопрос: В каком месте mvc системы должен находиться шаблонизатор?

Лучший ответ:
1. шаблонизатор - это просто компонент. Они ничего не знает о MVC и прочем булшите
2. шаблонизатор нужен там, где формируется view. Вы можете крутиться как хотите, но view на бэкэнде пассивно (это http ответ) в подавляющем большинстве реализаций (даже в ADR от которого нынче писают кипятком), а это значит что формироваться view будет в контроллере. Отсюда делаем вывод что шаблонизатор должен дергаться в контроллере а такого компонента как view у нас просто нет. Возможны хэлперы которые помогают формировать этот самый view но не более.
3. управление зависимостями не входит в зону ответственности MVC. Оно обычно где-то сверху, тут можно заюзать Dependency Injection (только готовый контейнер если, свой не пишите).
4. трейты в контроллерах нормальная тема просто потому что на код контроллеров нам должно быть плевать с высокой колокольни. Если вам не плевать на код контроллеров - возможно вы там делаете что-то чего контроллеры делать не должны. Ну и опять же это будет трейт который будет делегировать задачу шаблонизатору а не реализовывать его.
5. что-то мне подсказывает что "модель" в вашей системе координат это какой-нибудь класс для работы с базой данных. Если так - вы не поняли зачем вообще вводится это разделение.

Худший ответ:
Если не ошибаюсь то во view.
Вопрос: Простая, бесплатная (или дешевая) русскоязычная система управления проектами

Лучший ответ:
www.teamlab.com/ru/
Попробуйте

Худший ответ:
А почему не basecamp?
Вопрос: Сеть дом и офис

Лучший ответ:
На Kerio создается vpn-тоннель - тип подключения "Активное", с авторизацией по предопределенному ключу.
локальный id- произвольное имя kerio
отдаленный id - внешний ip  на mikrotik 
удаленные сети - 192.168.88.0/24   (домашняя за mikrotik)
локальные сети - сеть, за kerio, та что в офисе
На mikrotik'е необходимо открыть порты, выполнив следующие команды:
/ip firewall filter add chain=input comment="Allow IKE" dst-port=500 protocol=udp
/ip firewall filter add chain=input comment="Allow IPSec-esp" protocol=ipsec-esp
/ip firewall filter add chain=input comment="Allow IPSec-ah" protocol=ipsec-ah
/ip firewall filter add chain=input comment="Allow UDP" protocol=udp
На вкладке ip->Firewall появятся 4 новых правила:
Настраиваем Proposals (ip->ipsec-Proposals)
/ip ipsec proposal set [ find default=yes ] enc-algorithms=3des,aes-128 pfs-group=none
Настраиваем peer  (adress - внешний ip kerio, password - предопределенный ключ авторизации, как в настройках vpn на kerio):
/ip ipsec peer add address=195.138.xxx.xxx/32 dh-group=modp1536 exchange-mode=main-l2tp generate-policy=port-override hash-algorithm=sha1 passive=yes secret=password
После этого должен подняться тоннель.
Для прохождения трафика между офисной и домашней сетью, необходимо добавить правило 
/ip firewall nat add chain=srcnat dst-address=10.10.10.0/24 src-address=192.168.88.0/24
(Сеть 10.10.10.0/24 в примере - офисная сеть, за kerio
 192.168.88.0/24 - домашняя сеть, за mikrotik)

Худший ответ:
Спасибо! Но не вышло, перепробовал множество вариантов, но доступа к 192.168.88.0 так и не получил, даже с сервера (возможно нужно что-то еще настраивать в роутере). Но удалось получить доступ к IP vpn клиента с сети предприятия (роутеру дома), что уже радует.


192.168.88.1 Роутер
192.168.88.252 Компьютер
Вопрос: Где брать примеры хорошего фронт-енда?

Лучший ответ:
Тот сайт, что вы указали в примере, скорее работа хорошего дизайнера и юзабилити специалиста. Если хотите найти вдохновение в красивых дизайнах, то вам сюда themeforest.net.

Худший ответ:
дело вкуса походу
чем сайт, который вы указали хорош? есть какие-то моменты, которыми он прям выделяется на фоне других?
Вопрос: Code Review, как это фактически происходит?

Лучший ответ:
Ну это просмотр кода человеком, не написавшим код. Нужно для того, чтобы можно было заметить какие-то ошибки и все такое в коде. Очень распостранено для проверки кода джунов, перед тем, как добавить этот код в master-ветку. Есть компании, где твой код обязательно должен пройти ревью другим программистом перед тем, как его добавят в master-ветку, даже если ты опытный senior.

Худший ответ:
Для проведения Code Review существуют специальные инструменты. Например на Гитхабе, можно ревьюить любой пулл реквест и комментировать любую строчку кода. Т.е. без проблем делается удаленно.
Вопрос: С чего начать изучение баз данных(sets, normalization, crud..)?

Лучший ответ:
Читайте про теорию БД и множеств, типы данных, хранилищ и нормальные формы баз данных.
Начинайте отсюда https://ru.wikipedia.org/wiki/%D0%91%D0%B0%D0%B7%D... и вглубь.
И потом руководство к каждой конкретной базе.
Кстати, CRUD = create, read, update, delete - т.е. все стандартные операции.

Худший ответ:
На сайте mongodb есть видеолекции
Вопрос: Зачем &quot;Однокласникам&quot; мое фото?

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

Худший ответ:
ну хацкеры предпочитают анонимность:)
Вопрос: Почему Недействительный URL-адрес Страницы Facebook?

Лучший ответ:
Насколько я помню, нужно вставлять не полностью url, а только свой индентификатор.

Худший ответ:
Нашел вот такой комментарий в фейсбуке:Проблема исчезла после того, как переделал личный аккаунт в публичную страницу, подробная информация здесь:
https://www.facebook.com/help/116067818477568
Увы проверить сам пока не могу.
Вопрос: Как пополнить портфолио примерами для upwork, не имея раньше работы?

Лучший ответ:
1. Хватит - другого варианта у вас и нет.
2. Нет, не обязательно. Если хотите - залейте примеры себе на хостинг.

Худший ответ:
Делайте работы за дешево и пишите что цена такая потому что для портфолио)
Желающие получить что-то задешего найдутся всегда)
Вопрос: Визивиг редактор для админки?

Лучший ответ:
ckeditor.com/
Гибкая кастомизация.

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

Лучший ответ:
Понимаешь, какая фигня. Можно, например, ВПН использовать, но вконтакте заходить под реальным именем. И тогда товарищ майор сидит и думает, кто же это там у нас, Вася Петров или Наташа Орлова в носу ковыряет... Или фотографию отправишь, где EXIF записи остались... Поэтому анонимность она в деталях может упасть.
Пару ссылочек: 
1. https://ru.wikipedia.org/wiki/Electronic_Frontier_...
2. https://www.pgpru.com/biblioteka/osnovy/ssd

Худший ответ:
Анонимности  для чего и от кого?))
От провайдера или российских спецслужб спрятать какие вы сайты посещаете Tor browser за глаза хватит. И если технический уровень позволяет желать много лучшего, то оперативная работа как всегда на высоте и при определенном интересе вас выдадут ваши же действия и прочие косвенные признаки, как и говорит товарищ Сергей Илларионов. 
От иностранщины не хватит впн и тор но вы для них неуловимый джо.
Вопрос: Как организовать план дальнейшего развития front-end разработчика?

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

Худший ответ:
После двух лет на больших проектах на ангуларе не могу сказать, что уровень владения им 80% )) Оценивайте свои возможности трезво (без процентов), не распыляйтесь - сосредоточьтесь на одной технологии, заведите себе профиле на гитхабе и лабайте свой собственных проект, будет что показать работодателям для начала.
Вопрос: Закрыть доступ в интернет для определенных пользователей на сервере 2008r2?

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

Худший ответ:
Пускать инет через прокси или запретить запуск браузера
Вопрос: Как сделать выборку из 3 таблиц?

Лучший ответ:
SELECT something FROM users as u
LEFT JOIN users_data as ud ON u.id = ud.user_id
LEFT JOIN users_sessions as us ON u.id = us.user_id
Если нужны пользователи только с имеющимися данными user_data,user_sessions - меняем LEFT на INNER

Худший ответ:
Если users, users_data и users_sessions связаны один-к-одному, то left join (хотя почему бы в таком случае не хранить все в одном месте).
Если один-ко-многим, то по запросу на каждую таблицу и обрабатывайте в коде, по-другому никак.
Вопрос: Как узнать пароль от mysql в CentOS 6 x86_64 ( с панелью Vesta)?

Лучший ответ:
/root/.my.cnf там пароль

Худший ответ:
Узнать его нельзя, он зашифрован. Но можно сбросить.// Останавливаем MySQL
sudo /etc/init.d/mysql stop
// Запускаем в режиме игнорирования прав и запретом доступа из сети
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
// Входим как root
mysql -u root
// Получаем права на изменение паролей
FLUSH PRIVILEGES;
// Меняем пароль на новый. NEW_PASSWORD заменить на свой пароль
SET PASSWORD FOR root@'localhost' = PASSWORD('NEW_PASSWORD');
// Обновляем таблицы привелегий
FLUSH PRIVILEGES;
// Выходим из клиента и перезапускаем сервер в обычном режиме
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
Вопрос: Что значит Task, когда говорят о языке программирования?

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

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

Лучший ответ:
Я могу ошибаться, но титаниум и прочие htm5-штучки не очень подходят для разработки ресурсоемких приложений (карты к этому относятся). Как максимум, какой-то веб-клиент.
Как решали?
Так что особо не решишь.

Худший ответ:
Рендерить из вектора в растр на мобильном устройстве? Думаю это не совсем попросту. Навител достаточно много времени убил на получение стабильного движка. Но он все равно не идеален ниразу. Вдобавок получите очень сильную зависимость от скорости графического и основного процессора. Так что в мобильном приложении — только тайлы.
Вопрос: Какие ресурсы с новостями по web-разработки вы знаете?

Лучший ответ:
smashingmagazing.com
html5rocks.com
сайт mdn
блоги типа Пола Айриша и других ниндзя
code.tutsplus.com/articles/33-developers-you-must-...
dmitry.baranovskiy.com
https://www.digitalocean.com/company/blog/20-devel...
addyosmani.com/blog
https://github.com/mr-mig/ru-it-chats
css-live.ru
www.webmonkey.com
frontendfront.com
Возможно что-то забыл или что-то не то кинул, е мое почему все попривыкали чтобы им на подносе все принесли, у вас что руки отсохли что ли, гуглить не умеете. Тем более по моему похожая тема была.
Извините за бомб пукан, просто реально тостер превращается во что-то вроде : какая буква идет после г в алфавите.
берете и гуглите, нет на русском - пишите по английски, не знаете буржуйский- есть гугл транслэйт.
PS Извиняюсь за ошибки -писал в порыве гнева.

Худший ответ:
Вот w3.org держите.
А вообще читайте книги, а не новости.
Вопрос: Как преобразовать относительный в абсолютный url?

Лучший ответ:
Встроенной нет. Можно написать самому, используя parse_url, либо взять готовую библиотеку https://github.com/monkeysuffrage/phpuri.

Худший ответ:
Недавно использовал такую функцию:function rel2abs($rel, $base)
{
    /* return if already absolute URL */
    if (parse_url($rel, PHP_URL_SCHEME) != '') return $rel;

    /* queries and anchors */
    if ($rel[0]=='#' || $rel[0]=='?') return $base.$rel;

    /* parse base URL and convert to local variables:
       $scheme, $host, $path */
    extract(parse_url($base));

    /* remove non-directory element from path */
    $path = preg_replace('#/[^/]*$#', '', $path);

    /* destroy path if relative url points to root */
    if ($rel[0] == '/') $path = '';

    /* dirty absolute URL */
    $abs = "$host$path/$rel";

    /* replace '//' or '/./' or '/foo/../' with '/' */
    $re = array('#(/\.?/)#', '#/(?!\.\.)[^/]+/\.\./#');
    for($n=1; $n>0; $abs=preg_replace($re, '/', $abs, -1, $n)) {}

    /* absolute URL is ready! */
    return $scheme.'://'.$abs;
}