LINUX.ORG.RU
ФорумTalks

Программистский мир окончательно скатился.


2

3

!Ъ: http://habrahabr.ru/post/172119/

Ъ:

На ранних стадиях развития интернета, разработчикам приходилось использовать бедные, убогие языки программирования. Приходилось использовать только функции и операторы. Никаких объектов, никаких интерфейсов, никакого dependency injection!

Скажем, чтобы выполнить простую операцию сложения, нашим отцам приходилось писать: 1+1. Да, серьезно.

Но теперь-то у нас есть PHP 5.3 с отличной имплементацией ООП! Представляем библиотеку SimplePHPEasyPlus! SimplePHPEasyPlus позволит вам складывать два числа современным способом, с использованием ООП. Он быстрый, простой, гибкий и оттестированный. Чтобы добавить 1 к 1, нужно всего лишь выполнить следующее:

use SimplePHPEasyPlus\Number\NumberCollection;
use SimplePHPEasyPlus\Number\SimpleNumber;
use SimplePHPEasyPlus\Number\CollectionItemNumberProxy;
use SimplePHPEasyPlus\Parser\SimpleNumberStringParser;
use SimplePHPEasyPlus\Iterator\CallbackIterator;
use SimplePHPEasyPlus\Operator\AdditionOperator;
use SimplePHPEasyPlus\Operation\ArithmeticOperation;
use SimplePHPEasyPlus\Operation\OperationStream;
use SimplePHPEasyPlus\Engine;
use SimplePHPEasyPlus\Calcul\Calcul;
use SimplePHPEasyPlus\Calcul\CalculRunner;


$numberCollection = new NumberCollection();

$numberParser = new SimpleNumberStringParser();

$firstParsedNumber = $numberParser->parse('1');
$firstNumber = new SimpleNumber($firstParsedNumber);
$firstNumberProxy = new CollectionItemNumberProxy($firstNumber);

$numberCollection->add($firstNumberProxy);

$secondParsedNumber = $numberParser->parse('1');
$secondNumber = new SimpleNumber($secondParsedNumber);
$secondNumberProxy = new CollectionItemNumberProxy($secondNumber);

$numberCollection->add($secondNumberProxy);

$addition = new AdditionOperator('SimplePHPEasyPlus\Number\SimpleNumber');

$operation = new ArithmeticOperation($addition);

$engine = new Engine($operation);

$calcul = new Calcul($engine, $numberCollection);

$runner = new CalculRunner();

$runner->run($calcul);

$result = $calcul->getResult();
$numericResult = $result->getValue(); // 2

Библиотека годится для применения с продакшене. Наслаждайтесь!

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

Я в печали.

Ответ на: комментарий от dikiy

Мне жить мешает пробел. Потому как потом ты задолбаешься огораживать свои скрипты, чтобы они в случае пробела в имени файла не отваливались.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Мне жить мешает пробел. Потому как потом ты задолбаешься огораживать свои скрипты, чтобы они в случае пробела в имени файла не отваливались.

это должно войти в правило хорошего тона. Ну и через десять скриптов на автомате уже будешь правильно писать.

dikiy ★★☆☆☆
()
Ответ на: комментарий от border-radius

не задумываясь, почему сейчас всё так, а не иначе.

а вот ты задумайся: может дело не в какой-то илитарности php, а как раз наоборот?

drBatty ★★
()
Ответ на: комментарий от PolarFox

А потом скрипт падает от пробела в имени

при чём тут скрипт? У меня в скриптах всё нормально.

drBatty ★★
()
Ответ на: комментарий от moscwich

Прекрасно обличает весь идиотизм этого вашего ООП.

Вы что-то путаете. ООП здесь, в конкретном случае, стал инструментом архитектурных астронавтов.

outtaspace ★★★
()
Ответ на: комментарий от KRoN73

Ага. И ЧСХ, C и Perl уважают, а PHP нет, хотя он вобрал из этих языков не все плохие вещи.

goingUp ★★★★★
()
Ответ на: комментарий от moscwich

Прекрасно обличает весь идиотизм этого вашего ООП.

угу. в руках пыхера - это идиотизм, да.

drBatty ★★
()
Ответ на: комментарий от redgremlin

У меня музыку скрипт переименовывает по тегам в %Artist%/%Year% - %Album%/%Track% - %Title%.ext

это да. Я easytag юзаю обычно.

dikiy ★★☆☆☆
()
Ответ на: комментарий от redgremlin

А у меня такая штука есть:

WAV=MP32OGG$$.wav
OGG=MP32OGG$$.ogg
for FILE in $*
do
if [ "`ext $FILE`" == "mp3" ]; then
echo "uncompressing $FILE"
NAME=`echo $FILE|sed "s/\.[mM][pP]3//"`
cp $FILE /dev/shm/$FILE
mpg123 /dev/shm/$FILE -w /dev/shm/$WAV > tmp 2>&1
rm /dev/shm/$FILE
unix2dos tmp >/dev/null 2>&1
encode CP1251 tmp 2>&1 #recode
Title=`cat tmp|sed -n '/Title/p'|sed "s/\(Title *: *\)\(.*\)\( *Artist.*\)/\2/"|sed "s/  */ /g"`
[ "$Title" = "" ] && Title=$NAME
Artist=`cat tmp|sed -n '/Title/p'|sed "s/\(.*Artist *: *\)\(.*\)\( *\)/\2/"|sed "s/  */ /g"`
if [ "$Artist" = "" ]; then
    AR=`cd ../;pwd`
    Artist=`basename $AR`
fi
Album=`cat tmp|sed -n '/Album/p'|sed "s/\(Album *: *\)\(.*\)\( *Year.*\)/\2/"|sed "s/  */ /g"`
if [ "$Album" = "" ]; then
    AL=`pwd`
    Album=`basename $AL`
fi
Year=`cat tmp|sed -n '/Album/p'|sed "s/\(.*Year *: *\)\(.*\)/\2/"|sed "s/ *//g"`
Genre=`cat tmp|sed -n '/Comment/p'|sed "s/\(.*Genre *: *\)\(.*\)/\2/"|sed "s/  */ /g"`
#Brate=`cat tmp|grep "kbit"|sed "s/\(MPEG 1.0 layer III, \)\(.*\)\( kbit.*\)/\2/"`
Brate=`cat tmp|grep "kbit"|sed -e "s/\(.*\)\([0-9]\{3\} kbit\)\(.*\)/\2/" -e "s/\([0-9]\{3\}\)\(.*\)/\1/"`
NUM=`strings $FILE|head -n 6|grep "TCON"|sed "s/TCON.*//g"`
Num=""
if [ "$NUM" == "" -o "$NUM" == "v" ]; then
    NUM=`strings $FILE|head -n 12|grep "/"|sed "s/\(.*\)\(\/.*\)/\1/"`
fi
if [ "$NUM" != "" -a $NUM -gt 0 ] >/dev/null 2>&1; then
    Num="-N $NUM"
fi
echo "Encoding $NAME"
echo "Bitrate:$Brate Num:$NUM Genre:$Genre Title:$Title Alb:$Album Y:$Year Arti:$Artist " 
oggenc -b "$Brate" /dev/shm/$WAV $Num -G "$Genre" -t "$Title" -l "$Album" -d "$Year" -a "$Artist" -o /dev/shm/$OGG >/dev/null
rm /dev/shm/$WAV
mv /dev/shm/$OGG "$NAME.ogg"
rm tmp
[ -e "$NAME.ogg" ] && rm $FILE
fi
done

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Ты у меня на сосфорже или гуглокоде хоть что-нибудь «вебное» найди, где серверная часть не на сях!

Начиная от уймы JVM-based, кончая всякими Revel.

KRoN73 ★★★★★
()
Ответ на: комментарий от redgremlin

Меньше места на диске занимает: было 300ГБ, стало — 250.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Кстати, тебя может заинтересовать вот ещё:
http://swtch.com/~rsc/talks/threads07/ — конкурентность, в частности, там показано, как реализуется CSP в Plan 9 через libthread
http://swtch.com/~rsc/talks/acid07/ — не просто отладчик, а целый отладочный язык (debugging language)

quantum-troll ★★★★★
()
Последнее исправление: quantum-troll (всего исправлений: 1)
Ответ на: комментарий от drBatty

В сях нет ни строк, ни юникода.

на самом деле в сях нет проблем со строками и с юникодом

Ну всё правильно. Нет строк — нет проблем.

x3al ★★★★★
()
Ответ на: комментарий от Eddy_Em

Потому как потом ты задолбаешься огораживать свои скрипты, чтобы они в случае пробела в имени файла не отваливались.

Так ты ещё и баш неосилил. И ни одного языка повменяемее баша, где таких проблем просто не возникает.

x3al ★★★★★
()
Ответ на: комментарий от x3al

Ну всё правильно. Нет строк — нет проблем.

ага. строки можно сделать самому, или юзать готовые.

drBatty ★★
()

Гореть тебе в аду Хотя бы за мои глаза.

Что за миллион "use"?

Ну и, в конце концов, ни в одном из известных мне ЯП, так переменные не объявляют же!

ziemin ★★
()
Ответ на: комментарий от drBatty

Дело в его полной, вопиющей ненужности и костыльности. Но по сравнению с наполеоновскими планами перевода всего серверсайда на си это ещё не самый худший вариант, оказывается.

border-radius
()
Ответ на: комментарий от border-radius

Дело в его полной, вопиющей ненужности и костыльности.

однако именно на нём 95% сайтов уже написали, и тебя не спросили.

Но по сравнению с наполеоновскими планами перевода всего серверсайда на си это ещё не самый худший вариант, оказывается.

не переживай, мнение нашего Эдди тоже никого не волнует.

drBatty ★★
()
Ответ на: комментарий от AlexCones

Я не я, хата не моя. Это всё хабр.

хоть на хабре только чудаки;s/ч/м/

Однако они хотя-бы осилили подсветку кода.

echo ("<form action='' method='POST'>");
echo ("<input type='text' name='username' /><br />");
echo ("<input type='password' name='password' /><br />");
echo ("<input type='submit' name='submit' value='submit' />");
echo ("</form>");
 
include "config.php";
$pass = (isset($_POST["password"])) ? $_POST["password"] : NULL;
$user = (isset($_POST["username"])) ? $_POST["username"] : NULL;
 
$password['0'] = (!empty($_POST["password"])) ? $_POST["password"] : 1;
$username['0'] = (!empty($_POST["username"])) ? $_POST["username"] : 1;
 
$password['1'] = (!empty($_POST["password"])) ? $_POST["password"] : 2;
$username['1'] = (!empty($_POST["username"])) ? $_POST["username"] : 2;
 
$query = mysql_query("SELECT * FROM admins WHERE password='".$pass."' AND username='".$user."'") or die(mysql_error());
$row = mysql_num_rows($query);
 
$query1 = mysql_query("SELECT level FROM admins WHERE username = '".$username."'");
$row1 = mysql_fetch_row($query1);  
 
if (isset($_POST['submit'])) {
    if ($pass == NULL || $user == NULL) {  
        die("ERROR");
    }
}

drBatty ★★
()
Ответ на: комментарий от redgremlin

А как же кодек G.711 (AMR)? Диапазон узенький, десять минут звука весят 1 МБ.

MiniRoboDancer ★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.