Как стать автором
Обновить

Комментарии 77

Хабрапарсер покоцал кавычки.
Хм. Сообщил об ошибке. Типографизация внутри тега «code», мягко говоря, не эффективна :)
Я уже дня три назад об этом писал, сказали поправят, но еще не поправили :-(
Они вам не поверили )
alexey.sveshnikov.ru/httpd.sh
вот здесь можно скачать этот скриптик в виде plan text.
«Here be dragons»
Спасибо
Спасибо, я искал автора, но не нашел, видимо потому что гуглил в англовебе. Добавил в пост.
Так я в англовебе и нашел пост, в котором была ссылка на авторский ЖЖ )
Проверить бы его в реальных условиях. На том же баше, например :)
Насчет полноценности я бы поспорил :) Из всех возможных http-статусов только 200 и 404 поддерживается.
Ну вы как дети малые :) Как будто кто то серьезно говорит о промышленном использовании. Это уже занудство имхо. В то время как автор привел всего лишь очередной пример нестандартного применения инструментов.
Новость второй свежести. Да и сложно назвать это http-сервером на bash, ибо работает оно скорее благодаря netcat.
:)))

когда то был еще проект веб-сервера на пхп)
А пхп как работает без «родительского» серевера? Или там система сервер->пхп->сервер? )
Или там прогу юзали, которая из пхп исполняемый файл компилит?
Заинтриговали :)
насколько я понимаю он работает просто через пхп-интерпретатор.

скачать можно здесь — www.jaslabs.com/DownloadFiles/nanoweb_2.2.8.tgz
пхп это полноценный язык програмирования, а потом уже модуль для апача и иже с ними…
Нет, конечно.
И вы сами убедились бы в этом, если бы те повторяли тупо эти байки для чайников, а хотя бы раз попробовали воспользоваться им как «полноценным языком». Там та-а-акие спецэффекты вылазят — мама не горюй! :)
Шаблонизатор — переросток, не более.

ЗЫ. Ой, щаз быдлокодеры понабегут-набегут. Которые сами ничего не пробовали сделать, но Рабинович им напел… про «полноценный языг», ага.
уж далеко не последний по полноценности.
я клиент торрента кстати на нем делал для кэширования на трекере. Правда я им сейчас не пользуюсь т.к. доводить до ума некогда, к тому же нашел хорошую альтернативу на perl.
Поражает до глубины души мужество и отвага людей, способные гланды… через жопу… автогеном… Понять причину этого безумия мне не дано. :) Зачем было не воспользоваться чем-то более удобным?
ЗЫ. Минусы — не мои, я их не ставлю из принципа.
а трекер (не веб морда, а именно трекер) тоже на ПХП написан.
а клиент, кстати, из командной строки запускается, ему http-сервер совсем и не нужен.
А Вы, сами если и не быдлокодер, то на холиварщика точно похожи)))
C точки зрения машины Тьюринга очень даже язык программирования. Даже с запросом на ООП. Правда интерпретируемый.
Python — тоже интерпретируемый.
Языки просто разные. Разные возможности.
Или вы Basic не считаете языком программирования?

P.S. Я думаю негативное отношение к PHP возникает либо от неправильного понимания области его применения либо от огромного кол-во «быдлокодеров» на нем пишущего.
Про полноту я ничего не говорил. И про бейсик тоже.
Понимание области применения пхп у меня правильное — шаблонизатор-переросток для изготовления домашних страничек.
Ну, эквивалентен машине Тьюринга. Так брейнфак тоже эквивалентен машине Тьюринга.
Ну, ООП спёрли из явы зачем-то совершенно бездумо… Особенно меня поразило зачем спёрли интерфейсы :)
Ну, трекер можно написать… Дык и на баше, вон, хттп-стервер можно написать, но это же прикол, а не повод :).
Чем скорее это кривое недоразумение издохнет, тем лучше будет.
Почему-то я не поддерживаю вашего пессимизма )
PHP-шаблонизатор — это клише. Весьма необоснованное.
Я ведь не пытаюсь доказать, что PHP лучшие ли хуже Java, Ruby, Phyton, C (++). Ну разные возможности, отсюда разные сферы применения.
Насчет переростка для домашних страничек вы загнули. Перечислять крупные проекты, которые написанны на PHP?
Wikipedia, Digg, Flickr. Достаточно?
А то, что при неправильном проектировании от языка ничего не зависит? Тормоза twittera забыли?
По вашему MySQL — тоже жалкая и никому не нужная пародия на PostgreSQL (ORALCE, DB2, нужное подставить)?
>А то, что при неправильном проектировании от языка ничего не зависит?

Если вы перечитаете мой ответ, то, возможно, поймёте, что с этим я не спорил. И на баше можно хттп-сервер написать, повторюсь :). И тетрис на авке. И википедию на пхп. Вопрос в другом — зачем же так себя мучить? :) И, главное, зачем же так мучить тех, кто это потом поддерживать станет? :(

И возможности не при чём. Ну, есть там «возможности». Напихали, как в бейсик в своё время. Язык экстенсивного развития. Бездумная и безумная несистематизированая свалка всего на свете зачастую в нескольких экземплярах с уродским синтаксисом впридачу. Язык должен помогать программисту писать лаконичные, логичные, ясные и сопровождаемые программы. В _этом_ смысле пхп — полное дерьмо.
Я даже не буду спрашивать почему он тогда так популярен.
Предвижу ответ: «PHP — для быдлокодеров».
Сто раз уже отвечали на этот вопрос — низкий порог вхождения.
Неужели из-за того, что это мощный, изящный, логичный и красивый язык программирования с ясным синтаксисом и чётко выстроеной парадигмой? :)
Холивар :)
Нет, это обычный молоток, чтобы забивать гвозди. Изящество ему никчему.
С другой стороны на нем сложно написать такой ужас (синтаксический), как на C, Perl, Python.
Шуруп можно забить и камнем, но приятнее, полёзнее, качественнее и быстрее всё же вкрутить его шуруповёртом. Кстати, потом можно будет его и открутить если что, в отличии от. Да даже и гвоздь приятнее забивать качественным молотком с гладкой непроскальзывающей рукояткой и бойком из стали нужной твёрдости, чем куском мягкого плющащегося железа, периодически соскакивающего с занозистой и кривой палки-суковатки :).
Про синтаксический ужас я бы поспорил. По-моему, пхп сам по себе уже синтаксический ужас :(.
за интерфейсы SPL — разработчикам отдельное спасибо
А при чём здесь SPL??? Это ведь библиотека?
Я про интерфейсы. Которые interface. Видите, вы даже не в курсе :). Вот и я в недоумении — зачем они нужны в динамическом интерпретируемом языке.
Ну наверное для структурирования кода. И еще для множественного наследования.
Лишняя сущность. По-моему просто пёрли механизм ООП из явы, заодно прихватили и интерфейсы :) даже не подумавши почему без них (или аналога) невозможно жить в яве и почему они никому не нужны здесь.
Теоретически, можно волевым решением и угрозой увольнения заставить разработчиков «структурировать» код интерфейсами, но, по-моему, гораздо практичнее и полезнее заставить их писать документацию :).
Множественное наследование интерфейсов бесполезно при отсутсвии пользы от самих интерфейсов.
айайай! Вы даже не удосужились глянуть на страницу www.php.net/~helly/php/ext/spl/ — страницу этой самой библиотеки.

Все дело в том, что эта библиотека дала возможность использовать нативные интерфейсы RecursiveIterator, IteratorAggregate, OuterIterator, Countable, SplObserver и достаточное количество абстрактных классов для построения сложных систем.

А нужны они по одной простой причине — для написания качественного, расширяемого кода.

Посмотрите limb, onPHP, mzz — сложные и интересные объектные струтктуры — и Ваш сарказм заметно поубавится :)
на лимб не то чтобы смотреть, о нем думать страшно.
почему? что там такого outstanding, что заставляет Вас так говорить? На всякий случай — говоря о лимбе, я имел ввиду стиль, код и подход к решению определенных задач
Лишняя сущность в динамических языках. Если бы её небыло ничего бы не изменилось. Что вы своей библиотекой? Какое она имеет отношение к конкретной языковой конструкции? То, что кто-то не поленился и понаписал их туда? :)
Я «пришел» в php из Flash/Flex, имея вобщем-то немалый «багаж» в архитектурировании приложений. Продирался довольно долго через отсутствие полноценного контекста приложения. Упрощал сам несколько раз решения, отказывался от шаблонов проектирования, к которым привык. Что-то вырисовал для себя, чем сейчас и пльзуюсь.

Интерфейсы абсолютно не лишние (по крайней мере для меня). Самый простой пример — инверсия зависимостей (базовые зависимости — это интерфейсные зависимости) Это отлично применимо и к динамическим языкам и к любым другим. Еще один пример — реализация паттерна Наблюдатель в интерфейсах. Отличная вещь, которая в купе с memcached, паттерном ActiveRecord и IdentityMap позволила выжить довольно сложному высоконагруженному проекту и показать производительность на 30% выше при прочих равных в сравнении с процедурным кодом.

А то, что кто-то не поленился — честь и хвала :)
а когда-то и полноценный сервер на vb :)
Пусть он его сам и юзает xDDD
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Это не больше, чем развлечение, практической пользы 0, имхо.
Это скорее искусство. Имхо.
пользы от этого исскуства много.
Имхо бывают разные внештатные ситуации… Может когда и пригодится.
Данный вариант полезен, когда, например, необходимо раздать по-быстрому какой-либо файл.
Оригинальная идея вот: alexey.sveshnikov.ru/blog/2006/12/22/hint-9-swiss-army-knife/
Вот тут ещё это обсуждалось: www.opennet.ru/tips/info/1352.shtml
Занятная идея. Порадовал :)
Насчет извращений: тетрис и арканоид на sed меня сильнее впечатлили :)
Textmode quake и его друзья:

Что вы, какой тетрис.
Сильно
еще есть FTP-сервер на Javascript. Запускать не пробовал.
тетрис на sed впечатлил, конечно, больше всего.
на javascript?
это вообще как возможно?
Запустил, работает. Работает используя вызовы java.
о, убийца лайти и энжиникса? =)
скорее, убийца апача=)
bash: nc: command not found
Необходимо установить пакет netcat.
nc110.sourceforge.net/
Жду версию с поддержкой многопоточности ;)
В генту опция -с, похоже, не поддерживается.
Понравилась идея nc -l -p 8080 < file. Вот уж действительно «раздать файл по-быстрому». Как ни странно, браузер воспринимает почти нормально.
работает:
emerge net-analyzer/netcat -av
[ebuild R ] net-analyzer/netcat-110-r8 USE=«crypt -ipv6 -static» 0 kB
странно, у меня не работает. Может, я что-то не так делаю?

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 ~ #
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…
извращение — читать это без нормального форматирования
ах вот как, минусуите, ну и ладно. Я пойду и напишу свой хттп сервер, с форматированием, шлюхами и блекджеком
хотя, зачем мне хттп сервер?
Не честный пример, так как использует NetCat для управления соединениями.
Чисый bash http сервер, тем не менее, возможно написать используя /dev/tcp/127.0.0.1/80 (очевидно, что bash должен быть скомпилирован с этой фичей, на ubuntu без нее к сожалению)
К сожалению, с помощью /dev/tcp/… можно делать только исходящие соединения, так что сервер чист насколько это возможно :)
насколько данный гениальный скрипт будет работоспособен в системах, отличных от linux — таких как solaris, hpux, bsd?
Скрипт юзает специфическую опцию нетката, которую я встречал только на некоторых линуксах. В принципе, в ней нет ничего сложно и накатить патчик можно в какой угодно системе. А баш и так везде есть.
Единственная полезность данного — запустить на целевой юникс-машине и быстро что-то слить себе (есть, конечно, более элегантные способы...)
Но… попробовав скрипт на всех бсд (open+free+macos) ничего не получилось — отсутствует специфическая опция '-c'
Идея понравилась
Наверное я единственный кто не понял тут ни слова
это напоминает конвеер из лего, для сбора машинок из лего.
прикольно, весело, нихрена не полезно.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории