Хочу заметить, что то нарушает копирайт facebook. Они уже начали рассылать официальные обращения убрать код к авторам блогов, в которых размещён этот код.
Интересного, там много, с точки зрения организации кода. Мне допустим было интересно посмотреть как разбили на модули, и есть ли MVC. Какой стиль программирования у "гигантов".
Как вы себе представляете поддержку большого проекта где все функции в одной области видимости (вобщем написано без ООП или хотябы неймспейсов). Это просто большая помойка.
Карамба! Ладно, ладно. Честно говоря, я не разбираюсь в подходах и не могу уверенно утверждать где функциональный подход, а где нет; не думаю, что когда все в одной куче --- это функциональный подход, все-таки это не очень удобно для программистов.
Там, где все в одной куче и ничего не разобрать --- там вообще подхода нет никакого.
Хм, помоему, это ужасно - все в перемешку, сплошные if и else, циклы... Наверное, ООП спас бы «лучших PHP-программистов мира» :) Хотя, не мне судить, может быть им так легче эфективнее.
Странно, заметил я у себя такую особенность - чем больше смотрю на PHP-код (в особенности этот), тем больше мне нравится Python.
>так что на чёрном рынке вы можете без проблем купить клон того же Facebook за $200.
И как же это сделать? Что-то из профиля на блогспоте этого не видать.
1. Я насчитал всего ли 25 инклюдов - это вполне реальное количество. Бывает и по 100 и по 200 в итоге - и неичего работает.
2. Если бы вы присмотрелись, то уведели бы что кэширование там есть.
самое интересное что ничего плохого по большому счету в этом нет. т.е. в такой ситуации нет недовольных:
а) программист - он получает свои деньги, пишет плохой, но понятный ему код, может быть он и самнедоволен своим кодом, но если он пишет - значит его это устраивает
б) пользователи продукта - им вообще пофиг какой там код - контора поставит n-ный сервак, и сколько там инклюдов пользователям уже не будет важно
в) контора - на первый взгляд как раз им меньше всего выгодно такое положение дел, но... судя по капитализации того-же facebook их это совершенно не волнует. не волнует то что этот код требует бОльших мощностей, не волнует то что его сложнее повторно использовать. единственное что здесь важно - это скорость разработки в самом начале и возможность поддерживать (хотя-бы и с большими затратами) впоследствии
а писать код "писали код, потому что им это нравилось и было очень неплохо, если за это платили", это хорошо, но это непрофессионально (хотя это вполне работает в Open Source, там действительно люди заботятся о качестве кода, но это немного другая тема)
Ребят, да вы что? какие обращения к дискам? ОС кеширует частоиспользуемые файлы, к которым обращаются, таким образом даже если каждый файл по киллобайт 50 то 20 - это около 1 мб, это все довольно удачно лежит в памяти и подгружается мгновенно. А если учитывать что данные куски инклудятся в большенстве их сценариев. Так что говорить о "тяжелости комманыд инклуд" это глупо.
результаты без 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% быстрее
Да ну. Инклуды лучше, чем весь код в одном файле. Разделённый код легче читать, легче обновлять. А замедления от него, особенно если стоит тот же Зенд Оптимайзер, не почувствуешь особо. Всё кешируется.
Что же касается вообще ситуации с тем, что кодер делает, чтобы платили, то тут ничего не поделаешь. Если кодер начнёт гикствовать с оптимизацией, то не уложится в сроки. Может вообще давайте всё на асме писать, нэ?
Лично я сейчас всё ещё пытаюсь писать красивый код, чтобы не было стыдно. Но реалии жизни ведут к противному.
не считаю себя хорошим программистом, но честное слово, испытываю отвращение.
даже сам, задумываясь о последствиях, переписывал свои классы по 10 раз, чтоб все было максимально ясно и функционально.
могли бы и опытных нанять...
Исходники Facebook просочились в Сеть