• Раздача статического контента — счет на милисекунды

      image

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

      И вот мы решили ускорять то, что и так работает быстро и, заодно, поделиться опытом того, что получилось в итоге. Конечно же я расскажу о граблях, о том где не надо HTTP/2, о том почему мы покупаем 7,6Tb NVMe SSD вместо 8x1Tb SATA SSD и много другой узкоспециализированной информации.

      Давайте сразу договоримся что хранение и раздача контента это 2 разные задачи и говорить мы будем только про раздачу (продвинутый кеш)

      Начнем с железа…
      Читать дальше →
    • Fedora 25. Новая надежда: Wayland, Storaged, поддержка Raspberry Pi…

        Fedora 25

        22 ноября Fedora опять зарелизилась. 25-й релиз, на мой взгляд, получился очень удачный:

        • Замена старого сервера X.Org или X11 на Wayland. Поддержка сеанса на базе X11 сохранена в качестве опции
        • UDisks2 заменён на Storaged, предоставляющий унифицированный D-Bus API для управления LVM2, iSCSI, Btrfs, BCache, LSM и ZRam
        • Поддержка устройств Raspberry Pi 2 и 3

        Читать дальше →
      • Node.js 7.0.0 зарелизился. Встречайте async/await без babel

          File:Node.js logo 2015.svg

          7-я нода зарелизилась, ура! Что нового:

          • Движок V8 обновлён до версии 5.4.500.36, в которой обеспечена поддержка 98% возможностей JavaScript, определённых в спецификации ES2015 (ES6) и, частично, будущим стандартом ES2017.
          • Отмечается новый парсер URL, соответствующий стандарту оформления URL, подготовленному сообществом WHATWG.
          • Доработана работа с Buffer, Child Process, Cluster, файловой системой, промисами
          • Полный список изминений

          Для меня это долгожданный релиз, так как появилась возможность изпользовать конструкцию async/await без транспайлера babel. Включается это все ключом --harmony.

          Теперь можно без babel так:
          Читать дальше →
        • Пишем микросервис на KoaJS 2 в стиле ES2017. Часть II: Минималистичный REST

            Koa v2

            Это продожение статьи Пишем микросервис на KoaJS 2 в стиле ES2017. Часть I: Такая разная ассинхронность. Постараюсь угодить начинающему разработчику, который хочет расстаться с express, но не знает как. Кода будет много, текста мало — я ленивый но отзывчивый.
            Читать дальше →
          • Пишем микросервис на KoaJS 2 в стиле ES2017. Часть I: Такая разная ассинхронность

              Koa v2

              У Вас никогда не возникало желания переписать все с чистого листа, «забить» на совместимость и сделать все «по уму»? Скорее всего KoaJS создавался именно так. Этот фреймворк уже несколько лет разрабатывает команда Express. Экспресовцы про эти 2 фреймворка пишут так: Philosophically, Koa aims to «fix and replace node», whereas Express «augments node» [С филосовской точки зрения Koa стремится «пофиксить и заменить ноду» в то время как Express «расширяет ноду»].

              Koa не обременен поддержкой legacy-кода, с первой строчки вы погружаетесь в мир современного ES6 (ES2015), а в версии 2 уже есть конструкции из будущего стандарта ES2017. В моей компании этот фреймворк в продакшене уже 2 года, один из проектов (AUTO.RIA) работает на нагрузке полмиллиона посетителей в день. Несмотря на свой уклон в сторону современных/экспериментальных стандартов фреймворк работает стабильнее Express и многих других фреймворков с CallBack-style подходом. Это обусловлено не самим фреймворком, а современными конструкциями JS, которые в нем применяются.

              В этой статье я хочу поделиться своим опытом разработки на koa. В первой части будет описан сам фреймворк и немного теории по организации кода на нем, во второй мы создадим небольшой рест-сервис на koa2 и обойдем все грабли, на которые я уже наступил.
              Читать дальше →
            • Нейронные сети на Javascript

                image
                Идея для написания этой статьи возникла прошлым летом, когда я слушал доклад на конференции BigData по нейронным сетям. Лектор «посыпал» слушателей непривычными словечками «нейрон», «обучающая выборка», «тренировать модель»… «Ничего не понял — пора в менеджеры», — подумал я. Но недавно тема нейронных сетей все же коснулась моей работы и я решил на простом примере показать, как использовать этот инструмент на языке JavaScript.

                Мы создадим нейронную сеть, с помощью которой будем распознавать ручное написание цифры от 0 до 9. Рабочий пример займет несколько строк. Код будет понятен даже тем программистам, которые не имели дело с нейронными сетями ранее. Как это все работает, можно будет посмотреть прямо в браузере.
                Читать дальше →
              • Релиз Fedora 24. Гонка за версиями

                  Fedora 24
                  Вчера, 21 июня, вышла в свет новая версия Fedora. Что нового в Fedora можете почитать на oppenet. Я уже полтора месяца пользуюсь этой OS и хотел поделиться с хабралюдьми о том стоит ли переходить и вообще стоит ли так часто релизить.
                  Читать дальше →
                • Koajs 2.0: новое поколение фреймворка нового поколения

                    KoaJS logo«Next generation web framework for node.js» — так написано в документации к версии 1.0. Звучит неплохо, я к этому добавлю что 2 года назад после внедрения koa на одном из проектов у наших программистов появился термин “псевдо-синхронный код” (Это когда код выглядит как синхронный но на самом деле исполняется асинхронно). Что за бред Как это работает я расскажу под катом.
                    Читать дальше →
                  • Повышаем отказоустойчивость системы на nodejs

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

                      Это не исчерпывающее руководство к действию, просто я делюсь своим опытом, если вы профи в nodejs можете дописать в коментах свои рекомендации, на которые я с удовольствием сошлюсь в статье.
                      Читать дальше →
                    • Fedora 22 — все тренды в одной сборке


                        26 мая со станка RedHat сошла очередная Fedora.

                        Из нового, на что стоит обратить внимание


                        • Переход на новый пакетный менеджер dnf (вместо yum). Он стал заметно «легче», использует меньше памяти и так же хорош как apt для Ubuntu
                        • Ядро Linux 4.0 c мегафичей Live Kernel Patching и набора компиляторов GCC 5.1.
                        • Виртуализация GNOME Boxes
                        • Серверная сборка «по умолчанию» использует файловую систему XFS
                        • Рабочий стол GNOME 3.16
                        • наработки по снижению энергопотребления
                        • Усовершенствован GNOME Terminal (возможность вывода уведомлений при завершении длительно работающих заданий, таких как компиляция, что позволит не отвлекаться, постоянно заглядывая в терминал для оценки статуса завершения работы)
                        • Спин Fedora KDE по умолчанию переведён на окружение KDE Plasma 5. Спин Fedora Xfce обновлён до Xfce 4.12
                        • Обновлён Cockpit, web-интерфейс для настройки и мониторинга одного или нескольких серверов
                        • Есть образ Fedora Atomic Host и Fedora Cloud для использования с инструментарием Vagrant, который может использоваться для быстрого развёртывания виртуальных окружений в системах виртуализации на базе KVM и VirtualBox.
                        • Обновлены образы, которые можно использовать в качестве основы для запуска приложений в контейнерах Dockеr.
                        • Инструмент непрерывной интеграции Tunir

                        Подробнее о релизе Fedora 22 на русском
                        Читать дальше →
                      • io.js объединяется с NodeJS

                          +

                          Несколько дней назад состоялось заседание технического комитета проекта io.js, на котором принято решение о воссоединении с Node.js и дальнейшем совместном развитии под эгидой организации Node Foundation.
                          Краткое содержание предыдущих серий
                        • Релиз MooTools 1.5

                            image

                            Mootools долгое время был неотъемлемой составляющей клиентского JavaScript на Habrahabr. Печально было наблюдать за угасанием творения Valerio Proietti. С мая 2013 года записи на блоге практически не добавлялись…

                            Но сегодня утром команда mootools выдала очередной релиз и добавила нотки оптимизма в сердца ценителей этого фреймворка.
                            Что же нового в mootools 1.5
                          • Ускоряем раздачу фоток


                              С проблемой медленной отдачи статического контента рано или поздно сталкивается каждый сисадмин.

                              Проявляется это приблизительно так: иногда 3Kb картинка грузится так, как будто бы она весит 3Mb, на ровном месте начинают «залипать» (отдаваться очень медленно) css-ы и JavaScript-ы. Вы нажимаете ctrl + reload — и уже, вроде, проблемы нет, потом спустя всего несколько минут все повторяется опять.

                              Не всегда истинная причина «тормозов» очевидна и мы косо поглядываем то на nginx, то на хостера, то на «забитый» канал, то на «тормозной» или «глючный» браузер :)

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

                              В этой статье я предложу Вам свое решение этой проблемы, основанное на практическом опыте использования SSD дисков совместно с web-сервером nginx.
                              Читать дальше →
                            • Кеширование блоков с помощью nginx

                                nginx + SSIМногим разработчикам знакома ситуация когда кешировать страницы сайта, скажем, на 5-10 минут нельзя всего из-за одного небольшого блочка, актуальность которого нужно поддерживать если не в реальном времени, то с временем «старения» не больше 5-10 секунд. При этом посещаемость сайта продолжает расти, растет время генерации страниц и c этим надо что-то делать…
                                • Вариант решения 1: Подкрутить то, до чего не доходили руки последнее полгода. Все Вас поймут и передвинут сроки на другие задачи. Вы будете в роли «Супермена» один спасать сайт от непомерной нагрузки, решая проблему «бесплатно» (без доп. вливаний в оборудование). Вам может пригодиться статья «Тюнинг nginx».
                                   
                                • Вариант решения 2: Улучшить техническую базу (докупить мозгов на сервер, улучшить дисковую систему, поставить под БД отдельный сервер). В принципе проблема не решена, а скорее отложена. Теперь у Вас есть время «окопаться» и подготовиться ко второй волне наплыва нагрузки, она будет больше и накроет сильнее.
                                   
                                • Вариант решения 3: Ваш вариант, о котором я, вероятно, узнаю из комментариев.
                                   
                                Позвольте предложить и мне проверенное и относительно простое решение на базе одной из старейших технологий в Web-разработке.
                                Читать дальше →
                              • Управляем Flash-объектом на Javascript

                                  Управляем Flash-объектом на JavaScript

                                  Возможности JavaScript в 95% случаев позволяют решить любую задачу для Web 2.0. Но иногда хочется чуточку больше, чуточку красивее, возможно, чуточку быстрее. В этой статье на примерах я хочу показать, как восполнить этих 5% недостающего функционала средствами Flash.
                                  Эта статья будет полезна разработчикам, которые пишут в основном на JavaScript и имеют минимальные знания ActionScript 3.

                                  Для вдохновения


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

                                  Этот пример интересен тем, что дизайн и управление контролируется средствами CSS и JavaScript. JavaScript при необходимости использует необходимый функционал из Flash.

                                  Если Вам понравилось, идем дальше: мы рассмотрим как это работает на более простом примере.
                                  Читать дальше →
                                • Тюнинг nginx

                                    Статья написана по материалам моего доклада на CodeCamp 2009.

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

                                    У любого проекта всегда есть что оптимизировать: можно почитать советы по оптимизации на webo.in, установить eaccelerator, memcache, проиндексировать поисковые поля в базе данных. Я предполагаю, что все это уже проделано, а сайт по прежнему тормозит.

                                    Пришло время оптимизировать nginx...

                                    Читать дальше →
                                  • NGINX научился кешировать проксированные запросы

                                      Почти год назад на RIT 2008 Игорем Сысоевым была анонсирована поддержка кеширования в будущих версиях nginx. И вот сегодня вышла новая бета nginx 0.7.44, в которой появилось это долгожданное кеширование

                                      Этот функционал оценят в первую очередь разработчики высоконагруженных систем, для которых операция установления сетевого соединения с backend «дороже» обычной дисковой операции (с точки зрения затраты ресурсов)

                                      На RIT 2008 автор отмечал, что большим преимуществом nginx перед демоном squid, который тоже можно использовать как reverse proxy, является отсутствие стартового торможения, когда squid начинает сканировать директорию с кешем, что в народе называется «давать сквида».

                                      Хочется отметить, что некого подобия кеширования можно было добиться с помощью использования директив proxy_store + try_files, но управлять таким кешем было достаточно сложно и затратно.

                                      Очень интересно было бы услышать отзывы от пользовалелей замонтировавших кеш на SSD-диск.
                                    • Русская документация по mootools 1.2

                                        Русская документация по MooTools По данным летнего опроса на habrahabr, на mootools програмируют около 8% разработчиков. Понятно, что чем популярнее фреймворк, тем быстрее и качественнее он развивается, тем больше плагинов под него появляется в сети. Можем ли мы как либо влиять на эту цифру? Я думаю, можем!

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

                                        Разработчики MooTools неплохо поработали над документацией, но в сети она доступна только на английском. Ну вот я и решил исправить ситуацию. Сейчас полностью переведена только секция Core, остальные секции пока что находятся в процессе перевода. Вот я и решил обратиться к Вам, уважаемые разработчики, принять участие в переводе (кого заинтересовало мое предложение пишите мне на oleg точка cherniy at Гмейл.ком).

                                        Полезные ссылки:
                                      • Закладки для демонстрации исходников с подсветкой на вашей странице


                                          Вы нашли немного времени для создания полезной программы/плагина/виджета/css-файла/html-кода, но на оформление (как всегда) времени осталось минимум?

                                          Тогда предлагаю воспользоваться моим плагином, c помощью которого вы потратите минимум времени на презентабельную демонстрацию ваших исходников прямо у себя на Web-странице. Вот как это выглядит.

                                          Поддерживается C-подобный синтаксис, Java, Python, Bash, SQL, HTML, XML, CSS, Javascript и Makefiles. С помощью расширений можно включить поддержку LISP, Haskell, LUA, OCAML, SML, F#, Visual Basic, SQL, Protocol Buffers и WikiText.

                                          Я не писал все ”с нуля”, для подсветки использовал библиотеку Prettify, которую успешно можно подключать как самостоятельный модуль (она написана на чистом JavaScript).

                                          Полезные ссылки




                                          UPD: PHP тоже подсвечивает, пример тут (последняя закладка)
                                          • +24
                                          • 1,5k
                                          • 8