• LogParser — привычный взгляд на непривычные вещи

      Когда я в очередной раз использовал LogParser, то чтобы проникнуться и чужим опытом, ввел его название в поиск на Хабре. Как результат — сообщение «Удивительно, но поиск не дал результатов». Вот уж воистину удивительно, когда столь интересный инструмент обойден вниманием. Пришла пора восполнить этот пробел. Итак, встречайте LogParser. Маленькая, но чертовски полезная утилита для любителей SQL.

      Из названия инструмента, казалось бы, очень непросто понять, что он делает в разделе SQL. А правда заключается в том, что он такой же LogParser, как и ChartGenerator. В то смысле, что он справляется с обоими задачами с одинаковыми успехом. В целом я бы его охарактеризовал как SQL-процессор гетерогенных данных. Концепция работы в общем такова, что он берет данные из некоторого формата и преобразует их в табличный вид (собственно говоря, только на этом этапе и выполняется иногда парсинг). Затем, посредством выполнения над этими табличными данными некоторого SQL-запроса формирует таблицу с результатом и сохраняет ее опять же в некотором формате. Если коротко, то цепочка выглядит как подготовка входных данных->SQL-процессинг->генерация выходных данных.
      Читать дальше →
    • Дао Вебсервиса. (Или да хватит же изобретать велосипеды!)

        image Недавно на Хабре была опубликована статья под провокационным заголовком и призывом к прекращению изобретений велосипедов в API-строении. Поскольку тема мне интересна, то я просто не мог пройти мимо.
        Увы, реальность за хабракатом меня сильно разочаровала — я увидел очередной велосипед, да еще и с квадратными колесами. (Коллеги, ничего личного, только техническое обсуждение.) Правда, авторы честно сказали, что увидели на нескольких сайтах модное слово REST и решили сделать по нему. Только вот поняли они этот «РЭСТ» по-своему, примерно как Дед Щукарь читал и понимал толковый словарь.
        В этом топике я призываю по-настоящему покончить с велосипедами в API сайтов. Ведь получается какой анекдот: АПИ разрабатывается для упрощения доступа к сайту и легкости подключения внешних систем, а получается такой, что с ним еще сложнее, чем без него :)

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

        В повествовании будут рассмотрены следующие вопросы:
        1. Базовые технологии: XML-RPC, REST, SOAP и краткое сравнение
        2. Дао вебсервиса
        3. Просветленные API
        4. Как отличить сайтовое API от говна
        5. Выводы

        Кто не испугался суровых реалий - вперед
      • ...And Justice for All

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

          «Последней каплей» стал курс Justice Гарвардского университета, который ведет профессор Майкл Сандел. Лекции посвящены вопросам политической философии, справедливости и правам человека. Это пока один из немногих курсов, выложенных в открытый доступ Гарвардским университетом, но, на мой взгляд, лучший как по техническому исполнению, так и по уровню подачи материала среди всего, что есть в интернете. Политическая философия едва ли имеет отношение к IT-тематике, но я думаю, хабралюдям будет полезно узнать, каким может быть качественное дистанционное образование. Я с удовольствием посмотрел все 12 часов лекций.



          Читать дальше →
        • Комбинатор неподвижной точки

            Когда мне впервые задали вопрос о том может ли существовать функция вида Func<Func<T,T>,T> без использования конструкций вида default(T) он поверг меня в глубокий когнитивный диссонанс.
            Как может существовать функция у которой неоткуда взять значения? Об очевидном варианте
            T Fix<T>(Func<T,T> func){
               return func(Fix(func));
            }
            я не мог даже подумать. Разве возможно делать такие функции? Она будет вызываться бесконечно и не даст результата. В языках типа C# такая конструкция и правда вызовет зацикливание, но вполне может работать в языках вроде питона или хаскеля. Сейчас будет немного кода на Haskell, надеюсь синтаксис будет более-менее понятен всем.
            Читать дальше →
          • Создаём страницы-«заглушки» для своих сайтов

            • Translation
            Страницы-«заглушки»Если вы купили домен, а сайт ещё не запустили, то решить, что делать с ним — это довольно непростая задачка. Оставить начальную страницу вашего регистратора или стандартную страницу хостинга? Оба варианта выглядят, по меньшей мере, непрофессионально. Особенно, если вы собираетесь попиарить свой новый проект, рассказать о нём. В то же время, вы не хотите тратить слишком много времени для создания временной страницы, т.к. вам нужно работать над самим проектом.

            Лучший выход из ситуации — создать простую страницу-«заглушку», которая будет рассказывать посетителям, что здесь, в конечном счёте, появится. Хорошая страница-«заглушка» может быть двух вариантов: информационная страничка, которая просто расскажет, что здесь будет после запуска; или страница, которая предлагает посетителям подписаться на уведомления или оставить запрос на бета (или альфа) тестирование. Ниже вы увидите несколько отличных примеров обоих типов, следуя которым, вы сможете создать свою такую страницу-«заглушку». Разумеется, среди них вы не увидите обычных страниц «В разработке» (с надоевшим дизайном), которых целая куча в сети.
            А теперь подробнее и с примерами...
          • Мы слишком много раз это уже проходили

              Ничто не предвещало (преамбула)


              Приходит посредник (или представитель заказчика), приносит концепцию (почти всегда гордо именуемую ТЗ) и просит оценить фронт работ в человеко-часах или баксо-рублях. После просмотра предоставленного документа я прикидываю, что работа займет около x (икс) недель и будет стоить примерно y (игрек) денег. Оценочная прикидка, ничего более. При оценке учитывается, что ТЗ (концепция) штука достаточно расплывчатая, чтобы при его уточнении можно было бы упихать функциональности раз в 5 больше, чем нарисовано изначально и сам проект выше среднего по сложности, причем не социальщина какая-нибудь, а программно-аппаратный комплекс взаимодействующий ещё и со сторонними приложениями. Оценки высылаются запросившему. В ответ приходит письмо с просьбой расписать чуть подробнее. Опускаюсь на уровень ниже выделяю какие-то наиболее существенные подпроекты, высылаю. Получаю замечательный ответ: «Вы просите так много, что я даже не буду показывать это заказчику.» Где-то рядом крутится смайл с ВОТ ТАКИМИ глазами.
              фабула
            • Разница в восприятии сайтов


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

                Некоторое время назад, наша компания — www.eye-tracker.ru — провела тест на главной странице русскоязычного сайта известной CMS Друпал – www.drupal.ru Задачей теста было найти ссылку на демо-сайт этой CMS. В качестве испытуемых бралось две группы по 5 человек – «компьютерщики» и «менеджеры». Обе группы не имели отношения к сайтам и не работали с CMS.
                Читать дальше →
              • Не очередной XSS фильтр

                  Что есть Cross Site Scripting? Об этом читайте на Википедии :)

                  Но знайте — во всем виноват браузер. Не важно: поддержиивает ли он HTML5 или до сих пор не понимает PNG прозрачность. Ну так как клиент всегда прав, то я расскажу как правильно фильтровать базар контент.

                  Приступим
                • Почему я люблю copy-paste при написании кода?

                    Не только люблю, но и всячески советую использовать этот подход. “Избегайте copy-paste любыми возможными способами!” – сколько раз я это слышал – столько-же раз умилялся. Если начать расспрашивать автора подобных заявлений об этих самых “всех возможных способах”, получите типичную жевачку про “паттерны проектирования” и инкапсуляцию.

                    Всё дело в том, что сразу писать программу паттернами проектирования не имеет никакого практического смысла.
                    Читать дальше →
                  • Инструменты быстрого прототипирования

                    • Translation
                    Прототипы, как инструменты дизайна, находятся на подъёме, и вот почему. Я твёрдо верю, что прототипирование помогает нам в процессе создания качественных пользовательских интерфейсов. Мы работаем в мире богатых, обладающих динамикой интерфейсов пользователя как в сети, так и на наших устройствах. Интерфейсы, которые мы создаём, интерактивны, откликаются на воздействие пользователя и обладают эмоциями. Прототипы позволяют сформулировать чувства и функции дизайна так, как этого не могут сделать простые экранные формы. Но как выбрать лучший инструмент прототипирования для работы?
                    Много текста. Читать дальше
                  • Азбука WEB-разработчика

                    • Translation
                    Небольшой список, самых, на мой взгляд, полезных сайтов для любого WEB-разработчика, интересующегося сферой веб дизайна, верстки и программирования. Думаю каждый среди этого списка найдет для себя сайты, которые надолго войдут в его ленту RSS.

                    AA List Apart




                    A List Apart содержит лучшие советы и мнения от лидирующих умов индустрии.
                    Читать дальше →
                  • Список полезных инструментов для CSS разработчика

                    • Translation
                    Это не попытка создать список всех существующих инструментов для CSS разработки. Только некоторые, наиболее полезные были отобраны и размещены в соответствующих категориях.


                    Чтобы инструмент был по-настоящему полезен, у него должна быть хорошая документация и дружелюбный интерфейс. К сожалению, некоторые инструменты в списке не полностью попадают под данные критерии. Если кто-то знает лучшие альтернативы с более дружелюбным интерфейсом и большей функциональностью, пишите в комментариях.
                    Читать дальше →
                    • +161
                    • 67.1k
                    • 65
                  • Mac OS X в эмуляторе QEMU под Linux

                      Здравствуйте хабровчане. Недавно понадобилось писать на Objective C под Mac OS X. Железо у меня не самое подходящее для всяких сборок, да и сидеть полностью в этой ОС религия не позволяет. Решил поставить Mac OS X в на виртуальную машину Qemu в Linux.
                      Читать дальше →
                    • Cargo — платформа для портфолио

                        Cargo

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

                        Cargo — это платформа (CMS) для веб-публикаций и организации сообществ, в настоящее время находящаяся в стадии разработки и тестирования. Она полномочна для создания различных творческих сообществ в сфере образования, дизайна, исследований, и концептуального искусства.

                        Читать дальше →
                      • Flex 3 vs. Silverlight 3 в Enterprise разработке

                        • Translation

                        Мы видим изобилие статей по сравнению Flex и Silverlight, но я так и не увидел, ни одного слова про сравнение обеих технологий со стороны enterprise разработки. Многие люди, которые профессионалы во Flex цитируют основы, но в корпоративной среде это не должно быть основным доводом, а только одним из фактов, который повлияет на ваше решение.
                        Читать дальше →
                      • Поиск нечетких дубликатов. Алгоритм шинглов для веб-документов

                          Ранее я показал элементарную реализацию алгоритма шинглов, позволяющую определять, являются ли два документа почти дубликатами или нет. В этот раз я поясню реализацию алгоритма, описанную Зеленковым  Ю. Г. и Сегаловичем И.В. в публикации «Сравнительный анализ методов определения нечетких дубликатов для Web-документов».
                          Этим я начинаю серию из трех теоретических статей, в которых постараюсь доступным языком описать принцип алгоритмов шинглов, супершинглов и мегашинглов для сравнение веб-документов.
                          Читать дальше →
                        • Где наша бизнес-логика, сынок?

                          • Translation
                          Спасибо небу за то, что в субботу шел дождь, и я это прочитал (а вы скажите спасибо за то, что перевел). В воскресенье, однако, светило солнце и форматирование текста было отложено.

                          Отдельное спасибо автору, за разрешение отдельной публикации.

                          Крайне занятная статья о том, что такое бизнес логика и где ей жить. Статье, кстати, уже три года. А я нередко встречаю системы, где код от данных не отделен. Может привести к реальному холивару.

                          не поддайся темной стороне силы usernаme
                        • Face Detection на джаве — это просто!

                            Спешу поделиться с вами своею радостью :) Столкнулся я тут недавно с задачкой — нужно было определить местонахождения лиц на картинке.

                            Зачем это нужно — другой вопрос: мне, лично, понадобилось для создания модели распределения внимания по картинке, а кому-то, может быть, нужно для того, чтобы людей как в фейсбуке автоматически на групповой фотографии выделять.

                            Алгоритмы, в принципе, неплохо известны. Одним из лучших является алгоритм Viola & Jones, но поиск готовых имплементаций результатов не принёс. Было расстроился, но обратил внимание на замечательную нативную библиотеку — OpenCV. Библиотека ценна не только реализацией основных алгоритмов компьютерного зрения, но тем, что встречается решительно на всех платформах.

                            И что же вы думаете? Одним из первых в гугле выпадает вот такой замечательный проект JNI интерфейса к OpenCV!

                            Несколько минут закачки, десяток минут чтения документации с установкою программы, и ещё десяток — написание теста. А потом, и вот этими четырьмя строчками, просто берём и распознаём на картинке лица!

                            OpenCV cv = new OpenCV();
                            cv.loadImage("test.jpg", 300, 400);
                            cv.cascade("haarcascade_frontalface_default.xml");
                            Rectangle bounds[] = cv.detect();

                            Читать дальше →
                          • Implementing FSM

                              В статье рассказывается о разработанной автором миниатюрной Java библиотеке, позволяющей коротко и наглядно определять конечные автоматы. Библиотека, назовем ее AkerFSM, доступна в Google Code.
                              В первой части статьи сформулированы предпосылки и требования к библиотеке. Во второй части приводится абстрактный пример использования библиотеки. В третьей части рассмотрены важные моменты устройства самой библиотеки. Четвертая часть посвящена рассмотрению упрощенного примера из реальной жизни, в котором с помощью конечного автомата задается поведение одного из контроллеров в GWT-приложении.

                              Читать дальше →