Как стать автором
Обновить
0
0
Бравин Антон @rootools

Пользователь

Отправить сообщение

Разработка web API

Время на прочтение9 мин
Количество просмотров288K

Интро


Это краткий перевод основных тезисов из брошюры «Web API Design. Crafting Interfaces that Developers Love» Брайана Маллоя из компании Apigee Labs. Apigee занимается разработкой различных API-сервисов и консталтингом. Кстати, среди клиентов этой компании засветились такие гиганты, как Best Buy, Cisco, Dell и Ebay.

В тексте попадаются комментарии переводчика, они выделены курсивом.

Собираем API-интерфейсы, которые понравятся другим разработчикам


Понятные URL для вызовов API

Первый принцип хорошего REST-дизайна — делать вещи понятно и просто. Начинать стоит с основных URL адресов для ваших вызовов API.

Ваши адреса вызовов должны быть понятными даже без документации. Для этого возьмите себе за правило описывать любую сущность с помощью коротких и ясных базовых URL адресов, содержащих максимум 2 параметра. Вот отличный пример:
/dogs для работы со списком собак
/dogs/12345 для работы с отдельной собакой
Дальше
Всего голосов 235: ↑224 и ↓11+213
Комментарии128

Нужны ли в JavaScript классы?

Время на прочтение6 мин
Количество просмотров104K
JavaScript принято считать прототип-ориентированным языком программирования. Но, как ни странно, этим подходом практически никто не пользуется: большинство популярных JS-фреймворков явно или неявно оперируют классами.
В этой статье я хочу рассказать об альтернативном способе программирования на JavaScript, без использования классов и конструкторов — чистым прототипным ООП и особенностях его реализации на ECMA Script 5.
Читать дальше →
Всего голосов 164: ↑140 и ↓24+116
Комментарии60

Лучшие практики AngularJS

Время на прочтение5 мин
Количество просмотров93K
По мотивам этой трансляции.

Вместо предисловия скажу, что есть такой сайт yeoman.io, где собраны наиболее популярные технологии, автоматизирующие разработку фронтенда (сборку, параметризацию CSS и проч.). Обратите на него внимание в начале работы над проектом.
Читать дальше →
Всего голосов 42: ↑39 и ↓3+36
Комментарии11

Как я покупал 42-дюймовый ЖК-телевизор: опыт выбора и эксплуатации

Время на прочтение8 мин
Количество просмотров200K
Поклонником телевидения я никогда не был, поэтому без какого-либо дискомфорта около 6 лет пользовался стареньким кинескопным Samsung примерно такого же возраста. Играл и фильмы смотрел на ноутбуке, а сам же ТВ включался лишь изредка, для «фона».

С приобретением игровой консоли xBox 360 я всерьез задумался о покупке современного телевизора, так как играть на старом кинескопном было практически нереально. Во-первых, в нем попросту нет HDMI-порта, и приходилось довольствоваться обычными «тюльпанами» и переходником SCART. Во-вторых, в силу низкого разрешения экрана нельзя было насладиться всей полнотой графики современных игр, а мелкие надписи (например, пояснения в играх) и вовсе были нечитабельны. Выход виделся один – приобретение современного телевизора.

Читать дальше →
Всего голосов 67: ↑48 и ↓19+29
Комментарии99

Как сделать MMORPG своими руками. Медленно, сложно, интересно

Время на прочтение4 мин
Количество просмотров32K
Привет, хабрахабр! Меня зовут Егор Курьянович и ты, возможно, помнишь меня по паре интернет-проектов: Кьюби и Идейнику. А быть может, ты даже слышал о других моих начинаниях. Сегодня я хочу рассказать тебе, чем занимался последние пару лет.



Ты ведь любишь игры, не так ли? То, что ты видишь на КДПВ, называется FAR7. Чтобы было немного понятнее, скажу, что молодежь сравнивает её с Космическими Рейнджерами, те кто постарше, вспоминают StarControl2, а совсем уже хардкорные геймеры постоянно твердят об Elite. Сойдемся на том, что это браузерный космосим. В игре вы можете путешествовать между звездными системами, торговать, воевать и выполнять различные миссии.

Вся игра написана мною с нуля в одиночку и может быть использована как демо, для демонстрации возможностей стека HTML5. Все подробности о технологиях и трудностях разработки инди-проектов ждут вас под катом.
Читать дальше →
Всего голосов 190: ↑176 и ↓14+162
Комментарии66

Лёгкий сайт или как посадить браузер на диету

Время на прочтение14 мин
Количество просмотров144K

А что если объединить профессионалов, работавших над крупными web проектами, чтобы создать исчерпывающее руководство по оптимизации front-end разработки?
И получить в результате не скучную инструкцию, а что то поинтереснее? А если позвать Briza Bueno (Americanas.com), Davidson Fellipe (Globo.com), Giovanni Keppelen (ex-Peixe Urbano), Jaydson Gomes (Terra), Marcel Duran (Twitter), Mike Taylor (Opera), Renato Mangini (Google), и Sérgio Lopes (Caelum) чтобы собрать лучшие практики?

Именно это мы и сделали! Мы научим вас создавать быстрые сайты.

Zeno Rocha, руководитель проекта.


Читать дальше →
Всего голосов 193: ↑179 и ↓14+165
Комментарии80

Основной цикл в Javascript

Время на прочтение9 мин
Количество просмотров77K


Все мы слышали про ajax и node.js. Они прочно обосновались уже не просто в словарном запасе, но и в наборе инструментов веб-разработчика. Ajax — асинхронное подтягивание данных с сервера на страницу, node — фреймворк с асинхронным IO. Но как в таком однопоточном языке, как Javascript, реализуется та самая асинхронность?

Вы, наверное, уже догадались из заголовка, речь пойдет об основном цикле («main loop»).
Читать дальше →
Всего голосов 190: ↑186 и ↓4+182
Комментарии41

Готовим адаптивное видео для HTTP Live Streaming

Время на прочтение7 мин
Количество просмотров38K
Почти все пользуются, и, наверняка, многие слышали про динамическую адаптацию видеопотока под пропускную способность сети. В последнее время это уже практически обязательное требование к online-видео в интернете. Преимущества адаптивного видеопотока очевидны: если сеть временами «проседает», видео продолжает отображаться в плеере без видимых подкачек и буферизации; качество картинки автоматически выбирается адекватным пропускной способности сети.

Несмотря на то, что динамическая адаптация видеопотока уже сравнительно «старая» технология, существует множество мелких подробностей о том, как добиться лучшего результата. Чтобы и на серверной стороне попроще и подешевле, и чтобы такое видео было совместимо с как можно большим количеством клиентов (Web, iOS, Android, ну и не забываем про Smart TV).

Посмотреть, как сделать адаптивное видео для HLS
Всего голосов 15: ↑12 и ↓3+9
Комментарии14

Хабраинтервью с создателями игры «Космические рейнджеры» Алексеем Дубовым и представителями СНК

Время на прочтение10 мин
Количество просмотров44K
Алексей ДубовойПредлагаю вашему вниманию интервью с разработчиком легендарной российской игры «Космические рейнджеры» Алексеем Дубовым, а так же с представителем «Союза Независимых Квестописателей» Яковом Уваровым.

Игра «Космические рейнджеры» вошла в десятку лучших игр всех времен и народов по версии Хабрахабра 2013 года. А среди российских игр заняла первое место, обогнав «Тетрис» и украинскую разработку «Казаки» с приличным отрывом. Признаюсь, я ничего вообще не знал об этой игре и заинтересовался, что это за чудо такое. Посмотрев видео на ютубе понял, что это действительно выдающаяся игра, поскольку фанаты отзываются о ней как о «лучшей игре на свете».

Я связался с Дмитрием Гусаровым, Алексеем Дубовым и ребятами из СНК, которые готовили аддон «Революция». Дмитрий от интервью отказался, Алексей согласился ответить по почте. В другом посте я предложил всем желающим задать свои вопросы. На основе этих вопросов и появилось это интервью.

Алексей Дубовой


История игры «Космические рейнджеры»


Вам было всего 18 лет (верно?), когда вы взялись за написание масштабного проекта. Как Вы на это решились? Был ли какой-то опыт написания игр до КР?

В детстве я начинал с компьютеров «Спектрум» и «Поиск». Первой игрой, которую я увидел, была «Nether Earth». Тогда она перевернула мое сознание. И с этого времени я начал увлекаться компьютерами, играми и программированием. То, что я буду программистом, я осознал очень рано, мне было очень интересно изучать движки, создавать свои, все остальное меня перестало интересовать.

Шло время, я набирался опыта, и в середине 99 года я в интернете случайно набрел на сайт Дмитрия Гусарова. Он в то время заканчивал делать «Генерала» и искал себе работу в игровом дизайне. Мы встретились, поговорили и решили делать новую игру на космическую тему, так как понимали, что графики нужно сделать значительно меньше, чем для других жанров, да и сама тема космоса нам интересна. Если для Дмитрия были интересны игры Elite, Master of Orion, то я был фанатом Star Wars: X-Wing серии и Star Control 2.

На тот момент мне был 21 год, и я начал работать над игрой не особо задумываясь о перспективах и финансировании, я был молод и полон желания просто заниматься любимым делом.
Читать дальше →
Всего голосов 60: ↑54 и ↓6+48
Комментарии33

Хвостовое масштабирование

Время на прочтение18 мин
Количество просмотров13K
Взаимодействие с системами, которые реагируют на запросы пользователя быстро (в течение 100 мс), ощущается тем же пользователем, как более плавное и естественное, чем взаимодействие с системами, которые реагируют долго. Развитие Интернета и возникновение датацентр-масштабных вычислительных систем (warehouse-scale computing systems) дало возможность появлению появлению веб-сервисов, обладающих высокой скоростью реакции и в тоже время, обрабатывающих терабайтные массивы данных, расположенные на тысячах серверов. Например, поисковая система Google обновляет результаты выдачи в ответ запроса одновременно с тем, как пользователь печатает, при этом система предсказывает наиболее вероятный запрос, основываясь на напечатанном префиксе, и осуществляет поиск и отображение результатов за десятки милисекунд. Устройствам дополненной реальности (таким как, например, Google Glass), которые только-только начали выходить на рынок, понадобятся веб-сервисы с еще более высокой скоростью реакции, дабы гарантировать естественность взаимодействия.
Читать дальше →
Всего голосов 30: ↑30 и ↓0+30
Комментарии4

Следим за коллекцией. Tailable cursors

Время на прочтение2 мин
Количество просмотров10K


Если вы молоды и энергичны интересуетесь mongoDb, хотите подискутировать на тему перевода слова tailable на русский, и вас интересует откуда взята пикрелейтед — добро пожаловать под кат.

Да, да это про меня, уже читаю
Всего голосов 26: ↑24 и ↓2+22
Комментарии10

Использование паттернов проектирования в javaScript: Порождающие паттерны

Время на прочтение5 мин
Количество просмотров75K
Привет, хабр!
С удивлением обнаружил отсутствие на хабре развернутой статьи о сабже, что немедленно сподвигло меня исправить эту вопиющую несправедливость.

В условиях когда клиентская часть веб-приложений становится все более толстой, бизнес-логика неумолимо переползает на клиент, а на суверенитет серверных технологий все более смело посягает node.js нельзя не задуматься о приемах проектирования архитектуры на javaScript. И в этом деле нам несомненно должны помочь паттерны проектирования — шаблонные приемы решения часто встречающихся задач. Паттерны помогают построить архитектуру, которая потребует от вас наименьших усилий при необходимости внести изменения. Но не стоит воспринимать их как панацею, т.е., грубо говоря, если качество кода «не фонтан», он кишит хардкодом и жесткой связью между логически независимыми модулями, то никакие паттерны его не спасут. Но если стоит задача спроектировать масштабируемую архитектуру, то паттерны могут стать хорошим подспорьем.
Но впрочем эта статья не о паттернах проектирования как таковых, а о их применении в javaScript. В первой части этой статьи я напишу о применении порождающих паттернах.
Читать дальше →
Всего голосов 60: ↑45 и ↓15+30
Комментарии30

Почему современные интерфейсы плохие

Время на прочтение7 мин
Количество просмотров91K
В данной статье я затрону современные интерфейсы. Не все из них плохие. Но складывается впечатление, что такие титаны создания ПО, как Microsoft и Google, идут неверным путем. И этот путь заведет всех нас в глубокую … ситуацию.
Внимание, много букв!
Читать дальше →
Всего голосов 268: ↑185 и ↓83+102
Комментарии285

Немного о Steam Web Api

Время на прочтение3 мин
Количество просмотров196K


Сервис цифровой дистрибуции Steam от компании Valve становится всё более популярным среди игроков. По состоянию на январь 2013, через Steam распространяется более трёх тысяч товаров, на которые действуют ежедневные, срединедельные и скидки на выходные дни, а количество зарегистрированных аккаунтов превысило 60 миллионов.

В настоящее время, в рунете очень мало информации об использовании Steam Api (или же Steam Web Api). В данном топике я расскажу о том, как получать нужную вам информацию из сообщества Steam для интеграции её в свои сайты, блоги или же просто получить информацию о пользователе, не заходя в Steam.
Читать дальше →
Всего голосов 21: ↑17 и ↓4+13
Комментарии29

Важнейшие $in'ы: производительность MongoDB в диапазонах

Время на прочтение3 мин
Количество просмотров12K
Перевод этой статьи уже есть на хабре, но он ужасен и содержит ложную информацию.

Приветствую, искатели приключений! Путешествуя по территории индексации MongoDB хотя бы некоторое время, вы, возможно, познакомились с таким правилом: если ваш запрос содержит сортировку/порядок (orderby) – добавьте сортируемое поле в конец индекса который используется для запроса.

Во многих случаях когда запрос содержит равенство (то есть поиск конкретного значения, например, {“name”: “Charlie”}) данная мантра бывает весьма полезной.

Запрос

db.drivers.find({"country": {"$in": ["A", "G"]}}).sort({"carsOwned": 1})

Индекс

{"country": 1, "carsOwned": 1}

Такая комбинация будет не такой эффективной, как может показаться, не смотря на то, что индекс соответствует правилу. В этом запросе есть ловушка, в которую вы с легкостью попадете следуя общепринятому мнению.
Читать дальше →
Всего голосов 42: ↑40 и ↓2+38
Комментарии9

Масштабирование производительности PostgreSQL с помощью партицирования таблиц

Время на прочтение13 мин
Количество просмотров32K

Классический сценарий


Вы работаете над проектом, где транзакционные данные хранятся в базе данных. Затем вы развёртываете приложение в рабочей среде, и производительность великолепна! Запросы проходят шустро, и задержка при их вводе практически незаметна. Через несколько дней/недель/месяцев база данных становится всё больше и больше, и скорость запросов замедляется.

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

Администратор базы данных (DBA) посмотрит и проследит, чтобы база данных была оптимально настроена. Он предложит добавить определённые индексы, убрать логирование на отдельную партицию, подправить параметры движка базы данных и убедиться, что база данных здорова. Можно также добавить выделенных IOPS (Input/Output Operations Per second) на EBS диске, чтобы увеличить скорость дисковых партиций. Это даст вам выиграть время и даст возможность решить главную проблему.

Рано или поздно вы поймёте, что данные в вашей базе данных являются узким местом (botleneck).
В базах данных многих приложений важность информации уменьшается со временем. Если вы сможете придумать способ избавиться от этой информации, ваши запросы будут проходить быстрее, время создания бэкапов уменьшится, и вы сэкономите кучу места. Вы можете удалить эту информацию, однако тогда она пропадёт безвозвратно. Вы можете послать множество DELETE запросов, вызвав создание тонн логов, и использовать кучу ресурсов движка базы данных. Так как же мы избавимся от старой информации эффективно, но не потеряв её навсегда?
В примерах мы будем использовать PostgreSQL 9.2 на Engine Yard. Вам также нужен git для установки plsh.

Читать дальше →
Всего голосов 45: ↑43 и ↓2+41
Комментарии15

Меряем производительность накопителей или снова про IOPS

Время на прочтение102 мин
Количество просмотров27K
Навеяно постом уважаемого amarao о том, как надо измерять производительность дисков.

Цель:


Протестировать производительность имеющихся в наличии средств хранения информации и убедиться в верности выбранной методики, а также понять разницу в производительности между разными видами накопителей, а также enterprise-level и consumer-level жёсткими дисками.

Оборудование:


  1. SD-карта Sandisk Class 10 UHS 1 Extreme Pro 8 GB (до 95 Мбайт/с чтение, до 90 Мбайт/с запись)
  2. SD-карта Team Class 10 32 GB (до 20 Мбайт/с)
  3. SD-карта Transcend 2GB без класса скорости
  4. SSD-диск OCZ-AGILITY3 60 GB
  5. SATA-диск consumer-level Hitachi Deskstar HDS723020BLA642 2 ТБ 7200 об/мин, 64 Мбайт
  6. SATA-диск enterprise-level Western Digital RE3 WD2502ABYS-23B7A0 250 GB 7200 об/мин 16 Мбайт
  7. SATA-диск consumer-level Seagate Barracuda 7200.11 ST3320613AS 320 GB 7200 об/мин 16 Mбайт
  8. CD-ROM
  9. RAM-диск /dev/ram в Linux


Методика тестирования:


Методика полностью описана в посте. Есть правда несколько не совсем понятных моментов:
Мы подбираем такую глубину параллельности операций, чтобы latency оставалось в разумных пределах.
Задача подобрать такой iodepth, чтобы avg.latency была меньше 10мс.

Так как в тестировании используется не СХД и не диски SAS, а различные накопители SATA, то параллельность нам измерять нету смысла.
Очищать диск перед каждым тестированием (dd if=/dev/zero of=/dev/sdz bs=2M oflag=direct) очень времязатратно, поэтому будем это делать перед тестированием один раз на каждый накопитель.
Тестировать весь диск полностью очень времязатратно, поэтому будем использовать тестирование в течении 30 секунд.
Итак, сформулируем методику тестирования для нашего случая:
Получить значение IOPS, выдаваемое накопителем при произвольном чтении и записи блоками по 4 Кбайт и задержке avg.latency не более 10 мс за время теста в 30 секунд. Также для полноты картины измерим скорость линейной записи.
Читать дальше →
Всего голосов 21: ↑12 и ↓9+3
Комментарии21

Почему мы (всё ещё) верим в удалённую работу

Время на прочтение5 мин
Количество просмотров134K
На дворе 2013, прошло почти три года с момента, как мы заработали первую сумму денег и начали расти из компании из четырёх сотрудников. Недавно Джефф написал хороший пост об удалённой работе, в основном о нашем плане того, как заставить это работать. Сейчас, по прошествии нескольких лет, я бы хотел написать, что же на самом деле происходит.

Итак, что мы представляем из себя на данный момент? В Stack Exchange сейчас работают 75 человек, примерно половина занимается продажами (маркетинг и реклама), остальные же — созданием продуктов (разработка, дизайн, управление сообществами). БОльшая часть удалённо работающих сотрудников занимаются разработкой: 16 удалённых и 18 офисных разработчиков, сисадминов, дизайнеров. У нас команда-гибрид, которая, как мне кажется, лучшая в мире. Я руковожу отделом проектирования, так что буду говорить в основном о разработчиках, но это применимо ко всем должностям.
Читать дальше →
Всего голосов 158: ↑150 и ↓8+142
Комментарии103

Чему я научился у Джейсона Фрайда (37signals)

Время на прочтение10 мин
Количество просмотров27K
Творческая беседа Дэна Шиппера, кофаундера Firefly и Джейсона Фрайда, кофаундера 37signals привела автора статьи к занятным выводам о том, как и кому продавать ПО. Надеемся, и вам, Хабражители, принесет пользу.

Переведено компанией-локализатором Alconost


Читать дальше →
Всего голосов 46: ↑41 и ↓5+36
Комментарии15

Игрофикация в реальном мире. За и против

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



Не все представители хабрасообщества согласились с нашими выводами (и это здорово, на самом деле!), так что мы решили развить свою мысль и продемонстрировать плюсы и минусы игрофикации на примерах из реальной «корпоративной» жизни.
Вперед!
Всего голосов 41: ↑31 и ↓10+21
Комментарии18

Информация

В рейтинге
Не участвует
Откуда
Ульяновск, Ульяновская обл., Россия
Дата рождения
Зарегистрирован
Активность