Deprecated:  Creation of dynamic property wpdb::$categories is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/wp-db.php on line 668
Deprecated:  Creation of dynamic property wpdb::$post2cat is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/wp-db.php on line 668
Deprecated:  Creation of dynamic property wpdb::$link2cat is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/wp-db.php on line 668
Deprecated:  Return type of WP_Theme::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-theme.php on line 554
Deprecated:  Return type of WP_Theme::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-theme.php on line 595
Deprecated:  Return type of WP_Theme::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-theme.php on line 535
Deprecated:  Return type of WP_Theme::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-theme.php on line 544
Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /home/inovacao/public_html/yeapf.com/wp/wp-includes/comment-template.php on line 1745
Deprecated:  wp_getimagesize(): Implicitly marking parameter $image_info as nullable is deprecated, the explicit nullable type must be used instead in /home/inovacao/public_html/yeapf.com/wp/wp-includes/media.php on line 5072
Deprecated:  Return type of WP_REST_Request::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/inovacao/public_html/yeapf.com/wp/wp-includes/rest-api/class-wp-rest-request.php on line 960
Deprecated:  Return type of WP_REST_Request::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/inovacao/public_html/yeapf.com/wp/wp-includes/rest-api/class-wp-rest-request.php on line 980
Deprecated:  Return type of WP_REST_Request::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/inovacao/public_html/yeapf.com/wp/wp-includes/rest-api/class-wp-rest-request.php on line 992
Deprecated:  Return type of WP_REST_Request::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/inovacao/public_html/yeapf.com/wp/wp-includes/rest-api/class-wp-rest-request.php on line 1003
Deprecated:  Return type of WP_Block_List::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-block-list.php on line 151
Deprecated:  Return type of WP_Block_List::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-block-list.php on line 175
Deprecated:  Return type of WP_Block_List::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-block-list.php on line 164
Deprecated:  Return type of WP_Block_List::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-block-list.php on line 186
Deprecated:  Return type of WP_Block_List::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-block-list.php on line 138
Deprecated:  Return type of WP_Block_List::offsetExists($index) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-block-list.php on line 75
Deprecated:  Return type of WP_Block_List::offsetGet($index) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-block-list.php on line 89
Deprecated:  Return type of WP_Block_List::offsetSet($index, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-block-list.php on line 110
Deprecated:  Return type of WP_Block_List::offsetUnset($index) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-block-list.php on line 127
Deprecated:  Return type of WP_Block_List::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-block-list.php on line 199
Deprecated:  Jetpack::setup_xmlrpc_handlers(): Implicitly marking parameter $xmlrpc_server as nullable is deprecated, the explicit nullable type must be used instead in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/class.jetpack.php on line 934
Deprecated:  Automattic\Jetpack\Connection\Manager::setup_xmlrpc_handlers(): Implicitly marking parameter $xmlrpc_server as nullable is deprecated, the explicit nullable type must be used instead in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/vendor/automattic/jetpack-connection/src/class-manager.php on line 123
Deprecated:  Creation of dynamic property Automattic\Jetpack\Connection\Manager::$error_handler is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/vendor/automattic/jetpack-connection/src/class-manager.php on line 93
Deprecated:  Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Instagram_Gallery::$is_wpcom is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/class-wpcom-rest-api-v2-endpoint-instagram-gallery.php on line 23
Deprecated:  Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Mailchimp::$wpcom_is_wpcom_only_endpoint is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/class-wpcom-rest-api-v2-endpoint-mailchimp.php on line 17
Deprecated:  Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Tweetstorm_Gather::$wpcom_is_wpcom_only_endpoint is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/class-wpcom-rest-api-v2-endpoint-tweetstorm-gather.php on line 21
Deprecated:  Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Tweetstorm_Gather::$is_wpcom is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/class-wpcom-rest-api-v2-endpoint-tweetstorm-gather.php on line 22
Deprecated:  Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Gutenberg_Available_Extensions::$wpcom_is_site_specific_endpoint is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/gutenberg-available-extensions.php on line 20
Deprecated:  Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Memberships::$wpcom_is_wpcom_only_endpoint is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/memberships.php on line 23
Deprecated:  Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Memberships::$wpcom_is_site_specific_endpoint is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/memberships.php on line 24
Deprecated:  Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Subscribers::$wpcom_is_wpcom_only_endpoint is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/subscribers.php on line 15
Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/extensions/blocks/podcast-player/podcast-player.php on line 160
Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/extensions/blocks/podcast-player/podcast-player.php on line 160
Deprecated:  Creation of dynamic property POMO_FileReader::$is_overloaded is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/pomo/streams.php on line 26
Deprecated:  Creation of dynamic property POMO_FileReader::$_pos is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/pomo/streams.php on line 29
Deprecated:  Creation of dynamic property POMO_FileReader::$_f is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/pomo/streams.php on line 160
Deprecated:  Creation of dynamic property MO::$_gettext_select_plural_form is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/pomo/translations.php on line 293
Deprecated:  Creation of dynamic property Automattic\Jetpack\Sync\Queue::$random_int is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/vendor/automattic/jetpack-sync/src/class-queue.php on line 38
Deprecated:  Creation of dynamic property Automattic\Jetpack\Sync\Queue::$random_int is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/vendor/automattic/jetpack-sync/src/class-queue.php on line 38
Deprecated:  Creation of dynamic property Publicize_UI::$in_jetpack is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/modules/publicize.php on line 53
Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/modules/widgets/migrate-to-core/image-widget.php on line 195
Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/modules/widgets/migrate-to-core/gallery-widget.php on line 56
Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/modules/calypsoify/class-jetpack-calypsoify.php on line 130
Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/modules/calypsoify/class-jetpack-calypsoify.php on line 131
Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/modules/calypsoify/class-jetpack-calypsoify.php on line 135
Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/modules/calypsoify/class-jetpack-calypsoify.php on line 136
Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/modules/calypsoify/class-jetpack-calypsoify.php on line 137
Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/modules/simple-payments/simple-payments.php on line 219
Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/modules/simple-payments/simple-payments.php on line 220
Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/modules/simple-payments/simple-payments.php on line 227
Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/modules/simple-payments/simple-payments.php on line 229
Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/modules/simple-payments/simple-payments.php on line 231
Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/modules/simple-payments/simple-payments.php on line 248
Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/modules/simple-payments/simple-payments.php on line 249
Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/modules/simple-payments/simple-payments.php on line 267
Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/modules/simple-payments/simple-payments.php on line 268
Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/modules/simple-payments/simple-payments.php on line 270
Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/modules/simple-payments/simple-payments.php on line 271
Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/modules/simple-payments/simple-payments.php on line 273
Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/modules/simple-payments/simple-payments.php on line 275
Deprecated:  Creation of dynamic property POMO_FileReader::$is_overloaded is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/pomo/streams.php on line 26
Deprecated:  Creation of dynamic property POMO_FileReader::$_pos is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/pomo/streams.php on line 29
Deprecated:  Creation of dynamic property POMO_FileReader::$_f is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/pomo/streams.php on line 160
Deprecated:  Creation of dynamic property MO::$_gettext_select_plural_form is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/pomo/translations.php on line 293
Deprecated:  Creation of dynamic property WPCOM_Widget_Goodreads::$shelves is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/modules/widgets/goodreads.php on line 33
Deprecated:  DateTime::__construct(): Passing null to parameter #1 ($datetime) of type string is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/script-loader.php on line 333
Deprecated:  Creation of dynamic property WP_Block_Type::$skip_inner_blocks is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-block-type.php on line 347
Deprecated:  Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-block-type.php on line 347
Deprecated:  Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-block-type.php on line 347
Deprecated:  Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-block-type.php on line 347
Deprecated:  Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-block-type.php on line 347
Deprecated:  Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-block-type.php on line 347
Deprecated:  Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-block-type.php on line 347
Deprecated:  Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-block-type.php on line 347
Deprecated:  Creation of dynamic property Jetpack_Shortcode_Unavailable::$shortcodes is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/modules/shortcodes/unavailable.php on line 19
Warning:  Cannot modify header information - headers already sent by (output started at /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-block-list.php:14) in /home/inovacao/public_html/yeapf.com/wp/wp-includes/rest-api/class-wp-rest-server.php on line 1673
Warning:  Cannot modify header information - headers already sent by (output started at /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-block-list.php:14) in /home/inovacao/public_html/yeapf.com/wp/wp-includes/rest-api/class-wp-rest-server.php on line 1673
Warning:  Cannot modify header information - headers already sent by (output started at /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-block-list.php:14) in /home/inovacao/public_html/yeapf.com/wp/wp-includes/rest-api/class-wp-rest-server.php on line 1673
Warning:  Cannot modify header information - headers already sent by (output started at /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-block-list.php:14) in /home/inovacao/public_html/yeapf.com/wp/wp-includes/rest-api/class-wp-rest-server.php on line 1673
Warning:  Cannot modify header information - headers already sent by (output started at /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-block-list.php:14) in /home/inovacao/public_html/yeapf.com/wp/wp-includes/rest-api/class-wp-rest-server.php on line 1673
Warning:  Cannot modify header information - headers already sent by (output started at /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-block-list.php:14) in /home/inovacao/public_html/yeapf.com/wp/wp-includes/rest-api/class-wp-rest-server.php on line 1673
Deprecated:  Calling get_class() without arguments is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-http.php on line 328
Deprecated:  Return type of Requests_Cookie_Jar::offsetExists($key) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/inovacao/public_html/yeapf.com/wp/wp-includes/Requests/Cookie/Jar.php on line 63
Deprecated:  Return type of Requests_Cookie_Jar::offsetGet($key) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/inovacao/public_html/yeapf.com/wp/wp-includes/Requests/Cookie/Jar.php on line 73
Deprecated:  Return type of Requests_Cookie_Jar::offsetSet($key, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/inovacao/public_html/yeapf.com/wp/wp-includes/Requests/Cookie/Jar.php on line 89
Deprecated:  Return type of Requests_Cookie_Jar::offsetUnset($key) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/inovacao/public_html/yeapf.com/wp/wp-includes/Requests/Cookie/Jar.php on line 102
Deprecated:  Return type of Requests_Cookie_Jar::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/inovacao/public_html/yeapf.com/wp/wp-includes/Requests/Cookie/Jar.php on line 111
Deprecated:  http_build_query(): Passing null to parameter #2 ($numeric_prefix) of type string is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/Requests/Transport/cURL.php on line 345
Deprecated:  Return type of Requests_Utility_CaseInsensitiveDictionary::offsetExists($key) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/inovacao/public_html/yeapf.com/wp/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 40
Deprecated:  Return type of Requests_Utility_CaseInsensitiveDictionary::offsetGet($key) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/inovacao/public_html/yeapf.com/wp/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 51
Deprecated:  Return type of Requests_Utility_CaseInsensitiveDictionary::offsetSet($key, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/inovacao/public_html/yeapf.com/wp/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 68
Deprecated:  Return type of Requests_Utility_CaseInsensitiveDictionary::offsetUnset($key) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/inovacao/public_html/yeapf.com/wp/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 82
Deprecated:  Return type of Requests_Utility_CaseInsensitiveDictionary::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/inovacao/public_html/yeapf.com/wp/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 91
Deprecated:  Requests_Cookie::parse_from_headers(): Implicitly marking parameter $origin as nullable is deprecated, the explicit nullable type must be used instead in /home/inovacao/public_html/yeapf.com/wp/wp-includes/Requests/Cookie.php on line 439
Deprecated:  ltrim(): Passing null to parameter #1 ($string) of type string is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/wp-db.php on line 3030
Deprecated:  ltrim(): Passing null to parameter #1 ($string) of type string is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/wp-db.php on line 3030
Deprecated:  ltrim(): Passing null to parameter #1 ($string) of type string is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/wp-db.php on line 3030
Deprecated:  Creation of dynamic property Jetpack_Carousel::$localize_strings is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/modules/carousel/jetpack-carousel.php on line 353
Deprecated:  preg_split(): Passing null to parameter #3 ($limit) of type int is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/_inc/lib/class.media-summary.php on line 420
Deprecated:  preg_split(): Passing null to parameter #3 ($limit) of type int is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/_inc/lib/class.media-summary.php on line 420
Deprecated:  preg_split(): Passing null to parameter #3 ($limit) of type int is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-content/plugins/jetpack/_inc/lib/class.media-summary.php on line 420
Deprecated:  ltrim(): Passing null to parameter #1 ($string) of type string is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/wp-db.php on line 3030
Warning:  Cannot modify header information - headers already sent by (output started at /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-block-list.php:14) in /home/inovacao/public_html/yeapf.com/wp/wp-includes/rest-api/class-wp-rest-server.php on line 1673
Warning:  Cannot modify header information - headers already sent by (output started at /home/inovacao/public_html/yeapf.com/wp/wp-includes/class-wp-block-list.php:14) in /home/inovacao/public_html/yeapf.com/wp/wp-includes/rest-api/class-wp-rest-server.php on line 1673
{"id":16,"date":"2014-01-19T09:10:00","date_gmt":"2014-01-19T09:10:00","guid":{"rendered":"http:\/\/inovacaosistemas.com.br\/wp\/?page_id=16"},"modified":"2014-03-05T12:12:02","modified_gmt":"2014-03-05T12:12:02","slug":"simplificando-o-desenvolvimento-webdesktopmobile-com-yeapf","status":"publish","type":"page","link":"http:\/\/www.yeapf.com\/wp\/?page_id=16","title":{"rendered":"Simplifique"},"content":{"rendered":"Simplificando o desenvolvimento web\/desktop\/mobile com YeAPF<\/h2>\n
H\u00e1 uma beleza intr\u00ednseca e quase objetiva nas coisas mais simples.\u00a0 Todavia, n\u00e3o devemos concluir que uma coisa simplificada \u00e9 uma coisa simples ou pior, que quem simplificou \u00e9 simplista.<\/p>\n
Simplificar, entendo, \u00e9 o passo mais nobre da abstra\u00e7\u00e3o em que uma coisa complexa e abstrata \u00e9 trazida para o outro em uma forma simples, limpa, acess\u00edvel, \u00fatil.\u00a0 De fato, um programador comum \u00e9 um simplificador, deve de ser um simplificador.\u00a0 Mas nunca um simplista.\u00a0 Ele deve se aprofundar em pensamentos alheios compreender processos que n\u00e3o lhe s\u00e3o pr\u00f3prios e desenvolver uma ferramenta que ajude na realiza\u00e7\u00e3o daquele trabalho.\u00a0 Nada mais nobre.\u00a0 Programador que \u00e9 programador deve ser invis\u00edvel e a m\u00e3e dele nunca ser nem lembrada.<\/p>\n
Eu n\u00e3o sou programador de aplicativos.\u00a0 Tenho amigos que programam aplicativos e os admiro de cora\u00e7\u00e3o.\u00a0 O meu foco \u00e9 programar para programadores, fazer com que a vida deles seja mais simples, bonita, sem ter que eles se andarem enredando com sutilezas sist\u00eamicas que o tirem do foco.<\/p>\n
Antecedentes<\/h2>\n
H\u00e1 alguns anos o desejo mais profundo de todo programador de aplicativos era usar o mesmo c\u00f3digo fonte para compilar seu aplicativo para v\u00e1rios sistemas operacionais. Seriam aplicativos multiplataforma com um \u00fanico c\u00f3digo fonte para dar manuten\u00e7\u00e3o e muitos clientes satisfeitos.<\/p>\n
Nuances \u00e0 parte a maior parte do p\u00fablico leigo n\u00e3o entende a natureza de um sistema operacional e as intrincadas interconex\u00f5es existentes, as exig\u00eancias que eles fazem sobre o aplicativo e as diversas op\u00e7\u00f5es que um e outro oferecem ao programador. Isso sem falar nos custos e tempos de desenvolvimento diferentes. Sem ir mais longe, h\u00e1 pouco tempo um programador me comentou que n\u00e3o entendia porque raz\u00e3o o compilador dele n\u00e3o funcionava em Linux se rodava t\u00e3o bem no seu Windows…\u00a0 Isso, para mim, s\u00f3 prova a necessidade de carreiras mais curtas para pessoas mais apaixonadas pela profiss\u00e3o.<\/p>\n
Toda essa realidade continua viva e gritante para os programadores de sistemas, suporte \u00e0 vida, compiladores, bancos de dados por citar alguns. Todavia, para o simples e comum programador de aplicativos a vida tem se simplificado grandemente com a massifica\u00e7\u00e3o do HTML5\/javascript. J\u00e1 \u00e9 poss\u00edvel escrever c\u00f3digo que rode tanto no dispositivo m\u00f3vel como no computador de mesa.<\/p>\n
Prop\u00f3sito<\/h2>\n
O YeAPF pretende justamente ajudar na constru\u00e7\u00e3o de aplicativos que sejam de simples manuten\u00e7\u00e3o e rodem em maior ou menor medida sobre Desktop e Mobile.\u00a0 Ele fornece uma forma homogeneizada de gerar e gerenciar eventos que podem ser tanto orientados aos dados como \u00e0 interface de usu\u00e1rios.<\/p>\n
Originalmente este esfor\u00e7o se baseava na plataforma cliente-servidor.\u00a0 Hoje, com a disponibilidade de plataformas cada vez menores e mais potentes, observamos que o modelo Desktop (em que interface de usu\u00e1rio, dados e l\u00f3gica) convivem numa ilha em certa forma tem se transplantado.\u00a0 Por\u00e9m, com a massifica\u00e7\u00e3o dos servi\u00e7os de dados sobre os dispositivos m\u00f3veis, entendemos que o que faz falta \u00e9 o modelo misto, em que a interface do usu\u00e1rio est\u00e1 no dispositivo, os dados est\u00e3o no servidor mas quando poss\u00edvel s\u00e3o cacheados no dispositivo e a l\u00f3gica, bom, essa esta espalhada: parte na hora da entrada, parte na hora de armazenar e outra parte no pr\u00f3prio banco de dados, disparando eventos para tudo quanto \u00e9 lado e provocando uma catarata de eventos que pode parecer (ou ser para alguns) bem ca\u00f3tica.<\/p>\n
H\u00e1 algumas coisas que s\u00e3o repetitivas e por isso mais suscet\u00edveis ao erro que acompanha a falta de aten\u00e7\u00e3o que temos com as coisas bem conhecidas.\u00a0 Pense na diferen\u00e7a entre a namorada e a esposa que vai entender rapidinho no que estou falando.\u00a0 No terreno desconhecido tendemos a ser mais cuidadosos, cautelosos at\u00e9.\u00a0 J\u00e1 quando somos familiares do assunto, engordamos, arrotamos em p\u00fablico e por ai vai.<\/p>\n
Estas coisas repetitivas mas necess\u00e1rias s\u00e3o as que -ao meu ver- precisam de uma base bem conhecidas por todo o time de programa\u00e7\u00e3o.\u00a0 Pela natureza da programa\u00e7\u00e3o WEB ela tende a ser ca\u00f3tica e divergente.\u00a0 O pr\u00f3prio Javascript e o PHP nos convidam para esse relaxamento que n\u00e3o nos era permitidos no assembler, C, C++, Pascal…<\/p>\n
Foco pr\u00e1tico<\/h2>\n
N\u00e3o pretendemos de forma alguma inventar a roda nem muito menos torn\u00e1-la mais redonda.\u00a0 Por\u00e9m, entre as rodas dispon\u00edveis escolhemos uma que nos parece a mais acertada e colocamos uma calota bonita nela.<\/p>\n
Nossa roda consiste em um trip\u00e9 que nos garante a seguran\u00e7a e a chamada ao evento no servidor.\u00a0 Esse trip\u00e9 \u00e9 obtido por meio de tr\u00e9s \u00fanicas vari\u00e1veis globais: s<\/strong>, a<\/strong>, e u<\/strong>.\u00a0 O valor para u<\/strong> \u00e9 obtido na hora do logon e \u00e9 de responsabilidade inicial do YeAPF se bem o programador pode estender e criar seu pr\u00f3prio gerador de identificador global de sess\u00e3o.\u00a0 s<\/strong> \u00e9 o subject<\/em> (assunto, coisa a ser tratada) e \u00e9 constitu\u00eddo por uma ou duas palavras das quais se espera que uma delas ao menos seja um substantivo.\u00a0\u00a0 Finalmente a<\/strong> \u00e9 a a\u00e7\u00e3o, a coisa a ser feita sob o subject<\/em> e \u00e9 de se esperar que contenha um verbo.\u00a0 Assim sendo, quando um outro programador continua seu projeto, ele vai entender rapidamente onde est\u00e3o as coisas.\u00a0 D\u00ea uma olhada na seguinte tabela de eventos para visualmente entender do que se trata:<\/p>\n\n
\n\n\n| s<\/th>\n | a<\/th>\n<\/tr>\n | 
\n| alunos<\/td>\n | cadastrar<\/td>\n<\/tr>\n | 
\n| enturmar<\/td>\n<\/tr>\n | 
\n| pacientes<\/td>\n | internar<\/td>\n<\/tr>\n | 
\n| listarPorSala<\/td>\n<\/tr>\n | 
\n| darAlta<\/td>\n<\/tr>\n | 
\n| socios<\/td>\n | editar<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n Uma URL que o programador precise gerar para listar os pacientes seguindo a tabela anterior seria assim:<\/p>\n http:\/\/www.hospitalFicticio.com\/body.php?s=pacientes&a=listarPorSala<\/pre>\nPropositalmente est\u00e1 faltando o par\u00e2metro u<\/strong> para facilitar a leitura, mas qualquer programador que tenha sido informado que a listagem por sala dos pacientes est\u00e1 precisando passar por uma remodelagem, sabe exatamente onde achar o c\u00f3digo fonte que a gera no servidor:<\/p>\n<?php\r\n  ...\r\n  function fpacientes($a) {\r\n    switch($a) {\r\n      ...\r\n      case 'listarPorSala':\r\n        $aBody='l_pacientesPorSala';\r\n        break;\r\n      ...\r\n    }\r\n  }\r\n  ...?><\/pre>\nQue por sua vez o vai levar ao arquivo .HTML que \u00e9 o respons\u00e1vel final pela emiss\u00e3o do relat\u00f3rio.<\/p>\n No princ\u00edpio eram as macro substitui\u00e7\u00f5es<\/h2>\nQuem j\u00e1 teve a oportunidade de programar em Clipper, sabe como \u00e9 bom ter uma macro substitui\u00e7\u00e3o em um relat\u00f3rio por exemplo.\u00a0 Lembro tamb\u00e9m do tempo em que aqueles que program\u00e1vamos em linguagem de baixo n\u00edvel deboch\u00e1vamos\u00a0 dos que programavam em linguagem de alto n\u00edvel.\u00a0 Bem, a hist\u00f3ria tem demonstrado que macro substitui\u00e7\u00e3o n\u00e3o \u00e9 de todo ruim.<\/p>\n YeAPF favorece a gera\u00e7\u00e3o de relat\u00f3rios e formul\u00e1rios de entrada fazendo uso extenso da macro substitui\u00e7\u00e3o.\u00a0 Isso, ao nosso ver, simplifica o desenvolvimento assim como isenta o programador para o que realmente interessa: engarrafar intelig\u00eancia na forma de c\u00f3digo e distribuir da forma mais r\u00e1pida e segura.<\/p>\n Por exemplo, o HTML que chamamos no exemplo anterior (l_pacientesPorSala<\/em>) ficaria assim:<\/p>\n<table>\r\n  <tr>\r\n    <th>Setor<\/th>\r\n    <th>Sala<\/th>\r\n    <th>Paciente<\/th>\r\n  <\/tr>\r\n  #for(\"select setor, sala, nomePaciente, nomeMedico\r\n        from pacientes p, medicos m\r\n        where p.internado=1 and m.codigoMedico=p.codigoMedico\r\n        order by setor, sala, nomePaciente\")\r\n    <tr>\r\n      <td>#(setor)<\/td>\r\n      <td>#(sala)<\/td>\r\n      <td>#(nomePaciente)<br><small>#(nomeMedico)<\/small><\/td>\r\n    <\/tr>\r\n  #next\r\n<\/table><\/pre>\nA macro substitui\u00e7\u00e3o \u00e9 obtida usando a simbologia #()<\/em><\/strong>.\u00a0 Repare como a partir do exemplo, voc\u00ea consegue ver que os campos s\u00e3o mostrados de forma simples dentro de uma tabela.\u00a0 Veja tamb\u00e9m que voc\u00ea intuitivamente j\u00e1 reconhece que #for() \/ #next<\/em><\/strong> s\u00e3o macros tamb\u00e9m.\u00a0 E observe em especial, como o c\u00f3digo que gera a tela est\u00e1 separado do PHP que cuida da l\u00f3gica, do fluxo e das regras de neg\u00f3cios.<\/p>\nO pior de tudo \u00e9 que este mesmo c\u00f3digo pode ser editado usando ferramentas caras como \u00e9 o DreamWaver mantendo a funcionalidade e sem quebrar a beleza de um editor gr\u00e1fico da seguinte maneira:<\/p>\n <table>\r\n  <tr>\r\n    <th>Setor<\/th>\r\n    <th>Sala<\/th>\r\n    <th>Paciente<\/th>\r\n  <\/tr>\r\n  <!--\r\n  #for(\"select setor, sala, nomePaciente, nomeMedico\r\n        from pacientes p, medicos m\r\n        where p.internado=1 and m.codigoMedico=p.codigoMedico\r\n        order by setor, sala, nomePaciente\")\r\n  -->\r\n    <tr>\r\n      <td>#(setor)<\/td>\r\n      <td>#(sala)<\/td>\r\n      <td>#(nomePaciente)<br><small>#(nomeMedico)<\/small><\/td>\r\n    <\/tr>\r\n  <!-- \r\n  #next\r\n  -->\r\n<\/table><\/pre>\nSim, comentamos o #for() \/ #next<\/strong><\/em> e sim, a funcionalidade foi mantida.\u00a0 Isso permite que o seu empregador possa alugar os servi\u00e7os de um web designer para que seu aplicativo fique bonito e voc\u00ea se foque no que realmente voc\u00ea \u00e9 bom: programar.<\/p>\nSe o c\u00f3digo fosse feito como \u00e9 ensinado em alguns centros de despreparo, sera uma mistureira que funcionaria, claro, mas seria dif\u00edcil (leia-se demorado, caro) de manter.<\/p>\n YeAPF permite que voc\u00ea se conecte a tr\u00eas bancos diferentes sem alterar uma linha sequer do seu PHP: MySQL, Firebird e Postgresql.\u00a0 Claro, o que for espec\u00edfico de cada banco n\u00e3o tem como, mas veja o seguinte exemplo:<\/p>\n <?php\r\n  require_once \"yeapf.php\";\r\n\r\n  echo \"<table>\";\r\n  $q=db_query(\"select nome, nascimento \r\n               from alunos \r\n               where inscrito='S' \r\n               order by nome\");\r\n  while ($d=db_fetch_array($q)) {\r\n    $nome=$d['nome'];\r\n    $nascimento=$d['nascimento'];\r\n    $idade=calcularIdade($nascimento);\r\n    echo \"<tr><td>$nome<\/td><td>$idade<\/td><\/tr>\";\r\n  }\r\n  echo \"<\/table>\";\r\n?><\/pre>\nA \u00fanica coisa que o programador precisa fazer para que o c\u00f3digo acima funcione em um ou outro banco \u00e9 configurar a conex\u00e3o do aplicativo com o banco.\u00a0 YeAPF se encarrega de utilizar as fun\u00e7\u00f5es correspondentes ao banco escolhido.\u00a0 Isso, mais uma vez, \u00e9 menor tempo de produ\u00e7\u00e3o, e menor tempo \u00e9 menor custo.<\/p>\n Acompanhe-nos<\/h2>\nO caminho que propomos \u00e9 o que nos leva a uma maior divulga\u00e7\u00e3o do conhecimento dentro da sua pr\u00f3pria institui\u00e7\u00e3o.\u00a0 Em lugar de gastar seus preciosos minutos desenvolvendo e curando as mesmas rotinas de fluxo de dado, lhe oferecemos um produto que permite que toda a tripula\u00e7\u00e3o saiba onde procurar o que precisa ser modificado ou onde encaixar mais uma nova funcionalidade em c\u00f3digo antigo.<\/p>\n Escrever c\u00f3digo novo \u00e9 f\u00e1cil e r\u00e1pido.\u00a0 Dif\u00edcil \u00e9 dar manuten\u00e7\u00e3o em c\u00f3digo antigo.\u00a0 Dizer que documentar c\u00f3digo \u00e9 importante, vital \u00e9 f\u00e1cil.\u00a0 Dif\u00edcil \u00e9 deixar um c\u00f3digo limpo que n\u00e3o provoque medo nos seus colegas nem em voc\u00ea mesmo quando for revisar ele meses ou anos depois.<\/p>\n Mais do que um conjunto de rotinas, acessibilidade coerente a v\u00e1rios bancos de dados sem mudar seu fonte e formas de envelopamento da informa\u00e7\u00e3o o que YeAPF oferece \u00e9 um paradigma de programa\u00e7\u00e3o simples, extens\u00edvel e acess\u00edvel \u00e0 tripula\u00e7\u00e3o inteira.<\/p>\n","protected":false},"excerpt":{"rendered":" Simplificando o desenvolvimento web\/desktop\/mobile com YeAPF H\u00e1 uma beleza intr\u00ednseca e quase objetiva nas coisas mais simples.\u00a0 Todavia, n\u00e3o devemos concluir que uma coisa simplificada \u00e9 uma coisa simples ou pior, que quem simplificou \u00e9 simplista. Simplificar, entendo, \u00e9 o passo mais nobre da abstra\u00e7\u00e3o em que uma coisa complexa e abstrata \u00e9 trazida para […]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"open","template":"","meta":{"spay_email":""},"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/P5O6UV-g","jetpack-related-posts":[{"id":2,"url":"http:\/\/www.yeapf.com\/wp\/?page_id=2","url_meta":{"origin":16,"position":0},"title":"Laborat\u00f3rio","date":"janeiro 10, 2014","format":false,"excerpt":"No que se refere \u00e0 publica\u00e7\u00e3o do que fa\u00e7o em programa\u00e7\u00e3o, sou t\u00edmido por natureza. Me parece desnecess\u00e1rio e at\u00e9 in\u00fatil publicar coisas que para mim s\u00e3o como a capa do livro.\u00a0 Ou seja, sem a capa, n\u00e3o tem livro. Lamentavelmente tenho descoberto com certo horror que o que para\u2026","rel":"","context":"Post similar","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"http:\/\/www.yeapf.com\/wp\/index.php?rest_route=\/wp\/v2\/pages\/16"}],"collection":[{"href":"http:\/\/www.yeapf.com\/wp\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/www.yeapf.com\/wp\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/www.yeapf.com\/wp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.yeapf.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=16"}],"version-history":[{"count":11,"href":"http:\/\/www.yeapf.com\/wp\/index.php?rest_route=\/wp\/v2\/pages\/16\/revisions"}],"predecessor-version":[{"id":57,"href":"http:\/\/www.yeapf.com\/wp\/index.php?rest_route=\/wp\/v2\/pages\/16\/revisions\/57"}],"wp:attachment":[{"href":"http:\/\/www.yeapf.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=16"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}         |