nikedeforest
|
|
« : 30-05-2005 19:32 » |
|
Хотелось бы многое узнать о С++ скриптах. Во-первых, посоветуйте литературу для начинающего в использование С++ в качестве скрипта и о написании их. И если несложно напишите, часто - ли вы применяете такие скрипты и в каких целях. зы: в данном вопросе полный ламер (но С++ знаю), т.е. я даже не представляю в каком виде хранятся эти скрипты, как они запускаются, функционирует, возможно-ли взаимодействие с ПХП и пр., т.е. любая верная информация будет полезна, но желательно ближе к делу.
|
|
|
Записан
|
ещё один вопрос ...
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #1 : 30-05-2005 19:47 » |
|
nikedeforest Если ты имееш ввиду CGI, то почитай здесь http://www.firststeps.ru/cgi/cgi1.htmlНасколько я понял по ихним объяснениям, это простая программа. Весь ввод-вывод ведется через потоки данных.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
nikedeforest
|
|
« Ответ #2 : 30-05-2005 20:15 » |
|
Дя, я имею ввиду CGI. Спасибо Finch, и как я мог забыть про firststep.ru???
|
|
|
Записан
|
ещё один вопрос ...
|
|
|
RXL
|
|
« Ответ #3 : 30-05-2005 20:50 » |
|
nikedeforest, скриптами считаются интерпетируемые или компилируемые перед исполнением текстовые файлы. "С" - компилируют заранее.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
nikedeforest
|
|
« Ответ #4 : 31-05-2005 11:49 » |
|
Пока вчитываюсь на firststeps, попозже может вопросы будут. Но пока один, из разряда зачем и почему. Прочитав пару уроков, я увидел большое сходство CGI-скриптов и ПХП (методы передачи данных к примеру (Get POST)). Я не пойму, они все реализуют одну и ту же задачу что-ли? Есть -ли смысл применять С в качестве CGI-скрипта? И, если несложно, приведите пример того, что можно сделать с помощью С и нельзя с помощью ПХП, а то на firststeps приводят пример гостевой книги, которая и на ПХП получается нормально.
|
|
|
Записан
|
ещё один вопрос ...
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #5 : 31-05-2005 11:59 » |
|
nikedeforest С/C++ Это универсальный язык. В принципе на нем сварганить хоть что можно. Также я видел книжку, как написать CGI на Delppi. Но сразу встает вопрос времени. ПХП, PHP заточены именно на этом, многие рутинные веши уже сделаны. Остается только твой творческий полет. PHP и ПХП насколько я знаю, это интерпритаторы (но могу ошибаться). CGI это уже откомпилированная программа.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
nikedeforest
|
|
« Ответ #6 : 31-05-2005 12:24 » |
|
Finch, PHP и ПХП - это одно и тоже . С/C++ Это универсальный язык. В принципе на нем сварганить хоть что можно
ЗОЛОТЫЕ СЛОВА.
|
|
|
Записан
|
ещё один вопрос ...
|
|
|
nikedeforest
|
|
« Ответ #7 : 13-06-2005 13:19 » |
|
Народ, объясните мне. Не модно что-ли сейчас использовать С++ в CGI-скриптах. Все используют ПЕРЛ. Неужели С++ уступает ПЕРЛ в чем-то? Вопрос №2: А реально написать скрипт, который бы все время выполнялся в фоновом режиме? Кажется по другому это дело ДЕМОН называется. На firststeps.ru че-то маловато по СGI скриптам, так сказать введение.
|
|
|
Записан
|
ещё один вопрос ...
|
|
|
Chaa
|
|
« Ответ #8 : 14-06-2005 03:56 » |
|
Почему Perl или PHP - потому, что примерно на порядок проще. Используют ли C/C++ - да, Яндекс, например. Потому, что очень большие нагрузки и производительность критична. Если не хватает функциональности, например, PHP, то лучше всего написать свое расширение к PHP (PHP-extension).
|
|
|
Записан
|
|
|
|
nikedeforest
|
|
« Ответ #9 : 14-06-2005 09:00 » |
|
Спасибо, успокоил . Вопрос №2 в силе.
|
|
|
Записан
|
ещё один вопрос ...
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #10 : 14-06-2005 09:19 » |
|
Реально как на Си так и на Перле. Только ПХП для этого не годится
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #11 : 14-06-2005 10:33 » |
|
Perl не нуждется в компиляции... С++ нуждается - это конкретика....
Поподробнее можно ответить примерно так.
1.Скажем когда ты пишешь все свои скрипты на С++ то ты должен писать и всю организацию вывода в нужный поток. В перле и в пхп ничем подобным заморачивать голову не приходится. 2. Не все хостинги дают доступ к шелу, в котором можно запустить свой скрипт на компиляцию. Не дают доступа к gcc+ и т.д. Перл и ПХП всегда есть. Всегда уже настроены.
Поэтому большинство скриптов пищется на таких языках.
Когда речь встает о быстродействии вспоминаем, что для выполнения программы скрипта при запросе Перл строит для каждого отдельный экземпляр своего бинарника (загребает память и быстродействие у сервера) и тогда только выполняет, поэтому чаще всего Перл более энергоемкий.
ПХП работает чаще всего как модуль Апач и поэтому имеет только один модуль бинарника запущенный на сервере с многопоточной реализацией запросов, что много легче для системы.
А С++ запускает только себя , а не весь язык С++ для выполнения, отсюда менее энергоемкость, и большая производительность...
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
nikedeforest
|
|
« Ответ #12 : 14-06-2005 15:58 » |
|
Спасибо за ответы. Уже что-то в голове светлеет . Реально как на Си так и на Перле.
А для этого что необходимо? Т.е. я никогда не писал под UNIX, Linux и пр. только под Windows, поэтому я не могу судить чем программирование под *Nix отличается от Windows и вообще чем-то оно отличается или нет. Мне нужен(?) какой-нибудьт справочник функций под UNIX, типа того, что по WinAPI для того чтобы написать программу, выполняющуюся в фоновом режиме? Надо-ли мне сильно углубляться в программирование под UNIX?
|
|
|
Записан
|
ещё один вопрос ...
|
|
|
RXL
|
|
« Ответ #13 : 14-06-2005 16:55 » |
|
Перл компилит свои программы перед выполнением - этим и объясняется его скорость выполнения. Причем программы можно скомпилить предварительно в байт-код, компилиреумый перед выполнением тем же перлом, или непосредственно в родной для системы исполняемый формат.
Для ликвидации негативных особенностей CGI существует mod_perl для апача. Он существует не в виде отдельных процессов, а работает в том процессе/потоке апача, который получил HTTP-запрос на обработку. Программа компилируется и код кешируется. Соотв., нет накладных расходов на компиляцию и хранение отдельных работающих копий кода в памяти. Для разных запросов различным остается только динамическая память. Конечно, такая адаптированная система то же имеет изъяны.
nikedeforest, не стоит замарачиваться web-программированием на C++, если конечно это не острая необходимость или обучение. Ты сам подметил главные негативные особенности C++ - программа зависима от платформы.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
nikedeforest
|
|
« Ответ #14 : 14-06-2005 20:45 » |
|
RXL, предлагаешь Perl учить? И вопрос такой. Я что-то не понял, по поводу компиляции. Когда пишишь на Перле выкладываешь скрипт, а когда на С++, то что выкладывать-то?
|
|
|
Записан
|
ещё один вопрос ...
|
|
|
|
nikedeforest
|
|
« Ответ #16 : 15-06-2005 09:59 » |
|
Бинарник.
ЕХЕшник что-ли? А как его запускать то тогда? Хостинг разрешает исполшьзовать С/С++, специально такой выбирали, немного переплатить пришлось. Получаются они мне разрешать ЕХЕшники запускать. СТОП. Нет. Я ЛАМЕР. Что такое бинарник? Само слово binary я знаю, а в качестве файла, что это. Просто, если это в моем понимании ЕХЕшник, то зачем тогда gcc, да и язык уже не имеет значения? Блин, мне стыдно, но я прошу ответа.
|
|
|
Записан
|
ещё один вопрос ...
|
|
|
RXL
|
|
« Ответ #17 : 15-06-2005 10:14 » |
|
nikedeforest, см разницу: бинарный и текстовый. В контексте исполняемых файлов это может быть и exe, и dll, и vxd, и elf (используется в ряде *nix-ов и к расширению не привязан), и т.д..
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
nikedeforest
|
|
« Ответ #18 : 15-06-2005 10:26 » |
|
RXL, но как мне узнать какой файл мне класть на сервер (хостинг), чтобы все работало. Как мне можно писать скрипты нс С/С++, работаю на Денвере. Для Перла там все просто, напишите вначале файла в комментариях путь к файлу perl.exe и ваши скрипты будут работать. А что сделать для С/С++ ничего не сказано. И все же, что кидасть на хостинг, чтобы все работало просто гуд.
|
|
|
Записан
|
ещё один вопрос ...
|
|
|
RXL
|
|
« Ответ #19 : 15-06-2005 11:18 » |
|
Еще раз отступлю от темы: термин "скрипт" (script) означает текстовый исполняемый файл, который интерпретируется другой программой, либо компилируется непосредственно перед исполнением. К C++ это не применимо. Конечно, если тебе так хочется называть - наздоровие, но только этим ты вносишь лишнюю путаницу.
Для CGI тебе нужно exe. Если там стоит IIS, то можно делать программы под ихнее API - там другой принцип используется: программа постоянно работает и последовательно или параллельно (несколько потоков) обрабатывает запросы. Это требует обязательной проверки отсутствия утечек памяти. С CGI проще: программа стартует в отдельном процессе при получении HTTP-запроса, получает данные заголовка в переменных окружения и общается с клиентом через stdin и stdout. CGI - вешь стандартная - поищи в инете описание, какие переменные обязательно будут и что в них ждать.
Используя perl или php ты получаешь многие вещи автоматом: параметры декодируются и помещаются в соотв. переменные. Кроме того, работа с web - это прежде всего работа с текстами, а как следствие - выделение, изменение размеров и освобождение памяти. В скриптовых языках этим занимается сама среда выполнения. В С++ это ты будешь делать сам. Кроме того, программа на C++ будет иметь доступ ко всем ресурсам сервера, а это не безопасно.
Рекомендую поставить такой же сервер, какой будет на хостинге, себе на рабочую или домашнюю машину. Лучше еще и той же версии. Вот на нем и производи все тесты и отладки - на хостинг надо выкладывать готовый продукт.
|
|
« Последнее редактирование: 15-06-2005 11:24 от RXL »
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
nikedeforest
|
|
« Ответ #20 : 16-06-2005 00:15 » |
|
RXL, а компилировать-то мне у себя или на сервере хостинга. Просто, на сервере хостинга получаеься более надежнее, но с друой стороны я даже не представляю себе как. Это вообще возможно? Рекомендую поставить такой же сервер, какой будет на хостинге, себе на рабочую или домашнюю машину. Лучше еще и той же версии. Вот на нем и производи все тесты и отладки - на хостинг надо выкладывать готовый продукт.
Понял.
|
|
|
Записан
|
ещё один вопрос ...
|
|
|
nikedeforest
|
|
« Ответ #21 : 16-06-2005 00:17 » |
|
А литературы по CGI мало. Про Перл много, а вот как на С/С++ практически нет (не только мое мнение).
|
|
|
Записан
|
ещё один вопрос ...
|
|
|
RXL
|
|
« Ответ #22 : 16-06-2005 07:58 » |
|
Я тее уже описал принцип раоты с CGI. В литературе тебе могут только дать советы чего делать, а чего нет. Самые основноые советы: 1) все данный пользователя подлежат обязательной проверке на коректность; 2) всегда проверяй длины строк и, соотв., не используй фиксированный буферы - лучше их создавать динамически, когда длина содержимого известна; 3) данные от пользователя могут придти в любой кодировке (проверяй по строке заголовка Content-type) - придется перекодировать в кодировку сервера (точнее в ту, с которой будет раотать твоя программа и в которой будут храниться данные); 4) следствие из п.4: windows-1251 не единственная кодировка на свете и она не универсальна; я постепенно прихожу к мнению, что правильнее использовать utf-8 (unicode, но не 16 бит!).
Пока все - остальное потом
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #23 : 16-06-2005 12:04 » |
|
я постепенно прихожу к мнению, что правильнее использовать utf-8 (unicode, но не 16 бит!). И это правильно! Я акого же мнения.
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
nikedeforest
|
|
« Ответ #24 : 16-06-2005 14:36 » |
|
За это спасибо. А что без внимание вопрос о компиляции оставили? он на один пост выше.
|
|
|
Записан
|
ещё один вопрос ...
|
|
|
RXL
|
|
« Ответ #25 : 16-06-2005 14:52 » |
|
nikedeforest, никто тебе не даст компилить на сервере - как ты это себе представляешь?
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
nikedeforest
|
|
« Ответ #26 : 16-06-2005 16:21 » |
|
Я никак, мне приятель сказал , который в этом тоже ничего не рубит , но все таки знает больше меня (мне так показалось, по его словам, он как-то пытался этим заняться, но потом забил из-за недостатка литературы). Это значит, мне надо cygwin поставить наверное. Давно хотел, но все не решался.
|
|
|
Записан
|
ещё один вопрос ...
|
|
|
RXL
|
|
« Ответ #27 : 16-06-2005 19:00 » |
|
Причем тут cygwin?
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
nikedeforest
|
|
« Ответ #28 : 16-06-2005 19:20 » |
|
А там ведь gcc есть. Я так понял это вообще что-то типа эмулятора UNIX под Windows плюс много вской всячины в подарок. Я не прав?
|
|
|
Записан
|
ещё один вопрос ...
|
|
|
RXL
|
|
« Ответ #29 : 16-06-2005 19:40 » |
|
Я бы не назвал cygwin "эмулятором Unix" - скорее unix-подобная среда с эмуляцией некоторых ф-ий и набором стандартных unix-утилит. Ну и еще всякое разное. Но выполняется все в Windows.
Как я понял, у тебя на хостинге будет не win?
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
|