Pull to refresh
0
0
Send message

Контекст выполнения и стек вызовов в JavaScript

Reading time7 min
Views112K
Если вы — JavaScript-разработчик или хотите им стать, это значит, что вам нужно разбираться во внутренних механизмах выполнения JS-кода. В частности, понимание того, что такое контекст выполнения и стек вызовов, совершенно необходимо для освоения других концепций JavaScript, таких, как поднятие переменных, области видимости, замыкания. Материал, перевод которого мы сегодня публикуем, посвящён контексту выполнения и стеку вызовов в JavaScript.


Читать дальше →
Total votes 25: ↑23 and ↓2+21
Comments7

Что должен знать о поиске каждый разработчик

Reading time18 min
Views25K

Хотите внедрить или доработать функцию поиска? Вам сюда.



Спросите разработчика: «Как бы вы реализовали функцию поиска в своем продукте?» или «Как создать поисковую систему?». Вероятно, в ответ вы услышите что-нибудь такое: «Ну, мы просто запустим кластер Elasticsearch: с поиском сегодня всё просто».

Но так ли это? Во многих современных продуктах по-прежнему не лучшим образом реализован поиск. Настоящий специалист по поисковым системам скажет вам, что лишь немногие разработчики глубоко понимают, как работает поиск, а ведь это знание часто необходимо для улучшения качества поиска.

Есть множество программных пакетов с открытым исходным кодом, проведено немало исследований, однако лишь немногие избранные понимают, как нужно делать функциональный поиск. Как ни забавно, но если поискать в Интернете связанную с реализацией поиска информацию, вы не найдете актуальных и содержательных обзоров.

Цель статьи


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

Основываясь на опыте работы с универсальными решениями и узкоспециализированными проектами самого разного масштаба (в компаниях Google, Airbnb и нескольких стартапах), я расскажу о некоторых популярных подходах, алгоритмах, методах и инструментах.

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

Переведено в Alconost
Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments0

Как быстро и эффективно работать с приоритетами по методу Lean Prioritization?

Reading time6 min
Views15K
Постоянная работа с приоритетами является необходимостью в управлении продуктами, неотъемлемой частью процесса разработки. Если хватает времени, можно изучить и попробовать использовать сложные и интересные методы для определения приоритетов. Техника Lean Prioritization — один из простых и доступных подходов, который помогает менеджерам продуктов управлять бэклогом задач, особенно, когда нужно это сделать быстро и эффективно.

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

Игры для программистов, часть вторая

Reading time5 min
Views82K
Прошло четыре с половиной года с тех пор, как я, пользуясь свежеполученным инвайтом, написал предыдущий хабрапост с подобным заголовком. Большой срок для игровой индустрии. Успело появиться много новых хороших игр, и недавно я ощутил настоятельную необходимость поделиться знанием о них с широкой общественностью.

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

Infinifactory


image
И что же это за майнкрафт такой?
Total votes 58: ↑57 and ↓1+56
Comments74

Как работают рекомендательные системы. Лекция в Яндексе

Reading time11 min
Views138K

Привет, меня зовут Михаил Ройзнер. Недавно я выступил перед студентами Малого Шада Яндекса с лекцией о том, что такое рекомендательные системы и какие методы там бывают. На основе лекции я подготовил этот пост.





План лекции:


  1. Виды и области применения рекомендательных систем.
  2. Простейшие алгоритмы.
  3. Введение в линейную алгебру.
  4. Алгоритм SVD.
  5. Измерение качества рекомендаций.
  6. Направление развития.

Под катом вы найдете конспект лекции и презентацию
Total votes 63: ↑56 and ↓7+49
Comments42

Шаблоны проектирования с человеческим лицом

Reading time32 min
Views492K

image


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


Как сказано в Википедии:


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

image Будьте осторожны


  • Шаблоны проектирования — не «серебряная пуля».
  • Не пытайтесь внедрять их принудительно, последствия могут быть негативными. Помните, что шаблоны — это способы решения, а не поиска проблем. Так что не перемудрите.
  • Если применять их правильно и в нужных местах, они могут оказаться спасением. В противном случае у вас будет ещё больше проблем.

В статье приведены примеры на PHP 7, но пусть вас это не смущает, ведь заложенные в шаблонах принципы неизменны. Кроме того, внедряется поддержка других языков.

Читать дальше →
Total votes 148: ↑134 and ↓14+120
Comments98

Давайте разберём, почему покупатели задают «тупые» вопросы

Reading time4 min
Views70K


— Добрый день! Почём мороженое?
— Вот же ценник!

В этой ситуации покупатель и продавец считают друг друга идиотами. Тем не менее, неправ продавец — его работа как раз в том, чтобы отвечать на любые вопросы и продавать. Иначе вместо него поставили бы автомат по выдаче товара. Покупатель может быть плохо видящим, может просто не заметить ценник, может запутаться, что и где — но чаще ему нужно просто перепроверить информацию. А ему в ответ, по факту, хамят. Результат — нет сделки.

Очень много явно странных вопросов имеют совсем не то значение, которое озвучивается. Это касается и продаж, и обычной жизни. Давайте разберём ещё пару примеров. Начнём с риторических вопросов в духе «А этот пазл точно собирается? Там все детали внутри?».
Читать дальше →
Total votes 182: ↑175 and ↓7+168
Comments386

Курс «Grant Proposal»: как найти правильные слова, чтобы привлечь внимание и деньги к вашей разработке

Reading time2 min
Views2.7K


Мы уже рассказывали о стартовавшей осенью прошлого года специализации «English for Research Publication Purposes», которая помогает не просто развить навыки академического письма на английском языке, но и детально рассматривает и помогает отработать вполне прикладные кейсы.

Третий курс специализации «Grant proposal» стоит, в некотором смысле, особняком. Этот курс — руководство по созданию заявки на грант так, чтобы рецензенты смогли высоко оценить достоинства вашей работы. Проще говоря, в этом курсе вы узнаете, как получить деньги на вашу разработку или, как минимум, заинтересовать потенциального инвестора.

Читать дальше →
Total votes 7: ↑6 and ↓1+5
Comments0

A/B тестирование: 70 ресурсов, которые послужат хорошим стартом для начинающих

Reading time10 min
Views118K
Сделать веб-сайт доходным можно двумя способами. Первый – привлекать больше трафика, второй – повышать конверсию, т.е. побуждать большее количество посетителей становиться покупателями. Скорее всего, вы уже слышали о том, что трафик можно просто купить – сотни интернет-ресурсов предлагают эту услугу. А не лучше ли оптимизировать конверсию? Как узнать, что именно нужно проверить, и как провести A/B тестирование?

А/В тестированию и оптимизации уровня конверсии посвящено бесчисленное количество ресурсов. Однако, очень редко на сайтах подробно разбирается весь этот процесс целиком от самого начала («Что и как тестировать?») и до конца («Как улучшить конверсию?»).
Читать дальше →
Total votes 62: ↑53 and ↓9+44
Comments5

Консоль разработчика Google Chrome: десять неочевидных полезностей

Reading time6 min
Views228K
Как с помощью консоли разработчика превратить Google Chrome в подобие текстового редактора? Какой смысл в ней приобретает знакомый многим по jQuery значок $? Как вывести в консоль набор значений, оформленный в виде вполне приличной таблицы? Если сходу ответы на эти вопросы в голову не приходят, значит вкладка Console из инструментов разработчика Chrome ещё не раскрылась перед вами во всей красе.

image

На первый взгляд, перед нами – вполне обычная JavaScript-консоль, которая годится только на то, чтобы выводить в неё логи ответов серверов или значения переменных. Я, кстати, так ей и пользовался, когда только начал программировать. Однако, со временем набрался опыта, подучился, и неожиданно для себя обнаружил, что консоль Chrome умеет много такого, о чём я и не догадывался. Хочу об этом сегодня рассказать. Да, если вы читаете сейчас не на мобильнике, можете тут же всё это и попробовать.
Читать дальше →
Total votes 88: ↑83 and ↓5+78
Comments62

Алистер Коберн: Командная разработка и agile

Reading time8 min
Views17K
Сегодня день рождения одного из отцов-основателей Agile-манифестаАлистера Коберна. Предлагаю вашему вниманию перевод его выступления на TED про командную разработку.

image

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

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

Total votes 14: ↑14 and ↓0+14
Comments2

10 ошибок, приводящих к оверинжинирингу ПО

Reading time9 min
Views54K
Несколько вещей гарантированно будут увеличиваться со временем: расстояния между звёздами, энтропия вселенной и бизнес-требования к ПО. Многие статьи пишут «Не усложняйте!», но не пишут почему или как это сделать. Вот вам 10 ясных примеров.

1. Инженерам виднее

Мы, инженеры, считаем себя умнейшими людьми. Ну, поскольку мы создаём разные штуки. И эта ошибка часто приводит к оверинжинирингу. Если вы спланировали и построили 100 модулей — Бизнес всегда попросит у вас 101-ый, о котором вы никогда не задумывались. Если вы соберётесь с силами и решите 1000 проблем — они придут к вам и выложат на стол 10 000 новых. Вы считаете, что у вас всё под контролем, а на самом деле вы даже не представляете, в каком направлении вас завтра поведёт дорога.

image

За мои 15 лет работы программистом я ещё ни разу не видел, чтобы Бизнес выдал законченные и стабильные раз и навсегда требования к ПО. Они всегда меняются, расширяются. И это природа бизнеса, а не ошибки людей, управляющих им.

Мораль: Казино (бизнес) всегда побеждает.
Читать дальше →
Total votes 127: ↑109 and ↓18+91
Comments84

Почему «мотивирующие» статьи не работают, не сработают и как устроена мотивация на самом деле

Reading time3 min
Views51K
Многие любят читать мотивирующие статьи типа «30 способов заставить себя работать». Да и писать многие любят. Но что многие не любят — так это писать о том, что советы, изложенные в этих статьях, у них не сработали. То есть советы-то разумные. И применить их часто пытаются. Но есть одна проблема — стоит начать их применять, как возникает огромное внутреннее сопротивление. Настолько огромное, что применить советы не получается. Так в чем же дело?

Ответ, на самом деле, является сколь простым, столь и ошеломляющим — причина в том, что мы сами не знаем, чего хотим.

Читать дальше →
Total votes 68: ↑62 and ↓6+56
Comments361

Пока китайский ИТ-рынок труда еще перенимает американскую практику, в США нанимают программистов «играючи»

Reading time7 min
Views17K
image

На ИТ-рынке труда по-прежнему велик спрос на специалистов, и на разработчиков ПО в частности. Но и соискателей тоже великое множество. Поиск «того самого» специалиста иногда превращается в поиск иголки в стоге сена. Рекрутеры вынуждены использовать различные методы подбора сотрудников, но как оказалось, использование тех же ИТ-технологий не всегда может помочь в этом. А иногда это даже усложняет ситуацию.

«Хороших» компаний не так уж много. Поэтому в попытке трудоустроиться туда соискатели готовы пойти на многое: переехать в другой район, город, и даже в другую страну.

Несмотря на встряску и стагнацию экономики Китая, за последние шесть лет она демонстрирует рост порядка 6,5%. Наибольший клад в этот процесс вносит китайская ИТ-индустрия. Более того, многие стартапы из этой страны (включая Baidu, Alibaba и Tencent) на слуху в Кремниевой долине.
Читать дальше →
Total votes 16: ↑14 and ↓2+12
Comments0

Полное практическое руководство по Docker: с нуля до кластера на AWS

Reading time39 min
Views1.6M



Содержание



Вопросы и ответы


Что такое Докер?


Определение Докера в Википедии звучит так:


программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы; позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, а также предоставляет среду по управлению контейнерами.



Ого! Как много информации.

Читать дальше →
Total votes 125: ↑124 and ↓1+123
Comments44

«Эволюция музыки»: Пара слов о рекомендательных алгоритмах стриминговых сервисов

Reading time4 min
Views5.9K
Миллионы людей по всему миру пользуются музыкальными стриминговыми сервисами, то есть слушают песни, не скачивая их на устройства. Сегодня этот рынок обладает огромным потенциалом. За первую половину 2016 года количество аудиостримов в США удвоилось, по сравнению с 2015 годом.

Более того, к концу 2015 года количество подписчиков музыкальных стриминговых сервисов составило 68 миллионов по всему земному шару, и эта цифра продолжает расти. Сегодня на этом рынке работает множество популярных компаний начиная с зарубежных Spotify, Pandora, 8tracks и заканчивая российскими Яндекс.Музыка и Zvooq.

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



/ фото Patrik Nygren CC
Читать дальше →
Total votes 15: ↑14 and ↓1+13
Comments0

Как мы сделали ровную балансировку нагрузки на фронтенд-кластере

Reading time10 min
Views20K

Юрий Насретдинов (youROCK, Badoo)


Юрий Насретдинов

Расшифровка доклада Юрия Насретдинова на конференции HighLoad++ 2015. Юрий расскажет про то, как Badoo (крупнейшая социальная сеть для знакомств с новыми людьми) сделали практически идеально ровную балансировку нагрузки на нашем кластере. Передаём ему слово...

Чтобы обслуживать то количество пользователей, то количество реквестов в секунду, которые мы получаем, у нас около трех тысяч серверов, и на PHP-FPM конкретно приходится 70 тысяч в пике.

О том, как мы эти запросы распределяем по нашему кластеру, я расскажу.



Кратко — о чем я буду рассказывать. Во-первых, я расскажу, как «с высоты птичьего полета» устроен роутинг запросов на нашем сайте. Потом расскажу, какие, вообще, существуют алгоритмы балансировки; про то, как мы делали балансировку до того, как мы сделали автоматическую систему. Расскажу про эту автоматическую систему, ну и будут кое-какие выводы. Также хотел сказать, что эта система будет выложена в open-source после этого доклада.
Total votes 35: ↑31 and ↓4+27
Comments15

Проблемы при внедрении Agile

Reading time5 min
Views6.9K
Как и многие сейчас, мы решили попробовать внедрить agile для развития одного из наших решений. Точнее, поскольку в мире разработки ПО нет «черного» и «белого», мы решили «не внедрить agile», а перейти от использования менее гибких подходов к использованию более гибких.

В данном топике я хотел бы описать проблемы, с которыми мы столкнулись, а также привести соображения, как некоторых из этих проблем можно было бы избежать. Написание топика продиктовано желанием способствовать переводу дискуссии про agile из плоскости «как наконец заставить этих старомодных менеджеров перейти к прогрессивным методологиям» в плоскость «как работать по agile наиболее эффективно».
Читать дальше →
Total votes 36: ↑33 and ↓3+30
Comments7

Плакаты на IT тематику

Reading time1 min
Views29K
Почитывая «Банду четырех», всё чаще думаю как хорошо было бы иметь отдельный плакат на стену в офисе, резюмирующий и объясняющий шаблоны проектирования. Как здорово было бы не держать все их в голове, а имея проблему, взглянуть и найти подходящее решение. Но найти подходящий постер оказалось не так то просто, да и тот оказался не идеальным.
Читать дальше →
Total votes 69: ↑57 and ↓12+45
Comments38

Анатомия науки: преемственность, которой уже нет

Reading time5 min
Views1.6K
image


Данная статья опубликована мной по просьбе Hemdall, который в силу некоторых особенностей Хабра не может пока сделать это собственноручно. Но делаю я это не просто по доброте душевной — с изложенным ниже я лично согласен на 100%, за исключением того, что, на мой взгляд, выводы автор делает слишком оптимистичные. Впрочем — судить вам.

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

Жаркая дискуссия по поводу Как «Фобос-Грунт» строился со всей очевидностью показывает, что большинство читателей просто не понимает, как устроены передача и развитие знаний в науке и что из того следует. А поскольку большая часть Хабра, как я наблюдаю, очень молодые читатели, не обладающие в необходимом объёме пониманием, как все устроено, позволю небольшое напоминание.

Сначала опишу простые, но, как правило, не очень понятные многим условия в науке:
Читать дальше
Total votes 153: ↑144 and ↓9+135
Comments238
1
23 ...

Information

Rating
Does not participate
Location
Одесса, Одесская обл., Украина
Registered
Activity