Как стать автором
Обновить
-3
0
olen @olen

Пользователь

Отправить сообщение

Watir: простой парсинг сложных сайтов

Время на прочтение4 мин
Количество просмотров51K
imageКаждый, кто пишет парсеры, знает, что можно распарсить сто сайтов, а на сто-первом застрять на несколько дней. Структура очередного отмороженного сайта может быть сколь угодно сложной, и, когда дело касается сжатых javascript-ов и ajax-запросов, расшифровать их и извлечь информацию с помощью обычного curl-а и регекспов становится дороже самой информации.

Грубо говоря, проблема в том, что в браузере работает javascript, а на сервере его нет. Нужно либо писать интерпретатор js на одном из серверных языков (jParser и jTokenizer), либо ставить на сервер браузер, посылать в него запросы и вытаскивать итоговое dom-дерево.

В древности в таких случаях мы строили свой велосипед: на отдельной машине запускали браузер, в нем js, который постоянно стучался на сервер и получал от него задания (джобы), сам сайт грузился в iframe, а скрипт извне отправлял dom-дерево ифрейма обратно на сервер.

Сейчас появились более продвинутые средства — xulrunner (crowbar) и watir. Первый — безголовый firefox. У crowbar есть даже ff-плагин для визуального выделения нужных данных, который генерит специальный парсер-js-код, однако там не поддерживаются cookies, а допиливать неохота. Watir позиционируется разработчиками как средство отладки, но мы будем его использовать по прямому назначению и в качестве примера вытащим какие-нибудь данные с сайта travelocity.com.

Читать дальше →
Всего голосов 79: ↑65 и ↓14+51
Комментарии74

AppStore. Как Bills for iPad стала №1 в США

Время на прочтение8 мин
Количество просмотров4.1K
Опыт от тех, кто создал самую продаваемую программу для iPad в США.

Есть много статей о том как зарабатывать деньги на мобильных приложениях в AppStore и Android market. Но сколько разработчиков реально были наверху? Наша программа Bills for iPad в период с 26 по 29 июня 2010 июня была самой продаваемой в AppStore в США программой для iPad.
image

Как зарабатывать в AppStore? Вот механизмы, которые доступны:
  • Продажа программ.
  • Внутренние покупки
  • Реклама

AppStore, по-моему мнению, нацелен именно на доходы от “продажи программ”. Два главных рейтинга, Топ самых скачиваемых программ (Top paid) и Топ самых доходных программ (Top grossing), раздел “новое”, а также разделы AppStore, где Apple выделяет новые интересные программы — все это мотивирует на создание новых, лучших продуктов. Отсюда такое громадное количество программ в магазине — свыше 300,000.
Читать дальше →
Всего голосов 97: ↑89 и ↓8+81
Комментарии33

OpenID, OAuth и другие плюшки

Время на прочтение10 мин
Количество просмотров24K

Зачем нужен OpenID



Вот бывает так, заходишь на сайт любимый, а там ссылка на другой сайт, а там статья ну очень интересная и главное – полезная – и хочется добавить комментарий, типа «Молодцы!» и чтобы добавить комментарий, нужно зарегистрироваться, а чтобы зарегистрироваться нужно ввести «Имя», «Фамилия», «Логин», «Email», «Email еще раз», «Пароль», «Снова Пароль», «Прочитал правила и согласен со всем что тут будет происходить» и «Капчу». И жмакаешь «Зарегистрироваться», а тут бац – «Логин» — занят, и поля «Пароль», «Снова Пароль», «Капча» — стерты. Ну вот так. Вводишь другой свой логин (который второй, и не главный и не любимый) и снова пароль, снова снова пароль (постите) и капчу, и бац – всё ок, только забыл снова поставить галку «Прочитал правила...». Ну ладно, прошел еще раз круги ада, на мыло вышло письмо, активировал аккаунт, так, а где там была статья, да и ну их, не молодцы они, ну т.е. молодцы ну и хрен с этим, знают и так.
Проведите эксперимент, в вашей любимой почте сделайте поиск по слову «activate» — вот примерно столько вы регистрировались на сайтах.
А с другой стороны думаешь, а давайте упростим, и делаешь простое добавление комментария: «Имя», «Email», «Сообщение» — причем «Email» можно не вводить. Через 3 месяца заходишь, а там – СПАМ! Ладно, почистил – и ноль эффекта, спам продолжает, добавил капчу – ну вроде ок, но потом снова как-то они ее обходят. И внимание(!) – вводим регистрацию… Ой!
Но есть (УРА!) – OpenID.
Читать дальше →
Всего голосов 79: ↑67 и ↓12+55
Комментарии21

Входите! Аутентификация без логина и пароля, v2

Время на прочтение4 мин
Количество просмотров7.6K
Раз оказалось, что аудитории небезразлична такая тема, как создание одноразовых (работающих в течение некоторого времени) ссылок, позволяющих идентифицировать пользователя.

А особенно в свете того, что я считаю подобное решение (которое я опубликую ниже) приемлемее — решил написать, как решение этой задачи вижу я:
Читать дальше →
Всего голосов 72: ↑54 и ↓18+36
Комментарии17

Входите! Вход без логина и пароля

Время на прочтение8 мин
Количество просмотров20K

Кто виноват?


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

Вот некоторые примеры таких ситуаций:
  • Ссылка на активацию аккаунта только что зарегистрированным пользователем.
  • Ссылка на восстановление пароля.
  • Приглашение (возвращение) на сайт пользователя, который давно не заходил.

В каждом из этих случаев нам нужно создать для пользователя некий ключ и добавить его в URL, отправленный в письме.
Читать дальше →
Всего голосов 98: ↑82 и ↓16+66
Комментарии78

WPF 4.0 — Отображение текста

Время на прочтение1 мин
Количество просмотров3.9K
Возможно, для многих этот топик не окажется откровением, но я лично узнал об этом совсем недавно. Однако, многим начинающим разработчикам он может быть полезным.

Как известно, с самого рождения WPF болел проблемами с отображением текста. Особенно это было заметно на не крупных шрифтах (подписи к кнопкам, Labels, ListBoxes итд.) Однако, с выходом версии 4.0 Microsoft серьезно переработали вывод текста и добавили несколько полезных attached properties.

Я не буду останавливаться подробно на рассмотрении всех свойств, а приведу лишь короткий рецепт, как сделать, чтобы ваши контролы в WPF форме отображались с четким текстом. Подчеркну, что он применим к ситуации, когда вы используете стандартные контролы без особых трансформаций, анимаций и огромного текста.

Итак, достаточно добавить следующее свойства в элемент вашего окна:

<Window TextOptions.TextFormattingMode="Display" ...... />


Результат можно приблизительно увидеть здесь (по клику полное изображение):



Приблизительно, потому что скриншот полностью не отображает разницы, на работающем приложении все заметно гораздо лучше.

Для тех, кто хочет подробнее почитать про рендеринг текста в WPF 4.0 есть замечательный блог посвященный исключительно этой теме: WPF Text Blog. Очень советую почитать вот этот пост: blogs.msdn.com/b/text/archive/2009/08/24/wpf-4-0-text-stack-improvements.aspx

UPD: Коллега посоветовал интересный пост тему рендеринга текста: www.codinghorror.com/blog/2007/06/font-rendering-respecting-the-pixel-grid.html
Всего голосов 47: ↑33 и ↓14+19
Комментарии8

Objective-C для C# разработчиков

Время на прочтение5 мин
Количество просмотров20K
«Если единственный язык, который вы знаете — это Java или C#, я не думаю, что вы профессиональный программист — вы как молодой плотник, который пока работал только с одним видом дерева.»
Дядя Боб


Несколько месяцев назад я начал разрабатывать приложения для iPhone. Переключение с платформы .NET и C# на Cocoa и Objective-C проходило не без приключений, но было достаточно интересным и познавательным. Скоро мне предстоит помогать осваивать новую платформу и другим разработчикам нашей компании. Поэтому решил написать серию вводных заметок, которые, надеюсь, сделают этот переход более плавным.

Читать дальше →
Всего голосов 81: ↑75 и ↓6+69
Комментарии106

Тормозит веб-сервер. Настройка на примере www.ochevidets.ru

Время на прочтение8 мин
Количество просмотров28K
Я оказываю услуги по настройке web- и БД-серверов. На днях ко мне обратился Иван Усачёв — владелец портала ochevidets.ru с просьбой избавить сайт от торможения.

Страницы в пиковое время стали долго загружаться, вплоть до 5 минут на страницу.

UPDATE: Статья была написана в 2010 году. Кое-что изменилось: вышли новые версии программ, у nginx изменились некоторые директивы и появились новые. Учитывайте это.

Ниже я опишу, что я предпринял для решения проблемы.
Всего голосов 197: ↑153 и ↓44+109
Комментарии407

Заголовок Last-Modified, Symfony и ускорение поисковой индексации

Время на прочтение5 мин
Количество просмотров38K
Многие разработчики при создании сайтов забывают про очень полезный заголовок Last-Modified, благодаря которому можно оптимизировать загрузку web-страниц и облегчить работу поисковым роботам. Далее я постараюсь восполнить этот досадный пробел.
Читать дальше →
Всего голосов 29: ↑27 и ↓2+25
Комментарии25

Генератор надежных и запоминаемых паролей на Javascript

Время на прочтение3 мин
Количество просмотров16K
image
Представляемый генератор паролей создает относительно легко запоминающиеся и, в тоже время, трудноподбираемые пароли. Основная идея состоит в том, что пароли генерируются на основе слогов и поэтому выглядят как слова или словосочетания. Для лучшего запоминания используются заглавные буквы в начале каждого слога.

Проект на Google.Code:
code.google.com/p/jspassgen/downloads/list
Пример работы можно посмотреть здесь:
бизнес-книги.рус/ext/jspassgen/example.html
Читать дальше →
Всего голосов 58: ↑47 и ↓11+36
Комментарии59

Несколько фишек для изучающих английский язык

Время на прочтение1 мин
Количество просмотров48K
1. Анонимные чаты: omegle.com, chatroulette.com
2. Сайты-помощники: kwiz.me, kimir.org, englishtips.org
3. Подкастинг: eslpod.com, effortlessenglish.com, npr.podcast.com, businessenglishpod.com,
4. Качаем фильмы/сериалы, затем субтитры к ним. Просматривать можно с замедлением в VLC плеере чтобы лучше переваривать. Еще рекомендую комик шоу, например Important Things with Demetri Martin — не пожалеете.
5. В скайпе ищем каких нибудь индусов со статусом SkypeMe и не стенсняясь знакомимся.
6. При прочтении какой-то книги или просмотра фильма неплохо бы подготовится таким образом: берем текст, устанавливаем длину слова и частоту употребления в тексте и запускаем, например, этот скрипт (PHP): pastebin.com/m7672c2a9
В итоге имеем дайджест слов большинство из которых вы уже знаете но остальные стоит подучить. И когда вы будете смотреть фильм или читать книгу вы автоматом поймете это слово.
7. Произношение слов — ставим в Google.translate режим Русский->English и в поле текста пишем английское слово — оно без перевода встанет справа вместе с флэшкой которое произносит слово. Также forvo.com, howjsay.com
8. Социальные сервисы ответов:
answers.yahoo.com, vark.com
9. Социальные сети для изучения языка:
livemocha.com, lingq.com, italki.com
10. Остальное:
nytimes.com, ecenglish.com, urbandictionary.com
allengl.narod.ru/top/phvTOP170.htm

Надеюсь каждый нашел для себя что-то полезное:)
Всего голосов 190: ↑171 и ↓19+152
Комментарии114

apache+nginx+gzip_static+yuicompressor

Время на прочтение6 мин
Количество просмотров15K
В этой статье я опишу принципиальные различия Apache и Nginx, архитектуру фронтэнд-бэкэнд, установку Apache в качестве бэкэнда и Nginx в качестве фронтэнда. А также опишу технологию, позволяющую ускорить работу веб-сервера: gzip_static+yuicompressor.
Читать дальше →
Всего голосов 117: ↑109 и ↓8+101
Комментарии71

Бесплатный VPN от Amazon

Время на прочтение2 мин
Количество просмотров124K
Под хабракатом я расскажу вам, как при помощи нескольких простых действий получить себе практически бесплатный VPN в штатах:
Читать дальше →
Всего голосов 248: ↑239 и ↓9+230
Комментарии317

Опубликованы новые материалы по WPF

Время на прочтение2 мин
Количество просмотров3.8K
image

Коллеги,

Мы рады сообщить, что сегодня обновили центр по .Net Framework на MSDN, который теперь содержит много новых материалов о Windows Presentation Foundation на русском языке. Windows Presentation Foundation (WPF) ― это система следующего поколения для построения клиентских приложений Windows с визуально привлекательными возможностями взаимодействия с пользователем. С помощью WPF можно создавать широкий спектр как автономных, так и размещенных в браузере приложений. В основе WPF лежит векторная система визуализации, не зависящая от разрешения и созданная с расчетом на возможности современного графического оборудования. WPF расширяет базовую систему полным набором функций разработки приложений, в том числе Язык XAML (Extensible Application Markup Language), элементами управления, привязкой данных, макетом, двухмерный- и трехмерный-графикой, анимацией, стилями, шаблонами, документами, мультимедиа, текстом и оформлением. WPF входит в состав Microsoft .NET Framework и позволяет создавать приложения, включающие другие элементы библиотеки классов .NET Framework.

Читать дальше →
Всего голосов 66: ↑51 и ↓15+36
Комментарии27

Эволюция юнит-теста

Время на прочтение5 мин
Количество просмотров27K
Много слов сказано о том, как правильно писать юнит-тесты, и вообще о пользе TDD. Потом ещё и какое-то BDD замаячило на горизонте. Приходится разбираться, что из них лучше и между ними какая разница. Может, это и есть причина, почему большинство разработчиков решили не заморачиваться и до сих пор не используют ни того, ни другого?

Коротко: BDD — это дальнейшее развитие идей TDD, стало быть, его и надо использовать. А разницу между TDD и BDD я попробую объяснить на простом примере.

Рассмотрим 3 ревизии одного юнит-теста, который я нашёл в одном реальном проекте.

Попытка номер №1


Первая версия этого юнит-теста была такой:
Читать дальше →
Всего голосов 88: ↑84 и ↓4+80
Комментарии68

Objective-C с нуля

Время на прочтение23 мин
Количество просмотров435K
У любого желающего писать программы для продукции фирмы Apple в жизни наступает такой момент, когда ему приходиться изучить новый язык программирования — Objective-C. Когда-то этот счастливый момент постиг и меня. А чтобы лучше запомнить основные особенности этого языка, решил законспектировать свои мысли во время осмысления его документации, которыми и делюсь с вами.
Читать дальше →
Всего голосов 163: ↑155 и ↓8+147
Комментарии61

Авторизация пользователей через Mail.Ru API: большой эффект маленькой кнопки

Время на прочтение5 мин
Количество просмотров30K
Привет, с вами снова команда Платформы@Mail.Ru!

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

Настало время поговорить о других возможностях Mail.Ru API, возможностях более тесной интеграции сайтов с социальной сетью. И, конечно же, дело снова не обойдется без кейсов – уже кейсов независимых проектов с реальными показателями эффективности.

Поехали!
Читать дальше →
Всего голосов 93: ↑60 и ↓33+27
Комментарии58

XPath наглядно

Время на прочтение1 мин
Количество просмотров60K
XPath является одним из ключевых моментов на дороге к пониманию XSLT. И на первых порах хочется получить какой-нибудь простой способ поэкспериментировать с ним, чтобы в деталях разобраться, как он работает. Способа такого, впрочем, не наблюдается. Приходится или качать совсем не бесплатные XML/XSLT редакторы, или довольствоваться статичными картинками с zvon.org. Может быть, я плохо искал. Но с моей колокольни все обстоит именно так. И когда передо мной в очередной раз встала задача «Объяснить XSLT», в голове и родилась идея крохотного сервиса. После того, как все заработало, было решено выкатить его для всеобщего пользования: наверняка не я один сталкивался с похожими проблемами.
Читать дальше →
Всего голосов 100: ↑93 и ↓7+86
Комментарии35

Новичкам в программировании под Mac/iPhone: смотрите видеоролики от эпла под Маком — сможете увидеть субтитры! (а также несколько самых важных ссылок)

Время на прочтение2 мин
Количество просмотров6.8K
По моему мнению, осваивать новые фреймворки при программирования под айфон (и, возможно, под мак) крайне удобно, посмотрев про них видеоролики, лежащие бесплатно в iTunes University (каждый длиной около часа, их штук 50). После просмотра видеоролика в голове создается четкая картина, что с чем связано и как что вызывает, какие у классов есть возможности, и после этого достаточно reference, что встроен в Xcode, чтобы посмотреть прототипы методов и имена свойств. IMHO, без этих видео, используя лишь reference и guide и примеры, разобраться в том же фреймворке на порядки сложнее и дольше (особенно во всяких, связанных с видео и аудио).

Все время смотрел эти видеоролики на айфоне во время поездок на транспорте (ну и иногда под виндой, используя quicktime player v 7.6.6 — это практически текущая версия). Недавно первый раз запустил проигрывание видеоролика под макосью, и по доброму офигел — у них, оказывается, есть субтитры на английском! Это крайне удобно для тех, кто плохо понимает английский на слух.

UPD: На айфоне и айпэде субтитры тоже можно включить!!! Ткните на кнопку слева от слайдера уровня громкости.

Надеюсь, кому-то это поможет (особенно тем, кто еще не имеет комп с макосью, но подумывает о разработке под айфон и знакомится с документацией).

Ну и любезно предоставленная коллекция ссылок для начинающих от xzDeveloper — что почитать, что посмотреть (в порядке удаления от первоисточника):
Всего голосов 65: ↑49 и ↓16+33
Комментарии46

Информация

В рейтинге
Не участвует
Откуда
Киев, Киевская обл., Украина
Дата рождения
Зарегистрирован
Активность