Pull to refresh
4
0
Send message

OAuth: описание протокола простым и понятным языком

Reading time16 min
Views190K
OAuth — популярный протокол, который позволяет социальным сервисам интегрироваться между собой и дает безопасный способ обмена персональной информацией. OAuth может связать между собой 2 сервиса, каждый из которых имеет свою пользовательскую базу — именно их я в данном случае называю «социальными». Когда начинаешь работать с OAuth, первое ощущение — что протокол весьма сложен и избыточен. В этой статье я попытаюсь объяснить основы OAuth человеческим языком.

Пример кросс-авторизации


Вернемся в 2005-й год и представим, что мы пишем социальную сеть. В ней имеется форма импорта контактов из адресной книги GMail. Что нужно для доступа к контактам GMail? Конечно, логин и пароль от ящика. Но если мы попросим ввести их на нашем сайте, пользователь заподозрит неладное. Где гарантия, что мы не сохраняем на сервере введенные пароли? Поэтому нам хочется, чтобы пароль вводился только на сайте GMail, и после этого доступ к контактам через API GMail предоставлялся нашей социальной сети (возможно, на время).
Под катом - повествование с примерами
Total votes 134: ↑124 and ↓10+114
Comments34

Курс лекций «Стартап». Питер Тиль. Стенфорд 2012. Занятие 1

Reading time11 min
Views719K

Этой весной, Питер Тиль (Peter Thiel), один из основателей PayPal и первый инвестор FaceBook, провел курс в Стенфорде — «Стартап». Перед началом Тиль заявил: «Если я сделаю свою работу правильно, это будет последний предмет, который вам придется изучать».

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

Конспект лекций — Питер Тиль (курс: CS183) Стартап — Стэнфорд, весна 2012 г.


Занятие 1: Вызов будущего
Занятие 2: Снова как в 1999?
Занятие 3: Системы ценностей
Занятие 4: Преимущество последнего хода
Занятие 5: Механика мафии
Занятие 6: Закон Тиля
Занятие 7: Следуйте за деньгами
Занятие 8: Презентация идеи (питч)
Занятие 9: Все готово, а придут ли они?
Занятие 10: После Web 2.0
Занятие 11: Секреты
Занятие 12: Война и мир
Занятие 13: Вы — не лотерейный билет
Занятие 14: Экология как мировоззрение
Занятие 15: Назад в будущее
Занятие 16: Разбираясь в себе
Занятие 17: Глубокие мысли
Занятие 18: Основатель — жертва или бог
Занятие 19: Стагнация или сингулярность?
Читать дальше →
Total votes 86: ↑76 and ↓10+66
Comments33

Что такое Selenium?

Reading time4 min
Views547K
Время от времени мне приходится распутывать терминологические хитросплетения, связанные с употреблением словосочетаний, в которых встречается слово Selenium – Selenium 2.0, Selenium IDE, Selenium RC, Selenium WebDriver, Selenium Server, Selenium Grid.

Путаница возникает во многом из-за того, что нигде нет чёткого описания всех этих терминов на одной страничке, и я постараюсь восполнить этот информационный пробел.
Читать дальше →
Total votes 42: ↑36 and ↓6+30
Comments31

Что такое Selenium WebDriver?

Reading time10 min
Views353K
Эта статья является продолжением более общей статьи «Что такое Selenium?», в которой объясняется, какое положение занимает Selenium WebDriver среди других инструментов автоматизации веб-приложений.

Здесь я постараюсь рассказать более подробно о том, что такое Selenium WebDriver, и почему его бессмысленно сравнивать с TestComplete, QuickTest Pro и другими инструментами автоматизации тестирования. И дело не только в том, что Selenium WebDriver бесплатный и открытый – его столь же бессмысленно сравнивать с другими бесплатными инструментами, такими как Sahi или Robot Framework.

Почему?

Потому что Selenium WebDriver – это не инструмент для автоматизации тестирования.

А что же это такое?

На этот вопрос можно дать несколько разных ответов, сначала я дам короткие ответы, а потом – более подробные.

Кроме того, я объясню, почему Selenium WebDriver имеет такой убогий и неудобный в использовании интерфейс (набор команд), почему он не генерирует красивые отчёты и почему несмотря на всё это он настолько популярен :)

На всякий случай оговорюсь, что хотя в этой статье речь идёт про WebDriver, многие аргументы справедливы и в отношении Selenium RC, но я не буду ничего говорить специально про эту устаревшую версию, потому что её место – на свалке истории.
Читать дальше →
Total votes 27: ↑23 and ↓4+19
Comments9

Selenide: удобные тесты на Selenium WebDriver

Reading time3 min
Views84K
Многие слышали про Selenium WebDriver — один из самых популярных инструментов для написания приёмочных/интеграционных тестов.


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

Поэтому мы решили выделить этот повторяющийся код в отдельную библиотеку. Так на свет появился Selenide.

Что такое Selenide
Total votes 17: ↑16 and ↓1+15
Comments33

Структуры данных в картинках. HashMap

Reading time6 min
Views1.2M
Приветствую вас, хабрачитатели!

Продолжаю попытки визуализировать структуры данных в Java. В предыдущих сериях мы уже ознакомились с ArrayList и LinkedList, сегодня же рассмотрим HashMap.



HashMap — основан на хэш-таблицах, реализует интерфейс Map (что подразумевает хранение данных в виде пар ключ/значение). Ключи и значения могут быть любых типов, в том числе и null. Данная реализация не дает гарантий относительно порядка элементов с течением времени. Разрешение коллизий осуществляется с помощью метода цепочек.

А почему бы и нет?
Total votes 81: ↑75 and ↓6+69
Comments42

Накладные расходы памяти у коллекций

Reading time7 min
Views89K
Мне было интересно, какие коллекции сколько съедают дополнительной памяти при хранении объектов. Я провёл замеры накладных расходов для популярных коллекций, предполагающих хранение однотипных элементов (то есть списки и множества) и свёл результаты на общий график. Вот картинка для 64-битной Hotspot JVM (Java 1.6):

Читать дальше →
Total votes 67: ↑64 and ↓3+61
Comments14

Java собеседование. Коллекции

Reading time10 min
Views890K
С недавнего времени у меня появилась настойчивая мысль, что профессиональное развитие сильно замедлилось и это хочется как-то исправить. Да, читаю книги, слушаю курсы, но в то же время приходит и понимание того, что возможно пришло время сменить работу, здесь вроде как все изучено, плавно уходим в рутину. Данная мысль сподвигла меня на рассылку своего резюме в несколько компаний — лидеров рынка. После прохождения собеседования в 3 из них, я решил, как водится внести свои 5 копеек в освещение обширной темы собеседования, а именно технических вопросов по Java коллекциям, с которыми приходится сталкиваться. Да, знаю, читатель скажет: «коллекции — избитая тема, сколько можно», но часть из приведенных ниже вопросов, я задавал своим знакомым разработчикам, которые занимают именно позиции разработчиков («крепких середнячков», по меркам недалекой от Москвы глубинки, которые уверенно справляются со своей работой на практике, а вот в теории скажем так есть пробелы, потому, что работа не требует решения каких-то нетривиальных задач, да и потому что не всем это интересно — изучать как внутри работает структура данных), вызывало растерянность. Думаю, что рассмотренный материал будет не очень интересен разработчикам выше уровня Junior (я попрошу их комментировать, дополнять и критиковать изложенный здесь материал), а вот Junior`ы уверен, найдут в этой статье интересное для себя.
Читать дальше →
Total votes 97: ↑86 and ↓11+75
Comments306

Способы передвижения компьютерных персонажей (часть 2)

Reading time5 min
Views45K
В предыдущей статье я рассказал о видах передвижений и перемещений в плиточном мире. Сегодня расскажу подробней о векторных способах. Как и в прошлый раз расскажу теорию, объясню суть и покажу пример реализации перемещений на языке C++.
Читать дальше →
Total votes 31: ↑27 and ↓4+23
Comments18

Способы передвижения компьютерных персонажей (Часть 1)

Reading time6 min
Views63K
Все, кто начинал заниматься реализацией игрового искусственного интеллекта, наверняка сталкивались с проблемой реализации движений своих персонажей. Дело в том, что поведение и в реальном мире в большей степени определяет интеллектуальность того или иного существа. Даже люди друг друга зачастую оценивают по поведению (что немного неверно). Эта статья рассчитана на тех, кто только приступает к реализации своего первого игрового ИИ. Я расскажу о видах перемещений, их преимуществах и недостатках, а также покажу на примере как можно реализовать тот или иной способ на языке C++. Замечания и критика, а так же свои точки зрения приветствуются.
Читать дальше →
Total votes 77: ↑67 and ↓10+57
Comments14

jQuery изнутри — парсинг html

Reading time6 min
Views65K
Продолжаем дело первой статьи и пытаемся разобраться с тем, что же делает за нас jQuery, когда мы с помощью этой библиотеки создаем DOM-элементы.

В прошлом выпуске мы упомянули, что при передаче в jQuery вместо селектора html-строки, на основе нее функция parseHTML создаст соответствующие элементы и вернет их в привычном jQuery-объекте. Сейчас мы рассмотрим все это более тщательно и затронем кроме core.js еще manipulation.js и attributes.js (мельком).
Я клевый, мне интересно!
Total votes 84: ↑82 and ↓2+80
Comments30

jQuery изнутри — введение

Reading time6 min
Views102K
По работе мне несколько раз приходилось участвовать в собеседовании кандидатов на должность клиент-сайдера у нас в компании, смотреть на их познания в Javascript. Удивительно что никто из них не знал толком как же работает jQuery изнутри, даже те, кто отметил свои знания jQuery уровнем «отлично», увы.

У jQuery очень низкий порог вхождения, о нем часто пишут и используют всюду, где только можно (и даже там, где, в общем-то, не нужно), поэтому некоторые даже не смотрят на чистый Javascript. Зачем, мол, его знать, когда есть jQuery, а по нему — тонны примеров и готовых плагинов? Даже на Хабре видел статью про рисование на Canvas, где автор подключил jQuery и использовал его только один раз — для того, чтобы получить доступ к Canvas по его идентификатору. И не считал это чем-то ненормальным.

Извините, отвлекся. Суть поста и следующих частей серии в том, чтобы рассказать о том, как же работает библиотека изнутри и что же в ней происходит по мере выполнения каких-то методов.
Готов и хочу читать дальше
Total votes 149: ↑139 and ↓10+129
Comments80

Курс лекций «Стартап». Питер Тиль. Стенфорд 2012. Занятие 9

Reading time23 min
Views88K

Этой весной, Питер Тиль (Peter Thiel), один из основателей PayPal и первый инвестор FaceBook, провел курс в Стенфорде — «Стартап». Перед началом Тиль заявил: «Если я сделаю свою работу правильно, это будет последний предмет, который вам придется изучать».

Один из студентов лекции записывал и выложил транскипт. В данном хабратопике я перевожу девятое занятие. Редактор Astropilot.

Занятие 1: Вызов будущего
Занятие 2: Снова как в 1999?
Занятие 3: Системы ценностей
Занятие 4: Преимущество последнего хода
Занятие 5: Механика мафии
Занятие 6: Закон Тиля
Занятие 7: Следуйте за деньгами
Занятие 8: Презентация идеи (питч)
Занятие 9: Все готово, а придут ли они?
Занятие 10: После Web 2.0
Занятие 11: Секреты
Занятие 12: Война и мир
Занятие 13: Вы — не лотерейный билет
Занятие 14: Экология как мировоззрение
Занятие 15: Назад в будущее
Занятие 16: Разбираясь в себе
Занятие 17: Глубокие мысли
Занятие 18: Основатель — жертва или бог
Занятие 19: Стагнация или сингулярность?
Читать дальше →
Total votes 30: ↑28 and ↓2+26
Comments17

Продвижение мобильных приложений

Reading time4 min
Views8K
Согласно статистике, 59% мобильных приложений не окупает затраты при его разработке.
Оригинальная идея и хорошая реализация — только половина пути к успеху.
Хорошее приложение, но без маркетинга, с большой вероятностью провалиться, а плохое при грамотном продвижении может окупить себя в десятки раз.

Далее разберем приемы продвижения приложения без вложения средств.

ASO оптимизация

Происходит в два шага и у каждого своя цель:
1. Непосредственно поисковая оптимизация (SEO),
2. Визуальная оптимизация.

Цель первого — повысить searching ranks. То есть сделать так, чтобы Ваше приложение могли найти как можно больше людей, используя поисковик.

Существует три основных бесплатных приема.
1) Название приложения. Очень важно выбрать правильное название. Именно от него в основном зависит, сколько людей найдут Вас, используя поиск. Старайтесь сделать так, чтобы название включало основные ключевые поисковые слова.
Пример: приложение на тему «Развлекательные игры для вечеринок» лучше назвать «Развлечения для вечеринок». Сразу 2 ключевых слова: развлечения и вечеринки. Не стоит называть, к примеру, «Развлекуха» или «Мимоза».
2) Описание. Большинство пользователей читает только первый абзац. Постарайтесь сделать его максимально информативным и привлекательным. Также используйте по максимуму ключевые слова в тексте.
Пример: приложение на тему «Кулинария». Используйте в описании примерно следующие слова: кухня, рецепты, вкусно, приготовление и тд.
3) Перевод. Прирост пользователей до 15%. Используйте основные языки (английский, немецкий, китайский и др). Постарайтесь обеспечить качественный перевод и не переводить текст в гугл переводчике, других программах.
Читать дальше →
Total votes 22: ↑15 and ↓7+8
Comments5

Как стать миллионером в AppStore или немного формул про продвижение и продажи. Часть 2

Reading time5 min
Views61K

Great Appeal или девушка на миллион



Девушка на миллион

Итак, в прошлой статье мы закончили на том, что разобрались с тем, как получить «показы» нашего приложения в AppStore.

Иногда ошибочно считается, что запуск – это самое сложное. Это, мягко скажем, не так. Настоящая работа начинается после запуска.

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

Кто виноват и что делать?
Total votes 116: ↑102 and ↓14+88
Comments27

Как стать миллионером в AppStore или немного формул про продвижение и продажи. Часть 1

Reading time5 min
Views105K

Схема успеха



Джон, мы потеряли два листа математических выкладок! Что делать?
Как обычно, Билл… напиши: «отсюда с очевидностью следует…»


image

Чтобы прочитать некраткую сопроводительную записку к схеме – добро пожаловать под кат.

Читать дальше →
Total votes 130: ↑119 and ↓11+108
Comments35

Сколько стоит создать приложение или вся правда о деньгах

Reading time7 min
Views71K
Узнав, что я занимаюсь разработкой мобильных приложений, мои знакомые время от времени, спрашивают: «сколько стоит разработать приложение?». И я честно отвечаю: «от 200 долларов». Приложение будет писать на экране HELLO WORLD, его не пропустят в магазин из-за «bad user experience», но работать-то приложение будет!

Самое удивительное, что огромное количество разработчиков и вправду создает что-то за 3000 долларов и даже выкладывает это в App Store.

Некоторые рассказы российских разработчиков поразительно напоминают бродячий сказочный сюжет «о волшебном помощнике»: в духе конька горбунка или золотой рыбки. Из ниоткуда появляются дизайнеры и композиторы и бесплатно творят захватывающие вещи, а программисты со смирением Золушки по ночам строчат изначально гениальный код…

Так и хочется, заглянуть им в глаза и проникновенно спросить:

— Ребят, а вы из какой сказки?

А то в моей суровой реальности разработка качественного, пусть и не большого приложения для Appstore – это долго, непросто и дорого.

Основные статьи расходов при создании проекта:

Статья Расход
Дизайн приложения $ 13 000
Создание уникальности $ 10 000
Производство графики $ 35 000
Программирование $ 45 000
Текстовый контент $ 5 000
Локализация $ 3 000
Музыка и звук $ 1 000
Полировка $ 17 000
Маркетинг $ 30 000
Управление $ 30 000
Итого: $ 189 000


Вся раскладка будет сделана на примере нашего приложения "МоиЭмоции". Приложение бесплатное, весь функционал можно посмотреть.

Почему так дорого?
Total votes 221: ↑174 and ↓47+127
Comments213

Как начать писать игры

Reading time9 min
Views348K
Оригинал: Starting out on Game Programming

Путь в индустрию игровых разработок не близок. Эта статья призвана помочь понять с чего лучше начать это путешествие.

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

Руководства хороши для обучения чему-то шаг за шагом, например тому, как перемещать изображение точки по экрану. Для того чтобы собрать игру воедино, вам нужны навыки решения возникающих проблем, приобретаемые лишь с опытом. Это не то, чему можно научиться из руководств. Лучший способ научиться делать игры — это начать их делать.
Дальше
Total votes 134: ↑119 and ↓15+104
Comments51

Программирование игр под Android

Reading time3 min
Views61K
image
Автор – Марио Цехнер
Перевод – Егор Сидорович, Евгений Зазноба
Дата выхода – 17/10/2012


Анонс адаптирован по рецензии.

Любой новоиспеченный разработчик Android, твёрдо намеренный создать новую игру, которая не уступит по популярности знаменитым Angry Birds, с энтузиазмом воспримет выход этой книги. Но подойдет ли она вам? Предлагаю мой обзор этой работы. Надеюсь, читатели смогут судить, как лучше всего ее изучать, и для кого она оптимально подходит.

Читать дальше →
Total votes 33: ↑22 and ↓11+11
Comments14

Упражнения для тренировки мозга

Reading time3 min
Views126K

В силу склада ума или давнего увлечения скорочтением, мнемотехникой и прочим, у меня был повышенный интерес к играм состоящим из набора упражнений для тренировки мозга(BrainChallenge, Dr.Kawashima и др.). Переиграв практически во все что было на десктопе и nds, появилось желание использовать такие игры для каждодневных тренировок, но для этого они не совсем подходят(в тексте объясню почему). Поэтому на досуге решил написал небольшой сайт с набором такого рода упражнений.
Читать дальше →
Total votes 96: ↑81 and ↓15+66
Comments83
1

Information

Rating
Does not participate
Location
Латвия
Date of birth
Registered
Activity