Отладка PHP скриптов
Оказывается отлаживать приложения на PHP возможно если вы используете Eclipse c PDT, для этого необходимо скачать Studio Web Debugger - эта штука ставится как расширение PHP и позволяет эклипсу останавливаться на ваших точках остановки, проходить приложение по шагам, смотреть значения переменных и еще много чего. Радует то, что как Eclipse, так и Debugger доступны для различных платформ, и совершенно бесплатны, вот уж где коммунизм наступил...
А вроде солидный банк...
Вчера звонят из Экономбанка которому мы несколько месяцев назад сделали сайт, дают ссылку и спрашивают WHF?
![]() |
![]() |
сайт Экономбанка | сайт банка Синергия |
Не знаю, по моему не сильно похоже... По моему, совершенно разные сайты - сайт Синергии похож на сайт Экномбанка как наша девятка похожа на DeLorean DMC-12 (машина из "Назад в Будущее")...
Редактор для Python
Попробовав несколько разных радакторов пришел к выводу что для меня лучше чем Eclipse с плагином PyDev ничего не придумано.
Простой вебсервер на Питоне
Возникла необходимость сделать простой вебcервер, но чтобы он был максимально легкий и быстрый. После некоторых размышлений решил реализовать его на Питоне, первоначально в качестве кандидатов рассматривались PHP, Java, Perl, но в конечном итоге решил остановиться на Python.
Приведенный пример работает на Python 2.5, хотя первоначально был сделан на Python 3. Питон выбрал потому что во первых хотелось посмотреть что это за зверь такой, что его так любят разработчики Google a во вторых понравилось что можно с легкостью создавать многонитивые приложения.
Синтаксис языка оказался довольно забавный, так как в нем нет операторных скобок так что тем кто любит сравнивать фигурные скобки Си с паскалевским begin/end останутся без темы для споров - операторных скобок нет как класса.
Понравилась философия разработчиков Battaries Included - например разработчику для создания простого вебсервера не нужно вникать в тонкости протоколов - достаточно взять один из готовых классов. Однако по какой то странной причине разработчики Питона не любят реляционные базы данных, например нет в Питоне интерфейса к MySQL а сторонние разработкики делают расширения весьма неохотно, поэтому третью версию питона с MySQL никак не соединить - максимум что позволено версия 2.5 и когда будет поддержка для третьей - неизвестно.
#! /usr/local/bin/python import BaseHTTPServer import cgi import string class RequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): def showPage(self,method,get_data,post_data): self.wfile.write("HTTP/1.1 200 OK\n"); self.wfile.write("Content-Type: text/html\n") self.wfile.write("\n"); responce = """ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Simple HTTP Server</title> <meta name="description" content="Simple HTTP Server" /> </head> <body style="background:white;"> Method $method<br /> Path: $path<br /> get data $get_data<br /> post data $post_data<br /> <form action="" method="post"> <input type="text" name="value1"> <input type="submit" name="value2"> </form> </body> </html> """ s = string.Template(responce) responce = s.substitute(dict( get_data=get_data, post_data=post_data, path=self.path, method=method )) self.wfile.write(responce); def do_GET(self): get_data = cgi.parse_qs(self.path[2:]) self.showPage('GET',get_data,{}) def do_POST(self): get_data = cgi.parse_qs(self.path[2:]) cl, cl2 = cgi.parse_header(self.headers.get('content-length')) qs = self.rfile.read(int(cl)) post_data = cgi.parse_qs(qs.decode()) self.showPage('GET',get_data,post_data) class ChatServer(BaseHTTPServer.HTTPServer): def __init__(self,address,handler): BaseHTTPServer.HTTPServer.__init__(self,address,handler) def main(): try: server = ChatServer(('localhost', 8080), RequestHandler) server.serve_forever() except KeyboardInterrupt: print('^C received, shutting down server') server.socket.close(); if __name__ == '__main__': main()