Публикации от Семен Хмелев

Список из рекордов на коленке

Честно подсмотрено.THeader = record x,y,z: TMyRecordField; NextLabel: packed record end;end; На сколько прекрасно, на столько и отвратительно. Но восхищает однозначно хотя бы тем, что это вообще Читать на сайте автора.

Читать на сайте автора.

Парное_программирование VS ревью_кода

 Данная заметка — реакция на статью http://alexnesterov.com/code-review/, где практика code review рассматривается как антипаттерн, а парное программирование как способ решить задачи ревью кода правильно. Конечно же, у парного программирования Читать на сайте автора.

Читать на сайте автора.

Почему тип анонимных функций не всегда полезен или о проблема присвоения reference to типу неанонимных функций

Сегодня снова об особенностях анонимных функций.Два предыдущих поста: Просто баг в коде или особенность счетчика ссылок в замыканиях Немного про замыкание ( Одно замыкание на несколько анонимных функций в одном контексте)   У типа анонимный функций есть замечательная возможность. В качестве обработчика можно присваивать не только анонимные функции, но и обычные методы и статические функции. […]

Читать на сайте автора.

Просто баг в коде или особенность счетчика ссылок в замыканиях

MyObject.OnEvent := procedure() begin MyObject.OnEvent := nil; MyField.MyProp := ‘Value’; end; Оказывается на MyObject.OnEvent := nil; счетчик ссылок у класса замыкания скрутится в 0 и замыкание отойдет в мир иной, а на следующей строчке привет AV. Читать на сайте автора.

Читать на сайте автора.

Что дал переход с SVN на Git или Git как ключ для синергии хороших практик

    Год назад мы в проекте выполнили переход с SVN на Git. Нас привлекали возможности бранчевания и работы с репозиторием без сети. «Сарафанное радио» регулярно доставляло сообщения о преимуществах модели распределенных систем контроля ревизий. В итоге, переход себя полностью оправдал, и Git раскрыл множество прекрасных возможностей, о которых во время перехода даже не подозревали. […]

Читать на сайте автора.

Об альтернативе Application.ProcessMessages для TWebBrowser и разрыве стека выполнения

  При использовании TWebBrowser существуют две неприятности, во-первых, это сам TWebBrowser =), а во-вторых, это Application.ProcessMessages, который необходимо выполнять чуть ли не на каждое действие (загрузить документ, сменить режим редактирования и т.п).  Использование Application.ProcessMessages может вызывать неожиданные проблемы. Особенно это актуально, когда используются оконные windows сообщения для разрыва стека выполнения. Но нашелся способ, которое позволяет […]

Читать на сайте автора.

Жизнь и восстановление после StackOverflow

Распространено мнение, что StackOverlow — это приговор. Все, что остается приложению — это красиво схлопнуться, не оставив возможности пользователю продолжить работу, сохранить важные данные, и даже информацию об ошибке. Дальше я расскажу, зачем и как можно обрабатывать ошибку переполнения стека, а так же какую «свинью» подложила EurekaLog — инструмент, который должен был обеспечивать нас информацией […]

Читать на сайте автора.

Немного про замыкания

Наверное для тех кто постоянно использует замыкания не будет новостью. Но вот осознал, что может существовать только одно замыкания для какого то конкретного контекста. То есть, анонимных функций может быть несколько, но анонимный класс для контекста создается один. В этом легко убедиться: program closuretest;{$APPTYPE CONSOLE}{$R *.res}uses System.SysUtils;procedure Test;var i: Integer; m: string; proc, proc2: TProc;function […]

Читать на сайте автора.

Delphi Event bus

Решились на работе поддержать Delphi сообщество и начать выкладывать в open source собственные наработки.  Первой ласточкой суждено было стать пакету DelphiEventBus — реализация паттерна проектирования Event Bus.   В Jаva мире есть такие пакеты как guava-libraries, но в Delphi ничего похожего найти не удалось. Потому решено было запилить нечто подобное.  Из статьи Java event bus library comparison можно выцепить характеристики библиотек реализующих шину […]

Читать на сайте автора.