уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

В последнее время постить в блог становиться все сложнее и сложнее. С одной стороны — нехватка времени на то, чтобы сесть и расписать какую-нибудь тему так, чтобы стало понятно и интересно, а с другой — в последнее время я очень уж сильно отдалился от последних новинок Delphi и на данный момент использую в работе исключительно Delphi XE2 и постоянно переключаться с того, чем занимаюсь по работе на то, что мне лично было бы интересно — напрягает по-чище всяких дедлайнов. Вот я и решил в этом небольшом посте определить для себя некоторые идеи и цели до конца этого года, а заодно и пояснить то, почему работа будет построена именно так, а никак иначе. Не сомневаюсь, что предложенный ниже план работы не всем придётся по душе, но всем ведь и не угодить :). Если будут предложения и идеи по поводу предложений, изложенных ниже, то пишите в комментариях — обсудим.

Последние пару недель работы в Delphi я занимался, на мой взгляд, довольно интересной задачей — разрабатывал небольшой компонент Delphi для автоматической настройки почтовых аккаунтов пользователя. Подобные системы авто-настройки уже давным-давно реализованы, например, в том же Outlook — задаешь адрес почты, парольку и Outlook сам устанавливает параметры POP3/IMAP, SMTP, определяет можно ли использовать SSL и т.д. Вот и моим заказчикам потребовалась такая же фича в программе. Работать надо было исключительно с библиотекой Indy. Работу я, конечно, выполнил (надо сказать, что, в итоге, и самому понравилось как получилось :)), но в процессе работы с Indy я в очередной раз убедился в своем мнении о том, что с использованием Synapse работа была бы:

  • выполнена намного быстрее;
  • содержала бы намного меньше кода:
  • использовала бы меньше ресурсов.

Indy, конечно, хороша, но…Synapse лучше. Единственное, в чем может проигрывать Synapse — это в меньшем количестве информации по работе с этой библиотекой в Delphi. Вот я и решил немного восполнить этот информационный пробел и написать не просто небольшой пост про Synapse, а постараться дать целостное представление о том, что из себя представляет Synapse, как её можно использовать для решения самых разнообразных задач, в чем её преимущества по сравнению, например, с той же Indy и т.д. Естественно, что это уже будет не пост в блоге, а довольно объемный PDF и на его написание уйдет достаточно много времени (по моим оценкам, как раз до конца года). Я не ставлю в план рассказать о Synapse вообще все, например, как работать с ICMP, PGP, но показать работу с теми же HTTP, FTP, POP3, SMTP — вполне возможно и реально.

Предположительный план PDF-ки пока такой:

  1. Сокеты
    1. Виды сокетов (теория)
    2. Реализация сокетов в Synapse
      1. Свойства, методы и события сокетов
      2. Примеры работы с сокетами TCP (например, разработка эхо-сервера в Synapse)
      3. Пример работы с сокетом UDP
  2. Работа с HTTP-протоколом в Synapse
    1. Общие сведения о протоколе
    2. Анализ сообщений сервера
    3. Описание класса THTTPSend
    4. Примеры работы с THTTPSend (использование различных методов HTTP, работа с событиями, использование GZip и т.д.)
  3. Работа с FTP
  4. Работа с POP3
  5. Работа с SMTP
  6. Описание методов в модулях synautil, synacode и т.д.

Работу над частями про FTP, POP3 и SMTP я пока сильно не продумывал, но, предположительно, в них будет содержаться информация аналогичная той, что и в части про HTTP, т.е. небольшое введение про то, что это за протокол, как работает, где используется и т.д., описание соответствующего класса Synapse для работы с протоколом и примеры использования.

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

Конечно, в блоге есть также немало информации и про ту же FireMonkey или, как её сейчас снова переименовали — про FM Platform и можно было бы сделать попытку объединить все эти посты в один pdf, но этого я делать не планирую по нескольким причинам. В принципе, эти причины я (по моему мнению) достаточно корректно выразил в комментариях к статье про Delphi в одном из блогов из ленты DelphiFeeds.ru. Но то ли движок блога посчитал комментарий спамным (т.к. текста там было немало, хотя и без ссылок), то ли владелец блога посчитал, что я не был таким уж полит.корректным. В общем коммент мой так и не был опубликован. Поэтому постараюсь повторить его дословно здесь. Кто не согласен с моим мнением — прошу в комментарии :)

Итак, почему я не вижу сейчас смысла затевать процесс написания, если и не книги, то, хотя бы даже просто объемного справочника про FireMonkey FM Platform, а тем более привлекать к этой работе большую аудиторию. Причин тут несколько.

Причина номер один. С момента появления этой платформы в Delphi XE2 и до сих пор (а сейчас уже вышла Delphi XE5) платформа постоянно меняется и находится в каком-то (иногда совсем не понятном) движении. Вот начали мы коллективно писать про FM — расписываем какие классы есть, как работать со стилями, как использовать различные классы и где они находятся. Год пашем, собираем, расписываем. Выходит новая версия Delphi — в стилях снова что-то изменили, какие-то классы перенесли в другие модули, какие-то свойства классов вообще поменяли местами и т.д. и т.п. И что? Весь труд — в мусорную корзину, либо сидим и, матерясь себе под нос, актуализируем то, что поменялось…ИМХО несерьезно это. Понятно, что последние изменения в платформе (не считая исправления всяческих багов) были продиктованы, в первую очередь, необходимостью поддержки новых платформ — iOS и Android. Но писать в этих условиях что-либо крупнее статьи в блог, на мой взгляд, довольно рискованно с точки зрения затрат времени на работу.

Причина номер два. Касается того, о чем говорят с самого момента появления платформы, да и напрямую связана с причиной номер один — стабильность и качество. Не спорю, что по сравнению с первой своей версией FM стала качественнее, но, тем не менее, иногда, при работе над проектом для того же Android, хочется ругаться матом даже такому самоучке как мне :) Есть моменты, когда FM взаправду выручает и о подобном я как-то упоминал, но всё-таки дорабатывать FM разработчикам придётся ещё очень долго, а значит снова неизбежны маленькие и не очень изменения, доработки, корректировки и т.д.

Собственно, только этих двух причин достаточно, чтобы не бросаться с головой в омут и не начинать большую работу по части FM. Кстати, вот мне лично не понятны вот эти вот маркетинговые выкрутасы по поводу названия — то FireMonkey, то FMX, теперь вообще FM…в XE6 будет, видимо, F, а в XE7? Пустое место? :) Или придумают что-то пафосное типа «Одна платформа, чтобы владеть всеми»? Короче даже с названием не определиться, не говоря уже про содержание.

Не подумайте, что я противник продвижения FireMonkey в массы. Скорее напротив — я по мере сил и возможностей ковыряюсь в Delphi XE5 и пишу небольшой проектик для Android. Вполне возможно, что статьи на эту тему будут появляться в блоге. Выше я просто определил причины почему ничего кроме статьи (пусть и большой) про FM Platform в настоящее время писать не имеет смысла, если не хочется поработать N-ое количество времени на корзину. Кому очень нужна информация по текущей версии FM Platform, то на данный момент могу посоветовать новый цикл статей на Хабре про разработку приложения под Android.

А Synapse — это уже давным давно устоявшаяся, проверенная временем библиотека, про которую можно без опасений писать хоть трехтомники — даже если и происходят изменения в коде, то они очень не значительны и отловить эти изменения очень просто. А если учесть, что в планах Emabarcadero стоит поддержка Linux, а Synapse вполне себе комфортно используется на этой платформе, то, в принципе, и актуальность должна быть достаточной.

Ну и в заключение про то как будет распространятся PDF-ка. Скажу как есть. Когда поделился идеей с несколькими людьми из близкого окружения, то большинство советовало продавать, т.к. объем предполагается довольно большим и труд будет вложен не маленький. Но лично мне сейчас этот вариант не кажется перспективным и целесообразным. Поэтому я решил поступить так же как и со справочником по Ribbon Controls — как только работа будет закончена, то выложу файл в блоге для свободного скачивания и сделаю небольшое объявление. Если кто-то посчитает, что сей труд имеет какую-либо материальную ценность и может быть оплачен, то не проблема — в сайдбаре есть кнопочка для перевода пожертвований на кошелек Яндекс.Деньги. Кстати, спасибо всем, кто этой кнопочкой уже воспользовался :).

Вот, пожалуй и все, что касается дальнейших планов. Так что, в случае чего, не теряйте — в блог я захожу регулярно, чтобы ответить на комментарии, почистить спам и т.д. Если есть какие-то вопросы, пожелания, идеи по работе — пишите, буду рад с Вами пообщаться.

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
15 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
Александр
Александр
02/11/2013 01:45

Indy, конечно, хороша

Надеюсь это был сарказм :)

Константин
Константин
02/11/2013 02:37

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

Alex
Alex
03/11/2013 01:00

Влад, можешь подсказать по поводу синапса.
Есть приложение написанное на Lazarus+synapse.
Несколько потоков, каждый поток обращается через прокси к сайту.
В итоге в один прекрасный момент поток виснет. Как от этого избавиться?
Заранее спасибо за ответ

Alex
Alex
04/11/2013 04:07
Ответить на  Vlad

Спасибо влад.
У меня просто HTTPSend и у него Timeout в 30 сек стоит, хотя все равно зависает.
Алгоритм у потока примерно такой:
HTTP:=HTTPSend.Create;
HTTP.Timeout=30000;
HTTP ставим прокси
GET
POST
HTTP.Free;

Vladimir Srednikh
04/11/2013 02:52

А где бы вкратце почитать — в чем принципиальное (стратегическое/тактическое) отличие Synapse от Indy?

Kirill
Kirill
05/11/2013 05:31

Был бы рад увидеть в PDF-ке главу с советами по оптимизации обработки GET/POST запросов через Synapse для приложений, которые очень активно работают с сетью (миллионы запросов в сутки). Видимо в приложении что-то не совсем грамотно настроено и иногда в ОС что-то переполняется и все сайты вообще перестают открываться (а через какое-то время или посте перезагрузки всё снова работает). Информации в по этой теме в интернете совсем мало.

mopsicus.ru
05/11/2013 15:09

А Synapse разве работает с ХЕ5?

Denis Kiselev
06/11/2013 16:59

LeanPub — отличный способ публикации и продажи материала «в процессе». Не думаю, что прям много денег принесет, но дать народу возможность поддержать хорошее дело копеечкой — почему бы и нет?..