Pull to refresh
63
0

User

Send message

Как перетасовать песни?

Reading time4 min
Views14K
Мы здесь в Spotify серьёзно относимся к фидбеку от пользователей. Какое-то время назад мы заметили, что пользователи жалуются на то, что при включенном режиме случайного перемешивания плейлиста порядок песен на самом деле не случаен — например, несколько песен одного и того же исполнителя могут быть воспроизведены одна за другой, при том, что в плейлисте множество песен разных исполнителей. Пользователи спрашивали неужели мы не способны сделать такую простую вещь, как случайный порядок воспроизведения треков? Мы отвечали «Он правда-правда случаен! Мы проверяли!»

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

Наш точка зрения


Ещё в самом первом релизе нашего плеера в нём была функция случайного перемешивания плейлиста. Мы использовали для этого алгоритм Фишера-Йетса — и он давал идеально случайное перемешивание. Но что такое «идеально случайное»? Это значит, например, что мы можем получить один из двух нижеуказанных порядков песен с одинаковой вероятностью (разные цвета означают треки разных исполнителей):

image
Читать дальше →
Total votes 29: ↑29 and ↓0+29
Comments52

Повторное использование кода — как это бывает на практике

Reading time8 min
Views17K
Среди программистов очень популярны разговоры о «повторном использовании кода» — и в основном об этом говорят в позитивном ключе. Нам нравится говорить, что спроектированные нами конструкции являются «универсальными» и «пригодными к использованию в других проектах». Почему это считается хорошей вещью легко понять — всем хочется реализовать следующий проект вдвое быстрее предыдущего за счет использования уже имеющихся наработок.

Но когда дело доходит до этого на практике — чаще всего что-то идёт не так. Есть одна очень умная мысль на этот счёт: «Не пытайтесь делать код переиспользуемым, пока вы не видите как минимум три разных места, где его можно будет применить». Я считаю этот совет очень хорошим — я видел немало ситуаций, когда он помог (или помог бы) избежать одержимости попытками написания переиспользуемого кода там, где проблему можно было решить для одного конкретного случая «здесь и сейчас».

Это указывает нам на изъяны в теории о том, что переиспользование всегда является желанной и благородной целью.
Читать дальше →
Total votes 27: ↑24 and ↓3+21
Comments16

С днём программиста!

Reading time1 min
Views4.4K
Наша компания от всей души поздравляет с профессиональным праздником программистов — людей, чья фантазия способна рождать миры, чьё искусство вызывает восхищение, а трудолюбие позволяет создавать настоящие шедевры. Программист — архитектор и строитель современного цифрового мира, на совести которого лежит его функциональность, скорость и удобство. Так пожелаем же им интересных проектов, достойных свершений и полной творческой самореализации.

Total votes 12: ↑10 and ↓2+8
Comments1

Бесплатный тренинг-практикум по Software Packaging в Житомире

Reading time1 min
Views3.2K
В Житомире 5 августа 2013 года стартует первый тренинг-практикум по Software Packaging. Обучение по программе будет проходить на базе компании «Инфопульс» при поддержке BIONIC University. Приглашаем всех желающих!

image

О курсе


Программа направлена на максимально быстрое и эффективное обучение основам Software Packaging: 173 учебных часа в течение 20-ти учебных дней. Для начинающих программистов. Занятия будут вести главные эксперты «Инфопульса» по этому направлению. Будет немного теории и очень много практики. Слушатели смогут увидеть и попробовать, как все работает в реальных поставках, а также узнать об использовании и разработке инновационных решений для автоматизации рутинных задач.

Читать дальше →
Total votes 10: ↑7 and ↓3+4
Comments2

Поздравляем с днем Программиста!

Reading time1 min
Views6K


Поздравляем всех создателей кода!
Благодаря вам каждый день меняется наш мир и люди получают новые возможности. Чей-то код спасает жизни в больницах, другой позволяет летать, третий экономит время, оставляя всю рутину программам, чей-то помогает людям становится ближе или просто радует, и такие примеры можно приводить бесконечно.
Спасибо вам и счастья, здоровья, удачи и интересных проектов!
Total votes 38: ↑21 and ↓17+4
Comments11

Поздравляем с днем Тестировщика!

Reading time1 min
Views12K
=""

Сердечно поздравляем с днем Тестировщика!
Именно благодаря вам ПО приближается к идеалу!
Хотим пожелать всем, кто работает в тестировании, крепкого здоровья, а также личного и проектного счастья! Пусть и на работе и вне ее вас окружают люди, которые вас ценят и понимают.
Удачи и развития!
Total votes 63: ↑46 and ↓17+29
Comments9

С чего начать изучение Windows Installer?

Reading time7 min
Views53K
Installer pic Технология Windows Installer (MSI) является стандартом де-факто в мире системных администраторов, занимающихся распространением и поддержкой программного обеспечения для десктопных и серверных версий Windows. Формат MSI поддерживается всеми крупнейшими системами управления конфигурациями (Microsoft SCCM, CA Unicenter и многими другими), а для некоторых систем распространения ПО — является единственным поддерживаемым форматом.
Мой опыт работы с этой технологией — как теоретический, так и практический — приобретен за время работы в компании «Инфопульс Украина» и связан с созданием MSI-пакетов и подготовкой готовых MSI-пакетов к автоматической установке в корпоративной среде.
Читать дальше →
Total votes 79: ↑67 and ↓12+55
Comments12

Алгоритм сортировки Timsort

Reading time6 min
Views149K
Timsort, в отличии от всяких там «пузырьков» и «вставок», штука относительно новая — изобретен был в 2002 году Тимом Петерсом (в честь него и назван). С тех пор он уже стал стандартным алгоритмом сортировки в Python, OpenJDK 7 и Android JDK 1.5. А чтобы понять почему — достаточно взглянуть на вот эту табличку из Википедии.



Среди, на первый взгляд, огромного выбора в таблице есть всего 7 адекватных алгоритмов (со сложностью O(n logn) в среднем и худшем случае), среди которых только 2 могут похвастаться стабильностью и сложностью O(n) в лучшем случае. Один из этих двух — это давно и хорошо всем известная «Сортировка с помощью двоичного дерева». А вот второй как-раз таки Timsort.

Алгоритм построен на той идее, что в реальном мире сортируемый массив данных часто содержат в себе упорядоченные (не важно, по возрастанию или по убыванию) подмассивы. Это и вправду часто так. На таких данных Timsort рвёт в клочья все остальные алгоритмы.
Читать дальше →
Total votes 293: ↑286 and ↓7+279
Comments63

Работа с SharePoint Foundation REST Interface с помощью OData и jQuery

Reading time6 min
Views11K

Веб-сервисы в наше время становятся очень популярными. И это понятно, они универсальны. На их основе можно написать кроссплатформенное мобильное приложение на HTML5, сделать гаджет для рабочего стола Windows 7 или просто вывести на сайт список последних новостей.

Я бы хотел продемонстрировать, как можно, совмещая современные технологии, такие как REST-сервис, OData и jQuery, работать с SharePoint 2010 через его стандартный RESTful интерфейс на примере создания небольшой веб-части для поиска и просмотра данных о сотрудниках компании. Главная особенность моего примера — это отсутствие server-side программирования.

Читать дальше →
Total votes 19: ↑15 and ↓4+11
Comments5

Особенности подготовки инсталляции приложения для автоматической (unattended) установки в Windows OS

Reading time7 min
Views16K
image
Перед системным администратором порой стоит задача установить или обновить приложения на множестве ПК. И часто проблема состоит не в выборе средства доставки и автоматической установки — их есть множество на любой вкус, от встроенных в Windows OS (Active Directory) до полноценных Configuration Management систем, таких как MS SCCM, Enteo NetInstall, LanDesk Management Suite, HP Application Deployment Manager, IBM Tivoli Provisioning Manager, ManageEngine Desktop Central и много других…
Читать дальше →
Total votes 46: ↑40 and ↓6+34
Comments19

Сейчас как заавтоматизирую

Reading time3 min
Views18K

Итак, Вам надоело набирать пароли, писать команды, смотреть на скучные обои? А хочется завоевать вселенную и почивать на лаврах? Заставьте роботов трудиться вместо cебя!
Читать дальше →
Total votes 26: ↑16 and ↓10+6
Comments13

Этапы развития компании с точки зрения IT

Reading time4 min
Views26K
Любая компания стремится к развитию и росту доходности. Если у нее при этом есть хоть один компьютер, то развиваясь она проходит через несколько этапов. Все знают, что есть такая штука как ITIL. Многие даже читали :) Но интрига заключается в том, чтобы проводить правильные параллели между ITIL и реальной жизнью — иначе все это останется мертвым грузом в голове менеджера. В ITIL эти этапы определены как Organization Maturity. Сейчас о них и пойдет речь.
Читать дальше →
Total votes 6: ↑6 and ↓0+6
Comments5

Аутсорсинг. Сделано в Украине

Reading time1 min
Views8.4K
Итак, первый пост. До жути важная и ответственная штука. Долго совещались, с чего бы начать. Решили написать, что нас много, и мы разные. Хотя веселее было бы конечно, будь нас здесь трое одинаковых. Сидим за тремя столами, лысые, носим черное и серое, разговариваем хором. Да, круто было бы. Но, тем не менее, нас человек семьсот. Работаем по всей Европе. Некоторые через RDP, некоторые через Люфтганзу. Кто на что учился. Есть правда и общие черты – мы здесь все ИТшники, и читаем Хабр. Теперь вот и писать будем. Пожалуй, это к взаимной пользе. Сами посмотрите.

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

Кстати, забыл упомянуть, кто же это «мы». Мы – это «Инфопульс». Компания такая. Рассказывать долго, проще показать:

Читать дальше →
Total votes 39: ↑25 and ↓14+11
Comments23

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity