27 Jul 2008

Языковому вопросу посвящается

Собственно, в чем проблема правильно изъясняться на великом и могучем? Нет никакой проблемы. Можно даже правил не учить. Прочитай десяток-другой классических произведений - и правильное написание до конца жизни обеспечено. Хотя на чтение классики сейчас ни у кого времени нет, и вообще это не модно.

Зато модно вместо использования мощных средств выражения, которыми обладает русский язык, пользоваться разнообразными уродливыми костылями. Хотя это даже не мода, а то, как сейчас обстоят дела (и будут обстоять еще долго). Моде подвержены конкретные модели костылей.

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

Почему?

Вот причины:

  1. Безграмотность
  2. Лень
  3. Страх
  4. Отсутствие элементарного вкуса
С первым пунктом все настолько ясно, что его даже комментировать не нужно.Со вторым интереснее. Наш речевой аппарат с некоторых пор не позволяет нам выговарить слова длиннее 7 букв. А те, кому позволяет, так сильно куда-то спешат, что на длинные слова у них все равно времени нет. Поэтому вместо "пожалуйста" мы скажем "плиз". Ведь все поняли, что мы имели ввиду? А за сэкономленные 0,3 секунды мы успеем... успеем... ну я не знаю что... но если взять за год, то сумма наверняка наберется приличная, и уж что-то полезное за это время мы точно успеем!Теперь о страхе. Казалось бы, при чем он тут? Да и где он вообще? Слышишь слово "плиз", страх видишь? Нет? А он есть.

Страшно признать свою ошибку или вину. Страшно показаться слабым. Страшно показаться искренним. А если ты говоришь что-то типа "прости меня, пожалуйста", то разом демонстрируешь все эти отвратительные качества. Поэтому лучше сказать "сори". Формально извинения принесены, но при этом никто от тебя собственно извинений не слышал. Лицо сохранено, можно жить дальше.

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

Грамотные люди также в курсе, что вообще постоянное повторение одного и того же выглядит не слишком круто. Поэтому любителям "респекта и уважухи" стоило бы поискать другие формы выражения своего одобрения (но они этого не сделают, потому что мозгов не хватит). Кстати, заметили, что уважуха никогда не ходит одна? Только в паре с респектом и всегда на втором месте. Так что ее можно уже считать не более чем частицей усиления. Осталось только выяснить, что круче - "респект и уважуха" или "респектище". Хотя намного интереснее узнать, в чем вообще прикол употребления архаизмов? Так вот. Они употребляются неправильно. Если сравнивать способ употребления "респекта" в то время, когда он еще был частью живого языка, и то, как это делается сейчас, то сразу становится видна нынешняя обезличенность употребления. Ведь раньше всегда указывалось, кто, кому, и насколько полон выражаемый респект. А сейчас - это просто факт наличия абстрактного уважения. Типа знаменитого сталинского "есть мнение...". Мнение, которое существует отдельно от человека, его выражающего, и даже вообще без этого самого человека. Оно просто есть. Если же и можно заподозрить произносителя "респекта", что это именно он хвалит именно Вас, то все равно это выглядит этаким начальственным похлопыванием по плечу.

Если кому-нибудь когда-нибудь придет в голову шальная мысль выразить мне "респект", советую гнать ее поганой метлой, и как можно скорее. А за "уважуху" я Вас вообще возненавижу.

Или вот еще. Редкий анонс концерта какой-нибудь доморощенной звезды обходится без обещания "драйва". Точнее, простой драйв уже вымер. Не выдержал конкуренции. Сейчас драйв может быть либо бешеным, либо сумасшедшим. Казалось бы, зачем нужен этот бред? А для денег. Ведь не скажешь же, что какая-нибудь условная уматурман создала замечательные композиции, наполненные глубоким и неожиданным смыслом и прекрасной музыкой, да еще и с потрясающим живым исполнением? Не скажешь, ибо будешь выглядеть полным идиотом. С другой стороны, людей чем-то завлекать надо. Остается обещать всякую непонятную туфту типа того же "драйва". Так что драйв, в переводе на общепонятный - это "ни петь, ни играть, ни сочинять не умеем, но все равно мы круты, а почему, мы вам не скажем".

Так вот. Хороший вкус - это большая редкость. И это и есть основная причина всех проблем на Земле.

17 Jul 2008

PHP-thing

Если какой-нибудь новомодный инструмент с веб-интерфейсом радостно сообщает Вам на каждой своей странице, сколько SQL-запросов он выполнил для генерации этой страницы, сколько памяти использовал и другую абсолютно бесполезную информацию, можете быть уверены - перед Вами очередная PHP-шная хрень.

14 Jul 2008

Software

Купив в прошлые выходный MS Office и проведя чистку и обновление своего компа, я выяснил, что на нем не осталось нелицензионных (то есть ворованных) программ. Спеша отметить этот радостный момент (хоть в чем-то можно быть честным человеком :) я решил опубликовать список того, чем я пользуюсь, с комментариями. Итак.

OS - Windows XP Pro SP3.

Firewall - Comodo 3.0. Бесплатная и к тому же чуть ли не самая навороченная в плане защиты вещь. Не скажу, что я в полном от нее восторге, но коммерческие аналоги не настолько лучше, чтобы заставить меня раскошелиться.

Antivirus - Avira AntiVir Premium 8.1. К сожалению, все приличные бесплатные антивирусы бесплатны только если комп не используется в коммерческих целях, а я на своем официально работаю... После непродолжительных поисков выбрал вариант с самой большой базой вирусов за небольшую ($19) цену, и пока что полностью удовлетворен.

Web - по умолчанию Opera 9.51. На случай, когда она не справляется, под рукой Firefox 3.0 и Safari 3.1.2. IE 7 используется там, где необходим IE :). Все четыре браузера используются при разработке, при этом основную роль играет уже Firefox. Safari - основной браузер для производства скриншотов :). 

E-Mail - Microsoft Office Outlook для работы (потому что это требование работы, и, к тому же, в версии 2007 это действительно мощная и удобная вещь). Если бы мне приходилось писать письма вне работы, я бы тоже ее использовал, но, поскольку делать это мне приходится пару раз в год, для остальной почты я использую (сюрприз)... Opera! Я ежедневно получаю тонны писем в различных девелоперских рассылках, и Опера отлично умеет их фильтровать и находить нужное. Кроме того, очень удобно иметь в одном окне браузер, почту и RSS. Что Опера не умеет делать хорошо, так это писать письма (только plain text), но тут см. начало абзаца ;).

Office - Microsoft Office Standard 2007 SP1. Его наличие обусловлено необходимостью в Outlook :). Если бы ее не было, я бы рассмотрел вариант с Open Office, который, по некоторым данным, не так уж плох. Ну а так можно обойтись без рассмотрения других вариантов, потому что 2007 офис работает и работает хорошо (особенно рулит плагин для экспорта в PDF). Standard взял, потому что в более крутых версиях нет ничего такого, что мне было бы нужно, а денег жалко :).

Java IDE - IntelliJ IDEA 7. Купил практически одновременно с офисом. NetBeans, в принципе, сейчас тоже неплох, но меня совершенно не устраивает наркоманская зависимость от build.xml, и, как следствие, невозможность использовать свой билд-скрипт. Ну и к тому же IDEA просто лучше :). Хотя раньше была еще лучше, пока не стала ориентироваться на запросы пользователей.

Audio player - foobar2000.

Video player - Media Player Classic. Умеет все, что надо, и ничего, чего не надо.

DVD Player - Cyberlink PowerDVD 5. Довольно старая и, к тому же, урезанная версия (она даже не умеет декодировать DTS), которая поставлялась вместе с видеокартой Gigabyte от моего прошлого компа (а гадский Asus нифига полезного со своей картой не дал). Но она умеет нормально играть DVD и умеет пускать звук через SPDIF - а мне, собственно, больше ничего и не нужно :). Я бы, может быть, купил версию поновее (8.0), но они используют какую-то хитрую систему биллинга, которая не хочет работать с бесплатной почтой.

CD/DVD recording - Nero Express 6 Plextor. Как нетрудно догадаться, поставлялась вместе с моим приводом Plextor. Ничего ультрасовременного, но работает без  ошибок, и на том спасибо.

Image works - FastStone, Picasa, GIMP. Когда я увидел цену на Adobe Photoshop, я быстро смирился с не самым удобным интерфейсом ГИМПа :). Есть еще ACDSee, пришедшая вместе с Pentax, но после установки FastStone случаев ее использования больше не было.

IM - Miranda 0.7.5. В последнее время она стала мне надоедать, но искать что-то другое мне просто влом :).

Commander - FreeCommander. Не намного хуже Total Commander, и при этом бесплатный.

А также куча серверов баз данных, серверов приложений, утилит для принтера, для тв-тюнера, для iPod и других слишком специфичных или слишком тривиальных для упоминания программ. Все бесплатные :).

JSF 1.3

Не так давно вышел Early Draft спецификации JSF 2.0. По высказанным мной недавно соображениям (а также без их учета) это вещь, которая заслуживает внимания, которое я ей и уделил. Напомню, что представители экспертной группы обещали нам, помимо прочих вкусностей, конфигурацию с помощью аннотаций, новый удобный язык разработки страниц и простое создание компонентов a-la Tapestry 5 (но по-умному).

Чем же нас порадовали в первом материальном результате работы экспертной группы? 

  • Появилась возможность указывать параметр ProjectStage ("Production", "Development" etc.), в зависимости от значения которого JSF будет слегка менять свое поведение.
  • Появился стандартный способ упаковывать ресурсы вместе с библиотеками компонентов, версионировать их и локализовывать.
  • Появилась возможность ссылаться на ресурсы с помощью EL.
  • Появилась новая система публикации/подписки на события.
  • Появился механизм релокации ресурсов (можно в компоненте указать, что он зависит от такого-то ресурса, и ссылка на этот ресурс будет автоматически встроена в head итогового кода страницы).
  • Появилась практически пустая глава "Integration with Facelets", в тексте которой амбициозно заявлено нечто вроде "Здесь потом будет спецификация Facelets, а пока что мы сюда сваливаем всякую фигню, чтобы не забыть".
  • Плюс некоторые телодвижения в общем направлении упрощения интеграции с Ajax.

Это все.

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

Точнее, одну из фундаментальных проблем призвано решить внедрение Facelets. Но, как было отмечено, пока что готово только название главы. Более того, я лично (и в этом я не одинок) категорически против использования указанного термина в официальной спецификации вообще. Facelets - это посторонний проект, проект очень удачный и могущий послужить основой для спецификации нового языка описания страниц. Но тем не менее это проект посторонний, не являющийся частью Java EE, не имеющий спецификации, и потому ссылки на него выглядят очень странно и ненадежно. Никто же не ссылался на Hibernate или TopLink в спецификации JPA? 

Выходом может быть объявление, что в этом документе под Facelets понимается не всем известный проект, а новый язык описания страниц, являющийся неотъемлемой частью спецификации JSF. Но об этом нужно громко и внятно сказать, дабы не вводить народ в смущение. А еще лучше придумать новое подходящее название, слово Facelets выбросить из спецификации, зато на основе этого проекта первую официальную реализацию нового языка (собственно, в отдельных частях документа это название даже встречается - "Faces PDL").

Наконец, про использование аннотациq для конфигурации (типа @ManagedBean) в документе вообще не слова. То есть нам по-прежнему предлагают писать XML-файлы размером в тысячи строк. И это в то время, когда подавляющее большинство остальных Java EE - технологий избавились от XML hell еще в версии 5.0 (JSF 2.0 должна войти в Java EE 6.0).

Все это тянет максимум на версию 1.3, но никак не на 2.0.

Я, конечно, понимаю, что это всего лишь "раннее черновое превью". Но в этом превью я ожидал увидеть контуры будущего грандиозного здания, пусть и нечеткие, которые будут уточняться и обростать деталями в последующих выпусках на пути к финальной версии. Вместо этого нам показали все тот же сарай с парой новых пристроек и интегрированным сортиром, а также табличкой с надписью "Здесь будет погреб".

Возникает ощущение, что экспертная группа пошла по пути наименьшего сопротивления и описала те изменения, с которыми все понятно, оставив сложные вещи на потом. Такой подход имеет право на жизнь, но зачем тогда публиковать такое превью, по которому нельзя судить о том, что, хотя бы в общих чертах, будет из себя представлять конечный продукт? Неужели только для того, чтобы показать, что EG работает, а не балду пинает?

Несмотря ни на что, продолжаю ждать и надеяться :).