• Как удалить bucket с 400 миллионами файлов на Amazon S3

      Допустим, у вас в бакете скопилось несколько сотен миллионов файлов (всякое бывает) и вы решили их удалить. Удалить бакет без удаления содержимого нельзя. Удаление самих файлов происходит примерно по 1000 за 2 секунды. Несложно посчитать, что 400 миллионов файлов можно удалить за 9 дней работы браузера без выключения, да еще и заплатить придется за каждую операцию (DELETE хоть и бесплатный, но LIST стоит денег).

      Но есть возможность настроить правила хранения файлов так, чтобы они удалялись автоматически:
      Читать дальше →
    • Фильтр Блума

        И снова здравствуйте! Сегодня я поведаю о фильтре Блума — структуре данных гениальной в своей простоте. По сути, этот фильтр реализует вероятностное множество всего с двумя операциями: добавление элемента к множеству и проверка принадлежности элемента множеству. Множество вероятностное потому, что последняя операция на вопрос «принадлежит ли этот элемент множеству?» даёт ответ не в форме «да/нет», а в форме «возможно/нет».

        Как фильтр это делает?
      • LogLog — находим число уникальных элементов

          Здравствуй, Хабр! Мы с тобой уже побаловались фильтрами Блума и MinHash. Сегодня разговор пойдёт о ещё одном вероятностном-рандомизированном алгоритме, который позволяет с минимальными затратами памяти определить примерное число уникальных элементов в больших объёмах данных.

          Для начала, поставим себе задачу: предположим, что у нас имеется большой объём текстовых данных — скажем, плоды литературного творчества небезызвестного Шекспира, и нам необходимо подсчитать количество различных слов встречающихся в этом объёме. Типичное решение — счётчик с урезанной хеш-таблицей, где ключами будут слова без ассоциированных с ними значений.

          Способ всем хорош, но требует относительно большой объём памяти для своей работы, ну а мы с вами, как известно, неугомонные гении эффективности. Зачем много, если можно мало — примерный размер словарного запаса упомянутого выше Шекспира, можно вычислить используя всего 128 байт памяти.

          Кажется невозможным?
        • Грабли при верстке HTML писем

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

            Ниже список встретившихся нам особенностей и способы их разрешения (как то упорядочить их мне не удалось, поэтому всё идет единым списком)
            Читать дальше →
            • +264
            • 80,6k
            • 77
          • Чудо селекции — Traktor + Ableton

              Пора выполнять обещания :)

              Итак, что мы имеем? Имеем две софтины, обе признанные лидеры индустрии, но каждой чего-нибудь не хватает для счастья. У Ableton не совсем удобная транспортная часть, зато почти полная свобода действия с маршрутизацией аудио и подключаемыми VST-эффектами. У Traktor же наоборот: очень удобная и интуитивно понятная панель управления транспортом, а вот с эффектами напряг. Встроенные, конечно, довольно неплохи по-своему, но их хватает далеко не для всех нужд. Еще для Аблтона треки надо особым образом готовить, а это не всяким по душе, к тому же, иные считают что сводить в Аблтоне слишком просто и не труъ. :)
              Напрашивается мысль — надо их как-то скрестить. Поднапряжем мозги — Трактор позволяет раскидать вывод аудио на разные каналы, а Аблтон позволяет собрать аудио с разных входов. Уже что-то.
              Читать дальше →
            • Аренда сервера для стартапа

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

                К примеру аренда четырехядерного AMD Opteron 2344 HE (1.7 GHz), 4Gb RAM, 2x250GB HDD обойдется в $100, что сравнимо с арендой порта и места в стойке под сервер у нас в стране.
                Читать дальше →
              • Синтез 3D звука :: Clunk

                  Работая над проектом уютненькой аркады, я с сожалением обнаружил что OpenAL отбирает слишком много моего времени. Мало того, что для него пришлось написать менеджер звуков о полутора тысячах строк кода, так ещё и приходилось бороться с разного рода чёрной магией. (Например реализация от nvidia намертво вешала венду) Поэтому, я внезапно решил что потратил на него достаточно времени и написал свой собственный велосипед, который и был успешно обкатан в поле, и выпущен с открытыми исходниками на sourceforge.

                  Вообще, наше ухо не такое уж и хитрое устройство. Позицию источника ухо определяет двумя способами. В горизонтальной плоскости звук приходит в одно ухо чуть раньше чем в другое. Простая тригонометрия умноженная на диаметр головы и дело в шляпе! :)
                  Второй способ уже куда сложнее — голова имеет разную плотность и разные технологические отверстия, следовательно, спектр звука искажается по разному в зависимости от направления вхождения сигнала. Было много попыток сделать эталонную голову(ничего постыдного, даже Стив Джобс делал это), заполнить её желеобразным заменителем мозга и померить искажения эталонного звука, например проект KEMAR из MIT.

                  Мой проект называется Clunk, и умеет практически всё, что необходимо уметь звуковой библиотеке:
                  • Бесконечное количество всего: музыкальных потоков (SDL_Mix умеет только один, например), объектов и именованных источников звука прикреплённых к объектам или слушателю.
                  • Простое апи на c++. (В OpenAL вы вынуждены сами перестраивать сцену, для того чтобы перекинуть 16 источников поближе к слушателю, рестартуя источники (sic), ещё рекомендую посмотреть примерчик «как сделать фоновую музыку на OpenAL», ~полтыщи строк кода =-O ) )
                  • HRTF, HDT описанные выше(собственно 3d звук)
                  • Поддержка всех distance models (падение громкости в зависимости от расстояния) из OpenAL
                  • Опциональная оптимизация под процессоры с технологией SSE
                  • Эффект допплера
                  • Должно работать под всеми платформами где есть SDL, не содержит платформно-зависимого кода.
                  • Лицензия LGPL 2.1 — можно использовать в коммерческих продуктах.


                  Адрес проекта на sf.net: https://sourceforge.net/projects/clunk
                  Если вам интересно, можно смело писать мне в icq, я готов ответить на любые вопросы.