Pull to refresh
27
0
Камашев Максим @ukko

Программист

Send message

CDN своими руками или раздача видеоконтента

Reading time5 min
Views11K
[ Часть I. Доставка видеоконтента ] [ Часть II. CDN своими руками ]

В продолжение темы про доставку видеоконтента: мы обеспечили хранение и обработку контента, как теперь отдать контент таким образом, чтобы он оказался как можно “ближе” к потребителю? Большая часть статьи будет посвящена обобщенному подходу географически распределенной раздачи контента, а в конце в качестве примера описанный подход будет применен к доставке видеофайлов и вещаний конечным пользователям.

Кроме самого факта, что контент был доставлен пользователю, мы должны обеспечить качество доставки контента. Для FLV-файла видео это означает, что скорость, с которой он доставляется пользователю, должна быть выше либо равна битрейта потока, иначе видео у пользователя при просмотре будет «затыкаться».

Кроме того, имеет смысл «приблизить» контент к пользователю географически. Это связано с пропускной способностью каналов (отсутствием иногда хороших магистральных каналов), а также с разницей в стоимости локального и внешнего трафика для конечного пользователя (например, в регионах РФ).

Такой шаг необходимо сделать при желании выйти на международный рынок, а также при региональном развитии внутри РФ. Сегодня в регионах очень часто самыми популярными сайтами являются региональные порталы, которые предоставляют различные сервисы, в том числе и сервис видеохостинга, а их популярность обусловлена как стоимостью трафика, так и скоростью доступа/временем отклика. Можно представить, что пользователь готов подождать открытия страницы, загрузки плеера, но тяжело предположить, что пользователь согласится смотреть видео, которые прерывается из-за постоянной буферизации, или смотреть вещание, которое доходит до пользователя в виде слайдшоу (после пропуска пакетов остались только опорные кадры видео).

Таким образом, осознав необходимость географической распределенности для контента, мы покупаем/арендуем сервера в непосредственной близости от потребителя: в Европе, США, Украине, Екатеринбурге и т.д.

Что же делать дальше?
Total votes 34: ↑33 and ↓1+32
Comments39

Узнаем оператора и регион мобильного телефона

Reading time4 min
Views16K
image
Как то гуляя в интернете наткнулся на интересную ссылку — Коды мобильных операторов. И очень мне захотелось иметь такую базу локально.
Под катом дамп mysql базы, php код для её использования и скрипт парсер для обновления.
Читать дальше →
Total votes 82: ↑68 and ↓14+54
Comments57

USB в VirtualBox

Reading time1 min
Views57K
После установки VirtualBox в Ubuntu не подключаются USB устройства в виртуальных машинах.
Дело в том, что информацию об устройствах VirtualBox берет из файловой системы /proc/bus/usb, которая в Убунте не примонтирована. Чтобы ее смонтировать, пишем в /etc/fstab следующее:
none /proc/bus/usb usbfs devgid=125,devmode=664 0 0
Сохраняем файл, и выполняем в консоли sudo mount /proc/bus/usb
Теперь можно подключать устройства к виртуальным машинам.
Total votes 52: ↑37 and ↓15+22
Comments23

Обработка пользовательких видео

Reading time3 min
Views4.4K
Некоторое время я занимался (и занимаюсь до сих пор) веб-проектом, где необходимо было добавить фичу для загрузки пользовательских видео-роликов. Собственно, какие могут быть пользовательские видео? Очень разного качества и разнообразных форматов. Начиная от обычных flash файлов, которые представляют наименьшую проблему, до различных записей с телефонов. Встала задача — сделать демона, который бы занимался обработкой очереди загруженных файлов и выполнял следующие функции:
— Конвертирование видео в flash формат (FLV), ипользуя VP6 кодек
— Обновление метаинформации видеофайла
— Создание thumbnails из видео
— Дальнейшии манипуляции с БД

Конкретно в этой статье я рассмотрю варианты обработки уже сконвертированного в формат flash видео-ролика. Итак приступим.
Читать дальше →
Total votes 78: ↑74 and ↓4+70
Comments33

Работа с ветками SVN

Reading time6 min
Views187K
Прежде чем приступать вообще к использованию веток, и даже если вы и не думаете их использовать, необходимо прочесть Этот Священный Талмуд.

После того как вы прочли статью о ветках в svnbook, вы уже понимаете для чего нужны ветки, как с ними работать и в каких случаях их необходимо использовать. В принципе, после этого, то, что написано под катом вам уже скорее всего не нужно. Но если вам было лень читать, то может текст ниже вас заинтересует, и вы все таки прочтете статью документации. А может, просто поможет вам лучше понять то, что только что прочли в svnbook-е.
Читать дальше →
Total votes 84: ↑81 and ↓3+78
Comments72

Создание UML по существующему PHP коду

Reading time2 min
Views14K
Когда большинство проектов давно находятся на стадии поддержки, а не разработки, то поддержание документации в актуальном виде зачастую не проводится. Тогда довольно полезно будет получить диаграмму UML по существующему коду. Это также необходимо в случае, если предпроектная документация велась не полностью или проектированию подвергались не все части системы. Вопрос особенно актуален, когда появляется новый разработчик.

В этой статье я рассмотрю 2 скрипта, реализованных на PHP:
  • Консольный скрипт php2xmi
  • Библиотека PHP_UML
Читать дальше →
Total votes 17: ↑15 and ↓2+13
Comments5

Для начала или вводный курс в эзотерический язык

Reading time3 min
Views2.7K
Это конечно же хобби, хотя...

Brainfuck придуман Урбаном Мюллером в 1993 году, в основном для забавы. Уникальный, вполне себе интересный Тьюринг-полный язык программирования с размером компилятора в 240 байт! В нём используется всего лишь 8 команд, каждая из них записывается одним символом. Программа на языке Brainfuck представляет собой последовательность этих самых команд.

Машина, которой управляют команды Brainfuck, состоит из упорядоченного набора ячеек и указателя текущей ячейки, получается что-то вроде стека и смещения в нём. Так же реализована возможность механизма ввода-вывода, далее будет понятно на примере.
Читать дальше →
Total votes 65: ↑50 and ↓15+35
Comments65

Работа с ANSI консолью

Reading time5 min
Views3.9K
imageЧасто ли нужно сделать програму для консоли? Не так часто, да? А вот я последнее время только этим и занимаюсь… Поэтому сделал класс (на самом деле сделал еще очень давно).
Этот класс позволяет выполнять такие простые операции, как подсветка текста, подсветка бэкграунда буквы или текста, установка курсора на нужную позицию, выбор консоли для вывода и ввод текста в консоль.
Читать дальше →
Total votes 63: ↑58 and ↓5+53
Comments43

Оптимизация изображений, часть 3: 4 шага для уменьшения размера файлов

Reading time1 min
Views4.6K
Примечание: ниже расположен перевод заметки Image Optimization, Part 3: Four Steps to File Size Reduction от Stoyan Stefanov. В ней рассматриваются наиболее популярные консольные утилиты для минимизации изображений. Мои комментарии далее курсивом.
Stoyan StefanovОб авторе: Stoyan Stefanov работает веб-разработчиком в команде Yahoo! по исключительной производительности и руководит разработкой инструмента для анализа производительности — YSlow. Он также внес значительный вклад в программы, разрабатываемые с открытым исходным кодом, выступает на конференциях и является техническим писателем: его последняя книга озаглавлена Объектно-ориентированный JavaScript.

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

Текущая заметка посвящена некоторым наиболее часто используемым инструментам, которые можно применить для уменьшения размера изображений. Идея заключается в следующем: мы можем получать все изображения от дизайнера, но не оставлять их в исходном виде, а немного уменьшать в размере, используя указанные ниже инструменты. Это позволит автоматизировать процесс без необходимости глубокого анализа структуры изображения.
Читать дальше на webo.in →
Total votes 108: ↑90 and ↓18+72
Comments19

su или sudo?

Reading time3 min
Views246K
С давних времен многих смущает разнообразие вариантов обеспечения безопасности при выполнении операций с максимальными привилегиями. Например, в официальной документации Ubuntu в качестве команды редактирования рекомендуется использовать что-то вроде sudo nano, а в многочисленных любительских мануалах (в стиле «5 фокусов в командной строке, которые удивят вашу бабушку») для получения root'ового шелла предлагается писать sudo su -. Попробую объяснить, почему такое положение вещей кажется мне неправильным.
Читать дальше →
Total votes 117: ↑105 and ↓12+93
Comments58

Компоновка — начало начал

Reading time5 min
Views15K
В этой статье я расскажу о компоновке элементов интерфейса в PyGTK. Мы будем использовать дизайнер интерфейсов Glade и сделаем первое кросплатформенное приложение на PyGTK.
Читать дальше →
Total votes 53: ↑53 and ↓0+53
Comments25

Свершилось — Jevix 1.0

Reading time2 min
Views2.6K

Jevix — система автоматического применения правил набора текстов (типографика) разработанная в ТМ™ для собственных проектов (Хабр, Кадабра, Дрибблер), с открытым исходным кодом, наделённая способностью унифицировать разметку HTML/XML документов, контролировать перечень допустимых тегов и атрибутов и предотвращать возможные XSS-атаки в коде документов.

В связи с катастрофической нехваткой времени, не смотря на мои обещания, код версии 1.0 выложен только сегодня. Но зато он всё же вышел! Причём вместе с исправлением вчерашнего хабрабага с перечёркиванием текста.

Теперь Jevix доступен на google code. Я не поссорился с Juks — автором perl-версии (если кто что подумал) — просто с google code мне работать проще.
Читать дальше →
Total votes 107: ↑105 and ↓2+103
Comments104

Графические фильтры на основе матрицы скручивания

Reading time6 min
Views43K
UPD: Заголовок изменен, что бы более соответствовать теме статьи

В статье пойдет речь об использовании convolution matrix (матрицы скручивания или матрицы свертки), с помощью которой можно создавать и накладывать на изображения фильтры, такие как blur, sharpen и многие другие.

Cтатья будет интересна не только веб-программистам, но и всем кто так или иначе занимается программной обработкой изображений, поскольку функции для работы с матрицей скручивания имеются во многих языках (точно известно о php и flash). Так же, статья будет интересна дизайнерам, использующим Adobe Photoshop, поскольку в нем имеется соответствующий фильтр (Filter-Other-Custom).

Примеры будут на языке PHP с использованием библиотеки GD. Теория, практика, примеры (осторожно, много картинок!)

под катом
Total votes 100: ↑98 and ↓2+96
Comments37

ЧПУ + GET

Reading time2 min
Views11K
Здравствуйте. Как известно из документации по CI, мы можем задавать controllers и actions через GET параметры (например ?c=stationery&act=contacts), либо использовать ЧПУ (например stationery/contacts), но тогда мы не можем передавать в url get параметры. По моему мнению, это не совсем правильно отказаться от get, т.к. мы не можем сделать универсальный pager (кто сталкивался, думаю, поймет), ни указать сортировку результата. Еще одной нерешенной задачей для меня было сделать расширенный поиск. По идее все параметры поиска задаются в URL, но некоторые поля могут указываться, некоторые нет. Конечно, это все обходится, но самым понятным способом было бы использование get параметров.
Читать дальше →
Total votes 34: ↑21 and ↓13+8
Comments43

Некоторые инженерные практики для улучшения качества web application на PHP

Reading time2 min
Views4.5K
Этот топик мой ответ на жалобу одного человека, что «баги достали».

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

Первые задачи могут быть такие:
  • Обеспечить интеграционное тестирование, чтобы каждое обновление на production не было головной болью.
  • Обеспечить регрессионное тестирование – чтобы выявленные ошибки не возникали опять (отслеживались автоматически).

Читать дальше →
Total votes 65: ↑52 and ↓13+39
Comments57

Правильная интеграция Doctrine в CodeIgniter

Reading time7 min
Views5.3K
Здравствуйте, на днях занялся интеграцией популярного PHP-ORM Doctrine с не менее популярным PHP-фрэймворком CodeIgniter и обнаружил, что официальный способ интеграции, озвученный в кукбуке Doctrine и на вики CodeIgniter вызывает у меня, по меньшей мере, негодование.
Почему ?
Total votes 41: ↑36 and ↓5+31
Comments31

SSH для частого использования

Reading time2 min
Views69K
Наверное, многие из читающих «Linux для всех» пользуются SSH. Я, например, администрирую большое количество UNIX-систем, и, чтобы быстро получить доступ к нужной машине, приходится использовать возможности протокола на уровне, отличном от примитивного.
Читать дальше →
Total votes 155: ↑143 and ↓12+131
Comments120

Jevix: опубликована php-версия 0.9 (beta)

Reading time1 min
Views1.3K


Jevix — средство применения правил набора текстов (типографики), фильтрации тегов и аттрибутов, предотвращения XSS-атак. Jevix предназначен для использования в составе интернет-проектов, публикующих пользовательские материалы, будь то крупная социальная сеть или авторский блог.

Jevix способен полностью взять на себя все возможные проблемы с обработкой пользовательского материала в формате простого текста или HTML.

Читать дальше →
Total votes 49: ↑46 and ↓3+43
Comments93

Автоматизация разработки web проектов в среде UNIX

Reading time2 min
Views1.3K
С какого боку не посмотри, а процесс автоматизации всегда важен. Компаниям он помогает экономить уйму времени-денег, администраторов избавляет от рутины, а людей не посвящённых в детали чужой работы от головной боли.
Я хочу поделиться своим решением по задаче частичной оптимизации и снижения производственных издержек. Мне пришлось написать данный bash скрипт по причинам, которые были озвучены выше. Есть ещё причина,
Хочу сразу предупредить непосвящённых о том, что конфигурация Apache, MySQL может отличаться от приведённой ниже( а так скорее всего и будет). Будьте внимательнее в корректировке путей, когда решите адаптировать этот скрипт под свои цели.

Читать дальше →
Total votes 28: ↑15 and ↓13+2
Comments17

Information

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