Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как подобрать слайдер?

Лучший ответ:
Slick slider Center mode вроде такая же

Худший ответ:
Не понимаю в чем проблема сделать с помощью Slicksnippet
Вопрос: Как освоить математику?

Лучший ответ:
Можете начать с книги Куранта и Роббинса "Что такое математика", этого хватит для общего понимания Кормена. Если захочется двигаться дальше в сторону ML, то посмотрите в сторону ШАДа, его программу подготовки к поступлению можно рассматривать как краткий перечень необходимых в этой области тем.

Худший ответ:
Можете начать с книги Куранта и Роббинса "Что такое математика", этого хватит для общего понимания Кормена. Если захочется двигаться дальше в сторону ML, то посмотрите в сторону ШАДа, его программу подготовки к поступлению можно рассматривать как краткий перечень необходимых в этой области тем.
Вопрос: Как мне вывести массово ширину и высоту картинок в отдельный файл?

Лучший ответ:
Одной командой из командного файла с использованием ImageMagick:for /R %%F in (*.jpg) do identify -format "%f %wx%h" %%F >> list.txt

Худший ответ:
Нашел способ благодаря программе Advanced Rename.
Спасибо ребята за помощь, но мне больше подходит Advanced
Вопрос: Как в sublime text 3 изменить табуляцию?

Лучший ответ:
Тык сюды

Худший ответ:
как вариант - использовать в проектах editorconfig link
Вопрос: Правильно ли задал операции сравнения?

Лучший ответ:
Дословно#include<locale>
//...
locale loc(".1251");
if(!isalpha(c, loc) && !isspace(c, loc))
{
  //...
}
win10 VS2017

Худший ответ:
> если это буква НЕ RUS(маленькая,большая, и отдельно стоящие ё), НЕ ENG(маленькая,большая), и это НЕ пробел - то меняю boll на значение false
Здесь ты пишешь "И", а в коде почему-то стоит "ИЛИ". 
вдумайся в смысл выражения (c != 32) || (c != 184), оно всегда истинно
И сравнивай стандартными функциями вроде isalpha, в крайнем случае c >= 'a' && c <= 'z', но не с числами, во первых не читаемо, во вторых нет гарантий, что кодировка ascii. 
А ещё лучше упростить код так:bool isValidChar = isAlpha(c) || isDigit(c) || isSomethingElse(c);
сразу понятно, что символ нам подходит только, если удовлетворяет хотя бы одному из условий. А чтоб совсем хорошо было, используй регулярные выражения.
Вопрос: Как ускорить вёрстку?

Лучший ответ:
1) SASS и сетку для него(типа bootstrap)
2) GULP для компиляции , а также его LiveReload и AutoPrefixer, и BrowserSync с его локальным сервером, и Bower (закачка либ)
3) GIT
4) Emmet
5) BEM (БЭМ)
6) Используйте gist от github
Ну и прямые руки

Худший ответ:
я бы добавил brackets.io
Вопрос: Как перенести телефонную книгу со старого телефона на айфон?

Лучший ответ:
Скопировать из телефонной книги телефона на sim-карту.
Вставить sim-карту в Android.
Скопировать с sim-карты в телефонную книгу Android.

Худший ответ:
Это все просто. На симку сначало, потом симку в айфон. Но старая нокия будет с большой симкой, а в Айфоне нано будет. Тогда проще всего взять нано симку и сохранить адаптеры к ней. Обычно они идут в комплекте с симкой. И все, переносите. Сначала с нокии на симку, потом с симки на айфон. Если не хватает на симке места ,то в несколько подходов.
Вопрос: Wordpress: Как вывести посты текущей категории через wp_query?

Лучший ответ:
Попробуйте так:$args = array(
        'posts_per_page' => 6,
        'orderby' => 'comment_count',
        'cat' => get_query_var('cat')
        );

Худший ответ:
Как получить информацию о текущий страницеglobal $wp_query;
print_r( $wp_query );
Найти в выводе id категории и подставь туда тебе надо.\
И один совет - переименуй свою переменную $query в какую-нибудь $category_hot_query, дабы избежать потенциального переопределения. Оно и в твоем случае работать будет, просто из опыта могу сказать, что сейчас ты написал тут $query, через неделю твой клиент тебе пишет "А вот хорошо бы еще вот тут вывести..." и ты делаешь еще одну переменную $query, потом твой коллега где-то еще $query и т.д. В итоге ты тратить 10 минут лишнего времени на поиск и исправления тупой ошибки, которую можно очень легко избежать.
Все это чисто лирическое отступление, основанное на моем личном опыте.
Вопрос: Нужен ли перевод рекомендаций?

Лучший ответ:
а если клиент англоязычный пусть нанимает переводчика который ее прочитает.
На такое всегда ответ - нет! Чем больше мы делаем сами на пользу проекта, тем больше мы стоим, а здесь очевидно, что на пользу, и никак не во вред.2. Взять перевод на себя, и попросить клиентов его подписать, поставить печати и т.п. если новый клиент захочет позвонить старому что б расспросить о периоде сотрудничества 
Насчет этого не может быть однозначного ответа, лично я вообще против всякого "выпрашивания" отзывов и любых телодвижений с ними связанных (а насчет позвонить - здесь уже имеет место и конфиденциальность), клиент обычно не обязан обеспечивать вам хорошую репутацию, если, конечно, он вас не обижает как заказчик - тогда это вариант примириться.3. Взять перевод на себя, но предоставлять его клиентам в формате без печатей, подписей и с пометкой что это просто перевод.
Самый верный вариант, кому нужна точность, те сами переведут, но подавляющему большинству хватит и того что есть, даже без подписей и без печатей. :)

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

Лучший ответ:
Потому что это проверка на переполнение даёт лишние накладные расходы при выполнении. Изначально язык разрабатывался с расчётом на эффективность, с девизом что-то типа: «не нужно платить за то, чем не пользуешься».
По сути, Си — это просто высокоуровневый ассемблер. В ассемблере нет понятия ошибок вообще, всё на плечах разработчика. Если ему нужно проверять на переполнение, он сам должен реализовать этот функционал, а не терять на этом производительность, когда ему это не нужно.

Худший ответ:
Почему строковый массив может переполняться без какой-либо ошибки?
Потому что диагностика такой ошибки не требуется от реализаци. Есть реализации диагностирующе такие ошибки, например gcc + ASAN.
Вопрос: Этапы создания сайта?

Лучший ответ:
Если вы ищите серебрянную пулю, то её нет. Кто как хочет, так и делает.
Дизайн, верстка и программирование всегда идут параллельно. Чтобы не причинять друг-другу боль.
Что касается коммерческих сайтов. Кто ими занимается, для себя уже выработали все алгоритмы. Это приходит с опытом.

Худший ответ:
Как обычно есть два выхода.
1. Найти или купить или заказать готовый шаблон, где всё вами перечисленное реализовано. Вообще-то не всё. Копирайтинг и SEO придётся осваивать, или нанимать копирайтера и сеошника.
2. Отложить создание полноценного сайта на пару лет, и засесть за основы веб-программирования, а дальше - всего того, что вы перечислили. Вот это и будет с нуля, судя по вопросу у Вас так и есть. А вот когда выйдет под ключ - будет зависеть только от вас. 
Вообще-то, создать и вести полноценный коммерческий сайт, одному человеку, просто не по силам.
Вопрос: The query cache is deprecated as of MySQL 5.7.20, что это значит и чего ждать?

Лучший ответ:
Собственно оно и означает, что убирают кэш запросов. 
mysqlserverteam.com/mysql-8-0-retiring-support-for...

Худший ответ:
Query cache вообще штука весьма неоднозначная, и лучше всего query_cache_size устанавливать в 0. Поэтому, не велика потеря. Для тех, кто давно так делает, последствий никаких. Для тех же, кто на него полагался, предстоит немного чтения и ковыряния в коде.
Вопрос: Что делать при таком разбросе знаний?

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

Худший ответ:
Что делать?Учиться искать информацию. При разработке постоянно возникают проблемы/вопросы (которых ни в книхах ни на курсах нет), поэтому нужен скилс быстро находить нужную информацию.пройти всё заново или практиковать?Минимальное понимание есть - значит практиковать, это первоначально, а теорию уже можно по пути подтягивать по мере необходимости.
Вопрос: Как автоматически удалять Incremental и diff после Full в Bareos/Bacula?

Лучший ответ:
При полном бэкапе остаются на диске все inc и diff бэкапы,
в целях экономии места хотелось бы что бы при успешном Full они автоматически удалялись. 
Нередко бывает нужен не только последний бэкап.

Худший ответ:
Их не надо удалять. Ограничьте их количество и время хранения и они будут циклически перезаписываться при истечении времени хранения.
Вопрос: Можно ли использовать Битрикс как headless CMS?

Лучший ответ:
С выходом нового d7 подхода к построению компонентов (так-называемые Engine\Controller) вы сможете использовать любой фронт-энд и довольно просто вызывать методы вашего компонента.
Например: у вас есть компонент reviews в пространстве имет colobot.
Соответственно у него есть action: getList (function getListAction).
Для того чтобы отправить запрос и получить ответ можно будет использовать конструкцию вроде:BX.ajax.runComponentAction('colobot:reviews::getList',{
	// .. параметры которые будут отправлены в метод getListAction
	// компонента reviews в пространстве имен colobot
}).then(function(){
	// .. полезные действия
});
Но как уже указали коллеги Выше - можно, но API придется писать самим (в БУСе его пока нет)

Худший ответ:
Отказаться от битрикса. Он собственно становится вовсе не нужен при разработке SPA приложения. Взять толковый фреймворк Ruby On Rails(там отличная поддержка jsonapi). Так же очень суперский EmberJS, с таковой поддержкой. React & Vue не посоветую, там нужно изобретать кучу велоспедов.
Вопрос: Как получить данных на select из база данных через javascript?

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

Худший ответ:
Как то так наверноеfetch(URL_forGetSelectData,
).then(function (response) {	
	return response.json();
}).then(function (response) {
// если даные пришли в виде html: '<option value="value_1">name_1</option><option value="value_n">name_n</option>'
	document.getElementById("selectId").innerHTML=response; 
	// или если  данные пришли в виде json примерно :
	// response = {
	// 	"name_1":"value_1",
	// 	//...
	// 	"name_n":"value_n",
	// };
	let  fragment = document.createDocumentFragment();
	for (let option in response){
		let optionElem = new Option(option, response[option]);
		fragment.appendChild(optionElem);
	}
	document.getElementById("selectId").appendChild(fragment);
	
	return;
}).catch(function (error) {
	console.log(error);	
});
Вопрос: Замена символа в русской раскладке?

Лучший ответ:
нужно сделать персональную раскладку (через microsoft keyboard layout creator ), и на ней заменить нужный символ.

Худший ответ:
Самый простой вариант - использовать программу Punto Switcher. В ней настроить автозамену нужного Вам символа.
Вопрос: Как сделать scanf( ) необязательной для заполнения?

Лучший ответ:
Ну наверное ... реализовать предложенный Вами алгоритм :) Просто вместо scanf() применять другие функции чтения, gets() например. И считывать, что приехало. Если "\n" или "\0" (мы же правильные программисты, мы же инициализируем области перед использованием :D) - нажимали [Enter]. 
Если же gets() ведет себя так же - значит на более низкий уровень опускаться...

Худший ответ:
Примерно так:#include <iostream>
#include <ncurses.h>

using namespace std;

string get_string()
{
	string result;
	while(true) {
		int c = getch();
		if (c == -1)
			continue;
		if (c == 10)
			break;
		if (c == 127) {
			if (result.length() > 0) {
				result = result.substr(0, result.length() - 1);
				clear();
				addstr("Enter name: ");
				addstr(result.c_str());
			}
		}
		else if (c > 33 && c < 127) {
			result += (char) c;
			addch(c);
		}
	}
	return result;
}

int main() {
	initscr();
	noecho();
	addstr("Enter name: ");
	string name = get_string();
	endwin();
	cout << endl << name << endl;
	return 0;
}
Вопрос: Какие нужны фундаментальные знания?

Лучший ответ:
Это ощущение вас никогда не покинет, учитывая темп развития технологий в последние 20 лет. Только вы досконально изучите и научитесь работать с одной технологией - ей на замену сразу придет другая и придется её точно так же изучать чтобы оставаться технически востребованным и конкурентноспособным специалистом на бирже труда. Смиритесь с этим чувством. Либо просто досконально изучите определенный классический стек технологий и работайте с ним, если ваш уровень развития вас устроит.
По поводу литературы и мануалов от себя могу сказать, что в нашем деле главное не теория, а практика. Мы делаем, а не учим. Наше дело - как максимум, помочь другим советом или опытом. Мы никак не сможем многолетний практический опыт, выработанный склад мышления и все наши навыки доскональным понятным языком описать в очередной книге чтобы, прочитав её, другой человек смог достичь того же уровня. Это очевидно. Практикуйтесь, развивайтесь, изучайте, экспериментируйте, не бойтесь на первый взгляд нерешаемых задач, больше практики, меньше чтения. Восполняйте чтением необходимые вам теоретические пробелы, чтобы ваши практические навыки улучшались. Это главное, что я могу сказать, опираясь на собственный десятилетний опыт работы в нашей сфере труда.

Худший ответ:
Полтора года опыта учебного программирования - это ничтожно мало.  Я уже много раз об этом писал, но повторюсь: программирование - как спорт, если вы не начали в 12 лет, а начали только в университете, вы отстали от тех, кто пришёл в университет уже с четырьмя или пятью годами опыта. Почему этот опыт важен? Не потому, что кто-то пять лет штаны за книжками просиживал, а потому что они набивали руку на решении практических задач и алгоритмическом мышлении. Вам приходится задумываться над каждым шагом, а им приходится только приводить знания в порядок. Кто говорит, что фундаментальные знания не нужны, а важно только требование работодателя - лукавит, потому что таким образом получаются одни говнокодеры.
Вопрос: Какое есть средство виртуализации под Ubuntu 12.04?

Лучший ответ:
средств виртуализации то много - vmware workstation, virtualbox, kvm....
Вы же сами говорите - держится еле еле. И хотите на этом еле еле поднять виртуализацию. Это чтобы окончательно убить?
поднимайте на новом сервере.

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

Лучший ответ:
Если нет локальных копий, то никак. Там не зря кнопки красные в интерфейсе.

Худший ответ:
Написано же merged. Значит как все коммиты ветки зафиксированы в репозитории.
Переключись на нужный коммит и создай на нём ветку.

Если удалил ещё не слитую ветку, то восстанови через git reflog

Все операции делаются локально на рабочем компьютере.
Вопрос: Как скомпилировать под Linux из под Windows?

Лучший ответ:
Можно попробовать найти сборку g++ под Cygwin и скомпилировать им, но не уверен
Собственно по nix'ами для винды компилирую родными компиляторами, запущенными под wine
А Cygwin - это wine наоборот
Еще как вариант - скомпилировать clang'ом, да будет прослойка в виде llvm, зато кросплатформенно получится

Худший ответ:
Если у вас консольное приложение и вин10, то можно поставить Linux Subsystem for Windows внутрь поставить gcc и тулчейны и компилировать там - будет получаться нативный линуксовый исполняемый файл.
Возможно так же можно собрать и графические (оконные) приложения, но запустить их не получится (т.к. Linux Subsystem for Windows графику не поддерживает).
Для графических приложений можно поставить msys2/mingw и кросс-компилятор (gcc) и собирать там.
Но на самом деле, если нужно собирать графические приложения, то проще всего поставить виртуалку с линуксом.
Вопрос: Как безопасно передавать доступы к сайту новым программистам?

Лучший ответ:
Договор надо заключать, если без договора, то смотреть отзывы, работать через безопасные сделки, если это фриланс. Я конечно, не знаю, что у вас за сайт, но, если у человека куча отзывов + высокий рейт, смысла ему нет портить репутацию. 
А, вообще неплохо использовать какую-нибудь систему контроля версий и не давать доступы к продакшену.  Сторонние разработчики делают изменения, заливают в репозиторий, ваш проверенный человек смотрит, если все ок, то деплоит на продакшен.

Худший ответ:
Не работать с фрилансерами.
Защититься никак.
Вопрос: Хостинг сайтов на Django и как определится чего именно я хочу?

Лучший ответ:
Django обычно хостят на VPS. Это виртуальный изолированный сервер. Провайдеров тысячи: Digital Ocean, vultr, linode, simple cloud и т.д. Грубо говоря, это равносильно тому, что ты установишь себе на ПК, допустим, чистый Ubuntu Server и сам всё настроишь. Никакие "админы" ничего с ним не сделают.Как понять сколько людей на нем сможет тусить
Нагрузочное тестирование + реальная статистика + профилирование. Всё зависит от кода и его качества. И это последнее, о чём надо думать при запуске. Вот как будет большая посещаемость — тогда и будешь оптимизировать.

Худший ответ:
1. Берешь VPS и настраивай чего хочешь туда. Любое ПО. Но настраивай самостоятельно.
2. PaaS с поддержкой Python. Все уже настроено до вас. Часто бывают бесплатные лимиты до какой то небольшой нагрузки. Openshift, Heroku, Google AppEngine.
Вопрос: Имеет ли смысл ставить ssd на sata2?

Лучший ответ:
Задумался, а не лучше ли взять hdd, за ту же сумму смогу взять на 2tb, тоже sata3, но скорость будет такая же, как и у ssd, т.е примерно 250.
70 в лучших условиях. + задержки на поиск файла на блине, проворот блина и т.д.
Берите ssd не раздумывая.

Худший ответ:
А что вы так часто читаете на скорости 500мб в секунду то? У меня просто нет ни одной задачи на компе кому нужна была бы такая скорость, что у вас за такие задачи?
Да я бы далее сказал сотку то дисковой нагрузки никогда нету
Понятное дело что отзывчивость у ссд на два порядка выше
Вопрос: Реально ли как-то организовать работу сайта, в случаи проблем у хостера?

Лучший ответ:
зачем заморачиваться с резервным сервером и платить x2 больше денег, если можно просто уйти от этого хостера и найти другого. vps это не дедик. аптайм должен быть 99%

Худший ответ:
Для начала в DNS указать TTL небольшой, например 15 минут. DNS сервера должны быть не у хостера. Держать копию сайта у другого хостера и в слючае проблем изменить IP сайта на второго хостера.
Вопрос: Есть ли приложение/программа аналог MyLifeOrganized с функцией древовидных задач?

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

Худший ответ:
Попробуйте ToDoList - десктопное приложение с функцией учета времени.
Вопрос: Как предотвратить утечку IP при использовании прокси/VPN?

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

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

Лучший ответ:
Отлавливайте событие mousewheel.
Решение: https://jsfiddle.net/FL3N/wxnhn8fe/

Худший ответ:
Отлавливайте событие mousewheel.
Решение: https://jsfiddle.net/FL3N/wxnhn8fe/
Вопрос: Под Headers всегда подразумевается тип файла?

Лучший ответ:
Под headers подразумеваются любые заголовки, как запроса так и ответа. Это не только тип контента, но и User-Agent, Referer, Cookie и вообще что угодно, даже ваши собственные заголовки. В качестве примера можете посмотреть заголовки любого запроса через инструменты разработчика в браузере. Например, в Mozilla - Ctrl+Shift+Q. Там будут заголовки как запроса так и ответа.
Или вот https://developer.mozilla.org/en-US/docs/Web/HTTP/...

Худший ответ:
Headers - это часть HTTP запроса, а именно заголовки.
В вашем примере два раза используется один и тот же заголовок, который обозначает content-type содержимого.
В интернете полно информации о HTTP заголовках.
Вопрос: Gitlab или Bitbucket?

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

Худший ответ:
1. А вы не путаете GitHub с GitLab? Это ОЧЕНЬ разные сервисы. Хотя и так и там (и на БитБакете тоже) есть git, но это разные сервисы. А вот bitbucket на github похож. А вот GitLab от них принципиально отличается.
2. В случае закрытого проекта - BitBucket дает немножко бесплатных закратых реп. GitHub и GitLab - только за денежки, не хотите платить - будет публично.
Вопрос: Как эффективно разрабатывать код на javascript?

Лучший ответ:
В консоли - никак, если не исхитряться. код, после окончания работы сборщиков, полностью инкапсулируется.
Вы можете, на время разработки, добавлять эти методы в объект window, если очень хочется дергать эти функции вручную из консоли (потом не забудьте удалить)
file - development_test.jsimport * as api from './api/clientApi.js';
window.api = api;
Этот тестовый файл просто импортите в корень проекта, получаете возможность дергать window.api[api_method]  из консоли.
Ну а вообще - юнит тесты удобнее всего писать на части системы

Худший ответ:
есть, вроде бы возможность запускать функции js в среде nodejs, и как-то прикрутить к этому делу отладчик, видимо буду копать в этом направлении, если вам знакомы такие подходы, поделитесь, пожалуйста.
Вопрос: Часто ли вы делаете прототипы?

Лучший ответ:
Тк делаю сайты на Бутстрапе, то в Azure нет смысла делать прототипы
Делаю прототипы в Пингендо https://maksfedorov.ru/blog/all/prototipy-saytov-v...
На выходе быстрая и чистая адаптивная верстка

Худший ответ:
По-разному. 
Проекты с большим функционалом лучше действительно продумать в прототипе, чтобы понять и утвердить функционал и для себя и для клиента. 
Проекты лендингов/микросайтов можно делать сразу — все равно будет больше разговоров о шрифтах/картинках, а не о блоках и функциях. 
Работайте по часам и не будет ни у кого вопросов — надо ли им платить за прототип или нет. 
Забудьте про фикс — это самая тупая схема работы в дизайне и коде.
Вопрос: Как убрать кавычки в json файле на выходе с помощью php?

Лучший ответ:
нужно убрать кавычки у Васи
По стандарту строки обязаны быть в кавычках. Следовательно, вы хотите получить не JSON, соответственно пишите для своего формата свой обработчик следуя грамматике того формата, который вам нужен. Но не надо его называть json.

Худший ответ:
Json не может быть без кавычек, уж простите. Если собираетесь использовать встроенное API языка, тогда это никак не получится. Если вы просто сохраните ваш псевдо-json — в файле txt или строчкой в БД — режте что хотите. Думаю, удалить кавычку из строки у вас не составит проблем.
Вопрос: Что делать, если не получается использовать незадействованное место на SSD после клонирования раздела?

Лучший ответ:
Да, новый раздел создать не получится. Все разделы основные, а основных может быть не более четырёх.
Два варианта:
1. Удалить раздел изготовителя и создать ещё раздел;
2. Загрузиться с liveCD Gparted и там нарастить размер диска C за счёт нераспределённого места (сдвинуть разделы).

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

Лучший ответ:
Последовательность строк без сортировки не гарантируется в БД.
Для такой штуки надо сделать столбец "index", где хранить порядковый номер элемента. Затем при перемещении изменять у всех затронутых строк этот параметр. При загрузке из базы сортировать по индексу.

Худший ответ:
Например:
Заведите поле в требуемой таблице number и записывайте туда порядковый номер (1,2,3,4...). При изменении места объекта соответственно обновляйте значение number. При выводе сортируйте по number.