Pull to refresh

Comments 77

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

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

ЗЫ. Ой, щаз быдлокодеры понабегут-набегут. Которые сами ничего не пробовали сделать, но Рабинович им напел… про «полноценный языг», ага.
уж далеко не последний по полноценности.
я клиент торрента кстати на нем делал для кэширования на трекере. Правда я им сейчас не пользуюсь т.к. доводить до ума некогда, к тому же нашел хорошую альтернативу на 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
UFO just landed and posted this here
UFO just landed and posted this here
Это не больше, чем развлечение, практической пользы 0, имхо.
Это скорее искусство. Имхо.
пользы от этого исскуства много.
Имхо бывают разные внештатные ситуации… Может когда и пригодится.
Данный вариант полезен, когда, например, необходимо раздать по-быстрому какой-либо файл.
Оригинальная идея вот: alexey.sveshnikov.ru/blog/2006/12/22/hint-9-swiss-army-knife/
Вот тут ещё это обсуждалось: www.opennet.ru/tips/info/1352.shtml
Насчет извращений: тетрис и арканоид на sed меня сильнее впечатлили :)
Textmode quake и его друзья:

Что вы, какой тетрис.
на javascript?
это вообще как возможно?
Запустил, работает. Работает используя вызовы java.
скорее, убийца апача=)
Необходимо установить пакет 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'
Идея понравилась
Наверное я единственный кто не понял тут ни слова
это напоминает конвеер из лего, для сбора машинок из лего.
прикольно, весело, нихрена не полезно.
Sign up to leave a comment.

Articles