Pull to refresh
64
0
Александр @Dr_Logic

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

Send message

Xamarin + PCL + MVVM — как облегчить написание мобильных приложений под разные платформы

Reading time5 min
Views35K
Как-то совершенно незаслуженно обделена вниманием платформа Xamarin 2.0, и я б хотел начать описание всех его замечательных свойств

Прежде всего, что такое Xamarin?

Xamarin это коммерческий продукт, основанный на open-source проекте Mono, который позволяет использовать .Net framework, в том числе язык C#, для кроссплатформенных разработок.

Основные свойства:
  • C# для написания приложений под Android, iOs и Windows8. Поддержка LINQ и async/task
  • Native UI, Native Peformance — код компилируется под конкретную платформу и использует native UI контроли
  • Visual Studio и все его plugins, включая ReSharper, NUnit testing…
  • Xamarin Studio, которая похожа на Visual Studio, но доступна также и для Mac
  • Использование .Net библиотек
  • Использование других готовых native компонент, обвернутых в C#
  • Графический редактор для Андроида

image
Подробности и пример приложения для Андроида
Total votes 40: ↑30 and ↓10+20
Comments35

E-mail маркетинг как продукт

Reading time6 min
Views11K


В LinguaLeo email-маркетинг – это продукт. Такой подход к данному каналу возник по ряду причин. Во-первых, нам важны не столько метрики, сколько самочувствие и настроение пользователя. Во-вторых, email-маркетинг влияет на огромное количество факторов: на продажи, узнаваемость, а также на лояльность пользователей, что нам как клиентоориентированной компании очень важно.

Что же подразумевает под собой продуктовый email-маркетинг? Давайте пройдемся вместе по всем аспектам, не вдаваясь в стандартные подробности. Мы поделимся нашими наработками и реальными вкусными кейсами о самом интересном. Итак, поехали!

Наш подход


Обычно email-рассылка воспринимается пользователем как что-то навязчивое и раздражающее. Происходит это потому, что письма чаще носят информационный характер — новости продукта, сроки акции, горячие предложения. Однако, у нас получилось добавить ценность в письма. Мы поняли, какие у пользователя возникают проблемы и решили их, в результате чего на нашу рассылку появился спрос. Давайте разберем три основные проблемы, которые возникают у наших пользователей.
Читать дальше →
Total votes 16: ↑13 and ↓3+10
Comments3

Переходы наличности и переходы на личности

Reading time12 min
Views85K
Представьте, что мы живем в мире криптографии, электронной коммерции и свободных экономических отношений. Пользуемся электронными средствами платежей, где в корзине и кошельке операции осуществляет калькулятор, где микроскопические суммы и огромные средства проводятся в многочисленных транзакциях без каких-либо проблем за ничтожное количество времени, с автоматическим учетом налогов, сборов и отчислений, где нам привычны покупки в электронных супермаркетах и доставка до порога по одному прикосновению к экрану телефона или клику мышкой. И вот, в наш прекрасный, удобный и отлаженный мир электронных платежей, построенный на принципах безопасности и криптографии, со всеми присущими ему технологиями и образу мышления, впитанными с молоком матери, приходит причудливый и странный механизм, которым, как говорят средства массовой информации, пользуются только анархисты, конспираторы и преступники.
Любопытное нажатие для путешествия в этот мир
Total votes 288: ↑263 and ↓25+238
Comments229

Скажем «нет» sms-спаму: sms через авторизацию приложения

Reading time3 min
Views11K

Я не ошибусь, если скажу, что всем ужасно надоел sms-спам. Да, для многих компаний это источник клиентов, но это не оправдывает «серых» методов рекламы. А про sms-мошенничество «мама, пришли денег, потеряла телефон» и говорить не приходится.
На хабре было уже много статей о борьбе с sms-спамом, но, по-моему, жалобы на конкретную компанию или телефон сродни просеиванию воды через сито. Зато, как мне кажется, этот вопрос относительно легко могли бы решить мобильные операторы. Под катом описание идеи-предложения к нашей большой тройке, а также любым другим sms-шлюзам.
Читать дальше →
Total votes 26: ↑10 and ↓16-6
Comments49

Создание API: в рамку и на стену

Reading time5 min
Views57K
Каждый программист — проектировщик API. Хорошие программы состоят из модулей, а протокол взаимодействия модулей — это тоже API. Хорошие модули используются повторно.

API — это большая сила и большая ответственность. У хорошего API будут благодарные пользователи; поддержка плохого превратится в кошмар.

Публичный API — не воробей, опубликуешь — не уберешь. Есть только одна попытка сделать все правильно, поэтому постарайся.

API должно быть легко использовать, но сложно использовать неправильно. Сделать что-то простое с помощью такого API должно быть просто; сложное — возможно; сделать что-то неправильно должно быть невозможно, или, по крайней мере, трудно.

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

Перед разработкой API собери требования с долей здорового скептицизма. Осознай общие задачи и реши их.

Оформляй требования как шаблоны использования API. Сверяйся с ними в процессе проектирования.
Читать дальше →
Total votes 154: ↑143 and ↓11+132
Comments97

GitHub Cheat Sheet

Reading time2 min
Views19K
Привет, Хабр! В очередной раз на глаза попался очень интересный репозиторий. Эта шпаргалка по самым тайным и функциональным возможностям Git и GitHub появилась благодаря выступлениям Зака Холмана одну из статей которого я уже переводил Git and GitHub Secrets на Aloha Ruby Conference 2012 и More Git and GitHub Secrets на WDCNZ 2013. Стоит сказать о том, что проект набрал свыше 1000 старов менее чем за 12 часов. Приведу несколько примеров:

Hub — Git Wrapper


Hub — это оболочка над Git, которая сокращает потраченное время на лишнее нажатии клавиш при работе с Git.
$ hub clone tiimgreen/toc
> git clone https://github.com/tiimgreen/toc.git

На hub можно сделать алиас git и все будет выглядеть еще удобнее:
# Remote
$ git remote add rtomayko
> git remote add rtomayko git://github.com/rtomayko/CURRENT_REPO.git

#Fetch
$ git fetch mislav
> git remote add mislav git://github.com/mislav/REPO.git

#Fork
$ git fork
[ repo forked on GitHub ]
> git remote add -f YOUR_USER git@github.com:YOUR_USER/CURRENT_REPO.git


Читать дальше →
Total votes 46: ↑43 and ↓3+40
Comments8

Что будет, если вы задумаете собрать 3D принтер своими руками

Reading time4 min
Views397K

С чего всё начиналось


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

Немного погодя, оказалось, что все компоненты стоят вместе как готовый принтер и настрой сильно упал (Ох уж эти московские перекупщики), но на помощь пришел Китай со своими сверхдешевыми электроникой и электромеханическими компонентами. В порыве радости был заказан комплект электроники RAMPS 1.4 (Как самый простой в использовании по отзывам), 5 шаговых двигателей типа nema 17 (момент удержания должен быть не меньше 1.5кг/см, но я взял аж 4кг/см), 2 метра приводного ремня размера t2.5 с двумя алюминиевыми шкивами по 20 зубьев, а так же нагревательную платформу (mk2a самая распространенная), так же нужно не забыть взять 12 линейных подшипников lm8uu. На всё я потратил чуть больше 13 тысяч рублей, что, согласитесь, несколько меньше, чем, даже, комплекты для самостоятельной сборки в магазинах.

Спустя 2 месяца ожидания


За эти месяцы я успел познакомиться на форуме с несколькими интересными людьми, один из которых любезно распечатал на своем Replicator2 детали для моего принтера (Я выбрал конструкцию Prusa Mendel i2 из-за её дешевизны и простоты сборки). Кстати говоря, точность изготовления деталей мало на что влияет и, в принципе, можно их делать хоть из ложек, я лично сделал часть деталей для рамы из толстой фанеры. Большой проблемой было найти направляющие валы, которые стоят от 600 рублей за метр (Каленые и прочные, т.е. избыточная прочность), но решение было найдено на рынке: обычные прутки из нержавейки диаметром 8мм отлично подошли (Нужно всего 3 метра, как и что резать, написано на Вики), так же 6 метров шпилек м8 и 6 подшипников 608 (Как в роликах и скейтбордах). В качестве блока питания можно использовать что угодно от 400Вт 12-19В. Забрав с почты последнюю посылку (Не буду говорить про нашу почту, все и так всё знают. Битые и мятые коробки, ожидание, потерянные извещения), я понял, что предстоит много работы.

image
Читать дальше →
Total votes 169: ↑164 and ↓5+159
Comments55

Как надо хешировать пароли и как не надо

Reading time4 min
Views265K
image

В очередной раз, когда мы заканчивали проводить аудит информационной безопасности веб-проекта, моя личная бочка с гневом переполнилась негодованием так, что оно перелилось через край в этот пост.

Постараюсь очень лаконично и быстро обрисовать ситуацию с хэшами.

Сразу определю какую задачу применения хешей буду рассматривать — аутентификация пользователей. Не токены восстановления паролей, не аутентификация запросов, не что-то еще. Это также не статья про защиту канала передачи данных, так что комментарии по challenge-response и SSL неуместны!

Читать дальше →
Total votes 135: ↑117 and ↓18+99
Comments331

Эффективный счёт в уме или разминка для мозга

Reading time3 min
Views301K
Эта статья навеяна топиком «Как и насколько быстро вы считаете в уме на элементарном уровне?» и призвана распространить приёмы С.А. Рачинского для устного счёта.
Рачинский был замечательным педагогом, преподававшим в сельских школах в XIX веке и показавшим на собственном опыте, что развить навык быстрого устного счёта можно. Для его учеников не было особой проблемой посчитать подобный пример в уме:

image

Далее рассмотрим несколько трюков для ускорения умственного счёта...
Total votes 90: ↑82 and ↓8+74
Comments37

Хроники LinguaLeo: как мы сделали «Диалоги на английском» с Node.js и DynamoDB

Reading time5 min
Views37K


Пользователи LinguaLeo начинают изучать английский язык в Джунглях — хранилище тысяч материалов разного уровня сложности, формата и тематик; шаг за шагом учатся слышать и понимать речь носителей языка и расширять словарный запас. Кому нужна грамматика — идут в Курсы. Словарный запас пополняется не только из Джунглей, при добавлении незнакомых слов в Личный словарь, но и с помощью подготовленных Наборов слов, доступных для индивидуального изучения. В разделе Общение можно вести Диалоги на английском, чтобы практиковать язык с другими пользователями LinguaLeo в режиме real-time, выбирая темы для общения. Общение только на английском!

Для создания Диалогов на английском мы использовали Node.js, DynamoDB (все на AWS). Сейчас поделимся нашим опытом.
Читать дальше →
Total votes 107: ↑96 and ↓11+85
Comments81

Краткая, неполная, и в основном неверная история языков программирования

Reading time5 min
Views19K
Представляю вашему вниманию вольный перевод юмористической статьи James Iry «A Brief, Incomplete, and Mostly Wrong History of Programming Languages» — статья старая, и если кто-либо укажет на уже существующий перевод — буду очень благодарен, ибо сам не нашел.
Читать дальше →
Total votes 104: ↑99 and ↓5+94
Comments26

Уроки написания утилитки на $1 000 000

Reading time4 min
Views198K


Осенью 2008 года мы потратили две-три недели свободного от основной работы времени, чтобы написать маленькую утилитку для бэкапа баз данных (MS SQL Server и потом MySQL). Сегодня она приносит нам около $230 000 в год и можно с уверенностью говорить, что суммарно мы заработаем на ней больше $1 000 000.

Под катом я расскажу, как это получилось и какие уроки мы из этого извлекли. Вполне возможно, что нам просто глупо повезло и опыт этот целиком неверен и теории не соответствует и только навредит вашему начинанию — читайте на свой страх и риск.
Читать дальше →
Total votes 471: ↑457 and ↓14+443
Comments247

Что нам стоит Git настроить!

Reading time3 min
Views107K

Дарова, хабр! (ничего оригинальнее не придумал)

Сомневаюсь что эта заметка тянет на полноценный пост, но я все же оставлю ее здесь. О чем же пойдет речь?

Все мы слышали о Git. Все мы знаем что он — хорош. Но лишь немногие пытаются что-то с ним делать, как-то его протвикерить. Сразу говорю, тут не будет ничего паранормального, только немного работы с файлом .gitconfig. Да-да, именно с тем файлом, который так трепетно пылится у вас в домашней директории.

Так, мне уже немного надоело писать этот, по сути, бессмысленный вступительный текст, так что давайте уже начнем что-то делать.
Читать дальше →
Total votes 188: ↑155 and ↓33+122
Comments41

Как стать кукловодом или Puppet для начинающих

Reading time7 min
Views109K
Здравствуйте.
image
Этот топик открывает цикл статей по использованию системы управления конфигурацией Puppet.

Что такое система управления конфигурацией?


Предположим, что у вас есть парк серверов, выполняющих различные задачи. Пока серверов мало и вы не растёте, вы легко настраиваете каждый сервер вручную. Устанавливаете ОС (может быть, автоматизированно), добавляете пользователей, устанавливаете софт, вводя команды в консоль, настраиваете сервисы, правите конфиги ваших любимых текстовых редакторов (nanorc, vimrc), выставляете на них одинаковые настройки DNS-сервера, устанавливаете агент системы мониторинга, настраиваете syslog для централизованного сбора логов… Словом, работы довольно много и она не особенно интересна.
Как спастись от рутины?
Total votes 62: ↑55 and ↓7+48
Comments66

Ретенция, или почему пользователь вернется в игру? Продолжение

Reading time12 min
Views34K
Привет, Хабр!

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

В предыдущей части мы рассмотрели набор инструментов влияния на ретенцию, среди которых было введение персонажей и сюжетной составляющей, рейтинги, взаимодействие с друзьями и так далее. Пора увеличить этот список!
Читать дальше →
Total votes 77: ↑73 and ↓4+69
Comments50

Сервер онлайн-вещаний на базе nginx

Reading time10 min
Views239K

Введение


Привет всем! Несколько месяцев назад на Хабре была опубликована статья «Вещание онлайн-видео с помощью nginx» , в которой Aecktann рассказал о своем опыте внедрения разрабатываемого мной модуля к nginx для вещания видео — nginx-rtmp-module. С тех пор продукт активно развивался и в этой статье я более подробно расскажу о нем.

Вещатель нужен для передачи видео-потока клиенту. Речь идет либо о живом потоке, либо о вещании записанного видео (VOD, Video-on-demand). Существует большое количество технологий вещания видео. Среди них можно выделить традиционные протоколы, такие как RTMP или MPEG-TS, а также появившиеся в последнее время технологии адаптивного вещания поверх HTTP. К последним относятся HLS (Apple), HDS (Adobe), Smooth Streaming (Microsoft), MPEG-DASH. При выборе технологии основным фактором является ее поддержка на клиентской стороне. Именно поэтому вещание в формате RTMP на текущий момент является одним из самых распространенных. Протокол HLS поддерживается устройствами компании Apple, а также некоторыми версиями Android.
Читать дальше →
Total votes 82: ↑82 and ↓0+82
Comments99

Моё путешествие в будущее

Reading time5 min
Views133K


Был тихий осенний вечер. Ничто не предвещало беды. Смеркалось. Я заканчивал плановый upgrade компьютера, в процессе которого по затерявшимся уже в истории причинам понадобилось сбросить BIOS. Дело не хитрое. Расположение батарейки и перемычки Reset на материнской плате известны – вперед! После включения и загрузки Windows 7 мне в ультимативном порядке было заявлено, что на дворе далекое будущее, а именно – 14201-ый год.



Приключения только начинались…
Читать дальше →
Total votes 607: ↑583 and ↓24+559
Comments197

Chef или как управлять тысячей серверов

Reading time10 min
Views73K
Suck on my chocolate salty balls (c) ChefДавайте каждый попробует ответить на вопрос: как установить apache на сервер? Этот вопрос порождает ещё десяток: какая ОС стоит на сервере, какую версию ставить, где лежат конфиги по-умолчанию и т.д. и т.п.

А теперь давайте попробуем ответить на вопрос: как установить apache на 1000 серверов? Тут, при стандартном подходе, вопросов возникнет ровно в 1000 раз больше. Часть из вас наверняка подумали, что можно написать скрипт на shell/perl/python/ruby, который будет обходить все сервера и устанавливать apache, другая часть подумала о distributed shell'ах (PDsh, dsh, etc), кто-то же подумал монтировать rootfs серверов по NFS.

В ряде случаев выше предложенные варианты решений удовлетворительны, но на практике я нигде не видел полностью гомогенных систем (зачастую, внутри компании можно встретить не только разные версии ОС, но и различные дистрибутивы. Также в России/СНГ очень распространена каша из FreeBSD/Linux в ядре проектов), так что вряд ли за адекватное время будет возможно написать скрипт, который установит и настроит apache на зоопарке в 1000 машин под CentOS, Debian, Ubuntu, FreeBSD всевозможных версий.

По моим наблюдениям, очень мало IT подразделений, даже очень крупных компаниий, используют в своей работе SCM (Software Configuration Management). В этом посте я постараюсь описать все преимущества использования Chef в IT инфраструктуре на простых примерах и больших масштабах.

Если же, после столь короткого вступления, вы не прониклись идеей Chef, да и времени читать длинный технический пост у вас нет, то рекомендую вам пролистать до конца и посмотреть как используем Chef мы, Engine Yard, 37signals и подумать, можете ли вы переложить на него часть своей работы.
Читать дальше →
Total votes 97: ↑91 and ↓6+85
Comments26

Лучший интерфейс — отсутствие интерфейса

Reading time7 min
Views123K
“Atmadm” 
Раньше наша работа была кошмаром из нагромождения букв.
“chkntfs”
“dir”



Тогда, в 1984, адаптировав Ксерокс ПАРК ВИМП, Эпл забросила нас вперед на целый галактический прыжок вдаль от этих ужасных командных строк ДОСа, в мир графических пользовательских интерфейсов [ПИ].


Эпл Лиза

Мы словно прозрели. И позже, десять лет спустя, когда мы смогли касаться Палм Пилот вместо того чтобы перемещать мышь, мы были впечатлены еще больше. Но сегодня наша любовь к цифровым интерфейсам вышла из-под контроля.
Что же случилось?
Total votes 305: ↑251 and ↓54+197
Comments230

Наш процесс разработки: 50 месяцев эволюции

Reading time9 min
Views44K
Нашей компании уже 6 лет. Она была основана на принципах agile и росла на них. Мы использовали Extreme Programming с самого первого дня, добавили немного Scrum позже и в конце концов переключились на Kanban. Хочется поделиться бесценным опытом и рассказать об изменениях нашего процесса разработки за последние 4 года.



Много ужасных таблиц и красивых картинок
Total votes 130: ↑114 and ↓16+98
Comments147

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity