Pull to refresh
113
0
Send message

Организация аутентификации по СМС по примеру Telegram/Viber/WhatsApp

Reading time6 min
Views31K

Представим, что перед вами стоит задача организовать аутентификацию пользователя (в мобильном приложении, в первую очередь) так, как это сделано в Telegram/Viber/WhatsApp. А именно реализовать в API возможность осуществить следующие шаги:


  • Пользователь вводит свой номер телефона и ему на телефон приходит СМС с кодом.
  • Пользователь вводит код из СМС и приложение его аутентифицирует и авторизует.
  • Пользователь открывает приложение повторно, и он уже аутентифицирован и авторизован.

Мне потребовалось некоторое количество времени, чтобы осознать, как правильно это сделать. Моя задача — поделиться наработанным с вами в надежде, что это сэкономит кому-то времени.


Я постараюсь кратко изложить выработанный подход к этому вопросу. Подразумевается, что у вас API, HTTPS и, вероятно, REST. Какой у вас там набор остальных технологий неважно. Если интересно — добро пожаловать под кат.


Мы поговорим о тех изменениях, которые следует проделать в API, о том, как реализовать одноразовые пароли на сервере, как обеспечить безопасность (в т.ч. защиту от перебора) и в какую сторону смотреть при реализации это функциональности на мобильном клиенте.

Читать дальше →
Total votes 12: ↑8 and ↓4+4
Comments25

VIM: зачем, если есть IDE, и как?

Reading time4 min
Views125K

Сегодня вышел текст о том, как человек перешёл с Sublime на VIM. В комментариях, как обычно это бывает, появились сообщения в духе "Зачем мне тратить время на Vim, если есть IDE, где всё работает?" (люди даже статьи на эти темы пишут). Хотел внести свои пять копеек, но объём написанного плавно перевёл текст из разряда "комментарий" в разряд небольшой статьи.


В целом, всё, что ниже — это вкусовщина, конечно. Нравится вам ваша IDE (или ваш текущий инструмент), да и пожалуйста. Используйте для текущих задач то, чем вы владеете лучше всего, это аксиома эффективной работы. Но если у вас вдруг появилось немного времени на повышение вашей эффективности в целом, то попробую вас заинтересовать именно Vim'ом, сравнивая его с некой обобщенной IDE.


Узнать зачем и как начать
Total votes 100: ↑75 and ↓25+50
Comments401

Подготовка произвольного LTE модема для работы с сим-картой для модема Yota на примере Huawei E3272

Reading time3 min
Views139K
Главным мотиватором для создания этой статьи послужило то, что чтобы восстановить тот небольшой набор шагов, что будет приведен чуть ниже, я потратил много часов, пообщался с двумя представителями Йоты и перелопатил миллион форумов, блогов и подобных ресурсов (в т.ч. достаточно бесполезный пост на хабре по моему модему). Надеюсь, текст ниже сэкономит кому-то силы и время.

image


Сразу к главному. Несмотря на то, что в интернетах пишут, что всё должно работать само собой и сразу, для того, чтобы ваша сим-карта от модема (а не планшета и смартфона, там другая история!) йоты заработала внутри произвольного модема, вам надо проделать следующее:
  1. Разлочить модем, если он привязан к оператору (перепрошивка не требуется!).
  2. Вставить симку и добиться того, что б он подключился к базовой станции и зарегистрировался в сети Йота.
    • Для этого необходимо убедиться, что есть покрытие LTE от йоты (3G не подходит!), вот карта покрытия, но реальное покрытие больше, надо проверять на местности;
    • убедиться, что модем работает на йотовских частотах LTE: band-7;
    • и перевести модем в режим 4G.

  3. Установить соединение, используя правильные параметры.


Теперь по порядку.

Читать дальше →
Total votes 15: ↑11 and ↓4+7
Comments12

О выборе моноблока за 70-100 тысяч рублей

Reading time5 min
Views19K
Меня попросили выбрать рабочий компьютер, занимающий мало места на столе, достаточно мощный, чтобы было комфортно работать, и чтобы он не быстро устарел. Стоимость 70-100 тысяч рублей.

Решено было посмотреть моноблоки. Их плюсы очевидны. А минусы в том, что сложно апгрейдить и ремонтировать, и в том, что подороже производительность на рубль выходит.

Нормального способа выбрать моноблок мне найти не удалось (обычно, я делаю предварительную фильтрацию через Яндекс.Маркет, а затем изучаю обзоры и т.п., но с моноблоками так не очень получается). Поэтому пришлось обратиться к различным форумам типа 4pda, ixbt, cyberforum и множеству других. Я потратил на изучение рынка и сведение выбора к ограниченному числу приличных вариантов очень много времени. И мне показалось полезным предоставить уважаемым читателям Geektimes выжимку и список вариантов с комментариями.

К компьютеру я выставил следующие требования:
  1. Относительно топовый и относительно новый процессор Intel Core i7 (требование того, кто будет пользоваться). На свой страх и риск, добавил к требованиям AMD A10 или AMD FX. 4 честных ядра и более.
    Хотя, что касается Core i7 или не Core i7, то важно помнить, что:
    • Мобильный i7 (который иногда ставят в моноблок) может быть менее мощным, чем обычный (настольный) Core i5 (раз, два, три, четыре).

    Так что к названиям процессоров надо относится очень осторожно, и требование «i7 и ни шагу назад» можно считать не очень обязательным.
    Забегая вперёд, скажу, что приличного моноблока с процессорами AMD мне найти не удалось. Равно как не удалось найти доступного моноблока с процессорами Интел поколения выше 4-го. Все представленные моноблоки будут идти с 4-ым поколением (Haswell).
  2. Комбинация SSD (для скорости) + HDD (для объёма); крайний случай — совсем маленький SSD для дискового кеширования.
  3. Наличие WiFi и USB 3.0 (через пару лет скорость передачи USB 2.0 будет нагонять адскую тоску).
  4. Монитор IPS.
  5. Компактное размещение (в нашем случае, эту задачу решает моноблочность).
  6. Поскольку игры и тяжелый счёт на видеокартах не планируется, то в идеале видеокарта встроенная в процессор (т.е. можно сэкономить на отдельной видеокарте, что понизит энергопотребление и шумность).
  7. Память по возможности 8Гб, но не меньше 4Гб.

Читать дальше →
Total votes 16: ↑10 and ↓6+4
Comments41

Колдунщик Яндекс.Такси в результатах поиска

Reading time1 min
Views8.4K
Вслед за началом взимания платы с таксопарков, Яндекс начал новый виток реализации достаточно агрессивной политики по привлечению клиентов в свой сервис. Так теперь при поиске по слову «такси» пользователь увидит новый колдунщик, ведущий прямиком на taxi.yandex.ru.



Похоже, и без того не шибко высокие показатели всех этих такси стартапов рискуют уменьшиться.
Total votes 35: ↑18 and ↓17+1
Comments22

Как удобно читать Хабр (и не только) на электронной книге или на мобильном

Reading time3 min
Views8.2K


Я люблю читать Хабр (а также ЖЖ, roem.ru, новости рамблера и ещё много чего) на своей любимой электронной книге Nook и, изредка, на своём мобильном на андроиде. На читалке я читаю, чтобы не портить глаза, и не напрягаться лишний раз, сидя за компьютером, а на мобильном от безысходности стоя в какой-нибудь очереди.

Я сделал страницу readitlaterlist.com/unread (сервис из серии «прочту позже») домашней на моей читалке, поставил приложение на мой телефон, и удобно добавляю топики с Хабра (ЖЖ и прочих), которые хочу почитать на читалке, с помощью плагина для Firefox'а.

Казалось бы, всё замечательно, но вот беда: обычная версия Хабра грузится в браузере моего Нука больше минуты, притормаживает и из-за вёрстки под обычные экраны необходимо вручную центровать колонку с текстом. Впрочем, неудобства я испытывал с большинством полноразмерных страниц различных СМИ и блогов.

Я пробовал мигрировать на Instapaper, т.к. он поддерживает выгрузку в epub и mobi (можно даже слать себе на email, например, для автоподгрузки на Kindle), но и тут проблема: все сервисы при вытаскивании текста статьи с Хабра режут комментарии (Хабр без комментариев?!?!).

В конце-концов, я пришёл к тому, что перед отправкой в ReadItLater я вручную правил url поста на хабре, чтобы переключиться на мобильную версию этого поста (сейчас это лишь добавить m., а раньше приходилось удалять /<имя блога>/, ставить posts, а также добавлять m.). А на сайтах СМИ я выискивал ссылки вида «версия для печати» или «версия для PDA».

Как же я это автоматизировал?
Total votes 34: ↑31 and ↓3+28
Comments30

Ruby on rails в массы: webvybory2012.ru выдают стандартную страницу ошибок development окружения Rails

Reading time1 min
Views2.7K
Наткнулся в новостях на до боли знакомую картинку

image

Cайт для мониторинга выборов обвалился при запуске

При попытке доступа на сайт webvybory2012.ru посетители получают ошибку 502 или сообщение о невозможности подключения к базе данных. В то же время другие пользователи уже могут попасть на новую версию портала. Раньше он использовался для обсуждения технических нюансов организации трансляции.


Не мог не поделиться. А вообще, я смотрю, у них там всё как у больших мальчиков: mysql2, capistrano, может даже и Rails 3.1 используется. Жаль только развернули development окружение в production.
Total votes 21: ↑11 and ↓10+1
Comments8

Автоматический запуск unit-тестов для C

Reading time3 min
Views11K
Я использую C для научных расчётов. А в этом случае, стоит крепко подумать, а надо ли вам вообще C?

Язык C нужен только в случае, если в ваших расчётах очень критична производительность или критичен доступ к железу. Во всех остальных случаях, я очень рекомендую высокоуровневые языки типа Ruby или Python (почти что стандарт языка для научных расчётов, очень много научных пакетов разного толка от математики до биологии) или, что лучше, сразу научные пакеты типа Sage (надстройка над python с возможностью использования символьных вычислений и очень много чего ещё, а также с возможностью подключения других математических пакетов, в случае, если возможностей Sage не хватает, прямо внутри Sage программы; о Sage, кстати, писали на хабре).

Для Python же, если производительность важна и вы не готовы вылизывать C-код до совершенства, есть Cython (авторы которого являются также авторами Sage), который компилирует почти питоновский код в C-код, достигая очень высоких показателей производительности.

Так что на этом этапе призываю вас ещё раз: подумайте, прежде чем использовать C для научных или иных расчётов! Иначе, поехали!

Итак, вы всё-таки решили использовать C. В этом случае надо организовать рабочую тестовую среду, а именно:

Читать дальше →
Total votes 13: ↑8 and ↓5+3
Comments5

Разворачиваем приложение на чистой Убунте: от A до Z

Reading time5 min
Views3.6K
Итак, у вас есть чистая Ubuntu, в консоли открыто ssh-соединение с сервером и консоль вас заманчиво приглашает — «root@my-awesome-host:~#» — и больше ничего нет. А хочется запустить и показать всему миру какое-то рельсовое приложение. Поехали от супа до орехов.

Читать дальше →
Total votes 65: ↑48 and ↓17+31
Comments43

Немного о том как организовывать API веб-службы

Reading time3 min
Views20K
Возникла задача организовать веб-службу, к которой будут обращать обычные клиенты из браузера и другие веб-службы.

Предположим, я продаю билеты в театр клиентам. Клиентом может быть только агентство, которое имеет свою учётную запись у меня на сервисе. Агентства бывают маленькие, в котором сидит тетёчка и ручками в личном кабинете с помощью барузера осуществляет покупку билета, а также большие, у которых всё автоматизированно. Большие хотят иметь возможность подсоединиться ко мне с помощью API и осуществить покупку.

На билеты можно смотреть цены, предварительно бронировать, выкупать бронь, возвращать купленные и удалять бронь.

Вопрос: как лучше всего организовать API?
А вот так
Total votes 58: ↑46 and ↓12+34
Comments19

ActionMailer_X509: подписываем и шифруем письма прямо в Ruby On Rails

Reading time3 min
Views1.3K
В одном из последних проектов понадобилось подписывать и шифровать с помощью сертификатов X.509 письма, отправляемые приложением на Ruby on Rails 3. Беглый поиск привёл к плагину actionmailer_x509, а вот дальше начались проблемы.

Выяснилось, что он не обновлялся с 2008 года, скорее всего не работает с Rails 3 (в частности, смущал комментарий автора: «It has been tested with Rails 2.0.1») и умеет только подписывать, но не шифровать письма. Поиск альтернативных решений ничего не дал, и пришлось знакомиться с плагином поближе.

Как я знакомился с плагином и писал новый gem
Total votes 32: ↑31 and ↓1+30
Comments6

Открытое письмо команде Яндекс.Почты, полгода спустя

Reading time2 min
Views5.7K
image

Чуть более полугода назад, 17 марта 2010, я написал на хабре топик Открытое письмо команде Яндекс.Почты, в котором изложил ряд проблем с почтой Яндекса (в первую очередь, неработающий поиск). Топик оказался резонансным (140 комментариев), и в обсуждение включились представители Яндекса, которые пообещали исправления в ближайшее время почти всех проблем, которые были затронуты. Я думаю, многим будет интересно, что же в действительности изменилось за эти полгода.
А изменилось не очень много...
Total votes 133: ↑102 and ↓31+71
Comments122

Выбор хостинга с упором в облака и с прицелом на развёртывание Rails 3 app

Reading time9 min
Views14K
Несмотря на наличие «Rails 3» в названии топика, и рассмотрения в теле статьи специфичных для Rails 3 аспектов, она может быть интересна всем остальным из-за освещения аспектов общего характера.

На Хабре много ответов на разные мои вопросы, но ответа на вопрос «а где же мне хостится», получить я, даже при внимательном штудировании Хабра, не смог. Я даже воспользовался q&a, пытаясь определиться: раз и два, но окончательного ответа так и не получил. Пришлось проводить самостоятельное исследование.

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

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

Список упоминаемых хостингов: 1gb.ru, Hostingrails, RackspaceCloud, Mediatemple, Heroku, Amazon Web Services (шапочно), Engine Yard (шапочно), Altnet (привет с Хабрахабра), justhost.com (лучи поноса), Linode, Hetzner online (выделенный сервер), Server4you

Читать дальше →
Total votes 38: ↑33 and ↓5+28
Comments59

Открытое письмо команде Яндекс.Почты

Reading time3 min
Views25K
В последний год я со всё большим уважением относился к всему, что делает компания Яндекс. Мне действительно импонировал их прогресс и я с удовольствием мигрировал на их сервисы (почта, лента, карты, фотки и т. п.). Более того, я подбил нескольких друзей перейти на Я.Почту и другие Я.сервисы. И всё это время с моим товарищем installero у меня постоянная полемика «Яндекс vs Google». Но в последнее время, мне всё сложнее держать оборону.

В январе мой коллега, которому я посоветовал перейти с mail'а на новую Яндекс.Почту, задал мне совершенно естественный вопрос: «почему у компании, которая специализируется на поиске, так плохо работает поиск по почте?». И я не знал, что ответить…
Читать дальше →
Total votes 127: ↑102 and ↓25+77
Comments140

VIM как Rails IDE в стиле TexMate благодаря набору скриптов от Akita

Reading time4 min
Views23K
Это мой первый пост на Хабре, прошу не судить строго :)

В далекие времена, когда я ещё писал на c\c++, я пользовался замечательным редактором VIM, знал минимальный набор vim-фишек, и был в целом доволен его работой. Несколько позже я стал изучать Rails и программировать на Ruby. Я достаточно быстро понял, что базовой поставкой VIM не обойтись, попробовал пару найденных в интернете руководств по доведению VIM до уровня полноценной IDE, наткнулся на подводные камни, и быстро сдался. В тот момент мне хотелось изучать в первую очередь именно Rails, а не VIM.
Немного помытарился с разными другими редакторами и IDE типа Aptana, Geany, Eclipse и т.п. пока не наткнулся на полностью, на тот момент, удовлетворящий меня Netbeans. О Netbeans можно писать, да и написано, немало хорошего. Как IDE для разработки на Ruby Netbeans просто прекрасен. Я и сейчас использую его в случае, если работаю в Windows. Но однажды я оказался на длительное время не за своим, а за чужим ноутбуком, на котором уже стоял VIM, в месте, где интернет-трафик был сильно ограничен. А Таксовик требовал срочной доработки. Выкачивать ~60мб Netbeans и ещё n-ное количество мб на плагины было не этично, я и снова начал освоение VIM. И к моей радости довольно-таки быстро наткнулся на набор скриптов от бразильца Akita on Rails и скринкаст в придачу. Он, как я понял, собрал кучу полезных плагинов вместе и чуть-чуть дописал конфиг. Всё, о чём будет говориться ниже верно не только для Ruby, но и для других языков типа C, PHP и прочее, готовые наборы сниппетов (о них далее) в комплекте есть и для них.

Основные фишки этого набора скриптов


  1. FuzzyFinderTexMate — очень удобный поиск файлов в проекте по ctrl+f. К примеру, чтобы найти файл config\routes.rb надо набрать rorb. Или даже и того меньше :)
  2. Набор сниппетов из TexMate и некоторое количество своих (в смысле, NERDSnippets). Очень удобно, набираешь vf + TAB — получаешь validates_format_of :<+attribute+>, :with => /<+regex+>/<+, :on => :<+create+>, :message => "<+is invalid+>"+>, где по TAB скачешь между параметрами, заключёнными в <+...+>. Сниппеты есть для всего, чего угодно, их полный список можно посмотреть в папке snippets в директории с файлами кофигурации VIM.
  3. Дерево проекта, реализованное с помощью NERDTree. Доступно по \+p (обратный слеш и символ p). Переключение с дерева проекта в окно редактирования кода и обратно осуществляется по ctrl+w и стрелка (куда будет стрелка, туда курсор и перескочет), в самом же дереве o — открыть\закрыть папку\файл, R (shift+r) — обновить дерево и по вопросу(?) довольно внятная справка по горячим клавишам.
  4. Подсветка кода (rb, html, rjs, js, erb и т.п.)
  5. Возможности из rails.vim типа перехода по gf на файл модели, если курсор стоит на вызове, например, конструктора. Всяческие :Rake, :Rgenerate и т.п.
  6. Ну и все возможности и навороты VIM, за которые его так любят :)


А вот и скринкаст от автора на эту тему (рекомендую к просмотру):


Перестало работать. Ссылка на другом видеохостинге: blip.tv/file/3765175

Надеюсь, вы уже потираете руки, потому что vim — это очень быстрый, удобный, расширяемый и очень не требовательный к ресурсам компьютера редактор.
Как же всего этого добиться?
Total votes 32: ↑25 and ↓7+18
Comments36

Information

Rating
Does not participate
Date of birth
Registered
Activity