• Основы архитектуры IIS, или запросопровод для ASP.NET

    • Tutorial



    В прошлом году мне пришлось отсобеседовать около 10-15 кандидатов на должность веб-программиста на ASP.NET средней квалификации. В качестве вопросов «на засыпку», или «со звёздочкой», я просил рассказать, что происходит с HTTP-запросом от момента его поступления на 80-й порт сервера до передачи управления коду aspx-страницы. Статистика была удручающей: ни один из кандидатов не смог выдать хоть что-нибудь внятное. И этому есть своё объяснение: ни в MSDN с technet, ни на специализированном ресурсе iis.net, ни в книгах a-la «ASP.NET для профессионалов», ни в блогах данной теме не уделяется должного внимания – информацию приходится собирать чуть ли не по крупицам. Я даже знаю людей, которые решили написать свой собственный веб-сервер (Игорь, Георгий, привет!), чтобы не разбираться в работе IIS. Единственная толковая статья – «Introduction to IIS Architectures» Риган Темплин (Reagan Templin). Но и она остаётся на периферии интересов аспнетчиков.

    Хотя мне лично уже не так интересны чисто технические вопросы, я решил собрать в кучу свой накопленный опыт, раскопать на просторах Сети любопытные детали и передать сие сакральное знание массам, пока оно ещё не устарело. Сразу оговорюсь, что статья ориентирована в большей степени на IIS 7.x, иногда будут ответвления про 6-ку. С 8-й версией в работе не сталкивался, поэтому решил обойти её в этой статье стороной. Но, уверен, читатель без труда разберётся с восьмёркой, освоив изложенный ниже материал.
    Познать...
    • +47
    • 180k
    • 9
  • Проблемы CSS. Часть 2

    • Translation
    Продолжение перевода статьи «Проблемы CSS. Часть 1».

    Когда использовать width / height равный 100%?


    Height: 100%

    Пожалуй, начнем с того, что попроще. Когда использовать height: 100%? На самом же деле, вопрос часто звучит немного по-другому: «Как мне сделать так, чтобы моя страница заняла всю высоту экрана?». Ведь правда?

    Для ответа на него нужно понять, что height: 100% равен высоте родительского элемента. Это не магическое «высота всего окна». Так что, если вы захотите, чтобы ваш элемент занял все 100% от высоты окна, то установить height: 100% будет недостаточно.

    Почему? А потому, что родителем вашего контейнера является элемент body, а у него свойство height установлено в auto по умолчанию; а значит — его высота равна высоте контента. Конечно, вы можете попробовать добавить height: 100% к body, но этого тоже будет недостаточно.

    Почему? А все потому же, родителем элемента body является элемент html, у которого также свойство height равно auto и он также растягивается под размер контента. А вот теперь, если добавить height: 100% и к элементу html, то все заработает.

    Стало понятнее? Корневой элемент html на самом деле не самый верхней уровень на странице — им является «viewport». Для простоты, будем считать, что это окно браузера. Так вот, если установить height: 100% элементу html, то это то же самое, что сказать — стань такой же высоты, как окно браузера.
    Читать дальше →
  • Как HTTPS обеспечивает безопасность соединения: что должен знать каждый Web-разработчик

    • Translation


    Как же все-таки работает HTTPS? Это вопрос, над которым я бился несколько дней в своем рабочем проекте.

    Будучи Web-разработчиком, я понимал, что использование HTTPS для защиты пользовательских данных – это очень и очень хорошая идея, но у меня никогда не было кристального понимания, как HTTPS на самом деле устроен.

    Как данные защищаются? Как клиент и сервер могут установить безопасное соединение, если кто-то уже прослушивает их канал? Что такое сертификат безопасности и почему я должен кому-то платить, чтобы получить его?
    Читать дальше →
  • 27+ ресурсов для онлайн-обучения


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

      Статья содержит перечень ресурсов для онлайн-обучения, представляющих интерес преимущественно для программистов.

      Читать дальше →
    • 5 «хаков» для уменьшения накладных расходов при сборке мусора

      • Translation

      В этом посте будут рассмотрены пять путей повышения эффективности кода, помогающие сборщику мусора проводить меньше времени за выделением и освобождением памяти. Долгая процедура сборки мусора может привести к явлению, известному как «Stop the world».

      Общие сведения


      Сборщик мусора (Garbage Collector, GC) существует для обработки большого количества выделений памяти под короткоживущие объекты (например, объекты выделенные в процессе рендеринга веб-страницы, устаревают сразу как только страница показана).

      GC в этом случае использует так называемое «молодое поколение» («young generation») — сегмент кучи, где размещаются новые объекты. Каждый объект имеет поле «возраст» («age», находится в заголовке объекта), который определяет сколько сборок мусора он пережил. Как только достигнут определенный возраст, объект копируется в другую область кучи, называемую «старым» («old») поколением.

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

      Ниже определены пять путей, которые можно использовать в повседневной разработке для повышения эффективности работы с памятью, при этом не особо тратят наше время и не снижают читаемость кода.
      Читать дальше →
    • Базы данных в онлайн-играх. От Аллодов Онлайн до Skyforge

        Когда говорят про разработку игр, обычно речь идет о шейдерах, графике, AI и т.д. Крайне редко затрагивается серверная часть игровых проектов, а ещё реже — базы данных. Исправим это досадное недоразумение: сегодня я расскажу о нашем опыте работы с базами данных, который мы приобрели в ходе разработки Аллодов Онлайн и нашего нового проекта Skyforge. Обе эти игры — клиентские MMORPG. В первой зарегистрировано несколько миллионов игроков. Вторая разрабатывается студией в строжайшей секретности в недрах Allods Team.

        Меня зовут Андрей Фролов. Я ведущий программист Allods Team и работаю в команде сервера. Мой опыт разработки — почти 10 лет, но в игры я попал только в октябре 2009. В коллективе я уже больше трёх лет, с марта 2010. Начинал работу на Аллодах Онлайн, а сейчас на Skyforge. Занимаюсь всем, что так или иначе связано с сервером Skyforge и базами данных. В этой статье я расскажу о базах данных в онлайн-играх на примере Аллодов и Skyforge.



        Читать дальше →
      • Сайты для онлайн-обучения веб-разработчиков и веб-дизайнеров

          В заметке собраны сайты с обучающими материалами для веб-дизайнеров и веб-разработчиков. Старался не повторяться с постом 27+ ресурсов для онлайн-обучения хабраюзера nicolausYes.

          Academic Earth


          Множество бесплатных лекций, в том числе от известных университетов (Гарвард, MIT, Стенфорд и др.).

          Читать дальше →
        • REST vs SOAP. Часть 2. Как проще и эффективнее организовать общение платформ?

            После написания первой части статьи аппетит разыгрался и захотелось продолжить изучение, на этот раз больше с уклом в практическую часть. Весь сыр-бор у нас разгорелся из-за необходимости взаимодействии приложений и платформ, поэтому именно этому в основном и будет посвящена статья.
            Читать дальше →
          • REST vs SOAP. Часть 1. Почувствуйте разницу

            Некоторое время назад я гуглил интернет по поводу “REST vs SOAP”, прочитал пару статей и вроде бы все понял, но не почувствовал от этого никакого удовлетворения. Что-то было не так, то ли я не почувствовал основную идею, то ли просто читал, одновременно слушая новый музон и думая о новой фиче в проекте. Как появилось время, решил восполнить этот пробел, заодно написав полезную статью по этому поводу.
            Читать дальше →
          • Руткиты: проблемы безопасности и тенденции развития

              В настоящее время очевидно смещение вектора компьютерных атак от массового заражения к целевым, точечным атакам. Как сказал Е. Касперский: «Девяностые были десятилетием киберхулиганов, двухтысячные были десятилетием киберпреступников, сейчас наступила эра кибервойн и кибертеррора». Иллюстрацией этому являются всем известные примеры: Stuxnet, Duqu, Flamer, Gauss, которые многие антивирусные компании причисляют к кибероружию.



              Основные тенденции в компьютерной безопасности


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

              Читать дальше →
            • Курс лекций «Стартап». Питер Тиль. Стенфорд 2012. Занятие 16

              • Translation
              • Tutorial

              Весной 2012 г., Питер Тиль (Peter Thiel), один из основателей PayPal и первый инвестор FaceBook, провел курс в Стенфорде — «Стартап». Перед началом Тиль заявил: «Если я сделаю свою работу правильно, это будет последний предмет, который вам придется изучать».

              Один из студентов лекции записывал и выложил транскипт. В данном хабратопике degorov, переводит шестнадцатое занятие, редактор astropilot.

              Занятие 1: Вызов будущего
              Занятие 2: Снова как в 1999?
              Занятие 3: Системы ценностей
              Занятие 4: Преимущество последнего хода
              Занятие 5: Механика мафии
              Занятие 6: Закон Тиля
              Занятие 7: Следуйте за деньгами
              Занятие 8: Презентация идеи (питч)
              Занятие 9: Все готово, а придут ли они?
              Занятие 10: После Web 2.0
              Занятие 11: Секреты
              Занятие 12: Война и мир
              Занятие 13: Вы — не лотерейный билет
              Занятие 14: Экология как мировоззрение
              Занятие 15: Назад в будущее
              Занятие 16: Разбираясь в себе
              Занятие 17: Глубокие мысли
              Занятие 18: Основатель — жертва или бог
              Занятие 19: Стагнация или сингулярность?
              Читать дальше →
              • +43
              • 24.9k
              • 6
            • Работа с сетью в Android: трафик, безопасность и батарейка

                На сегодняшний день в Google Play насчитывается более 800 тысяч приложений. Многие из них реализованы на основе клиент-серверного общения. При разработке таких приложений нужно учесть три основных момента, о которых пойдет речь в этой статье.

                Читать дальше →
              • Архитектура высоконагруженных приложений. Масштабирование распределенных систем. Часть вторая

                  На этой неделе мы выкладывали первую часть расшифрованного подкаста. Сейчас подготовили вторую часть.

                  О чем мы говорим во второй части подкаста:
                  • Горизонтальное масштабирование проекта

                  — когда стоит использовать облачные сервисы, а когда физический хостинг;
                  — «красивость решения» против «грязного, но производительного» кода. ORM и всякие подобные штуки;
                  — мультиязычность и мультизонность проекта, проблемы и решения.

                  • Асинхронные задачи. Очереди.

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

                  Читать расшифровку подкаста
                • ASP.NET MVC. Урок 0. Вступление

                  • Tutorial
                  Я пишу сайты на asp.net mvc. В этих 16 главах я хочу рассказать, как я это делаю. Это некий учебник-справочник всех тех знаний, которые я накопил в течение трех лет.

                  Почему именно asp.net mvc

                  ASP.NET MVC я люблю потому что:
                  • Это .net. Я знаю .net и С#.
                  • Это компилируемый код.
                  • Это не ASP.NET WebForms, я работаю с html-кодом.
                  • Используется MVC-паттерн.
                  • Visual Studio – самое популярное средство разработки, в котором есть IntelliSense.
                  • Отличные инструменты отладки.


                  Читать дальше →
                • Книжная полка: Java

                    По мотивам «JAVA → Java по-русски. Часть первая: Книги» habrahabr.ru/blogs/java/66568


                    Добрый день, уважаемые хабровчане!
                    В предыдущем обзоре Java книг, проведенном пользователем Scala, было рассказано о «практических» книгах, вышедших на рынок в последние три года. Я же хочу рассказать об этих и других книгах с несколько иного ракурса: попытаться выделить ценность информации книг.
                    Я не любитель читать с монитора, и предпочитаю книги покупать в бумажном варианте. Чтобы сделать осознанный выбор, следует отдавать себе отчет в том, что книга несет некие фундаментальные знания, но никак не сборник «последние фишки». Также в данной статье я хочу упомянуть о других известнейших трудах, не касающихся Java напрямую. Посмотрим, что лучше всего выбрать для обучения языку?
                    Читать дальше →
                  • Типичные случаи утечки памяти в Java

                    Большинству разработчиков известно, что сборщик мусора в Java не является универсальным механизмом, позволяющим программисту полностью забыть о правилах использования памяти и о том, в каких случаях осуществляется его работа. Ниже описаны типичные случаи утечки памяти в java-приложениях, встречающиеся повсеместно.
                    Итак, о чём должен помнить каждый java-программист.
                    Читать дальше →
                  • Высокопроизводительный GWT. Часть 1

                      image
                      Данный пост является началом серии статей про оптимизацию и улучшение производительности GWT-приложений. Поскольку материала у меня накопилось достаточно много, решил разбить его на 2-3 части.
                      Приступим к описанию того, что нас ждёт в первой статье.
                      Читать дальше →
                      • +34
                      • 10.5k
                      • 2
                    • Дайджест интересных материалов из мира веб-разработки и IT за последнюю неделю №62 (15 — 23 июня 2013)

                        Предлагаем вашему вниманию очередную подборку с ссылками на новости, интересные материалы и полезные ресурсы.


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