Android-приложение: первые итоги.

14 февр. 2014 г. | | |

Два месяца прошло с момента публикации моего первого Android приложения на Play market, я перебралась на Самуи, а гугл по-тихоньку начал зачищать маркет от приложений с альтернативными способами оплаты, в то время, как Таиланд собрался отправить в космос первого своего человека. Время летит, и сегодня я опубликовала следующее приложение, но об этом в другой раз. Посмотрим, что у нас со средней температурой по больнице.

Первое андроид-приложение: публикация

23 янв. 2014 г. | | |

Продолжаю серию постов о своём первом андроид-приложении. Сегодня мысли о публикации приложения в разных маркетах.

Первое android-приложение: мысли о монетизации

10 янв. 2014 г. | | |

Продолжаю серию заметок о разработке первого android-приложения. На этот раз речь о выборе стратегии монетизации приложения.

Android Studio, Gradle, соц. сети

20 дек. 2013 г. | | |

Продолжаю тему полевых заметок, начатую в предыдущем посте. В этот раз немного об инструментах и чуть-чуть о социальщине.

Простое, но странное в Android

15 дек. 2013 г. | | |

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

Bootstrap + jQuery UI Autocomplete

16 окт. 2013 г. | | |

Подключить jQuery UI Autocomplete к сайту на Bootstrap довольно просто, единственное - нужно немного допилить стили. Всем страждущим в помощь:

Про ClojureSript, пыщ-пыщ и в продакшн

16 сент. 2013 г. | | |

Нарезка самых сочных моментов из выступления Александра Соловьёва на JavaScript Frameworks Day 2013. Доклад был про ClojureScript, полная версия - тут

PhoneGap step by step: установка и настройка

25 июл. 2013 г. | | |

Небольшое руководство по установке и настройке PhoneGap на Windows-машине.
Возможные проблемы и способы решения в конце руководства. 

Tortoise svn 1.8: bugged edition

24 июл. 2013 г. | | |

Эх, черепаха, что ж ты делаешь? Адпейт до последней стабильной версии Tortoise SVN 1.8, который просит для работы Visual SVN, несёт с собой необходимость переконвертировать working directory в новый формат. И старые версии черепашки не понимают этот формат (что вполне ожидаемо). 
Но при попытке апдейта кода из репозитория сюрприз!
The PROPFIND response did not include the requested properties
В гугл-группе черепахи обещается фикс в версии 1.8.1, но на официальном сайте даже нет предупреждения  об ошибке, содержащейся в релизе. Вобщем, сюрприз должен быть для всех, а не только для избранных любителей экстрима. 
Мораль этого всего такова: не стоит спешить опробовать чужие баги на своей шкуре. С tortoise svn это случалось уже не раз, и, видимо, не раз повторится. Любите своих пользователей, убирайте бажные релизы с серверов или максимально быстро выпускайте баг-фиксы, параллельно предупреждая пользователей об опасности. 

ProblemFactory

12 июл. 2013 г. | | |


Кодинг на улице

| | |

Ведь так оно и есть.

Перед...

8 июл. 2013 г. | | |

Перед началом очередного проекта
Перед добавлением нового функционала
Перед улучшением работающего кода

TDDigest e05

12 июн. 2013 г. | | |

BDD in Action: Часть 1, Часть 2
Let your tests tell you when your code design sucks.
Why Not To Want 100% Code Coverage
Tips and tricks для  более эффективного использования phpUnit в слайдах PHPUnit best practicies. А так же, чем хорош phpUnit для создания mock-объектов - хорошая статья на Хабре. И, закрывая тему phpUnit, Parallel testing for phpUnit with ParaTest
TDD Javascript with Jasmine #video  #en
Статья Building the right software…right, It’s easy…RIGHT? с разъяснением разницы, что значит делать правильно и делать правильное. Путаница возникает, в основном, из-за использоания ATDD и BDD и TDD... Слишком много букв D, всё driven, только в какую сторону? Автор предлагает следующую структуру: сначала используется BDD - для определения целей, за ним - ATDD - для реализации целей, и потом TDD - для качественной реализации.
И небольшое видео, в котором объяняется разница между BDD и TDD:
Все знают мантру TDD "Red-Green-Refactoring", но как мы определяем, что рефакторинг нужен? И как найти золотую середину между минимизацией времени, затрачиваемом на разработку, и качеством кода, который придеся кому-то сопровождать в будущем?  Об этом речь в видео (а заодно и слайдах) Code Smells: Your Refactoring Cheat Codes #en #video #tdd #refactoring
Правильный подход к вопросу о unit-тестировании кода на stackoverflow. #en #php
О синергии тестируемости кода и дизайна приложения #video #en

Обсуждение трёх подходов к mobile testing:

TDDigest e04

29 мая 2013 г. | | |

В сегодняшней подборке материалов из мира TDD много видео интересных выступлений и интервью.
Видео с выступления #Сергея Теплякова на msswit "Тестируемая архитектура: моки, стабы, рефакторинг" #video #ru #mock #design #msswit
"TDD I learned..." - автор рассказывает о своих неудачных попытках писать тесты и полном непонимании бенефитов TDD до тех пор, пока не натолкнулся на мастер-класс Roy Osherove по TDD. Из видео, которое идет более 9 часов, автор вынес для себя много полезного, понял разницу между интеграционными тестами и юнит тестами, и впечатлился AAA-подходом (Arrange, Act, Assert):
This approach, by eliminating assert code intermixed with code that sets up or acts upon your objects, reduces smelly tests by separating what is being tested from all the other stuff.
Такой подход разделяет проверку (assert) результата, инициализацию объектов (arrange) и действия над ними (act), отделяя то, что нужно протестировать, от всего остального, тем самым устраняя дурной "запашок-с" тестов.
#en #tdd
Интересное интервью со Стивом Фрименом и Нэтом Прайсом, авторами книги "Growing Object-Oriented Software, Guided by Tests"

How do you start a new project with TDD? -  своеобразный подход к настройке среды для нового проекта. #en
BDD and Acceptance Testing with RSpec & Capybara #en #video #ruby #bdd #rspec
Drupal unit testing #en #drupal #php
Беседа о unit-тестировании в php #en #php #unit-testing
Юнит-тестирование в CakePhp #en #php #unit-testing #video
JUnit / TestNG Testing Spring Security With Spring MVC Test Framework

Инструменты

Mockery - ещё один mock-фреймворк для unit-тестов
atoum.js - стильный, модный, молодёжный ;) фреймфорк для тестирования PHP5.3+ теперь и для js
Swaks - швейцарский нож для тестирования SMTP
dotCover - тест-ранер, а так же инструмент для  сбора аналитики о степени покрытия кода тестами для VS от JetBrains (правда, платный)

TDDigest e03

22 мая 2013 г. | | |

Для начала разберёмся, как писать тестируемый код на javascript, и поговорим о том, как тестировать полученный код с помощью QUnit, а так же как наслаждаться процессом тестирования асинхронного javascript с помощью Mocha #javascript #en #mocha
Туториал о том, как писать тестируемый и поддерживаемый код на php, чего избегать в коде, а что, наоборот, является правильным подходом. Ещё серия туториалов, детально раскрывающих процесс юнит-тестирования с PHPUnit. Рассматриваются такие темы, как написание полезного теста (!), моки, стабы, dependency injection, тестирование закрытых методов класса (если уж очень нужно), перегруженные конструкторы и почему 100% покрытие кода не так уж и важно. #en #php #phpunit

TDDigest e02

15 мая 2013 г. | | |

Открывает второй выпуск tddigest немного филосовский пост "10 Правил Дзен-Программиста" от Christian Grobmeier #en #zen
Размышления на тему "Design for tests vs Design for API" #en #tdd #ruby
Очередные tips & tricks от php-девелоперов. В прошлый раз нам показывали, как тестить защищённые методы класса, а в этот раз говорят о том, как надо мокать singleton с помощью PHPUnit. Забавно, ведь даже на самом php.net красным написано: Ахтунг! Берегись синглтона! (шутки в сторону) А теперь серьёзно, когда может пригодиться такой подход? Я вижу один случай - есть база legacy кода, которую нужно поддерживать. Рефакторить код или вносить изменения без тестов -  смело, но глупо. Поэтому приходится иногда заниматься таким: мокать синглоны или чего ещё хуже выдумывать. #php #phpunit #antipattern

10 особенностей CoffeeScript, о которых вы могли не знать

8 мая 2013 г. | | |

Немного вольный перевод статьи "10 CoffeeScript Features You Might Not Know" by Jaco Pretorius.

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

Сводка с фронтов от инфицированных тестами e01

| | |

Открывает первую сводку с фронтов удараников TDD хвалебная статья-ода "Not Using Test-First? You're Doing it Wrong." Автор не просто рассказывает, почему TDD - это круто, а пытается объяснить, как и чем улучшает test-first подход процесс разработки. #en #tdd
Продолжая тему полезности TDD "Why Testing Makes a Project Successful and You Can’t Afford to Deny It". Автор развивает мысль о полезности тестирования, эпично приводя статистику расхода времени и денег на поиск и фикс багов:
According to prweb.com, recent Cambridge University research found that, on average, software developers spend 50% of their programming time finding and fixing bugs and estimate that this costs the global economy $312 billion per year.
Да уж, не кисло. Не будь частью этой статистики, пиши теты! #en

love via soap II: php + c#

27 февр. 2013 г. | | |

Часть 1, в которой рассказывалось, зачем это всё нужно, и как несложно реализуется взаимодействие  php-клиента с asmx-сервисом.
В этой части мы будем писать SOAP-сервис на php, а клиентскую часть - на C#.Так что пристегнись, это php!

Микромир ORM на примере Massive

12 февр. 2013 г. | | |

В мире больших и тяжеловесных ORM-решений, таких как NHibernate и Entity Framework, вполне предсказуемым стало появление течения микро-ORM: легковесных прослоек между БД и объектами приложения. Чем хороши microORM? Прежде всего, скоростью выполнения запросов: она сопоставима со скоростью чистых запросов через SqlDataReader. Потом - микро размерами: например, Massive - это всего лишь один подключаемый файл на 673 строки кода, в отличие от NHibernate или EF, которые тянут за собой целую dll-ку на несколько сот килобайт.  Наиболее известные из micro ORM:
1) Dapper, разработанный и активно использующийся в StackOverflow и StackExchange
2) Massive, разработанный Rob Conery, пример использования - HanselMinutes
3) PetaPOCO

Massive - это лучше, чем шоколад

Основа Massive - это dynamic-типы, появившиеся в .NET 4.0. Чтобы понять, что такое Massive, как и зачем он появился на свет, посмотриет видео  "Kill your ORM" с выступления Роба Конери на NDC 2011. А чтобы понять, насколько Massive лучше шоколада,  давайте напишем небольшое тестовое приложение, выводящее план счетов из БД в сгруппированом виде.