Итак, я только что поднялся до уровня 25 в этой ММО игре с названием Жизнь. Еще один день рождения, я уже так стар, что этот день все меньше и меньше кажется праздником. Я думаю, что это не очень хорошая идея, пытаться кратко написать что ты сделал за последний год. Возможно, потому, что обычно писать-то и нечего, но я попытаюсь.
Второй подряд день рождения я встречаю этот день далеко от дома. Но, если в прошлый раз я грустно сидел с бакалом вина и неуверенностью в будущем, то сегодня я вдохновлен и полон креативной энергии. Я могу сказать, что я на 80% счастлив.
В течение этого года я узнал чрезвычайно много во всех интересных мне областях. Я был словно информационная губка, и даже не знаю когда для этого будет еще время. В следующие месяцы я надеюсь применить все те знания, что я накопил. Еще, я немного попутешествовал, познакомился с новыми людьми и похудел. Но что более важно, жизнь преподнесла мне несколько очень важных уроков, некоторые были тяжелые и болезненные, но когда-нибудь я должен был через это пройти. И теперь я чувствую себя более опытным и повзрослевшим.
Этот год прошел очень быстро, но оказался очень важным для меня. Возможно, важнее даже, чем предыдущий. Мне бы хотелось, чтобы следующие года были еще более значими в моей жизни лет так до 35. А потом можно будет и отдохнуть.
Основной блог я перемещаю на va.lent.in/blog и перевожу его на Английский язык. Здесь же будут редко мысли на русском, а также новые выпуски подкастов, которые будут время от времени появляться в будущем. Так что, подписывайтесь на новый блог.
На самом деле, ребята из Unity3d, о которых я уже писал, вполне могли бы сбацать свой Flash Player и использовать флэш объекты в качестве интерфейсов, миниигр или текстур. Как вот эти парни. Получилось бы сильно лучше чем есть сейчас. По крайней мере лучше, чем существующие попытки совместить Flash и Unity.
В сеть просочилась копия новой книги Рарегvisiоn3D Еssеntiаls ( чуть ли не сентябрь 2009 ). Оглавление весьма интересное. Если кому нужно, то пока лежит тут ( пароль к архиву: www.riabook.cn ). Источник.
Человек пишет “Space-based MMO written in erlang” проект erleve, валяется на code.google.com. Расписано так все хорошо, в основном, конечно, скопировано с EVE Online, но он и не скрывает этого. Правда, последний (или первый и последний?) апдейт SVN датирован декабрем 2008. Посмотрел код — сделано процентов 5 от инфраструктуры сервера, что само по себе представляет процентов 10 от всей игровой серверной логики. Не говоря уже о клиенте.
А так хорошо все начиналось.
Сколько раз уже из своего опыта получалось, что сразу не стоит городить кучу фич, а наращивать потихоньку, следуя к некоторой цели. Москва тоже не сразу строилась.
Как все уже знают, на прошедшем Adobe MAX был анонсирован AIR 2.0 с огромным количеством вкусных фич. Народ в основном тащится от нативного сапорта мультитач ввода плеером 10.1, об этом пишет Andrew Trice из Cynergy, которые на конференции показывали приложение, использующее возможности AIR 2.0.
В выше упомянутом посте исчерпывающая информация с примерами кода про реакцию на мультитач события. Рекомендую. Лично мне кажется, что половина жестов в этом календаре лишняя и удобнее просто ткнуть. Но я конечно же очень рад, что мультитач приложения на Flash теперь можно будет делать не через жопу.
Далее, Christian Cantrell в своем блоге написал пост о всех новых фишках Adobe AIR. Я думаю, будет полезно скопировать его сюда.
Мультитач: События прикосновения работают так же, как и события мыши, но на устройствах поддерживающих мультитач, вы можете отслеживать одновременно несколько точек нажатия.
Поддержка мультитач:
Windows 7 и далее.
Необходимо устройство ввода поддерживающее мультитач (очевидно).
Жесты: Приложение может слушать мультитач события или события жестов (но не оба типа одновременно). Жест — это композиция мультитач события в одно событие.
Поддержка жестов:
Windows 7 и далее.
Маки с OS X 10.6 и далее с мультитач трэкпадами.
Типы поддерживаемых жестов:
GESTURE_TWO_FINGER_TAP (прикосновение сразу двумя пальцами)
GESTURE_PRESS_AND_TAP (прикосновение одним пальцем, в то время как уже касаемся вторым)
GESTURE_PAN
GESTURE_ROTATE
GESTURE_SWIPE
GESTURE_ZOOM
Открыть файл дефолтной программой: Новый File.openWithDefaultApplication API позволяет вам открыть файл той программой, которая настроена на открытие данного типа по умолчанию в системе. Это хороший кросплатформенный способ интеграции с другими приложениями, так как вам не нужно знать какие приложения и где установлены.
Диалог OS безопасности скачивания: Новое свойство File.downloaded позволяет указать, что файл был скачан из сети, и что OS хорошо бы спросить пользователя перед тем как открывать его.
Поддерживаемые платформы:
Windows XP SP2 и далее.
Mac OS 10.5 (Leopard) и далее.
Linux не поддерживается, потому что там отсутствует такая концепция в принципе.
Информация о дисках: Новый API информации о дисках позволяет слушать события добавления и удаления внешних накопителей, получать список доступных дисков, получать информацию о них, о файловой системе, внешний ли диск, можно ли на него писать, букву и метку тома.
Нативные процессы: Теперь вы сможете запускать и общаться с нативными для данной OS процессами. Вы сможете включать свои программы или использовать уже установленные. Для работы данной фичи, необходимо чтобы приложение было установлено с помощью нативного для данной системы инсталятора, а не привычного .AIR файла. Тулзы для создания таких инсталяторов прилагаются.
Типы инсталяторов:
OS X: DMG
Windows: EXE
Linux: Debian and Red Hat Package Manager
Обещанные файлы: Концепция “обещанных файлов” позволит пользователям перетаскивать файлы, которые либо еще ен существуют (потому что вы хотите создавать их по мере необходимости) или существуют но на удаленном сервере. Мы предоставляем вам способ, при котором удаленные файлы будут скачиваться автоматически и сохраняться туда, куда были перетащены. А также, мы даем вам интерфейс, который позволит генерировать файлы по мере необходимости.
Сокеты: Новый ServerSocket API позволяет приложению создавать и слушать сокеты, так что теперь возможны коммуникации между клиентами без участия сервера, что позволит писать, например, p2p приложения, работать с сетевыми протоколами, например FTP и тд.
UDP сокеты: В дополнение к TCP сокетам, AIR 2.0 поддерживает передачу данных с помощью UDP.
Зашифрованные сокетные соединения: Данные передаваемые через сокетные соединения, теперь могут быть защищены с помощью TLS/SSL.
Поддержка IPv6.
Доступ к низкоуровневой сетевой информации: Объект NetworkInfo позволяет смотреть сетевые интерфейсы компьютера и их свойства, например активность, IP адрес и название.
Bind Sockets to Specific Network Interfaces: The new Socket.bind function can be used to bind to a specific network interface (discovered through the NetworkInfo API) rather than always binding to the default. This can allow you to pick the best network connection for your particular application. (вот это я как-тоне понял)
Работа с DNS: DNSResolver позволяет смотреть следующие типы записей:
ARecord (IPv4 address for a host)
AAAARecord (IPv6 address for a host)
MXRecord: mail exchange record for a host
PTRRecord: host name for an IP address
SRVRecord: service record for a service
Настраиваемый HTTP Idle Timeout. URLRequest.idleTimeout и URLRequestDefaults.idleTimeout позволяет указать в миллисекундах время, в течение которого соединение остается открытым до того, как будут получены данные. Полезно, например для long polling.
Локальная работа со звуком: Появилась возможность доступа к аудио данным непосредственно с микрофона, больше не придется задействовать сервер и пересылать данные туда-сюда.
Глобальный Error Handling: Глобальный error handling позволет поймать все непойманные ошибки (синхронные и асинхронные) в одном месте в коде. (More information on Global Error Handling.)
Увеличение размеров NativeWindow и Bitmap: Раньше максимальный размер NativeWindow и Bitmap был 2880×2880. В AIR 2.0 он будет 4094×4094.
Улучшенная печать.
Векторная печать на Mac (уже в FP 10).
Поддержка сложной прозрачности.
Вложенные транзакции. SQLite теперь поддерживает вложенные транзакции.
Событие Exiting при выключении компьютера. В AIR 2.0 появится событие Event.EXITING, которое диспатчится, когда компьютер выключается. У вас будет время сохранить несохраненные данные.
WebKit Upgrades:
Nitro JavaScript Engine (SquirrelFish Extreme).
CSS3 Module support (2D transformations, transitions, animations, etc.).
Честно скажу, сам не знал. Прочитал только сегодня тут.
Значит, оказывается, для компилятора можно указывать константы в специальном неймспейсе ( по крайней мере выглядит так ), и потом использовать их для условной компиляции в зависимости от значения. Например, для отладки можно использовать следующий код:
Получается очень интересная штука. Дебаг и релиз версии лично у меня отличаются наличием всяких внешних вызовов дебагеров, например Alcon, которые совершенно не нужны в релизе. Проблема лишь в том, что мало кто эту фишку знает и, если отсутствуют объявления этих констант (мало ли, скопипастили код), то скомпилить становится нетривиально.