• Оптимизация сборки мусора в высоконагруженном .NET сервисе

      Ежедневно в сервисе Pyrus работают десятки тысяч сотрудников из нескольких тысяч организаций по всему миру. Отзывчивость сервиса (скорость обработки запросов) мы считаем важным конкурентным преимуществом, так как она напрямую влияет на впечатление пользователей. Ключевой метрикой для нас является «процент медленных запросов». Изучая ее поведение, мы заметили, что раз в минуту на серверах приложений возникают паузы длиной около 1000 мс. В эти промежутки сервер не отвечает и возникает очередь из нескольких десятков запросов. О поиске причин и устранении узких мест, вызванных сборкой мусора в приложении, пойдет речь в этой статье.


      Читать дальше →
    • Async/await и механизм реализации в C# 5.0

        Подробно о преобразовании асинхронного кода, осуществляемого компилятором


        Механизм async реализован в компиляторе C# при поддержке со стороны библиотек базовых классов .NET. В саму исполняющую среду не пришлось вносить никаких изменений. Это означает, что ключевое слово await реализовано путем преобразования к виду, который мы могли бы написать и сами в предыдущих версиях C#. Для изучения генерируемого кода можно воспользоваться декомпилятором .NET Reflector или ILSpy. Это не только интересно, но и полезно для отладки, анализа производительности и других видов диагностики асинхронного кода.
        Подробности
        • +22
        • 62.3k
        • 7
      • Wi-Fi: неочевидные нюансы (на примере домашней сети)

          Сейчас многие покупают точки доступа 802.11n, но хороших скоростей достичь удается не всем. В этом посте поговорим о не очень очевидных мелких нюансах, которые могут ощутимо улучшить (или ухудшить) работу Wi-Fi. Всё описанное ниже применимо как к домашним Wi-Fi-роутерам со стандартными и продвинутыми (DD-WRT & Co.) прошивками, так и к корпоративным железкам и сетям. Поэтому, в качестве примера возьмем «домашнюю» тему, как более родную и близкую к телу. Ибо даже самые администые из админов и инженеристые из инженеров живут в многоквартирных домах (или поселках с достаточной плотностью соседей), и всем хочется быстрого и надежного Wi-Fi.
          [!!]: после замечаний касательно публикации первой части привожу текст целиком. Если вы читали первую часть — продолжайте отсюда.
          Читать дальше →
        • Небольшой набор установленных у меня программ для Windows Phone

            Позволю себе опубликовать список программ, которыми я пользуюсь уже довольно продолжительное время на Windows Phone. Я потратил довольно много времени, пока выбирал из десятка аналогичных программ те, которые больше соответсвуют гайдланам по дизайну, более стабильны и при этом достаточно функциональны. Порой у каждой из нескольких схожих программ есть своя «киллер фича», в этом случае приведены все.
            Конечно же, я мог упустить какие-то жемчужины, в этом случае буду очень рад увидеть ссылки в комментариях и влючить их в список.
            Читать дальше →
          • От любви до ненависти один push

               — Ты не знаешь откуда у меня появляются эти уведомления? — обернувшись спросила Наташа, протягивая свой desire? Я бросил взгляд на трей уведомлений, где лицезрел совершенно незнакомую мне иконку и текст пирблизительно следующего содержания «Лучшие игры онлайн! Бесплатно скачать», после чего текст уходил за отведенные ему 480 px и скрывал дальнейшую суть предложения.

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

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

              Читать дальше
            • Универсальные приложения для Windows и Windows Phone

                Дорогие хабравчане!

                Хотел бы попродробнее рассказать вам про одно из самых интересных на мой взгляд нововведений недавно прошедшей конференции Build 2014. Речь пойдет про одновременную разработку приложений для Windows 8 и Windows Phone, т.е. про универсальные приложения для платформы Windows.



                Платформа Майкрософт покрывает широкий спектр устройств — от смартфонов и планшетов до настольных компьютеров и игровой приставки Xbox One, и вполне естественно, что разработчику хочется минимизировать усилия при создании приложений под все форм-факторы. На конкурирующих платформах существует огромная разница между настольными и мобильными приложениями (поскольку они работают под управлением различных операционных систем), при этом мобильные приложения, разработанные для смартфона, могут работать на планшетных устройствах, что зачастую приводит к неудовлетворенности пользователя из-за не очень качественного пользовательского интерфейса.

                На данный момент Майкрософт вплотную подошел к тому, чтобы унифицировать все платформы (Windows Phone, Windows 8, Xbox One) с точки зрения API, и позволить программисту максимально использовать общий код при создании приложений, при этом сохранив возможность использования различного дизайна для различных форм-факторов. Подробнее про то, как это реализовано на текущий момент — читайте ниже.
                Читать дальше →
                • +25
                • 22.4k
                • 6
              • Выводим деньги с PayPal на карту: Инструкция для чайников

                • Tutorial
                Потребовалось мне вывести деньги с PayPal в России, только вот через посредников работать не хотелось.
                Пришлось получить карту Payoneer для вывода PayPal на эту карту. Сколько не искал, так и не нашел полноценной, пошаговой инструкции.
                Поэтому пишу сам.



                ВНИМАНИЕ! Все ниженаписанное является де-юре нарушением законодательства РФ и Украины, и вообще выдумкой автора и плодом работы в фотошопе. Применяя описанное на практике, вы действуете на свой страх и риск, и ни автор, на администрация сайта не несет ответственности за ваши действия.
                Читать дальше →
              • Живые тайлы (Live tiles) в Windows 8 (WinRT)

                  UI Windows 8 был существенно переработан и появился стартовый экран с тайлами (tiles – далее в скобках буду указывать используемые английские терминологии). Одним из основных преимуществ тайлов перед иконками – это возможность «оживления» (live tile) и предоставления важной для пользователя информации непосредственно на тайле. Кроме того, есть возможность создать вторичные тайлы (secondary tiles), которая позволяет переходить в приложение с определенными параметрами или на страницу вглубь приложения. В качестве примера можно привести погодное приложение отображающее погоду на основном тайле и погоду в выбранных городах на вторичных тайлах.

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

                  В этой статье рассмотрим следующие пункты.
                  подробнее
                  • +48
                  • 23.2k
                  • 6
                • Контракт Settings в WinRT (Windows 8)

                    Одним из основных контрактов доступных в чудо-панели Windows 8 является контракт Settings.
                    Активация панели настроек осуществляется соответствующей кнопкой «Settings» в чудо панели:
                    image

                    Пользователь всегда может зайти в эту панель для того чтобы управлять настройками приложения. (К примеру отключить возможность определения местоположения).
                    Довольно логично было бы не заставлять пользователя думать, где искать настройки самого приложения и разместить свои настройки приложения в эту же панель.

                    В этой статье мы рассмотрим две темы:.
                    Добавление поддержки контракта Settings
                    Добавление собственной панели настроек.

                    Подробности
                  • Разработка приложений под Windows 8: почему и как

                      imageПоследние 5-7 лет мы все наблюдаем явление, которое аналитики называют консьюмеризацией ИТ. Не вдаваясь в историю и подробности этого явления, характерного не только ИТ-отрасли, стоит отметить главное – именно «консьюмеры» сегодня создают львиную долю пресловутой добавленной стоимости – иногда своим большим числом, иногда – способностью и желанием переплачивать за новинки и вообще интересные идеи.
                      Операционная система Windows, получившая тотальное распространение на волне консьюмеризации середины девяностых годов, планомерно развивалась до середины «нулевых», когда персонализация вычислений получила новый мощный толчок – настоящую мобильность и доступность.
                      Читать дальше →
                    • Загрузка и инициализация JavaScript


                        С появлением мобильного веба наш интернет стал снова плохим, а устройства медленными. 3G, 4G, Wi-Fi… — они, конечно, где-то есть, но когда очень надо, то как правило скорость падает до околомодемной и получается, что наши мобильный устройства «каменного века» попадают в условия современного объема информации. Даже в центре города (правда на 15-м этаже) значок мобильного интернета может показывать волшебную букву Е, намекающую о том, что уж лучше не тратить нервы и потерпеть. Лучше уж использовать нативную версию какого-то веб-сервиса, чем каждый раз ждать, загружать по мегабайту, чтобы отправить короткое сообщение. Нативную версию веб-сервиса... Понятное дело маркетинг, гонка приложений. Однако, же пользователи выбирают нативные веб-приложения, которые работают быстрее, не качают кучу ресурсов, хотя им приходится периодически его обновлять.

                        Эта статья о том какими путями можно оптимизировать загрузку и инициализацию JavaScript.
                        Читать дальше →
                      • Навигация по сайту: задачи и инструменты


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

                          Читать дальше →
                        • Отслеживание взаимодействия с контентом при помощи Google Analytics

                          По умолчанию в Google Analytics отслеживать взаимодействие посетителей с контентом сайта довольно просто. Используя стандартный код отслеживания, вы сможете получать различную информацию такую как: время проведённое посетителем на странице (time on site), показатель отказов (bounce rate) и количество просмотров (pageviews).

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

                          Мы хотим получать более детальную информацию по каждому сообщению или статье. Читают ли люди комментарии или только сообщение, статью? Открывают ли они во вкладках несколько сообщений?
                          Каким способом лучше получать детальную информацию о том как посетители сайта взаимодействуют с каждой страницей?

                          Эта статья о том, как измерить степень взаимодействия с контентом при помощи кастомизированного кода отслеживания Google Analytics (далее GA).
                          Читать дальше →
                          • +25
                          • 6.5k
                          • 9
                        • DNS сервер BIND (теория)

                            Основная цель DNS — это отображение доменных имен в IP адреса и наоборот — IP в DNS. В статье я рассмотрю работу DNS сервера BIND (Berkeley Internet Name Domain, ранее: Berkeley Internet Name Daemon), как сАмого (не побоюсь этого слова) распространенного. BIND входит в состав любого дистрибутива UNIX. Основу BIND составляет демон named, который для своей работы использует порт UDP/53 и для некоторых запросов TCP/53.

                            Основные понятия Domain Name System


                            Исторически, до появления доменной системы имен роль инструмента разрешения символьных имен в IP выполнял файл /etc/hosts, который и в настоящее время играет далеко не последнюю роль в данном деле. Но с ростом количества хостов в глобальной сети, отслеживать и обслуживать базу имен на всех хостах стало нереально затруднительно. В результате придумали DNS, представляющую собой иерархическую, распределенную систему доменных зон. Давайте рассмотрим структуру Системы Доменных Имён на иллюстрации:
                            Читать дальше →
                          • Особенности подготовки инсталляции приложения для автоматической (unattended) установки в Windows OS

                              image
                              Перед системным администратором порой стоит задача установить или обновить приложения на множестве ПК. И часто проблема состоит не в выборе средства доставки и автоматической установки — их есть множество на любой вкус, от встроенных в Windows OS (Active Directory) до полноценных Configuration Management систем, таких как MS SCCM, Enteo NetInstall, LanDesk Management Suite, HP Application Deployment Manager, IBM Tivoli Provisioning Manager, ManageEngine Desktop Central и много других…
                              Читать дальше →
                            • Через какую дыру взломали сайт?

                                imageЕсли сайт взломан, мало удалить с него вирус и загруженный PHP Shell. Нужно еще найти причину, по которой произошел взлом, иначе через день-два на сайте снова будет под бодрую музыку развеваться красивый турецкий иностранный флаг. Чаще всего причина — украденный пароль от FTP, устаревшая версия CMS или плагина к ней, но как найти, что именно было использовано для проникновения?

                                Имея некоторый опыт в этой сфере (в среднем наша техподдержка занимается поиском причины взлома сайта раз в неделю), мы систематизировали накопившуюся информацию.

                                Итак, зачем вообще взламывают сайты? И что делать, если сайт взломан, как найти причину и защититься от последующих атак?
                                Читать дальше →