Pull to refresh
18
0

Пользователь

Send message
Elastic стал продвигаться примерно с 12 го года, мы же первую версию логов делали в начале 12 — го. Делали как прототип, а потом оказалось, что с него не так то просто слезть, когда у тебя уже все налажено и работает. У нас используется GrayLog2 для сбора логов с nginx, так что мы можем примерно сравнивать его и нашу систему.
Согласны, чем ближе к реальности тестирование тем лучше, т.к. вылезают такие кейсы, про которые никто и никогда заранее не подумал бы. Правда, с таким подходом тоже свои огрехи есть. Например, нельзя изменять характеристики канала, нет контроля и точной воспроизводимости результата (в зависимости от расстояния и железа результаты могут сильно колебаться). Ну и если у вас сотрудники раскиданы по всей стране и даже в одном здании на разных этажах сидят — массово такое не организуешь.
Добрый день! Выложили видео и презентации, о которых вы спрашивали.
Управление сторонними зависимостями в C++
Облако в штанах
Конструктор для взрослых
Ссылки на соответствующие презентации — под каждым видео.
Спасибо. Да, сами. Идеями для них сыпал сам автор)
Обязательно выложим видео на нашем канале Youtube. Там же дадим ссылку на презентацию.
Выбрать подходящую имплементацию во время сборки можно по сути только двумя способами:

1. через ifdef, например:

#ifdef LINUX
#  include <my_class_linux_impl.h>
#elif defined WIN32
#  include <my_class_win32_impl.h>
...

2. В сборочном скрипте, например, в cmake как-то так:

if (LINUX_OS)
   SET(IMPL_FILES my_class_lunux_impl.cpp)
elseif (WIN32_OS)
   SET(IMPL_FILES my_class_win32_impl.cpp)
...
endif ()
add_library(TestLibrary ${IMPL_FILES} another_file1.cpp another_file2.cpp)

Не понятно, как вам поможет идиома pimpl для выбора в compile time необходимой реализации. Все равно вам придется выбрать на этапе сборки одну из реализаций, подходящую под целевую систему, одним из вышеперечисленных способов.
Более того, не вижу противоречий в тексте статьи, ведь никто не предлагает писать вот такой вот плохокод:

void some_function()
{
#ifdef WIN32
CallWinAPIMethod();
#elif defined POSIX
CallPOSIXMethod()
#endif
CallAnotherMethod();
#ifdef WIN32
CallAnotherWinAPIMethod();
#elif defined POSIX
CallAnotherPOSIXMethod()
#endif
}

Мы знаем и активно используем паттерны проектирования (в том числе и pimpl). ifdef'ы используем только для выбора подходящей имплементации.
Не соглашусь с вами. Все правила в Стандарте С++ формулируются в терминах абстрактной виртуальной машины, нигде не фигурируют завязки на конкретную программную или аппаратную платформу, то есть формально он является кроссплатформенным. Да и исторически С++ изначально проектировался переносимым, об этом пишет Страуструп в своей книге «Дизайн и эволюция С++» (глава 3.2 «Цели С++»):

… необходимо было дать ответ на несколько ключевых вопросов:
* кто будет пользоваться языком?
* на каких системах будут работать пользователи?

Чтобы ответить на второй вопрос, я просто огляделся по сторонам — на каких системах реально использовался C with Classes? Практически на любых: таких маленьких, что на них и компилятор-то не мог работать, до мейнфреймов и супер-компьютеров. Среди ОС были и такие, о которых я даже не слыхивал. Отсюда следовали выводы, что высокая степень переносимости и возможность выполнять кросс-компиляцию абсолютно необходимы…
Да, программа, которая работает хотя бы на одной современной POSIX-совместимой системе относительно просто переносится на другие POSIX-совместимые системы. Но рынок диктует свои требования и отказаться от поддержки Windows зачастую невозможно.
А в нашем случае ситуация была еще сложнее — у нас были большие Windows-приложения и нам нужно было портировать их под POSIX. Огромный объем кодовой базы не позволял нам переписать все за раз — это был длительный итеративный процесс, параллельно с которым шло активное развитие этих продуктов. Как минимум из-за этого нельзя было «сжигать» мосты и переходить на POSIX, отказавшись от WinAPI (иначе на какой-то период сломалась бы сборка на MSVS и работа наших коллег бы встала).
MinGW не решает проблему — он использует WinAPI, ровно как MSVS (сейчас, кстати, мы перешли на него, отказавшись от MSVS). Вы, наверное, имели ввиду cygwin, в котором WinAPI завернут внутрь POSIX-совместимого API.
Нет, в жизни это не так. Все компиляторы перекодируют «широкие» строки, а некоторые — даже «узкие». Чтобы убедиться в этом, можете взять MSVC 2010 и провести опыт: скомпилировать в ней один и тот же файл, закодированный в кодировки UTF-8, UTF-8+BOM и Win1251:

 #include <stdio.h>
int main()
{
   printf( "%hhu\n", static_cast<unsigned char>( 'я' ) );
   printf( "%hu\n", static_cast<unsigned short>( L'я' ) );
}


В случае с Win1251 вы получите ожидаемый результат, который никак не противоречит вашей гипотезе:
255 (это код символа 'я' в Win1251)
1103 (это код символа 'я' в UTF-16, которой представлен wchar_t на Win)

В случае UTF-8 вы получите:
143 (это один из двух байт UTF-8 представления символа 'я' — подходит под вашу гипотезу)
1057 (а это ошибка! компилятор неправильно закодировал L'я', так как неправильно воспринял исходник и сделал перекодировку win1251->utf16 вместо utf8->utf16)

В случае с UTF-8 с заголовком BOM мы имеем результат, идентичный первому варианту:
255
1103
И этот случай противоречит вашей гипотезе — компилятор представил «узкую» строку в 1251, несмотря на то что она была в исходнике в UTF-8.

Таким образом, не все компиляторы берут строки как есть из файла, они их иногда перекодируют.
Спасибо. Поправили.
Мобильные приложения СБИС сделаны на нашей платформе

https://play.google.com/store/apps/details?id=ru.tensor.sbis.droid

https://itunes.apple.com/ru/app/%D1%81%D0%B1%D0%B8%D1%81/id1156518720

Остальное — облачные решения;
Облако sbis.ru построено на платформе
Изначально СБИС — Система бухгалтерского и складского учета. Название осталось прежнее, а система выросла. Поэтому СБИС мы не расшифровываем. Что такое СБИС, и какие представляет сервисы, можно посмотреть на сайте системы
Спасибо, исправили ошибку
Уточнили — уполномочку в онлайне мы уже делаем.
Уточним, конечно, но по нашим сведениям все очень давно сделано и работает.
Перестать кататься с актами через всю Москву и Питер по 10 раз! Пусть сами катаются, а когда надоест — перейдут на ЭДО)
Получение документов для клиентов бесплатно, не требует установки дополнительного ПО, по времени не отнимает больше пары минут. Но люди с трудом отказываются от привычного уклада. Так что немного терпения, и все будет.
Да, действительно СБИС начинался с «толстого» клиента с присущими этой технологии проблемами обновления. Чтобы раз и навсегда забыть про эти проблемы переходите в «облако». Оно уже давно по функционалу обогнало «толстый клиент».
А есть что-то, что прям вот хотелось бы почитать? У человека, работавшего у нас, это спросить актуальнее всего.
Спасибо. Проблема обозначена. Раздали пилы, ушли допиливать.
А если серьезно — что именно вас смущает в онлайне?

Information

Rating
Does not participate
Location
Ярославль, Ярославская обл., Россия
Works in
Date of birth
Registered
Activity