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

Лучший ответ:
Вы реально намереваетесь ориентироваться в CSS на имена тэгов типа article, header, etc.? Ну тогда такая вёрстка сразу летит в топку.
И нет таких «каскадных селекторов». Есть комбинаторы, и есть каскад, на котором основан CSS и без которого он вообще невозможен.

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

Лучший ответ:
Как раз у Chrome правильные XPath.

Худший ответ:
Вам нужно выбрать таблицу с событиями? Зачем же вы парсите весь путь?

//table[class='newLive']//tr — вернет вам все строки таблицы с классом newLive.
Вопрос: Есть ли более производительные аналоги Phonegap?

Лучший ответ:
Боюсь вас разочаровать, но PhoneGap никакого отношения к производительности не имеет.
Это всего лишь мостик между функциональностью, доступной в native-режиме конкретной платформы, и JavaScript-ом, исполняемым в in-app браузере.
Ваше приложение работает так быстро, как быстро работает реализация JavaScript на конкретной платформе в конкретном браузере и также скорость зависит от того, какую именно функциональность HTML5 использует ваше приложение.

Поэтому ваша проблема не в PhoneGap. Она в Android+HTML5, увы. 

P.S. Я знаю о чем говорю — разрабатывал приложение под PhoneGap на Sencha Touch. То, что вполне нормально работает на iOS, на Андроиде может быть катастрофически неповоротливо — я тестировал и там и там.

Худший ответ:
Аналоги Phonegap это Appcelerator (Titanium Mobile), MotherApp и NimbleKit, почитайте про них подробнее, что из этого производительнее
Вопрос: Asterisk и GSM модемы, какие модемы подходят для роботы?

Лучший ответ:
Проверенные модели с прошивкамиHuawei E173     11.126.85.00.209
Huawei E1550    11.609.20.01.715
Huawei E1750    11.126.13.00.00
Huawei E171     11.126.85.01.143

Худший ответ:
Напрямую к астериску - ответили выше.
Я, увы, владею зоопарком из huawei e160, e173, e1550 и кучка ZTE MF160, ZTE MF190. C ними вопрос решил через софтину SIPGSMGATEWAY - 10 модемов бесплатно, а дальше лицензия. Так вот факт - 8 озвученных модемов в одном системнике Core2Duo 2,4/RAM 1GB/.../Win7... 
Итог: хоть и косяков не замечено, но рассматриваю её только как ВРЕМЕННУЮ меру - основные каналы идут через адекватный шлюз Addpac 1002. Мера временная, так как на замену модемам жду к концу года два Addpac 1004...
Ну и так на всякий случай - вы знаете что такое мультифон? Для мегафона я физические каналы каналы шлюзов не занимаю... Ну и многоканальность спасает!
Вопрос: Как раскодировать в PHP такую строку?

Лучший ответ:
Буквально недавно было. И стало постоянно вылезать
Если пришел json ответ, то добавить параметр true к json_decode
Вообще, это называется unicode escape characters - гуглите

Худший ответ:
Ответ легко гуглится.
/me нажал "Пожаловаться".
Вопрос: Реально получить лицензию разработчика в Google Play бесплатно?

Лучший ответ:
Нет. А в чем проблема заплатить 30 дол. ?

Худший ответ:
Нет.
Вопрос: Какими плагинами Grunt Вы пользуетесь?

Лучший ответ:
grunt-contrib-connect - локально создает сервер в связске с grunt-contrib-watch позволяет организовать livereload страницыgrunt-concurrent - позволяет параллельно запускать плагины, которые работают так сказать непрервыно. в моем случае это grunt-contrib-watch и grunt-contrib-compassgrunt-contrib-watch - постоянно отслеживает изменения в определенных файлах и при регистрации изменения перезагружет страницу загруженную в grunt-contrib-connectgrunt-contrib-compass - sass/scss в css, имеет свой встроенный livereloadgrunt-contrib-jshint - проверяет на ошибки .js файлыgrunt-contrib-imagemin - сжимает изображенияgrunt-contrib-copy - копирует файлы/папкиgrunt-autoprefixer - расставляет префиксы в cssgrunt-combine-media-queries - группирует медиа запросыgrunt-contrib-cssmin - минифицирует и конкатеринует .cssgrunt-contrib-uglify - минифицирует и конкатеринует .js

Худший ответ:
Из интересного:grunt-csso -- оптимизатор со структурной оптимизациейgrunt-remove-logging -- убирает вызовы console.* из js grunt-shell -- произвольные shell-вызовы          grunt-autoprefixer -- конфигурируемое автоматическое добавление вендорных префиксов согласно данным о поддержке браузерами тех или иных фич  
Ну и всякий там contrib-concat, contrib-copy, contrib-uglify, contrib-watch.
Вопрос: Наложение слоя на изображение не видимого для глаза, но возможного для считывание, возможно?

Лучший ответ:
Стеганография. Скрытие информации в изображениях
На хабре еще было: habrahabr.ru/post/206094

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

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

Худший ответ:
Рекуррентные сети обладают кратковременной памятью (т.е.  могут делать вывод, исходя из нескольких предыдущих входных значений, а не только одного предыдущего значения). Самые известные типы из них сейчас это LSTM и GRU. Используются, например, для предсказания следующего слова в предложении, исходя из предыдущих. Можно попробовать их и в вашем случае, наверно.
Вопрос: Алгоритм сортировки массива точек в трехмерном пространстве относительно заданной?

Лучший ответ:
Существует ли быстрый алгоритм сортировки массива точек в трехмерном пространстве относительно заданной? Я не знаю, что вы подразумеваете под словом "быстрый", но мои соображения таковы:
1) определить расстояние от каждой из n точек до заданной - O(n) (даже Θ(n)). Я не вижу здесь потенциала для фундаментального улучшения.
2) отсортировать массив - O(n*logn) в лучшем случае.
Итого - O(n)+O(n*logn)=O(n*logn).
Другое дело, что если входные данные имеют специфическую структуру, то можно, при соответствующем подходе, понизить (или попытаться понизить) "константы" O-нотации и соответственно время выполнения.

Худший ответ:
Вычисляете расстояние до каждой точки и сортируете, как Вам угодно. Ничего сложного
Вопрос: Зачем на сайте Re:Store пишут &quot;1 ГБ = 1 миллиард байт&quot;?

Лучший ответ:
Потому что с точки зрения СИ это правда.

Худший ответ:
Картинку под кат! Слишком огромная!
Вопрос: Почему команда rm -rf /* повредила настройки BIOS?

Лучший ответ:
Раздел UEFI был смонтирован, вы с него всё удалили.

Худший ответ:
Скорее всего во время удаления был затронут каталог "/sys/firmware/efi/", где и лежат настройки EFI(BIOS).
Вопрос: Почему Open-server не подхватывает папку домена?

Лучший ответ:
OpenServer не умеет ипользовать папки не из своего каталога domains, даже если вы их туда пропишите - работать не будет.
Пользуйтесь символическими связями (directory junction) для адресации ваших каталогов в domains

PS:
В конфиге аппача все -FollowSymLinks замените на +FollowSymLinks

Худший ответ:
Быть может прав на редактирование .host нет?
Вопрос: Нужна ли прослойка между Entity Framework и сайтом?

Лучший ответ:
Пункт 0: используйте EF CodeFirst или POCO templates, тогда у вас будут «чистые классы» in the first place.
Пункт 1: все нижесказанное верно до тех пор, пока у вас контроллер работает напрямую с DAL, а не со слоем бизнес-логики или сервисов.

Есть таблица dbUsers в базе. В EF создаются классы dbUsers. Неким образом создается класс User. Слой данных работает с объектами EF а пользователю (контроллеру) отдает красивые чистые объекты класса User без лишней информации.
Это лишняя прослойка.

Есть таблица dbUsers в базе. В EF создаются классы dbUsers. Слой данных напрямую работает с этими объектам и передает их в контроллер. Т.е. контроллер работает с объектами типа dbUsers…
Это вполне нормально.

Худший ответ:
Давно не пишу на asp.net mvc но в своё время использовал ViewModel.
К примеру у вас есть класс User у которого кроме прочих переменных есть переменная active которое может быть true/false, тобишь активный юзер или нет, допустим у вас есть форма регистрации юзера, но вы не хотите светить эту переменную. Использовать модель User не безопасно, так как это поле всё равно можно будет заполнить и при мапинге формы на модель это переменная заполнится, есть два решения.
1)public ActionResult registration([Bind(Exclude = «active»)] User model)
Так при мапинге данных формы на модель поле active проигнорируется.
2)public ActionResult registration(UserViewModel model)
UserViewModel будет точно такая же как и User класс, кроме поля active, таким образом поле active из формы вообще никогда не прийдёт.

Повторюсь, я давно не писал на asp.net mvc, так что может кто что дополнит или поправит.
Вопрос: Как сверстать такой шаблон?

Лучший ответ:
Готовый вариант
Создаем блоки и меняем им наклон,а внутри прописываем display: inline-block и противоположную трансформацию для текста,чтобы он был ровным.transform: rotate(-45deg);

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

Лучший ответ:
Правила типографики для веба и для «невеба» одни. Если текст полностью курсивом, то да — фуфуфу. Читать такое тяжело.  
Если, как и положено, курсив используется для выделения отдельных слов или фраз, то используйте на здоровье.

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

Лучший ответ:
Никак
Тем более, никак

Худший ответ:
Согласен с остальными. Идеи невозможно запатентовать.
Единственный достойный вариант защитить идею - РЕАЛИЗОВАТЬ :)
Однако. Идею можно защитить от разглашения. Например, когда две компании у которых есть ноу-хау (у одной из них или у обеих) и они хотят защитить эти ноу-хау - они подписывают NDA (Non Disclosure Agreement) или Соглашение о Неразглашении. 
Конечно, в российской юрисдикции это на 100% не работает. Но как ограничительный инструмент работает достаточно хорошо.
Пожалуй, это единственное, что можно сделать :)
Вопрос: Linux: На чем написать консольный установщик?

Лучший ответ:
Makself megastep.org/makeself/. Используют многие проприетарные вендоры. + dialog для галочек, крыжиков invisible-island.net/dialog/.

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

Лучший ответ:
Здесь могут быть много причин, например:
1. Мало видео. Лично я не подписываюсь на каналы, в котором мало видео.
2. Слабый контент. Если видео дают мало смысла того, чего я ищу, то не подписываюсь.
3. Редкая обновляемость канала. Если видео выходят редко, то какой толк подписываться!?

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

Лучший ответ:
Перейдите во вкладку chrome://plugins/ и отключите гугловский flash(pepflashplayer) — это его вина.

Худший ответ:
У меня тормозит в основном на страницах с флешем. Иногда все окно замирает из-за какой-либо вкладки, где есть flash.
Вопрос: Библиотеки Python, для научных расчетов?

Лучший ответ:
Смотреть нужно в сторону SciPy/NumPy, возможно scipy.linalg — то, что нужно.

Худший ответ:
Смотреть нужно в сторону SciPy/NumPy, возможно scipy.linalg — то, что нужно.
Вопрос: Кто знает живые русскоязычные ресурсы реализованные только с использованием AngularJS на frontend?

Лучший ответ:
https://builtwith.angularjs.org - смотрите, изучайте, наслаждайтесь

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

Лучший ответ:
Главное, наладить работу оперденя. Или опердня?

Худший ответ:
Ввиду того, то банки кровно заинтересованы в безопасности своих данных… «Люди с улицы» там не обитают.
У меня друг работал сисадмином в… банке 2 года назад. Рабочий день с 14 до как повезет. Данные из подразделения сбрасывали раз в сутки в головное и получали оттуда инфу по шифрованному каналу через dual-up с какой-то системой защиты от прослушивания линии (сами понимаете, человек подписку давал). Связь телефон-телефон. Данные о счетах и транзакциях за весь период существования системы (с его слов) хранились в нескольких экземплярах: в офисе, в центральном офисе, в региональном офисе и периодически автоматика проводила сверки БД. До работы в банке он работал сисадмином в налоговой.
Вопрос: Почему при просмотре доступного кода страниц вк. нельзя обнаружить синтаксиса от jQuerry или другой библиотеки?

Лучший ответ:
Тому что они не используют ваш любимый JQuery=) Им нужна производительность..

Худший ответ:
ВКонтакте работает на node.js и весь код компилируется на стороне сервера в основном.
Вопрос: Как набраться опыта в Yii2?

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

Худший ответ:
Работы по Yii2 много например. Yii2 это мощный и современный фреймворк, в котором можно с нуля создать любое современное приложение. Ознакомится с работой приложения можно здесь. Не пожалеете)
Вопрос: Что делать если ты узнал что проект/стартап, который ты делаешь, уже реализован?

Лучший ответ:
Если проект for fun и путей монетизации не видно то продолжать или забить разницы нет — что так что так денег не получите.

Если продолжать — сможете получить какой-то опыт. Если есть свободное время — мне кажется стоит дорабатывать.

Если нет свободного времени и монетизация не планируется — занимайтесь лучше монетизируемыми проектами.

Худший ответ:
не томите уже.
Вопрос: Недорогие SSL-сертификаты?

Лучший ответ:
Прошло уже много времени, но вдруг кому-то пригодится информация.
Бесплатные сертификаты на один домен - сейчас есть замечательные автоматизированные сервисы типа LetsEncrypt.
UPD: Уже пару лет как есть вилдкарды вида *.yourdomain.tld. Подтверждение вилдкардов - через DNS.
Да и удобные альтернативные certbot клиенты типа acme.sh появились.

Худший ответ:
Comodo Positive SSL
минусы: широкий промежуточный сертификат
Вопрос: Как выполнить функцию один раз?

Лучший ответ:
Например задать переменную, и изменить ее при 1 достиженииvar isResizeble = false;

if(!isResizeble) {
 // Ваша ф-ция которая что то делает, отработает 1 раз и все

isRezeble = true;
}
Надеюсь смысл ясен, иными словами установить флаг и проверять

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

Лучший ответ:
Если бы ушли от lamP к lamROR (Ruby On Rails), то можно было бы сделать при помощи одного программиста не более чем за месяц (в зависимости от уровня программиста).

Т.е. тут может быть достаточно дизайнера, постановщика задачи (он же тестировщик) и одного программера. Если все оперативно работают по 8 часов в день, 5 дней в неделю, за месяц (ок, с запасом — два) можно все сделать качественно.

Если делать просто на php, время на программинг и отлавливание дыр придется умножить на 2 или даже 3.

И совет: проект не сложный, поэтому не стоит брать двух прогеров — только головная боль.

Худший ответ:
Спрашивал, ибо раньше не приходилось делать подобные вещи и боюсь совсем запороть сроки (а дополнительный опыт очень нужен:) ). Я понял и принял к сведению все ваши советы, повторюсь, что очень благодарен за помощь и тоже постараюсь помочь нашему сообществу чем смогу.
Вопрос: Unknown column 'TEST' in 'field list' |?

Лучший ответ:
Вы не заэкранировали строку.
Сейчас вы отправляете строку UPDATE `coupon` SET `coupon` = TEST, а нужно TEST засунуть в кавычки, т.е.:mysql_query('UPDATE `coupon` SET `coupon` = "'.$coupon.'" ') or die (mysql_error());
Ну и плохо то, что вы используете устаревшую библиотеку mysql.
Желательно использователь mysqli или еще лучше PDO, при этом использовать prepared statements (подготовленные запросы) - погуглите, что это.

Худший ответ:
B.S. Да абсолютно насрать что юзаете — ваш выбор.
эскейпить данные надо и в кавычки ставить. 
p.s. используйте PDO!1111
Вопрос: Способ присваивания переменным дефолтных значений?

Лучший ответ:
Лично мне более приятен второй вариант:

argument = argument || 'value';

Жалко, что в JS нельзя сделать так (как в Ruby):

argument ||= 'value';

Худший ответ:
в копилку
!isset($ar) && $ar = 1;
Вопрос: Целесообразно ли брать SSD для ускорения компиляции больших библиотек?

Лучший ответ:
Чтобы понять, является ли жесткий диск узким местом достаточно создать диск в оперативной памяти и собраться на нем.
Что-то мне подсказывает, что для сборки нет необходимости в 4Gb оперативной памяти, поэтому ОС может использовать её для кэширования файлов. Поэтому жесткий диск не должен быть узким местом. Узким местом будет процессор.

Худший ответ:
Лучше ускорять, перенося сразу диск в память
memory.dataram.com/products-and-services/software/ramdisk/
раз в Х минут (настраивается) образ сохраняется на диск в файл, поэтому даже при неожиданном выключении питания много не потеряется
Вопрос: Как правильнее объявить exports чтобы каждый раз его не писать в js?

Лучший ответ:
Ммм... Возможно вы ищетеmodule.exports = {
  findById: function() {},
  findAll: function() {}
}

Худший ответ:
Ммм... Возможно вы ищетеmodule.exports = {
  findById: function() {},
  findAll: function() {}
}
Вопрос: Как вы распоряжаетесь своими пенсионными накоплениями?

Лучший ответ:
Оставили в ПФР почему? 
Потому что не верю, что доживу до пенсии…

Худший ответ:
НПФ Электроэнергетики. Просто в какой-то момент стали толпами ходить домой предлагать заключить договор. Выбрал какой больше нравится, и заключил договор. Ну а по правде: не верю что доживу до пенсии, или не верю что доживу до пенсии в этой стране…
Вопрос: прием и пересылка СМС на email? UPD

Лучший ответ:
Возьмите самый дешевый телефон на android, вставьте туда симку и поставьте программу, которая будет пересылать приходящие смс на e-mail. Самый простой способ.

Худший ответ:
Я как-то делал подобное с модемом Huawei E1550, вставленным в компьютер с линуксом, и программой Gammu. Писал простой bash-скрипт, там все параметры передаются environment-переменными.
Вопрос: На каком языке заказывать интернет-магазин на 500 тыс товаров? (Django vs RoR?)?

Лучший ответ:
500к товаров - это мелочь. С другой стороны, если вы каждую секунду захотите обновлять на них цену - это уже совсем другой разговор. Но это уже совсем другая история.
500к посетителей в день - это сущая мелочь. 500000 / 24 / 60 / 60 у меня получилось чуть больше, чем 5 requests per second - попробуйте скажите кому-нибудь, что это высоконагруженный проект.со связаннаыми фильтрами: отображением разных цен и наличия для разных городов,
сравнение, подбор и тп. 
все вышеперечисленное можно сделать и на вордпрессе. 500к товаров и посетителей, как я писал выше - в описанном случае тоже сущие пустяки и потянуть сможет даже хороший шаред хостинг.
Да, имеется ввиду все перечисленное, кроме и т.п. :)
У вас слишком абстрактные понятия, которые, возможно, что-то и значат и раскрывают суть для вас, но для разработчика - это не о чем.
Лучше всего будет найти разработчика с опытом в создании таких магазинов, который вы хотите сделать. И не поскупиться времени и денег на то, что б он вам рассказал, какую работу поручать исполнителям и как правильно составить ТЗ.
Я пришел к выводу, что витрину интернет-магазина (фильтры, категории, акции, скидки, купоны, попапы, корзины) нужно делать на типичном движке (магенто, битрикс, опенкарт... что угодно "с опытом"), а специфичные задачи (прайсы поставщиков, аналитика, парсинг сайтов клиентов-поставщиков. всевозможные автоматизации процесса) нужно делать на чем-то вроде рельс или джанги, а некоторые решения (склад, CRM, планирование) - использовать в качестве готовых сервисов в интернете.
Это поможет максимально распараллелить (ускорить) процесс, снизить ответственность с каждого исполнителя, дать возможность каждому заниматься тем, что он умеет лучше всего, заложить возможность к масштабированию и гибкости (когда захочется всяких типичных рюшечек, типа, сделать кнопку красненькой, что б проверить конверсию - ой как по карману будет бить просить об этом разработчиков на Rails).
Возможно, поначалу покажется, что такой подход очень дорогой, но скажу, что он довольно быстро окупается. Правда, подтвердить слова десятилетним опытом успеха такой системы не могу. Мнение все-таки довольно субъективное.

Худший ответ:
По моему проблемы возникают не от 500к товаров, а от 500к посетителей.
Если у вас будет 2 с половиной посетителей то работать будет все хорошо и быстро.
Вопрос: GROUP BY weeks; Как вывести диапазон?

Лучший ответ:
Такой вариант:

SELECT
  DATE_FORMAT(`start_date`, '%x-%v') weeks,
  COUNT(*), DATE_ADD(`start_date`, INTERVAL(2-DAYOFWEEK(`start_date`)) DAY) first_date,
    DATE_ADD(`start_date`, INTERVAL(8-DAYOFWEEK(`start_date`)) DAY) last_date
FROM `events` GROUP BY weeks;


Худший ответ:
Группируете со строкам — имхо медленновато будет.
Если в локалке, я бы прохронометрировал так: формировать строку недели, числовой номер недели, счётчик; группировал бы по числовому номеру недели, в приложении отбирал бы две колонки.
Если нагрузка на сеть будет из-за числового номера недели слишком большой, оставил бы как у вас, разве что формат строки поменял бы на необходимый вам.
Вопрос: Почему не получается ввести пароль в Git при подключении Github?

Лучший ответ:
Я не то чтобы граммар-наци, но написать "порол" вместо пароль это уже слишком.

Худший ответ:
Потому что в консоли он никогда не выводится, даже в виде звёздочек.
Но он набирается, тем не менее. Так что просто вводи и тыкай Enter.
Вопрос: Как отобразить дерево каталогов проекта в PhpStorm?

Лучший ответ:
Если перестало отбражаться дерево каталогов проекта или изначально не отображалось, перейдите File->Settings->Directories и выберите Add_Content Root (путь к директории проекта)

Худший ответ:
А ты уверен что у тебя файлы в папках?
Папка Project у тебя открыта... там отображается текущая структура проекта как она есть.
Или ты что-то клацал?
Как вариант решения - удали проект. Создай заново.
Вопрос: Начинаю думать над своим делом.. что из книжек почитать?

Лучший ответ:
Хозяйственный кодекс

Худший ответ:
Rework. Джейсон Фрайд, Дэвид Хайнемайер Хенссон
Вопрос: Как сделать загрузочную UEFI флешку?

Лучший ответ:
Например, можно сделать вот так — goo.gl/CxOOy
Вы не написали, под какую ОС и т.д.

Худший ответ:
Также можете попробовать обновить UEFI на материнке.
Вопрос: Как получить карму для поста?

Лучший ответ:
Зарегистрирован на Хабрахабре с 9 декабря 2007 года, оставил 35 комментариев за неполных пять лет.

Признавайтеся, чья Вы резервная учётная запись на случай блокировки основной учётной записи.

Худший ответ:
Наверное ответ очевиден — писать хорошие комментарии и ответы.

И альтернативный вариант — писать плохие комментарии и ответы, чтобы слили карму и появилась возможность recovery mode, но я бы не советовал заниматься этим.
Вопрос: Почему нельзя давать одинаковое название id?

Лучший ответ:
Это не одинаковые id. Вот одинаковые:<div id="div1"></div>
<div id="div1"></div>
<div id="div1"></div>
Весь смысл ID как раз в том что к элементу можно обращаться именно по уникальному идентификатору.

Худший ответ:
Использовать их можно, но не стоит.
Отладка такого кода (если id используется в Javascript, например) может привести к проблемам.
Этот совет носит рекомендательный, но не обязательный характер.
Если провести аналогию с людьми, то представьте: легче запомнить 30 человек с именами Петя1, Петя2, Петя3 и т.д., либо с различными именами - Петя, Вася, Вова и т.д.
Некоторым людям может быть удобней запоминать цифры, но таких будет меньшинство, да и Петя21 будет скорее всего не рад такому имени.