Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как исключить конфликт клиент-банков разных банков на компьютере пользователя?

Лучший ответ:
Но наша IT безопасность запретила этот вариант т к возможен перехват ключа через сеть. 
Ваша безопасность не знает про VPN? Уволить нахрен!
Виртуализация решит все ваши проблемы.

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

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

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

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

Худший ответ:
Доброе утро.
Покажите, именно, как Вы фильтруете в поисковой модели.
Если настроить нужно по разным моделям фильтрацию, то Вам надо ещё создать псевдонимы таблиц.
Покажу на своём примере.
Мне требовалось в маршрутах сделать поиск по городам.
В модели "маршруты" создал публичное свойство "$city_id;". Так же есть связующая таблица, где маршруты связаны с городами. В самом запросе добавил связь и joinWith().$query = Routes::find()
            ->from(['r' => Routes::tableName()])
            ->with(['city', 'routesCities', 'price'])
            ->joinWith([
                'city' => function(ActiveQuery $query){
                    $query->from(['rc1' => Cities::tableName()]);
                }
            ])
            ->joinWith([
                'routesCities' => function(ActiveQuery $query){
                    $query->from(['rc2' => RoutesCities::tableName()]);
                }
            ])
В этом запросе я делаю псевдоним для таблицы маршрутов, для таблицы city и связующей таблицы.
Соответственно получаю три псевдонима "r" - маршруты, "rc1" - города, "rc2" - связующая таблица, хранится привязка города к маршруту.
И тогда в фильтрации пишу следующее:$query->andFilterWhere([
            'r.id' => $this->id,
            /*****/
            'rc1.id' => $this->city_id, // фильтрую по id города.
        ]);
И в GridView делаю саму колонку фильтра, вывожу через запятую города, через которые проходит маршрут.[
                'attribute' => 'city_id',
                'label' => "Города",
                'filter' => Cities::find()->select(['title', 'id'])->indexBy('id')->orderBy(['title' => SORT_ASC])->column(),
                'value' => function(Routes $routes){
                     return implode(',', ArrayHelper::map($routes->city, 'id', 'title'));
                }
            ],
Вопрос: Как лучше хранить изображения в базе данных MSSQL?

Лучший ответ:
Хранить изображения в облаке (s3 или s3-совместимым), а в базе ссылки

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

Лучший ответ:
Тут нужно выбрать 1 из 2х: либо минимальная недоступность, либо минимальная потеря информации. 
Я обычно предпочитаю второе:
1) Делаем бекап базы и файлов сайта без папки аплоад 
2) Разворачиваем бекап на новом сервере
3) Выкачиваем папку аплоад на новый серевер через rsync - это не быстро происходит
4) Проверяем, что на новом все пашет
5) Ждем ночи с пятницы на субботу
6) Выклчаем синхронизацию с МоимСкладом, 1С или с чем-то другим, от куда сайт тянет данные.
7) Если пользователи могут загружать на сайт свои файлы, отключаем им эту возможность
8) Повторяем пункты 1-4
9) Закрываем публичку старого сайта
10) Делаем бекап базы
11) Накатываем базу на новый сайт
12) Проверяем что все пашет, открываем публичку на новом и на новом включаем обратно возможность грузить свои файлы, на старом публичка должна остаться закрытой
13) Перенаправляем домен
14) Включаем обратно синхронизации
Недоступность с пункта 9 по переделегацию домена, потерь данных нет
Сертификат должен старый взлететь. Но до переделегации домена он на новом будет ругаться.
А вообще плохой этот ваш новый провайдер, если он сам и бесплатно не забирает клиента к себе. При переезде к нормальному провайдеру схема сокращается до 2х пунктов: подписать договор и предоставить доступ к старому серверу.

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

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

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

Лучший ответ:
Такая схемка имеет сопротивление на порядок меньше, чем у участвующего в ней стабилитрона. Rs не нужен, R1 ~600ом.


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

P.S. Формально - задача может и не иметь реального решения ввиду того факта, что ближайшее стандартное значение напряжение стабилизации стабилитронов (не берём в рассмотрение "шунтовые" интегральные стабилизаторы) равно 5.1 В.
Вопрос: JavaScript — высокоуровневый язык программирования?

Лучший ответ:
На что преподаватель с хмурым взглядом повторил "На высокоуровневом языке". Да с таким видом, будто он JavaScript за ЯП не воспринимает вовсе. 
Бгг, а препод-то в теме, любит поглумиться. Привыкайте к такому отношению.да и вообще можно сказать, что все современные языки - высокоуровневые?
Нет.Если я не прав, то скажите в добавок какие есть "всемирно известные" и современные низкоуровневые ЯП?
Assembler. Сишку теперь считают низкоуровневой. Ещё ряд нишевых языков.
А JS таки да, высокоуровневый.

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

Лучший ответ:
1 - Что почитать для понимания чужого кода? чужой код
2 - осваивайте отладчик. первый раз работаю с С# если это винда, то все довольно не плохо - вам абсолютно легально и бесплатно, доступна VS2019 Community (если есть очень веские аргументы, можно и версию постарее) изучайте код под отладчиком
3 - советовать вам литературу, в данном случае бесполезно - надо знать мышление кодера, который слислся. возвращаемся к пп2 - лучше отладчика, ни кто вам не поможет
4 - поправка - F1 и правый клик на классах в студии )). если класс от МС - F1 поможет. если класс/переменная/тип от "слившегося" - изучите пункты меню "правого клика":
- перейти к определению
- перейти к реализации
- найти все ссылки
5 - upd что бы читать, надо и кодить.. что бы легче было читать - надо много кодить. эти процессы друг друга сильно подпитывают. если нет заданий "с чистого листа".. стоит где то упражняться (как качалка, спортзал).. тут к примеру https://www.codewars.com/
.. но делать хотя бы мелкие, но кому то полезные задачи, это даже круче. ну и совсем круто - совмещать все... если хотите стать мастером )))

Худший ответ:
Да, пофиг, все делается просто: берешь дебаггер в одну руку, копипастер в другую, вырезаешь класс за классом, строишь упрощённую модельку чужого творчества. Как с куском разобрался - оборачиваешь его в #region со своими комментариями.
Как успехи?
Вопрос: Почему non-root пользователь не может использовать порты, с номерами меньшими чем 1024?

Лучший ответ:
Исторически сложилось.
Типа это служебные сервисы

Худший ответ:
защит а от дурака.
на портах ниже 1024 висят многие сервисы обслуживания и поддержки сети и сторонняя прога (читай вирус или троян) получившая к ним доступ, можно серъезно изменить работу сети.
поэтому проги от простого пользователя (базовый источник вирусни на рабочей станции) не допускаются к "системным" ip-портам, как и к другой жизненноважной функциональности ос.
Вопрос: Почему window.History.pushState is not a function?

Лучший ответ:
History - глобальный "интерфейс".
А уже сам объект - "window.history" (с маленькой буквы)

Худший ответ:
есть такой кодJCSmartFilter.prototype.filterCatalog = function(t, e) {
    window.History.enabled || null != window.history.pushState ? window.History.pushState(null, document.title, t) : location.href = t,
window.History.pushState(null, document.title, t) это эмуляция и метод тут https://somebox.ru/bitrix/cache/js/s1/aspro_optimu...m.pushState = function(b, c, d, e) {
                if (m.getHashByUrl(d) && m.emulated.pushState)
                    throw new Error("History.js does not support states with fragement-identifiers (hashes/anchors).");
                if (e !== !1 && m.busy())
                    return m.pushQueue({
                        scope: m,
                        callback: m.pushState,
                        args: arguments,
                        queue: e
                    }),
                    !1;
                m.busy(!0);
                var f = m.createStateObject(b, c, d);
                return m.isLastSavedState(f) ? m.busy(!1) : (m.storeState(f),
                m.expectedStateId = f.id,
                n.pushState(f.id, f.title, f.url),
                m.Adapter.trigger(a, "popstate")),
                !0
            }
На моб этот файл не подключается поэтому ошибка
Вопрос: Стоит ли ставить Windows 7 x64 Домашняя расширеная на ноут?

Лучший ответ:
стоит ли ставить Windows 7 x64 Домашняя расширеная на ноут?Какая удобнее ту и ставьте, особой разницы нет.
У десятки больше фоновых процессов, диск она сильнее грузит.
В любом случае - хоть десятка, хоть семерка - для быстрой работы ставьте SSD.
Ну и планку памяти еще на 4 надо бы.

Худший ответ:
а подскажите системные требования на 7 и 10 разные ?
Вопрос: Javascript прекрасно работает в codepen но после интеграции в Wordpress выдает NaN, что не так?

Лучший ответ:
$('input:checkbox:checked').each(function(){ ...
Вам нужно конкретизировать лучше к каким input вы обращаетесь, из за того что у вас есть CF7 - ваш скрипт берет в оборот и все input от CF7 в том числе, отсюда и ошибка.

Худший ответ:
Есть девелопер тулс в хроме и лисе, поставь точки останова и посмотри. Ты даёшь ссылку на рабочий кодепен, что бы тебе диагностировали поломанный ВордПресс. Странная затея.
Вопрос: Работа с Датой в Java?

Лучший ответ:
Встроенных в Java 8 LocalDateTime, ZonedDateTime более чем достаточно

Худший ответ:
Посмотрите на библиотеку joda-time , тем более, что она стала стандартом и ее включили в поставку новых jdk , так что старый api можно уже и не рассматривать. Все что нужно там есть!
https://www.joda.org/joda-time/
Вопрос: Куда идти, что делать, какой язык выбрать?

Лучший ответ:
Мечтаю создать свой собственный проект Забудь, ты опоздал лет на 20, время одиночных проектов ушло в историю. Сейчас любые проекты делаются командами, у которых есть инвесторы и четкий бизнес-план.

Когда я был студентом, в начале 2000-х, в интернете были веб-сайты, которые делали люди-одиночки и эти сайты были весьма популярны, это был восход одиночных проектов на хтмл4 и пхп4. Сейчас добиться с такими же трудозатратами хотя бы доли той аудитории нереально. 

чтобы этот проект был направлен на общество, ну что-то вроде социальных-сетей, т.е. чтобы с этим непосредственно работал человек, это было трендом и тп в любом трендовом проекте, если ты туда когда-либо попадешь (что не факт) ты будешь простым исполнителем, винтиком. Поэтому не очень хочу программировать станки на заводе звучит очень высокомерно. Как раз на программирование столь серьезных вещей и стоит попасть, ибо это, в отличие от бесчисленных соцсетей, стартапов и пр мусора, приносит реальную пользу.

Есть идея по создании социальной сети
1. ты ее не сделаешь в одиночку
2. если сделаешь, то не скоро и очень криво
3. она не нужна никому, людей уже тошнит от соцсетей

можете посоветовать, что делатьперестать рассматривать эту сферу с инфантильной  позиции, что ты какой-то уникальный человек, который сейчас выучится, придёт в профессию и перевернет мир, а работа твоя будет пестрить яркими красками. 
Нет. 
Реалии работы разработчика другие. 
Совсем. 
Тебя ожидает трекер с задачами, какой-нибудь проект с кучей кода (дай бог, что бы не древний как авно мамонта), в котором ты будешь копаться, пока не сломаешь мозги.
И так несколько лет.

Худший ответ:
ощущение что вопросы задает человек десяти лет отроду, мужик включи мозги
Вопрос: Почему функция array_pop не всегда работает коректно в PHP?

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

тогда вам смогут ответить

Худший ответ:
$id = array_pop($id); - вернет последний элемент массива, $id в то же время массив который стал короче на 1 элемент. А вы чего пытаетесь добиться?
было бы логично использовать другую переменную $last_id = array_pop($id); тогда в $last_id точно будет последний элемент массива, а в $id массив без последнего элемента.
Вопрос: Как организовать онлайн-запись на обеды?

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

Худший ответ:
Почему Гугль Календарь отпадает?
Вопрос: Как решить проблему с шаблоном записи в WP?

Лучший ответ:
шаблон карты товара должен иметь такое и только такое название 
single-catalog.php
и можно его не выбирать)))
нажмите эту кнопку

Худший ответ:
Пересохраните  ЧПУ
Если не поможет - покажите как называется фал шаблонаTemplate Name: Карточка автомобиля
Template Post Type: catalog
Вопрос: Что делать если исчезает половина модели при экспорте из Blender 2.8?

Лучший ответ:
Исчезает не половина модели, шейдером "отсекается" задняя сторона грани(полигона). 
У Вас все нормали перевернутые, чтобы убедиться включите эту опцию, красная - задняя сторона, синяя - передняя.
Чтобы перевернуть выделенные в режиме редактирования нормали Alt+N -> Flip.

Худший ответ:
Попробуй применить все модификаторы (так, например, могут возникать проблемы из-за вращения), а потом переместить. Ещё можно проверить после этого качество меша в режиме редактирования (boolean может вызывать проблемы).
Вопрос: За и против встроенного в HTML base64/png?

Лучший ответ:
1. Увеличивается размер ресурса.
2. Теряется атомарность изменений - поменяли какое-то свойство в CSS, весь файл инвалидировался в кеше, клиенту нужно заново качать картинку, хотя она и не изменилась.
3. Дизайнер не сможет просто отредактировать изображение.
4. Нельзя посмотреть изображение в редакторах.

Худший ответ:
В вашу и base64 защиту скажу: есть определенные ситуации, когда невозможно обойтись без инлайн-вставки изображений, одна из них - страница ошибки 500. Сервер лежит, ассеты не подгрузить, все должно быть заинлайнено, включая изображения и стили. В данном случае base64 вас спасёт.
Вопрос: Откуда столько соединений?

Лучший ответ:
Судя по тому что вы скинули такое происходит из-за луны в фазе единорога.
Тут вполне видно что у вас 53к соединений на 443 порт, вот и разбирайтесь кто это и зачем подключается столько.
Может так и должно быть, просто у вас сервер уже не справляется с нагрузкой и пора наращивать мощности, а может вас конкуренты давят. Кто его знает

Худший ответ:
Если web то может быть ddos. Все что угодно.
Вопрос: Как в jquery найти все элементы по id в нужном div блоке?

Лучший ответ:
Вы несколько id искать не можете. В разметке только 1 элемент может содержать уникальный id. Используйте опознавание по классам.

Худший ответ:
Замените id на class и поиск по селектору класса find('.PhoneStaffCompany_phone_number')
Вопрос: Как сделать вывод лога работы в XML файл на c#?

Лучший ответ:
https://docs.microsoft.com/ru-ru/dotnet/api/system...
там пример есть как писать. как резать, если 24/7 - ваше творчество
а вообще вряд ли самый удобный формат для логов

Худший ответ:
https://docs.microsoft.com/ru-ru/dotnet/api/system...
там пример есть как писать. как резать, если 24/7 - ваше творчество
а вообще вряд ли самый удобный формат для логов
Вопрос: Как менять ширину блока при скролле?

Лучший ответ:
Накидал по-быстрому, для нормализации нужно самому доработать уж.
https://jsfiddle.net/guqcaek9/

Худший ответ:
с помощью js
например:библиотека 1библиотека 2
Вопрос: Возможно ли изменить ip адрес роутера со 192.168 на 191.167 например? И если да, то как?

Лучший ответ:
В настройках роутера. Как правило, по адресу http://current-router-ip.
Просто знайте про зарезервированные адреса 'для внутреннего использования'. И эти адреса: 10. x.x.x, 192.168.x.x, 172.16.0.0 - 172.31. 255.255.
Так что попытка присвоить адрес, который не из этого диапазона, может отразиться на корректной работе роутера.

Худший ответ:
Если роутер просто стоит на столе и к нему ничего не подключено - можно поставить какой угодно IP. Если это роутер с тырнетом, эксперименты по смене IP как правило кончаются после его (тырнета) пропадании :)
Вопрос: Как поднять сервер на Linux и задеплоить приложение?

Лучший ответ:
3 шаг: установить сервер приложений по вкусу/требованию заказчика/желанию левой пятки
4 шаг: окей гугл, как "задеплойтить приложение" %имя_выбранного_сервера_приложений%

Худший ответ:
Здравствуйте!
Установите apache tomcat
https://firstvds.ru/technology/recipes/tomcat
Соберите проект в архив. Например, в war. Залейте на сервер
Вопрос: Как установить Windows по сети?

Лучший ответ:
гуглите по фразе PXE + Windows ADK

Худший ответ:
Мы для этого используем MDT. 
Можешь ещё глянуть clonezilla (drbl).
Вопрос: С чего лучше всего начать изучать разработка под android в 2018?

Лучший ответ:
Однозначно начинать разработку android приложений следует с использования Android Studio и Java по следующем причинам:
1) Android Studio является официальной средой разработки
2) Java является родным языком для Android
3) Большое разнообразие книг и уроков
4) Большое сообщество

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

Лучший ответ:
Вообще ни о чём

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

Лучший ответ:
По сути это должно выглядеть так:
hash.split("/")
Мне кажется он не писал руками "separator:", просто IDE показывает в какую переменную попадёт аргумент.

VS правильно считает, что там должна стоять запятая, так как это по идее должны быть два аргумента, между которыми всегда ставится именно запятая.

Худший ответ:
По сути это должно выглядеть так:
hash.split("/")
Мне кажется он не писал руками "separator:", просто IDE показывает в какую переменную попадёт аргумент.

VS правильно считает, что там должна стоять запятая, так как это по идее должны быть два аргумента, между которыми всегда ставится именно запятая.
Вопрос: Как ускорить скорость загрузки сайта, метрика и движовосайт тянут вниз?

Лучший ответ:
Отложить загрузку на 5 секунд - выход, но грубоватый (имхо конечно). Я делаю по-другому - оборачиваю код в скролл-ивент + задержка в 1 секунду. То есть, сайт загрузился быстро, и как только пользователь начал скроллить хоть чуть-чуть - секундный таймаут и загрузка дополнительных ресурсов. Гугл доволен, пользователи вообще не замечают задержки:var fired = false;

window.addEventListener('scroll', () => {
    if (fired === false) {
        fired = true;
        
        setTimeout(() => {
            // Здесь все эти тормознутые трекеры, чаты и прочая ересь,
            // без которой жить не может отдел маркетинга, и которые
            // дико бесят разработчиков, когда тот же маркетинг приходит
            // с вопросом "почему сайт медленно грузится, нам гугл сказал"
        }, 1000)
    }
});

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

Лучший ответ:
если вопрос в названии, то думаю вот:
snippet

Худший ответ:
Для того, чтобы сделать изображение на весь экран, достаточно применить к нему width: 100%; height: 100%; Это позволит использовать 100% от родительского элемента, но тут важно, чтобы у html, body тоже были данные значения. Есть так же запись width: 100vw; height: 100vh;

Такое решение будет адаптивным:

img {
    width: 100vw;
    height: 100vh;
}
Вопрос: Нужно задать градиент для иконки?

Лучший ответ:
Если иконки в виде шрифтаsnippet
Если иконки в svg, тогда в графическом редакторе задавать градиент.

Худший ответ:
Иконки svg?
Вопрос: Выбрать одно из двух. Либо input type="text", либо select. Как можно реализовать?

Лучший ответ:
Короче вот вам мой таск лист для решения этой задачи.Гуглите что такое события и как с ними работать. Запрос в гугл "События JS"Гуглите событие изменения select. Запрос "event change select js" или "Событие изменения select js"Гуглите, как получить значение текущего селекта. Запрос "get select value event js"Гуглите, как сделать так, чтобы поле ввода стало неактивным. Запрос "disable input js"
Вроде все.

Худший ответ:
держи
Вопрос: Трудность восприятия в некоторые дни тревожит меня одного?

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

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

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

Худший ответ:
GoPro. Или хотя бы муляжи))
+Кейлогер можно написать самому.
+телеграмм бот для сообщения, если раб не клацает по клавишам более 5минут))
Вопрос: Какая разница между данными вариантами?

Лучший ответ:
Первый плох, что в одной строке две переменные объявляются.
Второй плох тем, что два var.
Я бы так (сейчас заминусуют.. А, нет, тут нельзя минусовать : )var tempScrollTop
  , currentScrollTop = 0
;
Запятая в начале некоторых смутит, но так можно смело удалять строку, не боясь накосячить с запятой.Upd. Главное же различие в том, что в 1-м варианте переменная tempScrollTopостаётся неинициализированной, её значение undefined, а во 2-м варианте ей даётся начальное значение 0.

Худший ответ:
Читабельность
Вопрос: Какие надежные и не дорогие VPS в России?

Лучший ответ:
ну к примеру https://vscale.io от селектела. а селектел достаточно хорошо уже показал себя в плане выделенных серверов.

Худший ответ:
netbreeze.net
Пользуюсь пару лет, без нареканий.