Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Что означает вопросительный знак после имени css-файла?

Лучший ответ:
антикэш, видимо эта цифра после каждого релоада страницы меняется. Некоторые разработчики делают это для того что бы браузер не кэшировал стили и можно было их править и мгновенно видеть результат. Возможно меняется не каждый раз автоматом, а в ручную как только меняется файл стилей.
Цифра 1384438461 это похоже unix time stamp = 11 / 14 / 13 @ 2:14:21pm UTC видимо это дата и время последней модификации файла kernel.css

Худший ответ:
в css они(параметры) и не передаются, и в данном случае, вы имеете не прямую ссылку на css файл, а на скрипт, который согласно переданному параметру отдаст вам соответствующий файл.
а что этот параметр означает, дело десятое.
Вопрос: Литература для повторения высшей математики

Лучший ответ:
По-моему, лучше задачников Ефимова-Демидовича ничего нет.

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

Лучший ответ:
border рисуется внутри своего блока.
Чтобы было как "в идеале" можно вместо border использовать outline.

Худший ответ:
border рисуется внутри своего блока.
Чтобы было как "в идеале" можно вместо border использовать outline.
Вопрос: Что выбрать slim или haml?

Лучший ответ:
Я остановился на slim: (1) он быстрее, (2) удобнее располагать параметры тега в несколько строк.
Препроцессоры, они же - синтаксические сахара - haml slim sass coffeescript - компилируются в html css js
Шаблонизаторы - языки верстки с возможностью вставки логики на Rails - erb, haml, slim

Худший ответ:
Самое значимое различие между этими препроцессорами, в скорости компиляции. У Slim'а она вроде как быстрее.  В остальном дело привычки. Советую попробовать для себя оба препроцессора, чтобы определиться, что для вас удобнее.
Вопрос: Что выбрать ФИВТ МФТИ или ФУПМ МФТИ?

Лучший ответ:
Туда где професоров больше, и где матиматику лучше учат. А программированию учат только дома.

Худший ответ:
Товарищ заканчивает ФИВТ, говорит доволен. Там много кафедр, спонсируемых компаниями и потом практически гарантированное трудоустройство и дают практические знания. Это важно, т.к. обычно в вузах этого мало. Про ФУПМ не знаю.
Вопрос: Как в wordpress теме присвоить блоку (class или id) дополнительный атрибут?

Лучший ответ:
Создайте дочернию тему и делайте с ней уже всё, что вам захочется.

Худший ответ:
Нигде, при обновлении все файлы перезапишутся.
Вопрос: Есть ли русская документация по Sass?

Лучший ответ:
sass-scss.ru- перевод официальной документации

Худший ответ:
Вот тут:
sass-scss.ru
Вопрос: My WebMoney Linux хранит пароль в открытом виде

Лучший ответ:
Возможно, идёт рассчёт на то, что права доступа на файл должны быть только у владельца аккаунта (например, права 0400 или 0600).
Многие системы так хранят пароли. Ведь файл нельзя прочитать извне стандартными методами кому-то другому.

А иначе даже зашифрованный пароль можно расшифровать, ведь ключ надо будет хранить на той же машине в бинарнике webmoney. То есть, ключ потенциально можно извлечь и тогда шифрованность пароля сильной разницы не будет делать.

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

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

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

Лучший ответ:
word-break: break-all;
примененный к элементу с текстом, обеспечит перенос не влезающих в строку слов (если вам это необходимо конечно).
И поверх всего этого савим еще overflow: hidden; для самого контейнера, если вы хотите чтобы за его пределы ничего не вылезало.

Худший ответ:
LOREMLOREMLOREMLOREMLOREMLOREMLOREMLOREMLOREMLOREMLOREMLOREMLOREMLOREMLOREMLOREMLOREMLOREMLOREMLOREMLOREMLOREMLOREMLOREMLOREMLOREMLOREMLOREMLOREM
1) не писать такие длинные слова, а ставить пробелы между LOREM  LOREM
2) если вы это сделали намеренно, тогда word-break в помощь
Вопрос: 3g интернет на Украине

Лучший ответ:
3G в Украине есть только у Utel. Все остальное — или симпары Утела (у Киевстара), или WCDMA (у Peoplenet). Покрытие у Утела не очень, только в крупных городах. При слабом приеме — переключается на нацроуминг Киевстара (но только EDGE).

Худший ответ:
Интертелеком не подключает без паспорта — только по паспорту. Я хотел без паспорта — сказали нельзя.

А вот у PeopleNet можно взять оборудование как бы на проверку без паспорта. Нужно оставить залог — полную стоимость модема + за подключение. 2 недели можно использовать. Потом возвращаете оборудование и все деньги вернут.

Есть еще CDMA-UA, Utel и с малой зоной покрытия несколько.
Вопрос: Как по координатам определять, к территории какой страны они относятся?

Лучший ответ:
Если используете OSM - можно попробовать поюзать nominatimprivate function  callNominatim($dLat, $dLon, $iZoom) {
   if ($iZoom<10) 
   $iZoom=12;
    $request_url= sprintf("http://nominatim.openstreetmap.org/reverse?format=json&lat=%.6F&lon=%.6F&zoom=%01d&addressdetails=1",$dLat,$dLon,$iZoom);
   $ch = curl_init();
   curl_setopt($ch, CURLOPT_URL, $request_url);
   curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   $response = curl_exec($ch);
   curl_close($ch);
   return $response;
}
Смотрите поля response.
Успехов.

Худший ответ:
Если сложнее ... то выгружаете planet.osm и дальше выгружаете точки, пути и затем считает вхождение точки в многоугольник, а у многоугольника смотрите таги типа admin_level = 1 =)
Вопрос: Почему появляется System.AccessViolationException в Visual Studio 2010?

Лучший ответ:
Попробуйте char * str = "Hello"; заменить на char str[] = "Hello";
Подозреваю, что строка "Hello" при сборке помещается в секцию без прав на запись, вы этот указатель используете и пытаетесь в ту самую RO область писать.

Худший ответ:
Ошибка в строке if (count == 0)
Нужно if (count != 0)
В целом ещё несколько замечаний, но по вопросу именно так.
Вопрос: Как определить наличие латинских букв в строке?

Лучший ответ:
Домашнее задание да ?

Худший ответ:
Ну, я знаю три способа: 
1) Проверяем RegExp'ом - "[A-Za-z] без цифр и [A-Za-z0-9] с цифрами. Самый простой вариант.
2) Можете проверить посимвольно через ASCII таблицу:>>> ord('a')
97
>>> chr(97)
'a'
>>> chr(ord('a') + 3)
'd'
Ищете числовые значения необходимых вам символов и проверяете.
3) Создаете строку с перечислением необходимых вам символов. Топорно, но быстрее и в составлении, и в проверке, чем второй вариант.
Нужно учесть, что в инструменте, с которым вы работаете, уже может находиться встроенная проверка на вилидность символов.
Вопрос: Функция вычисления угла поворота в трехмерной плоскости?

Лучший ответ:
Цитата из википедии. Матрица поворота.

Пусть ось вращения задана единичным вектором , а угол поворота . Тогда матрица поворота в декартовых координатах имеет вид:



Умножая координаты какого-то вектора на матрицу поворота вы получаете координаты повернутого вектора. Все стороны куба — это векторы.

Худший ответ:
ru.wikipedia.org/wiki/Кватернионы_и_вращение_пространства
Думаю, это самое оно ))
Вопрос: Использовать ли ActiveRecord в высоконагруженных проектах?

Лучший ответ:
ActiveRecord это очень удобный и полезный инструмент и его можно и нужно использовать, одна из замечательнейших частей фреймворка, делающих разработку действительно быстрой и легкой.

Если возникают проблемы с производительностью:

1) Во всех проектах используем:CProfileLogRoute с настройкой CDbConnection.enableProfiling=true
Расскажет много полезного.

2) Если видим lazy Loading — не забываем добавлять в with("") нужных релейшинов, используем together() принудительно где нужно.

3) Если используем findAll() на большом количестве записей — используйте CDbCriteria.select и перечисляйте только необходимые колонки, это поможет значительно повысить производительность.

Рекомендую детально изучить изнутри — как работает CActiveRecord, CActiveFinder 
Используйте расширения типа XDebug для детального профайлинга проекта. 
Основные потери производительности происходят внутри метода 
CActiveRecord.populateRecord — посмотрите — что происходит внутри.

4) Все редкообновляемые данные очень легко кэшировать связкой: 

CTimestampBehavior + CDbCacheDependency('SELECT MAX(update_time) .... where...');

Если таблица редко обновляется, то и этот запрос будет отрабатывать мгновенно. Mysql тоже сам кэширует результаты таких запросов. 

В результате — мест, где приходится отказываться от ActiveRecord остается очень мало.
Скорость отдачи страниц держим на уровне не более 0.1 с. 

Если у Вас будут действительно высокие нагрузки, Вас врятли спасет один только отказ от ActiveRecord:
Посмотрите:
Yii: устройство ActiveRecord и Шардинг
Шардинг MySQL на Yii Framework

Также задумываем для одного проекта попробывать www.yiiframework.com/extension/yiimongodbsuite/ с auto-sharding

Худший ответ:
Для чтения (подавляющее большинство операций при нагрузках) я редко использвую AR, да это и не очень удобно, потому как вывод идет либо сразу в шаблонизатор, либо в json. Использовать в этом случае внешних ключей (соответственно join) это фейл.

А вот при добавлении/изменении очень удобно через AR проводить валидацию.
Вопрос: Ассоциации в полиморфных связях?

Лучший ответ:
Вы нас или себя где-то обманываете.
Руби очень хорошо отличает объекты разных классов. Редки те случаи когда Location:0x007fd2c9d37018  вдруг становится nil-ом.
Однако, если вы рендерите коллекцию, то возможно в этой коллекции есть estate с location nil, который и вызывает ошибку.
если вы используете конструкцию вроде real_estate.location.address if real_estate.location
илиreal_estate.location.try(:address)
то легко найдете искомый объект
С другой сторы, чтобы такого не происходило, валидируйтеvalidates :location, presence: true
чтобы данные всегдабыли в валидном состоянии

Худший ответ:
А адрес у вас точно - простой эктив рекорд аттрибут?
С ассоциациями что-то похожее бывает, когда вы через них, например, хотите обратиться к несуществующему атрибуту, но который у вас автоматически генерируется в method missing.
Еще такое бывает, например, если сделаешь скоуп или просто - 
Location.select(:id), тогда метода address не будет
Пробуйте добиться такого поведения в консоли. Смотрите класс получаемого объекта, смотрите, как уже спросили - attributes. Пробуйте в метод, который "работает" (to_s, например) передать то, что не работает. Например:def to_s
"Вот и #{address}"
end
Вопрос: Можно ли использовать сторонний шрифт в html письмах?

Лучший ответ:
когда верстаете письма держите открытой эту страницу https://www.campaignmonitor.com/css/
в целом могу сказать что можно и сторонний шрифт, но увидят его ДАЛЕКО не все. письма нужно верстать максимально просто

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

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

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

Лучший ответ:
Вы снова не изучив базу C++ и документацию по Qt стараетесь решить поставленную задачу с наскока. Язык программирования C++ это не тот язык, где можно использовать такой подход. Вы либо твёрдо знаете основы, либо не знаете совсем ничего.
Вам необходимо воспользоваться обменом данными между классами. Это можно сделать различными способами: геттеры-сеттеры, двойное наследование, передача указателя, система сигналов-слотов, общий класс для обмена данными, статические методы и т. д.
Примеров в интернете можно найти множество:
easy-qt.blogspot.ru/2012/10/1.html
www.cyberforum.ru/qt/thread548059.html
fkn.ktu10.com/?q=node/3021
www.prog.org.ru/topic_19557_0.html
И ещё у вас достаточно странный подход. Форма должна опрашивать логический класс, а не наоборот. То есть ваш не_GUI-класс ничего не должен содержать и дёргать Qt'шного. Вдруг его придётся выносить в отдельную библиотеку, никак не относящуюся к GUI и Qt?
Настоятельно рекомендую посмотреть примеры приложений, идущие с Qt. Там вы найдёте все ответы на свои вопросы и методы построения правильной архитектуры приложения.

Худший ответ:
Class.h:class Class
{
public:
    void mathod();
}
include "Class.h"
Class2.h:class Class2
{
public:
    void method2()
    {
        Class class1;
        class1.method();
    };
}
main.cpp:#include "Class2.h"

int main()
{
    Class2 class2;
    class2.method2();
    return 0;
}
Конечно, несколько утрировано, т.к. нет конструкторов и диструкторов. Но по идее вроде должно работать.
Или вы что имели ввиду?
Вопрос: Сервисы поиска человека по ФИО

Лучший ответ:
Ну к примеру здесь можно найти: www.nomer.org/

Худший ответ:
Да, спасибо. www.nomer.org действительно помог!
Вопрос: Нормальный ли это подход к организации JS код?

Лучший ответ:
Этот подход "псевдоооп", хотя у вас и есть какие-то объекты, вы лишаете себя целой кучи полезных вещей - наследования, полиморфизма, не очень оптимально работаете с памятью.
В JS ооп принято варить через прототипы. Например, вот так:(function (my) {
my.Form = function () {
  $(document).on('submit', 'form', function (evt) {
    // это же просто пример, так?
  });
};
my.Form.prototype.submit = function () {
  // ...
};
})(MY);
В дальнейшем, если вам понадобится не просто форма, а, например, валидируемая форма, или даже AJAX-форма, вы сможете без проблем отнаследоваться от этой формы и добавить ништяков. Например.(function (my) {
my.ValidatedForm = function () {
  // something
};
my.ValidatedForm.prototype = new my.Form();
my.ValidatedForm.prototype.isValid = function () {
  // ...
};
})(MY);
Также у вас появится доступ к состоянию инстанса через ключевое слово this: для этого потребуется создавать экземпляры через оператор new. Будет выглядеть как-то так:var myForm = new MY.Form();
myForm.submit();
Это не всегда нужно делать именно так, но все зависит только от того, чего вы в конечном счете пытаетесь достичь. Я очень советую почитать статьи Ильи Кантора, автора сайта javascript.ru про ООП в JS. Он прилично пишет и хорошо разбирается в предметной области.

Худший ответ:
Имена переменных пишут с маленькой буквы:var myVar = 5;
С большой буквы принято писать имена классов и функций-конструкторов:class Animal {
  name = '';
  constructor(_name){
    this.name = _name;
  }
}
var doggy = new Animal('Rex');
Все прописные буквы означает константу:const PI = 3.14;
Вопрос: Как узнать номер колонки?

Лучший ответ:
Дело в том, что column-count режет на колонки ваш блок автоматически, основываясь на значении в CSS, при этом сами колонки не являются DOM-элементами, т.к. всё выполняется на уровне CSS3. Могу предложить такой алгоритм:
1. Навешиваем обработчик клика на блок, скажем: $('article').on('click',someFunction);
В callback-функции:
2. Находим позицию клика относительно блока article. Тоесть чтобы вы знали координаты клика по горизонтали (оси X) внутри блока.
3. Берем количество колонок, основываясь на свойстве column-count
4. Делим всю ширину блока на количество колонок
5. Согласно координатам клика, методом простых математических расчетов, получаем номер колонки по которой кликнули.

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

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

Худший ответ:
Если по функционалу Вам подойдет вот это wikimapia.org, то, думаю, будет иметь смысл обратиться к разработчикам, благо они наши соотечественники.
Вопрос: CMS для создания реестра(базы данных, реестра, журнала)?

Лучший ответ:
Drupal:
- разные виды материалов с полями любого типа 
- система ревизий (сохранение версий документа с возможностью сравнения/отката) 
- разграничение прав пользователей 
- гибкий вывод материалов с помощью Views 
- импорт существующих таблиц через модуль Feeds 
- экспорт материалов в csv/xls

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

Лучший ответ:
Дальше писать контроллеры и вьюхи для админской работы с БД и изучать тему access control.

Худший ответ:
Посмотрите модуль Gii (он входит в состав фреймворка), можно сделать по подобию.
Вопрос: Странный PDF формат?

Лучший ответ:
Здесь пишут, что файл может быть не совсем старым-добрым PDF, а XFA-формой. Читать их пока умеют только Adobe…

Худший ответ:
Здесь пишут, что файл может быть не совсем старым-добрым PDF, а XFA-формой. Читать их пока умеют только Adobe…
Вопрос: Есть ли понятие правильных пропорций для миниатюр (картинок) в веб-дизайне?

Лучший ответ:
К моему ответу надо добавить тег «Мнение» или «ИМХО»
Не может быть никаких пропорций для миниатюры. Сайт — это холст. Или каталог журнальный — это холст. На нем есть объекты, такие как текст, линейки, геометрические фигуры, фотографии и т. д. При этом миниатюры я бы выделил в отдельную категорию. Из-за маленьких размеров ее нельзя распознать. К примеру с фотографией нормального размера, скажем 10 на 15 все иначе, на ней мы можем выделить (внутри фото) какие-то линий, которые могут перекликаться с той же модульной сеткой или линией шрифта. А миниатюра воспринимается как одно цветное пятно. Соответственно важнее не пропорция этой миниатюры, а то, как она вписывается в общий ансамбль. То есть резюмируя: размеры миниатюр должны зависеть от холста, от его пропорций и размеров, от модульной сетки, если она присутствует, и от мнения дизайнера. Иногда у миниатюры будет задаваться только ширина, а высота получаться автоматом, иногда жестко и та, и другая величина с обрезкой фото.
Ну и это если вообще не рассматривать случаи сборки мозаики из миниатюр, где меняются как размеры, так и пропорции при необходимости.

Худший ответ:
Я бы делал 1:1 и с рамочкой.
Так инстаграмнее.
Но засисит от контента и ЦА, конечно.
Вопрос: Как использовать pip для разных версий Python?

Лучший ответ:
При установке python, в корневую директорию windows копируется py.exe. Запуская его с разными параметрами запускаются разные интерпретаторы:
Запуск python 2 идет по умолчанию:py  ваш_скрипт.py
или явно:py -2  ваш_скрипт.py
Запуск python 3:py -3 ваш_скрипт.pyДокументацияУстановка модулей:py -2   -m pip install SomePackage  # default Python 2
py -2.7 -m pip install SomePackage  # specifically Python 2.7
py -3   -m pip install SomePackage  # default Python 3
py -3.4 -m pip install SomePackage  # specifically Python 3.4

Худший ответ:
используйте полный путь
c:\Python35\Scripts\pip.exe
к скачанным с www.lfd.uci.edu/~gohlke/pythonlibs  модулям - тоже полные пути
можно заморочиться с PATH, но зачем Вам каша?
P.S. PyCharm  решает много проблем с запуском под разными версиями
Вопрос: Обработка предопределённых констант в PHP

Лучший ответ:
<?

for($i=0;$i<1000000;$i++) echo __FILE__;

?>


Результат:

poletaew@poletaew:~$ time php const.php &>/dev/null

real	0m0.170s
user	0m0.076s
sys	0m0.092s


Меняем код по вашему алгоритму:

<?
$file = __FILE__;
for($i=0;$i<1000000;$i++) echo $file;

?>


Результат:

poletaew@poletaew:~$ time php const.php &>/dev/null

real	0m0.173s
user	0m0.092s
sys	0m0.080s


Так что проблема не в обработчике предопределенных констант. Не в ту сторону копаете. Пример вашего кода, конечно, помог бы понять проблему глубже, но как сейчас вопрос описан — такой и ответ на него.

Худший ответ:
Прошу прощения за задержку с ответами: были проблемы с авторизацией на Тостере.
SkiF_TLT, Sky4eg, вы совершенно правы.
Тесты показали нам, что проблема заключалась в использовании несуществующей константы T_ML_COMMENT. Она есть в php4, но php5.3 при её вызове генерирует ворнинг. Как раз их генерация и увеличила работу скрипта на порядки.
Спасибо большое за советы! )
Вопрос: Как вывести провайдера на чистую воду?

Лучший ответ:
Возможно узкий канал. На 2ip есть подобная функция тык, результаты высылаются на почту.

Худший ответ:
да скорость как-бы то и не причем, вернее не совсем причём… Скайп чувствителен к потере пакетов и латенси. Можно конечно ping -n на сутки поставить и посмотреть статистику, или воспользоваться какой нибудь мониторилкой аптайма хостинга нацелив её на свой ip. Но как правильно ответили выше — провайдера в это тыкать бесполезно, может у них там банально таким образом qos настроен…
Вопрос: Cофт форума.....?

Лучший ответ:
smf как вариант. 
simple machines forum

Худший ответ:
Очень нравится FUDforum
Вопрос: Как организовать учет финансов в redmine?

Лучший ответ:
Тыкали, пробовали, ставили с десяток этих систем, в том числе редмайн. Пришли к написанию собственной.

Худший ответ:
Например, плагины от RedmineCRM:Redmine Finance pluginInvoices plugin
Вопрос: Нужен ли на Хабре обзор библиотеки для склонения ФИО?

Лучший ответ:
Я бы почитал обзор.
Еще было бы интересно сделать следующее: скачать какой-нибудь большой список имен и фамилий из какой-нибудь соц сети и потом сравнить результаты работы с вот этим: nano.yandex.ru/project/inflect/

Худший ответ:
С женскими фамилиями проблема. Например, «Елена Пендюр» упорно определяется как мужчина, склоняется неверно. Рановато вашу библиотеку обозревать имхо.
Вопрос: Как вывести подкатегорию картинками(Opencart)?

Лучший ответ:
открой catalog/controller/product/category.php и на 180 строке посмотри, как задаются элементы массива $data['categories'][] там thumb объявишь - будет картинка в переменной. Как картинки выдергиваются, можешь посмотреть в том же файле в коде выше:if ($category_info['image']) {
				$data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height'));
			} else {
				$data['thumb'] = '';
			}
по аналогии сделай присвоение, только из $result, а не из $category_info

Худший ответ:
Спасибо, Дмитрий! Буквально за несколько минут до вашего ответа смог найти ответ за бугром. forum.opencart.com/viewtopic.php?f=21&t=139708 Если кому нужно. Тут
Вопрос: Создание форм в Golang?

Лучший ответ:
Это GUI называется.
Что, прям обязательно на Go? Обязательно нужно выбрать тот ЯП, который максимально НЕ подходит под задачу?
На линуксе полно средств для GUI, соответствующих ЦА линукса.
Qt самый мощный.

Худший ответ:
с GUI EDITOR  пока все плохо
Вопрос: Проектирование архитектуры системы достижений(achievements)

Лучший ответ:
Мой путь был бы таким:
— key-value db;
— каждое действие генерирует событие;
— для каждого достижения есть свой подписчик который случает необходимые ему собития;
— при срабатывании подписчик читает поле в базе с ключем __;
— сравнивает с лимитом;
— увеличивает его или генерирует событие добавления нового достижения.

Худший ответ:
Не претендую на решение, но идея такова:
Большая часть достижений это количество каких то действий, то есть нужно что то сделать несколько раз. Для этих целей создается таблица, с полями id пользователя, достижение 1, достижение 2,… достижение N. Соответственно при выполнении нужного действия нужно достижение в таблице наращивается.
Далее можно создать таблицу с уже полученными достижениями, чтобы можно уже было учитывать те достижения для получения которых нужно выполнить несколько конкретных.
Само присвоение достижений думаю проще будет вести триггерами которые будут проверять достигнуто ли достижение когда обновляется запись. 
Такой вариант позволит вам в любой момент добавлять достижения, обычным добавлением поля в таблицу, и триггера на более сложные достижения