Comments 53
Хочу заметить, что то нарушает копирайт facebook. Они уже начали рассылать официальные обращения убрать код к авторам блогов, в которых размещён этот код.
Да и читать код в таком виде крайне не удобно.
Очень жаль, что «лучшии PHP-программисты мира» до сих пор пользуются функциональным подходом в программировании.
Я сам сейчас также пишу. Я был рад, что я не один. Хотя жду книжучку от SoftTime по ООП, чтобы тоже понять всю прелесть ООП.
Возможно, это сделано для увеличения производительности
а чем функциональный подход плох?
Как вы себе представляете поддержку большого проекта где все функции в одной области видимости (вобщем написано без ООП или хотябы неймспейсов). Это просто большая помойка.
Карамба! Ладно, ладно. Честно говоря, я не разбираюсь в подходах и не могу уверенно утверждать где функциональный подход, а где нет; не думаю, что когда все в одной куче --- это функциональный подход, все-таки это не очень удобно для программистов.
Там, где все в одной куче и ничего не разобрать --- там вообще подхода нет никакого.
Там, где все в одной куче и ничего не разобрать --- там вообще подхода нет никакого.
Судя по успеху как то поддерживают.
Хотя код ужасный. Не верю что это их.
Хотя код ужасный. Не верю что это их.
имелось в виду "процедурным подходом"? Функциональный подход ничем не хуже ООП, а в некоторых случаях и гораздо лучше.
Хм, помоему, это ужасно - все в перемешку, сплошные if и else, циклы... Наверное, ООП спас бы «лучших PHP-программистов мира» :) Хотя, не мне судить, может быть им так легче эфективнее.
Странно, заметил я у себя такую особенность - чем больше смотрю на PHP-код (в особенности этот), тем больше мне нравится Python.
Странно, заметил я у себя такую особенность - чем больше смотрю на PHP-код (в особенности этот), тем больше мне нравится Python.
Самый бесполезный исходник, который я когда либо видел.
>так что на чёрном рынке вы можете без проблем купить клон того же Facebook за $200.
И как же это сделать? Что-то из профиля на блогспоте этого не видать.
И как же это сделать? Что-то из профиля на блогспоте этого не видать.
В жизни не видел более ужасного кода.
> код одного из самых успешных проектов Веб 2.0
:) вот так сегодня на кухне посидели и решили "не успешный" :)
:) вот так сегодня на кухне посидели и решили "не успешный" :)
У facebook'a неслабая нагрузка, а работает.
1. Я насчитал всего ли 25 инклюдов - это вполне реальное количество. Бывает и по 100 и по 200 в итоге - и неичего работает.
2. Если бы вы присмотрелись, то уведели бы что кэширование там есть.
2. Если бы вы присмотрелись, то уведели бы что кэширование там есть.
самое интересное что ничего плохого по большому счету в этом нет. т.е. в такой ситуации нет недовольных:
а) программист - он получает свои деньги, пишет плохой, но понятный ему код, может быть он и самнедоволен своим кодом, но если он пишет - значит его это устраивает
б) пользователи продукта - им вообще пофиг какой там код - контора поставит n-ный сервак, и сколько там инклюдов пользователям уже не будет важно
в) контора - на первый взгляд как раз им меньше всего выгодно такое положение дел, но... судя по капитализации того-же facebook их это совершенно не волнует. не волнует то что этот код требует бОльших мощностей, не волнует то что его сложнее повторно использовать. единственное что здесь важно - это скорость разработки в самом начале и возможность поддерживать (хотя-бы и с большими затратами) впоследствии
а писать код "писали код, потому что им это нравилось и было очень неплохо, если за это платили", это хорошо, но это непрофессионально (хотя это вполне работает в Open Source, там действительно люди заботятся о качестве кода, но это немного другая тема)
а) программист - он получает свои деньги, пишет плохой, но понятный ему код, может быть он и самнедоволен своим кодом, но если он пишет - значит его это устраивает
б) пользователи продукта - им вообще пофиг какой там код - контора поставит n-ный сервак, и сколько там инклюдов пользователям уже не будет важно
в) контора - на первый взгляд как раз им меньше всего выгодно такое положение дел, но... судя по капитализации того-же facebook их это совершенно не волнует. не волнует то что этот код требует бОльших мощностей, не волнует то что его сложнее повторно использовать. единственное что здесь важно - это скорость разработки в самом начале и возможность поддерживать (хотя-бы и с большими затратами) впоследствии
а писать код "писали код, потому что им это нравилось и было очень неплохо, если за это платили", это хорошо, но это непрофессионально (хотя это вполне работает в Open Source, там действительно люди заботятся о качестве кода, но это немного другая тема)
Ребят, да вы что? какие обращения к дискам? ОС кеширует частоиспользуемые файлы, к которым обращаются, таким образом даже если каждый файл по киллобайт 50 то 20 - это около 1 мб, это все довольно удачно лежит в памяти и подгружается мгновенно. А если учитывать что данные куски инклудятся в большенстве их сценариев. Так что говорить о "тяжелости комманыд инклуд" это глупо.
-n количество запросов
-с количество конкурентных(одновременных) запросов
исходник:
/* include_once 'a.php';
include_once 'b.php';
include_once 'c.php';
include_once 'd.php';
include_once 'e.php';
include_once 'f.php';
include_once 'g.php';
include_once 'h.php';*/
function a(){
echo 'a';
}
function b(){
echo 'b';
}
function c(){
echo 'c';
}
function d(){
echo 'd';
}
function e(){
echo 'e';
}
function f(){
echo 'f';
}
function g(){
echo 'g';
}
function h(){
echo 'h';
}
a();b();c();d();e();f();g();h();
?>
результаты без include_once:
[timon@localhost ~]$ ab -n5000 -c5 http://localhost2/
Server Software: Apache/2.2.8
Server Hostname: localhost2
Server Port: 80
Document Path: /
Document Length: 8 bytes
Concurrency Level: 5
Time taken for tests: 6.403327 seconds
Complete requests: 5000
Failed requests: 0
Write errors: 0
Total transferred: 990198 bytes
HTML transferred: 40008 bytes
Requests per second: 780.84 [#/sec] (mean)
Time per request: 6.403 [ms] (mean)
Time per request: 1.281 [ms] (mean, across all concurrent requests)
Transfer rate: 150.86 [Kbytes/sec] received
c include_once:
[timon@localhost ~]$ ab -n5000 -c5 http://localhost2/
Server Software: Apache/2.2.8
Server Hostname: localhost2
Server Port: 80
Document Path: /
Document Length: 8 bytes
Concurrency Level: 5
Time taken for tests: 4.786561 seconds
Complete requests: 5000
Failed requests: 0
Write errors: 0
Total transferred: 990000 bytes
HTML transferred: 40000 bytes
Requests per second: 1044.59 [#/sec] (mean)
Time per request: 4.787 [ms] (mean)
Time per request: 0.957 [ms] (mean, across all concurrent requests)
Transfer rate: 201.82 [Kbytes/sec] received
apc отключен, после каждого теста делался httpd_restart и echo 1 > /proc/sys/vm/drop_caches
вопросы есть? :)
p.s. для тех кто не умеет читать цифирьки, с include на 25% быстрее
-с количество конкурентных(одновременных) запросов
исходник:
/* include_once 'a.php';
include_once 'b.php';
include_once 'c.php';
include_once 'd.php';
include_once 'e.php';
include_once 'f.php';
include_once 'g.php';
include_once 'h.php';*/
function a(){
echo 'a';
}
function b(){
echo 'b';
}
function c(){
echo 'c';
}
function d(){
echo 'd';
}
function e(){
echo 'e';
}
function f(){
echo 'f';
}
function g(){
echo 'g';
}
function h(){
echo 'h';
}
a();b();c();d();e();f();g();h();
?>
результаты без include_once:
[timon@localhost ~]$ ab -n5000 -c5 http://localhost2/
Server Software: Apache/2.2.8
Server Hostname: localhost2
Server Port: 80
Document Path: /
Document Length: 8 bytes
Concurrency Level: 5
Time taken for tests: 6.403327 seconds
Complete requests: 5000
Failed requests: 0
Write errors: 0
Total transferred: 990198 bytes
HTML transferred: 40008 bytes
Requests per second: 780.84 [#/sec] (mean)
Time per request: 6.403 [ms] (mean)
Time per request: 1.281 [ms] (mean, across all concurrent requests)
Transfer rate: 150.86 [Kbytes/sec] received
c include_once:
[timon@localhost ~]$ ab -n5000 -c5 http://localhost2/
Server Software: Apache/2.2.8
Server Hostname: localhost2
Server Port: 80
Document Path: /
Document Length: 8 bytes
Concurrency Level: 5
Time taken for tests: 4.786561 seconds
Complete requests: 5000
Failed requests: 0
Write errors: 0
Total transferred: 990000 bytes
HTML transferred: 40000 bytes
Requests per second: 1044.59 [#/sec] (mean)
Time per request: 4.787 [ms] (mean)
Time per request: 0.957 [ms] (mean, across all concurrent requests)
Transfer rate: 201.82 [Kbytes/sec] received
apc отключен, после каждого теста делался httpd_restart и echo 1 > /proc/sys/vm/drop_caches
вопросы есть? :)
p.s. для тех кто не умеет читать цифирьки, с include на 25% быстрее
Мало того, что ОС кеширует, так еще и PHP кеширует, причем не исходники, а итоговый байт-код.
> Раньше люди писали код...
Раньше — это как именно давно?
Раньше — это как именно давно?
Да ну. Инклуды лучше, чем весь код в одном файле. Разделённый код легче читать, легче обновлять. А замедления от него, особенно если стоит тот же Зенд Оптимайзер, не почувствуешь особо. Всё кешируется.
Что же касается вообще ситуации с тем, что кодер делает, чтобы платили, то тут ничего не поделаешь. Если кодер начнёт гикствовать с оптимизацией, то не уложится в сроки. Может вообще давайте всё на асме писать, нэ?
Лично я сейчас всё ещё пытаюсь писать красивый код, чтобы не было стыдно. Но реалии жизни ведут к противному.
Что же касается вообще ситуации с тем, что кодер делает, чтобы платили, то тут ничего не поделаешь. Если кодер начнёт гикствовать с оптимизацией, то не уложится в сроки. Может вообще давайте всё на асме писать, нэ?
Лично я сейчас всё ещё пытаюсь писать красивый код, чтобы не было стыдно. Но реалии жизни ведут к противному.
не считаю себя хорошим программистом, но честное слово, испытываю отвращение.
даже сам, задумываясь о последствиях, переписывал свои классы по 10 раз, чтоб все было максимально ясно и функционально.
могли бы и опытных нанять...
даже сам, задумываясь о последствиях, переписывал свои классы по 10 раз, чтоб все было максимально ясно и функционально.
могли бы и опытных нанять...
Забавный код. Функциональный кодинг, плюс волшебные названия функций. check_and_fix_broken_emails($user) особенно порадовала.
Хотя ведь работает, а значит здорово. И, наверняка, работает быстрее, чем ежели было объектным.
Хотя та же викимедия объектна, и ничего страшного.
Хотя ведь работает, а значит здорово. И, наверняка, работает быстрее, чем ежели было объектным.
Хотя та же викимедия объектна, и ничего страшного.
if ($orientation) {
if ($post_leave_orientation) {
orientation_update_status($user, $orientation, 2);
notification_notify_exit_orientation($user);
dirty_user($user);
redirect('home.php');
} else if (orientation_eligible_exit(array('uid'=>$user)) == 2) {
orientation_update_status($user, $orientation, 1);
notification_notify_exit_orientation($user);
dirty_user($user);
redirect('home.php');
}
}
Чорт, эпичный код :)
if ($post_leave_orientation) {
orientation_update_status($user, $orientation, 2);
notification_notify_exit_orientation($user);
dirty_user($user);
redirect('home.php');
} else if (orientation_eligible_exit(array('uid'=>$user)) == 2) {
orientation_update_status($user, $orientation, 1);
notification_notify_exit_orientation($user);
dirty_user($user);
redirect('home.php');
}
}
Чорт, эпичный код :)
Это хорошая реклама, не более.
Sign up to leave a comment.
Исходники Facebook просочились в Сеть