Чтобы добавлять сообщения и комментарии, .

@andyone:
andyone

Вот объясните мне, как можно говорить про то что тебе насрать на производительность когда приложение в 99.999999999999999% случаев будет работать не на твоей машине — blog.z-13.ru Я думаю люди с такой логикой начинают темнеть, разговаривать на хинди, не есть говядину, принимают индуизм и рано или поздно оказываются в группе разработки flex.

@andyone:
andyone

Реализация алгоритма Кнута — Морриса — Праттадля для поиска образца (подстроки) в строке — andyone.pastebin.com

@andyone:
andyone

Улыбает меня этот блог и советы его автора — blog.z-13.ru Половину советов можно с легкостью записать в разряд вредных, еще четверть в разряд бесполезных, и еще процентов 20 в разряд очевидных.

@andyone:
andyone

Сегодня столкнулся с магической ошибкой созданной в недрах Адоба, индусскими шаманами.
У меня есть Highlighter который позволяет подсвечивать текст, вся его работа строиться на методах TextField для работы с текстом — getCharBoundaries, getLineMetrics, getLineOffset ну и так далее. Подсветка простая — from, to, color. Тут и без доков понятно. Но сегодня случилась магия, для простейшего приложения (показ дифов ~ десяток килобайт + шрифт) у одного единственного текстового поля появилось смещение по оси X. При этом смещение было крайне странным — соотнести его с каким либо положением элемента на экране было невозможно — смещение было порядка 100 пикселей, в то время как текстовое поле на любом уровне вложенности было +- 10 пикселей от начала координатной сетки.
Так вот дети, сия злая магия каким-то образом связана с тем что делал я это все во Flash IDE (и думаю его компилятором), и каким-то образом что-то и как-то делало вот такую штуку. При этом я проверил байт код — ничего особенного в создании и инициализации текстового поля нет.
Вылечилось это просто — удалением поля и созданием нового. После этого проблема исчезла. Может кто знает, что это было и почему?

@andyone:
andyone

Кто там хотел Flex Builder под Linux? Говорят вышел FDT4 с beta поддержкой Linux:

Please follow this instructions for Linux:
We are working on making the Linux version as stable as possible (Currently on Beta)
1. Download and install your Eclipse <solutions.powerflasher.de>
2. In the Eclipse Menu: Help ->Install New Software
3. Add the following URL: fdt.powerflasher.com

@andyone:
andyone

Адоб — это какой-то набор кретинов. Как мне скачать установочный файл их сраного плеера? Под Firefox они пытаются мне запилить какую-то мутную приблуду в виде расширения, а под хромом говорит что у меня последняя версия плеера, и обновления мне не нужно.

@andyone:
andyone

Критиновость и рукожопость индусов из Adobe не перестает меня поражать. Отличный пример Flash CS5 (думаю для его написания набирали специальных олигофренов).

Есть такая штука, как возможность писать свои кастомные компоненты и выносить свойства для редактирования в панель свойств. Так вот если указать (или можно не указывать, оно само подхватит), что данное свойство имеет тип Number — то при их применении, чтобы вы не написали придет NaN. Я конечно вначале подумал, что это я рукожоп — но после проверки в CS4 убедился что это не так. К тому же установка свойств сама себя убивает, и если в CS4 при запуске теста я вижу свою компоненту с измененными параметрами (http://bit.ly/bW1fA9), то в CS5 я вижу сообщение из разряда "Ай шайтнама ашипка, медот_изминения_свойства_в_жопе_мира_0:[1231]" (http://bit.ly/crYHg1) и никакой компоненты нет.

Кстати если вы никогда не пробовали писать свои компоненты по Flash — скажу вам по своему опыту — это думаю сравнимо с попыткой найти 5 рублевых монеток в бетономешалке наполненной доверху говном. Ибо никаких данных из компонент на время их работы в Live Preview (настройка их в IDE) нет. Вы можете только догадываться, что и почему у вас не работает. К тому же, все может просто резко перестать работать, из какой-то зависимости от зависимости, у меня был случай когда перестала работать установка свойств из-за того int не приводился к Number в одном месте. При чем узнал я это опытным путем, связи небыло абсолютно никакой.

К тому же поведение в Live Preview и в конечном приложении может отличаться, и вам нужно закладывать это в логику (+ лишние kb кода). И самое главное, это документация. Которая не обновляется со времен наверное CS2. Стада индусов из Адоба периодически меняет что-то в коде, но вы об этом узнаете только на момент когда все перестанет работать, а в документации написано — что у вас все правильно и внизу будет написанно что-то вроде (Updated 10 sep 2004). Так что возможность разработки GUI приложений не через жопу о которой мечтает @develar либо будет не скоро, либо не будет совсем. Потому, что даже если вы (в данном случае я) хотите сделать все нормально (при чем как бы за бесплатно развивая их зассаную платформу) — Адоб кладет на это все большой и толстый (хотя скорее маленький и сморщенный) детородный орган накрывая им заодно и вас.

@andyone:
andyone

Меня тут в твитере спросили почему я советую использовать в случае использования NOSQL Riak и Cassandra. Скажу о каждой:

Riak — офигенна. Во первых это p2p система, ее разрабатывают люди которые работали над Amazon Dynamo. То есть управляющего сервера нет как такового. Это очень отличный ход в сторону fault tolerance, так как обычно именно управляющий сервер является слабым звеном во всей системе. Вторая мега фича, это разрешение вопросов с целостностью данных, когда на 2 кластерах есть 2 разные версии одного документа (может произойти в случае отсутвия связи между кластерами). В большинстве случаем, система сама разрулит ситуацию, если нет, дает функционал для написания своих правил обработки ситуаций. Еще 2 вкусняшки — это map reduce и ссылки. И ссылки самое вкусное. Возможно ссылаться из одного документа на другой, это же круто, это легко и понятно. И да да, Riak это документоориентированное хранилище. Хотя оно позиционируется как key/value над key/value функционалом, есть специальная прослойка для работы как с документами. Минус — она на Erlang, починить в случае бага, большинству будет трудно (хотя я стал вникать в эрланг именно благодаря этому проекту). К тому же для больших корпораций важна поддержка продукта, ребята из Basho за $ ее вам обеспечат, кругласуточно при чем выяснять ваши проблему будут разработчики.

Теперь о Cassandra — это еще более офигенная система вплане архитектуры. Ее архитектура берет корни из Amazon Dynamo (P2P как Riak) и BigTable, а как вы знаете BigTable это то на чем крутиться процентов 98 гугла. В принципе архитектура почти полностью повторяет column-family структру базы, но добавляя в нее supercolumns (чтоб было понятнее — в MySQL это было бы наборы таблиц). Но самое крутое — это система записи даных. При поступлении запроса на запись, данные вначале записываются в disk commit log (на случай сбоя, чтобы можно было обработать данную ситуацию в дальнейшем), после этого даные записываются в memtable, иначе говоря в память. Когда memtable набирает достаточное количество записей (ситуаций 3 — достигается лимит используемомй памяти, уже получено 128 записей, или просто подошло время сохранить данные — каждые n секунд данные сохраняются на диск), она записывается на диск в виде уже SSTable и создается индекс SSTable Index. После чего disk commit log удаляется. Как говорят сами разрабочики это дает им:
— No reads
— No seeks
— Fast
— Atomic within ColumnFamily
— Always writable

Ну а если это не понятно, просто сравним скорость записи и чтения между Cassandra и MySQL:
MySQL — Чтение: ~350ms Запись: ~300ms
Cassandra — Чтение: ~15ms Запись: ~0.12ms

То есть такая система, с кэшированием записей прежде чем записать их на диск, дает очень существенный прирост в скорости.

Я описал только Power Features этих проектов. У них есть и минусы и плюсы, некоторые системы их операжают по некоторым параметрам, но в общем, как готовый продукт, именно эти 2 системы я считаю лучшими на данный момент, для проектов с большими объемами данных.

К тому же как человек, работающий с NoSQL и изучающий его возможности скажу — самое трудное это начать мыслить иначе, чем вы привыкли, уйти от таблиц, join'ов и всего прочего. Это реально очень трудно.

@andyone:
andyone

Если вы выбираете все объекты внутри другого объекта или словаря с помощью for используйте его так:

for (var key:Object in target)...

а не так:

for (var key:String in target)...

Хотя ключ и стринговый, но при переборе 2 вариант, будет работать в 10-15 раз медленее.

@andyone:
andyone

Создание системы стилей UI компонент, крайне не тривиальная задача. Такое количество звязанных элементов и частей системы, у меня в первый раз. Каждая строчка кода, дается с большим трудом.

@andyone:
andyone

Искал в сети RegExp для разбора URL на состовляющие. Какие-то ребята примерно за пару лет создали это:

^(?#Protocol)(?:(?:ht|f)tp(?:s?)\:\/\/|~\/|\/)?(?#Username:Password)(?:\w+:\w+@)?(?#Subdomains)(?:(?:[-\w\d{1-3}]+\.)+(?#TopLevel Domains)(?:com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|edu|co\.uk|ac\.uk|it|fr|tv|museum|asia|local|travel|[a-z]{2})?)(?#Port)(?::[\d]{1,5})?(?#Directories)(?:(?:(?:\/(?:[-\w~!$+|.,=]|%[a-f\d]{2})+)+|\/)+|\?|#)?(?#Query)(?:(?:\?(?:[-\w~!$+|.,:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,:=]|%[a-f\d]{2}))(?:&(?:[-\w~!$+|.,:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,:=]|%[a-f\d]{2})))(?#Anchor)(?:#(?:[-\w~!$+|.,:=]|%[a-f\d]{2}))?$

Имхо, это какой-то гипертрофированный монстр. Сел и написал полегче и менее мутный. Вот этого хватит на 99% случаев:

^([A-Za-z0-9_+.]{1,8})(:[\/].)?([!-~]+@)?([^\/?#:])(:[0-9])?(\/[^?#])?(\?[^#])?(\#.*)?

@andyone:
andyone

Только что открыл для себя один баг в BitBucket. Поставив Mercurial Plugin для Eclipse, забыл сменить дефолтное имя юзера, и вместо andyone там стояло andy. Пишу код, спокойно комичу и синхронизирую с помощью tortoisehg. Захожу BitBucket и вижу что юзер andy (то есть не я) закомитил мне код :) И у него в профайле есть теперь такая запись — gyazo.com Конечно же сделал strip предыдущей ревизии и закомитил заново, но думаю andy удивится этому комиту когда зайдет на BitBucket :)