В общем, подтолкнуло меня препарация одного движка (), охуительный двиглу, кстати. А поскольку тупо препарировать - это тупо, то я для это сделал (как менюшка?). И в процессе праздников для страны возникло куча вопросов, которые можно тут описать и забыть. Вообще, меня впечатлили в последнее время только два двигла на php - это и . Про frontier можно сказать, что чувак рубит в ООП настолько мощнее меня, что есть чему поучиться, событийной модели, но мне не видно sample.app, поэтому сложнее въехать в тему, хоть и прусь теоретически от подхода. Это какбе Мила Йовович без одежды, а я слепой. Типа слежу за actions, жду доков.
По другой подход: Полноценный вариант MVC, классическая тема, ни капли мимо. Можно пожамкать. Из плюсов, для личностного роста отмечено отличная абстракция, супер реализация подключения сторонних библиотек.
1. Что-то непонятная некрофилия тяга к mootools. Сейчас рулит JQuery. Ну да, оно поменьше, да и то не факт. Gzipped все равны.
2. Роутинг - это бля! Такое впечатление, что роутинг все всегда делают по книжкам rails (не только к этому движку). Типа /controller/action/bla-bla. Очень понятно всё до bla-bla request. Всё это добро идёт строго школярски, bla1, bla2, bla3. И в core - топорная работа с url, удалить номер 2=) Убивать! Это как будто дровосек пришёл на дискотеку. Работает строго до первой попытки сделать что-либо очень гибкое. Я люблю другой подход - либо /var/value/var2/value2/, либо /var_value/var2_value/ - очевидное преимущество.
3. Почему кучка файлов core лежит в www??? Буэээ. Их надо ложить явно не туда, виден референс в сторону mass hosting. Скажем так, модель контролируемая строго через .htaccess - отстой.
Тут как бы решил подзаработать на стороне, ну скажем так, корпоративный сайт. Требования были следующие - чтобы движок был известный, чтобы поддерживать его было потом проще, такое ТЗ. Я тоже понимаю, что садиться на иглу собственных движков - это дорого и не для всех, выбрал из нескольких лучших bitrix. Ну просто потому, что это сейчас 1С и потому, что сейчас так принято (вот как надо дела делать) и дохрена “инженеров” если что. Заодно в коде покопаться. Сказать, что это пиздец - не сказать ничего. Запросов к базе просто для вывода новостей… Дохрена, 23, что ли. Проверьте сами. Их компонентная модель для сборки этих компонентов в визуальном редакторе отвратительна, но она работает. Вернее она будет работать потом, когда железо станет ещё более дёшево - просто это тошниловка с хорошей поддержкой. То есть если ты упадёшь, тебя поддержат настоящие ублюдки. Просто эта система решает конкретные задачи, предъявляемые ей миром, а не неким представлением об идеальной быстрой системе. В данном случае я просто использовал bitrix для тупо роутинга url! Если вдуматься 32 мегабайта долбаного кода за 5 тысяч рублей для роутинга url на статику и новостей=)))) А потому, что потом проще будет поддерживать эту хрень кому-то другому. Такова селяви. Корпоративно - абсолютно верное решение, прозрачное для всех, а изнутри - мне вообще не понравилось, ни шаблонизатора толкового нет, кеш включить/выключить - это для идиотов, да? В общем - для людей корпоративных как OMERTA пойдёт, но это говно. Чувствую себя ювелиром и похоже моя любимая поговорка на этот день: “?
к этому отличному плагину. Ну и FirePHP особо порадовал, сейчас попробую:
For those PHP developers out there, FirePHP is enable you to print to the Firebug Console using simple PHP function call. The main benifit is that all the debugging data are hidden from normal user and you can review in a nicely format within Firebug console.
Закончены эксперименты с php-factcgi, по скорости оно приблизительно одинаково с apache mod_php и одновременно не имеет смысла держать оба интерфейса. Разве, что для нескольких проектов одного владельца на одном сервере - тогда выгодно и память экономится. Используя CGI интерфейс, пропадает ограничение open_basedir, что для меня не подходит=) Хоть великолепный патч php-fpm позволяет chroot для каждого из своих пулов, но заморачиваться с этим на частично shared сервере не имеет никакого смысла. Зато хоть обкатал это дело и на другом сервере для нескольких нагруженных проектов (если они будут) в последствии apache уже ставится не будет.
Кстати, в процессе обнаружился некоторый сюрприз при использовании nginx в качестве фронтенда перед apache - всё хорошо, но стоит учитывать, что если клиент захочет закрыть папку статики с помощью .htaccess, то результат будет нулевой=) Но я же не хостер, поэтому такие вещи можно решать по отдельности. Решением данной проблемы может являться apache как фронтенд+mod_aclr, который уже будет сам проксировать статику на nginx, но это как-то не нравится, хотя потестировать надо по скорости что потеряется.
Также из новостей = по поводу ошибки 502 nginx, которая возникает периодически. Это значит, что apache неожиданно с тылу закрывает соединение, а отдуваться добрым именем приходится добрейшему и мудрейшему nginx, который подписывается под этой ошибкой. Изучение логов дало понимание того, что c eaccelerator php иногда валит дитя apache в segfault и я пока не понял, что с этим делать=( Пока убрал eaccelerator, поизучаю проблему, что-то да раскопаю, ведь должно было работать стабильно (и работает, но не у меня).
Вроде как считается хорошим тоном добавлять
к php на сервере ради большей секурности. Ну вот сейчас это есть и на этом сервере. Пока в виде extension, просто с ним отдельно мне лично проще обновлять. Если полёт будет нормальным (и не сомневаюсь, уже сильно обкатанная штука), то пропатчу исходники, вместо расширения на следующей версии.
На очереди - . Эта связка (nginx+php-fpm) уже работает на dev машине, но поскольку апач так просто не заменить на всех проектах на сервере (да для всех и не нужно), то хочется чтобы были и модуль для апача и php-fcgi. Для этого просто два раза компилировать php приходится, один раз с опцией
–with-apxs=PATH TO APXS
, что исключает cgi интерфейс, а второй раз без этой строчки и с чем то вроде
С одной стороны, вроде как письку с пальцем сравнивают.
Хорошо, давайте переведу, но опять же - критикуйте, я сам боюсь.
только от себя - в гугле php лучше запросы смотрятся - искать легче.
Схожести:
1. Ruby is dynamically typed, like in PHP, so you don’t need to worry about having to declare variables
Ruby - это не строго типизируемый язык, не мучьтесь по поводу объявления переменных.
Да ладно, это давно уже анекдот.
2. Ruby has try/catch/throw style exception handling like PHP5
Это бля вообще пиздец - Ruby имеет try/catch/throw как php5.
Я бы тут промолчал, кто и кого имеет.
3. Ruby has classes and access modifiers (public, protected & private)
Это мы понимаем. Это как у всех нынче. Тон статьи начинает напрягать.
4. A Ruby class can have only one method with a given name
Клеточку нарисовать
5. Supports single inheritance, not multiple
1. extends becomes < - class User < Person
Это вообще пошлятина.
6. Invoke the parent method of an inherited class with super
super()
7. Ruby has heredoc syntax
Давайте кавычки обзовём вот так. Это ерунда.
8. You can include files with the load method
Охренеть.
9. You can require files with the require method
1. loads any given file only once (like require_once) - load ‘filename.rb’
2. no extension necessary - require ‘filename’
Ну да, да, проехали - абсолютная идентичность
10. true and false are the same as in PHP
Да Вы чо!
11. the equivalent to null is nil
Аз есьм.
12. String concatenation is joining of two strings, using the + operator
не понял, а как же точка?
13. Constants begin with capital letters. Example PI, Length
Это Вы к похожести? Хочу Ваших грибов. У php вообще бардак! Php им гордится!
14. You can always see what object you are in (current object) by using the special variable self
Эээ, self::это как бы у всех.
15. Comparing two strings for equality can be done by == or .eql? (for identical content) and .equal? (for identical objects).
Ну это вообще детский сад. Какашки можно отличить потому, что они похожи на какашки.
16. instance_of? returns true if object is an instance of the given class
объектный примитив, детский сад
Differences
Разница, что то я уже пожалел, что ввязался в это дело, ну да ладно
1. No semicolons ; required after statements. A statement can end with a carriage return or a semi-colon if you choose. Semi-colons are generally used when you wish to have more than one statement per line
; после конца строки, в принципе, это сильное различие, даже не знаю хорошо это или плохо.
2. The increment and decrement operators (++ and –) are not available in Ruby, neither in “pre” nor “post” forms
Это типа правда = x.succ! = это только для строк (немного разочарован)
3. When calling a method you don’t have to use parentheses
1. foobar
foobar()
foobar(a, b, c)
foobar a, b, c
Тут вообще полная свобода - не понял, что имеют в виду, или сам недопонял.
4. You can use variables in your Ruby programs without any declarations. Variable name itself denotes its scope (local, global, instance, etc.)
Это я и в php могу - объявлять переменные просто так. Проще говоря - э
то не strict language. Со всеми сборщиками мусора.
1. Normal local variables are plain strings, global variables include a dollar sign at the beginning, and class variables begin with the at-symbol. This is definitely a departure from php in which every variable has a dollar sign
Ну тут всё просто - переменные с долларом ($fuck) есть глобальные - забавно, правда гыыы?
2. Ruby has strong typing. You’ll need to call to_s, to_i etc. to convert between strings, integers and so on, instead of relying on the language to do it
Всё объект!
Это просто я хочу строчку - пишу 5.to_s - тогда это будет строка. Или “5″.to_i это будет integer, хотя в ruby integer понятие относительное - ruby умеет вообще забыть о tiny int или big int (если мы вспомним как оно хранится) Забудьте об этом, руби пофигу на размер числа и на то как оно хранится - всё это объект, попробуйте вычислить на php действительно крупное число=). Уже проходили. php тут сосёт.
5. Blocks of code can use curly braces “{ }” or the “begin … end” keywords. I normally use begin and end, and as such I will through the rest of the tutorial, but just remember you can use braces instead if you like.
Это вообще Вам как паскалю предлагают, или как обычно, {}, цените, смерды.
6. Instead of naming conditions, like underscores, the standard library and extensions are organized in modules and classes
Я иногда не догоняю, но в NetBeans IDE кликну на функции - и вот оно. И написано на Ruby, опять же.
Тут просто всё.
7. While the return statement does exist and works like you would expect, it is not required and a function will return the last expression it evaluated
любая def от руби всегда что-то возвращает, без return, а просто так
8. Ruby also has a negated form of the if statement, the unless end
Всего лишь одно из условий, ерунда
9. You can access an array beyond its boundary limits; it will return nil
Тоже ерунда, в php этого нет, да и не надо особо, вернули nil - значит попа.
10. Reflection is an inherent capatibility of objects, you don’t need to use Reflection classes like in PHP 5
Тут пропущу
11. Ruby has no abstract or interface classes
А потому, что всё объект, это вообще смешно - всё объект и похуй
12. In Ruby, everything from an integer to a string is considered to be an object
Бля, повторение пройденного, всё объект
13. hashes and arrays are not interchangable
Это абсолютно разные вещи, хэши - это массивы с ключами, у хешей нет упорядоченности.
14. PHP does not officially support namespaces (yet) and Ruby does
Скоро у php буду namespaces.
1. Маленький и очень симпатичный , автор пишет, что почерпнул многое из CodeIgniter, но сделал очень lite и speed версию. В целом - понравилось.
2. Реально пользоваться стал как поиском, сначала как бы в благодарность за книгу - ну то есть захотелось дать хотя бы шанс, пусть как я считал и номинальный. У них есть на главной javascript для того, чтобы поиск добавить в firefox. Вывод следующий: мне понравилось! Левая колоночка с кластеризацией - это то, что не хватает google, который упорно по гео и языковому таргетингу “лучше” меня знает, что же мне нужно на самом деле. Ну и в конце концов, нигма сосредоточилась на маркетинге плотно и предлагает участвовать в . Тактика не нова, но я зарегистрируюсь, чтобы поддержать. Не понравилось: мелковатый шрифт по дефолту. Неочевидно, в кластеризации - по умолчанию ставится галочка исключить и лишь по повторному клику - включить в поиск. Однозначно - раз человек кликает на ПУСТУЮ галочку - значит ВКЛЮЧИТЬ.