Это копия, сохраненная 18 мая 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий тред тут:
https://2ch.hk/pr/res/704022.html (М)
Коротко о главном:
1) Мобильная разработка - это весело.
2) Android Studio & Java - легитимный набор, проверенно временем и поддерживается гуглом.
А также о неглавном:
3) PhoneGap/Ionic/Titanium/ReactNative - имя им javascript, принципы у них разные, первые три попытка в кроссплатформенность одного кода, ReactNative проповедует другой подход, а именно написание разного кода но на одном языке. Популярность у них разная как и размер комьюнити.
4) Xamarin - мультиплатформенная разработка. Попытка серебряной пули на C#. Довольно популярный. Куплено Microsoft. Хз что будет дальше.
5) RoboVM - идейный наследник ксамарина, а теперь уже и его часть но на Java. Менее популярен, так как моложе. Куплен Microsoft. Вот он точно RIP.
Отдельного упоминания стоят:
1) Kotlin - Java от JetBrains, новый и стильный язык, куча синтаксического сахара прилагается, есть стримы и делегаты. Хотите писать на котлине? Добро пожаловать в JetBrains и Avito.
Где брать инфу:
Интернет-ресурсы
1) http://developer.android.com/index.html
Наша библия. Документация/небольшие примеры/гайды. Но только на инглише, но это плюс. Минус в том, что это все таки документация с небольшими примерами и гайдами и искать там реализацию чего-то хоть немного сложного нету смысла. Раздел Training как раз для старта.
2) http://stackoverflow.com/
Пользуюсь чаще чем первым сайтом. Можно найти практически все.
3) Есть два вполне вменяемых русскоязычных ресурса. Для старта подходят очень даже.
http://startandroid.ru/
и
http://developer.alexanderklimov.ru/android/
Второй еще и условно бесплатный. Главный плюс - это русский язык, простые гайдики, но переводы классов иногда заставляют фейспалмить.
4) http://habrahabr.ru/ - редко но метко, можно найти годные статьи по каким-то реализациям, или переводы с developer.android. Хотя чего тут объяснять.
5) https://www.udacity.com/ - в треде очевидцы говорили что есть годный курс, но я лично не смотрел.
Книги, их никто не читает, но все советуют только одну
1) The Busy Coder’s Guide to Android Development - в отличии от остальных книг она обновляется, а так как ведро не стоит на месте а хуярит семимильными шагами, то я бы и не советовал другие книги.
А теперь, так как заебали уже всех, гайд для:
>"Я хуярил на делфи 5 лет назад а теперь хочу вкатится в андроид":
Чтоб быстро хоть как-то вникнуть в джаву берешь и гуглишь javarush или codingbat.com.
Можно Эккеля "Философия java" почитать.
Или Хорстманн "Java. Библиотека профессионала" до 7 главы.
Что тебе нужно понять в самой жабе.
Энтри лвл.
1) ООП - сам принцип нужно именно понять, так как ооп язык.
2) Типы данных. Примитивы и ссылочные.
3) Структуры данных - Массивы/коллекции - без них никуда. Полезно почитать про алгоритмы работы коллекций и их сложности.
4) Дженерик типы, они как раз юзаются в коллекциях.
5) Классы/интерфейсы и все вытекающие.
Уже можно быдлокодить потихоньку и учить андроид параллельно с тем что ниже.
Дальше
6) Потоки ввода/вывода (streams). Не путать с тредами(threads).
7) Threads, особо не нужно вникать(в java.util.concurrent можно не лезть, в ведре все равно особо не пригодится), но нужно понять как работает многопоточка и что такое Runnable.
8) Прочитать про паттерны что-то. Начать с listener, adapter, singleton, iterator так как на каждом шагу. Ну и по накатанной.
Уже сделаешь что-то нормальное.
Дальше.
9) Работа с Sqlite, нужна будет в любом случае.
10) Работа с json.
Привет клиент-серверка.
Пишите в треде что добавить.
как настроить тоучлистенеры чтобы при скроле влево-вправо листался горизонтальный вьюпейджер, а при скроле вверх-вниз - горизонтальный ?
и хотелось бы немного разяснений услышать про onInterceptTouchEvent
Помогите разобратсья плз.
Уже наверное 4ый день бьюсь (
Вертикальный вьюпейдер развернут через текст трансформпейдж. И ловится движение по горизонтали и меняются координаты(пикча).
Можно ли в этом интеррупте вылавливать движения по горизонтали и отдавать их как то вьюпейджеру родителю(горизонтальный) ?
Да похуй всем на твои вложеные виьпейджеры, нагородил какой-то изврат, а мы должны разбираться.
А мне вот надо делать новый пост про Kotlin, но мне лень :|
Error:Uncaught translation error: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: GC overhead limit exceeded (9 times)
Error:Error converting bytecode to dex:
Cause: java.lang.RuntimeException: Translation has been interrupted
Error:Execution failed for task ':app:transformClassesWithDexForProdDebug'.
com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2
Как вылечить, отсыпать больше памяти, где?
я о спринге только слышал, написание кода у меня сейчаст это задрачивание людей на двачах, в жизни и стаковерфлоу. Я в ООП даже не могу нормально
Тогда как пишешь на андроиде? Говно какое-то? Тогда иди проходи курсы на курсере и юдасити для совсем днищ.
Курсам благодаря и пишу научился там всякой хуйне. Но юдасити годное только про разметки, про код вообще полную хуйню несут мне не нравится
покажите хотябы как регулировать тоучлистенер если во вьюхе есть другая вьюха
>OutOfMemoryException
>это же очевидно как это решить нужно дать системе еще пару гигов памяти!!!!
Как хорошо что есть куча индусов с такими же проблемами.
Какая жаба стоит? Какой дистрибутив? И да, кажется он не может найти X Window System, скочай через свой менеджер пакетов.
>>714113
>>714110
Вы че там охуели, или ты один человек?
1) Поставь нормальную 8 с сайта оракла, могут быть траблы;
2) У меня на убунте все было ок сразу, иди нахуй;
3) Пошурши что за x11 такой, установи;
Да это я, кек
Есть 1 кнопка. Надо сделать из нее картинку. Но так чтоб без имэйджботтон. Как сделать ?
Нет, я не сосал, я покушать принес
Подумой, не нужно фиксироваться на Button, очень вероятно что все действия что ты к ней прицепил будут работать и с обычным View. не нужно себя ограничивать понапрасну. На краняк можешь прицепить Drawable через setCompoundDrawable
Сложно. Пойду погуглю. Спасибо.
Понятно что заплатишь, лол.
Твой пост просто надо в красную рамочу и сохранить.
Что бы потом тыкать всяких "знаю наизусть java core, есть 5 приложений в GP, сделал 100 тестовых заданий"
и при этом не могу устроится даже стажерами за еду.
А такой долбоеб как ты, уже деньги получает за свой говнокод, не знаю даже джавы.
просто где объявляешь вью и кастинг на баттон делаешь, меняешь на имеджвью
да хуле я долбаеб я никогда кода не писал, пол года на курсы походил и все, это может они долбаебы)
Войти куда? И где регистрироваться? И что вообще ты хочешь? Подробнее распиши, что ли
Первый вариант не устраивает очень
Второго пробовал достичь через static boolean exitOrder, который по нажатию задается, а потом во всех Activity в onResume { if(exitOrder) finish(); }. В результате оно выходит из всех в backStack, из корневого, процесс остается висеть, флажок, соответственно, тоже, и открыть прогу уже нельзя. Херня, короче
А после killProcess приложение считает, что ее насильственно убили, это как-то непорядок и надо ее восстановить (как я понял из гугла). Восстанавливает, и она вылетает по еще одной херне, но это уже другая история.
Короче, что тут можно сделать?
Допустим, у сервисов есть флажки, которые говорят воскресать ему или нет. Может у Activity тоже что-то такое? Очень хочу, чтоб дохло по взмаху руки, и уже не вставало без команды
Используй Google OAuth (авторизация по гугл аккаунту телефона), в android это из коробки.
> В тред врывается абсолютный НОЛЬ! И буду задавать вопросы.
> Есть 1 кнопка. Надо сделать из нее картинку. Но так чтоб без имэйджботтон. Как сделать ?
В первую очередь ты ноль в умении формулировать вопросы. Уёбывай отсюда и не возвращайся, потому что как только ты научишься, тебе будет достаточно гугла для твоих энтрилевельных вопросов.
Откуда вообще такие проблемы с трудоустройством? Я сам не пытался ещё никогда, так что интересно будет послушать.
да подходит шапка, но нудно в реактивном темпе все это усвоить. Думал может еще кто что подскажет
Вот как сохраняю:
http://pastebin.com/DSfFFyED
Вот как достаю это:
http://pastebin.com/gcH3MewB
Как теперь построить listview заново?
не в синглтон, смотри внимательнее
https://telegram.me/AndroidChan
На самом деле, такое у меня ТЗ.
Но в целом, я не могу понять почему в том же ВК 2.7 это заросто сделали, как и в куче других приложений с кнопкой выхода, а мне, значит, система запрещает. Не может быть, чтобы это было нельзя сделать
Я напримре нигде не видел что бы так было. Расковыряй приложение где такое видел.
Opera mini 7.6.40234
jasmine IM 5.5.1
ВК 2.7.6
Да, конечно, сейчас совсем не модно пилить кнопку выхода, так что нигде и нет. А с меня требуют поддержания этой старой традиции
> никак не получается это сделать
Нафиг ты этот код скинул, я так понимаю в нем ошибок нет?
Как ты листвью изначально строишь?
adapter = new ListAdapter(getApplicationContext());
buttonsListView = (ListView) findViewById(R.id.customListView);
buttonsListView.setAdapter(adapter);
Вот так
Попробуй Activity.finishAffinity(...)
Что правильно, ты лучше скажи что ты там вообще делаешь? Потому что лично мне понятно нихуя, какие-то кнопки в синглтоне, ты там крокодилом ставишься?
>MySingleton.getOurInstance().getButtonToNotifications()
Вот что это такое, какой у этого тип?
>SpinnerAdapter внутри ListAdapter
Нет ты точно ебанутый, почитай как делать свой адаптер.
Подскажите, реально ли разрабатывать под ведро на мелком ноуте типа http://ogo1.ru/market/noutbuki/158030-Lenovo-IdeaPad-100-14IBY-N3540?sample=
денег вообще нет, разрабатывать очень хочется, осваивать там пока в метро еду, вот это все.
Динамическое создание кнопок и добавление их в увидомление делаю. Спиннер адаптер отдельно лежит. С чего ты вообще взял что он внутри
накатываешь линукс минт и можно делать небольше проекты, но лучше 4 гб оперативы
Ну так а сайт как называется?
а хуле тебе не нравится?
> на мелком ноуте
> 14''
Я вообще на 13'' макбуке работаю 80% времени и мне норм.
Память только прокачай до 4 хотябы
Если у него реально такая задача, то почему бы и нет? Ему, предположим, приходит конфиг с сервера, какие кнопки показывать с каким текстом и условный идентификатор того, что эта кнопка делает.
хех
пацаны хелпаните
при работе в студии на диске С создаются несколько файлов по 2 ГБ из-за чего система жутко тормозит
как это фиксить?
знакомый разраб посоветовал юзать эмулятор genymotion, потому что дефолтный эмуль в студии у меня пизда как лагал
кто пользуется этим и может пояснить за эту штуку?
и че при попытке написать просто ответ мне пишет, что капча невалидна?
> Да, конечно, сейчас совсем не модно пилить кнопку выхода, так что нигде и нет. А с меня требуют поддержания этой старой традиции
Тупо делай finish и всё. В тз ведь не сказано, чтобы процесс убивался?
Это не равно убийству процесса. Делай finish и останавливай сервис, вот и всё.
Ну сервис я закрывать умею. Просто тут в чем разница. Можно нажать просто назад и получить свой finish. Приложение немного повисит, сервис останется жить и будет воскресать. А есть кнопка exit, которая должна оправдывать свое наличие, все тушить, чтоб убирать все бесследно
Не, это понятно. Просто кнопка должна быть чуть убойнее, чтоб приложения след простывал
пробовал
Блядь, от тебя этого никто не требует. Требуется закрытие приложения и серивиса. Никто в здравом уме не заставит тебя убивать процесс приложения, тем более в 2016.
Выдумал блядь себе задачу и ебёт мозги всему треду теперь.
В здравом уме, ключевое слово
Не заметил.
Представляет из себя простую таблицу с двумя столбцами из слов.
Выглядит как-то так:
кококо покпок
копко логор
Вопрос:
как это парсить и занести в приложение?
Оно должно само скачивать этот файл и заносить куда-нибудь (массив, стринг, это уже не важно).
Берешь и просто без задней мысли скачиваешь и парсишь.
Гугли как скачивать файлы, парсить csv и д.р.
Тебе нужен:
ICSVParser csvParser = CSVParserFabric.createCSVFileParserInstance();
ICSVDocument doc = csvParser.parseFromURL("2ch.hk");
Кажется это работа для Kotlin-man.
Вот так, легким движение руки, у тебя получается список из кортежей (ключ, значение):
[(кококо, покпок), (копко, логор), (...), ...]
>>715459
>>715479
Спасибо, ананасы.
Думаю, если я в тестовом задании на работу напишу на котлине, по голове меня не погладят
По центру экрана будут две картинки, под ними - две стрелки для смены картинок.
Можно как-то реализовать в центре CardView, сделав при этом две его половины кликабельными (чтоб каждая вела на свою отдельную активити или фрагмент, хз как лучше)?
Как лучше реализовать эти стрелки? Это что-то вроде табов, только делается стрелками (при этом анимашку от табов было бы здорово подключить).
И собственно, как в целом лучше? Сделать это все как-нибудь фрагментами или активити тоже пойдет?
Проблема в том, что этих карточек у меня каждый раз должно быть случайное количество.
Примерная схема на моем медскилзе в пейнте.
"возможность корректно завершить приложение"?
Мне казалось, что простая кнопка назад с этим достаточно неплохо справляется.
Ну тут простой вьюпейджер, у него есть метод установки текущей страницы с анимацией перелистывания.
Может сервисы хуервисы по закрывать, ресурсы освободить какие.
Это тестовое задание на работу андроид девом? И ты пришел сюда с этим вопросом? Не удивлюсь, если тебя возьмут.
мб viewflipper
Retrofit, no exceptions.
Самый быстрый и надежный способ. Проблемы возникнут если у твоего бекенда кривое апи, но это все преодолимо, куча вещей из коробки.
даже если так будет, то ой как нескоро
Тольо фрагментами, с активити будет пролаг при создании новой активити. Как сделать? Ну, лол, легко. У тебя где-то в БД или кэше хранится лист карточек и для каждой карточки у тебя свой фрагмент, при этом структура одна и та же, так? Значит крепишь к стрелкам коллбэк к активити с указанием позиции в листе соответствующего объекта, который описывает текущий фрагмент. А активити обрабатывает эту хуйню - реплейсит фрагмент на такой же, но с другими объектами, и при реплейсе вызывает нужную тебе анимацию, какую напишешь. Добавишь ещё проверку на первый-последний элемент, чтобы стрелки гасить.
А что должно показываться при клике на половинки кардвью, я так и не понял. На всякий случай советую не тупить и написать онкликлистенеры для этих двух картинок, которые показываются, и там можно что угодно делать.
Сделай кнопку выход, которая будет Activity.finish() вызывать, ололо.
Слишком просто?
Что ты подразумеваешь под версией SDK? Есть Sdk Tools, есть Platform-Tools, есть Build Tools. Могут быть разными ничего страшного.
>Что ты подразумеваешь под версией SDK
Выбор, минимального SDK, когда нажимаю Create New Project и SDK Tools, когда в SDK менеджере качаю необходимые компоненты.
У меня тут просто эмулятор не запускается никак, я уже заебался и не знаю, на что подумать
Самое интересное, что создается и висит процесс emulator, но нихуя не запускается.
После нескольких попыток, у меня уже 6 процессов emulator висит. Может, кто сталкивался или знает, как пофиксить?
У меня тут интеловский проц. и интеловская видяха на ноуте
Ну из очевидных вариантов проверь включена ли виртуализация в биосе. Попробуй genymotion поставить если ничего неполучается с офф эмулятором
Виртуализацию уже чекнул - работает.
Оф. эмулятор уже такой же кошерный, как и дженимоушн, да еще и фичи бесплатные, так что хочу именно его
Хах, а ты смешной.
Это не может быть проблемой, у тебя точно новый эмулятор? Я вот запускаю проект с минсдк 17 скомпиленый под 23 с таргетом на 22, на тулзах 23 на эмуляторе 24rc.
>у тебя точно новый эмулятор
Да, только-только Студию последнюю скачал.
Ох, еще ни разу не было, чтобы все поставилось с нуля без пердолинга, сколько ставлю Студию.
Зачем нужны retainfragment'ы если есть те же лоадеры из коробки, или они используются в принципиально разных вещах?
Лоaдеры хороши для операций чтения (immutаble):
- их можно вызывать сколько угодно раз (при каждом повороте)
- данные в них можно кэшировать
Retаin фрагменты нужны, когда у тебя "одноразовая, меняющая операция", типа создание поста на сайте.
У нее есть начало, прогресс и фиксированный конец.
Ты бы не хотел, что бы эта операция повторялась при каждом configChаnged (или кэшировалась).
Так что их обычно это делают через retаin-frаgment + АsyncTask.
Мне за это не доплачивают, и времени не выделяют. Скажут сделать сделаю без проблем, только время + деньги.
понятно, спасибо
Каждая находится в папке, в которой 2 варианта xxhdpi и xxxhdpi. Отрисовываются через PrimaryDrawerItem.withIcon
Короче, спустя 2 часа таки пофиксил. Небольшие костыли, но все же.
Короче, переключился на Dev канал обновлений, обновил студию до 2.1, обновил SDK и подтянул в SDK все обновления, включая Preview (правда, сколько бы я их не ставил, два обновления таки не отмечаются галочками. У всех так?)
Благодарствую
Почему мне кажется, что ретаин фрагменты - самый дичайший костыль андроид сдк?
Ну видимо слишком низкого разрешения они.
Да и они довольно легкие, пройдись инкскейповским векторизатором, получишь svg на выход.
Сынок, а ты хоть знаешь как нам приходилось выкручиваться до появления фрагментов.
Что за мониторинг?
Нужно написать простейшее приложение на андроиде - страничка логина, потом простейшая форма постинга с тремя элементами. Данные из формы отправляются на сервер, всплывает окошко с текстом и обратно на страничку постинга. Вообще никаких наворотов, все просто донельзя.
Сервер spring mvc, spring security, уже написан.
Тыкните носом в какой-то гайд для чтобы очень быстро въехать в тему, сгенерировать проект и накидать формочку.
Пишу на яве, андроид мне не нужен, но так получилось что надо быстро сделать такую хрень.
кто чем пользуется?
Если ORM: мне приходит json я его разбираю на модели и сохраняю в бд, то с sqlite я буду сразу в бд закидывать json? и при чтении разбирать данные?
Простое приложение, один запрос, один json и листвью. Как к этому захуярить тесты? Как это вообще работает, что нужно тестировать, как это выглядит в андройде? Знаю только, что есть что-то типа JUnit и все. В гугле только либо assert 2+2 =4, либо какие-то там эти ваши фреймворки.
Накидайте годных статей или может своими словами объясните, please
В прошлом треде, то же хотел определиться.
С одной стороны ormlite не обновляется уже 3 года, с другой он делает все что мне надо
с приемлемой скоростью и там не надо ебаться с потоками/закрытием.
Тк в realm еще и нет поддержки robovm, то решил так и остаться на ormlite.
Тебе UI тесты или unit?
Я бы советовал делать интеграционные-UI тесты прям по юзкейсам.
Ибо UI меняется редко, а внутри приложения постоянно что-то переписывают.
В unit тестах нужно тестировать то что:
1) может содержать ошибки или велика вероятность того что сломается
2) до конца не понятно как работает (стороннее апи)
3) не понятно как правильно (размытые бизнес требования)
4) редко переделывается (ты же не хочешь постоянно тесты переписывать)
Чаще всего это "бизнес логика"
sqlite + cupboard
Я вроде как понял тебя, но не очень представляю как сделать это коллбэками именно в плане кода.
Можешь вкинуть какой-нибудь простой пример?
Например, во фрагменте один текствью и все фрагменты будут банально отличаться по содержимому этого текствью.
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#define__lint__
#define __symbolrename(x)
int main()
{
printf('%i',2);
return 0;
}
закинул на флешку и попытался запусить через adb.
выдает Segmentation Fault. Как это исправить?
Асинктаск через лодеры ты не сделаешь нормально, например, при повороте экрана лодер пересоздастся.
он самый
Разобрался уже дело было в переносе строки
в этом тоже
Ведро не ест svg бля. Ты должен сконвертировать его в xml vector drawable, который ведро умеет рисовать.
Таки придется перекатываться на Intel Multi-OS Engine
Спасибо тебе Microsoft :\
Есть нестандартная задача:
С сервера загружается список.
Далее необходимо его закешировать и для каждого элемента списка произвести рассчеты, потом обновить эти элементы в списке и в кэше.
Как бы наиболее красиво сделать обновление элементов в списке по мере продвижения рассчетов?
>>717664
Ну и добавлю, что делаешь все через rx
apiObservable
.observeOn( computation )
.map(items -> cache(items))
.observeOn( mainThread )
.map( items -> recyclerAdapter.setData(items) )
.observeOn( computation )
.flatMap(items -> Observable.create(... рассчеты для каждого), 4)
.subscribeOn( mainThread )
.forEach( item -> recyclerAdapter.notifyItemChanged )
Примерно так, но вероятней всего я напутал положение observeOn'ов.
Как это может выглядеть стандартными средствами?
Да, есть же doOnNext.
С сырыми сервисами точно сейчас ебаться не стоит.
Глянь на GCM NetworkManager (требует gapps) или Job Scheduler (Android 5.0)
http://developer.android.com/intl/ru/training/performance/battery/network/action-app-traffic.html
Не работает. VirtualBox пишет VT-x is not available (VERR_VMX_NO_VMX).
Есть еще какие-то варианты разработки под таким ноутбуком?
В Android N Dozen режет в фоне инет и стопает все программы.
А в исключение там добавлены только Google Services.
И что же интересно будет с девайсами без сервисов? Я уверен можно будет попросить систему не убивать тебя и юзер даст разрешение.
> И что же интересно будет с девайсами без сервисов?
Батарею будут держать дольше.
GCM есть в исключение и этого достаточно (для пушей /JobScheduler).
> юзер даст разрешение
Может даст, а может нахуй пошлет и поставит приложение конкурента.
Мы говорим о девайсах без GCM. В плане с конекшоном мое приложение ни чем не будет отличаться от приложения конкурента.
> Мы говорим о девайсах без GCM
Это ты про CM (ну и конечно владельцы Android < 2.2)?
Кому нужны эти дебилы странные люди, если на их телефонах даже нет Google Play.
Они вероятней всего даже поставить твое приложение не смогут, ведь основной источник распространения - GP. Так стоит ли ебаться ради двух с половиной калек?
Тогда как ты объяснишь то, что всякие пейсбуки/вотсапы/вайберы/скайпы/телеграммы делают в обход GCM?
Вотсапп юзает gcm, по крайней мере его версия из гп. Фейсбуки скайпы телеграммы жрут батарею как ебанутые.
Ну джисоном и я пользуюсь, а вот ретрофит мне приятнее. И баттернайф. Вот думаю ещё в ретролямбде разобраться.
>И баттернайф.
Мне батернайф кстати вообще не зашел, хотя я все остальное юзаю.
Эти паблик вьюхи по всему проекту делают меня плакать, особенно в адаптерах.
API отдаёт мне некие элементы постранично, то есть http://example.com/users?page=1 и так далее.
Загрузить сразу все страницы — не вариант, их слишком много.
Я думал, загружать данные постранично, но тут появляется другая проблема: данные (и их порядок) обновляются часто. То есть, то есть, пока пользователь смотрел первую страницу, а потом доскроллил до второй, данные могли измениться и загрузив лишь вторую страницу, мы получим дублирующиеся или неверные данные.
То что у тебя получилось с страницами проеб серверщика.
Ты никак не сделаешь нормальное отображение страниц если они у тебя могут меняться пока ты их выводишь.
Если брать в учет что порядок элементов не может меняться, то идшники тебя спасают. Правда было бы понятнее если бы ты объяснил бизнес логику этих элементов списка.
Например у нас лист сообщений с датой, следовательно сортируются они по дате, и в середину листа новое сообщение никак не попадет, тогда на сервере делается метод
который принимает последний ИД сообщение который у тебя есть, и количество новых элементов для подтягивания вторым аргументом. Но это вниз по списку, от новых к старым, нужен будет еще один метод вверх по списку.
Ну в общем я вроде понятно объяснил.
Спасибо за ответ.
> Ну в общем я вроде понятно объяснил.
Честно говоря, не совсем тебя понял. Имеешь в виду, что если бы у нас были id и порядок элементов бы не менялся, а лишь добавлялись новые элементы? Таймлайн в Твиттере, кажется, такое API имеет. Тогда мы бы делали запросы типа "получить все новые твиты после id 1234" и "получить 20 твитов до твита с id 1234". Кажется, ты это имел в виду? Если да, то я думал тоже о таком, но в данном случае это не сработает: у API нет таких методов. Ну и порядок элементов меняется.
> было бы понятнее если бы ты объяснил бизнес логику этих элементов списка
Попробую. Пусть для примера будет так: мне нужно отобразить список самых популярных игроков в какой-то онлайн-игре. Соответственно, я делаю запрос к API и получаю примерно такой json: http://pastebin.com/uucVg8Dp
У каждого игрока есть свой уникальный id. Позиции игроков в топе меняются (часто меняются!). Так же иногда появляются новые игроки (но появляются они где-то в конце списка, что логично).
Ниче.
>Кажется, ты это имел в виду?
Да.
Ну хуй его знает тогда. Коллизии будут в любом случае.
Ну вот моя идея.
Учитывая что это страницы, то у них всегда должен быть стандартный размер.
Потому делаешь изначально лист в адаптере на размер страницы, и увеличиваешь этот лист при каждой подгрузке странницы.
Дальше про наполнение этого листа.
Подтянул ты первую страницу и выводишь, засовывая итемы в уже существующие ячейки листа.
Подтягиваешь вторую, увеличиваешь размер лист, смотришь есть ли у тебя уже такие итемы на первой, если есть, то чистишь их в листе (оставляя их только на второй странице, так как вторая страница актуальнее по времени) но размер листа не меняешь, чтоб не запускать ебучую перерисовку так как размер страниц дефолтный.
Также делаешь с третьей.
При скроле вверх запрашиваешь данные страницы к которой идешь, и делаешь все также.
В результате некоторые ячейки будут невалидными но только до скрола, и потом обновляться на валидные данные. Можешь вьебать свой нотификатор какой-то.
Но в любом случае это страшний костылизм и лапшекод.
> При скроле вверх запрашиваешь данные страницы к которой идешь, и делаешь все также.
Такая идея мне не приходила в голову.
Я до этого думал при скроле вниз на страницу n запрашивать страницы с первой по n-ую. Кажется, твоё решение менее костыльное.
Если бы у меня был ArrayAdaper или что-то похожее, то я пожалуй бы использовал твою идею. Однако, у меня адапер использует Cursor, который загружается ContentProvider'ом (т.е. я сначала складываю данные в БД, а потом показываю в recyclerView). Не уверен, что описанный тобой способ получится применить в таком случае.
В любом случае, спасибо за подсказку.
Тебе в любом случае нужен лист, отказывайся от курсор адаптера, он работает только без доп логики, а тебе как раз она нужна.
Просто парси курсор в лист и дальше с ним работай.
Достаточно ли деактивировать текущую версию и залить бета версию под другим номером версии?
Ну и фиг с ним тогда.
неужели нет ниодной живой андроид трубы?
Прекрасно и на AMD всё работает. Проблема не в этом
List<String[]> resultList = new ArrayList<String[]>();
Данные в виде
name lol
nome pop
Как мне правильно занести это дело в базу данных?
Стандартная SQLite.
Использую Otto для оповещений, есть синглтон для сетевых данных.
В приложении один корневой активити, который управляет фрагментами. У фрагментов свои интерфейсы (нажатие/выбор в основном), все их отрабатывает корневой активити.
При разработке под Андроид меня не покидает чувство что я что то не так желаю, что все очень хрупко и ненадежно.
Как у вас устроены приложения? Как меняете тайтл у тулбара при изменении текущего фрагмента например?
Уведомлением можно. Или обоиной для локскрина сделать, правда не все смартфоны вроде умеют в отдельные обои для рабочего стола и для локскрина.
Ты можешь обрабатывать все клики и обработку в самом фрагменте, например прицепить MVP и фрагмент будет в роли View.
По поводу тулбара, можешь его использовать прямо из фрагмента, допустим у HostActivity есть метод bindToolbar(Toolbar toolbar) который будет вызываться в onActivityCreated у фрагмента
ObjectOutputStream не поддерживает несериализуемые объекты.
С другими подклассами стримов я могу записать все в кашу, но как потом это разделять при чтении?
Bitmap.compress. Или через Parcel. Совсем по-разному работают, зависит от того, чего ты хочешь достичь.
А, ну и через getPixels, конечно же.
Я вот кстати тоже не пойму как правильно сделать в МВП оповещение про то что данные обновились. Допустим сервис все обновляет, но это надо иногда выводить на экран, как правильно делать? Нет ну понятно евентбас поможет, но это сродни готу в асемблере.
Сабим при создании активити/фрагмента на ивент определенного типа, ансабимся на дестрой. Смотрящий за моделью чейкает данные когда хочет и отсылает уведомления.
Тогда уже презентер подписываем но этот ивент. У нас же мвп.
Да активити\фрагмент будет вью, иначе ебля с лайфсайклом.
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
for (Bitmap photo : this.draftPhotos) {
photo.compress(Bitmap.CompressFormat.PNG, 0, dos);
photo.recycle();
}
dos.close();
baos.close();
byte[] bytes = baos.toByteArray();
Записал допустим два фото, а при чтении через DataInputStream как понять где конец первого фото и начало второго?
На ивенты подписывается активити и шурудит обновления вью-фрагментов самостоятельно?
Для такого лучше использовать getPixels или Parcel.
> оповещение про то что данные обновились
Что значит к чему? Если получать данные из БД используя Loader и ContentResolver, то при любом изменении данных, курсор, привязанный к URI этих данных автоматически их получит
> All requests are handled on a single worker thread -- they may take as long as necessary (and will not block the application's main loop), but only one request will be processed at a time.
Точно в отдельном. Странно...
> Какой профит в MVP в сравнении с MVC?
V и P связаны меньше, чем V и C
Гораздо удобнее тестировать
Поправка, совсем не связаны.
Ведро хуево работает со многими потоками кстати, но я думаю для интентсервисом они додумались сделать какой-то шедулер.
Нет, не ошибаюсь. У меня два приложения именно так работают, лол.
Собственно, это основное преимущество использования SQLite + ContentProvider. Если ты будешь использовать какой-нибудь Realm, то всю эту логику тебе придётся реализовывать самостоятельно
> Ошибаешься
И в чем же я ошибаюсь?
> теперь моя очередь
Ты уже дважды написал, что я ошибаюсь, но так и не сказал в чём. Очень умно, да.
> У реалма кстати есть оповещения.
Я в курсе. Я и написал, что тебе самому их нужно ловить и делать обновление данных
Пиздец, вас в гугле забанили? Это стандартный набор же.
>Ты уже дважды написал, что я ошибаюсь, но так и не сказал в чём. Очень умно, да.
Контент провайдер не нужен, и можно сделать контент провайдер без уведомлений.
>>719517
> Я и написал, что тебе самому их нужно ловить и делать обновление данных
А курсор тебе ловить не нужно? Менять его в том же курсор адаптере не нужно?
> А курсор тебе ловить не нужно? Менять его в том же курсор адаптере не нужно?
Loaders именно для этого и придуманы
> Контент провайдер не нужен
Ну ок, раз не нужен, то думай сам, как же узнать об обновлении данных.
> можно сделать контент провайдер без уведомлений
Типа, если программист не в состоянии правильно реализовать методы query() и insert(), то это проблема КонтентПровайдера, а не программиста?
>Типа, если программист не в состоянии правильно реализовать методы query() и insert(), то это проблема КонтентПровайдера, а не программиста?
Нет, проблема программиста в том что он не знает нахуй нужен контент провайдер.
>Loaders именно для этого и придуманы
Нет, придуманы для этого курсорлоадеры, не более. И в реалме это быстро делаеться.
Ты какой-то странный.
> — Я вот не пойму как правильно сделать оповещение про то что данные обновились
> — Используй ContentProvider и Loaders, тогда тебе не нужно будет об этом беспокоиться
> — Ты ошибаешься! КонтентПровайдер не нужен! Ты даже не знаешь, зачем он нужен!
>— Ты ошибаешься! КонтентПровайдер не нужен! Ты даже не знаешь, зачем он нужен!
Так это правда.
Нотификатор можно делать самому, без контент провайдера. В контентпровайдере ты его даже пишешь сам.
Теперь вопрос, нахуй тебе контентпровайдер?
Доебался так доебался
У меня есть основная активити и сервис, принимающий сообщенния и срущий нотификациями о сообщениях пользователю. Клик на нотификацию инициирует запуск дополнительной активити, показывающей АлертДиалог с содержимым сообщения. Из АлертДиалога этого можно запускать основную активити.
Если нотификация прилетает когда основная активити была закэширована (бандл с состоянием непустой) - вызов основной активити через интент (startActivity(new Intent(this, MainActivity.class))) форсирует создание нвого экземпляра активити, в котором бандл с состоянием пуст. Причём если закрыть эту активити - приложение само восстанавливает закэшированную активити.
Можно ли как-то форсировать восстановление закэшированного экземпляра активити из кода?
Активити ушло в бэкграунд и находится в стеке? Если да, то нужно указать в манифесте тип singleTop для этой активити и кажется еще какой-то флаг укзаать при создании интента, но возможно я ошибаюсь и флаг не потребуется. Тогда потребуется ловить в активити onNewIntent.
> и находится в стеке
Я нубоват и смутно представляю что есть стек в ведре. Имеется в виду, выгружена она из памяти или нет? Вроде как выгружена. Если приложение попробовать запустить просто кликом на иконку - активити восстановит своё состояние, записанное в бандл.
Погуглил. Судя по http://developer.android.com/intl/ru/guide/components/tasks-and-back-stack.html моя активити уже не в стеке.
и что по твоему не говно?
OkHttp.interceptors
1) запускаешь эмулятор вручную
2) смотришь его локальный ip
3) вызываешь команду adb connect <ip>
Так поступать нужно, вопрос в том, как избежать распидорасивание изображения.
Данная ситуация на API 16, на 21 и выше все норм. На других проверить возможности нет.
Решил вкатиться и вот страдаю теперь.
1) Какой - то дикий оверинжениринг (для сравнения - жизненный цикл приложения альтернативной платформы
http://i.stack.imgur.com/Jn6MZ.png)
2) Свистопляска в названиях аргументов у функций (savedInstanceState в одном месте, outState в другом)
3) Какие - то костыли в виде Fragment (по кр мере таково восприятие при текущем уровне понимания предмета) и вообще дикая свалка в иерархии объектов.
4) Начинаешь разбираться почему onSaveInstanceState() не работает - на стековерфлоу находишь ответы, в которых рекомендуют поколдовать со стилями. И эти ответы получают позитивные отклики - т/е объективно не совсем бред.
5) Всратые конфетные релизы и непонятные проблемы когда демка из уроков двухлетней давности перестает работать
6) Вроде и механизм обмена сообщениями есть и тут же до кучи callback-ов и все в перемешку.
Почему так, Ананас?
Решил проблему, использовав textureview.
Картинки добавляляю через drawable в xml
Размер картинком не больше 2048 пикселейБ а вес не больше 400 кб в чем может быть проблема и как поченить?
Господа, расскажите, есть ли годный способ писать на Python под Андроид? Я в курсе про Kivy, но у меня вопрос - получится ли на питоне без проблем вызывать системные штуки - типа записи звука или работа со шторкой?
На джаве бы писать не хотелось т.к. ни строчки на ней не писал
16 мб - разжатая картинка, 400 кб - сжатая. Размер сжатой картинки влияет лишь на вес апк и скорость ее разжатия.
Ты гуманитарий или просто тупой школьник?
Иди учи матчасть:
http://lmgtfy.com/?q=представление+изображений+в+памяти+компьютера
Используй наиболее сильные и проверенные временем инструменты: Java
Достаточно посмотреть пример PhoneGap:
https://www.google.ru/url?sa=t&source=web&rct=j&url=https://play.google.com/store/apps/details?id=com.camden.phonegapmega&referrer=utm_source%3Dgoogle%26utm_medium%3Dorganic%26utm_term%3Dphonegap+mega+google+play&pcampaignid=APPU_1_u7YUV9PSNaWk6ASh-pzoAg&ved=0ahUKEwiTnLGK_ZfMAhUlEpoKHSE9By0Q8oQBCBowAA&usg=AFQjCNEp1bnNaPmNuMNjAe6P5jIqGQBctw&sig2=XLVtuHOlRtJpJJwg7xQtBg
Чтобы убедиться, что всё это тормозящая хуйня.
SurfaceView устаревшее говно, намеренно сделанное через жопу. Если у тебя нет цели поддерживать версии ведра ниже 4.0, переходи на TextureView.
все картинки лежат в папке drawable, вылетает на всех смартфонах не зависимо от разрешения
Назови все смартфоны. Проблема скорее всего от того, что картинка скейлится. Перемести её в drawable-nodpi.
А вообще я не понимаю, зачем тебе такие большие картинки в приложении.
Samsung s4, s5, htc m8, lenovo хуй знает какой. Много смартфонов короче плюс еще эмулятор. А картинки больше для экранов с выскоим dpi. Как в эту папку переместить ? ее создать надо ил и она где-то лежит, если лежит то где?
Создать. А лучше вообще через assets грузить, если в этом есть реальная необходимость.
Короче, задание у меня такое: рисовать жестами линии на гугловых картах. Сначала решил попробовать на чем попроще - сделал кастомный ImageView, перегрузил в нем onDraw. Где-то там есть OnTouchListener, который по нажатию меняет флажок на режим рисования, по движению зовет метод drawPoint(x,y) (который делает invalidate, и если флажок, то рисуется точка по координатам), а отпускающие события возвращают из режима рисования. Ладно, хрен с тем, что результат не сохраняется (с этим разберусь еще), главное что что-то да рисуется и точка/фигура двигается за пальцем. Значит работает.
Вернулся к картам. Написал, значит, CustomMapFragment extends SupportMapFragment, в нем View basicView (карта) и WrapperLayout wrapperLayout (extends FrameLayout - обертка, которой можно манипулировать как View, т.к. гугловым фрагментом манипулировать нормально нельзя). И такой код в onCreateView:
basicView= super.onCreateView(inflater,container,savedInstanceState);
wrapperLayout= new WrapperLayout(getActivity() );
wrapperLayout.addView(basicView);
return wrapperLayout;
Все, листнер этой хрени присобачить можно, события в карту передавать тоже, рисование полигона жестами приделал. Но полигон рисуется после сбора всех точек и передачи их карте, а мне нужно плавное рисование линии, пока я эти точки собираю. Переопределяю onDraw, как это делал с ImageView, пишу там то же самое, добиваюсь того, чтобы вызов onDraw таки происходил. Итого, вызов происходит, но при том же коде что и раньше, ничего не рисуется. Код onDraw такой, кстати:
paint.setColor(Color.parseColor("#0000ff"));
paint.setStrokeWidth(10);
super.onDraw(canvas);
if(nowDrawing)
canvas.drawRect(drawPointX-50,drawPointY-50,drawPointX+50,drawPointY+50,paint);
onDraw принадлежит WrapperLayout. Есть мысли, что оно даже рисуется, но на более нижнем слое, а верхний с картой все перекрывает, но не могу это проверить. Допустим, если закомментить super.onDraw(canvas), все полотно view должно было становиться белым, но нет, по прежнему карта видна.
Гуглю уже давно и что-то нихрена не нахожу.
Короче, задание у меня такое: рисовать жестами линии на гугловых картах. Сначала решил попробовать на чем попроще - сделал кастомный ImageView, перегрузил в нем onDraw. Где-то там есть OnTouchListener, который по нажатию меняет флажок на режим рисования, по движению зовет метод drawPoint(x,y) (который делает invalidate, и если флажок, то рисуется точка по координатам), а отпускающие события возвращают из режима рисования. Ладно, хрен с тем, что результат не сохраняется (с этим разберусь еще), главное что что-то да рисуется и точка/фигура двигается за пальцем. Значит работает.
Вернулся к картам. Написал, значит, CustomMapFragment extends SupportMapFragment, в нем View basicView (карта) и WrapperLayout wrapperLayout (extends FrameLayout - обертка, которой можно манипулировать как View, т.к. гугловым фрагментом манипулировать нормально нельзя). И такой код в onCreateView:
basicView= super.onCreateView(inflater,container,savedInstanceState);
wrapperLayout= new WrapperLayout(getActivity() );
wrapperLayout.addView(basicView);
return wrapperLayout;
Все, листнер этой хрени присобачить можно, события в карту передавать тоже, рисование полигона жестами приделал. Но полигон рисуется после сбора всех точек и передачи их карте, а мне нужно плавное рисование линии, пока я эти точки собираю. Переопределяю onDraw, как это делал с ImageView, пишу там то же самое, добиваюсь того, чтобы вызов onDraw таки происходил. Итого, вызов происходит, но при том же коде что и раньше, ничего не рисуется. Код onDraw такой, кстати:
paint.setColor(Color.parseColor("#0000ff"));
paint.setStrokeWidth(10);
super.onDraw(canvas);
if(nowDrawing)
canvas.drawRect(drawPointX-50,drawPointY-50,drawPointX+50,drawPointY+50,paint);
onDraw принадлежит WrapperLayout. Есть мысли, что оно даже рисуется, но на более нижнем слое, а верхний с картой все перекрывает, но не могу это проверить. Допустим, если закомментить super.onDraw(canvas), все полотно view должно было становиться белым, но нет, по прежнему карта видна.
Гуглю уже давно и что-то нихрена не нахожу.
Там на форуме некоторое возбуждение после закрытия robovm (видать новые клиенты пожаловали).
По факту проект развивается, есть первый апдейт.
Из минусов:
1) Просто дохрена аннотаций. Пустой шаблон контролера на половину состоит из одних аннатаций и так везде.
И не особо понятоно как с ними работать надо доки подробно читать
2) Размер IPA больше чем у robovm
Из плюсов:
1) Поддержка Kotlin
2) Поддержка на iOS andorid.database.sqlite.SqliteDatabase и курсоров (даже запустил поверх этого OrmLite на android connectionsource)
3) ART - ahead of time компиляция
4) Удобная сихронизация с XCode/storyboard, генерация java/objectc прослоек
P.S.
Что еще интересно: в этом видео https://www.youtube.com/watch?v=SrujAdCdAjE чувак говорит что возглавляет разработку.
И на официальном форуме от Intel отвечают люди с русскими фамилиями.
Может это как и Kotlin "отечественная" разработка?...
Мне нравится твоя самоирония.
Тут спрашивают как вкатится в ведро.
Тут только срачи.
О, спасибо за отсылку - похоже очень полезная штука, кажется, снимает часть головняка из пункта 1 и мои проблемы с разрывом bluetooth соединений.
Знаю, что есть еще сервисы и шины сообщений, но я пока начинающий и пытаюсь осваивать примеры к sdk, в которых с решения попроще и которые, к слову, сделаны на отъебись.
Но то что фрагменты не были задизайнены изначально, а появились только к версии 3 , говорит больше в пользу костыльности.
Вообще, кажется этот оверинжениринг происходит от оптимизации - задачи освобождения памяти, нагрузки на батарею. Преждевременной или нет - сложно сказать в 200x годах все начиналось - но определенный сильный отпечаток чувствуется.
До кучи - вспомнился еще пункт
7) Какая-то маниакальная настойчивость в прописывании
>super.method(..)
в начале переопределения метода method() - не помню ни одного фреймворка, где это бы так форсировалось.
ну и соответственно при коллапсе лист и все содержимое возвращает исходный цвет
ненене
>super.method(..)
если повсеместно требуется писать подобное в callback функциях - что-то не так в консерватории.
Вкатывание такое же как и в "Scala/Groovy/... под андроид"
1) Учишь Android API
2) Независимо учишь язык; переписываешь примеры на Kotlin
Вот тебе Android API: http://developer.android.com/intl/ru/training/index.html
Вот материалы по Kotlin:
https://kotlinlang.org - Основной сайт
https://habrahabr.ru/hub/kotlin/ - HUB Habrahabr
https://habrahabr.ru/post/279667/ - Ссылки на доклады и подкасты
https://habrahabr.ru/post/278169/ - Интересная статья "Как себе выстрелить в ногу в Kotlin"
http://kotlin.link - Сборник ссылок по Kotlin (на английском)
https://www.reddit.com/r/Kotlin/ - Reddit (тут тоже можно узнать новости и ссылки на интересные статьи)
Видео с Youtube:
https://www.youtube.com/watch?v=HWyd1gYMkl0&list=PLVe-2wcL84b8pj7VOoa-6L9Q0sDjibdoF
Конкретно под Android:
https://www.youtube.com/watch?v=VU_L2_XGQ9s
https://www.youtube.com/watch?v=-BvN0X5tqjw
Еде есть как минимум два на русском, но они не от разработчиков так что сам ищи.
https://www.youtube.com/playlist?list=PLVe-2wcL84b8pj7VOoa-6L9Q0sDjibdoF
быстро-фикс плейлиста на youtube
> 1 пик
Stream API
> 2 пик
Шлёшь нахуй бобовую спецификацию и делаешь всё package-local/public
> 3 пик
А теперь перепишите через лямбды
> 4 пик
Stream API
> 2016
> Android
> Stream
Стримы только в Android N, который выйдет в Q3 2016
> Шлёшь нахуй бобовую спецификацию и делаешь всё package-local/public
Плохая идея для неприватных классов, а вдруг придется логику сеттера менять ( o_O )
Ты что-то напутал, там функционал уровня retrolambda.
1. def products = orders.products.flatten();
2. class MyGroovyClass {
final int a = 1;
int b = 1;
final def c = 1;
def d = 1;
}
3. class MyActivity extends Activity{
def example() {
def view = findById(R.id.button);
view.onClickListener += { Log.d("TAG", "Item clicked"); }
}
}
4. def example() {
def os = ["Android", "iOS", null, "Windows Phone"];
os.grep{it}.sort {it.length()}.toUpperCase().forEach { println it};
}
Java 0
Kotlin 0
Groovy 1
астериски проебались, кто шарит тот поймет.
>udacity
Что хоть за годный курс, кто-то знает?
Он напрямую гуглом предоставлен, или кем-то другим? мимо шлют мне на мыло всякую маркетинговую хрень
Еще больше сократили.
Стримы в Java это ебанный АД >>715577
1) Периодическое отсутсвие методов перевода в стримы (из тех же паттернов)
2) Гребанные чекед исключения
3) Отсутствие блять метода takeWhile (только в Java 9.0 завезли).
Да и вообще любых метод расширения этих стримов.
4) Пляски с коллекторами и сплиттераторами
Что я делаю не так и как это исправить?
да его. Я не понимаю ка кэто правильно всерстать или макет неправильный вообще. Если не правильный то как объяснитть это дизайнерам?
Проходил на юдасити курс по градл, понравилось. Сейчас там по libgdx прохожу.
Jwh01m@,8ANUShmamai{>slPUNCTUMc'TIom
ru.nekit.androif+2dANUSglXdmailPUNCTUMmO~com
Примеры-примерчики:
https://github.com/ru-nekit-android/Clean-Architecture-MVP
Ваще забей, рынок перенасыщён, разработка под ведро это что-то уровня пэхапэ.
Та так о всём говорят - перенасыщен. Я конечно понимаю что сейчас везде многие вкатываются, но всё-равно готов учить и осваивать. Вот и интересуюсь нет ли полной задницы чтоб не огорчиться.
Сейчас собственно учу пэхапэ, по учебе надо несколько проектов сделать(в т.ч. дипломный). Ну и думаю что учить для себя. Веб в целом мне нравится, но хотел за андроид уточнить.
Ну грац ребята, нам новый rx подогнали, теперь более запутанный но оффициальный.
#гуглидинахуй #гуглумри #гугллучшесделаймвп
Есть, реально.
Пиздец, просто разрабы под ведро есть разные.
Юзай дженимоушн, намного быстрее тупого стандартного эмулятора.
Можно развернуть его вообще на другой машине, если проблемы с оперативной памятью, но у меня даже на ноуте с 4гб проблем пока нет.
Это гугл детка
Проверь свободное место на диске. Хорошо если там реально несколько гигабайт будет - с запасом так.
У меня по кр мере в начале знакомства постоянные неадекватные сообщения (привет говнокодерам из гугла и джет брейнс) были на этапе инсталляции и даже запуска эмулятора.
Вопрос был именно надо ли нуфагу вкатываться в андроид через джаву или можно с нулевыми практически знаниями вкатиться в котлин?
c местом на диске все ок
в общем погуглил проблему, отключил брандмауэр, перезагрузил и запустил от имени администратора, все установилось без ошибок
height = wrap_content
width = match_parent
смысл в том чтоб картинка отскейлилась по ширине.
В результате высота становится нихуя не врапконтент.
Что не находил на стековерфлов не работает.
Сначала нужно выучить XML — на нём в андроиде все разметки, хоть на джаве, хоть на котлине.
Стоит еще почитать первый и единственный issue у этого велосипеда: https://github.com/google/agera/issues/20
Показательно
Честно мой инглиш так себе, я заебался понимать что они там пишут.
Из прочитанного
"нахуй оно надо?"
"ну хуй знает"
и еще один ответ
"оно вроде как будет лагать, но пруфов не будет"
Стандарт андроид-разработки сейчас - это джава. Котлин - модная штучка, по которой мало учебного материала и почти нет вакансий.
Использовать профайлер памяти?
Так сразу тебе никто не скажет, для начала определись, что именно у тебя утекает.
Начни с коллекций ).
Попробуй выделить точкни инвариантности по отношению к добавлению/удалению в коллекцию и добавить туда проверок.
Используй инструментальные средства http://developer.android.com/tools/performance/comparison.html
Хотя по мне, нет ничего лучше jvisualvm с его оперативной статистикой использования объектов с показом данных в дельта-режиме. Так -то если отталкиваться от https://karussell.wordpress.com/2011/04/10/viewing-hprof-from-android-with-jvisualvm/ - можно сравнить три дампа взятых за продолжительный период - по идее можно выделить тренд.
Впрочем, возможен эвристический анализ и по одному дампу с помощью MemoryAnalyzer.
А что еще может протекать?
Давайте посремся на тему того что в джаве нет утечек, а есть в пустую занятые ресурсы
>стек
Это как?
>out of heap
Ну опять же это потому что ты где-то зажал ссылку не? И сборщик его не удалил.
>в jni
Ну ладно, но жавовскими профайлерами это разве можно выявить? И это не не в джаве проблема, так что несчитово.
stackoverflow - другое имя
http://www.evanjones.ca/java-bytebuffer-leak.html
считово, например, если есть
native acquire()
native release()
но контракт использования не выполнен.
>stackoverflow - другое имя
Так это не значит что у тебя стек течет, это значит что у тебя стек уперся в кучу, или наоборот. Видимо кто-то где-то решил сделать рекурсию без выхода, или объекты в кучу не влезают и попадают в область выделенную для стека.
хочу установить OEM Driver, но не знаю какая модель, фирма фирма, я так понял, Huawei
Cмотри в суть вещи. Есть ресурс - память под стек, который из-за неправильно написанного кода источается. Если буквально - утекают стековые фреймы.
stack over flow.
Ох уж эти виндоус-проблемы.
Не тупи анончик, GOOGLE тебе уже дала единственно-нужный драйвер:
0) На телефоне включаешь "Отладка по USB"
1) Скачивашь через Android SDK "Google USB driver" (он там где-то внизу списка компонентов)
2) Подключаешь своей говно-девайс к компьютеру
3) Открываешь "список устройств" и находишь там неопознаный девай
4) Открываешь меню выбора драйвера и там "указать путь к дровам" (или что-то похожее)
5) Выбираешь путь к папке с Google USB Driver.
Он где-то внутри папки SDK/extras/google/usb.
6) Дальше если надо, в списке выбираешь "Google ADB Complex" (или что-то похожее)
Такая же проблема, как решил?
У меня например на nexus 5 достаточно этого драйвера, а для HTC One нужно ставить свое говно.
На работе все тестовые девайсы (хуавеи/леновы/самсунги/соньки),
только через одни этот драйвер настраивал.
HTC у нас нет, но я сильно сомневаюсь что там по другому.
на 4pda хоть чекал?
http://4pda.ru/forum/index.php?s=&showtopic=576453&view=findpost&p=32107251
Дайте какой-нибудь гайд как запилить систему аутентификации на устройстве.
Google OAuth:
1) на андроиде "из коробки" (есть java API)
2) пользователю не придется запоминать новые пароли
Кароч вот фрейм в который я объекты должен закинуть а объекты в цикле создаются. TextView это одна буква считай.
[CODE]
RelativeLayout.LayoutParams frameLP = new RelativeLayout.LayoutParams(300, 300);
frameLP.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
frameForLetters.setLayoutParams(frameLP);
Random random = new Random();
for (int i = 0; i < 3; i++) {
TextView textView = new TextView(getActivity());
textView.setX(random.nextInt(size.x - 200));
textView.setY(random.nextInt(size.y - 200));
textView.setText(i + "");
textView.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
textView.setTextSize(50);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
textView.setLayoutParams(lp);
textView.setOnTouchListener(touchListener);
frameFor.addView(textView);
}[/CODE]
Есть охуительный точ лисенер которым я двигаю объекты.
[CODE]View.OnTouchListener touchListener = new View.OnTouchListener() {
float dX, dY;
@Override
public boolean onTouch(View view, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
dX = view.getX() - event.getRawX();
dY = view.getY() - event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
view.animate()
.x(event.getRawX() + dX)
.y(event.getRawY() + dY)
.setDuration(0)
.start();
break;
default:
return false;
}
return true;
}
};[/CODE]
Я знаю координаты объекта ну и наверное его ширину высоту. В принципе путем охуительных алгоритмов и геометрии все это можно захуярить но мне лень. мб есть другой путь? Пик рилейтед.
Кароч вот фрейм в который я объекты должен закинуть а объекты в цикле создаются. TextView это одна буква считай.
[CODE]
RelativeLayout.LayoutParams frameLP = new RelativeLayout.LayoutParams(300, 300);
frameLP.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
frameForLetters.setLayoutParams(frameLP);
Random random = new Random();
for (int i = 0; i < 3; i++) {
TextView textView = new TextView(getActivity());
textView.setX(random.nextInt(size.x - 200));
textView.setY(random.nextInt(size.y - 200));
textView.setText(i + "");
textView.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
textView.setTextSize(50);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
textView.setLayoutParams(lp);
textView.setOnTouchListener(touchListener);
frameFor.addView(textView);
}[/CODE]
Есть охуительный точ лисенер которым я двигаю объекты.
[CODE]View.OnTouchListener touchListener = new View.OnTouchListener() {
float dX, dY;
@Override
public boolean onTouch(View view, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
dX = view.getX() - event.getRawX();
dY = view.getY() - event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
view.animate()
.x(event.getRawX() + dX)
.y(event.getRawY() + dY)
.setDuration(0)
.start();
break;
default:
return false;
}
return true;
}
};[/CODE]
Я знаю координаты объекта ну и наверное его ширину высоту. В принципе путем охуительных алгоритмов и геометрии все это можно захуярить но мне лень. мб есть другой путь? Пик рилейтед.
http://stackoverflow.com/questions/36696697/google-fit-distance-and-speed-using-sensors-api
http://stackoverflow.com/questions/36707701/workout-calorie-calculation-using-google-fit
Поставить на час и пускай пишет те слова, которые распознал.
Суп, аноны. Нужна помощь.
Как в андроиде проверяется наличие активного соединения с интернетом? Путем опроса ConnectivityManager'а методами getActiveNetwork/getActiveNetworkInfo или есть ещё способы? Если первое, то как можно зарегистрировать у этого менеджера свою?
Объясняю, зачем мне это нужно.
Есть планшет, на нем интернет вручную поднимается с помощью pppd (с мобилы через отг, потому что я не осилил DUN на ебучем bluedroid), затем утилитой ndc создается сеть, в которую добавляется интерфейс ppp0, и делается активным. В результате интернет работает во многих приложениях кроме тех, что, по всей видимости, запрашивают информацию об активной сети. Они выдают ошибку об отсутствии подключения.
http://pastebin.com/u3ZYacvx
http://pastebin.com/VcszSRKU
В таком виде пойдёт? Я никогда не работал разработчиком и не знаю общепринятых стандартов. Везде откуда звонят по отправленным резюме спрашивают "какие ФРЕЙМВОРКИ вы знаете", может какой-нибудь Spring for Android засунуть,?
Без контекста ничем.
>>723560
Если ты используешь runOnUi, то вероятней всего у тебя есть ссылка на контекст неявная. А это значит гроб гроб кладбище утекающие активности.
они ещё и денег не платят, а только
>Компенсация расходов на питание и проезд
Ничего не имею против стажировки, но с адекватными требованиями.
Гугли apptractor androiddev.
Один малознакомый чувак, узнав что я могу в программирование, попросил слепить для него приложение для андроида. Еще в начале недели о разработке под андроид я не знал вообще ничего, но установив студию и почитав мануалы определил что уйдет на написание этой пороги около месяца (если уделять этому два-три часа в день).
Вопрос: какая адекватная цена разработки такого несложного приложения?
>около месяца
Значит два месяца.
>уделять этому два-три часа в день
Если по 6 часов в день.
30-50к, в зависимости от твоей наглости.
300 р в час за то что нихуя еще не знаешь 2 часа 30 дней = 18 косых, скинь до 15
Бамп вопросу
так трушнее? http://pastebin.com/EcQeBH32
>>723626
насколько я понял от того, кто там стажировался — платят 70000 за полный рабочий день, наверное половину за 20 часов в неделю. Питание и проезд компенсируют помимо этого. Если не платят, то, конечно, хуй я туда пойду.
> Без контекста ничем.
Контекст ненужон. Если очень нужен — можно передать контекст приложения, его всегда должно хватить.
По хороше надо пользоваться нормальными библиотеками, а не
> This implementation doesn't follow redirects from HTTPS to HTTP or vice versa.
http://developer.android.com/intl/ru/reference/java/net/HttpURLConnection.html
> так трушнее?
Разницы никакой, ведь GetHtmlTextTask "inner класс" и так же захватывает ссылку на активити.
Ну может быть и так, хотя тезис что "от использования контекста-приложения бывают утечки", помню еще со времен андроида 1.6
Возможно это связано с тем, что загруженные Drawable кэшируются внутри Resources
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.1.1_r1/android/content/res/Resources.java/#115
, но там все ссылки WeakReference
--- Успех разрабочкика уровня /b/
Я за пол-года заработал и вывел на инапах 100$ (меньше вывести нельзя),
потом еще около 50$ и приложения заблокировал Google за "эротику".
Начинай сразу с Kotlin, он ближе к C# и даже местами круче (а скоро еще добавят async/await).
Вот смотри реп батл C# vs Kotlin на dotNext конференции
https://www.youtube.com/watch?v=jDrCvq0yo7g
не хочу начинать kotlin только потому что планирую в ближайшие полгода устроиться android прогером. Тем более слышал что котлин медленный местами + гугл не планирует его внедрять полностью вместо джавы (сравниваю свифт в ios)
>>723952
>>724033
>>723941
Открой документацию и почитай сам: https://developer.android.com/reference/android/content/ContextWrapper.html#getApplicationContext()
> This generally should only be used if you need a Context whose lifecycle is separate from the current context, that is tied to the lifetime of the process rather than the current component.
> If used from the Context returned here, the receiver is being registered with the global state associated with your application. Thus it will never be unregistered for you. This is necessary if the receiver is associated with static data, not a particular component. However using the ApplicationContext elsewhere can easily lead to serious leaks if you forget to unregister, unbind, etc.
Ну или сюда загляните: https://stackoverflow.com/questions/7298731/
Если хорошо знаешь шарпы, то лучше начать с ксамарина. В джаву и нативные приложения вкатываться — это процесс небыстрый.
> xamarin мне не особо понравился
Так и должно быть, ведь он говно.
> что можно почитать по java, чтобы быстро вникнуть и писать уже на любимую андрюшу?
Официальную документацию. Или хуйню из шапки.
Юзать активити контекст еще чреватее. Захочешь ты синглтон сделать, какой контекст заюзаешь, а? Активити? Вот и дибил.
А вообще почитаю еще, как юзание апликейшн контекста который внезапно сингл инстанс должен вызывать мемори лики. Каким хуем то?
Я разве говорил, что нужно везде использовать Activity, даун?
Это вон тут >>723812 утверждалось, что "апп контекста хватит всем"
Но я так и не понял откуда будет мемори лик, если ссылаешься на сингл энтити.
Пускай это хуевый паттерн, но лик то откуда?
Я так понял если хранить ссылки на что-то внутри кастомного Applicatoin.
В общем эта хуйная переоценена ну или действитель надо быть дауном,
в iOS есть статический метод на получение UIApplication и живут с этим как-то без утечек.
другой анон
Интересно, а за фуррятинку заблочат?
Бамп вопросу
Там про бродкаст ресиверы рассказывается, однако нет смысла регистрировать ресивер, нужный активити, внутри приложения. А вот в ситуациях, когда контекст вызывает утечку, хранить ссылку на аппликуху для простого обращеня к ресурсам, получения системных данных и тому подобного — отличное решение, не имеющее никаких недостатков.
Также для любого синглтона в твеом приложении.
Смысл юзать активити контекст есть только в адаптерах.
как же хочется сладости ><
В асинктасках тоже, например.
А вот в адаптерах как раз таки нет смысла. Более того, в адаптерах даже контекст активити нет смысла держать, а если держишь — то это проёб по архитектуре. Но проёб допустимый.
Внимательно прочитай, я говорю, что контекст аппликухи не нужен в любом случае.
>>724422
И как же он работает?
Да но внезапно нужен контекст активити.
>>724422
Инфлейтами.
Также то что ты говоришь проеб архитектуры, ты сам не понимаешь что говоришь на самом деле.
Контекст божественный класс который дает тебе доступ ко всему. Ресурсы, любые менеджеры и тд. Как ты вынесешь всю работу из адаптера и тем самым вынесешь активити контекст?
> Да но внезапно нужен контекст активити.
Нет.
> Инфлейтами.
И зачем для этого адаптеру ссылка на контекст акиивити?
Что бы стили и тема была та же. А то потом удивляются хули вьюшки как говно и текст не того цвета.
А схуяли бы им не быть нормальными?
Да ёбаный в рот, третий раз говорю, не нужно никакого контекста приложения. Достаточно контекста parent метода getView в момент получения вьюхи.
Ты вообше долбоеб? На момент первых прорисовок нету вьюхи.
Потому сука и суют контекст в адаптеры, чтоб инфлейтить эту ебаную вьюху. А если засунуть в конструктор апликейшн контекст то вроде бы как раз и будет экепшн. Я правда его так давно ловил что и не помню всех ньюансов.
Потому я и сказал что для ебучих адаптеров нужен активити контекст, но кто-то возможно ты спизданул что-то про кривую архитектуру.
Заебал нахуй, со своим ресайлервью вообще ополоумели.
Если от тебя заинкапсулировали реализацию и ты неебешь что откуда берется то иди ты нахуй.
Хм, пойду поищу в своих проектах адаптеры.
Точно помню, что контекст активити когда-то убрал за ненадобностью.
http://d.android.com/intl/ru/reference/android/widget/Adapter.html#getView(int, android.view.View, android.view.ViewGroup)
http://d.android.com/intl/ru/reference/android/support/v7/widget/RecyclerView.Adapter.html#onCreateViewHolder(android.view.ViewGroup, int)
"ViewGroup parent" есть и на момент первой прорисовки,
из него можно взять контекст и в ListView/GridView и в RecyclerView
> Ты вообше долбоеб? На момент первых прорисовок нету вьюхи.
parent есть всегда, учи матчасть.
> Заебал нахуй, со своим ресайлервью вообще ополоумели.
Я про ListView говорю.
Вертикальное сжатие кнопок тоже интересует, т.к. на последнем скрине кнопки уходят вниз.
спасибо за наводочку
Пробовал "me/friends" он возвращает только количество друзей и данные тех из них кто пользуется моим приложением никто
А /me/taggable_friends вместо id у юзеров возвращает левую хрень.
Это вообще возможно сделать?
А погуглить? me/firends вернет только тех его друзяшек которые уже в твоей приложухе. А чистый список, дл яинвайтов например, получить низя, нужно вызывать пейсбучный диалог. Еще можно оформить приложуху как игру, тогда можно использовать invitable_friends, и показывать их в своем ui.
>>724865
Да не работает это!
>>725002
http://developer.android.com/reference/android/widget/Spinner.html#attr_android:spinnerMode
Теперь понял. Вполне возможно, что это нельзя одной строчкой сделать, придётся самому реализовывать.
Причем даже через кастомный адаптер не удалось.
В целом в api у fb, какой то пиздец твориться. То нельзя, туда не пустим, ко ко ко это ради юзеров. Мудилы блять.
Энетрпрайзный примат в теме.
Дохуя стажа в яваЕЕ. В основном бакенды. Стеки редхата и оракла.
Как быстро и непринужденно перекатиться в мобильный девелопмент.
Учебников ява за 21 день не предлагать лол. Ибо подозреваю что яву я знаю всяко лучше чем 80% местных посетителей, как и груви со скалой.
Короче реквестирую быстрый вкат в мобильный дев для энтерпрайзомакак?
>Нифига, invitable_friends сорт оф taggable_friends
С чего ты взял? Мне это возвращает весь список друзей кто еще не в приложухе.
Я о том что idшки юзеров получить для загрузки данных профиля невозможно используя invitable_friends
Задание тестовое делаю. С контактом все влет получилось, а от пейсбука меня трясет уже. Дальше списка друзей никак не продвинуться. А надо всего лишь дату рождения, телефон (если есть), пикчу и имя.
Даже если ты получишь айдишник друга юзера хуй ты инфу с него достанешь. Те кто давал тестовое в курсе что после graph api 2.0 многое пошло по пизде? А то мне на полном серьйозе хотели показать "мол раньше все работало ща покажу, чо воняешь" - и прямо на месте обсирались.
Там еще предлагают мыла юзеров парсить, такое чувство что они тз для задания лет 10 не меняли. Хотя там 5е ведро в требованиях и вся хуйня.
Если у тебя дохуя стажа в проге, перед глазами шапка, и ты спрашиваешь как вкатится, то у меня для тебя плохие новости.
Ну я думаю тебе стоит им аргументированно объяснить, что ничего больше чем имя/фотку ты от фейсбука получить не сможешь.
Угу, так и сделаю.
Чот нихуя.
Надо какой то учебник хотя бы.
Эти лайоты и прочая хуйня не имеет ничего общего с ejb jpa jta jms с которыми я работаю сейчас
Советую тебе Алексея Климова, ну и официальные туториалы.
Чет странно что ты за столько лет гуглом не овладел
И чем же тебя сайт гугла не устроил?
Я ее писал если что.
Никак не пойму что тебе не нравится. В офф источнике помимо документации есть примеры и гайды, русские ресурсы так вообще изложили все попорядку и у них туевая куча уроков.
Что ты ожидаешь получить в ответ "посоны как вкатится"? Ты должен быть достаточно сведущ в проге чтоб понимать, единственный способ вкатится писать что-то.
>>725852
В шапке внезапно это все есть.
А нахуй го уперлось?
Каким образом ебанашка? Давай перепиши все что есть на Go.
go не нужен же
Питон штоле?
Еблан, просто залей новую версию в beta-раздел :3
Собственно и задания ищу средняковые.
https://play.google.com/store/apps/details?id=com.kota.randommovie.application
Дизайн говно, код наверное тоже (раз не показываешь).
Ты бы вставил аналитику (типа google/flurry), ибо активные пользователи в GP иногда завышаются.
Да и вообще это не те кто им пользуются, а кто поставил и забыл удалить.
Братан, названия разные, непорядок.
Алсо было очень интересно почитать про Дмитрия Евдокимова, ну просто пиздец как, очень увлекательно, базарю.
Спасибо. А что можно с дизайном сделать? Как вообще прокачать построение интерфейсов?
>>726347
А что не так, вроде норм задание для джуна.
ХЗ, у меня тоже хреново с дизайном, но я отдаю себе в этом отчем.
Поэтому я иду на FL (или freelance.ru) и делаю заказ на материал-дизайн интерфейса.
Потом выбираю оптимального исполнителя по цене/качеству.
ехал в тралике, увидел как бабка разгадывает кроссворд, запилил апп, не взлетело
Кек
Дело было в 2012, сделал несколько говнопрог, залил в гуглплей, в итоге у каждой сейчас по несколько миллионов установок а мне вообще похуй, стало лень ими заниматься в том же 2012.
>зачем все пишут "m" перед началом имени переменной, такого пиздеца никогда не встречал
Подражание Android SDK, загляни туда.
mXXX от слова member (класса).
У каждой команды есть определенные конвенции, их надо придерживаться.
А насчет того что все пишут, это не правда - я не пишу (в конструкторе пользуюсь this.XXX = XXX)
Говно всякое же, серьёзно. Уровня "очиститель андроид батареи виджет".
m - non-public non-static переменная.
а mm - memberMember? Что за mumbling?
Казалось бы венгерская нотация осталась в 90х, ан нет нашлись форсеры сраные.
Не пользуюсь идеей, наверняка это "как надо" можно настроить так, как мне захочется.
Андроиданы, тут такое дело.
Завтра утром я иду на собеседование на другую работу. А я очень давно этим не занимался, года три точно, да и волнался раньше на них жутко, просто из-за стрессовой обстановки.
Какие сейчас вопросы задают? Чего ожидать? Что по быстрому освежить.
Пробелы. Code Style на что? Там все расписано и объяснено.
Скобки - это однозначно египетские скобки. Это вообще впитывается с первым Hello World на яве.
> Пробелы. Code Style на что? Там все расписано и объяснено.
Не слышал о таком, не гуглится. Поясни давай.
> Скобки - это однозначно египетские скобки. Это вообще впитывается с первым Hello World на яве.
Какая разница, как был написан первый хэллоуворлд на джаве?
>не гуглится
Ты дурак?
https://google.github.io/styleguide/javaguide.html
http://www.oracle.com/technetwork/java/codeconvtoc-136057.html
>Какая разница
Большая.
> Ты дурак?
А ты мне сказал, какой надо гуглить? Ты мне 2 в ответ кинул, которые ещё и противоречат друг другу. Ни то, ни другое не называется "Code Style".
> http://www.oracle.com/technetwork/java/codeconvtoc-136057.html
Four spaces should be used as the unit of indentation. The exact construction of the indentation (spaces vs. tabs) is unspecified. Tabs must be set exactly every 8 spaces (not 4).
Нет определённого общего соглашения, что пробелы можно, а табы — нет, у всех оно разное.
> Большая.
Классная аргументация. Если бы хэллоу ворлд был бы написан одной строкой, ты бы оформлял код одной строкой по сей день?
Поехавший, по запросу Java Code Style гугл выдает первую ссылку.
Оттуда же:
2.3.1 Whitespace characters
Aside from the line terminator sequence, the ASCII horizontal space character (0x20) is the only whitespace character that appears anywhere in a source file. This implies that:
All other whitespace characters in string and character literals are escaped.
Tab characters are not used for indentation.
Braces follow the Kernighan and Ritchie style ("Egyptian brackets") for nonempty blocks and block-like constructs:
No line break before the opening brace.
Line break after the opening brace.
Line break before the closing brace.
Line break after the closing brace if that brace terminates a statement or the body of a method, constructor or named class. For example, there is no line break after the brace if it is followed by else or a comma.
> Поехавший, по запросу Java Code Style гугл выдает первую ссылку.
Первая ссылка не называется Code Style, как ты её начально назвал. Вторая тоже, кстати. Если пробелы — общепринятый стандарт, то есть электронный нормативный документ, имеющий конкретное название. И если ты мне хочешь о нём сообщить, то называй его точно, а не какое-то абстрактное название, по которому я нахожу овер 9000 таких "рекомендаций по оформлению".
Ты мне кинул 2 ссылки в прошлом посте. В одной сказано, что табы нельзя, в другой — что табы можно. Догадываешься уже, что ты облажался?
>одна не указывает точного стандарта в этом вопросе, вторая его уточняет
Очевидно
Если бы ты не был дауном, желающим доебаться из-за мелочи, то из поисковой выдачи и того, что я написал, легко бы сделал правильный вывод о том, какие документы тебе нужны.
Долбоеб.
Ясно, упорно 2 раза пропустил один и тот же аргумент, да ещё и перешёл на оскорбления. Слив засчитан.
> Если бы ты не был дауном, желающим доебаться из-за мелочи
Это вообще ни разу не мелочь. Если есть общий нормативный документ, ты дашь его точное название. А дело в том, что такого документа просто не существует.
Где я, блядь, давал ТОЧНОЕ НАЗВАНИЕ ДОКУМЕНТА? Покажи мне. Ткни, блядь, пальцем.
Это общепринятое, блядь, словосочетание, тупой ты мудак. Синоним Programming Style.
Какой аргумент я пропустил?
Еще раз: один документ не дает точной спецификации по КОНКРЕТНОМУ пункту. Второй этот пункт уточняет и полностью, блядь, регламентирует.
> Это общепринятое, блядь, словосочетание, тупой ты мудак. Синоним Programming Style.
Общепринятое сочетание, по которому с одинаковой успешностью гуглится рекомендация от гугла и вопрос на стэковерфлоу "как надо оформлять код????" с длинным дискассом ни о чём.
> Какой аргумент я пропустил?
Что документа два и они друг другу противоречат.
> Еще раз:
Первый раз, видимо, был монологом в твоей голове?
> один документ не дает точной спецификации по КОНКРЕТНОМУ пункту. Второй этот пункт уточняет и полностью, блядь, регламентирует
Один документ говорит что можно и так и так, второй — онли пробелы. Причём второй дан всего-лишь гуглом, это их гуглостайл, который в принципе не может быть единственно верным.
Это копия, сохраненная 18 мая 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.