Ещё один пост об использовании библиотеки MSHTML и размышления на тему того, что лучше использовать – регулярные выражения или DOM? Вчера я рассказывал о том, как получить адрес RSS-канала для сайта с использованием библиотеки MSHTML. В работе использовались, как и в большинстве случаев с DOM в Delphi, IHTMLDocument2, IHTMLElement и IHTMLElementCollection. Для обработки тегов HTML-документа часто больше ничего и не требуется использовать. Однако для работы с мета-тегами трех этих интерфейсов может и не хватить. Например, если Вы решите с помощью них определить, что находится в атрибуте Content мета-тега, содержащего кодировку сайта, то ничего не выйдет. Рассмотрим простой пример
Наши проекты
Delphi+Google
Chrono
ODFProc
Поддержка блога
А тут я коплю на лицензию Delphi XE на iPad =).
Сумма пожертвования не фиксирована.
Публикации
Год назад
Случайный пост
Последние
Сообщения форума
Комментарии
Опрос
Хотел было назвать пост как-то типо “Текучка”, но потом подумал, что сие название не отразит суть написанного, поэтому переименовал в то, что есть, но по большому счёту – это обычная текучка.
Родилась у меня тут одна мысль по поводу повышения удобства работы с “Пинговалкой”, а именно сделать возможность автоопределения параметров нового проекта, таких как название сайта, ключевые слова, адрес RSS-канала и т.д., т.е. того, что сейчас вручную заносится пользователем. Смысл просто – задаем только адрес главной страницы, жмем кнопку, программка скачивает главную страничку и парсит её в поисках необходимых значений, что не смогли найти автоматом – вбиваем ручками. В принципе задача достаточно тривиальная. Например, про то, как вытаскивать значения различных тегов из HTML-документа я писал чуть ли не два года назад, но возникла небольшая проблемка с относительными ссылками в элементах link документа. Поясню в чем суть.
Готовится к выходу обновленная версия программы “Пинговалка”. За время, прошедшее с момента выхода последней версии программы, было много исправлено, дописано, удалено кода. Причин для подготовки новой версии было как минимум две: обращение пользователей программы и вторая причина – я решил заняться рефакторингом проекта, в результате чего проект кое в каких местах “похудел” иногда даже значительно. Есть идея добавить в программу пару новых “фишек”, но когда дойдут руки до внедрения новых функций в программу пока не ясно. Пока могу лишь сказать, что в ближайшее время постараюсь выложить в доступ обновление “Пинговалки”. Если есть предложения по каким-либо новым функциям в программе, или заметили ошибки в работе о которых не сообщалось здесь – пишите. А пока поговорим немного о работе с SQLite в Delphi.
Оказывается Google открыл в своей лаборатории ещё два API: Tasks API (управление списками задач) и API для оптимизаторов – Online Page Speed.
Что касается первого API, то для Delphi он пока без вариантов, т.к. в работе надо использовать на выбор одну из трех библиотек – Java, Python или PHP (по-моему первый API гугла. где можно использовать PHP прямо “из коробки”). Можно было бы поторчать немного и портировать одну из библиотечек под Delphi, но весна->сессия->заморочки. Поэтому решил пока посмотреть второй API. Жаль конечно, что нельзя использовать IP*Works для работы с API (у меня только базовый вариант без SSL) так бы можно было глянуть работу с JSON.
Сегодня решил немного расширить свой кругозор по части различных компонентов Delphi XE для работы с Сетью. На данный момент в блоге имеется некоторая информация по таким библиотекам как Synapse (в основном пользуюсь этой библиотекой), Indy и ICS. По последним двум информации не так уж и много, как хотелось бы, т.к. практически ими не пользуюсь. Так же есть немного информации и по WinInet.
Недавно наткнулся на набор компонентов IP*Works. Не скажу, что я вообще не знал о их существовании, знал, но в работе никогда не использовал. Сегодня решил все-таки взглянуть на IP*Works и узнать в чем фишка этого набора компонентов. Но обо все по порядку.
В статье “Частичное скачивание web-странички с помощью Synapse” я рассказывал о том, как можно использовать событие сокета OnReadFilter для фильтрации трафика и частичного скачивания странички сайта. Способ достаточно прост, но наравне с простотой имеется также и ряд недостатков о которых я упомянул в конце статьи. Сегодня рассмотрим способы частичного скачивания файлов любого типа. Вы множество раз сталкивались с таким способом скачивания, используя тот же ReGet – когда весь объем файла разбивается на несколько секций и в многопоточном режиме выкачивается с сервера.
У THTTPSend в Synapse есть два свойства в которых можно задавать начало и окончание диапазона данных, которые необходимо получить от сервера, однако есть несколько моментов, которые следует рассмотреть прежде, чем начинать активно использовать байтовые диапазоны в Synapse.
Недавно в блоге проводилось голосование на тему “Какой формат электронных книг (для ПК) Вы считаете наиболее удобным?”. Здесь имелись в виду книги для программистов, в основном использующих Delphi. На выбор было предложено 4 формата: exe, flash, pdf и chm. В голосование длилось до набор 300 голосов и самое большое количество голосов получил PDF (231 голос 300). Думаю, что результат оказался вполне закономерным, так как PDF достаточно удобный формат – имеет относительно не большой размер, для чтения имеется множество софта самого разного покроя. Не менее и популярны программы для создания PDF.
Если Ваша работа в Сети подразумевает публикацию электронных книг, статей в формате PDF и т.д., то перед Вами стоял или до сих пор стоит вопрос о том, чем лучше всего воспользоваться для генерации PDF? Действительно, софта для генерации PDF огромное количество. Есть как бесплатные так и относительно недорогие платные решения. Каждая программа имеет свои достоинства и недостатки. Сегодня я решил рассмотреть только пять способов создания PDF файлов с которыми я сталкивался при работе над справочником.
Думал-думал как назвать пост. а потом решил – пусть будет заголовок как рекламный слоган, что-то типа “А теперь в новой упаковке и 20% дешевле!” и всё такое.
Долго думал, чтоб такого-разэдакого прикрутить к блогу, а тут вдруг появляется предложение о том, чтоб собрать pdf-ку. Идея, конечно, заманчивая. Но, те, кто долго и упорно ждали-ждали и наконец-то дождались справочника по Ribbon, наверное помнят какой промежуток времени прошел с того момента как я взялся за работу над справочником до момента, когда я его анонсировал в блоге? Поэтому я решил с одной, что с одной стороны, было бы не плохо дать читателям дополнительную возможность почитать блог в так сказать альтернативном варианте, а с другой…а другой стороны-то пока и нету :). Так что пока расскажу, что и как работает, а дальше посмотрим, что выйдет из этой моей новой затеи.
Собственно, как и говорил в прошлом посте, на данный момент при появлении свободного времени я изучаю возможности рефакторинга в Delphi XE. Этот пост, как и пост по Git, является чем-то вроде моей онлайн-шпаргалки и, думаю, что будет полезен тем, кто хочет узнать в общих чертах, что предлагает нам Delphi XE в плане рефакторинга наших с Вами проектов.
Прежде всего стоит определиться с тем, что такое рефакторинг в принципе. В принципе, на данный момент, я понимаю под словом “refactoring” улучшение кода программы с целью его (кода) наилучшего понимания. Можно это определение корректировать, уточнять, но суть останется та же - улучшение.
В своем блоге я уже несколько раз затрагивал тему IDE и рассказывал про некоторые из инструментов в RAD Studio. Например, рассказывал об инструменте History и его возможностях, затрагивалась тема использования ToDo-List, а также подробно рассмотрел работу с Code Formatter. Последний обзор получился достаточно большой на целых раз, два поста в блоге и плюс добавления касательно Delphi XE. Было и ещё несколько заметок.
Очевидно, что по сравнению с предыдущими версиями RAD Studio XE приросла и ещё рядом “вкусностей” для разработчиков, в т.ч. и поддержкой Subvrsion. И у меня возник такой вот простой вопрос к читателям блога: а какие инструменты RAD Studio Вы используете наиболее часто или вообще постоянно?
Ведь кто бы и что ни говорил, каждый использует в IDE только то, что ему необходимо или, на крайний случай, только то, о чем он знает. Например, кому-то хватает за глаза Ctrl+Space, Ctrl+Shift+C, другому подавай Model Maker и прочие “навороты”, а третий даже и не в курсе, что у него под рукой находится Code Formatter.
Форму голосования я оставлю внизу поста и в сайдбаре, а пока перечислю те инструменты RAD Studio XE, которые я использую наиболее часто, а также те, возможности которых я познаю о мере необходимости и наличия свободного времени.






Свежие комментарии