Хочу сегодня поговрить об очень перспективном направлении в программировании - кодогенерации.
Эти мысли пришли ко мне в голову после того, как я начал пректировать новую версию движка для сайта devoid.com.ua.
Для реализации выбрал популярный сейчас паттерн Model-View-Controller.
Используя такой подход, программисту необходимо реализовать “Model” - модель представления данных. Для этого чень полезной является реализация класса-оболочки для работы с Базой Данных, которая предоставляет механизмы извлечения данных, добавления, удаления и редактирования записей.
Если посмотреть немного дальше и представить что при каждом новом проекте нужно будет писать новый класс-оболочку для Баз Данных, который будет выполнять практически стандартные функции - становится как-то грустно, ведь всегда интереснее решать разнообразные задачи, а не писать по сути одинаковые классы, которые будут получать информацию с БД, добавлять, удалять и редактировать записи.
Именно здесь нам на помощь приходит кодогенерация, которая для реализации слоя доступа к данным (Data Access Layer) генерирует на основе описания таблиц БД класс, который содержит в себе необходимые функции для реализации Model из паттерна MVC.
Уже сейчас существует ряд готовых решений, которые предлагают вам создавать классы для работы с данными на основе описания структуры БД. Если вы хотите избавиться от рутинной работы создания классов для работы с БД - можете написать свой генератор или использовать уже имеющиеся (это могут быть и консольные решения, и Win-приложения и те же PHP-скрипты, кому как удобнее).
Все что необходимо генератору кода - это описание базы данных, выполненное в удобном формате (как вариант XML). В описании нужно указывать имена столбцов, тип данных, которые они содержат. Если вы сами пишете генератор, то позаботьтесь о том, что б он был безопасный к различным типам данных и имел достаточную функциональность.
Любому программисту будет удобнее выполнить простой код:

$user->create(”UserName”,”Mail”… остальные поля);

чем делать это вручную каждый раз. То же самое и с редактированием, удалением. Намного приятнее выполнить

$user->remove(’user_id’);

а все, остальное за вас сделает сгенерированный класс.
Здесь даже не столь важным является язык реализации, или конкретная База Данных. Основной изюминкой является реализация данного процесса, и избавление программиста от рутины. Один раз ГРАМОТНО написав генератор, вы получаете готовую модель работы с данными для каждого проекта, а сэкономленное время с удовольствием можно потратить на разработку новых интересных решений и сосредоточиться на реализации представления данных пользователю.
Надеюсь кое-как смог выразить свои мысли по этому поводу в данной заметке, и натолкнул вас на что-то новое и интересное в безграничном мире программирования :)

Да, и не забудьте поздравить женщин с их праздником сегодня…
Всех женщин поздравляю с праздником и желаю внимания, любви и удачи!

Обо мне

27.02.2008

   Добро пожаловать на мой блог, где я высказываю свои мысли о программировании, интернет-технологиях, и жизни вцелом. Надеюсь найдете что-нибуть интересное для себя. Страничка называется “Обо мне”, потому начнем:

Общее:
Меня зовут Макагон Сергей, живу в городе Кривой Рог (Украина). Мне 21 год.

Работа:
На данный момент занимаюсь разработкой и продвижением сайтов в Интернете. Основным сайтом является Портал программистов, но кроме него есть еще и другие интересные проекты.

Знания:
Давно (сейчас не использую)

  • C++Builder
  • Delphi

Использую

  • HTML+CSS
  • PHP
  • C# (.NET Framework)

Базы данных:

  • MySQL
  • MS SQL
  • Firebird (InterBase)

Изучаю

  • ASP.NET
  • Java Script/AJAX

Интересуюсь:
Интернет-технологии, WEB 2.0 создание сервисов для пользователей, кодогенерация, SEO, проектирование.

Хобби:
Музыка, Футбол, Мысли о вечном :)

Связь:

  •  ICQ: 177-170-два
  • devoid#ua.fm

Не имей сто рублей, а имей сто друзей. Хорошая поговорка, очень. Потому что мой друг подсказал мне как легко можно сделать заглушку для Вашего сайта под управлением ASP.NET.
Итак, допустим у вас сложилась ситуация, когда хостинг и домен уже куплены, а CMS еще в процессе установки или её попросту нет? или на сайте проводятся какие-то профилактические работы ? :) . В таком случае на сайт обычно ставят “заглушки”. В ASP.NET это делается проще простого, мы должны только создать файлик app_offline.htm (не *.html (!!!)) с красивой надписью о том, что сайт временно недоступен, и все :) . Теперь если кто-то будет заходить на ваш сайт, то он увидит только красивую надпись до тех пор, пока в корне вашего сайта будет лежать файлик app_offline.htm. Спасибо за внимание.

Для того чтобы в коде РНР оставить комментарий, используем такую конструкцию:

<?/*
This is the server-side comment
*/?>

Стоить отметить что на стороне клиента этот комментарий не отобразится ( в отличии от <!– Comment –>)

Аналогом в ASP.NET является:

<%--
This is the server-side comment
--%>

Вот так все просто :)

Чтобы защитить свой файл, например, Admin.aspx, программисту на ASP.NET достаточно написать в web.config такой код:

<location path="admin/admin.aspx">
<system.web>
<authorization>
<allow roles="Administrator"/>
<deny users="*"/>
</authorization>
</system.web>
</location>

Этот код позволяет запрашивать файл Admin.aspx из папки Admin только тем пользователям, которым присвоена роль “Administrator” :)

Редирект в ASP.NET можно сделать спомощью web.config:

<configuration>
<system.web>
<urlMappings enabled="true">
<add url="~/Article28.aspx" mappedUrl="~/MyNewBestArtile.aspx"/>
<urlMappings>
</system.web>
</configuration>

Вот такой вот несложный код позволяет сделать редирект в ASP.NET.

Работу с GET запросами в ASP.NET проилюстрирую на маленьком примере:

protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Request.QueryString["name"]);
}
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("http://localhost/mysite/default.aspx?name=DeVoid");
}

Request.QueryString отвечает за все запросы.

Вот простой пример работы с куками в ASP.NET, код несложный:

Работа с куками: protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
if(Request.Browser.Cookies)
{
HttpCookie mycook = new HttpCookie("UName");
mycook.Value = "DeVoid";
Response.Cookies.Add(mycook);
}
}
}

Код очень простой, но кто даже не знает в какую сторону нужно копать - поможет!
О Блоговаре:
Легенда о Мандариновом Пиве - несмотря на странное название - интересный блог
Flash Implosion, интересен постом “Вакансия :: ActionScript 3 программер”.
Записки здравомыслящего - название порадовало, и блог приятный.

Для того чтобы в вашем проекте ASP.NET использовались ваши странички с 404 ошибкой, достаточнов web.config добавить такой код:

<configuration>
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="error_page.aspx" />
<error statusCode="404" redirect="ErrorPages/404.html" />
</customErrors>
</system.web>
</configuration>

Теперь при 404 ошибке, будет отображена страница 404.html с папки ErrorPages :)

Блоговар:
Блог странника - мысли и заметки о раскрутке сайта и не только, читаем.
Путь к деньгам всегда тяжек, но почитав как это сделал кто-то другой, можно свой упростить :)

Delphi for PHP

16.09.2007

Delphi for PHP - вот здесь описан новый продукт, Delphi for PHP. Обьектно ориентированная среда разработки для РНР.
Несколько скринов:
Скрин №1
Скрин №2
Вообще мое личное мнение, что для РНР лучше оставаться отличным функциональным
языком программирования, чем имитировать обьектную ориентированность,
жертвуя при этом быстродействием. этот продукт просто пытается повторить Visual Studio 2005 и ASP.NET.