Очень удобно всегда знать какой конкретно версии та или иная сборка проекта. Для этого обычно вводят номер версии, состоящий из нескольких цифр. Я являюсь сторонником структуры состоящей из 4 цифр, вида:
Все вместе это и формирует полное именование версии (Major.Minor.Pathch.Build):
Некоторые используют в качестве build уникальное числовое значение, которое увеличивается каждый раз, например, при ночной сборке. Я считаю, что никакого смысла в этом нет – гораздо удобнее привязать данный номер к ревизии в репозитории. Я использую Subversion и CMake, поэтому продемонстрирую как можно автоматизировать проставлении версии билда с этими инструментами.
Первое – необходимо добавить заголовочный файл в проект (например, version.h):
#include #include namespace Version { const std:: string & AsText() ; boost:: uint64_t AsNumber() ; } |
Здесь находится простой интерфейс, через который из программы можно получить номер полной версии в текстовом виде или в виде уникального целочисленного идентификатора.
Теперь приведу содержимое version.cpp:
#include
#include "../version.h"
namespace
{
const
boost::
uint8_t
MAJOR =
4
;
const
boost::
uint16_t
MINOR =
6
;
const
boost::
uint16_t
PATCH =
12
;
const
boost::
uint32_t
BUILD =
589
;
// Это значение будет изменено автоматически
}
const
std::
string
&
Version::
AsText
()
{
static
const
std::
string
text =
boost::
str
(boost::
format
("%1%.%2%.%3%.%4%"
)
%
static_cast
<
unsigned
>
(MAJOR)
%
MINOR %
PATCH %
BUILD)
;
return
text;
}
boost::
uint64_t
Version::
AsNumber
()
{
BOOST_STATIC_ASSERT(BUILD <
0xFFFFFF
)
;
using
namespace
boost;
const
size_t
size =
sizeof
(uint64_t
)
;
static
const
boost::
uint64_t
number =
(static_cast
<
uint64_t
>
(MAJOR)
(MINOR)
(PATCH)
Приватный просмотр (или Private Browsing) -> OK); lastchoice x
:
Решение же обнаружилось достаточно простое - оказывается Гугл считает свой же Сборщик Почты - "Ненадежным приложением" - и стоило в настройка аккаунта с которого надо собирать почту включить
настройку "Доступ к аккаунту" ненадежных приложений (https://support.google.com/accounts/answer/6010255) - и о чудо! - все заработало.
Viacheslav Shalin
:
Вчера разбирался с этой проблемой. Google усилила безопасность аккаунтов. Теперь самые небольшие изменения в локации входов в аккаунт блокируются. Проверьте на обоих аккаунтах, с которых собираете почту, в разделе активности, что нет запрета для каких-нибудь входов с посторонних устройств. У меня сборщик Google определялся следующим образом. После разблокировки начал нормально работать. Надеемся, что эти советы помогут Вам решить Вашу проблему. Если же проблему решить не удалось, пожалуйста, для Вашего вопроса. Спасибо! П ривет, ребята надеются дела идут хорошо, сегодня мы будем объяснять очень полезный учебник вместе с вами. На сегодняшнем уроке мы создадим простую контактную форму, используя angularJS и php. Контактная форма представляет собой стандартную веб-страницу, которая доступна на каждом сайте. Это позволяет посетителям сайта связаться с владельцами сайтов или поставщиками услуг, которые отвечают за поддержание этого веб-сайта. Так что мы думаем, почему бы не создать простую контактную форму с помощью Angularjs и php, чтобы получать сообщения от веб-сайтов, читателей и/или пользователей. Мы используем Angularjs для переднего плана и php на стороне сервера. Мы будем писать код на php, который принимает данные из Angular формы и отправляет по электронной почте администратору сайта. Создайте папку с именем “contact-form” в вашем веб-каталоге приложений и создайте образец оформления страницы HTML – index.html. Теперь скопируйте и вставьте, код ниже в файл index.html. Демо - Простая контактная форма с помощью Angularjs и php Контактная форма с помощью angularjs и PHP Ваше имя Почта Сообщение Отправить Php код для отправки электронной почтыСоздайте страницу contact.php и скопируйте вставить код, приведенный ниже. Ниже приведен php-код, который будет извлекать данные из angular формы и отправлять по электронной почте, по указанному адресу электронной почты. < ?php $post_data = file_get_contents("php://input"); $data = json_decode($post_data); //Just to display the form values echo "Name: " . $data->name; echo "Email: " . $data->email; echo "Message: " . $data->message; // sned an email $to = $data->email; $subject = "Тестовое письмо сайт для тестирования angularjs контактной формы"; $message = $data->message; $headers = "From: " . $data->name .. "\r\n" .. "\r\n" . "X-Mailer: PHP/" . phpversion(); //функция PHP mail для отправки электронной почты на адрес электронной почты mail($to, $subject, $message, $headers); ?> |