Pull to refresh

«Совершенный Ajax» – новый подход к построению настоящих клиент-серверных web-приложений

Website development *
«Совершенный Ajax» — новый подход к построению web-приложений, при котором web-сервер не генерирует ни строчки HTML-кода и взаимодействует с внешним миром только посредством web-служб; а клиентский интерфейс реализуется только на основе клиентских HTML, CSS, JavaScript.

Статья состоит из двух частей. В первой части — более живой и провокационной я постараюсь заинтересовать проблемой, рассказать о технологии «Совершенный Ajax» и показать ее применение на примере нашего проекта «Система Интерактивного Тестирования Знаний “Синтез”» (который имеет ряд интересных особенностей, таких, как использование серверного JavaScript на платформе Mozilla Rhino, прототипно-ориентированная ORM и поддержка SPARQL — языка запросов к Semantic Web).

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

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



Попробуйте угадать: к какой архитектуре относятся web-приложения?

К клиент-серверной говорите? Я ожидал, что Вы так ответите :-)

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

  • Клиент — отвечает за взаимодействие с пользователем [1].

Реализация бизнес-логики на сервере и взаимодействие с пользователем на клиенте четко разделены.

Преимущества клиент-серверной архитектуры очевидны; мы их все знаем:
  1. Бизнес-логика не смешивается с пользовательским интерфейсом.
  2. Можно реализовать несколько клиентов с разными пользовательскими интерфейсами: интерфейс командной строки, оконный Windows-интерфейс, Flash, web-интерфейс, мобильный интерфейс и т.д.
  3. Клиентский компьютер не требователен к ресурсам;
  4. И т.д.


Но, относятся ли web-приложения к клиент-серверной архитектуре? Web-сервер

Действительно, в web-приложениях есть сервер, отвечающий за бизнес логику приложения.

Но! За реализацию интерфейса отвечает не клиент, а тоже сервер. На сервере происходит обработка клиентской формы. Сервер генерирует HTML-код пользовательского интерфейса.

Браузер Клиент, т.е. браузер лишь визуализирует уже готовый HTML-код интерфейса. Это, фактически, то же самое, что прицепить к серверу монитор и объявить этот монитор клиентом…

Читать дальше →
Total votes 150: ↑115 and ↓35 +80
Views 9.2K
Comments 152

Почти-web-сервер своими руками

Perl *
В последнее время появилось несколько постов по привлечению внимания к определённым языкам программирования на примере написания некоего несложного «web-сервера». Раз уж пошла такая пьянка perl пока не затронули, то добавлю и свои пять копеек :)
Будем писать несложное серверное приложение, маскирующееся под http-сервер.
Читать дальше →
Total votes 38: ↑29 and ↓9 +20
Views 8.9K
Comments 46

Web-сервер Cherokee

Website development *
imageЗдравствуйте, хабрапользователи!

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

Читать дальше →
Total votes 72: ↑67 and ↓5 +62
Views 6.9K
Comments 58

Как превратить SIM-карту в Web-сервер

System administration *Network technologies *Cellular communication

Взаимодействие SIM-карты с внешним миром


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

В процессе очередных исканий в интернете наткнулся на интересную статью, описывающую интерфейсы общения мобильного телефона и SIM-карты. Не буду пересказывать статью целиком, лишь отмечу что исходя из нее, эволюция этих интерфейсов включает такие основные стадии: GSM Phase 1, GSM Phase 2 и спецификация JavaCard для специальных SIM-карт, способных выполнять сильно обрезанную Java Virtual Machine. Вконце статьи был следующий текст:

PS А для окончательного расширения горизонтов сознания поищите в Google-е слова «How to turn SIM card into Web Server» :)

Что я, собственно, и сделал. В результате получил занятный англоязычный текст, вольный перевод которого (по мере своих сил и возможностей) я и собираюсь привести ниже.
Читать дальше →
Total votes 107: ↑103 and ↓4 +99
Views 9K
Comments 25

Вышла версия 1.0 фреймворка Tornado

Python *
image

Популярный проект, по созданию неблокирующего web-сервера и «сопутствующего» фреймворка на языке Python, объявил о релизе версии 1.0.

Скачать новую версию можно тут: github.com/downloads/facebook/tornado/tornado-1.0.tar.gz

По сравнению с последним релизом версии 0.2, было добавлено множество новшеств,

— возможность запуска WSGI-приложений, под управлением сервера Tornado (например приложения Django и CherryPy)
— улучшенная производительность в MacOS X (с использованием kqueue) и экспериментальная поддержка win32
— переписан класс AsyncHTTPClient
— поддержка .mo файлов в модуле локализации
— поддержка пре-форкинга для запуска нескольких процессов Tornado
— поддержка SSL и gzip в HTTP-сервере

И многое другое.
Total votes 40: ↑36 and ↓4 +32
Views 1.4K
Comments 10

Расшарьте свой локальный веб-сервер в Интернете с помощью localtunnel

Website development *
Translation
Иногда во время тестирования веб-приложений может понадобится доступ к ним снаружи (то есть из публичного Интернета). Например некоторые API используют коллбеки.

В таком случае можно создать обратный SSH-туннель чтоб расшарить свой локальный сервер. Но для этого нужен доступ к публично доступной машине с SSH и нужными портами открытыми на фаерволе.

Но не всегда найдется такая машина, и влом покупать VPS или что-то в этом роде. В таком случае localtunnel — как раз то что надо.

localtunnel — инструмент специально предназначеный для того чтоб временно расшарить локальный веб-сервер в Интернете. Он работает как клиент к публичному сервису обратного туннелирования с открытыми исходниками.

Использовать его очень просто:

localtunnel 8080

Эта команда сделает локальный сервис на порту 8080 доступным на порту 80 на домене который выведет утилита.

Конечно перед использованием все-таки надо устанавить и настроить программу.
Установка для всех пользователей:

sudo gem install localtunnel

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

localtunnel -k ~/.ssh/id_rsa.pub 8080

Если у вас нет готовых ключей для SSH, их можно сгенерировать такой командой:

ssh-keygen -t rsa

Больше информации (на английском) и исходники – на Гитхабе.

UPD: Вышенаписанное справедливо для Unix-систем. В Windows наверное может работать через Cygwin.
Total votes 69: ↑55 and ↓14 +41
Views 12K
Comments 61

Мультидоменность в Apache без лишних хлопот на локальном хосте

Configuring Linux *
Интернет пестрит руководствами по настройке виртуальных хостов в Apache. Но, в большинстве случаев, создание такого поддомена представляется хлопотным делом.
По «стандартной» инструкции предлагается сделать следующее:
  1. Создать папку для сайта
  2. Создать конфигурационный файл с именем будущего домена
  3. Включить сайт специальной опцией
  4. Перезагрузить Apache
  5. Прописать наш домен в файле hosts

Некоторые пытаются оптимизировать данный процесс различными скриптами, но проблемы это, по сути, не решает.
Итак, попробуем добиться, чтобы процесс создания поддомена сводился лишь к созданию папки для сайта. Возможно ли это? Проверим…
Читать дальше →
Total votes 94: ↑81 and ↓13 +68
Views 45K
Comments 86

LilacServer – коробка для создания сайтов на Java

Website development *Java *
Sandbox
LilacServer - всё необходимое в одной коробке

В данной статье мне хотелось бы рассказать о новом программном продукте, который на днях стал доступным конечным пользователям. Автором этого программного продукта являюсь я, и поэтому мне вдвойне приятно поделиться с читателями информацией, которая наверняка кому-нибудь покажется интересной и полезной. Я работал над этим проектом 4 года (а то и больше, смотря от какого момента считать).

Итак, что же такое LilacServer?
Это веб-сервер, написанный на Java с использованием технологии Java NIO. Главным отличием его от прочих веб-серверов, созданных на Java (например, Tomcat или Resin), состоит в том, что это не только веб-сервер…
Читать дальше →
Total votes 46: ↑30 and ↓16 +14
Views 22K
Comments 42

Отказоустойчивая архитектура из двух веб-серверов на примере Debian Squeeze

*nix *Server Administration *
Sandbox
Мне поступила задача организовать отказоустойчивость веб-приложения из двух серверов. Веб-приложение включает в себя статические файлы и данные в СУБД MySQL.
Основное требование заказчика — веб-приложение должно быть всегда доступно и в случае сбоя в течении 5 минут сбой должен быть восстановлен.
2 сервера, территориально разнесенные в разных ЦОДах, должны удовлетворить данное требование.

Подробности
Total votes 61: ↑52 and ↓9 +43
Views 16K
Comments 82

Делаем систему видеонаблюдения

Working with video *
Sandbox

Описание системы


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

Система является аналогом видеоглазка, подключенного к телевизору, выполняющим архивацию видео и поддерживающим просмотр видео через локальную сеть (LAN или Wi-Fi). Основными элементами системы являются: IP-камера, коммутатор с поддержкой PoE, неттоп, Wi-Fi роутер. Программное обеспечение, установленное на неттопе, обеспечивает:
— просмотр видео с IP-камеры на экране телевизора, подключенного к неттопу через HDMI;
— архивацию видео с IP-камеры на жесткий диск неттопа (1 ч видео требует порядка 1,3 ГБ);
— просмотр видео с IP-камеры на устройствах, подключенных к неттопу, как к web-серверу (работает с любым броузером);
— просмотр видео с IP-камеры на устройствах, подключенных к неттопу, как к DLNA-серверу.

Структурная схема системы:
image

Читать дальше →
Total votes 38: ↑33 and ↓5 +28
Views 239K
Comments 61

Использование NAS-серверов в небольших компаниях и офисах

ADVANSERV corporate blog
При современном уровне развития ИТ даже младшие серверные платформы и процессоры бывают слишком избыточны для некоторых типов задач или небольших компаний. Чтобы как-то более разумно использовать вычислительные ресурсы сервера активно применяются технологии виртуализации, но о них мы поговорим в нашей следующей статье на примере ПО от компании Huawei. Сегодня же мы хотим обсудить вопрос использования NAS-серверов в малых компаниях и удалённых офисах. Конечно, этот тип устройств предоставляет более скромные возможности, нежели полноценные сервера, но их стоимость — вот один из важных аргументов.



Подробности
Total votes 7: ↑6 and ↓1 +5
Views 52K
Comments 9

Встраиваемый компактный веб-сервер Mongoose

Ajax *Programming *API *C *
В процессе разработки различных проектов на C/C++ часто возникает необходимость общаться с внешними системами или отдавать данные клиентам по HTTP. Примером может служить любой веб-сервис, а также любое устройство с веб-интерфейсом типа роутера, системы видеонаблюдения, и т.д.

Что в таком случае обычно делают? Правильно, идут протоптанной дорожкой — Apache/nginx + PHP. А дальше начинается ад, потому что:

1. Все это нужно устанавливать и настраивать.
2. Все это жрет приличное количество ресурсов.
3. Из PHP как-то надо получать данные от разрабатываемой системы. Повезет если для этого достаточно просто залезть в СУБД.

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

1. Меньше внешних зависимостей, а значит проще установка и настройка.
2. Теоретически меньшее потребление ресурсов.
3. Можно отдавать данные прямо из вашего продукта, без посредников.
Но при этом мы не желаем заморачиваться всякими тонкостями обработки HTTP-соединений, парсинга и т.п.

Такие решения есть. И в этой статье я хотел бы поверхностно познакомить вас с одним из них – встраиваемый сервер Mongoose (не путать с MongoDB).
Читать дальше →
Total votes 16: ↑14 and ↓2 +12
Views 20K
Comments 25

Цикл статей: построение защищённого NAS, либо домашнего мини-сервера

System Analysis and Design *IT Infrastructure **nix *Data storages *DIY
Recovery mode


Статьи цикла:


  1. Обзор материалов и литературы по NAS. По предложениям пользователей ссылки на материалы будут сведены в отдельную статью.
  2. Выбор железа. Описан один из вариантов выбора железа и дан краткий обзор рынка домашних и офисных NAS систем.
  3. Установка ОС, на которой будет строиться NAS. В отдельной статье описано дополнение, позволяющее отказаться ото всех файловых систем, кроме ZFS.
  4. Проектирование поддерживающей инфраструктуры, которая будет лежать в основе всех сервисов NAS.
  5. Реализация поддерживающей инфраструктуры.
  6. Механизм аварийной удалённой разблокировки. Требуется для того, чтобы разблокировать систему, не имея к ней физического доступа.
  7. Повышение защищённости NAS. Исправление ошибок, допущенных в предыдущих статьях и описание Hardening процесса.
  8. Система контроля версий на базе Git. Установка Gitlab в контейнере.
  9. Система резервного копирования. От регламента до установки ПО, где в качестве примера используется UrBackup.
  10. Персональное облако. Обеспечивает хранение персональных файлов пользователя, обмен файлами между пользователями, а также интеграцию различных сервисов между собой.
  11. Сквозная аутентификация контейнеров.
  12. Управление файлами.
  13. Библиотека.
  14. Мультимедийная система 1: музыка.
  15. Мультимедийная система 2: медиа сервер.
  16. Фронтенд. Интерфейс, позволяющий быстро обращаться к сервисам.
  17. Заметки про управление контейнерами.
Читать дальше →
Total votes 37: ↑33 and ↓4 +29
Views 50K
Comments 141

Мониторинг ИБП рабочих станций в Windows с Network UPS Tools

Open source *System administration *Programming *
Когда возникает задача мониторить бесперебойники у рабочих станций? Запищал – заменил, конец. Чинить ИБП – дело неблагодарное, менять аккумуляторы – не все хотят возиться (или даже моветон).

Так думал и я, особенно после череды ИБП с отказавшей электроникой. Ситуацию усугублял софт от производителей. Он, как бы это помягче выразиться, барахло. Причем у всех – APC, Ippon, Powercom, TrippLite. Что серверный, что для рабочих станций. Пробовать платные версии после опыта с бесплатными – желания не возникло. А совсем весело, когда ИБП от разных производителей.

Но мониторить всё же надо. Плюсы очевидны: 1) можно поменять ИБП ДО того, как он издаст прощальный писк; 2) можно сразу увидеть, где сдохла батарея, а где электроника.
Минус же прост, как всегда: стоимость решения, в деньгах или человеко-часах.

Вот эту проблему и будем решать.
Читать дальше →
Total votes 20: ↑20 and ↓0 +20
Views 25K
Comments 27

Выбор режима работы web-сервера на личном опыте

Nginx *Server optimization *Apache *
Sandbox
Эта статья будет полезна тем людям, у которых уже есть свой сайт, или которые планируют его открыть. Особенно интересна статья будет амбициозно настроенным вебмастерам, которые чувствуют, что звездный час их проекта не за горами и хотят подготовиться к наплыву посетителей страницы.

Даже те, кто пока только мечтают о тысячах пользователей на своём сайте, наверняка задавались вопросом: “А сколько же пользователей мой сайт выдержит, если они зайдут одновременно?” Сразу вспоминается известное выражение “Хабраэффект” – явление отказа сайта, который оказался не готов к многочисленным переходам на него после появления в интернете ссылки.
Читать дальше →
Total votes 26: ↑16 and ↓10 +6
Views 20K
Comments 23

Мониторинг ИБП. Часть вторая – автоматизируем аналитику

Open source *System administration *Programming *Energy and batteries
Некоторое время назад я наваял систему для оценки жизнеспособности офисных UPS. Оценка основана на долгосрочном мониторинге. По результатам использования систему допилил и узнал много интересного, о чём и расскажу – добро пожаловать под кат.
Читать дальше →
Total votes 10: ↑10 and ↓0 +10
Views 11K
Comments 23

5 способов сделать Python-сервер на Raspberry Pi. Часть 1

Python *Programming *Gadgets DIY Electronics for beginners
Tutorial
Привет, Хабр.

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



Допустим, у нас уже есть супер Python-программа, делающая что-то очень важное, от мигания светодиодом до управления «умным домом» или хотя бы кормушкой для кота. Я покажу разные способы, от простого к сложному, как сделать web-доступ к такому приложению, добавив немного кода.

Статья расчитана для начинающих, профи вряд ли найдут здесь что-то кардинально новое, ну а новичкам в Linux надеюсь, будет полезно. Для тех кому интересно, продолжение под катом.
Читать дальше →
Total votes 45: ↑39 and ↓6 +33
Views 49K
Comments 43

Java 18. Что нового добавили, и почему вам это пригодится

Programming *Java *

Выход Java 18 назначен на 22 марта 2022 года, ждать осталось недолго. Релиз уже несколько дней находится во второй фазе стабилизации, а значит, список фич уже финализирован, а значит настало время обратить на них наше внимание.

Сейчас у нас есть возможность попробовать новый функционал и понять, насколько он полезен. А пробовать есть что, несмотря на то, что это не LTS релиз!

В этой статье мы рассмотрим новые JEP и объясним, что они делают, и для чего они нужны. 

Хочу попробовать!
Total votes 48: ↑48 and ↓0 +48
Views 25K
Comments 33