pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: JavaScript меня в могилу сведет [Node.js]

Лучший ответ: Это не баг и не фича, вы просто неправильно используете this.

У вас при вызове функции this = глоальному объекту, потому и ошибки, надо писать model = new require(....). Советую почитать, например, тут, про использование this и функции: javascript.ru/tutorial/object/thiskeyword (хотя объяснение там так себе)

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

Лучший ответ: «Просмотр учитывается каждый раз, когда пользователь воспроизводит видео на YouTube. Мы не детализируем эти результаты, чтобы избежать искусственного увеличения количества просмотров» 
Источник: www.dzhamblog.ru/faq_youtube/

Худший ответ: Видео, считает по отдаче видеофайла пользователю более Х% (процент меняется в зависимости от собранной статистики, а так же учитывается и то, какую часть смотрят на видео).
Т.е. если ролик длинный, а ссылки идут на конкретный момент и он интересен только одной минутой, то через некоторое время коэффициенты «нормализуются» и просмотр только этого момента (одна минута из часа) будет считаться за просмотр (более ХХ% от доли этого фрагмента).
Вопрос: Фриланс?!

Лучший ответ: www.odesk.com + payoneer
Это если в темную, иначе договоры и переводы денег на ваш счет.

Худший ответ: Получать деньги через платежные системы, например Webmoney, яндекс деньги, и тд.
Выводить на карточку, в украине кажись какой то из банков работает с этими.
Вопрос: Есть ли у API Яндекс, Google или других карт БЕСПЛАТНАЯ возможность НЕОГРАНИЧЕННО рассчитывать расстояние между точками?

Лучший ответ: Возможно есть у OSM.
Я писал свой алгоритм расчета маршрутов для карт google.
Т.е. на карту можно поставить сколько хочешь точек и по ним будет прорисован маршрут.
Данное решение оказалось на 8% точнее нежели предлагает google (пути и время короче на 8%, т.к. учитываются особенности местности и др. факторы).

Худший ответ: Портировал как то на JS  чей то алгоритм, в расчет идет кривизна шарика, координаты можно использовать прям из карта Гугла или Яши. Результат возвращает в метрахfunction calculateTheDistance (shir_A, dolg_A, shir_B, dolg_B) {
			lat1 = shir_A * Math.PI / 180;
			lat2 = shir_B * Math.PI / 180;
			long1 = dolg_A * Math.PI / 180;
			long2 = dolg_B * Math.PI / 180;
			cl1 = Math.cos(lat1);
			cl2 = Math.cos(lat2);
			sl1 = Math.sin(lat1);
			sl2 = Math.sin(lat2);
			delta = long2 - long1;
			cdelta = Math.cos(delta);
			sdelta = Math.sin(delta);
			y = Math.sqrt(Math.pow(cl2 * sdelta, 2) + Math.pow(cl1 * sl2 - sl1 * cl2 * cdelta, 2));
			x = sl1 * sl2 + cl1 * cl2 * cdelta;
			ad = Math.atan2(y, x);
			dist = ad * 6372795;
			return dist;
		}
Вопрос: Antifreeze для windows forms?

Лучший ответ: Вам стоит почитать про BackgroundWorker, думаю это как раз то что вам нужно

Худший ответ: Да, вы правильно поняли, вам нужны потоки.
Вопрос: Где можно найти удаленного прогера на 500$ в месяц?

Лучший ответ: Я вас слушаю :)

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

Лучший ответ: Кусок моего галпфайла. Что-то снабдил комментами.var connect      = require('browser-sync'); // livereload
var sass         = require('gulp-sass'); // Кому что, я использую SCSS
var csscomb      = require('gulp-csscomb'); // Обязательно!
var cssmin       = require('gulp-cssmin');
var imageop      = require('gulp-image-optimization'); // Лучшая альтернатива gulp-imagemin
var concat       = require('gulp-concat');
var uglify       = require('gulp-uglify');
var plumber      = require('gulp-plumber'); // Не позволяет плагину умереть молча
var autoprefixer = require('gulp-autoprefixer');
var ngrok        = require('ngrok'); // Пробрасываем локальному серверу путь наружу для для заказчика
var spritesmith  = require('gulp.spritesmith'); // Спрайты
var notify       = require('gulp-notify'); // Уведомления
var merge        = require('merge-stream'); // Деление таска на разные потоки
Конечно, есть много полезного и кроме этого. Но сам верстаю в WebStorm, в котором огромное количество плюшек реализованы куда удобней, чем в галп-плагинах.

Худший ответ: Здесь посмотрите https://github.com/zoxon/gulp-front
Вопрос: Как организовывать динамическое добавление html с помощью js?

Лучший ответ: Переработайте свой код. Не понятно для каких целей вам потребовалось дублирование и в php, и в js.

Худший ответ: на самом деле сложно, ибо шаблоны для php и для js всеравно будут хотя бы незначительно различаться. Как вариант, можно использовать близкие по синтаксису реализации шаблонизаторов (например twig и twig.js).
Вопрос: Библиотеку для отрисовки SVG в PNG?

Лучший ответ: Между тем, ImageMagic и под вендой работает…

Худший ответ: Может это поможет?
Вопрос: Как определить пользователя в админке Django?

Лучший ответ: Не совсем понял, что вы хотите. Вы говорите что работает через админку, но не наследуетесь от  admin.ModelAdmin, и у вас нет кастомных вьюх ... у вас стандартная админка или ...?
Вот пример кода для стандартной админки:class Order(models.Model):
    title = models.CharField(max_length=255)
    body = models.TextField()
    creator = models.ForeignKey('User', null=True, blank=True)class OrderAdmin(admin.ModelAdmin):
    fieldsets = [....]

    def save_model(self, request, obj, form, change):
        if getattr(obj, 'creator', None) is None:
            obj.creator = request.user
        obj.save()

Худший ответ: request.user, как и везде.
Вопрос: Как отправить сообщение к конкретным пользователям?

Лучший ответ: Из документации socket.io (отправка сообщений)// отправить текущему сокету сформировавшему запрос (туда откуда пришла)
socket.emit('message', "this is a test");

// отправить всем пользователям, включая отправителя
io.sockets.emit('message', "this is a test");

// отправить всем, кроме отправителя
socket.broadcast.emit('message', "this is a test");

// отправить всем клиентам в комнате (канале) 'game', кроме отправителя
socket.broadcast.to('game').emit('message', 'nice game');

// отправить всем клиентам в комнате (канале) 'game', включая отправителя
io.sockets.in('game').emit('message', 'cool game');

// отправить конкретному сокету, по socketid
io.sockets.socket(socketid).emit('message', 'for your eyes only');

Худший ответ: Чтобы отправить конкретному клиенту используй:io.sockets.sockets[id].emit('message', 'Hello!');
Где id - sid клиента socket.io.
Чтобы оправить данные с сервера отправителю используй аргумент функции callback:
Сервер:socket.on('message', function (data,callback) {
        socket.broadcast.emit('message', data);
        callback("Send");
    });
Клиент:socket.emit('message',msg,function(data) {
        console.log(data);
});
Вопрос: Как на хабре использовать ссылки вида apt?

Лучший ответ: Через bit.ly попробуй прогнать

Худший ответ: Возможно это надо было послать не сюда, а авторам хабры.
Вопрос: Почему не работает nginx? Или почему sudo /etc/init.d/nginx restart выдает [fail]?

Лучший ответ: В /etc/nginx/sites-enabled/  должны лежать файлы конфигов, а у Вас там какая-то директория создана /etc/nginx/sites-enabled/mysite. 
Удалите директорию и смотрите какие будут новые ошибки.

Худший ответ: В etc/nginx/sites-enabled нельзя класть файлы (по крайней мере, до тех пор, пока у вас в nginx.conf написано include /etc/nginx/sites-enabled/*, а не что-то вроде include /etc/nginx/sites-enabled/*.conf). 
mysite у вас папка.
Вопрос: Какие есть англоязычные сообщества для общения про IT?

Лучший ответ: stackoverflow.com/ конечно же.

Худший ответ: Поговорить реально на reddit.com; с тем, чтобы «писать» там сложнее, но тоже возможно.
Вопрос: Психология системы личных сообщений: каков должен быть порядок сообщений в переписке?

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

Худший ответ: А какую задачу вы решаете? Если нужно сконцентрировать внимание именно на последних сообщениях, то можно вывести последнее сообщение (или 2-3 последних сообщения в привычном порядке «сверху-вниз»), а над ними дать ссылочку «предыдущие сообщения». На Фейсбуке так реализовано и очень удобно. Похожий подход и во Вконтакте.
Вопрос: Как грамотно превращать монотонный фон в прозрачность? (p-shop, gimp)?

Лучший ответ: Это делается через альфа-каналы

Худший ответ: Выделяем область с необходимым прозрачным цветом, затем «Цвет»->«Цвет в альфа-канал».

Если размытые края равномерные, то можно добиться корректного выделения удаляемого цвета при помощи растушовки.

Если рисунок имеет сложную структуру, то используем «Быструю маску» и ручную обработку.
Вопрос: Программа для построения блок-схем?

Лучший ответ: самое простое — dia, он дубовое достаточно

Худший ответ: visio, так же есть dia для линуксов
Вопрос: Как прикрутить TinyMCE в собственную CMS?

Лучший ответ: TinyMCE цепляется за обычный textarea, и передается на сервер POSTOM как plain text.
На сервере в массиве $_POST должен быть html который генерирует TinyMCE

Худший ответ: нету ничего сложного<script src="js/tinymce/tinymce.min.js" type="text/javascript"></script>
<script>
tinymce.init({
fontsize_formats: "8px 10px 12px 14px 18px 24px 36px",
selector: "textarea",
resize: "both",
language: "ru",
relative_urls: false,
plugins: ["autoresize", "code", "lists", "code", "link", "code", "textcolor", "preview", "sh4tinymce"],
indentation : '20px',
toolbar: [
    "undo redo | fontsizeselect | styleselect | bold italic | alignleft aligncenter alignright | preview | spellchecker | forecolor backcolor | bullist numlist outdent indent"
]
});
</script><textare></textarea>
например выше свой формы добавления добавляете
Вопрос: Это правда что для AJAX лучше использовать метод GET а не POST т.к. он быстрее?

Лучший ответ: ты гет-запросом шлешь только параметры, например: "хочу Войну и Мир", а сервак уже в ОТВЕТАХ - тебе шлет твой огромный текст. Так какие проблемы?)
В твоем случая не будет разницы чем ты шлешь запрос, гетом или постом. Так что не парься

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

Лучший ответ: притвориться мёртвым

Худший ответ: Писать с нуля обязательно? Проект в 200к строк и тебе одному, интересно какая сумма там за проект висит? может найти людей каждого из определенной сверы деятельности которая тебе на данный момент сложна и будет быстрее первый тестовый показ сделать заказчику и предоплата тебе упадет, да и люди много невозьмут $  если ты правильно разделишь всю работу по кускам)
Вопрос: 2 блока с одинаковым line-height и разным font-size. У меньшего font-size появляется отступ сверху. Откуда?

Лучший ответ: незнаю откуда появляется но спасётесь vertical-align:top; для этих span
jsfiddle.net/titulus_desiderio/6kCYS/

Худший ответ: Посмотрела 3D инспектором (FF 12+)…
Мистика!
Вопрос: PHP: как обновить данные в консоли?

Лучший ответ: если по быстрому, то: echo 'Progress:  ';
for( $i = 0; $i <= 100; $i += 10 ) {
	echo $i, '%', "\033[3D";
	sleep(1);
}
echo PHP_EOL;
если нужно часто/красиво, то google -> php cli progress indicator.
например, https://github.com/guiguiboy/PHP-CLI-Progress-Bar

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

Лучший ответ: выбирайте то, что «ближе».

Худший ответ: Большое спасибо за ответы.

Один экземпляр я все таки сделал на Siemens Simatic S7-1200:


Теперь попробую повторить на Arduino.

Если сумею побороть лень, то опубликую табличку для сравнения цены на компоненты SIE и Arduino, которые понадобились для решения задачи автоматизации нижнего уровня.
Вопрос: Как грамотно разработать базу данных?

Лучший ответ: 1. Выделяем все необходимые сущности (объекты)
2. Определяем набор полей для сущностей
3. После того, как сущности созданы, производим их нормализацию — минимум к 3ей форме привести надо
4. Снова заглядываем в тех. задание и примерно накидываем возможные запросы, выделяем тяжелые запросы (те, которые тянут много данных, или которые жойнят много таблиц) и пытаемся переделать структуру БД так, чтобы упростились запросы. Здесь остановочка: чаще всего основными запросами являются SELECTы, но бывает что SELECT делается относительно редко и намного более важен быстрый INSERT данных, плясать надо отсюда.
5. Снова критически оцениваем структуру, и снова кидаем примерные запросы. Внимательно смотрим на INSERTы. Смотрим, какие INSERTы можно вынести в триггеры. Накидываем примерное тело триггера, рихтуем структуру под него
6. Снова критически оцениваем структуру, смотрим чего у нас не хватает. Пытаемся часть SELECTов вынести в View, а часть в хранимые процедуры
7. Снова критически оцениваем получившуюся кашу. Что-то поправляем, вспоминаем что мы упустили что-то ещё. Возвращаемся к пункту 3.
8. После того, как нам кажется что все сделано, описываем каждую таблицу и поле словами, подробно расписываем что и для чего мы сделали, где что оптимизировали и для чего.
9. На следующее утро смотрим снова свою структуру, ужасаемся. Вспоминаем что вчера сделали описание. Внимательно читаем, понимаем что мы упустили кое-что ещё. Поправляем, дополняем.
10. Несем структуру соседнему программисту и пытаемся ему объяснить flow of data. Когда до него наконец-то все дойдет, спрашиваем что бы он мог переделать. Он дает советы, после которых выдумаете что «это ведь было очевидно». Снова все переделываем.
11. Когда сосед-программист от вас устал и послал нахуй согласился с вашей структурой, открываем администратор БД, накидываем схему, проставляем ключи. Снова понимаем что что-то упустили. Снова переделываем структуру.
12. Измучанный и злой ложишься спать. Утро вечера мудренее :)

© me

Худший ответ: Спасибо всем )
Вопрос: Как налоговая проверяет фрилансеров?

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

Худший ответ: Больно нужны фрилансеры налоговой))) У них перед носом миллиарды обналичивают
Вопрос: Как JavaScript фреймворк выбрать: AngularJS, EmberJS, Backbone или без под конкретную задачу?

Лучший ответ: Я думаю, Backbone вам даст именно то, что вы хотите - основу, на которой вы сможете работать так, как удобно вам. Он не накладывает никаких ограничений на архитектуру. А если потом решите, что нужно что-то более высокоуровневое, добавите Marionette.

Худший ответ: Про backbone согласен с Алексей Уколов - если Вам нужно только манипулировать данными, это лучший кандидат ИМХО.
Мне кажется AngularJS Вам стоит применить только если появится бизнес-логика, завязанная на визуальное представление целиком и полностью (читай походы к серверу, роутинг страниц, кастомные виджеты заточенные под бизнес-логику и пр.).
Вопрос: Чехол-сумка 8'' с креплением под брючной ремень

Лучший ответ: Зимой и летом — нет проблем.


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

Лучший ответ: У всех эта проблема :(
Когда дитя в класс девятый пойдёт там всё и вспомните :)

Худший ответ: Выгодский, справочники по элементарной и высшей математике.
Вопрос: Отступ &lt;textarea&gt; в WebKit при Strict?

Лучший ответ: Попробуйте textarea {display: block;}
Не уверена, но помогало при появлении аналогичных отступов в IE у изображений

Худший ответ: Можно так:
{vertical-align: top;}
Вопрос: С чем связаны тормоза при первом открытии сайта?

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

Худший ответ: Ну на своей домашней винде я бы сказал что после простоя в 20 минут был отключен винт для экономия энергии, и по скольку он у меня hdd то на обращение к нему требуется реально много времени, относительно.
Для начала попробуйте открыть файл на вашем веб сервере который не имеет никакого отношения к вашему сайту и вашему виртуальному хосту. Если поведение такое же то попробуйте другой веб сервер.
Вопрос: SPI и несколько Slave

Лучший ответ: скорость может быть (теоретическая) до половины системного тактирования (то есть до 10МГц). Но в реалии нужно не забывать про фланки.
А на самом деле она расчитывется от максимальной скорости самого медленного ведомого устройства. Ведь мастер может скольугодно быстро дергать тактирование устройств — но будут ли ведомые успевать читать его данныу?.. Поищите в сети документ AVR151 (вроде бы). Он описывает спецификацию интерфейса.

Худший ответ: если слейвов очень много (8 или 16) то нужно ставить дешифратор (на 3 или 4 бита)
Вопрос: Google Chrome, как быстро и без мыши перейти по нужной ссылке?

Лучший ответ: Vimium - принесите немного vim'а в браузер.

Худший ответ: Ну вот передо мной Хром и эта страница.
Я нажимаю Ctrl+F, набираю "моя ле" и на странице подсвечивается единственная ссылка на "Мою ленту" дальше я нажимаю Esc, чтобы закрыть поле поиска и давлю Enter, переходя на "Мою ленту".
Как-то так.
Вопрос: Как открыть сервер для интернета?

Лучший ответ: Самое первое, что нужно тебе сделать, это настроить сетевой мост. По памяти, в Virtual Box изменяется тип сетевого адаптера, в интерфейсе Windows объединяется физическое подключение и виртуальное в сетевой мост, после чего Ubuntu на VM и физическая машина на Windows находятся в одной подсети, с разными адресами (192.168.1.x и 192.168.1.y). Далее, дело за малым, настроить проброс портов. Более детально напиши, какой сервис ты хочешь сделать доступным за NAT? В какое оборудование подключен интернет-кабель провайдера? 
Если речь о веб-сервере и у тебя стоит маршрутизатор, то в его настройках нужно указать правило для входящих пакетов на 80 порт, перенаправлять пакеты на адрес 192.168.1.y и такой же порт. Так же узнай, белый ip у тебя?

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

Лучший ответ: Крайне рекомендую postfix, тем более для изучения есть очень хороший перевод на русский по данному серверу: Postfix. Подробное руководство

Несмотря на то, что поначалу меня смущало, что он разбит на ряд независимых по сути программ (в отличие от того же exim), т.е. в top нет единого процесса «почтовый сервер», но ознакомившись с ним более детально, особенно с архитектурой пришел к выводу, что это идеальный почтовик. Поэтому лично для себя давно уже вопрос выбора почтовика не возникает.

Худший ответ: В общем, спасибо за ответы, нацелюсь на postfix, а потом, может быть, помучаю exim. Судя по всему эти двое — lighttpd и nginx :). Пометил бы как решение и ответ хабраюзера VBart, но можно ометить только 1. Увы, карму поднимать ответившим тоже нечем.
Вопрос: Git для непрограммистов, или как сделать так, чтобы Git работал не построчно?

Лучший ответ: не пишите абзац в одну строчку, делайте переносы каждые например 80 символов.

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

Лучший ответ: Active Directory в энтерпрайзе тяжело заменить. На моем опыте, расширенная в плане Linux фирма, все равно держит как минимум один контроллер AD.
Это просто, относительно быстро, но недешево. На выходе мы получаем простую авторизацию пользователей и развертку gpo и некоторые другие плюсы.
В плане 1С:менять терминальный сервер windows'а на Linux-аналоги? Зачем мучаться с эмуляцией критически важного для некоторых фирм продукта и наживать себе же проблемы?
Остальное:dhcp, shaper,dns, файловые сервера без проблем работают на линуксах (в моем случае в связке с windows ad)
*Свою родную страну больше половины обливает грязью, но живут же здесь. По своей воле или нет  - это другой вопрос)))

Худший ответ: Малый корпоративный почтовый сервер без заморочек.
В своей организации я развернул почтовый сервер на Windows server 2012 в среде Hyper-V.Достоинства
В качестве почтового сервера использовал hMailServer, простой и понятный как три рубля.
  Никакой командной строки, документация есть на русском языке.
  Интеграция с Active Directory без бубна. Для интеграции достаточно прописать сам сервер в AD, и все.
  Учетные записи берутся из AD. Заблокировал пользователя в AD, закрыл доступ к почте.
  Установил на IIS  - Roundcube, для веб-доступа к почте. 
  На все ушло менее половины рабочей недели.
ОЗУ потребляет не более 1 Гб, для 30 почтовых ящиков. Для Linux потребовалось бы не менее 2-3 Гб.Недостатки
Расходуется одна лицензия на серверную ОС Windows Server 2012
Вопрос: Дистанционное создание и управление компанией

Лучший ответ: Ну местный бухгалтер понадобится на Кипре, так как Кипр не совсем классический оффшор по нынешним временам. Там все равно надо платить налог.

В Гонконге если купить контору, то налог платить не нужно в том случае, если гонконгская фирма ведет деятельность за пределами Гонконга. 

Есть еще Сейшеллы, BVI, ОАЭ — где вообще ничего не нужно — ни бухгалтеров, ни налогов, ни отчетов. 
Просто купил контору и открыл счет, и работай. 

Открыть счет и контору можно удаленно. 
Просто надо будет оставить почтовый адрес, куда придет диск с клиент-банком. 
Они отправят DHL -ем. 

Я через это в свое время проходил. Мне вот эта контора помогла:

koffshore.com/

Купил у них контору, хотел правда в Швейцарском банке — открыть счет, но почему-то офицеру швейцарского банка я не понравился. 
И меня отфутболили. 
Потом выбрал страну и банк попроще, открыли.

Худший ответ: В США и Великобритании можно зарегистрировать компанию полностью через интернет, даже документы никуда отправлять не нужно…

Но счет удаленно сейчас практически нигде не откроют.
Вопрос: C#. Где может быть полезна явная реализация интерфейса?

Лучший ответ: Ну есть у вас, предположим, два интерфейса (IDollar и IEuro) в которых описан метод с одним и тем же именем (getPrice). Если у вас случится так, что будет класс (Car), который будет реализовывать эти интерфейсы, то для корректной работы, а именно, чтобы возвращать цену в долларах и евро, необходимо явно реализовать оба метода интерфейсов в классе и вызывать так:
(IEuro)car.getPrice() - цена в евро
(IDollar)car.getPrice() - цена в долларах

Худший ответ: Я иногда делаю в классе и обычный метод, и явно реализуемый, с тем же именем, для удобства. 
Например, иногда нужен компарер как объект с методом, а иногда объект не нужен, и тогда можно вызывать статический метод.public class NaturalComparer : IComparer<string>
{
	[DllImport("shlwapi.dll", CharSet = CharSet.Unicode)]
	private static extern int StrCmpLogicalW(string psz1, string psz2);

	public static int Compare(string x, string y)
	{
		return StrCmpLogicalW(x, y);
	}

	int IComparer<string>.Compare(string x, string y)
	{
		return StrCmpLogicalW(x, y);
	}
}

public class TestApp
{
	public static void Main()
	{
		// Используем явную реализацию
		var arr = new [] { "a5", "a1", "a10", "a3", "a7" };
		Array.Sort(arr); // a1, a10, a3, a5, a7
		Array.Sort(arr, new NaturalComparer()); // a1, a3, a5, a7, a10

		// Используем статический метод
		var list = new List<string> { "a5", "a1", "a10", "a3", "a7" };
		const string max = "a4";
		var minElements1 = list.Where(s => s.CompareTo(max) < 0).ToList(); // a1, a10, a3
		var minElements2 = list.Where(s => NaturalComparer.Compare(s, max) < 0).ToList(); // a1, a3
	}
}