Pull to refresh
0
Alexey Elizarov @beauty_freeread⁠-⁠only

Fullstack developer

Send message

Пять способов ускорить запросы API Facebook на практике

Reading time7 min
Views14K
Ни для кого не секрет, что самым узким местом веб-приложений чаще всего являются HTTP-запросы к внешним серверам. Так, время загрузки данных запроса API много больше чем время, необходимое для выполнения большинства самых сложных скриптов веб-приложения.

За время работы с API Facebook я накопил несколько рецептов оптимизации запросов: как увеличить скорость работы скриптов, уменьшить их количество и ресурсоёмкость.



Способы, изложенные в этой статье, работают только с API Facebook. Но я не исключаю, что они могут быть применимы и в других сервисах, предоставляющих API.
Читать дальше →
Total votes 84: ↑81 and ↓3+78
Comments27

ООП в JavaScript

Reading time4 min
Views40K
Хочу представить вам функцию-конструктор классов createClass.
Чем хорош этот конструктор:
1. Сам код выглядит более читабельным и понятным
2. Поддержка множественного наследования
3. Поддержка абстрактных методов
4. Наследование статических методов и свойств класса
5. Умный метод instanceOf (проверяет по всей цепочке классов)
Читать дальше →
Total votes 81: ↑53 and ↓28+25
Comments84

Фоновое выполнение скрипта на PHP без crontab

Reading time4 min
Views84K
Озадачили меня тут написать демона на PHP. Т.е. скрипт, который будет заданное количество раз в заданное количество часов в случайное время (всегда случайное) выполнять определенные действия, и все это без использования cron'a.

До этого никогда не заморачивался, а тут после постановки задачи, начал было думать что так нельзя, что php скрипт надо вызывать браузером…ну задача то поставлена, надо выполнять.

Первая мысль — отключить ограничение времени выполнения скрипта. Запрещено хостером.

Вторая мысль — яваскриптом повторять аякс-запрос периодически (да хоть раз в секунду). — нельзя (требование заказчика).

Выяснилось, собственно, что и браузер открыт не должен быть, и крон нельзя использовать, и работать скрипт должен независимо от пользователя, бесконечно долго. Естественно, он должен минимум грузить систему.
Читать дальше →
Total votes 86: ↑39 and ↓47-8
Comments43

Нифига себе сходил за хлебушком, или история одного взлома

Reading time8 min
Views115K
Всё началось с того, что ко мне (как к фрилансеру) обратились за помощью и попросили настроить exim4 так, чтобы почтовая рассылка не попадала в спам. Даже заботливо ссылку прислали на замечательную статью.

Работы на пару часиков включая обновление DNS, но не тут то было. Залогинившись под рутом я включил свой любимый screen по привычке командой screen -x и лицезрел прелюбопытнейшее действо в любимой многими папке /dev/shm. Злоумышленник не удосужился прикрыть сессию screen, либо всё еще работал в ней. И тут начинается квест:

Первое, что я сделал — просмотрел, чем же занимался злоумышленник:

Читать дальше →
Total votes 592: ↑576 and ↓16+560
Comments150

Наши самородки 2

Reading time1 min
Views1.7K
Посмотрев замечательный мультфильм из предыдущего топика Наши самородки, хочу поделиться ещё одной интересной ссылкой.

Автор проекта также практически в одиночку в свободное время сваял полнометражный полуторачасовой мультфильм. 8 лет, с 2002 по 2010 год, житель нашей столицы Дмитрий Петров делал мультфильм «Потерянная Планета».



Ссылка на мульт
Оставляйте хорошие комментарии, как автору этого, так и предыдущего мультфильма. Это очень мотивирует к творчеству, когда человек знает что долгое время работал не зря, в конце концов они оба заслужили этого.
Total votes 92: ↑75 and ↓17+58
Comments64

Процессор

Reading time8 min
Views151K
Сколько я себя помню, всегда мечтала сделать процессор. Наконец, вчера я его сделала. Не бог весть что: 8 бит, RISC, текущая рабочая частота — 4 кГц, но он работает. Пока что в программе моделирования логических цепей, но все мы знаем: «сегодня — на модели, завтра — на деле!».

Под катом несколько анимаций, краткое введение в двоичную логику для самых маленьких, короткий рассказ про основные микросхемы логики процессора и, собственно, схема.
Читать дальше →
Total votes 361: ↑347 and ↓14+333
Comments66

Как люди принимают решения

Reading time1 min
Views3.7K

В этом выпуске вебинаров UXRussia раскрываются 5 феноменов, обнаруженных в экспериментах психологов, показывающих, как люди принимают решение. И даются рекомендации дизайнерам о том, что делать с этим знанием:
  • Люди, в основном, принимают решения неосознанно.
  • Сознание медленнее познаёт мир.
  • Люди хотят больше выбора и информации, чем они могут переработать.
  • Людям нужно чувство контроля, когда они делают выбор.
  • Люди заботятся о времени больше, чем о деньгах.

Продолжение темы
Total votes 85: ↑72 and ↓13+59
Comments29

Elevator Pitch или грамотная презентация проекта за 60 секунд

Reading time2 min
Views6.3K
Я хочу рассказать вам про то, как создать грамотный Elevator Pitch – одноминутную презентацию проекта потенциальному инвестору на базе собственного опыта. Когда у вас есть всего одна минута, чтобы презентовать проект, вы должны четко понимать, на что потратить эти драгоценные секунды.

Краткость — сестра таланта

Для начала попробуйте описать ваш проект и уложиться в 150-200 слов, при этом нужно, чтобы в эти 200 слов уместилось описание основной идеи, её уникальность и польза для потребителя, ваша оценка рынка, состав и опыт команды, текущий статус проекта и объем желаемого финансирования. Так как вы можете не уложиться в минуту, когда будете пересказывать этот текст, постарайтесь всё важное вложить в первый абзац и первые 20 секунд презентации.

Первое впечатление

Первая фраза – самая важная, попробуйте написать несколько вариантов, покажите эти варианты старшему поколению, если они вас не понимают – перепишите. Повторяйте упражнение до тех пор, пока большей части видящих текст впервые, он не станет понятен.
Читать дальше →
Total votes 68: ↑55 and ↓13+42
Comments20

Моделируем полёт PHP на крыльях Erlang

Reading time10 min
Views9.1K
В данной статье изложены размышления и фантазии на тему «как можно было бы скрестить Erlang и PHP, чтобы случилось вселенское счастье», а не описание готовой технологии или продукта. Впрочем, мы намерены это реализовать, скорее всего, в форме open-source проекта, если, конечно, уважаемая хабра-аудитория не отговорит :) Собственно, одна из главных задач этой статьи — понять, насколько идея интересна и потенциально полезна широкому PHP-сообществу. Кстати, некоторые из проблем, обсуждаемых в статье, справедливы и для других популярных скриптовых языков (тут я подразумеваю Ruby и Python), так что предлагаемое решение, возможно, будет актуально и для них.
Интересно, нафига козе баян?
Total votes 95: ↑86 and ↓9+77
Comments166

Пишем Comet-чат

Reading time20 min
Views16K
Хочу поделиться своим опытом создания простого Comet-чата. Периодически читал про эту технологию, и сейчас решил попробовать сделать что-либо сам. Получился небольшой чат, интерфейс которого я старался сделать похожим на интерфейс irc-клиента mIRC. Так как подобную вещь пишу первый раз, просьба прокомментировать возможные ошибки в программе и статье и описать более оптимальные пути решения задач. Посмотреть на работающий чат можно здесь: http://94.127.68.84:6884/
Читать дальше →
Total votes 42: ↑39 and ↓3+36
Comments81

Создание Comet-приложения с использованием Ajax Push Engine

Reading time6 min
Views5.9K

Введение


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

Comet


Модель Comet позволяет создавать асинхронные Web-приложения, реагирующие на данные, которые приходят с сервера в реальном времени. В данном случае для ее реализации используется технология Long-polling на фреймворке Ajax Push Engine (APE). Суть технологии состоит в том, что браузер подключается к серверу и ждет до тех пор, пока не появятся данные. Как только они появляются, клиент их принимает и подключается снова. Если никаких данных не поступает, соединение разрывается после тайм-аута и снова устанавливается.

APE


APE представляет из себя программный комплекс с открытым исходным кодом, предназначенный для Ajax Push. Система включает в себя веб-сервер и Javascript Framework. APE позволяет передавать в браузер любые данные в реальном времени без каких-либо дополнительных приложений на стороне клиента. По заявлениям создателей свободно выдерживает нагрузку в 100000 соединений.

Итак, приступим
Total votes 6: ↑6 and ↓0+6
Comments6

Realplexor: производительный Comet-сервер с API для PHP и Javascript (realtime)

Reading time5 min
Views20K
Dklab Realplexor — это Comet-сервер, позволяющий держать одновремено сотни тысяч долгоживущих открытых HTTP-соединений с браузерами пользователей. JavaScript-код, запущенный в браузере, подписывается на один или несколько каналов Realplexor-а и вешает обработчик на поступление данных. Сервер может в любой момент записать сообщение в один из таких каналов, и оно будет моментально передано всем подписчикам (хоть одному, хоть тысяче), в режиме реального времени и с минимальной нагрузкой для сервера.

Хотя идейным вдохновителем Realplexor-а был предыдущий проект, dklab_multiplexor, код Realplexor-а не имеет с ним практически ничего общего. Поэтому я и решил сменить название. Несопоставимы также возможности продуктов (см. ниже), да и размер кода увеличился в 7 раз.

Realtime-направление сейчас довольно активно развивается на Западе, и в нем особенно выделяется продукт Tornado — событийно-ориентированный веб-сервер на языке Python. Правда, Tornado — это не столько Comet-сервер, сколько инструмент, с помощью которого можно запрограммировать «в том числе» и Comet-сервер. Ключевые слова: Comet, Push Server, Long polling, JavaScript, XMLHttpRequest.

Главные преимущества Realplexor-а:
  • простота использования: наличие API для JavaScript, API для PHP (в будущем — и для других языков);
  • простота конфигурирования;
  • широкий функционал (либо отстутствующий, либо недоступный напрямую в аналогах).

Лучше один раз увидеть...


Я сделал отдельную онлайн-песочницу, чтобы продемонстрировать функционал нового Realplexor-а и то, для чего вообще нужны Comet-серверы (кстати, это физически тот же самый демон Realplexor-а, что использует мой новый стартап РуТвит). Песочница реализует что-то типа многоканального чата: зайдя, вы получите как будто бы 2 независимых «браузера», запущенных на разных компьютерах.
  • Верхний «браузер» отображает каналы — в них моментально появляются новые сообщения, как только кто-то их туда отправляет на стороне сервера. Конечно же, эту страницу могут просматривать одновременно сотни тысяч пользователей, и они все будут видеть одно и то же (реализовано с использованием Realplexor JavaScript API). Можно «на лету» добавлять новые каналы (подписка) или скрывать уже имеющиеся (отписка).
  • Нижний браузер содержит формы, позволяющие добавлять сообщение в произвольный канал, указав его имя. Форма AJAX-ом отправляется на сервер, и уже там PHP-скрипт записывает в Realplexor полученный текст через PHP API. (И да, так можно чатиться.)
По умолчанию на странице открыто 3 канала с именами Alpha, Beta и RuTvit. Но, конечно, вы можете закрыть эти каналы и открыть новые. Вот, например, страница с единственным открытым каналом по имени Habrahabr: http://rutvit.ru/realplexor/demo?ids=Habrahabr.



Песочница демонстрирует следующие функции Realplexor-а:
Читать дальше →
Total votes 99: ↑92 and ↓7+85
Comments141

Простая реализация long polling механизма на PHP

Reading time4 min
Views94K
Сейчас довольно популярно использование Comet-технологии, «когда при которой постоянное HTTP-соединение позволяет веб-серверу отправлять (push) данные браузеру, без дополнительного запроса со стороны браузера», согласно википедии.
Реализаций этой технологии есть много разных, но я сейчас хочу остановиться на одной из них, которая называется Long Polling. В статье я разберу, что это такое и с чем его едят.
Ну а тем, кто знает, что это, возможно, будетинтересно посмотреть на реализацию, которая не использует сторонний софт для своей работы — только PHP. Зачем это нужно, если есть специальные comet-сервера, которые выдержат гораздо более высокие нагрузки, чем скрипт на PHP? Это может пригодиться, если нужно сделать небольшой проект без высоких нагрузок, а на хостинге не дают ставить сторонний софт. Ну и если мне в рамках одного задания, где как раз нельзя было использовать сторонние приложения, пришлось реализовать данный функционал, то почему бы не поделиться.
Читать дальше →
Total votes 20: ↑12 and ↓8+4
Comments23

Первая работающая атака на SSL/TLS-протокол

Reading time8 min
Views57K
Передаваемые по SSL-соединению данные можно расшифровать! Для этого Джулиану Риццо и Тай Дуонгу удалось использовать недоработки в самом протоколе SSL. И пусть речь пока не идет о полной дешифровке трафика, разработанная ими утилита BEAST может извлечь из зашифрованного потока то, что представляет собой наибольший интерес, — секретные кукисы с идентификатором сессии пользователя.


Читать дальше →
Total votes 84: ↑77 and ↓7+70
Comments22

История развития и оптимизаций одного высоконагруженного ресурса

Reading time5 min
Views14K


Введение

Все началось с того, что я стал системным администратором у одного провинциального Интернет-провайдера. Помимо администрирования различного рода ресурсов, мне в присмотр достался один молодой, но бурно развивающийся ресурс. Ресурс представлял из себя классический LAMP проект. Сайт, на котором генераторами контента являлись обычные пользователи.
* К слову, в то время я ничего не понимал в *nix системах, хоть и все сервера которые мне достались, были именно на нем, разбирался я во всем этом достаточно быстро.

Как обычно бывает с ресурсами, набирающими популярность, железки на которых все крутится, перестают справляться. Ресурс стоял на стареньком двухпроцессорном сервере, на котором крутились практически все сервисы для пользователей. В то время начальство не воспринимало ресурс как нечто стоящее вложений, поэтому, к моему сожалению (а позже – счастью), денег под новую железку мне не выделяли.
Читать дальше →
Total votes 208: ↑198 and ↓10+188
Comments56

Какие ошибки в письмах делают люди и роботы

Reading time7 min
Views44K
Каждый день мне пишут роботы и обычные люди. В топике я расскажу про глупые ошибки в письмах, которых можно легко избежать. А ещё — о том, как устроена обработка почты у нас в компании.

Читать дальше →
Total votes 80: ↑79 and ↓1+78
Comments67

Тултипы на CSS3 и HTML5

Reading time2 min
Views71K
В связи с тем, что на Хабрахабре не нашёл я описания данного простого и в то же время удобного способа создания простых «тултипов» — всплывающих подсказок, я решил о нём написать.
В данном методе не будет использоваться JS, мы довольствуемся лишь CSS3 и HTML5.



Читать дальше →
Total votes 111: ↑108 and ↓3+105
Comments46

Почему ИТшнику стоит стать ИПшником и почему не стоит регистрировать ООО

Reading time7 min
Views86K
В этой статье даются ответы на нижеследующие вопросы, основываясь на личном опыте и опыте коллег.

1. Почему стоит начать работать «в белую»
2. Почему на начальном этапе ИП лучше ООО
3. Что делать, если партнёров несколько

Если вы – начинающий или уже опытный фрилансер и подумываете о работе «в белую», но ещё точно не определились с вопросами «Стоит ли оно того?» и «ИП или ООО?», вэлком
под кат
Total votes 371: ↑361 and ↓10+351
Comments183

Создаем анимированные кнопки при помощи CSS3

Reading time11 min
Views56K


В данной статье я хочу поделиться с вами некоторыми экспериментами по созданию анимированных кнопок при помощи CSS3. Идея заключается в создании анимированных ссылок с разными стилями, hover-эффектами и пр.

В данных примерах используются иконки с webiconset.com, а также шрифт от Just Be Nice.

Мы рассмотрим каждый пример и разберем как выглядит их HTML-структура и стили для разных состояний кнопок.

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

Чтобы не захламлять код в уроке я не буду использовать префиксы для различных браузеров. Их вы сможете увидеть в архиве с примерами.
Читать дальше →
Total votes 215: ↑207 and ↓8+199
Comments40

Что такое «асинхронная событийная модель», и почему сейчас она «в моде»

Reading time15 min
Views54K
Сейчас в тематических интернетах модно слово «Node.js». В этой небольшой статье мы попробуем понять («на пальцах»), откуда всё это взялось, и чем такая архитектура отличается от привычной нам архитектуры с «синхронным» и «блокирующим» вводом/выводом в коде приложения (обычный сайт на PHP + MySQL), запущенного на сервере приложений, работающем по схеме «по потоку (или процессу) на запрос» (классический Apache Web Server).
Читать дальше →
Total votes 163: ↑153 and ↓10+143
Comments130

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity