А вот вы в курсе, что первая, совсем первая запись тут появилась аж 04.10.2009? Так-то! Кто-то отмечает дни рождения, различные даты, типа христанутой пасхи или чего еще. А я не отмечаю. Скажем, этот блог совсем не отмечал дней рождений. А сегодня он опять сменил ориентацию и, внезапно, опять перешел на богомерзкий wordpress. Почему? Да потому, что manistream и, конечно же, из-за лени. В ближайшее время вернется проигрывание аудио, а также архив всякого стаффа из happiness.bfsc.to
Category Archives: web-дев
For the memories
update modx_system_settings set value=0 where `key` in(‘compress_js’,’compress_css’)
Reversing Google Play Store.
Да, вслед за Реверсом AppStore, решил я взяться за то же самое, но с Google. Google Play Store. (как Бонд. Джеймс Бонд).
Весело то, что у гугла все просто и секъюрно. Юзаются подписи, nonce’ы. А также сервис разделяется на две составляющие – push и обычную. Все запаковано во что бы вы думали? Правильно – protobuffers! It’s hard to decode, ибо формат бинарного сообщения сам себя не описывает, много эвристики и веселья.
Забавно, однако, что, как и в Apple, ВНЕЗАПНО, плевали они на стандарты (или я неправильно понял?) – gzip отдается плейнтекстом/binary – в protobuffers, а вот binary отдается в… gzip!:
Покупка проходит очень легко и непринужденно сложно.
Первое – /fdfe/toc – выдает данные о Terms&Conditions маркета и другую обязательную чушь.
Второе – /fdfe/purchase или /market/api/ApiRequest – получить данные о покупке (та кнопка “купить” в маркете)
Третье – /fdfe/completePurchase – выполнить собственно покупку
Пятое – /fdfe/purchaseStatus или /market/api/ApiRequest – проверить статус покупки – получить nonce и прочие параметры покупке в json
Шестое – /market/api/ApiRequest – получение Nonce, деталей покупки
Седьмое – запрос к /market/api/ApiRequest и получение какой-то интересной строки типа ‹ г bе`PxБОі‰‰ эњ – я не понял, что это.
Также не ясно, почему запросы идут то к /market/api/ApiRequest, то к /fdfe/* при покупке. Может я попал под тихую смену протоколов?
+ большой брат следит за тобой! Переодически уходят запросы на /fdfe/log:
Вместе с этим приходит push-уведомление с данными о том, что, “ваша покупка загружена”, либо “не удалось совершить покупку” – пока остановился на этом.
Забавно, что все это дело работет через TCP with SSL/TLS, ВНЕЗАПНО, по mtalk.google.com (был в полной уверенности, что будет что-то на подобие XMPP), ан нет – protobuffers в base64 и что-то еще:
Реверс инженеринг протокола appstore
Очень порадовал и сам AppStore. Покупка приложения – это вам не хухры-мухры. Как минимум 5 запросов, а с валидацией и все 7. И еще, у apple просто свалка из всех возможных технологий XML (aka PLIST) via gzip. XML-PLIST просто как plain. JSON под gzip, NSDictionary под gzip и в base64. JSON в base64. Ужас! Это еще не все! Часть appstore управляется чисто POST/GET заголовками, часть работает через HTTPS. Часть через HTTP. Вот скажем получить список покупок – http. Купить что-то https. Проверить покупку, при том получив ту же информацию за исключением подписи – уже http! Такие дела.
Еще интересно то, что срали они на стандарты построения POST запросов. application/x-www-form-urlencoded у них в некоторых запросах тупо идет PLIST-ом. Никакого urlencode, никакого построения ссылок, что вы? Не, не слышали. Так и отправляются POST-ом целые XML-документы без компрессии.
А как зашифрован чек? Встречайте JSON->base64->NSDictionary->base64->NSDictionary. Вот такие дела.
А вы знали, как дох… много запросов делают ваши любимые игрушки и приложения? Ужаснах, есть куча неизвестных серверов статистики, где логгится, когда вы открыли приложение, сколько в нем провели, сколько тапнули по экрану. Большой брат следит за вами!
И еще раз – In-AppStore.com
Aurora. Safari. Chrome.
Еще сегодня по наводке тов.Николая (это с которым я пилю очень интересное дело) затестил Firefox Aurora. Awesome Wow! Effect™3D-раскладка CSS-стилей конечно решает. Сайты еще никогда не были таким конструктором. Зацените:
Да, да! Это – в окне вашего браузера. Юзабельно для разработки? ИМХО НЕТ, но красиво! + я таки не очень долюбливаю firefox после их бесконечных апдейтов и свистоперделках после версии 3.0…. + тормоз он с плагинами и оперативки жрет… (maybe, это стереотип?)
В общем, круто, но… google. google chrome. и apple….
PHP/binary
Safari. No flash. Just HTML5
Все гениально просто
Все гениальное – просто.
Не помню, кто именно так сказал, но это действительно так. Суть:
Я разрабатываю одну очень интересную систему, там есть 2 типа эммм… проектов – технология, и собственно сам проект. Технология описывает базовые отношения между составными частями проекта. Затем, при создании нового проекта, технология копируется в него и де-факто мы имеем шаблон проекта с заданными заранее зависимостями. Так вот, при копировании все ок, зависимости соблюдены. Но, тут возникает вопрос, что делать, если создается что-то новое, или создается что-то по образу уже находящейся в производстве вещи? А если это цепочка вещей, а если внутри цепочки перекрестные зависимости от множества других цепочек?
Немного графики:
Вопрос: как соотнести автоматически зависимости между объектами на уровне цепочек?
Думали, спорили аж с пятницы. Даже матом ругались. Было несколько версий:
- Создавать цепочки пообъектно, из кирпичиков-объектов, каждому вручную указывать зависимости – это долго, муторно и сложно
- Создавать цепочки по технологии, но технология не хранит данных о зависимости конкретных объектов в проекте!
- Создавать цепочки по технологии и указывать в какой цепочке искать объекты для зависимости. А если объектов много, если у каждого перекрестные зависимости, а что будет зависеть от самой цепочки, а что, если какой-то объект в уже существующих цепочках удалили и его вообще нет – куча исключений
- Создавать цепочки и объекты по технологии, однако что, если все зависимости уже удовлетворены – будет куча хлама и неиспользуемых объектов
- Создавать пустые цепочки и потом все заполнять уже на этапе разработки цепочек – ужаснах, это как-то некошерно
HTML5, welcome!
P.S.: Мне пох, я юзаю Chrome или Safari. Юзеры фуррифокса и ие – ммм, вкустятина
Sixx:A.M. – Van Nuys
Inside job
Сегодня весь день провел в его офисе. Имхо, он опять же, уютнее, чем у нас. Там есть диван. Микроволновка. Растения разные. 2 сервака (один даже двухюнитовый), правда не их, а палыча.
Еще в перспективе там должны быть слоны, но зимой слонов нет.
Еще будем работать в ВС, ибо завтра выходной.
Еще разделили участь – моя – админство+проектирование, его – программирование и дизайн.
Ах да, вот скриншот, вернее фотка. Сорри за конспирацию, комм.тайна: