Какую технологию выбрать для проекта по разработке ПО

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

Если вам нужно создать мобильный интерфейс, то используйте jQuery.Mobile. Он построен поверх jQuery. Для темизации можно использовать ThemeRoller.

Если вы ищите технологию, которая бы позволила создать одним проектом сайт для трех основных форм-факторов (desktop, phone, tablet) то вам могут помочь мобильные возможности ASP.NET MVC 4. Если вы новичок, то для быстрого старта вы можете натравить на свою базу данных Lyle's MVC4 FoodTruck Recipe, этот инструмент сгенерирует вам страницы для просмотра и редактирования данных из вашей БД, и эти страницы будут оптимизированы для мобильных устройств.

Если вы ищите компоненты из которых можно создать интерфейс для web, iOS, Android и Windows Phone 10, то рассмотрите Mobiscroll.

Если вам нужно максимально точно определить устройство с которого запрашивается ваша веб-страница, то можно использовать библиотеки WURFL или 51Degrees.

Если нужно проверить скорость загрузки сайта, то используйте YSlow. Есть desktop-версия в форме расширения для браузера и мобильная версия. Также общий вес страницы можно вычислить с помощью прокси-сервера Fiddler.

Если вам нужно создать RESTful веб-сервис для запроса и обновления данных, то рассмотрите протокол Майкрософта - OData. Компания Microsoft выпустила OData SDK, состоящий из библиотек для Microsoft .NET Framework, AJAX, PHP, Java, C++JavaScript, WebOS, и Objective-C.

Если вам нужно создать бизнес-приложение вида формы-над-данными (forms-over-data), которое по сути представляет собой интерфейс для просмотра, добавления и редактирования данных, то рассмотрите возможности технологии Visual Studio LightSwitch. Если вы раньше писали на Delphi программки работающие с базами данных, то вам стоит посмотреть на LightSwitch, т.к. это более современная технология для решения подобных задач.

Если вам нужно создать database-driven сайт и вы не хотите использовать стек технологий Майкрософта, то рассмотрите простой и легкий в освоении фреймворк Keystone.js. В нем есть: моделирование данных, шаблонизация представлений, роутинг для навигации, формы и их валидация, пейджинг, аутентификация пользователей, административный интерфейс как у CMS, возможность создания REST API. Для его работы нужны Node.js и MongoDB. Фреймворк построен на базе фреймворка Express.js, который де-факто является стандартом для создания веб-приложений на Node.js. Фреймворк Keystone.js используется по принципу паттерна проектирования Model-View-Template. Для работы с MongoDB используется object document mapper (ODM) Mongoose. Для отображения данных используется JavaScript механизм шаблонизации Swig. Новые проекты на базе фреймворка Keystone.js создаются с помощью генератора приложений на основе Yeoman (набор инструментов для автоматизации рабочих процессов разработки).

Если вам нужно создавать документы в формате PDF на Java или C#, то используйте библиотеку iText Java library и её порт на C# -  iTextSharp library. Документация к сожалению представлена только для Java версии. Основное отличие PDF от HTML в том, что PDF не отделяет контент от его представления, так как это делает HTML и CSS. PDF отлично подходит для вёрстки изданий, когда важно чтобы всё было один в один строго до пикселя. Но с другой стороны такой подход затрудняет извлечение текста из PDF-документа. PDF задумывался как цифровой аналог бумаги и чернил. PDF по сути это низкоуровневое представление графики и текста.

Если вам нужно посмотреть, что происходит на TCP и IP уровнях сетевой модели, то вооружитесь сниффером Wireshark. Если вам нужно посмотреть HTTP и HTTPS траффик, то можно использовать отладочный прокси-сервер Fiddler

Если вам нужно поиграть с RESTful API используйте add-on Postman для браузера Chrome. С помощью него можно делать HTTP-запросы: GET, POST, PUT, и DELETE.

Операционные системы

OpenBSD

Если вам нужна безопасная и стабильная операционная система, то берите OpenBSD. К примеру, если вы занимаетесь поставкой интернет-услуг (Internet service providers) или производите встраиваемые системы (embedded systems), то OpenBSD подойдет. OpenBSD очень производительная система в том смысле, что старается в полной степени использовать железо на котором она работает. Система работающая на железе 1GB диска и 486 CPU может обеспечить работу DNS или веб-сервера. У OpenBSD конкурентоспособные возможности по балансировке нагрузки (load-balancer). Коммерческие аналоги для балансировки нагрузки могут стоить тысячи долларов. В OpenBSD интегрирован прекрасный файрвол, который может обеспечить контроль сетевых соединений и уберечь сервера от опасного трафика. OpenBSD может стать основой для IDS, веб-прокси, мониторинга трафика, управления почтой, веб-сервера, LDAP или базы данных. OpenBSD можно также приспособить и в качестве настольной системы для разработчика или админа: графические интерфейсы, офисные пакеты, веб-браузеры, инструменты разработки, среды приложений, сетевые серверы, снифферы пакетов и анализаторы трафика - всё это есть в ports collection.

Языки программирования

C++

Если вы пишите финансовое ПО на C++, то вам нужен тип decimal, для этого можно использовать decNumber libraryIntel Decimal Floating Point Math Library или GNU Multiple Precision Arithmetic Library. На Windows можно использовать тип данных DECIMAL вместе с Decimal Arithmetic Functions и Data Type Conversion Functions.

F#

Если вам нужно провести серию трансформаций над входными данными, то лучше писать программу в функциональном стиле. Возможности сопоставления с образцом (pattern matching) имеющиеся в функциональных языках позволят проанализировать входные данные и выбрать соответствующую трансформацию для этих данных. Функциональное программирование обеспечивает лучший подход к решению сложных вычислительных задач. Но чистые языки функционального программирования не подходят на роль универсальных языков программирования с помощью которых решается большинство рабочих задач обычных программистов, которые обслуживают потребности бизнеса. F# является одним из языков функционального программирования, который вобрал в себя аспекты императивной и объектно-ориентированной парадигмы, обеспечив тем самым возможности для написания любого типа программ.

JavaScript

Если вам нужно что-то вроде стандартной библиотеки к языку программирования JavaScript, то используйте Underscore.js. Библиотека содержит полезные функции для работы с объектами и массивами (коллекциями). Любой язык программирования на концептуальном уровне состоит из синтаксиса и библиотеки. У JavaScript собственная библиотека не слишком развита. Underscore.js может дать больше функциональности.

Если вам нужно оперировать с DOM-моделью веб-страницы, то выбирайте jQuery. У этой библиотеки богатые возможности для выполнения запросов к DOM-модели и последующих манипуляций с результатом запроса. Поддерживается анимация так что манипуляции можно анимировать.

Если вам нужно создать информационно-ориентированный (data-driven) пользовательский веб-интерфейс, то используйте Knockout.js. Эта библиотека использует паттерн проектирования Model-View-ViewModel (MVVM). Упрощенно говоря Knockout.js нужен для связывания модели данных и HTML-кода отображающего эти данные.