Search
Write a publication
Pull to refresh
1
0
Владимир Пестов @KozzyKoder

User

Send message

Боремся с deadlock-ами: паттерн unlocked callbacks

Reading time6 min
Views15K

Ситуации взаимной блокировки


В Википедии дается следующее определение взаимной блокировки: «Взаимная блокировка (англ. deadlock) — ситуация в многозадачной среде или СУБД, при которой несколько процессов находятся в состоянии бесконечного ожидания ресурсов, занятых самими этими процессами».

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

Классический пример взаимной блокировки: первый поток (A) захватывает мьютекс M1 и следом мьютекс M2. Второй поток (B) захватывает мьютекс M2, а уже после этого – мьютекс M1. Взаимная блокировка этих двух потоков может произойти следующим образом: поток A захватывает M1, поток B захватывает M2, после этого оба потока «обречены»: ни поток A не может захватить M2, ни поток B не может захватить M1; попытки захвата мьютексов заблокируют оба потока.

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

Данная ситуация очень распространена в сложных многопоточных системах. Как правило, мьютексы-участники расположены далеко друг от друга (в различных компонентах системы), и выявить участников взаимной блокировки оказывается достаточно сложно.
Читать дальше →

Внедрение зависимостей в .NET

Reading time4 min
Views16K

Название оригинала: Dependency Injection in .NET
Автор: Марк Симан
Дата выхода: август 2013г.

В конце лета у нас выходит новая переводная книга «Dependency Injection in .NET» издательства Manning Publications. Хотим вашему внимаю представить перевод небольшого анонса.

Dependency Injection in .NET — это великолепное описание технологии внедрения зависимостей (DI), связанных с ней паттернов и нескольких важнейших фреймворков для такого внедрения. Симан проработал множество ресурсов (книг, журнальных статей, записей в блогах) и создал свой всеобъемлющий труд. Несомненно, автор опирается на массу самостоятельно проведенных исследований и собственный практический опыт в работе с внедрением зависимостей.
Читать дальше →

Эффективное клиент-серверное взаимодействие в Android

Reading time6 min
Views5.9K

StrictMode и борьба с ANR


Начиная с версии Gingerbread, Google добавил в Android механизм, который позволяет отслеживать долгосрочные операции, выполняемые в UI потоке. Имя этому механизму StrictMode. Для чего же это было сделано?

Каждый из вас, вероятно, сталкивался в приложениях с диалоговым окном «Application Not Responding» (приложение не отвечает) или ANR. Это происходит когда приложение не отвечает на события ввода (нажатие клавиш, тач по экрану) в течение 5 секунд. Для отслеживания процессов, блокирующих UI поток, и был введен механизм StrictMode. И, начиная с Android 3.0, StrictMode пресекает попытки выполнить сетевой запрос в UI потоке.

Итак, какие же механизмы предоставляет Android для обращения к сети вне UI потока?
Читать дальше →

Использование паттернов проектирования в javaScript: Порождающие паттерны

Reading time5 min
Views76K
Привет, хабр!
С удивлением обнаружил отсутствие на хабре развернутой статьи о сабже, что немедленно сподвигло меня исправить эту вопиющую несправедливость.

В условиях когда клиентская часть веб-приложений становится все более толстой, бизнес-логика неумолимо переползает на клиент, а на суверенитет серверных технологий все более смело посягает node.js нельзя не задуматься о приемах проектирования архитектуры на javaScript. И в этом деле нам несомненно должны помочь паттерны проектирования — шаблонные приемы решения часто встречающихся задач. Паттерны помогают построить архитектуру, которая потребует от вас наименьших усилий при необходимости внести изменения. Но не стоит воспринимать их как панацею, т.е., грубо говоря, если качество кода «не фонтан», он кишит хардкодом и жесткой связью между логически независимыми модулями, то никакие паттерны его не спасут. Но если стоит задача спроектировать масштабируемую архитектуру, то паттерны могут стать хорошим подспорьем.
Но впрочем эта статья не о паттернах проектирования как таковых, а о их применении в javaScript. В первой части этой статьи я напишу о применении порождающих паттернах.
Читать дальше →

Админка за 10 минут

Reading time4 min
Views145K
Здравствуйте, уважаемое Хабрасообщество!

Я занимаюсь разработкой веб-сайтов. Как правило, это решения под индивидуальные потребности заказчиков. Поэтому я не использую готовые CMS, а предпочитаю складывать кирпичики самостоятельно. Конечно и админскую часть приходиться писать самостоятельно, поскольку она должна выполнять те функции, которые нужны заказчику, но и ничего лишнего не должно быть. И если написать несколько методов для редактирования данных это пол беды, то приходилось ещё и верстать приятный и удобный интерфейс.

Долгое время я использовал Twitter Bootstrap, но он не мог удовлетворить все потребности. Приходилось верстать дополнительные кнопочки и писать скрипты. Но вот однажды, я познакомился с замечательным UI-фреймворком KendoUI от Telerik. Что из этого получилось под катом.

Читать дальше →

Блоки в Objective-C

Reading time1 min
Views12K
В этом небольшом 15-минутном видео Юра Digal Буянов (ведущий iOS-разработчик e-Legion) расскажет о тонкостях работы с блоками в Objective-C.



Мы решили сделать целый ряд коротких видео о разработке (не только мобильной), дизайне и маркетинге. Чтобы не пропустить выход новых материалов, вы можете подписаться на Хабра-блог или на youtube-канал.

Принимаются советы, рекомендации, а также заявки на интересующие темы, которые можно раскрыть в следующих видео.

IntelliJ IDEA 12.1 c поддержкой JavaFX 2

Reading time2 min
Views20K
Привет, Хабр!

Традиционно каждую весну мы празднуем выпуском свежего обновления для IntelliJ IDEA с исправлениями и улучшениями юзабилити. Этот год не стал исключением! Мы рады сообщить, что IntelliJ IDEA 12.1 наконец доступна для скачивания.



Как вы знаете, в конце прошлого года IntelliJ IDEA обзавелась поддержкой Java 8, Play Framework 2, дизайнером UI для Android, более чем в два раза ускоренным компилятором, новыми инструментами для работы с базами данных и, конечно же, темной цветовой темой Darcula. В IntelliJ IDEA 12.1 большая часть этих возможностей была улучшена с учетом тех замечаний, которые мы получили за это время, а также были исправлены многие найденные проблемы.
Читать дальше →

Google поздравляет всех с днём веб-мастера новым движком рендеринга

Reading time2 min
Views59K
Конечно, в США ещё день веб-мастера не наступил, но к празднику в интернет-гиганте подготовились на отлично, со свойственным циничным чувством юмора (весть о закрытии YT на первое апреля это наглядно демонстрирует). Итак, встречайте: Google Blink — принципиально новый движок рендеринга для Google Chrome.
Читать дальше →

Доступен для скачивания dotPeek 1.1 EAP

Reading time2 min
Views6.2K
В нашем недавнем посте мы анонсировали выход в EAP 8й версии ReSharper, упомянув улучшенную поддержку декомпиляции. Сегодня мы рады анонсировать, что следующая версия dotPeek, нашего бесплатного декомпилятора, также достигла стадии EAP. Вот несколько новых возможностей, которые можно попробовать уже сегодня.
Читать дальше →

Перенос сайта из Visual Studio 2012 на хостинг. Панель управления Parallels Plesk Panel

Reading time5 min
Views33K
Здравствуйте!

Про разработку сайта на ASP.NET MVC 3/4 написано достаточно. По крайне мере, что б начать само развиваться. однако почти ничего не написано про то, как его перенести на хостинг / сервер. Мне, как человеку, пришедшему с линукс хостингов и ПХП сама панель, папки, да и компиляция проекта — все было в новинку. Есть мануалы — если достаточно долго помучатся, то можно выГуглить. Однако оказалось, что запросы «выложить сайт, перенос сайта, развернуть сайт, создать сайт» практически не дают результата. Или листать нужно достаточно далеко. Правильный запрос в данной ситуации «публикация сайта». Однако на Хабре есть всего Создание сайта Windows Azure Web Site и развёртывание там приложения ASP.NET MVC 4 и Публикация сайта ASP.NET MVC в обновленный Windows Azure. однако это по Azure.

Так же, столкнулся с проблемой, что нет возможности напрямую опубликовать сайт сразу из Visual Studio 2012 на хостинг — стоит прокси, который не дает это сделать. хотя подключиться через FileZilla — позволяет. Не знаю в чем проблема, ходил к администраторам — они развели руками и сказали что проблема в моей Windows 8 Pro. Ладно. Не такая и проблема.

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

Начну с хостинга. панель выглядит так:

Осторожно картинки!
Читать дальше →

Реализация пула объектов на языке C#

Reading time8 min
Views55K
Доброго времени суток!
В этой статье я расскажу, как повысить производительность многопоточного (и не только) C#-приложения, в котором часто создаются объекты для «одноразовой» работы.
Немного про многопоточность, неблокирующую синхронизацию, использование встроенного в VS2012 профилировщика и небольшой бенчмарк.
Читать дальше →

24 совета javascript-разработчику

Reading time9 min
Views86K
От переводчика: Не смотря на то что оригинал данной статьи датирован январем 2009 года, она не потеряла актуальности и теперь. Я надеюсь что даже те, кто используют JavaScript не первый год, почерпнут для себя что-то полезное.

1. Используйте === вместо ==


В JavaScript существует два разных типа операций сравния: === / !== и == / !=. Считается хорошим тоном всегда использовать первую пару для сравнения.
“Если два операнда одного типа и значения, то === вернет true, а !== false”
JavaScript: The Good Parts
Читать дальше →

Работа с Git в Visual Studio 2012

Reading time4 min
Views55K
imageНекоторое время назад была опубликована статья «Интеграция Team Foundation Services с Git и другие новые возможности». Нас очень порадовало, что читатели проявили к ней живой интерес и прислали нам отзывы и вопросы. Мы учтем их в процессе совершенствования наших инструментов и услуг, так что следите за нашими новостями. В этой публикации хотелось бы рассказать, как разработчики могут начать использовать инструменты Git в Visual Studio и сервис Git в TFS.
Читать дальше →

AAML: Простейший язык разметки для Android

Reading time3 min
Views11K
Возможно вы сочтете это глупостью, но я не люблю IDE. Обычно всю работу проделываю в vim+tmux+терминал. Я признаю все преимущества IDE, просто мне удобнее в хорошем текстовом редакторе. Но речь не об этом.

Когда я пишу что-нибудь под андроид — я часто правлю XML (разметку, стили, строки, ...). Так вот в текстовом редакторе это делать не очень удобно. И я решил потратить пару часов и написать генератор XML на основе упрощенного языка разметки (типа lesscss или stylus для CSS). Все-таки NIH — очень уж соблазнительный стимул.
Читать дальше →

Краткое описание инициализаторов модулей в .Net

Reading time4 min
Views9.3K
Недавно вспомнил студенческие годы и про функцию dllmain, после чего задумался — есть ли нечто подобное в .Net?
Как оказалось, есть, но не всеми языками этой семейки поддерживается. Этот пост является переводом короткой (но содержательной) статьи по этой теме.
Читать дальше →

Continuous Integration для мобильных и веб-проектов

Reading time4 min
Views15K
Добрый день, в своей статье, хочу рассказать, всем известную практику разработки ПО — Continuous Integration или Непрерывная интеграция.
Чтобы сразу пояснить в чем особенность статьи объясню, что в нашей команде стояла задача построить единый процесс для всех наших проектов. А проекты у нас бывают как мобильные (iOS, Android) и веб (верстка, сервисы, сайты).
Читать дальше →

Хотите, чтобы ваша компания развивалась? Избавьтесь от менеджеров!

Reading time4 min
Views164K
Многие сотрудники работают на своих боссов, нежели на компанию или своих клиентов. В наше время бизнес пронизан менеджерами разных уровней, и сотрудники часто обнаруживают, что они, играя в политику, фокусируются на задачах, которые осчастливливают их босса.

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

Если вы заметили такое на вашем текущем месте работы, знайте, что в этом виновата иерархическая структура организации.

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

Далее описание того, как я это сделал.
Читать дальше →

ACE: самый функциональный редактор кода

Reading time8 min
Views90K


Здравствуйте, господа!

Я был достаточно приятно удивлен, когда узнал, что проект Ajax.org, именуемый Ace почти ни разу не упоминался на хабре. Ace — это веб-редактор исходного кода нового поколения. Он поддерживает уйму различных функций, среди которых: наличие режимов подсветки синтаксиса для более чем 60 языков программирования, поддержка сумашедшего количества цветовых схем из различных популярных IDE, функций, среди которых: широкая кастомизация, проверка синтаксиса для нескольких скриптовых языков. Так уж получилось, что эта статья скорее всего будет разносторонняя, т.е. содержать материал для веб-разработчиков и С++ программистов, которых я так успешно агитирую в сторону Qt. Итак, что вы можете прочитать в этой статье?

  • Быстрый старт с Ace. Где я могу использовать Ace? Почему?
  • Портирование Ace на Qt и обертка его API: How-To для создателей Qt5-based библиотек (таких как мой порт Ace — Novile

Сейчас позволю себе показать пару скриншотов example-приложения, которое использует мою библиотеку Novile:

Читать дальше →

Впечатления от работы с Play! Framework 2.1 + Java

Reading time13 min
Views62K
Шла четвёртая неделя тяжёлых боёв с Play! Framework 2.1 + Java. Победа неумолимо приближалась, но до полной капитуляции было далеко.
После обнадёживающих новостей про развитие Play! 2.1, например в LinkedIn, было решено попробовать его в одном новом проекте. Испытать его, так сказать, в деле. Что из этого получилось? Я бы сказал, что это была небольшая война между мной и Play! 2.1. Почему? Подробности под катом, а для нетерпеливых:

Краткий вывод

Для штурма надо было брать секретное оружие под кодовым названием Scala. Если встать лицом к лицу с Play! Framework 2.1 и крикнуть со всей силы: «Ты есть Scala-фреймворк!», то он испугается такой прямоты и скромно откроет свои двери в мир больших возможностей.
«Не знаете Scala?» — «Используйте Play 1.2».
«Хорошо разбираетесь в Scala?» — «Обязательно попробуйте Play 2.1. Но всё равно запаситесь терпением».

Подробные сводки с фронтов

Использование dynamic для быстрого создания Xml

Reading time2 min
Views5.6K
Не так давно разрабатывал функционал, формирующий по некоторому алгоритму разнообразный xml.
Логично, что при написании первого же теста возник традиционный вопрос ленивого программиста: как сэкономить себе силы, а читающим тесты нервы и быстро и наглядно представить, что же я хочу получить?
Поэтому придумал такой вот способ:
Читать дальше →

Information

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