Все началось с того, что где-то в интернет-кафе за границей мне срочно понадобилось скомпилировать крохотный исходник. На общественном компьютере сильно не хотелось заморачиваться с установкой компилятора, поэтому я на удачу попробовал найти сервис, который скомпилировал бы исходник онлайн. И с этого момента началось.

 

Компилятор онлайн

Через пару минут я уже имел на руках скомпилированный бинарник. Помог сервис некоего турецкого программиста, который когда-то озадачился подобной проблемой и реализовал на своем сайте веб-интерфейс для доступа к компилятору. А чтобы пользоваться было еще удобнее, прикрутил компонент для редактирования кода. Подсветка синтаксиса, нумерация строк и даже автодополнения команд — почти маленькая IDE. Собирается в один исходник в один клик или по хоткею Ctrl-F7, после чего сервис отдает готовый бинарник. Если во время сборки произошли ошибки, то сообщения компилятора отобразятся в отдельной панели. Адрес для такого удачного сервиса на редкость странный:

cmpe150-1.cmpe.boun.edu.tr/phpccompiler/

login.php, причем сайт откроется только в Internet Explorer. Другое серьезное ограничение — отсутствие поддержки C++. А куда же сейчас без нее? Поэтому когда зашла речь о компиляции сорца С++, пришлось отыскать замену. К счастью, разработчики прогрессивного компилятора Comeau C/C++ на официальном сайте сделали фронтенд, который выполнен как раз в виде веб-приложения (www.comeaucomputing.com/tryitout).

Допускается выбор различных режимов компиляции, версии Comeau, а также любые другие параметры, которые ты мог передать сборщику через командную строку. Кстати говоря, последние релизы Comeau уже поддерживают большинство расширений C++0x (обновленный и модернизировнный стандарт С++), поддержка которого появилась сейчас в Visual Studio 2010.

«Зачем вообще привязываться к какому-то конкретному языку», — подумали ребята из ideone (ideone.com) и реализовали универсальный компилятор в 40 различных языков. Помимо С/C++ здесь поддерживаются еще и Java, C#, Pascal, Visual Basic .NET, все скриптовые языки, и даже ассемблер. Важно только уложиться в ограничения: 10 секунд на компиляцию, 5 секунд на выполнение, 256 мегабайт памяти. Помимо этого, программа не сможет обращаться в Сеть и работать с файлами. Некоторых ограничений удается избежать, собрав программу с помощью другой онлайт тулзы — codepad (codepad.org).

 

HEX и PE-редакторы

Теперь обратная ситуция — бинарник есть, а исходника нет. Как поправить в нем пару байтов? Честно говоря, толкового HEX-редактора в онлайне я в какой-то момент найти не смог и лишь потом случайно наткнулся на него на одном из форумов, где разработчик делился ссылкой на свой текущий проект и интересовался, а стоит ли ему вообще его продолжать. Беглого взгляда на HexPaste (hexpaste.com) было достаточно, чтобы закричать: «Стоит!».

Скажи, вот в каком оффлайн HEX-редакторе есть возможность коллективной работы нескольких людей? А здесь это возможно.

Достаточно поделиться ссылкой на проект (нарпимер, hexpaste.com/WvwX04eV), чтобы к нему мог подключиться кто-то еще. Действует простейшая система контроля версий — каждое значимое изменение необходимо сохранить (закомитить). Интерфейс очень здорово выполнен на AJAX’е, поэтому складывается ощущение, что работаешь в самой обычной, но очень простой программе. Не хватает различных фишек по анализу структуры, в том числе PE-заголовках. Последнее можно исправить с помощью онлайн PE-редактора, который серьезно выручил меня, когда надо было изменить точку входа в exe,шнике.

С помощью proview phpp (pvdasm.reverseengineering.net/PVPHP.php) также можно посмотреть секции, изучить таблицы экспорта/импорта (скажем, для того, чтобы узнать, какие API-функции вызывает утилита) и т.д.

 

Дизассемблер

Помимо прочего, proview phpp — это еще и дизассемблер. Допускается выбрать опции для дизассемблирования, а также выбрать цветовую схему листинга, наиболее привычную по одной из известных программ (SoftICE, IDA, W32Dasm, Ollydbg). Но, увы, получить дизассемблированный код получится для файлов не более 100 Кб. Чтобы обойти это неприятное ограничение, рекомендую взглянуть на более современный сервис — Pym’s online disassembler (pyms86.appspot.com), построенный на базе Google App Engine.

Первый плюс в том, что можешь анализировать не только целый файл, но и отдельные HEX-дампы. Проекту по зубам 64-битные приложения, причем для анализа используются Python-библиотеки Pym (code.google.com/p/pymsasid), pefile (code.google.com/p/pefile) и networkx (networkx.lanl.gov), которые очень прогрессивно развиваются. Возможно, в будущем мы расскажем, как собрать свой особенный сервис для самостоятельного дизассемблирования.

 

Редактор кода

Но для того, чтобы написать код с нуля, одного интерпретатора мало — необходимы удобные средства для работы кода. Одним из наиболее старых и известных проектов является Amy Editor (www.amyeditor.com). Открыв страницу, ты получаешь практически все бонусы обычного десктопного редактора для программистов. Поддерживается подсветка сразу для нескольких языков: C, Java, Javascript, PHP, Python, Ruby on rails, Ruby, Texy, HTML/ XML-разметка. Добавляем сюда автозакрытие скобок/кавычек, правильный перенос строки (сразу с нужным отсупом, особенно чувствуется в Python), набор сниппетов, упрощенную вариацию автодополнения команд и даже некоторые возможности для совместной работы с кодом. Даже сворачивание тела функции — и то работает. Увы, проект давно не развивается (хотя и распространяется в открытых исходниках). Зато семимильными шагами развиваются другие проекты:

  • Bespin от компании Mozilla (bespin.mozillalabs.com) — бесподобный редактор кода для веб-проектов (HTML/JavaScript);
  • CodeMirror (marijn.haverbeke.nl/codemirror) — библиотека JavaScript для реализации редактора, поддерживающая работу с самыми разными языками: JavaScript, XML/HTML, CSS, Python, Lua, Ruby, SQL;
  • Ymacs (www.ymacs.org) — Emacs-подобный редактор, полностью выполненный на Ajax.

Все три проекта — исключительно качественные современные редакторы кода и распространяются в открытых исходниках. Да, можно поставить любой из них у себя, но зачем, если есть сервис Kodingen.

 

Полноценная IDE

Ребята из Kodingen, задумавшие реализовать полноценную среду разработки в вебе, выбрали очень правильный сценарий развития.

Вместо того чтобы изобретать велосипед, разрабатывая еще один редактор кода, который претендовал на универсальность, они просто встроили имеющиеся замечательные разработки в свой продукт! А сами тем временем сосредоточились на создании других необходимых для IDE опций, в том числе для совместной работы!

Сервис находится в состоянии активного развития и носит статус беты, а разработчики каждый месяц подкармливают появившуюся армию поклонников новыми фишками. Уже сейчас над любым проектом можно работать в команде. И если на текущем этапе colaboration поддерживается только средствами самого сервиса, то на подходе поддержка всех популярных систем для контроля версий: svn, git, mercirual! Уже сейчас можно прописать у себя в профиле учетные записи для доступа к хостингу по FTP и сразу заливать обновленные сорцы на сервер. А хочешь — можешь хоститься прямо в Kodingen. Всем желающим создатели предоставляют хостинг в своем облаке (по крайней мере, пока). Еще одна интересная опция — шелл-доступ своим файлом прямо из веб-интерфейса, не надо даже коннектиться по SSH! Одним словом — супервещь!

 

Visual Studio в вебе

Если посмотреть на поддержку языка программирования, то везде сплошные Perl/Python/PHP — в общем, скриптовые языки. А как быть, скажем, с C#? Неужели нельзя с помощью веб-интрумента создать полноценное веб-приложение, используя наработки Microsoft? Можно! Соревноваться с Visual Studio в рамках веба замахнулись три израильских программиста, основавшие проект coderun (www.coderun.com). И ведь сделали. Уже сейчас в привычном тебе по Visual Studio виде, то есть с очень похожим интерфейсом, подсветкой синтаксиса и даже IntelliSense, ты можешь создавать ASP.NET, PHP, Ajax, а также виндовые приложения на WPF прямо в браузере! Поддерживаются C#/.NET (3.5), PHP (5.1), JavaScript, HTML и CSS.

Причем для C# реализована поддержка всех модных технолоий Microsoft: ASP.NET, WCF, Silverlight и WPF. В качестве баз данных можно нативно использовать SQL Server 2005 и Amazon SimpleDB. Это значит, что не надо изучать ничего нового. Если у тебя есть проект на ASP.NET и SQL Server, можешь залить его на coderun и запустить. Стоп, что значит «запустить»? Да-да, coderun поддерживает компиляцию для .NET управляемого кода, для этого используются мощности серверов из облака. Мало того, сервис обладает еще и мощным онлайн-дебаггером. Ты можешь последовательно трейсить код, устанавливать watch’и, чтобы наблюдать за переменными, изучать callstack — почти фантастика. Вот она — первая заявка на настоящую IDE в браузере. Правда, справедливости ради надо сказать, что реально использовать coderun пока довольно сложно. В глаза довольно часто бросаются недоделки, а скорость работы подчас катастрофически падает.

 

Делимся кодом

Если редактировать код вместе не нужно, а нужно поделиться исходниками, какими-нибудь конфигами, XML-ками, дампами или просто текстовыми файлами, пригодится инструмент, о котором мы недавно говорили в WWW2 — Pastie (pastie.org). Все, что требуется — это скопипастить в форму текст и указать его тип (скажем, исходник на C++ или Python). Сервис выдаст короткий линк, перейдя по которому, любой увидит исходный текст с красиво подсвеченным синтаксисом. Всего сервис поддерживает 38 различных языков программирования, файлов-конфигураций и вывода некоторых программ. Во время просмотра можно изменить тему для отображения так, чтобы было максимально похоже на привычную среду разработки. Сам проект написан на Ruby, причем правила для подсветки синтаксиса были позаимствованы у TextMate. Помимо Pastie есть еще один интересный сервис, нацеленный на обмен сниппетами. В публичном репозитории кода Snipplr хранится огромное количество исходников и сниппетов на разные темы. Обязательное требование к заметке — четкое описание и теги, поэтому в репозитории очень легко найти нужные участки кода.

 

Регулярные выражения без боя

Существует довольно много программ для быстрого составления регулярных выражений, например, RegexBuddy. В онлайне такие решения тоже есть. Правда, по большей части это простые сервисы для проверки регеспов, причем строго определенных типов. Из толпы выдется очень добротная онлайн-тулза RegExr (www.gskinner.com/RegExr), реализованная в виде Flex-приложения. В чем ее фишка? Благодаря Flex’у удалось сделать очень удобный и быстрый интерфейс. Ты можешь писать регулярное выражение в одном поле и тут же в реальном времени отслеживать, как оно работает в другом. Для любой конструкции выводится описание того, что она делает и как используется.

В результате регулярку могут составить даже те, кто вообще не знает теории. Мало того, при наведении на любой из элементов регеспа сервис отображает, что именно он делает. Обалденная опция на случай, если необходимо разобраться, что делает громоздкое выражение, которое когда-то давно составил ты сам или вообще другой человек. Любое выражение можно сохранить на потом, добавив ее во внутреннюю базу RegExr’а. Благодаря этой возможности в базе даже сейчас есть большое количество готовых регеспов на многие случаи жизни. А значит, вместо того чтобы ковыряться самому, можно взять уже готовое чужое решение, отыскав его по ключевым словам, а потом сразу же проверить в действии с нужными входными данными. Кстати говоря, большая библиотека регулярных выражений также располагается на www.regexlib.com.

 

Онлайн, облако, IDE

В этот перечень я намеренно не стал включать инструменты для общения разработчиков внутри команды, а также планирования проектов. Их очень много, они разные и чаще всего платные. Я же уверен, что в большинстве случаев можно не строить умные диаграммы и графики, а воспользоваться простой системой для управления задачами вроде Teamer’а (www.teamer.ru). В любом случае у нас есть отдельный повод поговорить об инструментах планирования времени и управления задачами. Если тебе интересны способы увеличения эффективности, пиши нам! 🙂

 

Info

  • Эмуляция Pythonинтерпретатора, причем реализованная на Silverlight, доступна на сайте Try Python (www.trypython.org). А благодаря Utility Mill (utilitymill.com), из Python-скрипта можно легко сделать веб-сервис.
  • Зашить файлы на FTP-сервер также легко через веб. Для этого пригодится клиент net2ftp (www.net2ftp.com). Специально для PHP есть еще одна добротная IDE в бразуере — это phpAnyware (phpanywhere.net).

Среда поддерживает загрузку файлов FTP, имеет подсветку синтаксиса и в будущем обещает автодополнение команд.

Оставить мнение

Check Also

Алмазный фонд «Хакера». Важные материалы по взлому за последние несколько лет

В прошлом выпуске мы сделали подборку по реверсингу и анализу malware-кода, которая в перв…