Pull to refresh
61
0
SergeyVoyteshonok @SergeyVoyteshonok

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

Send message

Разработка производительных приложений

Reading time9 min
Views5.7K

Производительные приложения



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

Несмотря на то, что здесь будут описаны микрооптимизации, они практически никогда не смогут повредить вашему приложению. Выбор правильных алгоритмов и структур данных всегда должны быть первыми приоритетами, но этот аспект рассматриваться не будет.
Читать дальше →
Total votes 71: ↑68 and ↓3+65
Comments9

Техническое задание на сайт

Reading time11 min
Views698K
UPD: Продолжение статьи с примером техзадания

Не так давно на хабре были две статьи (Согласно техническому заданию и А зачем мне ТЗ? Я и так знаю!) посвященные техническим заданиям. У меня обе статьи вызвали, мягко говоря, недоумение, в особенности статья «Согласно техническому заданию». На мой взгляд, это вообще вредная статья, которая приводит к неверному понимаю сути ТЗ. В связи с этим хочу выразить свой взгляд на этот вопрос. Не буду говорить обо всех тех. заданиях, слишком широка тема, но думаю смогу рассказать о ТЗ на сайт.

То описание технического задания, о котором речь пойдет ниже, не является пересказом ГОСТа, но скорее является его творческой переработкой, хорошо сдобренной горьким опытом. Описанный ниже подход к ТЗ не охватывает все аспекты сайтостроения, но задает общее направление.

Большинство сайтов можно отнести к маленьким и очень маленьким проектам, масштаба единиц человеко-месяцев. В силу малости размеров такие проекты спокойно поддаются хорошему продумыванию и легко реализуются с помощью водопадной модели, достаточно просто не лениться на каждом этапе разработки (от написания ТЗ до сдачи проекта). Применять к этим проектам гибкие методологии разработки нет смысла, а как раз есть смысл применять хорошее ТЗ. К тем сайтам, которые не попадают под водопадную модель не стоит применять описанный ниже подход.

1. Обоснование необходимости ТЗ


А зачем вообще нужно ТЗ на сайт? Заказчик говорит: «Нужен следующий сайт: каталог товаров, корзина, форма заказа, доставка, мы на карте, о нас, обратная связь». Что не ясно? Ничего необычного, всё обыденно и рутинно.

Разработчик отчетливо представляет, что нужно сделать, а сделать, в его понимании нужно вот так:



Далее много букв
Total votes 212: ↑209 and ↓3+206
Comments141

Заметки стартапщика (от создателей Wizee Шопинг)

Reading time4 min
Views1.9K
Хотим рассказать о собственном опыте построения нашего стартапа. Постараемся, возможно, не в самом структурированном виде изложить наши мысли о том, что делать необходимо, чего делать не стоит и о прочих околостартапных радостях. Некоторые советы могут показаться банальными, но со всем нижеописанным мы столкнулись лично и хотим помочь вам не повторить наши ошибки или взять на вооружение то, что нам удалось сделать хорошо.

Читать дальше →
Total votes 81: ↑66 and ↓15+51
Comments34

О том, как я на Android Market пошел

Reading time6 min
Views4.5K
Здесь уже было несколько статей о первых шагах на маркете, и каждая вызывает интерес. Во всяком случае, у меня. И я подумал, что не лишним будет поделиться банальной, в общем-то, историей о еще одном случае. Я не собираюсь в этой статье пиарить свое приложение, а намерен рассказать о некоторых аспектах жизни проекта в первый месяц и способах его продвижения, доступных каждому. Ну и немного лирики, разумеется…
Читать дальше →
Total votes 97: ↑86 and ↓11+75
Comments61

Мой опыт разработки/продвижения/поддержки. Perfect Ear

Reading time8 min
Views5.3K
Здравствуйте, коллеги,

наконец-то у меня дошли руки написать немного о своем опыте на примере моего главного на сегодняшний день приложения Perfect Ear (в русском маркете известного как Абсолютный Слух).

Образовательное приложение, являющееся сборником упражнений для тренировки слуха. Приложение, как не трудно догадаться, охватывает весьма узкий круг потребителей, тем не менее, мне удалось достичь определенного успеха с ним. Оно 2 недели пробыло в списке featured приложений, о чем более детально расскажу далее.

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

В конце приведу некоторые цифры.

Читать дальше →
Total votes 62: ↑61 and ↓1+60
Comments57

Практика работы «в белую» с иностранными заказчиками

Reading time4 min
Views108K
Итак, тут уже была серия статей про то как открыть ИП, как вести бизнес с иностранцами и так далее.
Я хочу всё систематизировать и поделиться реальной практикой.

Для начала введём определения и ограничения:
1. вы уже должны быть зарегистрированы как ИП и вы ознакомились со статьями: habrahabr.ru/blogs/freelance/132232, habrahabr.ru/blogs/freelance/132360, habrahabr.ru/blogs/Dura_Lex/114069
2. мы хотим вести бизнес честно, платить с этого налог и делаем это в России;
3. всё что написано ниже в статье применимо только к ИП, возможно что-то применимо и к ООО, но я ИП и рассказываю про ИП;
4. ИП рассматривается на упрощённой системе налогообложения (УСН) со схемой уплаты налогов в 6% от дохода и без наёмных работников – то есть вы сами по себе;
5. вы предоставляете услуги в области ИТ (программинг, дизайн, консультации и т. п.).

Читать дальше →
Total votes 65: ↑64 and ↓1+63
Comments145

Работа с SurfaceView в Android

Reading time5 min
Views99K
Здравствуйте, Хабравчане!
При работе с 2D графикой в Android отрисовку можно выполнять используя Canvas. Проще всего это сделать с помощью своего класса, унаследованного от View. Необходимо просто описать метод onDraw(), и использовать предоставленный в качестве параметра canvas для выполнения всех необходимых действий. Однако этот подход имеет свои недостатки.
Читать дальше →
Total votes 22: ↑20 and ↓2+18
Comments20

FluentOpenXml — Foxby

Reading time5 min
Views3.5K
Foxby — это библиотека для работы с Word документами в формате OpenXml. Предназначена для генерации документов по шаблону и внесения изменений в существующие документы. С помощью неё вы сможете отказаться от работы с COM+ или редактирования OpenXML-дерева через OpenXML SDK и перейти к механизму построения структуры документа из метаэлементов в декларативном виде.

В классе решаемых задач: создание параграфов, создание и заполнение таблиц, списков, работа с изображениями, форматирование и т.п. Фактически библиотека является оберткой над OpenXML SDK с API в виде Fluent-интерфейса.
Читать дальше →
Total votes 23: ↑19 and ↓4+15
Comments25

Обзор C# библиотек для работы с PDF

Reading time5 min
Views169K
topic image
На написание данной статьи меня подтолкнул топик HTML в PDF, правда по причине того, что он посвящен языку php, лично мне он был мало полезен, т.к. весь опыт работы с php у меня сводился в переводе нескольких скриптов на C#, поэтому я решил сделать небольшой обзор того, что доступно для работы с pdf по средствам языка C#.

Ко мне в список попало 7 библиотек, о которых я скажу несколько слов, а для самой популярной (судя по ответам на stackoverflow), я напишу, как с помощью неё сделать простейший документ. Сразу скажу, что это iTextSharp и работа с ней будет описана в конце статьи.
Читать дальше →
Total votes 87: ↑77 and ↓10+67
Comments24

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

Reading time13 min
Views61K
СхемаВопросы параллелизма в компьютерных вычислениях очень сложны! Причинами большой сложности являются огромное количество деталей, которые нужно учитывать при разработке параллельных программ. В программирование и без того существует большое количество деталей, которые создают почву для ошибок, параллелизм же, добавляет ещё.

Вопросы конкурентного доступа к реляционным базам данных встают практически перед любыми разработчиками прикладного программного обеспечения и не только перед ними. Результатом такой востребованности этой области является наличие большого количества созданных архитектурных паттернов. Это позволяет успешно справляться с большой сложностью разработки таких программ. Ниже пойдёт речь о таких рецептах, а также механизмах на которых базируется их реализация. Повествование будет иллюстрироваться примерами кода на Java, но большинство материала не привязано к языку. Цель статьи — описать проблемы конкурентного доступа к реляционным базам данных, в качестве введения в предмет, а не полноценного охвата темы.
Читать дальше →
Total votes 60: ↑58 and ↓2+56
Comments23

Новые материалы по ASP.Net на русском языке (150 статей)

Reading time1 min
Views18K
Добрый день, друзья!

image

Сегодня мы полностью обновили from scratch Центр разработки на ASP.Net на MSDN. Мы добавили 150 статей на русском языке про ASP.Net MVC, ASP.Net AJAX, ASP.Net WebForms и WebMatrix.
Читать дальше →
Total votes 78: ↑56 and ↓22+34
Comments20

Память: LOH и Chunked Lists

Reading time3 min
Views11K
Управляемая память в .Net поделена на стек и несколько хипов. Самые важные из хипов – это обычная (эфемерная) куча и LOH. Эфемерная куча – это то место, где живут все обычные объекты. LOH – это то место где живут большие (больше 85000 байт) объекты.

LOH обладает некоторыми особенностями:
  • Объекты в LOH никогда не перемещаются
  • LOH только растет и никогда не уменьшается (т.е. если объект собран сборщиком мусора, размер LOH все равно остается неизменным)
  • Хип LOH освобождается только тогда, когда LOH полностью пуст

Из этих двух особенностей LOH происходят два важных следствия, про которые часто забывают:
  • Память в LOH может оказаться фрагментированной. Т.е. происходит то, с чем так боролись в unmanaged мире: в какой-то момент у вас может быть 10Mb свободной памяти, но вы не сможете выделить память под объект размером 1Mb
  • Если вы однажды выделили память под большой объект, а потом используете только маленькие, то вы фактически лишаете себя большого куска памяти. При чем, если у вас в LOH был список или хэш-таблица размером N, а вы добавили в него один элемент, то список реаллоцируется и растет в два раза, сответственно размер LOH составит как минимум 3*N (N – исходные данные, 2N – копия данных и резерв под новый размер). Следующий рост потребует в LOH непрерывный кусок памяти размером в 4*N, а так как такого куска в LOH у нас нет (есть только N), его придется позаимствовать из адресного пространства процесса. В итоге размер LOH вырастет до 7*N, и так далее.


Если вспомнить, что LOH аллоцируется кусками по 16Mb, то все происходящее покажется еще более разрушительными. С первым следствием можно бороться аккуратно переиспользуя объекты. Со вторым — не используя большие объекты. Получается как-то не очень, особенно если с большими коллекциями работать все-таки хочется. Посмотрим, что как можно решить эту проблему.
Читать дальше →
Total votes 58: ↑44 and ↓14+30
Comments88

3й подкаст Петербургской группы Alt.Net

Reading time1 min
Views278

Литература для .Net-разработчика

Участники: dnesteruk & butaji

Non-.Net

Domain-specific books:

RSS наших подкастов
Total votes 23: ↑14 and ↓9+5
Comments3

DataBinder и скорость

Reading time4 min
Views1.5K
Во многих проектах есть необходимость доступа к свойствам объектов используя механизм System.Web.UI.DataBinder.Eval и встал вопрос: насколько это быстро работает и можно ли выполнять такую операцию еще быстрее?
Читать дальше →
Total votes 35: ↑25 and ↓10+15
Comments15

Про правильную посадку в кресле

Reading time5 min
Views71K
Навеяно постами про подлокотники. Это сборник разных советов, которые я потихонечку собирал в записную книжку, когда впервые столкнулся с проблемами, которые может вызвать неправильная посадка в компьютерном/водительском кресле и дополнял собственным опытом и знаниями.

Что есть правильная посадка в кресле?

Это такое положение, которое решает две задачи: обеспечение максимального удобства для работы и обеспечение физиологически удобной позы, препятствующей возникновению боли в спине.

Пара слов о физиологии: главная задача вашего организма — это обеспечение подвижности и работоспособности «здесь и сейчас». Почти всегда — с жертвами в будущем. Что же происходит, когда мы сидим в кресле? Современный офисный человек физически плохо развит (это правда), поэтому долгая напряженная поза (голова вытянута вперед, глаза вглядываются в монитор, спина скруглена и перекошена вбок, потому что одна рука лежит безвольно, а вторая активно шевелит мышкой) приводит к тому, что его спинные мышцы не могут удерживать правильное положение позвоночника больше чем полтора-два часа — они просто расслабляются и отпускают связочно-суставный аппарат. Чтобы не произошло травмы — организм включает экстренный режим сохранения подвижности и перераспределяет вертикальную нагрузку так, чтобы компенсировать ее изгибом самого позвоночника и натяжение связок и мелких мышц.

Это не страшно, это нормально, но проблема в том, что мы не замечаем смены условий и продолжаем сидеть в такой позе еще час, два и больше. Как результат — нагрузка приходится не на большие и сильные мышцы, а на суставы, сухожилия и множество мелких мышц, что в будущем гарантировано приводит к целому букету болезней с общим корнем «хондрозы».

Решение — правильная поза. Как ее достичь? Причем совершенно штатными средствами, без адских подлокотников или кресел за полторы тысячи евро?

Читать дальше →
Total votes 119: ↑112 and ↓7+105
Comments89

Создание заставок (splash screen) в .net 3.5 SP1

Reading time5 min
Views23K
Если вы сталкивались с программированием в .net, то наверняка замечали, что при запуске программы, написанной с использованием WPF, долгое время ничего не происходит. Так продолжается секунд 10, а потом уже открывается главное окно приложения. Даже запуск пустого шаблона WPF приложения занимает около двух секунд.

Эта пауза вносит неопределенность в восприятие программы пользователем: запустилась программа или нет?

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

О том, как это сделать написано под катом.
Читать дальше →
Total votes 62: ↑58 and ↓4+54
Comments67

Доступен Silverlight Toolkit

Reading time1 min
Views995

  Накануне на конференции PDC (все посмотрели пленарные доклады с анонсом Windows Azure, Windows 7, Office «14», Live Mesh и прочее?) было заявлено о первом выпуске Silverlight Toolkit (ранее — Silverlight Control Pack).
  Silverlight Toolkit — это набор дополнительных элементов управления и тем для Silverlight 2, распространяемые бесплатно, с открытым кодом и тестами по лицензии Ms-Pl.
  Silverlight Toolkit разрабатывается вместе с сообществом, причем отдельно от собственно создания Silverlight. Сейчас он уже включает 10 контролов и 6 тем:
Читать дальше →
Total votes 43: ↑30 and ↓13+17
Comments7

Создаем простой tooltips с помощью CSS и jQuery

Reading time4 min
Views70K
CSS tooltips очень популярны в современном веб дизайне, и вопреки широко распространенному мнению их довольно легко создать, особенно с помощью различных популярных javascript-framework-ов.

Вы, конечно, можете использовать стандартный плагин, но чтобы сделать простой tooltips, Вам достаточно написать всего 10 строк кода jQuery и CSS.
image
Итак, приступим. Прежде всего обратите внимание на структуру этого tooltips: это обыкновенная ссылка, которая будет выглядеть примерно так:
Читать дальше →
Total votes 57: ↑52 and ↓5+47
Comments40

Кэширование и memcached

Reading time7 min
Views84K

Этим постом хочу открыть небольшую серию постов по материалам доклада на HighLoad++-2008. Впоследствии весь текст будет опубликован в виде одной большой PDF-ки.



Введение


Для начала, о названии серии постов: посты будут и о кэшировании в Web’е (в высоконагруженных Web-проектах), и о применении memcached для кэширования, и о других применениях memcached в Web-проектах. То есть все три составляющие названия в различных комбинациях будут освещены в этой серии постов.
Читать дальше →
Total votes 76: ↑75 and ↓1+74
Comments72

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity