Мысли о файловых дубляжах «ВКонтакте»

Если кому интересно почитать про то, как устроена самая большая социальная сеть в России и СНГ (речь, конечно же, о сайте «ВКонтакте»), то вот ссылка на неплохую статью, в которой описывается техническая сторона устройства «Вконтакте».

Дуров и Ко говорят, что фотографии с серверов не удаляются, чтобы избежать излишней фрагментации на жестких дисках, где они хранятся. То, что они не удаляются, печально для пользователей, т.к. они-то думают, что удалили, к примеру, свою фотографию, которую не хотят больше «засвечивать», а на деле оказывается, что она продолжает храниться на серверах. А если возбуждено какое-нибудь судебное разбирательства против пользователя, и фотографии, которые якобы удалены, являются вещественным доказательством в этом деле? Скорее всего, технически проблем не составит поднять эти фото с хардов. Тогда судебное дело, явно, пойдет быстрее. Хотя, возможно, это лишь мои параноидальные мысли и такого никогда не будет. Но извините, зачем тогда вводить человека в заблуждение, писав надпись «фотография удалена»? Я считаю, что данные, публикуемые человеком о себе, при желании от них избавится, должны быть немедленно удалены, а не хранится на задворках жестких дисков. Однако, даже аккаунты «ВКонтакте» не удаляются при запросах в тех.поддержку, куда там про какие-то фотографии.

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

Видео/музыку «ВКонтакте» можно клонировать, нажав кнопку «Добавить это видео/музыку». Опять же, а как происходит это клонирование? Тупо копируются файлы или создается псевдокопия? Скорее всего последний вариант, потому что тогда я не представляю, сколько надо иметь хардов для хранения всей этой информации! Продолжу начатую мысль. Когда мы удаляем видео/музыку, она на самом деле не удаляется. Удаляетя лишь ее псевдокопия, т.е. в БД просто удаляется информация о том, что у аккаунта номер такой-то размещено видео/музыка такое-то. Да, это очень хороший и разумный способ избегать дубляжа медиафайлов.

Однако, все эти подходы рушатся, когда люди загружают музыку/видео, которые по содержанию одинаковы, но отличаются всего лишь на несколько секунд по длине (как вы поняли, под длиной я подразумеваю длительность воспроизведения). Не думаю, что тут можно как-то избавиться от проблемы, ведь она не на столько серьезна, как та, которая описана выше. Все таки таких медиафайлов, одинаковых по содержанию, но разных по длине, гораздо меньше, чем возможных дубляжей на серверах. К примеру, мы имеем при поиске композиции Modern Talking — «You’re my heart, you’re my sou», 2 тыс. треков. Из них 300 треков отличаются длиной (разные миксы, аранжировки и т.п.), остальные же по длине одинаковы. Значит, нам надо хранить на сервере всего 301 файл, 1699 файл — это дубляжи, имеющие всего один оригинал. Конечно, может быть и так, что длина одинакова, но файл по содержанию разный (к примеру, разные аранжировки при одной длине). Но и в этом нет ничего страшного, ведь, как я уже писал, мы проверяем файлы, которые загружаются на сервер, по хешу, а он для разных по содержанию файлов свой уникальный (пока что отбросим в сторону проблему коллизии хешей).

Многие одинаковые медиафайлы «ВКонтакте» имеют разные названия. Т.е. один и тот же файл может быть назван на сайте пользователем по-разному. Опять же, это не значит, что раз названия разные, то на сервере должны держаться копии одного и того же. Скорее всего, «ВКонтакте» сделано что-то вроде такого (если нет, то я бы так сделал):

БД -> аккаунт пользователя -> таблица размещенных медиафайлов -> ссылка на оригинальный медиафайл; название файла, введенное пользователем.

Хотя, если вот поизучать ссылки на медиафайлы «ВКонтакте», не трудно увидеть, что для одинаковых и полностью идентичных файлов ссылки-то разные:

http://cs5022.vkontakte.ru/u79238645/audio/eecf467a2aa0.mp3
http://cs4719.vkontakte.ru/u3304845/audio/3f4af3db6dea.mp3

Т.е. получается, что «Вконтакте» все-таки использует дубляжи?

О том, где скачать книги для iPad

Есть очень хороший сайт, где можно скачать бесплатно много интересных книг в формате ePub (Electronic Publication). Большой тематический каталог, неплохой (хотя, можно было бы и усовершенствовать) поиск по фрагментам названия литературы и автора. Остается только загрузить нужную книгу и синхронизировать ее со своим iPad‘ом через iTunes, после чего предаваться чтению где-нибудь в кресле, перед камином, в котором слегка потрескивают дровишки.

Список CSS Framework’ов

Слово Framework известно многим. Предположу, что в основном эта известность появилась благодаря Microsoft .NET Framework, из-за которого некоторые программы для ПК просто отказываются работать. Даже у нас на форуме люди часто спрашивают, почему не работает та или иная утилита для игры, приходится отвечать — установите последний .NET Framework, потому что эти утилиты писались с использованием библеотек, которые встроены в фреймворк. Если на компьютере нету фреймворка с этими библиотеками, то, понятно, программа и не заработает.

Но, на самом-то деле, фреймворк, естественно, дот нетом не ограничивается. Фреймворк, по сути, это каркас чего-то. Сегодня хочется поговорить о фреймворках CSS, которые, безусловно, в граммотных руках верстальщика, сохраняют кучу часов работы, упращаюет работу и позволяет быстро реализовывать верстку.

Плюсы использования CSS фреймворков:

  • увеличивается продуктивность, избегаются частые ошибки;
  • код становится более правильным и понятным;
  • хорошо документированный css фреймворк позволяет эффективней работать в команде;
  • в случае хорошего фреймворка, код будет правильно работать во всех браузерах;
  • на выходе получается хорошо структурированный код.

Минусы использования CSS фреймворков:

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

Далее приводится список доступных на сегодняшнее время CSS фреймворков, одни из которых по своему функционалу громадны и раздуты, другие — легки и аскетичны.

Русскоязычные:

  1. CSS Framework
  2. m5 CSS Framework


Зарубежные:

  1. Blueprint CSS
  2. BlueTrip CSS Framework
  3. Compass CSS Framework
  4. CleverCSS
  5. Grid Designer
  6. Grid System Generator
  7. EZ-CSS
  8. Elements CSS Frameworks
  9. LESS CSS Framework
  10. Logic CSS
  11. Markercss
  12. The jQuery UI CSS Framework
  13. Tripoli CSS Framework
  14. YAML CSS Framework
  15. Yahoo UI Grid CSS
  16. 960 Grid System

Корпоративный гимн МТС

@adme_ru запостил в твиттер ссылку на страничку, где собраны, по его утверждению, самые идиотские корпоративные гимны. От соблазна посмотреть не удержался, и вот что в конце статьи я увидел:

Остальные гимны слушать не стал, мне хватило одного этого видео, чтобы поднять себе настроение на весь вечер. Я смотрю, у них там в отделе один мужик работает, а все остальные представительницы прекрасного пола. Совсем не дурно, я бы сказал… У меня была такая же мечта, когда я поступал в университет, но, к сожалению, этого не свершилось. Оказалось все совсем наоборот =(

Ссылки на сервисы для работы с Twitter

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

1. 10 полезных сервисов для управления своим Twitter-аккаунтом
2. Онлайн сервисы для автоматизации работы с Twitter
3. Огромная база сервисов твиттера

Из сервисов для управления друзьями, последователями и фанатами, я использую refollow.com (раньше был бесплатным, потом сделали платным, потом опять бесплатным) и friendorfollow.com.

Про домены первого уровня

Сегодня чисто случайно наткнулся на домен первого уровня (он же еще называется доменом верхнего уровня) — http://www.ru. Нет привычного для многих людей «точка ру», и тому подобного. Если бы мы приписали в конце адреса .ru, то получили бы уже домен второго уровня.

Для эксперимента я подставлял после www (если пробовать писать без www, сразу после http, то ничего не получится) известные домены com, info, org и др., многие из них ведут на какой-нибудь сайт. К примеру, http://www.org ведет на сайт W3C (World Wide Web Consortium).

О штрих-кодах

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

В настоящее время существует большое число различных вариантов реализации штрих-кодов, но все они основаны на последовательности чёрных и белых полосок, которые потом считывает специальное устройство — сканер. Наиболее из распространенных видов  штрих-кодов являются американский «Универсальный товарный код» UPC и «Европейская система кодирования» EAN. Согласно той или иной системе, каждому виду изделия присваивается свой номер, состоящий чаще всего из 13 цифр (EAN-13). Данные цифры представляют собой закодированную информацию о некоторых наиболее существенных параметрах продукции.

Вот небольшой пример. Пусть штриф-код состоит из следующей последовательности чисел — 3000376211205. Тогда:

30 — первые две цифры означают страну происхождения (изготовителя или продавца) продукта;
00376 — следующие пять — предприятие-изготовитель;
21120 — еще пять — наименование товара, его потребительские свойства, размеры, массу, цвет;
5 — последняя цифра — контрольная, используемая для проверки правильности считывания штрихов сканером.

Контрольная сумма, которая свидетельствует о подлинности товара, высчитывается следующим образом:

1. Складываются цифры, стоящие на четных местах.
2. Полученная сумма умножается на три.
3. Складываются цифры, стоящие на нечетных местах, кроме контрольной цифры.
4. Складываются полученные в пунктах 2 и 3 цифры.
5. Отбросываются десятки.
6. Из числа десять вычитается полученная в пункте 5 цифра.

Стоит отметить, что число цифр в штрих-коде, отводимых на каждый пункт, описанный выше, может варьироваться. К примеру, страну происхождения могут идентифицировать не две, а три первые цифры. Так, для России отводятся три цифры (диапазон кодов страны от 460 до 469), код предприятия составляет 6 цифр, номер товара в линейки придприятия — 3 цифры.  Таким образом, получается что в нашей стране может быть зарегистрировано не более 1000000 предприятий (6 цифр), каждое из которых может выпускать не более 1000 наименований продукции.

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

Полезные ссылки по теме: ean.ru и barcoding.com.

О том, как отстоять свое авторство

Нашел в сети интересный рассказ о том, как один человек судился с издательским домом, который выпускает газету «Комсомольская правда». Суть судебного разбирательства в том, что в одном из выпусков «Комсомолки» была размещена фотография без разрешения автора. Автор той самой фотографии, как он пишет, совершенно случайно увидел свой снимок в газете, и был неприятно удивлен. В своем рассказе он повествует о том, как проходили судебные заседания и с какими неприятностями ему пришлось столкнуться при защите своих авторских прав на фотографию, а также дает полезные советы, которые возможно помогут избежать бюрократических проволочек при рассмотрении подобных судебных дел.

О том, как скачать видео с YouTube в Chrome

Для Opera и Firefox существует достаточно много плагинов (они же «расширения») для скачивания видео с сервиса YouTube. Однако для браузера Google Chrome, на первый взгляд, найти расширение, имеющее функционал, описанный выше, трудно, по той простой причине, что модераторы не пускают подобные вещи на официальный сайт расширений для Chrome. Тут и немудрено, ведь скачивать видео с YouTube не то, что запрещено политикой Google, но просто как-то не одобряется (хотя, правила использования их сервиса не читал, может, и правда запрещено скачивать ролики?). Поэтому расширения для скачки видео для Chrome следует искать в других, не официальных местах.

Первый же поиск дал необходимый результат — расширение под лаконичным названием YouTube Video Download. После установки расширения, он интегрирует кнопочку «Скачать» на страницу видео-ролика в YouTube, после чего можно уже приступать непосредственно к самой закачки (на выбор дается несколько вариантов форматов видео, которое можно загрузить).