Развитие интерфейсов
Интересно, раньше, поставив Window XP я сначала убивал XP-шную тему, заменяя её классической NTшной, потом переключал красивое синее меню пуска на классиеский NT-шный вариант. И тогда на этой системе было можно работать.
Сегодня поставил на ноутбук распоследнюю Ubuntu 11.04 я первым делом преключился с этой пальцезаточенной нетбукоориентированной Unity на классическую Gnome, и вернул нормальное расположение кнопок закрытия окошек которые в Ubuntu слева в правый угол где им и полагается быть.
Уже боюсь предполагать какими новыми интерфейсными изысками нас побалует сообщество Ubintu в новых версиях.
Но всё равно, ничего удобнее Linux на сегодняшний день для меня нет.
Сравнение различных методов вызова функций в PHP
Вызов статических методов классов — прекрасная альтернатива обычным функциям - и класс создавать не нужно и принципы объектно-ориентированного программирования не нарушаются. Однако, в реализации статических методов в PHP есть несколько проблем - статические методы не всегда корректно наследуются, поэтому, чтобы нивелировать неудобства статических методов в PHP часто используют синглетоны - обертывают денимические методы статическими обертками.
Однако, создание синглетона операция довольно ресурсоёмкая — проверить создан ли экземпляр класса, создать экземпляр класса если он не создан, вызвать на нём нужный метод. Насколько это сказывается на бытродействии я и решил сегодня проверить.
Для оценки скорости доступа к методам синглетона я сделал небольшой скрипт. Скрипт генерирует тестовые последовательности вызовов функций в различных вариантах - и сравнивает время вызовов этих последовательностей.
Вот исходный код скрипта.
Результат работы скрипта представлен в таблице ниже:
| generation_time | 11.7576429844 |
| php_version | 5.3.2-1ubuntu4.9 |
| Case | try 1 | try 2 | try 3 | try 4 | middle |
|---|---|---|---|---|---|
| Same plain function called 10000 times | 0.0166 | 0.0187 | 0.0183 | 0.0135 | 0.0168 |
| Different plain functions called 10000 times | 0.0163 | 0.0221 | 0.018 | 0.0163 | 0.0182 |
| Same static method 10000 times | 0.0193 | 0.0265 | 0.0206 | 0.0194 | 0.0214 |
| Different static methods called 10000 times | 0.0221 | 0.0283 | 0.0229 | 0.0229 | 0.024 |
| Static methods of different classes called 10000 times | 0.0236 | 0.0279 | 0.0251 | 0.0242 | 0.0252 |
| Same dynamic method called 10000 times | 0.0166 | 0.0193 | 0.0169 | 0.0169 | 0.0174 |
| Different class methods called 10000 times | 0.02 | 0.02 | 0.0202 | 0.02 | 0.02 |
| Singleton method called 10000 times | 0.0403 | 0.0446 | 0.0409 | 0.041 | 0.0417 |
| Different singletons called 10000 times | 0.0562 | 0.0631 | 0.0548 | 0.0572 | 0.0578 |
В тестовом скрипте, я сравнил обычные PHP функции, статические методы класса, обычные методы и методы синглетона.
Результаты тестирования показали, что вызов методов синглетона, примерно в два - четыре раза медленнее, чем вызов обычных методов, что, в принципе, меня порадовало — я ожидал, что будет хуже.
При этом выяснилось несколько дополнительных вещей: cтатические вызовы функций объявленных без модификатора "static" примерно в два раза медленнее, чем с ним, cтатические методы немного медленнее, чем динамические.
Так что, в принципе, синглетоны вполне можно использовать, особенно в случаях, когда быстродействие не сильно критично.
Еще один странный глюк в PHP
Два дня бился со странным глюком - в скрипте в определенном месте отваливается соединение с базой данных - выдает "MySQL server is gone away". При этом отваливается всегда в одном и том же месте после куска кода с большим объемом вычислений, но без единого вызова базы данных. И только на сервере - на локальном компьютере всё тип-топ. Путем небольших, почти шаманских манипуляций с кодом удалось проблему купировать, правда неизвестно, где она может всплыть в дальнейшем. Налицо проблема в самом интерпретаторе PHP.
Upd: Нашел источник проблемы
Такое себе позволял только PHP4. Похоже, PHP5 вступил в ту стадию зрелости за которой уже наступает старческий маразм...
I need money, not a job
Рынок труда в России — это что-то особенное. С одной стороны, выйдя на улицы, прямо скажем, не самого богатого города России - Саратова, постоянно видишь большое количество дорогих иномарок, само наличие которых говорит о том, что люди в этом городе реально хорошо зарабатывают.
С другой стороны, данные статистики говорят, что средняя зарплата по городу составляет десять тысяч рублей. У думающих людей это вызывает некий когнитивный диссонанс.
Понятно, что каждый из нас считает себя совершенно уникальным в своем роде и способным на многое. Вот голова и начинают искать способы конвертировать свою уникальность в деньги, желательно минуя промежуточный этап в виде скучного процесса под названием "работа".
Занятно, что на людей которые более или менее имеют потенциал роста эти настроения влияют сильнее всего, они чувствуют, что что-то из себя представляют, это приводит к тому, что скорее всего они не пойдут работать на дядю - они чувствуют что есть другие способы получения денег. И в результате большинство оказывается выброшенными из нормального производственного процесса. С пивком у телевизора время пролетает веселее. Лишь единицы могут найти в себе силы начать что-либо делать.
Есть старомодное мнение, что чтобы стать классным специалистом - нужно развиваться, а как можно развиваться ни чем не занимаясь? Да, чтобы развиваться надо работать. Многие вчерашние студенты думают, что, чтобы добиться успеха нужно сразу начинать свое дело. Но успешно раскрутить своё дело получается у 0.00001 процента. Остальные промучившись год, два, так и не заработав ничего идут работать на дядю.
К чему я это? Просто периодически народ жалуется, что не может найти людей, желающих работать. Сам ищу - пока успехи довольно скромны. Люди не хотят работать, люди хотят денег. Много, сразу, и чтобы не работать.
Надеюсь, все же, что ситуация не настолько плоха, скорее всего, просто толковые люди никогда не появляются на рынке труда - они как нейтрино — неуловимы и не заметны, делают своё дело и не высовываются, а работодатели, которым посчастливилось найти таких людей помалкивают - а то как конкуренты переманят.


