• Как получить опыт для устройства на работу Python Developer?

    JRazor
    @JRazor
    Senior StarkOverFlow Programmer
    Сначала пишите для себя. Пробуйте решать задачи, играться с разными GUI, базами данных и прочими кошерными вещами. Потом можете попробовать пофрилансить. Опыт + заработок. Я не знаю, насколько это поможет при устройстве на работу (тут все зависит от компании), но писать более-менее нормальный код рано или поздно научитесь. Опыт должен быть не в вашей трудовой книге, а в вашей трудовой голове. Сразу говорю - сам в организации не работал программистом Python (не повезло с городом), но писать научился.

    А лучше, конечно же, стараться и выбиться в джуниоры. Там вас всему научат)
    Ответ написан
    Комментировать
  • Как можно передать ссылку на экземпляр класса в другие модули, чтобы взаимодействовать с ним?

    @hsc
    full stack python back-end developer
    Не думайте о потоках как об объектах, потому что они ими не являются. Поток — это нить выполнения, которая во время инициализации принимает функцию, которую будет выполнять. После инициализации — это отдельный мини-процесс. Вызвать метод потока невозможно: у него их попросту нет. Можно вызвать метод дескриптора (объекта, который управляет потоком) но не самого потока. Отличием потоков от процессов является то, что потоки разделяют адресное пространство с процессом, который их породил. Это значит, что каждый поток имеет доступ к данным процесса и других потоков.

    Теперь о вариантах решения. Я их вижу несколько:
    1. Перед запуском потока создать proxy-объект, экземпляр класса, который будет описывать подходящую для вас структуру данных. В зависимости от задачи, может быть полезным посмотреть на Queue, он из коробки потоко-безопасен. После этого просто передать ссылку на этот объект в конструктор потока и общаться через него. Поток пишет в этот объект - django читает из него, и наоборот. Модель очереди для таких задач подходит как нельзя лучше, потому как нельзя гарантировать то, что поток подхватит задачу сразу по ее появлению, и другая задача не затрет предыдущую. Создавать proxy-объект нужно в такой точке, из которой выполнение процесса родителя не выйдет до остановки потока, иначе Вы рискуете потерять контроль над потоком или ловить "странные" ошибки.

    2: Если есть необходимость ставить перед потоком разные задачи может быть разумно вынести их хранение во внешние службы, например redis. Он очень быстрый и существенного оверхед даже на малинке не создаст. Общаться с ним можно через этот пакет. Если хотите сэкономить на tcp-трафике - запускайте redis на unix-сокете.
    Этот вариант потенциально избавит Вас от головной боли с синхронизацией задач.

    3: Если есть возможность и памяти хватает больше чем на 1 поток - RQ. Это — легкий менеджер очереди задач для python. По сути, то, что Вы и пытаетесь реализовать.
    Ответ написан
    7 комментариев
  • Как на Django реализовать график работы?

    @patient
    В TextField храню сериализованный в JSON объект типа:

    [{"start":"09:00","end":"14:00","lunch_start":"","lunch_end":""},
    {"start":"09:00","end":"18:00","lunch_start":"13:00","lunch_end":"14:00"},
    {"start":"09:00","end":"18:00","lunch_start":"13:00","lunch_end":"14:00"},
    {"start":"09:00","end":"18:00","lunch_start":"13:00","lunch_end":"14:00"},
    {"start":"09:00","end":"18:00","lunch_start":"13:00","lunch_end":"14:00"},
    {"start":"09:00","end":"14:00","lunch_start":"","lunch_end":""},
    {"start":"","end":"","lunch_start":"","lunch_end":""}]


    Темплейттегом рендерится в форму:

    fd32890a341441088bafb4bf1030b5fa.png

    На стороне клиента яваскриптом всё отслеживание и высчитывается. Решения проще не нашёл.
    Ответ написан
    1 комментарий
  • PHP с нуля. Где смотреть примеры практического использования?

    Советую Лаура Томсон и Люк Веллинг "Разработка WEB-приложений на PHP и MySQL" Она в самый раз для тебя сейчас!
    Помню как то был в такой же ситуации. Знал практически все но не знал как что с чем использовать и вообще зачем это знать. А вот тут Лаури создает интернет магазин поэтапно и разжеванно все!
    Ответ написан
    1 комментарий
  • Является ли уход из университета правильным решением?

    @portfelio
    Правильным решением является то, которые вы принимаете осознанно. Какая разница, кто и как поступал в аналогичных случаях?
    Ответ написан
    Комментировать
  • Как реализовать правильно авторизацию с сессиями на codeigniter?

    Вообще фрейморки тем и хороши, что в них уже есть все самое необходимое, а если и нету, то скорее всего кто-то это уже написал.

    Для авторизации можно, например, взять плагин ion_auth. Не сказать что он идеален, но достаточно простой и универсальный (сам начинал с него, да и сейчас им пользуюсь, правда там мало чего родного осталось - переписал почти полностью)

    для сессий есть встроенный класс, там ничего особенного - cidocs.ru/210/libraries/sessions.html

    для БД тоже есть простой класс - cidocs.ru/210/database/index.html
    Ответ написан
    1 комментарий
  • Как сохранить информации в Лист на ASP.NET MVC 4.0?

    Vadimyan
    @Vadimyan
    Программист C#
    Привет. Я согласен с @foxmuldercp - материалы полезные.
    static-поле в контроллере - худшее из возможных решений. Архитектура MVC предполагает наличие модели, которую вы игнорируете. Контроллер должен работать с неким репозиторием в части извлечение и сохранения данных. Приведу упрощенный пример
    public interface IUsersRepository
    {
        UserInfo SaveUserInfo(UserInfo user);
        IReadOnlyCollection<UserInfo> GetUsers();
    }


    В этом случае ваш контроллер может выглядеть следующим образом:
    (Это тестовый пример, на практике нужно использовать DI через IoC-контейнер для внедрения репозитория)
    public class HomeController : Controller
    {
        private readonly IUsersRepository _usersRepository;
        public HomeController()
        {
            _usersRepository = new UsersRepository();
        }
            
        public ActionResult Index()
        {
            var users = _usersRepository.GetUsers();
            return View(users);
        }
    
        public ActionResult Create()
        {
            return View();
        }
    
        [HttpPost]
        public ActionResult Create(UserInfo userInfo)
        {
            if (ModelState.IsValid)
            {
                _usersRepository.SaveUserInfo(userInfo);
                Users.Add(userInfo);
                return RedirectToAction("Index");
            }
            return View();
        }
    }


    При этом работа по сохранению пользователей переносится на реализацию интерфейса IUsersRepository. В зависимости от ваших потребностей, вы можете реализовать хранение коллекции пользователей в БД, в файле на диске, в оперативной памяти (для этого нужно либо сделать репозиторий синглтоном, либо заговнокодить статическую коллекцию в нём).
    Несколько замечаний напоследок:
    1. Репозитории обычно отвечают за работу с конкретным хранилищем данных на уровне сохрани/удали/извлеки, а места для бизнес-логики не остаётся. Поэтому звеньев может быть еще больше - есть сервис бизнес-логики для работы с пользователями, который через репозиторий извлекает данные, а после формирует модель для отдачи контроллеру. Таким образом из класса EF code first Person может формироваться модель UserInfo.
    2. Еще раз напомню про материалы @foxmuldercp , которые на начальных этапах изучения mvc могут быть очень полезны.
    Ответ написан
    Комментировать
  • Программирование + Исскуство, что изучить?

    @switlle
    Мой Вам совет, если хотите и программировать и быть всегда в теме искусства - займитесь компьютерными играми. В вашем возрасте это очень интересно, и в тоже время есть время разобраться в деталях.
    Ответ написан
    Комментировать
  • Переходить с CodeIgniter или нет?

    Sardar
    @Sardar
    не понимаю выигрыш от того что их можно не писать руками

    Есть множество других аспектов у работы с БД, кроме как выборка данных. ORM обычно обвязан кучей смежных возможностей. К примеру schema migrations – автоматическое изменение таблиц под последнюю версию. На подобии того как git/mercurial/etc держат версии вашего кода, также должны быть версии вашей БД, с помощью которых можно выкатывать обновления или возвращаться назад. Помимо миграций есть архивы, утилиты для заполнения тестовыми данными и прочее-прочее.

    Если хочется попробовать чего-то нового, то попробуйте Django. Да, это python. Для смелых можно Pyramid. Питон сам по себе очень гибкий с его мета-программированием. Вам больше не нужно генерить файлы с кодом или держать кеш под автоматически сгенерированный код. Нет глобального namespace, где неизвестным образом появляются классы, следовательно нет танцев с class loaders и всегда ясно откуда и что пришло - это очень повышает ясность кода. Любые объекты самоописываются, так, что можно получить веб-формы из ORM моделей, автоматическая валидация, generic views (django view == контроллер для всего остального мира) и многое другое. Автоматическая админка. Хороший асинхронный фреймворк в лице Celery. Неплохое управление на management commands, которые легко пишутся. Вместе с Fabric уходит головная боль с выкатыванием новых версий на тестовые и боевые сервера. В общем batteries included.
    Ответ написан
    1 комментарий
  • ASP.NET или PHP. Что начать учить?

    HDApache
    @HDApache
    PHP программист
    Если Вы хотите работать и зарабатывать деньги то выбирайте PHP, да он совсем не элегантен и не так крут как Python, C#, JAVA (нужное подчеркнуть). Но PHP как не крути это 90% рынка труда. Никто не мешает паралельно для души писать на чем то более приятном. Как говориться "мыши плакали, кололись, но продолжали жрать кактус..."
    Ответ написан
    1 комментарий
  • Какие могут быть практические рекомендации по переезду разработчика на постоянную работу из региона в Москву?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Тут все как в переходе на FreeBSD или Linux. Да, просто берешь и переходишь.

    Я в 2007-м переехал так из глубинки(Татарстан):
    1) На старте было 27.000 руб
    2) Нашел через интернет человека которым был нужен программист за 35. 000 руб в в то время (Декабрь 2007)
    3) По чистой случайности именно он и предложил место для жилья. За 10.000 руб. в месяц.

    И того у меня сразу было 10 за квартиру, осталось 17.000, из них потратил сразу же на месячный абонемент в метро. Потом нашел места где можно по дешевле кушать, рыскал по интернет специально.

    В Москве ща можно найти, уверенно причем, 1-комн квартиру без хозяев за 25 и того с тебя будет 12.5 в месяц. Я к тому что нужно будет поискать компаньона чтобы на двоих платить! Ну на проезд в метро 1200 это 60 поездок, где-то 1.000 интернет и где-то 5-6.000 руб на покушать. И того готовь 12.5 + 1.200 + 1.000 + 6.000 руб. это из расчета на месяц, но лучше накопи 40-50 чтобы на 2 месяца уверенным быть.

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

    Да. По опыту скажу, первые 5-6 месяцев всех "понаехали" тянет обратно домой. Поэтому будь готов психологически, что придется окрепнуть морально ;)

    Также, забыл сказать, если переедешь, первое время билет не важно какой должен быть с собою. В течении 90 дней любой билет ЖД-поезда будет служить тебе временной регистрацией. Другими словами, если домой не поехал, а 90 дней проходят, иди и купи за 500-600 до какого-нибудь Владимира главное из него до Москвы, а в кассе на вопрос: "А туда как?", так и отвечай что кто-нибудь докинет, походу дела придумаешь.
    Ответ написан
  • Можно ли быть одновременно разработчиком моб. приложений и web-разработчиком?

    foxmuldercp
    @foxmuldercp
    Системный администратор, программист, фотограф
    Я из админа с 16 летним стажем сейчас тоже начал развиваться в разработчика.
    C# + Asp.Net MVC, соответственно Html, JQuery, Twitter Bootstrap, MS SQL, Linq, Entity Framework.
    сейчас постепенно пишу свой вариант домашней веб бухгалтерии, он уже живёт в Azure
    Ответ написан
    Комментировать
  • C++ или C#, с чего начать изучение с позиции фрилансера?

    @Igor_Sib
    Раз интересует Unity3d, наверно разумнее изучить C#.

    Не знаю как с точки зрения фрилансера, но с точки зрения разработчика игр (я с 2010 пишу на C#, до этого лет 10 писал на C++) - C# лучше. Мне больше нравится.

    На C# пишешь именно код, логику игры. Из плюсов - скорость разработки выше, код понятнее.

    На C++ же приходится делать много дополнительной работы, все эти выделения памяти, указатели, и т.п. утилитарные вещи, которые нужны помимо основного алгоритма.

    Конечно C++ быстрее, но сейчас глядя на топы игр - понимаешь что это не актуально, любую игру из топов можно переписать на шарпе.
    Ответ написан
    Комментировать
  • C++ или C#, с чего начать изучение с позиции фрилансера?

    С позиции фрилансера больше востребованы Java и PHP.
    Хотите писать под винду и .Net - C#. Хотите кроссплатформенности - С++. Не знаете с чего начать - начните с С.
    Ответ написан
    Комментировать
  • Как сделать авторизацию в Django только по логину (без пароля)?

    MAKAPOH
    @MAKAPOH
    многостаночник
    Думаю что да. Напишите свой authentication-backend и добавьте его в AUTHENTICATION_BACKENDS в settings.py. Ещё наверно надо будет форму входа поднастроить. Вам надо и в админку входить только по логину ?
    Ответ написан
  • Проработка цели-Профессиональный Web-программист

    1. Подтягивать английский. Без него туго приходится.
    2. На том же хабре часто мелькают codeacademy, coursera и прочие курсы. Почему бы с них не начать?
    3. Ходить по собеседованиям, где теоретически сможешь пройти. Примут\не примут - все равно, нужно найти пробелы в знаниях и их исправлять.

    Выполнять до получения работы.
    Ответ написан
    Комментировать
  • Почему не работает apache в локальной сети?

    Flaker
    @Flaker
    Самый просто вариант для Windows использовать "Open Server".
    Это тоже WAMP, но в отличии от denwer им действительно можно пользоваться.
    Ответ написан
    Комментировать
  • Какие могут быть практические рекомендации по переезду разработчика на постоянную работу из региона в Москву?

    @OneArt
    Senior PHP developer
    делаем резюме, размещаем на сайтах типа hh / job.ru
    Посылаем резюме по разным вакансиям
    Смотрим как реагируют, если активно и зовут на собеседования, значит все гуд
    Покупаем билет, летим/едем в Москву.
    Поселяемся лучше в хостеле для начала, или если уверенность и финансы есть, сразу арендуем квартиру, но лучше все таки дождаться работы, тогда не придется 2 часа ездить в офис
    Устраиваемся, работаем живем пару лет, понимаем насколько Москва ужасна, переходим на фриланс уезжаем, радуемся жизни)

    ЗЫ основано на личном опыте
    Ответ написан
    6 комментариев
  • Как на CodeIgniter реализовать ограничение прав доступа?

    Proxmiff
    @Proxmiff
    Зачем прописывать один и тот же код в конструкторе каждого контроллера? Сделайте базовый админский контроллер, проверьте права в конструкторе и унаследуйтесь от этого контроллера :)
    Ответ написан
    Комментировать
  • Android: Qt vs Java. Что лучше использовать?

    @dplsoft
    Посмею оспорить ход рассуждений lorus ( Android: Qt vs Java. Что лучше использовать? ).
    Итог у нас почти один, но как в математике - когда ход рассуждений ошибочен - даже если ответ верен - то задача не решена. Возможно во много субъективно, но выскажусь, на правах личного мнения человека, который любит и писал и на Qt, и на Android с его "родным" Java тоже.
    На Qt для Android не писал, потому что на момент начала последнего проекта технология была сырая.

    И так: Не агитка за Qt но несколько слов в защиту Qt.

    Забегая вперед скажу: топикстартеру - если есть небольшой опыт разработки под Андроид, вы не работали ранее с Qt, и вам не важна переносимость исходного кода между всем и вся - продолжайте осваивать Android SDK ( Java ) .
    По крайней мере, сейчас.
    Хорошее знание хотя бы одного инструмента, лучше чем посредственное знание двух. ;)
    C Qt под Андроид потом разберетесь. Да и "пообкатаннее" оно будет.


    1. Qt - это всё-таки C++. Разрабатывать на нём существенно сложнее, чем на Java. То есть дольше и с большим количеством ошибок.

    Надо отличать "просто С++" и С++\Qt. В первую очередь, Qt - это фактически диалект языка С++. Например в объявлении Qt-класса появляются дополнительные секции signal и slots, а в процессе сборки существует фаза мета-компиляции, которая делает C++ код под вашу платформу. Не удивлюсь, если для андроида генерируется сместь Java и C++ кода которая потом скармливается Android NDK.

    Во вторых, Qt - это _самодостаточный_ фреймворк. Никаких STL или "чего-что-ещё что представляют себе в комплекте с C++" типичные сторонние разработчики.
    Многих проблем, которые приводят к сложности разработки "на простом C++" в "С++\Qt" просто нет "by design".

    Например в Qt заложен замечательный механизм предотвращения от выхватывания "null-poiunter" - "сигнал-слоты". Это в разы упрощает и делает надежнее работу как с GUI, так и с например, объектами, работающими в разных потоках. В Qt это все сделать разы проще, чем городить аналогичные стандартные механизмы на Java. Я не говорю в итоге оно будет эффективнее - тут надо выяснять и можно поспорить - но вот то, что в Qt многие вопросы работы с потоками и межпоточным взаимодействием продуманы лучше а механизмы удобнее - на мой вгляд это факт.
    (Хотя вот такого классного механизма аки runnable, в Qt нет. Но ждем 11-го стандарта С++.)

    В третьих - "С++\Qt" - это хорошо продуманный фреймворк едва-ли не с лучшим дизайном классов, продуманными методлами, единым стилем решения проблем.

    Как человек писавший на Qt 4.0-4.6 и сейчас закончивший первывый коммерческий проект для Android - могу выставить в сторону Java много минусов (в сравнении с Qt4/Qt5.) Просто потому, что Java - как в первую очередь коммерческая технология, был вынужден набирать нелогичности ради совместимости с предыдущими версиями - едва-ли не из первых версий Java. Посомтрите вопросы к сертификации - много вопросов, которые когда начинаешь разбирать "почему так" - уходят корнями в далекое темное прошлое развития Java. И в итоге - современная Java - это часто нелогичное, лоскутное одеяло, где в разных классах для решения одной и той-же задачи применяется если не разный подход и стиль, то как минимум разные имена методов. Ну вот зачем это?)))

    Да Java детально описан, и в технически прогнозируем - но его надо зубрить, тупо зубрить все исключения и проблемы наследования логики первых версий, и зубрить где используется put(), а где add()....
    ... а Qt-можно _понять_ и не зубрить, понять и только изредка заглядывать в документацию. И в итоге писать на нем - легче.

    К слову: дизайн классов гуглековских классов - хотя и очень-очень-оченьсвоеобразен и местами диковенен, но он, имхо, достаточно "строен" и в общей совокупности, не страдает такой уж сильной лоскутностью логики, какая имеется в стандартных классах Java. С какого-то момента ты понимаешь "как думали в гугле" и все становится несколько проще.

    Ещё к слову про миф "на Java писать проще чем на C++"(если сравнивается Java под DalvikVM и C++\Qt5):
    Не забывайте - DalvikVM - это вам не JavaVM.
    В DalvikVM вы легко отхватите "null-pointer-exception" если вы вдруг наивно думаете, что коли у вас есть в локальной переменной ссылка на фрагмент, активити или вью - то машина не уничтожит объект "когда ей вздумается", а у вас ваша переменная не об-null-ится.

    На понимание того, какие привычки десктопного написания и дизайна приложений нельзя переносить во фреймворки Android SDK и на перестройку собственного мышления - у вас уйдет несколько месяцев. А вы _начнете_ это понимать и отхватывать такие проблемы - как только начнете писать что-то бОольшее, чем набор разрозненных активити да пары фрагментов из учебных курсов.
    И в итоге - первый ваш серьезный проект на Андроиде - может влететь вам в хорошие переработки.
    Например, в том числе и потому что нет в Android SDK v17 жизненного цикла для класса Application. Нет механизмов для созранения состояния singleton-окружения и тд.и тп.

    А когда вы пишете на Qt - у вас гарантирована поддержка единых механизмов для всех платформ.
    Вам не надо перекраивать мозг, выработанные решения и отлаженные и проверенные паттерны.
    В итоге - писать на Qt - может статься и будет быстрее. В ряде случаев.
    Но из Qt - может быть сложно поиметь доступ к сугубо-андроидным сервисам типа поставщика данных.

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

    2. Инструментарий разработки для C++ однозначно хуже такового для Java в силу, опять-таки, особенностей языка.

    Простите, но тоже малообоснованное утверждение. См пункт 1.

    Кроме того, отмечу:
    Qt-шный инструментарий позволяет вам получать одинаковое поведение на всех поддерживаемых платформах. Включая поведение GUI, Форм и одинаковую для всех систем архитектуру приложения. В идеале - с Qt - вы можете писать под Андроид так, как будто вы пишете под десктоп - не меняя архитектуру и структуру приложения.

    А когда вы пишете под Android на Java - вы всегда пишете кусок кода работающий в колнтексте DalvikVM и должны жить по предусмотренным данной машиной паттернам и сценариям, причем многие аспекты того "как это работает" - явно мало где прописаны. И если вдруг вы отсутпаете от стандартных шаблонов фреймворка Dalvik-машины - вы рискуете отгрести непонятные, трудно отловимые косяки, причем _вне_ вашего контроля, которые вы не можете корректно перехватить и обработать. Кто не знает - попробуйте уничтожить ViewGroup, id которого вы использовали как контейнер для размещения внутри него фрагмента. Как только вы делаете FragmentTransaction.commit() - вы ставите машине задачу, которую она будет выполнять "когда-то позже", вне вашего контроля, и не соизволит позволить вам корректно обработать исключение. Вплоть до возникновения ситуации, когда фрагмент пытается быть добавленным в Activity который уже отработал стандартные процедуры по Activity.finush(). Ладно бы оно выкинуло код ошибки куда, и тихо проигнорило - но это же Java - она выкинет исключение. А обернуть это дело в try...catch - вы не сможете - это не ваш кусок кода. Максимум что вы сможете - это "поймать перед смертью" Thread.UncaughtExceptionHandler. И все.
    (если я не прав - поправляйте меня, я же тоже не инженер гугля)

    3. Java - родная платформа для Android. Отсюда потенциальные проблемы с совместимостью у Qt.

    Вот зачем вы занимаетесь запугиванием?
    Android NDK (для разработки на С++) такой же родной как как и Android SDK (для разработки на Java).

    И с совместимостью у Qt с платформой Android проблем не больше, чем у любого другого приложения, которое использует вставки C++ кода и разработано с использованием стандартного Android NDK.

    --------------------------------------------
    Резюмируя: автору надо просто взвесить что зачем и как он собирается использовать.
    Если автору нужно одинаковое поведение на различных платформах - включая огрызочные поделия, Linux, разные Windows RT недопланшеты - то выбор ознозначен - курите Qt. Это возхитительнейший, ясный, хорошо продуманный и максимально логичный фреймворк, который не побоялись пересоздать с нуля ради устранения накопленных сложностей (вспоминайте переход с Qt3 на Qt4) Лично я приходил в восторг, когда работал с ним (2005-2009 гг)

    Но - в части Андроидного приклада : подозреваю, могут быть "технические риски" с использованием каких-либо особых "мобильных кусков" типа "работа со звонками, "работа с контактами", "работа с почтой" или "поставщиками контента", и пр.
    Я отошел от мира Qt когда Qt был 4.8 и я не искал там классы которые этим занимаются. Думаю что-то потомки троллей должны были создать в 5.2, но лучше проверить.
    В крайнем случае - может потребоваться стыковка с джава-объектами, и тут вам потребуется изучать Android NDK, и возможно даже писать немного оберточного кода на Java.

    Если же вам _нужна_ обязательная работа с описанными выше функциями, а на переносимость исполняемого кода - наплевать, или же у вас _уже_ есть опыт разработки с Android SDK - то конечно писать лучше на Java.

    Но в этом случае бутьте готовы к тому, что это не JavaVM, и сохранности ссылок _для_ряда_классов_ вам никто не обещает, а т.к. Java не предполагает наличия деструктора - вы _будете_ иметь определенные архитектурные сложности при построении сложных приложений.
    Например то, что в десктоп-приложении вы решили бы "простым" "синглтон-объектом" с простой функциональностью типа записал-прочитал из файла - тут вам _придется_ решать путем построения "поставщика контента" и т.п. - что значительно повышает "порог входа" для тех кто погруждается в разработку для Android.

    Но - надо отдать должное инженерам гугля - у них _были_ весомые основания поступать итак, и они максимально вас обезопасили от попадания в многие проблемы - если, конечно, вы используете фреймворк именно так, как это предполагается. И сделали многие механизмы достаточно элегантными, и приятными в использовании. Дизайн гуглековских классов мне в большей части нравится. В общем не забывайте понимать почему в примерах делается именно так как делается, а не иначе.
    Ответ написан
    5 комментариев