Опубликовал
Vlad 16 октября 2011 в 11:08.
Категории: Delphi в Web, Основы Delphi.
Сегодняшняя тема, думаю, будет интересна в первую очередь тем, кто связан с программированием сетевых приложений. Про работу с JSON в Delphi я уже несколько раз рассказывал в блоге и приводил примеры того как можно разбирать различные JSON-объекты. Но во всех примерах я рассматривал работу лишь с одной из библиотек для работы с json в Delphi - SuperObject.
Но не стоит забывать и про то, что в Delphi существуют свои родные механизмы работы с JSON, которые содержатся в трех модулях: DBXJSON.pas, DBXJSONCommon.pas и DBXJSONReflect.pas. В этих трех модулях можно найти достаточно много полезных и интересных классов и методов. Если Вы никогда не слышали об этих модулях, то эта статья как раз для Вас.
Читать далее »
Опубликовал
Vlad 21 сентября 2011 в 02:53.
Категории: Delphi в Web.
Неделя прошла, можно сказать, не зря. Одним из главных событий неделю для меня стало то, что все-таки заставил себя залезть в мануалы по Delphi, немного подготовиться и пройти тест в Delphi Certification Program. Экзамен сдал, сертификат получил - осталось распечатать в цвете и повесить на стенку =).
В остальном, что касается Delphi - идей по чести Delphi XE2 громадьё, а времени сейчас практически нет. Но, тем не менее, сегодня у меня вынужденный отдых от работы - заболел. И пока болею решил потратить время с пользой - решить некоторый проблемы по части работы с Google OAuth 2.0., которые частично были указаны в комментариях к одному из постов, посвященных этой теме. Читать далее »
Опубликовал
Vlad 9 сентября 2011 в 14:54.
Категории: Delphi в Web.

Вообще, озвученный в теме поста вопрос так или иначе задавался мне в разных ситуациях, разными людьми раз эдак 10 точно =). Чаще всего ответом на вопрос была страничка с документацией по интерфейсу, реже - краткий пересказ той же документации. Единственное, что я никак не мог предоставить - это пример, когда при авторизации ну никак нельзя использовать другие параметры в запросе за исключением HOSTED.
Действительно, для большинства API Google нам вполне достаточно использовать HOSTED_OR_GOOGLE или даже просто GOOGLE в параметрах URL и навскидку дать пример, когда авторизация провалится или не пройдет запрос к ресурсам API даже при верном пароле...скажем так - не просто. Однако буквально на днях я столкнулся именно с такой ситуацией - при уже пройденной авторизации API никак не желал отдать мне сведения по запросу.
Вот я и решил опубликовать небольшую заметку и привести пример, когда имеет смысл использовать параметр HOSTED. Ну, а чтобы ответ был понятен даже самому, что ни есть новичку в работе с Google API в Delphi, я постараюсь дать ответ самым подробнейшим образом. Читать далее »
Опубликовал
Vlad 31 августа 2011 в 07:24.
Категории: Delphi в Web.
В одном из постов в блоге я рассказывал про новый класс в проекте "Google API в Delphi" для авторизации в API по протоколу OAuth 2.0.
По большому счёту модуль для OAuth создавался для того, чтобы использовать его в API, которые не поддерживают ClientLogin (в основном это новые API из Лаборатории). Но после известных событий в самом Google (см. "18 API Google псу под хвост…") этот модуль как-то затерялся, забылся т.к. тратить время над API, которые в любой момент могут быть объявлены несостоявшимися как-то не хотелось. Сегодня я решил снова вернуться к теме использования OAuth в Google и написать небольшой компонент Delphi, которые, наряду с уже имеющимися компонентом GoogleLogin позволит авторизовываться в любых API Google вне зависимости от того находится ли этот API в лаборатории или это стабильная версия, например, как Google Docs API 2.0.
Чтобы не повторяться дважды и не рассказывать об устройстве OAUth 2.0 для проектов гугла, советую Вам прочитать предыдущий пост на эту тему, тем более, что демка для компонента будет таже самая. Читать далее »
Опубликовал
Vlad 7 августа 2011 в 01:13.
Категории: Delphi в Web, MSDN.
В одном из последних постов я рассказывал о том как в Delphi XE можно сформировать дерево каталогов и документов Google для своей программы. Сегодня продолжим немного начатую тему.
Если вы зайдете в свой аккаунт Документов Google и посмотрите на иконки загруженных документов, то заметите, что для каждого документа Google присваивает одну из своих иконок. Если же Google "не понимает" формат документа (например, если Вы загрузите в аккаунт архив rar), то документу присваивается дефолтная иконка. Но Windows-то знает намного больше форматов файлов и, соответственно мы можем сделать дерево документов Google в нашей программе ещё более красивым и удобным. Вот этим мы сегодня и займемся.
Похожий компонент мы когда-то начинали писать с SeregaAltmer'ом, но тема заглохла и до релиза компонент не дожил, поэтому сегодня я постараюсь довести начатое дело до конца и предоставить Вам уже готовый к использованию компонент для отображения иконок документов в дереве. Читать далее »
Опубликовал
Vlad 4 августа 2011 в 20:46.
Категории: Delphi в Web.
В последнее время (а это практически месяц) мне пришлось очень плотно работать с библиотекой Indy, в частности с несколькими её компонентами для работы с HTTP-протоколом. Использование другой библиотеки не обсуждался в принципе, т.к. переписывать весь код уже достаточно большого проекта только из-за того, что мне не нравится Indy никто бы и не стал. Да я и не просил. Опыт лишним не бывает.
Поэтому я с головой влез в дебри модулей последней версии Indy и начал активно разрабатывать свою часть проекта. И, кстати, могу сказать, что в большинстве случаев "глючность" Indy решается простым непринужденным выпрямлением рук и чтением мануалов по библиотеке. Indy не идеальная библиотека, есть и проблемы с её работой (с некоторыми встречался, про другие просто слышал), но в целом для выполнения повседневных задач типа отправить/получить запрос по http/https, провести base-аутентификацию и т.д. библиотека вполне подходит. Как знают мои постоянные читатели, несколько раз я упоминал в своем блоге на ряду с прочими компонентами для работы в Сети библиотеку ICS (Internet Component Suite) и даже некоторое время назад переписал модуль для API Twitter с Indy на ICS версий 5 (этого модуля в доступе нет) и 7. То бишь маленький, скромный, но тем не менее опыт использования ICS имеется.
И вот в процессе работы над текущим проектом у меня родилась мысль-идея - написать статью, которая поможет совсем уж неопытным в деле работы с HTTP-протоколом в Delphi программистам разобраться в различиях, преимуществах, особенностях и недостатках двух библиотек - Indy и ICS. Поэтому в этой статье я постараюсь обойтись без "тыканья палкой с гвоздями" в разработчиков библиотек (это незачем) и ограничиться только рассмотрением фактов. Итак начнем. Читать далее »
Опубликовал
Vlad 23 июля 2011 в 12:03.
Категории: Delphi в Web.
Итак, пришло время поставить точку в работе с одним из классов библиотеки
Synapse –
THTTPSend. Большинство постов, касающихся работы с
HTTP-протоколом в
Delphi связано с использованием этого замечательного класса.
В разное время, в разных ситуациях я освещал в блоге работу с только с одним или несколькими свойствами THTTPSend, избегая при этом рассмотрения работы класса в целом. Но теперь, когда рассмотрены практически все доступные свойства класса, когда приведены необходимые примеры работы, например с теми же proxy или gzip в Synapse, думаю, что не плохо было бы свести всю эту информацию в один большой объединяющий пост. Лишним такая информация явно не будет, тем более, что Вы сможете в любое время сохранить эту статью в pdf и получить небольшой оффлайн-справочник по работе с HTTP в Synapse.
Читать далее »
Опубликовал
Vlad 9 июля 2011 в 13:07.
Категории: Delphi в Web.

Продолжаю копаться в Google Documents List API. И сегодня на повестке дня – работа с деревом каталогов и документов Google Docs. В силу того, что список документов Google представляет собой ни что иное как хранилище данных GData или, говоря проще, большую базу данных, этот список имеет ряд особенностей в плане расположения и структурирования данных нежели простой каталог с документами на жестком диске компьютера.
В чем принципиальное отличие? Дело в том, что как и в любой базе данных, любую запись в хранилище Google можно однозначно идентифицировать по ключу. В Google Docs ключом может выступать как Resource ID (идентификатор ресурса) так и уникальное значение – ETag. И это обстоятельство дает нам такую редко используемую на практике, но тем не менее возможность, как создание на одном уровне вложенности нескольких документов или папок (коллекций) с одним и тем же названием, что. как известно, невозможно сделать стандартными средствами той же ОС Windows. Например, можно создать вот такую структуру коллекций документов:
Читать далее »
Опубликовал
Vlad 7 июля 2011 в 03:35.
Категории: Delphi в Web.
Как быстро пролетела первая неделя отпуска :). Последние три дня так вообще махом потому как довольно плотно “завис” над API Google Docs и обновлениями в блоге. Ну, с обновлениями познакомлю всех немного позже, как только все эти обновы заработают в полную силу, а пока по теме поста.
Итак, сам по себе API Google Docs (он же API списка документов Google) по сложности не отличается от многих других API Google – те же данные в формате XML, те же GET, POST, PUT-запросы, однако серьезные различия есть в объемах перекачиваемых данных. Одно дело, когда мы качаем из Сети XML-файл размером в 200-300 Кб, а другое – когда вместе с этими данными нам надо получить файл или наоборот – забросить в аккаунт файл объемом, скажем, в несколько мегабайт. А если канал слабый? А ну как “заглючит” чего-нибудь в момент аплоада? Подводных камней достаточно и надо их как-то обходить, искать решения. А с последним обновлениям сервиса так вообще все пользователи получили возможность закачивать в аккаунт файлы любых форматов. Благо разработчики API предусмотрели такую замечательную возможность как возобновляемые загрузки (resumable upload). Вот над этой возможностью я и работал последние три дня. Причем пришлось реализовывать работу сразу с двумя библиотеками – Indy и Synapse.
Читать далее »
Опубликовал
Vlad 27 июня 2011 в 18:24.
Категории: Delphi в Web.
Раз пошла такая тема, то сегодня речь пойдет про ещё один способ экономии трафика и повышении скорости работы с HTTP при использовании Synapse в Delphi. О том, как сэкономить немного трафика при скачивании web-страничек из Сети я рассказывал, когда рассматривал события сокета в Synapse, но этот способ выгодно применять кода необходимые нам данные находятся как можно ближе к началу страницы – тогда экономия есть и прирост скорости работы тоже наблюдается. Но использование события сокета не дает никакого эффекта, когда надо скачать страницу целиком. И в этом случае на помощь нам приходит использование GZip. При использовании GZip с Synapse мы имеем возможность сэкономить до 75% и более трафика, а соответственно и значительно ускорить работу наших программ для работы с Сетью.
Прежде, чем перейдем к рассмотрению примеров использования GZip в Synapse, рассмотрим несколько общих моментов по использованию сжатия в принципе.
Читать далее »
« Предыдущая страница
Свежие комментарии