В последнее время термин “NoSQL” стал очень модным и популярным, активно развиваются и продвигаются всевозможные программные решения под этой вывеской. Синонимом NoSQL стали огромные объемы данных, линейная масштабируемость, кластеры, отказоустойчивость, нереляционность. Однако, мало у кого есть четкое понимание, что же такое NoSQL хранилища, как появился этот термин и какими общими характеристиками они обладают. Попробуем устранить этот пробел.
Тимур Гуев @tguev
Основатель BEEGEEK, автор курсов Поколение Python
Красной таблетки не существует
5 min
128KО чем это
Я долгое время был адептом идей о
— Что можно с помощью ООП решить все проблемы масштабирования программ;
— Что с помощью одной методологии можно выстроить разработку проектов;
— Что с помощью нескольких гениальных книг можно научиться проектировать интерфейсы.
На самом деле, после пары десятков проектов я пришел к выводу, что все это — не более чем заблуждения, и чудеса происходят только в книгах авторов, которые делают на своих бестселлерах миллионы. Или в головах консультантов, которые делают деньги, продавая вам фуфло в виде Agile, KPI и прочих умных слов.
Я не сделаю, возможно, в этом посте никаких открытий. Но сэкономлю вам пару лет, если вы решитесь поверить моему опыту.
+297
Экстремальное программирование: Pair Programming
5 min
64KПарное программирование является одной из практик XP. Эта практика воплощает экстремальную (преувеличенную) идею Code Review. Если ревью позволяет улучшить качество кода, то давайте делать его постоянно, во время рефакторинга и написания нового кода.
Проблема проведения обычного Code Review заключается в том, что программисты дают очень поверхностную обратную связь, когда просто смотрят на ваш код. Но как только они начинаются с ним работать, вот тогда прилетает настоящая обратная связь по всем тонким местам и недочетам.
+39
Обзоры Nokia Lumia 920 и Nokia Lumia 820
11 min
299KПривет, Хабр!
Многие из вас наверняка следили за презентацией Nokia и Microsoft в Нью-Йорке, где мы представили ряд мобильных аксессуаров и, что самое главное, первые в мире работающие смартфоны на операционной системе Windows Phone 8 — это Nokia Lumia 820 и флагманская модель Nokia Lumia 920.
Мы гордимся представленными продуктами, сочетающими множество передовых и инновационных технологий вместе с привлекательным дизайном, и в данном посте подробно расскажем, чем же так примечательны новые устройства.
Nokia Lumia 920
Оба аппарата выделяются ярким фирменным дизайном Nokia, впервые появившимся в смартфоне Nokia N9 — похожие корпуса были и в Nokia Lumia 800, и в Nokia Lumia 900.
Флагманская модель Nokia Lumia 920 выполнена из цельного куска поликарбоната, как это было с N9 и Lumia 800/900, за счёт чего достигается отличная ударостойкость устройства. Корпус аппарата прячет в себе и медную индукционную катушку для беспроводной зарядки по стандарту Qi, обеспечивающей всего на 10% меньшую эффективность использования электроэнергии, чем обычные проводные зарядные устройства, но сильно упрощающей процесс зарядки по сравнению с ними.
Многие из вас наверняка следили за презентацией Nokia и Microsoft в Нью-Йорке, где мы представили ряд мобильных аксессуаров и, что самое главное, первые в мире работающие смартфоны на операционной системе Windows Phone 8 — это Nokia Lumia 820 и флагманская модель Nokia Lumia 920.
Мы гордимся представленными продуктами, сочетающими множество передовых и инновационных технологий вместе с привлекательным дизайном, и в данном посте подробно расскажем, чем же так примечательны новые устройства.
Nokia Lumia 920
Дизайн
Оба аппарата выделяются ярким фирменным дизайном Nokia, впервые появившимся в смартфоне Nokia N9 — похожие корпуса были и в Nokia Lumia 800, и в Nokia Lumia 900.
Флагманская модель Nokia Lumia 920 выполнена из цельного куска поликарбоната, как это было с N9 и Lumia 800/900, за счёт чего достигается отличная ударостойкость устройства. Корпус аппарата прячет в себе и медную индукционную катушку для беспроводной зарядки по стандарту Qi, обеспечивающей всего на 10% меньшую эффективность использования электроэнергии, чем обычные проводные зарядные устройства, но сильно упрощающей процесс зарядки по сравнению с ними.
+133
Японский математик доказал АВС-гипотезу
1 min
89KЯпонский математик Синити Мотидзуки (Shinichi Mochizuki) заявил о доказательстве ABC-гипотезы, которая считается одной из ключевых в теории чисел. Свое доказательство он изложил в серии из четырех работ (1, 2, 3, 4), занимающих суммарно около 500 листов.
Работы были выложены в интернет еще в августе, однако, только сейчас появились первые комментарии других учёных, касающиеся доказательства Мотидзуки. По их словам, как минимум, очевидных пробелов в рассуждениях коллеги нет.
Вероятно, понадобится немало времени, чтобы доказательство АВС-гипотезы было признано, но если это случится, в руки математиков попадает мощнейший инструмент, каким теория чисел никогда не располагала.
Например, Великую теорему Ферма, над которой почти четыре века безуспешно бились лучшие умы планеты, можно будет доказать буквально в три строчки.
Работы были выложены в интернет еще в августе, однако, только сейчас появились первые комментарии других учёных, касающиеся доказательства Мотидзуки. По их словам, как минимум, очевидных пробелов в рассуждениях коллеги нет.
Вероятно, понадобится немало времени, чтобы доказательство АВС-гипотезы было признано, но если это случится, в руки математиков попадает мощнейший инструмент, каким теория чисел никогда не располагала.
Например, Великую теорему Ферма, над которой почти четыре века безуспешно бились лучшие умы планеты, можно будет доказать буквально в три строчки.
+96
Алгоритмы? Не, не знаю
3 min
109KВведение
В последнее время все чаще встречаю мысли о переходе на специальность разработчика. Будь то менеджер, консультант, военный офицер, физик ядерщик или ландшафтный дизайнер — все захотели стать программистами. Попробуем разобраться, почему это происходит и к чему может привести.
+34
Шпаргалка по MV-паттернам для проектирования веб-приложений
7 min
68KВ Интернет можно найти множество различающихся реализаций и схем, уже набившего оскомину, паттерна MVC. В разных книгах я также встречал разные схемы. Это порождает некоторую путаницу и комментарии к моей предыдущей статье: "Реализация MVC паттерна на примере создания сайта-визитки на PHP" тому подтверждение. В поисках истины, я попытался расставить все по местам… перечитал некоторую литературу и статьи по паттернам проектирования и написал дополнение к упомянутой статье. Но решил запостить это дополнение, как отдельный топик в надежде на фидбэк. Под катом вы найдете несколько часто встречающихся схем MVC и MVP с описанием жизненного цикла приложения, а также описание менее популярных паттернов HMVC и MVVM. Разумеется, некоторые из перечисленных паттернов применимы не только к веб-приложениям, но в статье они рассматриваются именно в этом контексте.
+63
Как гуманитарию стать программистом?
6 min
227KЯ начал писать этот пост два месяца назад еще до появления цикла постов «Хочешь быть программистом, стань им». Я читал комментарии к статьям, переписывал статью. В конечном счете, учтя все замечания от людей, которые убеждены, что для программирования нужны какие-то специальные мозги, мой им ответ: «Для нежелания чего-либо делать, сгодится любое оправдание».
Итак, как гуманитарию научиться программировать?
Ответ. Надо следовать принципу: «Глаза боятся, руки делают».
Картинка для привлечения внимания. Заменил на котика, предыдущая напоминала воспаленный мозг.
Далее вы найдете сборник полезных советов, которые мне помогли. Пару слов об авторе: я гуманитарий, окончивший исторический факультет.
Итак, как гуманитарию научиться программировать?
Ответ. Надо следовать принципу: «Глаза боятся, руки делают».
Картинка для привлечения внимания. Заменил на котика, предыдущая напоминала воспаленный мозг.
Далее вы найдете сборник полезных советов, которые мне помогли. Пару слов об авторе: я гуманитарий, окончивший исторический факультет.
+41
Как обойтись без капчи?
2 min
130KК сожалению, на многих сайтах без особой необходимости используют капчи. Хотя можно побороть спам и незаметными для пользователя способами. Особенно, капчу больно видеть на небольших коммерческих сайтах в форме обратной связи, поскольку, капча заметно снижает конверсию таких сайтов. Для больших сайтов, которые могут специально спамить, такие методы не применимы. Однако, в большинстве случаев, без капчи можно обойтись
+115
MVC умер, пришло время MOVE
3 min
76KTranslation
MVC феноменальная идея. У вас есть модели, самостоятельные кусочки состояний, представления которые самостоятельные кусочки UI, и контроллеры которые самостоятельные кусочки… эм?
Я конечно не первый кто это замечает, но проблема с MVC в том что в контроллеры пихают слишком много кода.
Чтобы исправить это, я использую новый паттерн: MOVE. Models, Operations, Views и Events.
Что?
Я конечно не первый кто это замечает, но проблема с MVC в том что в контроллеры пихают слишком много кода.
Чтобы исправить это, я использую новый паттерн: MOVE. Models, Operations, Views и Events.
+35
Расставляем точки на Li: Нужна ли тренировка литиевых аккумуляторов?
7 min
756KПрошло уже достаточно времени с тех времен, когда Ni-Cd и Ni-Mh аккумуляторы безраздельно властвовали в мобильных устройствах, но с самого начала эпохи Li-ion и Li-pol все не утихают споры по поводу того, надо ли «тренировать» эти аккумуляторы сразу после покупки.
Доходит до смешного, в теме обсуждения ZP100 на china-iphone всем новичкам рекомендовали в приказном тоне пройти 10 циклов зарядки-разряда, а только потом приходить с вопросами о аккумуляторах.
Давайте попробуем разобраться, имеет ли такая рекомендация право на жизнь, или это рефлексы спинного мозга (за отсутствием головного, наверное) некоторых индивидуумов, у которых они остались со времен никелевых батарей.
Доходит до смешного, в теме обсуждения ZP100 на china-iphone всем новичкам рекомендовали в приказном тоне пройти 10 циклов зарядки-разряда, а только потом приходить с вопросами о аккумуляторах.
Давайте попробуем разобраться, имеет ли такая рекомендация право на жизнь, или это рефлексы спинного мозга (за отсутствием головного, наверное) некоторых индивидуумов, у которых они остались со времен никелевых батарей.
+284
Немного о многопоточном программировании. Часть 1. Синхронизация зло или все-таки нет
12 min
70KМне по работе часто приходится сталкиваться с высоконагруженными многопоточными или многопроцессными сервисами (application-, web-, index-server).
Достаточно интересная, но иногда неблагодарная работа — оптимизировать все это хозяйство.
Растущие потребности клиентов часто упираются в невозможность просто заменить железную составляющую системы на более современную, т.к. производительность компьютеров, скорость чтения-записи жестких дисков и сети растут много медленнее запросов клиентов.
Редко помогает увеличение количества нодов кластера (система как правило распределенная).
Чаще приходится запустив профайлер, искать узкие места, лезть в source code и править ляпы, которые оставили коллеги, а иногда и сам, чего греха таить, много лет назад.
Некоторые из проблем, связаных с синхронизацией, я попытаюсь изложить здесь. Это не будет вводный курс по многопоточному программированию — предпологается, что читатель знаком с понятием thread и context switch, и знает для чего нужны mutex, semaphore и т.д.
Достаточно интересная, но иногда неблагодарная работа — оптимизировать все это хозяйство.
Растущие потребности клиентов часто упираются в невозможность просто заменить железную составляющую системы на более современную, т.к. производительность компьютеров, скорость чтения-записи жестких дисков и сети растут много медленнее запросов клиентов.
Редко помогает увеличение количества нодов кластера (система как правило распределенная).
Чаще приходится запустив профайлер, искать узкие места, лезть в source code и править ляпы, которые оставили коллеги, а иногда и сам, чего греха таить, много лет назад.
Некоторые из проблем, связаных с синхронизацией, я попытаюсь изложить здесь. Это не будет вводный курс по многопоточному программированию — предпологается, что читатель знаком с понятием thread и context switch, и знает для чего нужны mutex, semaphore и т.д.
+49
Перевод: Чему я научился за 30 лет программирования
5 min
78KОригинальная статья Джона Грэхем-Камминга.
Переведено и опубликовано с разрешения автора.
Я занимаюсь программированием уже более 30 лет, начиная с машин, уже устаревших (на процессорах Z80 и 6502) до современных, используя языки BASIC, ассемблера, C, C++, Tcl, Perl, Lisp, ML, occam, arc, Ruby, Go и многие другие.
Далее следует список того, чему я научился.
Переведено и опубликовано с разрешения автора.
Я занимаюсь программированием уже более 30 лет, начиная с машин, уже устаревших (на процессорах Z80 и 6502) до современных, используя языки BASIC, ассемблера, C, C++, Tcl, Perl, Lisp, ML, occam, arc, Ruby, Go и многие другие.
Далее следует список того, чему я научился.
+99
UICloud: Самая большая база пользовательских интерфейсов
1 min
34KUICloud — это база бесплатных пользовательских интерфейсов с поисковой системой, рейтингом и каталогизатором в которой собрано все от исходников в формате PSD, до готовых решений на HTML, CSS или jQuery: формы, слайдеры, кнопки, календари, элементы и полноценные интерфейсы для мобильных и веб приложений. В проекте уже сейчас можно найти практически все что нужно для облегчения процесса разработки дизайнерам и разработчикам.
На данный момент в базе 23586 элементов и почти тысяча UI-сэтов включающие в себя готовые решения в едином стиле. Проект создан Британской студией Double-J Design целью проекта является создание самой обширной UI базы.
+159
Вывод уведомления об устаревшем браузере с помощью jReject
3 min
31KМногие веб-сайты выводят предупреждения об устаревших браузерах или и вовсе отправляют пользователя устанавливать новый браузер или Google Chrome Frame.
jReject — специальный плагин для jQuery, позволяющий отображать подобные уведомления с помощью нескольких строчек кода.
jReject — специальный плагин для jQuery, позволяющий отображать подобные уведомления с помощью нескольких строчек кода.
+36
Как, зная только имя и email человека, злоумышленники получили доступ ко всем его аккаунтам и удаленно уничтожили информацию на всех его устройствах
2 min
177KОчень интересная статья появилась сегодня на wired.com. Буквально за один час у автора статьи Мэта Хонана были взломаны Amazon, GMail, Apple и Twitter аккаунты и была удаленно уничтожена информация на его iPad, iPhone и MacBook. Среди прочего он потерял все фотографии своей дочки с ее рождения, многие документы и большую часть переписки. Очень интересно в этой истории то, как злоумышленник получил доступ к Amazon аккаунту и AppleID — для этого не понадобилась ничего, кроме доступной в сети информации и телефона.
+335
Конвертация строки в число
4 min
67KПомогал на днях одной своей знакомой разобраться в программировании. По ходу дела написали учебную программу, которая умеет конвертировать строку (string) в число (int). И как-то само собой захотелось сравнить скорость работы собственной нетленки, со скоростью работы стандартных инструментов (Convert.ToInt32 и Int32.Parse). Результат такого сравнения, на первый взгляд, получился несколько необычным.
+16
Отображение иерархической структуры данных в WPF с помощью привязки и шаблонов
17 min
24KВведение
Представление набора данных в виде иерархической структуры (любого уровня вложенности) в WPF осуществляется очень просто. Как правило, для этого используется класс System.Windows.Controls.TreeView и выглядит результат как-то так:
Я продемонстрирую два случая построения такого дерева, отличающихся друг от друга источником данных:
- База данных, размещённая на MS SQL Server 2008
- XML-файл.
+7
Мифы и заблуждения насчёт CLR и .NET
8 min
35KПоследнее время на популярно-технических форумах я часто встречаю ожесточённые споры приверженцев и противников .NET. Эти споры, как правило, начинаются из-за недоразумения, и заканчиваются жестким троллингом, беседами “за жизнь” и сравнением радиусов и удельных плотностей материала различных сферических коней. Обе стороны силятся доказать и аргументировать, но ни одна не хочет посмотреть на предмет спора другими глазами. Хабрахабр не исключение, увы.
Накалу страстей такой беседы позавидовали бы религиозные фанатики. Единственное, что спасает противников от крестовых походов друг на друга, вооружившись вилами и LangSpec’ами — то, что они разделены интернетом.
Так жить нельзя, господа. Мне захотелось исправить эту ситуацию, и выступить с одной из сторон. Этим постом я попробую нанести сообществу непоправимую пользу и разобраться с мифами, на обсуждение которых, а не на взаимное членовредительство, к сожалению, и уходят силы спорщиков. А так как я в своё время перелез с C++ на C# и всё вокруг него, то я буду развенчивать негативные мифы, прибавлять позитива и всячески приукрашивать действительность — а как без этого. И — заметьте — это обойдется совершенно бесплатно для M$. Ну а сделать я это хочу в формате Q&A.
Накалу страстей такой беседы позавидовали бы религиозные фанатики. Единственное, что спасает противников от крестовых походов друг на друга, вооружившись вилами и LangSpec’ами — то, что они разделены интернетом.
Так жить нельзя, господа. Мне захотелось исправить эту ситуацию, и выступить с одной из сторон. Этим постом я попробую нанести сообществу непоправимую пользу и разобраться с мифами, на обсуждение которых, а не на взаимное членовредительство, к сожалению, и уходят силы спорщиков. А так как я в своё время перелез с C++ на C# и всё вокруг него, то я буду развенчивать негативные мифы, прибавлять позитива и всячески приукрашивать действительность — а как без этого. И — заметьте — это обойдется совершенно бесплатно для M$. Ну а сделать я это хочу в формате Q&A.
+114
.NET Framework. Memory management
11 min
22KВ данной статье рассматриваются некоторые моменты по работе с памятью в .NET Framework. Статья описывает работу GC, как GC контролирует свои хип, режимы работы GC. Приведены примеры, по использованию памяти в обход GC. Я изложил не только легко доступную информацию, ну и ту, что доступна только при изучении дампов приложений, написанных на .NET. Надеюсь статья получилась информативной и не очень скучной. Следующая статья будет про загрузчик, JIT, и его структур данных, таких как Method Tables, Method Descriptors и EEClass.
+26
Information
- Rating
- 79-th
- Location
- Москва, Москва и Московская обл., Россия
- Date of birth
- Registered
- Activity