Сегодня – вторая серия цикла, начатого в прошлый раз; тогда мы поговорили о направленных графических вероятностных моделях, нарисовали главные картинки этой науки и обсудили, каким зависимостям и независимостям они соответствуют. Сегодня – ряд иллюстраций к материалу прошлого раза; мы обсудим несколько важных и интересных моделей, нарисуем соответствующие им картинки и увидим, каким факторизациям совместного распределения всех переменных они соответствуют.
hemule @hemule
User
Одно предложение, которое делает нас сильнее
2 min
93K Это мой самый короткий топик, суть которого в одном предложении. Часто именно с этого предложения начинается успешный стартап, бизнес и любое другое начинание.
Это шаблон описания сути вашей компании или проекта в одном предложении. Я открыл его для себя во время стажировки в США. Составив его, мы реально становимся сильнее. В последствии мне это помогло выбрать правильный курс, сфокусироваться и расставить приоритеты.
Это шаблон описания сути вашей компании или проекта в одном предложении. Я открыл его для себя во время стажировки в США. Составив его, мы реально становимся сильнее. В последствии мне это помогло выбрать правильный курс, сфокусироваться и расставить приоритеты.
+138
Практика рефакторинга в больших проектах
4 min
14KНекоторое время назад я попал в геймдев, где столкнулся с проектами по 2 млн. строк кода, которые пишут десятки программистов. При таких масштабах кодобазы возникают проблемы неведомого мне ранее характера. Об одной и них я хочу вам сейчас рассказать.
Итак, представьте себе следующую ситуацию. Так уж случилось, что вам надо отрефакторить очень большой кусок кода, целую подсистему. Строк, эдак, на 200К. Причем рефакторинг явно выглядит очень крупным, затрагивающим базовые концепции, по которым построена ваша подсистема. Фактически надо переписать всю архитектуру, сохранив бизнес логику. Такое бывает, если, например, вы сделали один проект и у вас впереди новый, и вы хотите в нём исправить все ошибки прошлого. Допустим, по первым прикидкам, на рефакторинг надо месяца 2, не меньше. В процессе рефакторинга всё должно работать, в том числе нельзя мешать другим программистам добавлять новые фичи и чинить баги в подсистеме. Часто такой рефакторинг бывает насколько сложен, что совершенно невозможно замерджить старый код в новый, а также невозможно выкатить результат по частям. Фактически вам надо заменить двигатель самолёта на лету.
Примеры из практики, как моей, так и моих коллег:
Что делать? С какой стороны подойти к проблеме? Ниже представлен набор советов и практик, которые нам помогают справиться с этой проблемой. Сначала более общие слова, а потом конкретные методики. В общем-то ничего сверхъествественного, но кому-то может помочь.
Итак, представьте себе следующую ситуацию. Так уж случилось, что вам надо отрефакторить очень большой кусок кода, целую подсистему. Строк, эдак, на 200К. Причем рефакторинг явно выглядит очень крупным, затрагивающим базовые концепции, по которым построена ваша подсистема. Фактически надо переписать всю архитектуру, сохранив бизнес логику. Такое бывает, если, например, вы сделали один проект и у вас впереди новый, и вы хотите в нём исправить все ошибки прошлого. Допустим, по первым прикидкам, на рефакторинг надо месяца 2, не меньше. В процессе рефакторинга всё должно работать, в том числе нельзя мешать другим программистам добавлять новые фичи и чинить баги в подсистеме. Часто такой рефакторинг бывает насколько сложен, что совершенно невозможно замерджить старый код в новый, а также невозможно выкатить результат по частям. Фактически вам надо заменить двигатель самолёта на лету.
Примеры из практики, как моей, так и моих коллег:
- Переделать всю работу с базой данных с чистого JDBC на Hibernate.
- Переделать архитектуру сервиса с отсылки-приёмки сообщений на удалённый вызов процедур (RPC).
- Полностью переписать подсистему трансляции XML файлов в рантайм объекты.
Что делать? С какой стороны подойти к проблеме? Ниже представлен набор советов и практик, которые нам помогают справиться с этой проблемой. Сначала более общие слова, а потом конкретные методики. В общем-то ничего сверхъествественного, но кому-то может помочь.
+45
Оптимизация графики для Retina-экранов
7 min
211KTranslation
После недавнего выпуска Retina MacBook Pro и The new IPad, экраны с увеличенной плотностью пикселей начали активно входить в нашу жизнь. Что это значит для веб-разработчиков?
Для начала разберемся в терминологии.
Для начала разберемся в терминологии.
Физические пиксели
+120
Рекомендательные системы: постановка задачи
5 min
31KВсем привет! Меня зовут Сергей, я математик, и я определяю развитие рекомендательной системы Surfingbird. Этой статьёй мы открываем цикл, посвящённый машинному обучению и рекомендательным системам в частности – пока не знаю, сколько в цикле будет инсталляций, но постараюсь писать их регулярно. Сегодня я расскажу вам, что такое рекомендательные системы вообще, и поставлю задачу чуть более формально, а в следующих сериях мы начнём говорить о том, как её решать и как учится наша рекомендательная система Tachikoma.
+22
Обучаем компьютер чувствам (sentiment analysis по-русски)
12 min
84KSentiment analysis (по-русски, анализ тональности) — это область компьютерной лингвистики, которая занимается изучением мнений и эмоций в текстовых документах. Недавно на хабре появилась статья про использование машинного обучения для анализа тональности, однако, она была настолько плохо составлена, что я решил написать свою версию. Итак, в этой статье я постараюсь доступно объяснить, что такое анализ тональности, и как реализовать подобную систему для русского языка.
+80
Торговля знает, когда вы ждете ребенка
5 min
71KОднажды в магазин Target зашел мужчина и потребовал вызвать менеджера. В своих руках он сжимал огромную кипу купонов магазина, полученных его дочерью.
«Моя дочь получила это по почте! – прокричал он. – Она еще в школу ходит, а вы посылаете ей купоны на детскую одежду и памперсы? Да как вы смеете! Вы хотите таким способом побудить школьниц рожать?»
Менеджер посмотрел на пачку купонов на материнскую одежду, детскую мебель – действительно, они были адресованы дочери рассерженного мужчины. Менеджер принес свои извинения.
Через несколько дней он позвонил мужчине, чтобы еще раз извиниться. По телефону голос отца звучал растерянно. «Знаете, я серьезно поговорил с дочерью, и выяснилось, что в моем доме происходило то, о чем я совершенно не догадывался. Она рожает в августе. Примите мои извинения».
Как Target узнал, что дочь беременна до того, как об этом стало известно ее отцу? Ответ прост – благодаря системе прогнозирования беременности (pregnancy prediction system), разработанной аналитиком компании Эндрю Полом. Под катом – обо всем по порядку.
«Моя дочь получила это по почте! – прокричал он. – Она еще в школу ходит, а вы посылаете ей купоны на детскую одежду и памперсы? Да как вы смеете! Вы хотите таким способом побудить школьниц рожать?»
Менеджер посмотрел на пачку купонов на материнскую одежду, детскую мебель – действительно, они были адресованы дочери рассерженного мужчины. Менеджер принес свои извинения.
Через несколько дней он позвонил мужчине, чтобы еще раз извиниться. По телефону голос отца звучал растерянно. «Знаете, я серьезно поговорил с дочерью, и выяснилось, что в моем доме происходило то, о чем я совершенно не догадывался. Она рожает в августе. Примите мои извинения».
Как Target узнал, что дочь беременна до того, как об этом стало известно ее отцу? Ответ прост – благодаря системе прогнозирования беременности (pregnancy prediction system), разработанной аналитиком компании Эндрю Полом. Под катом – обо всем по порядку.
+111
API карт от 2ГИС: рецензия
10 min
12KНедавно 2ГИС порадовал всех нас выспуском версии 1.0 собственного картографического JS API. API карт отечественного производства — штука редкая; Mail.ru и Rambler, например, так и не сподобились, хоть и обещали (пруф раз, пруф два). Посмотрим, что получилось у новосибирцев.
Не будем откладывать в долгий ящик, открываем раздел "Быстрый старт" и копируем предложенный код. It works! Правда, заголовок показывает кракозябрами — оно, правда, и не удивительно, поскольку тэга с указанием charset-а нет. Ну да ладно, мелочи жизни. Смотрим на код.
Знакомимся
Не будем откладывать в долгий ящик, открываем раздел "Быстрый старт" и копируем предложенный код. It works! Правда, заголовок показывает кракозябрами — оно, правда, и не удивительно, поскольку тэга с указанием charset-а нет. Ну да ладно, мелочи жизни. Смотрим на код.
+56
Картина и гвозди
1 min
6.1KИмеется картина, к которой двумя концами привязана длинная веревка. Требуется повесить её на N вбитых в стену гвоздей так, чтобы при вытаскивании из стены одного любого гвоздя картина и веревка падали.
Веревка имеет пренебрежимо малую толщину, не рвётся и нерастяжима, гвозди не гнутся и перпендикулярны стене, трения нет. Одним словом, задача решается без всяких хитростей и уловок.
Веревка имеет пренебрежимо малую толщину, не рвётся и нерастяжима, гвозди не гнутся и перпендикулярны стене, трения нет. Одним словом, задача решается без всяких хитростей и уловок.
+48
REST vs SOAP. Часть 1. Почувствуйте разницу
6 min
477KНекоторое время назад я гуглил интернет по поводу “REST vs SOAP”, прочитал пару статей и вроде бы все понял, но не почувствовал от этого никакого удовлетворения. Что-то было не так, то ли я не почувствовал основную идею, то ли просто читал, одновременно слушая новый музон и думая о новой фиче в проекте. Как появилось время, решил восполнить этот пробел, заодно написав полезную статью по этому поводу.
+95
Монетизация Facebook, LinkedIn, Twitter, Groupon и VK
3 min
8.6KНа этих выходных, а именно 8 октября 2011 года, я выступал на конференции Lviv iCamp 2011 (кстати, большое спасибо организаторам, очень качественное мероприятие, на которое я приезжаю уже второй год подряд) с двумя докладами, первый назывался «Стоимость создания сайта и его обслуживания», второй «Монетизация социальных сетей». Про структуру стоимости создания сайта я напишу отдельным постом, а вот некоторые самые интересные данные по монетизации социальных сетей, в частности Facebook, LinkedIn, Twitter, Groupon и VK, выложу в этом посте.
Информация взята из 4 части моего большого исследования «Все о социальных сетях»:
Первая часть доклада (рус): «Все о социальных сетях. Влияние на человека [1/4]»;
Первая часть доклада (англ): «Everything About Social Networks. Impact on a Person [1/4]»;
Вторая часть доклада (рус): «Все о социальных сетях. Перспективы развития [2/4]»;
Третья часть доклада: «Все о социальных сетях. Технологии [3/4]»;
Четвертая часть доклада: «Все о социальных сетях. Монетизация [4/4]».
Полный текст исследования с формулами и расчетами будет доступен через 2-3 недели по этому адресу. Желающие могут скачать презентацию моего доклада целиком (*.ppt, 1 mb).
Перед расчетами одно небольшое пояснение: показатель «окупаемость» рассчитывался как отношение чистой прибыли за прошлый год к текущей стоимости компании и не учитывает ряда данных, таких как рост прибыли, инфляция и т.д. Он показан исключительно в целях сравнения разных проектов. Все остальные показатели рассчитаны точно.
Прибыльность: 1,86$ млрд. за 2010 г., чистая прибыль 550$ млн. Сеть прибыльна.
Доход на пользователя: 2,65$ в год.
Стоимость компании: 75,3$ млрд.
Стоимость пользователя: 107,5$.
PR ratio: 40,48 годовых оборотов.
Окупаемость: 136,9 лет.
Три основных способа монетизации:
1. Прямая реклама (50%+)
2. Игровые приложения
3. Виртуальные подарки
Рост доходов за 2010 год: 2,65 раз.
Информация взята из 4 части моего большого исследования «Все о социальных сетях»:
Первая часть доклада (рус): «Все о социальных сетях. Влияние на человека [1/4]»;
Первая часть доклада (англ): «Everything About Social Networks. Impact on a Person [1/4]»;
Вторая часть доклада (рус): «Все о социальных сетях. Перспективы развития [2/4]»;
Третья часть доклада: «Все о социальных сетях. Технологии [3/4]»;
Четвертая часть доклада: «Все о социальных сетях. Монетизация [4/4]».
Полный текст исследования с формулами и расчетами будет доступен через 2-3 недели по этому адресу. Желающие могут скачать презентацию моего доклада целиком (*.ppt, 1 mb).
Перед расчетами одно небольшое пояснение: показатель «окупаемость» рассчитывался как отношение чистой прибыли за прошлый год к текущей стоимости компании и не учитывает ряда данных, таких как рост прибыли, инфляция и т.д. Он показан исключительно в целях сравнения разных проектов. Все остальные показатели рассчитаны точно.
Монетизация Facebook
Прибыльность: 1,86$ млрд. за 2010 г., чистая прибыль 550$ млн. Сеть прибыльна.
Доход на пользователя: 2,65$ в год.
Стоимость компании: 75,3$ млрд.
Стоимость пользователя: 107,5$.
PR ratio: 40,48 годовых оборотов.
Окупаемость: 136,9 лет.
Три основных способа монетизации:
1. Прямая реклама (50%+)
2. Игровые приложения
3. Виртуальные подарки
Рост доходов за 2010 год: 2,65 раз.
+52
Преждевременное масштабирование — главная причина гибели стартапов?
2 min
2.3KКомпания Startup Genome опубликовала приложение к майскому аналитическому отчёту по стартапам. Теперь собрана информация уже по 3200+ компаниям и подробно рассматривается главная причина, по которой стартапы разваливаются.
Изучив опыт тысяч стартапов, Startup Genome делает вывод: 70% неудач объясняются преждевременным масштабированием.
Изучив опыт тысяч стартапов, Startup Genome делает вывод: 70% неудач объясняются преждевременным масштабированием.
+67
Можно ли спроектировать впечатления?
9 min
2KTutorial
Translation
Представляю вашему вниманию перевод статьи в двух частях под названием "Can Experience be Designed?" от Oliver Reichenstein. Перевели в компании UXDepot специально для пользователей Хабрахабра с одобрением компании Information Architects Inc..
Для начала загадайте число от одного до десяти. А затем сделайте шаг назад и посмотрите на словосочетание «Проектирование впечатлений пользователя» так, словно вы никогда раньше его не видели.
Смотрите внимательно на эти слова до тех пор, пока вы не услышите в своей голове волшебно красивый голос, произносящий их вслух: «ПРОЕКТИРОВАНИЕ ВПЕЧАТЛЕНИЙ ПОЛЬЗОВАТЕЛЯ». Что думаете? Все это кажется вам какой-то нелепицей? Нет, я говорю не про загадывание числа и не про шаг назад, а про идею. Идею о том, что кто-то может контролировать ваши чувства и ощущения. Или же вы с легкостью согласитесь, что ваши впечатления от прочтения этой статьи были продуманы мной как автором? Вы читаете этот текст каким-то своим, особым образом? Или вы прочитали и ощутили его так, как я это задумал?
+54
Китай: как заказывать производство или поставку
7 min
186K У китайцев можно заказать всё, что угодно: от электронных компонентов до корпуса к устройству или хендмейд-штук. При правильном подходе это дешево, качественно и позволяет реализовывать любые заказы, которые часто сложно разместить на территории СНГ.
В топике — основы аутсорсинга производства в Китай:
Да, если же вы уже заказывали в Китае, то ничего шокирующе-нового в топике вы не найдёте (и, может быть, порадуетесь за то, как нас красиво однажды развели).
В топике — основы аутсорсинга производства в Китай:
- Как выбрать производителя и сделать заказ
- Как убедиться, что сделают именно то, что вам нужно
- Про предоплату, документы, гарантии
- Как наиболее выгодно доставить
- Что делать с потерянными поставками
- Грабли в ассортименте
Да, если же вы уже заказывали в Китае, то ничего шокирующе-нового в топике вы не найдёте (и, может быть, порадуетесь за то, как нас красиво однажды развели).
+202
Ускоряем раздачу фоток
8 min
14KС проблемой медленной отдачи статического контента рано или поздно сталкивается каждый сисадмин.
Проявляется это приблизительно так: иногда 3Kb картинка грузится так, как будто бы она весит 3Mb, на ровном месте начинают «залипать» (отдаваться очень медленно) css-ы и JavaScript-ы. Вы нажимаете ctrl + reload — и уже, вроде, проблемы нет, потом спустя всего несколько минут все повторяется опять.
Не всегда истинная причина «тормозов» очевидна и мы косо поглядываем то на nginx, то на хостера, то на «забитый» канал, то на «тормозной» или «глючный» браузер :)
На самом деле проблема в несовершенстве современного винчестера, который до сих пор не расстался с механическими подсистемами вращения шпинделя и позиционирования головок.
В этой статье я предложу Вам свое решение этой проблемы, основанное на практическом опыте использования SSD дисков совместно с web-сервером nginx.
+124
Функциональное тестирование веб-приложений без боли
5 min
37KИногда в жизни бывает так — вот ждёшь, ждёшь чего-то, изучаешь теорию по данному вопросу, рассматриваешь разные подходы к решению, дискутируешь с такими же ищущими как ты, внимаешь гласу признанных гуру, но не продвигаешься дальше ни на дюйм. Потом бросаешь, забываешь вообще об этом вопросе, занимаешься другими делами, и вдруг — на тебе, всё встало на свои места, из разрозненных элементов сложилась чудесная мозаика, нагрянуло просветление, а волосы вдруг стали густыми и шелковистыми.
+32
Обзор: 10 русских SaaS-систем управления проектами
1 min
15KСтолкнулся с задачей подбора системы управления проектами для своей команды. Порадовало, что на Хабре есть много полезных статей и обзоров по этому поводу (и не менее полезных комментариев к ним). Помимо этого переворошил еще множество обзоров и отзывов разных людей и в ходе поисков наткнулся на интересную сводную таблицу Обзор: 10 русских SaaS-систем управления проектами.
Понравилось, что в ней собрано в одном месте много очевидных и не очень параметров, которые в итоге влияют на наш выбор. Полезно почитать и сами обзоры систем, которые публикуются там же. Автор выбирал систему для себя, субъективно, но читать его обзоры для меня было эффективнее, чем посмотреть демо каждой системки самому — многие нюансы вылезают только при реальной работе, а тратить на каждую систему свое время я не могу.
Посчитал табличку достойной внимания Хабра, но чтобы не обижать автора и не копипастить, ограничусь ссылкой на табличку в его ЖЖ. Если автор присутствует на Хабре, буду рад познакомиться.
Понравилось, что в ней собрано в одном месте много очевидных и не очень параметров, которые в итоге влияют на наш выбор. Полезно почитать и сами обзоры систем, которые публикуются там же. Автор выбирал систему для себя, субъективно, но читать его обзоры для меня было эффективнее, чем посмотреть демо каждой системки самому — многие нюансы вылезают только при реальной работе, а тратить на каждую систему свое время я не могу.
Посчитал табличку достойной внимания Хабра, но чтобы не обижать автора и не копипастить, ограничусь ссылкой на табличку в его ЖЖ. Если автор присутствует на Хабре, буду рад познакомиться.
+17
Как заработать на мобильных приложениях
4 min
37KПод катом мы хотим поделиться своим опытом продажи мобильных приложений начиная с 2007 года и по сей день. iTunes, Win mobile и Android market. В основе лежит забавная история, как курсовая из 2000 года принесла нам $3000 и контракт со Смешариками.
Всё началось осенью 2007 года. Наша компания была Microsoft Certified Partner и хотела развиваться в этом направлении. Было решено получить сертификат MGCP (Microsoft Gold Certified Partner), так как он давал нам ряд преимуществ, начиная с экономии на ПО и заканчивая повышением статуса компании.
Всё началось осенью 2007 года. Наша компания была Microsoft Certified Partner и хотела развиваться в этом направлении. Было решено получить сертификат MGCP (Microsoft Gold Certified Partner), так как он давал нам ряд преимуществ, начиная с экономии на ПО и заканчивая повышением статуса компании.
+41
Лоран Жиль: какой должна быть команда стартапа
2 min
600Была возможность пообщаться с Лораном Жилем (видео1 и видео2) — президентом и СЕО компании Viewdle. Если кто не знает, то этот стартап, основанный украинцами, в октябре поднял 10 млн долларов инвестиций. Так вот, Лоран поделился тем, как он подбирает сотрудников в команду. Достаточно смелый, но не лишенный рационального зерна подход. Вот, вкратце, что он сказал (далее от первого лица):
Очень типично для компаний (особенно в Украине) набирать ПЕРСОНАЛ. Но стартапу нужна именно команда увлеченных общей идеей людей, каждый член которой в душе предприниматель, стремящийся находить нетривиальные решения поставленной задачи. И отсутствие профессионального опыта здесь только приветствуется, так как нет искушения повторять предыдущий опыт. Повторение убивает инновацию, а человек из предпринимателя становится исполнителем.
Очень типично для компаний (особенно в Украине) набирать ПЕРСОНАЛ. Но стартапу нужна именно команда увлеченных общей идеей людей, каждый член которой в душе предприниматель, стремящийся находить нетривиальные решения поставленной задачи. И отсутствие профессионального опыта здесь только приветствуется, так как нет искушения повторять предыдущий опыт. Повторение убивает инновацию, а человек из предпринимателя становится исполнителем.
+22
Важные аспекты RESTful API для вашего проекта
6 min
34KДанная статья давно назревала в моей голове, но совсем в ином формате.
Прочитав последние несколько неуклюжих статей на тему WEB-сервисов (например: http://habrahabr.ru/blogs/development/108973/) и применения в них REST технологии, решил что настало время все-таки откинуть лень, выделить время и написать «переформатированную» в своей голове статью.
Итак, кратко, что Вы найдете в статье и кому она будет полезна:
— новичкам, которые интересуются или планируют написать WEB-сервис для проекта
— профи вряд ли найдут что-то новое для себя
— общая идеология REST
— применение CRUD в WEB-сервисах
— принципы KISS при построении раутеров
— лучшие практики
— немного пиара ;)
— ссылки, литература
Прочитав последние несколько неуклюжих статей на тему WEB-сервисов (например: http://habrahabr.ru/blogs/development/108973/) и применения в них REST технологии, решил что настало время все-таки откинуть лень, выделить время и написать «переформатированную» в своей голове статью.
Итак, кратко, что Вы найдете в статье и кому она будет полезна:
— новичкам, которые интересуются или планируют написать WEB-сервис для проекта
— профи вряд ли найдут что-то новое для себя
— общая идеология REST
— применение CRUD в WEB-сервисах
— принципы KISS при построении раутеров
— лучшие практики
— немного пиара ;)
— ссылки, литература
+64
Information
- Rating
- Does not participate
- Location
- Москва и Московская обл., Россия
- Date of birth
- Registered
- Activity