- Разработка для Google AppEngine: с самого начала
- Что такое Google AppEngine?
- Особенности разработки под GAE
- Создаем GAE-приложение
- Итого
- Как не платить за Java хостинг или быстрый старт с Google App Engine
- Huawei Mobile App Engine: Runs Android apps on PC, supports direct APK installation
- Huawei Mobile App Engine:
- You may like
- China Mobile and Huawei to launch China’s first 5G indoor positioning trial commercial project
Разработка для Google AppEngine: с самого начала
Недавно я задал вопрос — было бы интересно хабралюдям почитать о том, как писать под Google AppEngine? Хабралюди сказали что да, интересно — ну я и решил начать. В этой статье мы рассмотрим следующие вопросы:
- Ультра-краткое введение в Google AppEngine (GAE), что это такое и с чем его едят
- Возможности и ограничения GAE
- Супер-краткий обзор архитектуры GAE-приложения
- Разработка минимального приложения с аутентификацией
- Разработка более сложного, реального приложения на основе MyTwiLinks
Начнем с самого начала, с самого простого — совсем для нубов (каковым я и являлся, когда начал разбираться с GAE), постепенно продвигаясь к более сложным концепциям, заканчивая грязными хаками на тему «как быть, если нельзя, но очень надо» (почти наверняка не успеем в рамках этого поста, но доберемся обязательно).
Что такое Google AppEngine?
Если верить официальныму Getting Started, GAE — это инфраструктура, которая позволяет выполнять ваши веб-приложения на серверах Google. GAE решает очень многие стандартные задачи веб-разработки, такие как:
- Организация хранилища данных и поиска к ним — не совсем SQL, но похоже.
- Возможность абсолютно прозрачного расширения в случае увеличения нагрузки — правильно разработанное приложение должно масштабироваться вообще без какого-то участия со стороны пользователя
- Авторизация пользователей через Google Authentication — задача решается в две строчки ровно.
- Управление очередями задач и старт задач по расписанию.
GAE позволяет использовать два языка — Python и Java. В этой статье мы сосредоточимся на Python, как более простом и прозрачным для GAE.
Особенности разработки под GAE
Есть несколько важных особенностей, которые нужно учитывать — они отличают среду GAE от других веб-фреймворков (строго говоря, GAE фреймворком и не является — это целая инфраструктура).
- До других компьютеров в сети можно достучаться только и исключительно по HTTP(s). Верно и обратное — приложения работающие на GAE доступны только по HTTP(s) и только по стандартным портам.
- Нет write-доступа к файловой системе. Максимум, что может делать приложение — это читать файлы, которые были загружены вместе с самим приложением. Для организации хранения данных следует использовать либо GAE Datastore (про это потом), либо memcache.
- Есть всего три сценария работы приложения:
- Ответ на HTTP(s) запрос, в частном случае — запрос пользователя
- Запуск задач по расписанию (cron)
- Очередь задач.
Важно отметить, что два последних типа являются под-типами первого — любая задача запускается как HTTP запрос по определенному адресу, разница лишь в том, кто его запускает — пользователь, менеджер очереди задач или cron. Длительность работы одной задачи не должна превышать 30 секунд — тоже немаловажное ограничение, и с ним приходится жить.
Вышенаписанное — ультра-краткий курс очень молодого бойца GAE, дальше мы ринемся в бой и там, по ходу, разберемся.
Создаем GAE-приложение
Чтобы максимально упростить жизнь простых разработчиков, компания Google выпустила небольшое приложение, которое называется Google AppEngine Launcher — оно позволяет создавать приложения локально и запускать их на локальной машине пользователя. Если вы используете Мак (так же как и очень многие google’ры) то для вас есть красивый GUI, для Linux’а есть набор консольных скриптов, простых до крайности.
Изначально я обещал рассказать про то, как был сделан MyTwiLinks, но потом понял, что без базовых знаний это будет довольно сложно. Поэтому начнем с чего-нибудь простого, например…
Приложение создано. Теперь мы можем сделать, в общем, две вещи: запустить его и посмотреть что же там было создано? Пожалуй, запустим. Нажимаем кнопочку «Run», и когда станет доступной — Browse:
Ничего, в общем, удивительного — все как и ожидалось. Теперь же пришла пора посмотреть, как это все устроено. Для удобства я рекомендую в настройках GAE Launcher указать ваш редактор:
Я рекомендую TextMate, как наиболее продвинутый и расширяемый, в вашем случае это может быть что-то другое. Нажимаем кнопочку Edit (выбрав наше созданное приложение) и получаем…
Минимальный GAE проект — три файла. Прямо сейчас нас интересуют даже два — app.yaml и main.py , так как index.yaml генерируется автоматически. Начнем с app.yaml :
Что вообще этот файл говорит?
- application — как не трудно догадаться, это — название приложения, именно так оно и будет известно GAE (и именно это имя будет использоваться для загрузки на сервера Google)
- version — GAE поддерживает очень гибкий механизм работы с версиями; одновременно может быть загружено (и работать!) значительное количество версий кода (при этом только одна из них является default)
- api_version — на данный момент — константа, должна быть “1”
- handlers — и вот тут-то и начинается все интересное. В этой секции мы перечисляем все URL, на которые приложение должно “отзываться” и скрипты, которые будут обрабатывать эти запросы. Url .* — “все остальное”, он всегда должен идти последним в списке.
Попробуем реализовать предельно простое приложение — для всех пользователей, которые будут заходить на страничку оно будет предлагать авторизоваться через Google, и записывать всех, кто был авторизован; администратору же оно будет позволять просматривать список пользователей, которые туда заходили. Начнем с авторизации.
Хорошо, это не две строчки, которые я обещал — но согласитесь, большая часть была все же потрачена на «красивости» вроде общения с пользователем. Два выражения, которые действительно имеют значение, это user = users.get_current_user() и users.create_login_url(«/») . Первая проверяет, есть ли у нас активная пользовательская сессия. Вторая же создает URL который приведет пользователя на форму авторизации, и в случае успеха — обратно на приложение (единственный параметр функции create_login_url ). И что же у нас получилось?
Выводим форму запроса:
Форма авторизации — генерируется GAE автоматически; если приложение запускается на серверах Google, то вместо этого вы увидете стандартную форму «Sign in with your Google Account»:
И, наконец, результат:
Мы написали простейшее приложение с авторизацией, причем нам не потребовалось писать практически ничего. В этом и заключается одно из преимуществ GAE — для 99% приложений той инфраструктуры, которую он предоставляет, должно хватить целиком и полностью.
Итого
Вот вам первая статья. Мои изначальные прогнозы, что все можно будет уместить легко и просто в один пост, оказались несколько оптимистичными — и так уже получилось довольно много, а мы только коснулись собственно написания кода. В следующей статье (которая, как я думаю, будет написана скоро — если хабралюдям будет это интересно) мы закончим наше приложение, разберемся, как хранить данные и как достучаться до них, и загрузим его на сервера Google. Созданный проект доступен здесь — будем дорабатывать его по ходу.
Список рекомендуемой литературы будет состоять из одной ссылки: App Engine Python Overview — прочитайте, посмотрите, разберитесь. Мне этой документации хватило, хотя какое-то время это и заняло. Будут вопросы — спрашивайте, и, конечно, жду ваших отзывов и пожеланий к продолжению.
Источник
Как не платить за Java хостинг или быстрый старт с Google App Engine
Все мы хоть когда-нибудь писали приложения, облегчающие жизнь. Не на заказ, а просто для себя. Записные книжки, программки учета финансов, набор карточек для изучения иностранного языка — да мало ли в жизни хороших идей? И вот было бы здорово, иметь доступ к этой программке не только со своего компьютера, но и с рабочего! А то и поделиться с друзьями своей замечательной программкой!
Все отлично, если вы, скажем, PHP программист — дешевых и даже бесплатных хостингов море.
А что если вы программист Java? Готовые Tomcat хостинги недешевы, а если у вас еще и несколько таких программок, то желание поделиться ими с друзьями выльется в копеечку.
Google нам поможет.
Для следующего рецепта нам понадобится:
- IntelliJ Idea — 1 шт (можно использовать и Eclipse, но на работе наша команда работает с Idea, и мне Idea как-то уже привычнее)
- Аккаунт в Google — скажем, ваша gmail почта
- Доступ к интернету — для скачивания Cloud Code плагина и загрузки вашего приложения на облако
- Имя, адрес, телефон, номер кредитной или дебетовой карточки. Но не волнуйтесь, ни копейки с этой карточки списано не будет
- Примерно 15 минут времени
Запускаем Idea, выбираем Ctrl-Alt-S > Plugins. Ищем Cloud Code by Google Cloud
Устанавливаем, переоткрываем Idea
Если проект у вас новый, то просто при создании проекта выбираем поддержку Google App Engine Standard (почему стандард? Потому что есть еще flexible, но его бесплатного не бывает, и в целом он дороже).
Если же программка у вас уже написана, то идем в Tools > Cloud Code > App Engine > Add App Engine support > Google App Engine Standard.
Далее мы хотели бы протестировать приложение на нашем компьютере.
Для этого нужно скачать и установить Google Cloud SDK. Вообще-то Idea может сама управлять Google Cloud SDK — скачивать и устанавливать последнюю версию, прописывать все системные переменные, и т.д. Для этого в Settings > Other Settings > Cloud Code > Cloud SDK нужно выбрать «Allow the plugin to manage and install the Cloud SDK». Но мой выбор был скачать и установить вручную.
Затем нам нужно выбрать, что именно будет заливаться на облако (или отлаживаться локально). То есть создать артифакт. Идем Ctrl-Alt-Shift-S > Artifacts > + > Web Application Exploded и выбираем какие именно модули пойдут в наше приложение
Продолжаем с настройкой отладки на localhost.
Добавляем новую Run-Debug Configuration. Шаблон выбираем Google App Engine Standard Local Server. И единственную настройку, которую нужно поменять, это Artifact to deploy — выбрать артифакт, созданный на предыдущем шаге. Если выпадающий список пустой, то либо вы забыли создать артифакт для вашего приложения, либо его тип не Web Application Exploded, а какой-то другой. Еще можно поменять порт. Если у вас другие приложения крутятся на 8080, то cloud приложения можно отлаживать, скажем, на 8888.
Сохраняем, запускаем. Приложение появится в вашем браузере по ссылке localhost:8080 (или 8888). Если программа наткнется на breakpoint, то Idea сама активизируется и вылезет поверх всех остальных окон.
Кстати, breakpoint-ы можно ставить не только на ваших Java классах (сервлетах и прочей серверной части), но и на jsp страницах. Тогда отладка остановится каждый раз, когда браузер запрашивает эту страницу
Отлично! Локально все работает, пора заливать на сервер!
Заходим в наш Google аккаунт, и переходим на Google Cloud Console. Сверху окна появится предложение активировать триал и получить $300 для использования различных облачных сервисов. Эти $300 действительны ровно год, если за год вы их не израсходовали (а скорее всего, не израсходуете. Для примера, приложение с 60 постоянными активными пользователями, каждый из которых имеет отдельный namespace в DataStore с десятком таблиц в каждом — все это тратит примерно $4 в месяц). Так вот, если вы не используете эти $300, то через год они исчезнут.
При активации триала, Google попросит о вас все данные — имя, адрес, телефон и номер кредитной или дебетовой карточки. Причем в информационном окошке они заверяют, что ни копейки с карточки не снимут, если только вы сами вручную не подпишетесь на платный аккаунт. Объясняют это проверкой, что вы не робот. На самом деле это сделано, чтобы вам легче было потом подписаться на платные услуги. Если вы решили купить услугу, а тут Google просит ввести номер кредитной карты, вы три раза подумаете: «А нужна ли мне эта услуга?». А если данные кредитной карты уже есть, то и покупка проходит легче — нажал кнопку, подтвердил — и вот, ты уже подписан!
Но это все лирика. Далее нам нужно создать GCP проект. Проект — это не обязательно отдельная программка. Вы можете раздавать сотни программок с одного и того же проекта. Проект в GCP — это скорее направление, сфера работы. На картинке выше проект называется API Project
Возвращаемся в Idea. Снова идем в Run/Debug Configurations, но на этот раз шаблон выбираем Google App Engine Deployment. Здесь настроек вообще по-минимуму. Нужно выбрать только артифакт в строке Deployment и созданный на предыдущем шаге GCP проект. Если вы делаете это в первый раз, то Idea пропросит вас зайти в ваш Google аккаунт.
Казалось бы все? А вот и нет. Дело в том, что App Engine ассоциирует ваше приложение с виртуальным сервером. И этот сервер должен находиться на том или ином физическом сервере Google — так называемой зоне. Всего у Google 20 регионов и 61 зона. Обычно лучше всего выбирать зону, наиболее близкую к вашим клиентам — ссылки внутри зоны открываются гораздо быстрее, чем ссылки между зонами
После того, как все настроено, можно запускать заливку приложения на сервер. Формально, нам нужно бы еще создать файл app.yaml с параметрами для App Engine. По факту же плагин Cloud Tools облегчает нам эту задачу, и генерирует страндартный app.yaml автоматически.
Когда мы заливаем приложение на облако в первый раз, это может занять продолжительное время, ведь Idea загружает все нужные файлы на сервер. Впоследствии же она будет загружать только измененные файлы, и все будет годаздо быстрее.
Источник
Huawei Mobile App Engine: Runs Android apps on PC, supports direct APK installation
September 11, 2021
With the growing interest and strengthening footstep in the PC field, Huawei continues to unravel new technologies in the PC market. The upcoming Huawei Office Smart Launch Conference will boost this thinking with the introduction of new and interesting PCs.
Talking of new, there will be a fresh MateBook laptop series coming at the launch event. However, this time, they have special features and capabilities such as the Huawei Mobile App Engine.
Huawei Mobile App Engine:
Huawei has developed its own Mobile App Engine for pc devices that will help users to run Android apps directly on their computers. The apps used through these engine comes from AppGallery, users can operate these apps with keyboard and mouse to enjoy the view on a large display.
According to a teaser, Huawei will launch a new MateBook laptop that will be the first recipient of the Android app compatible prowess. This is quite an amazing feature and such functionality will further boost the combination of laptop and desktop. Blending these would make a perfect mixture of multi-OS user experience.
Recently, a Weibo tipster has shared the public beta of Huawei Mobile App Engine that has a file of around 1GB. There’s some more information on this software that you should know about.
This public beta version may have bugs, so we recommend you install it on your own preference.
Huawei App Engine supports Multi-window mode, you can run multiple Android apps at once on the same screen. The surprising element of this news includes the support of running and installing APK files directly from the file explorer. This is a factor that everyone wants to test with their own hands.
More information about the Huawei App Engine will drop at the Huawei Office Smart Product Launch event on September 13. We’ll keep you posted on this matter.
If you want to know more about the upcoming launch conference check out the article linked below.
WhatsApp changing Group Info layout, adding two contact buttons
New teaser has immersive All In One Huawei PC
Most of Deng Li’s smartphones are from the Huawei ecosystem and his first Huawei phone was Ascend Mate 2 (4G). As a tech enthusiast, he keeps exploring new technologies and inspects them closely. Apart from the technology world, he takes care of his garden.
You may like
EMUI 12 Tracker: Eligible Device, Features and Release Date
China Mobile and Huawei to launch China’s first 5G indoor positioning trial commercial project
Download Huawei Petal Speed App [3.6.0.300]
China Mobile and Huawei to launch China’s first 5G indoor positioning trial commercial project
December 5, 2021
A few days ago, Huawei and China have announced China’s first 5G indoor positioning trial commercial project successfully at Huawei’s Tuanbowa plant in China. This system is based on the “5G indoor positioning technology” and it can simultaneously meet the needs of 5G communication + precise positioning, and conduct the dual use of one network.
The previous report reveals that the latest Huawei and China mobile 5G project was implemented in Dongguan Huawei’s Tuanbowa plant, and 90% of the positioning results achieved precise positioning within a range of 1-3 meters, which will promote the improvement of plant logistics efficiency.
Huawei’s Tuanbowa 5G indoor positioning is a 4.9GHz 5G network deployment by China Mobile Guangdong and Huawei. The integrated positioning platform provided by China Mobile Shanghai Industrial Research Institute is the first commercial trial to achieve an indoor accurate positioning project.
Previously, Suzhou Mobile and Huawei conducted a 5G indoor positioning capability verification in the Suzhou Metro. With the hidden deployment of the base station pRRU, it achieved a positioning accuracy of 3 to 5 meters in 90% of the subway platform and hall area. It is a 5G indoor positioning function and the first live network verification in the world.
Источник