All streams
Search
Write a publication
Pull to refresh
-1
0
Агафонов Олег @JayDi

Программист

Send message
Nenakhov, я отвечал на вторую часть сообщения, где вы собираетесь сразу же уволить людей, которые откажутся использовать PostgreSQL и выберут MS SQL или Oracle при разработке корпоративных решений. Вот это свидетельствует о вашей крутости и знании темы. Увольняйте дальше — вы же гуру и в теме.
Речь не про конкретное решение для сайта ГИБДД, а про решения корпоративного уровня, куда никто в здравом уме не будет ставить всякие PostgreSQL и MySQL просто потому, что кроме базы данных требуются значительно более серьезные программные продукты для поддержания всей инфроструктуры предприятия в рабочем состоянии. Microsoft или Oracle могут такое предложить своим клиентам. PostgreSQL — нет.
PostgreSQL на корпоративном рынке?! О госпади, да вас надо держать подальше от этого сектора, раз не знаете, в чем преимущество технологий того же Oracle, и для каких целей все это используется.
Потому что при одновременно нескольких предварительных заявок на домен организуется аукцион.
Это образ жизни. Людям просто нравится этим заниматься. Точно так же, как другим нравится воевать под огнем противника, спасать попавших в аварии людей или же вязать шерстяные носочки.
Зачем нашим людям нужна социальная сеть, где нельзя посмотреть ни видео последней серии долгожданного сериала, ни послушать свои любимые песни?
Вот мне, как разработчику, приходится частенько ждать, пока нужные инструменты и программы выполнят нужные оптимизации и будут готовы после очередного обновления.

Хорошо, раз непонятно, то вот объяснение по пальцам (подробнее просто некуда)…

У .NET есть проблемы с холодным стартом. При первом запуске какого-либо функционала, этот код необходимо откомпилировать в родной для процессора. Для пользователя это выливается в долгий запуск и задержках (лагах) при работе с программой.

Если хочется, чтобы все сразу и быстро запускалось, надо ЗАРАНЕЕ откомпилировать весь код приложения. Это занимает ВРЕМЯ, иногда довольно много времени. Предварительная компиляция делается как автоматически самой системой при ее простое, так и вызывается вручную при необходимости.

Чтобы пользователи не видели всю сущность NET и их проблемы с медленным запуском, некоторые разработчики ЗАРАНЕЕ компилируют свои приложения, например, при их установки или обновлении (Visual Studio, dbForge for MySQL и т.п.).

Обычно приложения обновляются при запуске или через соответсвующую кнопку. А это значит, что после обновления пользователь хочет продолжить работать с программой как ни в чем не бывало. Что в свою очередь приводит к необходимости повторной компиляции кода, иначе — «привет, тормоза».
Любые, которые что-либо встраивают в оболочку IDE (например, компоненты и утилиты от DevExpress). Во время установки или обновления можно запустить Process Explorer и посмотреть, как вызывается ngen-сервис для компиляции (как раз тот самый, из MSDN, который «запускается отложенно во время простоя Windows»).

Кстати, если вдруг у вас на компьютере установлено много «больших» NET-приложений (Visual Studio, MS SQL Server со своими утилитами и т.п.) и включен такой сервис оптимизации — готовтесь к тому, что размер системной папки будет расти день ото дня (и когда-нибудь отъест от нескольких сотен, до 1-2 Гб места на диске).
Под «поместить в GAC» подразумевалась сборка всех модулей и их предварительная компиляция в нативный код с помощью утилиты NGEN (где эта сборка будет лежать — не важно — в GAC или в другом месте). Как раз благодаря этому можно значительно ускорить загрузку net-приложений. Даже в той же самой Visual Studio при добавлении, изменении или удалении компонентов это делается.
Это машинный код, который сразу готов к выполнению на процессоре без своей компиляции, интерпретации и т.п.
Evernote — большое и популярное приложение.

Версия 3.5 написана на .NET, WPF.
Версия 4.0 написана на C++.

Цитата ( habrahabr.ru/company/evernote/blog/106994/ ):
В ходе тестирования с аппаратным обеспечением мы установили, что Evernote 4 запускается в пять раз быстрее и использует в два раза меньше памяти, чем Evernote 3.5.
NET-приложения ужасно долго запускаются (на порядок дольше родного win-кода). Чтобы стало нормально работать, их надо еще и заранее откомпилировать. Скачал обновление? Будь добр подожди 5 минут, пока приложение повторно откомпилируется и поместится в GAC.
В свете постоянных обновлений и несовместимости кода между разными версиями языка — до продакшена ему еще очень далеко.
Есть стандартная функция Replace для замены текста. Она прекрасно справляется со своими обязанностями по замене и вставке нужных данных в шаблоне. И никаких самопальных алгоритмов по распознаванию и поиску слов.

Selection.Find.Execute(Replace := wdReplaceAll);
Потому что первоначально говорилось про статью на хабре от представителя Evernote:
habrahabr.ru/company/evernote/blog/106994/

А вот и цитата оттуда:

Evernote 4 кардинально отличается от Evernote 3.5 по всем параметрам. Хотя версия 3.5 и добавила множество отличных новых возможностей, в ней мы столкнулись с рядом проблем, которые невозможно было легко исправить: размытый шрифт, долгое время загрузки, большое потребление памяти и плохая поддержка видеокарт. Все это было обусловлено спецификой технологий, лежащих в основе 3.5 (Windows .NET и WPF), на которые мы никак не могли повлиять. В конечном итоге мы скатились к борьбе с ошибками платформы вместо работы над новыми возможностями, о которых нас просили пользователи.

В итоге мы решили начать с нуля, используя только C++, в котором мы были уверены. Как вы сами увидите, результат получился просто удивительный. Эта новая версия положит основу для более быстрого развития Windows-клиента.
Тему про Evernote прочитать было лень? Причем тут вообще линукс? Речь идет про популярное приложение, установленное на миллионах пользовательских компьютерах. Мне больше интересен опыт реального применения технологий, а не куча воды с «marketing-bullshit» на очередной конференции.
Подискутировать можно было бы в теме про Evernote и огромных проблемах с WPF и Net Framework'ом, из-за чего они были вынуждены отказаться от «модных технологий». Но, к сожалению, представители Майкрософт на хабре полностью обходят стороной эту тему, как будто никаких проблем и вовсе не существует.
У меня-то как раз простой запрос на объединение двух таблиц с одним BETWEEN-условием, работающий при любых периодах для вывода и без каких-либо ограничений по использованию. Если использовать совет xtender'а по замене STR_TO_DATE(DATE_FORMAT()) на LAST_DAY, то код визуально уменьшится и будет выполняться в 2-3 раза быстрее.

А вот у вас — куча левого кода, велосипед для определения, находится ли дата между двумя другими датами (самопальная реализация BETWEEN), куча ограничений на использование данной методики и КУЧА SQL-кода. Одним словом — костыль, которому просто не место в продакшене (коллеги будут без ума от счастья увидев код функции isEventInMonth).
Функции и процедуры будут работать медленнее единого блока SQL по определению — в силу того, что все они выполняются в отдельности и к ним нельзя применять оптимизации и разные планы выполнения, их нельзя свернуть или развернуть для использования специфичных индексов или уменьшения обрабатываемых данных. Исключение, пожалуй, может составить только код, результат которого зависит исключительно от входных параметров — тогда со стороны СУБД возможны оптимизации и кеширование результатов.
Выводит список месяцев и кол-во активных событий (которые начались, закончились или продолжаются в соответствующий период):

SELECT
MONTHNAME(d.month) AS R_MONTH_NAME,
(SELECT
COUNT(*)
FROM
myevents e
WHERE
d.month BETWEEN STR_TO_DATE(DATE_FORMAT(e.start_date, '01.%m.%Y'), '%d.%m.%Y') AND STR_TO_DATE(DATE_FORMAT(e.end_date, '01.%m.%Y'), '%d.%m.%Y'))
AS R_COUNT
FROM
dates d

Здесь:
dates — таблица или запрос, возвращающий список месяцев, за который надо вывести статистику
myevents — таблица со списком событий

Information

Rating
Does not participate
Location
Сызрань, Самарская обл., Россия
Registered
Activity