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

@maxlapshin:
maxlapshin

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

@maxlapshin:
maxlapshin

Народ, а кто-нибудь занимался разруливанием клиентов на основе карты AS, того который bgp full view?

@potapenko:
potapenko

А скажите, то что я называю интерфейсами с реализацией по умолчанию (http://www.realaxy.com/tracker/issue/RE-1690)- это и есть те самые трейты (traits)? Встречал трейты в реальности только в Скала и там они используются несколько по другому. Мне так казалось, когда я поверхностно изучал Scala синтаксис….

@yzh44yzh:
yzh44yzh

Вот есть себе два изолированных модуля, взаимодействие с которыми идет через карту Матэ. Внезапно возникает задача сделать так, чтобы эти модули оказались в разных swf файлах и взаимодействовали через LocalConnection (ну или через JavaScript).

Вспоминается, что в эрланге такое было бы плевым делом. И хочется замутить что-такое и для AS. Что-то типа карты Матэ, но позволяющее разным swf обмениваться событиями точно также, как разные модули в одной swf.

Надо поискать, может есть где готовые JS мосты общего назначения для взаимодействия между swf

@shrewmus:
shrewmus

оказывается, если объект Bitmap, то это совершенно не значит, что он cacheAsBitmap

@just:
just

есть какой-нибудь нормальный способ задавать свойства непосредственно в mxml, чтобы он воспринимал значение в кавычках не как строку, а как значение. Если задавать в фигурных скобках, то он пытается забиндить свойство и выдаёт варнинг
Поясню:
Сейчас
<fhc:IconButton id="help" width="50" height="50"
icon="{new HelpImg().bitmapData}"/>
Где HelpImg это BitmapAsset такого плана
package ... {
import mx.core.BitmapAsset;
[Embed(source='/icons/help.png')]
public class HelpImg extends BitmapAsset {
}
}
а IconButton имеет такую декларацию
[Style(name="icon", type="flash.display.BitmapData")]

Но при этом вылетают варнинги, что
[client] Data binding will not be able to detect assignments to "bitmapData".

И так везде. Как быть ?

@just:
just

сейчас писал рантаймовый загрузчик картинок, который кеширует картинки в словаре по их URL. По следующему обращению возвращает уже загруженную картинку. Ну в общем понятно ...

Потом решил полистать исходники BitmapImage и обнаружил, что в Flex Hero 4.5.x ввели свойство contentLoader, в который передаётся имплементор IContentLoader ( в фреймворке flex это spark.core.ContentCache ).
То есть так

<s:BitmapImage contentLoader="instance of IContentLoader"
source="Image URL or URLRequest" />

Если не указывать contentLoader, то картинка будет грузиться каждый раз, как как создается BitmapImage. А так не будет, так как по URL ( который выступает в роли ключа в Dictionary ) будет доступно уже загруженное изображение

Удобно =)

Подробнее здесь:
opensource.adobe.com
opensource.adobe.com

@daniilMoskovsov:
daniilMoskovsov

Осваиваю регулярки.
Как то пару раз начинал и нелюбовь. Нарыл интересную тулзу ryanswanson.com
Видел еще подобную от скиннера в блоге Ильи Панина, но ссылку искать в лом.

@daniilMoskovsov:
daniilMoskovsov

Контактерю значит, вывожу впервыи раз список друзеи
// — API request result:
online=0
first_name=Ростислав
photo_big=http://cs9801.vkontakte.ru/u779920/a_f4145b06.jpg
last_name=Сирык
uid=779920
Показывает меня и одного Роста, эммм?

@Vugluskr:
Vugluskr

Человеку, который делал объект Date, нужно в голову гвоздь забить. Мне никогда не постичь логику, блеать.
Почему дни — 1-based, а месяцы — 0-based? Почему блять геттер day — это день недели, а для дня месяца — геттер date?! Почему, ебаный в голову, дни — это day/date, месяцы — month, а год — это, пиздецнахуй, getFullYear?!?

@Vugluskr:
Vugluskr

Внезапно (тм) обнаружил интересную хуйню. Берем проект pure AS3. В нем есть всякие ембеды (картинки, фонты, бинарики). Есть общий файлег Assets.as в котором статиками все эти эмбеды. Если в этом файлике эмбеды фонтов стоят НЕ первыми — то хуй, ничо не работает. То есть, фонты не применяются и ваще текста нет нигде. А если их первыми поставить — все нормально работает. Как так? Што за хуйня, блеать?!
Очень неприятно блять было убить два часа на поиски этой пойеботы

@just:
just

клёво, мало того, что простым нажатием Alt+Insert можно сгенерировать сеттер и геттер для любого приватного поля. Так можно выбрать все поля и сделать это сразу для всех.
Респект

@just:
just

мне нужно как-то указать bindable в дочернем классе Vector3D на поля x,y,z, чтобы затем использовать связывание модели и представления во флексовых компонентах. При этом в Vector3D x,y,z указаны просто как public без методов доступа. Есть какие-нибудь мысли как это сделать, помимо BindUtils ?

@just:
just

о, как. Оказывается недостаточно выставить свойство mouseEnabled в false флексового контейнера и всех его детей, но надо уделить внимание и свойству mouseChildren и указать false ему, чтобы можно было взаимодействовать с нижележащими компонентами

@Vugluskr:
Vugluskr

я тут общаюсь с одними ребятами интересными, которые флешовые дизигнеры. Талантливые, имхо. Ну вот я как-то привык себя лохом считать во флеше и около. А тут внезапно (тм) они мне такую телегу накатали благодарственную :) Суть вкратце "Спасибо тебе добрый человек, за твои дурацкие вопросы, расписываемся в собственной глупости — мы не знали, что стили можно на объект программно навешивать, прямо в скрипте; теперь знаем и еще раз благодарим".
Хто бы тока знал, как я ржал :) Обычно это моя прерогатива была — писать им "Спасибо за наводку, пацаны, этого я не знал", а тут эвон как :)

@just:
just

чего-то не пойму как самому закрыть всплывающее NativeMenu, вызванное через метод display ?
По умолчанию оно закрывается по щелчку на Stage, но меня это не устраивает.

@just:
just

в некоторым смысле достигнут успех. as3yaml теперь в нашем maven-проекте как swc-dependency. Выгружает русский, вектора и классы любой вложенности. Без лишних тегов

@just:
just

пытаюсь прикрутить as3yaml к нашему maven проекту. Собирал библиотеку из пропатченых сорсов. При подключении зависимости на библиотеку получал многозначительную ошибку: abc bytecode read error
Ругалась вот на такой класс:
package org.as3yaml.nodes {
import org.as3yaml.Representer;
import org.as3yaml.YAMLNodeCreator;
import org.idmedia.as3commons.util.ArrayList;

public class VectorYAMLNodeCreator implements YAMLNodeCreator {
private var data : Vector.<*>;
public function VectorYAMLNodeCreator(data : Vector.<*>) {
this.data = data;
}

public function taguri() : String {
return "tag:yaml.org,2002:seq";
}

public function toYamlNode(representer : Representer) : Node {
var l : int = data.length;
var lst : ArrayList = new ArrayList();
for(var i:int=0; i<l; i++) {
lst.add( data[i] );
}
return representer.seq(taguri(), lst, false);
}
}
}

Исправил на:
package org.as3yaml.nodes {
import org.as3yaml.Representer;
import org.as3yaml.YAMLNodeCreator;
import org.idmedia.as3commons.util.ArrayList;
public class VectorYAMLNodeCreator implements YAMLNodeCreator {
public function taguri() : String {
return "";
}

public function toYamlNode(representer : Representer) : Node {
return new Node("",new Object());
}

@just:
just

код на haxe читать гораздо удобнее, чем as, так как можно не указывать спецификаторы доступа и они по умолчанию считаются private в отличии от internal для as. В итоге сразу видно, где переменные, а где function, где static, а где override
Сравните:
private static var ...
private var ...
private var ...
private function ..
private function ..
private function ..

Или
static var ...
var ...
var ...
function ...
function ...
function ...

@just:
just

когда в as3yaml происходит разбор на ноды, то, исходя из типа текущего объекта, выбирается свой YAMLNodeCreator. Либа as3yaml воспринимает объекты ArrayCollection и Vector как обычные объекты, поэтому в выгрузку попадают такие поля как length, filterFunction и тп
Для того чтобы добавить к разбору вышеперечисленные типы надо:
1) в файле Representer.as добавить внутренние классы ArrayCollectionYAMLNodeCreator и VectorYAMLNodeCreator ( например ), наследуемые от YAMLNodeCreator. Можно скопипастить их с ArrayYAMLNodeCreator =)
2) дальше описать метод toYamlNode ( кто будет делать, тот поймёт. Там минимальные отличия от такого же метода в ArrayYAMLNodeCreator )
3) включить в свитчилку метода getNodeCreatorFor
... else if(data is ArrayCollection) {
return new ArrayCollectionYAMLNodeCreator(data as ArrayCollection);
} else if(data is Vector.<*>) {
return new VectorYAMLNodeCreator(data as Vector.<*>);
} else ...

должно работать .)

@just:
just

допустим вас бесит такой маршалинг в YAML с указанием типов и кастомным тегом !actionscript/object:
some: !actionscript/object:Object
x: !!float 10
y: !!float 20

Тогда ремим строчку в class EmitterEnvironment в методе processTag:
if(preparedTag != null && "" != preparedTag) {
// emitter.writeIndicator(preparedTag,true,false,false);
}

Получаем такой вывод:
some:
x: 10
y: 20

вот так

@just:
just

не советую использовать as3yaml как есть в приложениях, где важна производительность при маршалинге/демаршалинге в/из YAML.
Поскольку код сгенерирован из библиотеки jvyaml, а та сгенерирована с другой библиотеке, которая тоже ... , то в коде много артефактов:
--- такой
var start:int=0,ending:int=0;
while(ending < suffix.length) {
ending++;
}
if(start < ending) {
chunks += suffix.substring(start,ending);
}
--- или такой
public function representScalar(tag : String, value : String, style : String): Node {
var realStyle : String = style == '0' ? this.defaultStyle : style;
return new ScalarNode(tag,value,style);
}

таких мест немало. Навидался пока "пробегался" stepом =)

@just:
just

Библиотека as3yaml при выгрузке объектов, содержащих в полях русский язык, выдает ошибку.
После дебага нашёл, в каком месте всё ломается:
class Emitter {
...
internal static function analyzeScalar(scalar : String) :ScalarAnalysis {
...
if(!(ceh == '\n' ||
('\u0020' <= ceh && ceh <= '\u007E') ) {
specialCharacters = true;
}
...
}
}
Добавляем проверку на русские символы, включая ё и Ё:
if(!(ceh == '\n' ||
('\u0020' <= ceh && ceh <= '\u007E') ||
('\u0410' <= ceh && ceh <= '\u044F' || ceh == '\u0401' || ceh == '\u0451' ) ) ) {
specialCharacters = true;
}

собственно это всё

@yzh44yzh:
yzh44yzh

Нащупал клевую фичу. Оказывается с помощью include можно замутить вполне себе трейты (как это называется в Скала) или миксы (как это называется в Руби).

class One extends Some
{
include "trait.as"
}

class Two extends Other
{
include "trait.as"
}

// trais.as
public function doSomething() : void
{
}

public function doSomethingElse() : void
{
}

Имеем два класса One и Two, не имеющие общего предка. Хотим добавить в оба класса идентичные методы. Получаем дублирование кода. Интерфейс? Интерфейс дает общий тип и не спасает от дублирования кода (кода еще больше). А мне не нужен общий тип, нужен общий код :)

И тут include спасает. Самое приятное, что IDEA вполне поддерживает такой код — навигация, автокомплиты и т.д.

Сча подробнее в блоге с более жизненным примером.

@Krylover:
Krylover

ObjectUtil.toString(<object>) — useful method. Рекурсивно парсит все публичные свойства объекта и переводит в удобнотрейсимую строку

@Krylover:
Krylover

FlexSpy ( code.google.com ) мощен. Он мне только что расковырял динамически подгруженный модуль.

@neFormal:
neFormal

возвращаясь к теме AMF с BlazeDS(java), pyamf(python) и ActionScript, где он вроде как нативный.. Сгенерил amf-ник на жаве (AmfMessageSerializer.writeObject), скормил в pyamf, тот радостно съел. Скормил в AS, тот не захотел есть. Поинтересовался юзаемым amf-сериализатором у жавщика, тот сказал, что юзает более низкоуровневую приблуду (Amf3Output) из того же BlazeDS. Я заюзал и AS начал его принимать, а вот pyamf нет. Ну ладно, оказалось, что pyamf юзал другую версию протокола, я выставил, как надо, всё заработало.
Параллельно с этими развлечениями проверяли сгенеренные amf-объекты в наколенном C#-парсере. Оказалось, что первый сериализатор кроме того, что иначе записывает массивы, так ещё и переворачивает порядок байт.. о_О норкотарий..

@Krylover:
Krylover

bytearray.org Thibault Imbert зарелизил первую главу новой книги: What can you do with bytes? Забрасываем худ. литературу, и начинаем вкуривать)

@Vugluskr:
Vugluskr

Ура! Я изобрел очередной велосипед, на этот раз — скролл.
Внимание, рецепт: берем спрайт, готовый к скроллированию, с пририсованным баром. На баре ловим mouse_down, как только поймали — рисуем поверх всего-всего прозрачный спрайт размером с приложение и только на нем ловим mouse_up и mouse_leave. В этом случае никакие сраные врапперы нам не мешают, не перехватывают и т.д.

@Vugluskr:
Vugluskr

После опроса примерно 40 человек имеющих отношение к флешу (хоть какое-то), кажеццо (!!!) я нашел таки того, кто может мне хоть как-то помочь. Но, бля, таки без swc

@Vugluskr:
Vugluskr

Итак, отказ от хттп и ижеснимбля в пользу сокетов прошел успешно. По работе зарелизил "гонки", версии 3.2, работают хорошо. Из своего — отрелизил "Паззлы", версии 2.0, растут хорошо (33к на данный момент), голоса идут но пока вяло. Щаз буду релизить "Города", версии хуйивознает какой :) Видимо, 3.3-3.4 че-то типа тово. Города набрали быстро 31к аудиторию и не росли больше. Понятно почему — глюк на глюке :)
Лидером конешно же остаются матрицы — 910к юзерофф. Скоро мульен. Буду пить коньяк по этому поводу :)

@Lis:
Lis

mr-pc.kiev.ua

@Vugluskr:
Vugluskr

Нашел таки аниматора! И, что странно, он грозится все сделать бесплатно. Тенденция меня пугает.

@whitered:
whitered

что-то я никак не могу отучить флекс сдк выдавать ошибки на русском. компилирую антом. указал -Duser.language=en -Duser.country=US в ANT_OPTS, во flex-config.xml стоит en_US, дописал еще locale="en_US" в вызов mxmlc из анта. все равно русские ошибки. что забыл?

@Vixen:
Vixen

Не могу отладить снег в AS 3.0 для подарочной открытки. Зато за окном его столько, что лучше бы и не. Заставляет задумацо)

@whitered:
whitered

написал скрипт для читабельного вывода результатов тестов. под катом пример вывода

@whitered:
whitered

по мотивам #231936 — рецепт, как запускать тесты actionscript кода антом в комментах

@whitered:
whitered

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

@Gard:
Gard

Какая-то странная типизация в action script.Вродебы и объекты создаются по типам... но одновременно соблюдение типов вобще никак не проверяется. Flex builder пишет варнинг на объявление переменной без типа и пропускает присваивание этой переменной значение другого типа. Создаётся ощущение не того, что "язык обладает гибкостью", а того, что в языке не достаёт проверок.