Comments 77
Хабрапарсер покоцал кавычки.
+1
Хм. Сообщил об ошибке. Типографизация внутри тега «code», мягко говоря, не эффективна :)
+5
alexey.sveshnikov.ru/httpd.sh
вот здесь можно скачать этот скриптик в виде plan text.
вот здесь можно скачать этот скриптик в виде plan text.
+2
«Here be dragons»
0
Сжатая версия: gist.github.com/alexey-sveshnikov/3a109b61ce6241770a86
Отформатированная: gist.github.com/alexey-sveshnikov/69d502aefd05a539c165
Отформатированная: gist.github.com/alexey-sveshnikov/69d502aefd05a539c165
0
Проверить бы его в реальных условиях. На том же баше, например :)
0
Насчет полноценности я бы поспорил :) Из всех возможных http-статусов только 200 и 404 поддерживается.
+2
Bash — rulez!
0
Новость второй свежести. Да и сложно назвать это http-сервером на bash, ибо работает оно скорее благодаря netcat.
+1
:)))
когда то был еще проект веб-сервера на пхп)
когда то был еще проект веб-сервера на пхп)
+1
А пхп как работает без «родительского» серевера? Или там система сервер->пхп->сервер? )
Или там прогу юзали, которая из пхп исполняемый файл компилит?
Заинтриговали :)
Или там прогу юзали, которая из пхп исполняемый файл компилит?
Заинтриговали :)
-10
насколько я понимаю он работает просто через пхп-интерпретатор.
скачать можно здесь — www.jaslabs.com/DownloadFiles/nanoweb_2.2.8.tgz
скачать можно здесь — www.jaslabs.com/DownloadFiles/nanoweb_2.2.8.tgz
+2
пхп это полноценный язык програмирования, а потом уже модуль для апача и иже с ними…
+3
Нет, конечно.
И вы сами убедились бы в этом, если бы те повторяли тупо эти байки для чайников, а хотя бы раз попробовали воспользоваться им как «полноценным языком». Там та-а-акие спецэффекты вылазят — мама не горюй! :)
Шаблонизатор — переросток, не более.
ЗЫ. Ой, щаз быдлокодеры понабегут-набегут. Которые сами ничего не пробовали сделать, но Рабинович им напел… про «полноценный языг», ага.
И вы сами убедились бы в этом, если бы те повторяли тупо эти байки для чайников, а хотя бы раз попробовали воспользоваться им как «полноценным языком». Там та-а-акие спецэффекты вылазят — мама не горюй! :)
Шаблонизатор — переросток, не более.
ЗЫ. Ой, щаз быдлокодеры понабегут-набегут. Которые сами ничего не пробовали сделать, но Рабинович им напел… про «полноценный языг», ага.
-9
уж далеко не последний по полноценности.
я клиент торрента кстати на нем делал для кэширования на трекере. Правда я им сейчас не пользуюсь т.к. доводить до ума некогда, к тому же нашел хорошую альтернативу на perl.
я клиент торрента кстати на нем делал для кэширования на трекере. Правда я им сейчас не пользуюсь т.к. доводить до ума некогда, к тому же нашел хорошую альтернативу на perl.
-3
а трекер (не веб морда, а именно трекер) тоже на ПХП написан.
а клиент, кстати, из командной строки запускается, ему http-сервер совсем и не нужен.
а клиент, кстати, из командной строки запускается, ему http-сервер совсем и не нужен.
+1
А Вы, сами если и не быдлокодер, то на холиварщика точно похожи)))
+3
C точки зрения машины Тьюринга очень даже язык программирования. Даже с запросом на ООП. Правда интерпретируемый.
Python — тоже интерпретируемый.
Языки просто разные. Разные возможности.
Или вы Basic не считаете языком программирования?
P.S. Я думаю негативное отношение к PHP возникает либо от неправильного понимания области его применения либо от огромного кол-во «быдлокодеров» на нем пишущего.
Python — тоже интерпретируемый.
Языки просто разные. Разные возможности.
Или вы Basic не считаете языком программирования?
P.S. Я думаю негативное отношение к PHP возникает либо от неправильного понимания области его применения либо от огромного кол-во «быдлокодеров» на нем пишущего.
+1
Про полноту я ничего не говорил. И про бейсик тоже.
Понимание области применения пхп у меня правильное — шаблонизатор-переросток для изготовления домашних страничек.
Ну, эквивалентен машине Тьюринга. Так брейнфак тоже эквивалентен машине Тьюринга.
Ну, ООП спёрли из явы зачем-то совершенно бездумо… Особенно меня поразило зачем спёрли интерфейсы :)
Ну, трекер можно написать… Дык и на баше, вон, хттп-стервер можно написать, но это же прикол, а не повод :).
Чем скорее это кривое недоразумение издохнет, тем лучше будет.
Понимание области применения пхп у меня правильное — шаблонизатор-переросток для изготовления домашних страничек.
Ну, эквивалентен машине Тьюринга. Так брейнфак тоже эквивалентен машине Тьюринга.
Ну, ООП спёрли из явы зачем-то совершенно бездумо… Особенно меня поразило зачем спёрли интерфейсы :)
Ну, трекер можно написать… Дык и на баше, вон, хттп-стервер можно написать, но это же прикол, а не повод :).
Чем скорее это кривое недоразумение издохнет, тем лучше будет.
-1
Почему-то я не поддерживаю вашего пессимизма )
PHP-шаблонизатор — это клише. Весьма необоснованное.
Я ведь не пытаюсь доказать, что PHP лучшие ли хуже Java, Ruby, Phyton, C (++). Ну разные возможности, отсюда разные сферы применения.
Насчет переростка для домашних страничек вы загнули. Перечислять крупные проекты, которые написанны на PHP?
Wikipedia, Digg, Flickr. Достаточно?
А то, что при неправильном проектировании от языка ничего не зависит? Тормоза twittera забыли?
По вашему MySQL — тоже жалкая и никому не нужная пародия на PostgreSQL (ORALCE, DB2, нужное подставить)?
PHP-шаблонизатор — это клише. Весьма необоснованное.
Я ведь не пытаюсь доказать, что PHP лучшие ли хуже Java, Ruby, Phyton, C (++). Ну разные возможности, отсюда разные сферы применения.
Насчет переростка для домашних страничек вы загнули. Перечислять крупные проекты, которые написанны на PHP?
Wikipedia, Digg, Flickr. Достаточно?
А то, что при неправильном проектировании от языка ничего не зависит? Тормоза twittera забыли?
По вашему MySQL — тоже жалкая и никому не нужная пародия на PostgreSQL (ORALCE, DB2, нужное подставить)?
+1
>А то, что при неправильном проектировании от языка ничего не зависит?
Если вы перечитаете мой ответ, то, возможно, поймёте, что с этим я не спорил. И на баше можно хттп-сервер написать, повторюсь :). И тетрис на авке. И википедию на пхп. Вопрос в другом — зачем же так себя мучить? :) И, главное, зачем же так мучить тех, кто это потом поддерживать станет? :(
И возможности не при чём. Ну, есть там «возможности». Напихали, как в бейсик в своё время. Язык экстенсивного развития. Бездумная и безумная несистематизированая свалка всего на свете зачастую в нескольких экземплярах с уродским синтаксисом впридачу. Язык должен помогать программисту писать лаконичные, логичные, ясные и сопровождаемые программы. В _этом_ смысле пхп — полное дерьмо.
Если вы перечитаете мой ответ, то, возможно, поймёте, что с этим я не спорил. И на баше можно хттп-сервер написать, повторюсь :). И тетрис на авке. И википедию на пхп. Вопрос в другом — зачем же так себя мучить? :) И, главное, зачем же так мучить тех, кто это потом поддерживать станет? :(
И возможности не при чём. Ну, есть там «возможности». Напихали, как в бейсик в своё время. Язык экстенсивного развития. Бездумная и безумная несистематизированая свалка всего на свете зачастую в нескольких экземплярах с уродским синтаксисом впридачу. Язык должен помогать программисту писать лаконичные, логичные, ясные и сопровождаемые программы. В _этом_ смысле пхп — полное дерьмо.
-1
Я даже не буду спрашивать почему он тогда так популярен.
Предвижу ответ: «PHP — для быдлокодеров».
Предвижу ответ: «PHP — для быдлокодеров».
0
Сто раз уже отвечали на этот вопрос — низкий порог вхождения.
+1
Неужели из-за того, что это мощный, изящный, логичный и красивый язык программирования с ясным синтаксисом и чётко выстроеной парадигмой? :)
+2
Холивар :)
Нет, это обычный молоток, чтобы забивать гвозди. Изящество ему никчему.
С другой стороны на нем сложно написать такой ужас (синтаксический), как на C, Perl, Python.
Нет, это обычный молоток, чтобы забивать гвозди. Изящество ему никчему.
С другой стороны на нем сложно написать такой ужас (синтаксический), как на C, Perl, Python.
0
Шуруп можно забить и камнем, но приятнее, полёзнее, качественнее и быстрее всё же вкрутить его шуруповёртом. Кстати, потом можно будет его и открутить если что, в отличии от. Да даже и гвоздь приятнее забивать качественным молотком с гладкой непроскальзывающей рукояткой и бойком из стали нужной твёрдости, чем куском мягкого плющащегося железа, периодически соскакивающего с занозистой и кривой палки-суковатки :).
Про синтаксический ужас я бы поспорил. По-моему, пхп сам по себе уже синтаксический ужас :(.
Про синтаксический ужас я бы поспорил. По-моему, пхп сам по себе уже синтаксический ужас :(.
0
за интерфейсы SPL — разработчикам отдельное спасибо
0
А при чём здесь SPL??? Это ведь библиотека?
Я про интерфейсы. Которые interface. Видите, вы даже не в курсе :). Вот и я в недоумении — зачем они нужны в динамическом интерпретируемом языке.
Я про интерфейсы. Которые interface. Видите, вы даже не в курсе :). Вот и я в недоумении — зачем они нужны в динамическом интерпретируемом языке.
+2
Ну наверное для структурирования кода. И еще для множественного наследования.
0
Лишняя сущность. По-моему просто пёрли механизм ООП из явы, заодно прихватили и интерфейсы :) даже не подумавши почему без них (или аналога) невозможно жить в яве и почему они никому не нужны здесь.
Теоретически, можно волевым решением и угрозой увольнения заставить разработчиков «структурировать» код интерфейсами, но, по-моему, гораздо практичнее и полезнее заставить их писать документацию :).
Множественное наследование интерфейсов бесполезно при отсутсвии пользы от самих интерфейсов.
Теоретически, можно волевым решением и угрозой увольнения заставить разработчиков «структурировать» код интерфейсами, но, по-моему, гораздо практичнее и полезнее заставить их писать документацию :).
Множественное наследование интерфейсов бесполезно при отсутсвии пользы от самих интерфейсов.
-2
айайай! Вы даже не удосужились глянуть на страницу www.php.net/~helly/php/ext/spl/ — страницу этой самой библиотеки.
Все дело в том, что эта библиотека дала возможность использовать нативные интерфейсы RecursiveIterator, IteratorAggregate, OuterIterator, Countable, SplObserver и достаточное количество абстрактных классов для построения сложных систем.
А нужны они по одной простой причине — для написания качественного, расширяемого кода.
Посмотрите limb, onPHP, mzz — сложные и интересные объектные струтктуры — и Ваш сарказм заметно поубавится :)
Все дело в том, что эта библиотека дала возможность использовать нативные интерфейсы RecursiveIterator, IteratorAggregate, OuterIterator, Countable, SplObserver и достаточное количество абстрактных классов для построения сложных систем.
А нужны они по одной простой причине — для написания качественного, расширяемого кода.
Посмотрите limb, onPHP, mzz — сложные и интересные объектные струтктуры — и Ваш сарказм заметно поубавится :)
0
на лимб не то чтобы смотреть, о нем думать страшно.
0
Лишняя сущность в динамических языках. Если бы её небыло ничего бы не изменилось. Что вы своей библиотекой? Какое она имеет отношение к конкретной языковой конструкции? То, что кто-то не поленился и понаписал их туда? :)
0
Я «пришел» в php из Flash/Flex, имея вобщем-то немалый «багаж» в архитектурировании приложений. Продирался довольно долго через отсутствие полноценного контекста приложения. Упрощал сам несколько раз решения, отказывался от шаблонов проектирования, к которым привык. Что-то вырисовал для себя, чем сейчас и пльзуюсь.
Интерфейсы абсолютно не лишние (по крайней мере для меня). Самый простой пример — инверсия зависимостей (базовые зависимости — это интерфейсные зависимости) Это отлично применимо и к динамическим языкам и к любым другим. Еще один пример — реализация паттерна Наблюдатель в интерфейсах. Отличная вещь, которая в купе с memcached, паттерном ActiveRecord и IdentityMap позволила выжить довольно сложному высоконагруженному проекту и показать производительность на 30% выше при прочих равных в сравнении с процедурным кодом.
А то, что кто-то не поленился — честь и хвала :)
Интерфейсы абсолютно не лишние (по крайней мере для меня). Самый простой пример — инверсия зависимостей (базовые зависимости — это интерфейсные зависимости) Это отлично применимо и к динамическим языкам и к любым другим. Еще один пример — реализация паттерна Наблюдатель в интерфейсах. Отличная вещь, которая в купе с memcached, паттерном ActiveRecord и IdentityMap позволила выжить довольно сложному высоконагруженному проекту и показать производительность на 30% выше при прочих равных в сравнении с процедурным кодом.
А то, что кто-то не поленился — честь и хвала :)
0
а когда-то и полноценный сервер на vb :)
0
Пусть он его сам и юзает xDDD
-12
Это не больше, чем развлечение, практической пользы 0, имхо.
-7
Это скорее искусство. Имхо.
+12
Имхо бывают разные внештатные ситуации… Может когда и пригодится.
0
Данный вариант полезен, когда, например, необходимо раздать по-быстрому какой-либо файл.
Оригинальная идея вот: alexey.sveshnikov.ru/blog/2006/12/22/hint-9-swiss-army-knife/
Вот тут ещё это обсуждалось: www.opennet.ru/tips/info/1352.shtml
Оригинальная идея вот: alexey.sveshnikov.ru/blog/2006/12/22/hint-9-swiss-army-knife/
Вот тут ещё это обсуждалось: www.opennet.ru/tips/info/1352.shtml
0
Занятная идея. Порадовал :)
+1
Насчет извращений: тетрис и арканоид на sed меня сильнее впечатлили :)
+6
о, убийца лайти и энжиникса? =)
+1
bash: nc: command not found
0
Жду версию с поддержкой многопоточности ;)
В генту опция -с, похоже, не поддерживается.
Понравилась идея nc -l -p 8080 < file. Вот уж действительно «раздать файл по-быстрому». Как ни странно, браузер воспринимает почти нормально.
В генту опция -с, похоже, не поддерживается.
Понравилась идея nc -l -p 8080 < file. Вот уж действительно «раздать файл по-быстрому». Как ни странно, браузер воспринимает почти нормально.
0
работает:
emerge net-analyzer/netcat -av
[ebuild R ] net-analyzer/netcat-110-r8 USE=«crypt -ipv6 -static» 0 kB
emerge net-analyzer/netcat -av
[ebuild R ] net-analyzer/netcat-110-r8 USE=«crypt -ipv6 -static» 0 kB
0
странно, у меня не работает. Может, я что-то не так делаю?
host ~ # emerge net-analyzer/netcat -av ... [ebuild R ] net-analyzer/netcat-110-r8 USE="crypt -ipv6 -static (-GAPING_SECURITY_HOLE%)" 0 kB ... host ~ # :; while [ $? -eq 0 ]; do nc -vlp 8080 -c'(r=read; e=echo;$r a b c; z=$r; while [ ${#z} -gt 2 ]; do $r z; done; f=`stat -c%s $f`»;$e; cat $f; else $e -e «$h 404 Not Found\n\n404\n»; fi)'; done $e «$o$c-Type: `file -ib $f`\n$c-Length: ` nc -h for help host ~ # nc -c nc: option requires an argument -- c nc -h for help host ~ # nc -c echo nc -h for help host ~ # nc -h | grep -- -c host ~ #
0
nc -h | grep — -c
-c shell commands as `-e'; use /bin/sh to exec [dangerous!!]
… попробуйте удалить, а потом заново установить програму
использую портежи с mirror.yandex.ru/gentoo-distfiles/ и оверлей sabayon
вот список патчей, которые применяются при установке:
* 00_all_unstripped.patch.bz2… [ ok ]
* 01_all_glibc_resolv_h.patch.bz2… [ ok ]
* 02_all_arm_timer.patch.bz2… [ ok ]
* 03_all_posix_setjmp.patch.bz2… [ ok ]
* 10_all_nopunt.patch.bz2… [ ok ]
* 11_all_nosleep.patch.bz2… [ ok ]
* 12_all_single_verbose_ipv6.patch.bz2… [ ok ]
* 13_all_use_getservbyport.patch.bz2… [ ok ]
* 14_all_read_overflow.patch.bz2… [ ok ]
* 15_all_help_write_to_stdout.patch.bz2… [ ok ]
* 20_all_inet_aton.patch.bz2… [ ok ]
* 21_all_udp_broadcast_ipv6.patch.bz2… [ ok ]
* 22_all_quit_ipv6.patch.bz2… [ ok ]
* 23_all_dash_port.patch.bz2… [ ok ]
* 24_all_sh_c.patch.bz2… [ ok ]
* 50_all_aes_crypto.patch.bz2…
-c shell commands as `-e'; use /bin/sh to exec [dangerous!!]
… попробуйте удалить, а потом заново установить програму
использую портежи с mirror.yandex.ru/gentoo-distfiles/ и оверлей sabayon
вот список патчей, которые применяются при установке:
* 00_all_unstripped.patch.bz2… [ ok ]
* 01_all_glibc_resolv_h.patch.bz2… [ ok ]
* 02_all_arm_timer.patch.bz2… [ ok ]
* 03_all_posix_setjmp.patch.bz2… [ ok ]
* 10_all_nopunt.patch.bz2… [ ok ]
* 11_all_nosleep.patch.bz2… [ ok ]
* 12_all_single_verbose_ipv6.patch.bz2… [ ok ]
* 13_all_use_getservbyport.patch.bz2… [ ok ]
* 14_all_read_overflow.patch.bz2… [ ok ]
* 15_all_help_write_to_stdout.patch.bz2… [ ok ]
* 20_all_inet_aton.patch.bz2… [ ok ]
* 21_all_udp_broadcast_ipv6.patch.bz2… [ ok ]
* 22_all_quit_ipv6.patch.bz2… [ ok ]
* 23_all_dash_port.patch.bz2… [ ok ]
* 24_all_sh_c.patch.bz2… [ ok ]
* 50_all_aes_crypto.patch.bz2…
0
извращение — читать это без нормального форматирования
-2
Не честный пример, так как использует NetCat для управления соединениями.
Чисый bash http сервер, тем не менее, возможно написать используя /dev/tcp/127.0.0.1/80 (очевидно, что bash должен быть скомпилирован с этой фичей, на ubuntu без нее к сожалению)
Чисый bash http сервер, тем не менее, возможно написать используя /dev/tcp/127.0.0.1/80 (очевидно, что bash должен быть скомпилирован с этой фичей, на ubuntu без нее к сожалению)
0
насколько данный гениальный скрипт будет работоспособен в системах, отличных от linux — таких как solaris, hpux, bsd?
0
Скрипт юзает специфическую опцию нетката, которую я встречал только на некоторых линуксах. В принципе, в ней нет ничего сложно и накатить патчик можно в какой угодно системе. А баш и так везде есть.
0
Наверное я единственный кто не понял тут ни слова
+2
это напоминает конвеер из лего, для сбора машинок из лего.
прикольно, весело, нихрена не полезно.
прикольно, весело, нихрена не полезно.
-1
Sign up to leave a comment.
HTTP сервер на bash