Pull to refresh

Comments 47

>>Facebook — одно из самых функциональных приложений, доступных на Android
Серьезно? 0_0
UFO just landed and posted this here
В большинстве случаев рефакторинг увеличивает количество методов а не уменьшает :)
Надо перевернуть монитор в вертикальное положение и тогда уменьшит :)
У нас над проектом работает два человека: рефакторинг одного всегда увеличивает число методов и абстраций, а рефакторинг второго — всегда уменьшает.
Как по мне — Facebook — одно из самых спорных приложений в маркете. Вроде бы работает, а тут, через пол дня «а куда это у меня весь заряд делся». После апдейта — «ура, батарейка не садится… Ой, а что это загрузка фотографий не работает?», и так каждый раз…

Пред-последняя моя попытка использовать их приложения обломилась после того, как facebook на пару с gpsd терзаемым им, сожрали больше 50% батарейки за 5 часов. В последний раз даже не стал пробовать, как жрет. Отключил все возможные опции автоопределения / указания GPS положения, заметил что все равно приложение терзает GPS при запуске, решил нафиг, нафиг. Ссылка на facebook.com на Home Screen-е будет неплохой заменой.
Всё так! Когда поставил на свой андроидофон cyanogenmod без по умолчанию прошитого приложения фейсбука со всеми его дополнениями, телефон начал просто летать.

А на фейсбук можно раз в день и с компьютера зайти. Или мобильная версия сайта, да.
А я только и удивляюсь людям, которые вопят о проблемах в отзывах на маркете. Вот честно, уже около года использую на планшете и телефоне (и там, и там — CM10) — ни одной проблемы с Facebook никогда не встречал. Осенью приложение было не слишком удобно и шустро — это да, но никаких падений и багов не замечал.
Жесть… Теперь понятно откуда растут ноги у этой неповоротливости и глюкавости приложения Facebook…
Интересно было бы узнать мнение ребят из Вконтакте. У них и сама соцсеть и приложение в разы функциональнее.
Отвечаю через полтора года (простите, только сейчас коммент заметил, попал сюда по ссылке из другой статьи).
Приложение фейсбука состоит из говнокода и кучи ненужных абстракций чуть менее, чем полностью. Я проверял. Например, мне однажды надо было узнать, как там парсятся ссылки при открытии из других приложений — настоящую реализацию спрятали, кажется, аж за 5 (!) последовательными вызовами методов в различных классах и, кажется, там даже был специальный пакет на эту тему.
Ну и всякие неоптимизированные лэйауты, неумение правильно работать с ListView и прочее, что отлавливается элементарно при умелом использовании «настроек разработчика» и прямых рук. Сто разработчиков, а нормальное приложение сделать всё никак не могут.

Если говорить о приложении ВК — всё сделано максимально на системных компонентах без абстракций сверх необходимого (например, большую часть методов для работы с друзьями я разместил просто в одном классе). Достаточно мощно используется кэширование (в SQLite), в частности, для сообщений и профилей пользователей. Из интересных оптимизаций интерфейса — списки постов: каждый пост сам по себе имеет сложную структуру, но при отображении он разбивается на несколько «частей», вида [заголовок, текст, блок фоток, аудиозапись, нижняя часть с кнопками], каждая из которых является отдельной строкой в ListView. Таким образом можно достичь намного лучшей производительности при прокрутке, т.к. повышается удобство переиспользования view и уменьшается время, необходимое на сам measure/layout. И, естественно, надо думать об overdraw, о котором в фейсбуке, кажется, не слышали.
Ничего не писал под андройд, но становится страшно, когда начинаю представлять уровни абстракции. Linux, на нём Java, на ней Dalvik… С тысячами вариантов аппаратных платформ… бррр. Почему-то представляется костыльная фабрика.

Как пользователь я вполне доволен своей Sony Xpreia, а вот как программист лезть туда не хочу.
Не совсем верно, что Dalvik на Java. Dalvik — это и есть Java, если в контексте рантайма.

А в целом — любая сложная система сейчас состоит порой из десятков наложенных друг на другая слоев. Такова природа ИТ — чем дальше в лес, тем больше уровней абстракции, больше возможностей, но больше и общая сложность системы.

P.S. Вообще Android мало чем концептуально отличается от того-же Windows, если разработка идет на .NET. У Windows даже уровней еще больше: NT ядро со своим мало кому известным API, поверх него прослойка WinAPI, поверх него Common Language Runtime .NET-а (CLR), поверх него .NET Framework-и, и сторонние библиотеки, используемые приложением. Ну и собственно само приложение, состоящее из сотен классов (если большое), кучи архитектурных элементов, итп, итп.
Хех :-) C .NET я хорошо знаком, а по поводу Android только периодически почитываю статьи, подобные этой и они постоянно у меня вызвают реакцию «фига они там навертели». Но ничего, в ближайшее время у меня будет повод попробовать себя в разработке под Андройд. Тогда и разберусь что к чему.
> не писал под андройд, но становится страшно

> будет повод попробовать себя в разработке под Андройд

лучше не надо.
Я ваш антипод =) Пишу под Андроид, причем не без удовольствия. При этом, как пользователю эта операционная система мне не очень нравится в силу некоторых субъективных причин.
В архитектуре типа «операционная система < — виртуальная машина < — высокоуровневый язык» нет ничего страшного на самом деле.
Обязательно опробую свои силы в написании приложений под Андроид, тогда и разберусь как он устроен :-)
Какое шикарное инвалидное кресло для отстрелившего себе обе ноги.
Я не специалист в Андроиде и может чего то не понимаю.
В статье написано, что аппликейшен может изменять память в пространстве ядра операционной системы(Dalvik)?
Dalvik живет в юзерспейсе. Это же виртуальная машина.
Перефразирую вопрос: как процесс запущенный в VM (которая должная, как я понимаю, являться песочницей для это процесса) может модифицировать эту VM?
Посыл неверный — процесс модифицирует не саму VM, а ОТДЕЛЬНЫЙ инстанс этой VM, в которой он запущен.
Нативный код может изменять в своем процессе что угодно. Защита обеспечивается на уровне операционной системы/сервисов, а не на уровне Dalvik VM.
напоминает кодинг под Win32 времен MFC.
Не переживайте. Так только у тех, кто на андроид портирует приложения перекомпиляцией тонны JavaScript в 30 мегабайт Java–кода.
Процитирую буквально сегодня оставленный последний отзыв (не мой) о приложении «Чат Facebook»:
Что снова за лажа????? «Что-то пошло не так», и ничего не запускается!!! Htc one. Только что, до апдейта, все работало! Уроды криворукие!!((

И последний отзыв о приложении Facebook (так же не мой):
Е#АНАЯ ХРЕНЬ Я ДОХЕРА ВРЕМЕНИ НА РЕГИСТРАЦИЮ УЕ#АЛ!!! #ЛЯТЬ ПОЧЕМУ Я НА КОМПЕ МОГУ ЗАЙТИ А ЗДЕСЬ НЕТ????!!! ПОШОЛ В #ОПУ Ё#АНЫЙ FACEBOOK ЧТОБ ЭТА КОМАНДА Е#ЛАНОВ СДОХЛА ОТ ПРЫЩЕЙ!!!!!!!

Немного зацензурил, чтобы меня НЛО не слило, но в целом посыл понятен, думаю…
вы почитайте комментарии к оригинальному посту и что пишут в твиттере по сабжу. андроид фейсбук команда сама себя позорит
Читал сегодня эту статью в оригинале. Как по мне, так изменение значения одной глобальной переменной в рантайме (пусть не через API, а по адресу) слабо тянет на такую пафосную статью.

А еще в увас ошибка в заголовке — в оригинале патч для Dalvik для Facebook для Android, т.е. сразу дают понять, что это костыль для Dalvik именно для приложения Facebook, а не патч для Dalvik, как может показаться из вашего названия.
Интересно, сколько человек во времена MS DOS умоляли дать не 640кБ доступной памяти, а хотя бы 683.5!
Думал что развязка будет в стиле: «именно поэтому мы разделил приложение на 2 куска: главное приложение и Facebook чат»
И были им ниспосланы свыше HIMEM.SYS и EMM386.
Криворукие чуваки понаделали методов на пять мегов таблицы методов, молодцы, че?!
Как я понимаю, даже не понаделали, а понагенерили…
Я полазил внутри и с первого взгляда генерированного кода не видно. Зато есть как минимум 3 JSON парсера, неск. вариантов работы с БД, ACRA + свой крашрепортер, куча аннотаций, на каждый чих аналитика, гугл-коммонс, не уверен, что он там жизненно необходим.
Код используемых библиотек может сильно раздуть приложение. У нас сейчас как раз такая ситуация: на Android 2.3 не устанавливается приложение после использования библиотеки ical4j.
А не надо использовать кривые либы. У сообщества ява есть одна неприятная болезнь, называется over-refactoring. Например, спрашиваешь людей, как посчитать разницу между датами в миллисекундах и тебе сходу предлагают Yoda Time, которая скомпилированная весит почти метр, лол. Ну и да, в итоге получается вот такое вот говнецо, которое никуда не влазит, тащит за собою километры ненужного кода, тормозит и жрёт память не в себя.
Я понимаю, что всё это плохо, но у нас ситуация другая: никто в проект не пихает всякие йоба-таймы без необходимости. Конструктивные предложения будут? Велосипедить своими руками CalDAV и CardDAV — не вариант: это, всё-таки, посложнее разницы между датами.
Ну конкретно с календарями я сам не сталкивался, так что посоветовать в данном вопросе я так сходу ничего не могу, увы. Разве что посмотреть на код софта для работы с DAV-ами и узнать какими библиотеками они пользуются. Вот тут что-то есть, хз на сколько вам подойдёт code.google.com/p/caldav4j/
Только одно «но»: оно использует ical4j и тянет ещё с десяток библиотек :D
Увы, но альтернатива — использовать коммерческие библиотеки (не факт, что они тоньше) или написать свою.
Сколько проблем (потраченных человеко-часов = потраченных денег) можно было бы избежать если бы робот обновлялся везде и везде сейчас был бы 4.2.2…
Судя по комментариями из GooglePlay, разработчикам сначала стоило довести приложение до рабочего состояния с минимумом критичных багов хотя бы для ICS, а потому уже, если останется время, заниматься такими жестокими извращениями с виртуальной машиной. А в итоге, потратили кучу времени на приложение, которое не реализует функционал должным образом, зато запускается на более ранних версиях Андроида. В чем, простите, выгода от такого подхода, если пользователь его в итоге удаляет из-за его глюков, на какой бы версии Андроида его устройство не работало?
А у меня работает, и я не удоляю. Почему-то мне кажется, что я не один такой.
хак на хаке и хаком погоняет и это фейсбук…
Facebook — одно из самых кривых приложений, доступных на Android. Такого количества багов, не говоря уже о фирменном нечеловеческом usability FB, не встречал ни в одном другом приложении для Android.
Only those users with full accounts are able to leave comments. Log in, please.