Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Как стать автором
Хабровчане vs. цифровые сервисы банков: итоги
  • Все потоки
  • Разработка
  • Администрирование
  • Дизайн
  • Менеджмент
  • Маркетинг
  • Научпоп
Войти Регистрация
27,0
Карма
0,0
Рейтинг
18
Подписчики
7
Подписки

Andrey Podkolzin podkolzzzin

Developer

Профиль

Публикации 11

Комментарии 43

Закладки 31

  • podkolzzzin 9 июня 2020 в 11:09

    Дополняя SQL. Часть 4. Работа с исключениями, влияние данных на процесс разработки. Использование ML.NET

    • .NET,
    • SQL,
    • Разработка под Windows

      Что будет в этой статье?


      Это заключительная статья в цикле о жизни разработчиков IDE для баз данных. В этой части я расскажу, о том, как внедрение продуктовой аналитики повлияло на некоторые аспекты разработки.

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

      • Мы делаем линейку IDE для СУБД MySQL, SQL Server, Oracle, PostgreSQL
      • Это настольное приложение на .NET стеке со всеми вытекающими
      • Парсинг SQL это сложная задача в плане производительности и памяти. Постоянно приходится применять разные трюки для оптимизации

      Ссылки на предыдущие статьи цикла:

      Часть 1. Сложности парсинга. Истории о доработке ANTLR напильником
      Часть 2. Оптимизация работы со строками и открытия файлов
      Часть 3. Жизнь расширений для Visual Studio. Работа с IO. Необычное использование SQL
      Часть 4. Работа с исключениями, влияние данных на процесс разработки. Использование ML.NET


      Читать дальше →
      • +6
      • 989
      • Комментировать
    • podkolzzzin 1 июня 2020 в 08:50

      Дополняя SQL. Часть 3. Жизнь расширений для Visual Studio. Работа с IO. Необычное использование SQL

      • .NET,
      • SQL,
      • SQLite,
      • Разработка под Windows
        Публикую на Хабр оригинал статьи, перевод которой размещен в блоге Codingsight.

        Что будет в этой статье?


        Это третья статья в цикле о жизни разработчиков IDE для баз данных. Ее структура будет похожа на первую и вторую, но здесь я уже не буду рассказывать о парсинге текста. В этой статье речь пойдет о некоторых трюках по работе с файлами и просто различными проблемами при создании большого настольного приложения на платформе .NET. Для понимания этой статьи не обязательно читать первую и вторую части полностью, но в первой статье цикла есть несколько параграфов, которые отлично погружают в контекст разработки. Мне кажется, эта часть цикла получилась интересна даже для большего круга людей, чем предыдущие. Их было бы полезно глянуть перед прочтением статьи, а если на это нет времени или желания, то вот несколько тезисов из прошлых статей:

        • Мы делаем линейку IDE для СУБД MySQL, SQL Server, Oracle, PostgreSQL
        • Это настольное приложение на .NET стеке со всеми вытекающими
        • Много функций завязаны на анализ SQL кода. Используем для этого сильно доработанный ANTLR
        • Парсинг SQL это сложная задача в плане производительности и памяти. Постоянно приходится применять разные трюки для оптимизации

        По мере публикации буду добавлять ссылки на следующие части:

        Часть 1. Сложности парсинга. Истории о доработке ANTLR напильником
        Часть 2. Оптимизация работы со строками и открытия файлов
        Часть 3. Жизнь расширений для Visual Studio. Работа с IO. Необычное использование SQL
        Часть 4. Работа с исключениями, влияние данных на процесс разработки. Использование ML.NET


        Читать дальше →
        • +7
        • 1,7k
        • Комментировать
      • podkolzzzin 25 мая 2020 в 12:10

        Дополняя SQL. Часть 2. Оптимизация работы со строками и открытия файлов

        • .NET,
        • SQL,
        • Microsoft SQL Server,
        • Разработка под Windows
          Публикую на Хабр оригинал статьи, перевод которой размещен в блоге Codingsight.

          Что будет в этой статье?


          Это вторая статья в цикле о жизни разработчиков IDE для баз данных. Ее структура будет похожа на первую. Как и в первой я расскажу о проблемах с которыми мы сталкивались, решениях успешных и не очень. Для понимания этой статьи не обязательно читать первую часть полностью, но первые несколько параграфов были бы полезны, для погружения в контекст.

          Для ленивых основные тезисы первой статьи:

          • Мы делаем линейку IDE для СУБД MySQL, SQL Server, Oracle, PostgreSQL
          • Это настольное приложение на .NET стеке со всеми вытекающими
          • Много функций завязаны на анализ SQL кода. Используем для этого сильно доработанный ANTLR

          По мере публикации буду добавлять ссылки на следующие части:

          Часть 1. Сложности парсинга. Истории о доработке ANTLR напильником
          Часть 2. Оптимизация работы со строками и открытия файлов
          Часть 3. Жизнь расширений для Visual Studio. Работа с IO. Необычное использование SQL
          Часть 4. Работа с исключениями, влияние данных на процесс разработки. Использование ML.NET

          В этой части я сосредоточусь на проблемах при работе со строками. Одно из самых критичных мест при работе со строками для нас — это стадия лексического анализа текста, когда скрипт разбивается на слова.


          Читать дальше →
          • +11
          • 1,9k
          • Комментировать
        • podkolzzzin 18 мая 2020 в 05:57

          Дополняя SQL. Часть 1. Сложности парсинга. Истории о доработке ANTLR напильником

          • PostgreSQL,
          • .NET,
          • SQL,
          • Microsoft SQL Server,
          • Разработка под Windows
            Публикую на Хабр оригинал статьи, перевод которой размещен в блоге Codingsight.

            Что будет в этой статье?


            Более пяти лет работаю в компании, что занимается разработкой линейки IDE для работы с базами данных. Начиная работу над этой статьей я и не представлял как много интересных историй получится вспомнить, потому когда закончил получил более 30 страниц текста. Немного подумав, я сгруппировал истории по тематике, а статью разбил на несколько.

            По мере публикации буду добавлять ссылки на следующие части:
            Часть 1. Сложности парсинга. Истории о доработке ANTLR напильником
            Часть 2. Оптимизация работы со строками и открытия файлов
            Часть 3. Жизнь расширений для Visual Studio. Работа с IO. Необычное использование SQL
            Часть 4. Работа с исключениями, влияние данных на процесс разработки. Использование ML.NET

            За время работы произошло много интересного: мы нашли несколько багов в .NET, оптимизировали некоторые функции во много раз, а некоторые лишь на проценты, что-то делали очень круто и с первого раза, а что-то у нас не получалось даже после нескольких попыток. Моя команда занимается разработкой и поддержкой языковых функций IDE, главная из которых автодополнение кода. Отсюда и название цикла статей. В каждой их частей я буду рассказывать несколько историй: некоторые об успехах, некоторые о неудачах.

            В этой части я сосредоточусь на проблемах парсинга SQL, борьбе с этими проблемами и ошибками допущенными в этой борьбе.


            Читать дальше →
            • +15
            • 2,7k
            • 16
          • podkolzzzin 29 июля 2019 в 11:26

            .NET – Tools for working with multithreading and asynchrony – Part 2

            • .NET,
            • ASP,
            • C#
              I have originally posted this article in CodingSight blog.
              It's also available in Russian here.


              This article comprises the second part of my speech at the multithreading meetup. You can have a look at the first part here and here. In the first part, I focused on the basic set of tools used to start a thread or a Task, the ways to track their state, and some additional neat things such as PLinq. In this part, I will fix on the issues you may encounter in a multi-threaded environment and some of the ways to resolve them.

              Contents


              • Concerning shared resources
              • Possible issues in multi-threaded environments
                • Deadlock
                • Race-Condition
                • Busy-Wait
                • Thread Starvation
              • Synchronization methods
                • Interlocked
                • Monitor.Enter, Monitor.Exit, lock
                • SpinLock, SpinWait
                • Monitor.Wait, Monitor.Pulse[All]
                • ReaderWriterLockSlim
                • The ResetEvent family
              • Conclusions

              Read more →
              • +5
              • 3,9k
              • 1
            • podkolzzzin 15 июля 2019 в 09:42

              .NET: Инструменты для работы с многопоточностью и асинхронностью. Часть 2

              • Системное администрирование,
              • .NET,
              • ASP,
              • C#
                Публикую на Хабр оригинал статьи, перевод которой размещен в блоге Codingsight.

                Я продолжаю создавать текстовую версию своего выступления на митапе по многопоточности. С первой частью можно ознакомиться здесь или здесь, там речь больше шла о базовом наборе инструментов, чтобы запустить поток или Task, способах просмотреть их состояние и некоторых сладких мелочах, вроде PLinq. В этой статье хочу больше остановится на проблемах, которые могут возникнуть в многопоточной среде и некоторых способах их решения.

                Содержание


                • О разделяемых ресурсах
                • Возможные проблемы при работе в многопоточной среде
                  • Deadlock
                  • Race-Condition
                  • Busy-Wait
                  • Thread Starvation
                • Средства синхронизации
                  • Interlocked
                  • Monitor.Enter, Monitor.Exit, lock
                  • SpinLock, SpinWait
                  • Monitor.Wait, Monitor.Pulse[All]
                  • ReaderWriterLockSlim
                  • Семейство ResetEvent
                • Выводы

                Читать дальше →
                • +10
                • 21,4k
                • 5
              • podkolzzzin 10 июня 2019 в 10:09

                .NET: Tools for working with multi-threading and asynchrony – Part 1

                • .NET,
                • Системное программирование,
                • ASP,
                • C#
                  I have originally posted this article in CodingSight blog
                  The second part of the article is available here

                  The need to do things in an asynchronous way – that is, dividing big tasks between multiple working units – was present long before the appearance of computers. However, when they did appear, this need became even more obvious. It is now 2019, and I’m writing this article on a laptop powered by an 8-core Intel Core CPU which, in addition to this, is simultaneously working on hundreds of processes, with the number of threads being even larger. Next to me, there lies a slightly outdated smartphone which I bought a couple of years ago – and it also houses an 8-core processor. Specialized web resources contain a wide variety of articles praising this year’s flagship smartphones equipped with 16-core CPUs. For less then $20 per hour, MS Azure can give you access to a 128-core virtual machine with 2 TB RAM. But, unfortunately, you cannot get the most out of this power unless you know how to control interaction between threads.
                  Read more →
                  • +4
                  • 16k
                  • 4
                • podkolzzzin 23 мая 2019 в 11:22

                  .NET: Инструменты для работы с многопоточностью и асинхронностью. Часть 1

                  • Системное администрирование,
                  • .NET,
                  • ASP,
                  • C#
                    Публикую на Хабр оригинал статьи, перевод которой размещен в блоге Codingsight.
                    Вторая часть доступна здесь

                    Необходимость делать что-то асинхронно, не дожидаясь результат здесь и сейчас, или разделять большую работу между несколькими выполняющими ее единицами была и до появления компьютеров. С их появлением такая необходимость стала очень ощутимой. Сейчас, в 2019, набирая эту статью на ноутбуке с 8 ядерным процессором Intel Core, на котором параллельно этому работает не одна сотня процессов, а потоков и того больше. Рядом, лежит уже немного потрепанный, купленный пару лет назад телефон, у него на борту 8 ядерный процессор. На тематических ресурсах полно статей и видео, где их авторы восхищаются флагманскими смартфонами этого года куда ставят 16ти-ядерные процессоры. MS Azure предоставляет менее чем за 20$/час виртуальную машину со 128 ядерным процессором и 2 TB RAM. К сожалению невозможно извлечь максимум и обуздать эту мощь не умея управлять взаимодействием потоков.
                    Читать дальше →
                    • +34
                    • 33,5k
                    • 5
                  • podkolzzzin 25 апреля 2017 в 12:16

                    В поисках быстрого локального хранилища

                    • Программирование,
                    • .NET,
                    • NoSQL,
                    • C#
                      Текст этой статьи также доступен на английском.

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

                      Читать дальше →
                      • +4
                      • 16,1k
                      • 22
                    • podkolzzzin 3 января 2017 в 17:23

                      Поиск утечки GDI объектов: Как загнать мастодонта

                      • .NET,
                      • Системное программирование,
                      • Отладка,
                      • Разработка под Windows
                      • Перевод
                      Строго говоря именно это оригинальный текст статьи, а в блоге уже перевод. Здесь статья публикуется чуть позже и только потому получает бирку перевод.

                      В 2016 году, когда большинство программ выполняются в песочницах, из которых даже самый некомпетентный разработчик не сможет навредить системе, странно сталкиваться с проблемой, о которой дальше пойдет речь. Если честно, я надеялся, что она ушла в далекое прошлое вместе с Win32Api, но недавно я с ней столкнулся. До этого я лишь слышал жуткие байки старых более опытных разработчиков, что такое может быть.

                      Проблема


                      Утечка или использование слишком большого числа GDI объектов.

                      Симптомы:


                      • В Task Manager на вкладке Details колонка GDI objects показывает угрожающие 10000(Если этой колонки нету, ее можно добавить, кликнув на заголовке таблицы правой кнопкой и выбрав пункт Select Columns)
                      • При разработке на C# или другом языке выполняемом CLR полетит исключение, не блещущее конкретикой:
                        Message: A generic error occurred in GDI+.
                        Source: System.Drawing
                        TargetSite: IntPtr GetHbitmap(System.Drawing.Color)
                        Type: System.Runtime.InteropServices.ExternalException

                        Также при определенных настройках или версии системы исключения может и не быть, но Ваше приложение не сможет нарисовать ни единого объекта.
                      • При разработке на С/С++ все методы GDI вроде Create%SOME_GDI_OBJECT% стали возвращать NULL
                      Читать дальше →
                      • +45
                      • 13k
                      • 21
                    • podkolzzzin 13 января 2015 в 22:40

                      Возможно, первая игра на Dart + Box2D

                      • JavaScript,
                      • Разработка игр,
                      • ВКонтакте API,
                      • Dart
                      • Из песочницы
                      На Хабре не слишком много статей, посвященных языку программирования Dart, зато полным полно статей о недоделанных или с трудом доделанных играх, а также о том, как из первых сделать вторые. Данная статья будет смесью этих двух тем.

                      Дело обстояло так: мы с моим старым другом уже не первый год занимаемся разработкой. Игра, о которой пойдет речь в статье, уже далеко не первая, которую мы пытались сделать, но первая, с которой это удалось. После почти десятка неудавшихся попыток сделать игру мы наконец-то смогли объективно оценить свои силы и решили сделать головоломку. Жанр игр сам по себе несложный, но то, что мы задумали, было куда сложнее и не похоже ни на одну из игр, представленных в каталогах ВК и ФБ в этом жанре. Для того, чтобы совсем не осталось шансов закончить игру, решили использовать те технологии, которые никогда в глаза не видели — Dart + Box2d.
                      Читать дальше →
                      • +16
                      • 11,6k
                      • 31

                    Информация

                    • В рейтинге 6082–й
                    • Активность 02.02.2021, 23:40
                    • Зарегистрирован 19 июня 2012 г.

                    Вклад в хабы

                    • .NET 132
                    • Разработка под Windows 75
                    • C# 57
                    • ASP 53
                    • Системное администрирование 44
                    • Системное программирование 40
                    • SQL 39
                    • Отладка 36
                    • Microsoft SQL Server 26
                    • ВКонтакте API 16
                    Пока никто не указал причину минусов
                    Причины минусов

                    Ваш аккаунт

                    • Войти
                    • Регистрация

                    Разделы

                    • Публикации
                    • Новости
                    • Хабы
                    • Компании
                    • Пользователи
                    • Песочница

                    Информация

                    • Устройство сайта
                    • Для авторов
                    • Для компаний
                    • Документы
                    • Соглашение
                    • Конфиденциальность

                    Услуги

                    • Реклама
                    • Тарифы
                    • Контент
                    • Семинары
                    • Мегапроекты
                    • Мерч
                    © 2006 – 2021 «Habr»
                    Настройка языка
                    О сайте
                    Служба поддержки
                    Мобильная версия
                    Настройка языка
                    Интерфейс
                    Язык публикаций