Pull to refresh
16
0
Халецкий Андрей @Priest

ИТ Предприниматель

Send message

AvisoSMS. Мы открылись!

Reading time2 min
Views10K
Здравствуйте! Представляем новый удобный сервис для рассылки SMS, которую можно интегрировать в Ваш проект. Прошел месяц с тех пор, как мы пригласили хабравчан протестировать наш сервис. За это время многое поменялось в лучшую сторону. Теперь мы готовы предложить самое функциональное API для интеграции в Ваши проекты. Помимо прочего, расширили спектр услуг и понизили цены. Обо всем этом, а также новых протоколах отправки сообщений, партнерской программе и SMS-биллинге читайте дальше.

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

dklab_multiplexor: постоянное Javascript-соединение с сервером в условиях сотен тысяч онлайн-клиентов

Reading time4 min
Views6.8K
Dklab_multiplexor — это инструмент, который позволяет держать одновременно сотни тысяч долгоживущих открытых HTTP-соединений с сервером. Например, если на вашем сайте находится одновременно несколько сот тысяч посетителей, каждый из них может быть связан с сервером постоянным соединением, установленным из JavaScript. Это например, полезно при организации онлайн-чатов или мгновенных уведомлений.

Dklab_multiplexor не претендует на полную универсальность или исключительность (кстати, если знаете аналоги, близкие по простоте к multiplexor-у, пишите в комментариях). Это лишь простейший инструмент, который наконец-то дошли руки опубликовать.

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


Предположим, посетители вашего сайта могут посылать друг другу сообщения. Если получатель в момент отправки находится на сайте (просматривает какую-либо страницу), ему немедленно выдается уведомление (всплывающее окошко на JavaScript).

Данную задачу можно решить двумя способами.
  1. Неправильный способ. Раз в 10 секунд делать из JavaScript запрос на сервер для проверки, не появилось ли новых сообщений. Этот метод не работает, если на сайте одновременно находится очень большое количество пользователей, т.к. нагрузка на сервер растет слишком быстро. Кроме того, потребление трафика пользователем также оказывается крайне высоким.
  2. Правильный способ. Устанавливать постоянное и длительное соединение с сервером, ожидая поступления данных через него. Если сообщений нет, соединение просто держится открытым на протяжение нескольких минут. Если соединение по каким-либо причинам закрылось, оно вновь открывается. В итоге и трафика потребляется мало, и нагрузка на сервер оказывается невелика. Так работает GMail, Мой Круг и т. д., и именно на этом принципе построен dklab_multiplexor.
+-------------------+                    ------------------ 
| Сервер обработки  |                   |                  |   <===WAIT=== Клиент A
| и базы данных     |  ======IN=======> |   Мультиплексор  |   <===WAIT=== Клиент B
| (e.g Apache + PHP |                   |                  |   <===WAIT=== Клиент C
+-------------------+                    ------------------ 
(указаны направления установления TCP-соединений).
Читать дальше →

Текст любой ценой: DOCX и ODT

Reading time4 min
Views63K
Недавно возникла задача получения чистого текста из различных форматов документооборота — будь-то документы Microsoft Word или PDF. Задача была выполнена даже с чуть более широким списком возможных входных данных. Итак, этой статьёй я открываю список публикаций о чтении текста из следующих типов файлов: DOC, DOCX, RTF, ODT и PDF — с помощью PHP без использования сторонних утилит.

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

Веб-аналитика: анализируй это! Часть 4. От статистики к аналитике

Reading time3 min
Views8.5K
Прошу простить за большую паузу между выпусками рассылки: мне нужно было время на подготовку к проведению большого тренинга и разгребание новых материалов. Что ж, много времени прошло, многое изменилось — даже слово “Интернет” теперь нужно писать с большой буквы! Больше такого не повторится, так что продолжим наше путешествие. Напомню адреса прошлых выпусков:

Часть 1. Вступление.
Часть 2. Сбор данных.
Часть 3. Базовые метрики.

Перед тем, как перейти к описанию метрик и технологий анализа, хочу еще раз напомнить о том, зачем мы тратим на это своё время.
Читать дальше →

Список полезных инструментов для php разработчика

Reading time10 min
Views150K
PHP один из самых широко используемых языков для создания вебсайтов. PHP фреймворки, такие как Zend, CakePHP, CodeIgniter и т.д и open source классы и библиотеки упростили разработку.
Независимо от того, являетесь ли вы опытным разработчиком или новичком, инструменты, которые вы используете, имеют прямое влияние на вашу продуктивность. Здесь собран список действительно полезных утилит и расширений для PHP разработчиков, которые помогут ускорить разработку, и улучшит итоговое качество кода.
Читать дальше →

Веб-аналитика: анализируй это! Часть 3. Базовые метрики

Reading time4 min
Views22K
Предыдущие части:
Часть 1. Вступление
Часть 2. Сбор данных

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

«Виртуальная модель» или как нежно и аккуратно снять требования к проекту

Reading time3 min
Views2.4K
Жизнь — штука сложная, выкидывает порой такие забавные коленца, которые заставляют не то чтобы прыгать вперед с закрытыми глазами, скорее это похоже на попытку уехать на машине без ключей зажигания и с пустым баком. Но как показывает практика, многие веб-студии до сих пор толкают свои автомобили. Попробуем исправить это хотя бы частично.

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

Хлебнув несколько раз проблем с нехваткой данных для дальнейшей работы, я выработал для себя ряд мер, которые гордо назвал «виртуальной моделью» =)
П-п-п-помедленней, пожалуйста, я записываю!

Скругленные углы на чиcтом CSS без JS без картинок с анти-аллиасингом

Reading time2 min
Views7.7K
Раз уже пошла такая пьянка бурное обсуждение, то предложу и свой метод скругления углов, с характеристиками, которые можно увидеть в названии топика.

Хочу заметить, что это не улучшение какого-то из существующих методов, а совершенно новый (по крайней мере, я нигде не смог найти — наверное, плохо искал ;) метод. В статье 38 статей о создании закругленных углов на сайтах данный метод также не был упомянут.

Итак, что же мы имеем: чистый CSS, без единой картинки, без JavaScript (хотя и с ним, для демонстрации, тоже сделаем), с анти-аллиасингом (то есть плавные переходы), прозрачные углы (то есть в фоне может быть что угодно), тянущийся по высоте и ширине и, конечно же, кроссбраузерный метод.

Не томи

Правила работы с e-mail в нашей компании

Reading time2 min
Views4.4K
За четыре года наш коллектив вырос с 3 до 70 человек, появилось три офиса плюс общение со штаб-квартирами. Поэтому по ходу пришлось менять и стиль, и правила работы в компании. В итоге в области коммуникаций это вылилось в следующий свод правил — часть уже можно встретить в литературе по тайм-менеджменту, часть придумали сами. Возможно, это будет полезно и вашей компании. Подходит для компаний, где у всех есть компьютер и e-mail.
Читать дальше →

Вы можете создать веб страницу? Теперь вы можете создать плагин к Firefox тоже

Reading time1 min
Views1.5K
Jetpack LogoБольшинство людей не могут создать расширение к Firefox — для этого нужны знания Javascript, XUL, и немного опыта в XML. Сейчас порядка 8000 разработчиков и 12000 плагинов к Firefox, но Mozilla всегда ищет пути как это расширить.

Итак Mozilla выпустила экспериментальную программу Jetpack, которая позволяет каждому, кто может создать веб страницу — создать дополнение к Firefox. Это означает, что для простого дополнения к популярному браузеру, вам нужны лишь знания HTML. Jetpack также поддерживает CSS и Javascript.

И для тех из вас, кто не является силен в программировании, Jetpack делает одно очень важное изменение: вам не придётся перезапускать браузер для того чтобы инсталлировать дополнение через Jetpack.

Jetpack очень ранний проект с открытым исходным кодом, это только 0.1 версия и там пока очень много багов. Но уже сейчас она позволяет каждому использовать API для создания статусбаров, работы с табами и многое другое. Он также поддерживает внешний API как Twitter, и вы сможете создавать простые дополнения для работы Twitter'а с Firefox.

Итак, если вы разработчик, посмотрите видеопредставление как создавать дополнения к Firefox.


Что такое анти-паттерны?

Reading time9 min
Views149K
Анти-паттерны — полная противоположность паттернам. Если паттерны проектирования —
это примеры практик хорошего программирования, то есть шаблоны решения определённых задач. То анти-паттерны — их полная противоположность, это — шаблоны ошибок, которые совершаются при решении различных задач. Частью практик хорошего программирования является именно избежание анти-паттернов. Не надо думать, что это такая непонятная теоретическая фигня — это конкретные проблемы, с которыми сталкивался практически каждый разработчик. Кто осведомлен, тот и вооружён! Рассмотрим же несколько расрпотранённых анти-паттернов в программировании.
Да, рассмотрим!

Советы по фиксациям в SVN

Reading time4 min
Views3K
Предлагаю перевод хорошей статьи с советами по выполнению фиксаций в хранилище. Оригинал написан для проекта T2, но практически все советы универсальны и легко применимы для любого другого проекта. А самое главное — они действительно полезны.

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

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

Mysql Documentor — простая утилита для документирования баз данных Mysql 5+

Reading time2 min
Views1.4K

Как мы дошли до жизни такой

Тут мы хотели вставить красивую и короткую презентацию из Slideshare, но она, кажется, не понравились НЛО =)

Что умеет

Mysql Documentor читает схему данных, комментарии к таблицам и полям, а затем при помощи несложного шаблона Smarty генерирует html-описание.

Сегодня MyDoc умеет:
  • строить список таблиц с комментариями;
  • строить список полей каждой таблицы с комментариями;
  • для каждой таблицы строить список ключей;
  • при наличии внешних ключей делать ссылки с полей на связанные таблицы;
  • работать на всех платформах, на которых работает php с расширением mysqli;
  • smarty-синтаксис шаблонов позволяет строить документацию любого дизайна и формата (в том числе не html);
  • удобно настраивается прямо в запускающем скрипте.

Что не умеет, но скоро будет

  • нет статистики по таблицам и полям;
  • никак не обрабатывается и не строится документация по триггерам и хранимым процедурам.

Что ещё в ближайших планах

  • группировка таблиц на основании тэгов из комментариев;
  • вывод схемы БД в формате Graphwiz.

Как получить

Просто скачайте его с нашего сайта (там же есть пример построенной документации).

Как это заставить работать

Вообще-то заставлять никого не придётся. Достаточно заглянуть в файл README.TXT (он сейчас по-английски) и выполнить нехитрые инструкции. Вам потребуется всего пара минут.

И, что, бесплатно?

Да. Mysql Documentor распространяется в исходных текстах на условии лицензии GPL. Кстати, на info@softuniq.com можно (и нужно!) присылать свои контрибьюты. Svn-репозиторий скоро будет.

Что дальше?

Разработка утилиты идёт полным ходом. За новостями удобно следить, подписавшись на RSS-ленту нашего уютного бложега. =)

Простое сравнение изображений с помощью php

Reading time3 min
Views27K
Алгоритм возможно не новый, и не является идеалом, но, на удивление, работает. Никаких графов и корелляции.

Для начала, стоит отметить, что сравнение очень приблизительно (по крайней мере, на данном этапе), временами две совершенно разные фотографии оказываются похожими процентов на 60%, так же не учитываются жесткие модификации (повороты, инверсия, обрезка) – для этого нужно доводить и доводить. Лично для меня самым главным оказались два параметра: скорость, независимость от разрешения изображения и возможность сравнивать «изображения» прямо в базе данных.
Читать дальше →

5 Стилей принятия решений при проектировании. Какой выбрать?

Reading time6 min
Views5.3K
Перевод хабрапользователя kremien для сайта Usability.by

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

Почему? Потому на фотографиях, что на сайте REI, были видны подошвы ботинок, тогда как на L.L. Bean показывали только внешний вид верхней части ботинка. Подошва – важный элемент выбора для опытных покупателей туристических ботинок. Для некоторых туристов, выбор подходящей подошвы является критичным. Опытным туристам было удобнее покупать ботинки на сайте, который информировал их о дизайне подошвы.

Нас очень заинтересовал вопрос о том, откуда команда проектировщиков REI знала о тонкости с предоставлением покупателям информации о подошве. Нашим предположением было, что они провели детальное исследование, экспериментируя с различными типами изображений товара, чтобы определить, какой из них наиболее стимулирует продажи. Когда мы связались с ними и рассказали о своих предположениях, они начали смеяться… Громко. Долго.
Читать дальше →

Определение нечетких дубликатов для коротких документов

Reading time3 min
Views7.4K
Хочу поделиться простым, но эффективным алгоритмом определения нечетких копий документов. Есть много статей об использовании для этой цели алгоритма шинглов. Ходят слухи, что большие поисковые системы используют очень похожий алгоритм у себя. Однако, все признают, что шинглы плохо подходят для коротких (3-5 предложений) документов. А в моей задаче надо было работать именно с такими документами. В качестве решения предлагают закольцовывать текст, чтобы как бы сделать из него длинный, но мне кажется, что это не очень правильное решение, точность распознавания дублей все равно будет низкая.

Итак, описание алгоритма, который я использовал:
Читать дальше →

Создаем свой SVN сервер: 3$ и 30 минут

Reading time4 min
Views14K
Многих хабрачитателей иногда волнует вопрос хостинга SVN. В интернете полно вариантов захостить SVN репозиторий, с ценой порядка 10-15уе в месяц, но смущает одно: хостинг репозитория — намного более ответственное дело, нежели хостинг сайта. В коде — ваши «сверхценные идеи», от аптайма сервера и надежности бэкапов напрямую зависит работа вашего бизнеса. Некоторые выбирают все же хостить SVN в серьёзных компаниях. Хорошее сравнение по параметрам тут: http://www.svnhostingcomparison.com/, open-source кстати можно захостить в неплохом месте на букву G ;-).

Другие же, как и я, решают хостить SVN на своём VDS / Dedicated сервере. На этом вопросе я и остановлюсь, рассказав заодно немного о вариантах запуска/настройки svn сервера (в том числе относительно новых — шифрование/аутентификация SASL и хранение в FS). Выльеться все это вам в 3-4$/месяц, в полный контроль за бэкапами и доступом к серверу. Пожертвовать придется 30 минут драгоценного времени на настройку.

Целевая аудитория: начальный — средний уровень опыта работы с Linux.
PS. Я в курсе что FreeBSD is not Linux ;-)
Читать дальше →

DNS Amplification (DNS усиление)

Reading time6 min
Views95K
Не так давно столкнулся с проблемой (и ее решением) учитывая актуальность этой темы в последнее время, а также то, сколько людей сейчас страдают от этой беды, решил объединить информацию в одну статью. Может быть кому-то еще она будет полезной.
image

Начало



Пару недель назад я заметил странную активность, направленную на мой DNS-сервер. Сразу скажу, что использую шлюз на Linux, соответственно там установлен DNS-сервер bind. Активность заключалась в том, что на порт 53 (DNS) моего сервера сыпалось по несколько UDP пакетов в секунду с различных IP-адресов:

10:41:42.163334 IP 89.149.221.182.52264 > MY_IP.53: 22912+ NS?. (17)
10:41:42.163807 IP MY_IP.53 > 89.149.221.182.52264: 22912 Refused- 0/0/0 (17)
Читать дальше →

Система разделения прав доступа в веб-приложении

Reading time14 min
Views71K
В этой статье мы пройдём с вами полный цикл от идеи, проектирования БД, написания PHP-Кода, и завершающей оптимизации. Постараюсь рассказать обо всем, как можно проще. Использовать для примеров буду PHP и Mysql. Заодно потренирую новичков :).

В этой статье я коснусь вопросов:
  1. Идея ACL
  2. Проектирование БД
  3. Нормализация БД
  4. Рефакторинг кода
  5. Оптимизация рабочего кода

Статья является ответом на Бинарное распределение прав доступа в CMS. Пока автором пишется практическая часть, я хочу предоставить мой вариант, который я использую довольно давно.
То, что я сейчас расскажу, похоже на ACL.

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

Начало научной карьеры (часть 4)

Reading time6 min
Views5K
Наверно, после этой части мы сделаем небольшой шаг назад и поговорим о том, как выглядит хорошая «болонская» магистратура, а пока продолжу разговор об аспирантуре.

Надо сказать, что в аспирантуре различия между странами и вузами начинают потихоньку стираться. Если не обращать внимания на важные, но в общем-то второстепенные вещи, то можно сказать, что российская аспирантура не очень сильно отличается от зарубежной. Пожалуй, самое заметное внешнее отличие состоит в том, что западному аспиранту приходится гораздо больше учиться (в обычном, «студенческом» смысле), то есть ходить на курсы и сдавать экзамены.
Читать дальше →

Information

Rating
Does not participate
Location
Беларусь
Date of birth
Registered
Activity