Monthly Archives: Апрель 2017

Примеры демонстрирующие возможности Rust

Объектно-ориентированный анализ — это легко

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

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

Исправление ошибки 413 при работе git по http

Столкнулся с маленькой проблемой : невозможно добавить в новый репозитарий git файлы проекта.

Свежеустановленный ScmManager 1.51 под стандартным tomcat8 для Debian 8.6. Для упрощения управления всей кухней web (несколько приложений на одном сервере) запускаю все это через nginx/1.6.2 (так-же стандартный из Debian 8.6).

Новый репозиторий создается без проблем. Мелкие файлы добавляются без проблем. При добавлении большого количества файлов или большого файла, неважно, комманда git push завершается с ошибкой: «RPC failed; result=22, HTTP code = 413 …»

Причина — недостаточные размеры буферов для приема тела PUT и POST запросов как в tomcat так и в NGINX.

Лечение.
Для Tomcat — в server.xml в теге ‘<Connector port=»8080″ protocol=»HTTP/1.1″‘ устанавливаем параметр maxHttpHeaderSize=»32768″.
Для nginx — в nginx.conf в разделе http добавляем параметр «client_max_body_size 32M;».
Со значениями параметров не экспериментировал.

Перезапускаем сервера. Удаленные репозитарии git работают без проблем.