Как стать автором
Обновить
1
0
Albert Mikhailov @trentclainor

Python senior developer

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

Опыт продаж в App Store и первые $12500

Время на прочтение4 мин
Количество просмотров3.3K
Расскажу о личном опыте выпуска iPhone-приложения Pocket Lists, продажи которого за первые два с половиной месяца составили $12500 долларов США. Категория приложения: Productivity.



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

Первый месяц после выпуска


Читать дальше →
Всего голосов 137: ↑124 и ↓13+111
Комментарии74

Simplify.js — JavaScript-библиотека для упрощения ломаных линий

Время на прочтение2 мин
Количество просмотров10K
Рад представить вашему вниманию еще одну крохотную, но полезную open-source-утилиту своего авторства — Simplify.js.



Simplify.js — очень быстрая реализация упрощения ломаных линий на JavaScript. Изначально написав ее для Leaflet (библиотеки для интерактивных карт), после небольшого эксперимента по оптимизации захотелось выпустить ее в качестве отдельной библиотеки без зависимостей, которую можно использовать как в браузере, так и на серверных платформах, таких, как Node.js, и применять и для 2D, и для 3D-точек.

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

Читать дальше →
Всего голосов 134: ↑129 и ↓5+124
Комментарии57

Чёртова дюжина советов начинающим верстальщикам. Часть первая

Время на прочтение6 мин
Количество просмотров32K
Доброго времени суток!

Введение


Я являюсь фрилансером. Раньше я не особо задумывался над тем, как и что делают верстальщики. Я делал серверную часть, а мой друг верстал и набивал контент. Совсем недавно мне захотелось попробовать «что и как». Пару дней назад мне на глаза попался материал, который мне очень понравился. Он наглядно обЪяснял, что и как нужно писать. К сожалению, сылку дать не могу, так как я не запаомнил, где располагался сей мануал, но… Казалось бы, можно это и запомнить, но я пошёл ещё одним путём — законспектировал это дело. Собственно, добро пожаловать в мою записку.
Читать дальше →
Всего голосов 233: ↑192 и ↓41+151
Комментарии186

Интеграция физического движка Box2D в UIKit-приложение для iOS

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

Привет!


Сегодня мы покажем, насколько легко встроить физический движок Box2D в любое игровое приложение, написанное на стандартных фреймворках Apple. Примером послужит интерактивная книга, выпущенная нашей студией полгода назад. Эта книга была нашим первым приложением для детей, и когда мы начинали работу над ней, у нас было мало опыта в создании анимаций, поэтому мы выбрали знакомые нам мощные и отлично документированные стандартные фреймворки Apple – так было проще на тот момент. Книга была готова уже через два месяца. Однако некоторые задумки реализованы не были. Из этих пожеланий был оставлен список на будущее, чтобы, когда будет время и знания, вернуться к проекту.

Физика


Одним из пунктов была симуляция физического мира, чтобы у пользователя была возможность играть с предметами: создавать их, бросать, перекидывать из угла в угол средствами акселерометра и так далее. Для реализации этой возможности требовалась интеграция в проект физического движка. И вот, когда на новом проекте было освоены Cocos2D и Box2D, возник резонный вопрос: если Box2D по своей сути не зависим от графической реализации программы, то почему бы не использовать его в самой первой книге?
Читать дальше →
Всего голосов 22: ↑20 и ↓2+18
Комментарии18

Пользовательские атрибуты в Python

Время на прочтение11 мин
Количество просмотров188K
Вы когда нибудь задумывались о том, что происходит, когда вы ставите точку в python? Что скрывает за собой символ str(“\u002E”)? Какие тайны он хранит? Если без мистики, вы знаете как происходит поиск и установка значений пользовательских атрибутов в python? Хотели бы узнать? Тогда… добро пожаловать!
Читать дальше →
Всего голосов 101: ↑96 и ↓5+91
Комментарии20

Создание анимированных tooltips'ов с помощью CSS3

Время на прочтение3 мин
Количество просмотров8.2K
Статьи про создание tooltips'ов уже не раз поднимались на хабре [1,2] в виду большой популярности этого элемента. Сегодня вы узнаете еще один способ как создать простые, анимированные подсказки с помощью псевдо-элементов before и after, а так же свойства transitions.

image


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

Читать дальше ...
Всего голосов 97: ↑91 и ↓6+85
Комментарии15

Bootstrap 2.0 – HTML+CSS+JS UI фреймворк

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

Вышла новая версия офигительного UI фреймворка от Twitter — Bootstrap 2.0 Для тех кто не в курсе что это, настоятельно рекомендую ознакомиться. Этот набор позволяет создавать отличные шаблоны сайтов за считанные часы (проверено на собственном опыте) на основе готовых элементов и экономить килотонны нервов на адаптации кода под разные браузеры.

Особенности Bootstrap:
  • Полный набор компонентов в виде стилей и анимаций поведения для элементов интерфейса
  • Поддержка возможностей HTML5, CSS3 (но при этом работает и в IE7!)
  • Поддержка идеологии 940-пиксельной сетки
  • Поддержка идеологии fluid-grid
  • Кросплатформенность — наборы стилей для десктопных и мобильных браузеров
  • Возможность кастомизации и добавления собственных стилей
  • Возможность добавлять jQuery плагины

Мастхэв для верстальщиков и проектировщиков интерфейсов!
Всего голосов 200: ↑186 и ↓14+172
Комментарии65

Фильтр Блума

Время на прочтение3 мин
Количество просмотров62K
И снова здравствуйте! Сегодня я поведаю о фильтре Блума — структуре данных гениальной в своей простоте. По сути, этот фильтр реализует вероятностное множество всего с двумя операциями: добавление элемента к множеству и проверка принадлежности элемента множеству. Множество вероятностное потому, что последняя операция на вопрос «принадлежит ли этот элемент множеству?» даёт ответ не в форме «да/нет», а в форме «возможно/нет».

Как фильтр это делает?
Всего голосов 88: ↑85 и ↓3+82
Комментарии36

Создание расширения для Google Chrome

Время на прочтение8 мин
Количество просмотров118K
Тема создания расширений достаточно хорошо раскрыта в сети, есть множество статей, документации на эту тему. Но я не нашел ни одного ресурса, который бы описал процесс создания расширения от начала до конца. Я собираюсь исправить эту ситуацию, и рассказать о том как создать расширение, как хранить, читать настройки, как добавить поддержку нескольких языков.

Для работы с расширениями вам понадобится переключить канал обновлений на Dev или Beta.
Читать дальше →
Всего голосов 98: ↑93 и ↓5+88
Комментарии28

Создание приложений реального времени с помощью Server-Sent Events

Время на прочтение7 мин
Количество просмотров53K
Буквально недавно стало известно, что Firefox 6 получит SSE (уже есть в Opera 10.6+, Chrome, WebKit 5+, iOS Safari 4+, Opera Mobile 10+) так, что поддержка более половины всех браузеров (охват аудитории пользователей) уже не за горами. Настало время присмотреться к этой технологии. SSE предложил Ian Hickson более 7 лет назад, но только год назад она стала появляться в браузерах. У нас же есть WebSockets зачем нам ещё один какой-то протокол?! Но во всем есть свои плюсы и минусы, давайте посмотрим чем же SSE может быть полезен.

Идея SSE проста — клиент подписывается на события сервера и как только происходит событие — клиент сразу же получает уведомление и некоторые данные, связанные с этим событием. Чтобы понять полезность протокола SSE необходимо сравнить его с привычными методами получения событий, вкратце объясню их суть:
Читать дальше →
Всего голосов 87: ↑85 и ↓2+83
Комментарии55

node-sync — псевдо-синхронное программирование на nodejs с использованием fibers

Время на прочтение6 мин
Количество просмотров21K
Надавно была опубликована библиотека node-fibers, вносящая в nodejs и v8 поддержку замечательного fiber/coroutine — тоесть, возможность использовать yield.
Параллельно, на nodejs groups прошел целый ряд обсуждений на тему всевозможных вариантов упрощения асинхронного синтаксиса.

Вдохновившись возможностями, которые дают «волокна», я написал библиотеку node-sync, которая делает разработку в асинхронном окружении nodejs значительно удобнее, а код — нагляднее.

Синопсис

// Обычная асинхронная функция, вызывает callback с результатом через 1 сек
function someAsyncFunction(a, b, callback) {
    setTimeout(function(){
        callback(null, a + b);
    }, 1000)
}
// Вызываем эту функцию синхронно, используя Function.prototype.sync(),
// работающий по тому же принципу, что и call()
// на этом моменте текуший поток "зависнет" на секунду, пока функция не вернет значение
var result = someAsyncFunction.sync(null, 2, 3);
console.log(result); // "5" через 1 секунду

Читать дальше →
Всего голосов 35: ↑32 и ↓3+29
Комментарии50

Python на примере демона уведомления о новых коммитах Git

Время на прочтение4 мин
Количество просмотров27K
Работая в команде я люблю быть в курсе активности участников. Поэтому было решено написать демона наблюдающего за поступлением новых коммитов в репозиторий git’а. Так как я работаю в Ubuntu, то уведомление было реализовано встроенным способом — библиотекой libnotify.
Язык — Python!

image

В статье упоминается:
1. Демон на Python;
2. Логирование на Python;
3. Хранение конфигурационных файлов программ на Python;
4. Работа с командами ОС из скриптов Python;
5. Получения списка последних изменений из git’а;
6. Стандартные всплывающие уведомления Ubuntu.
Читать дальше →
Всего голосов 69: ↑65 и ↓4+61
Комментарии27

Полноценная поддержка юникода в SQLite для iOS. Пример приложения

Время на прочтение2 мин
Количество просмотров4.4K
Здравствуйте. В этой статье я опишу процесс создания простейшего приложения для iOS и внедрение в него используемого мной метода для обеспечения корректной работы с русским (и не только) языком таких SQLite-конструкций, как UPPER/LOWER, LIKE или ORDER BY.

Описанный метод использовался при разработке в XCode 4.2 под управлением OS X Lion 10.7.2.

Ниже очень подробная инструкция с картинками.
Читать дальше →
Всего голосов 21: ↑16 и ↓5+11
Комментарии6

Регистрация своей фирмы собственными руками, туду-лист

Время на прочтение12 мин
Количество просмотров51K
Дисклаймер: описываю только свой личный опыт и мнения автора могут не совпадать с мнением автора. Статья огромная, читать много.

Пишу эту статью, и представляю себе тебя, читателя Хабра, которой в обеденный перерыв залез почитать что-нибудь для развития. А этот читатель, т.е. ты (да, не отворачивай глаза от букв, именно ты) давно наслышан, что своё дело – это круто. И, может быть, как раз не хватало лёгкого пинка, чтобы выйти из зоны будничного комфорта и что-нибудь, да предпринять.

Эта статья адресована тем, кто уже «на грани». Она почти лишена философии и туманных ссылок, просто тупо туду-лист. Бери и делай. Намеренно избавляю тебя от объяснений, зачем молодому проекту нужна госрегистрация, такая ли уж это свобода – быть собственником и от куда взять деньги на госпошлину. Статья адресована московским стартаперам, гео-патчи от других городов приветствуются в комментариях.
Будем считать, что с формой собственности определились — это ООО и упрощенка 6%. Если кому нужно ИП – там проще, справишься и без этой статьи.

Для создания фирмы необходимо:

Минимальный реквизит для создания своей компании
Подробности под кОтом.
Всего голосов 372: ↑351 и ↓21+330
Комментарии248

Развертывание Django-проектов c помощью Fabric

Время на прочтение2 мин
Количество просмотров11K
В одном из проектов необходимо регулярно выкладывать код из ветки stage на staging сервер. Начали делать это вручную — входишь через ssh, делаешь git push origin stage, если нужно — обновляешь базу и затем перезапускаешь apache. К концу этой недели решили, что хорошо бы все эти действия выполнять одной командой. Я прошерстил блоги — сейчас очень активно пишут про использования для этих целей библиотеки Fabric (это аналог Capistrano из Ruby on Rails).
Читать дальше →
Всего голосов 49: ↑40 и ↓9+31
Комментарии11

Makefile — умные шелл-скрипты для Джанго

Время на прочтение4 мин
Количество просмотров8.6K
Make — одна из базовых утилит Юникса, есть на каждой юниксовой машине, и, к сожалению, неизвестная многим веб-разработчикам. В этой стате я покажу, как она может упростить работу, а сначала — постановка проблемы.

Как не держать всю эту схему в голове?
Всего голосов 42: ↑39 и ↓3+36
Комментарии27

Создание программ для Mac OS X. Часть 1: вступление и Objective-C

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

Вступление


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

Сразу скажу, что не буду рассказывать про кроссплатформенные фреймворки и тулкиты(такие как Qt) или про создание консольных приложений, я расскажу про то, что в плане создания приложений отличает Mac OS X от других операционных систем, а именно — фреймворк Cocoa. Оговорюсь сразу, что буду стараться избегать сравнений с другими фреймворками, я хочу просто рассказать про Cocoa.
Читать дальше →
Всего голосов 96: ↑90 и ↓6+84
Комментарии91

Использование акселерометра в iPhone симуляторе

Время на прочтение2 мин
Количество просмотров3.3K
Как разрабатывать приложения для iPhone, использующее акселерометр, мы уже знаем. Теперь осталось научиться тестировать его в симуляторе.
Читать дальше →
Всего голосов 32: ↑26 и ↓6+20
Комментарии14

Tips & Tricks: изменяем User Agent в iPhone

Время на прочтение1 мин
Количество просмотров4.8K
Как известно, User Agent необходим для «идентификации» пользователя, а конкретнее, для определения, каким клиентом или через какое устройство заходит пользователь к вам на сайт. В зависимости от этого, можно «подставлять» необходимый контент (данные, разметку). Это актуально в последнее время по причине большого роста мобильных устройств.

В продолжении темы iPhone Dev Tips & Tricks расскажу о том, как поменять User Agent на «iPhone».

Читать дальше →
Всего голосов 12: ↑8 и ↓4+4
Комментарии0

Основы работы с OpenGL ES 2.0 на iPhone 3G S

Время на прочтение7 мин
Количество просмотров17K
Одно из самых приятных нововведений в iPhone 3GS — более быстрая и мощная графическая платформа с поддержкой OpenGL ES 2.0. К сожалению, информации от Apple о том, как именно задействовать открывшиеся возможности, крайне мало. Практически для всех API у них есть отличная документация с образцами кодов, но проблема в том, что в случае с OpenGL примеры всегда оставляли, мягко говоря, желать лучшего.

Более того, начинающим работу с OpenGL ES 2.0 не предлагается ни базовых примеров, ни шаблона XCode. Чтобы воспользоваться расширенными графическими возможностями, придется осваивать их самостоятельно. Не стоит ошибочно полагать, что OpenGL ES 2.0 — незначительно доработанная версия OpenGL ES 1.1 с парочкой новых функций. Отличия между ними кардинальные! Конвейер с фиксированными функциями исчез, и теперь для отображения на экране обычного треугольника понадобится более глубокое знакомство с основами компьютерной графики, включая шейдеры.
Читать дальше →
Всего голосов 61: ↑53 и ↓8+45
Комментарии28

Информация

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