nonlux Опубликовано 19 сентября, 2011 Жалоба Поделиться Опубликовано 19 сентября, 2011 ПредисторияДело было ночь, а спать не хотелось. Сон отбили кровавые ужасы, которые местами проскакивали на форуме. Он был совсем опечалет тем, что мало людей любят свой код, очень много людей хотят наварить деньги на лохах и при этом забывая, что этим самым они не просто выбрасывают в интернет-помойку еще один корявый помятый со всех сторон кусок г*вна.Хотя может это от незнания?кто делает сайтыВообще в нормальной команде для веб разрабтки можно выделить несколько ролей,программист серверной части-это чел, который пишит всякую хрень которая обрабатывает запросы браузера на сервере и выдает на них ответ,программист клиентской части-это чел, который пишет всякую хрень которую обрабатывает браузер и выполняет ее. сервер обычно ничего об этом не знаетвеб дезайнер это творческий чел, у него сильно выражен скил фотошопа, он мудрит всякие там интерфейсы, что бы пользователи совсем забыли зачем пришли на сайтверстальшик обычно ненавидит дизайнера, материт ie, и пытается подогнать крассивые пибабахи дизайнера, под какие либо стандарныеще конечно на этом список не заканчиваетсяидеяВообщем будем разбираться как сделать HandMade сайт.Будут даваться задачки, подробно описывающие что и зачем нужно.Каждый из участников игры будет писать код и выкладывать его на форум.В подведении итогов:по каждой задаче будут раздаваться и *109Самый толковый код будет использован, как основа для следующих задач.Так же в подведении итогов будем рассматривать как подобный функционал реализован в нескольких популярных CMS И FRAMEWORK'Sв итогеВ конечном итоге игры мы получим много опыта, и вполне рабочую систему.Предварительное заданиеУстановить Apache+phpКак-то так работают интернетыВ глубокие далекости и технические тонкости сейчас углубляться не будем.Все устройства в Интернете соеденены между собой с помощью кабелей, с помощь WiFi, GPRS (вообще это не важно, как). И если совсем упростить то каждое устройство имеет свой уникальный адрес, называется он IP-адрес. Умные люди сделали так, что все эти соединенные устройства умеют общаться между собой, используя эти ip-адреса. Кроме этого они решили, что помимо адресов еще хорошо было бы использовать и какие-либо смысловые названия типа google.com, ulanovka.ru, и т.д. Их назвали доменными именами или доменами. И научили все устройства с помощью специальных сервисов( DNS ) определять какой же IP-адрес соответствует доменному имени.На компе много приложений которые хотят что-то делать в Интернете, браузер хочет порнушку посмотреть, скайп хочет звонок сделать, антивирь хочет обновления скачать.Но проводянка для Интернета одна!!! По этому придумали порты. С помощь них каждое приложение работает в как бы отдельном канале связи. Но при этом браузер у пользователя использует свой порт (например 1120), а сервер с порнушкой свой (80 порт).Сервера на которых живут сайты, работают по протоколу HTTP (протокол –это типа, алгоритма взаимодействия между компании, использующий определенные команды с помощью которых один комп втолдыкивает второму, что ему нужно и в каком виде). Порт на котором работают сервера по протоколу HTTP по умолчанию 80.Существует договоренность по которой определенные протоколы работают через определенным портам , обычно эти порты по умолчанию используют только серверными приложениями, а клиенты получают любой порт использующиеся их компьютером. Например список занятых портов в винде можно посмотреть C:\WINDOWS\system32\drivers\etc\servicesТо есть в нашем примереIP-Адрес компа пользователя-120.12.100.2,Пользователь хочет посмотреть порнушку по адресу porno.ru, и он просит браузер ее показать.Комп спрашивает в Интернете, где живет porno.ru,Выглядит это как то так> google.ruDNS Сервер: UnKnownAddress: 172.16.0.73Имя : google.ruAddresses: 74.125.232.52 74.125.232.51 74.125.232.49 74.125.232.48 74.125.232.50nslookupЕму отвечают на 120.12.100.7,Браузер открывает новый порт – 1120И отправляет запрос с помощью протокола http:Эй ты 120.12.100.7, на твоем порту 80, лежит сайт с порнушкой porno.ru, давай-ка мне его сюда. Я 120.12.100.2, мой порт 1120В реальности запрос выглядит как-то так:Host: www.site.ru\r\nReferer: http://www.site.ru/index.html\r\nCookie: income=1\r\n\r\nGET http://www.site.ru/news.html HTTP/1.0\r\nА сервер в ответ:На тебе 120.12.100.2, на порт 1120 все что пожелаешь.Date: Wed, 11 Feb 2009 11:20:59 GMTServer: ApacheX-Powered-By: PHP/5.2.4-2ubuntu5wm1Last-Modified: Wed, 11 Feb 2009 11:20:59 GMTContent-Language: ruContent-Type: text/html; charset=utf-8Content-Length: 1234Connection: close(далее следует запрошенная страница в HTML)HTTP/1.0 200 OKВ итоге брузер загружает сайт пользователь видит Сиськи.Какие сиски реально видит, думаю каждый сам может представить )))Как то так в общих словах работают интернеты.WWW Теперь углубимся в сторону веб.Браузер(internet explorer, opera, firefox,chrome) -эта такая программа, которая умеет передавать, принимать и обрабатывать сообщения протокола http.То что ищет браузер в Интернете по имении ulanovka.ru представляет собой компьютер, на котором постоянно работает приложение, оно называется веб-сервер.Главной задачей веб сервера является передача, прием и обработка сообщений протокола http.Примерами таких веб серверов могут быть, Apache,nginx, iis.Что бы не вникать в тонкости настройки, некоторые используют сборки, напримерДжентельменский набор разработчика Denver, или XAMMP.Лично я против использования таких сборок, хотя на первоначальном этапе это дает возможность получить готовый веб сервер у себя на компе нажатием левой кнопки мыши несколько раз.Получив запрос сервер по-умолчанию ищет файл который хочет увидеть пользователь, и отдает его.Например https://ulanovka.ru/uploads/images/avatars/gallery/ulanovka_gallery/000226.jpgСкорее всего, эта картинка лежит на сервере вот здесь:Папка где хранится сайт\forum\images\avatars\gallery\ulanovka_gallery\000226.jpgТак сложилось исторически, что сервер умеет только отдавать файлы. Поэтому когда в интернете бродили динозавры все работало именно так. Но разработчикам сайтов не хотелось писать миллионы статичных страничек. Они хотели написать один раз шаблончик сайта, а потом просто менять текстовое содержимое. И решили придумать языки программирования, которые облегчат их задачу. И научили веб сервера распознавать файлы с программами и выполнять их.Например: php, ruby, asp.Будем назвать их их серверными потому, что все программули написанные на этих языках выполняются на сервере и выдают готовый ответ пользователю.Очень часто приходится работать с большими объемами однотипных данных, например товары магазина с ценами. Эти данные, надо где-то хранить. Вот и придумали сервера баз данных, которые хранят, и обрабатывают данные.Веб используют разные сервера баз данных: mysql,firebird, mssql,oracle.Выбор конкретной базы данных зависит от требований к разрабатываемой системе.Итак сервер выдал нам какой-то ответ.Нажмите ctrl+U и увидите эту хрень.Это HTML.HTML- это не язык программирования!!!!Это способ разметить тест.Например - значит что это заголовок. Это значит абзац Значит список.По умолчанию, текст черный размер его какой-то не большой, фона нет. А дизайнерам хочется каких-нибудь финти-хрюшек.Вот и придумали CSS. Это набор привил оформления,Например, написав такое правилоbody{color:#f00;} Мы сделаем весь текс на странице красным.Текс есть текст, в нем нет жизни. Но хочется же, что бы по клику по имени пользователя на ulanovke.ru я смог бы процитировать сообщение пользователя.Вот для таких вещей придумали языки программирования выполняющиеся в браузере,Например, js, Action Script,Silverlight.Некоторые из них требуют дополнительных плагинов для браузера,и представляют собой уже скомпилированные программы.А некоторые, передаются в браузер ввиде исходных кодов. И выполняются в нем.Вот как то так выглядит эти интеренты.На какие-то конкретные вопросы я могу ответить , но писать мануалы по установке Apache+php, как писать программы на php, да и вообще как писать программы не вижу смысла.Начинаем История 1 Все начинается с url.Проблема 1В общем виде многие современные CMS, можно представить как большой черный ящик, в котором существует огромное количество возможностей как для разработчика, так и для злоумышлиника. При этом начинающие разработчики вообще не представляют, сколько всего доступно на сайте из вне. А проблема достаточно банальная.Допустим у нас есть сайт, index.php- отвечает за предоставление главной страницы обычным посетителям сайта.admin.php- панель администратора, в которой можно изменять контент главной страницыДоступные ссылки http://site/index.php'>http://site/index.phphttp://site/admin.php'>http://site/admin.phpЕсли разработчики хотят добавить новую страницу на сайт, например контакты, им придётсяДобавить еще один файл contact.phpНо у нас же динамический сайт значит разработчики могут в файле index.php задать переменную которая будет отвечать за наполнение страницы.Аналогичным образом мы добавим несколько новых возможностей для администратора.И в итоге получим следующие доступные ссылки.http://site/index.php'>http://site/index.php вывод главной страницыhttp://site/index.php'>http://site/index.php?content=index аналогичная предыдущей ситуацияhttp://site/?content=contact'>http://site/?content=contact страница с контактамиhttp://site/ вывод главной страницыhttp://site/?content=index аналогичная предыдущей ситуацияhttp://site/index.php'>http://site/index.php?content=contact страница с контактамиhttp://site/admin.php'>http://site/admin.php вывод формы авторизации администратораhttp://site/admin.php'>http://site/admin.php?content=login аналогичная предыдущейhttp://site/admin.php'>http://site/admin.php?content=show_panel вывод -панели администратораhttp://site/admin.php'>http://site/admin.php?content=edit_page&page=index редактирование главной страницыhttp://site/admin.php'>http://site/admin.php?content=edit_page&page=contact редактирование страницы контактов. Вот сколько ссылок получается доступно любому пользователюПроблема первая заключается в том, что когда код написан не вами, или вами но очень давно не возможно со 100% уверностью сказать какие же url активны на сайте.Проблема 2Вообще ради экономии ресурсов вместо логических названий используют идентафикаторы:Былоhttp://site/index.php'>http://site/index.php?content=index- вывод главной страницыhttp://site/?content=contact'>http://site/?content=contact - страница с контактамисталоhttp://site/index.php'>http://site/index.php?content=1http://site/?content=2запрос уменьшился но читаемость исчезлаВы наверное подумали такhttp://site/index.php'>http://site/index.php?content=1 - вывод главной страницыЕсли content хранится в базе данных| id | content || 1 | наш телефон 22-22-22 || 2 | Добро пожаловать на наш сайт |Как видите легко ошибится )Проблема 3 http://site/?content= 1 - страница контактов.Здесь переменная content отвечает за то какая страница будет выведенаТак как в нашем примере content берется из базы данныхhttp://site/index.php'>http://site/index.php?content=1’ - такой url выдаст ошибку базы, если не обработать переменную content предварительно.Такая ошибка называется sql-инъекция. Злоумышленник при помощи нее сможет получить любые данные из ваше базы данных.В частности он получит пароли администратора, и крындец всему сайту))А почему бы не проверить эту переменную?Да потому что, забыли.Сложно забыть когда переменная одна, http://site/?content= 1А когда так http://site/?content= 1&user=12323&id_action=23&search=efrggfhhghffghfhfg&a=1&aaaa=4&asdad=3Люди не машины они всегда допускают ошибки.Проблема 4Допустим у нас на сервере лежит куча скриптов для обрабоки каких -либо задачНапример del_page.php - у нас удаляет страницу с сайта.Что мешает любому пользователю обратится по адресу http://site/del_page.phpИли например кофигурации на сайте хранятся в текстовом файле, что мешает пользователю обратится по ссылке, и узнать например пароли для подключения к базе данных.http://site/config.txtНемного об urlИсторически сложилось что вот как-то выглядят ссылкиhttp://site/saidjdfoijsdfoijosdwoiewjcdvjsdweo.php?adsoss_content=price&aoosd_sort=cost& assdos_order=ascЭта ссылка будет выводить табличку с товарами сортированную по цене.Попробуйте прямо сейчас ссылку быстро запомнить?А через месяц вспомните?Гораздо приятнее для взгляда и безопаснее сделать ссылку такойhttp://site/price/cost/asc/Это называется ЧПУ( человеко понятный урл)согласитесь если страничка вам понравилась, но вы ее забыли добавить в закладки, то гораздо проще вспомнить хотя бы вот этоhttp://site/price/Постановка задачиДелаем обработчик всех приходящих запросов.Входные данныеУ нас есть настоящая ссылка вида /page/Есть набор разрешенных ссылок//contact//login/admin//admin/На выходе ваш скрипт должен вернуть true или false.Так же можете писать свои мнения по поводу внедрения вашего скрипта. То есть как нам в итоге сделать так, чтобы наш скрипт фильтровал все входящие запросы.Рекомендации применяйте ООП. Ссылка на комментарий
Creo_47 Опубликовано 19 сентября, 2011 Жалоба Поделиться Опубликовано 19 сентября, 2011 по-моему годная идея.жаль я не умею играть в такие игры Ссылка на комментарий
nonlux Опубликовано 19 сентября, 2011 Автор Жалоба Поделиться Опубликовано 19 сентября, 2011 присоединяйся, задачи простые, авось и из тебя программист выйдет Ссылка на комментарий
Lakers Опубликовано 20 сентября, 2011 Жалоба Поделиться Опубликовано 20 сентября, 2011 и как играть то?что делать то надо? Ссылка на комментарий
nonlux Опубликовано 20 сентября, 2011 Автор Жалоба Поделиться Опубликовано 20 сентября, 2011 в правду толком ничего не написал)))Вообщем будем разбираться как сделать HandMade сайт.Будут даваться задачки, подробно описывающие что и зачем нужно.Каждый из участников игры будет писать код и выкладывать его на форум.В подведении итогов:по каждой задаче будут раздаваться и *109Самый толковый код будет использован, как основа для следующих задач.Так же в подведении итогов будем рассматривать как подобный функционал реализован в нескольких популярных CMS И FRAMEWORK'SВ конечном итоге игры мы получим много опыта, и вполне рабочую систему.Для начала игры надо набрать хотя бы человек 5, после этого будет дано 1 задание.А пока подготовительный этап, надо поставить с свой компютерик Apache и PHP. Ссылка на комментарий
mr.unkind90 Опубликовано 20 сентября, 2011 Жалоба Поделиться Опубликовано 20 сентября, 2011 чото неинтересно, лучше наподобие форумных игродин программист называет слово например Компилятора следующий должен назвать на последнюю букву - Р...на IT-тематику Ссылка на комментарий
Опасный Кiт Опубликовано 20 сентября, 2011 Жалоба Поделиться Опубликовано 20 сентября, 2011 mr.unkind90 а в твоей игре что интересного? хочешь поиграть в слова иди в "Форумные игры".nonluxнадеюсь у тебя получится собрать команду. будет очень интересно посмотреть. напиши постояльцам этой ветки предложение в ЛС, может кто и откликнетсО. Ссылка на комментарий
mr.unkind90 Опубликовано 20 сентября, 2011 Жалоба Поделиться Опубликовано 20 сентября, 2011 mr.unkind90 а в твоей игре что интересного? хочешь поиграть в слова иди в "Форумные игры".ну так там обширный набор слов, а здесь узкийя даже не знаю слово из IT начинающееся на "Р"радиатор не предлагать, PASCAL - это по английски.тем более в форумные игры программисты не заходят. Ссылка на комментарий
dibar Опубликовано 20 сентября, 2011 Жалоба Поделиться Опубликовано 20 сентября, 2011 Рекурсия.РандомайзРелевантность. Ссылка на комментарий
29a Опубликовано 20 сентября, 2011 Жалоба Поделиться Опубликовано 20 сентября, 2011 С радостью вступлю в ряды участников Ссылка на комментарий
haha Опубликовано 20 сентября, 2011 Жалоба Поделиться Опубликовано 20 сентября, 2011 Как дизайнеров и программистов сравнивать?[upd]Да, игра в слова менее интересна. Ссылка на комментарий
bula3 Опубликовано 20 сентября, 2011 Жалоба Поделиться Опубликовано 20 сентября, 2011 Давайте я начну))) Вот мой сайт - http://12королевств.рф/А вы оценивайте))) Ссылка на комментарий
nonlux Опубликовано 20 сентября, 2011 Автор Жалоба Поделиться Опубликовано 20 сентября, 2011 mr.unkind90Я думаю этому здесь не место.Lelush,29aСпасибо за поддержкуhahaЭто разные категории, и разные этапы разработки проэкта они не будут сравниваться между собой.bula3Вот *112. Это как минимум по оптимазации, и по умению читать чужие сообщения.А вообще прочитай первый пост. Там ничего не сказано о том, о том что бы свои сайты сюда выкладывать. Ссылка на комментарий
Trishy Опубликовано 20 сентября, 2011 Жалоба Поделиться Опубликовано 20 сентября, 2011 На что упор в игре - на обучение или на соревнование? В первом случае бы с удовольствием присоединилась... во-втором, боюсь, неконкурентоспособна)Установить Apache+phpэмм... денвер подойдет?в смысле, может вам, программистам, принципиально по-отдельности все устанавливать..) Ссылка на комментарий
nonlux Опубликовано 21 сентября, 2011 Автор Жалоба Поделиться Опубликовано 21 сентября, 2011 Игра один из лучших способов обучения.По этому мы все будем учится, я одному вы другому))Соревнование только в рамках реализации. то есть если ты придумаешь красивое решение то, твой код будет включен как часть движка)Если же твой код будет неудачен, то будут советы как сделать твой код, более понятным и будет оптимальнее решать задачи.Думаю мы постепенно буден внедрять новые элементы в наши правила, будем учится делать адекватное тестирование и рассмотрим которые методы рефракторинга.по поводу денвера я не против, но в итоге если у тебя не будет каких-то модулей дря apache или расширений и pear для php тебе придется разбираться и с этим.Например не знаярасширений которые тебе потребуются , ты можешь ошибиться в выборе хостинга. Ссылка на комментарий
L0K1 Опубликовано 21 сентября, 2011 Жалоба Поделиться Опубликовано 21 сентября, 2011 1. Поставьте linux. =)2. php + apache не панацея.И для нормальной работы нужно 3 человека.web программист(python/ruby/php/net/java/)(со знанием того где это дело будет разворачиваться и с базовыми знаниями дизайна)дизайнерИ человек который рубит и в дизайне и в программировании. (верстка на нем обычно.)Код - http://video.gunlinux.org#!/home/loki/flask/env/bin/python2# -*- coding: utf-8 -*-from flask import Flask,request,render_templateimport re,urllib#app = Flask(__name__)app.debug=True#"""def hack_sibnet(text): text = urllib.unquote(text).encode('1251') data = {"text": text ,'rubid':'0','inname ':'1','intext':'1','inkeyw':'1','inalbom':'1'} enc_data = urllib.urlencode(data) f = urllib.urlopen("http://video.sibnet.ru/search.php" + "?" + enc_data ) data = f.read().decode('cp1251') return [{'id':i[0],'name':i[1]} for i in re.findall(r'(.+)',data)]#"""def finder(pattern,data): rez = re.findall(pattern,data) if len(rez)==0: return None return rez[0]#def get_audio(url): try: url = urllib.unquote(url) except: return None return finder(r'(http://.+\.mp3)',url)##def work_url(url): try: url = urllib.unquote(url) except: return None videoid = finder(r'http://video.sibnet.ru/video([\d]+)',url) print videoid if videoid: t = "http://video.sibnet.ru/upload/video"+videoid+".flv" return t rez = finder(r'(http://.+\.html)',url) if rez: f = urllib.urlopen(rez) try: data = f.read() except: return None fileurl = finder(r'(http.+\.flv)',data) fileurl = urllib.unquote(fileurl) return fileurl return Nonedef get_video(url): try: url = urllib.unquote(url) except: return None return finder(r'(http://.+\.flv|http://.+\.mp4)',url)#@app.errorhandler(404)def page_not_found(e): return render_template('404.html'),404#@app.route('/',methods=['POST','GET'])def main(): if request.method == 'POST': if request.form['text']: url = request.form['text'] try: url = urllib.unquote(url) except: pass audio = get_audio(url) if audio: return render_template('player.html',audio=audio,url=url) video = get_video(url) if video: return render_template('player.html',video=video,url=url) video = work_url(url) if video: return render_template('player.html',video=video,url=url) if request.method == 'GET': if 'url' in request.args and request.args['url']: return render_template('player.html',video=work_url(request.args['url']),url=request.args['url']) return render_template('player.html')#@app.route('/robots.txt')def robots(): return 'User-Agent: *\rDisallow: *\r\rHost: video.gunlinux.org'##if __name__ == '__main__': app.run('127.0.0.1',5006) Ссылка на комментарий
nonlux Опубликовано 21 сентября, 2011 Автор Жалоба Поделиться Опубликовано 21 сентября, 2011 L0K1Извини но ты о чем?К чему линунс?По моему здесь не трольтема о том что круче win, lin, maс и иже с ними.php apache не понацея, это факт. но к чему это, если тема о том что бы построить как построить веб приложение на php и разобраться, как работают некоторые из движков.для нормальой разработки может быть и один человек, а может быть и сотня команд и что с этого. в первом посте просто описаны возможные роли.И к чему код http://video.gunlinux.org? Ссылка на комментарий
L0K1 Опубликовано 21 сентября, 2011 Жалоба Поделиться Опубликовано 21 сентября, 2011 mac os - на ней создаются веб приложения.linux - на нем они работают.windows - на нем проверяется верстка ie6/7/8.Для веб разработки must have, имхо.Под движком что понимается?Самый простой способ изучить технологию.1. Берем язык <любой(php/ruby/python)>2. Пишем маленькую гостевуху.3. По дороге разучиваем ,,, 4. Берем VMC фреймворк этого языка5. Пишем что нить посложнее6. По дороге гораздо подробнее ковыряем ,, Тут надо начинать не с php+apache, а ссылка на php в трех строчках. rest интерфейс, html наконец, css как бонус.И правильный алгоритм разработки сайта/приложения. С сылочками на матчасть. Ссылка на комментарий
nonlux Опубликовано 21 сентября, 2011 Автор Жалоба Поделиться Опубликовано 21 сентября, 2011 4. Берем VMC фреймворк этого языкаВот я о том что бы разобрать как это работает)Добавлено спустя 5 минут 48 секунд:А почему php?Мне нужен этот опыт в рамках php. Ссылка на комментарий
ViktorOBM Опубликовано 21 сентября, 2011 Жалоба Поделиться Опубликовано 21 сентября, 2011 nonluxВот вы говорите задачки несложные, а может ли чему-то научиться настолько жёсткий нубас, который даже не знает, что такое Apache и PHP? Ссылка на комментарий
nonlux Опубликовано 22 сентября, 2011 Автор Жалоба Поделиться Опубликовано 22 сентября, 2011 Как кое-где говорят, нло удалило это сообщенииПожалуй луна на меня сильно действует, а тяжелый рабочий день вообще выкрутил могзиПростите если обидел. Ссылка на комментарий
blackdevil Опубликовано 22 сентября, 2011 Жалоба Поделиться Опубликовано 22 сентября, 2011 наверное он хотел сказать, сможет ли человек который плохо в этом шарит , участвовать в этой игре ,что то решать и научиться чему-то Ссылка на комментарий
nonlux Опубликовано 22 сентября, 2011 Автор Жалоба Поделиться Опубликовано 22 сентября, 2011 blackdevilОй ты прав.ViktorOBMПрошу прошения, пост удалил.ViktorOBMКонечно можно, для начала попробуй сам разобраться, гугль в помощь.А я сегодня вечером, нарисую маленькую схемку, о том как же работают эти интернеты).Еще раз прошу прошения Ссылка на комментарий
nonlux Опубликовано 23 сентября, 2011 Автор Жалоба Поделиться Опубликовано 23 сентября, 2011 Как и обещал, правда с небольшим запозданием, написал, как рабают интренеты.Обновил первый пост. Ссылка на комментарий
nonlux Опубликовано 23 сентября, 2011 Автор Жалоба Поделиться Опубликовано 23 сентября, 2011 Обновил первый пост.Короче, посмотрим что получится, написал первое задание.Срок два-три дня. Ссылка на комментарий
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти