Pull to refresh
21
0
Ermak @Ermak

User

Send message

Дао Вебсервиса. (Или да хватит же изобретать велосипеды!)

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

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

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

Кто не испугался суровых реалий - вперед

51 Веб Приложение для Дизайнеров и Разработчиков

Reading time11 min
Views13K
Веб дизайн и разработка претерпели значительные изменения в течении последних лет, точно так же изменились используемые технологии и инструменты. Эти изменения придали жизнь таким инструментам, которые сделали нашу жизнь проще, и дали возможность предоставлять нашим клиентам более качественные услуги. Коммуникации и совместная работа на огромных расстояниях уже не проблема и управление проектом стало весьма простой задачей.

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

Данная статья представляет 51 веб приложений для дизайнеров и разработчиков.
Идем дальше...

Создаём правильный «мокрый пол» c перспективой изображения на Javascript

Reading time1 min
Views1.9K
В контексте одного из моих текущих проектов была поставлена задача сделать «мокрый пол». Картинок на пол планировалось класть огромное количество (но всего по паре на страницу, с заменой). В перспективе. В перспективе, кстати, временной и пространственной.

Не найдя ничего стоящего, я взялся написать свой велосипед. И, по-сидев два с лишним вечера, сочинилась небольшая js-библиотека с generic-названием iWet.

UPD: Версия 0.2
  • Добавил белую маску. См. Демо.
  • Выложил исходик маски в .psd
  • Вылечил баг с мельканием картинки при загрузке страницы
  • Добавил readme.txt и licence.txt
  • Минимальные косметические изменения кода

Плюсы, минусы и примеры следуют

Map/Reduce: решение реальных задач — TF-IDF — 2

Reading time3 min
Views14K
Продолжая статью “Использование Hadoop для решения реальных задач”, хочу напомнить, что в прошлой статье мы остановились на том, что посчитали такую характеристику как tf(t,d), и сказали, что в следующем посте мы будем считать idf(t) и завершим процесс вычисления значения TF-IDF для данного документа и термина. Поэтому предлагаю долго не откладывать и переходить к этой задаче.

Важно заметить, что idf(t) не зависит от документа, потому как считается на всем корпусе. Это нетрудно увидеть, посмотрев на формулу:



Вероятно, она нуждается в некоторых пояснениях. Итак, |D| это мощность корпуса документов — иными словами, просто количество документов. Мы знаем его, поэтому считать ничего не надо. Знаменатель же логарифма — это количество таких документов d которые содержат интересующий нас токен t_i.

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

Map/Reduce: решение реальных задач — TF-IDF

Reading time6 min
Views21K
Вчера я задал вопрос в своем ХабраБлоге — интересно ли людям узнать, что такое Hadoop с точки зрения его реального применения? Оказалось, интересно. Дело недолгое — статью я написал довольно быстро (по крайней мере, ее первую часть) — как минимум, потому, что уже давно знал, о чем собираюсь написать (потому как еще неплохо помню как я сам тыкался в поиске информации, когда начинал пользоваться Hadoop). В первой статье речь пойдет об основах — но совсем не о тех, про которые обычно рассказывают :-)

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

Что такое Hadoop?




Ну скажите, какой смысл об этом писать? Уже не раз это проговаривалось, неоднократно начинали писаться посты на тему Hadoop, HDFS и прочая. К сожалению, обычно все заканчивалось на довольно пространном введении и фразе “Продолжение следует”. Так вот: это — продолжение. Кому-то тема, затрагиваемая в этой статье может показаться совершенно тривиальной и неинтересной, однако же лиха беда начало — любые сложные задачи надо решать по частям. Это утверждение, в частности, мы и реализуем в ходе статьи. Сразу замечу, что я постараюсь избежать написания кода в рамках этой конкретной статьи — это может подождать, а понять принципы построения программ, работающих с Map/Reduce можно и “на кошках” (к тому же с текущей частотой кардинального изменения API Hadoop любой код становится obsolete примерно через месяц).

Когда я начинал разбираться с Хадупом, очень большой сложностью лично для меня стало первоначальное понимание идеологии Map/Reduce (я предпочитаю писать это словосочетание именно так, чтобы подчеркнуть, что речь идет не о продукте, а о принципе). Суть и ценность метода станет понятна в самом конце — после того, как мы решим несложную задачу.
Читать дальше →

Кто есть кто в облаках, часть 2

Reading time6 min
Views976
Вторая, заключительная часть опроса разработчиков, который провела Evans Data Corp.
Рейтинги поставщиков по масштабируемости, надежности, времени отклика, независимости от вендора и соотношению цена/качество.
подробности

Распределенная файловая система GFS (Google File System)

Reading time14 min
Views28K
В настоящее время, в условиях роста информации, возникают задачи хранения и обработки данных очень большого объема. Поэтому эти данные обрабатывается сразу на нескольких серверах одновременно, которые образуют кластеры. Для упрощения работы с данными на кластерах и разрабатывают распределенные файловые системы. Мы подробно рассмотрим пример распределенной файловой системы Google File System, используемую компанией Google. (Статья является, фактически, вольным и урезанным переводом оригинальной статьи ).
Читать дальше →

Вечеринки знакомств

Reading time2 min
Views2.3K
Всем доброго пятничного вечера!

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

image

Итак, идея.
Началось все, как обычно бывает, с проблемы, с который сталкивался каждый из нас и не раз, я уверен. Вопрос — где познакомиться с девушкой или молодым человеком — стоит у всех остро. Сайты знакомств меня мало устраивают — не хочу тратить много времени на переписку, тем более что адекватность людей и после переписки остается под вопросом. Знакомиться, что называется, в реале, не хватает банально времени.
Читать дальше →

Видеоверсия лекции Андрея Могина об инвестировании в стартапы

Reading time1 min
Views774
imageВ Минске в рамках курса «IT-предпринимательство», который устраивает бизнесинкубатор БГУИР, прошла лекция Андрея Могина, соавтора книги IPO от I до O, известного специалиста по инвестициям и оценке стоимости компаний.
Андрей Могин — управляющий партнер фонда Genesys Asset Management, один из ведущих экспертов в СНГ по управлению стоимостью компании. Автор обучающего курса для компании Intel по финансированию инноваций, автор курсов по венчурному финансированию и инновационному менеджменту.

Лекция была посвящена практическим вопросам инвестиций в стартапы.
Материалы выкладывать нельзя, однако видеоверсию можно посмотреть.
Это уже вторая лекция в рамках курса.

Первую лекцию читал Юрий Зиссер, однако она была посвящена в большей степени истории TUT.by как стартапу. Среди прочего Ю.А. сказал, что потратил на тут бай 62 тысячи долларов.
(видеоверсия лекции Ю.А. Зиссера)

Использование 7zip для бэкапа данных

Reading time2 min
Views199K
Для наступления полного и тотального счастья в плане бэкапов информации на рабочем сервере решил отказаться от Acronis True Image в пользу обычной архивации данных с помощью 7-Zip.

Для выполнения поставленной задачи естественно использовал консольную версию архиватора.
Читать дальше →

Вычисляем плохих ботов

Reading time1 min
Views2.9K
image
Это ничуть не руководство к действию, а только лишь некоторые мои умозаключения, которые не являются истиной в последней инстанции.
Итак, давайте рассмотрим ситуацию, когда по сайту лазят боты и занимаются там разными неприглядными делами: сканируют, спамят через формы, грабят контент и так далее. Но по сайту могут пройтись и хорошие роботы — с поисковых систем, которых обижать нельзя. Необходимо определить плохих ботов и заблокировать их.

Итак, ряд простых, но полезных советов

Java-головоломка: Капитализация слов в строке за одно java-выражение

Reading time2 min
Views6.3K
Представляю вашему вниманию небольшую головоломку по Java.
Это реальная задача, возникшая передо мной и коллегами в процессе разработки и имеет вполне оправданное применение.

Итак, условие:
Необходимо реализовать ОДНИМ выражением Java (конечно же, используя только стандартные библиотеки) задачу по капитализации слов произвольной строки.

То есть, что-то вроде этого:
String strOrig = "строка с большим количеством слов";
String strRes = <.. тут какое-то выражение ..>;
assert strRes.equals("Строка С Большим Количеством Слов");

Наше решение головоломки оказалось очень интересным и я решил предоставить сообществу возможность предложить свои пути решения данной задачи.
Жду ваших предположений!

Результаты мозговой деятельности под катом
Читать дальше →

Вышли Java/Python SDKs 1.2.6

Reading time2 min
Views635


Поддержка входящей почты — на данный момент поддерживаются лишь почтовые адреса вида: whatever@yourappid.appspotmail.com. Возможно через 1-2 релиза появится поддержка собственных доменов, как и в случае с XMPP; так, по крайней мере, было обещано разработчиками в чате с ними.
Подробнее: java, python.

Возможность временного отключения/удаления приложения — первое полезно, например, в случае шибко сильного ДДОСа, при этом все данные сохраняются, как и оно само, отключаются лишь входящие/исходящие запросы. Если приложение было удалено, повторно использовать AppID будет невозможно. При удалении оно ставится в очередь и удаляется через пару суток, судя из моей попытки. Т.е можно отменить удаление, если что.

Статистика по хранилищу — супер функция, вернее целое API, которое позволяет посмотеть общее количество обьектов, размер хранилища, количество обьектов модели и т.д. и т.п. Причем возможно посмотреть стату в админке с картинками, а можно получить в приложении через запрос к хранилищу.
Подробнее: java, python.

Далее мой анализ неанонсированных фич в коде PythonSDK

Ненормальное программирование. Разработка IF игр

Reading time6 min
Views20K

Разработка игр



Кто не мечтал попробывать разработать собственную игру. Мы будем создавать игру в стиле interactive fiction Сюжет я взял на сайте одной из систем программирования RTADS. Система локализована на русский язык и содержит полный набор средств и руководств для программирования. Но… Программировать мы будем в другой системе Inform7 Она мне больше нравится, т.к. я люблю английский. Итак сюжет.

Сюжет


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

Создание расширения FireFox для начинающих

Reading time8 min
Views49K
В данной статье представлена пошаговая инструкция по разработке простейшего расширения для FireFox.
Это частичный перевод оригинальной статьи.

Это не моя статья, а моего друга (его мыльце: templar8@gmail.com). Он очень хочет попасть на Хабр. У меня самого не хватает кармы для инвайта.
Текст статьи

Полная визуализация интернет-аналитики

Reading time4 min
Views6.2K
Приступая к этим заметкам, пересмотрел хрестоматийный ролик «1984», которым компания Apple в свое время ярко противопоставила себя миру серости и занудства, под которым тогда подразумевались персональные компьютеры IBM.
Именно такие ассоциации порождает стартап Webvisor (Вебвизор). Он предлагает не просто принципиально новый подход к интернет-аналитике. Среди всех подобных систем он выделяется яркостью и наглядностью, противопоставляющими себя определенному занудству отчетов интернет-счетчиков, хотя бы и не похожих на Большого Брата. Подход WebVisor основан на детальном визуальном анализе поведения каждого посетителя.

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

OCR online

Reading time3 min
Views5.7K
С технологией оптического распознавания текста я познакомился где-то в 1997 года, когда купил свой первый, тогде ещё ручной, чёрно-белый сканер Genius ScanMate 256 (кстати, всё ещё рабочий). К сканеру прилагалась программа Direct OCR на 3х дюймовой дискете (блин, откуда-то из подсознания все эти названия всплывают), которая всеми своими силами пыталась доказать, что можно быстро и почти без ошибок текст из книги ввести в компьютер. Ну, доказательства были не очень. FineReader, с которым я познакомился позже, делал это качественнее. Тема распознавания меня заинтересовала, я потратил довольно много времени на научно-популярные статьи о технологиях OCR.

В 2001 году я готовил дипломную работу по web-технологиям. Долго думал о том, куда приложить знания. Поскольку меня интересовала технология OCR, я задумал совместить WEB и распознавание текстов. За само распознавание у меня должен был отвечать FineReader. С друзьями мы «разобрали» FineReader на отдельные DLL и выяснили, как вызывать отдельные функции этих библиотек, передавая двоичные данные изображений, и как получать обратно распознанный вариант текста. Над этим всем был построен простейший веб-интерфейс, чтобы загружать картинки, запускать распознавание и получать результат.
Читать дальше →

Как заработать деньги на торговых автоматах

Reading time4 min
Views5.4K
imageЗнаете ли вы, что общего у терминала по приёму платежей в подземном переходе, гандономата в Лавке Студии Лебедева, и кран-машины, вокруг которой толпятся ребятишки, в надежде вытянуть мягкую игрушку? Всё это — вендинговые автоматы.

Вендинг — это продажа товаров и услуг с помощью автоматизированных систем (торговых автоматов). Вендинг получил широкое распространение в мире, как удобный и не очень требовательный способ вести торговлю или оказывать услуги. В 2001 объём вендинга в США составил $24,34 млрд. В Японии — около $60 млрд (самый большой в мире). (Wikipedia)

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

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

Линус Торвальдс о GIT на Google Talks [видеоперевод 8 частей]

Reading time1 min
Views4.2K
Два года назад Линус Торвальдс рассказал представителям Google об использовании GIT (распределённой системы контроля версий) для ядра Linux. Посчитав, что многие могут пропустить эту интересную лекцию по причине незнания языка, я осмелился озвучить её по-русски.



а так же плейлист целиком.
пояснения...

Java: Socks 4 Proxy работа с неблокирующими сокетами

Reading time21 min
Views24K
Начиная с версии 1.4 в j2se появился package java.nio, который позволяет работать с сокетами в неблокирующем режиме, что зачастую повышает производительность, упрощает код и даёт дополнительные возможности и функционал. А начиная с версии j2se 1.6 на серверах под упралением ОС линукс(kernel 2.6) реализация класса Selector выполнена с использованием epoll, что обеспечивает максимально возможную производительность.

В примере описанном ниже я постараюсь продемонстрироватьь основные принципе работы с неблокирующими сокетами, на примере вполне реальной задачи – реализации Socks 4 прокси сервер.
Описание и исходный код

Information

Rating
Does not participate
Location
Герцлия, Тель-Авив, Израиль
Registered
Activity