Pull to refresh
0
0
Беликов Сергей @Belikov

User

Send message

Hg Init: Часть 2. Основы Mercurial

Reading time7 min
Views229K
Это вторая часть из серии Hg Init: Учебное пособие по Mercurial от Джоэля Спольски (Joel Spolsky). Возможно, вы захотите прочитать и первую часть «Переобучение для пользователей Subversion».

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

Часть 2. Основы Mercurial



Mercurial — это система контроля версий. Разработчики используют ее для администрирования исходного кода. У нее два основных назначения:
  1. Она хранит все предыдущие версии каждого файла
  2. Она может объединить разные версии вашего кода, то есть сотрудники могут независимо работать над кодом и затем объединять свои изменения


Читать дальше →
Total votes 72: ↑69 and ↓3+66
Comments66

«От хорошего к великому» (в цитатах) — Часть 2

Reading time6 min
Views19K
imageКак и обещал, выкладываю вторую часть цитат, выделенных маркером во время прочтения одной из лучших (с моей точки зрения) книг о бизнесе — книги Джима Коллинза «От хорошего к великому».

См. также (первая часть).

***

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

***


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

Читать дальше →
Total votes 60: ↑51 and ↓9+42
Comments32

IEnumerable<T> и IQueryable<T>, в чем разница?

Reading time2 min
Views47K
Уважаемые Хабровчане, решил поделиться одним не очевидным моментом использования LinqToSql, с которым столкнулся некоторое время назад. А именно, про особенности использования каскадных Linq запросов:

Работая над очередным ASP.NET MVC проектом, и проектируя уровень доступа к БД мне потребовалось проверить качество скриптов, генерируемых Framework-ом L2C.

Что имеем (упрощенный вариант модели):


class User {
  public long Id { get; set; }
  public string Name { get; set; }
  public IEnumerable<Parameter> Parameters { get; set; }
}

class Parameter {
  public long UserId { get; set; }
  public string Name { get; set; }
  public string Value { get; set; }
}

Для получения данных написан класс UserRepository:

class UserRepository: MyProjectDataContext {
  public IEnumerable GetUsers() {
    return this.Users.ToModelUsers();
  }
}

static class RepositoryHelper {
  public static IEnumerable<Model.User> ToModelUsers(this IEnumerable<DataAccess.User> users) {
    return users.Select(u => new Model.User { Id = u.Id, Name = u.Name, Parameters = u.Parameters.ToModelParameters() });
  }

  public static IEnumerable<Model.Parameter> ToModelParameters(this IEnumerable<DataAccess.Parameter> parameters) {
    return parameters.Select(u => new Model.Parameter {… });
  }
}

пишем
var users = userRepository.GetUsers().ToList();

смотрим профайлер, и с удивлением обнаруживаем что для загрузки 10 пользователей и их параметров было выполнено целых 11 запросов.
подробности
Total votes 64: ↑43 and ↓21+22
Comments35

Hg Init: Часть 1. Переобучение для пользователей Subversion

Reading time9 min
Views123K
Hg Init: Учебное пособие по Mercurial.


Mercurial — это современная распределенная система контроля версий с открытым кодом. Эта система — заманчивая замена для более ранних систем вроде Subversion. В этом простом учебном пособии в шести частях Джоэль Спольски (Joel Spolsky) рассказывает о ключевых принципах Mercurial.

Если вы использовали Subversion, то Mercurial будет непонятным. Эта часть рассказывает о главных отличиях при работе с Mercurial. Если вы никогда не использовали Subversion, то можете просто пропустить эту часть.

Часть 1. Переобучение для пользователей Subversion


В каком же я был смятении, когда программисты в моей компании решили сменить Subversion на Mercurial!

Для начала, я начал приводить всевозможные тупые причины, по которым нам не надо ничего менять. «Мы должны хранить репозиторий на центральном сервере, так безопаснее», — сказал я. Знаете что? Я был неправ. При работе с Mercurial у каждого разработчика на жестком диске хранится полная копия репозитория. Это, на самом деле, безопаснее. В любом случае, почти в каждой команде, использующей Mercurial, центральный репозиторий тоже существует. И вы можете делать резервное копирование этого репозитория со всей необходимой одержимостью. А еще можете устроить трехступенчатую защиту с Сайлонами, Штурмовиками и прелестными лабрадудлами или что там требует ваш IT-отдел.

Читать дальше →
Total votes 119: ↑116 and ↓3+113
Comments125

Обзор NoSQL систем

Reading time5 min
Views55K
Беспрецедентные объемы данных заставляют разработчиков и бизнес приглядываться к альтернативам реляционных баз данных, используемым вот уже более тридцати лет. В совокупности все эти технологии известны как «NoSQL базы данных».


Основной проблемой является то, что реляционные базы данных не могут справляться с нагрузками актуальными в наше время (мы говорим о high-load проектах). Есть три конкретные проблемных области:
  • горизонтальное масштабирование при больших объемах данных, например как в случае Digg (3 терабайта для зеленых значков, отображаемых, если ваш друг сделал dugg на статье) или Facebook (50 терабайт для поиска по входящим сообщениям) или eBay (2 петабайта в целом)
  • производительность каждого отдельного сервера
  • не гибкий дизайн логической структуры.
Читать дальше →
Total votes 101: ↑98 and ↓3+95
Comments67

Главный враг — Я сам!

Reading time2 min
Views1.2K
Я набросал длинную, но банально теоретическую незаконченную статью и обозвал ее «Я — Gordon FreeMan?» (см. значения этих слов в словарях), а потом пришла жена и сказала, что я написал унылое говно. Я почти все стер.
Но что-то все равно осталось...
Total votes 60: ↑28 and ↓32-4
Comments45

Ведический подход к работе фрилансером

Reading time3 min
Views4.9K
Будет полезно начинающим, еще не окрепшим фрилансерам с неустоявшимся подходом к клиентам. Сразу скажу, что данная статья — не оплот фен-шуя и прочей, непочитаемой it-сообществом ерунды. Здесь изложен естественный логический подход к жизни, в частности к отношениям с клиентами.
Осторожно: статья большая!
Total votes 90: ↑66 and ↓24+42
Comments119

Что нужно для хорошего, качественного стартапа

Reading time8 min
Views1.4K
Осторожно: под катом много текста, кому-то возможно в достаточно сложном изложении. Так же прошу прощение за качество рисунков, нет средств на лэп-топе =( приеду домой поправлю.

Когда я собрался с мыслями открыть свое дело. Обошел с десяток инвесторов, процедура общения с ними отдельная тема. Но все же именно это побудило меня поделится своими мыслями о том, нужны ли стартапу деньги? Интересно мнение хабравчан по этому поводу. Хотя тут можно найти 1000 мнений, но все же…

По сути это небольшая заметка о том как же трудно работать. Особенно если ты хочешь сделать свое дело действительно хорошим, а не очередной «Fast Start-up, but...»! О том сколько нужно всего учесть и предусмотреть.

читать дальше
Total votes 34: ↑19 and ↓15+4
Comments13

Почему Git

Reading time8 min
Views68K
Было время, когда я ничего не знал про VCS, ни что это такое, ни тем более зачем это мне. И верхом своих достижений считал папочку с архивами версий. К моменту осознания необходимости системы контроля версий я уже набил шишек и прочувствовал необходимость такого инструмента. Но борландовский аналог CVS меня не впечатлил. У каждого файла свой номер версии. Как мне получить срез определенного релиза я так и не разобрался. А в это время SVN победоносно шла сквозь умы разработчиков. Черт, это было то, чего мне так не хватало. Прочитав доку и начав работать я просто влюбился в нее. Да, были трудности и определенные неудобства, но куда без них.
Так я и работал бы в SVN, но ничего не стоит на месте. В интернете уже потекли тонкие ручейки новостей про Git. Я не кидаюсь за каждой новой технологией, и прошло уже достаточно много времени, пока мне не прожужжали этим Git’ом все мозги. Мне стало любопытно, я вначале присматривался, примерялся, а потом плюнул и начал новый проект на Git. Мучался с ребятами 2 недели, накачал литературы, написал шпаргалку… ничего, привыкли, … а потом меня поперло.

Теперь меня регулярно просят рассказать про Git и что в нем такого. Уже надоело, поэтому этот пост для тех, кто еще сомневается.
Читать дальше →
Total votes 207: ↑195 and ↓12+183
Comments265

LINQ to SQL: паттерн Repository

Reading time10 min
Views54K
Бар LINQВ этой статье будет рассмотрен один из вариантов реализации паттерна репозиторий на базе LINQ to SQL.

Сегодня LINQ to SQL – это одна из технологий Microsoft, предназначенная для решения проблемы объектно-реляционного отображения (object-relational mapping). Альтернативная технология Entity Framework является более мощным инструментом, однако у LINQ to SQL есть свои преимущества – относительная простота и низкоуровневость.

Данная статья — это попытка продемонстрировать сильные стороны LINQ to SQL. Паттерн репозиторий отлично ложится на парадигму LINQ to SQL.
Читать дальше →
Total votes 36: ↑29 and ↓7+22
Comments25

Об управлении временем, саморазвитии и деньгах

Reading time8 min
Views13K
Я хочу рассказать о том, почему в отдельности не работают подходы, которые люди начинают применять, прочитав ту или иную книгу из области time-management или управления финансами.

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

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

А когда мы говорим об управлении временем, часто случается следующее. Человек прочитал одну книгу, один день попробовал вести хронометраж — бросил, лениво. Написал план на неделю, месяц, год, и ни разу их не открыл. На следующий день писал план первые три дня, а потом забросил — ибо ничего не успевал.

Или с деньгами.
Читать дальше →
Total votes 136: ↑117 and ↓19+98
Comments86

OnPropertyChanged со строгими именами

Reading time2 min
Views4.6K
Меня дико бесит OnPropertyChanged. Он требует передачи ему строки с именем идентификатора… Мало того, что такой код не верифицируется компилятором, так еще и никакого Intellisence — тайпи весь идентификатор от начала до конца… А если опечатаешся — так проглотит и во время выполнения. Вобщем, нехорошая вещь. Но в MVVM без нее никуда, как и в WPF без MVVM.

Последняя проблема худо-бедно решалась вот таким костылем, содранным отсюда, который вызывался из OnPropertyChanged:
[Conditional("DEBUG")]
[DebuggerStepThrough]
public void VerifyPropertyName(string propertyName)
{
  // Verify that the property name matches a real, 
  // public, instance property on this object.
  if (TypeDescriptor.GetProperties(this)[propertyName] == null)
  {
    string msg = "Invalid property name: " + propertyName;

    if (this.ThrowOnInvalidPropertyName)
      throw new Exception(msg);
    else
      Debug.Fail(msg);
  }
}


И вот сегодня я совершенно случайно нашел красивый способ избавится от него.
Читать дальше →
Total votes 43: ↑28 and ↓15+13
Comments23

Гибкой методологии исполняется 10 лет

Reading time3 min
Views4.7K
image
image
Прошло почти 10 лет с тех пор как был выпущен «Манифест гибкой методологии разработки ПО», который поспособствовал процессам, учитывающим меняющиеся требования, постоянное взаимодействие с заказчиками, и разработку ПО с помощью нескольких коротких итераций.

Agile Manifesto был выпущен в феврале 2001 года, когда группа разработчиков собралась в штате Юта, чтобы найти альтернативу управляемым документацией, «тяжеловесным» практикам разработки программного обеспечения, таким как «метод водопада», являвшимся золотым стандартом разработки в то время.
Читать дальше →
Total votes 34: ↑21 and ↓13+8
Comments6

Бизнес-планирование

Reading time4 min
Views8.9K
Приветствую, Хабрахабр.

В первую очередь хочу поблагодарить ssneg за инвайт, а также опубликовать статью, за которую я его получил.

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

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

Итак, бизнес. Преимущественно мы говорим о т.н. стартапе, когда бизнес основывается с нуля. Вы приняли это решение, и неважно, как вы к нему пришли — возможно, у вас появилась идея, возможно, вам просто не хочется просто работать на кого-то. Есть распространенное мнение о том, что для бизнеса нужен существенный начальный капитал. Начальный капитал необходим, но не обязателен, и существует ряд успешных примеров бизнеса, основанного практически на карманные расходы. Как говорит один из моих профессоров, бывший член совета директоров Exxon Enterprises и Genesis Group – «основывая стартап, не заботьтесь о капитальных вложениях, просто докажите, что ваш бизнес способен приносить доход и что вы способны им управлять, и тогда у вас не будет недостатка в капитале».

С чего начать?


Читать дальше →
Total votes 61: ↑53 and ↓8+45
Comments40

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

Reading time4 min
Views5.7K
Началось все достаточно банально — с того, что мне понадобился logging в моем проекте на Silverlight.

Под «взрослым» .NET-ом я всегда пользовался NLog-ом от Ярека Ковальского. А почему не log4net, спросят многие из вас.
Все, конечно, достаточно субъективно, ну да ладно.
Читать дальше →
Total votes 73: ↑52 and ↓21+31
Comments32

Приглашаем авторов для создания электронного журнала по .NET

Reading time2 min
Views1K
Приглашаем независимых специалистов и экспертов, студентов-партнеров и других заинтересованных людей присоединиться к проекту по созданию электронного журнала, посвященному разработке для платформы .NET.
Читать дальше →
Total votes 62: ↑44 and ↓18+26
Comments47

Silverlight + nginx = возобновляемая загрузка файлов в браузере

Reading time7 min
Views16K
В данной статье рассматривается опыт внедрения Silverlight-клиента для организации возобновляемой загрузки файлов на проекте Файлы@Mail.Ru.

Зачем это нужно? Думаю, не нужно рассказывать, что загрузку файлов на сервер и их хранение сейчас предоставляет очень большое количество веб-проектов, от небольших до очень крупных. Причем загрузка обычно реализована в виде обычного <input type=file/>, реже — с помощью Flash, еще реже — иными средствами (загрузку по FTP в данной статье мы не рассматриваем).

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

Что делать?
Читать дальше →
Total votes 122: ↑101 and ↓21+80
Comments41

«Оживление» пользовательского интерфейса

Reading time12 min
Views32K
image

Приложение не отвечает?!


Многие из тех, кто программирует WPF-приложения, наверное тысячи раз писали конструкцию вида:
{Binding Items}

Если получение элементов коллекции Items выполняется в основном потоке приложения и занимает некоторое время — мы получаем «мертвый» пользовательский интерфейс. Приложение некоторое время не будет отрисовывать изменения состояния и реагировать на пользовательский ввод.
Читать дальше →
Total votes 104: ↑97 and ↓7+90
Comments10

О работе с заказчиками, разработке и внедрении софта

Reading time14 min
Views5.1K
Почитал я, как люди бьются с пользователями своего софта и решил поделиться с миром опытом. Сразу скажу, что опыт у меня не маленький — в своё время мои программы пользовались большим спросом и на их поддержке я не одну собаку съел. В результате клиенты пИсали кипятком, а пользователи саботировали любой другой софт, спускаемый сверху, кроме моего. В качестве истории успеха приведу не слишком большой проект автоматизации АЗС.
Читать дальше →
Total votes 69: ↑63 and ↓6+57
Comments52
12 ...
63

Information

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