SYStem EXclusive

Я тут пешу - чего же боле…

Ubuntu server

November 8, 2008

Сбылась мечта идиота. После того, как выяснил у провайдера, что у меня статический айпишник, так и началось думаться, что неплохо было бы поставить в квартире (а конкретнее - в отхожем месте) сервер. Пусть себе жужжит вентиляторами на радость мне и интернет-детям. Да и свербит уже давно начать играться с линуксом по-взрослому. Долго искал системный блок нахаляву, ибо сверхзадача была - поднять это дело бесплатно, на общественных началах. Потом системный блок был найден, и долго не было свободного времени, чтобы этим заняться с толком, с расстановкой.

И вот настал тот день.

Ubuntu server deployment

  1. Системный блок нахаляву.
  2. Карманная книга про команды линукса, коя уже полгода лежит в отхожем месте. Помогает :)
  3. Дистрибутив Ubuntu server 7.10 (тема выбора дистрибутива не раскрыта).
  4. Инструкция по настройке (по установке - не нужна в принципе).
  5. Пиво - палюбому.

По результатам сего действа буду краток - панравелось. Ну, консоль, по роду своих занятий, я увидел далеко не в первый раз, поэтому всё было ожидаемо и узнаваемо, можно начинать играться, теперь я сам себе здатый рут. Интернет-детям тоже, видимо, панравелось, потому что через некоторое время они тоже начали играться - пошли брутфорс-атаки на ssh и ftp порты. Ну что же, а теперь давайте просто посидим и понаблюдаем за ними(С)Дроздов

UPD: Понаблюдал.Поставил Denyhosts.  За 15 минут заблокировал несколько хостов. Ну чисто, как дети малые.

ubuntu cola

Вот такую странную колу купил в Стокгольме. На вкус - обычное говно обычная ***-кола.

Председатель Правительства Российской Федерации ознакомился с работой нового сайта

October 31, 2008

Председатель Правительства Российской Федерации ознакомился с работой нового сайта

puten.jpg

Ну щас вот начнут срать про откаты и всякое прочее.

Профессор дело говорит

April 2, 2008

Цитата из интервью с Аароном Маркусом -

Вспоминая про веб-приложения, я пожаловался на плохую юзабилити большинства флэш-сайтов, сильно уступающую банальному HTML.

- Я согласен, что Flash хорош для некоторых вещей, однако он слишком часто используется для создания симпатичных, но не очень удобных сайтов. Впрочем, здесь есть некоторые подвижки. Мы сейчас работаем с одним клиентом, впервые используя Flex (среда разработки веб-приложений на базе Adobe Flash. - И.Щ.) для разработки дизайна интерфейса. Она показывает себя довольно многообещающей для создания сложных пользовательских интерфейсов с хорошей юзабилити. (выделение -моё выделено мной)

Вообще, смотрите, что происходит. После того как появляется новая технология, в течение трех лет ее используют для плохого дизайна, потом в течение двух лет люди начинают понимать, как ее нужно использовать, и ситуация улучшается - а потом приходит новая технология, и снова начинаются три года плохого дизайна. (Смеется.) Это происходит каждые пять лет. Давайте посмотрим на первые веб-сайты. Это было безумие! Сейчас они стали много лучше.

Грамотный чувак, сразу видать. Борода и очки - всё при ём.

NIИ - Ghosts I-IV

March 22, 2008

Вот что сообщила мне компьютерра - Trent Reznor записал новых музык, и, согласно новомодным тенденциям даёт скачать своё творчество. Бесплатно - девять композиций, за пять баксов - все тридцать шесть. Есть ещё дороже опции - супер бокс-сет и супер-пупер бокс-сет. Зная творческую плодовитость Трента, я не удивился.

Я обрадовался и полез качать. Скачал бесплатный сет. Происходит это так - ввести емайл, капчу и вам приходит одноразовая ссылка, по которой скачивается архив. А в архиве - мать моя мамочка - кроме девяти треков обнаружился pdf с сочными фотками, и папочка extras c картинками (wallpapers-standart, wallpapers-widescreen, web graphics(!)). Всё подобрано и оформлено исключительно толково. Да-да, картинка вверху именно из web graphics и сделано это всё для того, чтобы вот так вот лепили кто ни попадя их себе на страницки. Отличный пендосский маркетинг!

Что бы там ни говорили звукозаписывающие компании, хнычущие о том, что они теряют деньги из-за композиций, скачиваемых через интернет - фигня всё это и полный lame. Radiohead наварил бабла на онлайновом самиздате. И NIN наварит, я уверен, ибо талантище агромадный. Ознакомившись с бесплатным сетом, я готов (да что там, заранее готов был) купить полный сет за пять баксов, думаю, что минима девятьсот тысяч человек по всему миру со мной солидарны. Но вот проблема. Как это сделать из России, не имея нормального пластика?

В общем - ма-ла-ца. Fuck yourself, Trent! Типа, спасибо.

sanyatec feat top4top

January 17, 2008

sanyatec feat top4top

Решил посмотреть на так шыроко разрекламированый топтоп, тем более, что сделан на флеше, ну то есть во флексе, ну то есть вы поняли. Ну и похихикал, обнаружив на главной ленту картинок, сделаную для sanyatec.ru в ушедшем году. Саня, нас посчитали! Да, вестимо популярный виджет.

Правление поздравляет с Н.Г.

December 12, 2007

Давно не встречал такого шедевра!
Вы только посмотрите на детали. Этот листок, расчерченый карандашом, этот аккуратный старушечьи-каллиграфический почерк, и, наконец, - двойное подчёркивание под линейку главного смыслового блока в тексте. Не, я не стебуся, правда нравится. За этой простой малявой видится целая цепь событий и выпуклый характер писавшего её человека.


Гирлянду и впрямь жалко, хорошая, наверное, была, китайская.

Десять советов для работы с Cairngorm

November 11, 2007

Эта заметка - перевод статьи 10 tips for working with cairngorm. Статья показалась мне чрезвычайно интересной и полезной в плане общих советов по применению фреймворка, особенно в первый раз. За перевод спасибо Виноделу.

Это Применимо к Flex 2.0.1 с любой версией Cairngorm. Поскольку опыт программирования во Flex у всех различен, это не факты, а только мое мнение, основанное на моем более чем двухлетнем опыте использования ARP & Cairngorm. Более того, существуют альтернативы Cairngorm, однако я не могу испытывать их столько, сколько хочу.
Поскольку я работаю именно над продуктом, я не могу по своему усмотрению «взять и попробовать эту среду на этом новом проекте». Я работаю с одним и тем же базовым кодом, поддерживая существующих клиентов, и не могу совершать резких изменений в кодировании, не рискуя быть уволенным.

1. Если Cairngorm кажется вам сложным, не волнуйтесь, это так и есть, вы не одиноки.
“Куча кода на _root вместо всех этих классов и соглашений? Это займет целую вечность!”. На самом деле к этому надо просто привыкнуть. Я почувствовал себя уверенно с Cairngorm только на четвертом проекте. Однако до сих пор я совершенствую стиль работы, пробую разные штуки. Чем больше людей приходят во Flex, тем больше кульных идей и техник появляется вокруг.

2. Вам кажется, что у вас поначалу уйдет много времени только на то, чтобы вообще что-то сделать в Cairngorm. И это правда..
OMFG… три класса для того, что во флеше заняло бы одну строку?
Генератор кода поможет, особенно на начальной стадии работы над проектом.

3. Только Commands устанавливают данные в Model; вы можете это побороть, но не стоит, если можете исправить код.
В Model View Controller, только Controller устанавливает данные в Model. В этом случае Commands выступают в качестве Controller (обычно) и в качестве таковых установка данных ModelLocator – их единственная работа. Если данные на@бываются, вам сразу понятно, что накосячил Command. Вам никогда не надо задавать вопрос «кто устанавливает мои данные, где и когда?».

4. Delegates заставляют сервер вызывать и парсить данные (иногда в Factory).
Это произошло в моей карьере лишь однажды: я работал с PHP для серверной части, которая парсит XML, в разгар проекта мы переключились на OpenAMF и Java, где пришлось парсить объекты. При использовании Delegates вам придется только поменять код Delegates, не трогая остальную часть вашего приложения. Данные Commands сохранятся.
Я пользуюсь Factories только потому, что
A) для парсинга может потребоваться много кода, а вы не хотите, чтобы Delegates выглядели более сложно, чем они есть
B) вы легко можете распределить процесс парсинга в том же классе Factory.

5. Если вы видите, что Command парсит данные, он написан неправильно.
Парсинг отличается от фильтрации, изменения и ассемблирования. Это значит, что изготавливать Value Objects из XML лучше в Delegate, а не в Command. Нормально и связывание с ArrayCollections, содержащими предустановленные значения. Помните, что если Command получает необработанные серверные данные, - вы или некорректно используете Delegates, или у вас правильно работает AMFPHP/FDS/WebOrb, хехе.

6. Существует три способа использования Commands и Delegates. Я предпочитаю А, так как он дает небольшие файлы классов и очень четкий.
A) Для каждого случая использования создается один Command и один Event. А иногда нужно сделать и один Delegate. (например LoginEvent, LoginCommand, LoginDelegate)
B) Для каждого случая использования вы можете упаковать их в один пакет.
Например, Login, ChangePassword, ForgotPassword составили бы один класс. В этом случае для определения запускаемой части используются константы. (то есть, у LoginEvent есть LOGIN, CHANGE_PASSWORD, и FORGOT_PASSWORD, являющиеся String константами. У LoginCommand есть switch, который определяет команду, которая должна быть запущена. У LoginDelegate есть три метода: login, changePassword, и forgotPassword которые может использовать Command.
C) Вариации на тему Б. Возможно существование одного Event и одной Command, но нескольких Delegates.
Этот пункт – типа обобщающий, на всякий случай. Я повидал много вариантов, которые можно назвать “В с вариациями”.

7. ViewLocators считаются «плохой практикой».
Значит, есть разработчики, которые до сих пор их любят и используют.
Однако использование верно в таком варианте: если есть View, который знает, когда в Command что-то произошло. Я использую callbacks: изменения данных в Model вызывают callbacks во Views (возможно, через setter), а некоторые используют addEventListener совместно с CairngormEventDispatcher.

8. ViewHelpers считаются плохой практикой.
То есть существуют разработчики, которым нравится идея отделения программного кода от кода разметки. Я видал соответствующие темы в блогах и в списках рассылки. Есть две общие идеи:
A) Им не нравится смешивать ActionScript & MXML.
B) Они хотят отделить View’s от “View controller code”
Некоторые используют скриптовые теги для указания на внешний файл (по моему мнению – фигня; вам придется определить контроллеры как члены-переменные а закончите вы тем, что будет в два раза больше классов View).
Некоторые используют наследование там, где вы расширяете GUI MXML.
Некоторые используют обратное и расширяют GUI MXML с ActionScript ViewHelper.
Некоторые вообще придерживаются подхода при котором Composition наследуеся от MovieClip , что я многократно видел у кодеров на Flash. Вместо ViewHelper , расширяющего класс видов, он принимает UIComponent в качестве параметра конструктора, и использует UIComponent через композицию.
Мне кажется, вы с этим разберетесь как только разберетесь во Flex. Пишите свои компоненты в MXML с кодом в скриптовых тегах. Если реально нужна эффективность или хотите начать писать на низком уровне, на классах абстрактного типа, можете писать свои компоненты на ActionScript. Если же хотите закончить «до заката» - используйте MXML.

9. Вместо flash.net.Responder используйте mx.rpc.Responder.
Да, это неудобно, так как Flex 2.0.1 не предоставляет исходников (эта информация уже устарела - прим. перев.), но, по-моему, Flex Builder не очень хорошо справляется с классами с одинаковыми названиями. Просто пользуйтесь тем, что использует Flex и бросайте работу. Если кто-то требует flash.net.Responder - напишите враппер, чтобы перевести его во Flex.
«Сэр…Вам нужен галстук чтобы войти в ресторан. У нас есть один, минутку»

10.Делайте так, чтобы View не использовали CairngormEventDispatcher (или события, которые работают с CairngormEvent, используя event.disaptch()).
Вместо этого делайте “глубоко” транслируемые события View.
Или соедините их так, чтобы контроллер View мог вызывать события Cairngorm, или постройте их «типа домино».

Обычный сценарий, когда itemRenderer - это классы в DataGrid.
Вы:
- делаете класс itemRenderer. Если есть что-нибудь «кликабельное», посылается обычное событие по «клику».
- расширьте DataGrid который использует обычный itemRenderer, и поместите обычное событие в <mx:Metadata> вверху. В противном случае классом, который содержит DataGrid и будет допущен к подключению к событиям через MXML, будет только ActionScript.
Если вы используете MXML, то компиляция не удастся, поскольку у DataGrid нету такого события в его исходном коде.
Поначалу может показаться круто иметь LoginForm чтобы транслировать LoginEvent, но будет неудобно использовать его для других целей; это «тяжело написано» для того, чтобы использовать специальный CairngormEvent. Применяется это ко всем компонентам. Инкапсулируйте ваши компоненты, и лучшее, что вы можете - сделать события всплывающими.

Flex, SOAP, PureMVC, Cairngorm

November 11, 2007

1. Flex2 не так хорошо, как хотелось бы, работает с веб-сервисами. В частности нет нормального механизма сериализации-десериализации Soap-объектов. Того уровня типизации объектов, который есть, категорически не хватает на реальных приложениях. Распространённые решения этой проблемы - это не использование AS-библиотек для сериализации-десериализации на клиенте, а серверные .NET библиотеки-врапперы, которые сериализуют Soap в AMF на сервере. Мне это не очень подходит.

2. Встал вопрос об использовании Flex-фреймворка для использования на текущих проектах. Были рассмотрены PureMVC и Cairngorm. Размеры фреймворков примерно одинаковы. Несмотря на то, что поначалу PureMVC показался более стройным (отчасти благодаря статьям Роста), при ближайшем рассмотрении выяснились несколько недостатков PureMVC.
Во-первых, ничего конкретного построить в нём нельзя, не добавив к нему ещё своих библиотек, например для работы с веб-сервисами (в Cairngorm это решение присутствует изначально и реализовано это довольно остроумно).
Во-вторых, слишком много кода завязано на Facade. Cairngorm позволяет более гибко строить приложения, не теряя при этом общей концепции в архитектуре.
В-третьих, я не пойму, зачем в PureMVC сделаны Notifiers. Зачем было делать слой над AS3 моделью событий, который делает то же самое, только основываясь на своих классах? Понятно, бла-бла, для того, чтобы всё это работало со всеми частями фреймворка, фасадом и прочим. Но увольте, я думаю, можно было как-то для этого использовать встроеную модель событий, как это реализовано в Cairngorm (ещё один плюс ему)

В-общем, первый приз достался Cairngorm. В следующем выпуске - перевод статьи 10 tips for working with cairngorm

Копаю…

October 12, 2007

Сменил работу. В связи с этим, писать сюда буду мало и редко, ибо чукча теперь - не писатель, чукча - читатель. Писать особо нечего, приходится много читать того, что уже написали другие. В основном - по флексу, и немного - по дотнету, да и так, вообще… На мой вопрос новому руководству, в какую сторону копать, был получен ответ - “вглубь”.

Копаю вглубь от обеда до ночи.

nnCron - в бой идут одни старики

September 4, 2007

Вчера задумался, почему я, имея самую простую клавиатуру за 200 р., должен чувствовать себя ущербным по отношению к обладателям мультимедиа-клавиатур за тысячи рублей, утыканых со всех сторон дополнительными кнопками. Хочу назначать на любые клавиши любые приложения и всё тут. Для начала хотелось бы запускать музыку, видео, почту и браузер.

В жизни всегда есть место для творчества - на сцене появляется nnCron. Что это такое? Если сказать, что это планировщик или твикер - это будет верно, но не до конца. nnCron - это швейцарский нож для управления ресурсами вашего компьютера. При своём мало-размере возможности его впечатляют. Лучше об этом почитать на сайте производителя.

Минимум, что он умеет - это запускать приложения по времени (sheduller), при этом синтаксис команд совместим с Unix crontab. Максимум - это встроеный скриптовый язык. При этом не обязательно для добавления задачи писать макрос, у nnCron есть и GUI, через который можно управлять заданиями в привычной для многих форме. По мне, так все остальные твикеры и шедуллеры - идут строем в ресайкл бин.

А теперь - слайды :)

Назначаю горячую клавишу <Ctrl+F12> на запуск The Bat

#( Bat-start
AsLoggedUser
WatchHotKey: “^{F12}”
Action:
StartIn: “C:\Program Files\The Bat!”
ShowNormal NormalPriority
START-APP: C:\Program Files\The Bat!\thebat.exe
)#

Назначаю горячую клавишу <Ctrl+F11> на запуск Mozilla Firefox
Тут немного интереснее - если Firefox уже запущен, то nnCron не будет запускать копию, а сделает окно Firefox активным.

#( Firefox-start
AsLoggedUser
WatchHotKey: “^{F11}”
Action:
PROC-EXIST: “firefox.exe”
IF
WIN-ACTIVATE: “/.*firefox/i”
ELSE
StartIn: “C:\Program Files\Mozilla Firefox”
ShowNormal NormalPriority
START-APP: C:\Program Files\Mozilla Firefox\firefox.exe
THEN
)#

Поработал - отдохни.

Назначаю хоткеи <Ctrl+F10> на воспроизведение DVD (используется Mplayer) и <Ctrl+F9> - на воспроизведение mp3 (Winamp).
При запуске Winamp, неплохо было бы, чтобы он сразу стартовал проигрывание трека, я надеялся нагуглить какие-нибудь параметры командной строки для оного, но нашёл это - плагин AutoPlay. Всяко неплохо, даже ещё интереснее. И наконец, чтобы уж до конца довести идею “once-click”, - при запуске DVD будем убивать Winamp, зачем - обьяснять не буду.


#( Mplayer-DVD-autoplay
AsLoggedUser
WatchHotKey: “^{F10}”
Action:
StartIn: “C:\mplayer”
ShowNormal HighPriority
KILL: “mplayer.exe”
KILL: “winamp.exe”
START-APP: C:\mplayer\mplayer.exe dvd://0 -dvd-device e: -fs
)#


#( Winamp-start
AsLoggedUser
WatchHotKey: “^{F9}”
Action:
StartIn: “C:\Program Files\Winamp”
ShowNormal NormalPriority
KILL: “winamp.exe”
START-APP: C:\Program Files\Winamp\winamp.exe
)#

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

nncron-keyboard.JPG