Pull to refresh
  • by relevance
  • by date
  • by rating

Snap.com: первый поисковик для широкополосных каналов

Lumber room
После года бета-тестирования состоялся официальный запуск поискового сайта Snap.com с обновленным дизайном, созданным специально для пользователей широкополосного доступа. Основатель этого стартапа — знаменитый Билл Гросс. В свое время он основал, среди прочих, компанию GoTo.com (переименована в Overture), которая изобрела контекстную рекламу и совершила революцию в интернет-экономике. Сейчас они хотят совершить революцию на рынке поиска в интернете.

По словам директора Snap.com, новый стартап основан в тот самый день, когда компания Overture была продана Yahoo. В свое время GoTo.com стал первым в интернете поисковым сайтом, который реализовал показ контекстной рекламы по ключевым словам с продажей ключевых слов на аукционе. Сейчас движок Overture обеспечивает показ всей контекстной рекламы на портале Yahoo, а изобретенная ими модель контекстной рекламы используется повсеместно и приносит миллиарды долларов.

Новый поисковик Snap.com, основанный в том же «инкубаторе» Idealab, обещает стать еще более инновационным, чем GoTo.com. По сути, это первый поисковик, созданный специально для пользователей широкополосного доступа. Здесь множество разнообразных Ajax-примочек. Страница с результатами поиска представляет собой две колонки: в левой — сами результаты, навигация по которым возможна прямо с клавиатуры; в правой — окно предварительного просмотра с изображением найденного сайта. Щелкнув по картинке, вы попадаете на этот сайт, причем он открывается в этой же правой колонке, так что его можно просмотреть, не покидая поисковик.

Среди других интересных функций — автозаполнение при вводе поискового запроса (как Google Suggest). В этом случае предлагаются наиболее вероятные варианты из числа популярных запросов. Например, если набрать слово «frog», то первым вариантом будет «crazy frog».

По словам директора Snap.com, список самых популярных поисковых запросов составлен на базе информации о серфинге около 2 млн пользователей. Среди этих данных, полученных от интернет-провайдеров, есть информация о времени, проведенном каждым пользователем на том или ином сайте. Данный параметр используется при ранжировании результатов поиска.

Модель контекстной рекламы используется здесь весьма оригинально. Оплаченные результаты поиска смешаны с обычными результатами, правда, на них стоит специальная пометка. Рекламодатели оплачивают услуги поисковика по модели «pay-per-action» (PPA) — это расширенная версия модели «pay per-click». Модель PPA предусматривает оплату не только за переход по рекламной ссылке, но и за другие действия пользователя, например, заполнение анкеты или покупку продукта прямо с поискового сайта.

Реклама с наибольшим CTR получает лучшие позиции по сравнению с другими рекламными ссылками. Поскольку рекламные ссылки смешаны с нормальными, разработчики поставили задачу улучшить с их помощью качество обычного поиска.
Rating 0
Views 689
Comments 7

Точки выхода или немного о структурном программировании

Perfect code *
Читая Хабрахабр или просматривая чужие исходные коды, мне довольно часто приходится замечать примерно следующий кусок кода, который совершенно одинаково «звучит» на любом языке, на каком бы не был написан:
function(single_document)
{  
  if (single_document.getElementById("comments") != null)
    return;
    …
    …
    …
    …
}
* This source code was highlighted with Source Code Highlighter.

Здесь приведён кусочек кода на Javascript, но то же самое можно написать на нескольких десятках других языков. Что здесь не так? Только то, что у функции (метода, свойства, процедуры) несколько точек выхода. Если вам интересно почему это плохо, прочитай то что написано под катом.
Читать дальше →
Total votes 102: ↑56 and ↓46 +10
Views 12K
Comments 167

Запретный плод GOTO сладок!

C++ *
Доброго времени суток!

Какое Ваше отношение к оператору goto в языках С/С++? Скорее всего, когда Вы учились программировать, Вы его использовали. Потом Вы узнали, что это плохо, и Вы о нем позабыли. Хотя иногда при сложной обработке ошибок… нет-нет, там try … throw … catch. Или же для выхода из вложенных циклов … не-ет, там флаги и куча сложностей. Или когда вложенные switch … нет-нет-нет, там те же флаги.
И все-таки, иногда в ночной тиши Вы допускали в свое подсознание грешную мысль – «а почему бы не использовать вот тут goto? И программа вроде как стройней будет, и оптимально выходит. Да-а, было бы хорошо… Но нет – нельзя, забыли!».
А почему так оно?
Под катом – небольшое расследование и мое, основанное на многолетней практике и разных платформах, отношение к этому вопросу
UPD: тут статья рассматривает С и С++, программирование для PC и слегка для микроконтроллеров. Конкретно о микроконтроллерах есть другая статья.
Интересно? - тогда читаем!
Total votes 172: ↑135 and ↓37 +98
Views 91K
Comments 273

Запретный плод GOTO сладок (версия для микроконтроллеров)!

Programming microcontrollers *
Доброго времени суток!

Какое Ваше отношение к оператору goto в языках С/С++? Скорее всего, когда Вы учились программировать, Вы его использовали. Потом Вы узнали, что это плохо, и Вы о нем позабыли. Хотя иногда при сложной обработке ошибок… нет-нет, там try … throw … catch. Или же для выхода из вложенных циклов … не-ет, там флаги и куча сложностей. Или когда вложенные switch … нет-нет-нет, там те же флаги.
И все-таки, иногда в ночной тиши Вы допускали в свое подсознание грешную мысль – «а почему бы не использовать вот тут goto? И программа вроде как стройней будет, и оптимально выходит. Да-а, было бы хорошо… Но нет – нельзя, забыли!».
А почему так оно?
Под катом – небольшое расследование и мое, основанное на многолетней практике и разных платформах, отношение к этому вопросу. Эта статья — аналог такой же для С++, но здесь выделены моменты именно для С и для микроконтроллеров.
Интересно? - тогда читаем!
Total votes 53: ↑35 and ↓18 +17
Views 8.2K
Comments 69

О структурном программировании

Website development *
Sandbox
Многие в комментариях к посту об операторе goto высказывали одно и то же мнение, которое звучит примерно так: «За n лет написания программ мне ни разу не понадобился goto, и использовать его в будущем я тоже не собираюсь». И они абсолютно правы, уже давно доказана теорема о структурировании, в которой говорится, что любая простая программа функционально эквивалентна структурированной программе составленной с использованием функций и предикатов исходной программы, а также с использованием дополнительного счетчика. Доказательством является алгоритм составления той самой структурированной программы:
  1. пронумеровать все узлы схемы, при этом порядок обхода произвольный;
  2. пронумеровать все дуги схемы следующим образом: выходной дуге схемы припишем номер 0, всем остальным дугам присвоим номер вершины, в которую данная дуга входит;
  3. для каждого функционального узла исходной программы, имеющего номер i и выходную дугу j, составить новую простую последовательную программу Gi с номером входной дуги i
  4. для каждого предикатного узла с номером i составить новую простую программу
  5. построить программу типа while do с do-частью в виде структры, проверяющей значения L.

Читать дальше →
Total votes 73: ↑70 and ↓3 +67
Views 11K
Comments 35

GOTO в прикладном программировании

Programming *

Картинка из книги Thinking Forth

По мотивам «обобщенной» статьи про GOTO и статьи про GOTO в системном программировании:

Мотивы для использования GOTO и альтернативы ему принципиально отличаются для системного и прикладного программирования — это является и важной причиной холиваров. Для прояснения ситуации рассмотрим GOTO только в разрезе прикладного программирования.

Основной тезис: в прикладном программировании GOTO однозначно лучше обходить.

Как докажем:
  1. В прикладном программировании критически важен один параметр кода — сопровождаемость.
  2. Goto не ухудшает однозначно сопровождаемость только в небольшом проценте случаев, и даже в этих случаях принципиально от альтернатив не отличается
  3. Ради небольшого процента случаев его использовать вредно:
    1) очень низкоуровневое, поэтому сильно развращает программиста (возникает соблазн использовать и в других местах) — большой вред из-за небольшого процента случаев, когда GOTO можно применить;
    2) даже в таких случаях есть более красивые альтернативы.

Читать дальше →
Total votes 52: ↑36 and ↓16 +20
Views 14K
Comments 46

JavaScript — это Бейсик сего дня! (В хорошем смысле.)

JavaScript *TypeScript *
С каждым днём во мне крепнет осознание того, что JavaScript стремится играть ту же роль (занять ту же нишу), которая была свойственна Бейсику лет тридцать или даже пятнадцать тому назад.

Иными словами, JavaScript становится простым и распространённым языком, далеко переросшим своё первоначальное предназначение, и на нём теперь можно сочинить почти какое угодно приложение (и клиентское, и серверное, и консольное… и даже с GUI, как я недавно убедился).

Создаются целые операционные системы (Firefox OS, Google Chrome OS, Open webOS), для которых JavaScript является не менее «родным», чем Си для UNIX в своё время.

Появляются языки, транслируемые в JavaScript (можно вспомнить CoffeeScript, Dart, новорождённый TypeScript, и так далее).

Заметив это, уместно тотчас же порадоваться тому, что к джаваскрипту предъявляют, по крайней мере, меньше серьёзных претензий, чем некогда к Бейсику, который по справедливости невзлюбили за его GOTO и поощрение «макаронного кода». Притом джаваскрипт гораздо лучше переносится и с платформы на платформу, и из браузера во браузер.

Кроме того, многие существующие проблемы джаваскрипта не имеют особенного значения, потому что устраняются широко распространёнными средствами с открытым исходным кодом. Так, нестрогость синтаксиса устраняется строгою проверкою исходного кода (JSLint, например). Нехватка средств обработки данных (массивов, объектов) и функций устраняется подключением Underscore, а строки помогает обработать Underscore.string, а даты — moment.js, например. Сложность употребления методов DOM (в которой, впрочем, повинен не язык JavaScript, а браузеры и их разнобой) преодолевается с помощью jQuery. И так далее. Это входит в привычку у программистов.

Читать дальше →
Total votes 82: ↑57 and ↓25 +32
Views 18K
Comments 46

Потоки — это Goto параллельного программирования

Intel corporate blog Programming *Concurrent computing *
Сразу раскрою мысль, вынесенную в заголовок. Использование потоков (также именуемых нити, треды, англ. threads) и средств прямой манипуляции ими (создание, уничтожение, синхронизация) для написания параллельных приложений оказывает столь же пагубное влияние на сложность алгоритмов, качество кода и скорость его отладки, какое вносило использование оператора Goto в последовательных программах.
Как когда-то программисты отказались от неструктурированных переходов, нам необходимо отказаться от прямого использования потоков сейчас и в будущем. И так же, как каждый из нас использует структурные блоки вместо Goto, вместо потоков должны использоваться структуры, построенные поверх них. Благо, все инструменты для этого появились во вполне традиционных языках.
Автор фото: Rainer Zenz
Читать дальше →
Total votes 76: ↑63 and ↓13 +50
Views 38K
Comments 57

GoTo АД. Летние школы по программированию, анализу данных и робототехнике для самых упоротых старшеклассников

Проектная школа программирования GoTo corporate blog Hackathon Studying in IT


Был как-то в лагере в Одессе парнишка-школьник, который сидел в углу и не участвовал в общих движухах. В анкете он указал, что имеет успехи по математике. Подхожу, спрашиваю, мол, чего сидим, кого ждем. «Скучно и бессмысленно», — отвечал отрок. «Самый умный, да? Хочешь задачу по геометрии, решишь?» — «А то!».

— Есть задачи на построение, слышал про такие? Ну так вот, даны циркуль и линейка, надо угол разделить на 4 равные части, осилишь за 10 минут?
— Вот ответ.
— Хорошо, вот следующий левел, есть угол, надо циркулем и линейкой разделить его на 3 части, на ужине покажешь ответ, идет?

Пацан на ужин не пришел. Зато через 10 месяцев он пришел играть в настолки в Яндекс, потому что поступил в МИФИ (а вообще он из Молдовы), потому что я дал ему контакты своего одноклассника-яндексоида, которому в кайф по скайпу помогать юнлингам по математике.

Летние школы и лагеря — это круто и полезно. Под катом сказ о том, как мы ловим подростков над пропастью во ржи и устраиваем для них АД, кусаем питоном и прокачиваем в области социальной инженерии.
Читать дальше →
Total votes 21: ↑19 and ↓2 +17
Views 14K
Comments 16

Проекты школы GoTo: рекомендательная система для новостного портала

Проектная школа программирования GoTo corporate blog Programming *Mathematics *Machine learning *


В рамках каждой школы GoTo происходит много активностей, школьниками реализуются десятки удачных и не очень проектов. К сожалению, нам не удается рассказать о каждом проекте или происшествии, но попытаться поделиться отдельными успехами стоит. Поэтому мы и начинаем цикл статей от учеников о своих успехах и проектах в рамках наших школ.


Этим летом один из партнёров – компания E-Contenta – предложила задачу создания рекомендательной системы новостного портала одного из телеканалов. Ребята из компании преподавали на направлении Анализ данных и машинное обучение, да и задача всем показалась довольно интересной – помимо реальной необходимости такого рода разработок, задача была еще и довольно уникальной – методы рекомендации новостей в большинстве отличаются от методов рекомендации, допустим, фильмов.


За её решение взялись 2 ученика июньской школы: 16-летний Творожков Андрей из Москвы и 14-летний Всеволод Жидков из Воткинска. Они же и подготовили краткое описание задачи и ее решения, которое мы публикуем в этой статье под катом.


Читать дальше →
Total votes 10: ↑10 and ↓0 +10
Views 4.8K
Comments 0

Как остановить отток людей с онлайн-курса и заодно попасть на хакатон

Проектная школа программирования GoTo corporate blog Python *Programming *Data Mining *Machine learning *

Онлайн-курсы, кроме своей удобности и доступности, славятся тем, что на них необычайно легко забивать, что с успехом и делают многие слушатели. Забивать слушателям случается по самым разным причинам — непонятен курс, пропущен дедлайн, не успел набрать баллы, вышел Fallout 4 – у всех свои оправдания. А вот у нас оправданий быть не может: если человек покидает курс, мир теряет потенциального разработчика или специалиста по анализу данных, а ещё киловатт-часы и затраченное нашим героем время.


Самая сложная задача здесь — определить, кто из пользователей убежит, а зная их, уже намного проще предотвратить потери: “предупрежден, значит вооружен”.


В конце статьи вы узнаете, как с помощью решения проблемы попасть на хакатон по анализу данных


image


Читать дальше →
Total votes 16: ↑14 and ↓2 +12
Views 5.3K
Comments 3

Не используйте return в Scala

Programming *Scala *Functional Programming *
Translation

Сегодня я бы хотел представить вашему вниманию перевод небольшой статьи Роберта Норриса, возможно, знакомого вам под никнеймом tpolecat. Этот человек достаточно хорошо известен в Scala-сообществе как автор бибилиотеки doobie и участник проекта cats.


В своей публикации Роберт рассказывает о том, что использование return может негативно повлиять на семантику вашего кода, а также проливает свет на пару интересных особенностей реализации return в Scala. Оригинал статьи вы можете найти в блоге автора по ссылке.

Чем же так плох return?
Total votes 27: ↑24 and ↓3 +21
Views 9.8K
Comments 10

GoToChain: как школьники блокчейн в деревне писали

Проектная школа программирования GoTo corporate blog Abnormal programming *Programming *System Analysis and Design *Functional Programming *

Был жаркий август. Шла очередная летняя школа. На направлении функционального программирования все было неспокойно: вместо пота с нас капали монады, и в небе пролетала хмурая тень Coq-а.


Школа проходила вполне обычно, как и все детские лагеря. После накоживания чисел Пеано на Хаскелле мы пилили компиляторы и интерпретаторы разных сортов и размеров (от самопального до LLVM), писали своё ядро на Rust и обсуждали теорию групп, проводя аналогии с лёгкими французскими романами в общем, было задорно.


А ещё у нас был хакатон. Одна из команд, вдохновившись Zeitgeist и партнёрскими спиннерами, взялась за разработку системы проведения конкурсов и обработки решений с помощью смарт-контрактов, запланировав несколько идей применения блокчейна для сообщества вокруг школы. Какие инновации из этого вышли — под катом.


Читать дальше →
Total votes 21: ↑11 and ↓10 +1
Views 4.3K
Comments 3

MentorHack: тиндер для поиска ментора, AI Boss и немного HRTech

Проектная школа программирования GoTo corporate blog Programming *Hackathon Machine learning *Project management *


С 13 по 15 февраля в Москве пройдет MentorHack – хакатон по созданию сервисов для наставничества в корпоративной среде, предпринимательстве и образовании. Приглашаем всех с опытом в разработке, машинном обучении, product-менеджменте или HR и желанием получить призы и интересные данные от партнеров.
Общий призовой фонд – 1 300 000 рублей.

Под катом – подробности участия и примеры идей для проектов: от запускающихся сервисов по подбору ментора Facebook и LinkedIn до концепций AI Boss.
Читать дальше →
Total votes 14: ↑13 and ↓1 +12
Views 7.1K
Comments 0

Go to GOTO

FUNCORP corporate blog Programming *Java *Conferences

Привет, Хабр! Меня зовут Григорий Кузовников. Я работаю Senior Backend Engineer в компании FunCorp. Недавно я начал заниматься машинным обучением. Спросить что-то напрямую не у кого, приходится всё искать в интернете. Поэтому хотелось сходить на какую-нибудь профильную конференцию и послушать, как вообще использовать машинное обучение в бою. Сразу ничего профильного я не нашёл, однако на GOTO Berlin было много тем по машинному обучению, поэтому и решил посетить именно её. Под катом небольшой обзор этой конференции и много фотографий
Читать дальше →
Total votes 18: ↑17 and ↓1 +16
Views 3.9K
Comments 1

GOTO Amsterdam

FUNCORP corporate blog Conferences


Привет, Хабр!

Под катом небольшой обзор конференции GOTO Amsterdam, которую мне довелось посетить в июне. И нет, выбрал я её не из-за локации, а потому что в программе были интересные мне доклады. Город был лишь приятной декорацией.
Читать дальше →
Total votes 29: ↑28 and ↓1 +27
Views 4.2K
Comments 8