Search
Write a publication
Pull to refresh
1
0
Andrew @Bonch

User

Send message

Сказка про Петю и Васю или снова о плюсах и минусах фриланса

Reading time3 min
Views6.2K
В одном мегаполисе, в соседних домах живут два друга – Петя и Вася. Оба программисты, но Петя трудится в офисе компании, а Вася фрилансит.
В понедельник, как и всегда, Петя встал в 6-30 утра, чтобы успеть к 9 на работу в центр города. Ему очень хотелось спать, вчера вечером они с Васей допоздна пили пиво, но за опоздания на работе штрафовали. В 8-55, пробравшись сквозь сугробы и пробки на дорогах, злой и невыспавшийся Петя прибегает в офис. Вася в это время только пробуждается. Ровно через 10 минут он встанет и за 7 секунд дойдет до своего рабочего места. Петя завидует – он тратит на дорогу от 1 до 2 часов и столько же обратно.

В то время как Вася, зевая, просматривает почту, на Петю орет его начальник. Коллега Наташа ехидно улыбается. Петя снова завидует другу – у Васи нет дурака-начальника, склочных коллег и дурацких корпоративных правил.
В 12 у Пети неожиданно погас монитор. Он отправил заявку системному администратору и ушел на обед. Когда вернулся – все работало. Примерно в это же время монитор погас и у Васи. Он попытался починить сам, но не смог. Он позвонил для консультации Пети, но Петя не помог, сказав, что у него была такая же проблема, но ее решил сисадмин. Пришлось Васе нести монитор в мастерскую и платить деньги мастеру за ремонт.

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

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

WebSockets — полноценный асинхронный веб

Reading time7 min
Views347K
Пару недель назад разработчики Google Chromium опубликовали новость о поддержке технологии WebSocket. В айтишном буржунете новость произвела эффект разорвавшейся бомбы. В тот же день различные очень известные айтишники опробовали новинку и оставили восторженные отзывы в своих блогах. Моментально разработчики самых разных серверов/библиотек/фреймворков (в их числе Apache, EventMachine, Twisted, MochiWeb и т.д.) объявили о том, что поддержка ВебСокетов будет реализована в их продуктах в ближайшее время.
Что же такого интересного сулит нам технология? На мой взгляд, WebSocket — это самое кардинальное расширение протокола HTTP с его появления. Это не финтифлюшки, это сдвиг  парадигмы HTTP. Изначально синхронный протокол, построенный по модели «запрос — ответ», становится полностью асинхронным и симметричным. Теперь уже нет клиента и сервера с фиксированными ролями, а есть два равноправных участника обмена данными. Каждый работает сам по себе, и когда надо отправляет данные другому. Отправил — и пошел дальше, ничего ждать не надо. Вторая сторона ответит, когда захочет — может не сразу, а может и вообще не ответит. Протокол дает полную свободу в обмене данными, вам решать как это использовать.

Я считаю, что веб сокеты придутся ко двору, если вы разрабатываете:
— веб-приложения с интенсивным обменом данными, требовательные к скорости обмена и каналу;
— приложения, следующие стандартам;
— «долгоиграющие» веб-приложения;
— комплексные приложения со множеством различных асинхронных блоков на странице;
— кросс-доменные приложения.

Заинтриговал? Давайте посмотрим подробнее

Элементы семантической паутины

Reading time10 min
Views16K
Сложность структуры современного информационного общества постоянно растёт. В связи с этим, требования к эффективности алгоритмов обработки информации также увеличиваются. В последнее время наиболее популярными направлениями в этой области являются Data Mining (DM), Knowledge Discovery in Databases (KDD) и Machine Learning (ML). Все они предоставляют теоретическую и методологическую базу для изучения, анализа и понимания огромных объёмов данных.
Однако этих методов не достаточно, если сама структура данных будет настолько плохо пригодной для машинного анализа, как исторически сложилось на сегодняшний момент в Internet.
Для решения данной проблемы предпринята глобальная инициатива реорганизации структуры данных Internet в целях преобразования его в Семантическую Паутину предоставляющую возможности по эффективному поиску и анализу данных как человеком так и программным агентам.
В этой статье рассмотрены основные технологии позволяющие реализовать Semantic WEB.

Читать далее..

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

Reading time5 min
Views21K
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-а:
Читать дальше →

«Райское наслаждение»: достаточно ли одного человека?

Reading time4 min
Views1.1K
Хочу предложить третью точку зрения на диалог о некомпетентных заказчиках и дизайнерах без кавычек. На мой взгляд, основная проблема, корень зла, из-за которого происходит недопонимание между заказчиками и дизайнерами — отсутствие промежуточного звена в виде менеджера или проектировщика (либо его неграмотность). А это отсутствие существует по причине очень низкого порога входа в профессию и отсутствия ответственности за некачественную работу.

Говоря об отсутствии ответственности, я говорю не об ответственности перед заказчиком или высшими силами, а об отсутствии далеко идущих и страшных последствий — в отличие от профессий, например, врача, пилота самолёта или архитектора. Именно поэтому вход в эти профессии сопряжён с фундаментальным образованием, в то время как веб-деятели работают «на глазок», методом проб и ошибок. Причём практически все. И одну ошибку совершают 100% самостоятельных дизайнеров и молодых компаний.

Речь пойдёт о проектировании

Встраиваемые шрифты с кириллицей

Reading time3 min
Views7.3K
Пусть расцветают сто цветов, пусть соперничают сто школ. Этим лозунгом первого китайского императора Цинь Ши Хуана хочется поднять волну народного негодования стремления к появлению как можно большего количества шрифтов с веб-лицензией, которые поддерживают кириллицу. Сто школ в данном случае — различные словолитни и сервисы, предоставляющие встраиваемые шрифты.

В настоящее время подобные сервисы активно развиваются. Крупнейший из них, Typekit, содержит на данный момент 376 шрифтов от более чем 30 производителей. Но вот незадача: Typekit пока поддерживает только подмножество Latin-1, хотя и работает над добавлением поддержки других подмножеств Unicode.

Что же прямо сейчас делать нам, пользователям кириллицы?

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

Почему российские компании катастрофически отстают от западных?

Reading time6 min
Views2.2K
Хочу поднять тему менеджмента и смежных с ним областей знания, так как считаю, что им уделяется крайне мало внимания на Хабре. Западные компании тратят огромные суммы на обучение своих менеджеров и развитие систем управления. Пришло время и нам обратить внимание на эти вопросы. (Осторожно, дальше много текста).

Мечты


Думаю, каждый посетитель Хабра хотя бы раз, но представлял себе день, когда на арену мирового IT-бизнеса взойдут российские компании и отвоюют большую часть покупателей и западных конкурентов. И казалось бы, у нас для этого есть все шансы: наличие талантливых программистов, большое количество людей увлеченных сферой IT, помогает специфика отрасли, позволяющая вести бизнес без границ и без значительного вмешательства чиновников и милиции, да и, в конце концов, перед глазами пример компании Google, которая как ни крути имеет русские корни!

image

Вынужден огорчить – ни у одной российской компании сейчас нет шансов стать хоть сколько-нибудь заметным игроком во всемирной паутине. Речь о построении успешной компании с долгосрочными конкурентными преимуществами, а не о копировании американских идей с добавкой нелегального контента. Не произойдёт это по ряду причин, которые, к сожалению, свойственны всему российскому бизнесу, включая IT-отрасль. И все эти причины относятся к
Читать дальше →

Что почитать по веб-разработке

Reading time3 min
Views236K
Топик Много книг, хороших и разных навёл на мысль сделать похожий каталог наиболее удачных и интересных книг по веб разработке.

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

update: Теперь есть электронные версии книг!

Начнём…
Читать дальше →

Algorithmatic — социальный ресурс алгоритмов

Reading time1 min
Views1K


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

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

Демонстрация FileAPI в Firefox 3.6: чтение данных EXIF из локального файла JPEG

Reading time1 min
Views850
Поль Руже (Paul Rouget) скомпоновал прекрасную демонстрацию нового FileAPI, который мы включаем в Firefox 3.6. Демонстрация позволяет вам перетащить с рабочего стола во браузер такой JPEG, который содержит данные EXIF, и она может извлечь координаты GPS из изображения и затем загрузить то местонахождение, в котором была заснята фотография — всё это из джаваскрипта.

Если у вас есть Firefox 3.6 beta, можете поглядеть демонстрацию или просто посмотреть видеоролик ниже.



Постскриптум переводчика:  в том же блоге есть небезынтересный обзор самогó FileAPI, с познавательными идеями и примерами кода на джаваскрипте.

PHP closures и передача аргументов по ссылке

Reading time8 min
Views4K
Ради интереса я решил сделать механизм замыканий (closures) на PHP. Я знаю, что в PHP 5.3 такой механизм есть, поэтому подчёркиваю — чисто из академического интереса. И моя любознательность дала (по крайней мере, для меня — кто-то с этим уже мог иметь дело) свои плоды — помимо собственно замыканий я получил интересный метод передачи аргументов.

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

Основы декларативного программирования на Lua

Reading time12 min
Views52K
Луа (Lua) — мощный, быстрый, лёгкий, расширяемый и встраиваемый скриптовый язык программирования. Луа удобно использовать для написания бизнес-логики приложений.

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

Луа — мультипарадигменный язык программирования. Одна из сильных сторон Луа — хорошая поддержка декларативного стиля. В этой статье я кратко опишу базовые декларативные средства, предоставлямые языком Луа.
Читать дальше →

Вы несете деньги в Банк, Банки несут деньги в Bitrix

Reading time2 min
Views7K
Требования безопасности к сайтам финансовых компаний должны быть максимально жесткими. Мы просмотрели сайты ведущих банков России и зарубежных филиалов и обнаружили, что многие банки оставляют открытый доступ к панели администрирования Bitrix. То есть папке /bitrix/admin/
Читать дальше →

Не стесняйся показывать свою работу

Reading time1 min
Views2.1K
Вы стесняетесь показывать выполненную работу начальнику? А почему?

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

Годика два или три назад начал свой путь в роли программиста и всегда был страх и стеснения показать выполненную работу. Даже когда знал точно, что мой скрипт или программа работают хорошо, переживал, что директор(клиент) найдёт кучу ошибок. Со временем начал быть смелее и когда давали повод для исправления моих «произведений» считал это как плюс только для моего опыта. Почему? Мне человек говорит, где мне можно улучшиться! То есть не мне приходится искать, а люди сами мне говорят.

Встречал людей, которые радуются, когда исправляют кого-то они думают, что они становятся умнее, чем тот, кого исправили, но чаще всего всё идет наоборот. Антон Павлович Чехов очень чётко подметил: «умный — любит учиться, а дурак — учить». Не все учителя дураки, а только те кто сами не учатся, а стараются только учить других. Главное помнить, что тебе нужно понять, что от тебя требуется и сделаться всё что сказали, если нужно переспроси раз, если нужно второй, но ты будешь знать на 100% что ты делаешь всё правильно. Рассказывай как ты бы ты сделал, не бойся говорить, даже если ты потом узнаешь, что это не правильно, потому что нет человека который всегда говорит правильно.

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

Демонстрация «дока» SVG/SMIL

Reading time1 min
Views1.2K
Сегодня я решил поглядеть, на что это будет похоже — сделать MacOS-подобный «док» в SVG, используя элементы SMIL <animateTransform> для достижения эффекта увеличения при наведении.

Едва оно у меня заработало, я почуял, что мне действительно следовало бы настроить значки на совершение чего-нибудь полезного, когда вы их жмякаете. Так что я прикрутил к ним управление встроенным фреймом.

Вот результат: SMIL Dock

Скриншот:

[SMIL Dock (скриншот)]

(В оригинале есть ещё и скринкаст. — прим. пер.)

Заметьте, что это демо будет работать как следует только в ночной сборке mozilla-central — сиречь Firefox 3.7 / Gecko 1.9.3 — поскольку прежние версии не поддерживают SMIL.

Универсальная on-line проверка грамматики с помощью google ajax search api

Reading time2 min
Views2.7K
Обычно я проверяю английскую грамматику, вбивая в Google куски фраз, и смотрю, что получится.
Если найдено много вариантов, то фраза правильная, если не очень много — то неправильная.

image

Вот, написал сервис, который отсылает запросы в Google, а сам подсвечивает, «правильно», или «неправильно» написаны куски предложения, и местами даже подсказывает — какое слово можно поставить на то, или иное место в предложении.
Еще он показывает в каком именно контексте найдено слово.

Замечательно то, что ему все равно, какой язык вы проверяете.

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

Запуск виртуальной машины в VirtualBox без GUI

Reading time3 min
Views62K
VirtualBoxИногда возникает необходимость запустить виртуальную машину на хосте без иксов. Я расскажу о том как это сделать, имея доступ к хостовой системе только по ssh + rdp (Remote Desktop Protocol). процесс я буду описывать для OC Ubuntu 9.10 в качестве хоста.
Читать дальше →

Обзор NoSQL систем

Reading time5 min
Views56K
Беспрецедентные объемы данных заставляют разработчиков и бизнес приглядываться к альтернативам реляционных баз данных, используемым вот уже более тридцати лет. В совокупности все эти технологии известны как «NoSQL базы данных».


Основной проблемой является то, что реляционные базы данных не могут справляться с нагрузками актуальными в наше время (мы говорим о high-load проектах). Есть три конкретные проблемных области:
  • горизонтальное масштабирование при больших объемах данных, например как в случае Digg (3 терабайта для зеленых значков, отображаемых, если ваш друг сделал dugg на статье) или Facebook (50 терабайт для поиска по входящим сообщениям) или eBay (2 петабайта в целом)
  • производительность каждого отдельного сервера
  • не гибкий дизайн логической структуры.
Читать дальше →

Как я подключался к QIWI

Reading time6 min
Views34K

Зачем мне это было нужно?


Проект настойчиво требовал подключения удобных платежных систем. Да, есть webmoney, но не у всех. Да, есть moneybookers для карточек, но слишком долог бюрократический процесс.

Было принято решение принимать платежи через QIWI, во-первых потому что их автоматы есть практически везде, а во-вторых (тссс, большой секрет!) они готовят запуск системы прямых платежей со счета сотового оператора, без всяких дурацких СМС и девяностодевятипроцентных комиссий.

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

Сказано – сделано!


Для сайта был взят вполне заурядный VDS, на котором собран вполне заурядный же серверный набор – nginx спереди, Apache позади.

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

Для работы с SOAP проще всего взять с гуглокода класс nuSOAP (http://code.google.com/p/nusoap-for-php5/).

Затем нам надо сделать две вещи:
  1. Отправку на сервер QIWI информации о попытке платежа
  2. Прием от QIWI на наш сервер пакета с информацией об изменении статуса платежа.

Документация, жаль, что не очень подробная, есть здесь: https://ishop.qiwi.ru/docs/OnlineStores_Protocols_SOAP.pdf
Читать дальше →

SignalsyMQ — простая и быстрая очередь сообщений на PHP+Redis (и немножко Zend Framework)

Reading time10 min
Views8.2K

Приветствую читателей. Сейчас я веду разработку собственного фреймворка, основанного, в противовес главенствующей сейчас модели MVC, на базе сигнальной архитектуры (signal/slot). Пока он проходит боевую обкатку в нашем стартапе, и за это время я понял, что просто библиотеки мало — реальные задачи и виденье будущего показывает, что необходим разный функционал, но объединенный одной темой — обработка и доставка информации множеству клиентов в реальном времени (да, в чем-то схоже с Comet-ом, он там тоже есть). Поэтому решено было попробовать реализовать основной компонент — очередь сообщений, которая бы стала основной для следующих проектов, быстрой, гибкой и масштабируемой.

Что получилось? Альфа-версия SignalsyMQ — очередь сообщений на базе PHP/Redis/Zend Framework.
Читать дальше →

Information

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