Search
Write a publication
Pull to refresh
8
Павел Жарчинский @4ubakaread⁠-⁠only

User

Send message

Принцип открытости-закрытости

Reading time14 min
Views56K

Привет, Хабр! Перед вами перевод статьи Роберта Мартина Open-Closed Principle, которую он опубликовал в январе 1996 года. Статья, мягко говоря, не самая свежая. Но в рунете статьи дяди Боба про SOLID пересказывают только в урезанном виде, поэтому я подумал, что полный перевод лишним не будет.



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


  • Ни одну программу нельзя «закрыть» на 100%.
  • Объектно-ориентированное программирование (ООП) оперирует не физическими объектами реального мира, а понятиями — например, понятием «упорядочивание».
Читать дальше →

PHP Xdebug proxy: когда стандартных возможностей Xdebug не хватает

Reading time9 min
Views9.8K

PHP Xdebug proxy: когда стандартных возможностей Xdebug не хватает


Для отладки PHP-программ часто используют Xdebug. Однако стандартных возможностей IDE и Xdebug не всегда достаточно. Часть проблем можно решить с помощью Xdebug proxy — pydbgpproxy, но всё же не все. Поэтому я реализовал PHP Xdebug proxy на базе асинхронного фреймворка amphp.


Под катом я расскажу, что не так с pydbgpproxy, чего в нём не хватает и почему я не стал его дорабатывать. Также объясню, как работает PHP Xdebug proxy, и покажу на примере, как его расширять.

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

Какой бывает HTML5-стриминг (и почему mp4-стриминга не существует)

Reading time6 min
Views55K
image

Нередко клиенты спрашивают, умеет ли наш сервер «mp4-стриминг в HTML5». В 99% случаев спрашивающий не понимает о чём говорит. В этом сложно винить клиентов: из-за путаницы с терминами, технической сложности и большого разнообразия вариантов стриминга запутаться очень легко.

В этой статье мы расскажем, какой бывает HTML5-стриминг, какие варианты хорошие, и почему, чёрт побери, нельзя говорить «mp4-стриминг».
Читать дальше →

Полезные инструменты, туториалы и ресурсы

Reading time4 min
Views16K
Созданый Райаном Далем в 2009 году, Node.js — относительно новая технология, завоевавшая в последнее время большую популярность среди веб-разработчиков. Однако, до сих пор не каждый знает, что на самом деле Node.js это серверная JavaScript среда, использующая асинхронную событийную модель. Что это означает? Все просто: это среда, которая предназначена для написания масштабируемых, высокопроизводительных приложений. Почти как Ruby’s Event Machine или Python’s Twisted, но гораздо глубже — JavaScript реализовывает цикл событий, на уровне самого языка, а не как отдельная библиотека.



И это еще не все: то, что действительно круто в Node.js — это тысячи модулей, доступных для любых целей, а также активниешее сообщество этого молодого проекта. В этом обзоре вы найдете самые полезные ресурсы по Node.js, от просто удобных инструментов и подробных руководств, до углубленных статей и ресурсов о этой перспективной технологии. Используете ли вы Node.js? Поделитесь опытом в комментариях к этотому посту!

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

Sharding – patterns and antipatterns

Reading time23 min
Views34K


Константин Осипов ( kostja ), Алексей Рыбак ( fisher )


Константин Осипов: Доклад родился из следующего разговора. Я, как всегда, пытался убедить Алексея больше использовать Tarantool, а он сказал, что там до сих пор нет шардинга и, вообще, неинтересно. Тогда мы стали рассуждать о том, почему нет. Я стал рассказывать, что тут нет одного универсального решения, автоматика полная за вас работает, а вы только кофе на работе пьете и все…

Поэтому родился этот доклад — чтобы посмотреть на то, какой бывает шардинг, какие методы в каких системах используются, какие преимущества и недостатки, почему нельзя одной «серебряной пулей» все решить?

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

Adobe выпустила конвертер Flash в HTML5

Reading time1 min
Views17K


Adobe выпустила новый экспериментальный инструмент под кодовым названием Wallaby для преобразования Flash в HTML5.

Wallaby — это AIR-приложение с очень простым интерфейсом, позволяющим легко конвертировать fla-файлы в HTML5-код. Преобразованный контент можно просматривать в браузерах на движке WebKit, включая Google Chrome и Safari.

Технология была представлена на конференции Adobe MAX осенью прошлого года. Теперь пользователи могут свободно получить доступ к Wallaby на Adobe Labs.

Загрузка контента через YQL

Reading time1 min
Views5.5K
Возможно для вас, как и для меня, станет новостью то, что используя язык запросов Yahoo! Query Language — можно выдрать контент практически с любой страницы непосредственно в браузере (через javascript). Т.е. отпадает необходимость в использовании сервер-сайд кода и библиотек типа curl.

Выглядит это примерно так:
DELETE FROM HTML WHERE 1=1

Даже больше. YQL позволяет выполнять GET и POST HTML запросы.

Как это использовать — да по разному. Вот, для наглядности/примера — украл яндекс) (view source code вам поможет). Можно подглядеть информацию, закрытую корпоративным фаерволом.
А можно и поиграться с кросс-доменными запросами.
Тут уж у кого какая фантазия.

«Регулярные выражения» или «Просто о некрасивом»

Reading time8 min
Views4.3K

«Регулярные выражения» или «Просто о некрасивом»




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

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

OAuth: описание протокола простым и понятным языком

Reading time16 min
Views201K
OAuth — популярный протокол, который позволяет социальным сервисам интегрироваться между собой и дает безопасный способ обмена персональной информацией. OAuth может связать между собой 2 сервиса, каждый из которых имеет свою пользовательскую базу — именно их я в данном случае называю «социальными». Когда начинаешь работать с OAuth, первое ощущение — что протокол весьма сложен и избыточен. В этой статье я попытаюсь объяснить основы OAuth человеческим языком.

Пример кросс-авторизации


Вернемся в 2005-й год и представим, что мы пишем социальную сеть. В ней имеется форма импорта контактов из адресной книги GMail. Что нужно для доступа к контактам GMail? Конечно, логин и пароль от ящика. Но если мы попросим ввести их на нашем сайте, пользователь заподозрит неладное. Где гарантия, что мы не сохраняем на сервере введенные пароли? Поэтому нам хочется, чтобы пароль вводился только на сайте GMail, и после этого доступ к контактам через API GMail предоставлялся нашей социальной сети (возможно, на время).
Под катом - повествование с примерами

20 инструментов для мониторинга Твиттера

Reading time3 min
Views47K

Существует огромное количество разнообразных сервисов для Твиттера. Здесь я отобрал те из них, которые будут полезны для сбора статистики.


Внимание, под катом много картинок!

Эксперимент Милгрэма

Reading time4 min
Views44K
image

В 1963-м году профессор Йельского университета Стэнли Милгрэм решил провести эксперимент. Он хотел узнать, как в годы Второй Мировой войны немецкие граждане, фактически против своей воли, исключительно по приказу свыше, могли уничтожать миллионы людей в концлагерях. Милгрэм предполагал, что жители Германии изначально склонны к повиновению, поэтому даже несмотря на моральные страдания всегда будут подчиняться.

Перед поездкой в Германию Милгрэм решил провести один пробный эксперимент в США. Его результаты показали, что в Германию можно уже не ехать…
Читать дальше →

Подкастинг, Wordpress, iTunes за 10 минут

Reading time5 min
Views35K
title

Как вы уже знаете, самый простой способ начать подкастерскую деятельность это воспользоваться услугами любого подкаст-терминала или подкаст-хостинга. Как правило, это бесплатно (или недорого) и удобно. Но для многих важна независимость и ответственность за размещение подкаста и генерацию фида (rss feed) они берут на себя. В этой статье я расскажу (практически покажу на картинках) как за 10 минут:
  • создать блог для подкаста
  • создать rss-ленту с возможностью добавлять новые выпуски просто и удобно
  • добавить ваш подкаст в каталог iTunes

Статья расчитана на новичков как в подкастинге, так и в cms и wordpress. Если вы знакомы с такими системами, то вам будет достаточно взгялнуть на картинки и все.
Читать дальше →

Полный html-код для вывода списка регионов России

Reading time14 min
Views8.1K
При создании формы, в строке «регион» потребовалось сделать перечисление регионов. Поискав в сети подобного списка, да ещё к тому же совпадающего с текстом Конституции, не нашёл. В итоге создал свой. Делюсь им со всеми желающими.

1. Важно — регионов сейчас 83 (upd!). Не все программисты заметили, что в последние годы некоторые регионы успели объединиться. Под катом html-код.

2. Создал три варианта для Value. Один по названиям регионов, второй по автомобильным кодировкам, третий — по ISO. Регионы отсортированы по тому, как идут в Конституции, однако у новообъединённых регионов вроде Забайкальского края, код не соответствует положению.

UPD: регионов всё-таки 83. Прошу прощения. Код поправлен.
UPD: создан третий вариант с ISO-3166-2 в качестве ID и Value для регионов.
UPD: добавил недостающие названия республик.

Пожалуйста, пользуйтесь.
Читать дальше →

23 логотипа со скрытым смыслом

Reading time4 min
Views157K
Логотипы не всегда являются тем, чем они кажутся. Некоторые из таких логотипов могут содержать в себе много информации о бренде, и всё что вам нужно сделать — вглядеться в детали. Я выбрал двадцать три отличных логотипа, у которых есть такое «скрытое послание». Я уверен, что ранее вы видели некоторые из этих «скрытых посланий», но надеюсь, что смогу показать новые.

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

Теперь Google Analytics работает Асинхронно

Reading time3 min
Views5.5K
Новый код выглядит вот так:
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXX-X']);
_gaq.push(['_trackPageview']);

(function() {
 var ga = document.createElement('script');
 ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
   'http://www') + '.google-analytics.com/ga.js';
 ga.setAttribute('async', 'true');
 document.documentElement.firstChild.appendChild(ga);
})();

Это значит, что гугл.аналитикс больше не замедлит загрузку вашего сайта :)
UPD: То есть, он скачивал свой 24кб ga.js во время загрузки страницы, теперь он это может делать после…
Но после первой загрузки, он обычно закэширован и на всех остальных сайтах используется один и тот же :)

Материалы по теме:
Под катом бонус, код для русских поисковиков

Регистрируем электронное СМИ

Reading time3 min
Views41K
imageРано или поздно, владельцы сайтов начинают задумываться о защите своих прав на контент. Кроме того, сайты создающие собственный контент заинтересованы в облегчении получения авторских материалов. Всему этому может способствовать регистрация СМИ, в нашем случае – электронного.
Читать дальше →

Релиз KPHP и движков

Reading time6 min
Views164K
Довольно часто, выступая на различных конференциях, мы делились желанием выпустить под открытой лицензией KittenPHP, согласно традиции, заложенной крупными IT-компаниями, такими как Google и Facebook.

Это событие несколько раз откладывалось в связи с опасением, что нам не хватит сил и времени на взаимодействие с opensource-сообществом, однако в конце концов заветный день настал, и код KPHP и некоторых других инструментов, используемых внутри проекта, был выложен в открытый доступ.

В связи с этим под катом вас ждет более подробный рассказ о внутреннем устройстве ВКонтакте и тех инструментах, которые сегодня стали доступны opensource-сообществу.


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

Пространства имен в PHP, разъяснение

Reading time5 min
Views125K
Прим.пер.: Я в курсе, что на момент перевода актуальная версия PHP — 5.5, а также что есть мудрая книга мануал. Но мне показалось интересным, то как автор преподносит namespace функционал, возможно кому-то из тех, кто только постигает азы (да и не только, есть немало бородатых разработчиков, остановившихся на PHP 5.2), статья поможет проникнуться. Ходор.

В PHP, начиная с версии 5.3 появились пространства имен. Большинство современных языков уже давно заимели себе такой функционал, но PHP немного опаздывал. Тем не менее, у каждой новой функции есть свое предназначение, давайте выясним, какие выгоды мы можем извлечь, используя namespace.

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

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

1% всех сайтов рунета держит свой memcached открытым для мира. Немного статистики

Reading time3 min
Views74K
How do I authenticate?
You don't!

это цитата из FAQ memcached.

Да, в memcached по умолчанию не предусмотрено системы аутентификации, и администратор сам должен сделать маленький шажок, чтобы закрыть свой сервер от свободного доступа. Например, запустить его на 127.0.0.1, или воспользоваться фаерволом. Сколько же сайтов рунета это сделали?
Узнать подробности

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity