Linux за българи: Форуми

Програмиране => Web development => Темата е започната от: steef в Feb 05, 2010, 21:01



Титла: cgi-bin
Публикувано от: steef в Feb 05, 2010, 21:01
Здравейте ,
от около 2 месеца ми се върти една идея в главата и сега като видях новината за  PHP/HipHop реших да ви поразпитам за вашия опит.Става дума за cgi-bin скриптове , или по-точно програми.Според вас струва ли си да се правят web проекти (като форуми , търсачки и изобщо всякакви динамични сайтове) със C++ и cgi-bin ? Знам , че е изпълнимите файлове са много по-бързи от скриптовете (като мосово използваният php) , но дали могат да предоставят същите възможности ?Вече разбрах , че по този начин може да се обработва информация от HTML форми - http://www.cs.tut.fi/~jkorpela/forms/cgic.html ($2) , но това е единственото ръководство за cgi-bin със C++ , което съм намирал.C++ със сигурност има начин да се свързва със бази данни , но основната възможност , която ме интересува е дали могат да се правят потребителски сесии както с php ?
И сигурно ще ви го помислите за безумие , но какво ще кажете за използване на асемблер , вместо C++ , в името на бързината ?


Титла: Re: cgi-bin
Публикувано от: tyuio в Feb 05, 2010, 21:06
НЕ. Помисли защо уеб света е на рнр и други скриптови езици ако трябва нещо по солидно има жаба и .НЕТ
Имам усещането че не си писал много код бързината е условно понятие хич не ми се мисли как с епише код на асемблер за сайт а и като знам че няма никакви иблиотеки за това. Или има :) ?
темата определено не е за тик.


Титла: Re: cgi-bin
Публикувано от: steef в Feb 05, 2010, 21:20
Еми мисля от 2 месеца и немога да го измисля , та затова ви питам.Извинявам се ако темата не е за тук , прасто се надявах да ми кажете как стои въпроса с линукс дистрибуциите и понеже съм начинаещ , реших да постна в "Linux секция за начинаещи".
Едит : Можеш ли на ми разясниш как стои въпроса с .нет под линукс , или да дадеш малко линкчета ?


Титла: Re: cgi-bin
Публикувано от: tyuio в Feb 05, 2010, 21:29
Ок де, ама това какво има общо с дистрибуциите? Аз не съм на ясно например дали ще има някаква съществена разлика в скоростта на една страница написана на С и на Жаба да речем с което да съм принуден да пиша сайтове на С.(нече ги правя на жаба де :) )
Аи това за което говориш хипхоп не е директно писане на С++.
Мога да кажа че със сигурност ще е мъка писането на такива страници под избраните от теб езици. Всеки език си има определена специфика и предназначение. Сеха рнр не е добър още за десктоп приложения но е страхотен за уеб, особенно за малки и средни приложения. Само че на уеб базираните езици няма как да пишеш драйвери. Жабата е малко по универсална, но и тя си има ограничения


Титла: Re: cgi-bin
Публикувано от: borovaka в Feb 06, 2010, 00:16
А това разглеждал ли си го?
http://www.webtoolkit.eu/wt ($2)
Интересно ми изглежда. Преди време попаднах на този проект. Не съм програмист, просто ми беше привлякло вниманието.


Титла: Re: cgi-bin
Публикувано от: koleto в Feb 07, 2010, 13:41
Казвате, че PHP е добър за малки и средни уеб приложения. А за големи, кой език е най-подходящ? Python, Ruby може би? Иначе идеята за сайтове на асемблер ми харесва. Може да се измисли една библиотека по въпроса.

А хип хоп не компилира ли php скрипта в изпълним код?


Титла: Re: cgi-bin
Публикувано от: sandman_7920 в Mar 12, 2010, 15:33
Няма спор, че C/C++ cgi е много по-бързо от PHP(особено през fast-cgi), но и доста по-трудно се пише. Ако трябва да пишеш неща на по-ниско ниво ти трябва и език от по-ниско ниво C/C++ ето една много добра C++ библиотека http://www.gnu.org/software/cgicc , но ако не си писал на C++ много ще се озориш и дори да си писал трябва да имаш идея и за WEB програмирането


Титла: Re: cgi-bin
Публикувано от: gat3way в Mar 12, 2010, 17:19
На какъвто и език да го напишеш, CGI скрипта е далеч по-бавен вариант от mod_perl/mod_php или квото и да е там, което се обработва в рамките на apache worker-а.

При fastcgi нещата стоят малко по-различно, защото вече има форкнат cgi процес. Дали обаче ще намажеш особено много от гледна точка на performance, не е много сигурно.

Но и това не е причината, поради която такава идея не е много добра. Просто C/C++ не става за такива неща. Цял нов клас уязвимости и бъгове ще се въведат само заради избора на езика. При PHP/Perl/Python/J2EE, въобще не ти трябва да мислиш за това какво се случва с паметта. На C - трябва. Елементарни примери мога да дам - ще сбъркаш някъде в някоя функция да декларираш примерно char bla[200], ще направиш strcpy(bla,getenv("HTTP_USER_AGENT")); за да вземеш user agent-a на клиента, в момента в който се окаже че той е по-дълъг от 200 байта, препълваш буфера и вероятно приложението ще крашне. Това може да има и security последици. Друг пример - динамично заделяш памет според GET параметър зададен от потребителя. Зъл потребител просто заявява скрипта с голяма стойност на параметъра и твоят скрипт изяжда всичката РАМ на машината, която успее. Или пък някъде викваш malloc(), но забравяш да освободиш паметта, така паметта лека полека leak-ва...докато останеш без свободна памет. И такива работи. Езици като PHP ти спестяват ужасно много неща, с които ще си биеш главата на C, а и покрай това те лишават от възможността да въведеш определени видове бъгове в приложението.

На асемблер да пишеш уеб приложения....ехех, много смело :)  Ще ми се да видя някъде нещо такова :)


Титла: Re: cgi-bin
Публикувано от: v_badev в Mar 12, 2010, 17:36
gat3way, примерите които си дал не са коректни. В C++ кода за взимане на на променлива от средата въобще не включва заделяне и освобождаване на памет - std::string user_agent = getenv("HTTP_USER_AGENT"); За другите неща важи същото. Това че може да ползваш стандартната библиотека на C в C++ програма не означава че трябва да го правиш.

@koleto, това че някои от най-натоварените сайтове като facebook и wikipedia са писани на PHP би трябвало да отговори на въпроса ти. Явно с достатъчно хардуер всичко може да се напише на PHP.

Има проекти като CppCMS ($2), но тяхното приложение е ако имаш много слабо устройство или малко ресурси и голямо натоварване. Основно се ползват от web интерфейс на разни рутери. Всичко различно от PHP, Python, .NET и Java за web е безсмислено. Само за тях има много готови библиотеки, различни фреймуорки и много готов код. А и на всички изброени езици за едно и също нещо се пише по-малко код отколкото на C++.


Титла: Re: cgi-bin
Публикувано от: victim70 в Mar 12, 2010, 19:42
Ако се управляват процеси в реално време то решението е cgi+php. За всичко друго има и по лесен начин на писане.