Pull to refresh
8
0
crazyprog @crazyprog

User

Send message

Пример построения неблокирующего веб-приложения

Reading time7 min
Views5.7K
За последнее время видел пару хабратопиков (раз, два), в которых описывается использование неблокирующих сокетов и событийно-ориентированного программирования в вебе. Хочу поделиться своим опытом создания веб-приложения на этой технологии.

Недавно захотел создать свой сервис проверки номеров ICQ на невидимость. Алгоритм проверки старый и известный, но до сих пор работающий — отправка специально сформированного служебного сообщения и анализ ответа сервера. Необходимо было держать несколько постоянных подключений к серверу ICQ, а также иметь веб-интерфейс для запросов на проверку. Очевидное решение — создание демона, который создает несколько потоков для ICQ-соединений, и как-либо получает команды от веб-приложения, использующего несколько процессов-воркеров (или на preforked архитектуре) — для возможности обрабатывать http-запросы от нескольких клиентов. Но я решил освоить новую для себя технологию и сделать приложение, поддерживающее несколько соединений и отвечающее клиентам, используя всего лишь один поток.
Читать дальше →

Для тех кто учит английский

Reading time1 min
Views4.5K
image

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

Наверняка, курсы BBC Learning English неоднократно описывались, но я нашел очень интересный курс, который заинтриговал меня с самого начала.

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

Даже мне, с моим «poor english» было все легко и понятно, а местами смешно. :)

Предлагаю ознакомиться самим.

Затмение, лисичка и xdebug

Reading time4 min
Views3K

Длинное и пространное вступление



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

Все мы знаем как улетучивается фан от ковыряния в работающем
спагетти-коде, что бы добавить туда что-то или убрать. Однако придя
на новое место мы, как известно, первое время задачи не выбираем. Со
своим нежеланием заниматься разбором старого плохого кода я начал
бороться в нескольких направлениях:

1. Психологическом: Стараюсь не злиться на того кто это написал, а
просто разбираюсь с тем как это работает. Не поверите, в области
висков от этого становится непривычно легко, лицо становится более
доброжелательным и код выглядит более понятным.

2. Организационном: Применяю краткую выжимку из GTD: а) собирай все,
б)перечитывай то что собрал в)делай это. У этого направления есть
также техническая сторона, но о ней не сегодня. Главное при
перечитывании (пункт б) не «возвращать» дела не приняв каких-либо
внятных решений по их дальнейшей судьбе. К слову «разобраться с этим
позже» это вполне внятное решение.

3. Техническом: Вот об этом направлении моего селфимпрувмента вы
сможете наконец прочесть после столь длинного и, как обычно у меня
получается, пространного вступления.
Читать дальше →

How to become a ZCE

Reading time3 min
Views10K
Наверное многие из вас сдавали тесты на таких ресурсах как Retratech или Specialist. А вы задумывались зачем? Чтобы отразить результат в своем резюме? Чтобы оценить свой уровень? Подобные ресурсы не предложат вам ничего, кроме некачественных вопросов и сомнительных достижений. Их цель — получение прибыли на печати ничего не стоящих в профессиональной среде сертификатов. Чтобы получить результат вам нужно
Читать дальше →

Zend Framework Certification

Reading time1 min
Views2K
Компания Zend создала новый вид сертификации ZF Certification. Соотвественно можно получить электронный вариант книги, по которой проходится тренинг курс тут. Что же касается книги по PHP сертификации, то на мой взгляд она довольна интересна для ознакомления. Рассматриваются вещи, которые не так часто поднимаются в многочисленной литературе по данному языку программирования. Надеюсь, что в новом тренинг курсе будут также изложены не рядовые советы по работе с Zend Framework.

Книга содержит описание применяемого в фреймворке стандарта кодирования и всех основных объектов. Не знаю в чём заключается существенное отличие от мануала, но думаю, что они имеются. Ах да, в конце каждой главы можно проверить свои знания, отвечая на контрольные вопросы.

Однако, для меня более важным остаётся вопрос получения данного сертификата. Зачем он может понадобиться и какие преимущества даёт. Я знаю, что в России очень мало людей имеют сертификаты от Zend по PHP. Соответственно популярность этого нового трейнинга у нас в стране остаётся под большим вопросом. Хотя безусловно более активное продвижение данного фреймворка не может не радовать.

Интерпретатор PHP: а что там внутри…

Level of difficultyHard
Reading time2 min
Views7.9K
Если совсем просто, интерпретатор PHP — это программа, которая выполняет скрипты на языке PHP. Он состоит из нескольких компонентов, которые работают вместе, чтобы обработать скрипт PHP и произвести вывод.
Читать дальше →

Анимация в Internet Explorer

Reading time2 min
Views4.2K
Не первый раз сталкиваюсь с этой проблемой, но обычно выручали различные «костыли». Сейчас решил разобраться. Суть в следующем: если в анимации начальное и конечное значение в процентах и разных знаков, объект будет «дёргаться».

Пример:
<style type="text/css">
 #div-1 { position: absolute; width: 100px; height: 100px; background: grey; border: 1px solid black; top: 50%; margin-left: 50%; }
</style>

<script type="text/javascript">
 $(function(){
  $('#link-1').click(function(e){
   e.preventDefault();
   $('#div-1').animate({ left: '25%' });
  });
  $('#link-2').click(function(e){
   e.preventDefault();
   $('#div-1').animate({ left: '-25%' });
  });
 });
</script>

<div id="div-1" style="left: -25%;"></div>
<a href="#" id="link-1">Animate to 25%</a>
<a href="#" id="link-2">Animate to -25%</a>

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

Собираем супервебморду средствами lighttpd 1.4.x

Reading time2 min
Views5.1K
К написанию, данного хабратопика, меня сподвиг вот этот пост.

Итак нам надо получить доступ ко всем домашним девайсам с вебмордами например с работы из корпоративной сети, где доступ разрешен только на стандартный 80 порт, пусть это будет WEB камера (10.0.1.3), вебморда geexbox (10.0.1.4) и ADSL маршрутизатор через который мы получаем IPTV (10.0.1.5:8080).
Читать дальше →

Вращение предметов без флэш

Reading time2 min
Views10K
Всем привет.

Хочу предоставить вам на суд плагин для jQuery, позволяющий реализовать трехмерный показ предметов (например, телефонов или ноутбуков в каталоге интернет-магазина).

Пожалуй, все встречали подобные инструменты основанные на технологии flash. Однако я считаю, что её использование здесь не к чему. Поэтому потратив несколько часов я реализовал подобный функционал на javascript в виде плагина к jQuery.

вертеть дальше

А Вы любите автопутешествия?

Reading time2 min
Views809
image

(моя же цитата отсюда)
… Началось всё с того, как мы с моей девушкой Дашей претворили в жизнь безумную мою мечту: съездили на машине (вдвоём) из Москвы до самого до Бергена (запад Норвегии). Автопутешествие наше вышло просто меганасыщенным по впечатлениям и событиям, произошедшим с нами! We did it, yeahhh! Потом я завёл блог на WordPress и описал там в нескольких томах (труд на 50-60 страниц только текста) наши приключения, обильно «приправив» описание необыкновенными по красоте фотками Скандинавской природы и проч. Получил массу, великую (по меркам моего скромного блога) массу отзывов восторга, после чего загорелся идеей сварганить ресурс — сообщество автотуристов, где бы уважаемые единомышленники могли найти всю интересующую их информацию по автопутешествиям, выложить отчёты и просто пообщаться.
Читать дальше →

Азбука WEB-разработчика

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

AA List Apart




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

Разбор выражений, bytecode-way

Reading time3 min
Views3.8K
Приходилось ли вам разбирать выражение? Рисовать график функции по введенной с клавиатуры пользователем строке?

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

Написав вчера о cglib, я заметил в документации главу о модификации байт-кода. И само собой напрашивается вопрос, а можно ли в runtime заставить класс выполнять, то что очень хочется, а не то что хочет класс?
я хочу знать как!

DooPHP — молодой и очень высокопроизводительный PHP фреймворк!

Reading time4 min
Views4.4K
DooPHP
Doo фреймворк — один из быстрейших, если не самый быстрый из доступных PHP фреймворков. Он помогает разработчикам на всех стадиях создания web 2.0 сайтов.
Вольный перевод вводного текста и диаграммы тестов производительности.
Нафига ещё один фреймворк?

Биржа контента Etxt.ru — источник качественного и дешевого контента

Reading time3 min
Views1.7K
image

Доброго дня, уважаемое Хабрасообщество!


Меня попросили пропиарить на Хабре такой ресурс, как биржа копирайтинга Etxt.ru. Этим я с удовольствием и займусь.
Итак, начнем с того, что данный ресурс может быть интересен тем, кто зарабатывает деньги в Сети путем создания сайтов для людей и поисковой оптимизации. Для web-мастера (будем называть seoшников политкорректно :) ) очень важно иметь постоянный источник дешевого, но при этом достаточно качественного контента.
Где же его найти?

Software Configuration Management // Метрики и документация

Reading time4 min
Views4.5K
И снова здравствуйте.
Продолжаю серию заметок о SCM. В прошлый раз была поднята тема использования систем контроля версий. Судя по плюсам, поступившим от контингента, тема остается актуальной для многих. Есть намерение продолжить рассказ о контроле версий, рассмотреть централизованные и распределенные системы контроля. Но перед этим отойду чуть в сторону и немного расскажу о формальных сторонах управления конфигурацией, чтобы закрыть общетеоретические темы (и перейти к холиварам, хыхы).

Так вот — о формализации. Намедни провёл опрос с целью выяснить — какие метрики народ использует в своих проектах. Выяснилось страшное. Из тех, кто вообще решил что-то выбрать (т.е. без воздержавшихся) — половина не просто не собирает метрики, но и не собрается. Надо полагать, с документированием процессов всё ещё хуже.

Стало быть, адресую сегодняшнюю заметку тем, кто немного задумывается над тем, куда движется его проект и насколько эффективно работает команда.

Узнать всю Правду!

Структура байт-кода виртуальной машины Java

Reading time4 min
Views27K
В последнее время на Хабре появились статьи которые затрагивают манипуляцию байт-кода. Что заставило меня опубликовать следую статью посвященную его структуре.

У платформы java имеется две особенности. Для обеспечения кроссплатформенности программа сначала компилируется в промежуточный язык низкого уровня — байт-код. Вторая особенность загрузка исполняемых классов происходит с помощью расширяемых classloader. Это механизм обеспечивает большую гибкость и позволяет модифицировать исполняемый код при загрузке, создавать и подгружать новые классы во время выполнения программы.

Такая техника широко применяется для реализации AOP, создания тестовых фреймворков, ORM. Особенно хочется отметить terracotta, продукт с красивой идеей кластеризации jvm и на всю катушку использующей модификации байт-кода. Эта заметка будет посвящена обзору структуры байт-кода, первой части этой сильной связки.
Читать дальше →

Джаббер чат на веб-странице

Reading time3 min
Views32K
Прочитав пост на хабре про онлайн чат для сайта через джаббер, мне стало интересно — а как оно работает и как такое можно сделать самому, без готовых приложений. В итоге у меня получилась очень простая заготовка «чата для сайта через джаббер». К сожалению у меня нет выделенного сервера с линуксом для тестов, поэтому был использован локальный компьютер с Win7 (и сервером Apache).

Как это вообще должно работать: пользователь заходит на сайт, и видит окошко, куда можно разговаривать. После того как пользователь послал сообщение, оно прилетает на указанный джаббер аккаунт. Получатель этого сообщения может написать ответ и оно придёт посетителю сайта.
Что для этого нужно:
  • Jabber сервер, можно публичный, можно локальный. Я выбрал Openfire и установил его локально. Сервер должен поддерживать Bosh — XEP-0124: Bidirectional-streams Over Synchronous HTTP, об этом чуть позже.
  • JS библиотека, которая будет реализовывать джаббер-клиент на сайте. Я взял Strophe. Это достаточно низкоуровневая библиотека, в которой нет функций типа «ПослатьСообщение(Куда, Текст)». Для достижения нужных действий нужно вручную составлять команды джаббер серверу (в XML). Удобные средства для создания XML в Strophe есть :)
Читать дальше →

Реши задачку, используя один бит памяти 2: учитываем помехи

Reading time2 min
Views1.7K

Усложнённый вариант задачки про эльфийских зэков. Решение предыдущей задачки умещается в пять строчек комментария. Теперь вот придумали вариант посложнее.
1-го сентября 100 бессмертных эльфийских магаданских зэков (далее — эльфов) постоили на торжественную линейку и предложили им ускорить процесс своего освобождения.
Каждый день одного из них будут отводить в одиночную камеру для воспитательных работ. В камере есть абсолютно чистый стол, неспособный запачкаться и без тайников (впрочем, неважно), к тому же его периодически будут менять (впрочем, неважно).
На столе стоит настольная лампа. Каждый день эльф с охранником заходят в комнату, эльф садится, включает лампу, рисует, либо читает книгу, либо думает, либо делает что-либо еще (неважно). Далее по протоколу эльф обязан выключить лампу (должен, но иногда этого может не делать) и уйти с охраной. Охранник иногда проверяет и, если эльф не выключил лампу, он делает это за него (потому что был както в магаданской тюрьме инцидент). Охранник неаккуратный, ленивый, но иногда лампу он выключает (пусть и редко). Также иногда в тюрьме бывают перебои с электричеством, и в этот день никого в комнату не водят. В таких случаях лампочку переводят в положение «выключено». Эльфов выбирают абсолютно случайно. Каждый день водят не более одного.
У каждого заключенного тюремщик будет спрашивать: «А все ли твои товарищи тут были хотя бы раз?». Если он ответит «не знаю» («нет»), то игра продолжается. Если он ответит «да», и это неправда — высшая мера наказания для всех. Если каждый из сотни эльфов сказал «да», и это всегда была правда, всех всех выпускают на волю в тундру.
Примечание. Если эльф сказал «да», и это правда, его, как остальных, продолжают водить в эту камеру на общих правах.
Заключенные сидят в одиночных камерах и могут договориться только один раз — 1-го сентября на обеде после торжественной линейки. После этого они сидят в «одиночках» без окон, совсем не видят друг друга и лампочки.
Определить стратегию (не обязательно оптимальную — её я сам не знаю) поведения каждого заключенного с тем, чтобы их выпустили пораньше.
Читать дальше →

Простейшая генерация odt файла из существующего

Reading time9 min
Views12K
Как-то раз передо мной стояла задача реализовать генерацию договоров для клиентов с нашего корпоративного сайта.
Сначала задача была решена просто ужасно — был заготовлен html шаблон договора, а пользователю выдавалась конвертация шаблона в pdf. Само собой это выливалось в кучу неудобств, в том числе, если требовалось что-то поменять в договоре.

Следующим решением было генерация odt документа. Это позволило редактировать документ нашим менеджерам независимо от сайта и программистов.
Полностью генерировать с нуля смысла нет. Почему бы не поработать с уже имеющимся файлом (отредактированным в OpenOffice) и просто заменить в нем необходимые элементы?

Этим мы с вами и займемся.
Читать дальше →

Текст любой ценой: PDF

Reading time12 min
Views93K
Продолжаем разбирать текстовые форматы на предмет получения текста. Итак, обещанный ранее PDF.

С portable document format'ом не всё так просто, как DOCX или ODT, что мы рассматривали в прошлый раз, но всё же это всё ещё изначально текстовый, а не бинарный формат. Вы удивлены? Тогда давайте посмотрим на то, что там внутри. Дальше действительно много текста.

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

Information

Rating
Does not participate
Location
Зеленоград, Москва и Московская обл., Россия
Registered
Activity