Search
Write a publication
Pull to refresh
8
0
Игорь Штельмах @WebPhd

User

Send message

Парсим русский язык

Reading time8 min
Views71K

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

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

"Мама мыла раму":

(предложение
    (именная гр. (сущ мама))
    (глаг. гр. (глаг мыла)
        (именная гр. (сущ раму)))
    (. .)))


Это называется синтаксическим деревом предложения. В графическом виде его можно представить следующим образом (в упрощенном виде):

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

Самоорганизующиеся команды

Reading time5 min
Views9.4K
Я работаю в одной молодой консалтинговой компании, которая специализируется на вопросах личной эффективности. В отличие от многих других компаний, которые берут и пытаются применять чьи-то готовые техники, мы разработали свою методологию и свой собственный концепт, который называется Энерджи Менеджмент. Сам концепт Энерджи Менеджмента станет предметом следующей статьи, а сегодня мы затронем вопросы эффективности с точки зрения организации команд, дав в качестве примера две известные компании, которые уже упоминались на хабре, и которые так же как и мы не стали брать готовые шаблоны развития, а сделали что-то свое и с нуля. В следующих статьях я планирую рассказать непосредственно о нашем концепте Энерджи Менеджмент, и его принципиальных отличиях от Тайм-Менеджмента.
Читать дальше →

Автомасштабирование в Amazon Web Services: EC2 + CloudWatch

Reading time4 min
Views15K
Добрый день!

Настройка автомасштабирования на основе Amazon EC2 это очень интересная задача, которую я когда-то решил и теперь применяю на практике. Существует много возможных вариантов, но я рассмотрю самый простой из них: горизонтальное масштабирование одного сервера под одним балансировщиком.

В качестве инициатора маштабирования будет выступать Cloud Watch. Метрикой будет наша кастомная метрика Load Average.

Итак, начнём-с. Первое, как тру линуксоид, я советую и рекомендую использовать в настройке автоскейлинга утилиты командной строки (Command Line Tools — CLT) по следующим причинам:
  • из CLT можно сделать всё;
  • удобнее копипастить в консоль, чем кликать мышкой.

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

Были получены исходники 3300 глобальных интернет-проектов

Reading time5 min
Views279K
Пару месяцев назад нами (2Товарища и Антон Исайкин) была обнаружена уязвимость, присущая в основном большим интернет-проектам (вроде Рамблера, Мейла, Яндекса, Оперы и пр.). Удалось получить доступ к файловым структурам известнейших сайтов (в общей сложности 3320 сайтов) и в ряде случаев их полные исходные коды.
Читать дальше →

Плакат «Современные веб-стандарты»

Reading time1 min
Views44K


Готовясь к конференции DevCon'12 и, помня о Тостере по JavaScript, который проходил буквально на следующий день, мы решили, что было бы очень здорово сделать что-то полезное информационное для веб-разработчиков.

Как результат, родился плакат по современным веб-стандартам, вернее, как это принято в мире веб-разработки, черновик плаката, в который мы включили, как нововведения в самой спецификации HTML5:
Читать дальше →

OAuth на практике. Аутентификация и авторизация пользователей сайта через популярные социалки

Reading time14 min
Views347K
Думаю, не мне одному чрезвычайно надоели ресурсы, требующие регистрации по каждому поводу и без. С обязательной капчей, которая правильно введется только с пятого раза, с подтверждением по е-мейлу, которое обязательно свалится в спам и то — только через сутки. Придумывать каждый раз новую пару логин-пароль — забудется, вводить одно и то же на всех сайтах — небезопасно. Местами прокатывают пары вида «qwerty:qwerty» или «login:password», но, увы, далеко не везде. Надоело. Не счесть, сколько раз я, увидев надпись «только зарегистрированный пользователь может ****», просто кривился и закрывал вкладку, чтобы больше ни разу на этот сайт не заходить. Неужели администраторы ресурсов сами этого не понимают?
Читать дальше →

«Переезжаем» в офлайн: Web Storage, Application Cache и WebSQL

Reading time11 min
Views28K
Чтобы делать приложения, которые могут работать в полностью автономном режиме, нам нужно познакомиться со следующими технологиями: HTML5 Application Cache, Web Storage и WebSQL.
Мной уже были опубликованы вводные статьи, касающиеся Web Storage и HTML5 Application Cache. Рекомендую их к прочтению если вы еще не знакомы с основными понятиями. В данной статье будут пересмотрены эти технологии, в том числе и WebSQL, и описаны варианты их совместного эффективного использования. Все эти технологии поддерживаются настольной версией браузера Opera 11.10, Opera Mobile 11, браузерами на движке WebKit (в iOS и Google Android).
Читать дальше →

HTML 5. Работа с Web SQL базой данных

Reading time3 min
Views175K
В HTML 5 есть много новых возможностей, которые позволяют web разработчикам создавать более мощные и насыщенные приложения. К этим возможностям относятся и новые способы хранения данных на клиенте, такие как web storage(поддерживается в IE8) и web SQL database.

При этом если web storage ориентирован на хранение пар ключ-значение, то в случае с web SQL database у нас есть полноценный sqlite(во всех текущих реализациях применяется именно этот движок баз данных, что является проблемой при стандартизации).

Далее я расскажу, как работать с web SQL database. При этом примеры естественно будут на JavaScript. Кроме того, стоит отметить, что с поддержкой браузерами всего этого хозяйства дела обстоят, не очень хорошо, но всё постепенно меняется к лучшему и, скажем, в Opera 10.50 поддержка будет, а браузерах на движке WebKit она уже есть. Более подробно про то, какой браузер, что поддерживает можно узнать, пройдя по ссылке.

Соединение с базой данных.


Подсоединиться к базе данных очень просто:

db = openDatabase("ToDo", "0.1", "A list of to do items.", 200000);
Читать дальше →

Администрирование WEB SQL DB в Chrome

Reading time1 min
Views17K
image

Прочитав однажды вот этот пост, после покопавшись в черновиках w3c, начал потиху в этом пытаться разбираться.
Сразу оговорюсь, что технология хранения данных на стороне клиента — штука не новая. А в этом варианте, так ещё и, в большей степени, вебкитная (webkit) да и под html5, так что может многих отпугнуть.
Рассказывать как она работает я не буду (есть ссылки чуть выше, там всё подробно описано), а хотел бы обратить выше внимание на администрирование БД при помощи браузера Chrome
Читать дальше →

Разработка с использованием WEB SQL DB и Local Storage

Reading time5 min
Views7.1K
Совсем недавно на хабре был пост, посвященный работе с WEB SQL DB. Одно из полезных применений локальных баз данных – работа в оффлайн режиме. Кроме этого, я покажу еще один вариант работы, когда вместо sql используется local storage, который поддерживается уже большим количеством браузеров.
Читать дальше →

DevPoint: Selenium в тестировании веб-приложений

Reading time7 min
Views46K
Что делать когда:
  • Достался хард-кодный проект непокрытый тестами;
  • код желает лучшего, а времени на рефакторинг нет;
  • внесение правок в одном месте нарушает работу логики в другом;
  • для покрытия *Unit тестами, проще переписать проект;
  • бизнес логика размыта по коду и даже по шаблонам.

Забить и оправдываться, что такой код не должен жить?

С такими ситуациями очень часто сталкивался и меня это не устраивало. При поиске подходящего метода/инструмента тестирования я наткнулся на Selenium. И применяю его уже более 3-х лет.

В Киеве 9-го апреля прошла конференция DevPoint, посвященная web — разработке. Организатором данного мероприятия была компания Uniweb. В рамках ее, решил поделиться впечатлением про Selenium.
Читать дальше →

C10k (Проблема 10000 соединений) на разных языках/платформах

Reading time2 min
Views40K


UPD. Вторая версия бенчмарка тут: eric.themoritzfamily.com/websocket-demo-results-v2.html


Предупреждение: если у вас есть претензии к бенчмарку и/или к коду, бенчмарк выложен на Гитхабе, что позволяет вам править баги самим или сообщить о багах автору.

Подробнее о проблеме 10000 соединений: ru.wikipedia.org/wiki/Проблема_10000_соединений

Как с проблемой 10000 соединений через вебсокеты справятся Erlang, Go, Haskell (Snap), Java (Webbit), Node.js (websocket) и Python (ws4py)?

скандалы, интриги, расследования

Статический анализ PHP-кода с помощью HipHop

Reading time5 min
Views8.5K
Неожиданно не нашёл информации на русском языке о такой замечательной возможности HipHop, как статический анализ кода для PHP, а потому встречайте обзор, на идею которого меня натолкнула презентация Расмуса на DevConf.

А как это вообще?

Статический анализ кода — вещь весьма полезная, ведь иначе ошибку мы не увидим, пока функция, её содержащая, не будет вызвана. Как же это делает HipHop? Он транслирует PHP в C++!

Таким образом мы получаем возможность статически проанализировать C++ код, что, в общем, давно никого не удивляет, а потом применить полученную информацию к PHP (естественно автоматически).

Итак, начнём.
Читать дальше →

Создаем облако для тестирования ПО

Reading time8 min
Views14K
Пока компании вроде Google и Microsoft активно рассказывают простому пользователю о счастье, которое ожидает их на облачных сервисах, я хочу поделиться другой стороной облаков — счастьем для разработчиков и тестировщиков ПО. За те несколько лет, в течение которых я руковожу группой тестирования Parallels Plesk Panel, была собрана неплохая коллекция лайфхаков по использованию облака для наших целей.

Я уверен в том, что изложенный опыт будет полезен подавляющему большинству компаний и стартапов. Во-первых, тестовое облако можно создать самостоятельно. Это важно, когда ваш бюджет ограничен. Во-вторых, тестовое облако в его самом начальном варианте можно развернуть на 2-3 серверах. В-третьих, все хлопоты, связанные с созданием тестового облака, с лихвой окупаются автоматизацией процесса тестирования. Это особенно критично, если вы регулярно выпускаете обновления и если код вашего проекта довольно объемный.

С преамбулой вроде всё. Любопытных приглашаю под кат.
Читать дальше →

Icenium: кросс-платформенная облачная среда для создания мобильных приложений

Reading time2 min
Views11K
Icenium – это совершенно новая интегрированная облачная среда (integrated cloud environment — i-c-e — Icenium) для разработки мобильных приложений. Сервис, который является продуктом подразделения Telerik, только что вышел на стадию приватного бета-тестирования и находится в поиске разработчиков, желающих опробовать его. Первоначально Icenium фокусируется на создании iOS и Android приложений, а позже надеется перейти к другим мобильным платформам, и, в конце концов, к серверам и десктопам.

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

FileSystem API&File API: разбираемся и используем

Reading time14 min
Views98K
HTML5 Powered with Performance & Integration, and Offline & Storage
В данной статье я хочу рассмотреть FileSystem API и File API, разобраться с его методами и показать пару полезных штук. Эта статья является компиляцией материалов с html5rocks (1, 2, 3). Все представленные ниже демки можно посмотреть по первым двум ссылкам. Третья ссылка так же предлагает ряд интересных демо. Ну а теперь займемся изучением материала.
Читать дальше →

Наглядный пример использования замыканий в PHP

Reading time2 min
Views12K
Начиная с версии 5.3, PHP позволяет создавать замыкания. К сожалению, пример их использования в официальной документации http://www.php.net/manual/en/functions.anonymous.php#example-163 (example 3) обладает редкой изощрённостью и надуманностью. Надеюсь, пример под катом поможет увидеть в замыканиях другое применение, кроме как с функциями типа array_map().
Читать дальше →

Загрузка и инициализация JavaScript

Reading time10 min
Views43K

С появлением мобильного веба наш интернет стал снова плохим, а устройства медленными. 3G, 4G, Wi-Fi… — они, конечно, где-то есть, но когда очень надо, то как правило скорость падает до околомодемной и получается, что наши мобильный устройства «каменного века» попадают в условия современного объема информации. Даже в центре города (правда на 15-м этаже) значок мобильного интернета может показывать волшебную букву Е, намекающую о том, что уж лучше не тратить нервы и потерпеть. Лучше уж использовать нативную версию какого-то веб-сервиса, чем каждый раз ждать, загружать по мегабайту, чтобы отправить короткое сообщение. Нативную версию веб-сервиса... Понятное дело маркетинг, гонка приложений. Однако, же пользователи выбирают нативные веб-приложения, которые работают быстрее, не качают кучу ресурсов, хотя им приходится периодически его обновлять.

Эта статья о том какими путями можно оптимизировать загрузку и инициализацию JavaScript.
Читать дальше →

В чем причина засора? Cтатистика веб-приложений

Reading time5 min
Views13K
В прошлом нашем посте внимательный хабраюзер dovg отметил скриншот с красивым графиком. На нем было отражено время выполнения различных операций поиска. А поскольку статистика и анализ производительности высоконагруженных проектов – тема довольно актуальная, мы решили рассказать про систему, которую используем для сбора и анализа статистики «Мамбы». Как и в случае поиска, мы используем собственное решение, но в отличие от него BTP (никто не помнит, как эта аббревиатура появилась на свет, но почему-то именно она стала названием) находится в открытом доступе, и при желании вы можете установить её на своих серверах.

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

gmaps.js — самый легкий способ использования Google Maps API

Reading time2 min
Views49K
Привет!

Расскажу об одной небольшой (~30kb) JS библиотеке для удобной работы с Google Maps API под названием gmaps.js.
Раз уж библиотека создана для ускорения процесса веб-разработки, то и я вас задерживать не буду. Как можно понять из названия, она делает не что иное, как упрощает взаимодействие с API Google Maps. Многие из вас работали с API и, вероятно, каждый раз вам приходилось попотеть, чтобы порыться в документации и реализовать, например, свое собственное описание метки на карте. Или подписаться на событие взаимодействия с картой…
Читать дальше →

Information

Rating
Does not participate
Location
Винница, Винницкая обл., Украина
Date of birth
Registered
Activity