All streams
Search
Write a publication
Pull to refresh
191
0
Альберт Степанцев @AlexLeonov

Программист. CTO. Архитектор. Преподаватель.

Send message

Ярославские колдоёбины

Reading time1 min
Views542
Проект "Колдоёбина.РУ", о котором я писал в предыдущем посте, внезапно, что называется «пошел». И пошел неплохо.

— Добавили центр Ярославля
— Получили миллион ценных советов по развитию сервиса
— Скоро откроем еще пару городов

И даже получили пожертвование в размере $5 на развитие!

Следите за новостями, как говорится.

P.S. Я пока не готов писать это в «Я пиарюсь». Перфекционизм, знаете ли…

Колдоёбина.РУ

Reading time1 min
Views893
Запустили небольшой, но интересный проект на Ronny CMSKoldoёbina.ru

Суть проста — сервис оценки проезжести дорог. Для регионов это очень ценно и актуально, зачастую в незнакомом городе невозможно ездить по карте, не зная заранее, есть ли асфальт на данной улице, или проехать по ней можно только на танке.

Технически все очень просто — Ronny CMS как основа, несколько текстовых страниц, модуль на основе Яндекс.Карт, на карты накладываются отрезки, к ним — голосование и комментарии.

Этот сайт — по сути зачетная работа одного моего «студента» (программиста-стажера), он ее успешно сдал.

Не хочу выкладывать в «Я пиарюсь», поскольку пока еще не уверен в том, что это всем интересно, но отметить в персональном блоге — можно.

Провайдеры, абоненты и забавные случаи

Reading time1 min
Views617
Тут на днях дома почти сутки не было интернета от Корбины, она же нынче Билайн. Сразу оговорюсь — к Билайну никаких претензий, форс-мажор признали, компенсировали полностью.

Но в этой истории есть несколько забавных моментов:
Читать дальше →

Скупые строчки новостей

Reading time1 min
Views504
news.mail.ru/incident/3541131
lenta.ru/news/2010/03/20/dead
www.vesti.ru/doc.html?id=348419

Начальник службы пожаротушения Москвы полковник Евгений Чернышев погиб в ходе тушения пожара в бизнес-центре на севере Москвы. За несколько секуд до обрушения кровли он лично вывел из огня группу людей, а затем вновь вернулся в пылающее здание.

Начальник. Полковник. Суббота… Он не отсиделся дома, он честно и до конца исполнил свой долг. Я считаю, что он — герой. И не просто герой, а Герой России.

Что можем сделать мы, простые сисадмины, программисты, девелоперы, SEOшники, ITшники?

Написать:
Президенту — letters.kremlin.ru
в Государственную Думу — www.duma.gov.ru/letter_pr.html
в Общественную Палату — ip.oprf.ru/treatments/send
обращение с просьбой присвоить Евгению Чернышеву звание Героя России. Посмертно.

P.S. Опыт общения с государственным органами и их представителями показывает, что таких людей — исчезающе малое количество. Поэтому новость лично меня глубоко потрясла. Я не верил, что такие еще есть.

SGVsbG8gd29ybGQh или история base64

Reading time3 min
Views70K

Краткая предыстория


Вообще, все началось давно. Настолько давно, что вряд ли остались свидетели holy wars тех дней, когда решалось — сколько же бит должно быть в байте.

Это сейчас нам кажется само собой разумеющимся, что 1 байт = 8 бит, что в байте можно закодировать 256 различных значений. Но когда-то было совсем не так. История помнит и семибитные кодировки, и шестибитные, и даже более экзотические системы (например — ЭВМ «Сетунь», которая использовала троичную логику, то есть один троичный бит — трит мог иметь три, а не два значения, для нее было справедливо соотношение 1 трайт = 6 тритам). Но если оставить в стороне всякую экзотику, то мэйнстримом все-таки были кодировки, в которых 6, 7 или 8 бит в байте.

Шестибитная кодировка (например — BCD) позволяла закодировать в одном байте 64 различных значения, что, как казалось, было вполне достаточно для кодирования алфавитно-цифровых символов, а «лишний» седьмой бит расширял кодировку уже до 128 символов.

Однако скоро восьмибитный байт стал общепринятым.
Читать дальше →

Автоматическая посадка стотонного утюга или А с кем работаете Вы?

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

Кратко о программе


imageО программе «Энергия — Буран» написано немало, я бы порекомендовал всем интересующимся сразу отправиться на специальный сайт buran.ru, на котором очень много достоверной информации.

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

Корабль «Буран» во многом был аналогом американской системы Space Shuttle: крылатый и бесхвостый планер, плиточная теплозащита, грузовой люк, сходные массо-габаритные параметры (вывод 30 тонн и возвращение с орбиты 20 тонн груза, экипаж до 7 космонавтов), но, поскольку техника не стоит на месте, а наш корабль разрабатывался позже, имел и существенные отличия. «Буран», в отличие от американского аналога, был изначально предназначен для стыковки с орбитальными станциями и другими кораблями, имел систему спасения экипажа (ее отсутствие погубило в свое время экипаж «Челленджера»), и, самое главное — мог выполнять задачи выхода в космос, работы на орбите и посадки в полностью автоматическом режиме.

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

mod_rewrite — просто о сложном

Reading time4 min
Views66K

Что это такое?


mod_rewrite — это модуль для веб-сервера Apache, предназначенный для преобразования URL-ов. Модуль использует в своей работе правила, которые могут быть описаны как в конфигурации сервера (httpd.conf), так и в файлах .htaccess непосредственно в файловой структуре Вашего сайта. Правила описываются в виде регулярных выражений PCRE

Hello world


Простейший пример. Допустим, Вы захотели, чтобы никто не знал, что Ваш сайт написан на PHP и решили замаскировать расширения файлов. Можно, конечно, внести соответствующую директиву в конфигурацию Apache и тогда все файлы с расширением ".msl" («My Super Language») будут обрабатываться интерпретатором PHP. Но можно поступить проще:
создаем в корне нашего сайта файл .htaccess со следующим содержимым
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)\.msl$ $1.php [QSA,L]


Первая директива включает механизм mod_rewrite в текущей папке и во всех ее подпапках. Вторая указывает модулю mod_rewrite, что текущая папка в файловой системе соответствует корню сайта. Третья — непосредственно правило преобразования URL.

Прочесть его можно так:
Если сразу после начала строки ("^") идет произвольное количество любых символов ( "(.*)" ), причем мы хотим запомнить, что именно это за символы, окружая их скобками, затем идет точка ("\.") (экранируем точку, потому что одиночная точка — это просто любой символ), затем символы «msl» и на этом строка заканчивается ("$"), то заменим исходный URL на следующий: возьмем первую запомненную подстроку в скобках из правила, прибавим к ней ".php", добавим все дополнительные параметры адреса, которые могли быть "[QSA]" и на этом закончим, не будем применять дальнейшие преобразования, если они есть "[L]"

Все, теперь Вы можете смело менять все ссылки, заканчивающиеся на ".php" на ".msl" и писать в своем блоге, что изобрели новый скриптовый язык. Apache, встретив ссылку на «index.msl» с помощью mod_rewrite на лету преобразует ее в «index.php» и вызовет нужный скрипт.

А что еще умеет mod_rewrite?


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

О Робокассе наглядно

Reading time4 min
Views95K
Вчера вечером добавил интерфейс взаимодействия с Робокассой в свою CMS.

Кратко о платежной системе


Робокасса — интегратор платежных систем. Она позволяет организовать прием платежей в пользу магазина через множество известных электронных валют (Webmoney, ВКонтакте, ЯндексДеньги, Деньги@Mail.Ru, RBK Money и другие), через терминалы оплаты ЭлексНет, и, самое главное — через SMS.

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

Продолжаем тему, ТКС и Алмаз

Reading time4 min
Views4K
Поскольку предыдущая тема про ракету Н-1 вроде бы понравилась хабражителям, рискну продолжить.

Сегодня я расскажу еще об одном малоизвестном широкой публике космическом эпизоде — военной станции «Алмаз» и о тяжелом транспортном корабле ТКС (Транспортный корабль снабжения).

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

Н-1, апофеоз и epic fail шестидесятых

Reading time8 min
Views6.6K
Посвящается недавнему семейному походу в музей космонавтики

О чем этот пост?


Я попробую в доступной форме рассказать о самом удивительном и, наверное, самом трагическом эпизоде советской космонавтики — об истории разработки ракеты сверхтяжелого класса «Н-1».

Н-1 на стартовом столе

Как все начиналось


Официальное начало проекту «Н-1» было положено Постановлением Правительства CССР от 23 июня 1960 г. «О создании мощных ракет-носителей, спутников, космических кораблей и освоении космического пространства в 1960-1967 гг.» В Постановлении предусматривалось «проведение в 1960-1962 гг. проектно-конструкторской проработки и необходимого объёма исследований в целях создания в ближайшие годы новой космической ракетной системы со стартовой массой 1000-2000 т, обеспечивающей вывод на орбиту вокруг Земли тяжёлого межпланетного космического корабля массой 60-80 т, мощных жидкостных ракетных двигателей с высокими характеристиками, ЖРД на жидком водороде, ядерных и электрореактивных двигателей, высокоточных систем автономного и радиотехнического управления, систем космической радиосвязи и т.п.»

На самом же деле Постановление закрепило уже ведущуюся к тому моменту эскизную разработку в ОКБ-1 Королева ракеты-носителя, предназначавшейся для широкого круга задач — вывод тяжелых геостационарных спутников, большой орбитальной станции, и, наконец, запуск ТМК — тяжелого межпланетного корабля.
Читать дальше →

Одна маленькая фича, которой мне не хватает в PHP…

Reading time1 min
Views663
… это ключевое слово deprecated в объявлении функции (метода).
Если интерпретатор его встречает — генерирует ошибку уровня E_WARNING.

Особенно грустно от отсутствия этого слова потому, что в 5.3 уже есть даже специальный уровень E_USER_DEPRECATED, но нет ничего, что могло бы генерировать такую ошибку, кроме неочевидного и неудобного trigger_error()

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

Ronny CMS, введение

Reading time4 min
Views1.5K

Когда деревья были маленькими


Начну издалека — с истории. Когда-то давно был PHPNuke. От этой CMS форкнулся XOOPS.
Когда разработчики XOOPS решили перейти на тогда еще молодой и малоизвестный шаблонизатор Smarty — случился еще один форк, и часть команды ушла делать свою CMS, без блэкджека — e-xoops, сохранившую Native PHP.

Где-то в 2004 году автор пришел в русскую команду e-xoops. Пришел случайно, не планируя оставаться надолго. Быстренько сделал пару сайтов на этой CMS. Внес пару хаков. Вместе со всеми следил за эволюцией и переименованием системы в RunCMS.

Вскоре очередной клиент потребовал очередной интернет-магазин. К тому времени сложилась интересная ситуация — я с напарником bigazzzz хорошо знали изнутри RunCMS, многое в ней нравилось (а многое — нет), но магазины, если возникала нужда, строили на сторонних решениях (osCommerce и прочий ад...) Время было, опыт тоже, желания — выше крыши, поэтому решили на базе RunCMS создать свой магазин, в виде модуля для CMS.

Сначала он был простеньким, но с каждым новым сайтом, следуя за пожеланиями заказчиков развивался. Ко второй версии он по объему кода превзошел саму CMS, по функционалу — многих аналогов и получил собственное имя — RunSTORE.

Шли годы, развивался RunSTORE, развивалась и RunCMS, в которую мы тоже старались вносить усовершенствования. Однако случилось странное — зарубежным «владельцам» CMS не понравилось то, что большую часть кода в ней пишут русские разработчики (а главным постепенно стал MichaelXIII). В один прекрасный день «владелец» закрыл репозиторий, уничтожил всю базу кода и выгнал всех разработчиков, заявив, что откатывается на предыдущую версию.

А мы к тому времени успешно продали RunSTORE. Новый владелец строил планов громадьё, но что-то у него не задалось. Результат — нет ни RunSTORE, ни RunCMS, и заняться нечем* -)) А писать хотелось…
*- шутка, заняться всегда есть чем, но хочется ведь и для души что-то сделать...

Так родился форк от RunCMS под названием Ronny CMS.
Да, это тот же Nuke/xoops/Runcms, но наверное, самый современный и цельный из всех имеющихся. А может и нет -))
Читать дальше →

Ответ предыдущему топику. Пиар SendPost.RU

Reading time1 min
Views654
Ребята, ну нельзя же так…

Мы вынашивали эту идею с открытками год.
Полгода — писали сайт, «вылизывая» каждую строчку кода.
Заказывали логотип у художника.
Еще месяц — получали аттестат у Вебмани, ругались с поддержкой Киви по техническим вопросам.

Открывали ООО, получали реальный юридический адрес и реальный московский телефон. Покупали 1С, сажали в офис специально обученную девочку на прием заказов.

Не торопясь открылись, запустили пару пробных кампаний в AdWords и Бегуне. Получили небольшой выхлоп.

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

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

А Вы вчера зарегистрировали домен, набрали картинок из клипарта и запустились.

Отлично, я считаю. Спасибо. Удачи Вам в бизнесе.

P.S. «Я пиарюсь»? Вот оно — SendPost.RU

Вдогонку к предыдущему посту или О разных методах хранения конфигов

Reading time3 min
Views785
Настоящее приложение просто обязано быть конфигурируемым.

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

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

С конфигом связаны две проблемы —
1. Как и где его хранить?
2. Как и откуда его получать?
Взаимосвязь этих проблем прослеживается очень четко, поэтому их можно свести в одну — «Как хранить конфиги?»
Читать дальше →

Читаем мануалы — об одном секрете include

Reading time2 min
Views850
Для тех, кто приходит в мир PHP с С или других языков зачастую бывают откровением некоторые особенности языка, которые описаны в документации, но, тем не менее, часто ускользают из виду.

Сегодня я хочу рассказать о нестандартном (с точки зрения большинства программистов) использовании оператора include в PHP

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

О некоторых аспектах дорожного строительства

Reading time2 min
Views486
Навеяно вчерашним апокалиптичным вечером, который я провел борясь с непогодой на Ярославке.
Личный антирекорд скорости — почти 7 часов от Костромы до МКАДа, и все из-за неожиданного снега.

Введение в тему


Несколько недель назад во Владимирской области на трассе М8 открыли первую очередь объезда печально знаменитых «владимирских горок». Этот участок традиционно считался самым сложным и самым аварийным на всей трассе — около 20 километров крутых подъемов и спусков, резкие повороты, узкая дорога, высокие обочины и постоянно запрещенный обгон.

До открытия объезда не проходило и дня без крупной аварии. Обычный сценарий выглядел так — груженая фура с лесом на первой передаче забирается в гору, через полчаса кто-то не выдерживает и решает обогнать, встречка, печальный финал…

Вот здесь я попытался на карте изобразить как выглядит объезд:
maps.google.ru/maps/ms?ie=UTF8&hl=ru&msa=0&msid=106474660129920883535.0004783ea2139601d1b19&t=h&z=12
Читать дальше →

Как я подключался к 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
Читать дальше →
2

Information

Rating
6,189-th
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity