From 73f79555abbf9627b2b7374cfb3e6d761854cd24 Mon Sep 17 00:00:00 2001 From: sipmann Date: Wed, 14 Feb 2024 00:32:52 +0000 Subject: [PATCH] [ci skip] Automated deployment to GitHub Pages on 1707870772002 --- CNAME | 1 + ads.txt | 1 + ...nifi-json-to-sql-replacing-underscore.html | 411 ++++++ ...i-json-to-sql-replacing-underscore.html.gz | Bin 0 -> 4172 bytes archives.html | 358 +++++ archives.html.gz | Bin 0 -> 4231 bytes author/mauricio-camargo-sipmann.html | 603 ++++++++ author/mauricio-camargo-sipmann.html.gz | Bin 0 -> 5990 bytes author/mauricio-camargo-sipmann2.html | 582 ++++++++ author/mauricio-camargo-sipmann2.html.gz | Bin 0 -> 6223 bytes author/mauricio-camargo-sipmann3.html | 526 +++++++ author/mauricio-camargo-sipmann3.html.gz | Bin 0 -> 5577 bytes authors.html | 302 ++++ authors.html.gz | Bin 0 -> 3119 bytes ...undamentals-certification-80-discount.html | 511 +++++++ ...amentals-certification-80-discount.html.gz | Bin 0 -> 4594 bytes ...-user-on-sql-server-based-on-schedule.html | 566 +++++++ ...er-on-sql-server-based-on-schedule.html.gz | Bin 0 -> 6161 bytes categories.html | 312 ++++ categories.html.gz | Bin 0 -> 3199 bytes category/azure.html | 370 +++++ category/azure.html.gz | Bin 0 -> 3936 bytes category/flutter.html | 304 ++++ category/flutter.html.gz | Bin 0 -> 3404 bytes category/front-end.html | 375 +++++ category/front-end.html.gz | Bin 0 -> 3985 bytes category/java.html | 370 +++++ category/java.html.gz | Bin 0 -> 3981 bytes category/linux.html | 460 ++++++ category/linux.html.gz | Bin 0 -> 4776 bytes category/mysql.html | 307 ++++ category/mysql.html.gz | Bin 0 -> 3412 bytes category/net.html | 348 +++++ category/net.html.gz | Bin 0 -> 3755 bytes category/powershell.html | 379 +++++ category/powershell.html.gz | Bin 0 -> 3890 bytes category/random.html | 302 ++++ category/random.html.gz | Bin 0 -> 3333 bytes category/sql-server.html | 375 +++++ category/sql-server.html.gz | Bin 0 -> 4009 bytes category/tools.html | 331 +++++ category/tools.html.gz | Bin 0 -> 3630 bytes ...-open-connection-java-mysql-hibernate.html | 474 ++++++ ...en-connection-java-mysql-hibernate.html.gz | Bin 0 -> 5145 bytes connecting_to_database_through_ssh.html | 463 ++++++ connecting_to_database_through_ssh.html.gz | Bin 0 -> 4697 bytes ...en-connection-java-mysql-hibernate-pt.html | 474 ++++++ ...connection-java-mysql-hibernate-pt.html.gz | Bin 0 -> 5151 bytes drafts/cool-tools-pt.html | 456 ++++++ drafts/cool-tools-pt.html.gz | Bin 0 -> 5141 bytes drafts/desenvolvendo-app-firefoxos-pt.html | 489 +++++++ drafts/desenvolvendo-app-firefoxos-pt.html.gz | Bin 0 -> 6212 bytes drafts/editando-o-admin-do-django-pt.html | 530 +++++++ drafts/editando-o-admin-do-django-pt.html.gz | Bin 0 -> 6806 bytes .../menu-dinamico-com-apps-do-django-pt.html | 518 +++++++ ...enu-dinamico-com-apps-do-django-pt.html.gz | Bin 0 -> 6353 bytes ...azure-data-fundamentals-certification.html | 537 +++++++ ...re-data-fundamentals-certification.html.gz | Bin 0 -> 4284 bytes drafts/pages/businesscard.html | 304 ++++ drafts/pages/businesscard.html.gz | Bin 0 -> 3058 bytes drafts/pages/services.html | 304 ++++ drafts/pages/services.html.gz | Bin 0 -> 3058 bytes drafts/pages/servicos-pt.html | 304 ++++ drafts/pages/servicos-pt.html.gz | Bin 0 -> 3065 bytes ...blog-post-with-powershell-and-pelican.html | 544 +++++++ ...g-post-with-powershell-and-pelican.html.gz | Bin 0 -> 5658 bytes .../script-de-inicializacao-raspberry-pt.html | 571 ++++++++ ...ript-de-inicializacao-raspberry-pt.html.gz | Bin 0 -> 6047 bytes ...nifi-json-to-sql-replacing-underscore.html | 412 ++++++ ...i-json-to-sql-replacing-underscore.html.gz | Bin 0 -> 4187 bytes en/archives.html | 358 +++++ en/archives.html.gz | Bin 0 -> 4229 bytes en/author/mauricio-camargo-sipmann.html | 603 ++++++++ en/author/mauricio-camargo-sipmann.html.gz | Bin 0 -> 5982 bytes en/author/mauricio-camargo-sipmann2.html | 582 ++++++++ en/author/mauricio-camargo-sipmann2.html.gz | Bin 0 -> 6222 bytes en/author/mauricio-camargo-sipmann3.html | 526 +++++++ en/author/mauricio-camargo-sipmann3.html.gz | Bin 0 -> 5575 bytes en/authors.html | 302 ++++ en/authors.html.gz | Bin 0 -> 3117 bytes ...undamentals-certification-80-discount.html | 512 +++++++ ...amentals-certification-80-discount.html.gz | Bin 0 -> 4611 bytes ...-user-on-sql-server-based-on-schedule.html | 567 +++++++ ...er-on-sql-server-based-on-schedule.html.gz | Bin 0 -> 6176 bytes en/categories.html | 312 ++++ en/categories.html.gz | Bin 0 -> 3197 bytes en/category/azure.html | 370 +++++ en/category/azure.html.gz | Bin 0 -> 3932 bytes en/category/flutter.html | 304 ++++ en/category/flutter.html.gz | Bin 0 -> 3403 bytes en/category/front-end.html | 375 +++++ en/category/front-end.html.gz | Bin 0 -> 3986 bytes en/category/java.html | 370 +++++ en/category/java.html.gz | Bin 0 -> 3981 bytes en/category/linux.html | 460 ++++++ en/category/linux.html.gz | Bin 0 -> 4775 bytes en/category/mysql.html | 307 ++++ en/category/mysql.html.gz | Bin 0 -> 3410 bytes en/category/net.html | 348 +++++ en/category/net.html.gz | Bin 0 -> 3755 bytes en/category/powershell.html | 379 +++++ en/category/powershell.html.gz | Bin 0 -> 3884 bytes en/category/random.html | 302 ++++ en/category/random.html.gz | Bin 0 -> 3331 bytes en/category/sql-server.html | 375 +++++ en/category/sql-server.html.gz | Bin 0 -> 4008 bytes en/category/tools.html | 331 +++++ en/category/tools.html.gz | Bin 0 -> 3629 bytes ...-open-connection-java-mysql-hibernate.html | 475 ++++++ ...en-connection-java-mysql-hibernate.html.gz | Bin 0 -> 5159 bytes en/connecting_to_database_through_ssh.html | 464 ++++++ en/connecting_to_database_through_ssh.html.gz | Bin 0 -> 4712 bytes ...en-connection-java-mysql-hibernate-pt.html | 475 ++++++ ...connection-java-mysql-hibernate-pt.html.gz | Bin 0 -> 5165 bytes en/drafts/cool-tools-pt.html | 457 ++++++ en/drafts/cool-tools-pt.html.gz | Bin 0 -> 5156 bytes en/drafts/desenvolvendo-app-firefoxos-pt.html | 490 +++++++ .../desenvolvendo-app-firefoxos-pt.html.gz | Bin 0 -> 6229 bytes en/drafts/editando-o-admin-do-django-pt.html | 531 +++++++ .../editando-o-admin-do-django-pt.html.gz | Bin 0 -> 6820 bytes .../menu-dinamico-com-apps-do-django-pt.html | 519 +++++++ ...enu-dinamico-com-apps-do-django-pt.html.gz | Bin 0 -> 6367 bytes ...azure-data-fundamentals-certification.html | 538 +++++++ ...re-data-fundamentals-certification.html.gz | Bin 0 -> 4300 bytes en/drafts/pages/businesscard.html | 304 ++++ en/drafts/pages/businesscard.html.gz | Bin 0 -> 3058 bytes en/drafts/pages/services.html | 304 ++++ en/drafts/pages/services.html.gz | Bin 0 -> 3058 bytes en/drafts/pages/servicos-pt.html | 304 ++++ en/drafts/pages/servicos-pt.html.gz | Bin 0 -> 3065 bytes ...blog-post-with-powershell-and-pelican.html | 545 +++++++ ...g-post-with-powershell-and-pelican.html.gz | Bin 0 -> 5674 bytes .../script-de-inicializacao-raspberry-pt.html | 572 ++++++++ ...ript-de-inicializacao-raspberry-pt.html.gz | Bin 0 -> 6064 bytes en/feeds/all-en.atom.xml | 813 +++++++++++ en/feeds/all-en.atom.xml.gz | Bin 0 -> 26311 bytes en/feeds/all.atom.xml | 1270 ++++++++++++++++ en/feeds/all.atom.xml.gz | Bin 0 -> 35016 bytes en/feeds/azure.atom.xml | 52 + en/feeds/azure.atom.xml.gz | Bin 0 -> 2578 bytes en/feeds/flutter.atom.xml | 28 + en/feeds/flutter.atom.xml.gz | Bin 0 -> 1333 bytes en/feeds/front-end.atom.xml | 178 +++ en/feeds/front-end.atom.xml.gz | Bin 0 -> 5555 bytes en/feeds/java.atom.xml | 89 ++ en/feeds/java.atom.xml.gz | Bin 0 -> 3423 bytes en/feeds/linux.atom.xml | 92 ++ en/feeds/linux.atom.xml.gz | Bin 0 -> 3920 bytes en/feeds/mauricio-camargo-sipmann.atom.xml | 813 +++++++++++ en/feeds/mauricio-camargo-sipmann.atom.xml.gz | Bin 0 -> 26321 bytes en/feeds/mauricio-camargo-sipmann.rss.xml | 28 + en/feeds/mauricio-camargo-sipmann.rss.xml.gz | Bin 0 -> 6915 bytes en/feeds/mysql.atom.xml | 14 + en/feeds/mysql.atom.xml.gz | Bin 0 -> 1044 bytes en/feeds/net.atom.xml | 59 + en/feeds/net.atom.xml.gz | Bin 0 -> 2301 bytes en/feeds/powershell.atom.xml | 124 ++ en/feeds/powershell.atom.xml.gz | Bin 0 -> 3925 bytes en/feeds/random.atom.xml | 3 + en/feeds/random.atom.xml.gz | Bin 0 -> 677 bytes en/feeds/sql-server.atom.xml | 184 +++ en/feeds/sql-server.atom.xml.gz | Bin 0 -> 5032 bytes en/feeds/tools.atom.xml | 10 + en/feeds/tools.atom.xml.gz | Bin 0 -> 1738 bytes en/flutter_with_firebase_auth_crashing.html | 434 ++++++ ...lutter_with_firebase_auth_crashing.html.gz | Bin 0 -> 4664 bytes en/index.html | 603 ++++++++ en/index.html.gz | Bin 0 -> 5939 bytes en/index2.html | 582 ++++++++ en/index2.html.gz | Bin 0 -> 6177 bytes en/index3.html | 526 +++++++ en/index3.html.gz | Bin 0 -> 5532 bytes ...iting-connection-resources-sql-server.html | 533 +++++++ ...ng-connection-resources-sql-server.html.gz | Bin 0 -> 5867 bytes en/linux-external-display-with-disper.html | 421 ++++++ en/linux-external-display-with-disper.html.gz | Bin 0 -> 4353 bytes ...rvices_nodejs_express_rabbitmq_part_1.html | 549 +++++++ ...ces_nodejs_express_rabbitmq_part_1.html.gz | Bin 0 -> 5849 bytes ...rvices_nodejs_express_rabbitmq_part_2.html | 580 ++++++++ ...ces_nodejs_express_rabbitmq_part_2.html.gz | Bin 0 -> 7063 bytes en/microsoft-against-covid.html | 511 +++++++ en/microsoft-against-covid.html.gz | Bin 0 -> 4521 bytes ...ing-mysql-replication-with-powershell.html | 576 ++++++++ ...-mysql-replication-with-powershell.html.gz | Bin 0 -> 5611 bytes ...toring-mysql-restarts-with-powershell.html | 540 +++++++ ...ing-mysql-restarts-with-powershell.html.gz | Bin 0 -> 5479 bytes ...ng-website-heath-with-azure-functions.html | 619 ++++++++ ...website-heath-with-azure-functions.html.gz | Bin 0 -> 5706 bytes en/mysql-dual-password-functionality.html | 520 +++++++ en/mysql-dual-password-functionality.html.gz | Bin 0 -> 4846 bytes en/now_posting_on_grepora.html | 407 ++++++ en/now_posting_on_grepora.html.gz | Bin 0 -> 4023 bytes en/pages/about.html | 304 ++++ en/pages/about.html.gz | Bin 0 -> 3040 bytes en/pages/cartao-pt.html | 480 ++++++ en/pages/cartao-pt.html.gz | Bin 0 -> 4676 bytes ...g-files-java-readAllBytes-outofmemory.html | 511 +++++++ ...iles-java-readAllBytes-outofmemory.html.gz | Bin 0 -> 5179 bytes ...emoving-user-from-sql-server-database.html | 520 +++++++ ...ving-user-from-sql-server-database.html.gz | Bin 0 -> 5126 bytes ...ffolding_react_app_with_parcel_yeoman.html | 505 +++++++ ...lding_react_app_with_parcel_yeoman.html.gz | Bin 0 -> 5014 bytes en/select_specific_fields_with_efcore.html | 506 +++++++ en/select_specific_fields_with_efcore.html.gz | Bin 0 -> 4861 bytes en/sitemap.xml | 881 +++++++++++ en/sitemap.xml.gz | Bin 0 -> 1849 bytes ...amily-unavailable-java-docker-wildfly.html | 491 +++++++ ...ly-unavailable-java-docker-wildfly.html.gz | Bin 0 -> 4999 bytes en/tag/apache-nifi.html | 296 ++++ en/tag/apache-nifi.html.gz | Bin 0 -> 2903 bytes en/tag/arraymap.html | 296 ++++ en/tag/arraymap.html.gz | Bin 0 -> 2892 bytes en/tag/azure-certification.html | 296 ++++ en/tag/azure-certification.html.gz | Bin 0 -> 2904 bytes en/tag/azure-devops.html | 296 ++++ en/tag/azure-devops.html.gz | Bin 0 -> 2899 bytes en/tag/azure-fundamentals.html | 296 ++++ en/tag/azure-fundamentals.html.gz | Bin 0 -> 2903 bytes en/tag/azure.html | 326 +++++ en/tag/azure.html.gz | Bin 0 -> 3044 bytes en/tag/c.html | 306 ++++ en/tag/c.html.gz | Bin 0 -> 2954 bytes en/tag/cache.html | 296 ++++ en/tag/cache.html.gz | Bin 0 -> 2895 bytes en/tag/certification.html | 296 ++++ en/tag/certification.html.gz | Bin 0 -> 2883 bytes en/tag/convertjsontosql.html | 296 ++++ en/tag/convertjsontosql.html.gz | Bin 0 -> 2911 bytes en/tag/crash.html | 296 ++++ en/tag/crash.html.gz | Bin 0 -> 2891 bytes en/tag/discount.html | 296 ++++ en/tag/discount.html.gz | Bin 0 -> 2902 bytes en/tag/disper.html | 296 ++++ en/tag/disper.html.gz | Bin 0 -> 2894 bytes en/tag/docker.html | 296 ++++ en/tag/docker.html.gz | Bin 0 -> 2931 bytes en/tag/dotnet-core.html | 316 ++++ en/tag/dotnet-core.html.gz | Bin 0 -> 3040 bytes en/tag/dotnet.html | 316 ++++ en/tag/dotnet.html.gz | Bin 0 -> 3037 bytes en/tag/ef-core.html | 296 ++++ en/tag/ef-core.html.gz | Bin 0 -> 2917 bytes en/tag/entity-framework.html | 296 ++++ en/tag/entity-framework.html.gz | Bin 0 -> 2912 bytes en/tag/expressjs.html | 306 ++++ en/tag/expressjs.html.gz | Bin 0 -> 2943 bytes en/tag/external-display.html | 296 ++++ en/tag/external-display.html.gz | Bin 0 -> 2895 bytes en/tag/filesreadallbytes.html | 296 ++++ en/tag/filesreadallbytes.html.gz | Bin 0 -> 2907 bytes en/tag/firebase.html | 296 ++++ en/tag/firebase.html.gz | Bin 0 -> 2886 bytes en/tag/firefoxos.html | 286 ++++ en/tag/firefoxos.html.gz | Bin 0 -> 2821 bytes en/tag/flutter.html | 296 ++++ en/tag/flutter.html.gz | Bin 0 -> 2888 bytes en/tag/getchild-item.html | 296 ++++ en/tag/getchild-item.html.gz | Bin 0 -> 2882 bytes en/tag/git.html | 296 ++++ en/tag/git.html.gz | Bin 0 -> 2891 bytes en/tag/grepora.html | 296 ++++ en/tag/grepora.html.gz | Bin 0 -> 2880 bytes en/tag/hibernate.html | 296 ++++ en/tag/hibernate.html.gz | Bin 0 -> 2904 bytes en/tag/hooks.html | 296 ++++ en/tag/hooks.html.gz | Bin 0 -> 2892 bytes en/tag/html.html | 286 ++++ en/tag/html.html.gz | Bin 0 -> 2817 bytes en/tag/icmp-pinger-more-than-75.html | 296 ++++ en/tag/icmp-pinger-more-than-75.html.gz | Bin 0 -> 2912 bytes en/tag/icmp-pinger.html | 296 ++++ en/tag/icmp-pinger.html.gz | Bin 0 -> 2910 bytes en/tag/imagemin-pngquant.html | 306 ++++ en/tag/imagemin-pngquant.html.gz | Bin 0 -> 2953 bytes en/tag/imagemin.html | 306 ++++ en/tag/imagemin.html.gz | Bin 0 -> 2944 bytes en/tag/java.html | 316 ++++ en/tag/java.html.gz | Bin 0 -> 3068 bytes en/tag/javanetsocketexception.html | 296 ++++ en/tag/javanetsocketexception.html.gz | Bin 0 -> 2930 bytes en/tag/linux.html | 296 ++++ en/tag/linux.html.gz | Bin 0 -> 2893 bytes en/tag/low-memory.html | 296 ++++ en/tag/low-memory.html.gz | Bin 0 -> 2896 bytes en/tag/microservices.html | 306 ++++ en/tag/microservices.html.gz | Bin 0 -> 2941 bytes en/tag/microsoft.html | 296 ++++ en/tag/microsoft.html.gz | Bin 0 -> 2879 bytes en/tag/monitor-website.html | 296 ++++ en/tag/monitor-website.html.gz | Bin 0 -> 2898 bytes en/tag/mysql-dual-password.html | 296 ++++ en/tag/mysql-dual-password.html.gz | Bin 0 -> 2928 bytes en/tag/mysql-replication.html | 296 ++++ en/tag/mysql-replication.html.gz | Bin 0 -> 2895 bytes en/tag/mysql-restart.html | 296 ++++ en/tag/mysql-restart.html.gz | Bin 0 -> 2893 bytes en/tag/mysql.html | 326 +++++ en/tag/mysql.html.gz | Bin 0 -> 3070 bytes en/tag/net.html | 296 ++++ en/tag/net.html.gz | Bin 0 -> 2890 bytes en/tag/noclassdeffound.html | 296 ++++ en/tag/noclassdeffound.html.gz | Bin 0 -> 2897 bytes en/tag/node-js.html | 306 ++++ en/tag/node-js.html.gz | Bin 0 -> 2945 bytes en/tag/nodejs.html | 316 ++++ en/tag/nodejs.html.gz | Bin 0 -> 3008 bytes en/tag/openssh.html | 296 ++++ en/tag/openssh.html.gz | Bin 0 -> 2892 bytes en/tag/out-of-memory.html | 296 ++++ en/tag/out-of-memory.html.gz | Bin 0 -> 2890 bytes en/tag/outofmemory.html | 296 ++++ en/tag/outofmemory.html.gz | Bin 0 -> 2905 bytes en/tag/parcel.html | 296 ++++ en/tag/parcel.html.gz | Bin 0 -> 2904 bytes en/tag/poller-proccess-more-than-75.html | 296 ++++ en/tag/poller-proccess-more-than-75.html.gz | Bin 0 -> 2908 bytes en/tag/powershell-mail.html | 296 ++++ en/tag/powershell-mail.html.gz | Bin 0 -> 2898 bytes en/tag/powershell-monitoring.html | 296 ++++ en/tag/powershell-monitoring.html.gz | Bin 0 -> 2892 bytes en/tag/powershell.html | 306 ++++ en/tag/powershell.html.gz | Bin 0 -> 2931 bytes en/tag/pre-commit.html | 296 ++++ en/tag/pre-commit.html.gz | Bin 0 -> 2896 bytes en/tag/protocol-family-unavailable.html | 296 ++++ en/tag/protocol-family-unavailable.html.gz | Bin 0 -> 2932 bytes en/tag/rabbitmq.html | 306 ++++ en/tag/rabbitmq.html.gz | Bin 0 -> 2942 bytes en/tag/random.html | 296 ++++ en/tag/random.html.gz | Bin 0 -> 2881 bytes en/tag/raspberry.html | 286 ++++ en/tag/raspberry.html.gz | Bin 0 -> 2820 bytes en/tag/react.html | 296 ++++ en/tag/react.html.gz | Bin 0 -> 2903 bytes en/tag/remove-item.html | 296 ++++ en/tag/remove-item.html.gz | Bin 0 -> 2880 bytes en/tag/replacing-underscore.html | 296 ++++ en/tag/replacing-underscore.html.gz | Bin 0 -> 2906 bytes en/tag/resource-governor.html | 296 ++++ en/tag/resource-governor.html.gz | Bin 0 -> 2900 bytes en/tag/script.html | 296 ++++ en/tag/script.html.gz | Bin 0 -> 2875 bytes en/tag/shell.html | 326 +++++ en/tag/shell.html.gz | Bin 0 -> 3049 bytes en/tag/specify-columns.html | 296 ++++ en/tag/specify-columns.html.gz | Bin 0 -> 2916 bytes en/tag/sqlserver.html | 316 ++++ en/tag/sqlserver.html.gz | Bin 0 -> 3012 bytes en/tag/ssh-tunnel.html | 296 ++++ en/tag/ssh-tunnel.html.gz | Bin 0 -> 2895 bytes en/tag/ssh.html | 296 ++++ en/tag/ssh.html.gz | Bin 0 -> 2890 bytes en/tag/stop-proccess.html | 296 ++++ en/tag/stop-proccess.html.gz | Bin 0 -> 2881 bytes .../the-database-principal-owns-a-schema.html | 296 ++++ ...e-database-principal-owns-a-schema.html.gz | Bin 0 -> 2909 bytes en/tag/through-firewall.html | 296 ++++ en/tag/through-firewall.html.gz | Bin 0 -> 2897 bytes en/tag/time-schedule-blocking.html | 296 ++++ en/tag/time-schedule-blocking.html.gz | Bin 0 -> 2906 bytes en/tag/tools.html | 286 ++++ en/tag/tools.html.gz | Bin 0 -> 2817 bytes en/tag/tunnel.html | 296 ++++ en/tag/tunnel.html.gz | Bin 0 -> 2892 bytes en/tag/user.html | 306 ++++ en/tag/user.html.gz | Bin 0 -> 2956 bytes en/tag/wildfly.html | 296 ++++ en/tag/wildfly.html.gz | Bin 0 -> 2929 bytes en/tag/yeoman.html | 296 ++++ en/tag/yeoman.html.gz | Bin 0 -> 2903 bytes en/tag/zabbix-poller.html | 296 ++++ en/tag/zabbix-poller.html.gz | Bin 0 -> 2903 bytes en/tag/zabbix-server.html | 296 ++++ en/tag/zabbix-server.html.gz | Bin 0 -> 2912 bytes en/tag/zabbix.html | 326 +++++ en/tag/zabbix.html.gz | Bin 0 -> 3025 bytes en/tags.html | 381 +++++ en/tags.html.gz | Bin 0 -> 4150 bytes en/the-power-of-powershell.html | 596 ++++++++ en/the-power-of-powershell.html.gz | Bin 0 -> 5613 bytes en/top_level_statement_csharp_9.html | 514 +++++++ en/top_level_statement_csharp_9.html.gz | Bin 0 -> 5302 bytes en/using_git_hooks_easy_your_life.html | 516 +++++++ en/using_git_hooks_easy_your_life.html.gz | Bin 0 -> 5026 bytes ...ix-icmp-pinger-processes-more-than-75.html | 525 +++++++ ...icmp-pinger-processes-more-than-75.html.gz | Bin 0 -> 4749 bytes en/zabbix-poller-processes-more-than-75.html | 566 +++++++ ...bbix-poller-processes-more-than-75.html.gz | Bin 0 -> 5183 bytes en/zabbix-running-on-low-memory-mode.html | 555 +++++++ en/zabbix-running-on-low-memory-mode.html.gz | Bin 0 -> 4889 bytes en/zabbix-server-out-of-memory-crash.html | 547 +++++++ en/zabbix-server-out-of-memory-crash.html.gz | Bin 0 -> 4859 bytes feeds/all-en.atom.xml | 813 +++++++++++ feeds/all-en.atom.xml.gz | Bin 0 -> 26305 bytes feeds/all.atom.xml | 1270 ++++++++++++++++ feeds/all.atom.xml.gz | Bin 0 -> 35006 bytes feeds/azure.atom.xml | 52 + feeds/azure.atom.xml.gz | Bin 0 -> 2577 bytes feeds/flutter.atom.xml | 28 + feeds/flutter.atom.xml.gz | Bin 0 -> 1331 bytes feeds/front-end.atom.xml | 178 +++ feeds/front-end.atom.xml.gz | Bin 0 -> 5549 bytes feeds/java.atom.xml | 89 ++ feeds/java.atom.xml.gz | Bin 0 -> 3421 bytes feeds/linux.atom.xml | 92 ++ feeds/linux.atom.xml.gz | Bin 0 -> 3916 bytes feeds/mauricio-camargo-sipmann.atom.xml | 813 +++++++++++ feeds/mauricio-camargo-sipmann.atom.xml.gz | Bin 0 -> 26314 bytes feeds/mauricio-camargo-sipmann.rss.xml | 28 + feeds/mauricio-camargo-sipmann.rss.xml.gz | Bin 0 -> 6909 bytes feeds/mysql.atom.xml | 14 + feeds/mysql.atom.xml.gz | Bin 0 -> 1044 bytes feeds/net.atom.xml | 59 + feeds/net.atom.xml.gz | Bin 0 -> 2298 bytes feeds/powershell.atom.xml | 124 ++ feeds/powershell.atom.xml.gz | Bin 0 -> 3925 bytes feeds/random.atom.xml | 3 + feeds/random.atom.xml.gz | Bin 0 -> 675 bytes feeds/sql-server.atom.xml | 184 +++ feeds/sql-server.atom.xml.gz | Bin 0 -> 5030 bytes feeds/tools.atom.xml | 10 + feeds/tools.atom.xml.gz | Bin 0 -> 1736 bytes flutter_with_firebase_auth_crashing.html | 433 ++++++ flutter_with_firebase_auth_crashing.html.gz | Bin 0 -> 4651 bytes images/Resultado.PNG | Bin 0 -> 7830 bytes images/Resultado.PNG.gz | Bin 0 -> 5227 bytes images/admin_modificado.png | Bin 0 -> 7386 bytes images/apache_nifi_jsontosql.png | Bin 0 -> 48559 bytes images/app_inicial.png | Bin 0 -> 3946 bytes images/app_visual_1.png | Bin 0 -> 485755 bytes images/azure-data-fundamentals-600x600.png | Bin 0 -> 41438 bytes images/azure_certification.png | Bin 0 -> 145900 bytes images/azure_functions.gif | Bin 0 -> 299982 bytes images/azure_monitoring.png | Bin 0 -> 129663 bytes images/block_sql_server_user.png | Bin 0 -> 140303 bytes images/bug.png | Bin 0 -> 92258 bytes images/csharp_toplevel.png | Bin 0 -> 157811 bytes images/deletar_mysql_monitorin_powershell.png | Bin 0 -> 145049 bytes images/deletar_mysql_monitoring_restart.png | Bin 0 -> 152073 bytes images/deletar_powershell.png | Bin 0 -> 168587 bytes images/ef_core_allcolumns.png | Bin 0 -> 77071 bytes images/ef_core_less_columns.png | Bin 0 -> 29290 bytes images/efcore_select_fields.png | Bin 0 -> 124967 bytes images/header.jpg | Bin 0 -> 391191 bytes images/header.webp | Bin 0 -> 234670 bytes images/header.webp.new | Bin 0 -> 205048 bytes images/header.webp.new.gz | Bin 0 -> 203825 bytes images/icons/chart-pie-solid.svg | 1 + images/icons/chart-pie-solid.svg.gz | Bin 0 -> 449 bytes images/icons/cloud-solid.svg | 1 + images/icons/cloud-solid.svg.gz | Bin 0 -> 337 bytes images/icons/database-solid.svg | 1 + images/icons/database-solid.svg.gz | Bin 0 -> 356 bytes images/menu_apps.png | Bin 0 -> 16780 bytes images/microservice_postman.png | Bin 0 -> 26571 bytes images/microservices_rabit_pt1.png | Bin 0 -> 24106 bytes images/mysql_dual_password.png | Bin 0 -> 149552 bytes images/mysql_monitorin_powershell.webp | Bin 0 -> 46842 bytes images/mysql_monitoring_restart.webp | Bin 0 -> 47090 bytes images/og/java-wildfly.png | Bin 0 -> 91291 bytes images/og/mysql-permission.png | Bin 0 -> 74652 bytes images/og/yo-reac-gen.png | Bin 0 -> 94712 bytes images/owner.PNG | Bin 0 -> 2857 bytes images/owner.PNG.gz | Bin 0 -> 2855 bytes images/powershell.webp | Bin 0 -> 58902 bytes images/rabbitmq.png | Bin 0 -> 79710 bytes images/sipmann.com.png | Bin 0 -> 62875 bytes images/sql-pool.png | Bin 0 -> 24140 bytes images/zabbix_cache_filling.png | Bin 0 -> 11946 bytes images/zabbix_low_memory.png | Bin 0 -> 101319 bytes images/zabbix_low_memory_mode.png | Bin 0 -> 9862 bytes images/zabbix_low_memory_solved.png | Bin 0 -> 9456 bytes images/zabbix_pinger01.png | Bin 0 -> 11412 bytes images/zabbix_pooler.png | Bin 0 -> 13179 bytes images/zabbix_pooler_3.png | Bin 0 -> 75523 bytes images/zabbix_pooler_4.png | Bin 0 -> 32948 bytes index.html | 603 ++++++++ index.html.gz | Bin 0 -> 5946 bytes index2.html | 582 ++++++++ index2.html.gz | Bin 0 -> 6178 bytes index3.html | 526 +++++++ index3.html.gz | Bin 0 -> 5534 bytes limiting-connection-resources-sql-server.html | 532 +++++++ ...ng-connection-resources-sql-server.html.gz | Bin 0 -> 5851 bytes linux-external-display-with-disper.html | 420 ++++++ linux-external-display-with-disper.html.gz | Bin 0 -> 4341 bytes ...rvices_nodejs_express_rabbitmq_part_1.html | 548 +++++++ ...ces_nodejs_express_rabbitmq_part_1.html.gz | Bin 0 -> 5832 bytes ...rvices_nodejs_express_rabbitmq_part_2.html | 579 ++++++++ ...ces_nodejs_express_rabbitmq_part_2.html.gz | Bin 0 -> 7048 bytes microsoft-against-covid.html | 510 +++++++ microsoft-against-covid.html.gz | Bin 0 -> 4507 bytes ...ing-mysql-replication-with-powershell.html | 575 ++++++++ ...-mysql-replication-with-powershell.html.gz | Bin 0 -> 5596 bytes ...toring-mysql-restarts-with-powershell.html | 539 +++++++ ...ing-mysql-restarts-with-powershell.html.gz | Bin 0 -> 5471 bytes ...ng-website-heath-with-azure-functions.html | 618 ++++++++ ...website-heath-with-azure-functions.html.gz | Bin 0 -> 5689 bytes mysql-dual-password-functionality.html | 519 +++++++ mysql-dual-password-functionality.html.gz | Bin 0 -> 4832 bytes now_posting_on_grepora.html | 406 ++++++ now_posting_on_grepora.html.gz | Bin 0 -> 4010 bytes pages/about.html | 304 ++++ pages/about.html.gz | Bin 0 -> 3040 bytes pages/cartao-pt.html | 480 ++++++ pages/cartao-pt.html.gz | Bin 0 -> 4675 bytes ...nifi-json-to-sql-replacing-underscore.html | 411 ++++++ ...i-json-to-sql-replacing-underscore.html.gz | Bin 0 -> 4287 bytes pt/archives.html | 344 +++++ pt/archives.html.gz | Bin 0 -> 3928 bytes pt/author/mauricio-camargo-sipmann.html | 603 ++++++++ pt/author/mauricio-camargo-sipmann.html.gz | Bin 0 -> 6226 bytes pt/author/mauricio-camargo-sipmann2.html | 574 ++++++++ pt/author/mauricio-camargo-sipmann2.html.gz | Bin 0 -> 6471 bytes pt/author/mauricio-camargo-sipmann3.html | 333 +++++ pt/author/mauricio-camargo-sipmann3.html.gz | Bin 0 -> 3775 bytes pt/authors.html | 302 ++++ pt/authors.html.gz | Bin 0 -> 3148 bytes ...-user-on-sql-server-based-on-schedule.html | 538 +++++++ ...er-on-sql-server-based-on-schedule.html.gz | Bin 0 -> 6083 bytes pt/categories.html | 312 ++++ pt/categories.html.gz | Bin 0 -> 3224 bytes pt/category/azure.html | 336 +++++ pt/category/azure.html.gz | Bin 0 -> 3759 bytes pt/category/firefoxos.html | 304 ++++ pt/category/firefoxos.html.gz | Bin 0 -> 3438 bytes pt/category/java.html | 307 ++++ pt/category/java.html.gz | Bin 0 -> 3462 bytes pt/category/linux.html | 402 +++++ pt/category/linux.html.gz | Bin 0 -> 4389 bytes pt/category/mysql.html | 307 ++++ pt/category/mysql.html.gz | Bin 0 -> 3415 bytes pt/category/net.html | 348 +++++ pt/category/net.html.gz | Bin 0 -> 3837 bytes pt/category/powershell.html | 379 +++++ pt/category/powershell.html.gz | Bin 0 -> 3971 bytes pt/category/python.html | 331 +++++ pt/category/python.html.gz | Bin 0 -> 3694 bytes pt/category/shell.html | 303 ++++ pt/category/shell.html.gz | Bin 0 -> 3396 bytes pt/category/sql-server.html | 340 +++++ pt/category/sql-server.html.gz | Bin 0 -> 3807 bytes pt/category/tools.html | 333 +++++ pt/category/tools.html.gz | Bin 0 -> 3716 bytes pt/cool-tools.html | 456 ++++++ pt/cool-tools.html.gz | Bin 0 -> 5155 bytes pt/desenvolvendo-app-firefoxos.html | 445 ++++++ pt/desenvolvendo-app-firefoxos.html.gz | Bin 0 -> 5940 bytes ...amentals-certification-80-discount-en.html | 511 +++++++ ...ntals-certification-80-discount-en.html.gz | Bin 0 -> 4660 bytes ...en-connection-java-mysql-hibernate-en.html | 474 ++++++ ...connection-java-mysql-hibernate-en.html.gz | Bin 0 -> 5208 bytes ...-open-connection-java-mysql-hibernate.html | 474 ++++++ ...en-connection-java-mysql-hibernate.html.gz | Bin 0 -> 5205 bytes ...connecting_to_database_through_ssh-en.html | 419 ++++++ ...necting_to_database_through_ssh-en.html.gz | Bin 0 -> 4495 bytes ...lutter_with_firebase_auth_crashing-en.html | 433 ++++++ ...ter_with_firebase_auth_crashing-en.html.gz | Bin 0 -> 4702 bytes ...ng-connection-resources-sql-server-en.html | 532 +++++++ ...connection-resources-sql-server-en.html.gz | Bin 0 -> 5904 bytes ...linux-external-display-with-disper-en.html | 420 ++++++ ...ux-external-display-with-disper-en.html.gz | Bin 0 -> 4393 bytes ...ces_nodejs_express_rabbitmq_part_1-en.html | 476 ++++++ ..._nodejs_express_rabbitmq_part_1-en.html.gz | Bin 0 -> 5573 bytes ...ces_nodejs_express_rabbitmq_part_2-en.html | 507 +++++++ ..._nodejs_express_rabbitmq_part_2-en.html.gz | Bin 0 -> 6784 bytes ...azure-data-fundamentals-certification.html | 528 +++++++ ...re-data-fundamentals-certification.html.gz | Bin 0 -> 6229 bytes pt/drafts/now_posting_on_grepora-en.html | 406 ++++++ pt/drafts/now_posting_on_grepora-en.html.gz | Bin 0 -> 4061 bytes pt/drafts/pages/businesscard-en.html | 304 ++++ pt/drafts/pages/businesscard-en.html.gz | Bin 0 -> 3090 bytes pt/drafts/pages/services-en.html | 304 ++++ pt/drafts/pages/services-en.html.gz | Bin 0 -> 3090 bytes pt/drafts/pages/servicos.html | 304 ++++ pt/drafts/pages/servicos.html.gz | Bin 0 -> 3091 bytes ...iles-java-readAllBytes-outofmemory-en.html | 482 ++++++ ...s-java-readAllBytes-outofmemory-en.html.gz | Bin 0 -> 5102 bytes ...lding_react_app_with_parcel_yeoman-en.html | 476 ++++++ ...ng_react_app_with_parcel_yeoman-en.html.gz | Bin 0 -> 4954 bytes ...g-post-with-powershell-and-pelican-en.html | 516 +++++++ ...ost-with-powershell-and-pelican-en.html.gz | Bin 0 -> 5611 bytes .../using_git_hooks_easy_your_life-en.html | 543 +++++++ .../using_git_hooks_easy_your_life-en.html.gz | Bin 0 -> 5152 bytes pt/editando-o-admin-do-django.html | 574 ++++++++ pt/editando-o-admin-do-django.html.gz | Bin 0 -> 7052 bytes pt/feeds/all-pt.atom.xml | 829 +++++++++++ pt/feeds/all-pt.atom.xml.gz | Bin 0 -> 25516 bytes pt/feeds/all.atom.xml | 1298 +++++++++++++++++ pt/feeds/all.atom.xml.gz | Bin 0 -> 33181 bytes pt/feeds/azure.atom.xml | 51 + pt/feeds/azure.atom.xml.gz | Bin 0 -> 2278 bytes pt/feeds/firefoxos.atom.xml | 42 + pt/feeds/firefoxos.atom.xml.gz | Bin 0 -> 2597 bytes pt/feeds/java.atom.xml | 35 + pt/feeds/java.atom.xml.gz | Bin 0 -> 1461 bytes pt/feeds/linux.atom.xml | 68 + pt/feeds/linux.atom.xml.gz | Bin 0 -> 2954 bytes pt/feeds/mauricio-camargo-sipmann.atom.xml | 829 +++++++++++ pt/feeds/mauricio-camargo-sipmann.atom.xml.gz | Bin 0 -> 25526 bytes pt/feeds/mauricio-camargo-sipmann.rss.xml | 30 + pt/feeds/mauricio-camargo-sipmann.rss.xml.gz | Bin 0 -> 5889 bytes pt/feeds/mysql.atom.xml | 14 + pt/feeds/mysql.atom.xml.gz | Bin 0 -> 1120 bytes pt/feeds/net.atom.xml | 59 + pt/feeds/net.atom.xml.gz | Bin 0 -> 2520 bytes pt/feeds/powershell.atom.xml | 124 ++ pt/feeds/powershell.atom.xml.gz | Bin 0 -> 4153 bytes pt/feeds/python.atom.xml | 238 +++ pt/feeds/python.atom.xml.gz | Bin 0 -> 5176 bytes pt/feeds/shell.atom.xml | 41 + pt/feeds/shell.atom.xml.gz | Bin 0 -> 2211 bytes pt/feeds/sql-server.atom.xml | 118 ++ pt/feeds/sql-server.atom.xml.gz | Bin 0 -> 3279 bytes pt/feeds/tools.atom.xml | 59 + pt/feeds/tools.atom.xml.gz | Bin 0 -> 2371 bytes pt/index.html | 603 ++++++++ pt/index.html.gz | Bin 0 -> 6188 bytes pt/index2.html | 574 ++++++++ pt/index2.html.gz | Bin 0 -> 6429 bytes pt/index3.html | 333 +++++ pt/index3.html.gz | Bin 0 -> 3733 bytes pt/menu-dinamico-com-apps-do-django.html | 562 +++++++ pt/menu-dinamico-com-apps-do-django.html.gz | Bin 0 -> 6588 bytes pt/microsoft-against-covid.html | 482 ++++++ pt/microsoft-against-covid.html.gz | Bin 0 -> 4486 bytes ...ing-mysql-replication-with-powershell.html | 547 +++++++ ...-mysql-replication-with-powershell.html.gz | Bin 0 -> 5537 bytes ...toring-mysql-restarts-with-powershell.html | 511 +++++++ ...ing-mysql-restarts-with-powershell.html.gz | Bin 0 -> 5508 bytes ...ng-website-heath-with-azure-functions.html | 591 ++++++++ ...website-heath-with-azure-functions.html.gz | Bin 0 -> 5735 bytes pt/mysql-dual-password-functionality.html | 491 +++++++ pt/mysql-dual-password-functionality.html.gz | Bin 0 -> 4803 bytes pt/pages/about-en.html | 304 ++++ pt/pages/about-en.html.gz | Bin 0 -> 3073 bytes pt/pages/cartao.html | 480 ++++++ pt/pages/cartao.html.gz | Bin 0 -> 4696 bytes ...emoving-user-from-sql-server-database.html | 481 ++++++ ...ving-user-from-sql-server-database.html.gz | Bin 0 -> 4993 bytes pt/script-de-inicializacao-raspberry.html | 543 +++++++ pt/script-de-inicializacao-raspberry.html.gz | Bin 0 -> 5966 bytes pt/select_specific_fields_with_efcore.html | 505 +++++++ pt/select_specific_fields_with_efcore.html.gz | Bin 0 -> 4938 bytes pt/sitemap.xml | 650 +++++++++ pt/sitemap.xml.gz | Bin 0 -> 1435 bytes ...amily-unavailable-java-docker-wildfly.html | 446 ++++++ ...ly-unavailable-java-docker-wildfly.html.gz | Bin 0 -> 4842 bytes pt/tag/apache-nifi.html | 296 ++++ pt/tag/apache-nifi.html.gz | Bin 0 -> 2907 bytes pt/tag/arraymap.html | 286 ++++ pt/tag/arraymap.html.gz | Bin 0 -> 2819 bytes pt/tag/azure-certification.html | 286 ++++ pt/tag/azure-certification.html.gz | Bin 0 -> 2825 bytes pt/tag/azure-devops.html | 296 ++++ pt/tag/azure-devops.html.gz | Bin 0 -> 2915 bytes pt/tag/azure-fundamentals.html | 286 ++++ pt/tag/azure-fundamentals.html.gz | Bin 0 -> 2824 bytes pt/tag/azure.html | 316 ++++ pt/tag/azure.html.gz | Bin 0 -> 2998 bytes pt/tag/c.html | 306 ++++ pt/tag/c.html.gz | Bin 0 -> 2970 bytes pt/tag/cache.html | 296 ++++ pt/tag/cache.html.gz | Bin 0 -> 2895 bytes pt/tag/certification.html | 296 ++++ pt/tag/certification.html.gz | Bin 0 -> 2884 bytes pt/tag/convertjsontosql.html | 296 ++++ pt/tag/convertjsontosql.html.gz | Bin 0 -> 2915 bytes pt/tag/crash.html | 296 ++++ pt/tag/crash.html.gz | Bin 0 -> 2889 bytes pt/tag/discount.html | 286 ++++ pt/tag/discount.html.gz | Bin 0 -> 2816 bytes pt/tag/disper.html | 286 ++++ pt/tag/disper.html.gz | Bin 0 -> 2815 bytes pt/tag/django-admin.html | 296 ++++ pt/tag/django-admin.html.gz | Bin 0 -> 2885 bytes pt/tag/django.html | 306 ++++ pt/tag/django.html.gz | Bin 0 -> 2945 bytes pt/tag/docker.html | 296 ++++ pt/tag/docker.html.gz | Bin 0 -> 2932 bytes pt/tag/dotnet-core.html | 316 ++++ pt/tag/dotnet-core.html.gz | Bin 0 -> 3057 bytes pt/tag/dotnet.html | 316 ++++ pt/tag/dotnet.html.gz | Bin 0 -> 3054 bytes pt/tag/ef-core.html | 296 ++++ pt/tag/ef-core.html.gz | Bin 0 -> 2923 bytes pt/tag/entity-framework.html | 296 ++++ pt/tag/entity-framework.html.gz | Bin 0 -> 2916 bytes pt/tag/expressjs.html | 286 ++++ pt/tag/expressjs.html.gz | Bin 0 -> 2820 bytes pt/tag/external-display.html | 286 ++++ pt/tag/external-display.html.gz | Bin 0 -> 2822 bytes pt/tag/filesreadallbytes.html | 286 ++++ pt/tag/filesreadallbytes.html.gz | Bin 0 -> 2827 bytes pt/tag/firebase.html | 286 ++++ pt/tag/firebase.html.gz | Bin 0 -> 2816 bytes pt/tag/firefoxos.html | 296 ++++ pt/tag/firefoxos.html.gz | Bin 0 -> 2892 bytes pt/tag/flutter.html | 286 ++++ pt/tag/flutter.html.gz | Bin 0 -> 2817 bytes pt/tag/getchild-item.html | 296 ++++ pt/tag/getchild-item.html.gz | Bin 0 -> 2880 bytes pt/tag/git.html | 286 ++++ pt/tag/git.html.gz | Bin 0 -> 2814 bytes pt/tag/grepora.html | 286 ++++ pt/tag/grepora.html.gz | Bin 0 -> 2817 bytes pt/tag/hooks.html | 286 ++++ pt/tag/hooks.html.gz | Bin 0 -> 2815 bytes pt/tag/html.html | 296 ++++ pt/tag/html.html.gz | Bin 0 -> 2891 bytes pt/tag/icmp-pinger-more-than-75.html | 296 ++++ pt/tag/icmp-pinger-more-than-75.html.gz | Bin 0 -> 2912 bytes pt/tag/icmp-pinger.html | 296 ++++ pt/tag/icmp-pinger.html.gz | Bin 0 -> 2909 bytes pt/tag/imagemin-pngquant.html | 286 ++++ pt/tag/imagemin-pngquant.html.gz | Bin 0 -> 2825 bytes pt/tag/imagemin.html | 286 ++++ pt/tag/imagemin.html.gz | Bin 0 -> 2816 bytes pt/tag/java.html | 296 ++++ pt/tag/java.html.gz | Bin 0 -> 2931 bytes pt/tag/javanetsocketexception.html | 296 ++++ pt/tag/javanetsocketexception.html.gz | Bin 0 -> 2933 bytes pt/tag/linux.html | 286 ++++ pt/tag/linux.html.gz | Bin 0 -> 2814 bytes pt/tag/low-memory.html | 296 ++++ pt/tag/low-memory.html.gz | Bin 0 -> 2894 bytes pt/tag/microservices.html | 286 ++++ pt/tag/microservices.html.gz | Bin 0 -> 2820 bytes pt/tag/microsoft.html | 296 ++++ pt/tag/microsoft.html.gz | Bin 0 -> 2879 bytes pt/tag/monitor-website.html | 296 ++++ pt/tag/monitor-website.html.gz | Bin 0 -> 2912 bytes pt/tag/mysql-dual-password.html | 296 ++++ pt/tag/mysql-dual-password.html.gz | Bin 0 -> 2935 bytes pt/tag/mysql-replication.html | 296 ++++ pt/tag/mysql-replication.html.gz | Bin 0 -> 2915 bytes pt/tag/mysql-restart.html | 296 ++++ pt/tag/mysql-restart.html.gz | Bin 0 -> 2897 bytes pt/tag/mysql.html | 316 ++++ pt/tag/mysql.html.gz | Bin 0 -> 3019 bytes pt/tag/net.html | 296 ++++ pt/tag/net.html.gz | Bin 0 -> 2888 bytes pt/tag/noclassdeffound.html | 286 ++++ pt/tag/noclassdeffound.html.gz | Bin 0 -> 2824 bytes pt/tag/node-js.html | 286 ++++ pt/tag/node-js.html.gz | Bin 0 -> 2819 bytes pt/tag/nodejs.html | 286 ++++ pt/tag/nodejs.html.gz | Bin 0 -> 2817 bytes pt/tag/out-of-memory.html | 296 ++++ pt/tag/out-of-memory.html.gz | Bin 0 -> 2890 bytes pt/tag/outofmemory.html | 286 ++++ pt/tag/outofmemory.html.gz | Bin 0 -> 2821 bytes pt/tag/parcel.html | 286 ++++ pt/tag/parcel.html.gz | Bin 0 -> 2816 bytes pt/tag/poller-proccess.html | 296 ++++ pt/tag/poller-proccess.html.gz | Bin 0 -> 2904 bytes pt/tag/powershell-mail.html | 296 ++++ pt/tag/powershell-mail.html.gz | Bin 0 -> 2915 bytes pt/tag/powershell-monitoring.html | 296 ++++ pt/tag/powershell-monitoring.html.gz | Bin 0 -> 2896 bytes pt/tag/powershell.html | 306 ++++ pt/tag/powershell.html.gz | Bin 0 -> 2949 bytes pt/tag/pre-commit.html | 286 ++++ pt/tag/pre-commit.html.gz | Bin 0 -> 2818 bytes pt/tag/protocol-family-unavailable.html | 296 ++++ pt/tag/protocol-family-unavailable.html.gz | Bin 0 -> 2934 bytes pt/tag/python.html | 306 ++++ pt/tag/python.html.gz | Bin 0 -> 2948 bytes pt/tag/rabbitmq.html | 286 ++++ pt/tag/rabbitmq.html.gz | Bin 0 -> 2818 bytes pt/tag/random.html | 286 ++++ pt/tag/random.html.gz | Bin 0 -> 2816 bytes pt/tag/raspberry.html | 296 ++++ pt/tag/raspberry.html.gz | Bin 0 -> 2904 bytes pt/tag/react.html | 286 ++++ pt/tag/react.html.gz | Bin 0 -> 2816 bytes pt/tag/remove-item.html | 296 ++++ pt/tag/remove-item.html.gz | Bin 0 -> 2879 bytes pt/tag/removendo-underline.html | 296 ++++ pt/tag/removendo-underline.html.gz | Bin 0 -> 2909 bytes pt/tag/resource-governor.html | 286 ++++ pt/tag/resource-governor.html.gz | Bin 0 -> 2827 bytes pt/tag/script.html | 296 ++++ pt/tag/script.html.gz | Bin 0 -> 2874 bytes pt/tag/shell.html | 326 +++++ pt/tag/shell.html.gz | Bin 0 -> 3058 bytes pt/tag/specify-columns.html | 296 ++++ pt/tag/specify-columns.html.gz | Bin 0 -> 2924 bytes pt/tag/sqlserver.html | 306 ++++ pt/tag/sqlserver.html.gz | Bin 0 -> 2980 bytes pt/tag/stop-proccess.html | 296 ++++ pt/tag/stop-proccess.html.gz | Bin 0 -> 2879 bytes .../the-database-principal-owns-a-schema.html | 296 ++++ ...e-database-principal-owns-a-schema.html.gz | Bin 0 -> 2919 bytes pt/tag/time-schedule-blocking.html | 296 ++++ pt/tag/time-schedule-blocking.html.gz | Bin 0 -> 2931 bytes pt/tag/tools.html | 296 ++++ pt/tag/tools.html.gz | Bin 0 -> 2863 bytes pt/tag/user.html | 306 ++++ pt/tag/user.html.gz | Bin 0 -> 2977 bytes pt/tag/wildfly.html | 296 ++++ pt/tag/wildfly.html.gz | Bin 0 -> 2930 bytes pt/tag/yeoman.html | 296 ++++ pt/tag/yeoman.html.gz | Bin 0 -> 2892 bytes pt/tag/zabbix-poller.html | 296 ++++ pt/tag/zabbix-poller.html.gz | Bin 0 -> 2902 bytes pt/tag/zabbix-server.html | 296 ++++ pt/tag/zabbix-server.html.gz | Bin 0 -> 2911 bytes pt/tag/zabbix.html | 326 +++++ pt/tag/zabbix.html.gz | Bin 0 -> 3022 bytes pt/tags.html | 355 +++++ pt/tags.html.gz | Bin 0 -> 3848 bytes pt/the-power-of-powershell.html | 567 +++++++ pt/the-power-of-powershell.html.gz | Bin 0 -> 5603 bytes pt/top_level_statement_csharp_9.html | 513 +++++++ pt/top_level_statement_csharp_9.html.gz | Bin 0 -> 5499 bytes ...ix-icmp-pinger-processes-more-than-75.html | 521 +++++++ ...icmp-pinger-processes-more-than-75.html.gz | Bin 0 -> 4724 bytes pt/zabbix-poller-processes-more-than-75.html | 565 +++++++ ...bbix-poller-processes-more-than-75.html.gz | Bin 0 -> 5342 bytes pt/zabbix-running-on-low-memory-mode.html | 554 +++++++ pt/zabbix-running-on-low-memory-mode.html.gz | Bin 0 -> 4998 bytes pt/zabbix-server-out-of-memory-crash.html | 546 +++++++ pt/zabbix-server-out-of-memory-crash.html.gz | Bin 0 -> 5000 bytes ...g-files-java-readAllBytes-outofmemory.html | 510 +++++++ ...iles-java-readAllBytes-outofmemory.html.gz | Bin 0 -> 5163 bytes removing-user-from-sql-server-database.html | 519 +++++++ ...ving-user-from-sql-server-database.html.gz | Bin 0 -> 5110 bytes scaffolding_react_app_with_parcel_yeoman.html | 504 +++++++ ...lding_react_app_with_parcel_yeoman.html.gz | Bin 0 -> 4998 bytes select_specific_fields_with_efcore.html | 505 +++++++ select_specific_fields_with_efcore.html.gz | Bin 0 -> 4845 bytes sitemap.xml | 881 +++++++++++ sitemap.xml.gz | Bin 0 -> 1843 bytes ...amily-unavailable-java-docker-wildfly.html | 490 +++++++ ...ly-unavailable-java-docker-wildfly.html.gz | Bin 0 -> 4984 bytes tag/apache-nifi.html | 296 ++++ tag/apache-nifi.html.gz | Bin 0 -> 2905 bytes tag/arraymap.html | 296 ++++ tag/arraymap.html.gz | Bin 0 -> 2893 bytes tag/azure-certification.html | 296 ++++ tag/azure-certification.html.gz | Bin 0 -> 2905 bytes tag/azure-devops.html | 296 ++++ tag/azure-devops.html.gz | Bin 0 -> 2901 bytes tag/azure-fundamentals.html | 296 ++++ tag/azure-fundamentals.html.gz | Bin 0 -> 2904 bytes tag/azure.html | 326 +++++ tag/azure.html.gz | Bin 0 -> 3045 bytes tag/c.html | 306 ++++ tag/c.html.gz | Bin 0 -> 2956 bytes tag/cache.html | 296 ++++ tag/cache.html.gz | Bin 0 -> 2897 bytes tag/certification.html | 296 ++++ tag/certification.html.gz | Bin 0 -> 2885 bytes tag/convertjsontosql.html | 296 ++++ tag/convertjsontosql.html.gz | Bin 0 -> 2914 bytes tag/crash.html | 296 ++++ tag/crash.html.gz | Bin 0 -> 2893 bytes tag/discount.html | 296 ++++ tag/discount.html.gz | Bin 0 -> 2903 bytes tag/disper.html | 296 ++++ tag/disper.html.gz | Bin 0 -> 2896 bytes tag/docker.html | 296 ++++ tag/docker.html.gz | Bin 0 -> 2932 bytes tag/dotnet-core.html | 316 ++++ tag/dotnet-core.html.gz | Bin 0 -> 3042 bytes tag/dotnet.html | 316 ++++ tag/dotnet.html.gz | Bin 0 -> 3038 bytes tag/ef-core.html | 296 ++++ tag/ef-core.html.gz | Bin 0 -> 2920 bytes tag/entity-framework.html | 296 ++++ tag/entity-framework.html.gz | Bin 0 -> 2914 bytes tag/expressjs.html | 306 ++++ tag/expressjs.html.gz | Bin 0 -> 2947 bytes tag/external-display.html | 296 ++++ tag/external-display.html.gz | Bin 0 -> 2898 bytes tag/filesreadallbytes.html | 296 ++++ tag/filesreadallbytes.html.gz | Bin 0 -> 2909 bytes tag/firebase.html | 296 ++++ tag/firebase.html.gz | Bin 0 -> 2887 bytes tag/firefoxos.html | 286 ++++ tag/firefoxos.html.gz | Bin 0 -> 2824 bytes tag/flutter.html | 296 ++++ tag/flutter.html.gz | Bin 0 -> 2889 bytes tag/getchild-item.html | 296 ++++ tag/getchild-item.html.gz | Bin 0 -> 2883 bytes tag/git.html | 296 ++++ tag/git.html.gz | Bin 0 -> 2894 bytes tag/grepora.html | 296 ++++ tag/grepora.html.gz | Bin 0 -> 2881 bytes tag/hibernate.html | 296 ++++ tag/hibernate.html.gz | Bin 0 -> 2906 bytes tag/hooks.html | 296 ++++ tag/hooks.html.gz | Bin 0 -> 2894 bytes tag/html.html | 286 ++++ tag/html.html.gz | Bin 0 -> 2818 bytes tag/icmp-pinger-more-than-75.html | 296 ++++ tag/icmp-pinger-more-than-75.html.gz | Bin 0 -> 2913 bytes tag/icmp-pinger.html | 296 ++++ tag/icmp-pinger.html.gz | Bin 0 -> 2912 bytes tag/imagemin-pngquant.html | 306 ++++ tag/imagemin-pngquant.html.gz | Bin 0 -> 2956 bytes tag/imagemin.html | 306 ++++ tag/imagemin.html.gz | Bin 0 -> 2946 bytes tag/java.html | 316 ++++ tag/java.html.gz | Bin 0 -> 3069 bytes tag/javanetsocketexception.html | 296 ++++ tag/javanetsocketexception.html.gz | Bin 0 -> 2931 bytes tag/linux.html | 296 ++++ tag/linux.html.gz | Bin 0 -> 2895 bytes tag/low-memory.html | 296 ++++ tag/low-memory.html.gz | Bin 0 -> 2898 bytes tag/microservices.html | 306 ++++ tag/microservices.html.gz | Bin 0 -> 2944 bytes tag/microsoft.html | 296 ++++ tag/microsoft.html.gz | Bin 0 -> 2880 bytes tag/monitor-website.html | 296 ++++ tag/monitor-website.html.gz | Bin 0 -> 2900 bytes tag/mysql-dual-password.html | 296 ++++ tag/mysql-dual-password.html.gz | Bin 0 -> 2930 bytes tag/mysql-replication.html | 296 ++++ tag/mysql-replication.html.gz | Bin 0 -> 2897 bytes tag/mysql-restart.html | 296 ++++ tag/mysql-restart.html.gz | Bin 0 -> 2895 bytes tag/mysql.html | 326 +++++ tag/mysql.html.gz | Bin 0 -> 3073 bytes tag/net.html | 296 ++++ tag/net.html.gz | Bin 0 -> 2892 bytes tag/noclassdeffound.html | 296 ++++ tag/noclassdeffound.html.gz | Bin 0 -> 2900 bytes tag/node-js.html | 306 ++++ tag/node-js.html.gz | Bin 0 -> 2948 bytes tag/nodejs.html | 316 ++++ tag/nodejs.html.gz | Bin 0 -> 3011 bytes tag/openssh.html | 296 ++++ tag/openssh.html.gz | Bin 0 -> 2894 bytes tag/out-of-memory.html | 296 ++++ tag/out-of-memory.html.gz | Bin 0 -> 2892 bytes tag/outofmemory.html | 296 ++++ tag/outofmemory.html.gz | Bin 0 -> 2907 bytes tag/parcel.html | 296 ++++ tag/parcel.html.gz | Bin 0 -> 2906 bytes tag/poller-proccess-more-than-75.html | 296 ++++ tag/poller-proccess-more-than-75.html.gz | Bin 0 -> 2910 bytes tag/powershell-mail.html | 296 ++++ tag/powershell-mail.html.gz | Bin 0 -> 2900 bytes tag/powershell-monitoring.html | 296 ++++ tag/powershell-monitoring.html.gz | Bin 0 -> 2894 bytes tag/powershell.html | 306 ++++ tag/powershell.html.gz | Bin 0 -> 2934 bytes tag/pre-commit.html | 296 ++++ tag/pre-commit.html.gz | Bin 0 -> 2898 bytes tag/protocol-family-unavailable.html | 296 ++++ tag/protocol-family-unavailable.html.gz | Bin 0 -> 2934 bytes tag/rabbitmq.html | 306 ++++ tag/rabbitmq.html.gz | Bin 0 -> 2944 bytes tag/random.html | 296 ++++ tag/random.html.gz | Bin 0 -> 2881 bytes tag/raspberry.html | 286 ++++ tag/raspberry.html.gz | Bin 0 -> 2823 bytes tag/react.html | 296 ++++ tag/react.html.gz | Bin 0 -> 2905 bytes tag/remove-item.html | 296 ++++ tag/remove-item.html.gz | Bin 0 -> 2881 bytes tag/replacing-underscore.html | 296 ++++ tag/replacing-underscore.html.gz | Bin 0 -> 2908 bytes tag/resource-governor.html | 296 ++++ tag/resource-governor.html.gz | Bin 0 -> 2901 bytes tag/script.html | 296 ++++ tag/script.html.gz | Bin 0 -> 2876 bytes tag/shell.html | 326 +++++ tag/shell.html.gz | Bin 0 -> 3051 bytes tag/specify-columns.html | 296 ++++ tag/specify-columns.html.gz | Bin 0 -> 2918 bytes tag/sqlserver.html | 316 ++++ tag/sqlserver.html.gz | Bin 0 -> 3014 bytes tag/ssh-tunnel.html | 296 ++++ tag/ssh-tunnel.html.gz | Bin 0 -> 2897 bytes tag/ssh.html | 296 ++++ tag/ssh.html.gz | Bin 0 -> 2892 bytes tag/stop-proccess.html | 296 ++++ tag/stop-proccess.html.gz | Bin 0 -> 2883 bytes tag/the-database-principal-owns-a-schema.html | 296 ++++ ...e-database-principal-owns-a-schema.html.gz | Bin 0 -> 2911 bytes tag/through-firewall.html | 296 ++++ tag/through-firewall.html.gz | Bin 0 -> 2899 bytes tag/time-schedule-blocking.html | 296 ++++ tag/time-schedule-blocking.html.gz | Bin 0 -> 2908 bytes tag/tools.html | 286 ++++ tag/tools.html.gz | Bin 0 -> 2818 bytes tag/tunnel.html | 296 ++++ tag/tunnel.html.gz | Bin 0 -> 2894 bytes tag/user.html | 306 ++++ tag/user.html.gz | Bin 0 -> 2958 bytes tag/wildfly.html | 296 ++++ tag/wildfly.html.gz | Bin 0 -> 2931 bytes tag/yeoman.html | 296 ++++ tag/yeoman.html.gz | Bin 0 -> 2905 bytes tag/zabbix-poller.html | 296 ++++ tag/zabbix-poller.html.gz | Bin 0 -> 2905 bytes tag/zabbix-server.html | 296 ++++ tag/zabbix-server.html.gz | Bin 0 -> 2913 bytes tag/zabbix.html | 326 +++++ tag/zabbix.html.gz | Bin 0 -> 3027 bytes tags.html | 381 +++++ tags.html.gz | Bin 0 -> 4146 bytes the-power-of-powershell.html | 595 ++++++++ the-power-of-powershell.html.gz | Bin 0 -> 5598 bytes theme/css/pygments/autumn.css | 59 + theme/css/pygments/autumn.css.gz | Bin 0 -> 798 bytes theme/css/pygments/borland.css | 47 + theme/css/pygments/borland.css.gz | Bin 0 -> 666 bytes theme/css/pygments/bw.css | 35 + theme/css/pygments/bw.css.gz | Bin 0 -> 473 bytes theme/css/pygments/colorful.css | 62 + theme/css/pygments/colorful.css.gz | Bin 0 -> 935 bytes theme/css/pygments/default.css | 62 + theme/css/pygments/default.css.gz | Bin 0 -> 877 bytes theme/css/pygments/emacs.css | 62 + theme/css/pygments/emacs.css.gz | Bin 0 -> 859 bytes theme/css/pygments/friendly.css | 62 + theme/css/pygments/friendly.css.gz | Bin 0 -> 884 bytes theme/css/pygments/fruity.css | 70 + theme/css/pygments/fruity.css.gz | Bin 0 -> 837 bytes theme/css/pygments/manni.css | 62 + theme/css/pygments/manni.css.gz | Bin 0 -> 901 bytes theme/css/pygments/monokai.css | 60 + theme/css/pygments/monokai.css.gz | Bin 0 -> 742 bytes theme/css/pygments/murphy.css | 62 + theme/css/pygments/murphy.css.gz | Bin 0 -> 933 bytes theme/css/pygments/native.css | 1 + theme/css/pygments/native.css.gz | Bin 0 -> 464 bytes theme/css/pygments/pastie.css | 61 + theme/css/pygments/pastie.css.gz | Bin 0 -> 882 bytes theme/css/pygments/perldoc.css | 59 + theme/css/pygments/perldoc.css.gz | Bin 0 -> 831 bytes theme/css/pygments/solarizeddark.css | 70 + theme/css/pygments/solarizeddark.css.gz | Bin 0 -> 825 bytes theme/css/pygments/solarizedlight.css | 70 + theme/css/pygments/solarizedlight.css.gz | Bin 0 -> 825 bytes theme/css/pygments/tango.css | 70 + theme/css/pygments/tango.css.gz | Bin 0 -> 911 bytes theme/css/pygments/trac.css | 60 + theme/css/pygments/trac.css.gz | Bin 0 -> 800 bytes theme/css/pygments/vim.css | 70 + theme/css/pygments/vim.css.gz | Bin 0 -> 845 bytes theme/css/pygments/vs.css | 34 + theme/css/pygments/vs.css.gz | Bin 0 -> 493 bytes theme/css/pygments/zenburn.css | 70 + theme/css/pygments/zenburn.css.gz | Bin 0 -> 851 bytes theme/css/w3.css | 231 +++ theme/css/w3.css.gz | Bin 0 -> 5189 bytes top_level_statement_csharp_9.html | 513 +++++++ top_level_statement_csharp_9.html.gz | Bin 0 -> 5289 bytes using_git_hooks_easy_your_life.html | 515 +++++++ using_git_hooks_easy_your_life.html.gz | Bin 0 -> 5011 bytes ...ix-icmp-pinger-processes-more-than-75.html | 524 +++++++ ...icmp-pinger-processes-more-than-75.html.gz | Bin 0 -> 4734 bytes zabbix-poller-processes-more-than-75.html | 565 +++++++ zabbix-poller-processes-more-than-75.html.gz | Bin 0 -> 5168 bytes zabbix-running-on-low-memory-mode.html | 554 +++++++ zabbix-running-on-low-memory-mode.html.gz | Bin 0 -> 4875 bytes zabbix-server-out-of-memory-crash.html | 546 +++++++ zabbix-server-out-of-memory-crash.html.gz | Bin 0 -> 4845 bytes 1064 files changed, 175090 insertions(+) create mode 100644 CNAME create mode 100644 ads.txt create mode 100644 apache-nifi-json-to-sql-replacing-underscore.html create mode 100644 apache-nifi-json-to-sql-replacing-underscore.html.gz create mode 100644 archives.html create mode 100644 archives.html.gz create mode 100644 author/mauricio-camargo-sipmann.html create mode 100644 author/mauricio-camargo-sipmann.html.gz create mode 100644 author/mauricio-camargo-sipmann2.html create mode 100644 author/mauricio-camargo-sipmann2.html.gz create mode 100644 author/mauricio-camargo-sipmann3.html create mode 100644 author/mauricio-camargo-sipmann3.html.gz create mode 100644 authors.html create mode 100644 authors.html.gz create mode 100644 azure-data-fundamentals-certification-80-discount.html create mode 100644 azure-data-fundamentals-certification-80-discount.html.gz create mode 100644 blocking-user-on-sql-server-based-on-schedule.html create mode 100644 blocking-user-on-sql-server-based-on-schedule.html.gz create mode 100644 categories.html create mode 100644 categories.html.gz create mode 100644 category/azure.html create mode 100644 category/azure.html.gz create mode 100644 category/flutter.html create mode 100644 category/flutter.html.gz create mode 100644 category/front-end.html create mode 100644 category/front-end.html.gz create mode 100644 category/java.html create mode 100644 category/java.html.gz create mode 100644 category/linux.html create mode 100644 category/linux.html.gz create mode 100644 category/mysql.html create mode 100644 category/mysql.html.gz create mode 100644 category/net.html create mode 100644 category/net.html.gz create mode 100644 category/powershell.html create mode 100644 category/powershell.html.gz create mode 100644 category/random.html create mode 100644 category/random.html.gz create mode 100644 category/sql-server.html create mode 100644 category/sql-server.html.gz create mode 100644 category/tools.html create mode 100644 category/tools.html.gz create mode 100644 cloud-not-open-connection-java-mysql-hibernate.html create mode 100644 cloud-not-open-connection-java-mysql-hibernate.html.gz create mode 100644 connecting_to_database_through_ssh.html create mode 100644 connecting_to_database_through_ssh.html.gz create mode 100644 drafts/cloud-not-open-connection-java-mysql-hibernate-pt.html create mode 100644 drafts/cloud-not-open-connection-java-mysql-hibernate-pt.html.gz create mode 100644 drafts/cool-tools-pt.html create mode 100644 drafts/cool-tools-pt.html.gz create mode 100644 drafts/desenvolvendo-app-firefoxos-pt.html create mode 100644 drafts/desenvolvendo-app-firefoxos-pt.html.gz create mode 100644 drafts/editando-o-admin-do-django-pt.html create mode 100644 drafts/editando-o-admin-do-django-pt.html.gz create mode 100644 drafts/menu-dinamico-com-apps-do-django-pt.html create mode 100644 drafts/menu-dinamico-com-apps-do-django-pt.html.gz create mode 100644 drafts/my-azure-data-fundamentals-certification.html create mode 100644 drafts/my-azure-data-fundamentals-certification.html.gz create mode 100644 drafts/pages/businesscard.html create mode 100644 drafts/pages/businesscard.html.gz create mode 100644 drafts/pages/services.html create mode 100644 drafts/pages/services.html.gz create mode 100644 drafts/pages/servicos-pt.html create mode 100644 drafts/pages/servicos-pt.html.gz create mode 100644 drafts/schedule-blog-post-with-powershell-and-pelican.html create mode 100644 drafts/schedule-blog-post-with-powershell-and-pelican.html.gz create mode 100644 drafts/script-de-inicializacao-raspberry-pt.html create mode 100644 drafts/script-de-inicializacao-raspberry-pt.html.gz create mode 100644 en/apache-nifi-json-to-sql-replacing-underscore.html create mode 100644 en/apache-nifi-json-to-sql-replacing-underscore.html.gz create mode 100644 en/archives.html create mode 100644 en/archives.html.gz create mode 100644 en/author/mauricio-camargo-sipmann.html create mode 100644 en/author/mauricio-camargo-sipmann.html.gz create mode 100644 en/author/mauricio-camargo-sipmann2.html create mode 100644 en/author/mauricio-camargo-sipmann2.html.gz create mode 100644 en/author/mauricio-camargo-sipmann3.html create mode 100644 en/author/mauricio-camargo-sipmann3.html.gz create mode 100644 en/authors.html create mode 100644 en/authors.html.gz create mode 100644 en/azure-data-fundamentals-certification-80-discount.html create mode 100644 en/azure-data-fundamentals-certification-80-discount.html.gz create mode 100644 en/blocking-user-on-sql-server-based-on-schedule.html create mode 100644 en/blocking-user-on-sql-server-based-on-schedule.html.gz create mode 100644 en/categories.html create mode 100644 en/categories.html.gz create mode 100644 en/category/azure.html create mode 100644 en/category/azure.html.gz create mode 100644 en/category/flutter.html create mode 100644 en/category/flutter.html.gz create mode 100644 en/category/front-end.html create mode 100644 en/category/front-end.html.gz create mode 100644 en/category/java.html create mode 100644 en/category/java.html.gz create mode 100644 en/category/linux.html create mode 100644 en/category/linux.html.gz create mode 100644 en/category/mysql.html create mode 100644 en/category/mysql.html.gz create mode 100644 en/category/net.html create mode 100644 en/category/net.html.gz create mode 100644 en/category/powershell.html create mode 100644 en/category/powershell.html.gz create mode 100644 en/category/random.html create mode 100644 en/category/random.html.gz create mode 100644 en/category/sql-server.html create mode 100644 en/category/sql-server.html.gz create mode 100644 en/category/tools.html create mode 100644 en/category/tools.html.gz create mode 100644 en/cloud-not-open-connection-java-mysql-hibernate.html create mode 100644 en/cloud-not-open-connection-java-mysql-hibernate.html.gz create mode 100644 en/connecting_to_database_through_ssh.html create mode 100644 en/connecting_to_database_through_ssh.html.gz create mode 100644 en/drafts/cloud-not-open-connection-java-mysql-hibernate-pt.html create mode 100644 en/drafts/cloud-not-open-connection-java-mysql-hibernate-pt.html.gz create mode 100644 en/drafts/cool-tools-pt.html create mode 100644 en/drafts/cool-tools-pt.html.gz create mode 100644 en/drafts/desenvolvendo-app-firefoxos-pt.html create mode 100644 en/drafts/desenvolvendo-app-firefoxos-pt.html.gz create mode 100644 en/drafts/editando-o-admin-do-django-pt.html create mode 100644 en/drafts/editando-o-admin-do-django-pt.html.gz create mode 100644 en/drafts/menu-dinamico-com-apps-do-django-pt.html create mode 100644 en/drafts/menu-dinamico-com-apps-do-django-pt.html.gz create mode 100644 en/drafts/my-azure-data-fundamentals-certification.html create mode 100644 en/drafts/my-azure-data-fundamentals-certification.html.gz create mode 100644 en/drafts/pages/businesscard.html create mode 100644 en/drafts/pages/businesscard.html.gz create mode 100644 en/drafts/pages/services.html create mode 100644 en/drafts/pages/services.html.gz create mode 100644 en/drafts/pages/servicos-pt.html create mode 100644 en/drafts/pages/servicos-pt.html.gz create mode 100644 en/drafts/schedule-blog-post-with-powershell-and-pelican.html create mode 100644 en/drafts/schedule-blog-post-with-powershell-and-pelican.html.gz create mode 100644 en/drafts/script-de-inicializacao-raspberry-pt.html create mode 100644 en/drafts/script-de-inicializacao-raspberry-pt.html.gz create mode 100644 en/feeds/all-en.atom.xml create mode 100644 en/feeds/all-en.atom.xml.gz create mode 100644 en/feeds/all.atom.xml create mode 100644 en/feeds/all.atom.xml.gz create mode 100644 en/feeds/azure.atom.xml create mode 100644 en/feeds/azure.atom.xml.gz create mode 100644 en/feeds/flutter.atom.xml create mode 100644 en/feeds/flutter.atom.xml.gz create mode 100644 en/feeds/front-end.atom.xml create mode 100644 en/feeds/front-end.atom.xml.gz create mode 100644 en/feeds/java.atom.xml create mode 100644 en/feeds/java.atom.xml.gz create mode 100644 en/feeds/linux.atom.xml create mode 100644 en/feeds/linux.atom.xml.gz create mode 100644 en/feeds/mauricio-camargo-sipmann.atom.xml create mode 100644 en/feeds/mauricio-camargo-sipmann.atom.xml.gz create mode 100644 en/feeds/mauricio-camargo-sipmann.rss.xml create mode 100644 en/feeds/mauricio-camargo-sipmann.rss.xml.gz create mode 100644 en/feeds/mysql.atom.xml create mode 100644 en/feeds/mysql.atom.xml.gz create mode 100644 en/feeds/net.atom.xml create mode 100644 en/feeds/net.atom.xml.gz create mode 100644 en/feeds/powershell.atom.xml create mode 100644 en/feeds/powershell.atom.xml.gz create mode 100644 en/feeds/random.atom.xml create mode 100644 en/feeds/random.atom.xml.gz create mode 100644 en/feeds/sql-server.atom.xml create mode 100644 en/feeds/sql-server.atom.xml.gz create mode 100644 en/feeds/tools.atom.xml create mode 100644 en/feeds/tools.atom.xml.gz create mode 100644 en/flutter_with_firebase_auth_crashing.html create mode 100644 en/flutter_with_firebase_auth_crashing.html.gz create mode 100644 en/index.html create mode 100644 en/index.html.gz create mode 100644 en/index2.html create mode 100644 en/index2.html.gz create mode 100644 en/index3.html create mode 100644 en/index3.html.gz create mode 100644 en/limiting-connection-resources-sql-server.html create mode 100644 en/limiting-connection-resources-sql-server.html.gz create mode 100644 en/linux-external-display-with-disper.html create mode 100644 en/linux-external-display-with-disper.html.gz create mode 100644 en/microservices_nodejs_express_rabbitmq_part_1.html create mode 100644 en/microservices_nodejs_express_rabbitmq_part_1.html.gz create mode 100644 en/microservices_nodejs_express_rabbitmq_part_2.html create mode 100644 en/microservices_nodejs_express_rabbitmq_part_2.html.gz create mode 100644 en/microsoft-against-covid.html create mode 100644 en/microsoft-against-covid.html.gz create mode 100644 en/monitoring-mysql-replication-with-powershell.html create mode 100644 en/monitoring-mysql-replication-with-powershell.html.gz create mode 100644 en/monitoring-mysql-restarts-with-powershell.html create mode 100644 en/monitoring-mysql-restarts-with-powershell.html.gz create mode 100644 en/monitoring-website-heath-with-azure-functions.html create mode 100644 en/monitoring-website-heath-with-azure-functions.html.gz create mode 100644 en/mysql-dual-password-functionality.html create mode 100644 en/mysql-dual-password-functionality.html.gz create mode 100644 en/now_posting_on_grepora.html create mode 100644 en/now_posting_on_grepora.html.gz create mode 100644 en/pages/about.html create mode 100644 en/pages/about.html.gz create mode 100644 en/pages/cartao-pt.html create mode 100644 en/pages/cartao-pt.html.gz create mode 100644 en/reading-files-java-readAllBytes-outofmemory.html create mode 100644 en/reading-files-java-readAllBytes-outofmemory.html.gz create mode 100644 en/removing-user-from-sql-server-database.html create mode 100644 en/removing-user-from-sql-server-database.html.gz create mode 100644 en/scaffolding_react_app_with_parcel_yeoman.html create mode 100644 en/scaffolding_react_app_with_parcel_yeoman.html.gz create mode 100644 en/select_specific_fields_with_efcore.html create mode 100644 en/select_specific_fields_with_efcore.html.gz create mode 100644 en/sitemap.xml create mode 100644 en/sitemap.xml.gz create mode 100644 en/socketException-protocol-family-unavailable-java-docker-wildfly.html create mode 100644 en/socketException-protocol-family-unavailable-java-docker-wildfly.html.gz create mode 100644 en/tag/apache-nifi.html create mode 100644 en/tag/apache-nifi.html.gz create mode 100644 en/tag/arraymap.html create mode 100644 en/tag/arraymap.html.gz create mode 100644 en/tag/azure-certification.html create mode 100644 en/tag/azure-certification.html.gz create mode 100644 en/tag/azure-devops.html create mode 100644 en/tag/azure-devops.html.gz create mode 100644 en/tag/azure-fundamentals.html create mode 100644 en/tag/azure-fundamentals.html.gz create mode 100644 en/tag/azure.html create mode 100644 en/tag/azure.html.gz create mode 100644 en/tag/c.html create mode 100644 en/tag/c.html.gz create mode 100644 en/tag/cache.html create mode 100644 en/tag/cache.html.gz create mode 100644 en/tag/certification.html create mode 100644 en/tag/certification.html.gz create mode 100644 en/tag/convertjsontosql.html create mode 100644 en/tag/convertjsontosql.html.gz create mode 100644 en/tag/crash.html create mode 100644 en/tag/crash.html.gz create mode 100644 en/tag/discount.html create mode 100644 en/tag/discount.html.gz create mode 100644 en/tag/disper.html create mode 100644 en/tag/disper.html.gz create mode 100644 en/tag/docker.html create mode 100644 en/tag/docker.html.gz create mode 100644 en/tag/dotnet-core.html create mode 100644 en/tag/dotnet-core.html.gz create mode 100644 en/tag/dotnet.html create mode 100644 en/tag/dotnet.html.gz create mode 100644 en/tag/ef-core.html create mode 100644 en/tag/ef-core.html.gz create mode 100644 en/tag/entity-framework.html create mode 100644 en/tag/entity-framework.html.gz create mode 100644 en/tag/expressjs.html create mode 100644 en/tag/expressjs.html.gz create mode 100644 en/tag/external-display.html create mode 100644 en/tag/external-display.html.gz create mode 100644 en/tag/filesreadallbytes.html create mode 100644 en/tag/filesreadallbytes.html.gz create mode 100644 en/tag/firebase.html create mode 100644 en/tag/firebase.html.gz create mode 100644 en/tag/firefoxos.html create mode 100644 en/tag/firefoxos.html.gz create mode 100644 en/tag/flutter.html create mode 100644 en/tag/flutter.html.gz create mode 100644 en/tag/getchild-item.html create mode 100644 en/tag/getchild-item.html.gz create mode 100644 en/tag/git.html create mode 100644 en/tag/git.html.gz create mode 100644 en/tag/grepora.html create mode 100644 en/tag/grepora.html.gz create mode 100644 en/tag/hibernate.html create mode 100644 en/tag/hibernate.html.gz create mode 100644 en/tag/hooks.html create mode 100644 en/tag/hooks.html.gz create mode 100644 en/tag/html.html create mode 100644 en/tag/html.html.gz create mode 100644 en/tag/icmp-pinger-more-than-75.html create mode 100644 en/tag/icmp-pinger-more-than-75.html.gz create mode 100644 en/tag/icmp-pinger.html create mode 100644 en/tag/icmp-pinger.html.gz create mode 100644 en/tag/imagemin-pngquant.html create mode 100644 en/tag/imagemin-pngquant.html.gz create mode 100644 en/tag/imagemin.html create mode 100644 en/tag/imagemin.html.gz create mode 100644 en/tag/java.html create mode 100644 en/tag/java.html.gz create mode 100644 en/tag/javanetsocketexception.html create mode 100644 en/tag/javanetsocketexception.html.gz create mode 100644 en/tag/linux.html create mode 100644 en/tag/linux.html.gz create mode 100644 en/tag/low-memory.html create mode 100644 en/tag/low-memory.html.gz create mode 100644 en/tag/microservices.html create mode 100644 en/tag/microservices.html.gz create mode 100644 en/tag/microsoft.html create mode 100644 en/tag/microsoft.html.gz create mode 100644 en/tag/monitor-website.html create mode 100644 en/tag/monitor-website.html.gz create mode 100644 en/tag/mysql-dual-password.html create mode 100644 en/tag/mysql-dual-password.html.gz create mode 100644 en/tag/mysql-replication.html create mode 100644 en/tag/mysql-replication.html.gz create mode 100644 en/tag/mysql-restart.html create mode 100644 en/tag/mysql-restart.html.gz create mode 100644 en/tag/mysql.html create mode 100644 en/tag/mysql.html.gz create mode 100644 en/tag/net.html create mode 100644 en/tag/net.html.gz create mode 100644 en/tag/noclassdeffound.html create mode 100644 en/tag/noclassdeffound.html.gz create mode 100644 en/tag/node-js.html create mode 100644 en/tag/node-js.html.gz create mode 100644 en/tag/nodejs.html create mode 100644 en/tag/nodejs.html.gz create mode 100644 en/tag/openssh.html create mode 100644 en/tag/openssh.html.gz create mode 100644 en/tag/out-of-memory.html create mode 100644 en/tag/out-of-memory.html.gz create mode 100644 en/tag/outofmemory.html create mode 100644 en/tag/outofmemory.html.gz create mode 100644 en/tag/parcel.html create mode 100644 en/tag/parcel.html.gz create mode 100644 en/tag/poller-proccess-more-than-75.html create mode 100644 en/tag/poller-proccess-more-than-75.html.gz create mode 100644 en/tag/powershell-mail.html create mode 100644 en/tag/powershell-mail.html.gz create mode 100644 en/tag/powershell-monitoring.html create mode 100644 en/tag/powershell-monitoring.html.gz create mode 100644 en/tag/powershell.html create mode 100644 en/tag/powershell.html.gz create mode 100644 en/tag/pre-commit.html create mode 100644 en/tag/pre-commit.html.gz create mode 100644 en/tag/protocol-family-unavailable.html create mode 100644 en/tag/protocol-family-unavailable.html.gz create mode 100644 en/tag/rabbitmq.html create mode 100644 en/tag/rabbitmq.html.gz create mode 100644 en/tag/random.html create mode 100644 en/tag/random.html.gz create mode 100644 en/tag/raspberry.html create mode 100644 en/tag/raspberry.html.gz create mode 100644 en/tag/react.html create mode 100644 en/tag/react.html.gz create mode 100644 en/tag/remove-item.html create mode 100644 en/tag/remove-item.html.gz create mode 100644 en/tag/replacing-underscore.html create mode 100644 en/tag/replacing-underscore.html.gz create mode 100644 en/tag/resource-governor.html create mode 100644 en/tag/resource-governor.html.gz create mode 100644 en/tag/script.html create mode 100644 en/tag/script.html.gz create mode 100644 en/tag/shell.html create mode 100644 en/tag/shell.html.gz create mode 100644 en/tag/specify-columns.html create mode 100644 en/tag/specify-columns.html.gz create mode 100644 en/tag/sqlserver.html create mode 100644 en/tag/sqlserver.html.gz create mode 100644 en/tag/ssh-tunnel.html create mode 100644 en/tag/ssh-tunnel.html.gz create mode 100644 en/tag/ssh.html create mode 100644 en/tag/ssh.html.gz create mode 100644 en/tag/stop-proccess.html create mode 100644 en/tag/stop-proccess.html.gz create mode 100644 en/tag/the-database-principal-owns-a-schema.html create mode 100644 en/tag/the-database-principal-owns-a-schema.html.gz create mode 100644 en/tag/through-firewall.html create mode 100644 en/tag/through-firewall.html.gz create mode 100644 en/tag/time-schedule-blocking.html create mode 100644 en/tag/time-schedule-blocking.html.gz create mode 100644 en/tag/tools.html create mode 100644 en/tag/tools.html.gz create mode 100644 en/tag/tunnel.html create mode 100644 en/tag/tunnel.html.gz create mode 100644 en/tag/user.html create mode 100644 en/tag/user.html.gz create mode 100644 en/tag/wildfly.html create mode 100644 en/tag/wildfly.html.gz create mode 100644 en/tag/yeoman.html create mode 100644 en/tag/yeoman.html.gz create mode 100644 en/tag/zabbix-poller.html create mode 100644 en/tag/zabbix-poller.html.gz create mode 100644 en/tag/zabbix-server.html create mode 100644 en/tag/zabbix-server.html.gz create mode 100644 en/tag/zabbix.html create mode 100644 en/tag/zabbix.html.gz create mode 100644 en/tags.html create mode 100644 en/tags.html.gz create mode 100644 en/the-power-of-powershell.html create mode 100644 en/the-power-of-powershell.html.gz create mode 100644 en/top_level_statement_csharp_9.html create mode 100644 en/top_level_statement_csharp_9.html.gz create mode 100644 en/using_git_hooks_easy_your_life.html create mode 100644 en/using_git_hooks_easy_your_life.html.gz create mode 100644 en/zabbix-icmp-pinger-processes-more-than-75.html create mode 100644 en/zabbix-icmp-pinger-processes-more-than-75.html.gz create mode 100644 en/zabbix-poller-processes-more-than-75.html create mode 100644 en/zabbix-poller-processes-more-than-75.html.gz create mode 100644 en/zabbix-running-on-low-memory-mode.html create mode 100644 en/zabbix-running-on-low-memory-mode.html.gz create mode 100644 en/zabbix-server-out-of-memory-crash.html create mode 100644 en/zabbix-server-out-of-memory-crash.html.gz create mode 100644 feeds/all-en.atom.xml create mode 100644 feeds/all-en.atom.xml.gz create mode 100644 feeds/all.atom.xml create mode 100644 feeds/all.atom.xml.gz create mode 100644 feeds/azure.atom.xml create mode 100644 feeds/azure.atom.xml.gz create mode 100644 feeds/flutter.atom.xml create mode 100644 feeds/flutter.atom.xml.gz create mode 100644 feeds/front-end.atom.xml create mode 100644 feeds/front-end.atom.xml.gz create mode 100644 feeds/java.atom.xml create mode 100644 feeds/java.atom.xml.gz create mode 100644 feeds/linux.atom.xml create mode 100644 feeds/linux.atom.xml.gz create mode 100644 feeds/mauricio-camargo-sipmann.atom.xml create mode 100644 feeds/mauricio-camargo-sipmann.atom.xml.gz create mode 100644 feeds/mauricio-camargo-sipmann.rss.xml create mode 100644 feeds/mauricio-camargo-sipmann.rss.xml.gz create mode 100644 feeds/mysql.atom.xml create mode 100644 feeds/mysql.atom.xml.gz create mode 100644 feeds/net.atom.xml create mode 100644 feeds/net.atom.xml.gz create mode 100644 feeds/powershell.atom.xml create mode 100644 feeds/powershell.atom.xml.gz create mode 100644 feeds/random.atom.xml create mode 100644 feeds/random.atom.xml.gz create mode 100644 feeds/sql-server.atom.xml create mode 100644 feeds/sql-server.atom.xml.gz create mode 100644 feeds/tools.atom.xml create mode 100644 feeds/tools.atom.xml.gz create mode 100644 flutter_with_firebase_auth_crashing.html create mode 100644 flutter_with_firebase_auth_crashing.html.gz create mode 100644 images/Resultado.PNG create mode 100644 images/Resultado.PNG.gz create mode 100644 images/admin_modificado.png create mode 100644 images/apache_nifi_jsontosql.png create mode 100644 images/app_inicial.png create mode 100644 images/app_visual_1.png create mode 100644 images/azure-data-fundamentals-600x600.png create mode 100644 images/azure_certification.png create mode 100644 images/azure_functions.gif create mode 100644 images/azure_monitoring.png create mode 100644 images/block_sql_server_user.png create mode 100644 images/bug.png create mode 100644 images/csharp_toplevel.png create mode 100644 images/deletar_mysql_monitorin_powershell.png create mode 100644 images/deletar_mysql_monitoring_restart.png create mode 100644 images/deletar_powershell.png create mode 100644 images/ef_core_allcolumns.png create mode 100644 images/ef_core_less_columns.png create mode 100644 images/efcore_select_fields.png create mode 100644 images/header.jpg create mode 100644 images/header.webp create mode 100644 images/header.webp.new create mode 100644 images/header.webp.new.gz create mode 100644 images/icons/chart-pie-solid.svg create mode 100644 images/icons/chart-pie-solid.svg.gz create mode 100644 images/icons/cloud-solid.svg create mode 100644 images/icons/cloud-solid.svg.gz create mode 100644 images/icons/database-solid.svg create mode 100644 images/icons/database-solid.svg.gz create mode 100644 images/menu_apps.png create mode 100644 images/microservice_postman.png create mode 100644 images/microservices_rabit_pt1.png create mode 100644 images/mysql_dual_password.png create mode 100644 images/mysql_monitorin_powershell.webp create mode 100644 images/mysql_monitoring_restart.webp create mode 100644 images/og/java-wildfly.png create mode 100644 images/og/mysql-permission.png create mode 100644 images/og/yo-reac-gen.png create mode 100644 images/owner.PNG create mode 100644 images/owner.PNG.gz create mode 100644 images/powershell.webp create mode 100644 images/rabbitmq.png create mode 100644 images/sipmann.com.png create mode 100644 images/sql-pool.png create mode 100644 images/zabbix_cache_filling.png create mode 100644 images/zabbix_low_memory.png create mode 100644 images/zabbix_low_memory_mode.png create mode 100644 images/zabbix_low_memory_solved.png create mode 100644 images/zabbix_pinger01.png create mode 100644 images/zabbix_pooler.png create mode 100644 images/zabbix_pooler_3.png create mode 100644 images/zabbix_pooler_4.png create mode 100644 index.html create mode 100644 index.html.gz create mode 100644 index2.html create mode 100644 index2.html.gz create mode 100644 index3.html create mode 100644 index3.html.gz create mode 100644 limiting-connection-resources-sql-server.html create mode 100644 limiting-connection-resources-sql-server.html.gz create mode 100644 linux-external-display-with-disper.html create mode 100644 linux-external-display-with-disper.html.gz create mode 100644 microservices_nodejs_express_rabbitmq_part_1.html create mode 100644 microservices_nodejs_express_rabbitmq_part_1.html.gz create mode 100644 microservices_nodejs_express_rabbitmq_part_2.html create mode 100644 microservices_nodejs_express_rabbitmq_part_2.html.gz create mode 100644 microsoft-against-covid.html create mode 100644 microsoft-against-covid.html.gz create mode 100644 monitoring-mysql-replication-with-powershell.html create mode 100644 monitoring-mysql-replication-with-powershell.html.gz create mode 100644 monitoring-mysql-restarts-with-powershell.html create mode 100644 monitoring-mysql-restarts-with-powershell.html.gz create mode 100644 monitoring-website-heath-with-azure-functions.html create mode 100644 monitoring-website-heath-with-azure-functions.html.gz create mode 100644 mysql-dual-password-functionality.html create mode 100644 mysql-dual-password-functionality.html.gz create mode 100644 now_posting_on_grepora.html create mode 100644 now_posting_on_grepora.html.gz create mode 100644 pages/about.html create mode 100644 pages/about.html.gz create mode 100644 pages/cartao-pt.html create mode 100644 pages/cartao-pt.html.gz create mode 100644 pt/apache-nifi-json-to-sql-replacing-underscore.html create mode 100644 pt/apache-nifi-json-to-sql-replacing-underscore.html.gz create mode 100644 pt/archives.html create mode 100644 pt/archives.html.gz create mode 100644 pt/author/mauricio-camargo-sipmann.html create mode 100644 pt/author/mauricio-camargo-sipmann.html.gz create mode 100644 pt/author/mauricio-camargo-sipmann2.html create mode 100644 pt/author/mauricio-camargo-sipmann2.html.gz create mode 100644 pt/author/mauricio-camargo-sipmann3.html create mode 100644 pt/author/mauricio-camargo-sipmann3.html.gz create mode 100644 pt/authors.html create mode 100644 pt/authors.html.gz create mode 100644 pt/blocking-user-on-sql-server-based-on-schedule.html create mode 100644 pt/blocking-user-on-sql-server-based-on-schedule.html.gz create mode 100644 pt/categories.html create mode 100644 pt/categories.html.gz create mode 100644 pt/category/azure.html create mode 100644 pt/category/azure.html.gz create mode 100644 pt/category/firefoxos.html create mode 100644 pt/category/firefoxos.html.gz create mode 100644 pt/category/java.html create mode 100644 pt/category/java.html.gz create mode 100644 pt/category/linux.html create mode 100644 pt/category/linux.html.gz create mode 100644 pt/category/mysql.html create mode 100644 pt/category/mysql.html.gz create mode 100644 pt/category/net.html create mode 100644 pt/category/net.html.gz create mode 100644 pt/category/powershell.html create mode 100644 pt/category/powershell.html.gz create mode 100644 pt/category/python.html create mode 100644 pt/category/python.html.gz create mode 100644 pt/category/shell.html create mode 100644 pt/category/shell.html.gz create mode 100644 pt/category/sql-server.html create mode 100644 pt/category/sql-server.html.gz create mode 100644 pt/category/tools.html create mode 100644 pt/category/tools.html.gz create mode 100644 pt/cool-tools.html create mode 100644 pt/cool-tools.html.gz create mode 100644 pt/desenvolvendo-app-firefoxos.html create mode 100644 pt/desenvolvendo-app-firefoxos.html.gz create mode 100644 pt/drafts/azure-data-fundamentals-certification-80-discount-en.html create mode 100644 pt/drafts/azure-data-fundamentals-certification-80-discount-en.html.gz create mode 100644 pt/drafts/cloud-not-open-connection-java-mysql-hibernate-en.html create mode 100644 pt/drafts/cloud-not-open-connection-java-mysql-hibernate-en.html.gz create mode 100644 pt/drafts/cloud-not-open-connection-java-mysql-hibernate.html create mode 100644 pt/drafts/cloud-not-open-connection-java-mysql-hibernate.html.gz create mode 100644 pt/drafts/connecting_to_database_through_ssh-en.html create mode 100644 pt/drafts/connecting_to_database_through_ssh-en.html.gz create mode 100644 pt/drafts/flutter_with_firebase_auth_crashing-en.html create mode 100644 pt/drafts/flutter_with_firebase_auth_crashing-en.html.gz create mode 100644 pt/drafts/limiting-connection-resources-sql-server-en.html create mode 100644 pt/drafts/limiting-connection-resources-sql-server-en.html.gz create mode 100644 pt/drafts/linux-external-display-with-disper-en.html create mode 100644 pt/drafts/linux-external-display-with-disper-en.html.gz create mode 100644 pt/drafts/microservices_nodejs_express_rabbitmq_part_1-en.html create mode 100644 pt/drafts/microservices_nodejs_express_rabbitmq_part_1-en.html.gz create mode 100644 pt/drafts/microservices_nodejs_express_rabbitmq_part_2-en.html create mode 100644 pt/drafts/microservices_nodejs_express_rabbitmq_part_2-en.html.gz create mode 100644 pt/drafts/my-azure-data-fundamentals-certification.html create mode 100644 pt/drafts/my-azure-data-fundamentals-certification.html.gz create mode 100644 pt/drafts/now_posting_on_grepora-en.html create mode 100644 pt/drafts/now_posting_on_grepora-en.html.gz create mode 100644 pt/drafts/pages/businesscard-en.html create mode 100644 pt/drafts/pages/businesscard-en.html.gz create mode 100644 pt/drafts/pages/services-en.html create mode 100644 pt/drafts/pages/services-en.html.gz create mode 100644 pt/drafts/pages/servicos.html create mode 100644 pt/drafts/pages/servicos.html.gz create mode 100644 pt/drafts/reading-files-java-readAllBytes-outofmemory-en.html create mode 100644 pt/drafts/reading-files-java-readAllBytes-outofmemory-en.html.gz create mode 100644 pt/drafts/scaffolding_react_app_with_parcel_yeoman-en.html create mode 100644 pt/drafts/scaffolding_react_app_with_parcel_yeoman-en.html.gz create mode 100644 pt/drafts/schedule-blog-post-with-powershell-and-pelican-en.html create mode 100644 pt/drafts/schedule-blog-post-with-powershell-and-pelican-en.html.gz create mode 100644 pt/drafts/using_git_hooks_easy_your_life-en.html create mode 100644 pt/drafts/using_git_hooks_easy_your_life-en.html.gz create mode 100644 pt/editando-o-admin-do-django.html create mode 100644 pt/editando-o-admin-do-django.html.gz create mode 100644 pt/feeds/all-pt.atom.xml create mode 100644 pt/feeds/all-pt.atom.xml.gz create mode 100644 pt/feeds/all.atom.xml create mode 100644 pt/feeds/all.atom.xml.gz create mode 100644 pt/feeds/azure.atom.xml create mode 100644 pt/feeds/azure.atom.xml.gz create mode 100644 pt/feeds/firefoxos.atom.xml create mode 100644 pt/feeds/firefoxos.atom.xml.gz create mode 100644 pt/feeds/java.atom.xml create mode 100644 pt/feeds/java.atom.xml.gz create mode 100644 pt/feeds/linux.atom.xml create mode 100644 pt/feeds/linux.atom.xml.gz create mode 100644 pt/feeds/mauricio-camargo-sipmann.atom.xml create mode 100644 pt/feeds/mauricio-camargo-sipmann.atom.xml.gz create mode 100644 pt/feeds/mauricio-camargo-sipmann.rss.xml create mode 100644 pt/feeds/mauricio-camargo-sipmann.rss.xml.gz create mode 100644 pt/feeds/mysql.atom.xml create mode 100644 pt/feeds/mysql.atom.xml.gz create mode 100644 pt/feeds/net.atom.xml create mode 100644 pt/feeds/net.atom.xml.gz create mode 100644 pt/feeds/powershell.atom.xml create mode 100644 pt/feeds/powershell.atom.xml.gz create mode 100644 pt/feeds/python.atom.xml create mode 100644 pt/feeds/python.atom.xml.gz create mode 100644 pt/feeds/shell.atom.xml create mode 100644 pt/feeds/shell.atom.xml.gz create mode 100644 pt/feeds/sql-server.atom.xml create mode 100644 pt/feeds/sql-server.atom.xml.gz create mode 100644 pt/feeds/tools.atom.xml create mode 100644 pt/feeds/tools.atom.xml.gz create mode 100644 pt/index.html create mode 100644 pt/index.html.gz create mode 100644 pt/index2.html create mode 100644 pt/index2.html.gz create mode 100644 pt/index3.html create mode 100644 pt/index3.html.gz create mode 100644 pt/menu-dinamico-com-apps-do-django.html create mode 100644 pt/menu-dinamico-com-apps-do-django.html.gz create mode 100644 pt/microsoft-against-covid.html create mode 100644 pt/microsoft-against-covid.html.gz create mode 100644 pt/monitoring-mysql-replication-with-powershell.html create mode 100644 pt/monitoring-mysql-replication-with-powershell.html.gz create mode 100644 pt/monitoring-mysql-restarts-with-powershell.html create mode 100644 pt/monitoring-mysql-restarts-with-powershell.html.gz create mode 100644 pt/monitoring-website-heath-with-azure-functions.html create mode 100644 pt/monitoring-website-heath-with-azure-functions.html.gz create mode 100644 pt/mysql-dual-password-functionality.html create mode 100644 pt/mysql-dual-password-functionality.html.gz create mode 100644 pt/pages/about-en.html create mode 100644 pt/pages/about-en.html.gz create mode 100644 pt/pages/cartao.html create mode 100644 pt/pages/cartao.html.gz create mode 100644 pt/removing-user-from-sql-server-database.html create mode 100644 pt/removing-user-from-sql-server-database.html.gz create mode 100644 pt/script-de-inicializacao-raspberry.html create mode 100644 pt/script-de-inicializacao-raspberry.html.gz create mode 100644 pt/select_specific_fields_with_efcore.html create mode 100644 pt/select_specific_fields_with_efcore.html.gz create mode 100644 pt/sitemap.xml create mode 100644 pt/sitemap.xml.gz create mode 100644 pt/socketException-protocol-family-unavailable-java-docker-wildfly.html create mode 100644 pt/socketException-protocol-family-unavailable-java-docker-wildfly.html.gz create mode 100644 pt/tag/apache-nifi.html create mode 100644 pt/tag/apache-nifi.html.gz create mode 100644 pt/tag/arraymap.html create mode 100644 pt/tag/arraymap.html.gz create mode 100644 pt/tag/azure-certification.html create mode 100644 pt/tag/azure-certification.html.gz create mode 100644 pt/tag/azure-devops.html create mode 100644 pt/tag/azure-devops.html.gz create mode 100644 pt/tag/azure-fundamentals.html create mode 100644 pt/tag/azure-fundamentals.html.gz create mode 100644 pt/tag/azure.html create mode 100644 pt/tag/azure.html.gz create mode 100644 pt/tag/c.html create mode 100644 pt/tag/c.html.gz create mode 100644 pt/tag/cache.html create mode 100644 pt/tag/cache.html.gz create mode 100644 pt/tag/certification.html create mode 100644 pt/tag/certification.html.gz create mode 100644 pt/tag/convertjsontosql.html create mode 100644 pt/tag/convertjsontosql.html.gz create mode 100644 pt/tag/crash.html create mode 100644 pt/tag/crash.html.gz create mode 100644 pt/tag/discount.html create mode 100644 pt/tag/discount.html.gz create mode 100644 pt/tag/disper.html create mode 100644 pt/tag/disper.html.gz create mode 100644 pt/tag/django-admin.html create mode 100644 pt/tag/django-admin.html.gz create mode 100644 pt/tag/django.html create mode 100644 pt/tag/django.html.gz create mode 100644 pt/tag/docker.html create mode 100644 pt/tag/docker.html.gz create mode 100644 pt/tag/dotnet-core.html create mode 100644 pt/tag/dotnet-core.html.gz create mode 100644 pt/tag/dotnet.html create mode 100644 pt/tag/dotnet.html.gz create mode 100644 pt/tag/ef-core.html create mode 100644 pt/tag/ef-core.html.gz create mode 100644 pt/tag/entity-framework.html create mode 100644 pt/tag/entity-framework.html.gz create mode 100644 pt/tag/expressjs.html create mode 100644 pt/tag/expressjs.html.gz create mode 100644 pt/tag/external-display.html create mode 100644 pt/tag/external-display.html.gz create mode 100644 pt/tag/filesreadallbytes.html create mode 100644 pt/tag/filesreadallbytes.html.gz create mode 100644 pt/tag/firebase.html create mode 100644 pt/tag/firebase.html.gz create mode 100644 pt/tag/firefoxos.html create mode 100644 pt/tag/firefoxos.html.gz create mode 100644 pt/tag/flutter.html create mode 100644 pt/tag/flutter.html.gz create mode 100644 pt/tag/getchild-item.html create mode 100644 pt/tag/getchild-item.html.gz create mode 100644 pt/tag/git.html create mode 100644 pt/tag/git.html.gz create mode 100644 pt/tag/grepora.html create mode 100644 pt/tag/grepora.html.gz create mode 100644 pt/tag/hooks.html create mode 100644 pt/tag/hooks.html.gz create mode 100644 pt/tag/html.html create mode 100644 pt/tag/html.html.gz create mode 100644 pt/tag/icmp-pinger-more-than-75.html create mode 100644 pt/tag/icmp-pinger-more-than-75.html.gz create mode 100644 pt/tag/icmp-pinger.html create mode 100644 pt/tag/icmp-pinger.html.gz create mode 100644 pt/tag/imagemin-pngquant.html create mode 100644 pt/tag/imagemin-pngquant.html.gz create mode 100644 pt/tag/imagemin.html create mode 100644 pt/tag/imagemin.html.gz create mode 100644 pt/tag/java.html create mode 100644 pt/tag/java.html.gz create mode 100644 pt/tag/javanetsocketexception.html create mode 100644 pt/tag/javanetsocketexception.html.gz create mode 100644 pt/tag/linux.html create mode 100644 pt/tag/linux.html.gz create mode 100644 pt/tag/low-memory.html create mode 100644 pt/tag/low-memory.html.gz create mode 100644 pt/tag/microservices.html create mode 100644 pt/tag/microservices.html.gz create mode 100644 pt/tag/microsoft.html create mode 100644 pt/tag/microsoft.html.gz create mode 100644 pt/tag/monitor-website.html create mode 100644 pt/tag/monitor-website.html.gz create mode 100644 pt/tag/mysql-dual-password.html create mode 100644 pt/tag/mysql-dual-password.html.gz create mode 100644 pt/tag/mysql-replication.html create mode 100644 pt/tag/mysql-replication.html.gz create mode 100644 pt/tag/mysql-restart.html create mode 100644 pt/tag/mysql-restart.html.gz create mode 100644 pt/tag/mysql.html create mode 100644 pt/tag/mysql.html.gz create mode 100644 pt/tag/net.html create mode 100644 pt/tag/net.html.gz create mode 100644 pt/tag/noclassdeffound.html create mode 100644 pt/tag/noclassdeffound.html.gz create mode 100644 pt/tag/node-js.html create mode 100644 pt/tag/node-js.html.gz create mode 100644 pt/tag/nodejs.html create mode 100644 pt/tag/nodejs.html.gz create mode 100644 pt/tag/out-of-memory.html create mode 100644 pt/tag/out-of-memory.html.gz create mode 100644 pt/tag/outofmemory.html create mode 100644 pt/tag/outofmemory.html.gz create mode 100644 pt/tag/parcel.html create mode 100644 pt/tag/parcel.html.gz create mode 100644 pt/tag/poller-proccess.html create mode 100644 pt/tag/poller-proccess.html.gz create mode 100644 pt/tag/powershell-mail.html create mode 100644 pt/tag/powershell-mail.html.gz create mode 100644 pt/tag/powershell-monitoring.html create mode 100644 pt/tag/powershell-monitoring.html.gz create mode 100644 pt/tag/powershell.html create mode 100644 pt/tag/powershell.html.gz create mode 100644 pt/tag/pre-commit.html create mode 100644 pt/tag/pre-commit.html.gz create mode 100644 pt/tag/protocol-family-unavailable.html create mode 100644 pt/tag/protocol-family-unavailable.html.gz create mode 100644 pt/tag/python.html create mode 100644 pt/tag/python.html.gz create mode 100644 pt/tag/rabbitmq.html create mode 100644 pt/tag/rabbitmq.html.gz create mode 100644 pt/tag/random.html create mode 100644 pt/tag/random.html.gz create mode 100644 pt/tag/raspberry.html create mode 100644 pt/tag/raspberry.html.gz create mode 100644 pt/tag/react.html create mode 100644 pt/tag/react.html.gz create mode 100644 pt/tag/remove-item.html create mode 100644 pt/tag/remove-item.html.gz create mode 100644 pt/tag/removendo-underline.html create mode 100644 pt/tag/removendo-underline.html.gz create mode 100644 pt/tag/resource-governor.html create mode 100644 pt/tag/resource-governor.html.gz create mode 100644 pt/tag/script.html create mode 100644 pt/tag/script.html.gz create mode 100644 pt/tag/shell.html create mode 100644 pt/tag/shell.html.gz create mode 100644 pt/tag/specify-columns.html create mode 100644 pt/tag/specify-columns.html.gz create mode 100644 pt/tag/sqlserver.html create mode 100644 pt/tag/sqlserver.html.gz create mode 100644 pt/tag/stop-proccess.html create mode 100644 pt/tag/stop-proccess.html.gz create mode 100644 pt/tag/the-database-principal-owns-a-schema.html create mode 100644 pt/tag/the-database-principal-owns-a-schema.html.gz create mode 100644 pt/tag/time-schedule-blocking.html create mode 100644 pt/tag/time-schedule-blocking.html.gz create mode 100644 pt/tag/tools.html create mode 100644 pt/tag/tools.html.gz create mode 100644 pt/tag/user.html create mode 100644 pt/tag/user.html.gz create mode 100644 pt/tag/wildfly.html create mode 100644 pt/tag/wildfly.html.gz create mode 100644 pt/tag/yeoman.html create mode 100644 pt/tag/yeoman.html.gz create mode 100644 pt/tag/zabbix-poller.html create mode 100644 pt/tag/zabbix-poller.html.gz create mode 100644 pt/tag/zabbix-server.html create mode 100644 pt/tag/zabbix-server.html.gz create mode 100644 pt/tag/zabbix.html create mode 100644 pt/tag/zabbix.html.gz create mode 100644 pt/tags.html create mode 100644 pt/tags.html.gz create mode 100644 pt/the-power-of-powershell.html create mode 100644 pt/the-power-of-powershell.html.gz create mode 100644 pt/top_level_statement_csharp_9.html create mode 100644 pt/top_level_statement_csharp_9.html.gz create mode 100644 pt/zabbix-icmp-pinger-processes-more-than-75.html create mode 100644 pt/zabbix-icmp-pinger-processes-more-than-75.html.gz create mode 100644 pt/zabbix-poller-processes-more-than-75.html create mode 100644 pt/zabbix-poller-processes-more-than-75.html.gz create mode 100644 pt/zabbix-running-on-low-memory-mode.html create mode 100644 pt/zabbix-running-on-low-memory-mode.html.gz create mode 100644 pt/zabbix-server-out-of-memory-crash.html create mode 100644 pt/zabbix-server-out-of-memory-crash.html.gz create mode 100644 reading-files-java-readAllBytes-outofmemory.html create mode 100644 reading-files-java-readAllBytes-outofmemory.html.gz create mode 100644 removing-user-from-sql-server-database.html create mode 100644 removing-user-from-sql-server-database.html.gz create mode 100644 scaffolding_react_app_with_parcel_yeoman.html create mode 100644 scaffolding_react_app_with_parcel_yeoman.html.gz create mode 100644 select_specific_fields_with_efcore.html create mode 100644 select_specific_fields_with_efcore.html.gz create mode 100644 sitemap.xml create mode 100644 sitemap.xml.gz create mode 100644 socketException-protocol-family-unavailable-java-docker-wildfly.html create mode 100644 socketException-protocol-family-unavailable-java-docker-wildfly.html.gz create mode 100644 tag/apache-nifi.html create mode 100644 tag/apache-nifi.html.gz create mode 100644 tag/arraymap.html create mode 100644 tag/arraymap.html.gz create mode 100644 tag/azure-certification.html create mode 100644 tag/azure-certification.html.gz create mode 100644 tag/azure-devops.html create mode 100644 tag/azure-devops.html.gz create mode 100644 tag/azure-fundamentals.html create mode 100644 tag/azure-fundamentals.html.gz create mode 100644 tag/azure.html create mode 100644 tag/azure.html.gz create mode 100644 tag/c.html create mode 100644 tag/c.html.gz create mode 100644 tag/cache.html create mode 100644 tag/cache.html.gz create mode 100644 tag/certification.html create mode 100644 tag/certification.html.gz create mode 100644 tag/convertjsontosql.html create mode 100644 tag/convertjsontosql.html.gz create mode 100644 tag/crash.html create mode 100644 tag/crash.html.gz create mode 100644 tag/discount.html create mode 100644 tag/discount.html.gz create mode 100644 tag/disper.html create mode 100644 tag/disper.html.gz create mode 100644 tag/docker.html create mode 100644 tag/docker.html.gz create mode 100644 tag/dotnet-core.html create mode 100644 tag/dotnet-core.html.gz create mode 100644 tag/dotnet.html create mode 100644 tag/dotnet.html.gz create mode 100644 tag/ef-core.html create mode 100644 tag/ef-core.html.gz create mode 100644 tag/entity-framework.html create mode 100644 tag/entity-framework.html.gz create mode 100644 tag/expressjs.html create mode 100644 tag/expressjs.html.gz create mode 100644 tag/external-display.html create mode 100644 tag/external-display.html.gz create mode 100644 tag/filesreadallbytes.html create mode 100644 tag/filesreadallbytes.html.gz create mode 100644 tag/firebase.html create mode 100644 tag/firebase.html.gz create mode 100644 tag/firefoxos.html create mode 100644 tag/firefoxos.html.gz create mode 100644 tag/flutter.html create mode 100644 tag/flutter.html.gz create mode 100644 tag/getchild-item.html create mode 100644 tag/getchild-item.html.gz create mode 100644 tag/git.html create mode 100644 tag/git.html.gz create mode 100644 tag/grepora.html create mode 100644 tag/grepora.html.gz create mode 100644 tag/hibernate.html create mode 100644 tag/hibernate.html.gz create mode 100644 tag/hooks.html create mode 100644 tag/hooks.html.gz create mode 100644 tag/html.html create mode 100644 tag/html.html.gz create mode 100644 tag/icmp-pinger-more-than-75.html create mode 100644 tag/icmp-pinger-more-than-75.html.gz create mode 100644 tag/icmp-pinger.html create mode 100644 tag/icmp-pinger.html.gz create mode 100644 tag/imagemin-pngquant.html create mode 100644 tag/imagemin-pngquant.html.gz create mode 100644 tag/imagemin.html create mode 100644 tag/imagemin.html.gz create mode 100644 tag/java.html create mode 100644 tag/java.html.gz create mode 100644 tag/javanetsocketexception.html create mode 100644 tag/javanetsocketexception.html.gz create mode 100644 tag/linux.html create mode 100644 tag/linux.html.gz create mode 100644 tag/low-memory.html create mode 100644 tag/low-memory.html.gz create mode 100644 tag/microservices.html create mode 100644 tag/microservices.html.gz create mode 100644 tag/microsoft.html create mode 100644 tag/microsoft.html.gz create mode 100644 tag/monitor-website.html create mode 100644 tag/monitor-website.html.gz create mode 100644 tag/mysql-dual-password.html create mode 100644 tag/mysql-dual-password.html.gz create mode 100644 tag/mysql-replication.html create mode 100644 tag/mysql-replication.html.gz create mode 100644 tag/mysql-restart.html create mode 100644 tag/mysql-restart.html.gz create mode 100644 tag/mysql.html create mode 100644 tag/mysql.html.gz create mode 100644 tag/net.html create mode 100644 tag/net.html.gz create mode 100644 tag/noclassdeffound.html create mode 100644 tag/noclassdeffound.html.gz create mode 100644 tag/node-js.html create mode 100644 tag/node-js.html.gz create mode 100644 tag/nodejs.html create mode 100644 tag/nodejs.html.gz create mode 100644 tag/openssh.html create mode 100644 tag/openssh.html.gz create mode 100644 tag/out-of-memory.html create mode 100644 tag/out-of-memory.html.gz create mode 100644 tag/outofmemory.html create mode 100644 tag/outofmemory.html.gz create mode 100644 tag/parcel.html create mode 100644 tag/parcel.html.gz create mode 100644 tag/poller-proccess-more-than-75.html create mode 100644 tag/poller-proccess-more-than-75.html.gz create mode 100644 tag/powershell-mail.html create mode 100644 tag/powershell-mail.html.gz create mode 100644 tag/powershell-monitoring.html create mode 100644 tag/powershell-monitoring.html.gz create mode 100644 tag/powershell.html create mode 100644 tag/powershell.html.gz create mode 100644 tag/pre-commit.html create mode 100644 tag/pre-commit.html.gz create mode 100644 tag/protocol-family-unavailable.html create mode 100644 tag/protocol-family-unavailable.html.gz create mode 100644 tag/rabbitmq.html create mode 100644 tag/rabbitmq.html.gz create mode 100644 tag/random.html create mode 100644 tag/random.html.gz create mode 100644 tag/raspberry.html create mode 100644 tag/raspberry.html.gz create mode 100644 tag/react.html create mode 100644 tag/react.html.gz create mode 100644 tag/remove-item.html create mode 100644 tag/remove-item.html.gz create mode 100644 tag/replacing-underscore.html create mode 100644 tag/replacing-underscore.html.gz create mode 100644 tag/resource-governor.html create mode 100644 tag/resource-governor.html.gz create mode 100644 tag/script.html create mode 100644 tag/script.html.gz create mode 100644 tag/shell.html create mode 100644 tag/shell.html.gz create mode 100644 tag/specify-columns.html create mode 100644 tag/specify-columns.html.gz create mode 100644 tag/sqlserver.html create mode 100644 tag/sqlserver.html.gz create mode 100644 tag/ssh-tunnel.html create mode 100644 tag/ssh-tunnel.html.gz create mode 100644 tag/ssh.html create mode 100644 tag/ssh.html.gz create mode 100644 tag/stop-proccess.html create mode 100644 tag/stop-proccess.html.gz create mode 100644 tag/the-database-principal-owns-a-schema.html create mode 100644 tag/the-database-principal-owns-a-schema.html.gz create mode 100644 tag/through-firewall.html create mode 100644 tag/through-firewall.html.gz create mode 100644 tag/time-schedule-blocking.html create mode 100644 tag/time-schedule-blocking.html.gz create mode 100644 tag/tools.html create mode 100644 tag/tools.html.gz create mode 100644 tag/tunnel.html create mode 100644 tag/tunnel.html.gz create mode 100644 tag/user.html create mode 100644 tag/user.html.gz create mode 100644 tag/wildfly.html create mode 100644 tag/wildfly.html.gz create mode 100644 tag/yeoman.html create mode 100644 tag/yeoman.html.gz create mode 100644 tag/zabbix-poller.html create mode 100644 tag/zabbix-poller.html.gz create mode 100644 tag/zabbix-server.html create mode 100644 tag/zabbix-server.html.gz create mode 100644 tag/zabbix.html create mode 100644 tag/zabbix.html.gz create mode 100644 tags.html create mode 100644 tags.html.gz create mode 100644 the-power-of-powershell.html create mode 100644 the-power-of-powershell.html.gz create mode 100644 theme/css/pygments/autumn.css create mode 100644 theme/css/pygments/autumn.css.gz create mode 100644 theme/css/pygments/borland.css create mode 100644 theme/css/pygments/borland.css.gz create mode 100644 theme/css/pygments/bw.css create mode 100644 theme/css/pygments/bw.css.gz create mode 100644 theme/css/pygments/colorful.css create mode 100644 theme/css/pygments/colorful.css.gz create mode 100644 theme/css/pygments/default.css create mode 100644 theme/css/pygments/default.css.gz create mode 100644 theme/css/pygments/emacs.css create mode 100644 theme/css/pygments/emacs.css.gz create mode 100644 theme/css/pygments/friendly.css create mode 100644 theme/css/pygments/friendly.css.gz create mode 100644 theme/css/pygments/fruity.css create mode 100644 theme/css/pygments/fruity.css.gz create mode 100644 theme/css/pygments/manni.css create mode 100644 theme/css/pygments/manni.css.gz create mode 100644 theme/css/pygments/monokai.css create mode 100644 theme/css/pygments/monokai.css.gz create mode 100644 theme/css/pygments/murphy.css create mode 100644 theme/css/pygments/murphy.css.gz create mode 100644 theme/css/pygments/native.css create mode 100644 theme/css/pygments/native.css.gz create mode 100644 theme/css/pygments/pastie.css create mode 100644 theme/css/pygments/pastie.css.gz create mode 100644 theme/css/pygments/perldoc.css create mode 100644 theme/css/pygments/perldoc.css.gz create mode 100644 theme/css/pygments/solarizeddark.css create mode 100644 theme/css/pygments/solarizeddark.css.gz create mode 100644 theme/css/pygments/solarizedlight.css create mode 100644 theme/css/pygments/solarizedlight.css.gz create mode 100644 theme/css/pygments/tango.css create mode 100644 theme/css/pygments/tango.css.gz create mode 100644 theme/css/pygments/trac.css create mode 100644 theme/css/pygments/trac.css.gz create mode 100644 theme/css/pygments/vim.css create mode 100644 theme/css/pygments/vim.css.gz create mode 100644 theme/css/pygments/vs.css create mode 100644 theme/css/pygments/vs.css.gz create mode 100644 theme/css/pygments/zenburn.css create mode 100644 theme/css/pygments/zenburn.css.gz create mode 100644 theme/css/w3.css create mode 100644 theme/css/w3.css.gz create mode 100644 top_level_statement_csharp_9.html create mode 100644 top_level_statement_csharp_9.html.gz create mode 100644 using_git_hooks_easy_your_life.html create mode 100644 using_git_hooks_easy_your_life.html.gz create mode 100644 zabbix-icmp-pinger-processes-more-than-75.html create mode 100644 zabbix-icmp-pinger-processes-more-than-75.html.gz create mode 100644 zabbix-poller-processes-more-than-75.html create mode 100644 zabbix-poller-processes-more-than-75.html.gz create mode 100644 zabbix-running-on-low-memory-mode.html create mode 100644 zabbix-running-on-low-memory-mode.html.gz create mode 100644 zabbix-server-out-of-memory-crash.html create mode 100644 zabbix-server-out-of-memory-crash.html.gz diff --git a/CNAME b/CNAME new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ + diff --git a/ads.txt b/ads.txt new file mode 100644 index 000000000..ff26bce2c --- /dev/null +++ b/ads.txt @@ -0,0 +1 @@ +google.com, pub-3097623931513783, DIRECT, f08c47fec0942fa0 \ No newline at end of file diff --git a/apache-nifi-json-to-sql-replacing-underscore.html b/apache-nifi-json-to-sql-replacing-underscore.html new file mode 100644 index 000000000..890a24615 --- /dev/null +++ b/apache-nifi-json-to-sql-replacing-underscore.html @@ -0,0 +1,411 @@ + + + + + + + + Apache Nifi JSON to SQL Replacing underscore - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Apache Nifi JSON to SQL Replacing underscore

+
+ +
+
+ +
+

Recently I was doing some ETL with Apache NiFi. But after a few minutes of drawing my flow, I saw that the component ConvertJSONToSQL was replacing the underscore ('_') from the field name in the where condition (I was preparing an Update SQL). That was weird because, at the set statement, the field name was kept intact. After some research, I found that the property (see bellow) Translate Field Names was responsible for that weird replacement.

+

Apache NiFi JSONToSQL config

+

Before setting it to FALSE, be aware that the properties on your JSON data must match exactly the name of your fields.

+
+ + +
+
+

Translations:

+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/apache-nifi-json-to-sql-replacing-underscore.html.gz b/apache-nifi-json-to-sql-replacing-underscore.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..b11afd9a2d2e3e55c6f07bac8117b8b538c7ce3a GIT binary patch literal 4172 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 E5s_kdlOHpm+>|wz^w{N5Em^F~g!r74gL)!qcrU z!{eu3J8sxG-r7<6GF)h<*TjOL9pGXW`J4%r%-8RLNIwl4**MFPfY!9WKpU$#NHiLJ zhj(xcqA$aXWC3i@FJ;U;5U6))&T%f$94^^(lOBE$3lu$`$idz>4I_PYWbkFzn@#r- zDsmb!u*IuC91uS_5Khvi6EcTFteZ|5yL%k8!%^MAIv@@iHCT1p$Wlm)D7^Qg#;waq zKqJTz`s7a^>*e!3KU$w}E_6uudf;Zi6QSdV5=kYdp)u}jX>fg>Ef*q28uJc+M~}wYL2pw*caJYB}iDtXG|{p_Lbul zXE=Cd?NHzG0dVP8I}Z7v@0w+;MB+Gxq!rOf+xHrjoaPt93$XRWCp=TqU4rbwdRbf7 zG$EHW`YRcmkN^CKynA21G>GrJaVqDXckN4v&ZnLy(nz)UNc-ng=W*{~(0e>|2JQE| z8|JBmdRKTPgugns2HMH%64KeNx!H(B&M1)R3oq5TAH0M?HJu&xcG`xu_U`&6%NgyW z7+`L@B8YY^u+ia|s3c{z0H9tN?zD}D+hlA}g}?Ekl^Z8Q32fzlOWM|b{x%tz?v=CIQfipX7CfZ+$9b6 z{2({v8ppy^X#@vIAaH$c!i?8nWljOmg`MIuo!#FH7-Q%Vy0lh6h941JL$yJXdn95D@&s(QvkTH(jhX8? z=u0-WXvq&&1pj$Q%4>&>#nDur@T{TA$x-ztL;<)*S`x6FN<4mDv&PN&b*~w|CeJlM zZ_YTyociN@TliMt;=1H}X6`y=2QfRgkFKtX*ZS(&^10u!&T!BsYA`=}{!g=4#9eIw z^$vpq%~Pe7vZ1rt=9OL>u+mC}H5YfIE5VmfNv9yPtINV})~bNO2QgLeT-tRpyKx$6 z + + + + + + + Sipmann - Archives + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+

Archives for Sipmann

+ +
+
Mon 21 December 2020
+
Monitoring MySQL restarts with PowerShell
+
Wed 09 December 2020
+
Changing a MySQL user password across multiple application instances without downtime
+
Wed 02 December 2020
+
Apache Nifi JSON to SQL Replacing underscore
+
Sat 14 November 2020
+
Blocking a user on SQL Server based on a schedule
+
Wed 28 October 2020
+
How to set columns on select using Entity Framework
+
Tue 20 October 2020
+
Zabbix Running on Low Memory Mode
+
Wed 14 October 2020
+
Monitoring MySQL Replication Status with PowerShell
+
Sat 03 October 2020
+
Microsoft Against Covid
+
Mon 21 September 2020
+
The power of PowerShell
+
Wed 29 July 2020
+
Top Level Statement in C# 9
+
Thu 02 July 2020
+
Zabbix poller processes more than 75%
+
Mon 22 June 2020
+
Monitoring a Website heath with Azure Functions
+
Tue 09 June 2020
+
Azure Data Fundamentals certification with 80% discount
+
Mon 25 May 2020
+
Zabbix ICMP pinger processes more than 75%
+
Thu 27 February 2020
+
Zabbix Server Out of Memory
+
Thu 03 October 2019
+
Flutter + firebase auth crashing
+
Fri 06 September 2019
+
Removing a user from SQL Server database who owns a schema
+
Mon 12 August 2019
+
Limiting Connection Resources on SQL Server
+
Tue 30 July 2019
+
Using git hooks to easy your life
+
Fri 13 April 2018
+
Microservices with NodeJS, Express.js and RabbitMQ Part 2
+
Wed 04 April 2018
+
Microservices with NodeJS, Express.js and RabbitMQ Part 1
+
Thu 29 March 2018
+
Connecting to a database through SSH
+
Sat 24 March 2018
+
Now posting on Grepora
+
Sat 17 March 2018
+
Scaffolding a React app with Parcel and Yeoman
+
Fri 09 March 2018
+
Could not open connection with MySQL and Hibernate
+
Sun 04 March 2018
+
Solving java.net.SocketException: Protocol family unavailable on a Java + Docker + WildFly
+
Tue 27 February 2018
+
Change display settings on linux with Disper
+
Sat 17 February 2018
+
Java - Files.readAllBytes throws OutOfMemory
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/archives.html.gz b/archives.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..3b9f29dfb86ab4fc1fcc3a600f9f33fba33ca190 GIT binary patch literal 4231 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 literal 0 HcmV?d00001 diff --git a/author/mauricio-camargo-sipmann.html b/author/mauricio-camargo-sipmann.html new file mode 100644 index 000000000..a85109067 --- /dev/null +++ b/author/mauricio-camargo-sipmann.html @@ -0,0 +1,603 @@ + + + + + + + + Sipmann - Articles by Maurício Camargo Sipmann + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ +
+ +
+ +
+
+
+

Apache Nifi JSON to SQL Replacing underscore

+
+ +
+
+ +
+

Recently I was doing some ETL with Apache NiFi. But after a few minutes of drawing my flow, I saw that the component ConvertJSONToSQL was replacing the underscore ('_') from the field name in the where condition (I was preparing an Update SQL). That was weird because, at the set …

+
+ + + +
+
+
+
+ +
+
+ + + + + + + +
+

So, you use Entity Framework Core, and you usually code your selects like the following, maybe you are getting too much data.

+
var products = Products
+    .Where(p => p.UnitsInStock > 0)
+    .OrderBy(p => p.ProductName)
+    .ToList()
+
+ +

Running the query above, on my table, you'll get the following output, take a look …

+
+ + + +
+
+
+
+
+ + + + + +
+

Zabbix Running on Low Memory Mode

+
+ +
+
+ +
+

Hey folks, another Zabbix post today. This one it's about increasing the Zabbix Server Cache. It's pretty common (if you have the default settings only) get a warning about your Zabbix value cache running on low memory mode at your dashboard or logs.

+

Zabbix Dashboard warning about the memory problem +Zabbix Dashboard cache graph 70% used

+

To solve, go back to your Zabbix …

+
+ + + +
+
+
+
+
+ + + + + + + +
+

I've been migration some bash scripts that I have to PowerShell, and it's time to migrate a script that monitors the replication of a MySQL database. The credit for the original script goes to Paweł. It's a simple script where I seek a few tags/fields that we get from …

+
+ + + +
+
+
+
+
+
+

Microsoft Against Covid

+
+ +
+
+ +
+

Has your job been affected by covid? Well, last week I've posted on Grepora about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by …

+
+ + + +
+
+
+
+
+ + + + + +
+

The power of PowerShell

+
+ +
+
+ +
+

As a long time Linux user, I've automated a few things with bash scripts and stayed away from PowerShell... I've moved to a Windows environment a few years ago and still, haven gave a shot to PS. But why not? I've made a few scripts to automate some tasks at …

+
+ + + +
+
+
+
+
+ + + + + +
+

Top Level Statement in C# 9

+
+ +
+
+ +
+

Hey folks, I'm coming along to tell you a few things about the new feature of C# 9. Every time you want to start a new project, you always have the same Main File, with the same structure. At the next version of C# (version 9), we'll have a new …

+
+ + + +
+
+
+
+
+ + 1 + 2 + 3 + » + +
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/author/mauricio-camargo-sipmann.html.gz b/author/mauricio-camargo-sipmann.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..ac5140e54e0dfd80fcd585467ba8f35a6d89913e GIT binary patch literal 5990 zcmV-s7n$fEiwFP!000021MOYua@)q1{%t))hna-Zy#iM`vNrn4@)Bh%+p&~wQYlsw zXp(IKXc*lfh1{E}sdVtM7JDD@ z$x-cR>xX0OM0f#JeBiQNy__8}XT;KyiYu4(&UxTb-zOG14i&duCdnWsXEX}``#)?h z$O-jmI1(huci1$=HWnE1gwGWJ9a0>Dn6=-(Z1x0^|75?%?U-d9;qm#;vk=Y$_7|XjWidv z;4o>2JeZ^Xi7Q5g4n(8~v=kFH=Ke^6E^Ie);E{lim@5Jgaue!1#G#4~sAO`kks?_r zz%o9n3Phos%Z|F1`_1NbI&DZ(6opzXhH~DD(km;+Jvw4HH{8_uWHa}w5%{CDVshwm z|B{SDHmt5<$e1IW)O8zFLGddO7)I?K)o2j7+}1|b#I(Qaw2--w9Hv#-#P^U(ygv?scwYdhR zbd%;R>Qgs{UM`KrlvU{X(t=8dOxfe*Yr;wl$C}_-%>&`Y+u5&iJNMklJ$G}@JGtkF zi!EFc?vpRO-EJ{q z09hHNw1X=mh07iCrES|~d908+Jd*olC(lSusEq-1QWo~PH<}affZCU%P(;3C1p=J4 zR?frLR|i$OLKZNpP=U!~WlkepTTED3%+vf!E*Djb+GFhA`(((km~-%#W+8W`hE}V{ zUHUXLIulOGB9|V$GGTq6SP+yhIhZteU5idAcPYf|(s~~}XpEt47u$ylA3S(~ybN72 zwXXIFjg&Zmmw&(?_%9$mZS{~V(dfX9SS~|j+O^QLQ?RX&1SYHQ7up|0pxVgl2G>jQKizZ)(REN=wTOuon9KeTeGeYVjsd7#!_A$@^agV0s2G>Eo;ZY50ByVNv{|)kbO3245#+FG zu=K_u#t>q=R6>X=h&_$64xi-Gl?d{o&8PW9loI@fDm9wJen7!3?&Qkoa)U@I;TMZq zpcW5{B#H1e2GLtCICrLhVV|@xoXmdd{*w~TAg~L-kKDe*O8bDf{LQU{6z-UM=Sb1y z@RX7vB}0nD08BY-@*erxAIRX~jQP=F)08hMPE#CHyOyI`?_1%q!zP^*2E9=ZIj!6P z_L$$S^_ahEBR5qWD5y42g=!B0qfHVcX@Zrc!xpqGaC@`nX08x_fd6A*jc7vzh?PY3 zP6t9ChVRxv-oDWIlAKv^=%Vj5eh>o1R|k1-pyBd90Z_kLPqDM1rvbqrsBaxqL@iXe z=E1OI%9Qqi1hOM926pH^ky1GeKkXeI#pb!0RTPS8tyk>l3r)cQc#p_-XTJZW@h_KG z_p=#Q_@q5uiM>}_aFzaH{K=IFK~t6&%l9q-0;zxq3CyZ7;E5@C_A!Go29DaZF~eC_ zjGV>i-@hbjF@nX&8!UE?#Y%{rm&Xj(WWruhJnDUs_|y7}zG-{AG&571u0)Whq<5>?C_wx2D0%~&w z{tbrt4AYKkomQu1wL4a)ebMgjcU$|dmeuOQ|6xc3Ops2SJY_cX2H;sRFHWC$tb)>J z8L1Tt|6pAQJ^1fi7Q@iPy_DO8tGXnb;h_it4G9?VhB-+SGq`M!(;qrT|1fs0@IUeW~B#z*3R{3{t0!!)5?sJ;I4Im)~q=5GP73Et?J~H?}g<$%>R) z56}W&Lz5NseuCHAIME}K6(bd#7hy`pL;@57k7gvXO&~52Isz$!^t4bQq5wXI02&fU zFp1(pF+m0YLI(p511Ap%lm4U{DlRQ_w?kEWnG`IRAW0C;FKP%j7T}%U7K#E zYXX`V+=945L^QQoXI)X9UpidAk7Qp#X`H3P2~x|vvp9}3`H-_vPaZE-tBq8tq%!0#yas9v=$U&x4*zUyq-E+v)CCPospo-)k#D0@gps|9i+%58 zO#Kn|Jeu^qNa7?xQj$_B~PHUluPg3o=AhFgSBC(wU68nicq_wx!NbIT5Ai!rpDg=KURm3!c%Jd?JMTMy` zRR*987-|zzOT^&cFr*9OI8bv8n1F6N7q8-H#frMtcWJfW&pE1${88 zq7W1S6+jycX6~>_Lz}iXa!1%rNCu;CLR|>sGFyjt&`r^EC($9_6J)LT6n>L8DZ}Sc zfHO~MS=)vbuC$bFj9DcTx@0UsN$8g$n{W}yoLwW5`)p9vT6mIsA z?H*};G8jN1e2tmqgDR|dQsDHQm5y#9uz?i--T}aCi;xxj@v$yRUO`Fn-TCWR7%Q+l zzfDV$S;<;&mE3C+zdIN09SGYC@w>Cu@%t^qSz|XQr(_C&#t|r8DS+!|7cWil%CzyE zH^>v5I~Xcp2E*%=c-)T^_*e+?PDrO%+KUN(-P?vLC7qgZkC6>5C=fo*@16*M!a{|r zy%4BaY&tU{oq48UvRUufx5zLQo=yQb;5vHw3xWoGGaWMw^1^rYCnK_Hc!5Y7P(2U_ zhxJ2%Dnl#UYLE*g3A0QYhbS^&HiftXh{F&nnfh$v?Ok=*`-pmn5p`vyE*o4|srWw5 z-eyKaufEZO1R!gHgi*X^dey=ec#eJtN^l}~u0uXaih}3WC>S~y_Q!KGH>(TdJ6suH zir>l1g=VOavloVoKGL>Ma~F3j@s*3L2YzW=?VXF(?i_wOhkyt}>Q`d2w)o}s<+gz< zno~Lw06XdvhU-TZh}tZI9VeeEaQuzI-Q^xvQqNZiuzx*vkaMbvWC}%Yv@l&ATG*^M zoCg+B2&2!Oxfxg7`1zZY-yfZh|9Sl8mm1(NlaIW>Z{@xS(H;!Un(BFyVM=*jp+ym{ z9+O|-4Rxn9mYOAP;lvf-tYktrH9v`h*fCsKxZQ~WMssY(!fXv;zjmYJIrK-Opfeq#WzSl2w6|N^3(|) zV#B?HcfW*;6B;HNik=?=Ul0l>veA>4qzAR$QB}b=#ey3PVFd~|QnKdC{)E#?Wob}m zv!YB;N#WNcbx_G(MJrX5{on(9J@wBO#H6YQE8FvGy;engTelI@YeXtf;xG_HGW5s6 z3~tc!m?y&6^1zK1`(3gw^zCe>;3f3LGo78BLH0XA+J@*pP}(3~*qi@3Rlzg@%T^CGar8FQL+i~M94FM>b(on12G^t^`0n$lx6Y55|)CoV@mJP;I@X@xk?Clf3W62T3i)K!^jKFzWgNkPh!767LMcJZJ; zhc@{Bs&3lX=C3!~Z(P%i;bj!kU`%#fU+INncf-D(%55QUbK85)6;;t%Y~1VT z=wI`#d!JJ9w0wBS^+4z$bGXu*3-xY6aNOLd>9#@u z6-<9fUa;UXP!xmxHk=5YKFckB&YP~(wq${_vpqw|v1Mv+)_QN~l>N`YnUBJ!W>a5b zH(#>&?G*PjUM6eu6dlQ?85kR`r+VJjETQ|1x95FIk8qEL{@lHK*X#BJw(C_^e2cQF9tLaJ7GttUUIG^65o zVqgL>9S)g|Yp4b|VF3b8w_8EY7*ZhIW|O%FN}h*|k&}D@@}ntWV%^L-aDn%T>y=G(O5=2O z_bkJyZXMS+`Km#V^{RHP16QsO5kY5b*JI!pqAYc#$f_jc2;3Jq85^?V^biS{z`#5m z3jg1o-uesram$R^9N z@t8-C>J`~$h-ywG*2ApA5Ff|!Fer{OCkAajW}WG&(P)?oJuxvm&MEnc`;M4O!u$yj zg>Mcu)~&>h!cd=%L{cqB_@WO0A|rFYjT{Rdy5F3qYp!GB3-vf@ggPv#Dw~23886AY zb1E+-VvElurhi!fx{v917}Kv))v__YqK^BReyf-+g1(DqtM_qYPahc3x8<0IL4R+q z1BrmV#GHD@N$14vtS4WRy*ml+2~`S5EI`FNEu8pBLcAt%J)-@t)!D09X}m|ii`;n4 z7fGDfJ@gNHFl<7#yy!J|>d~!N+NgPW;dzm@g zG4*TL${^j6AE~hjn;wlqZgT+?=<8>!wELMuKHCe2M_`#0qf3w;3>O*3O7R+dPTBne0hGJn^Nn^ zQHZz2090O;r?lK!a`lc*=!y(|2SwJB7Z>O4R%Axc^{pj0=4i*&xX~*@){+~asTFx? zyn1%AmaHtyDlW^>Y^HH7`3kA;2yaE6-s(bY$t zBuDb6+dV%45DfL1eR$KD`p8hQShG1B5IUVy9}f;Luf|nR;4g9J%bvx*f|ag9|8i&D zF4Fx;PQCp!Jg$DeUtK4KK@XpuqXg=i8GgCTENslM}3fIu3bC})EoEj^q=Wx zU*H9GK&&tH)rcX^{LO#2N$P{n9^ug@@Wve_chg;%q~-2(2@XMD!wl3#jCKH1`+XSAtf*)G=? zI@{C=KqB4N-tIS@?q0Y3u-)B#)Wy4mW8W_J$bgO*bvnuQzmV=Ek<#3~r&F8nWRp5_ z5SvVmclw4x)A(!xd!z8V;Dydgj??Re3-jD5;pS5Z-lM2z36g7$i`tsdkn~6NJvlOe z{o^0x*WZd)P2&4T5Xtf8uk}87=VMzhIjwJ#`VYs}qtc4GWQ%;4{zI+4x z;>GO?SvON$LN>Qb?!!bPM-)hOgdOQ?5OBk@V$WRt9bvO>SgUU>Ud=h84HN^Et@xsORbcMEi#?3>@l*VnhmUrD|6 zYUn1k^iGzLh@y~rNkCso#2}x<7j%S&&CCSyYwNegI%Fe&?%}IfxUCZq8w=GFHiV9~ zIilM{&Pnl)thg68kVTdxh29}$yRIFP`gsgW + + + + + + + Sipmann - Articles by Maurício Camargo Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Zabbix poller processes more than 75%

+
+ +
+
+ +
+

Hey folks, this is the third post about tweaking the Zabbix configurations. All changes that I've suggested here were based on a Zabbix Server with 50+ hosts. Another thing that can happen to your server, it's the poller get overwhelmed by the amount of servers that need to be polled …

+
+ + + +
+
+
+
+
+ + + + + + + +
+

Sometimes you get your self in need to monitor a website's health or it's content for changes. Of course, there's plenty of options out there, but for the sake of curiosity, let's code our own to see what we can do. First things first. Everything you'll see here, you can …

+
+ + + +
+
+
+
+
+ + + + + + + +
+

Hey folks, if you want to achieve some certification this year, keep an eye open for vouchers. A few months ago, Oracle released a set of free courses with certifications. Now it's Microsoft time. Microsoft is updating they're certifications and we have a voucher of 80% discount using the coupon …

+
+ + + +
+
+
+
+
+
+

Zabbix ICMP pinger processes more than 75%

+
+ +
+
+ +
+

So your monitoring sytems have grown and your zabbix started loggin "Zabbix icmp pinger processes more than 75% busy" at the dashboard.

+

Dashboard do zabbix avisando sobre o erro

+

All you have to do is open your config file (/etc/zabbix/zabbix_server.conf) and find the a tag named StartPingers. It'll be commented by default. Uncomment it …

+
+ + + +
+
+
+
+
+
+

Zabbix Server Out of Memory

+
+ +
+
+ +
+

Do you have a crashing Zabbix Server and looking through the log /var/log/zabbix/zabbix_server.log you see the following out of memory message?

+
__mem_malloc: skipped 0 asked 24 skip_min 18446744073709551615 skip_max 0
+[file:dbconfig.c,line:94] __zbx_mem_realloc(): out of memory (requested 16 bytes)
+[file:dbconfig.c,line …

+
+ + + +
+
+
+
+
+
+

Flutter + firebase auth crashing

+
+ +
+
+ +
+

Hey Folks, recently I've started learning Flutter and right after a TODO List, I tried a Firebase integration. But as soon as I started setting the dependencies, my app stopped opening... just a crash. After a few logs digging, I've found the following log.

+
AndroidRuntime: FATAL EXCEPTION: main
+AndroidRuntime: Process …

+
+ + + +
+
+
+
+
+ + +
+

Your customer urge you to drop a user from the MsSQL Server database, but you stuck with the following related error:

+
Error: 15138 The database principal owns a schema in the database, and cannot be dropped.
+
+ +

That means that the user owns one or more shcemas of your database. If …

+
+ + + +
+
+
+
+
+ + + + + +
+

Limiting Connection Resources on SQL Server

+
+ +
+
+ +
+

Have you ever suffered from a slow SQLServer database? Someone love to run that heavy query in the database? Resource Governor to the rescue. You can set a few rules on how users (connections actually) will use the server/database resources based on a few things.

+

First things first, if …

+
+ + + +
+
+
+
+
+
+

Using git hooks to easy your life

+
+ +
+
+ +
+

Hey folks, it's been a time since my last post. In the meantime, I moved to another state, changed job, and started learning new kinds of stuff. Today I would like to share one thing that I usually do with my small git projects. Git has many cool features, git …

+
+ + + +
+
+
+
+ +
+
+ « + + 1 + 2 + 3 + » + +
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/author/mauricio-camargo-sipmann2.html.gz b/author/mauricio-camargo-sipmann2.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..9117e33ecea85978e8665fa9e9b6564e2f70b5ae GIT binary patch literal 6223 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 literal 0 HcmV?d00001 diff --git a/author/mauricio-camargo-sipmann3.html b/author/mauricio-camargo-sipmann3.html new file mode 100644 index 000000000..1ac098ebe --- /dev/null +++ b/author/mauricio-camargo-sipmann3.html @@ -0,0 +1,526 @@ + + + + + + + + Sipmann - Articles by Maurício Camargo Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+ + + + + + + +
+

This is the first part of a microservices development series. The service will consist of the bellow architecture, where we will expose an image optimizer service that will forward the request to a RabbitMQ queue and answer with the bytecode of the optimized image. It shouldn't be a long series …

+
+ + + +
+
+
+
+
+
+

Connecting to a database through SSH

+
+ +
+
+ +
+

If someday, for some reason, you need to establish a connection with a database which is behind a firewall and you only have SSH access on that server (and you don't want to use a CLI) you can do an SSH tunnel. It's pretty simple, bellow has a sample of …

+
+ + + +
+
+
+
+
+
+

Now posting on Grepora

+
+ +
+
+ +
+

A few weeks ago I started posting at Grepora blog. If you like or are looking for some Oracle related stuff, Grepora it's a good place to go and spend a time reading :). From time to time I'll be posting there, it doesn't mean that this blog will be closed …

+
+ + + +
+
+
+
+
+ + + + + + + +
+

Since Parcel JS arrived, I've been using it a lot as an awesome alternative for WebPack. Webpack isn't bad but IMO it's too complex for the job and parcel do the same (at least the basic) with almost zero configuration. But if you need to create many apps (like a …

+
+ + + +
+
+
+
+
+ + + + + + + +
+

Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some "Could not open connection" at my …

+
+ + + +
+
+
+
+ +
+
+ + + + + +
+

Change display settings on linux with Disper

+
+ +
+
+ +
+

From time to time, I change the Linux distro on my laptop or just do a fresh install on it. And once in a while, have random problems with external displays. It can be something really "simple" like don't detecting the external monitor or something crazy like the image below …

+
+ + + +
+
+
+
+
+
+

Java - Files.readAllBytes throws OutOfMemory

+
+ +
+
+ +
+

When you need to interact with files, there's the possibility to read all bytes from the file with Files.readAllBytes. But be aware of the kinds of files your application will deal with because the Java API files have a limit for the buffer that is defined as Integer.MAX_VALUE …

+
+ + + +
+
+
+
+
+ « + + 1 + 2 + 3 + +
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/author/mauricio-camargo-sipmann3.html.gz b/author/mauricio-camargo-sipmann3.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..e43dd90248cc9135bce84ef6390f9aad6d5cc7a7 GIT binary patch literal 5577 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 X9<=ZiC+5O@Sn&S<3>t%9Xm9`koQTE= literal 0 HcmV?d00001 diff --git a/authors.html b/authors.html new file mode 100644 index 000000000..a8950bff5 --- /dev/null +++ b/authors.html @@ -0,0 +1,302 @@ + + + + + + + + Sipmann - Authors + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/authors.html.gz b/authors.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..6ace4f846b9d3527906604d4f950e0d81c1631fe GIT binary patch literal 3119 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 JM{GYV008mi^y~lt literal 0 HcmV?d00001 diff --git a/azure-data-fundamentals-certification-80-discount.html b/azure-data-fundamentals-certification-80-discount.html new file mode 100644 index 000000000..84ae29e20 --- /dev/null +++ b/azure-data-fundamentals-certification-80-discount.html @@ -0,0 +1,511 @@ + + + + + + + + Azure Data Fundamentals certification with 80% discount - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+ + +
+

Hey folks, if you want to achieve some certification this year, keep an eye open for vouchers. A few months ago, Oracle released a set of free courses with certifications. Now it's Microsoft time. Microsoft is updating they're certifications and we have a voucher of 80% discount using the coupon DP900Norfolk at the checkout of the beta certification DP-900.

+

Be aware that this certification is in beta and the result won't be instantly available as the regular ones. Access the following link and schedule your exam. https://docs.microsoft.com/pt-br/learn/certifications/exams/dp-900.

+

Update: There is a 80% voucher also for https://docs.microsoft.com/en-us/learn/certifications/azure-ai-fundamentals. Voucher: AI900Saratoga

+
+ + +
+
+

Translations:

+
    +
+
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/azure-data-fundamentals-certification-80-discount.html.gz b/azure-data-fundamentals-certification-80-discount.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..e21348ea915d613ee80f3ae44d1edf80323931b2 GIT binary patch literal 4594 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 literal 0 HcmV?d00001 diff --git a/blocking-user-on-sql-server-based-on-schedule.html b/blocking-user-on-sql-server-based-on-schedule.html new file mode 100644 index 000000000..d9634d139 --- /dev/null +++ b/blocking-user-on-sql-server-based-on-schedule.html @@ -0,0 +1,566 @@ + + + + + + + + Blocking a user on SQL Server based on a schedule - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Blocking a user on SQL Server based on a schedule

+
+ +
+
+ +
+

Ok, some time ago, I've posted about how you can set limits to connections on SQL Server using the Resource Governor. But what if you can't use it? You always can block logins using a login trigger, but I don't like the idea of having selects running on every login. So I came across with a solution using a stored procedure, a table and the Agent.

+

The main idea is, store the time that a user must be blocked and using the Agent, disable or enable the user. Bellow you can see the table (the table is in Portuguese, but I have a few comment blocks to help you).

+
CREATE TABLE dbo.HorariosBloqueio (
+    Id INT NOT NULL,
+    LoginName NVARCHAR(100) NOT NULL,
+    HrInicio TIME NOT NULL, /* Startint block time */
+    HrTermino TIME NOT NULL, /* Ending block time */
+    Bloqueado INT DEFAULT 0, /* 0 = unblocked, 1 = blocked */
+    PRIMARY KEY (Id)
+);
+GO
+
+/* Don't block the SA user, precautions, you know */
+ALTER TABLE dbo.HorariosBloqueio
+    ADD CONSTRAINT chk_users CHECK (LoginName not in ('sa'));
+
+ALTER TABLE dbo.HorariosBloqueio
+    ADD CONSTRAINT chk_hora_final_maior CHECK (HrTermino > HrInicio);
+
+ALTER TABLE dbo.HorariosBloqueio
+    ADD CONSTRAINT chk_status_bloqueio CHECK (Bloqueado in (0, 1));
+
+CREATE SEQUENCE dbo.seq_HorariosBloqueio START WITH 1 INCREMENT BY 1;
+GO
+
+ +

After creating the table, let's check the procedure that will handle the enabling/disabling the users. Be aware that on the procedure, I've set the database name where the table was stored, you can change it replacing the DBATOOLS text to the database name where you created the table.

+
IF OBJECT_ID('dbo.sp_ValidarLogin') IS NULL
+  EXEC ('CREATE PROCEDURE dbo.sp_ValidarLogin AS RETURN 0;');
+GO
+
+CREATE OR ALTER PROC dbo.sp_ValidarLogin
+AS BEGIN
+    DECLARE @LoginName AS NVARCHAR(100);
+    DECLARE @Momento AS TIME;
+    SET @Momento = CAST(GETDATE() AS TIME);
+
+    /* Block the ones that aren't blocked already and maches the time */
+    DECLARE block_cursor CURSOR
+        FOR SELECT LoginName FROM [DBATOOLS].[dbo].[HorariosBloqueio] WHERE Bloqueado = 0 AND HrInicio <= @Momento AND HrTermino >= @Momento
+    OPEN block_cursor;
+
+    FETCH NEXT FROM block_cursor INTO @LoginName
+
+    WHILE @@FETCH_STATUS = 0
+    BEGIN
+        exec ('ALTER LOGIN ' + @LoginName + ' DISABLE;');
+
+        print 'Bloqued usuario ' + @LoginName;
+
+        FETCH NEXT FROM block_cursor INTO @LoginName
+    END;
+
+    CLOSE block_cursor;
+    DEALLOCATE block_cursor;
+
+    UPDATE [DBATOOLS].[dbo].[HorariosBloqueio] SET Bloqueado = 1 WHERE HrInicio <= @Momento AND HrTermino >= @Momento
+
+
+    /* Enable up who was blocked */
+    DECLARE unblock_cursor CURSOR
+        FOR SELECT LoginName FROM [DBATOOLS].[dbo].[HorariosBloqueio] WHERE Bloqueado = 1 AND (HrInicio > @Momento OR HrTermino < @Momento)
+    OPEN unblock_cursor ;
+
+    FETCH NEXT FROM unblock_cursor  INTO @LoginName
+
+    WHILE @@FETCH_STATUS = 0
+    BEGIN
+        exec ('ALTER LOGIN ' + @LoginName +' ENABLE;');
+
+        print 'Unbloqued usuario ' + @LoginName;
+
+        FETCH NEXT FROM unblock_cursor  INTO @LoginName
+    END;
+
+    CLOSE unblock_cursor;
+    DEALLOCATE unblock_cursor;
+
+    UPDATE [DBATOOLS].[dbo].[HorariosBloqueio] SET Bloqueado = 0 WHERE Bloqueado = 1 AND (HrInicio > @Momento OR HrTermino < @Momento)
+END;
+
+ +

Ok, so now all you have to do, is schedule a job to run that stored procedure from minute to minute. Again, the main idea is tell the procedure when a user must be blocked and when it'll be unblocked.

+
    -- Will block the user protheus from 10 AM till 15 PM
+    INSERT INTO dbo.HorariosBloqueio (Id, LoginName, HrInicio, HrTermino) VALUES (NEXT VALUE FOR seq_HorariosBloqueio, 'protheus', '10:00:00', '15:00:00');
+

+
+ + +
+
+

Translations:

+ +
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blocking-user-on-sql-server-based-on-schedule.html.gz b/blocking-user-on-sql-server-based-on-schedule.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..2feded0af348e46744c85b512cd6c40d85c59df9 GIT binary patch literal 6161 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 literal 0 HcmV?d00001 diff --git a/categories.html b/categories.html new file mode 100644 index 000000000..36ecb0b4c --- /dev/null +++ b/categories.html @@ -0,0 +1,312 @@ + + + + + + + + Sipmann - Categories + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/categories.html.gz b/categories.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4bf6bb2b082b06cc86229936387bf6a3924d987 GIT binary patch literal 3199 zcmV-_41n_=iwFP!000021I=3Na@)2N{%t=6%AOv{ttncP6DP9d)VVZmC$}bPPdk~6 z2O=Q~F-WikXjyIZ?q?SuDUzZbC2=}V+K40;ANGdb#bx}}!{-lP|MB7xnd?ZL?2hq= z2pWeIhsDmxE_`7$IN2reXB;t2i9e^QVtV5I`uYd=j#F)lX~ZVZ1!s#yrrIICj5Uja zbio5Xp9JiJ`^+^j`-I0_b1GcrQ^6+v-a!p&u65$FKQn$YaejAyJ#`<*D50891*_n4 zHeo@?ik_Nl!A@TBB%*OlT=IZw7Rr<}HTG=V?i#m|jG5+t0kn)O$p7&r7ro0g(L9+- z-ScJSWk242czX25=`TmigR`G5e%FV|!Ee8yk}9Z4DifCK<;0QUNO8^1aGVNq&Yp8Z zHgwX^&gZKMFhJ;RKrU{I+Bzn%{P=UgIkp=Kbzz|HxBm!ze zLqbl0F$xc@j02NY_=I<##o>{DnyTJ=zbZ2z-YaRLz6^s-#C?rZQq%;lnH1O znx!#CiyD=dGLh5Q&!3VX0JFh_>8A8jFg0fk=9T5j({mOv&sWM@414fXn4-dYg(g{s zXmI7h*!+T-4r|cs2!-r3(5LE!Qig)jge#)}z_>S~5f{tJOPIwAy4(cWkS2kDB@G-x z6%ZRcJB#dE?@8uD$liw8WE>Z)jm-a*j6m%vy%M%Zuv+XD4JbrH(y<=6DlT$`VF38Zdv{NNJVp%L|s)X}oVMR8(u~&vAN>$c$gI;P_jwMqQfW z;GiyD@w9Tf6sCt@WL?ULUfSF}A}%DQa}F-eg>dNw<$^+DZpGc%>CItmf#U<<&dv_X zG81y)UXBROv^<87@8N&=FCiz!>wzk_=u~8^LeN_bU5xA$d@Ci1B{lPc$AJ;wI%)Bh z!nk0IcbU?Bwk&}P?!J#$z$xiQJT64LdlwveuOa%^(ef1!*p#M?1~Yw1ljkK3`HDwa z0MWQ%*Sc-NU1xp#yOI8Vn;YglL(pU_HtD--0$-|JqcbR|Fy@aStEcBpK~R6j6mFQ( zWs5Ksrz+;uU^W~KkFFFdCtb{;P`N^ye?_MsV7I}=ylwP6AQTGd`~9HLHk-yI5HHUl zW6u`MyJO5D#1~XSimR!;$g%;ysI+UDR8w0_tBt57_(79e%i%nr5Ec(BeN4Y;rnQXg zU0pCsgkADRc$$OiT>-(JnKzu1E~b;!o0&fa(+m>3g!+;D=LmWR^;X>7J1)u{i`!tu zu)_;ZW|Yh*G6QAG*yAVUzwuNh$4^b%=39D6#Ua zJ{Umi!}NV{T=g$>zMQg54nvHcHV#6f_~y784NSQ_B2d(KJ4Nkm`RPG2NIHAR8?qLf z+sI(Wv3*)+Kwh$=EVk@0bE4pKm45n%CW|$tSplVT;hfax`Pxvh%Dqcee^5-udH-a! zTm)Yyc~uS^_j8g=)Jo5j(mOZV*0+F5kN%aVtcPoB=j0Th(cGjv+#7p<^NFA{0S*T0 zx3E9hHw)bVJm3_|Iu-{7bn$*2T)%^IA;kIj2+Jb~t zDdC(ea&F$k`GjCx3|e0ux70BvXgA!YmarSn`tM0o%K}@=lV^*YDN#NBY%f#M??y_s z%6nT2g!%DC%2G+VTMJ_n^Np0IlIgdW##971Qkt^F*jg4WMQ)@h&Dv&biB>hxjg+fe zRBbJjExvA~Jk4ruYnfJ6-;I>3Qbukqk|{U0k;WFFMbY^s3c-}&jsWgR>uW9r>&P$7 z8%#QQyS8$0doy~GjJbwlG!9)8%7HzlX{wdG;Ck+^t&rA(c?n?SIw=4M0(@FD`568U z(?LcBG%00HJ7!tzqiLz&dbx@32Xh*S$TiLR&J=En=NN?gsZ@$Ynb14|MOV%w36DX- z*k@KmJSh(3BGx=&Uq(inP=C(cn9sQTPDylR*P05ZlaHp$;sDI#%W|J&y#_ZJq>Vg^Q$b_M5o0_`Q>nk|?+5XEf4g0*yo-Ssuo;C}YvQoElt8G!dmY)5JZ0pRJg~Af z_it|>B$w4(n4f43`bYKexFbtzQQH1owHs2~!(Bbjq|}>tq-)0&xnAAjpkc<1+qk%C zvc+C|GoNelVO$ZTQlGxsU=@37AeMNL0nEnI9HFHwMSIoHEOI=U>={iNei31QhVj}q zZFeTn2oe?N zvo4pvedW4jZ10blTTCtuTwic=@yDlb0vZ_}+&#KI7~UQBZ}o>qcZPW9WEuPQ8JW8`8>6mqYd=v-kKKTIfjbrXupA~XS z1;I;)Fv&yG4dGvqa*u5A=bgflTP7B!N~<^kfxrQtWg|0!!i>5HYl_G2{r?>f22Woc zKIm7bREY~u1nN{+|1Nqs$)C_AM3~9?r+iWXb?K)#On2|^lEykZgf3$h(BXR|H&h)k zud1uA&?)t2*UIY}ucUb%8GkZ0CobS!a=cRT= zq=>xc5(n+cG<5bWgywE2P`!XU7mzAV=9Ve66bY}=gcmV$;PX`QS0mp=vF z${7y&L<{o6pMJAzMO@VisCO6?XuhtElsDZEuO8{SC9928dUJX6q7i)gjC4yTd!{Vx z;eA{ayXQJY + + + + + + + Sipmann - Azure category + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Microsoft Against Covid

+
+ +
+
+ +
+

Has your job been affected by covid? Well, last week I've posted on Grepora about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by …

+
+ + + +
+
+
+
+
+ + + + + + + +
+

Sometimes you get your self in need to monitor a website's health or it's content for changes. Of course, there's plenty of options out there, but for the sake of curiosity, let's code our own to see what we can do. First things first. Everything you'll see here, you can …

+
+ + + +
+
+
+
+
+ + + + + + + +
+

Hey folks, if you want to achieve some certification this year, keep an eye open for vouchers. A few months ago, Oracle released a set of free courses with certifications. Now it's Microsoft time. Microsoft is updating they're certifications and we have a voucher of 80% discount using the coupon …

+
+ + + +
+
+
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/category/azure.html.gz b/category/azure.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..b43528b19852a9d540fdef4aa9199f84edb66913 GIT binary patch literal 3936 zcmV-m51;TKiwFP!000021MNKRa@#hxzvHJs+3m{Snxa0OI+kU3ozG^cY0|`Pcc;_w zKqN>Zh6siLC9Auc*{8WLasS;%xlgj^03=0Hlx=0()YEAi$0Tvi!TCN1AlUIIk6%7I z|HrE*WU6Q4bZ3meh@f$F;;`5`-GL{J2B$j&{)}f#Q{qo)s+c};zB_;FK5(i-F`cm! zXU^Fok*RiwFJsMO0A27vPfr3i=RR}I%|78V*PIGh`Bbozez#X6HPt$C*}II-Pn^HI z-<`RS%S+&soZdPc@5Vx*U6Ud}od0nT(m{ zKLdFgSE&EVmt1tO(nRxQB6Zi7GcWt;mVhP|jI&PRRx&y-cd`3pPPA4)NC29WdpmJZbR$P{@eTiOe*CnU+LP zc^oNFx-YT-E(sWe37O0Qn$S2P0o8Ou6;q8#>TIC`+vM1Ukfovmjz(1@&s!`OU1d>G zshic%E?ZrDZFqb}BX;w|o`F+d{J*JId5GxmmhD`g@+fza! zR${~OitD%Zox^+DzOKKW;PgMUzYu2s~CIEAYAiK4)^Vkr+x@b^3A zC2dgA>`J=<^JQurYeZtmUB_*hpos=h#XV}sVKEO zfgok+1)oI?V7tc`K*_dYw`1eLOcQH=)7FE>J3<@$2Y(mIUymkJcs zn)*`=?-2?46$_64;?58kB)1?p|f{}G8XY|U}?-6mKC|z=JX)c6I=adTy z#krO4y?fm$%q?(!Ab9WIJ(MLBa^YT$2+g!ShKKLr2mU7H)ObBW;c5^agetTuj?$ z&l5tSfWF@k`fRglOabxo3NrR=)4Vgr8bW+Q6_mJ|+KVb1@Ofoi%cNS`Vp<(UEx|7| zskI!&0fn@9P{A>HlT2$F*HK+C%M4NSLAaWN>RkcJotZm~Nf*n>>dwSZ!8C)yE}?(q z{v{HtieZNroP?Bw6q$iGW$f`&^5=M>lH(UF&c>d_Z$YO;ALCpr zk#qW$oUyS-8_J+J>Y-wl8=5^9d(J6~x1HoBvWW(=iLQ|yLytDkox}q#DV8nhS&;Tt z)2&h=-a!6isY8q-LW`AG^}zs2AC~Xlan--j`EtmzI1Dj&+B^t_;Tz>fV^c#S!~;3Vxr)3Ret&hriwMCSrJO*!a1$S z`Px*l(mf)oKWN5JQU5BiCeBt|;g!jBZT`M4k+Dw;sI}|Gc*A;p zR#l=*sLwS78LTxKj-5Dz-k|69dv0%d-ai`kdhi#n;a}*>-%w3@L-Nwsasu9sptyve zu?>uRZJbv8uKMS{Hd=BDf4`!NEM=CGw{k)zrWA)E^EC^|WJ!#9z9c^|A@&JS2B&81 zl05Is8P+z0g8Z{)cSy8Qw5YK;%Ix)yy#8Uu{LsyS<3Xr{mxlQQ)1Au_=a`u?Kc=`GX`M>|Qi6F1THZvsGXs|u9%HdC3kZWeP8(jB# zxK?W%lr4&y!E*3syIebN7x)RSDsD|(Db_$|m5Q%5)u-Ua?=p3v0Ty>La0AV?&s>h{ z5QsIFLd|NY;hcWY*@6@*vg$?#Z;CqHF1W;SL7tT?>dp1_Sc9 z4AxP1uw{7zYb0dIG%h4!+BPtXi4d0ABxX=+p(^Lb2W#ZE?cZ~KBQf-N;C!lO$HQo2kW86+U-HlEmlPJ$h497 z7|=2NN_0{~w?X=#_gT5D`iQMdjg!07z5G_1|3JjM($Vye&ijMWu-4I>XN>fY?rcZ% z6(A$yh=lDYGRs83~I`Kay{! zKu2>%LdbiNEA>ODPA?~u+_D5M0*CqvG-^hh+o>t3y z)MdAF4}4__7zWERZlZM32Jgze?^!UrT|x_1k%6j5kxbagwvv@S+6ue}@gkZsBX$IZ=Kp$ty+4v5rd?S{-nh8ab zvFgiLtE2-XM3e5L@)}CoLG3-9xy(dmLbxejnc^9UwjOdUc=M$k=~Z7)JJ-BX%rS0C zjKx7m8$5Z|%O|a${b>nllNNW@`nA=K;J=YHp@6)|(kFF@@^3r9`g~@eLy0Nx4#3qR82nGQBoPcTye*A3UNv-?|Dx43Rem@lML6r4(vQ zky%%cI|w?Zf4O$>_GY~P#6U~xZa+J) zg$HiK+x9OWS~%YB6~wP2$p`K$Y-pvo-(mQ#W9oxrX_7778FMMPRTwgM`%tQSblZ+B z5S}q=shZ4_XCa4ZT>0x0=VBsg3~6SJXU$dWukigKUdOjvB+8o)ynNHhgtGZ+hfskZ zK4nYtf{`=uc_T~nfa4dvJI*;h zSG~(9I6piQQGUqx+z#FD&}@^>2%;pLT4J39PgFgzOe@Arp? z4~F%wwv(^+x^`-Nkk1S# zIV--)s%?oCjNAQFJdkb{n)&x)b!*LON-iS$j-1$E|N0mC@u&KkeSF?cGBw@(v2&rA zKJ!iP?d+4zcW02?4+p&mLwC^mY3~|5ol^hu708R9x~_rl7UhoY?zMbafJ{adSPZ0} zVQJ|4DO5W4L@>PD?O4$|d+XmgM6`=)0NhSP5uH|GYr_+w(~PwOfO%nfw_`2bAtx2C zp#96=>ZMXk+ztGabSj_Ib;!ux+g#t-BcGE_>o;~D%=A{Zu!yQqRZT#w1Sog_C zcnAd@^PcrtAtzK2)2L_~k=+RX1u6H)27kU+IC4v1VX3r=10s+(z_V;-Mxqc=UqV~@ z%zgO7!C>&>)xo2FC8SEaa7Cb}fF;zTi$VT1T|$OAS$~uV1wfa6iqq`w{j-Fzjt;5I zSOs+W9>EP%2MoDSVz$8khVAZwHdkX%*Fqj)ELFKhPrkQecxOGTt6$2B;Pbbt{ElQ5 zKF(jwfuk$!j7X7r%~wveE7Qo?uK=2lrvd5}tgV4kWypMn4I@Rts|?|n$~on>Pn1i* zec~vfa;5zXzL&pKjnUOt zTCK7AaQQsgt-J<6pJ<`{`1$v?>BWT+EHMc)hr4Stt}jt!D=&=-dui~)JVQO zB)cV(UDFnJ^VKdSKFFzN#oKAi*&ESF2S1o + + + + + + + Sipmann - Flutter category + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Flutter + firebase auth crashing

+
+ +
+
+ +
+

Hey Folks, recently I've started learning Flutter and right after a TODO List, I tried a Firebase integration. But as soon as I started setting the dependencies, my app stopped opening... just a crash. After a few logs digging, I've found the following log.

+
AndroidRuntime: FATAL EXCEPTION: main
+AndroidRuntime: Process …

+
+ + + +
+
+
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/category/flutter.html.gz b/category/flutter.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..b68127e1beaade825ee318374c71610dfdc44bda GIT binary patch literal 3404 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 literal 0 HcmV?d00001 diff --git a/category/front-end.html b/category/front-end.html new file mode 100644 index 000000000..8949bcfd1 --- /dev/null +++ b/category/front-end.html @@ -0,0 +1,375 @@ + + + + + + + + Sipmann - Front-end category + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+ + + + + + + +
+

This is the first part of a microservices development series. The service will consist of the bellow architecture, where we will expose an image optimizer service that will forward the request to a RabbitMQ queue and answer with the bytecode of the optimized image. It shouldn't be a long series …

+
+ + + +
+
+
+
+
+ + + + + + + +
+

Since Parcel JS arrived, I've been using it a lot as an awesome alternative for WebPack. Webpack isn't bad but IMO it's too complex for the job and parcel do the same (at least the basic) with almost zero configuration. But if you need to create many apps (like a …

+
+ + + +
+
+
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/category/front-end.html.gz b/category/front-end.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..16c100acd5f799c51d61de204f73126079fd8156 GIT binary patch literal 3985 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 literal 0 HcmV?d00001 diff --git a/category/java.html b/category/java.html new file mode 100644 index 000000000..12cb89a65 --- /dev/null +++ b/category/java.html @@ -0,0 +1,370 @@ + + + + + + + + Sipmann - Java category + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+ + + + + + + +
+

Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some "Could not open connection" at my …

+
+ + + +
+
+
+
+ +
+
+
+

Java - Files.readAllBytes throws OutOfMemory

+
+ +
+
+ +
+

When you need to interact with files, there's the possibility to read all bytes from the file with Files.readAllBytes. But be aware of the kinds of files your application will deal with because the Java API files have a limit for the buffer that is defined as Integer.MAX_VALUE …

+
+ + + +
+
+
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/category/java.html.gz b/category/java.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..206c02a7ad1d634f6dfe6dfd5a65de65157924b2 GIT binary patch literal 3981 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 literal 0 HcmV?d00001 diff --git a/category/linux.html b/category/linux.html new file mode 100644 index 000000000..1feae1512 --- /dev/null +++ b/category/linux.html @@ -0,0 +1,460 @@ + + + + + + + + Sipmann - Linux category + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+ + + + + +
+

Zabbix Running on Low Memory Mode

+
+ +
+
+ +
+

Hey folks, another Zabbix post today. This one it's about increasing the Zabbix Server Cache. It's pretty common (if you have the default settings only) get a warning about your Zabbix value cache running on low memory mode at your dashboard or logs.

+

Zabbix Dashboard warning about the memory problem +Zabbix Dashboard cache graph 70% used

+

To solve, go back to your Zabbix …

+
+ + + +
+
+
+
+
+
+

Zabbix poller processes more than 75%

+
+ +
+
+ +
+

Hey folks, this is the third post about tweaking the Zabbix configurations. All changes that I've suggested here were based on a Zabbix Server with 50+ hosts. Another thing that can happen to your server, it's the poller get overwhelmed by the amount of servers that need to be polled …

+
+ + + +
+
+
+
+
+
+

Zabbix ICMP pinger processes more than 75%

+
+ +
+
+ +
+

So your monitoring sytems have grown and your zabbix started loggin "Zabbix icmp pinger processes more than 75% busy" at the dashboard.

+

Dashboard do zabbix avisando sobre o erro

+

All you have to do is open your config file (/etc/zabbix/zabbix_server.conf) and find the a tag named StartPingers. It'll be commented by default. Uncomment it …

+
+ + + +
+
+
+
+
+
+

Zabbix Server Out of Memory

+
+ +
+
+ +
+

Do you have a crashing Zabbix Server and looking through the log /var/log/zabbix/zabbix_server.log you see the following out of memory message?

+
__mem_malloc: skipped 0 asked 24 skip_min 18446744073709551615 skip_max 0
+[file:dbconfig.c,line:94] __zbx_mem_realloc(): out of memory (requested 16 bytes)
+[file:dbconfig.c,line …

+
+ + + +
+
+
+
+
+
+

Connecting to a database through SSH

+
+ +
+
+ +
+

If someday, for some reason, you need to establish a connection with a database which is behind a firewall and you only have SSH access on that server (and you don't want to use a CLI) you can do an SSH tunnel. It's pretty simple, bellow has a sample of …

+
+ + + +
+
+
+
+
+ + + + + +
+

Change display settings on linux with Disper

+
+ +
+
+ +
+

From time to time, I change the Linux distro on my laptop or just do a fresh install on it. And once in a while, have random problems with external displays. It can be something really "simple" like don't detecting the external monitor or something crazy like the image below …

+
+ + + +
+
+
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/category/linux.html.gz b/category/linux.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..916b4e9c20b9c4e36de2f9dcc1fb7be568618466 GIT binary patch literal 4776 zcmV;Z5?AdXiwFP!000021MNK9a@#nT&+%8F)!QR`+SJvKWBJnK+`2OrchZTwcV<&5 z6-Yu7Vv=A8(6Ta@ry?n ze}DOeOjH=0ZXM$<63}RT(qK{JbPJv^>Yr{A_;VaGMTs||iDc@e@$1D?=Ru>`6w#2K zG_E+C#v)M-;)zJH2tcRYSCbQ;U2%^&`ev8#h$~J5M|w11C*4-3gleKx?6CJKzdC9B z&H44rc_hM^D((iXfS0oq=8sv{Q*jlr)7Lx>X%rEMJm*n*O+2dDSR}LKwrSs5pg0r} zQ~U#<7f}KGe|Ulit?MLKJa&a@c_M75Kiz+PcJTMJUk+xS;j^p1slB-K+b<}n0@gSY zF-z3!q#?!w$rT&oI0ej>#KtLE(n-zYBK(xOh^9f>i{kc~^b#IdXnz=pF`=$V6@igv zL``@!mLPO5NPV~@pbQp>I0R@yBcJ$GQI|?4D}$8DLIKwCv8+Ry1O;$ZsvNZ2)9JJ& zO;;4^axv8NR+e5}KOWLCTRm`F!^w8xQ7ewd8DerA@aU3E5;j_nV#Js)+cXGTR6+Oa z5Ew@7oiu112i(&})yB5(bz8y$XbKcdB8nQ-BF%XsXBRKd$y2~tAwqYPY8Eg#VGMlB zP}Now7P7V{WqaCh!LLje1e5^Y!m5<%=bs_O}osPy%@i~|azyMgd7k4kMZ^)W0A$YEl={EFf5G!UL*Cu}thyzLKl7mU} zAaLjv=p`^=?Dr9rz-u5w$}kZ*X1MG%cDdM)b~%yrbozf0ji)|sKD8GiI;&x(U{sk;^+x?(|KLWZEa-Fsg~|=wd={Cm zAh$xrq;7N@5HbODy{_M7%T=QjNZV$R&_KA$jdHU(@=`2>| zW{xNk)5dAp&liS*neHKx-Cosyviw(o)qXao3a@metFiax7Q9UVAE@i{YbQyg2(;yh z$idVYvJhsiPAGiV!fAOvSNJatPF@*s@JaGqOv$+hC+7fOLsXUjc^#7rcR|sp=S5;O z#T%lBKic_bZvZ_m?qjhiHL{rh2m$5MEogTZVe}F_+f*^ko#o#~CxPcE% z9rD6c!i7MAptu?mvL%GJ>nL5K*MD23@hSZKiOpap5nRe$C}#xBSQBC;4rPEMO89iv zA{P@b31%p+n$j+B@Cd3PDp4uWE$j7~B@lSXBPfYki#$VcsF0L`Y%IbMw71PiWF}HF zp;t_I^x24}fg%#1^je9Cg4qrkGX>@7lqOp3W=QClkYf*&o|(lJg&LK3I2uXjCIUuB zjM0%$n~3g1s72vZIdKJq79tXW9n02nJBIQBB!ZP z;z71t=B7h!{(6~X>xN+rFOU@D2|4I|M^efBdejTd%OK9!xDYtux?;OzEOa6P zMH<%ac>njW|3+91zba(qL4BzUEynloK}~$Gv%oxoyDB2^-^t7Yudij}v&Wm7A}%jj zY+9e!Zl>r)7+tkiOEQRVw z$;)&M4;1qWR2L8j@CUx}@G<_Z(D%;Go9yaO@SYmr8y*{U`8 zDdgfGOx7)MmG9>O?ZgQ?)!`;{SVPDV7o3L}&V)B0@{+?;*)PYXuyNY4eF&A8HO;-f ztQ`>yL-3y}NcX|s-u;8Uz0N`ZpmVst-@V`6FL$EXONZSmHHgOP8{2?|!@ze<8PW1~ zaVOK@aIXsfHXCU;{NP?|jv*c*%T>tj9Sb_B$an$J!X@l|YSt?jIKH2a>Oz4hs|a>} z4{xR{(TW3Qqeiu@e<@YUCy9Mu%aPAtj;v7JhGocdY+uWdTPr^RPsBWYsXA0*m~Av4 z+VnM)RUdqm!{fw`=3CSAg!lUOPmR-cp#J!Zr27C$5T|!|(S>rPzfh4Jl5?7P6M}$u ztQ>hZg1I?Nd+BT!%7aAT5PZ`vqFr4(WXsf$qo^BjIl-#MDg|RAuAmpx0!9an!W`XY z6P#UxM0vud5MHuH3H`?1)IXp*LOq-%;NrYq6*sO+wliQ~L`_AeG{W5h_<9;JK6?Ia zM>pcyybo3pX-p~ws)F)10LjBRV7ovKRz5JQg#MD^Lk#&}$|U`EeD7-_{EUfkO%<-2 z30I^0nhJl}soZ>(k2Z87C!>Txg~1~zHlShvIIi%mJifg57(B;KdJ~QrT^A4u zzFY{iJ#o_LGqa{l?-EM_T`Rau*Eis5c59X)N(a zX+L$!zCGyMD+qT|tAa)l8WgiCA>2P{6N*G&?}%RU zvHj4UCY*vD;0%cQ?o2m2_G@|0WMk2)_bO7MeZD6ux>DeHG9xq3&h=!Oja6}sF> zUUWv-kQrSi-brr4nS38?$j$le^)JuwBsURL8}icn`N_qdWF;0;mdFWYw+%UZi5*{K z$2-ZFnc8f~(<|NSPVxipW8cec$P@UGeNlHO`BFjzazmCbu+KW&9Jf(W*Zp*BQCBNJ;@ZF}H>Y=vJ@iXSzIiwOt&+X& zZo#Frud#3NRvB2ekzgs|bz2H z*ig6b42VNU4OSh)Z9H!fg{vg$q%m{@8bQF;o0|0|<*dKwM~nThsbwvKCTQ;W=NOY4H9+k#G zaptv8^eITqP}ULq+_qJMM8Wus$=N%-CTh-sGmDATcf5e>1N=Pd#2}G==kVZuuYcI@ z?sxkK5Bhj^+${3S9vRayqkhjG_Xh30J%!JlwW3?w?_`_$(w!Ng);oP7jTwBtYPeNe zul-SjlC$jixYFWcMz~pP#&dJ@l-(X{SJu`QO~`Oe-;)#b>!1H5Z{C)V7Q*MPIF*y_ zH_f4B>df=-Q^DpgY5scVJm?(sIuH6zulaW8hJGrc-sMZ+7f<9|0Noy?k=d!Sy;F1k z5fVA3K%y_a6xU^2c+7%gPXdN_+fBn-b7%1=rZH`y7@%*nB8X-!u+iZOQAx^b0YJUb zyxlY!ZjzG%RZvJ90KYcOd&Xu1;nINM;i39NmhCb81TJ^T5_`Uv8FGzdVX8EO10)bQz_Lta zMx@|TKR|*1qx0}T_jV05h-1Cm8veHa^UiDcZ^Edc5>UIFSQOAu3`NuL%AEm^`VG~t1& z7IWQ6syW~;X-L3wCIR}*f;HZpUw4pq?Kb(5neWZ) zTam4zkIoO1tM%1~vuFNx;e`s?L=EQ0&wev6A90F_? CMJ)dS literal 0 HcmV?d00001 diff --git a/category/mysql.html b/category/mysql.html new file mode 100644 index 000000000..1e0de87fd --- /dev/null +++ b/category/mysql.html @@ -0,0 +1,307 @@ + + + + + + + + Sipmann - MySQL category + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/category/mysql.html.gz b/category/mysql.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..cfca5f836c61a68b0e6fc8d7bb4d861fbf562380 GIT binary patch literal 3412 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 + + + + + + + Sipmann - .NET category + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+ + + + + + + +
+

So, you use Entity Framework Core, and you usually code your selects like the following, maybe you are getting too much data.

+
var products = Products
+    .Where(p => p.UnitsInStock > 0)
+    .OrderBy(p => p.ProductName)
+    .ToList()
+
+ +

Running the query above, on my table, you'll get the following output, take a look …

+
+ + + +
+
+
+
+
+ + + + + +
+

Top Level Statement in C# 9

+
+ +
+
+ +
+

Hey folks, I'm coming along to tell you a few things about the new feature of C# 9. Every time you want to start a new project, you always have the same Main File, with the same structure. At the next version of C# (version 9), we'll have a new …

+
+ + + +
+
+
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/category/net.html.gz b/category/net.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..c5251e20036853ba1271a4b13db9177115189039 GIT binary patch literal 3755 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 V4!#4SFZ3J6{{ggh`txx-004(XR4V`g literal 0 HcmV?d00001 diff --git a/category/powershell.html b/category/powershell.html new file mode 100644 index 000000000..1a8236810 --- /dev/null +++ b/category/powershell.html @@ -0,0 +1,379 @@ + + + + + + + + Sipmann - PowerShell category + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+ + + + + + + +
+

I've been migration some bash scripts that I have to PowerShell, and it's time to migrate a script that monitors the replication of a MySQL database. The credit for the original script goes to Paweł. It's a simple script where I seek a few tags/fields that we get from …

+
+ + + +
+
+
+
+
+ + + + + +
+

The power of PowerShell

+
+ +
+
+ +
+

As a long time Linux user, I've automated a few things with bash scripts and stayed away from PowerShell... I've moved to a Windows environment a few years ago and still, haven gave a shot to PS. But why not? I've made a few scripts to automate some tasks at …

+
+ + + +
+
+
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/category/powershell.html.gz b/category/powershell.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..fb724849b0ccc64aca3129f14ca93a5e769b9040 GIT binary patch literal 3890 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 + + + + + + + Sipmann - Random category + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Now posting on Grepora

+
+ +
+
+ +
+

A few weeks ago I started posting at Grepora blog. If you like or are looking for some Oracle related stuff, Grepora it's a good place to go and spend a time reading :). From time to time I'll be posting there, it doesn't mean that this blog will be closed …

+
+ + + +
+
+
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/category/random.html.gz b/category/random.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..15134310dbda8131212efe8f631645e1c205a7d4 GIT binary patch literal 3333 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 PZ^-`#1AECtF)siBz#wU4 literal 0 HcmV?d00001 diff --git a/category/sql-server.html b/category/sql-server.html new file mode 100644 index 000000000..359194eb1 --- /dev/null +++ b/category/sql-server.html @@ -0,0 +1,375 @@ + + + + + + + + Sipmann - SQL Server category + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+ + +
+

Your customer urge you to drop a user from the MsSQL Server database, but you stuck with the following related error:

+
Error: 15138 The database principal owns a schema in the database, and cannot be dropped.
+
+ +

That means that the user owns one or more shcemas of your database. If …

+
+ + + +
+
+
+
+
+ + + + + +
+

Limiting Connection Resources on SQL Server

+
+ +
+
+ +
+

Have you ever suffered from a slow SQLServer database? Someone love to run that heavy query in the database? Resource Governor to the rescue. You can set a few rules on how users (connections actually) will use the server/database resources based on a few things.

+

First things first, if …

+
+ + + +
+
+
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/category/sql-server.html.gz b/category/sql-server.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..ee681a4d8b3ecdab8e1705612f09c60c784d3c18 GIT binary patch literal 4009 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 PKSB9_b%sPm6h#04kqh85 literal 0 HcmV?d00001 diff --git a/category/tools.html b/category/tools.html new file mode 100644 index 000000000..cc6f7935c --- /dev/null +++ b/category/tools.html @@ -0,0 +1,331 @@ + + + + + + + + Sipmann - Tools category + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Apache Nifi JSON to SQL Replacing underscore

+
+ +
+
+ +
+

Recently I was doing some ETL with Apache NiFi. But after a few minutes of drawing my flow, I saw that the component ConvertJSONToSQL was replacing the underscore ('_') from the field name in the where condition (I was preparing an Update SQL). That was weird because, at the set …

+
+ + + +
+
+
+
+
+
+

Using git hooks to easy your life

+
+ +
+
+ +
+

Hey folks, it's been a time since my last post. In the meantime, I moved to another state, changed job, and started learning new kinds of stuff. Today I would like to share one thing that I usually do with my small git projects. Git has many cool features, git …

+
+ + + +
+
+
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/category/tools.html.gz b/category/tools.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..daa90a7a9ad5d578e5408d33ec18225861235489 GIT binary patch literal 3630 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 Ax&QzG literal 0 HcmV?d00001 diff --git a/cloud-not-open-connection-java-mysql-hibernate.html b/cloud-not-open-connection-java-mysql-hibernate.html new file mode 100644 index 000000000..c0c139e64 --- /dev/null +++ b/cloud-not-open-connection-java-mysql-hibernate.html @@ -0,0 +1,474 @@ + + + + + + + + Could not open connection with MySQL and Hibernate - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+ + +
+

Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some "Could not open connection" at my face, but why? I've tried to connect to it manually and got the same problem.

+

After some research, I found that the true error should be java.sql.SQLException: null, message from server: "Host '172.17.0.4' is not allowed to connect to this MySQL server" but it wasn't showing to me...

+

After all, be aware that with the docker image MySQL:5.7.21 (latest version right now) the root user isn't allowed to remote connect to the database (it's alright, security reasons) and if you still want to do remote connections to it with root there are a few things you can do.

+
    +
  1. Create a user or allow root to access from other IPs.
  2. +
+
#No access to user root on any other IP
+SELECT User, Host FROM mysql.user;
++---------------+-----------+
+| User          | Host      |
++---------------+-----------+
+| healthchecker | localhost |
+| root          | localhost |
++---------------+-----------+
+2 rows in set (0.01 sec)
+
+CREATE USER 'newuser'@'%' IDENTIFIED BY 'password'; #% mean any IP
+GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%';   #*.* mean database.table ;)
+
+
    +
  1. Use MariaDB instead, witch come (at least on the version 10.2.13) with root allowed to do remote connections and will work like MySQL :)
  2. +
+

I changed to MariaDB as it work without creating user or any changes on the Java code or the docker run command.

+

+
+ + +
+
+

Translations:

+
    +
+
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cloud-not-open-connection-java-mysql-hibernate.html.gz b/cloud-not-open-connection-java-mysql-hibernate.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..01a8c7b6b4df8390597e100784aa78c4b18d91b4 GIT binary patch literal 5145 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 HgirtgXm|aG literal 0 HcmV?d00001 diff --git a/connecting_to_database_through_ssh.html b/connecting_to_database_through_ssh.html new file mode 100644 index 000000000..18f6fa64b --- /dev/null +++ b/connecting_to_database_through_ssh.html @@ -0,0 +1,463 @@ + + + + + + + + Connecting to a database through SSH - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Connecting to a database through SSH

+
+ +
+
+ +
+

If someday, for some reason, you need to establish a connection with a database which is behind a firewall and you only have SSH access on that server (and you don't want to use a CLI) you can do an SSH tunnel. It's pretty simple, bellow has a sample of how to allow connections to a remote Firebird database.

+
ssh -L 3051:192.168.1.9:3050 username@192.168.1.9
+
+

The -L parameter tells to SSH do a local port forwarding on local port 3051 to remote port 3050. You can use it to a connection with many services, not just databases.

+

You can do the reverse kind of tunnel, forward connections from the host to your local machine, you just have to change the parameter form "-L" to "-R" and the port order is inverted, first come the port where the server will listen and after your localhost port. This remote port forwarding must be enabled on the server. Look for GatewayPorts at the ssh config file.

+
ssh -R 3050:localhost:3050 username@192.168.1.9
+
+

Why whould you need something like that?? Let's say you want to share a localhost site/database with a friend, but your internet connection don't allow you to expose any port but you have access to a remote server witch can do that. Problem solved ;).

+

+
+ + +
+
+

Translations:

+
    +
+
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/connecting_to_database_through_ssh.html.gz b/connecting_to_database_through_ssh.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..2e242d2b6d06738ac147a1b9ddb223db67ac621e GIT binary patch literal 4697 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 b4MRlX5*WS_s6MFwvCRJfYx=+gXhr}4o-q6~ literal 0 HcmV?d00001 diff --git a/drafts/cloud-not-open-connection-java-mysql-hibernate-pt.html b/drafts/cloud-not-open-connection-java-mysql-hibernate-pt.html new file mode 100644 index 000000000..0e6cf9218 --- /dev/null +++ b/drafts/cloud-not-open-connection-java-mysql-hibernate-pt.html @@ -0,0 +1,474 @@ + + + + + + + + Could not open connection com MySQL e Hibernate - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+ + +
+

Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some "Could not open connection" at my face, but why? I've tried to connect to it manually and got the same problem.

+

After some research, I found that the true error should be java.sql.SQLException: null, message from server: "Host '172.17.0.4' is not allowed to connect to this MySQL server" but it wasn't showing to me...

+

After all, be aware that with the docker image MySQL:5.7.21 (latest version right now) the root user isn't allowed to remote connect to the database (it's alright, security reasons) and if you still want to do remote connections to it with root there are a few things you can do.

+
    +
  1. Create a user or allow root to access from other IPs.
  2. +
+
#No access to user root on any other IP
+SELECT User, Host FROM mysql.user;
++---------------+-----------+
+| User          | Host      |
++---------------+-----------+
+| healthchecker | localhost |
+| root          | localhost |
++---------------+-----------+
+2 rows in set (0.01 sec)
+
+CREATE USER 'newuser'@'%' IDENTIFIED BY 'password'; #% mean any IP
+GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%';   #*.* mean database.table ;)
+
+
    +
  1. Use MariaDB instead, witch come (at least on the version 10.2.13) with root allowed to do remote connections and will work like MySQL :)
  2. +
+

I changed to MariaDB as it work without creating user or any changes on the Java code or the docker run command.

+

+
+ + +
+
+

Translations:

+
    +
+
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/drafts/cloud-not-open-connection-java-mysql-hibernate-pt.html.gz b/drafts/cloud-not-open-connection-java-mysql-hibernate-pt.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..991b6b0f53f18e55f8b0a98ab3df5878cb068115 GIT binary patch literal 5151 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 N{{vtyDh#1e008cy;Vl3F literal 0 HcmV?d00001 diff --git a/drafts/cool-tools-pt.html b/drafts/cool-tools-pt.html new file mode 100644 index 000000000..fc144c64b --- /dev/null +++ b/drafts/cool-tools-pt.html @@ -0,0 +1,456 @@ + + + + + + + + Cool Tools - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Cool Tools

+
+ +
+
+ +
+

Com o passar do tempo você vai "encontrando" - e às vezes até mesmo desenvolvendo - algumas ferramentas que tornam o seu dia a dia como desenvolvedor mais fácil. Abaixo seguem algumas das minhas ferramentas que costumo usar. Ressalto que essa lista será (provavelmente) atualizada com o passar do tempo.

+
+

https://www.gitkraken.com

+

Eu gosto muito de usar git, mas às vezes fico cansado de ter que usar só linha de comando, e achei no GitKreaken uma interface muito legal de se usar.

+
+
+

http://paletton.com

+

Toda vez que você vai fazer um novo sistema/site, ou até mesmo trocar o layout de algum já existente, você acaba tendo que montar uma paleta de cores para se utilizar em todo o template.

+
+
+

https://icomoon.io/app/#/select

+

Querendo usar ícones como fontes? Vá aí e gere apenas os arquivos que você vai realmente utilizar e economize alguns kbs.

+
+
+

https://syncthing.net/

+

Se você procura algum meio de sincronizar seus arquivos entre vários pcs e por algum motivo não quer usar um Google Drive ou DropBox, fica aqui a indicação deste cara.

+
+
+

http://sqitch.org/

+

Gerenciamento de versões de um banco de dados pode ser bem complicado e trabalhoso... Manter diversos ambientes (desenvolvimento, homologação, produção) vai dar um trabalho se não utilizar alguma ferramenta. Porque não usar o melhor de gerenciamento de versão (git) e uma ferramenta que se adequa ao que você precisa? sqitch é o cara nessas horas.

+
+
+

http://www.setupmyproject.com/

+

Preparação de projetos java, com frameworks, bibliotecas, nomenclatura, etc... Rende uma economia de tempo grandiosa e já vem tudo pronto :).

+
+
+

https://www.pexels.com/

+

Bom site para imagens free stock. Excelente local para conseguir imagens de alta qualidade.

+
+
+

https://heml.io/

+

"HEML is an open source markup language for building responsive email." Melhor descrição impossível.

+
+
+

https://www.mockapi.io/

+

Desenvolva mocks para testar seu front-end. Eles geram inclusive uma carga de dados para ser utilizado nos seus testes.

+
+
+

https://undraw.co

+

Needing some cool and free ilustrations? Take a look at it.

+
+
+

https://www.audiotool.com/app/

+

Ferramenta para criar sons, musicas e afins

+
+
+

https://app.cloudskew.com/

+

Desenhar projetos de cloud e afins

+
+
+

https://lottiefiles.com/

+

Veja por si mesmo

+
+

+
+ + +
+
+

Translations:

+
    +
+
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/drafts/cool-tools-pt.html.gz b/drafts/cool-tools-pt.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..f623a0e21558cd027ae3ce1fb7f7077f0cf7f3a9 GIT binary patch literal 5141 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 + + + + + + + Desenvolvendo apps para o FirefoxOS (Parte 1) - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Desenvolvendo apps para o FirefoxOS (Parte 1)

+
+ +
+
+ +
+

Requisitos mínimos?

+

Para seguir este tutorial você precisará do Nodejs. Utilizaremos ele para automatizar algumas tarefas, como a criação do nosso projeto e até mesmo o empacotamento da app. Estas automatizações se darão pela utilização de algumas aplicações como o Yeoman e o Grunt .

+

Também será necessário o emulador do FirefoxOS, ele roda através do seu navegador Firefox. Para instalá-lo basta ir no menu Ferramentas > Desenvolvedor web > App Manager, nesta tela basta tentar iniciar o emulador, se não possuir um já instalado, você será solicitado a fazê-lo. Neste tutorial irei utilizar a versão 1.4.

+

Preparando o ambiente

+

Tendo o Node instalado, vamos instalar o yeoman e o gerador de app para Firefox OS. Atenção para o parâmetro '-g' no processo de instalação, com ele os seus pacotes serão instalados globalmente, e não só para a pasta em que esta o prompt.

+
npm install -g yo
+npm install -g generator-firefoxos-app
+
+ +

Com ambos os pacotes acima instalados, vamos dar início a criação da app. No seu diretório de projetos ou onde desejar criar a app chama o generator instalado.

+
yo firefoxos-app
+
+ +

Uma vez chamado esse generator, o mesmo irá fazer alguns questionamentos, o primeiro é claro será o nome da sua aplicação, seguido da descrição e o nome do desenvolvedor.

+

Após a execução do generator, você já terá uma estrutura para desenvolvimento pronta, inclusive com um html inicial, com todas as dependências já instaladas. Vale ressaltar agora algumas tarefas disponíveis no Gruntfile.

+
    +
  • Default: Irá gerar o pacote de distribuição
  • +
  • Test: Até a presente versão do generator (0.1.3) este processo irá simplesmente rodar o validador jsHint
  • +
  • Server: Irá disponibilizar na porta 9001 um simples servidor para testar a sua app
  • +
+

Vamos testar a nossa app. Para tal, rode o comando grunt server e acesse no seu navegador localhost:9001 e devemos ver a seguinte app. Caso nenhuma página seja exibida, revise os passos ateriores e verifique se nenhum erro ocorreu.

+

App inicial

+

Vale ressaltar que a sua app toda estará dentro de uma pasta também chamada app. Nela você encontrará os seus arquivos .html, .js, .css e demais. Antes de começarmos a codificar a nossa app, vamos ver como se instala a mesma.

+

Instalando a app

+

Para fins de teste, não é necessário rodar o comando grunt, sendo que ele irá testar o JS e compactar tudo em um arquivo .zip, basta apontar a instalação para a pasta app dentro do seu projeto. "Mas como eu faço isto?".

+

Indo novamente na App Manager, clicando na lateral esquerda, onde indica "Aplicativos", teremos então disponível no inferior da tela duas opções, vamos nos ater a utilizar a primeira (Adicionar aplicativo hospedado).

+

Clicando nesta opção vamos navegar até a pasta da app e clicar selecionada. Pronto.

+

Simples de se instalar, não acha? O Resultado final deve ser semelhante ao abaixo.

+

App inicial

+

Acessando uma API

+

Quando vamos programar algo mais complexo, geralmente vamos utilizar algo como, câmera, rede, lista de contatos, armazenamento e outras possibilidades. Para utilizarmos essas APIs, precisamos - assim como no desenvolvimento para android - especificar para o usuário no momento de instalação. Estes dados de acesso ficam no arquivo manifes.webapp, se você ainda não deu uma olhada neste arquivo, é nele que fica armazenado dados da app, como nome, descrição, versão, localização de ícones e é claro as permissões que a mesma requer.

+

As permissões ficam na propriedade permissions, na forma de "chave" : True. Algumas das apis são:

+
    +
  • câmera
  • +
  • contacts
  • +
  • desktop-notification
  • +
  • storage
  • +
+

Cada permissão vai mudar o tipo de app que você esta desenvolvendo, mas aí eu sugiro ler mais na MDN aqui. Esse é o básico para iniciar no desenvolvimento de app para FirefoxOS. Na parte dois, vou começar a passar um pouco de código.

+
+ + +
+
+

Translations:

+
    +
+
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/drafts/desenvolvendo-app-firefoxos-pt.html.gz b/drafts/desenvolvendo-app-firefoxos-pt.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..d719890da3291a46dd5e5469da0a23caf754914c GIT binary patch literal 6212 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 + + + + + + + Editando o Admin do Django - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ +
+ +
+
+
+
+
+ +
+
+
+

Editando o Admin do Django

+
+ +
+
+ +
+

Este artigo foi re-postado no grupo PythonClub. Vamos falar um pouco sobre como customizar o admin do Django. Primeiramente porque? A resposta é bem simples, quero mostrar algo para o usuário sem que ele precise entrar nas apps e fazer alguma consulta para então tomar alguma ação. Alguns exêmplos para isto seriam:

+
+
    +
  • Exibir as vendas do mês em forma de gráfico por região do país
  • +
  • Exibir os últimos comentários adicionados
  • +
  • Exibir log dos ultimos usuários cadastrados
  • +
+
+

O que faremos aqui será exibir os últimos comentários ainda não liberados de um sistema de blog. Vale lembrar que aqui não discutiremos sobre os primeiros passos da aplicação. Para seguirmos adiante, vamos assumir que já temos um projeto básico com uma estrutura simples, abaixo a estrutura inicial do nosso projeto.

+
../blog/
+├── core
+│   ├── __init__.py
+│   ├── admin.py
+│   ├── models.py
+│   ├── tests.py
+│   └── views.py
+├── blog
+│   ├── __init__.py
+│   ├── settings.py
+│   ├── urls.py
+│   └── wsgi.py
+└── manage.py
+
+

Para iniciarmos, precisamos da nossa tabela de comentários, vamos usar a mais simples e básica o possível.

+ ++++ + + + + + + + + + + + + + + + + + + + +
CampoTipo
nomeVarchar(30)
textoText
liberadoBoolean
dataDate
+

Vamos seguir adiante e alterar a página inicial do admin para listar os últimos comentários de um simples sistema de blog. Para comerçar a editar o admin, precisamos inicialmente copiar o template que desejamos para a pasta uma pasta admin dentro ta pasta de templates do nosso projeto. Isto porque o Admin, não passa de uma app como outra qualquer, portanto o sistema de herança vai funcionar aqui, carregamento prioritariamente o seu template. Você pode conseguir o template que desejar (no nosso caso o index.html) dentro do projeto do Django mesmo, no meu caso "C:\Django-1.6.3\django\contrib\admin\templates\admin".

+
../blog/
+├── templates
+│   ├── admin
+│   │   └── index.html
+├── core
+
+

Tire um tempo e brinque um pouco com este template e veja o que acontece se você alterar algumas coisa. Para adicionarmos a nossa listagem, vamos adicionar um painel lateral, para tal vamos adicionar o código abaixo antes do fechamento da ultima tag div. Nele podemos ver uma chamada para uma template_tag, portanto precisamos carrega-la no topo do template.

+
{% load comentarios_tag %}
+...
+...
+...
+<div class="module" id="ultimos-comentarios">
+    <h2>Ultimos Comentários</h2>
+    <h3>Liberar</h3>
+            {% comentarios_n_liberados %}
+</div>
+
+

Esta template trata-se da responsável por fazer a consulta na base de dados e renderizar a nossa lista, portanto ela é uma 'inclusion tag'. Se você não esta familiarizado com 'template tags', talvez queira dar uma olhada na documentação do django.

+

Vamos então criar nossa template tag 'comentarios_n_liberados'. Primeiro devemos criar uma pasta chamada templatetags, dentro da nossa app core. Dentro ta pasta vamos inicializar um pacote python e criar o arquivo comentarios_tag.py. Nele precisamos declarar nosso metodo que deve se chamar 'comentarios_n_liberados' e nele fazer uma simples consulta ao banco buscando os comentários não liberados e por fim registrar a tag apontando para o template que será renderizado. Abaixo o código mais explicado.

+
+
Recomendações
+ Livro Pense em Python na Amazon + Livro Curso Intensivo de Python na Amazon +
from django import template
+from core import models
+
+#Carrega o registro de template tags
+register = template.Library()
+
+#Registra o metodo a seguir como uma inclusion_tag indicando o template a ser renderizad
+@register.inclusion_tag('comentarios_n_liberados.html')
+def comentarios_n_liberados():
+    comentarios = models.comentario.objects.filter(liberado=False).order_by('data')[0:5]
+    return { 'comentarios' : comentarios }
+
+

Abaixo o html do nosso template a ser renderizado, este deve estar dentro da pasta templates da nossa app core.

+
{% if not comentarios %}
+    <p>Nenhum comentário novo</p>
+{% else %}
+    <ul>
+            {% for c in comentarios %}
+            <li class="addlink">
+                    <a href="{{ c.id }}">{{ c.texto|truncatechars:30 }}</a>
+            </li>
+            {% endfor %}
+    </ul>
+{% endif %}
+
+

Com tudo isto feito, basta subir o seu servidor e ver o resultado final, que pode ser visto na imagem abaixo.

+Resultado final +

Lembrando que aqui apenas mostrei como modificar o index do admin, para apenas listar dados do banco, mas você pode ir muito mais além. Abaixo fica a estrutura de diretórios final e um link para download do projeto funcionando.

+
../blog/
+├── core
+│   ├── templates
+│   │   └── comentarios_n_liberados.html
+│   ├── templatetag
+│   │   └── comentarios_tag.py
+│   ├── __init__.py
+│   ├── admin.py
+│   ├── models.py
+│   ├── tests.py
+│   └── views.py
+├── blog
+│   ├── __init__.py
+│   ├── settings.py
+│   ├── urls.py
+│   └── wsgi.py
+├── templates
+│   ├── admin
+│   │   └── index.html
+└── manage.py
+
+

Espero que tenham gostado, criticas/sugestões são bem-vindas. Fontes do Projeto

+

+
+ + +
+
+

Translations:

+
    +
+
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/drafts/editando-o-admin-do-django-pt.html.gz b/drafts/editando-o-admin-do-django-pt.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..44fe1e03e897973da159d4c0afbb4ad930728a47 GIT binary patch literal 6806 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 E0MdIB6#xJL literal 0 HcmV?d00001 diff --git a/drafts/menu-dinamico-com-apps-do-django-pt.html b/drafts/menu-dinamico-com-apps-do-django-pt.html new file mode 100644 index 000000000..a68d34bb7 --- /dev/null +++ b/drafts/menu-dinamico-com-apps-do-django-pt.html @@ -0,0 +1,518 @@ + + + + + + + + Menu dinâmico com as apps do django - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Menu dinâmico com as apps do django

+
+ +
+
+ +
+

Digamos que sua empresa trabalha com Django desenvolvendo aplicações cujas apps são plugaveis e reutilizáveis. Por que não se aproveitar de um certo padrão de desenvolvimento para desenvolver menus que se modificam de acordo com as apps que estão no projeto? Como o objetivo aqui não é desenvolver uma app em si, vamos utilizar um projeto com algumas de modelo. Se desejar estudar mais sobre desenvolvimento Django, a documentação é muito boa, mas também temos blogs e sites excelentes sobre o assunto.

+

Para conseguirmos atingir esse objetivo, vamos utilizar a api Django.apps que está disponível a partir da versão 1.7. +Com esta api, vamos percorrer as apps e se possível, criar um link para uma URL base de cada uma delas. Para começo, baixe os fontes do projeto aqui, rode o pip install do projeto e no fim, sua estrutura de pastas deve ficar como abaixo.

+
../menusapp/
+├── comentarios
+│   ├── templates
+│   │   └── comentarios
+│   │      └── listagem.html
+│   ├── __init__.py
+│   ├── admin.py
+│   ├── apps.py
+│   ├── models.py
+│   ├── tests.py
+│   ├── urls.py
+│   └── views.py
+├── core
+│   ├── templates
+│   │   └── core
+│   │       └── base.html
+│   │       └── listagem.html
+│   ├── __init__.py
+│   ├── admin.py
+│   ├── apps.py
+│   ├── models.py
+│   ├── tests.py
+│   ├── urls.py
+│   └── views.py
+├── menusapp
+│   ├── __init__.py
+│   ├── settings.py
+│   ├── urls.py
+│   └── wsgi.py
+└── manage.py
+
+

Rode o projeto e veja como é o seu funcionamento. É na app core que temos a base do nosso HTML, então será nele que iremos trabalhar. Quando se trata de algo que será renderizado no template base, eu gosto muito de utilizar 'template tags' para facilitar. +Neste link tem mais um exemplo de utilização de 'template tag' caso esteja interessado.

+

Vamos então criar uma pasta chamada template_tag e dentro dela a nossa tag. Vamos chamá-la de menus_tag.py. Abaixo vamos ver um pouco da nossa tag. +O código é bem simples e auto explicativo, importamos as bibliotecas necessárias e realizamos o @register da tag com o nome do template que será renderizado. +E por ultimo, retornamos uma tupla de dados para o template.

+
+
Recomendações
+ + +
from django import template
+from django.apps import apps
+
+#Carrega o registro de template tags
+register = template.Library()
+
+#Registra o metodo a seguir como uma inclusion_tag indicando o template a ser renderizado
+@register.inclusion_tag('menus_por_app.html')
+def menus_por_app():
+    lst = apps.get_app_configs()
+    return { 'lst_apps' : lst }
+
+

O template está abaixo e é simplesmente um for percorrendo as apps e gerando uma lista com os seus menus. As outras propriedades você pode ver direto na documentação. +Algumas ressalvas para o que foi feito por questões de praticidade para uso posterior, utilizei um with para concatenar e gerar a url e criei um apelido para a url para validar a existência da mesma. Fora isto, nada de novo.

+
{% if not lst_apps %}
+                    <p>Nenhuma app</p>
+            {% else %}
+                    <ul>
+                            {% for app in lst_apps %}
+                                    {% with app.name|add:":listagem" as link %}
+                                            {% url link as the_url %}
+                                                    {% if the_url %}
+                                                    <li>
+                                                            <a href="{% url link %}">{{ app.verbose_name|truncatechars:30 }}</a>
+                                                    </li>
+                                                    {% endif %}
+                                    {% endwith %}
+                            {% endfor %}
+                    </ul>
+            {% endif %}
+
+Resultado final +

No final, o resultado obtido deve ser semelhante ao acima. Repare que está listando as duas aplicações. E acima de tudo, repare que só serão exibidos os links cuja app tenha um namespace de mesmo nome e uma url de nome listagem. +A estrutura final pode ser vista abaixo. Atente-se aos nomes tanto das pastas quanto dos arquivos, pois qualquer diferença pode causar o não funcionamento.

+
../menusapp/
+├── comentarios
+│   ├── templates
+│   │   └── comentarios
+│   │      └── listagem.html
+│   ├── __init__.py
+│   ├── admin.py
+│   ├── apps.py
+│   ├── models.py
+│   ├── tests.py
+│   ├── urls.py
+│   └── views.py
+├── core
+│   ├── templates
+│   │   └── core
+│   │   │   └── base.html
+│   │   │   └── listagem.html
+│   │   └── menus_por_app.html
+│   ├── templatetags
+│   │   ├── __init__.py
+│   │   └── menus_tag.py
+│   ├── __init__.py
+│   ├── admin.py
+│   ├── apps.py
+│   ├── models.py
+│   ├── tests.py
+│   ├── urls.py
+│   └── views.py
+├── menusapp
+│   ├── __init__.py
+│   ├── settings.py
+│   ├── urls.py
+│   └── wsgi.py
+└── manage.py
+
+

Espero que tenham gostado, críticas e sugestões são bem-vindas. Fontes do Projeto

+

+
+ + +
+
+

Translations:

+
    +
+
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/drafts/menu-dinamico-com-apps-do-django-pt.html.gz b/drafts/menu-dinamico-com-apps-do-django-pt.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..cdde6585e29f57cd7f2ce6debd5fbefecfb5b498 GIT binary patch literal 6353 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 T$LdUv3t literal 0 HcmV?d00001 diff --git a/drafts/my-azure-data-fundamentals-certification.html b/drafts/my-azure-data-fundamentals-certification.html new file mode 100644 index 000000000..478e8687c --- /dev/null +++ b/drafts/my-azure-data-fundamentals-certification.html @@ -0,0 +1,537 @@ + + + + + + + + My Experience with Azure Data Fundamentals certification - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+ + +
+

+
+ + +
+
+

Translations:

+ +
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/drafts/my-azure-data-fundamentals-certification.html.gz b/drafts/my-azure-data-fundamentals-certification.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..9c8fe1a288d05cbec706aae96a2cd6d27b7e4ebc GIT binary patch literal 4284 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 literal 0 HcmV?d00001 diff --git a/drafts/pages/businesscard.html b/drafts/pages/businesscard.html new file mode 100644 index 000000000..8ae940877 --- /dev/null +++ b/drafts/pages/businesscard.html @@ -0,0 +1,304 @@ + + + + + + + + businesscard - Sipmann + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/drafts/pages/businesscard.html.gz b/drafts/pages/businesscard.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..719ba4d06ab4916849c26b213e5ae9823b4eb804 GIT binary patch literal 3058 zcmV@n=t7onQX@^;0xgF+15E>kDEy zi6#z7oReL6LvVPqi{NJ*6NOPQ$3hY{aelu1&VB4uhY}o zcxb%;An-*k?$`S3r|`GjmV+EGbQ~LM@0Hn!k%`O zTn02|G`U7|L1vpN%?Jslj~Vl@;<0xN*hotX0;VaWfiZxu$G$RSf-o3jiiiX&5YI?i zY7d=WzIuVa1DXX7ITHp=swE?GP6&9R<;quc5)(g=(q9ZcxD<-1a9)8)mr)FQkv_~# zZ-_xyBfUds*e13tKn@BdKN#QTYp@Xml;6Tu{ z6swp}N|sOO;smoLc#N5}onV+q7l_V?3g-8xq={IG4Z|zSQywn&%cpt2azCit4=eWv zmHS8NkMcqPXyv(9Q6uCOs@g{q1KW}aIxE3H?3TBcMZn*Bmu+N%}h(q5iNr2*x4q zoX}{lVAwktJbrZ8KNuXOmt#Si?Lqr|M|FQywmBPVXhxZ80=q(A4zw~R+r5Sp?x^%_e z%IR!sM(a|>_|{gs5pow~dQHKlDPu0a!IWVrW36;|cDy;v&Gh_0aA#*n%Q9np;ogoA z&J;g}mmlCi{7cb^@p^#DEjncxsQ`G3p{o--2Hz4WwV)<0Xc8Lnt&P$#&HqHFA7Qt_#k_6yJRuYc=m-6LmJ26i>CS6@lR!=5=3Z@AZcAf;#(_Cw!SI~4N-M!xp2uYDU<@+(rf~ zj>Tz>fV^|pve>r6#6-d6s{Hg1OciTNvmzw;!a1qO`Px*lCOks2KPZAxl0YXMM8k=b zGgA7Tj^yfW^L{Y`P-5xY)kla)~jok4U1dM)o`lxe3cwaAX{+saU;4Ee+T-rQjMHoSR1Z z;uH&tArDOnV1=eA((Q9UHxUQTLN&u$V;vYFnsm?0doa~OE!fO$ z#wruSLy;GCqoW^8t*fs^nvn-FSE)kI9cd%S_*kyU`Ct0@_e>DGTrDQ8H~1~7_*COG z+@+Rt82vvh`A&+b)&vzEl$0-EVK#^AwxvX`HR6Rve2{Vp zSan^~kKnU@4? zUPlE1qzU}BY_bjihUqZF42GmM8@977F-sK8s9J8~`+Sa*NOO&IzB8%!^>P{r2ZBq9 z;*2Spf}$(ODu^Z^VGG|)?+fquMr^%5y=GRT{P23pbhG*XzLH_U>fU65jx`P?a%BsA}U$uMIZ z#W>4}fYpq>z#6MOhzuG1PH$3LLZ3z!Nf@kxuVhLBP-t*9qlAU>O1r}qncZcF@A*Qj zUJ|9ZF0(k1nqNx~=~aA$o`Nf>C3NICCg6+L|8+wA%ZYHBE!~*77;@cgM#%m1U^N}# zmWly{V}dPJQ#SGv;vl6r2Gzv5nlhX~jTr0G04ahMeh?<>_;$xj`ZohVBr^q3u=Q zcFpNQuxD5h{f0&PHteMxy5F{Dlg|i3Et}ryJ6mvRskJfr%#3W$Bd|CXo<1ceU^v4k zP5us63zBWjKF`M*NuuI>*5&f2&s-Oc?GZQ%vBEA6-GEW^2}6M06f`pI9UXo>7#ElpNmlnu-Z#LuY!(l=_Ou!Rx6@EWrxn=RaDtS`NGkxC7lykX zYvB%>RJei)Y>k@=uDIUH{RVX^A3Su>$UfU#-`PW7p-$^p5I)TGUbe8PRUxaIfLO`Z zAkUVUIC=@Caix&Ay?5(0q?bZ?Bb#SeSk%A3+L>;CvO z3DtHZ=@%rGrUkRy_F5DsLQ(^tP@N|$r$4kgCll515Pylr4r+S+1-XA55 zb#zEw#wwu04;tJ+b-A}btMGBYHRl+&${C>|^O|#L>~Rq}`xQX*DHuS#hCUZ4Rffz*WiV0{yvmUNvMZMy1Gw4(mtQ_)# znB8iOuFlb0WA$wLL)fjH;b@;|q5R~BU+h{@uWA|eI|LfEK-Ff-ht8tAXL@D9YBQDI zTpk`bk}sX1Zpox)+Cneis({1?In}IOI&C?7BO2=HBkh*dRtmC);b;t}k(Ll)l597z z<#wx??S9NXz5uD}GGJViHDzvQtWCcAYa?f(;<002AC8(E^S$kV0J?R*6@M!L0CR=S AEdT%j literal 0 HcmV?d00001 diff --git a/drafts/pages/services.html b/drafts/pages/services.html new file mode 100644 index 000000000..f5f988793 --- /dev/null +++ b/drafts/pages/services.html @@ -0,0 +1,304 @@ + + + + + + + + Services - Sipmann + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/drafts/pages/services.html.gz b/drafts/pages/services.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..215bd761b4b48bc03eb4d369cfb10d6e8abb82ec GIT binary patch literal 3058 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 APXGV_ literal 0 HcmV?d00001 diff --git a/drafts/pages/servicos-pt.html b/drafts/pages/servicos-pt.html new file mode 100644 index 000000000..33791d47c --- /dev/null +++ b/drafts/pages/servicos-pt.html @@ -0,0 +1,304 @@ + + + + + + + + Serviços - Sipmann + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/drafts/pages/servicos-pt.html.gz b/drafts/pages/servicos-pt.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..fd80d24b7f2b4d86e9d3f42eb7872cac3efa8b3c GIT binary patch literal 3065 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 HcPjt@bmG@) literal 0 HcmV?d00001 diff --git a/drafts/schedule-blog-post-with-powershell-and-pelican.html b/drafts/schedule-blog-post-with-powershell-and-pelican.html new file mode 100644 index 000000000..cba0a2873 --- /dev/null +++ b/drafts/schedule-blog-post-with-powershell-and-pelican.html @@ -0,0 +1,544 @@ + + + + + + + + Scheduling blog posts with Powershell and Pelican - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Scheduling blog posts with Powershell and Pelican

+
+ +
+
+ +
+

Hy folks, first time posting here on dev.to :). Recently I've been migrating some of my scripts from bash to PowerShell and I thought that would be a good time to code an automation script to publish posts on my personal blog. I host my blog with Github Pages and I use Pelican as a static site generator. The main problem I have with this toolkit, is the lack of scheduling posts. For those who are new to Pelican, the post system is similar to dev.to, we write the posts using Markdown and we have a Status tag to tell when the post is a draft or not.

+

The main idea of my script is, run through the Markdown files an check those who have Draft as status. Once I found any post, I start getting some info like the Date and the Slug. The Date part is a little tricky because we need to find the line, split the text and then parse it to do date comparisons. If the post date is lower then the current timespan I replace the Status: Draft tag and save the file. After that all we have to do is commit to git and let it go.

+
$postsPath = "E:\projetos\sipmann.github.io\content\";
+$files = Get-ChildItem $postsPath -File -Filter *.md
+
+<# Get the current datetime so we can compare with the psot date #>
+$now = Get-Date
+
+<# Set the current location, with this we can work with the git commands #>
+Set-Location $postsPath
+
+foreach($file in $files) {
+
+    <# Get's only posts with draft status #>
+    $isDraft = Get-Content ($postsPath + $file) | Where-Object { $_ -ccontains "Status: Draft" }
+
+    if ($isDraft) {
+
+        <# First we find the line with the date, then we get only the datetime and then parse it #>
+        $pubDate = [datetime]::parseexact(((Get-Content ($postsPath + $file) | Where-Object { $_ -Match "^Date:*" }) -split '\s+', 2)[1], 'yyyy-MM-dd HH:mm', $null)
+
+        <# TODO: Maybe call google and bing api to submit a new url #>
+        $slug = ((Get-Content ($postsPath + $file) | Where-Object { $_ -Match "^Slug:*" }) -split '\s+', 2)[1]
+
+        if ($now -ge $pubDate) {
+
+            <# Sets the content without the Draft status #>
+            ((Get-Content ($postsPath + $file)) -replace 'Status: Draft', '') | Set-Content ($postsPath + $file)
+
+            git add .
+            git commit -m ("New scheduled post: " + $file)
+            git push origin master
+        }
+    }
+}
+
+ +

Hope you find the script useful, and if you are interested in the other scripts I'm making with PowerShell, take a look at my github repo, still lacks many of my scripts, but it's there where I'll keep them updated. See ya.

+
+ + +
+
+

Translations:

+
    +
+
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/drafts/schedule-blog-post-with-powershell-and-pelican.html.gz b/drafts/schedule-blog-post-with-powershell-and-pelican.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..a402b45ac1ede87b6ef3fe81739177acd1512781 GIT binary patch literal 5658 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 ATmS$7 literal 0 HcmV?d00001 diff --git a/drafts/script-de-inicializacao-raspberry-pt.html b/drafts/script-de-inicializacao-raspberry-pt.html new file mode 100644 index 000000000..870eee2bb --- /dev/null +++ b/drafts/script-de-inicializacao-raspberry-pt.html @@ -0,0 +1,571 @@ + + + + + + + + Scripts de inicialização no raspberry pi - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Scripts de inicialização no raspberry pi

+
+ +
+
+ +
+

Instalei essa semana o gitea no meu raspberry pi B + e queria iniciar ele no boot... Não sou profundo conhecedor de linux, então, logo não sabia como fazer isto da melhor forma. +As versões atuais do Raspbian utilizam o systemd para gerenciar os serviços e confesso que nunca havia utilizado o systemctl para nada.

+

Vamos começa criando um arquivo de serviço dentro da pasta /etc/systemd/system, vale ressaltar que a pasta system deve (em teoria) ser reservada para pacotes do sistema. +Vamos criar o arquivo com o nome gitea.service dentro da pasta antes mencionada. Abaixo podemos ver como ficou o arquivo e um detalhamento após ele.

+
[Unit]
+Description=Gitea Service
+After=network.target
+
+[Service]
+Type=simple
+User=root
+WorkingDirectory=/root/
+ExecStart=/root/gitea web
+Restart=on-abort
+
+

A composição do arquivo é bem simples, mas vamos a alguns detalhes. Type possui várias opções (simple, forking, oneshot), utilizamos simple uma vez que o nosso processo executara, permanecerá rodando e não executa um fork de processo. +Fork como acabo de comentar, deve ser utilizado caso o processo que for executando disparar mais processos. User irá definir o usuário do processo. WorkingDirectory definira onde o processo terá a sua base de execução, como o gitea esta localizada na pasta root, +aponto para lá. O ExecStart é bem simples e direto, deve chamar a execução do processo passando parametros caso seja necessário. O Restart é o que nos garantirá que o serviço permanecerá rodando caso haja algum imprevisto (exceto o fato de um usuário chamar o stop).

+

Salve o arquivo e vamos rodar um refresh para o SO perceber o novo serviço. Assim rodamos systemctl daemon-reload. Sempre que alterarmos um serviço ou criarmos um novo, este comando deve ser executado, caso contrário o próprio systemctl pode lhe alertar da necessidade. +Após reacarregar os serviços, vamos habilitar o serviço que criamos rodando systemctl enable gitea, feito isto temos alguns comandos uteis.

+
    +
  • systemctl start gitea
  • +
  • systemctl stop gitea
  • +
  • systemctl status gitea
  • +
+

O comando de status pode ser visto como exemplo abaixo.

+
● gitea.service - Gitea Service
+  Loaded: loaded (/etc/systemd/system/gitea.service; enabled; vendor preset: enabled)
+  Active: active (running) since Wed 2017-10-04 00:37:34 UTC; 52min ago
+Main PID: 1087 (gitea)
+  CGroup: /system.slice/gitea.service
+          └─1087 /root/gitea web
+
+Oct 04 00:38:31 gitserver gitea[1087]: [Macaron] 2017-10-04 00:38:31: Completed /explore/users 200 OK in 80.106173ms
+Oct 04 00:38:31 gitserver gitea[1087]: [Macaron] 2017-10-04 00:38:31: Started GET /img/favicon.png for 192.168.1.4
+Oct 04 00:38:31 gitserver gitea[1087]: [Macaron] [Static] Serving /img/favicon.png
+
+

Após estes processos, você pode reiniciar seu raspberry que o gitea irá subir e funcionar. Ressalto que, preste atenção tanto no WorkingDirectory quanto no ExecStart, no caso do gitea, ele utiliza o workingdir e a forma de start para saber onde irá largar os arquivos por padrão, então ou você configura ele com caminhos absolutos ou cuidar na forma de start (ao menos é o que consegui pegar até agora).

+

+
+ + +
+
+

Translations:

+
    +
+
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/drafts/script-de-inicializacao-raspberry-pt.html.gz b/drafts/script-de-inicializacao-raspberry-pt.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..10ca62b58908460d8cc9fe4132ae266deef00666 GIT binary patch literal 6047 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 + + + + + + + Apache Nifi JSON to SQL Replacing underscore - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Apache Nifi JSON to SQL Replacing underscore

+
+ +
+
+ +
+

Recently I was doing some ETL with Apache NiFi. But after a few minutes of drawing my flow, I saw that the component ConvertJSONToSQL was replacing the underscore ('_') from the field name in the where condition (I was preparing an Update SQL). That was weird because, at the set statement, the field name was kept intact. After some research, I found that the property (see bellow) Translate Field Names was responsible for that weird replacement.

+

Apache NiFi JSONToSQL config

+

Before setting it to FALSE, be aware that the properties on your JSON data must match exactly the name of your fields.

+
+ + +
+
+

Translations:

+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/apache-nifi-json-to-sql-replacing-underscore.html.gz b/en/apache-nifi-json-to-sql-replacing-underscore.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..7cc9cdbe84ae610274760fae6ec5be8fc90259bb GIT binary patch literal 4187 zcmV-h5Tx%PiwFP!000021I-(2bK5rZbNnk%_3k8JO;Hagj%CZK?Idk(@@nlqZZa7U zL_!i`l3)qYvf9f}x?gdB>~;Z?0x8nA(xl@&Y>HSc_PvV*bokZNH>cISiSi#GBJZGBs}fbpG6V+_Hxv8nSWginB#564fG} zh!l$ebisW!AN%Zzd(6=vb_kES;xuriM*}wQcY7sNbERU3{g(2paqCy-r(@?-gfUfo z5-lUVV1B2?ECp__jH=;`s^zmI>|TlOwq zT>Ywc{nz7yoYIgcGeK5XyXHYYlU~B(iUSoQdCo~e z7g6xa@=p=zHz=yboJAy+8YrQW3_#6f%30v+Wn@7%PC6CQ6+EM;&jro~!NlOmk?J;! z_rB3dZq!MfP696H%)d~)6hFwIH|RP2fzun1+mJ}+RoFcjB9K|^X`H6$tlqdAf>!;! zD)SpnPHH`ekS65@0uzmeK?#LyMwD~IO$rix^XnirI$sfTLa&eF<-hg2)a}O zhHG#~f-xRgkK+L1H>$|Rv2XNPHPq=~Q{)YDeE#MYc@8)$bm(bPEdvHt!-}Bjg5ieD z^`vwc!!G)=;lw$l0HQNM&~>#4KPm=2FW5a6FmPkO#~0 zkD#OlT{fYta1+B%LH!n?5`eYyR%5-CLAIPjBN{Bhmh__a2>nPpfON`~H@`b3L}EDB z1g|hpgumP=KF#~q^T2u@TF<-I^F#7S@d5v!@Ejwk5ozV3+949cj3ZgXrv>=Ot>TeZ zuqbw|AT5K#Xu}#2C=%E~-As@~WvI`_rV`WWWW0`zAlepj^MCV z5B~Oh)ltot1VPvwa0+KgC2?M}c+ zS#rU{Sw*-L>Rrwf0rAX<1yqJwIS+e(KWKu27|5tX1!j+pkVd$kfOuPmasO#SQKcY~ zqkE4aV_h@<;Gb>@x==%}SLQB%S{a=Q+GL%}kY1ZTz=${tHo4?r(mV(pdPR9ap}?=j z``|%$4r>RvJ|KMX-~sY74aCB^9ucTd!~wkg2>;<U*+M+d${I$CD1 zF~gWYB0fzntBj!hv?`ogLYFnnSVoom)L=Rs4EJtiDg#~2VOMkmH-CvtZy~or#k_9y zEFk0p=zD#?&ze=E6NsB-kVDsOytfW9hY&BI5>i}A?0J^;`IR-UL~N(Fh}wfFCHRFZ zHJU>|pb!>!tvPz$BvlIP)6!H2)Dq&9Y!II2AbKZ&;Lh|X^hpQP$?B8#pPXn0iCsh< z)HIif^a4t*sIz^LmpcY;g%nK=&ncNwGNniilqrWUKO+B#CNe&F#iI1kHS=qx)4Yyp z-N;ev=z9^eLzh;BL2s3VrIp+3z19(nHeKX4w6K3|9mT4I_7G~ctISATu#$Ycik1ao zZ?)Vi6ygVne+>3|+7O|{%Ch=k0I3htckjTqFEqXkvPcd?jGZP9LZbNlfgKHW#XKUg zlkK$g^4ZYSg=7%7w+|Y!7OGqGVAwHpYCRyU+L0Gic4(i-sa&O>{;tkqRc=;@60yj) z_ze)?+9cQ~vOmb3G0%GzjP|b;HTa|>T=T+(KB`_h?;jmbjtX=BtQ~-S8}XJUA=MSJ z5@fT!#U{{bso=5jADF6e`SA7#fSb7p;+Tm7hqwi{1So(IuD}<4*dXE9xV738pZ9l1 zy&n8?dPDdL<@+zpC$L$5$~+cMzzYx-8-gLLQ0CgCS@u{eeeSBv_z3>}$k5+{C3!&> zR1#mHlq5tU^6dO2S#UKcRs*6-PEtka6dV)^oGDunC^=HaBoR~MCv<_c!zIDGXa`VA zx*%#!m2OTHt%dcj11{az+vv0}+S_EBh)|ELS{aa3^_#_Idt_{CL0N&lh}R+ zyoteTh&N)>q;?P87&15L6{}v@pqHCRc9SQX@)?Ar#DkoaMM2}S7wEAU=&?$GznXSJ zj`xI3Q6V57g<|Cj9SruIiHK%L&yQc8J;VAzf7$^S30+VCuZn=9xkO|s(!_WvXoivy zYFntyVc$#GHOLiA66a`QlS_FI*B|o{l3pVC7M!(-|*a!Pwl7^F)Tq+wxpGg43TOlE(ZBdYPOsocRqpC!JjA91vRsoNS3a`R;;nb2J%g_ z_Hz+G{0ziz?q*Gz*~H}PB=CN#w5`(KboAG`R&H7L7)XzNIq^Yh%cExzlyS>9)3?~b zUe{kv-7jpSA$D%mujzK06T&q|u@=T+90TCSdb15KG!(yUH8j=VTfkULyv@%)a8>Kb zqf*^fX1x+VP`1IO?C7gmlu$3D$uyX8^Fdh&zA`%(MzyD~TJ;4&yqSD}WKvlgr{CzM zU&or_K+MGYR6Js|=E^SYX|JF@NQ@QeM|W?!*WdFW?N29<{GmVb9`5e<{N26bqkZbp zA?rPnGFZWesBu4MQUsbyv#h|dRq_B}FH3;m+MIvx^M6dWPyMzL} zD(VCjH!;kgEcKw1l?_ncw;J0bMUy8hz;%BqNSWPF%<682F8@w_U;?Y2xBSPR03 zybFkJ{o1}qz^i>G(zAQ6ts9zT#U|p`W=K&{(cjae-I1+ZKGCY_Js#tnip7+gY<9u_ zS2HvXQU$x;4Ox0_X5Cw+5+|Z^+ZXV9I@E2TH#5dP9C*;+*@+ zP`JdF%VrF{T2?dEJz^+gYD0Fqub-XYS8iglfb>3xthXUkZ*k%oPQ0(IB{cG3pR*ZT zKk7;Ml_lJ^N|s!0oSksDc%~=bSJte?%$>Q?t(vf>czWj(hWt#mB14SM@M!bPr_zNNe9nWoN73!iR}df6Xr>dz#PncQdrr9 zeoeHW(g22})c2RBX{5JTG~jC4MEB{OMl*fzlF^+?yylYOAk<5Qlq5_8#bXe()d3?s z0uCdO85TvVh%Xiq9)*1w9zXS_a>LH@)|S(k;X*sTCKd$k02iy^=S-+%zJ3Qp`f1R} z#z}?*w5Ih1+E|4`qS4?xyt88veHmUP3t$I-A!Fu&K)nld=yQSQaKWZG>EU~^K+)sz z9c+%%Fw*Bt248j~+O#L3Ql}vUTfF?!0r8Uq;Urx;A#*6iy6Kd$yT?I09Mv7f1LBZT zgH>maEQ_>=!h14m+`5+}QwE1;YyQFk0WA!){LN(tpDP2IyEQe1+^_tiTH89s3K6wg`V zO)$%DC7qk0yWR4s(m4ZHOD8wl&IVK(Y;{C_r$;uY5lEaQUA!W~Kyl_GeDpa;%~947 z`!XA=1PROdjLBu6zH*%6oCnXh9qKz?!1Zl@k2*0(WZ2u^do&pC5Bm@M!@b8tyhXl@ zys}5ebjGMZ$S!`vxSwT8bL&cvx*w!VeK}cX=OrKX-L$ONNF2wIv?3a5`%Z(Bp%Y?@7|X$8RGkHoXUCUUHbx}^RefNG*ayy z(*Eh#dEDC@^d1kLLHqso4f9k&y-PeZ!teL3fp+q`gmkuRZbBlFGYTa7!b|m42`^z# zO=suAowi}Ey}f=Zb4I%;2AJEf2%=pJY;-s#DoI%_0H_y+J8h%kHW^z~;g>|Ta^plO zfxX@*q;1{*ZQvYTFS_XDFX<8@%y|7(<`e*3*eNd4+5V$|F@_GIOKSyW_z}T1R2vkz zLn5{yPr+t8+aS%=n7PY?zGPF2mi%Bv@LzZAymlH{oL%J!&l;*6E!A9`C}4L;O9G-} ziAS_+26=Oe-D!reNp%g-Hz%E9PW`FBEq|+aab5BqGk2r1!sCPQgRrVMFYUUp-8hZ3@sf8 + + + + + + + Sipmann - Archives + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+

Archives for Sipmann

+ +
+
Mon 21 December 2020
+
Monitoring MySQL restarts with PowerShell
+
Wed 09 December 2020
+
Changing a MySQL user password across multiple application instances without downtime
+
Wed 02 December 2020
+
Apache Nifi JSON to SQL Replacing underscore
+
Sat 14 November 2020
+
Blocking a user on SQL Server based on a schedule
+
Wed 28 October 2020
+
How to set columns on select using Entity Framework
+
Tue 20 October 2020
+
Zabbix Running on Low Memory Mode
+
Wed 14 October 2020
+
Monitoring MySQL Replication Status with PowerShell
+
Sat 03 October 2020
+
Microsoft Against Covid
+
Mon 21 September 2020
+
The power of PowerShell
+
Wed 29 July 2020
+
Top Level Statement in C# 9
+
Thu 02 July 2020
+
Zabbix poller processes more than 75%
+
Mon 22 June 2020
+
Monitoring a Website heath with Azure Functions
+
Tue 09 June 2020
+
Azure Data Fundamentals certification with 80% discount
+
Mon 25 May 2020
+
Zabbix ICMP pinger processes more than 75%
+
Thu 27 February 2020
+
Zabbix Server Out of Memory
+
Thu 03 October 2019
+
Flutter + firebase auth crashing
+
Fri 06 September 2019
+
Removing a user from SQL Server database who owns a schema
+
Mon 12 August 2019
+
Limiting Connection Resources on SQL Server
+
Tue 30 July 2019
+
Using git hooks to easy your life
+
Fri 13 April 2018
+
Microservices with NodeJS, Express.js and RabbitMQ Part 2
+
Wed 04 April 2018
+
Microservices with NodeJS, Express.js and RabbitMQ Part 1
+
Thu 29 March 2018
+
Connecting to a database through SSH
+
Sat 24 March 2018
+
Now posting on Grepora
+
Sat 17 March 2018
+
Scaffolding a React app with Parcel and Yeoman
+
Fri 09 March 2018
+
Could not open connection with MySQL and Hibernate
+
Sun 04 March 2018
+
Solving java.net.SocketException: Protocol family unavailable on a Java + Docker + WildFly
+
Tue 27 February 2018
+
Change display settings on linux with Disper
+
Sat 17 February 2018
+
Java - Files.readAllBytes throws OutOfMemory
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/archives.html.gz b/en/archives.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..40b87b0f0f36002cbc2dd79da7d0aea84071ab24 GIT binary patch literal 4229 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 bHgYCP7JJ;r3p@6~UWxxd+VI`UB0m5C!iN_N literal 0 HcmV?d00001 diff --git a/en/author/mauricio-camargo-sipmann.html b/en/author/mauricio-camargo-sipmann.html new file mode 100644 index 000000000..996a0f49e --- /dev/null +++ b/en/author/mauricio-camargo-sipmann.html @@ -0,0 +1,603 @@ + + + + + + + + Sipmann - Articles by Maurício Camargo Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+ +
+
+
+

Apache Nifi JSON to SQL Replacing underscore

+
+ +
+
+ +
+

Recently I was doing some ETL with Apache NiFi. But after a few minutes of drawing my flow, I saw that the component ConvertJSONToSQL was replacing the underscore ('_') from the field name in the where condition (I was preparing an Update SQL). That was weird because, at the set …

+
+ + + +
+
+
+
+ +
+
+ + + + + + + +
+

So, you use Entity Framework Core, and you usually code your selects like the following, maybe you are getting too much data.

+
var products = Products
+    .Where(p => p.UnitsInStock > 0)
+    .OrderBy(p => p.ProductName)
+    .ToList()
+
+ +

Running the query above, on my table, you'll get the following output, take a look …

+
+ + + +
+
+
+
+
+ + + + + +
+

Zabbix Running on Low Memory Mode

+
+ +
+
+ +
+

Hey folks, another Zabbix post today. This one it's about increasing the Zabbix Server Cache. It's pretty common (if you have the default settings only) get a warning about your Zabbix value cache running on low memory mode at your dashboard or logs.

+

Zabbix Dashboard warning about the memory problem +Zabbix Dashboard cache graph 70% used

+

To solve, go back to your Zabbix …

+
+ + + +
+
+
+
+
+ + + + + + + +
+

I've been migration some bash scripts that I have to PowerShell, and it's time to migrate a script that monitors the replication of a MySQL database. The credit for the original script goes to Paweł. It's a simple script where I seek a few tags/fields that we get from …

+
+ + + +
+
+
+
+
+
+

Microsoft Against Covid

+
+ +
+
+ +
+

Has your job been affected by covid? Well, last week I've posted on Grepora about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by …

+
+ + + +
+
+
+
+
+ + + + + +
+

The power of PowerShell

+
+ +
+
+ +
+

As a long time Linux user, I've automated a few things with bash scripts and stayed away from PowerShell... I've moved to a Windows environment a few years ago and still, haven gave a shot to PS. But why not? I've made a few scripts to automate some tasks at …

+
+ + + +
+
+
+
+
+ + + + + +
+

Top Level Statement in C# 9

+
+ +
+
+ +
+

Hey folks, I'm coming along to tell you a few things about the new feature of C# 9. Every time you want to start a new project, you always have the same Main File, with the same structure. At the next version of C# (version 9), we'll have a new …

+
+ + + +
+
+
+
+
+ + 1 + 2 + 3 + » + +
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/author/mauricio-camargo-sipmann.html.gz b/en/author/mauricio-camargo-sipmann.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..b9d0a085dda9b8b580b0929d3bded7de16e8d26f GIT binary patch literal 5982 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 literal 0 HcmV?d00001 diff --git a/en/author/mauricio-camargo-sipmann2.html b/en/author/mauricio-camargo-sipmann2.html new file mode 100644 index 000000000..a0bd3d1d9 --- /dev/null +++ b/en/author/mauricio-camargo-sipmann2.html @@ -0,0 +1,582 @@ + + + + + + + + Sipmann - Articles by Maurício Camargo Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Zabbix poller processes more than 75%

+
+ +
+
+ +
+

Hey folks, this is the third post about tweaking the Zabbix configurations. All changes that I've suggested here were based on a Zabbix Server with 50+ hosts. Another thing that can happen to your server, it's the poller get overwhelmed by the amount of servers that need to be polled …

+
+ + + +
+
+
+
+
+ + + + + + + +
+

Sometimes you get your self in need to monitor a website's health or it's content for changes. Of course, there's plenty of options out there, but for the sake of curiosity, let's code our own to see what we can do. First things first. Everything you'll see here, you can …

+
+ + + +
+
+
+
+
+ + + + + + + +
+

Hey folks, if you want to achieve some certification this year, keep an eye open for vouchers. A few months ago, Oracle released a set of free courses with certifications. Now it's Microsoft time. Microsoft is updating they're certifications and we have a voucher of 80% discount using the coupon …

+
+ + + +
+
+
+
+
+
+

Zabbix ICMP pinger processes more than 75%

+
+ +
+
+ +
+

So your monitoring sytems have grown and your zabbix started loggin "Zabbix icmp pinger processes more than 75% busy" at the dashboard.

+

Dashboard do zabbix avisando sobre o erro

+

All you have to do is open your config file (/etc/zabbix/zabbix_server.conf) and find the a tag named StartPingers. It'll be commented by default. Uncomment it …

+
+ + + +
+
+
+
+
+
+

Zabbix Server Out of Memory

+
+ +
+
+ +
+

Do you have a crashing Zabbix Server and looking through the log /var/log/zabbix/zabbix_server.log you see the following out of memory message?

+
__mem_malloc: skipped 0 asked 24 skip_min 18446744073709551615 skip_max 0
+[file:dbconfig.c,line:94] __zbx_mem_realloc(): out of memory (requested 16 bytes)
+[file:dbconfig.c,line …

+
+ + + +
+
+
+
+
+
+

Flutter + firebase auth crashing

+
+ +
+
+ +
+

Hey Folks, recently I've started learning Flutter and right after a TODO List, I tried a Firebase integration. But as soon as I started setting the dependencies, my app stopped opening... just a crash. After a few logs digging, I've found the following log.

+
AndroidRuntime: FATAL EXCEPTION: main
+AndroidRuntime: Process …

+
+ + + +
+
+
+
+
+ + +
+

Your customer urge you to drop a user from the MsSQL Server database, but you stuck with the following related error:

+
Error: 15138 The database principal owns a schema in the database, and cannot be dropped.
+
+ +

That means that the user owns one or more shcemas of your database. If …

+
+ + + +
+
+
+
+
+ + + + + +
+

Limiting Connection Resources on SQL Server

+
+ +
+
+ +
+

Have you ever suffered from a slow SQLServer database? Someone love to run that heavy query in the database? Resource Governor to the rescue. You can set a few rules on how users (connections actually) will use the server/database resources based on a few things.

+

First things first, if …

+
+ + + +
+
+
+
+
+
+

Using git hooks to easy your life

+
+ +
+
+ +
+

Hey folks, it's been a time since my last post. In the meantime, I moved to another state, changed job, and started learning new kinds of stuff. Today I would like to share one thing that I usually do with my small git projects. Git has many cool features, git …

+
+ + + +
+
+
+
+ +
+
+ « + + 1 + 2 + 3 + » + +
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/author/mauricio-camargo-sipmann2.html.gz b/en/author/mauricio-camargo-sipmann2.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..7dd70c988df508541bef0d08ca83b4fb0df7ca62 GIT binary patch literal 6222 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 literal 0 HcmV?d00001 diff --git a/en/author/mauricio-camargo-sipmann3.html b/en/author/mauricio-camargo-sipmann3.html new file mode 100644 index 000000000..1b98b7706 --- /dev/null +++ b/en/author/mauricio-camargo-sipmann3.html @@ -0,0 +1,526 @@ + + + + + + + + Sipmann - Articles by Maurício Camargo Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+ + + + + + + +
+

This is the first part of a microservices development series. The service will consist of the bellow architecture, where we will expose an image optimizer service that will forward the request to a RabbitMQ queue and answer with the bytecode of the optimized image. It shouldn't be a long series …

+
+ + + +
+
+
+
+
+
+

Connecting to a database through SSH

+
+ +
+
+ +
+

If someday, for some reason, you need to establish a connection with a database which is behind a firewall and you only have SSH access on that server (and you don't want to use a CLI) you can do an SSH tunnel. It's pretty simple, bellow has a sample of …

+
+ + + +
+
+
+
+
+
+

Now posting on Grepora

+
+ +
+
+ +
+

A few weeks ago I started posting at Grepora blog. If you like or are looking for some Oracle related stuff, Grepora it's a good place to go and spend a time reading :). From time to time I'll be posting there, it doesn't mean that this blog will be closed …

+
+ + + +
+
+
+
+
+ + + + + + + +
+

Since Parcel JS arrived, I've been using it a lot as an awesome alternative for WebPack. Webpack isn't bad but IMO it's too complex for the job and parcel do the same (at least the basic) with almost zero configuration. But if you need to create many apps (like a …

+
+ + + +
+
+
+
+
+ + + + + + + +
+

Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some "Could not open connection" at my …

+
+ + + +
+
+
+
+ +
+
+ + + + + +
+

Change display settings on linux with Disper

+
+ +
+
+ +
+

From time to time, I change the Linux distro on my laptop or just do a fresh install on it. And once in a while, have random problems with external displays. It can be something really "simple" like don't detecting the external monitor or something crazy like the image below …

+
+ + + +
+
+
+
+
+
+

Java - Files.readAllBytes throws OutOfMemory

+
+ +
+
+ +
+

When you need to interact with files, there's the possibility to read all bytes from the file with Files.readAllBytes. But be aware of the kinds of files your application will deal with because the Java API files have a limit for the buffer that is defined as Integer.MAX_VALUE …

+
+ + + +
+
+
+
+
+ « + + 1 + 2 + 3 + +
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/author/mauricio-camargo-sipmann3.html.gz b/en/author/mauricio-camargo-sipmann3.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..abc4fe484c6b2c3c0d8b41a3e6aa6521471a7688 GIT binary patch literal 5575 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 V6ThNjF3d*^{}1oCt6$V`0022M#906U literal 0 HcmV?d00001 diff --git a/en/authors.html b/en/authors.html new file mode 100644 index 000000000..685ae4b29 --- /dev/null +++ b/en/authors.html @@ -0,0 +1,302 @@ + + + + + + + + Sipmann - Authors + + + + + + + + + + + + + + + + +

+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/authors.html.gz b/en/authors.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..6bf665eed110adbf4526d71d9f036e53d5a82418 GIT binary patch literal 3117 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 HZ!7=+2=V-x literal 0 HcmV?d00001 diff --git a/en/azure-data-fundamentals-certification-80-discount.html b/en/azure-data-fundamentals-certification-80-discount.html new file mode 100644 index 000000000..13191eae2 --- /dev/null +++ b/en/azure-data-fundamentals-certification-80-discount.html @@ -0,0 +1,512 @@ + + + + + + + + Azure Data Fundamentals certification with 80% discount - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+ + +
+

Hey folks, if you want to achieve some certification this year, keep an eye open for vouchers. A few months ago, Oracle released a set of free courses with certifications. Now it's Microsoft time. Microsoft is updating they're certifications and we have a voucher of 80% discount using the coupon DP900Norfolk at the checkout of the beta certification DP-900.

+

Be aware that this certification is in beta and the result won't be instantly available as the regular ones. Access the following link and schedule your exam. https://docs.microsoft.com/pt-br/learn/certifications/exams/dp-900.

+

Update: There is a 80% voucher also for https://docs.microsoft.com/en-us/learn/certifications/azure-ai-fundamentals. Voucher: AI900Saratoga

+
+ + +
+
+

Translations:

+
    +
+
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/azure-data-fundamentals-certification-80-discount.html.gz b/en/azure-data-fundamentals-certification-80-discount.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..b03373f9dd5b5c69f9136e4c1328596d2da7f9d1 GIT binary patch literal 4611 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 t%o^X8VDi%OL%}M{Y(}h(zV*40B2lP5!>T=ePg> literal 0 HcmV?d00001 diff --git a/en/blocking-user-on-sql-server-based-on-schedule.html b/en/blocking-user-on-sql-server-based-on-schedule.html new file mode 100644 index 000000000..bbe058229 --- /dev/null +++ b/en/blocking-user-on-sql-server-based-on-schedule.html @@ -0,0 +1,567 @@ + + + + + + + + Blocking a user on SQL Server based on a schedule - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Blocking a user on SQL Server based on a schedule

+
+ +
+
+ +
+

Ok, some time ago, I've posted about how you can set limits to connections on SQL Server using the Resource Governor. But what if you can't use it? You always can block logins using a login trigger, but I don't like the idea of having selects running on every login. So I came across with a solution using a stored procedure, a table and the Agent.

+

The main idea is, store the time that a user must be blocked and using the Agent, disable or enable the user. Bellow you can see the table (the table is in Portuguese, but I have a few comment blocks to help you).

+
CREATE TABLE dbo.HorariosBloqueio (
+    Id INT NOT NULL,
+    LoginName NVARCHAR(100) NOT NULL,
+    HrInicio TIME NOT NULL, /* Startint block time */
+    HrTermino TIME NOT NULL, /* Ending block time */
+    Bloqueado INT DEFAULT 0, /* 0 = unblocked, 1 = blocked */
+    PRIMARY KEY (Id)
+);
+GO
+
+/* Don't block the SA user, precautions, you know */
+ALTER TABLE dbo.HorariosBloqueio
+    ADD CONSTRAINT chk_users CHECK (LoginName not in ('sa'));
+
+ALTER TABLE dbo.HorariosBloqueio
+    ADD CONSTRAINT chk_hora_final_maior CHECK (HrTermino > HrInicio);
+
+ALTER TABLE dbo.HorariosBloqueio
+    ADD CONSTRAINT chk_status_bloqueio CHECK (Bloqueado in (0, 1));
+
+CREATE SEQUENCE dbo.seq_HorariosBloqueio START WITH 1 INCREMENT BY 1;
+GO
+
+ +

After creating the table, let's check the procedure that will handle the enabling/disabling the users. Be aware that on the procedure, I've set the database name where the table was stored, you can change it replacing the DBATOOLS text to the database name where you created the table.

+
IF OBJECT_ID('dbo.sp_ValidarLogin') IS NULL
+  EXEC ('CREATE PROCEDURE dbo.sp_ValidarLogin AS RETURN 0;');
+GO
+
+CREATE OR ALTER PROC dbo.sp_ValidarLogin
+AS BEGIN
+    DECLARE @LoginName AS NVARCHAR(100);
+    DECLARE @Momento AS TIME;
+    SET @Momento = CAST(GETDATE() AS TIME);
+
+    /* Block the ones that aren't blocked already and maches the time */
+    DECLARE block_cursor CURSOR
+        FOR SELECT LoginName FROM [DBATOOLS].[dbo].[HorariosBloqueio] WHERE Bloqueado = 0 AND HrInicio <= @Momento AND HrTermino >= @Momento
+    OPEN block_cursor;
+
+    FETCH NEXT FROM block_cursor INTO @LoginName
+
+    WHILE @@FETCH_STATUS = 0
+    BEGIN
+        exec ('ALTER LOGIN ' + @LoginName + ' DISABLE;');
+
+        print 'Bloqued usuario ' + @LoginName;
+
+        FETCH NEXT FROM block_cursor INTO @LoginName
+    END;
+
+    CLOSE block_cursor;
+    DEALLOCATE block_cursor;
+
+    UPDATE [DBATOOLS].[dbo].[HorariosBloqueio] SET Bloqueado = 1 WHERE HrInicio <= @Momento AND HrTermino >= @Momento
+
+
+    /* Enable up who was blocked */
+    DECLARE unblock_cursor CURSOR
+        FOR SELECT LoginName FROM [DBATOOLS].[dbo].[HorariosBloqueio] WHERE Bloqueado = 1 AND (HrInicio > @Momento OR HrTermino < @Momento)
+    OPEN unblock_cursor ;
+
+    FETCH NEXT FROM unblock_cursor  INTO @LoginName
+
+    WHILE @@FETCH_STATUS = 0
+    BEGIN
+        exec ('ALTER LOGIN ' + @LoginName +' ENABLE;');
+
+        print 'Unbloqued usuario ' + @LoginName;
+
+        FETCH NEXT FROM unblock_cursor  INTO @LoginName
+    END;
+
+    CLOSE unblock_cursor;
+    DEALLOCATE unblock_cursor;
+
+    UPDATE [DBATOOLS].[dbo].[HorariosBloqueio] SET Bloqueado = 0 WHERE Bloqueado = 1 AND (HrInicio > @Momento OR HrTermino < @Momento)
+END;
+
+ +

Ok, so now all you have to do, is schedule a job to run that stored procedure from minute to minute. Again, the main idea is tell the procedure when a user must be blocked and when it'll be unblocked.

+
    -- Will block the user protheus from 10 AM till 15 PM
+    INSERT INTO dbo.HorariosBloqueio (Id, LoginName, HrInicio, HrTermino) VALUES (NEXT VALUE FOR seq_HorariosBloqueio, 'protheus', '10:00:00', '15:00:00');
+

+
+ + +
+
+

Translations:

+ +
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/blocking-user-on-sql-server-based-on-schedule.html.gz b/en/blocking-user-on-sql-server-based-on-schedule.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..01fa97fed95dee8e9f463859baf766a7b8139302 GIT binary patch literal 6176 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 literal 0 HcmV?d00001 diff --git a/en/categories.html b/en/categories.html new file mode 100644 index 000000000..57dcdafcf --- /dev/null +++ b/en/categories.html @@ -0,0 +1,312 @@ + + + + + + + + Sipmann - Categories + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/categories.html.gz b/en/categories.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..5fab86af36a6204e9b44bd4fbd7f7328a77bec45 GIT binary patch literal 3197 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 + + + + + + + Sipmann - Azure category + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Microsoft Against Covid

+
+ +
+
+ +
+

Has your job been affected by covid? Well, last week I've posted on Grepora about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by …

+
+ + + +
+
+
+
+
+ + + + + + + +
+

Sometimes you get your self in need to monitor a website's health or it's content for changes. Of course, there's plenty of options out there, but for the sake of curiosity, let's code our own to see what we can do. First things first. Everything you'll see here, you can …

+
+ + + +
+
+
+
+
+ + + + + + + +
+

Hey folks, if you want to achieve some certification this year, keep an eye open for vouchers. A few months ago, Oracle released a set of free courses with certifications. Now it's Microsoft time. Microsoft is updating they're certifications and we have a voucher of 80% discount using the coupon …

+
+ + + +
+
+
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/category/azure.html.gz b/en/category/azure.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..330322271842f4e2004c2fcd20443fcd2d0700c4 GIT binary patch literal 3932 zcmV-i52NrOiwFP!000021MM8`a@#iYcl;D6dp+4#Q`Co3$MQ$d`D{8(lO}F^H=T|L zB0&lS-ocFp5|WS{@tV8liV&qQY1wwR<2Dwou+Y261$82-USHued>IB@z}lRREJ_ZWv9-J zvw0#@?GRtan#BM*=YgJ_25iQC=9-&*!eg#E6|VBBV5j|VuSRO3b>gx&8K0dxe{;V* zcOS@ULNy-?R-wz;DGMT2U}~-fJA1{GDUD;|lJlRklo6k57RhvR;@R zq(JGu$O5<|U<@W?G6iTt6DAb z=}QRdIbEzH*^nlIeGB!(n*+=dC7Xy681C4$22VT-V2@G>te+ z)r0@~z2>NqOYxuBi1dfeK`;(;CyYlE4a41o!M(eO{e!_#9cnJqz#XTIUIB0T%Y}Gq z0hy;XDIoAc9mJPHrX%w4a5$_Fi~*FvNI$tIN(vs3kA2^7gK<+D@Jx-!K~<27QoCaa zQkGuwY1B~enEF>yDzi9n6A4+{80T*9ljC(zDN7jDXu$k(Eu>YhFJ~;R!+3wGKvAu! zKf&-Gk&s`r;P@|I4Z1W#uUD6@xLP`03gICbS(S21uWcb85f`e{6$h8*Lb!BBxu8&` zTj}1p)1AQF0_O*UckbLlSwbP_?)8Y!Ov__<_!fTPZ$i$D*8@~;(Xq%_1)w`0x|rW7 z_*P013u@wm$AJ;wI%)Bg!n|OM*O}5hT$F?g?*2Mu0jFel%Hu+`qa$$Sy@u!?PZzIv zz{WIf44CjKO`i8ROajGJw2H|ipJlrT$4mzJe$Ff1152Dj|u-o8b(l&dZ z5DEqK{eIAA>rG<{h?iH86VGDBAG?LuE zLZX+@b;Y}T$3?qi={8s~?C^qIj~IUcLz_!*0{6VKwepwps{aW+ci zoP8mu?8KuDWzcu(p<B;9_K4l z!IJlgsQ#cCKSlkkz?wK)a)nnW)3y2gszk; z)NA9k;(FCT|F_+eGx+-jRb(Nvl)RQ>GB(vX44JQ4K*kGV%=0<V%cjWaCE9QrW27C{q9UL{x*O=~1W>EE0NF`4!K3X>4 z44~vOv%;@S!%w?S+H$~J&s|Li(|axHpv~}Qz8~wDzz;0RLYfI}uCJBzYsYd+i7(4pp7fWM z-L_;1V|toq!G`4X^3nN2^6dG`N8~^Mwz(j$#x^-58@Krtp!FgJg<^ z%Xdj#=qmIC+5`B9;tsGIX0eZnPBnt6M1^GZy+tMlnILk$ef+pUcHW(8mYV`)r?S#D zVbioKNzp|ahA)>w;ZEdUy=`h(rqSE{%8kbd)b^GLx1xRNedZ1ZtL+PjLIwl!Wd>`i zTiCn2g7p$IWI7lUF>N~;#Y6~8ZW1#nx=@~TNh( zOaTl4mvSB>bBbZ(K(VnRKIHX4cFAL&DqXz#2=S&%9>FqXVIHB79U%;+ofxG@+}~4o z@c{$&k6z?M_99yw_QoB`HkAM9Ti&y8v3fK%0A&Ug)d$O?#!~KH&n*^6_29I@_YlxA z0!wsKL$`5yulGs0%KCskOpTLU*2er+%70J9+tS+fjxPFx(XiIqTx5*&j&5yh^95T# zFCnhfKH;G$@N;T68>m0wYz7^MMDc3|fc5}dAx6`Ea>ZCeAT_fEbQ=kaO=FU8us~~b zPD03jkTLZ{5gN&T@;s%ONm3>lRnRw4=r1&OFd^={*gi;E6W1mMVqeR-?V^^eebi;Q zau0lE2^a>8GH$DM(gyF!yabvvyMaOrR*`|KN0ChBB#@;<{;qnS-zvKQ=zl(7|MPxE zzG)A%HTB;|A5?k2v?i2Q{+70QZ8FTS1WlAN6pf(^fR@o3jPL*&%HrK_*-)6lk$DHz z^e^bU>Rng$?N2HZJEk)p<%jiX$|-osm9NJSwL+zMs0zBZZN)0^ZmVFg z>5OhE)0cp9Tg4GP&aStV=PSgytpZIK>W$b^pl6F$-+Xmj1&W#8Qk?GBk1lSjG>M$U z`eOoBZ%d(GAmS@Tyse_8uz-=%Eya3ikZ!9;5K4HkceZtPf_NgY4B~ASO-m`%mQr0H z&P@b5@iP1-CGSdqjZQITcu)!t>gr#(SFBThY3?BUl>X)V#hY7l^C5$lOx}LnU<)VQ zhPUlsQM7Qp-OGw!N0Rs4cv#bDZ@&fcf5+5&$I>`kxKrj*aH}w6?B=0V_2{;ZTOd4T z)KWFcCr?BU(YQ6BPo2xLpfRMG6Fj7@Qh$l>2k|Pt-9u5{Y~bY^OD2@f7e9mw{B$Z? zkY|jXgU=gTnkOSa>m}FKjGCVnAM_9F&z-Z<1i8BN1^tEn&93vsY`ZV!y|UC2pMpv#~UX(^K5EZSG3v^j!5O zqu~7TL`3=N;0rr+v(vUsJ|l>dY`oETw&2oIYh&_>8QGpkU~!yw@#7^1hBJKf_?KX{ zAlb(3SNT{YNmQKAx?Fx|HUjOJS$4~e2Cgr-`LNEXZUPz^_Kpre8w`(z{k#3);k_Y# z&9#XAdPF8PVl)`!A7H_FP`n>9r=QKJ_gZ;0P~(LK>b^E-#O>tE&9I%?Cgl?YO3sT9 zx@vo71><&u6;HC8)o1>pS>0MQnv%2u%Y z-p)She0vVb{czB`H*^P`ANMxk>6H3cFF;=WSat<;wc~UxN-5(#t!KzO_z!NLz zn0Ktt3OS~Nm_|j@i0nr2FG#sZ*7)FT3AC;+aI$+3s60H*9wgw7DFEx)$;XW2wq5dh(qm!#k@{UH!yX1fRZE z{l(K@xALk0-J*r^!>8Zbz8BXealn>pHHqZ3jg4Jd!9lHFisgZwqNOnsm zyQVYj<_liPeUMhoqPNqQw%4MO4t{LalHE!{RxljIa2lD3FrnCX6I*V#n%S=EZ}4qm qRhPbyimfPfJ!5V1-CP?v6BUm=@$dsYb7B5R7ykp>X2!$#LI42Ne4cRt literal 0 HcmV?d00001 diff --git a/en/category/flutter.html b/en/category/flutter.html new file mode 100644 index 000000000..3bcf1ff53 --- /dev/null +++ b/en/category/flutter.html @@ -0,0 +1,304 @@ + + + + + + + + Sipmann - Flutter category + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Flutter + firebase auth crashing

+
+ +
+
+ +
+

Hey Folks, recently I've started learning Flutter and right after a TODO List, I tried a Firebase integration. But as soon as I started setting the dependencies, my app stopped opening... just a crash. After a few logs digging, I've found the following log.

+
AndroidRuntime: FATAL EXCEPTION: main
+AndroidRuntime: Process …

+
+ + + +
+
+
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/category/flutter.html.gz b/en/category/flutter.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..9352544f3702e7d8e5b6464680344d61a0fedcf0 GIT binary patch literal 3403 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 + + + + + + + Sipmann - Front-end category + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+ + + + + + + +
+

This is the first part of a microservices development series. The service will consist of the bellow architecture, where we will expose an image optimizer service that will forward the request to a RabbitMQ queue and answer with the bytecode of the optimized image. It shouldn't be a long series …

+
+ + + +
+
+
+
+
+ + + + + + + +
+

Since Parcel JS arrived, I've been using it a lot as an awesome alternative for WebPack. Webpack isn't bad but IMO it's too complex for the job and parcel do the same (at least the basic) with almost zero configuration. But if you need to create many apps (like a …

+
+ + + +
+
+
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/category/front-end.html.gz b/en/category/front-end.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..8c698cc046279889f22c6bd4f93cd13c6516f4ca GIT binary patch literal 3986 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 literal 0 HcmV?d00001 diff --git a/en/category/java.html b/en/category/java.html new file mode 100644 index 000000000..32be986df --- /dev/null +++ b/en/category/java.html @@ -0,0 +1,370 @@ + + + + + + + + Sipmann - Java category + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+ + + + + + + +
+

Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some "Could not open connection" at my …

+
+ + + +
+
+
+
+ +
+
+
+

Java - Files.readAllBytes throws OutOfMemory

+
+ +
+
+ +
+

When you need to interact with files, there's the possibility to read all bytes from the file with Files.readAllBytes. But be aware of the kinds of files your application will deal with because the Java API files have a limit for the buffer that is defined as Integer.MAX_VALUE …

+
+ + + +
+
+
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/category/java.html.gz b/en/category/java.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..cd5fc3a1d82bd31c39e961bc923615f75bad94a5 GIT binary patch literal 3981 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 nb*tElGS@R!C*SS0kug#5*uIB{C(VWVf0X + + + + + + + Sipmann - Linux category + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+ + + + + +
+

Zabbix Running on Low Memory Mode

+
+ +
+
+ +
+

Hey folks, another Zabbix post today. This one it's about increasing the Zabbix Server Cache. It's pretty common (if you have the default settings only) get a warning about your Zabbix value cache running on low memory mode at your dashboard or logs.

+

Zabbix Dashboard warning about the memory problem +Zabbix Dashboard cache graph 70% used

+

To solve, go back to your Zabbix …

+
+ + + +
+
+
+
+
+
+

Zabbix poller processes more than 75%

+
+ +
+
+ +
+

Hey folks, this is the third post about tweaking the Zabbix configurations. All changes that I've suggested here were based on a Zabbix Server with 50+ hosts. Another thing that can happen to your server, it's the poller get overwhelmed by the amount of servers that need to be polled …

+
+ + + +
+
+
+
+
+
+

Zabbix ICMP pinger processes more than 75%

+
+ +
+
+ +
+

So your monitoring sytems have grown and your zabbix started loggin "Zabbix icmp pinger processes more than 75% busy" at the dashboard.

+

Dashboard do zabbix avisando sobre o erro

+

All you have to do is open your config file (/etc/zabbix/zabbix_server.conf) and find the a tag named StartPingers. It'll be commented by default. Uncomment it …

+
+ + + +
+
+
+
+
+
+

Zabbix Server Out of Memory

+
+ +
+
+ +
+

Do you have a crashing Zabbix Server and looking through the log /var/log/zabbix/zabbix_server.log you see the following out of memory message?

+
__mem_malloc: skipped 0 asked 24 skip_min 18446744073709551615 skip_max 0
+[file:dbconfig.c,line:94] __zbx_mem_realloc(): out of memory (requested 16 bytes)
+[file:dbconfig.c,line …

+
+ + + +
+
+
+
+
+
+

Connecting to a database through SSH

+
+ +
+
+ +
+

If someday, for some reason, you need to establish a connection with a database which is behind a firewall and you only have SSH access on that server (and you don't want to use a CLI) you can do an SSH tunnel. It's pretty simple, bellow has a sample of …

+
+ + + +
+
+
+
+
+ + + + + +
+

Change display settings on linux with Disper

+
+ +
+
+ +
+

From time to time, I change the Linux distro on my laptop or just do a fresh install on it. And once in a while, have random problems with external displays. It can be something really "simple" like don't detecting the external monitor or something crazy like the image below …

+
+ + + +
+
+
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/category/linux.html.gz b/en/category/linux.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..bac000e9c6a779c218b724b4ce138203a79ed5b0 GIT binary patch literal 4775 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 BKDz(_ literal 0 HcmV?d00001 diff --git a/en/category/mysql.html b/en/category/mysql.html new file mode 100644 index 000000000..d2cb6f512 --- /dev/null +++ b/en/category/mysql.html @@ -0,0 +1,307 @@ + + + + + + + + Sipmann - MySQL category + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/category/mysql.html.gz b/en/category/mysql.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..4159f20f14d8849f7016dee218293b3fbb4e061b GIT binary patch literal 3410 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 + + + + + + + Sipmann - .NET category + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+ + + + + + + +
+

So, you use Entity Framework Core, and you usually code your selects like the following, maybe you are getting too much data.

+
var products = Products
+    .Where(p => p.UnitsInStock > 0)
+    .OrderBy(p => p.ProductName)
+    .ToList()
+
+ +

Running the query above, on my table, you'll get the following output, take a look …

+
+ + + +
+
+
+
+
+ + + + + +
+

Top Level Statement in C# 9

+
+ +
+
+ +
+

Hey folks, I'm coming along to tell you a few things about the new feature of C# 9. Every time you want to start a new project, you always have the same Main File, with the same structure. At the next version of C# (version 9), we'll have a new …

+
+ + + +
+
+
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/category/net.html.gz b/en/category/net.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..43aac5f0f59aa55c14d305c707866f8eb81a046c GIT binary patch literal 3755 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 VIr!#;zR)iy{~xhWIT)}!002GtQ?&p9 literal 0 HcmV?d00001 diff --git a/en/category/powershell.html b/en/category/powershell.html new file mode 100644 index 000000000..14fcc3b79 --- /dev/null +++ b/en/category/powershell.html @@ -0,0 +1,379 @@ + + + + + + + + Sipmann - PowerShell category + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+ + + + + + + +
+

I've been migration some bash scripts that I have to PowerShell, and it's time to migrate a script that monitors the replication of a MySQL database. The credit for the original script goes to Paweł. It's a simple script where I seek a few tags/fields that we get from …

+
+ + + +
+
+
+
+
+ + + + + +
+

The power of PowerShell

+
+ +
+
+ +
+

As a long time Linux user, I've automated a few things with bash scripts and stayed away from PowerShell... I've moved to a Windows environment a few years ago and still, haven gave a shot to PS. But why not? I've made a few scripts to automate some tasks at …

+
+ + + +
+
+
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/category/powershell.html.gz b/en/category/powershell.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..b7a71a4fa0ac1dc1370f2338b9a9e93be34c9748 GIT binary patch literal 3884 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 literal 0 HcmV?d00001 diff --git a/en/category/random.html b/en/category/random.html new file mode 100644 index 000000000..66d2f8f92 --- /dev/null +++ b/en/category/random.html @@ -0,0 +1,302 @@ + + + + + + + + Sipmann - Random category + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Now posting on Grepora

+
+ +
+
+ +
+

A few weeks ago I started posting at Grepora blog. If you like or are looking for some Oracle related stuff, Grepora it's a good place to go and spend a time reading :). From time to time I'll be posting there, it doesn't mean that this blog will be closed …

+
+ + + +
+
+
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/category/random.html.gz b/en/category/random.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..ea007bb494fe71320ea3f946eba1e0a77156873f GIT binary patch literal 3331 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 N{{xHzMu%iC006bLT=oC} literal 0 HcmV?d00001 diff --git a/en/category/sql-server.html b/en/category/sql-server.html new file mode 100644 index 000000000..cda0e386f --- /dev/null +++ b/en/category/sql-server.html @@ -0,0 +1,375 @@ + + + + + + + + Sipmann - SQL Server category + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+ + +
+

Your customer urge you to drop a user from the MsSQL Server database, but you stuck with the following related error:

+
Error: 15138 The database principal owns a schema in the database, and cannot be dropped.
+
+ +

That means that the user owns one or more shcemas of your database. If …

+
+ + + +
+
+
+
+
+ + + + + +
+

Limiting Connection Resources on SQL Server

+
+ +
+
+ +
+

Have you ever suffered from a slow SQLServer database? Someone love to run that heavy query in the database? Resource Governor to the rescue. You can set a few rules on how users (connections actually) will use the server/database resources based on a few things.

+

First things first, if …

+
+ + + +
+
+
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/category/sql-server.html.gz b/en/category/sql-server.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..b4cb764e6813794b3c6b04c42555d257c3da4d86 GIT binary patch literal 4008 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 + + + + + + + Sipmann - Tools category + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Apache Nifi JSON to SQL Replacing underscore

+
+ +
+
+ +
+

Recently I was doing some ETL with Apache NiFi. But after a few minutes of drawing my flow, I saw that the component ConvertJSONToSQL was replacing the underscore ('_') from the field name in the where condition (I was preparing an Update SQL). That was weird because, at the set …

+
+ + + +
+
+
+
+
+
+

Using git hooks to easy your life

+
+ +
+
+ +
+

Hey folks, it's been a time since my last post. In the meantime, I moved to another state, changed job, and started learning new kinds of stuff. Today I would like to share one thing that I usually do with my small git projects. Git has many cool features, git …

+
+ + + +
+
+
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/category/tools.html.gz b/en/category/tools.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..50356f05a3cde89ca43076462559be1aa9284b42 GIT binary patch literal 3629 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 literal 0 HcmV?d00001 diff --git a/en/cloud-not-open-connection-java-mysql-hibernate.html b/en/cloud-not-open-connection-java-mysql-hibernate.html new file mode 100644 index 000000000..9b1786b01 --- /dev/null +++ b/en/cloud-not-open-connection-java-mysql-hibernate.html @@ -0,0 +1,475 @@ + + + + + + + + Could not open connection with MySQL and Hibernate - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+ + +
+

Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some "Could not open connection" at my face, but why? I've tried to connect to it manually and got the same problem.

+

After some research, I found that the true error should be java.sql.SQLException: null, message from server: "Host '172.17.0.4' is not allowed to connect to this MySQL server" but it wasn't showing to me...

+

After all, be aware that with the docker image MySQL:5.7.21 (latest version right now) the root user isn't allowed to remote connect to the database (it's alright, security reasons) and if you still want to do remote connections to it with root there are a few things you can do.

+
    +
  1. Create a user or allow root to access from other IPs.
  2. +
+
#No access to user root on any other IP
+SELECT User, Host FROM mysql.user;
++---------------+-----------+
+| User          | Host      |
++---------------+-----------+
+| healthchecker | localhost |
+| root          | localhost |
++---------------+-----------+
+2 rows in set (0.01 sec)
+
+CREATE USER 'newuser'@'%' IDENTIFIED BY 'password'; #% mean any IP
+GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%';   #*.* mean database.table ;)
+
+
    +
  1. Use MariaDB instead, witch come (at least on the version 10.2.13) with root allowed to do remote connections and will work like MySQL :)
  2. +
+

I changed to MariaDB as it work without creating user or any changes on the Java code or the docker run command.

+

+
+ + +
+
+

Translations:

+
    +
+
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/cloud-not-open-connection-java-mysql-hibernate.html.gz b/en/cloud-not-open-connection-java-mysql-hibernate.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..0e66ac7af18b35c2c707d79491c1ca30aa5cd338 GIT binary patch literal 5159 zcmV+?6xiz@iwFP!000021I;|^cH1`6zvHJsnQdh^CUtY-Shm$Vj+1&%E^h3$+mqAd z1Cfw~n70z3Wwp&CeNXYd*v3bnXSHT6CQHOsc#FH`s}dlbV{J6QpPs>Gv(KZ)_?3@j_l(oh^gcw zpBZpDJ7nI3>Y$O}D-&%-N{ zF#phUX&8kZ*ldw$!p4UdGFJ@R?b&SR2tAEL-1Vc>vw?Fqa?W0G&VEO)sU6J4pT0fK zx#pm*)J#WxsXOTDv@+e;9vjotm$%`-!jD3uhD|6?gHP+LM@cbDu+zjhAb)a_>SoQv zJfNwZMu{=|OPVJC|9>uz$T1CQGKt7SgO;?}W5P{%Tv6sD1#>_apfV8K?V=i+qab1`M!rQ{`xBfU=dvEAw0ojr0J5TU0x zM*kZGnHg*2C`l*vBkndpk-63gLx%}zl87In3pPe6&)?9Q2Xw;jp!BMrXh)N_R&Ib0 za3O$aP8?2hMrD5ER+lhl%oAL&uJC1$uZ77U3wmnd7RY#IIrkap2P=G4TTWTP+O81oS>J(=oIM8eMxS^-34k}E4RiBrrUop5 zUWSm9KL*wcXA(sdpV62L?V5%7VN3(=&kx^#ux51L1hPU+41Xi)S%eDctSqnUf`#z2 z>1-NOe-4VICankPg~A4)Vv};`VjO)H}y<=QIB!3rQ z@CTV^Yeo%-m9uJ_2nuL}gW%($`}>XJl2)Kdb|YcIa-&2k)&Q1^knPuv1Wr`OdR)Xl zh1o}7S6BO`wwQVz4<`e%=RAyW%5CVgIZV}of89>CRnaB*Uu;0S{c0l!huKrcCsPT{ z&Q9;~!`<#qZ?D{I7A2lNN*KKY-0;H&d#dR&OK6<;z#HW*Zsen%zTfZn%MByw%Alni z-w+Y`+#~m0*RAVgC)DGq7?2&45QC}C2#k~^mpqtMm^-5G)g+11(6i$Rq9!Grhn;Wt zn|dWIW>lg8v&+Vwnz?QSOGvp-`+K7om6EzsH17c!^Bd;vf8Q?kF2vC3l&Qjn2Iguu0M@7;5zFt?BM1HgOt?jbE>SUByQ0fBfS z+J~F(;XnMwWT>0L!-`zXvITV= zcky3i|MzujnBfdglR=<}A>pQSe2K6X&meU{pFbcTO|GhhApevo>`6lBHN+T7mD^Nr z-0$^wR}z(VolPNQSV7Gf;pr{tR_8>vdVPXw(AI&Q_3vwoXkq4sZ=2 zu1^IlaV56rtE|VbjdmHu=F%2Yvk|!jA1G2SIkW=`ZgIyLqsEO=DIxkS4Yffm0S?I; z;c5!3w|#K#OnpO}v~f9Ed{g$5Bh6r8k3tt>nkxi)iTT3j)_xxDXt)(r6goV|WK7AJ zA~F!B9JKk6d>4*Hy#JDg=|NkMuNhABIL2B@kv04&3fMuLR+vF=<%1!W+v7cJ$ij6e zxeaVA0cAETp@k||HmNrQi=#6R<^45da(52^4-}t z^$V3R>sc%gee|8$55hw6?Y`*^ROCD$kXvrH@-SNC`3DG%2? zaUqYYRZhFZgVC^1=TDrI=ZVA_WHVI7#1iuD57<#ye+=p^*f0DC5-T)6yxkvQiWh=c z(>~zMKXNR?G5@52b~Ulg})HYKT9})B>5#x+^Nc%ao;Rp z6|~wWUWRIxqM*CVH6Ft63o0a_I47qBqH}Pp9`fH~u^-KgZGfi`c7vTN%fV)dVXrh- zgE_&Rn;1ExLrz=QjEr!FPX$;pIg5k@H;j;YC?pt>lEaijw=lwF7y__B5Grw3Vw-^T zA#@D>0FVm64i!oYlWhVyAx;K4ffu%9E@gl>4l8X4FdY^ z&oq+zjk={_fDZBY@Ny707u& zYlgyw0ReNI3Vm9R!2KBosVK4*qA|5e%`^i+J+4R9y09Tk3w>3zj0`D-IZK;7t z1URPx$0`&I^vkJa=Z8G@&Ez5&@B(+F?HM`S2Lf zkqAQ37$w;rot_~g)OA6|TEG#`NKVfL0EUqexkY%^U|4>UxPW_t7<+giVj6;{(jWLY z?-^Oc`*ruPtl_IDYarDYjZ9OkY#fKA)wV$#goHMYi^4`s!g&)w#igdk)3dB)qYCl- z#T26UUa3M)?ou&tZ}OYZ3S z&B@WlNuyDnpS-DU6TtEB?)UfhLpDR7pspMI|BrR|3jp7mLzn&N)00;hr_WALo;IQQ ztNB4~WOH*9D{*qeKD86M6bpO+kc#FXEP;kw~RN~%nlf&3AY!;$B46$@V z))?hMXbG7*|z2@1iRrpn^@%Zs?^erJcjLf;{Z}>Hp~); zB*n}vfYi%7Xsd=S%EmvHBzdu+axhJd*6h&PNSCv%CyQ|J(2@xag|E_Dv9v9+GrTaG z2aufaRJx>oHGennfb!_sRZUQW{$@2c3B&wIozuwTz!WBZqwlLc+r*Kj+TZEy5)`ic~)p~9{JZOT$QqhOgiUfumf_I!6h0l zG2rS71SR|j`QF0=@*7O>%%AH`8&uc@N3&y4brf53i0yk1-igu{ueoh*{iyctZlpC( ze8EFkJcXdB$JTbKrz#K{Sf`Q&FSwB9R#k0;N2I1W%3XLi@Wf|$;AIWomh_{#n_ou?KD&A?O^X||cx3yf$Fy48I*Xmb+OaPqkB|ALCvYrLe~iH#Gzj|Lc_d3@YA4!KedqjXc9FbWTJG6Vtze(2adWHqud0@qJYDh zB%l$n@+%Y2m+js0ZggYWIP5;|G)(f{ksMk?1IaNIdtK?Nw)%VNfoUhxo4`?vTLm< zOF?A5cGO7j{q_f-+WUA^+aPQe1fdIh#tTkri? zVXT(=`pES&E!!&>Y;&nzYIA9v`7Udzj@xP~>M@;PW3Y9nFzX|w*$`CSQJ7zaM4EYQ zSc-NS=UD+e;9MGoOW4NhAXK@ETly4EWHE80RW?Q3bjY zz^t}9JJlNzMfF=z;G!A_s!FF?en1niT!&)T$0QMshWv|9vgd$s*T{xkjQKwEMsw9@ zXYm4O!fLF(DQbzbJrh;N zITPuarG3_lTC8H<=k}VLJd~n;rAb~>lg(Q$oUSQxJHjy)jVaY~<@+rE3xdXeDkV$S zB-dT$9=7YEh70l)3oFmzanxV#!GM3q~`^W`C185q2-zcEiX%7 z5ka`Mw;nmptCNebm6|x3L2x>SRc}qA&T!y44*Xh4OCSY`f;Gu{qXvDgBw?18JsY_m zS(p)?tASrDX)=m@u_jd)IOZ+{>EoI_D*YUhV#2VLynICVX=24P3mBh= z3T5;PSzxpcR4kmIjTIH1x(7&lsozM(lMF~v+!`9LkSH+v=q(5Id1w*Lha~+{#LNYT zx|d_ld{11WI$W~xDmmaI^T2w+u;$!PgHRPIXn0wfyWWq4NSy`@OC3JiA%3tU9HnzR zU^WF`Hy$%~cRy&lqqNNF ze$Gg=uY2w6Z5GN8t9?&GeE|3*os*Z09Fb#9OZCB@N1gb_Tn@8GA$#53@_l?tgOKsJn2O;3W4hEyMJ$>4#pr&!hwcl=5A@Y{uMy4%BKRXitPYUyaD?yP~OhE|8< zbJemwj)3AQaqu}L27=S?T?jt~syWCyWM5=$6(?aRpH{i-+c&md9PMCTn@v62^|^X^ zgiGxhIMVOz?LO-D_xjz3-Tv<5KEAAA9=c_VjOm0?ua~`F0NTC$5gzq$pK5Kt6K(2= z(L6gKd8ZzM%=Q|IZEKVkNF#2~RabJ9zptR^wtOaqM@?$$AbXEOSz6aLA(s>SCppv~ z|NKMV{!xCG74JK7DyExnTbJOSk6brOL)qFUtzVAp$DQ3?=W*Zewf@*zF-|7by~0Bx ze9_WU*UdaGA)8w@1ptHbC)7bUz}QxW5v|(J zT84+}>7d#UAYN$RY-tI%$f1E17IZ7&<|Q}e2huWLGtnXg{ayR|))sj{TD9+=r$1* zF23K|H0~^Kf-8MI3B6^VJjSv@RLpx?XZ>hIeS)uz0wbT0%?bPkDz`|3KHtj~xyG zlkXWtA7AXGdFjA$QR0^QXQQcddQ?*{QS{v=7Cx$XB=9tLW4YR9)e^hi+`ne2Yv{dt z(b*^$-&D_gO#U0OOS?^;GyO1Oc387vn(5*N2DRq;WPa*x8s|Ky7B!Hcp8l%SMNDjc z2zeO9Xs#^Hlr=q>te)w$?pB(qQ0U^R{fhtPW3pKw>8Qxi$#yHi_kmkg$xExwZ8r`h zEqs?ijdv>uSsG#C2&>|m2=fJ7Z(@z@S~Ke{nLE6C!{nvwM}jRevl+2E`tHt+42e>i V7`|UZU8t8N{uhLS=f*Tq007|}{#5_~ literal 0 HcmV?d00001 diff --git a/en/connecting_to_database_through_ssh.html b/en/connecting_to_database_through_ssh.html new file mode 100644 index 000000000..ef1536ac0 --- /dev/null +++ b/en/connecting_to_database_through_ssh.html @@ -0,0 +1,464 @@ + + + + + + + + Connecting to a database through SSH - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Connecting to a database through SSH

+
+ +
+
+ +
+

If someday, for some reason, you need to establish a connection with a database which is behind a firewall and you only have SSH access on that server (and you don't want to use a CLI) you can do an SSH tunnel. It's pretty simple, bellow has a sample of how to allow connections to a remote Firebird database.

+
ssh -L 3051:192.168.1.9:3050 username@192.168.1.9
+
+

The -L parameter tells to SSH do a local port forwarding on local port 3051 to remote port 3050. You can use it to a connection with many services, not just databases.

+

You can do the reverse kind of tunnel, forward connections from the host to your local machine, you just have to change the parameter form "-L" to "-R" and the port order is inverted, first come the port where the server will listen and after your localhost port. This remote port forwarding must be enabled on the server. Look for GatewayPorts at the ssh config file.

+
ssh -R 3050:localhost:3050 username@192.168.1.9
+
+

Why whould you need something like that?? Let's say you want to share a localhost site/database with a friend, but your internet connection don't allow you to expose any port but you have access to a remote server witch can do that. Problem solved ;).

+

+
+ + +
+
+

Translations:

+
    +
+
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/connecting_to_database_through_ssh.html.gz b/en/connecting_to_database_through_ssh.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..d817957f3dddab252a618d717f34f90b8502cae4 GIT binary patch literal 4712 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 literal 0 HcmV?d00001 diff --git a/en/drafts/cloud-not-open-connection-java-mysql-hibernate-pt.html b/en/drafts/cloud-not-open-connection-java-mysql-hibernate-pt.html new file mode 100644 index 000000000..218318592 --- /dev/null +++ b/en/drafts/cloud-not-open-connection-java-mysql-hibernate-pt.html @@ -0,0 +1,475 @@ + + + + + + + + Could not open connection com MySQL e Hibernate - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+ + +
+

Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some "Could not open connection" at my face, but why? I've tried to connect to it manually and got the same problem.

+

After some research, I found that the true error should be java.sql.SQLException: null, message from server: "Host '172.17.0.4' is not allowed to connect to this MySQL server" but it wasn't showing to me...

+

After all, be aware that with the docker image MySQL:5.7.21 (latest version right now) the root user isn't allowed to remote connect to the database (it's alright, security reasons) and if you still want to do remote connections to it with root there are a few things you can do.

+
    +
  1. Create a user or allow root to access from other IPs.
  2. +
+
#No access to user root on any other IP
+SELECT User, Host FROM mysql.user;
++---------------+-----------+
+| User          | Host      |
++---------------+-----------+
+| healthchecker | localhost |
+| root          | localhost |
++---------------+-----------+
+2 rows in set (0.01 sec)
+
+CREATE USER 'newuser'@'%' IDENTIFIED BY 'password'; #% mean any IP
+GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%';   #*.* mean database.table ;)
+
+
    +
  1. Use MariaDB instead, witch come (at least on the version 10.2.13) with root allowed to do remote connections and will work like MySQL :)
  2. +
+

I changed to MariaDB as it work without creating user or any changes on the Java code or the docker run command.

+

+
+ + +
+
+

Translations:

+
    +
+
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/drafts/cloud-not-open-connection-java-mysql-hibernate-pt.html.gz b/en/drafts/cloud-not-open-connection-java-mysql-hibernate-pt.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..a7a76878cf06e7a1ee2bd3092d6534b22dd2b614 GIT binary patch literal 5165 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 bcWz`zlq$yXbrb4By-V@GvXf&zTTuW2N{9yr literal 0 HcmV?d00001 diff --git a/en/drafts/cool-tools-pt.html b/en/drafts/cool-tools-pt.html new file mode 100644 index 000000000..860edf49b --- /dev/null +++ b/en/drafts/cool-tools-pt.html @@ -0,0 +1,457 @@ + + + + + + + + Cool Tools - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Cool Tools

+
+ +
+
+ +
+

Com o passar do tempo você vai "encontrando" - e às vezes até mesmo desenvolvendo - algumas ferramentas que tornam o seu dia a dia como desenvolvedor mais fácil. Abaixo seguem algumas das minhas ferramentas que costumo usar. Ressalto que essa lista será (provavelmente) atualizada com o passar do tempo.

+
+

https://www.gitkraken.com

+

Eu gosto muito de usar git, mas às vezes fico cansado de ter que usar só linha de comando, e achei no GitKreaken uma interface muito legal de se usar.

+
+
+

http://paletton.com

+

Toda vez que você vai fazer um novo sistema/site, ou até mesmo trocar o layout de algum já existente, você acaba tendo que montar uma paleta de cores para se utilizar em todo o template.

+
+
+

https://icomoon.io/app/#/select

+

Querendo usar ícones como fontes? Vá aí e gere apenas os arquivos que você vai realmente utilizar e economize alguns kbs.

+
+
+

https://syncthing.net/

+

Se você procura algum meio de sincronizar seus arquivos entre vários pcs e por algum motivo não quer usar um Google Drive ou DropBox, fica aqui a indicação deste cara.

+
+
+

http://sqitch.org/

+

Gerenciamento de versões de um banco de dados pode ser bem complicado e trabalhoso... Manter diversos ambientes (desenvolvimento, homologação, produção) vai dar um trabalho se não utilizar alguma ferramenta. Porque não usar o melhor de gerenciamento de versão (git) e uma ferramenta que se adequa ao que você precisa? sqitch é o cara nessas horas.

+
+
+

http://www.setupmyproject.com/

+

Preparação de projetos java, com frameworks, bibliotecas, nomenclatura, etc... Rende uma economia de tempo grandiosa e já vem tudo pronto :).

+
+
+

https://www.pexels.com/

+

Bom site para imagens free stock. Excelente local para conseguir imagens de alta qualidade.

+
+
+

https://heml.io/

+

"HEML is an open source markup language for building responsive email." Melhor descrição impossível.

+
+
+

https://www.mockapi.io/

+

Desenvolva mocks para testar seu front-end. Eles geram inclusive uma carga de dados para ser utilizado nos seus testes.

+
+
+

https://undraw.co

+

Needing some cool and free ilustrations? Take a look at it.

+
+
+

https://www.audiotool.com/app/

+

Ferramenta para criar sons, musicas e afins

+
+
+

https://app.cloudskew.com/

+

Desenhar projetos de cloud e afins

+
+
+

https://lottiefiles.com/

+

Veja por si mesmo

+
+

+
+ + +
+
+

Translations:

+
    +
+
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/drafts/cool-tools-pt.html.gz b/en/drafts/cool-tools-pt.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..6b87f3a4896105d7afc32718a9db0444cdae9e61 GIT binary patch literal 5156 zcmV+<6x-_`iwFP!000021MOVva@$6h{%t=+hu#@U6M+{|wrp9FBVXcV*0LSj$;?zL zrD_6AvMm4&qZ_1{jH~uhHnml|wOf^6Tl)lhlYNr?PB#DoASsKAll6~@ZHYvmbNbxR z=?il3+2a?F-u&(56E-$ccy#lCezB0pqr;YnTSqtXMDXC~Cc}RRkuaS3W1ebZ4qM;8 z`O>@Fst(0G5{Ipc6w^edrp0^}8xaF^Dg!e<48%nG!n0qtnT(~8JoL2BLvh$^cWb1^ z#w4D2m&wUt>#yFo$KE3qCEUnCC@OTNI26H16qrVuP#ir{Dr9f)Lo<)PmPy3p_@Lv) zZZ2>esaP2KBS@>bLiwM3CByc4ni!c3lxh1a>SSNtd3?P0x8ra2X5G`TCx11&N%y;N zNJ$l{NvaZ&n%QAXjrO%P;*{p8P|i7O9kCTiW|mapd1|B|l8kPaP{wC072#pa=dp?< z)YoF;R16PWq%^(X=}f27wszB4#)Fg(jqdo+iDyVLUSis0=_N#YXha%wBOFoZ3g=!R zhCB<+hh`G-6((CEG8v~L^W20rr>Nm%X;{IyCPT|;=L+BFnHj6JGRFze(u-ewsn{bP z@pPov+?ES|6$tI8GHJLKyqGDLaIJaD0>zAo62&IUzxXdU;gbFFR)6=thzUOBaiHvX zxUpat|Ek$U{3tZz=HfqDBy^-0CK2&Og%bf-fbnpYMO?F?NKbN;7Mb zu|RUh?N2DEN+VDyi?{^(#m_#xpB)dlJSU`4CZdvffPayU$4ln%l{Oh@W)QE zXUT|<#1+zxh0~qNqjnOH3eNL<`@vK?6e7?a9)@jhK;axIi&1retVt3g^OJfyH1@e2 zYbJ1;R?CXRj^DgEVPAq~gAa?Q%`6nKm?(36$BacJI=1JHOdHHAz zt$e=Cek#Avf22ImDQcg!3RP`0&A~Q8UJgs}_czOryg|i?bAv+ftJFHyK0|vU?k~fH zCK|Yb)Je!O`vCEDcE2{3@F0-!XrJ9{-%if!V^l{art0EPuiG58a%uUa*k`?da}dT6 z-dM=d*kHK5yL0#UUT=5jUL9(x(!d*}f}epm`sE>>mViuCo)i%Dpbp}zP^J6qR=?k` z4-5b*Fw#rTnO30;*e&1pm%(@`4`inI*=|*kic;GH1gS_*Wi)CicfkF#QL3^y@Dhcd z(i-P>_Ye11L8T%Q+>inDk1HXaa(y)sX&t8XrwSA|hWld*?|n9u=OVcOr%nyJG()#r zm#+9UcRH7)*`kyYKX+?`edbNY;7r1$Wf*!K#X00?{FlkB9H^4}TMOWW63xxkU$ICMp2!Y2Tyd&f!}rOB|?;3mFGieCMRaQ&i0n zZ1FbJMh<5sp@O?FB0;r&6D7M4?cO~&@>WCiThZ*b48#B>w?1IQr!;xKWMZGmh!$8p zZrHVMTe$16M}JnrzhCBtInPL%Lc|P>5OoVke5v-V&ahykoWGA=Bt2^iLi)3&@J1=0 zEfJ>TR7Fhf4EsC%y-S74L8oJ^r!JA^chTtw*llnzUN(E45DEqK{9e!#t4(7INGGo# z2OYN{zj;74g!v&lH7u~JYA>p6ASab^qmpWAi+OdBw1i(|QfE1e1CF$~Tfwn-gUlEe z*HJx~B_fo35TC|Sy%!?63;T^?(xY-R|7PQ-U|OKCtJp_Rb4El@(Q?I`Tlb50$I)%D zV%d=eCqvGLoR~qIa?p`S?2qw4C-+Z8oE>x={t|Rv^f9eVC2Adgr6O_A;SFW*59*;} zl@IrOts@byJIRO0CI(~^QzLtT9&M64Ne5n1EX>KXkoM-&%~K(Lp|t|m!`2beV&zqR zX9uN^%6IpE)xXI3a>%kc^eK0`JcvT^hx^rRU_0i0hE@IMM$tYye%dGo$;Q_G6;+GO zZDnxcIGm*skaz7Qi)%YAQ0LtyvKBJrwGQP?p0uH ze9gI`Pd3A?p18C}Gb+cuql3Xw>CV^M4JnojFGU)0+xcSoSlx-4eqpx=T)(2@Xs$RUxNHxwf@D8SW@V6Hglz?bUJOAu*PC9a`4Xs5uQ>#Xsx zrmZ&$mWDd4;PV(5@*km$EP|jDxE>rvM7%>gr{J^ z!VEf<%Hv6b^>qlCYxreOr!7?nbUL>>1*H!F)U^IhMzaJiMA^kJNHvhyCIVVL3;lq7 z2lerbU*K^gz%q{B3eKyLcv3oGQMzF?gG>NJmmr*;pBJx=9BkZV6qRq{}sZ&P-_j$*MZ3DMc#&hLaO?yu*DQT;L)fbvAeepkVF3N)udN-6c z`WztVK}*UesFV#5TyQ_TKMA))E=&=q;aF+aZnxP9r|gDmMdZi_qk$w}(`>UWT++_D z&BpNJP>r0nw#ke^Wq-Z$bWiYU+#1WRvzSR5ybLwSCa>`no#Z)*oWJ~!P0b~oI7A8xg z8T9ZLPW){%Em~Z)nZ`*1=BpppvdZxG8Kn_Bw zjPN7fwxxO8jC1I(Yl7vgh^FsE^YCoCZ_9dzj|`=jG^h|F{5QX(<)1; zm*MGIme{)m8H7P~LaxYUNQ+369GyT|N}T8p(5mK*@<|b!w1@BfjrLu%zW4===DLQD zplY7T>*;{(n-i$3qA^g@$m1fVaYi6{D}roiT+x9K&=xn`A1)9g2_glduSaDHGph}X z38ak?uVh-+&7?)1Lny>}Y)cqX7HidIET>aGMKD}LB@VYuxC@VJYIrV$HM3T<(xYW0 z?JHXUmk`vr0|&G!Z_oszNQO$Cp)+LCtZQPPAy?44mcpCbvuj$qq+^4by05yy7sqP? ze>pD_E|OD828WDTIl!_=g|q+|%2=-9_jNh%Z?ax_P3QhX=ga@);m>DC=Jrs;EIi(tOdb1+UTqq$I( z&4PSO%!x@0ejPf;Uf8bLJ$h3a-UoBL4UjBs?p{=%9CY&8i>+(IC6>|q)y<>|4DDwU9`YYW48XttX~`r6@-;xKsKquu#(NElcvRnbZ+#(yLZsz; zV-?CZ=8y9mSWAwd-fv%n)tz6@Y6nIXBbClNb`Q^O;H_ZaDg0wG-~R~Auik@PAwtD* zmdWwM&DueU_4uRT&;1MksE$Dg?AI%ygdB(E3oia51{PxbQfs(- z3a)4^xOHV>+D4}X_J;PW#*Z97-?vs=cKM+KOk24xi#tI?vvLinv7_6-I#Gcf$~BPk zYkR8|^^z8zD}#OYCBGVc1G`X0^Q><^>(>PFVn7S3#?*v!TV$A1Bo-Zm2U8>0UOWm)yKX#cNU!W_Fi<`S2)tXk**EZ%SVUg83u0)DU z0I&1r3_RDcY{bu@SLWDeyL8F1n9dL6ixaYb{wd^%wnxJ-XoR5mQY)qHqsn9a@}$lV z?%U(W=4lO2gZhD5^`I|RgdOvV9Oc)&IofhBCi zeX4@dKI57){TV2qsyJx0vhy|Nc}6&&szA|9zYEtC=w$Z#n`fV@K(R1uiqn4nwjsfvV9qC4D^wW|~2iM_UnpQ>n;&5J8b zRc}i#5yUfq(NNX62iTa8Da&Fo;0 z4ls=NrqYbPW;$7t+e-p2&9j04BLde;E9>xYnGP}@dUOZL-uEA7v0e7?P@35)z8{Tw zJR+`n&UZ%VE(Hz7{ZwhqqAWBr3F&4l_RerEoSImxjAf|4niKIMjX(~Bs%ry_U6TyzzBPUDq2J@Y6a$YTm`8ypuy}kN#y4cEVS=#-&Y`dg( zi+TQWsFYcKC%blGKi8|*-)Wd}<$Yq>Rk^}#^JYmm@L^gklTuG!uds@HZ!T7J2LQ~* z%AV+@bd$DuA2_FnV9$6e=t(%rZ}GozLsz>M-{f<9d}>G5=MgLp z(l%YSrsHw<;%NLaSS?5{WA<4-)<_Z+=W{NXfBVey%2Skp8}9MI^FwLhe)YMRKqLL` zy}dg-{d@i1?OuQHZlB(|oW*`UA`?CmJlM%!l*D+DS4#Jmf*tL=)g2z_!7M+ecx&I~ z$oCqV=Q)<Mb?nwb{z7QoS`(hK(-D8i4&AT6|DApRL;a;3 zdfrYlJ>L9&;}qHX*!NWyn~iO@@$Ip9x4XB~z1#P8Hh$Q;1ka@0KckZx`u}7sfNmCj z3ESLS^5zgRIpSb3P<}?IrENbI=%(|t)6ESh+Q!!6OH3o)CN%(eqoIh6rNGXHhs>mz zSPB61Vt8}IS$KmTR=A=|OxCzbs*Iw&-Un=>^1kc_+jrkxuHV>VpR--kYNrNALT&- z=+aMVn$4}BN*L$pNL|({(BXRmw@@1}GI3+C4l!}5^8EPE)EV)`x!fvyc2BBk3N2d!8d3lN5UJbvb)UANNyy%oT%g@xS z`mgjZoeq17X4PQvkRR6EtcL0QP0Xd?`f&Djuvt0hA-7mU`SI7^x#c1)Y(um>0zH~< zYBS|S4@Z~J^umGFW-1-JeEqPIf8~&EmQ1#7XV}hnE0Ft;R_)?tV_Di>iN-eQrN|}O ztrTPdqeU34MrL9n)MCAf9k*-E?6zdC@D6cRmwu?USWxC_#+J! + + + + + + + Desenvolvendo apps para o FirefoxOS (Parte 1) - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Desenvolvendo apps para o FirefoxOS (Parte 1)

+
+ +
+
+ +
+

Requisitos mínimos?

+

Para seguir este tutorial você precisará do Nodejs. Utilizaremos ele para automatizar algumas tarefas, como a criação do nosso projeto e até mesmo o empacotamento da app. Estas automatizações se darão pela utilização de algumas aplicações como o Yeoman e o Grunt .

+

Também será necessário o emulador do FirefoxOS, ele roda através do seu navegador Firefox. Para instalá-lo basta ir no menu Ferramentas > Desenvolvedor web > App Manager, nesta tela basta tentar iniciar o emulador, se não possuir um já instalado, você será solicitado a fazê-lo. Neste tutorial irei utilizar a versão 1.4.

+

Preparando o ambiente

+

Tendo o Node instalado, vamos instalar o yeoman e o gerador de app para Firefox OS. Atenção para o parâmetro '-g' no processo de instalação, com ele os seus pacotes serão instalados globalmente, e não só para a pasta em que esta o prompt.

+
npm install -g yo
+npm install -g generator-firefoxos-app
+
+ +

Com ambos os pacotes acima instalados, vamos dar início a criação da app. No seu diretório de projetos ou onde desejar criar a app chama o generator instalado.

+
yo firefoxos-app
+
+ +

Uma vez chamado esse generator, o mesmo irá fazer alguns questionamentos, o primeiro é claro será o nome da sua aplicação, seguido da descrição e o nome do desenvolvedor.

+

Após a execução do generator, você já terá uma estrutura para desenvolvimento pronta, inclusive com um html inicial, com todas as dependências já instaladas. Vale ressaltar agora algumas tarefas disponíveis no Gruntfile.

+
    +
  • Default: Irá gerar o pacote de distribuição
  • +
  • Test: Até a presente versão do generator (0.1.3) este processo irá simplesmente rodar o validador jsHint
  • +
  • Server: Irá disponibilizar na porta 9001 um simples servidor para testar a sua app
  • +
+

Vamos testar a nossa app. Para tal, rode o comando grunt server e acesse no seu navegador localhost:9001 e devemos ver a seguinte app. Caso nenhuma página seja exibida, revise os passos ateriores e verifique se nenhum erro ocorreu.

+

App inicial

+

Vale ressaltar que a sua app toda estará dentro de uma pasta também chamada app. Nela você encontrará os seus arquivos .html, .js, .css e demais. Antes de começarmos a codificar a nossa app, vamos ver como se instala a mesma.

+

Instalando a app

+

Para fins de teste, não é necessário rodar o comando grunt, sendo que ele irá testar o JS e compactar tudo em um arquivo .zip, basta apontar a instalação para a pasta app dentro do seu projeto. "Mas como eu faço isto?".

+

Indo novamente na App Manager, clicando na lateral esquerda, onde indica "Aplicativos", teremos então disponível no inferior da tela duas opções, vamos nos ater a utilizar a primeira (Adicionar aplicativo hospedado).

+

Clicando nesta opção vamos navegar até a pasta da app e clicar selecionada. Pronto.

+

Simples de se instalar, não acha? O Resultado final deve ser semelhante ao abaixo.

+

App inicial

+

Acessando uma API

+

Quando vamos programar algo mais complexo, geralmente vamos utilizar algo como, câmera, rede, lista de contatos, armazenamento e outras possibilidades. Para utilizarmos essas APIs, precisamos - assim como no desenvolvimento para android - especificar para o usuário no momento de instalação. Estes dados de acesso ficam no arquivo manifes.webapp, se você ainda não deu uma olhada neste arquivo, é nele que fica armazenado dados da app, como nome, descrição, versão, localização de ícones e é claro as permissões que a mesma requer.

+

As permissões ficam na propriedade permissions, na forma de "chave" : True. Algumas das apis são:

+
    +
  • câmera
  • +
  • contacts
  • +
  • desktop-notification
  • +
  • storage
  • +
+

Cada permissão vai mudar o tipo de app que você esta desenvolvendo, mas aí eu sugiro ler mais na MDN aqui. Esse é o básico para iniciar no desenvolvimento de app para FirefoxOS. Na parte dois, vou começar a passar um pouco de código.

+
+ + +
+
+

Translations:

+
    +
+
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/drafts/desenvolvendo-app-firefoxos-pt.html.gz b/en/drafts/desenvolvendo-app-firefoxos-pt.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..e4c774af2177224e7aaa4e7d0c9e9e2aa1d28dd1 GIT binary patch literal 6229 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 literal 0 HcmV?d00001 diff --git a/en/drafts/editando-o-admin-do-django-pt.html b/en/drafts/editando-o-admin-do-django-pt.html new file mode 100644 index 000000000..921aa1bc4 --- /dev/null +++ b/en/drafts/editando-o-admin-do-django-pt.html @@ -0,0 +1,531 @@ + + + + + + + + Editando o Admin do Django - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Editando o Admin do Django

+
+ +
+
+ +
+

Este artigo foi re-postado no grupo PythonClub. Vamos falar um pouco sobre como customizar o admin do Django. Primeiramente porque? A resposta é bem simples, quero mostrar algo para o usuário sem que ele precise entrar nas apps e fazer alguma consulta para então tomar alguma ação. Alguns exêmplos para isto seriam:

+
+
    +
  • Exibir as vendas do mês em forma de gráfico por região do país
  • +
  • Exibir os últimos comentários adicionados
  • +
  • Exibir log dos ultimos usuários cadastrados
  • +
+
+

O que faremos aqui será exibir os últimos comentários ainda não liberados de um sistema de blog. Vale lembrar que aqui não discutiremos sobre os primeiros passos da aplicação. Para seguirmos adiante, vamos assumir que já temos um projeto básico com uma estrutura simples, abaixo a estrutura inicial do nosso projeto.

+
../blog/
+├── core
+│   ├── __init__.py
+│   ├── admin.py
+│   ├── models.py
+│   ├── tests.py
+│   └── views.py
+├── blog
+│   ├── __init__.py
+│   ├── settings.py
+│   ├── urls.py
+│   └── wsgi.py
+└── manage.py
+
+

Para iniciarmos, precisamos da nossa tabela de comentários, vamos usar a mais simples e básica o possível.

+ ++++ + + + + + + + + + + + + + + + + + + + +
CampoTipo
nomeVarchar(30)
textoText
liberadoBoolean
dataDate
+

Vamos seguir adiante e alterar a página inicial do admin para listar os últimos comentários de um simples sistema de blog. Para comerçar a editar o admin, precisamos inicialmente copiar o template que desejamos para a pasta uma pasta admin dentro ta pasta de templates do nosso projeto. Isto porque o Admin, não passa de uma app como outra qualquer, portanto o sistema de herança vai funcionar aqui, carregamento prioritariamente o seu template. Você pode conseguir o template que desejar (no nosso caso o index.html) dentro do projeto do Django mesmo, no meu caso "C:\Django-1.6.3\django\contrib\admin\templates\admin".

+
../blog/
+├── templates
+│   ├── admin
+│   │   └── index.html
+├── core
+
+

Tire um tempo e brinque um pouco com este template e veja o que acontece se você alterar algumas coisa. Para adicionarmos a nossa listagem, vamos adicionar um painel lateral, para tal vamos adicionar o código abaixo antes do fechamento da ultima tag div. Nele podemos ver uma chamada para uma template_tag, portanto precisamos carrega-la no topo do template.

+
{% load comentarios_tag %}
+...
+...
+...
+<div class="module" id="ultimos-comentarios">
+    <h2>Ultimos Comentários</h2>
+    <h3>Liberar</h3>
+            {% comentarios_n_liberados %}
+</div>
+
+

Esta template trata-se da responsável por fazer a consulta na base de dados e renderizar a nossa lista, portanto ela é uma 'inclusion tag'. Se você não esta familiarizado com 'template tags', talvez queira dar uma olhada na documentação do django.

+

Vamos então criar nossa template tag 'comentarios_n_liberados'. Primeiro devemos criar uma pasta chamada templatetags, dentro da nossa app core. Dentro ta pasta vamos inicializar um pacote python e criar o arquivo comentarios_tag.py. Nele precisamos declarar nosso metodo que deve se chamar 'comentarios_n_liberados' e nele fazer uma simples consulta ao banco buscando os comentários não liberados e por fim registrar a tag apontando para o template que será renderizado. Abaixo o código mais explicado.

+
+
Recomendações
+ Livro Pense em Python na Amazon + Livro Curso Intensivo de Python na Amazon +
from django import template
+from core import models
+
+#Carrega o registro de template tags
+register = template.Library()
+
+#Registra o metodo a seguir como uma inclusion_tag indicando o template a ser renderizad
+@register.inclusion_tag('comentarios_n_liberados.html')
+def comentarios_n_liberados():
+    comentarios = models.comentario.objects.filter(liberado=False).order_by('data')[0:5]
+    return { 'comentarios' : comentarios }
+
+

Abaixo o html do nosso template a ser renderizado, este deve estar dentro da pasta templates da nossa app core.

+
{% if not comentarios %}
+    <p>Nenhum comentário novo</p>
+{% else %}
+    <ul>
+            {% for c in comentarios %}
+            <li class="addlink">
+                    <a href="{{ c.id }}">{{ c.texto|truncatechars:30 }}</a>
+            </li>
+            {% endfor %}
+    </ul>
+{% endif %}
+
+

Com tudo isto feito, basta subir o seu servidor e ver o resultado final, que pode ser visto na imagem abaixo.

+Resultado final +

Lembrando que aqui apenas mostrei como modificar o index do admin, para apenas listar dados do banco, mas você pode ir muito mais além. Abaixo fica a estrutura de diretórios final e um link para download do projeto funcionando.

+
../blog/
+├── core
+│   ├── templates
+│   │   └── comentarios_n_liberados.html
+│   ├── templatetag
+│   │   └── comentarios_tag.py
+│   ├── __init__.py
+│   ├── admin.py
+│   ├── models.py
+│   ├── tests.py
+│   └── views.py
+├── blog
+│   ├── __init__.py
+│   ├── settings.py
+│   ├── urls.py
+│   └── wsgi.py
+├── templates
+│   ├── admin
+│   │   └── index.html
+└── manage.py
+
+

Espero que tenham gostado, criticas/sugestões são bem-vindas. Fontes do Projeto

+

+
+ + +
+
+

Translations:

+
    +
+
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/drafts/editando-o-admin-do-django-pt.html.gz b/en/drafts/editando-o-admin-do-django-pt.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..121b3ab18f39597c5495873f21913aecf79afd08 GIT binary patch literal 6820 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 S)1ml(b@9J@pmFW`VgLZZ$3W!( literal 0 HcmV?d00001 diff --git a/en/drafts/menu-dinamico-com-apps-do-django-pt.html b/en/drafts/menu-dinamico-com-apps-do-django-pt.html new file mode 100644 index 000000000..fd2f8ba3a --- /dev/null +++ b/en/drafts/menu-dinamico-com-apps-do-django-pt.html @@ -0,0 +1,519 @@ + + + + + + + + Menu dinâmico com as apps do django - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Menu dinâmico com as apps do django

+
+ +
+
+ +
+

Digamos que sua empresa trabalha com Django desenvolvendo aplicações cujas apps são plugaveis e reutilizáveis. Por que não se aproveitar de um certo padrão de desenvolvimento para desenvolver menus que se modificam de acordo com as apps que estão no projeto? Como o objetivo aqui não é desenvolver uma app em si, vamos utilizar um projeto com algumas de modelo. Se desejar estudar mais sobre desenvolvimento Django, a documentação é muito boa, mas também temos blogs e sites excelentes sobre o assunto.

+

Para conseguirmos atingir esse objetivo, vamos utilizar a api Django.apps que está disponível a partir da versão 1.7. +Com esta api, vamos percorrer as apps e se possível, criar um link para uma URL base de cada uma delas. Para começo, baixe os fontes do projeto aqui, rode o pip install do projeto e no fim, sua estrutura de pastas deve ficar como abaixo.

+
../menusapp/
+├── comentarios
+│   ├── templates
+│   │   └── comentarios
+│   │      └── listagem.html
+│   ├── __init__.py
+│   ├── admin.py
+│   ├── apps.py
+│   ├── models.py
+│   ├── tests.py
+│   ├── urls.py
+│   └── views.py
+├── core
+│   ├── templates
+│   │   └── core
+│   │       └── base.html
+│   │       └── listagem.html
+│   ├── __init__.py
+│   ├── admin.py
+│   ├── apps.py
+│   ├── models.py
+│   ├── tests.py
+│   ├── urls.py
+│   └── views.py
+├── menusapp
+│   ├── __init__.py
+│   ├── settings.py
+│   ├── urls.py
+│   └── wsgi.py
+└── manage.py
+
+

Rode o projeto e veja como é o seu funcionamento. É na app core que temos a base do nosso HTML, então será nele que iremos trabalhar. Quando se trata de algo que será renderizado no template base, eu gosto muito de utilizar 'template tags' para facilitar. +Neste link tem mais um exemplo de utilização de 'template tag' caso esteja interessado.

+

Vamos então criar uma pasta chamada template_tag e dentro dela a nossa tag. Vamos chamá-la de menus_tag.py. Abaixo vamos ver um pouco da nossa tag. +O código é bem simples e auto explicativo, importamos as bibliotecas necessárias e realizamos o @register da tag com o nome do template que será renderizado. +E por ultimo, retornamos uma tupla de dados para o template.

+
+
Recomendações
+ + +
from django import template
+from django.apps import apps
+
+#Carrega o registro de template tags
+register = template.Library()
+
+#Registra o metodo a seguir como uma inclusion_tag indicando o template a ser renderizado
+@register.inclusion_tag('menus_por_app.html')
+def menus_por_app():
+    lst = apps.get_app_configs()
+    return { 'lst_apps' : lst }
+
+

O template está abaixo e é simplesmente um for percorrendo as apps e gerando uma lista com os seus menus. As outras propriedades você pode ver direto na documentação. +Algumas ressalvas para o que foi feito por questões de praticidade para uso posterior, utilizei um with para concatenar e gerar a url e criei um apelido para a url para validar a existência da mesma. Fora isto, nada de novo.

+
{% if not lst_apps %}
+                    <p>Nenhuma app</p>
+            {% else %}
+                    <ul>
+                            {% for app in lst_apps %}
+                                    {% with app.name|add:":listagem" as link %}
+                                            {% url link as the_url %}
+                                                    {% if the_url %}
+                                                    <li>
+                                                            <a href="{% url link %}">{{ app.verbose_name|truncatechars:30 }}</a>
+                                                    </li>
+                                                    {% endif %}
+                                    {% endwith %}
+                            {% endfor %}
+                    </ul>
+            {% endif %}
+
+Resultado final +

No final, o resultado obtido deve ser semelhante ao acima. Repare que está listando as duas aplicações. E acima de tudo, repare que só serão exibidos os links cuja app tenha um namespace de mesmo nome e uma url de nome listagem. +A estrutura final pode ser vista abaixo. Atente-se aos nomes tanto das pastas quanto dos arquivos, pois qualquer diferença pode causar o não funcionamento.

+
../menusapp/
+├── comentarios
+│   ├── templates
+│   │   └── comentarios
+│   │      └── listagem.html
+│   ├── __init__.py
+│   ├── admin.py
+│   ├── apps.py
+│   ├── models.py
+│   ├── tests.py
+│   ├── urls.py
+│   └── views.py
+├── core
+│   ├── templates
+│   │   └── core
+│   │   │   └── base.html
+│   │   │   └── listagem.html
+│   │   └── menus_por_app.html
+│   ├── templatetags
+│   │   ├── __init__.py
+│   │   └── menus_tag.py
+│   ├── __init__.py
+│   ├── admin.py
+│   ├── apps.py
+│   ├── models.py
+│   ├── tests.py
+│   ├── urls.py
+│   └── views.py
+├── menusapp
+│   ├── __init__.py
+│   ├── settings.py
+│   ├── urls.py
+│   └── wsgi.py
+└── manage.py
+
+

Espero que tenham gostado, críticas e sugestões são bem-vindas. Fontes do Projeto

+

+
+ + +
+
+

Translations:

+
    +
+
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/drafts/menu-dinamico-com-apps-do-django-pt.html.gz b/en/drafts/menu-dinamico-com-apps-do-django-pt.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..443cdc5691be78fb7f15ac8020d158652b717e6e GIT binary patch literal 6367 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 literal 0 HcmV?d00001 diff --git a/en/drafts/my-azure-data-fundamentals-certification.html b/en/drafts/my-azure-data-fundamentals-certification.html new file mode 100644 index 000000000..8f1c2cff3 --- /dev/null +++ b/en/drafts/my-azure-data-fundamentals-certification.html @@ -0,0 +1,538 @@ + + + + + + + + My Experience with Azure Data Fundamentals certification - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+ + +
+

+
+ + +
+
+

Translations:

+ +
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/drafts/my-azure-data-fundamentals-certification.html.gz b/en/drafts/my-azure-data-fundamentals-certification.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..f42c5b6d5373315473baa7271bb15494f0ae1451 GIT binary patch literal 4300 zcmV;-5Hs%|iwFP!000021MM8!cH1`cIsOWi-LCAdsjCy)vgOusk~VwdBu(7CoSYmV zh=e305XlmdWwo16+OOCj+ZlkAz?&?|c8?#Di%k)j!Q3$z06PBW*_*SAf4_ZBMrtfh zwvO=^5i}U~92PhyTkwWa|7456pW`u8lz1Z=OQw3xuNN=e1IKO(=$Q4KE6%1-7%PW( zVW3z5U8mevqn^*MxW`=mVVCfLD^7(gJt|nQRc~fcjg*R9_S=MC^_+jXzn;2h;W(m- z_XV@?a@J%1kfo4{E5T0AXXN>H#A40@kC7=?BXautBxd9p1;j5Vfe&N`iV8_Q7ArpB z9v}__;*$3~8q**+ZWv5k1>VMCz!d*o_qXWyix+ZHzm6ltqkgFBUN~+{etz=obpPL{ zzwFPNmoKmWrS_ucKYl@xT3Dkv1WMJc=Y+$q(UIP3HM_w$Q!*YEip2p{%#3Gj>e}_$fKG(Ei3k>KO2;Z>L^qCKuQwufJ5iMA3a!dg)~1%4 z@s!L6lUP{z?@741VH1<<(uo>{vCSTx#Q*!R$3t>P$21;>WMRz(&+?h{Vjkrj3nau= zl+d%c?qRc;6;!=mEvkDPkSvu_H0cX2N6f!eJmcx4-E1Gat+v}fAU7eA%*)ZOiAXOJIaQ(`pc~DqF|UxFo_^H z#;5^fJ|GjKPE|OrUxSknjL0B@C=v$T|hcu z${VeY36U6%HNgwa{m`H7&OeP>)^po>?pV)z*7IZX$NU5SLE*VZP+j7rqS_^r0@)Jc z&0yaB%hvpn=CCMstzZWA!dM$tm%x;fG5;<6(%Sccdy$_D{`6$yCQQzmmuuBf> zkE82s8%AypLp9-VtC?@rd`bR0>ylO{-w4WK?uhZ>NI`RbuYK@%zqQvs%=VgwvG4X{ zMn3~>_{#-kQuG%kn;A{4ck*04cj0?K>G?5VLXLCd;bw7@o&nej+^B`sI z@DL1nC&&7? z0zw0yZ0o=mL(+yagC!Nl{4Vin{5j7E%1^7p9maH4!i;59sZX^Bopxt`DN{+;=?K;^ zOSt({WO@U+IVwhFqbC6&6+p{t`7Kth8a;tDk{RT-(J=}+jB zE>0(lPuhP{q8Uu=Vcq|PIbp%NgWQA`)|t*pq%vra zAxFDPjHCfplCCMyvLNg&hFgR}`~dNf!3s@;x@CW`Nl>}a4f=PrRI=5{SjqYXWEm<*!Y&QZmzh3eKk7Lw70@kA@pu$lt;s^(LYz3QL%82_R1C`lp(QH|2DNu`VKsMwjlEo#i6{}d z;0r6fO_eKB#3i@06Cfq037cY=P>pnS6&j>=leAzN2!^3Ea5Y~FgHYa?_v9_Ux8#(O zPev|FymKWHxd%-b)>|HgLY0VXwGyGN={8HIm6b?hf^a4f}cX#5Dv@(EdGT^hPxOsqF<750D6Fj_t<(1?n1~4!x(gr zD-o=m!$Om)k&6;c>=^W;?M0?M&tYJR@lOLqG?Z<*FH)#1amF^2Qh_d4loWb||NSSK zNrUXv()m%(Z`aD{YSyqYftfn3hw;$a&Ggh|{jT#8GKp7Qs%)#?Bfv6(ZP?i^JOO+z z7+RXs{gCmre8xK;@HE*!*v)rH^Kqx!Dzv5aY-r=f!LW?oy$3HW41~D|Rw?e3dQ*$+ zk`K;J)y9tnSe)A4rX^ye3T7>s(w?}@Lz0`}N@34KABI>PG^yQpOO`?l;~ zbxMt(y6T^U`cky9gz=jRc@qz5knY3X4LSIy6q5*tVFf`pNiR{=Z~C8Ljw+=nHEXh{ zO4ec3aRv4kYqK_wjs3xXYu|rzIOsp|JAU7Lym#32_x3wa4yi{wtoeiNwGNt9Lzqk+ zMu9#RU33aAhNOXtU>fnsGE7J(p%0~QHu`F{%? zm$VMSch~j*)j+@c|5yKiK>pvU^#6)Pas&Tgny@bQ|CMPdCIZ$tSTk8Y0XTHqt<3_! zYM@^Oz}EoqfC9i?bpo*7B5sq!VEv`#@^s<06j!Y$7KE<5m}s{*j3q09evKtxW63RJ z$;Xn7lkLKh5ikNrVpcfby*Lo@Vo<^SC{O7uq};C85j` zXsIB-lv-_d4z^PEbxUnl>An7HviITH>vXP|Uw*jk>P77uo>1dut( zy&$M^V#sfbFFBqelY?RDNsUhOBxoe{5hbvhF~k)&)`Hagzw_f{^AjVwv8#{0}L;l*auGH5TOHl#fQmN9~yJ&3fgBvFuy<3jc$@ya3-C~<1F*TImuSFJ{Ke=%svN} zY*cF|@_5hY&(_AZb)04*tO4OedU^|wW0sy*5j=lBh&1i9a?X;&P4n&c8~10+a;|jT z>`CO3Gh;=Q%^i-)?HK>53=PCYDHgBE(hCFiV3~^X95)O6b=gYc9x7v>AW*N#)87H) zp|S%h;N*HueqJHWLuF_@lfQ{I89JZ6|K-&~Whh{3O?K+9pIJp&7I~;(Qq-fO^z%9;v8A=l*U0%2BR$eis;v(o#>6k~>G zv$H1??WmM^ZZNqg@^M|L1j!a7Mwvw2cD7g&t#i_H=p=1Gdc)HyZ^ zE9=m&iS{Q{K$DdE-dVcWLj_l}D!R``G#HvK9z*v;;`O8i2cdXkM3V7DC?0{Jt)dvg z6C^b7m|-!TDB_3H0M9Ak505mW-iWyYtlV6z#(^QbMpfWW9;y!3fuJTYOcVE#3|-?O zuK@@7`};Sq@w7Q|{Vv5p7C7#Q3+?opSczNsfx8HPZl6l#>vuq;KM|E|JWY^**0jDr z8;ej#G#Y$|cdZPf`{6}00gLxb88Hu+)0YFzgfB1A94^^lnI3))rzm>K6yCs^j01`E z8hpSKvS!Makg3Dc9&GXRtpno5fv`WBxnt&1h;@SjW2?tOI~xsEo`^;v+wby1IIRsam^q1Ps8dMr=Wkmj@Th^x$NbJXTyw}4(ahgsZ+y$vA$}(bKC2hGN zVHuw>x#ZI~t~=lQ(fcaYcRj)N*D-k1jX)xu=HdR6cIU9udfe*lA9V2c|19vb9vRUg zqkcQNun+Bix*ef!%jwp}C)uFB?9Y<@lTZ3iVNz=(u4_nI5RJ6`q`Q*S^a}vy-HLlw zxD};K2gw%`WVLlgV{$p9zmcB#^`HNc4t4(tn@)C) zw`+#A+D`E@?U2?{3;B~x8R@8y%uR`#q;e!s_-zm>Z*8ssNPRuwEBlFgbe+f5hW z2vF*-PiHUvZEK$g&7uVJvzPxc%SBw+3P^bv#dX>QQ-Yw)@F z%Lin8PGntYhV`Uc0kIFls$RU*%EERf7^&gq{F3N4XQTk(AcT{POoR!^)*IMRyVl62 uB(uVIS=h4lL?~H7nAL=p@wd7(5+X9E%J2&t^n?C3#Qy_^*sF>iQ2+pvV^os> literal 0 HcmV?d00001 diff --git a/en/drafts/pages/businesscard.html b/en/drafts/pages/businesscard.html new file mode 100644 index 000000000..80205db43 --- /dev/null +++ b/en/drafts/pages/businesscard.html @@ -0,0 +1,304 @@ + + + + + + + + businesscard - Sipmann + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/drafts/pages/businesscard.html.gz b/en/drafts/pages/businesscard.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..07a9a502a35fbb8831bd807a35b82b732981d31b GIT binary patch literal 3058 zcmV@n=t7onQX@^;0yLF+15Es|#W{ zi6#z7oReL6LvVPqi{NJ*6NynU$C)5<;{1I1o%`6ahY}o68(RE+rEZ zMx?})R5Efh%>_+}0J>R-Ty#Ox7$?ctH>102{Kh;XlKu|Fd1BH2N5CobZnIRlQ-b`3%uM!vLQ_he>n~vgarTx z8BHs($_a&F#dI!CFk6D(=t2=#0o=(`yrMki;c~xvn)j{yfptH$ z?hmZ{N9d30LH#J@xkgbV&%& zf+iZcAr&dZF#DA8;QF{Wmf|p^Ni;%7-lO!kJ{IFFqA*nte*3-VsFq96-^mE|hs{AS z4sqv%Mso?n-ofDUqr?8e;HVC@;92NSGlH*yH+69#o?1W_8BR+G^`Z_EaK^I{`g}MX z)(55lN?@d)-Xg&n4bkU85VXO#84hVKM(Ds6#8Rp^g&-x_6^)~Ya;G@BjxwGnp__8Z zlG-?rdS4uGg33rruv7*tZZ|?2DQnuGxU0O z>B_s6)0qT~)}@T`t*Lh-QjEGWO-j*@j=+)k8lrz5FE40FrZ{U1=2D9N{czCB!1?XZ99l{;b{7-cH5q29~%-d!!5<;nfe$Ws5WV2~>0r86pGWJcA zxjR-h1O*HWC~-BlmsK{TH`ci1sa@I_Ig`@GNxs*Jqqq<<0 zSfLbya5o3ly9|;$(N8KST~$t2Pda`|rU?{wo&?a-Tq~ki(0V1^z2maoF?1WOXm)7H z$qb_zR?I+~GWO{S`e!l~>G2DatElRO0hB&f zzI(^Ee<|lHAgkgqRJqgSK`0bo9NXD|#?Ug45H#A|j;|ktZ}{<`7^I!O;|*0ynOn+r5*$#l0-bCL^vBArE>ei&vnE>vtVafW2^%$M3e4$bq}UGs0Ew8 z&6zbJJd}A+H9G1+*Sh*zq#1b-b5<2{?noO2#ywI{A;Qwfzvme-i`H`9dXL|djZYO$ z!((b`htdC^Kr;sU60*s5B7JAD9;{HAS|O1n+*Yg-@1Y9z9=iT5W%?0N9;!I7R?Tm> zl;^p^d8h)#OYs}qQlJ;hi=Uo9RDlvAw-m>F`SkLkN|W*hEZF8y^|lo1wL-j5h!0h? z43?xk-cqbL8tI{m1fisM>29{JP7qJ%LL)v@(In?gY$?^H!nuz?V?S5tFhy7TDLTcB zs8x^Jb(4Q{uUM!2Mn6IH!PDQ?FW%phe#{dpp<7KNS7&x$Pe`0e0ZSq|cbn;?CAU`u zOqxd}0i+20wY0Jg|C;GA#|(yq&^x-bJke_y%&1&$;`@A#lSpxm3%+xqHvS442nQJ# z0>wF#GzCRl=PrmQAYl>^BO=cw3i%?DG$x-$Mx5ecPTYjfsQX@U<;bov6@*iuOb1J2 zFjK(G#=WIO*EG;epn-n8c=ZxVu9L`{k_KAQ_%u@Jpx4ZTqFs<;mHgZ(79`Z~fXOgt z8^t&)h=A3!y}%l)RERVg^-k?#8bY5&7C{&+ldnWd0#ImhHKT-u;!3&06`9>-hwu49 zsa_DN_BQi45sF_!52ys;(SG6>*SMJBM=OTum8Hphk?H!6@CyV>-c6%O!zkgKO{2@QLFQ? zmnx%S1_aOYC3->7DLOZ@H20{!?xnYOIV^VV2mQnPd$sF?YgyV{?%FP?ZLq9vXPnE; zyKc2D*+Q@GaL_R0#;q!~t8$P1#AZpC;KORMtd#oVVuMx8$!NmWW-TzAaD7aWkxbdE zzAszQgJ92bM${V?75lW8X6SzVo=rX@2(^5Ar|)dRrJ>fwbo<4J3G&X1CD8v%GICKL>^_LC-c2m&Euy=I$^_6%c4<8TJx%x5*>Jh2FdBEYII0}dHu&9(~A6k$4?}d*;F(8OH+{1d%>S3h=9@4Yk^ z^X}Wu6=dhrAmDi-JNu~f^Qrr|cR1)h9=e0hyS+Q`WQK$5*C4O@x@QfvTlOWWyVr6y zq?n8_uo&_nS0}DskP+ynpE9DJx*a20XK($OD#D&p1K@TVis-Zg8yilL%yQBS0Op0^ zZpT=-gC-VNP=Sqc(~L{5_IkfT9qWsT4jP$flj}Qs=quD|{Y=7#ncj;Q7L_W5tqF*g zLJi_&?*}o13gBPz4&ihtKRdnGFL7xh%;Dx7x{5f7ihMBCtDuM!_D?e4!boc(K zV2qe5yL9ez;Y8ma?^+(!vnpeNw7-96CeY7FYyj7BP!Y;Kh&@2nW!U5{$}V<#4V zrF!2YvRC2be5(&SZlyCqW#-if)!5@%Q+p8x-;~O-3rKkkXH5LrPG$SH=?1AI`(eKZj~Tw7>>el8kq?ZCdhUZ z8*aCn*=)(&<0}zcmjUB~tSNIdV{P)?UmFDzmdB2Lb%3gG^q0B+0pi-g1*t0l0LMbt AmH+?% literal 0 HcmV?d00001 diff --git a/en/drafts/pages/services.html b/en/drafts/pages/services.html new file mode 100644 index 000000000..570240cea --- /dev/null +++ b/en/drafts/pages/services.html @@ -0,0 +1,304 @@ + + + + + + + + Services - Sipmann + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/drafts/pages/services.html.gz b/en/drafts/pages/services.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..4fd27d89a233b74b2609dbc1e5e37a8b6ed88952 GIT binary patch literal 3058 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 AoB#j- literal 0 HcmV?d00001 diff --git a/en/drafts/pages/servicos-pt.html b/en/drafts/pages/servicos-pt.html new file mode 100644 index 000000000..eb8f343a2 --- /dev/null +++ b/en/drafts/pages/servicos-pt.html @@ -0,0 +1,304 @@ + + + + + + + + Serviços - Sipmann + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/drafts/pages/servicos-pt.html.gz b/en/drafts/pages/servicos-pt.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..3b1e1caf036e45e5543f0d0f1396adc3f3a9b79c GIT binary patch literal 3065 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 Hp(_9Y=W5;T literal 0 HcmV?d00001 diff --git a/en/drafts/schedule-blog-post-with-powershell-and-pelican.html b/en/drafts/schedule-blog-post-with-powershell-and-pelican.html new file mode 100644 index 000000000..bbaafb931 --- /dev/null +++ b/en/drafts/schedule-blog-post-with-powershell-and-pelican.html @@ -0,0 +1,545 @@ + + + + + + + + Scheduling blog posts with Powershell and Pelican - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Scheduling blog posts with Powershell and Pelican

+
+ +
+
+ +
+

Hy folks, first time posting here on dev.to :). Recently I've been migrating some of my scripts from bash to PowerShell and I thought that would be a good time to code an automation script to publish posts on my personal blog. I host my blog with Github Pages and I use Pelican as a static site generator. The main problem I have with this toolkit, is the lack of scheduling posts. For those who are new to Pelican, the post system is similar to dev.to, we write the posts using Markdown and we have a Status tag to tell when the post is a draft or not.

+

The main idea of my script is, run through the Markdown files an check those who have Draft as status. Once I found any post, I start getting some info like the Date and the Slug. The Date part is a little tricky because we need to find the line, split the text and then parse it to do date comparisons. If the post date is lower then the current timespan I replace the Status: Draft tag and save the file. After that all we have to do is commit to git and let it go.

+
$postsPath = "E:\projetos\sipmann.github.io\content\";
+$files = Get-ChildItem $postsPath -File -Filter *.md
+
+<# Get the current datetime so we can compare with the psot date #>
+$now = Get-Date
+
+<# Set the current location, with this we can work with the git commands #>
+Set-Location $postsPath
+
+foreach($file in $files) {
+
+    <# Get's only posts with draft status #>
+    $isDraft = Get-Content ($postsPath + $file) | Where-Object { $_ -ccontains "Status: Draft" }
+
+    if ($isDraft) {
+
+        <# First we find the line with the date, then we get only the datetime and then parse it #>
+        $pubDate = [datetime]::parseexact(((Get-Content ($postsPath + $file) | Where-Object { $_ -Match "^Date:*" }) -split '\s+', 2)[1], 'yyyy-MM-dd HH:mm', $null)
+
+        <# TODO: Maybe call google and bing api to submit a new url #>
+        $slug = ((Get-Content ($postsPath + $file) | Where-Object { $_ -Match "^Slug:*" }) -split '\s+', 2)[1]
+
+        if ($now -ge $pubDate) {
+
+            <# Sets the content without the Draft status #>
+            ((Get-Content ($postsPath + $file)) -replace 'Status: Draft', '') | Set-Content ($postsPath + $file)
+
+            git add .
+            git commit -m ("New scheduled post: " + $file)
+            git push origin master
+        }
+    }
+}
+
+ +

Hope you find the script useful, and if you are interested in the other scripts I'm making with PowerShell, take a look at my github repo, still lacks many of my scripts, but it's there where I'll keep them updated. See ya.

+
+ + +
+
+

Translations:

+
    +
+
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/drafts/schedule-blog-post-with-powershell-and-pelican.html.gz b/en/drafts/schedule-blog-post-with-powershell-and-pelican.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..95002ded741061f34b0082195c711993b46a531e GIT binary patch literal 5674 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

i=|U%2|o||DGG})aoXg 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 Q{|Cwc0vXoSgp*_d0I*r>EdT%j literal 0 HcmV?d00001 diff --git a/en/drafts/script-de-inicializacao-raspberry-pt.html b/en/drafts/script-de-inicializacao-raspberry-pt.html new file mode 100644 index 000000000..d99aad6dc --- /dev/null +++ b/en/drafts/script-de-inicializacao-raspberry-pt.html @@ -0,0 +1,572 @@ + + + + + + + + Scripts de inicialização no raspberry pi - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ +
+ +
+
+
+
+
+ +
+
+
+

Scripts de inicialização no raspberry pi

+
+ +
+
+ +
+

Instalei essa semana o gitea no meu raspberry pi B + e queria iniciar ele no boot... Não sou profundo conhecedor de linux, então, logo não sabia como fazer isto da melhor forma. +As versões atuais do Raspbian utilizam o systemd para gerenciar os serviços e confesso que nunca havia utilizado o systemctl para nada.

+

Vamos começa criando um arquivo de serviço dentro da pasta /etc/systemd/system, vale ressaltar que a pasta system deve (em teoria) ser reservada para pacotes do sistema. +Vamos criar o arquivo com o nome gitea.service dentro da pasta antes mencionada. Abaixo podemos ver como ficou o arquivo e um detalhamento após ele.

+
[Unit]
+Description=Gitea Service
+After=network.target
+
+[Service]
+Type=simple
+User=root
+WorkingDirectory=/root/
+ExecStart=/root/gitea web
+Restart=on-abort
+
+

A composição do arquivo é bem simples, mas vamos a alguns detalhes. Type possui várias opções (simple, forking, oneshot), utilizamos simple uma vez que o nosso processo executara, permanecerá rodando e não executa um fork de processo. +Fork como acabo de comentar, deve ser utilizado caso o processo que for executando disparar mais processos. User irá definir o usuário do processo. WorkingDirectory definira onde o processo terá a sua base de execução, como o gitea esta localizada na pasta root, +aponto para lá. O ExecStart é bem simples e direto, deve chamar a execução do processo passando parametros caso seja necessário. O Restart é o que nos garantirá que o serviço permanecerá rodando caso haja algum imprevisto (exceto o fato de um usuário chamar o stop).

+

Salve o arquivo e vamos rodar um refresh para o SO perceber o novo serviço. Assim rodamos systemctl daemon-reload. Sempre que alterarmos um serviço ou criarmos um novo, este comando deve ser executado, caso contrário o próprio systemctl pode lhe alertar da necessidade. +Após reacarregar os serviços, vamos habilitar o serviço que criamos rodando systemctl enable gitea, feito isto temos alguns comandos uteis.

+
    +
  • systemctl start gitea
  • +
  • systemctl stop gitea
  • +
  • systemctl status gitea
  • +
+

O comando de status pode ser visto como exemplo abaixo.

+
● gitea.service - Gitea Service
+  Loaded: loaded (/etc/systemd/system/gitea.service; enabled; vendor preset: enabled)
+  Active: active (running) since Wed 2017-10-04 00:37:34 UTC; 52min ago
+Main PID: 1087 (gitea)
+  CGroup: /system.slice/gitea.service
+          └─1087 /root/gitea web
+
+Oct 04 00:38:31 gitserver gitea[1087]: [Macaron] 2017-10-04 00:38:31: Completed /explore/users 200 OK in 80.106173ms
+Oct 04 00:38:31 gitserver gitea[1087]: [Macaron] 2017-10-04 00:38:31: Started GET /img/favicon.png for 192.168.1.4
+Oct 04 00:38:31 gitserver gitea[1087]: [Macaron] [Static] Serving /img/favicon.png
+
+

Após estes processos, você pode reiniciar seu raspberry que o gitea irá subir e funcionar. Ressalto que, preste atenção tanto no WorkingDirectory quanto no ExecStart, no caso do gitea, ele utiliza o workingdir e a forma de start para saber onde irá largar os arquivos por padrão, então ou você configura ele com caminhos absolutos ou cuidar na forma de start (ao menos é o que consegui pegar até agora).

+

+
+ + +
+
+

Translations:

+
    +
+
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/drafts/script-de-inicializacao-raspberry-pt.html.gz b/en/drafts/script-de-inicializacao-raspberry-pt.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..c0b6947db519d242cbb8482598aa5e80d2f04171 GIT binary patch literal 6064 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ν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 literal 0 HcmV?d00001 diff --git a/en/feeds/all-en.atom.xml b/en/feeds/all-en.atom.xml new file mode 100644 index 000000000..13ff94dac --- /dev/null +++ b/en/feeds/all-en.atom.xml @@ -0,0 +1,813 @@ + +Sipmannhttps://www.sipmann.com/en/2020-12-21T13:30:00-03:00Monitoring MySQL restarts with PowerShell2020-12-21T13:30:00-03:002020-12-21T13:30:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-21:/en/monitoring-mysql-restarts-with-powershell.html<p>Hey folks, it's time for another PowerShell script. If you haven't seen the other ones, check the links below.</p> +<ul> +<li><a href="https://www.sipmann.com/en/monitoring-mysql-replication-with-powershell.html">Monitoring MySQL replication with PowerShell</a></li> +</ul> +<p>Well, this one it's a pretty simple script, but again, if your customer doesn't have a Zabbix server or doesn't allow you to setup one to …</p><p>Hey folks, it's time for another PowerShell script. If you haven't seen the other ones, check the links below.</p> +<ul> +<li><a href="https://www.sipmann.com/en/monitoring-mysql-replication-with-powershell.html">Monitoring MySQL replication with PowerShell</a></li> +</ul> +<p>Well, this one it's a pretty simple script, but again, if your customer doesn't have a Zabbix server or doesn't allow you to setup one to do the monitoring, a set of scripts can be handy. We start executing some basic query <code>SHOW GLOBAL STATUS LIKE 'Uptime'</code>, with that we'll get exactly what we're looking for.</p> +<p>If for some reason, the command fails (watch for the "global" variable called <code>$lastExitCode</code>), we send an e-mail telling you about that connection problem.</p> +<p>And then, we get to the part where we parse the value, this one is pretty similar to the parse we did on the first post about using PowerShell to monitor MySQL. But we basically look for the Value line, split it by space and then parse the second position to an integer. And then all we have to do is check if the uptime is lower than our threshold, if it is we send an e-mail.</p> +<div class="highlight"><pre><span></span><code><span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;maurio[at]sipmann.com&#39;</span> +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio[at]sipmann.com&#39;</span> +<span class="nv">$MysqlHost</span> <span class="p">=</span> <span class="s1">&#39;127.0.0.1&#39;</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;123&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-h</span> <span class="nv">$MysqlHost</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s2">&quot;SHOW GLOBAL STATUS LIKE &#39;Uptime&#39; \G&quot;</span><span class="p">)</span> + +<span class="cm">&lt;# Unable to execute the sql Command #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$lastExitCode</span> <span class="o">-eq</span> <span class="n">1</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Connection problem&#39;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;Connection problem on host ${MysqlHost}&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> + <span class="n">exit</span> +<span class="p">}</span> + +<span class="nv">$UpTime</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Value:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="cm">&lt;# If the uptime is lower then 20 minutes #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$UpTime</span> <span class="o">-lt</span> <span class="n">1200</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s2">&quot;MySQL Restarted&quot;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;MySQL host ${MysqlHost} restarted less than 20 minutes ago&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> +</code></pre></div> + +<p>This script (and the other ones I use) is available at my GitHub <a href="https://github.com/sipmann/PowerShellScripts">here</a>. Keep in mind that the ones on the GitHub repo, are a little different from here.</p>Changing a MySQL user password across multiple application instances without downtime2020-12-09T13:40:00-03:002020-12-09T13:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-09:/en/mysql-dual-password-functionality.html<p>Do you need to change the password of a MySQL user that it's being used in an application, and can't allow a single downtime? Well, MySQL 8.0.14 came with a feature called <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, with it you can change the password keeping the previous password as a …</p><p>Do you need to change the password of a MySQL user that it's being used in an application, and can't allow a single downtime? Well, MySQL 8.0.14 came with a feature called <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, with it you can change the password keeping the previous password as a kind of backup. That way you still can log in using the old password or can start using the new one. With that, the password change workflow it's the following.</p> +<p>1) Change password keeping the old one;</p> +<p>2) Deploy the new config to your app/cluster;</p> +<p>3) Discard the old password.</p> +<p>To change the password and keep the old one, you have the following command.</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">IDENTIFIED</span> <span class="k">BY</span> <span class="s1">&#39;new_password&#39;</span> <span class="n">RETAIN</span> <span class="n">CURRENT</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>To discard the old one, run the following.</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">DISCARD</span> <span class="n">OLD</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>And you are done. Hope you find it as useful as I :)</p>Apache Nifi JSON to SQL Replacing underscore2020-12-02T14:00:00-03:002020-12-02T14:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-02:/en/apache-nifi-json-to-sql-replacing-underscore.html<p>Recently I was doing some ETL with Apache NiFi. But after a few minutes of drawing my flow, I saw that the component ConvertJSONToSQL was replacing the underscore ('_') from the field name in the where condition (I was preparing an Update SQL). That was weird because, at the set …</p><p>Recently I was doing some ETL with Apache NiFi. But after a few minutes of drawing my flow, I saw that the component ConvertJSONToSQL was replacing the underscore ('_') from the field name in the where condition (I was preparing an Update SQL). That was weird because, at the set statement, the field name was kept intact. After some research, I found that the property (see bellow) <code>Translate Field Names</code> was responsible for that weird replacement.</p> +<p><img alt="Apache NiFi JSONToSQL config" src="/images/apache_nifi_jsontosql.png"></p> +<p>Before setting it to <strong>FALSE</strong>, be aware that the properties on your JSON data must match exactly the name of your fields.</p>Blocking a user on SQL Server based on a schedule2020-11-14T07:00:00-03:002020-11-14T07:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-11-14:/en/blocking-user-on-sql-server-based-on-schedule.html<p>Ok, some time ago, I've posted about how you can set limits to connections on SQL Server using the <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. But what if you can't use it? You always can block logins using a login trigger, but I don't like the idea of having selects running on every login …</p><p>Ok, some time ago, I've posted about how you can set limits to connections on SQL Server using the <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. But what if you can't use it? You always can block logins using a login trigger, but I don't like the idea of having selects running on every login. So I came across with a solution using a stored procedure, a table and the Agent.</p> +<p>The main idea is, store the time that a user must be blocked and using the Agent, disable or enable the user. Bellow you can see the table (the table is in Portuguese, but I have a few comment blocks to help you).</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">Id</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Startint block time */</span><span class="w"></span> +<span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Ending block time */</span><span class="w"></span> +<span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="k">DEFAULT</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="cm">/* 0 = unblocked, 1 = blocked */</span><span class="w"></span> +<span class="w"> </span><span class="k">PRIMARY</span><span class="w"> </span><span class="k">KEY</span><span class="w"> </span><span class="p">(</span><span class="n">Id</span><span class="p">)</span><span class="w"></span> +<span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="cm">/* Don&#39;t block the SA user, precautions, you know */</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_users</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">LoginName</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;sa&#39;</span><span class="p">));</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_hora_final_maior</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="n">HrInicio</span><span class="p">);</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_status_bloqueio</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">Bloqueado</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">));</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="k">SEQUENCE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">seq_HorariosBloqueio</span><span class="w"> </span><span class="k">START</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">INCREMENT</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>After creating the table, let's check the procedure that will handle the enabling/disabling the users. Be aware that on the procedure, I've set the database name where the table was stored, you can change it replacing the <code>DBATOOLS</code> text to the database name where you created the table.</p> +<div class="highlight"><pre><span></span><code><span class="k">IF</span><span class="w"> </span><span class="nf">OBJECT_ID</span><span class="p">(</span><span class="s1">&#39;dbo.sp_ValidarLogin&#39;</span><span class="p">)</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="k">NULL</span><span class="w"></span> +<span class="w"> </span><span class="k">EXEC</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;CREATE PROCEDURE dbo.sp_ValidarLogin AS RETURN 0;&#39;</span><span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="k">ALTER</span><span class="w"> </span><span class="k">PROC</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">sp_ValidarLogin</span><span class="w"></span> +<span class="k">AS</span><span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">);</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nf">CAST</span><span class="p">(</span><span class="nf">GETDATE</span><span class="p">()</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="cm">/* Block the ones that aren&#39;t blocked already and maches the time */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">&#39; DISABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Bloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> + + +<span class="w"> </span><span class="cm">/* Enable up who was blocked */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="s1">&#39; ENABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Unbloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="k">END</span><span class="p">;</span><span class="w"></span> +</code></pre></div> + +<p>Ok, so now all you have to do, is schedule a job to run that stored procedure from minute to minute. Again, the main idea is tell the procedure when a user must be blocked and when it'll be unblocked. </p> +<div class="highlight"><pre><span></span><code><span class="err"> -- Will block the user protheus from 10 AM till 15 PM</span> +<span class="err"> INSERT INTO dbo.HorariosBloqueio (Id, LoginName, HrInicio, HrTermino) VALUES (NEXT VALUE FOR seq_HorariosBloqueio, &#39;protheus&#39;, &#39;10:00:00&#39;, &#39;15:00:00&#39;);</span> +</code></pre></div>How to set columns on select using Entity Framework2020-10-28T19:00:00-03:002020-10-28T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-28:/en/select_specific_fields_with_efcore.html<p>So, you use Entity Framework Core, and you usually code your selects like the following, maybe you are getting too much data.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Running the query above, on my table, you'll get the following output, take a look …</p><p>So, you use Entity Framework Core, and you usually code your selects like the following, maybe you are getting too much data.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Running the query above, on my table, you'll get the following output, take a look at how many columns you are getting back from your database.</p> +<p><img alt="Screenshot with every single column" src="/images/ef_core_allcolumns.png"></p> +<p>In my case, I only care about the Title, PublishedData, and a small description. So to get back only these fields, we have a few options. In the first one, we'll set the fields and return them as a dynamic object, the second one, is to give the .NET a class to use. </p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + + <span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="k">new</span> <span class="p">{</span><span class="n">p</span><span class="p">.</span><span class="n">ProductID</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitPrice</span><span class="p">})</span> + <span class="c1">//.Select(p =&gt; new ProductDTO {p.ProductID, p.ProductName, p.UnitsInStock, p.UnitPrice})</span> + + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p><img alt="Screenshot with fewer columns and also fewer data size" src="/images/ef_core_less_columns.png"></p>Zabbix Running on Low Memory Mode2020-10-20T19:00:00-03:002020-10-20T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-20:/en/zabbix-running-on-low-memory-mode.html<p>Hey folks, another Zabbix post today. This one it's about increasing the Zabbix Server Cache. It's pretty common (if you have the default settings only) get a warning about your <code>Zabbix value cache running on low memory mode</code> at your dashboard or logs.</p> +<p><img alt="Zabbix Dashboard warning about the memory problem" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache graph 70% used" src="/images/zabbix_cache_filling.png"></p> +<p>To solve, go back to your Zabbix …</p><p>Hey folks, another Zabbix post today. This one it's about increasing the Zabbix Server Cache. It's pretty common (if you have the default settings only) get a warning about your <code>Zabbix value cache running on low memory mode</code> at your dashboard or logs.</p> +<p><img alt="Zabbix Dashboard warning about the memory problem" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache graph 70% used" src="/images/zabbix_cache_filling.png"></p> +<p>To solve, go back to your Zabbix config file (<code>zabbix_server.conf</code>) and look for the tag <em>CacheSize</em>. Uncomment it and set to a value bigger than 8M (8M it's the default value). In my case, we set a cache of 100M. After the change, restart the service.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: CacheSize</span> +<span class="c1"># Size of configuration cache, in bytes.</span> +<span class="c1"># Shared memory size for storing host, item and trigger data.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 128K-64G</span> +<span class="c1"># Default:</span> +<span class="na">CacheSize</span><span class="o">=</span><span class="s">100M #uncomment this line</span> +</code></pre></div> + +<p><img alt="Zabbix Dashboard resolved memory problem" src="/images/zabbix_low_memory_solved.png"></p> +<p>See ya folks.</p>Monitoring MySQL Replication Status with PowerShell2020-10-14T19:00:00-03:002020-10-14T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-14:/en/monitoring-mysql-replication-with-powershell.html<p>I've been migration some bash scripts that I have to PowerShell, and it's time to migrate a script that monitors the replication of a MySQL database. The credit for the original script goes to <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. It's a simple script where I seek a few tags/fields that we get from …</p><p>I've been migration some bash scripts that I have to PowerShell, and it's time to migrate a script that monitors the replication of a MySQL database. The credit for the original script goes to <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. It's a simple script where I seek a few tags/fields that we get from <code>SHOW SLAVE STATUS\G</code> command, the fields are. <code>Slave_IO_Running</code>, <code>Slave_SQL_Running</code>, and <code>Seconds_Behind_Master</code>. I still need to figure out the proper way to store/read variables like usernames and passwords, if you have any tips, feel free to even make a pull request (<a href="https://github.com/sipmann/PowerShellScripts">here</a>) at the git where I'll store some scripts.</p> +<div class="highlight"><pre><span></span><code><span class="cm">&lt;#</span> +<span class="cm"> Variables definition</span> +<span class="cm">#&gt;</span> +<span class="nv">$MaxSeconds</span> <span class="p">=</span> <span class="n">120</span> <span class="c"># Max seconds behind master allowed</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;&#39;</span> + +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> +<span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s1">&#39;SHOW SLAVE STATUS \G&#39;</span><span class="p">)</span> + +<span class="c">#Debug data</span> +<span class="c">#$data = Get-Content &#39;c:\temp\sampleresult.txt&#39;</span> + +<span class="cm">&lt;# Parse the data #&gt;</span> +<span class="nv">$IORunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_IO_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SQLRunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_SQL_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$LastErrNo</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Last_Errno&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SecondsBh</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Seconds_Behind_Master&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="k">If</span> <span class="p">(</span><span class="nv">$IORunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SQLRunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SecondsBh</span> <span class="o">-gt</span> <span class="nv">$MaxSeconds</span><span class="p">)</span> <span class="p">{</span> + <span class="nv">$MailBody</span> <span class="p">=</span> <span class="s1">&#39;&lt;h1&gt;Problema na replicação&lt;/h1&gt;&lt;br&gt;&#39;</span> + + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; IO Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$IORunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; SQL Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SQLRunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39;Seconds Behind: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SecondsBh</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; Last Err No: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$LastErrNo</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + + <span class="cm">&lt;# Send e-mail, maybe some telegram message here too #&gt;</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Problemas na replicação&#39;</span> <span class="n">-bodyAsHtml</span> <span class="nv">$MailBody</span> <span class="n">-Credential</span> <span class="p">(</span><span class="nb">Get-Credential</span><span class="p">)</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> <span class="k">Else</span> <span class="p">{</span> + <span class="nb">Write-Host</span> <span class="s2">&quot;Up and running&quot;</span> +<span class="p">}</span> +</code></pre></div>Microsoft Against Covid2020-10-03T19:00:00-03:002020-10-03T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-03:/en/microsoft-against-covid.html<p>Has your job been affected by covid? Well, last week I've posted on <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by …</p><p>Has your job been affected by covid? Well, last week I've posted on <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by covid pandemic. </p> +<p>To see more details about if you were eligible, access <a href="https://docs.microsoft.com/en-us/learn/certifications/skillingoffer">https://docs.microsoft.com/en-us/learn/certifications/skillingoffer</a>.</p>The power of PowerShell2020-09-21T19:00:00-03:002020-09-21T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-09-21:/en/the-power-of-powershell.html<p>As a long time Linux user, I've automated a few things with bash scripts and stayed away from PowerShell... I've moved to a Windows environment a few years ago and still, haven gave a shot to PS. But why not? I've made a few scripts to automate some tasks at …</p><p>As a long time Linux user, I've automated a few things with bash scripts and stayed away from PowerShell... I've moved to a Windows environment a few years ago and still, haven gave a shot to PS. But why not? I've made a few scripts to automate some tasks at a Protheus server.</p> +<p>I found the PS scripts being easy to read and understand. Bellow, we have a script to remove files filtering their extension (or no extension at all like the following script). </p> +<div class="highlight"><pre><span></span><code><span class="nb">Get-ChildItem</span> <span class="s2">&quot;C:\TOTVS\protheus_data\system&quot;</span> <span class="o">-File</span> <span class="n">-Filter</span> <span class="p">*.</span> <span class="p">|</span> <span class="nb">Move-Item</span> <span class="n">-Force</span> <span class="n">-Destination</span> <span class="p">{</span> + <span class="cm">&lt;# Diretory where the files will be moved. You can use Date formats to help name it #&gt;</span> + <span class="cm">&lt;# LastWriteTime proprtie from the current file #&gt;</span> + <span class="nv">$dir</span> <span class="p">=</span> <span class="s2">&quot;C:\bad_files\{0:yyyy\\MM\\dd}&quot;</span> <span class="o">-f</span> <span class="nv">$_</span><span class="p">.</span><span class="n">LastWriteTime</span> + <span class="nv">$null</span> <span class="p">=</span> <span class="n">mkdir</span> <span class="nv">$dir</span> <span class="n">-Force</span> + <span class="s2">&quot;$dir\</span><span class="p">$(</span><span class="nv">$_</span><span class="p">.</span><span class="n">Name</span><span class="p">)</span><span class="s2">&quot;</span> +<span class="p">}</span> +</code></pre></div> + +<p>Have you ever been in the need to remove files based on other file content? Bello a script where I read a file that has the names of files that I want to remove. </p> +<div class="highlight"><pre><span></span><code><span class="k">foreach</span><span class="p">(</span><span class="nv">$line</span> <span class="k">in</span> <span class="nb">Get-Content</span> <span class="p">.\</span><span class="n">Desktop</span><span class="p">\</span><span class="n">bad_files</span><span class="p">.</span><span class="n">txt</span><span class="p">)</span> <span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="nb">Test-Path</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">))</span> <span class="p">{</span> + <span class="nb">Remove-Item</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">)</span> + <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> + <span class="nb">echo </span><span class="nv">$line</span> <span class="p">+</span> <span class="s1">&#39; - File not found&#39;</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>And a bonus script to stop/start services (if you handle some Protheus Server, you know why I do that).</p> +<div class="highlight"><pre><span></span><code><span class="nv">$servicesNames</span> <span class="p">=</span> <span class="s1">&#39;app_main&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker1&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker2&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker3&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker4&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker5&#39;</span> + +<span class="nb">Write-host</span> <span class="s2">&quot;Stoping Services&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Stopping: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nv">$SrvPID</span> <span class="p">=</span> <span class="p">(</span><span class="nb">get-wmiobject</span> <span class="n">win32_service</span> <span class="p">|</span> <span class="nb">where </span><span class="p">{</span> <span class="nv">$_</span><span class="p">.</span><span class="n">name</span> <span class="o">-eq</span> <span class="nv">$srv</span><span class="p">}).</span><span class="n">processID</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PID: &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> + + <span class="cm">&lt;# Force if the proccess is stucked #&gt;</span> + <span class="nb">Stop-Process</span> <span class="nv">$SrvPID</span> <span class="n">-Force</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PDI &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> <span class="p">+</span> <span class="s2">&quot; stopped&quot;</span> +<span class="p">}</span> + + +<span class="nb">Write-host</span> <span class="s2">&quot;Starting Services&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Starting: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nb">Start-Service</span> <span class="nv">$srv</span> +<span class="p">}</span> +</code></pre></div> + +<p>Do you have any automated script? Share with us :)</p>Top Level Statement in C# 92020-07-29T19:00:00-03:002020-07-29T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-29:/en/top_level_statement_csharp_9.html<p>Hey folks, I'm coming along to tell you a few things about the new feature of C# 9. Every time you want to start a new project, you always have the same Main File, with the same structure. At the next version of C# (version 9), we'll have a new …</p><p>Hey folks, I'm coming along to tell you a few things about the new feature of C# 9. Every time you want to start a new project, you always have the same Main File, with the same structure. At the next version of C# (version 9), we'll have a new feature called <code>Top Level Statement</code>. With that, we'll be able to code our app without any namespace/class/public void static main structure. Take a look at the code below.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="s">&quot;Hello World!&quot;</span><span class="p">);</span> +</code></pre></div> + +<p>It looks pretty simple, but with this, you can play around with your code, and even code a simple/tiny Web API. To start playing with the new features, firstly download the <a href="https://dotnet.microsoft.com/download/dotnet/5.0">.net 5 SDK</a> and change your <code>.csproj</code> file to target the .net 5 and language preview like bellow.</p> +<div class="highlight"><pre><span></span><code><span class="nt">&lt;Project</span> <span class="na">Sdk=</span><span class="s">&quot;Microsoft.NET.Sdk&quot;</span><span class="nt">&gt;</span> + <span class="nt">&lt;PropertyGroup&gt;</span> + <span class="nt">&lt;OutputType&gt;</span>Exe<span class="nt">&lt;/OutputType&gt;</span> + <span class="nt">&lt;TargetFramework&gt;</span>net5.0<span class="nt">&lt;/TargetFramework&gt;</span> + <span class="nt">&lt;LangVersion&gt;</span>preview<span class="nt">&lt;/LangVersion&gt;</span> + <span class="nt">&lt;/PropertyGroup&gt;</span> +<span class="nt">&lt;/Project&gt;</span> +</code></pre></div> + +<p>And you're ready to play with the awesome features available in the preview. Let's code a way to get the image of the day from NASA API and print the Picture of the Day. No awesome code here, it's really a way to show how simple a simple call could be. After here, why not save the image in a file? Maybe send the file over telegram?</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Text.Json</span><span class="p">;</span> + +<span class="kt">var</span> <span class="n">API</span> <span class="p">=</span> <span class="s">&quot;https://api.nasa.gov/planetary/apod?hd=true&amp;api_key=DEMO_KEY&quot;</span><span class="p">;</span> +<span class="kt">var</span> <span class="n">cli</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + +<span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">cli</span><span class="p">.</span><span class="n">GetAsync</span><span class="p">(</span><span class="n">API</span><span class="p">);</span> +<span class="kt">var</span> <span class="n">data</span> <span class="p">=</span> <span class="n">JsonSerializer</span><span class="p">.</span><span class="n">Deserialize</span><span class="p">&lt;</span><span class="n">NasaApi</span><span class="p">&gt;(</span><span class="k">await</span> <span class="n">response</span><span class="p">.</span><span class="n">Content</span><span class="p">.</span><span class="n">ReadAsStringAsync</span><span class="p">());</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">Url</span><span class="p">);</span> +</code></pre></div> + +<p>That's it for today folks. Keep an eye open for the awesome features C# 9 will bring to us, there's plenty more features already available.</p>Zabbix poller processes more than 75%2020-07-02T19:00:00-03:002020-07-02T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-02:/en/zabbix-poller-processes-more-than-75.html<p>Hey folks, this is the third post about tweaking the Zabbix configurations. All changes that I've suggested here were based on a Zabbix Server with 50+ hosts. Another thing that can happen to your server, it's the poller get overwhelmed by the amount of servers that need to be polled …</p><p>Hey folks, this is the third post about tweaking the Zabbix configurations. All changes that I've suggested here were based on a Zabbix Server with 50+ hosts. Another thing that can happen to your server, it's the poller get overwhelmed by the amount of servers that need to be polled plus the ones that are not responding. Bellow two images where you can see the log and the graphic where you can see the usage percent. </p> +<p><img alt="Dashboard log about the poller processes" src="/images/zabbix_pooler.png"></p> +<p><img alt="Graph showing the utilization percent of each collector" src="/images/zabbix_pooler_3.png"></p> +<p>To solve, let's go back to the <code>zabbix_server.conf</code> file and find two variables, <code>StartPollers</code> and <code>StartPollersUnreachable</code>. Increase them as needed. There's no magic number, you must see what works for you. But keep in mind that the <code>StartPollersUnreachable</code> is responsible for that host that can't be "reached" (of course) and will hold your poller more time.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPollers</span> +<span class="c1"># Number of pre-forked instances of pollers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollers</span><span class="o">=</span><span class="s">20</span> + +<span class="c1">#...</span> + +<span class="c1">### Option: StartPollersUnreachable</span> +<span class="c1"># Number of pre-forked instances of pollers for unreachable hosts (including IPMI and Java).</span> +<span class="c1"># At least one poller for unreachable hosts must be running if regular, IPMI or Java pollers</span> +<span class="c1"># are started.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollersUnreachable</span><span class="o">=</span><span class="s">5</span> +</code></pre></div> + +<p>After the change, restart the server and wait a few moments and take a look again at your dashboard. Bellow the effect that I've got.</p> +<p><img alt="Graph showing the new utilization percent of the processes after the changes" src="/images/zabbix_pooler_4.png"></p>Monitoring a Website heath with Azure Functions2020-06-22T19:00:00-03:002020-06-22T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-06-22:/en/monitoring-website-heath-with-azure-functions.html<p>Sometimes you get your self in need to monitor a website's health or it's content for changes. Of course, there's plenty of options out there, but for the sake of curiosity, let's code our own to see what we can do. First things first. Everything you'll see here, you can …</p><p>Sometimes you get your self in need to monitor a website's health or it's content for changes. Of course, there's plenty of options out there, but for the sake of curiosity, let's code our own to see what we can do. First things first. Everything you'll see here, you can achieve with the <a href="https://azure.microsoft.com/free/">free tier</a> of azure.</p> +<p>The main idea of our app will be to monitor website health (status code). To create a new Azure Function Project, follow the steps below.</p> +<p><img alt="Steps to create a azure function project" src="/images/azure_functions.gif"></p> +<p>After creating the project, you'll have a few files. Open your main file and start coding. The main file will have a function called <code>Run</code> and you can code your request method. I've created an <code>async</code> method to make the request and log the output at the console. The full code you can see below.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Linq</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Threading.Tasks</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs.Host</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Extensions.Logging</span><span class="p">;</span> + +<span class="k">namespace</span> <span class="nn">Sipmann.CheckMySite</span> +<span class="p">{</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">class</span> <span class="nc">HttpCheck</span> + <span class="p">{</span> + + <span class="k">private</span> <span class="k">static</span> <span class="k">async</span> <span class="n">Task</span> <span class="nf">GetTask</span><span class="p">(</span><span class="kt">string</span> <span class="n">url</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="kt">var</span> <span class="n">request</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpRequestMessage</span><span class="p">(</span><span class="n">HttpMethod</span><span class="p">.</span><span class="n">Get</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span> + + <span class="kt">var</span> <span class="n">client</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + <span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">client</span><span class="p">.</span><span class="n">SendAsync</span><span class="p">(</span><span class="n">request</span><span class="p">);</span> + + <span class="k">if</span> <span class="p">(</span><span class="n">response</span><span class="p">.</span><span class="n">IsSuccessStatusCode</span><span class="p">)</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="k">else</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} não esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> + +<span class="na"> [FunctionName(&quot;HttpCheck&quot;)]</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">void</span> <span class="nf">Run</span><span class="p">([</span><span class="n">TimerTrigger</span><span class="p">(</span><span class="s">&quot;0 */5 * * * *&quot;</span><span class="p">)]</span><span class="n">TimerInfo</span> <span class="n">myTimer</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="kt">var</span> <span class="n">urls</span> <span class="p">=</span> <span class="k">new</span><span class="p">[]{</span><span class="s">&quot;https://www.sipmann.com&quot;</span><span class="p">,</span> <span class="s">&quot;https://www.canezecanez.com.br&quot;</span><span class="p">};</span> + + <span class="c1">// Start every request and wait for them all to complete</span> + <span class="n">Task</span><span class="p">.</span><span class="n">WaitAll</span><span class="p">(</span><span class="n">urls</span><span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">url</span> <span class="p">=&gt;</span> <span class="n">GetTask</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">log</span><span class="p">)).</span><span class="n">ToArray</span><span class="p">());</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;Finalizou a fila&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>Now you can enhance the function and maybe send some alerts like a Telegram message when one of your sites went down.</p>Azure Data Fundamentals certification with 80% discount2020-06-09T12:30:00-03:002020-06-09T12:30:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-06-09:/en/azure-data-fundamentals-certification-80-discount.html<p>Hey folks, if you want to achieve some certification this year, keep an eye open for vouchers. A few months ago, Oracle released a set of free courses with certifications. Now it's Microsoft time. Microsoft is updating they're certifications and we have a voucher of 80% discount using the coupon …</p><p>Hey folks, if you want to achieve some certification this year, keep an eye open for vouchers. A few months ago, Oracle released a set of free courses with certifications. Now it's Microsoft time. Microsoft is updating they're certifications and we have a voucher of 80% discount using the coupon <strong>DP900Norfolk</strong> at the checkout of the beta certification DP-900. </p> +<p>Be aware that this certification is in beta and the result won't be instantly available as the regular ones. Access the following link and schedule your exam. <a href="https://docs.microsoft.com/pt-br/learn/certifications/exams/dp-900" target="_blank">https://docs.microsoft.com/pt-br/learn/certifications/exams/dp-900</a>.</p> +<p><strong>Update:</strong> There is a 80% voucher also for <a href="https://docs.microsoft.com/en-us/learn/certifications/azure-ai-fundamentals" target="_blank">https://docs.microsoft.com/en-us/learn/certifications/azure-ai-fundamentals</a>. Voucher: <strong>AI900Saratoga</strong></p>Zabbix ICMP pinger processes more than 75%2020-05-25T16:00:00-03:002020-05-25T16:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-05-25:/en/zabbix-icmp-pinger-processes-more-than-75.html<p>So your monitoring sytems have grown and your zabbix started loggin "Zabbix icmp pinger processes more than 75% busy" at the dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>All you have to do is open your config file (<code>/etc/zabbix/zabbix_server.conf</code>) and find the a tag named <code>StartPingers</code>. It'll be commented by default. Uncomment it …</p><p>So your monitoring sytems have grown and your zabbix started loggin "Zabbix icmp pinger processes more than 75% busy" at the dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>All you have to do is open your config file (<code>/etc/zabbix/zabbix_server.conf</code>) and find the a tag named <code>StartPingers</code>. It'll be commented by default. Uncomment it and set it's value to something like 3 or 4. It should solve your problem.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPingers</span> +<span class="c1"># Number of pre-forked instances of ICMP pingers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="nv">StartPingers</span><span class="o">=</span><span class="m">4</span> +</code></pre></div> + +<h2>How many Pingers do I need?</h2> +<p>Well, there is no exact answer to this. If you set it too high, you'll be wasting resources. The best way to solve, it's increasing them as soon as you notice the percentage growing.</p>Zabbix Server Out of Memory2020-02-27T19:00:00-03:002020-02-27T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-02-27:/en/zabbix-server-out-of-memory-crash.html<p>Do you have a crashing Zabbix Server and looking through the log <code>/var/log/zabbix/zabbix_server.log</code> you see the following out of memory message?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c,line …</code></pre></div><p>Do you have a crashing Zabbix Server and looking through the log <code>/var/log/zabbix/zabbix_server.log</code> you see the following out of memory message?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: please increase CacheSize configuration parameter +</code></pre></div> + +<p>Besides the clear solution to the error, that's a common issue on servers that have a few monitoring items on it (servers, switches, firewalls, databases, etc...). To solve, go to your zabbix_server.conf and look for the CacheSize property and set it to a higher value. Its default should be 8M. At a customer that has somewhere between 4 servers, 7 firewalls/appliances, and a few other things, a 32M did the job, but you can set up to 8G.</p> +<p>See ya folks.</p>Flutter + firebase auth crashing2019-10-03T19:00:00-03:002019-10-03T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-10-03:/en/flutter_with_firebase_auth_crashing.html<p>Hey Folks, recently I've started learning <a href="https://flutter.dev/">Flutter</a> and right after a TODO List, I tried a Firebase integration. But as soon as I started setting the dependencies, my app stopped opening... just a crash. After a few logs digging, I've found the following log.</p> +<div class="highlight"><pre><span></span><code>AndroidRuntime: FATAL EXCEPTION: main +AndroidRuntime: Process …</code></pre></div><p>Hey Folks, recently I've started learning <a href="https://flutter.dev/">Flutter</a> and right after a TODO List, I tried a Firebase integration. But as soon as I started setting the dependencies, my app stopped opening... just a crash. After a few logs digging, I've found the following log.</p> +<div class="highlight"><pre><span></span><code>AndroidRuntime: FATAL EXCEPTION: main +AndroidRuntime: Process: com.example.diadocasal, PID: <span class="m">13672</span> +AndroidRuntime: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/util/ArrayMap<span class="p">;</span> +AndroidRuntime: at com.google.android.gms.internal.measurement.zzca.&lt;clinit&gt;<span class="o">(</span>Unknown Source:60<span class="o">)</span> +AndroidRuntime: at com.google.android.gms.internal.measurement.zzcm.zzr<span class="o">(</span>Unknown Source:7<span class="o">)</span> +AndroidRuntime: at com.google.android.gms.measurement.internal.zzfj.&lt;init&gt;<span class="o">(</span>Unknown Source:23<span class="o">)</span> +</code></pre></div> + +<p>Notice the "NoClassDefFound" of an ArrayMap. To solve that I did the following changes to the files:</p> +<div class="highlight"><pre><span></span><code><span class="c1">//build.gradle file</span> + <span class="n">ext</span><span class="p">.</span><span class="na">kotlin_version</span> <span class="o">=</span> <span class="err">&#39;</span><span class="mf">1.3.20</span><span class="err">&#39;</span> +<span class="o">[</span><span class="p">...</span><span class="o">]</span> + <span class="n">dependencies</span> <span class="p">{</span> + <span class="n">classpath</span> <span class="err">&#39;</span><span class="n">com</span><span class="p">.</span><span class="na">android</span><span class="p">.</span><span class="na">tools</span><span class="p">.</span><span class="na">build</span><span class="p">:</span><span class="n">gradle</span><span class="p">:</span><span class="mf">3.3.0</span><span class="err">&#39;</span> <span class="c1">// gradle version</span> +</code></pre></div> + +<div class="highlight"><pre><span></span><code><span class="c1">;gradle.properties file</span> +<span class="na">org.gradle.jvmargs</span><span class="o">=</span><span class="s">-Xmx1536M ;mine have just this line at first</span> +<span class="na">android.useAndroidX</span><span class="o">=</span><span class="s">true ; uses androidX instead of the default support library</span> +<span class="na">android.enableJetifier</span><span class="o">=</span><span class="s">true ; uses jetpack libraries</span> +<span class="na">android.enableR8</span><span class="o">=</span><span class="s">true ; the new code shriker</span> +</code></pre></div> + +<p>After that, voilà, app up and running.</p>Removing a user from SQL Server database who owns a schema2019-09-06T07:00:00-03:002020-10-21T18:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-09-06:/en/removing-user-from-sql-server-database.html<p>Your customer urge you to drop a user from the MsSQL Server database, but you stuck with the following related error:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>That means that the user owns one or more shcemas of your database. If …</p><p>Your customer urge you to drop a user from the MsSQL Server database, but you stuck with the following related error:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>That means that the user owns one or more shcemas of your database. If you don't have access to the SSMS to see which schema or objects the user owns, the following SQL should do the job.</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">schemas</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">principal_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="p">,</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">xtype</span><span class="w"> </span><span class="n">Tipo</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">sysobjects</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">uid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> +</code></pre></div> + +<p>Once you have the objects/schemas owned by the user, you can change them with the following SQL (schema change sample):</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datareader</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"> </span><span class="c1">-- new owner username</span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datawriter</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>Then you're ready to drop the user <code>DROP USER [username]</code></p> +<h2>How to list all the schemas and it's owners?</h2> +<p>Here's a script to list schemas and it's owners.</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +<span class="k">SELECT</span><span class="w"></span> +<span class="w"> </span><span class="nf">schema_name</span><span class="p">(</span><span class="nf">schema_id</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">schemaname</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="nf">user_name</span><span class="p">(</span><span class="n">schm</span><span class="p">.</span><span class="n">principal_id</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">username</span><span class="p">,</span><span class="w"> </span><span class="o">*</span><span class="w"></span> +<span class="k">FROM</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">schemas</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">schm</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div>Limiting Connection Resources on SQL Server2019-08-12T12:00:00-03:002019-08-12T12:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-08-12:/en/limiting-connection-resources-sql-server.html<p>Have you ever suffered from a slow SQLServer database? Someone love to run that heavy query in the database? Resource Governor to the rescue. You can set a few rules on how users (connections actually) will use the server/database resources based on a few things.</p> +<p>First things first, if …</p><p>Have you ever suffered from a slow SQLServer database? Someone love to run that heavy query in the database? Resource Governor to the rescue. You can set a few rules on how users (connections actually) will use the server/database resources based on a few things.</p> +<p>First things first, if you don't have DAC enabled, enable it now. Dealing with resource governor can lock you out of the database and leave you without action (almost... you can start the server with -c -m -f).</p> +<p>Now to understand how Resource Governor works, we have a few keywords <code>resource pool</code>, <code>workload group</code> e <code>Classifier Function</code>.</p> +<p><img alt="Pool Sample" src="/images/sql-pool.png"></p> +<h2>Resource Pool</h2> +<p>First, we have the Resource Pool, with is the bigger resource group that we have the ability to manage. With it, we can set a few things like: <code>MIN_CPU_PERCENT</code>, <code>MAX_CPU_PERCENT</code>, <code>MIN_MEMORY_PERCENT</code>, <code>MAX_MEMORY_PERCENT</code>, <code>MIN_IOPS_PER_VOLUME</code>, and <code>MAX_IOPS_PER_VOLUME</code>.</p> +<p>Be aware that the <code>MAX_CPU_PERCENT</code> will just "works" when there is another connection with a higher priority, otherwise it will use what is available. Let's create a pool.</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">POOL</span><span class="w"> </span><span class="o">[</span><span class="n">SpreadSheet</span><span class="o">]</span><span class="w"></span> +<span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">MIN_CPU_PERCENT</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">MAX_CPU_PERCENT</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">MIN_MEMORY_PERCENT</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">MAX_MEMORY_PERCENT</span><span class="o">=</span><span class="mi">20</span><span class="w"></span> +<span class="p">);</span><span class="w"></span> +</code></pre></div> + +<p>## Workload Group</p> +<p>Then we have a workload group that "works" inside a pool, so you can have another granularity on how you can split your resources. Again, we have a few options: <code>IMPORTANCE</code>, <code>REQUEST_MAX_CPU_TIME_SEC</code>, <code>REQUEST_MAX_MEMORY_GRANT_PERCENT</code>, <code>GROUP_MAX_REQUESTS</code>.</p> +<p>The <code>IMPORTANCE</code> set guesses what... the importance of that workload inside the pool, you can set LOW, MEDIUM, HIGH. GROUP_MAX_REQUESTS sets how many requests can run at the same time inside that workload (0 will set as NO LIMIT)</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="n">WORKLOAD</span><span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="o">[</span><span class="n">DepartmentA</span><span class="o">]</span><span class="w"> </span> +<span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">GROUP_MAX_REQUESTS</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">IMPORTANCE</span><span class="o">=</span><span class="n">LOW</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">REQUEST_MAX_CPU_TIME_SEC</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="c1">-- Time running/using CPU</span> +<span class="w"> </span><span class="n">REQUEST_MAX_MEMORY_GRANT_PERCENT</span><span class="o">=</span><span class="mi">15</span><span class="w"></span> +<span class="p">)</span><span class="w"> </span><span class="k">USING</span><span class="w"> </span><span class="o">[</span><span class="n">SpreadSheet</span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="c1">-- pool name here</span> +</code></pre></div> + +<h2>Classifier Function</h2> +<p>This is where everything begins... This is the entry point where you should set the group name. It's a function that will run for every new connection so be aware that if your function runs lots of queries or some heavy stuff... that time will be added to the connection handshake. If the function returns NULL or a group name that doesn't exist, the 'default' group will be used... Yes, there is a default workload group where everything runs where there's no classifier.</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="n">fnClassWorkloadGovernor</span><span class="p">()</span><span class="w"> </span> +<span class="k">RETURNS</span><span class="w"> </span><span class="n">SYSNAME</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="n">SCHEMABINDING</span><span class="w"> </span> +<span class="k">AS</span><span class="w"> </span> +<span class="k">BEGIN</span><span class="w"> </span> +<span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="nf">APP_NAME</span><span class="p">()</span><span class="w"> </span><span class="ow">LIKE</span><span class="w"> </span><span class="s1">&#39;%Excel%&#39;</span><span class="w"></span> +<span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="s1">&#39;DepartmentA&#39;</span><span class="w"></span> + +<span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="nf">HOST_NAME</span><span class="p">()</span><span class="w"> </span><span class="ow">LIKE</span><span class="w"> </span><span class="s1">&#39;%THAT_MACHINE_OR_APP_SERVER%&#39;</span><span class="w"></span> +<span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="s1">&#39;LowPriority&#39;</span><span class="w"></span> + +<span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="k">NULL</span><span class="w"></span> +<span class="k">END</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="n">CLASSIFIER_FUNCTION</span><span class="o">=</span><span class="n">dbo</span><span class="p">.</span><span class="n">fnClassWorkloadGovernor</span><span class="p">);</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">RECONFIGURE</span><span class="p">;</span><span class="w"></span> +</code></pre></div> + +<p>There you go... now you have a fully working resource governor, but look out that If you want to delete that classifier function, first you have to remove it from the resource governor (look the SCHEMABINDING at the create up there).</p> +<p>To disable Resource Governor</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="n">CLASSIFIER_FUNCTION</span><span class="o">=</span><span class="k">null</span><span class="p">)</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">RECONFIGURE</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="n">DISABLE</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div>Using git hooks to easy your life2019-07-30T20:00:00-03:002019-07-30T20:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-07-30:/en/using_git_hooks_easy_your_life.html<p>Hey folks, it's been a time since my last post. In the meantime, I moved to another state, changed job, and started learning new kinds of stuff. Today I would like to share one thing that I usually do with my small git projects. Git has many cool features, git …</p><p>Hey folks, it's been a time since my last post. In the meantime, I moved to another state, changed job, and started learning new kinds of stuff. Today I would like to share one thing that I usually do with my small git projects. Git has many cool features, git hooks were one of them. I'll talk about the pre-commit hook today.</p> +<p>Let's say that, for some reason, you don't have a CI tool/server running after every commit and you want to enforce that every developer runs the tests before every commit? Git pre-commit to the rescue. You can code the hooks with shell, ruby, python, and I could be wrong, but even PHP would work. pre-commit is a client-side hook (we have server side too) and he's located inside the <cite>.git/hooks</cite> folder. Let's jump to the code... Create a file called 'pre-commit' inside that folder with the following code.</p> +<div class="highlight"><pre><span></span><span class="ch">#!/bin/bash</span> +npm <span class="nb">test</span> <span class="c1"># assuming you&#39;re using it inside a nodeJS project</span> +</pre></div> +<p>Don't forget to make the script executable!! Now break your test and try to commit. That's easy but can save you from breaking the tests at the main CI/Travis/Codeship/etc and being notified by email :). Why not even validate the lint of your project or check if the coverage doesn't fall? Does your team/company have a patter for commit messages? No problem, there is a hook called <cite>commit-msg</cite> that you can use to validate your message.</p> +Microservices with NodeJS, Express.js and RabbitMQ Part 22018-04-13T13:00:00-03:002018-04-13T13:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-04-13:/en/microservices_nodejs_express_rabbitmq_part_2.html<p>If you haven't read the <a class="reference external" href="https://www.sipmann.com/microservices_nodejs_express_rabbitmq_part_1-en.html">part 1</a> go ahead and read it... It can be useful :). Or if for some reason you want to start now, you can grab the project where we stopped <a class="reference external" href="https://github.com/sipmann/imagecompacter/releases/tag/v1">here</a> and get along. On this part, we'll implement the RabbitMQ queue and see how we …</p><p>If you haven't read the <a class="reference external" href="https://www.sipmann.com/microservices_nodejs_express_rabbitmq_part_1-en.html">part 1</a> go ahead and read it... It can be useful :). Or if for some reason you want to start now, you can grab the project where we stopped <a class="reference external" href="https://github.com/sipmann/imagecompacter/releases/tag/v1">here</a> and get along. On this part, we'll implement the RabbitMQ queue and see how we can get the best of our app and server with that.</p> +<p>Before we began coding, let's understand why we are going to use RabbitMQ if what we have now works? If you check again, you'll see how long it takes to answer the request with the optimized image. It takes a few seconds, so imagine an online service with thousands of request to optimize images (like <a class="reference external" href="https://tinypng.com/">TinyPNG</a>) how long is it gonna take to answer every request? How much of your server is it gonna take? With only one service running, probably the server will crash.</p> +<p>With a queue, we can schedule the requests so we can use the amount of memory and processor that our server has, without taking more than we can. It's better to take a few seconds to answer the request then throw some error to the user. Want more? With RabbitMQ we can see how the queue is doing and we can add more consumers (workers) to it and get things done quicker and distribute the job.</p> +<p>First of all, we need an up and running Rabbit server, for the sake of simplicity, I'll use a Docker container with it inside.</p> +<div class="highlight"><pre><span></span>docker run -d --name rabbit -p <span class="m">5672</span>:5672 -p <span class="m">8080</span>:15672 rabbitmq:3-management +</pre></div> +<p>You can see that we're running the rabbitmq:3-management image, which provides us a web interface to see how things are going. After that, if you look at our code you'll see that all the job is made at the '/upload' route, and that's what we'll change.</p> +<p>First, we need to understand what we need from RabbitMQ. We need something that, we send an image to a queue and get an optimized image back from that. There is a name for that, is RPC (remote procedure call) and there are two ways of doing this with rabbit. Both the ways you can see on their tutorial page. We'll use the approach that uses a global channel whose id is randomly generated (you'll use the name 'amq.rabbitmq.reply-to' but the rabbit will do the job).</p> +<p>Let's start importing the library, defining a few variables and defining a init function that will establish a connection with the rabbit server and create our RPC queue. The RPC queue it's where we'll receive the answer from the consumer (our worker).</p> +<div class="highlight"><pre><span></span><span class="c1">//import the library</span> +<span class="kr">const</span> <span class="nx">amqplib</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;amqplib&#39;</span><span class="p">);</span> + +<span class="c1">//queue channel</span> +<span class="kd">let</span> <span class="nx">channel</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span> +<span class="c1">//queue name</span> +<span class="kr">const</span> <span class="nx">QUEUE</span> <span class="o">=</span> <span class="s1">&#39;optimizeimg&#39;</span><span class="p">;</span> + +<span class="c1">//...</span> + +<span class="kd">function</span> <span class="nx">init</span><span class="p">()</span> <span class="p">{</span> + <span class="k">return</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;amqplib&#39;</span><span class="p">).</span><span class="nx">connect</span><span class="p">(</span><span class="s1">&#39;amqp://localhost&#39;</span><span class="p">)</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">conn</span> <span class="p">=&gt;</span> <span class="nx">conn</span><span class="p">.</span><span class="nx">createChannel</span><span class="p">())</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">ch</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">channel</span> <span class="o">=</span> <span class="nx">ch</span><span class="p">;</span> + + <span class="c1">//this queue is a &quot;Direct reply-to&quot; read more at the docs</span> + <span class="c1">//When some msg comes in, we &quot;emit&quot; a message to the proper &quot;correlationId&quot; listener</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">consume</span><span class="p">(</span><span class="s1">&#39;amq.rabbitmq.reply-to&#39;</span><span class="p">,</span> <span class="nx">msg</span> <span class="p">=&gt;</span> <span class="nx">eventEmitter</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="nx">msg</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">correlationId</span><span class="p">,</span> <span class="nx">msg</span><span class="p">.</span><span class="nx">content</span><span class="p">),</span> <span class="p">{</span><span class="nx">noAck</span><span class="o">:</span> <span class="kc">true</span><span class="p">});</span> + <span class="p">});</span> +<span class="p">}</span> + +<span class="c1">//Random id generator</span> +<span class="kd">function</span> <span class="nx">randomid</span><span class="p">()</span> <span class="p">{</span> + <span class="k">return</span> <span class="k">new</span> <span class="nb">Date</span><span class="p">().</span><span class="nx">getTime</span><span class="p">().</span><span class="nx">toString</span><span class="p">()</span> <span class="o">+</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">().</span><span class="nx">toString</span><span class="p">()</span> <span class="o">+</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">().</span><span class="nx">toString</span><span class="p">();</span> +<span class="p">}</span> + +<span class="nx">app</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span><span class="s1">&#39;/upload&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="kd">let</span> <span class="nx">img</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">files</span><span class="p">.</span><span class="nx">image</span><span class="p">;</span> + + <span class="kd">let</span> <span class="nx">id</span> <span class="o">=</span> <span class="nx">randomid</span><span class="p">();</span> + + <span class="c1">//Event listener that will fire when the proper randomid is provided</span> + <span class="nx">eventEmitter</span><span class="p">.</span><span class="nx">once</span><span class="p">(</span><span class="nx">id</span><span class="p">,</span> <span class="nx">msg</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">write</span><span class="p">(</span><span class="nx">msg</span><span class="p">,</span> <span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">end</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="p">});</span> + + <span class="c1">//Checks if the queue exists, and create it if needed.</span> + <span class="nx">channel</span><span class="p">.</span><span class="nx">assertQueue</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">)</span> + <span class="c1">//Sent the buffered img to the queue with the ID and the responseQueue</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="nx">channel</span><span class="p">.</span><span class="nx">sendToQueue</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">,</span> <span class="nx">img</span><span class="p">.</span><span class="nx">data</span><span class="p">,</span> <span class="p">{</span><span class="nx">correlationId</span><span class="o">:</span><span class="nx">id</span><span class="p">,</span> <span class="nx">replyTo</span><span class="o">:</span> <span class="s1">&#39;amq.rabbitmq.reply-to&#39;</span><span class="p">}));</span> + +<span class="p">});</span> + +<span class="c1">//Finally start the app with the given port number</span> +<span class="c1">//now we initialize the rabbitmq connection before start the server</span> +<span class="nx">init</span><span class="p">()</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="nx">app</span><span class="p">.</span><span class="nx">listen</span><span class="p">(</span><span class="mi">4000</span><span class="p">,</span> <span class="p">()</span> <span class="p">=&gt;</span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;Example app listening on port 4000!&#39;</span><span class="p">)))</span> + <span class="p">.</span><span class="k">catch</span><span class="p">(</span><span class="nx">err</span><span class="p">=&gt;</span><span class="nx">console</span><span class="p">.</span><span class="nx">error</span><span class="p">(</span><span class="nx">err</span><span class="p">));</span> +</pre></div> +<p>Ok, now we have our server code rewritten so let's see our worker code. Create a file named 'worker.js' and let's see how it's gonna be. It's really simple. You initialize a connection with RabbitMQ too, create a channel, check if the queue exists and start watching for incoming messages. When an image arrives, we do the job with it and send back to the &quot;replyTo&quot; queue the optimized image for the proper sender (correlationId). In the end, we do an acknowledge of the message so it get's out from the queue.</p> +<div class="highlight"><pre><span></span><span class="kr">const</span> <span class="nx">imagemin</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin&#39;</span><span class="p">);</span> +<span class="kr">const</span> <span class="nx">imageminPngquant</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin-pngquant&#39;</span><span class="p">);</span> + +<span class="kd">let</span> <span class="nx">channel</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span> +<span class="kr">const</span> <span class="nx">QUEUE</span> <span class="o">=</span> <span class="s1">&#39;imgqueue&#39;</span><span class="p">;</span> + +<span class="nx">require</span><span class="p">(</span><span class="s1">&#39;amqplib&#39;</span><span class="p">).</span><span class="nx">connect</span><span class="p">(</span><span class="s1">&#39;amqp://localhost&#39;</span><span class="p">)</span> +<span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">conn</span> <span class="p">=&gt;</span><span class="nx">conn</span><span class="p">.</span><span class="nx">createChannel</span><span class="p">())</span> +<span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">ch</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">assertQueue</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">)</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="c1">//Watch incomming messages</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">consume</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">,</span> <span class="nx">msg</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">imagemin</span><span class="p">.</span><span class="nx">buffer</span><span class="p">(</span><span class="nx">msg</span><span class="p">.</span><span class="nx">content</span><span class="p">,</span> <span class="p">{</span> + <span class="nx">plugins</span><span class="o">:</span> <span class="p">[</span><span class="nx">imageminPngquant</span><span class="p">()]</span> + <span class="p">})</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">out</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="c1">//Send back to the sender (replyTo) queue and give the correlationId back</span> + <span class="c1">//so we can emit the event.</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">sendToQueue</span><span class="p">(</span><span class="nx">msg</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">replyTo</span><span class="p">,</span> <span class="nx">out</span><span class="p">,</span> <span class="p">{</span> + <span class="nx">correlationId</span><span class="o">:</span> <span class="nx">msg</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">correlationId</span> + <span class="p">});</span> + + <span class="c1">//Acknowledge the job done with the message.</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">ack</span><span class="p">(</span><span class="nx">msg</span><span class="p">);</span> + <span class="p">});</span> + <span class="p">});</span> + <span class="p">});</span> +<span class="p">});</span> +</pre></div> +<p>The key points here are. Open just one connection to the hole server. You CAN create one channel for every request that you receive, but it can take some time if you have a really big cluster of RabbitMQ. It was a quick tutorial, but I hope that it was able to clear a few questions that you might have when working with rabbit and express.</p> +Microservices with NodeJS, Express.js and RabbitMQ Part 12018-04-04T11:25:00-03:002018-04-04T11:25:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-04-04:/en/microservices_nodejs_express_rabbitmq_part_1.html<p>This is the first part of a microservices development series. The service will consist of the bellow architecture, where we will expose an image optimizer service that will forward the request to a <a class="reference external" href="https://www.rabbitmq.com/">RabbitMQ</a> queue and answer with the bytecode of the optimized image. It shouldn't be a long series …</p><p>This is the first part of a microservices development series. The service will consist of the bellow architecture, where we will expose an image optimizer service that will forward the request to a <a class="reference external" href="https://www.rabbitmq.com/">RabbitMQ</a> queue and answer with the bytecode of the optimized image. It shouldn't be a long series so let's see what we can do.</p> +<img alt="Service architecture" src="/images/microservices_rabit_pt1.png" /> +<p>Let's get our environment working. First, we'll need to install the libraries that we'll use.</p> +<p>Create a dir and initialize the nodejs application inside it (<cite>npm init</cite>) and then let's install the deps.</p> +<ul class="simple"> +<li>amqplib - AMQP lib to interact with rabbitmq</li> +<li>express - Do our basic rest API</li> +<li>express-fileupload - easy file upload parser</li> +<li>imagemin and imagemin-pngquant - our image compacter</li> +</ul> +<div class="highlight"><pre><span></span>npm install --save express amqplib express-fileupload imagemin imagemin-pngquant +</pre></div> +<p>Now let's write the entry points for our service, we'll have two basic entry points. The path <cite>/</cite> that will have a welcome message, the second path will be <cite>/upload</cite> and this is the one that will handle the image and produce a job for our workers.</p> +<div class="highlight"><pre><span></span><span class="kr">const</span> <span class="nx">express</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;express&#39;</span><span class="p">);</span> +<span class="kr">const</span> <span class="nx">fileUpload</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;express-fileupload&#39;</span><span class="p">);</span> + +<span class="c1">//Instantiate the app and set the fileupload parser to manage files</span> +<span class="kr">const</span> <span class="nx">app</span> <span class="o">=</span> <span class="nx">express</span><span class="p">();</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">use</span><span class="p">(</span><span class="nx">fileUpload</span><span class="p">());</span> + +<span class="c1">//Our index entry point</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="nx">res</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="s1">&#39;Hello From ImageCompacter service&#39;</span><span class="p">));</span> + +<span class="c1">//The path that will handle the image file and throw them to the queue</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span><span class="s1">&#39;/upload&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="c1">//With express-fileupload we can grab the files like this</span> + <span class="kd">let</span> <span class="nx">img</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">files</span><span class="p">.</span><span class="nx">image</span><span class="p">;</span> <span class="c1">//&quot;image&quot; is the name of the input</span> + + <span class="nx">res</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="s1">&#39;Not ready yet&#39;</span><span class="p">);</span> +<span class="p">});</span> + +<span class="c1">//Finally start the app with the given port number</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">listen</span><span class="p">(</span><span class="mi">4000</span><span class="p">,</span> <span class="p">()</span> <span class="p">=&gt;</span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;Example app listening on port 4000!&#39;</span><span class="p">));</span> +</pre></div> +<p>Let's check if it works, run the service with node.</p> +<div class="highlight"><pre><span></span>node index.js +Example app listening on port <span class="m">4000</span>! +</pre></div> +<p>Open the browser and check if it prints our hello message when accessing <cite>localhost:4000</cite>. Works? Greate. Now let's work with the image and see how we do it. To optimize our image, we'll use the library imagemin and <a class="reference external" href="https://www.npmjs.com/package/imagemin-pngquant">imagemin-pngquant</a>, it will be that simple for now, we'll work with rabbitmq latter.</p> +<div class="highlight"><pre><span></span><span class="kr">const</span> <span class="nx">imagemin</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin&#39;</span><span class="p">);</span> +<span class="kr">const</span> <span class="nx">imageminPngquant</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin-pngquant&#39;</span><span class="p">);</span> +<span class="c1">//...</span> + +<span class="c1">//The path that will handle the image file and throw them to the queue</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span><span class="s1">&#39;/upload&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="kd">let</span> <span class="nx">img</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">files</span><span class="p">.</span><span class="nx">image</span><span class="p">;</span> <span class="c1">//&quot;image&quot; is the name of the input</span> + + <span class="nx">imagemin</span><span class="p">.</span><span class="nx">buffer</span><span class="p">(</span><span class="nx">img</span><span class="p">.</span><span class="nx">data</span><span class="p">,</span> <span class="p">{</span> + <span class="nx">plugins</span><span class="o">:</span> <span class="p">[</span><span class="nx">imageminPngquant</span><span class="p">()]</span> + <span class="p">})</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">out</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">write</span><span class="p">(</span><span class="nx">out</span><span class="p">,</span><span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">end</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="p">});</span> +<span class="p">});</span> + + <span class="c1">//...</span> +</pre></div> +<p>Use <a class="reference external" href="https://www.getpostman.com/">Postman</a> to test the request. To see if it will work, make a request to <cite>http://localhost:4000/upload</cite> with a formdata with a file. Select the &quot;send and Download&quot; instead of &quot;Send&quot; and you should have an image after that. Bellow an image of how your postman should be.</p> +<img alt="Postman" src="/images/microservice_postman.png" /> +<p>That's it for today, next week we'll change our code to use RabbitMQ.</p> +Connecting to a database through SSH2018-03-29T10:03:00-03:002018-03-29T10:03:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-29:/en/connecting_to_database_through_ssh.html<p>If someday, for some reason, you need to establish a connection with a database which is behind a firewall and you only have SSH access on that server (and you don't want to use a CLI) you can do an SSH tunnel. It's pretty simple, bellow has a sample of …</p><p>If someday, for some reason, you need to establish a connection with a database which is behind a firewall and you only have SSH access on that server (and you don't want to use a CLI) you can do an SSH tunnel. It's pretty simple, bellow has a sample of how to allow connections to a remote Firebird database.</p> +<div class="highlight"><pre><span></span>ssh -L <span class="m">3051</span>:192.168.1.9:3050 username@192.168.1.9 +</pre></div> +<p>The <cite>-L</cite> parameter tells to SSH do a local port forwarding on local port <cite>3051</cite> to remote port <cite>3050</cite>. You can use it to a connection with many services, not just databases.</p> +<p>You can do the reverse kind of tunnel, forward connections from the host to your local machine, you just have to change the parameter form &quot;-L&quot; to &quot;-R&quot; and the port order is inverted, first come the port where the server will listen and after your localhost port. This remote port forwarding must be enabled on the server. Look for <cite>GatewayPorts</cite> at the ssh config file.</p> +<div class="highlight"><pre><span></span>ssh -R <span class="m">3050</span>:localhost:3050 username@192.168.1.9 +</pre></div> +<p>Why whould you need something like that?? Let's say you want to share a localhost site/database with a friend, but your internet connection don't allow you to expose any port but you have access to a remote server witch can do that. Problem solved ;).</p> +Now posting on Grepora2018-03-24T00:40:00-03:002018-03-24T00:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-24:/en/now_posting_on_grepora.html<p>A few weeks ago I started posting at <a class="reference external" href="https://grepora.com/blog/">Grepora</a> blog. If you like or are looking for some Oracle related stuff, Grepora it's a good place to go and spend a time reading :). From time to time I'll be posting there, it doesn't mean that this blog will be closed …</p><p>A few weeks ago I started posting at <a class="reference external" href="https://grepora.com/blog/">Grepora</a> blog. If you like or are looking for some Oracle related stuff, Grepora it's a good place to go and spend a time reading :). From time to time I'll be posting there, it doesn't mean that this blog will be closed or anything like that, but probably this one will be more focused on Front-end stuff, a few tricks with linux and a lil less with Java.</p> +Scaffolding a React app with Parcel and Yeoman2018-03-17T13:00:00-03:002018-03-17T13:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-17:/en/scaffolding_react_app_with_parcel_yeoman.html<p>Since <a class="reference external" href="https://parceljs.org/">Parcel JS</a> arrived, I've been using it a lot as an awesome alternative for WebPack. Webpack isn't bad but IMO it's too complex for the job and parcel do the same (at least the basic) with almost zero configuration. But if you need to create many apps (like a …</p><p>Since <a class="reference external" href="https://parceljs.org/">Parcel JS</a> arrived, I've been using it a lot as an awesome alternative for WebPack. Webpack isn't bad but IMO it's too complex for the job and parcel do the same (at least the basic) with almost zero configuration. But if you need to create many apps (like a react app) over and over again, it get's a lil boring following the basic steps.</p> +<div class="highlight"><pre><span></span>npm init -y +npm install --save react +npm install --save react-dom +npm install --save-dev parcel-bundler +npm install --save-dev babel-preset-env +npm install --save-dev babel-preset-react + +<span class="c1">#create .babelrc file</span> +<span class="c1">#create html, css, jsx files</span> + +parcel index.html +</pre></div> +<p>It's not a hard job, a simple shell script do the job, but what if you need some IFs when creating the app, or even change a few things at the <cite>package.json</cite>? A shell script still does the job, but come on... There is a better way. <a class="reference external" href="http://yeoman.io/">Yeoman</a> is here for you. I've already <a class="reference external" href="https://www.sipmann.com/en/desenvolvendo-app-firefoxos-pt.html">talked about it</a> on another post (Portuguese post).</p> +<p>Straight to the point, I've released a Yeoman generator to get the things a lil quicker. The name is <a class="reference external" href="https://www.npmjs.com/package/generator-parcel-react">generator-parcel-react</a> and it still lacks a few things that I will deal with soon. It's pretty simple to use it.</p> +<div class="highlight"><pre><span></span><span class="c1">#First time only</span> +npm install -g yo +npm install -g generator-parcel-react + +<span class="c1">#every time you create a new app</span> +yo parcel-react +</pre></div> +<p>And that's it. Right now you can scaffold and app with React, SASS and React Router. Hope you like it and feel free to ask new features.</p> +Could not open connection with MySQL and Hibernate2018-03-09T12:35:00-03:002018-03-09T12:35:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-09:/en/cloud-not-open-connection-java-mysql-hibernate.html<p>Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some &quot;Could not open connection&quot; at my …</p><p>Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some &quot;Could not open connection&quot; at my face, but why? I've tried to connect to it manually and got the same problem.</p> +<p>After some research, I found that the true error should be java.sql.SQLException: null, message from server: &quot;Host '172.17.0.4' is not allowed to connect to this MySQL server&quot; but it wasn't showing to me...</p> +<p>After all, be aware that with the docker image MySQL:5.7.21 (latest version right now) the root user isn't allowed to remote connect to the database (it's alright, security reasons) and if you still want to do remote connections to it with root there are a few things you can do.</p> +<ol class="arabic simple"> +<li>Create a user or allow root to access from other IPs.</li> +</ol> +<div class="highlight"><pre><span></span><span class="o">#</span><span class="k">No</span> <span class="k">access</span> <span class="k">to</span> <span class="k">user</span> <span class="n">root</span> <span class="k">on</span> <span class="k">any</span> <span class="n">other</span> <span class="n">IP</span> +<span class="k">SELECT</span> <span class="k">User</span><span class="p">,</span> <span class="k">Host</span> <span class="k">FROM</span> <span class="n">mysql</span><span class="p">.</span><span class="k">user</span><span class="p">;</span> +<span class="o">+</span><span class="c1">---------------+-----------+</span> +<span class="o">|</span> <span class="k">User</span> <span class="o">|</span> <span class="k">Host</span> <span class="o">|</span> +<span class="o">+</span><span class="c1">---------------+-----------+</span> +<span class="o">|</span> <span class="n">healthchecker</span> <span class="o">|</span> <span class="n">localhost</span> <span class="o">|</span> +<span class="o">|</span> <span class="n">root</span> <span class="o">|</span> <span class="n">localhost</span> <span class="o">|</span> +<span class="o">+</span><span class="c1">---------------+-----------+</span> +<span class="mi">2</span> <span class="k">rows</span> <span class="k">in</span> <span class="k">set</span> <span class="p">(</span><span class="mi">0</span><span class="p">.</span><span class="mi">01</span> <span class="n">sec</span><span class="p">)</span> + +<span class="k">CREATE</span> <span class="k">USER</span> <span class="s1">&#39;newuser&#39;</span><span class="o">@</span><span class="s1">&#39;%&#39;</span> <span class="n">IDENTIFIED</span> <span class="k">BY</span> <span class="s1">&#39;password&#39;</span><span class="p">;</span> <span class="o">#%</span> <span class="n">mean</span> <span class="k">any</span> <span class="n">IP</span> +<span class="k">GRANT</span> <span class="k">ALL</span> <span class="k">PRIVILEGES</span> <span class="k">ON</span> <span class="o">*</span><span class="p">.</span><span class="o">*</span> <span class="k">TO</span> <span class="s1">&#39;newuser&#39;</span><span class="o">@</span><span class="s1">&#39;%&#39;</span><span class="p">;</span> <span class="o">#*</span><span class="p">.</span><span class="o">*</span> <span class="n">mean</span> <span class="k">database</span><span class="p">.</span><span class="k">table</span> <span class="p">;)</span> +</pre></div> +<ol class="arabic simple" start="2"> +<li>Use MariaDB instead, witch come (at least on the version 10.2.13) with root allowed to do remote connections and will work like MySQL :)</li> +</ol> +<p>I changed to <a class="reference external" href="https://mariadb.org/">MariaDB</a> as it work without creating user or any changes on the Java code or the <cite>docker run command</cite>.</p> +Solving java.net.SocketException: Protocol family unavailable on a Java + Docker + WildFly2018-03-04T17:40:00-03:002018-03-04T17:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-04:/en/socketException-protocol-family-unavailable-java-docker-wildfly.html<p>On the last days I've been playing with <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> and I decided to deploy a simple app with Docker. Should work fine, at least that was what I thought. Built a container with the following Dockerfile and instead of a working web app, all that I got was the …</p><p>On the last days I've been playing with <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> and I decided to deploy a simple app with Docker. Should work fine, at least that was what I thought. Built a container with the following Dockerfile and instead of a working web app, all that I got was the error <cite>java.net.SocketException: Protocol family unavailable</cite>.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">CMD</span> <span class="p">[</span><span class="s2">&quot;java&quot;</span><span class="p">,</span><span class="s2">&quot;-jar&quot;</span><span class="p">,</span><span class="s2">&quot;/opt/issues.jar&quot;</span><span class="p">]</span> +</pre></div> +<p>For some reason, WildFly and Java decided to use the IPv6 network interface from Docker instead the v4, so all you have to do is tell Java to prefer IPv4 instead with the following configuration option in your pom.xml file inside your WildFly plugin.</p> +<div class="highlight"><pre><span></span><span class="nt">&lt;plugin&gt;</span> + <span class="nt">&lt;groupId&gt;</span>org.wildfly.swarm<span class="nt">&lt;/groupId&gt;</span> + <span class="nt">&lt;artifactId&gt;</span>wildfly-swarm-plugin<span class="nt">&lt;/artifactId&gt;</span> + <span class="nt">&lt;version&gt;</span>2018.2.0<span class="nt">&lt;/version&gt;</span> + + <span class="c">&lt;!-- ADD THIS --&gt;</span> + <span class="nt">&lt;configuration&gt;</span> + <span class="nt">&lt;mainClass&gt;</span>org.wildfly.swarm.examples.netflix.ribbon.frontend.Main<span class="nt">&lt;/mainClass&gt;</span> + <span class="nt">&lt;properties&gt;</span> + <span class="nt">&lt;java.net.preferIPv4Stack&gt;</span>true<span class="nt">&lt;/java.net.preferIPv4Stack&gt;</span> + <span class="nt">&lt;/properties&gt;</span> + <span class="nt">&lt;/configuration&gt;</span> +</pre></div> +<p>Another way to solve is adding the same properties to the run command at the Dockerfile, so you choose where you'll add it. Bellow the Dockerfile solution.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> +<span class="k">ENV</span> <span class="nv">JAVA_OPTS</span><span class="o">=</span><span class="s2">&quot;-Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true&quot;</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">ENTRYPOINT</span> <span class="nb">exec</span> java <span class="nv">$JAVA_OPTS</span> -jar /opt/issues.jar +</pre></div> +Change display settings on linux with Disper2018-02-27T12:40:00-03:002018-02-27T12:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-02-27:/en/linux-external-display-with-disper.html<p>From time to time, I change the Linux distro on my laptop or just do a fresh install on it. And once in a while, have random problems with external displays. It can be something really &quot;simple&quot; like don't detecting the external monitor or something crazy like the image below …</p><p>From time to time, I change the Linux distro on my laptop or just do a fresh install on it. And once in a while, have random problems with external displays. It can be something really &quot;simple&quot; like don't detecting the external monitor or something crazy like the image below.</p> +<img alt="Display bug" src="/images/bug.png" /> +<p>As you can see at the image, the mint detected the display but mirrored it in a crazy way that works but doesn't at the same time. If you try anything and doesn't get working, or just wanna skip the whole job of configuring complexes text files, give a try to <a class="reference external" href="http://willem.engen.nl/projects/disper/">Disper</a>. Download the latest version. +Extract it on any folder, and make install it (on the extracted folder).</p> +<div class="highlight"><pre><span></span>make install +</pre></div> +<p>After that, you can start using it... There are a few options that will serve you well.</p> +<div class="highlight"><pre><span></span>disper -e <span class="c1">#extend your display</span> +</pre></div> +<div class="highlight"><pre><span></span>disper -c <span class="c1">#clone your display</span> +</pre></div> +<div class="highlight"><pre><span></span>disper -s <span class="c1">#only your external display</span> +</pre></div> +Java - Files.readAllBytes throws OutOfMemory2018-02-17T13:00:00-02:002018-02-17T13:00:00-02:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-02-17:/en/reading-files-java-readAllBytes-outofmemory.html<p>When you need to interact with files, there's the possibility to read all bytes from the file with <cite>Files.readAllBytes</cite>. But be aware of the kinds of files your application will deal with because the Java API files have a limit for the buffer that is defined as <cite>Integer.MAX_VALUE …</cite></p><p>When you need to interact with files, there's the possibility to read all bytes from the file with <cite>Files.readAllBytes</cite>. But be aware of the kinds of files your application will deal with because the Java API files have a limit for the buffer that is defined as <cite>Integer.MAX_VALUE</cite> as you can see above or at the OpenJDK sources.</p> +<div class="highlight"><pre><span></span><span class="kd">public</span> <span class="kd">static</span> <span class="kt">byte</span><span class="o">[]</span> <span class="nf">readAllBytes</span><span class="p">(</span><span class="n">Path</span> <span class="n">path</span><span class="p">)</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="p">{</span> + <span class="k">try</span> <span class="p">(</span><span class="n">FileChannel</span> <span class="n">fc</span> <span class="o">=</span> <span class="n">FileChannel</span><span class="p">.</span><span class="na">open</span><span class="p">(</span><span class="n">path</span><span class="p">))</span> <span class="p">{</span> + <span class="kt">long</span> <span class="n">size</span> <span class="o">=</span> <span class="n">fc</span><span class="p">.</span><span class="na">size</span><span class="p">();</span> + <span class="k">if</span> <span class="p">(</span><span class="n">size</span> <span class="o">&gt;</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">Integer</span><span class="p">.</span><span class="na">MAX_VALUE</span><span class="p">)</span> + <span class="k">throw</span> <span class="k">new</span> <span class="n">OutOfMemoryError</span><span class="p">(</span><span class="s">&quot;Required array size too large&quot;</span><span class="p">);</span> + + <span class="kt">byte</span><span class="o">[]</span> <span class="n">arr</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">byte</span><span class="o">[</span><span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">size</span><span class="o">]</span><span class="p">;</span> + <span class="n">ByteBuffer</span> <span class="n">bb</span> <span class="o">=</span> <span class="n">ByteBuffer</span><span class="p">.</span><span class="na">wrap</span><span class="p">(</span><span class="n">arr</span><span class="p">);</span> + <span class="k">while</span> <span class="p">(</span><span class="n">bb</span><span class="p">.</span><span class="na">hasRemaining</span><span class="p">())</span> <span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="n">fc</span><span class="p">.</span><span class="na">read</span><span class="p">(</span><span class="n">bb</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> + <span class="c1">// truncated</span> + <span class="k">break</span><span class="p">;</span> + <span class="p">}</span> + <span class="p">}</span> + + <span class="kt">int</span> <span class="n">nread</span> <span class="o">=</span> <span class="n">bb</span><span class="p">.</span><span class="na">position</span><span class="p">();</span> + <span class="k">return</span> <span class="p">(</span><span class="n">nread</span> <span class="o">==</span> <span class="n">size</span><span class="p">)</span> <span class="o">?</span> <span class="n">arr</span> <span class="p">:</span> <span class="n">Arrays</span><span class="p">.</span><span class="na">copyOf</span><span class="p">(</span><span class="n">arr</span><span class="p">,</span> <span class="n">nread</span><span class="p">);</span> + <span class="p">}</span> +<span class="p">}</span> +</pre></div> +<p>With that in mind, check if isn't better read chunks of bytes e work with that slice in exchange of loading the whole file into the memory ;). Above a simple example of how you can read chunks of bytes from the file.</p> +<div class="highlight"><pre><span></span><span class="kt">byte</span><span class="o">[]</span> <span class="n">buffer</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">byte</span><span class="o">[</span><span class="mi">1024</span><span class="o">]</span><span class="p">;</span> +<span class="n">FileInputStream</span> <span class="n">in</span> <span class="o">=</span> <span class="k">new</span> <span class="n">FileInputStream</span><span class="p">(</span><span class="n">file</span><span class="p">);</span> +<span class="kt">int</span> <span class="n">rc</span> <span class="o">=</span> <span class="n">in</span><span class="p">.</span><span class="na">read</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span> +<span class="k">while</span> <span class="p">(</span><span class="n">rc</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> +<span class="p">{</span> + <span class="c1">//crazy stuff here with buffer</span> + <span class="n">rc</span> <span class="o">=</span> <span class="n">in</span><span class="p">.</span><span class="na">read</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span> +<span class="p">}</span> +</pre></div> + \ No newline at end of file diff --git a/en/feeds/all-en.atom.xml.gz b/en/feeds/all-en.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..7ccfb0e80236116e2fc3c816ab3da33046eb4e87 GIT binary patch literal 26311 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 O%l{7zba2!b=mG$+ +Sipmannhttps://www.sipmann.com/en/2020-12-21T13:30:00-03:00Monitoring MySQL restarts with PowerShell2020-12-21T13:30:00-03:002020-12-21T13:30:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-21:/en/monitoring-mysql-restarts-with-powershell.html<p>Hey folks, it's time for another PowerShell script. If you haven't seen the other ones, check the links below.</p> +<ul> +<li><a href="https://www.sipmann.com/en/monitoring-mysql-replication-with-powershell.html">Monitoring MySQL replication with PowerShell</a></li> +</ul> +<p>Well, this one it's a pretty simple script, but again, if your customer doesn't have a Zabbix server or doesn't allow you to setup one to …</p><p>Hey folks, it's time for another PowerShell script. If you haven't seen the other ones, check the links below.</p> +<ul> +<li><a href="https://www.sipmann.com/en/monitoring-mysql-replication-with-powershell.html">Monitoring MySQL replication with PowerShell</a></li> +</ul> +<p>Well, this one it's a pretty simple script, but again, if your customer doesn't have a Zabbix server or doesn't allow you to setup one to do the monitoring, a set of scripts can be handy. We start executing some basic query <code>SHOW GLOBAL STATUS LIKE 'Uptime'</code>, with that we'll get exactly what we're looking for.</p> +<p>If for some reason, the command fails (watch for the "global" variable called <code>$lastExitCode</code>), we send an e-mail telling you about that connection problem.</p> +<p>And then, we get to the part where we parse the value, this one is pretty similar to the parse we did on the first post about using PowerShell to monitor MySQL. But we basically look for the Value line, split it by space and then parse the second position to an integer. And then all we have to do is check if the uptime is lower than our threshold, if it is we send an e-mail.</p> +<div class="highlight"><pre><span></span><code><span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;maurio[at]sipmann.com&#39;</span> +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio[at]sipmann.com&#39;</span> +<span class="nv">$MysqlHost</span> <span class="p">=</span> <span class="s1">&#39;127.0.0.1&#39;</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;123&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-h</span> <span class="nv">$MysqlHost</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s2">&quot;SHOW GLOBAL STATUS LIKE &#39;Uptime&#39; \G&quot;</span><span class="p">)</span> + +<span class="cm">&lt;# Unable to execute the sql Command #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$lastExitCode</span> <span class="o">-eq</span> <span class="n">1</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Connection problem&#39;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;Connection problem on host ${MysqlHost}&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> + <span class="n">exit</span> +<span class="p">}</span> + +<span class="nv">$UpTime</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Value:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="cm">&lt;# If the uptime is lower then 20 minutes #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$UpTime</span> <span class="o">-lt</span> <span class="n">1200</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s2">&quot;MySQL Restarted&quot;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;MySQL host ${MysqlHost} restarted less than 20 minutes ago&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> +</code></pre></div> + +<p>This script (and the other ones I use) is available at my GitHub <a href="https://github.com/sipmann/PowerShellScripts">here</a>. Keep in mind that the ones on the GitHub repo, are a little different from here.</p>Monitorando restarts do MySQL com PowerShell2020-12-21T13:30:00-03:002020-12-21T13:30:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-21:/pt/monitoring-mysql-restarts-with-powershell.html<p>Bom, chegou a hora para mais um script PowerShell. Se você ainda não viu os outros, de uma olhada no link abaixo.</p> +<ul> +<li><a href="https://www.sipmann.com/pt/monitoring-mysql-replication-with-powershell.html">Monitorando status de replicação do MySQL com PowerShell</a></li> +</ul> +<p>Este aqui é um script bem simples, mas novamente, se seu cliente não possui um servidor Zabbix ou não permite …</p><p>Bom, chegou a hora para mais um script PowerShell. Se você ainda não viu os outros, de uma olhada no link abaixo.</p> +<ul> +<li><a href="https://www.sipmann.com/pt/monitoring-mysql-replication-with-powershell.html">Monitorando status de replicação do MySQL com PowerShell</a></li> +</ul> +<p>Este aqui é um script bem simples, mas novamente, se seu cliente não possui um servidor Zabbix ou não permite que você configure um para realizar este monitoramento, um conjunto de scripts pode ser bem útil. Primeiramente nós executamos uma query báscia <code>SHOW GLOBAL STATUS LIKE 'Uptime'</code>, com ela nós conseguimos capturar exatamente o que nós estamos procurando.</p> +<p>Se por alguma razão o comando falhar (verificamos atravez da variábel global <code>$lastExitCode</code>), nós mandamos um e-mail lhe avisando sobre o problema ocorrido.</p> +<p>E então, nós chegamos à parte onde fazemos o parse do valor obtido, esta parte é bem similar ao parse que codificamos no primeiro post sobre monitoramento utilizando PowerShell. Nós basicamentes procuramos pela linha contendo <code>Value</code>, separamos por espaço e então parseamos a segunda posição em um inteiro. Então tudo que precisamos fazer é verificar se o valor parseado é menor que o nosso threshold, se for menor, nós mandamos um e-mail.</p> +<div class="highlight"><pre><span></span><code><span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;maurio[at]sipmann.com&#39;</span> +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio[at]sipmann.com&#39;</span> +<span class="nv">$MysqlHost</span> <span class="p">=</span> <span class="s1">&#39;127.0.0.1&#39;</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;123&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-h</span> <span class="nv">$MysqlHost</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s2">&quot;SHOW GLOBAL STATUS LIKE &#39;Uptime&#39; \G&quot;</span><span class="p">)</span> + +<span class="cm">&lt;# Unable to execute the sql Command #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$lastExitCode</span> <span class="o">-eq</span> <span class="n">1</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Connection problem&#39;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;Connection problem on host ${MysqlHost}&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> + <span class="n">exit</span> +<span class="p">}</span> + +<span class="nv">$UpTime</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Value:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="cm">&lt;# If the uptime is lower then 20 minutes #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$UpTime</span> <span class="o">-lt</span> <span class="n">1200</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s2">&quot;MySQL Restarted&quot;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;MySQL host ${MysqlHost} restarted less than 20 minutes ago&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> +</code></pre></div> + +<p>Este script (e os outros que eu utilizo) estão disponíveis no meu GitHub <a href="https://github.com/sipmann/PowerShellScripts">aqui</a>. Tenha em mente que os scripts localizados no GitHub, são um pouco diferentes do que exibido aqui. Espero que tenha achado útil.</p>Changing a MySQL user password across multiple application instances without downtime2020-12-09T13:40:00-03:002020-12-09T13:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-09:/en/mysql-dual-password-functionality.html<p>Do you need to change the password of a MySQL user that it's being used in an application, and can't allow a single downtime? Well, MySQL 8.0.14 came with a feature called <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, with it you can change the password keeping the previous password as a …</p><p>Do you need to change the password of a MySQL user that it's being used in an application, and can't allow a single downtime? Well, MySQL 8.0.14 came with a feature called <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, with it you can change the password keeping the previous password as a kind of backup. That way you still can log in using the old password or can start using the new one. With that, the password change workflow it's the following.</p> +<p>1) Change password keeping the old one;</p> +<p>2) Deploy the new config to your app/cluster;</p> +<p>3) Discard the old password.</p> +<p>To change the password and keep the old one, you have the following command.</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">IDENTIFIED</span> <span class="k">BY</span> <span class="s1">&#39;new_password&#39;</span> <span class="n">RETAIN</span> <span class="n">CURRENT</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>To discard the old one, run the following.</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">DISCARD</span> <span class="n">OLD</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>And you are done. Hope you find it as useful as I :)</p>Trocando a senha de um usuário do MySQL sem downtime da aplicação2020-12-09T13:40:00-03:002020-12-09T13:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-09:/pt/mysql-dual-password-functionality.html<p>Você deseja trocar a senha de um usuário do MySQL que está sendo utilizado por uma aplicação e não sofrer nenhum downtime? Bom, a versão 8.0.14 do MySQL foi liberada com uma feature chamada <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, com esta feature você pode alterar a senha de um usuário …</p><p>Você deseja trocar a senha de um usuário do MySQL que está sendo utilizado por uma aplicação e não sofrer nenhum downtime? Bom, a versão 8.0.14 do MySQL foi liberada com uma feature chamada <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, com esta feature você pode alterar a senha de um usuário mantendo a anterior ainda funcionando como uma forma de "backup". Desta forma, você ainda conseguirá autenticar com o usuário utilizando tanto a nova senha, quanto a anterior. Com isto, o seu processo de troca de senha fica algo como:</p> +<p>1) Troque a senha mantendo a anterior;</p> +<p>2) Faça o Deploy da nova configuração na sua aplicação/cluster;</p> +<p>3) Descarte a senha anterior.</p> +<p>Para alterar a senha mantendo a anterior, você deve rodar o seguinte comando:</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">IDENTIFIED</span> <span class="k">BY</span> <span class="s1">&#39;new_password&#39;</span> <span class="n">RETAIN</span> <span class="n">CURRENT</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>Para descartar a senha antiga, rode o seguinte:</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">DISCARD</span> <span class="n">OLD</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>E pronto. Espero que isto lhe ajude a evitar downtimes e dores de cabeça :)</p>Apache Nifi JSON to SQL Replacing underscore2020-12-02T14:00:00-03:002020-12-02T14:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-02:/en/apache-nifi-json-to-sql-replacing-underscore.html<p>Recently I was doing some ETL with Apache NiFi. But after a few minutes of drawing my flow, I saw that the component ConvertJSONToSQL was replacing the underscore ('_') from the field name in the where condition (I was preparing an Update SQL). That was weird because, at the set …</p><p>Recently I was doing some ETL with Apache NiFi. But after a few minutes of drawing my flow, I saw that the component ConvertJSONToSQL was replacing the underscore ('_') from the field name in the where condition (I was preparing an Update SQL). That was weird because, at the set statement, the field name was kept intact. After some research, I found that the property (see bellow) <code>Translate Field Names</code> was responsible for that weird replacement.</p> +<p><img alt="Apache NiFi JSONToSQL config" src="/images/apache_nifi_jsontosql.png"></p> +<p>Before setting it to <strong>FALSE</strong>, be aware that the properties on your JSON data must match exactly the name of your fields.</p>Apache Nifi JSON to SQL removendo underline2020-12-02T14:00:00-03:002020-12-02T14:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-02:/pt/apache-nifi-json-to-sql-replacing-underscore.html<p>Recentemente eu estava desenvolvendo alguns processos de ETL com o Apache NiFi. Mas após alguns minutos desenhando o meu fluxo, eu vi um comportamento estranho do componente ConvertJSONToSQL, que estava substituindo os underline ('_') do nome de um campo utilizado na condição da SQL (eu estava preparando um UPDATE). Aquilo …</p><p>Recentemente eu estava desenvolvendo alguns processos de ETL com o Apache NiFi. Mas após alguns minutos desenhando o meu fluxo, eu vi um comportamento estranho do componente ConvertJSONToSQL, que estava substituindo os underline ('_') do nome de um campo utilizado na condição da SQL (eu estava preparando um UPDATE). Aquilo estava estranho, uma vez que na definição do SET da SQL, o nome do campo permanecia inalterado. Depois de algumas pesquisas, achei uma doc que a propriedade (veja abaixo) <code>Translate Field Names</code> era a responsável por este comportamento estranho.</p> +<p><img alt="Apache NiFi JSONToSQL config" src="/images/apache_nifi_jsontosql.png"></p> +<p>Antes de definir a propriedade como <strong>FALSE</strong>, esteja ciente que as propriedades do seu JSON devem ser exatamente iguais aos nomes dos campos da sua tabela.</p>Blocking a user on SQL Server based on a schedule2020-11-14T07:00:00-03:002020-11-14T07:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-11-14:/en/blocking-user-on-sql-server-based-on-schedule.html<p>Ok, some time ago, I've posted about how you can set limits to connections on SQL Server using the <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. But what if you can't use it? You always can block logins using a login trigger, but I don't like the idea of having selects running on every login …</p><p>Ok, some time ago, I've posted about how you can set limits to connections on SQL Server using the <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. But what if you can't use it? You always can block logins using a login trigger, but I don't like the idea of having selects running on every login. So I came across with a solution using a stored procedure, a table and the Agent.</p> +<p>The main idea is, store the time that a user must be blocked and using the Agent, disable or enable the user. Bellow you can see the table (the table is in Portuguese, but I have a few comment blocks to help you).</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">Id</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Startint block time */</span><span class="w"></span> +<span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Ending block time */</span><span class="w"></span> +<span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="k">DEFAULT</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="cm">/* 0 = unblocked, 1 = blocked */</span><span class="w"></span> +<span class="w"> </span><span class="k">PRIMARY</span><span class="w"> </span><span class="k">KEY</span><span class="w"> </span><span class="p">(</span><span class="n">Id</span><span class="p">)</span><span class="w"></span> +<span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="cm">/* Don&#39;t block the SA user, precautions, you know */</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_users</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">LoginName</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;sa&#39;</span><span class="p">));</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_hora_final_maior</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="n">HrInicio</span><span class="p">);</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_status_bloqueio</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">Bloqueado</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">));</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="k">SEQUENCE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">seq_HorariosBloqueio</span><span class="w"> </span><span class="k">START</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">INCREMENT</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>After creating the table, let's check the procedure that will handle the enabling/disabling the users. Be aware that on the procedure, I've set the database name where the table was stored, you can change it replacing the <code>DBATOOLS</code> text to the database name where you created the table.</p> +<div class="highlight"><pre><span></span><code><span class="k">IF</span><span class="w"> </span><span class="nf">OBJECT_ID</span><span class="p">(</span><span class="s1">&#39;dbo.sp_ValidarLogin&#39;</span><span class="p">)</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="k">NULL</span><span class="w"></span> +<span class="w"> </span><span class="k">EXEC</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;CREATE PROCEDURE dbo.sp_ValidarLogin AS RETURN 0;&#39;</span><span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="k">ALTER</span><span class="w"> </span><span class="k">PROC</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">sp_ValidarLogin</span><span class="w"></span> +<span class="k">AS</span><span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">);</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nf">CAST</span><span class="p">(</span><span class="nf">GETDATE</span><span class="p">()</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="cm">/* Block the ones that aren&#39;t blocked already and maches the time */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">&#39; DISABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Bloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> + + +<span class="w"> </span><span class="cm">/* Enable up who was blocked */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="s1">&#39; ENABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Unbloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="k">END</span><span class="p">;</span><span class="w"></span> +</code></pre></div> + +<p>Ok, so now all you have to do, is schedule a job to run that stored procedure from minute to minute. Again, the main idea is tell the procedure when a user must be blocked and when it'll be unblocked. </p> +<div class="highlight"><pre><span></span><code><span class="err"> -- Will block the user protheus from 10 AM till 15 PM</span> +<span class="err"> INSERT INTO dbo.HorariosBloqueio (Id, LoginName, HrInicio, HrTermino) VALUES (NEXT VALUE FOR seq_HorariosBloqueio, &#39;protheus&#39;, &#39;10:00:00&#39;, &#39;15:00:00&#39;);</span> +</code></pre></div>Bloqueando um usuário do SQL Server baseado em uma tabela de horários2020-11-14T07:00:00-03:002020-11-14T07:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-11-14:/pt/blocking-user-on-sql-server-based-on-schedule.html<p>Ok, algum tempo atrás, eu postei sobre como você pode impor limites às conexões do SQL Server utilizando o <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. Mas, e se você não pode utilizar ele? Você sempre pode bloquear logins usando uma trigger, mas eu não gosto da ideia de ter um select rodando a cada …</p><p>Ok, algum tempo atrás, eu postei sobre como você pode impor limites às conexões do SQL Server utilizando o <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. Mas, e se você não pode utilizar ele? Você sempre pode bloquear logins usando uma trigger, mas eu não gosto da ideia de ter um select rodando a cada login. Então, eu cheguei a esta solução, utilizando uma stored procedure, uma tabela e o Agent.</p> +<p>A ideia principal é armazenar o horário em que um usuário deve ser bloqueado pelo Agent. Abaixo você pode ver a criação da tabela:</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">Id</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/* horário de inicio do bloqueio */</span><span class="w"></span> +<span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/*horário de termino */</span><span class="w"></span> +<span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="k">DEFAULT</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="cm">/* 0 = desbloqueado, 1 = bloqueado */</span><span class="w"></span> +<span class="w"> </span><span class="k">PRIMARY</span><span class="w"> </span><span class="k">KEY</span><span class="w"> </span><span class="p">(</span><span class="n">Id</span><span class="p">)</span><span class="w"></span> +<span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="cm">/* regra para Não bloquear o usuário SA */</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_users</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">LoginName</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;sa&#39;</span><span class="p">));</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_hora_final_maior</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="n">HrInicio</span><span class="p">);</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_status_bloqueio</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">Bloqueado</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">));</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="k">SEQUENCE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">seq_HorariosBloqueio</span><span class="w"> </span><span class="k">START</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">INCREMENT</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>Depois de criar a tabela, vamos verificar a procedure que vai fazer todo o trabalho de habilitar/desabilitar os usuários. Fique ciente que, nesta procedure, eu defini o nome do banco onde a tabela está armazenada. Você pode substituir o nome <code>DBATOOLS</code> pelo o nome da sua base.</p> +<div class="highlight"><pre><span></span><code><span class="k">IF</span><span class="w"> </span><span class="nf">OBJECT_ID</span><span class="p">(</span><span class="s1">&#39;dbo.sp_ValidarLogin&#39;</span><span class="p">)</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="k">NULL</span><span class="w"></span> +<span class="w"> </span><span class="k">EXEC</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;CREATE PROCEDURE dbo.sp_ValidarLogin AS RETURN 0;&#39;</span><span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="k">ALTER</span><span class="w"> </span><span class="k">PROC</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">sp_ValidarLogin</span><span class="w"></span> +<span class="k">AS</span><span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">);</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nf">CAST</span><span class="p">(</span><span class="nf">GETDATE</span><span class="p">()</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="cm">/* Bloqueia os que ainda não estiverem bloqueados de acordo com a hora atual */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">&#39; DISABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Bloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> + + +<span class="w"> </span><span class="cm">/* Libera quem estava bloqueado */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="s1">&#39; ENABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Unbloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="k">END</span><span class="p">;</span><span class="w"></span> +</code></pre></div> + +<p>Certo, então agora tudo que temos que fazer é definir o job no Agent para rodar a procedure de minuto em minuto. Novamente, a ideia principal é chamar a procedure quando um usuário deve ser bloqueado e quando deve ser desbloqueado.</p> +<div class="highlight"><pre><span></span><code><span class="err"> -- Vai bloquear o usuário protheus das 10 AM até 15 PM</span> +<span class="err"> INSERT INTO dbo.HorariosBloqueio (Id, LoginName, HrInicio, HrTermino) VALUES (NEXT VALUE FOR seq_HorariosBloqueio, &#39;protheus&#39;, &#39;10:00:00&#39;, &#39;15:00:00&#39;);</span> +</code></pre></div>How to set columns on select using Entity Framework2020-10-28T19:00:00-03:002020-10-28T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-28:/en/select_specific_fields_with_efcore.html<p>So, you use Entity Framework Core, and you usually code your selects like the following, maybe you are getting too much data.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Running the query above, on my table, you'll get the following output, take a look …</p><p>So, you use Entity Framework Core, and you usually code your selects like the following, maybe you are getting too much data.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Running the query above, on my table, you'll get the following output, take a look at how many columns you are getting back from your database.</p> +<p><img alt="Screenshot with every single column" src="/images/ef_core_allcolumns.png"></p> +<p>In my case, I only care about the Title, PublishedData, and a small description. So to get back only these fields, we have a few options. In the first one, we'll set the fields and return them as a dynamic object, the second one, is to give the .NET a class to use. </p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + + <span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="k">new</span> <span class="p">{</span><span class="n">p</span><span class="p">.</span><span class="n">ProductID</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitPrice</span><span class="p">})</span> + <span class="c1">//.Select(p =&gt; new ProductDTO {p.ProductID, p.ProductName, p.UnitsInStock, p.UnitPrice})</span> + + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p><img alt="Screenshot with fewer columns and also fewer data size" src="/images/ef_core_less_columns.png"></p>Como definir as colunas no select utilizando Entity Framework2020-10-28T19:00:00-03:002020-10-28T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-28:/pt/select_specific_fields_with_efcore.html<p>Então, você utiliza Entity Framework Core e geralmente faz o seu selecto da seguinte forma, talvez você está retornando muitos dados.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Rodando a query acima, em uma base de testes você obtem o seguinte resultado, veja quantas …</p><p>Então, você utiliza Entity Framework Core e geralmente faz o seu selecto da seguinte forma, talvez você está retornando muitos dados.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Rodando a query acima, em uma base de testes você obtem o seguinte resultado, veja quantas colunas estão retornando da sua base de dados.</p> +<p><img alt="Print com todas as colunas" src="/images/ef_core_allcolumns.png"></p> +<p>No meu caso, eu só pretendo ter de volta as colunas Title, PublishedData e uma pequena descrição. Então para selecionar apenas estes campos, nós temos algumas opções. Na primeira, nós vamos definir os campos e retornar um objeto do tipo Dynamic. A segunda forma, é dar ao .NET o objeto a ser retornado, pode ser por exêmplo um DTO.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + + <span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="k">new</span> <span class="p">{</span><span class="n">p</span><span class="p">.</span><span class="n">ProductID</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitPrice</span><span class="p">})</span> + <span class="c1">//.Select(p =&gt; new ProductDTO {p.ProductID, p.ProductName, p.UnitsInStock, p.UnitPrice})</span> + + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p><img alt="Print com menos colunas e também menor quantidade de dados" src="/images/ef_core_less_columns.png"></p>Zabbix Running on Low Memory Mode2020-10-20T19:00:00-03:002020-10-20T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-20:/en/zabbix-running-on-low-memory-mode.html<p>Hey folks, another Zabbix post today. This one it's about increasing the Zabbix Server Cache. It's pretty common (if you have the default settings only) get a warning about your <code>Zabbix value cache running on low memory mode</code> at your dashboard or logs.</p> +<p><img alt="Zabbix Dashboard warning about the memory problem" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache graph 70% used" src="/images/zabbix_cache_filling.png"></p> +<p>To solve, go back to your Zabbix …</p><p>Hey folks, another Zabbix post today. This one it's about increasing the Zabbix Server Cache. It's pretty common (if you have the default settings only) get a warning about your <code>Zabbix value cache running on low memory mode</code> at your dashboard or logs.</p> +<p><img alt="Zabbix Dashboard warning about the memory problem" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache graph 70% used" src="/images/zabbix_cache_filling.png"></p> +<p>To solve, go back to your Zabbix config file (<code>zabbix_server.conf</code>) and look for the tag <em>CacheSize</em>. Uncomment it and set to a value bigger than 8M (8M it's the default value). In my case, we set a cache of 100M. After the change, restart the service.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: CacheSize</span> +<span class="c1"># Size of configuration cache, in bytes.</span> +<span class="c1"># Shared memory size for storing host, item and trigger data.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 128K-64G</span> +<span class="c1"># Default:</span> +<span class="na">CacheSize</span><span class="o">=</span><span class="s">100M #uncomment this line</span> +</code></pre></div> + +<p><img alt="Zabbix Dashboard resolved memory problem" src="/images/zabbix_low_memory_solved.png"></p> +<p>See ya folks.</p>Zabbix Running on Low Memory Mode2020-10-20T19:00:00-03:002020-10-20T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-20:/pt/zabbix-running-on-low-memory-mode.html<p>Olá pessoal! Trago hoje outro post sobre Zabbix. Este é sobre aumentar o cache do seu Zabbix Server. É perfeitamente comum (se você roda com as configurações padrões) receber avisos sobre <code>Zabbix value cache running on low memory mode</code> no seu dashboard ou arquivos de log.</p> +<p><img alt="Zabbix Dashboard alertando sobre problemas de memória" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache gráfico com 70% utilizado" src="/images/zabbix_cache_filling.png"></p> +<p>Para resolver, abra o …</p><p>Olá pessoal! Trago hoje outro post sobre Zabbix. Este é sobre aumentar o cache do seu Zabbix Server. É perfeitamente comum (se você roda com as configurações padrões) receber avisos sobre <code>Zabbix value cache running on low memory mode</code> no seu dashboard ou arquivos de log.</p> +<p><img alt="Zabbix Dashboard alertando sobre problemas de memória" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache gráfico com 70% utilizado" src="/images/zabbix_cache_filling.png"></p> +<p>Para resolver, abra o seu arquivo de configuração (<code>zabbix_server.conf</code>) e procure pela tag <em>CacheSize</em>. Descomente a linha e defina um valor maior que 8M (8M é o valor padrão). No meu caso, nós configuramos um cache de 100M. Depois da troca, reinicie o serviço para que o mesmo tome efeito.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: CacheSize</span> +<span class="c1"># Size of configuration cache, in bytes.</span> +<span class="c1"># Shared memory size for storing host, item and trigger data.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 128K-64G</span> +<span class="c1"># Default:</span> +<span class="na">CacheSize</span><span class="o">=</span><span class="s">100M #Descomente esta linha</span> +</code></pre></div> + +<p><img alt="Zabbix Dashboard resolved memory problem" src="/images/zabbix_low_memory_solved.png"></p> +<p>Até breve.</p>Monitoring MySQL Replication Status with PowerShell2020-10-14T19:00:00-03:002020-10-14T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-14:/en/monitoring-mysql-replication-with-powershell.html<p>I've been migration some bash scripts that I have to PowerShell, and it's time to migrate a script that monitors the replication of a MySQL database. The credit for the original script goes to <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. It's a simple script where I seek a few tags/fields that we get from …</p><p>I've been migration some bash scripts that I have to PowerShell, and it's time to migrate a script that monitors the replication of a MySQL database. The credit for the original script goes to <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. It's a simple script where I seek a few tags/fields that we get from <code>SHOW SLAVE STATUS\G</code> command, the fields are. <code>Slave_IO_Running</code>, <code>Slave_SQL_Running</code>, and <code>Seconds_Behind_Master</code>. I still need to figure out the proper way to store/read variables like usernames and passwords, if you have any tips, feel free to even make a pull request (<a href="https://github.com/sipmann/PowerShellScripts">here</a>) at the git where I'll store some scripts.</p> +<div class="highlight"><pre><span></span><code><span class="cm">&lt;#</span> +<span class="cm"> Variables definition</span> +<span class="cm">#&gt;</span> +<span class="nv">$MaxSeconds</span> <span class="p">=</span> <span class="n">120</span> <span class="c"># Max seconds behind master allowed</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;&#39;</span> + +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> +<span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s1">&#39;SHOW SLAVE STATUS \G&#39;</span><span class="p">)</span> + +<span class="c">#Debug data</span> +<span class="c">#$data = Get-Content &#39;c:\temp\sampleresult.txt&#39;</span> + +<span class="cm">&lt;# Parse the data #&gt;</span> +<span class="nv">$IORunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_IO_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SQLRunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_SQL_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$LastErrNo</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Last_Errno&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SecondsBh</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Seconds_Behind_Master&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="k">If</span> <span class="p">(</span><span class="nv">$IORunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SQLRunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SecondsBh</span> <span class="o">-gt</span> <span class="nv">$MaxSeconds</span><span class="p">)</span> <span class="p">{</span> + <span class="nv">$MailBody</span> <span class="p">=</span> <span class="s1">&#39;&lt;h1&gt;Problema na replicação&lt;/h1&gt;&lt;br&gt;&#39;</span> + + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; IO Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$IORunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; SQL Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SQLRunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39;Seconds Behind: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SecondsBh</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; Last Err No: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$LastErrNo</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + + <span class="cm">&lt;# Send e-mail, maybe some telegram message here too #&gt;</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Problemas na replicação&#39;</span> <span class="n">-bodyAsHtml</span> <span class="nv">$MailBody</span> <span class="n">-Credential</span> <span class="p">(</span><span class="nb">Get-Credential</span><span class="p">)</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> <span class="k">Else</span> <span class="p">{</span> + <span class="nb">Write-Host</span> <span class="s2">&quot;Up and running&quot;</span> +<span class="p">}</span> +</code></pre></div>Monitorando status de replicação do MySQL com PowerShell2020-10-14T19:00:00-03:002020-10-14T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-14:/pt/monitoring-mysql-replication-with-powershell.html<p>Tenho migrado alguns scripts bash que tenho para PowerShell, e chegou a vez de migrar um script de monitoramento de replicação do MySQL. Fica como crédito o script original do <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. É um script bem simples onde eu verifico algumas tags resultantes do <code>SHOW SLAVE STATUS\G</code>, são elas. <code>Slave_IO_Running …</code></p><p>Tenho migrado alguns scripts bash que tenho para PowerShell, e chegou a vez de migrar um script de monitoramento de replicação do MySQL. Fica como crédito o script original do <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. É um script bem simples onde eu verifico algumas tags resultantes do <code>SHOW SLAVE STATUS\G</code>, são elas. <code>Slave_IO_Running</code>, <code>Slave_SQL_Running</code> e <code>Seconds_Behind_Master</code>. Ainda preciso verificar formas mais corretas de armazenar/carregar as variáveis como usuários e senha, se tiver alguma dica, fique à vontade para inclusive fazer um pull request (<a href="https://github.com/sipmann/PowerShellScripts">aqui</a>) no repositório onde vou armazenar alguns dos meus scripts.</p> +<div class="highlight"><pre><span></span><code><span class="cm">&lt;#</span> +<span class="cm"> Variables definition</span> +<span class="cm">#&gt;</span> +<span class="nv">$MaxSeconds</span> <span class="p">=</span> <span class="n">120</span> <span class="c"># Max seconds behind master allowed</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;&#39;</span> + +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> +<span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s1">&#39;SHOW SLAVE STATUS \G&#39;</span><span class="p">)</span> + +<span class="c">#Debug data</span> +<span class="c">#$data = Get-Content &#39;c:\temp\sampleresult.txt&#39;</span> + +<span class="cm">&lt;# Parse the data #&gt;</span> +<span class="nv">$IORunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_IO_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SQLRunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_SQL_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$LastErrNo</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Last_Errno&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SecondsBh</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Seconds_Behind_Master&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="k">If</span> <span class="p">(</span><span class="nv">$IORunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SQLRunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SecondsBh</span> <span class="o">-gt</span> <span class="nv">$MaxSeconds</span><span class="p">)</span> <span class="p">{</span> + <span class="nv">$MailBody</span> <span class="p">=</span> <span class="s1">&#39;&lt;h1&gt;Problema na replicação&lt;/h1&gt;&lt;br&gt;&#39;</span> + + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; IO Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$IORunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; SQL Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SQLRunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39;Seconds Behind: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SecondsBh</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; Last Err No: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$LastErrNo</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + + <span class="cm">&lt;# Send e-mail, maybe some telegram message here too #&gt;</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Problemas na replicação&#39;</span> <span class="n">-bodyAsHtml</span> <span class="nv">$MailBody</span> <span class="n">-Credential</span> <span class="p">(</span><span class="nb">Get-Credential</span><span class="p">)</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> <span class="k">Else</span> <span class="p">{</span> + <span class="nb">Write-Host</span> <span class="s2">&quot;Up and running&quot;</span> +<span class="p">}</span> +</code></pre></div>Microsoft Against Covid2020-10-03T19:00:00-03:002020-10-03T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-03:/en/microsoft-against-covid.html<p>Has your job been affected by covid? Well, last week I've posted on <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by …</p><p>Has your job been affected by covid? Well, last week I've posted on <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by covid pandemic. </p> +<p>To see more details about if you were eligible, access <a href="https://docs.microsoft.com/en-us/learn/certifications/skillingoffer">https://docs.microsoft.com/en-us/learn/certifications/skillingoffer</a>.</p>Microsoft Contra Covid2020-10-03T19:00:00-03:002020-10-03T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-03:/pt/microsoft-against-covid.html<p>Você teve seu trabalho afetado pela pandemia do covid? Bom, na última semana eu postei no <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> sobre um Voucher para certificação gratuita que a Microsoft estava distribuindo durante o evento Microsoft Ignite. Depois disto, eu fiquei sabendo que eles também estão entregando grandes discontos para quem teve o seu …</p><p>Você teve seu trabalho afetado pela pandemia do covid? Bom, na última semana eu postei no <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> sobre um Voucher para certificação gratuita que a Microsoft estava distribuindo durante o evento Microsoft Ignite. Depois disto, eu fiquei sabendo que eles também estão entregando grandes discontos para quem teve o seu trabalho afetado pela pandemia do covid. </p> +<p>Para saber se você pode receber este desconto, acesse <a href="https://docs.microsoft.com/en-us/learn/certifications/skillingoffer">https://docs.microsoft.com/en-us/learn/certifications/skillingoffer</a>.</p>The power of PowerShell2020-09-21T19:00:00-03:002020-09-21T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-09-21:/en/the-power-of-powershell.html<p>As a long time Linux user, I've automated a few things with bash scripts and stayed away from PowerShell... I've moved to a Windows environment a few years ago and still, haven gave a shot to PS. But why not? I've made a few scripts to automate some tasks at …</p><p>As a long time Linux user, I've automated a few things with bash scripts and stayed away from PowerShell... I've moved to a Windows environment a few years ago and still, haven gave a shot to PS. But why not? I've made a few scripts to automate some tasks at a Protheus server.</p> +<p>I found the PS scripts being easy to read and understand. Bellow, we have a script to remove files filtering their extension (or no extension at all like the following script). </p> +<div class="highlight"><pre><span></span><code><span class="nb">Get-ChildItem</span> <span class="s2">&quot;C:\TOTVS\protheus_data\system&quot;</span> <span class="o">-File</span> <span class="n">-Filter</span> <span class="p">*.</span> <span class="p">|</span> <span class="nb">Move-Item</span> <span class="n">-Force</span> <span class="n">-Destination</span> <span class="p">{</span> + <span class="cm">&lt;# Diretory where the files will be moved. You can use Date formats to help name it #&gt;</span> + <span class="cm">&lt;# LastWriteTime proprtie from the current file #&gt;</span> + <span class="nv">$dir</span> <span class="p">=</span> <span class="s2">&quot;C:\bad_files\{0:yyyy\\MM\\dd}&quot;</span> <span class="o">-f</span> <span class="nv">$_</span><span class="p">.</span><span class="n">LastWriteTime</span> + <span class="nv">$null</span> <span class="p">=</span> <span class="n">mkdir</span> <span class="nv">$dir</span> <span class="n">-Force</span> + <span class="s2">&quot;$dir\</span><span class="p">$(</span><span class="nv">$_</span><span class="p">.</span><span class="n">Name</span><span class="p">)</span><span class="s2">&quot;</span> +<span class="p">}</span> +</code></pre></div> + +<p>Have you ever been in the need to remove files based on other file content? Bello a script where I read a file that has the names of files that I want to remove. </p> +<div class="highlight"><pre><span></span><code><span class="k">foreach</span><span class="p">(</span><span class="nv">$line</span> <span class="k">in</span> <span class="nb">Get-Content</span> <span class="p">.\</span><span class="n">Desktop</span><span class="p">\</span><span class="n">bad_files</span><span class="p">.</span><span class="n">txt</span><span class="p">)</span> <span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="nb">Test-Path</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">))</span> <span class="p">{</span> + <span class="nb">Remove-Item</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">)</span> + <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> + <span class="nb">echo </span><span class="nv">$line</span> <span class="p">+</span> <span class="s1">&#39; - File not found&#39;</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>And a bonus script to stop/start services (if you handle some Protheus Server, you know why I do that).</p> +<div class="highlight"><pre><span></span><code><span class="nv">$servicesNames</span> <span class="p">=</span> <span class="s1">&#39;app_main&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker1&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker2&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker3&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker4&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker5&#39;</span> + +<span class="nb">Write-host</span> <span class="s2">&quot;Stoping Services&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Stopping: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nv">$SrvPID</span> <span class="p">=</span> <span class="p">(</span><span class="nb">get-wmiobject</span> <span class="n">win32_service</span> <span class="p">|</span> <span class="nb">where </span><span class="p">{</span> <span class="nv">$_</span><span class="p">.</span><span class="n">name</span> <span class="o">-eq</span> <span class="nv">$srv</span><span class="p">}).</span><span class="n">processID</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PID: &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> + + <span class="cm">&lt;# Force if the proccess is stucked #&gt;</span> + <span class="nb">Stop-Process</span> <span class="nv">$SrvPID</span> <span class="n">-Force</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PDI &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> <span class="p">+</span> <span class="s2">&quot; stopped&quot;</span> +<span class="p">}</span> + + +<span class="nb">Write-host</span> <span class="s2">&quot;Starting Services&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Starting: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nb">Start-Service</span> <span class="nv">$srv</span> +<span class="p">}</span> +</code></pre></div> + +<p>Do you have any automated script? Share with us :)</p>O poder do PowerShell2020-09-21T19:00:00-03:002020-09-21T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-09-21:/pt/the-power-of-powershell.html<p>Como um usuário linux por muito tempo, eu automatizei algumas tarefas com scripts bash e fiquei longe do PowerShell... Voltei a utilizar Windows alguns anos atrás e ainda assim, não dei uma chance ao PS. Mas porque não? Eu fiz alguns scripts para automatizar algumas tarefas em um servidor Protheus …</p><p>Como um usuário linux por muito tempo, eu automatizei algumas tarefas com scripts bash e fiquei longe do PowerShell... Voltei a utilizar Windows alguns anos atrás e ainda assim, não dei uma chance ao PS. Mas porque não? Eu fiz alguns scripts para automatizar algumas tarefas em um servidor Protheus.</p> +<p>Eu acabei achando os scripts PS de fácil leitura e entendimento. Abaixo, nós temos um script para remover arquivos filtrando pela sua extensão (ou sem extensão alguma no caso do script em questão).</p> +<div class="highlight"><pre><span></span><code><span class="nb">Get-ChildItem</span> <span class="s2">&quot;C:\TOTVS\protheus_data\system&quot;</span> <span class="o">-File</span> <span class="n">-Filter</span> <span class="p">*.</span> <span class="p">|</span> <span class="nb">Move-Item</span> <span class="n">-Force</span> <span class="n">-Destination</span> <span class="p">{</span> + <span class="cm">&lt;# Diretório ao qual os arquivos vão ser movidos. Você pode utilizar formatos de data para nomear os diretórios #&gt;</span> + <span class="cm">&lt;# LastWriteTime é a propriedade do arquivo corrent #&gt;</span> + <span class="nv">$dir</span> <span class="p">=</span> <span class="s2">&quot;C:\bad_files\{0:yyyy\\MM\\dd}&quot;</span> <span class="o">-f</span> <span class="nv">$_</span><span class="p">.</span><span class="n">LastWriteTime</span> + <span class="nv">$null</span> <span class="p">=</span> <span class="n">mkdir</span> <span class="nv">$dir</span> <span class="n">-Force</span> + <span class="s2">&quot;$dir\</span><span class="p">$(</span><span class="nv">$_</span><span class="p">.</span><span class="n">Name</span><span class="p">)</span><span class="s2">&quot;</span> +<span class="p">}</span> +</code></pre></div> + +<p>Você já precisou remover arquivos baseado no conteúdo de outro arquivo? Abaixo um script onde eu leio um arquivo que contem os nomes de arquivos que eu desejo remover. </p> +<div class="highlight"><pre><span></span><code><span class="k">foreach</span><span class="p">(</span><span class="nv">$line</span> <span class="k">in</span> <span class="nb">Get-Content</span> <span class="p">.\</span><span class="n">Desktop</span><span class="p">\</span><span class="n">bad_files</span><span class="p">.</span><span class="n">txt</span><span class="p">)</span> <span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="nb">Test-Path</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">))</span> <span class="p">{</span> + <span class="nb">Remove-Item</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">)</span> + <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> + <span class="nb">echo </span><span class="nv">$line</span> <span class="p">+</span> <span class="s1">&#39; - File not found&#39;</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>E um script bonus para parar e iniciar serviços (se você gerencia um servidor Protheus, você sabe o porque eu faço isto).</p> +<div class="highlight"><pre><span></span><code><span class="nv">$servicesNames</span> <span class="p">=</span> <span class="s1">&#39;app_main&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker1&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker2&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker3&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker4&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker5&#39;</span> + +<span class="nb">Write-host</span> <span class="s2">&quot;Parando Serviços&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Parando: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nv">$SrvPID</span> <span class="p">=</span> <span class="p">(</span><span class="nb">get-wmiobject</span> <span class="n">win32_service</span> <span class="p">|</span> <span class="nb">where </span><span class="p">{</span> <span class="nv">$_</span><span class="p">.</span><span class="n">name</span> <span class="o">-eq</span> <span class="nv">$srv</span><span class="p">}).</span><span class="n">processID</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PID: &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> + + <span class="cm">&lt;# Força a parada caso o serviço esteja travado #&gt;</span> + <span class="nb">Stop-Process</span> <span class="nv">$ServicePID</span> <span class="n">-Force</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PDI &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> <span class="p">+</span> <span class="s2">&quot; parado&quot;</span> +<span class="p">}</span> + + +<span class="nb">Write-host</span> <span class="s2">&quot;Inicializando Serviços&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Inicializando: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nb">Start-Service</span> <span class="nv">$srv</span> +<span class="p">}</span> +</code></pre></div> + +<p>Você tem algum script de automação? Compartilhe conosco :)</p>Top Level Statement in C# 92020-07-29T19:00:00-03:002020-07-29T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-29:/en/top_level_statement_csharp_9.html<p>Hey folks, I'm coming along to tell you a few things about the new feature of C# 9. Every time you want to start a new project, you always have the same Main File, with the same structure. At the next version of C# (version 9), we'll have a new …</p><p>Hey folks, I'm coming along to tell you a few things about the new feature of C# 9. Every time you want to start a new project, you always have the same Main File, with the same structure. At the next version of C# (version 9), we'll have a new feature called <code>Top Level Statement</code>. With that, we'll be able to code our app without any namespace/class/public void static main structure. Take a look at the code below.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="s">&quot;Hello World!&quot;</span><span class="p">);</span> +</code></pre></div> + +<p>It looks pretty simple, but with this, you can play around with your code, and even code a simple/tiny Web API. To start playing with the new features, firstly download the <a href="https://dotnet.microsoft.com/download/dotnet/5.0">.net 5 SDK</a> and change your <code>.csproj</code> file to target the .net 5 and language preview like bellow.</p> +<div class="highlight"><pre><span></span><code><span class="nt">&lt;Project</span> <span class="na">Sdk=</span><span class="s">&quot;Microsoft.NET.Sdk&quot;</span><span class="nt">&gt;</span> + <span class="nt">&lt;PropertyGroup&gt;</span> + <span class="nt">&lt;OutputType&gt;</span>Exe<span class="nt">&lt;/OutputType&gt;</span> + <span class="nt">&lt;TargetFramework&gt;</span>net5.0<span class="nt">&lt;/TargetFramework&gt;</span> + <span class="nt">&lt;LangVersion&gt;</span>preview<span class="nt">&lt;/LangVersion&gt;</span> + <span class="nt">&lt;/PropertyGroup&gt;</span> +<span class="nt">&lt;/Project&gt;</span> +</code></pre></div> + +<p>And you're ready to play with the awesome features available in the preview. Let's code a way to get the image of the day from NASA API and print the Picture of the Day. No awesome code here, it's really a way to show how simple a simple call could be. After here, why not save the image in a file? Maybe send the file over telegram?</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Text.Json</span><span class="p">;</span> + +<span class="kt">var</span> <span class="n">API</span> <span class="p">=</span> <span class="s">&quot;https://api.nasa.gov/planetary/apod?hd=true&amp;api_key=DEMO_KEY&quot;</span><span class="p">;</span> +<span class="kt">var</span> <span class="n">cli</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + +<span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">cli</span><span class="p">.</span><span class="n">GetAsync</span><span class="p">(</span><span class="n">API</span><span class="p">);</span> +<span class="kt">var</span> <span class="n">data</span> <span class="p">=</span> <span class="n">JsonSerializer</span><span class="p">.</span><span class="n">Deserialize</span><span class="p">&lt;</span><span class="n">NasaApi</span><span class="p">&gt;(</span><span class="k">await</span> <span class="n">response</span><span class="p">.</span><span class="n">Content</span><span class="p">.</span><span class="n">ReadAsStringAsync</span><span class="p">());</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">Url</span><span class="p">);</span> +</code></pre></div> + +<p>That's it for today folks. Keep an eye open for the awesome features C# 9 will bring to us, there's plenty more features already available.</p>Top Level Statement no C# 92020-07-29T19:00:00-03:002020-07-29T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-29:/pt/top_level_statement_csharp_9.html<p>Olá pessoal, venho hoje falar sobre uma novidade que estará disponível na versão 9 do C#. Toda vez que você deseja criar um novo projeto, você sempre tem o mesmo arquivo Main, com a mesma estrutura. Na próxima versão do C# (versão 9), nós teremos uma nova funcionalidade chamada <code>Top …</code></p><p>Olá pessoal, venho hoje falar sobre uma novidade que estará disponível na versão 9 do C#. Toda vez que você deseja criar um novo projeto, você sempre tem o mesmo arquivo Main, com a mesma estrutura. Na próxima versão do C# (versão 9), nós teremos uma nova funcionalidade chamada <code>Top Level Statement</code>. Com isto, poderemos programar a nossa aplicação sem toda aquela estrutura de <code>namespace/class/public void static main</code>. Veja o código abaixo.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="s">&quot;Hello World!&quot;</span><span class="p">);</span> +</code></pre></div> + +<p>Parece muito simples, não é? Com isto, você pode brincar com seu código e até mesmo programar uma pequena WEB API. Para começar a brincar com estas novas <em>features</em>, primeiramente faça o download do preview do <a href="https://dotnet.microsoft.com/download/dotnet/5.0">.net 5 SDK</a> e modifique o seu arquivo <code>.csproj</code> para apontar o framework para <code>.net5.0</code> e a versão de preview da linguagem. Abaixo como uma aplicação de console deve ficar.</p> +<div class="highlight"><pre><span></span><code><span class="nt">&lt;Project</span> <span class="na">Sdk=</span><span class="s">&quot;Microsoft.NET.Sdk&quot;</span><span class="nt">&gt;</span> + <span class="nt">&lt;PropertyGroup&gt;</span> + <span class="nt">&lt;OutputType&gt;</span>Exe<span class="nt">&lt;/OutputType&gt;</span> + <span class="nt">&lt;TargetFramework&gt;</span>net5.0<span class="nt">&lt;/TargetFramework&gt;</span> + <span class="nt">&lt;LangVersion&gt;</span>preview<span class="nt">&lt;/LangVersion&gt;</span> + <span class="nt">&lt;/PropertyGroup&gt;</span> +<span class="nt">&lt;/Project&gt;</span> +</code></pre></div> + +<p>E assim você está pronto para brincar com as novas funcionalidades que estão disponíveis na versão preview. Vamos programar uma aplicação simples que faz uma requisição na API da NASA e printe a Imagem do Dia no console. Não é nenhum código mirabolante, é simplesmente para exemplificar o quão simples uma simples chamada de API pode ser. Feito isto, porque não salvar a imagem como um arquivo? Ou então enviar essa imagem via telegram?</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Text.Json</span><span class="p">;</span> + +<span class="kt">var</span> <span class="n">API</span> <span class="p">=</span> <span class="s">&quot;https://api.nasa.gov/planetary/apod?hd=true&amp;api_key=DEMO_KEY&quot;</span><span class="p">;</span> +<span class="kt">var</span> <span class="n">cli</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + +<span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">cli</span><span class="p">.</span><span class="n">GetAsync</span><span class="p">(</span><span class="n">API</span><span class="p">);</span> +<span class="kt">var</span> <span class="n">data</span> <span class="p">=</span> <span class="n">JsonSerializer</span><span class="p">.</span><span class="n">Deserialize</span><span class="p">&lt;</span><span class="n">NasaApi</span><span class="p">&gt;(</span><span class="k">await</span> <span class="n">response</span><span class="p">.</span><span class="n">Content</span><span class="p">.</span><span class="n">ReadAsStringAsync</span><span class="p">());</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">Url</span><span class="p">);</span> +</code></pre></div> + +<p>Por hoje é isso. Fique de olho nas novas features que o C# 9 vai nos trazer. Já temos várias disponíveis hoje para testar, esta é apenas uma delas.</p>Zabbix poller processes more than 75%2020-07-02T19:00:00-03:002020-07-02T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-02:/en/zabbix-poller-processes-more-than-75.html<p>Hey folks, this is the third post about tweaking the Zabbix configurations. All changes that I've suggested here were based on a Zabbix Server with 50+ hosts. Another thing that can happen to your server, it's the poller get overwhelmed by the amount of servers that need to be polled …</p><p>Hey folks, this is the third post about tweaking the Zabbix configurations. All changes that I've suggested here were based on a Zabbix Server with 50+ hosts. Another thing that can happen to your server, it's the poller get overwhelmed by the amount of servers that need to be polled plus the ones that are not responding. Bellow two images where you can see the log and the graphic where you can see the usage percent. </p> +<p><img alt="Dashboard log about the poller processes" src="/images/zabbix_pooler.png"></p> +<p><img alt="Graph showing the utilization percent of each collector" src="/images/zabbix_pooler_3.png"></p> +<p>To solve, let's go back to the <code>zabbix_server.conf</code> file and find two variables, <code>StartPollers</code> and <code>StartPollersUnreachable</code>. Increase them as needed. There's no magic number, you must see what works for you. But keep in mind that the <code>StartPollersUnreachable</code> is responsible for that host that can't be "reached" (of course) and will hold your poller more time.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPollers</span> +<span class="c1"># Number of pre-forked instances of pollers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollers</span><span class="o">=</span><span class="s">20</span> + +<span class="c1">#...</span> + +<span class="c1">### Option: StartPollersUnreachable</span> +<span class="c1"># Number of pre-forked instances of pollers for unreachable hosts (including IPMI and Java).</span> +<span class="c1"># At least one poller for unreachable hosts must be running if regular, IPMI or Java pollers</span> +<span class="c1"># are started.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollersUnreachable</span><span class="o">=</span><span class="s">5</span> +</code></pre></div> + +<p>After the change, restart the server and wait a few moments and take a look again at your dashboard. Bellow the effect that I've got.</p> +<p><img alt="Graph showing the new utilization percent of the processes after the changes" src="/images/zabbix_pooler_4.png"></p>Zabbix poller processes more than 75%2020-07-02T19:00:00-03:002020-07-02T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-02:/pt/zabbix-poller-processes-more-than-75.html<p>Este é o terceiro post sobre configurações para o Zabbix. Todas as alterações que eu sugiro nestes posts, são baseadas em um servidor com 50+ hosts. Outro problema que pode ocorrer em seu servidor, é o poller de informações ficar sobrecarregado pela quantidade de servidores que ele precisa pegar carga …</p><p>Este é o terceiro post sobre configurações para o Zabbix. Todas as alterações que eu sugiro nestes posts, são baseadas em um servidor com 50+ hosts. Outro problema que pode ocorrer em seu servidor, é o poller de informações ficar sobrecarregado pela quantidade de servidores que ele precisa pegar carga de informações juntamente com os servidores que não respondem a requisição. Abaixo duas imagens onde você pode ver o log e um gráfico onde aparecem os percentuais de uso dos poller. </p> +<p><img alt="Dashboard log sobre o processo do poller" src="/images/zabbix_pooler.png"></p> +<p><img alt="Gráfico mostrando o percentual de utilização de cada coletor" src="/images/zabbix_pooler_3.png"></p> +<p>Para resolver o problema acima, vamos voltar ao arquivo de configuração <code>zabbix_server.conf</code> e localizar duas variáveis, <code>StartPollers</code> e <code>StartPollersUnreachable</code>. Aumente o valor delas conforme necessário. Não existe um número mágico, você deve verificar o que melhor funciona para você. Mas tenha em mente que <code>StartPollersUnreachable</code> é responsável por aqueles hosts que não respondem ou não são localizados e irão segurar a thread do poller por mais tempo, causando uma fila e um maior processamento/tempo de atualização.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPollers</span> +<span class="c1"># Number of pre-forked instances of pollers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollers</span><span class="o">=</span><span class="s">20</span> + +<span class="c1">#...</span> + +<span class="c1">### Option: StartPollersUnreachable</span> +<span class="c1"># Number of pre-forked instances of pollers for unreachable hosts (including IPMI and Java).</span> +<span class="c1"># At least one poller for unreachable hosts must be running if regular, IPMI or Java pollers</span> +<span class="c1"># are started.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollersUnreachable</span><span class="o">=</span><span class="s">5</span> +</code></pre></div> + +<p>Depois da alteração, reinicie o serviço e espere alguns momentos e veja o seu dashboard novamente. Abaixo o efeito que a troca teve em um dos servidores que acompanho.</p> +<p><img alt="Gráfico mostrando os novos percentuais de utilização dos processos após as alterações" src="/images/zabbix_pooler_4.png"></p>Monitoring a Website heath with Azure Functions2020-06-22T19:00:00-03:002020-06-22T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-06-22:/en/monitoring-website-heath-with-azure-functions.html<p>Sometimes you get your self in need to monitor a website's health or it's content for changes. Of course, there's plenty of options out there, but for the sake of curiosity, let's code our own to see what we can do. First things first. Everything you'll see here, you can …</p><p>Sometimes you get your self in need to monitor a website's health or it's content for changes. Of course, there's plenty of options out there, but for the sake of curiosity, let's code our own to see what we can do. First things first. Everything you'll see here, you can achieve with the <a href="https://azure.microsoft.com/free/">free tier</a> of azure.</p> +<p>The main idea of our app will be to monitor website health (status code). To create a new Azure Function Project, follow the steps below.</p> +<p><img alt="Steps to create a azure function project" src="/images/azure_functions.gif"></p> +<p>After creating the project, you'll have a few files. Open your main file and start coding. The main file will have a function called <code>Run</code> and you can code your request method. I've created an <code>async</code> method to make the request and log the output at the console. The full code you can see below.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Linq</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Threading.Tasks</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs.Host</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Extensions.Logging</span><span class="p">;</span> + +<span class="k">namespace</span> <span class="nn">Sipmann.CheckMySite</span> +<span class="p">{</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">class</span> <span class="nc">HttpCheck</span> + <span class="p">{</span> + + <span class="k">private</span> <span class="k">static</span> <span class="k">async</span> <span class="n">Task</span> <span class="nf">GetTask</span><span class="p">(</span><span class="kt">string</span> <span class="n">url</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="kt">var</span> <span class="n">request</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpRequestMessage</span><span class="p">(</span><span class="n">HttpMethod</span><span class="p">.</span><span class="n">Get</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span> + + <span class="kt">var</span> <span class="n">client</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + <span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">client</span><span class="p">.</span><span class="n">SendAsync</span><span class="p">(</span><span class="n">request</span><span class="p">);</span> + + <span class="k">if</span> <span class="p">(</span><span class="n">response</span><span class="p">.</span><span class="n">IsSuccessStatusCode</span><span class="p">)</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="k">else</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} não esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> + +<span class="na"> [FunctionName(&quot;HttpCheck&quot;)]</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">void</span> <span class="nf">Run</span><span class="p">([</span><span class="n">TimerTrigger</span><span class="p">(</span><span class="s">&quot;0 */5 * * * *&quot;</span><span class="p">)]</span><span class="n">TimerInfo</span> <span class="n">myTimer</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="kt">var</span> <span class="n">urls</span> <span class="p">=</span> <span class="k">new</span><span class="p">[]{</span><span class="s">&quot;https://www.sipmann.com&quot;</span><span class="p">,</span> <span class="s">&quot;https://www.canezecanez.com.br&quot;</span><span class="p">};</span> + + <span class="c1">// Start every request and wait for them all to complete</span> + <span class="n">Task</span><span class="p">.</span><span class="n">WaitAll</span><span class="p">(</span><span class="n">urls</span><span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">url</span> <span class="p">=&gt;</span> <span class="n">GetTask</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">log</span><span class="p">)).</span><span class="n">ToArray</span><span class="p">());</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;Finalizou a fila&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>Now you can enhance the function and maybe send some alerts like a Telegram message when one of your sites went down.</p>Monitorando a disponibilidade de um Website com Azure Functions2020-06-22T19:00:00-03:002020-06-22T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-06-22:/pt/monitoring-website-heath-with-azure-functions.html<p>Algumas vezes você se depara com a necessidade de monitorar a disponibilidade de um website ou mudanças em seu conteúdo. É claro que temos diversas opções disponíveis no mercado, mas para fins de curiosidade, vamos programar o nosso próprio e ver o que podemos fazer. Primeiramente, tudo que você ver …</p><p>Algumas vezes você se depara com a necessidade de monitorar a disponibilidade de um website ou mudanças em seu conteúdo. É claro que temos diversas opções disponíveis no mercado, mas para fins de curiosidade, vamos programar o nosso próprio e ver o que podemos fazer. Primeiramente, tudo que você ver aqui, você pode utilizar o <a href="https://azure.microsoft.com/free/">tier gratuito</a> da Azure.</p> +<p>A ideia principal da nossa aplicação vai ser monitorar a disponibilidade do website (status code). Para criar um projeto de Azure Function, siga os passos abaixo.</p> +<p><img alt="Passos para criar um projeto Azure Functions" src="/images/azure_functions.gif"></p> +<p>Depois de criar o projeto, você vai ter alguns arquivos. Abra o arquivo principal (<code>HttpCheck.cs</code> no meu caso) e começe a programar. O arquivo principal terá uma função chamada <code>Run</code> e você pode progamar nela o seu request. Eu criei um método <code>async</code> para fazer as requisições e printar a saída diretamente no console. O código completo pode ser visto abaixo.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Linq</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Threading.Tasks</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs.Host</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Extensions.Logging</span><span class="p">;</span> + +<span class="k">namespace</span> <span class="nn">Sipmann.CheckMySite</span> +<span class="p">{</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">class</span> <span class="nc">HttpCheck</span> + <span class="p">{</span> + + <span class="k">private</span> <span class="k">static</span> <span class="k">async</span> <span class="n">Task</span> <span class="nf">GetTask</span><span class="p">(</span><span class="kt">string</span> <span class="n">url</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="kt">var</span> <span class="n">request</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpRequestMessage</span><span class="p">(</span><span class="n">HttpMethod</span><span class="p">.</span><span class="n">Get</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span> + + <span class="kt">var</span> <span class="n">client</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + <span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">client</span><span class="p">.</span><span class="n">SendAsync</span><span class="p">(</span><span class="n">request</span><span class="p">);</span> + + <span class="k">if</span> <span class="p">(</span><span class="n">response</span><span class="p">.</span><span class="n">IsSuccessStatusCode</span><span class="p">)</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="k">else</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} não esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> + +<span class="na"> [FunctionName(&quot;HttpCheck&quot;)]</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">void</span> <span class="nf">Run</span><span class="p">([</span><span class="n">TimerTrigger</span><span class="p">(</span><span class="s">&quot;0 */5 * * * *&quot;</span><span class="p">)]</span><span class="n">TimerInfo</span> <span class="n">myTimer</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="c1">// URL a verificar a saúde</span> + <span class="kt">var</span> <span class="n">urls</span> <span class="p">=</span> <span class="k">new</span><span class="p">[]{</span><span class="s">&quot;https://www.sipmann.com&quot;</span><span class="p">,</span> <span class="s">&quot;https://www.canezecanez.com.br&quot;</span><span class="p">};</span> + + <span class="c1">// Starta cada request e aguarda todos de uma vez só</span> + <span class="n">Task</span><span class="p">.</span><span class="n">WaitAll</span><span class="p">(</span><span class="n">urls</span><span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">url</span> <span class="p">=&gt;</span> <span class="n">GetTask</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">log</span><span class="p">)).</span><span class="n">ToArray</span><span class="p">());</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;Finalizou a fila&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>Agora você pode melhorar a função e talvez enviar alguns alertas. Como por exêmplo mensagens no Telegram quando um dos sites ficar off (status code 404).</p>Azure Data Fundamentals certification with 80% discount2020-06-09T12:30:00-03:002020-06-09T12:30:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-06-09:/en/azure-data-fundamentals-certification-80-discount.html<p>Hey folks, if you want to achieve some certification this year, keep an eye open for vouchers. A few months ago, Oracle released a set of free courses with certifications. Now it's Microsoft time. Microsoft is updating they're certifications and we have a voucher of 80% discount using the coupon …</p><p>Hey folks, if you want to achieve some certification this year, keep an eye open for vouchers. A few months ago, Oracle released a set of free courses with certifications. Now it's Microsoft time. Microsoft is updating they're certifications and we have a voucher of 80% discount using the coupon <strong>DP900Norfolk</strong> at the checkout of the beta certification DP-900. </p> +<p>Be aware that this certification is in beta and the result won't be instantly available as the regular ones. Access the following link and schedule your exam. <a href="https://docs.microsoft.com/pt-br/learn/certifications/exams/dp-900" target="_blank">https://docs.microsoft.com/pt-br/learn/certifications/exams/dp-900</a>.</p> +<p><strong>Update:</strong> There is a 80% voucher also for <a href="https://docs.microsoft.com/en-us/learn/certifications/azure-ai-fundamentals" target="_blank">https://docs.microsoft.com/en-us/learn/certifications/azure-ai-fundamentals</a>. Voucher: <strong>AI900Saratoga</strong></p>Zabbix ICMP pinger processes more than 75%2020-05-25T16:00:00-03:002020-05-25T16:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-05-25:/en/zabbix-icmp-pinger-processes-more-than-75.html<p>So your monitoring sytems have grown and your zabbix started loggin "Zabbix icmp pinger processes more than 75% busy" at the dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>All you have to do is open your config file (<code>/etc/zabbix/zabbix_server.conf</code>) and find the a tag named <code>StartPingers</code>. It'll be commented by default. Uncomment it …</p><p>So your monitoring sytems have grown and your zabbix started loggin "Zabbix icmp pinger processes more than 75% busy" at the dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>All you have to do is open your config file (<code>/etc/zabbix/zabbix_server.conf</code>) and find the a tag named <code>StartPingers</code>. It'll be commented by default. Uncomment it and set it's value to something like 3 or 4. It should solve your problem.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPingers</span> +<span class="c1"># Number of pre-forked instances of ICMP pingers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="nv">StartPingers</span><span class="o">=</span><span class="m">4</span> +</code></pre></div> + +<h2>How many Pingers do I need?</h2> +<p>Well, there is no exact answer to this. If you set it too high, you'll be wasting resources. The best way to solve, it's increasing them as soon as you notice the percentage growing.</p>Zabbix ICMP pinger processes more than 75%2020-05-25T16:00:00-03:002020-05-25T16:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-05-25:/pt/zabbix-icmp-pinger-processes-more-than-75.html<p>Então o seu systema de monitoramento creasceu e o seu Zabbix começou a printar "<em>Zabbix icmp pinger processes more than 75% busy</em>" no seu dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>Tudo que você tem a fazer é abrir o seu arquivo de configuração (<code>/etc/zabbix/zabbix_server.conf</code>) e localizar a tag chamada <code>StartPingers</code>. Ela deve …</p><p>Então o seu systema de monitoramento creasceu e o seu Zabbix começou a printar "<em>Zabbix icmp pinger processes more than 75% busy</em>" no seu dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>Tudo que você tem a fazer é abrir o seu arquivo de configuração (<code>/etc/zabbix/zabbix_server.conf</code>) e localizar a tag chamada <code>StartPingers</code>. Ela deve estar comentáda por padrão. Descomente a lina e define o seu valor para algo como 3 or 4. Deve resolver seu problema, ao menos até um próximo crescimento do seu monitoramento.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPingers</span> +<span class="c1"># Number of pre-forked instances of ICMP pingers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="nv">StartPingers</span><span class="o">=</span><span class="m">4</span> +</code></pre></div>Zabbix Server Out of Memory2020-02-27T19:00:00-03:002020-02-27T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-02-27:/en/zabbix-server-out-of-memory-crash.html<p>Do you have a crashing Zabbix Server and looking through the log <code>/var/log/zabbix/zabbix_server.log</code> you see the following out of memory message?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c,line …</code></pre></div><p>Do you have a crashing Zabbix Server and looking through the log <code>/var/log/zabbix/zabbix_server.log</code> you see the following out of memory message?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: please increase CacheSize configuration parameter +</code></pre></div> + +<p>Besides the clear solution to the error, that's a common issue on servers that have a few monitoring items on it (servers, switches, firewalls, databases, etc...). To solve, go to your zabbix_server.conf and look for the CacheSize property and set it to a higher value. Its default should be 8M. At a customer that has somewhere between 4 servers, 7 firewalls/appliances, and a few other things, a 32M did the job, but you can set up to 8G.</p> +<p>See ya folks.</p>Zabbix Server Out of Memory2020-02-27T19:00:00-03:002020-02-27T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-02-27:/pt/zabbix-server-out-of-memory-crash.html<p>Você tem um servidor Zabbix crashando e observando o arquivo de log <code>/var/log/zabbix/zabbix_server.log</code> você localiza a seguinte mensagem referênciando falta de memória?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c …</code></pre></div><p>Você tem um servidor Zabbix crashando e observando o arquivo de log <code>/var/log/zabbix/zabbix_server.log</code> você localiza a seguinte mensagem referênciando falta de memória?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: please increase CacheSize configuration parameter +</code></pre></div> + +<p>Apesar da simples solução para o erro, isso acaba sendo um problema comum em servidores que tem uma certa quantidade de itens sendo monitorados (servidores, switches, firewalls, bancos, etc...). Para resolver o problema, vá até o ser arquivo <code>zabbix_server.conf</code> e procure pela propriedade <code>CacheSize</code> e sete o seu valor para uma quantidade maior. O seu valor default deve ser algo como 8M. Em clientes que tenham algo como 4 servidores, 7 firewalls/appliances, e algumas outras coisas (bancos, apps), 32M deve resolver o problema, mas você pode setar até algo como 8G (ressalto que mais memória nem sempre é melhor).</p> +<p>Até breve.</p>Flutter + firebase auth crashing2019-10-03T19:00:00-03:002019-10-03T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-10-03:/en/flutter_with_firebase_auth_crashing.html<p>Hey Folks, recently I've started learning <a href="https://flutter.dev/">Flutter</a> and right after a TODO List, I tried a Firebase integration. But as soon as I started setting the dependencies, my app stopped opening... just a crash. After a few logs digging, I've found the following log.</p> +<div class="highlight"><pre><span></span><code>AndroidRuntime: FATAL EXCEPTION: main +AndroidRuntime: Process …</code></pre></div><p>Hey Folks, recently I've started learning <a href="https://flutter.dev/">Flutter</a> and right after a TODO List, I tried a Firebase integration. But as soon as I started setting the dependencies, my app stopped opening... just a crash. After a few logs digging, I've found the following log.</p> +<div class="highlight"><pre><span></span><code>AndroidRuntime: FATAL EXCEPTION: main +AndroidRuntime: Process: com.example.diadocasal, PID: <span class="m">13672</span> +AndroidRuntime: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/util/ArrayMap<span class="p">;</span> +AndroidRuntime: at com.google.android.gms.internal.measurement.zzca.&lt;clinit&gt;<span class="o">(</span>Unknown Source:60<span class="o">)</span> +AndroidRuntime: at com.google.android.gms.internal.measurement.zzcm.zzr<span class="o">(</span>Unknown Source:7<span class="o">)</span> +AndroidRuntime: at com.google.android.gms.measurement.internal.zzfj.&lt;init&gt;<span class="o">(</span>Unknown Source:23<span class="o">)</span> +</code></pre></div> + +<p>Notice the "NoClassDefFound" of an ArrayMap. To solve that I did the following changes to the files:</p> +<div class="highlight"><pre><span></span><code><span class="c1">//build.gradle file</span> + <span class="n">ext</span><span class="p">.</span><span class="na">kotlin_version</span> <span class="o">=</span> <span class="err">&#39;</span><span class="mf">1.3.20</span><span class="err">&#39;</span> +<span class="o">[</span><span class="p">...</span><span class="o">]</span> + <span class="n">dependencies</span> <span class="p">{</span> + <span class="n">classpath</span> <span class="err">&#39;</span><span class="n">com</span><span class="p">.</span><span class="na">android</span><span class="p">.</span><span class="na">tools</span><span class="p">.</span><span class="na">build</span><span class="p">:</span><span class="n">gradle</span><span class="p">:</span><span class="mf">3.3.0</span><span class="err">&#39;</span> <span class="c1">// gradle version</span> +</code></pre></div> + +<div class="highlight"><pre><span></span><code><span class="c1">;gradle.properties file</span> +<span class="na">org.gradle.jvmargs</span><span class="o">=</span><span class="s">-Xmx1536M ;mine have just this line at first</span> +<span class="na">android.useAndroidX</span><span class="o">=</span><span class="s">true ; uses androidX instead of the default support library</span> +<span class="na">android.enableJetifier</span><span class="o">=</span><span class="s">true ; uses jetpack libraries</span> +<span class="na">android.enableR8</span><span class="o">=</span><span class="s">true ; the new code shriker</span> +</code></pre></div> + +<p>After that, voilà, app up and running.</p>Removing a user from SQL Server database who owns a schema2019-09-06T07:00:00-03:002020-10-21T18:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-09-06:/en/removing-user-from-sql-server-database.html<p>Your customer urge you to drop a user from the MsSQL Server database, but you stuck with the following related error:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>That means that the user owns one or more shcemas of your database. If …</p><p>Your customer urge you to drop a user from the MsSQL Server database, but you stuck with the following related error:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>That means that the user owns one or more shcemas of your database. If you don't have access to the SSMS to see which schema or objects the user owns, the following SQL should do the job.</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">schemas</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">principal_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="p">,</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">xtype</span><span class="w"> </span><span class="n">Tipo</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">sysobjects</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">uid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> +</code></pre></div> + +<p>Once you have the objects/schemas owned by the user, you can change them with the following SQL (schema change sample):</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datareader</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"> </span><span class="c1">-- new owner username</span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datawriter</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>Then you're ready to drop the user <code>DROP USER [username]</code></p> +<h2>How to list all the schemas and it's owners?</h2> +<p>Here's a script to list schemas and it's owners.</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +<span class="k">SELECT</span><span class="w"></span> +<span class="w"> </span><span class="nf">schema_name</span><span class="p">(</span><span class="nf">schema_id</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">schemaname</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="nf">user_name</span><span class="p">(</span><span class="n">schm</span><span class="p">.</span><span class="n">principal_id</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">username</span><span class="p">,</span><span class="w"> </span><span class="o">*</span><span class="w"></span> +<span class="k">FROM</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">schemas</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">schm</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div>Removendo um usuário de uma base SQL Server2019-09-06T07:00:00-03:002020-10-21T18:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-09-06:/pt/removing-user-from-sql-server-database.html<p>O seu cliente lhe pede com urgência para <em>dropar</em> um usuário da sua base MsSQL Server, mas você trava com o seguinte aviso de erro:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>Se você não possui (ou no momento não consegue acesso …</p><p>O seu cliente lhe pede com urgência para <em>dropar</em> um usuário da sua base MsSQL Server, mas você trava com o seguinte aviso de erro:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>Se você não possui (ou no momento não consegue acesso) ao SSMS (SQL Server Management Studio) para verificar quais schemas ou objetos o usuário é "dono", a seguinte SQL vai resolver o problema.</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">schemas</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">principal_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="p">,</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">xtype</span><span class="w"> </span><span class="n">Tipo</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">sysobjects</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">uid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> +</code></pre></div> + +<p>Assim que você tiver os objetos/schemas que o usuário é dono, você pode alterar os mesmos com a seguinte SQL (exemplo de troca de schema):</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datareader</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"> </span><span class="c1">-- username do novo dono</span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datawriter</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>Então, você pode dropar o usuário <code>DROP USER [username]</code>.</p>Limiting Connection Resources on SQL Server2019-08-12T12:00:00-03:002019-08-12T12:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-08-12:/en/limiting-connection-resources-sql-server.html<p>Have you ever suffered from a slow SQLServer database? Someone love to run that heavy query in the database? Resource Governor to the rescue. You can set a few rules on how users (connections actually) will use the server/database resources based on a few things.</p> +<p>First things first, if …</p><p>Have you ever suffered from a slow SQLServer database? Someone love to run that heavy query in the database? Resource Governor to the rescue. You can set a few rules on how users (connections actually) will use the server/database resources based on a few things.</p> +<p>First things first, if you don't have DAC enabled, enable it now. Dealing with resource governor can lock you out of the database and leave you without action (almost... you can start the server with -c -m -f).</p> +<p>Now to understand how Resource Governor works, we have a few keywords <code>resource pool</code>, <code>workload group</code> e <code>Classifier Function</code>.</p> +<p><img alt="Pool Sample" src="/images/sql-pool.png"></p> +<h2>Resource Pool</h2> +<p>First, we have the Resource Pool, with is the bigger resource group that we have the ability to manage. With it, we can set a few things like: <code>MIN_CPU_PERCENT</code>, <code>MAX_CPU_PERCENT</code>, <code>MIN_MEMORY_PERCENT</code>, <code>MAX_MEMORY_PERCENT</code>, <code>MIN_IOPS_PER_VOLUME</code>, and <code>MAX_IOPS_PER_VOLUME</code>.</p> +<p>Be aware that the <code>MAX_CPU_PERCENT</code> will just "works" when there is another connection with a higher priority, otherwise it will use what is available. Let's create a pool.</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">POOL</span><span class="w"> </span><span class="o">[</span><span class="n">SpreadSheet</span><span class="o">]</span><span class="w"></span> +<span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">MIN_CPU_PERCENT</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">MAX_CPU_PERCENT</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">MIN_MEMORY_PERCENT</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">MAX_MEMORY_PERCENT</span><span class="o">=</span><span class="mi">20</span><span class="w"></span> +<span class="p">);</span><span class="w"></span> +</code></pre></div> + +<p>## Workload Group</p> +<p>Then we have a workload group that "works" inside a pool, so you can have another granularity on how you can split your resources. Again, we have a few options: <code>IMPORTANCE</code>, <code>REQUEST_MAX_CPU_TIME_SEC</code>, <code>REQUEST_MAX_MEMORY_GRANT_PERCENT</code>, <code>GROUP_MAX_REQUESTS</code>.</p> +<p>The <code>IMPORTANCE</code> set guesses what... the importance of that workload inside the pool, you can set LOW, MEDIUM, HIGH. GROUP_MAX_REQUESTS sets how many requests can run at the same time inside that workload (0 will set as NO LIMIT)</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="n">WORKLOAD</span><span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="o">[</span><span class="n">DepartmentA</span><span class="o">]</span><span class="w"> </span> +<span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">GROUP_MAX_REQUESTS</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">IMPORTANCE</span><span class="o">=</span><span class="n">LOW</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">REQUEST_MAX_CPU_TIME_SEC</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="c1">-- Time running/using CPU</span> +<span class="w"> </span><span class="n">REQUEST_MAX_MEMORY_GRANT_PERCENT</span><span class="o">=</span><span class="mi">15</span><span class="w"></span> +<span class="p">)</span><span class="w"> </span><span class="k">USING</span><span class="w"> </span><span class="o">[</span><span class="n">SpreadSheet</span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="c1">-- pool name here</span> +</code></pre></div> + +<h2>Classifier Function</h2> +<p>This is where everything begins... This is the entry point where you should set the group name. It's a function that will run for every new connection so be aware that if your function runs lots of queries or some heavy stuff... that time will be added to the connection handshake. If the function returns NULL or a group name that doesn't exist, the 'default' group will be used... Yes, there is a default workload group where everything runs where there's no classifier.</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="n">fnClassWorkloadGovernor</span><span class="p">()</span><span class="w"> </span> +<span class="k">RETURNS</span><span class="w"> </span><span class="n">SYSNAME</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="n">SCHEMABINDING</span><span class="w"> </span> +<span class="k">AS</span><span class="w"> </span> +<span class="k">BEGIN</span><span class="w"> </span> +<span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="nf">APP_NAME</span><span class="p">()</span><span class="w"> </span><span class="ow">LIKE</span><span class="w"> </span><span class="s1">&#39;%Excel%&#39;</span><span class="w"></span> +<span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="s1">&#39;DepartmentA&#39;</span><span class="w"></span> + +<span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="nf">HOST_NAME</span><span class="p">()</span><span class="w"> </span><span class="ow">LIKE</span><span class="w"> </span><span class="s1">&#39;%THAT_MACHINE_OR_APP_SERVER%&#39;</span><span class="w"></span> +<span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="s1">&#39;LowPriority&#39;</span><span class="w"></span> + +<span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="k">NULL</span><span class="w"></span> +<span class="k">END</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="n">CLASSIFIER_FUNCTION</span><span class="o">=</span><span class="n">dbo</span><span class="p">.</span><span class="n">fnClassWorkloadGovernor</span><span class="p">);</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">RECONFIGURE</span><span class="p">;</span><span class="w"></span> +</code></pre></div> + +<p>There you go... now you have a fully working resource governor, but look out that If you want to delete that classifier function, first you have to remove it from the resource governor (look the SCHEMABINDING at the create up there).</p> +<p>To disable Resource Governor</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="n">CLASSIFIER_FUNCTION</span><span class="o">=</span><span class="k">null</span><span class="p">)</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">RECONFIGURE</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="n">DISABLE</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div>Using git hooks to easy your life2019-07-30T20:00:00-03:002019-07-30T20:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-07-30:/en/using_git_hooks_easy_your_life.html<p>Hey folks, it's been a time since my last post. In the meantime, I moved to another state, changed job, and started learning new kinds of stuff. Today I would like to share one thing that I usually do with my small git projects. Git has many cool features, git …</p><p>Hey folks, it's been a time since my last post. In the meantime, I moved to another state, changed job, and started learning new kinds of stuff. Today I would like to share one thing that I usually do with my small git projects. Git has many cool features, git hooks were one of them. I'll talk about the pre-commit hook today.</p> +<p>Let's say that, for some reason, you don't have a CI tool/server running after every commit and you want to enforce that every developer runs the tests before every commit? Git pre-commit to the rescue. You can code the hooks with shell, ruby, python, and I could be wrong, but even PHP would work. pre-commit is a client-side hook (we have server side too) and he's located inside the <cite>.git/hooks</cite> folder. Let's jump to the code... Create a file called 'pre-commit' inside that folder with the following code.</p> +<div class="highlight"><pre><span></span><span class="ch">#!/bin/bash</span> +npm <span class="nb">test</span> <span class="c1"># assuming you&#39;re using it inside a nodeJS project</span> +</pre></div> +<p>Don't forget to make the script executable!! Now break your test and try to commit. That's easy but can save you from breaking the tests at the main CI/Travis/Codeship/etc and being notified by email :). Why not even validate the lint of your project or check if the coverage doesn't fall? Does your team/company have a patter for commit messages? No problem, there is a hook called <cite>commit-msg</cite> that you can use to validate your message.</p> +Microservices with NodeJS, Express.js and RabbitMQ Part 22018-04-13T13:00:00-03:002018-04-13T13:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-04-13:/en/microservices_nodejs_express_rabbitmq_part_2.html<p>If you haven't read the <a class="reference external" href="https://www.sipmann.com/microservices_nodejs_express_rabbitmq_part_1-en.html">part 1</a> go ahead and read it... It can be useful :). Or if for some reason you want to start now, you can grab the project where we stopped <a class="reference external" href="https://github.com/sipmann/imagecompacter/releases/tag/v1">here</a> and get along. On this part, we'll implement the RabbitMQ queue and see how we …</p><p>If you haven't read the <a class="reference external" href="https://www.sipmann.com/microservices_nodejs_express_rabbitmq_part_1-en.html">part 1</a> go ahead and read it... It can be useful :). Or if for some reason you want to start now, you can grab the project where we stopped <a class="reference external" href="https://github.com/sipmann/imagecompacter/releases/tag/v1">here</a> and get along. On this part, we'll implement the RabbitMQ queue and see how we can get the best of our app and server with that.</p> +<p>Before we began coding, let's understand why we are going to use RabbitMQ if what we have now works? If you check again, you'll see how long it takes to answer the request with the optimized image. It takes a few seconds, so imagine an online service with thousands of request to optimize images (like <a class="reference external" href="https://tinypng.com/">TinyPNG</a>) how long is it gonna take to answer every request? How much of your server is it gonna take? With only one service running, probably the server will crash.</p> +<p>With a queue, we can schedule the requests so we can use the amount of memory and processor that our server has, without taking more than we can. It's better to take a few seconds to answer the request then throw some error to the user. Want more? With RabbitMQ we can see how the queue is doing and we can add more consumers (workers) to it and get things done quicker and distribute the job.</p> +<p>First of all, we need an up and running Rabbit server, for the sake of simplicity, I'll use a Docker container with it inside.</p> +<div class="highlight"><pre><span></span>docker run -d --name rabbit -p <span class="m">5672</span>:5672 -p <span class="m">8080</span>:15672 rabbitmq:3-management +</pre></div> +<p>You can see that we're running the rabbitmq:3-management image, which provides us a web interface to see how things are going. After that, if you look at our code you'll see that all the job is made at the '/upload' route, and that's what we'll change.</p> +<p>First, we need to understand what we need from RabbitMQ. We need something that, we send an image to a queue and get an optimized image back from that. There is a name for that, is RPC (remote procedure call) and there are two ways of doing this with rabbit. Both the ways you can see on their tutorial page. We'll use the approach that uses a global channel whose id is randomly generated (you'll use the name 'amq.rabbitmq.reply-to' but the rabbit will do the job).</p> +<p>Let's start importing the library, defining a few variables and defining a init function that will establish a connection with the rabbit server and create our RPC queue. The RPC queue it's where we'll receive the answer from the consumer (our worker).</p> +<div class="highlight"><pre><span></span><span class="c1">//import the library</span> +<span class="kr">const</span> <span class="nx">amqplib</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;amqplib&#39;</span><span class="p">);</span> + +<span class="c1">//queue channel</span> +<span class="kd">let</span> <span class="nx">channel</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span> +<span class="c1">//queue name</span> +<span class="kr">const</span> <span class="nx">QUEUE</span> <span class="o">=</span> <span class="s1">&#39;optimizeimg&#39;</span><span class="p">;</span> + +<span class="c1">//...</span> + +<span class="kd">function</span> <span class="nx">init</span><span class="p">()</span> <span class="p">{</span> + <span class="k">return</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;amqplib&#39;</span><span class="p">).</span><span class="nx">connect</span><span class="p">(</span><span class="s1">&#39;amqp://localhost&#39;</span><span class="p">)</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">conn</span> <span class="p">=&gt;</span> <span class="nx">conn</span><span class="p">.</span><span class="nx">createChannel</span><span class="p">())</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">ch</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">channel</span> <span class="o">=</span> <span class="nx">ch</span><span class="p">;</span> + + <span class="c1">//this queue is a &quot;Direct reply-to&quot; read more at the docs</span> + <span class="c1">//When some msg comes in, we &quot;emit&quot; a message to the proper &quot;correlationId&quot; listener</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">consume</span><span class="p">(</span><span class="s1">&#39;amq.rabbitmq.reply-to&#39;</span><span class="p">,</span> <span class="nx">msg</span> <span class="p">=&gt;</span> <span class="nx">eventEmitter</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="nx">msg</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">correlationId</span><span class="p">,</span> <span class="nx">msg</span><span class="p">.</span><span class="nx">content</span><span class="p">),</span> <span class="p">{</span><span class="nx">noAck</span><span class="o">:</span> <span class="kc">true</span><span class="p">});</span> + <span class="p">});</span> +<span class="p">}</span> + +<span class="c1">//Random id generator</span> +<span class="kd">function</span> <span class="nx">randomid</span><span class="p">()</span> <span class="p">{</span> + <span class="k">return</span> <span class="k">new</span> <span class="nb">Date</span><span class="p">().</span><span class="nx">getTime</span><span class="p">().</span><span class="nx">toString</span><span class="p">()</span> <span class="o">+</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">().</span><span class="nx">toString</span><span class="p">()</span> <span class="o">+</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">().</span><span class="nx">toString</span><span class="p">();</span> +<span class="p">}</span> + +<span class="nx">app</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span><span class="s1">&#39;/upload&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="kd">let</span> <span class="nx">img</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">files</span><span class="p">.</span><span class="nx">image</span><span class="p">;</span> + + <span class="kd">let</span> <span class="nx">id</span> <span class="o">=</span> <span class="nx">randomid</span><span class="p">();</span> + + <span class="c1">//Event listener that will fire when the proper randomid is provided</span> + <span class="nx">eventEmitter</span><span class="p">.</span><span class="nx">once</span><span class="p">(</span><span class="nx">id</span><span class="p">,</span> <span class="nx">msg</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">write</span><span class="p">(</span><span class="nx">msg</span><span class="p">,</span> <span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">end</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="p">});</span> + + <span class="c1">//Checks if the queue exists, and create it if needed.</span> + <span class="nx">channel</span><span class="p">.</span><span class="nx">assertQueue</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">)</span> + <span class="c1">//Sent the buffered img to the queue with the ID and the responseQueue</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="nx">channel</span><span class="p">.</span><span class="nx">sendToQueue</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">,</span> <span class="nx">img</span><span class="p">.</span><span class="nx">data</span><span class="p">,</span> <span class="p">{</span><span class="nx">correlationId</span><span class="o">:</span><span class="nx">id</span><span class="p">,</span> <span class="nx">replyTo</span><span class="o">:</span> <span class="s1">&#39;amq.rabbitmq.reply-to&#39;</span><span class="p">}));</span> + +<span class="p">});</span> + +<span class="c1">//Finally start the app with the given port number</span> +<span class="c1">//now we initialize the rabbitmq connection before start the server</span> +<span class="nx">init</span><span class="p">()</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="nx">app</span><span class="p">.</span><span class="nx">listen</span><span class="p">(</span><span class="mi">4000</span><span class="p">,</span> <span class="p">()</span> <span class="p">=&gt;</span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;Example app listening on port 4000!&#39;</span><span class="p">)))</span> + <span class="p">.</span><span class="k">catch</span><span class="p">(</span><span class="nx">err</span><span class="p">=&gt;</span><span class="nx">console</span><span class="p">.</span><span class="nx">error</span><span class="p">(</span><span class="nx">err</span><span class="p">));</span> +</pre></div> +<p>Ok, now we have our server code rewritten so let's see our worker code. Create a file named 'worker.js' and let's see how it's gonna be. It's really simple. You initialize a connection with RabbitMQ too, create a channel, check if the queue exists and start watching for incoming messages. When an image arrives, we do the job with it and send back to the &quot;replyTo&quot; queue the optimized image for the proper sender (correlationId). In the end, we do an acknowledge of the message so it get's out from the queue.</p> +<div class="highlight"><pre><span></span><span class="kr">const</span> <span class="nx">imagemin</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin&#39;</span><span class="p">);</span> +<span class="kr">const</span> <span class="nx">imageminPngquant</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin-pngquant&#39;</span><span class="p">);</span> + +<span class="kd">let</span> <span class="nx">channel</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span> +<span class="kr">const</span> <span class="nx">QUEUE</span> <span class="o">=</span> <span class="s1">&#39;imgqueue&#39;</span><span class="p">;</span> + +<span class="nx">require</span><span class="p">(</span><span class="s1">&#39;amqplib&#39;</span><span class="p">).</span><span class="nx">connect</span><span class="p">(</span><span class="s1">&#39;amqp://localhost&#39;</span><span class="p">)</span> +<span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">conn</span> <span class="p">=&gt;</span><span class="nx">conn</span><span class="p">.</span><span class="nx">createChannel</span><span class="p">())</span> +<span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">ch</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">assertQueue</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">)</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="c1">//Watch incomming messages</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">consume</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">,</span> <span class="nx">msg</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">imagemin</span><span class="p">.</span><span class="nx">buffer</span><span class="p">(</span><span class="nx">msg</span><span class="p">.</span><span class="nx">content</span><span class="p">,</span> <span class="p">{</span> + <span class="nx">plugins</span><span class="o">:</span> <span class="p">[</span><span class="nx">imageminPngquant</span><span class="p">()]</span> + <span class="p">})</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">out</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="c1">//Send back to the sender (replyTo) queue and give the correlationId back</span> + <span class="c1">//so we can emit the event.</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">sendToQueue</span><span class="p">(</span><span class="nx">msg</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">replyTo</span><span class="p">,</span> <span class="nx">out</span><span class="p">,</span> <span class="p">{</span> + <span class="nx">correlationId</span><span class="o">:</span> <span class="nx">msg</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">correlationId</span> + <span class="p">});</span> + + <span class="c1">//Acknowledge the job done with the message.</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">ack</span><span class="p">(</span><span class="nx">msg</span><span class="p">);</span> + <span class="p">});</span> + <span class="p">});</span> + <span class="p">});</span> +<span class="p">});</span> +</pre></div> +<p>The key points here are. Open just one connection to the hole server. You CAN create one channel for every request that you receive, but it can take some time if you have a really big cluster of RabbitMQ. It was a quick tutorial, but I hope that it was able to clear a few questions that you might have when working with rabbit and express.</p> +Microservices with NodeJS, Express.js and RabbitMQ Part 12018-04-04T11:25:00-03:002018-04-04T11:25:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-04-04:/en/microservices_nodejs_express_rabbitmq_part_1.html<p>This is the first part of a microservices development series. The service will consist of the bellow architecture, where we will expose an image optimizer service that will forward the request to a <a class="reference external" href="https://www.rabbitmq.com/">RabbitMQ</a> queue and answer with the bytecode of the optimized image. It shouldn't be a long series …</p><p>This is the first part of a microservices development series. The service will consist of the bellow architecture, where we will expose an image optimizer service that will forward the request to a <a class="reference external" href="https://www.rabbitmq.com/">RabbitMQ</a> queue and answer with the bytecode of the optimized image. It shouldn't be a long series so let's see what we can do.</p> +<img alt="Service architecture" src="/images/microservices_rabit_pt1.png" /> +<p>Let's get our environment working. First, we'll need to install the libraries that we'll use.</p> +<p>Create a dir and initialize the nodejs application inside it (<cite>npm init</cite>) and then let's install the deps.</p> +<ul class="simple"> +<li>amqplib - AMQP lib to interact with rabbitmq</li> +<li>express - Do our basic rest API</li> +<li>express-fileupload - easy file upload parser</li> +<li>imagemin and imagemin-pngquant - our image compacter</li> +</ul> +<div class="highlight"><pre><span></span>npm install --save express amqplib express-fileupload imagemin imagemin-pngquant +</pre></div> +<p>Now let's write the entry points for our service, we'll have two basic entry points. The path <cite>/</cite> that will have a welcome message, the second path will be <cite>/upload</cite> and this is the one that will handle the image and produce a job for our workers.</p> +<div class="highlight"><pre><span></span><span class="kr">const</span> <span class="nx">express</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;express&#39;</span><span class="p">);</span> +<span class="kr">const</span> <span class="nx">fileUpload</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;express-fileupload&#39;</span><span class="p">);</span> + +<span class="c1">//Instantiate the app and set the fileupload parser to manage files</span> +<span class="kr">const</span> <span class="nx">app</span> <span class="o">=</span> <span class="nx">express</span><span class="p">();</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">use</span><span class="p">(</span><span class="nx">fileUpload</span><span class="p">());</span> + +<span class="c1">//Our index entry point</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="nx">res</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="s1">&#39;Hello From ImageCompacter service&#39;</span><span class="p">));</span> + +<span class="c1">//The path that will handle the image file and throw them to the queue</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span><span class="s1">&#39;/upload&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="c1">//With express-fileupload we can grab the files like this</span> + <span class="kd">let</span> <span class="nx">img</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">files</span><span class="p">.</span><span class="nx">image</span><span class="p">;</span> <span class="c1">//&quot;image&quot; is the name of the input</span> + + <span class="nx">res</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="s1">&#39;Not ready yet&#39;</span><span class="p">);</span> +<span class="p">});</span> + +<span class="c1">//Finally start the app with the given port number</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">listen</span><span class="p">(</span><span class="mi">4000</span><span class="p">,</span> <span class="p">()</span> <span class="p">=&gt;</span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;Example app listening on port 4000!&#39;</span><span class="p">));</span> +</pre></div> +<p>Let's check if it works, run the service with node.</p> +<div class="highlight"><pre><span></span>node index.js +Example app listening on port <span class="m">4000</span>! +</pre></div> +<p>Open the browser and check if it prints our hello message when accessing <cite>localhost:4000</cite>. Works? Greate. Now let's work with the image and see how we do it. To optimize our image, we'll use the library imagemin and <a class="reference external" href="https://www.npmjs.com/package/imagemin-pngquant">imagemin-pngquant</a>, it will be that simple for now, we'll work with rabbitmq latter.</p> +<div class="highlight"><pre><span></span><span class="kr">const</span> <span class="nx">imagemin</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin&#39;</span><span class="p">);</span> +<span class="kr">const</span> <span class="nx">imageminPngquant</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin-pngquant&#39;</span><span class="p">);</span> +<span class="c1">//...</span> + +<span class="c1">//The path that will handle the image file and throw them to the queue</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span><span class="s1">&#39;/upload&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="kd">let</span> <span class="nx">img</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">files</span><span class="p">.</span><span class="nx">image</span><span class="p">;</span> <span class="c1">//&quot;image&quot; is the name of the input</span> + + <span class="nx">imagemin</span><span class="p">.</span><span class="nx">buffer</span><span class="p">(</span><span class="nx">img</span><span class="p">.</span><span class="nx">data</span><span class="p">,</span> <span class="p">{</span> + <span class="nx">plugins</span><span class="o">:</span> <span class="p">[</span><span class="nx">imageminPngquant</span><span class="p">()]</span> + <span class="p">})</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">out</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">write</span><span class="p">(</span><span class="nx">out</span><span class="p">,</span><span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">end</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="p">});</span> +<span class="p">});</span> + + <span class="c1">//...</span> +</pre></div> +<p>Use <a class="reference external" href="https://www.getpostman.com/">Postman</a> to test the request. To see if it will work, make a request to <cite>http://localhost:4000/upload</cite> with a formdata with a file. Select the &quot;send and Download&quot; instead of &quot;Send&quot; and you should have an image after that. Bellow an image of how your postman should be.</p> +<img alt="Postman" src="/images/microservice_postman.png" /> +<p>That's it for today, next week we'll change our code to use RabbitMQ.</p> +Connecting to a database through SSH2018-03-29T10:03:00-03:002018-03-29T10:03:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-29:/en/connecting_to_database_through_ssh.html<p>If someday, for some reason, you need to establish a connection with a database which is behind a firewall and you only have SSH access on that server (and you don't want to use a CLI) you can do an SSH tunnel. It's pretty simple, bellow has a sample of …</p><p>If someday, for some reason, you need to establish a connection with a database which is behind a firewall and you only have SSH access on that server (and you don't want to use a CLI) you can do an SSH tunnel. It's pretty simple, bellow has a sample of how to allow connections to a remote Firebird database.</p> +<div class="highlight"><pre><span></span>ssh -L <span class="m">3051</span>:192.168.1.9:3050 username@192.168.1.9 +</pre></div> +<p>The <cite>-L</cite> parameter tells to SSH do a local port forwarding on local port <cite>3051</cite> to remote port <cite>3050</cite>. You can use it to a connection with many services, not just databases.</p> +<p>You can do the reverse kind of tunnel, forward connections from the host to your local machine, you just have to change the parameter form &quot;-L&quot; to &quot;-R&quot; and the port order is inverted, first come the port where the server will listen and after your localhost port. This remote port forwarding must be enabled on the server. Look for <cite>GatewayPorts</cite> at the ssh config file.</p> +<div class="highlight"><pre><span></span>ssh -R <span class="m">3050</span>:localhost:3050 username@192.168.1.9 +</pre></div> +<p>Why whould you need something like that?? Let's say you want to share a localhost site/database with a friend, but your internet connection don't allow you to expose any port but you have access to a remote server witch can do that. Problem solved ;).</p> +Now posting on Grepora2018-03-24T00:40:00-03:002018-03-24T00:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-24:/en/now_posting_on_grepora.html<p>A few weeks ago I started posting at <a class="reference external" href="https://grepora.com/blog/">Grepora</a> blog. If you like or are looking for some Oracle related stuff, Grepora it's a good place to go and spend a time reading :). From time to time I'll be posting there, it doesn't mean that this blog will be closed …</p><p>A few weeks ago I started posting at <a class="reference external" href="https://grepora.com/blog/">Grepora</a> blog. If you like or are looking for some Oracle related stuff, Grepora it's a good place to go and spend a time reading :). From time to time I'll be posting there, it doesn't mean that this blog will be closed or anything like that, but probably this one will be more focused on Front-end stuff, a few tricks with linux and a lil less with Java.</p> +Scaffolding a React app with Parcel and Yeoman2018-03-17T13:00:00-03:002018-03-17T13:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-17:/en/scaffolding_react_app_with_parcel_yeoman.html<p>Since <a class="reference external" href="https://parceljs.org/">Parcel JS</a> arrived, I've been using it a lot as an awesome alternative for WebPack. Webpack isn't bad but IMO it's too complex for the job and parcel do the same (at least the basic) with almost zero configuration. But if you need to create many apps (like a …</p><p>Since <a class="reference external" href="https://parceljs.org/">Parcel JS</a> arrived, I've been using it a lot as an awesome alternative for WebPack. Webpack isn't bad but IMO it's too complex for the job and parcel do the same (at least the basic) with almost zero configuration. But if you need to create many apps (like a react app) over and over again, it get's a lil boring following the basic steps.</p> +<div class="highlight"><pre><span></span>npm init -y +npm install --save react +npm install --save react-dom +npm install --save-dev parcel-bundler +npm install --save-dev babel-preset-env +npm install --save-dev babel-preset-react + +<span class="c1">#create .babelrc file</span> +<span class="c1">#create html, css, jsx files</span> + +parcel index.html +</pre></div> +<p>It's not a hard job, a simple shell script do the job, but what if you need some IFs when creating the app, or even change a few things at the <cite>package.json</cite>? A shell script still does the job, but come on... There is a better way. <a class="reference external" href="http://yeoman.io/">Yeoman</a> is here for you. I've already <a class="reference external" href="https://www.sipmann.com/en/desenvolvendo-app-firefoxos-pt.html">talked about it</a> on another post (Portuguese post).</p> +<p>Straight to the point, I've released a Yeoman generator to get the things a lil quicker. The name is <a class="reference external" href="https://www.npmjs.com/package/generator-parcel-react">generator-parcel-react</a> and it still lacks a few things that I will deal with soon. It's pretty simple to use it.</p> +<div class="highlight"><pre><span></span><span class="c1">#First time only</span> +npm install -g yo +npm install -g generator-parcel-react + +<span class="c1">#every time you create a new app</span> +yo parcel-react +</pre></div> +<p>And that's it. Right now you can scaffold and app with React, SASS and React Router. Hope you like it and feel free to ask new features.</p> +Could not open connection with MySQL and Hibernate2018-03-09T12:35:00-03:002018-03-09T12:35:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-09:/en/cloud-not-open-connection-java-mysql-hibernate.html<p>Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some &quot;Could not open connection&quot; at my …</p><p>Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some &quot;Could not open connection&quot; at my face, but why? I've tried to connect to it manually and got the same problem.</p> +<p>After some research, I found that the true error should be java.sql.SQLException: null, message from server: &quot;Host '172.17.0.4' is not allowed to connect to this MySQL server&quot; but it wasn't showing to me...</p> +<p>After all, be aware that with the docker image MySQL:5.7.21 (latest version right now) the root user isn't allowed to remote connect to the database (it's alright, security reasons) and if you still want to do remote connections to it with root there are a few things you can do.</p> +<ol class="arabic simple"> +<li>Create a user or allow root to access from other IPs.</li> +</ol> +<div class="highlight"><pre><span></span><span class="o">#</span><span class="k">No</span> <span class="k">access</span> <span class="k">to</span> <span class="k">user</span> <span class="n">root</span> <span class="k">on</span> <span class="k">any</span> <span class="n">other</span> <span class="n">IP</span> +<span class="k">SELECT</span> <span class="k">User</span><span class="p">,</span> <span class="k">Host</span> <span class="k">FROM</span> <span class="n">mysql</span><span class="p">.</span><span class="k">user</span><span class="p">;</span> +<span class="o">+</span><span class="c1">---------------+-----------+</span> +<span class="o">|</span> <span class="k">User</span> <span class="o">|</span> <span class="k">Host</span> <span class="o">|</span> +<span class="o">+</span><span class="c1">---------------+-----------+</span> +<span class="o">|</span> <span class="n">healthchecker</span> <span class="o">|</span> <span class="n">localhost</span> <span class="o">|</span> +<span class="o">|</span> <span class="n">root</span> <span class="o">|</span> <span class="n">localhost</span> <span class="o">|</span> +<span class="o">+</span><span class="c1">---------------+-----------+</span> +<span class="mi">2</span> <span class="k">rows</span> <span class="k">in</span> <span class="k">set</span> <span class="p">(</span><span class="mi">0</span><span class="p">.</span><span class="mi">01</span> <span class="n">sec</span><span class="p">)</span> + +<span class="k">CREATE</span> <span class="k">USER</span> <span class="s1">&#39;newuser&#39;</span><span class="o">@</span><span class="s1">&#39;%&#39;</span> <span class="n">IDENTIFIED</span> <span class="k">BY</span> <span class="s1">&#39;password&#39;</span><span class="p">;</span> <span class="o">#%</span> <span class="n">mean</span> <span class="k">any</span> <span class="n">IP</span> +<span class="k">GRANT</span> <span class="k">ALL</span> <span class="k">PRIVILEGES</span> <span class="k">ON</span> <span class="o">*</span><span class="p">.</span><span class="o">*</span> <span class="k">TO</span> <span class="s1">&#39;newuser&#39;</span><span class="o">@</span><span class="s1">&#39;%&#39;</span><span class="p">;</span> <span class="o">#*</span><span class="p">.</span><span class="o">*</span> <span class="n">mean</span> <span class="k">database</span><span class="p">.</span><span class="k">table</span> <span class="p">;)</span> +</pre></div> +<ol class="arabic simple" start="2"> +<li>Use MariaDB instead, witch come (at least on the version 10.2.13) with root allowed to do remote connections and will work like MySQL :)</li> +</ol> +<p>I changed to <a class="reference external" href="https://mariadb.org/">MariaDB</a> as it work without creating user or any changes on the Java code or the <cite>docker run command</cite>.</p> +Solving java.net.SocketException: Protocol family unavailable on a Java + Docker + WildFly2018-03-04T17:40:00-03:002018-03-04T17:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-04:/en/socketException-protocol-family-unavailable-java-docker-wildfly.html<p>On the last days I've been playing with <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> and I decided to deploy a simple app with Docker. Should work fine, at least that was what I thought. Built a container with the following Dockerfile and instead of a working web app, all that I got was the …</p><p>On the last days I've been playing with <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> and I decided to deploy a simple app with Docker. Should work fine, at least that was what I thought. Built a container with the following Dockerfile and instead of a working web app, all that I got was the error <cite>java.net.SocketException: Protocol family unavailable</cite>.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">CMD</span> <span class="p">[</span><span class="s2">&quot;java&quot;</span><span class="p">,</span><span class="s2">&quot;-jar&quot;</span><span class="p">,</span><span class="s2">&quot;/opt/issues.jar&quot;</span><span class="p">]</span> +</pre></div> +<p>For some reason, WildFly and Java decided to use the IPv6 network interface from Docker instead the v4, so all you have to do is tell Java to prefer IPv4 instead with the following configuration option in your pom.xml file inside your WildFly plugin.</p> +<div class="highlight"><pre><span></span><span class="nt">&lt;plugin&gt;</span> + <span class="nt">&lt;groupId&gt;</span>org.wildfly.swarm<span class="nt">&lt;/groupId&gt;</span> + <span class="nt">&lt;artifactId&gt;</span>wildfly-swarm-plugin<span class="nt">&lt;/artifactId&gt;</span> + <span class="nt">&lt;version&gt;</span>2018.2.0<span class="nt">&lt;/version&gt;</span> + + <span class="c">&lt;!-- ADD THIS --&gt;</span> + <span class="nt">&lt;configuration&gt;</span> + <span class="nt">&lt;mainClass&gt;</span>org.wildfly.swarm.examples.netflix.ribbon.frontend.Main<span class="nt">&lt;/mainClass&gt;</span> + <span class="nt">&lt;properties&gt;</span> + <span class="nt">&lt;java.net.preferIPv4Stack&gt;</span>true<span class="nt">&lt;/java.net.preferIPv4Stack&gt;</span> + <span class="nt">&lt;/properties&gt;</span> + <span class="nt">&lt;/configuration&gt;</span> +</pre></div> +<p>Another way to solve is adding the same properties to the run command at the Dockerfile, so you choose where you'll add it. Bellow the Dockerfile solution.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> +<span class="k">ENV</span> <span class="nv">JAVA_OPTS</span><span class="o">=</span><span class="s2">&quot;-Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true&quot;</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">ENTRYPOINT</span> <span class="nb">exec</span> java <span class="nv">$JAVA_OPTS</span> -jar /opt/issues.jar +</pre></div> +Resolvendo java.net.SocketException: Protocol family unavailable em Java + Docker + WildFly2018-03-04T17:40:00-03:002018-03-04T17:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-04:/pt/socketException-protocol-family-unavailable-java-docker-wildfly.html<p>Nos últimos dias eu estou brincando com o <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> e decidi fazer o deploy de uma aplicação simples com Docker. Deveria funcionar bem, ao menos é o que pensava. Construí um container com o seguinte Dockerfile e ao invés de obter uma aplicação web, tudo que eu obtive foi …</p><p>Nos últimos dias eu estou brincando com o <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> e decidi fazer o deploy de uma aplicação simples com Docker. Deveria funcionar bem, ao menos é o que pensava. Construí um container com o seguinte Dockerfile e ao invés de obter uma aplicação web, tudo que eu obtive foi o erro <cite>java.net.SocketException: Protocol family unavailable</cite>.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">CMD</span> <span class="p">[</span><span class="s2">&quot;java&quot;</span><span class="p">,</span><span class="s2">&quot;-jar&quot;</span><span class="p">,</span><span class="s2">&quot;/opt/issues.jar&quot;</span><span class="p">]</span> +</pre></div> +<p>Por alguma razão, WildFly e Java, ambos decidiram utilizar um protocolo IPv6 na interface de rede no Docker invés da v4, então tudo que você tem que fazer é falar ao Java que deve dar preferência em utilizar o IPv4 com a seguinte configuração no seu arquivo pom.xml dentro da tag do plugin WildFly.</p> +<div class="highlight"><pre><span></span><span class="nt">&lt;plugin&gt;</span> + <span class="nt">&lt;groupId&gt;</span>org.wildfly.swarm<span class="nt">&lt;/groupId&gt;</span> + <span class="nt">&lt;artifactId&gt;</span>wildfly-swarm-plugin<span class="nt">&lt;/artifactId&gt;</span> + <span class="nt">&lt;version&gt;</span>2018.2.0<span class="nt">&lt;/version&gt;</span> + + <span class="c">&lt;!-- ADICIONE ISTO --&gt;</span> + <span class="nt">&lt;configuration&gt;</span> + <span class="nt">&lt;mainClass&gt;</span>org.wildfly.swarm.examples.netflix.ribbon.frontend.Main<span class="nt">&lt;/mainClass&gt;</span> + <span class="nt">&lt;properties&gt;</span> + <span class="nt">&lt;java.net.preferIPv4Stack&gt;</span>true<span class="nt">&lt;/java.net.preferIPv4Stack&gt;</span> + <span class="nt">&lt;/properties&gt;</span> + <span class="nt">&lt;/configuration&gt;</span> +</pre></div> +<p>Outra forma de solucionar o problema, é adicionando a mesma propriedade ao comando de run no seu Dockerfile. Então, fica a seu critério onde adicionar. Abaixo a solução utilizando o Dockerfile.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> +<span class="k">ENV</span> <span class="nv">JAVA_OPTS</span><span class="o">=</span><span class="s2">&quot;-Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true&quot;</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">ENTRYPOINT</span> <span class="nb">exec</span> java <span class="nv">$JAVA_OPTS</span> -jar /opt/issues.jar +</pre></div> +Change display settings on linux with Disper2018-02-27T12:40:00-03:002018-02-27T12:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-02-27:/en/linux-external-display-with-disper.html<p>From time to time, I change the Linux distro on my laptop or just do a fresh install on it. And once in a while, have random problems with external displays. It can be something really &quot;simple&quot; like don't detecting the external monitor or something crazy like the image below …</p><p>From time to time, I change the Linux distro on my laptop or just do a fresh install on it. And once in a while, have random problems with external displays. It can be something really &quot;simple&quot; like don't detecting the external monitor or something crazy like the image below.</p> +<img alt="Display bug" src="/images/bug.png" /> +<p>As you can see at the image, the mint detected the display but mirrored it in a crazy way that works but doesn't at the same time. If you try anything and doesn't get working, or just wanna skip the whole job of configuring complexes text files, give a try to <a class="reference external" href="http://willem.engen.nl/projects/disper/">Disper</a>. Download the latest version. +Extract it on any folder, and make install it (on the extracted folder).</p> +<div class="highlight"><pre><span></span>make install +</pre></div> +<p>After that, you can start using it... There are a few options that will serve you well.</p> +<div class="highlight"><pre><span></span>disper -e <span class="c1">#extend your display</span> +</pre></div> +<div class="highlight"><pre><span></span>disper -c <span class="c1">#clone your display</span> +</pre></div> +<div class="highlight"><pre><span></span>disper -s <span class="c1">#only your external display</span> +</pre></div> +Java - Files.readAllBytes throws OutOfMemory2018-02-17T13:00:00-02:002018-02-17T13:00:00-02:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-02-17:/en/reading-files-java-readAllBytes-outofmemory.html<p>When you need to interact with files, there's the possibility to read all bytes from the file with <cite>Files.readAllBytes</cite>. But be aware of the kinds of files your application will deal with because the Java API files have a limit for the buffer that is defined as <cite>Integer.MAX_VALUE …</cite></p><p>When you need to interact with files, there's the possibility to read all bytes from the file with <cite>Files.readAllBytes</cite>. But be aware of the kinds of files your application will deal with because the Java API files have a limit for the buffer that is defined as <cite>Integer.MAX_VALUE</cite> as you can see above or at the OpenJDK sources.</p> +<div class="highlight"><pre><span></span><span class="kd">public</span> <span class="kd">static</span> <span class="kt">byte</span><span class="o">[]</span> <span class="nf">readAllBytes</span><span class="p">(</span><span class="n">Path</span> <span class="n">path</span><span class="p">)</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="p">{</span> + <span class="k">try</span> <span class="p">(</span><span class="n">FileChannel</span> <span class="n">fc</span> <span class="o">=</span> <span class="n">FileChannel</span><span class="p">.</span><span class="na">open</span><span class="p">(</span><span class="n">path</span><span class="p">))</span> <span class="p">{</span> + <span class="kt">long</span> <span class="n">size</span> <span class="o">=</span> <span class="n">fc</span><span class="p">.</span><span class="na">size</span><span class="p">();</span> + <span class="k">if</span> <span class="p">(</span><span class="n">size</span> <span class="o">&gt;</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">Integer</span><span class="p">.</span><span class="na">MAX_VALUE</span><span class="p">)</span> + <span class="k">throw</span> <span class="k">new</span> <span class="n">OutOfMemoryError</span><span class="p">(</span><span class="s">&quot;Required array size too large&quot;</span><span class="p">);</span> + + <span class="kt">byte</span><span class="o">[]</span> <span class="n">arr</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">byte</span><span class="o">[</span><span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">size</span><span class="o">]</span><span class="p">;</span> + <span class="n">ByteBuffer</span> <span class="n">bb</span> <span class="o">=</span> <span class="n">ByteBuffer</span><span class="p">.</span><span class="na">wrap</span><span class="p">(</span><span class="n">arr</span><span class="p">);</span> + <span class="k">while</span> <span class="p">(</span><span class="n">bb</span><span class="p">.</span><span class="na">hasRemaining</span><span class="p">())</span> <span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="n">fc</span><span class="p">.</span><span class="na">read</span><span class="p">(</span><span class="n">bb</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> + <span class="c1">// truncated</span> + <span class="k">break</span><span class="p">;</span> + <span class="p">}</span> + <span class="p">}</span> + + <span class="kt">int</span> <span class="n">nread</span> <span class="o">=</span> <span class="n">bb</span><span class="p">.</span><span class="na">position</span><span class="p">();</span> + <span class="k">return</span> <span class="p">(</span><span class="n">nread</span> <span class="o">==</span> <span class="n">size</span><span class="p">)</span> <span class="o">?</span> <span class="n">arr</span> <span class="p">:</span> <span class="n">Arrays</span><span class="p">.</span><span class="na">copyOf</span><span class="p">(</span><span class="n">arr</span><span class="p">,</span> <span class="n">nread</span><span class="p">);</span> + <span class="p">}</span> +<span class="p">}</span> +</pre></div> +<p>With that in mind, check if isn't better read chunks of bytes e work with that slice in exchange of loading the whole file into the memory ;). Above a simple example of how you can read chunks of bytes from the file.</p> +<div class="highlight"><pre><span></span><span class="kt">byte</span><span class="o">[]</span> <span class="n">buffer</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">byte</span><span class="o">[</span><span class="mi">1024</span><span class="o">]</span><span class="p">;</span> +<span class="n">FileInputStream</span> <span class="n">in</span> <span class="o">=</span> <span class="k">new</span> <span class="n">FileInputStream</span><span class="p">(</span><span class="n">file</span><span class="p">);</span> +<span class="kt">int</span> <span class="n">rc</span> <span class="o">=</span> <span class="n">in</span><span class="p">.</span><span class="na">read</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span> +<span class="k">while</span> <span class="p">(</span><span class="n">rc</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> +<span class="p">{</span> + <span class="c1">//crazy stuff here with buffer</span> + <span class="n">rc</span> <span class="o">=</span> <span class="n">in</span><span class="p">.</span><span class="na">read</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span> +<span class="p">}</span> +</pre></div> + \ No newline at end of file diff --git a/en/feeds/all.atom.xml.gz b/en/feeds/all.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..bc665af0ba3205a3c826d4a5935fdd7965166921 GIT binary patch literal 35016 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 Y`!vgw9-a(@2>$*50XL +Sipmann - Azurehttps://www.sipmann.com/en/2020-10-03T19:00:00-03:00Microsoft Against Covid2020-10-03T19:00:00-03:002020-10-03T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-03:/en/microsoft-against-covid.html<p>Has your job been affected by covid? Well, last week I've posted on <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by …</p><p>Has your job been affected by covid? Well, last week I've posted on <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by covid pandemic. </p> +<p>To see more details about if you were eligible, access <a href="https://docs.microsoft.com/en-us/learn/certifications/skillingoffer">https://docs.microsoft.com/en-us/learn/certifications/skillingoffer</a>.</p>Monitoring a Website heath with Azure Functions2020-06-22T19:00:00-03:002020-06-22T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-06-22:/en/monitoring-website-heath-with-azure-functions.html<p>Sometimes you get your self in need to monitor a website's health or it's content for changes. Of course, there's plenty of options out there, but for the sake of curiosity, let's code our own to see what we can do. First things first. Everything you'll see here, you can …</p><p>Sometimes you get your self in need to monitor a website's health or it's content for changes. Of course, there's plenty of options out there, but for the sake of curiosity, let's code our own to see what we can do. First things first. Everything you'll see here, you can achieve with the <a href="https://azure.microsoft.com/free/">free tier</a> of azure.</p> +<p>The main idea of our app will be to monitor website health (status code). To create a new Azure Function Project, follow the steps below.</p> +<p><img alt="Steps to create a azure function project" src="/images/azure_functions.gif"></p> +<p>After creating the project, you'll have a few files. Open your main file and start coding. The main file will have a function called <code>Run</code> and you can code your request method. I've created an <code>async</code> method to make the request and log the output at the console. The full code you can see below.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Linq</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Threading.Tasks</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs.Host</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Extensions.Logging</span><span class="p">;</span> + +<span class="k">namespace</span> <span class="nn">Sipmann.CheckMySite</span> +<span class="p">{</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">class</span> <span class="nc">HttpCheck</span> + <span class="p">{</span> + + <span class="k">private</span> <span class="k">static</span> <span class="k">async</span> <span class="n">Task</span> <span class="nf">GetTask</span><span class="p">(</span><span class="kt">string</span> <span class="n">url</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="kt">var</span> <span class="n">request</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpRequestMessage</span><span class="p">(</span><span class="n">HttpMethod</span><span class="p">.</span><span class="n">Get</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span> + + <span class="kt">var</span> <span class="n">client</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + <span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">client</span><span class="p">.</span><span class="n">SendAsync</span><span class="p">(</span><span class="n">request</span><span class="p">);</span> + + <span class="k">if</span> <span class="p">(</span><span class="n">response</span><span class="p">.</span><span class="n">IsSuccessStatusCode</span><span class="p">)</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="k">else</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} não esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> + +<span class="na"> [FunctionName(&quot;HttpCheck&quot;)]</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">void</span> <span class="nf">Run</span><span class="p">([</span><span class="n">TimerTrigger</span><span class="p">(</span><span class="s">&quot;0 */5 * * * *&quot;</span><span class="p">)]</span><span class="n">TimerInfo</span> <span class="n">myTimer</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="kt">var</span> <span class="n">urls</span> <span class="p">=</span> <span class="k">new</span><span class="p">[]{</span><span class="s">&quot;https://www.sipmann.com&quot;</span><span class="p">,</span> <span class="s">&quot;https://www.canezecanez.com.br&quot;</span><span class="p">};</span> + + <span class="c1">// Start every request and wait for them all to complete</span> + <span class="n">Task</span><span class="p">.</span><span class="n">WaitAll</span><span class="p">(</span><span class="n">urls</span><span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">url</span> <span class="p">=&gt;</span> <span class="n">GetTask</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">log</span><span class="p">)).</span><span class="n">ToArray</span><span class="p">());</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;Finalizou a fila&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>Now you can enhance the function and maybe send some alerts like a Telegram message when one of your sites went down.</p>Azure Data Fundamentals certification with 80% discount2020-06-09T12:30:00-03:002020-06-09T12:30:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-06-09:/en/azure-data-fundamentals-certification-80-discount.html<p>Hey folks, if you want to achieve some certification this year, keep an eye open for vouchers. A few months ago, Oracle released a set of free courses with certifications. Now it's Microsoft time. Microsoft is updating they're certifications and we have a voucher of 80% discount using the coupon …</p><p>Hey folks, if you want to achieve some certification this year, keep an eye open for vouchers. A few months ago, Oracle released a set of free courses with certifications. Now it's Microsoft time. Microsoft is updating they're certifications and we have a voucher of 80% discount using the coupon <strong>DP900Norfolk</strong> at the checkout of the beta certification DP-900. </p> +<p>Be aware that this certification is in beta and the result won't be instantly available as the regular ones. Access the following link and schedule your exam. <a href="https://docs.microsoft.com/pt-br/learn/certifications/exams/dp-900" target="_blank">https://docs.microsoft.com/pt-br/learn/certifications/exams/dp-900</a>.</p> +<p><strong>Update:</strong> There is a 80% voucher also for <a href="https://docs.microsoft.com/en-us/learn/certifications/azure-ai-fundamentals" target="_blank">https://docs.microsoft.com/en-us/learn/certifications/azure-ai-fundamentals</a>. Voucher: <strong>AI900Saratoga</strong></p> \ No newline at end of file diff --git a/en/feeds/azure.atom.xml.gz b/en/feeds/azure.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..61948b9417b494656468005b5f6a5415a787f288 GIT binary patch literal 2578 zcmV+t3hnhDiwFP!000021MM5zZrjN9JzsI4Za2xoB4r2LCXVcd*V$~`=7!kYJOsgF zM2@Ig4QH5{p%f(u(0?h=w|>R`Nx!7$%#gZSmMFzZ7DePh5Xm#=ejCn7_lLK+gb_DZ zXm!-uk2)>jD$%J>*-@)>{r26~563sUea=%rP-Tx=1LumvI3AD3(fCfJO%@+?I^V}9 zPUo%Tt`ko3<8x8uOetu?$-C0xF%vIb1!{t$nNym+1 zjw9NbRyJBstlF3n*@z)e5wcw&v|RRQxI}uqhKFv9&%0%jBK`FEpmWe^?|0grI~V)+ z4m%zEhrjW=8`mIRTlOj`Gc_I>{t?oNG$(T^q!KogJbW82zHI_CDSlS6; zi3V;e=nBmhWlst_STD;AXe-HC=?2;ycNNP~NLHHP|C0y}rz~eC(@;4>H}=oFaSe_N zb}Tzw5^--v@o&0&Y-VLl?IHsXo9jE4oq4-MG1p4phw(tefT5NKj4*H!6g;on|NiseUNmn8iV1I}<8GprfOO<#nY+G-p*xTcPyX|qe z33uBU+IGLjyImT>Z3LVgaSoP z7shZ!8*N*WzG=z25-p2&g~Q7_r}ptiGGHp>HiBn;yk8oNfrue*Xc^`Lx% zbQiD`qj1bP2pclgPOWGE+$*<6Rr8-PDbeGJ8&WAT^rBRr&-xlX=GtGpFM7&`zbQHT z9LCc?r%`CDf}T=bvVfD>iAol+hGpK=hhMK>q*{*?VY(tNww5aceHLwh* zl!rW@p#SBU(9c5_9&nL`8`ncOdMwnNFGl<+chMuvC|`_$3(RWFhsFi7L;Lypn09HA zPgD^$Uw_lRKMo_&Bit2zNp606izU_iocUO1*)oDg++4v9^>KJN;mtgz>g`SkJQ+Tj zoMQ=EFLPk!{UQ+HXEiszX-(F%5+JGIHG}jQ8>CA-Bt@Z@Y%{wn@zHx=IwY+2KQE7}Y6Ggb zFS|rzw}83N6-pYhM!Z&?z1E1S*mzm|>vVNnV7=qlCO;c9;da#f?hbj* zReEwMMeiOlt1`fKc&1+>`c1UmjLj9++g*!i_Pq2jLC^g*_mp-WJLl}3^7g7l+tiOH zQew?IQ+;i6|6cQ>9fq6mj`y3jP&VxMSYF(JQ)+krmlu!WoA;RfJ^=a|gJ*xAJ=?+S zHY@$Z78%4Z;Bv{YzFKx$%c|f1rN69s8v$S1O(@n1uU^9ERsBZmDQ;qJ%>ec05}+E3O`u159h_4}=y>WUMzt=wyaiPw=#nBwoa|0c3g&um5c!!|uv zvhUZ#F`WC?)0~ba7GCyJ$66nQ*K3gu#kr=zZ{1v_ovtLZspovm^4gdx0_huLZ2AJCXM!w+cXsamtEOIp_ml! zbV65sU#eBO^@Ix0p@Jd z<6t=*;pv>lbhvRAq!`j^-33N_W>^k+cqs+r0au`vKP?W&*TQiNV>*sb^;mtj0hMsx z`hbsgVb@Qx{Aumu2ihr4^NkzmA>32$)=$Dz2glW5OM`isN(hF#1njd@Y_XMN(!#

U0+3<(JCXgJ$Qbv z(|M{5sV)?f>7(gT1MT2xCJ0f}b&q2vTGZo%=WRr@ddl)gPQ#&w*Q1_dIdkC+p#oOs zCqhZ7wv-OWTHSOsa6^OAXiYf*Hey(udo)jCE6}Wz%uu-@GldaNU%>oK4GHfPpdUX$ zQPNUY10wt_%cG{#oP}%m%<3sj!eisKAQiL#w-6b3N3CCblBwaQ;m(F=SI%}W&IHZu z_KQ!Ghs)Nypus9qHuDZr`-`8rC13yevDT0|nOMl1+iGN6{Bx?Q$CMA3eEj4LRd~(} ob2?*7YWcjK$b9{70N#AQ_CXcytJ?|xzetY%2LYDf3m!870G?bFxc~qF literal 0 HcmV?d00001 diff --git a/en/feeds/flutter.atom.xml b/en/feeds/flutter.atom.xml new file mode 100644 index 000000000..ea98d9b81 --- /dev/null +++ b/en/feeds/flutter.atom.xml @@ -0,0 +1,28 @@ + +Sipmann - Flutterhttps://www.sipmann.com/en/2019-10-03T19:00:00-03:00Flutter + firebase auth crashing2019-10-03T19:00:00-03:002019-10-03T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-10-03:/en/flutter_with_firebase_auth_crashing.html

<p>Hey Folks, recently I've started learning <a href="https://flutter.dev/">Flutter</a> and right after a TODO List, I tried a Firebase integration. But as soon as I started setting the dependencies, my app stopped opening... just a crash. After a few logs digging, I've found the following log.</p> +<div class="highlight"><pre><span></span><code>AndroidRuntime: FATAL EXCEPTION: main +AndroidRuntime: Process …</code></pre></div><p>Hey Folks, recently I've started learning <a href="https://flutter.dev/">Flutter</a> and right after a TODO List, I tried a Firebase integration. But as soon as I started setting the dependencies, my app stopped opening... just a crash. After a few logs digging, I've found the following log.</p> +<div class="highlight"><pre><span></span><code>AndroidRuntime: FATAL EXCEPTION: main +AndroidRuntime: Process: com.example.diadocasal, PID: <span class="m">13672</span> +AndroidRuntime: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/util/ArrayMap<span class="p">;</span> +AndroidRuntime: at com.google.android.gms.internal.measurement.zzca.&lt;clinit&gt;<span class="o">(</span>Unknown Source:60<span class="o">)</span> +AndroidRuntime: at com.google.android.gms.internal.measurement.zzcm.zzr<span class="o">(</span>Unknown Source:7<span class="o">)</span> +AndroidRuntime: at com.google.android.gms.measurement.internal.zzfj.&lt;init&gt;<span class="o">(</span>Unknown Source:23<span class="o">)</span> +</code></pre></div> + +<p>Notice the "NoClassDefFound" of an ArrayMap. To solve that I did the following changes to the files:</p> +<div class="highlight"><pre><span></span><code><span class="c1">//build.gradle file</span> + <span class="n">ext</span><span class="p">.</span><span class="na">kotlin_version</span> <span class="o">=</span> <span class="err">&#39;</span><span class="mf">1.3.20</span><span class="err">&#39;</span> +<span class="o">[</span><span class="p">...</span><span class="o">]</span> + <span class="n">dependencies</span> <span class="p">{</span> + <span class="n">classpath</span> <span class="err">&#39;</span><span class="n">com</span><span class="p">.</span><span class="na">android</span><span class="p">.</span><span class="na">tools</span><span class="p">.</span><span class="na">build</span><span class="p">:</span><span class="n">gradle</span><span class="p">:</span><span class="mf">3.3.0</span><span class="err">&#39;</span> <span class="c1">// gradle version</span> +</code></pre></div> + +<div class="highlight"><pre><span></span><code><span class="c1">;gradle.properties file</span> +<span class="na">org.gradle.jvmargs</span><span class="o">=</span><span class="s">-Xmx1536M ;mine have just this line at first</span> +<span class="na">android.useAndroidX</span><span class="o">=</span><span class="s">true ; uses androidX instead of the default support library</span> +<span class="na">android.enableJetifier</span><span class="o">=</span><span class="s">true ; uses jetpack libraries</span> +<span class="na">android.enableR8</span><span class="o">=</span><span class="s">true ; the new code shriker</span> +</code></pre></div> + +<p>After that, voilà, app up and running.</p> \ No newline at end of file diff --git a/en/feeds/flutter.atom.xml.gz b/en/feeds/flutter.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..d41ea2ab20d054d174a64c7a8f30a8f37a18d679 GIT binary patch literal 1333 zcmV-51-M?*iC}n6bMih z0V7co6N(f_%8t{QeoCME*00z<>6dgUQMou?!Rb0LMUB9b%;Djg!)wtBsn!H!jV zXA)X&1)F^2MNXxJO*jyxwM>UWJrD{muOQPbsez0~GW7%!sXSmZ=zwNo+@S)eN@^Jb z2X5v{^Bq|eB=y3CA}@l}J)~hGxkKaeq=iKo;CNUTF*1lJTfP39&3LfuLpbw3D@j`8V0nq8AO_z3{`)kP~OY)8MoPagLv)` z&l^ON*<0_I2wIdEf}5<}!8@ZT$>De?Jqabv+2lPf^{2lgu3(quRHq7jl!QSw9tMp$ zs%~jITyVF0x8m?AuGhP0${ZJ+gPj-5DTXdLV`=nQcW#pC4nDGoMyl%CEfqSTULfy>qyy*LCgv!W6WL7(2INyv?$O} z6$Kh99CLCI0+*#hv^v}f?07Z_n}JZNftaT$T6Syq6ICK{2cIY*)XXi0W~B10Qf|Xt z#(WBqpvDykbW%7+DCQXYKil0u zIXyf+8bVIF+*q_a(JErbz~8_BSs^!QHOsr@1LWzhU2ayvFbN}tLQDI9RQzY7VhC6| z2)m|vAsC4{ja5Vq6h9j2G!#@t;hP5(ewJ5K z%_MwOrHl$1nXaNWOXoj`ykE^1Zo9E^oE{LS?rGE3saw?rm(`mbN2h zdBmz5?kvP_2Llx=6EqP?;8bCi5mRT5N*rP}Sj_$?!$e>Ptf~hv^v&?O%E6)_QNMx- zf{T(1+!jq^QFC~x(W6|K)jW1>A1(Db14*lmq?OT?vY1Kd{y6<$1}xvkak~-Ix|YZV z&{u;uqgEDqQWq~WAX~jw%XZw27)b+;8}N!A{QDm6$dU;?gkx)IM7iRjW$|BS2sSew8ykeH+VY>>iKx(K?}} zu;5Q}$p1oPPw^z?OwtR%eqxp<+;;}+C4b3mL8B{AZn2QAM(@Mx^%8U9N$f0K41>uu zzglqp$)}mRUva0CE=&~{pZ@4pjZRtAEmkS3KIiU05(d8U!w!&QPo><80jBeD$2V#2 r^++@F$R=6E#`kQkM$Hkc)oAf}_P{pq@0O}}UXy +Sipmann - Front-endhttps://www.sipmann.com/en/2018-04-13T13:00:00-03:00Microservices with NodeJS, Express.js and RabbitMQ Part 22018-04-13T13:00:00-03:002018-04-13T13:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-04-13:/en/microservices_nodejs_express_rabbitmq_part_2.html<p>If you haven't read the <a class="reference external" href="https://www.sipmann.com/microservices_nodejs_express_rabbitmq_part_1-en.html">part 1</a> go ahead and read it... It can be useful :). Or if for some reason you want to start now, you can grab the project where we stopped <a class="reference external" href="https://github.com/sipmann/imagecompacter/releases/tag/v1">here</a> and get along. On this part, we'll implement the RabbitMQ queue and see how we …</p><p>If you haven't read the <a class="reference external" href="https://www.sipmann.com/microservices_nodejs_express_rabbitmq_part_1-en.html">part 1</a> go ahead and read it... It can be useful :). Or if for some reason you want to start now, you can grab the project where we stopped <a class="reference external" href="https://github.com/sipmann/imagecompacter/releases/tag/v1">here</a> and get along. On this part, we'll implement the RabbitMQ queue and see how we can get the best of our app and server with that.</p> +<p>Before we began coding, let's understand why we are going to use RabbitMQ if what we have now works? If you check again, you'll see how long it takes to answer the request with the optimized image. It takes a few seconds, so imagine an online service with thousands of request to optimize images (like <a class="reference external" href="https://tinypng.com/">TinyPNG</a>) how long is it gonna take to answer every request? How much of your server is it gonna take? With only one service running, probably the server will crash.</p> +<p>With a queue, we can schedule the requests so we can use the amount of memory and processor that our server has, without taking more than we can. It's better to take a few seconds to answer the request then throw some error to the user. Want more? With RabbitMQ we can see how the queue is doing and we can add more consumers (workers) to it and get things done quicker and distribute the job.</p> +<p>First of all, we need an up and running Rabbit server, for the sake of simplicity, I'll use a Docker container with it inside.</p> +<div class="highlight"><pre><span></span>docker run -d --name rabbit -p <span class="m">5672</span>:5672 -p <span class="m">8080</span>:15672 rabbitmq:3-management +</pre></div> +<p>You can see that we're running the rabbitmq:3-management image, which provides us a web interface to see how things are going. After that, if you look at our code you'll see that all the job is made at the '/upload' route, and that's what we'll change.</p> +<p>First, we need to understand what we need from RabbitMQ. We need something that, we send an image to a queue and get an optimized image back from that. There is a name for that, is RPC (remote procedure call) and there are two ways of doing this with rabbit. Both the ways you can see on their tutorial page. We'll use the approach that uses a global channel whose id is randomly generated (you'll use the name 'amq.rabbitmq.reply-to' but the rabbit will do the job).</p> +<p>Let's start importing the library, defining a few variables and defining a init function that will establish a connection with the rabbit server and create our RPC queue. The RPC queue it's where we'll receive the answer from the consumer (our worker).</p> +<div class="highlight"><pre><span></span><span class="c1">//import the library</span> +<span class="kr">const</span> <span class="nx">amqplib</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;amqplib&#39;</span><span class="p">);</span> + +<span class="c1">//queue channel</span> +<span class="kd">let</span> <span class="nx">channel</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span> +<span class="c1">//queue name</span> +<span class="kr">const</span> <span class="nx">QUEUE</span> <span class="o">=</span> <span class="s1">&#39;optimizeimg&#39;</span><span class="p">;</span> + +<span class="c1">//...</span> + +<span class="kd">function</span> <span class="nx">init</span><span class="p">()</span> <span class="p">{</span> + <span class="k">return</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;amqplib&#39;</span><span class="p">).</span><span class="nx">connect</span><span class="p">(</span><span class="s1">&#39;amqp://localhost&#39;</span><span class="p">)</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">conn</span> <span class="p">=&gt;</span> <span class="nx">conn</span><span class="p">.</span><span class="nx">createChannel</span><span class="p">())</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">ch</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">channel</span> <span class="o">=</span> <span class="nx">ch</span><span class="p">;</span> + + <span class="c1">//this queue is a &quot;Direct reply-to&quot; read more at the docs</span> + <span class="c1">//When some msg comes in, we &quot;emit&quot; a message to the proper &quot;correlationId&quot; listener</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">consume</span><span class="p">(</span><span class="s1">&#39;amq.rabbitmq.reply-to&#39;</span><span class="p">,</span> <span class="nx">msg</span> <span class="p">=&gt;</span> <span class="nx">eventEmitter</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="nx">msg</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">correlationId</span><span class="p">,</span> <span class="nx">msg</span><span class="p">.</span><span class="nx">content</span><span class="p">),</span> <span class="p">{</span><span class="nx">noAck</span><span class="o">:</span> <span class="kc">true</span><span class="p">});</span> + <span class="p">});</span> +<span class="p">}</span> + +<span class="c1">//Random id generator</span> +<span class="kd">function</span> <span class="nx">randomid</span><span class="p">()</span> <span class="p">{</span> + <span class="k">return</span> <span class="k">new</span> <span class="nb">Date</span><span class="p">().</span><span class="nx">getTime</span><span class="p">().</span><span class="nx">toString</span><span class="p">()</span> <span class="o">+</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">().</span><span class="nx">toString</span><span class="p">()</span> <span class="o">+</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">().</span><span class="nx">toString</span><span class="p">();</span> +<span class="p">}</span> + +<span class="nx">app</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span><span class="s1">&#39;/upload&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="kd">let</span> <span class="nx">img</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">files</span><span class="p">.</span><span class="nx">image</span><span class="p">;</span> + + <span class="kd">let</span> <span class="nx">id</span> <span class="o">=</span> <span class="nx">randomid</span><span class="p">();</span> + + <span class="c1">//Event listener that will fire when the proper randomid is provided</span> + <span class="nx">eventEmitter</span><span class="p">.</span><span class="nx">once</span><span class="p">(</span><span class="nx">id</span><span class="p">,</span> <span class="nx">msg</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">write</span><span class="p">(</span><span class="nx">msg</span><span class="p">,</span> <span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">end</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="p">});</span> + + <span class="c1">//Checks if the queue exists, and create it if needed.</span> + <span class="nx">channel</span><span class="p">.</span><span class="nx">assertQueue</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">)</span> + <span class="c1">//Sent the buffered img to the queue with the ID and the responseQueue</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="nx">channel</span><span class="p">.</span><span class="nx">sendToQueue</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">,</span> <span class="nx">img</span><span class="p">.</span><span class="nx">data</span><span class="p">,</span> <span class="p">{</span><span class="nx">correlationId</span><span class="o">:</span><span class="nx">id</span><span class="p">,</span> <span class="nx">replyTo</span><span class="o">:</span> <span class="s1">&#39;amq.rabbitmq.reply-to&#39;</span><span class="p">}));</span> + +<span class="p">});</span> + +<span class="c1">//Finally start the app with the given port number</span> +<span class="c1">//now we initialize the rabbitmq connection before start the server</span> +<span class="nx">init</span><span class="p">()</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="nx">app</span><span class="p">.</span><span class="nx">listen</span><span class="p">(</span><span class="mi">4000</span><span class="p">,</span> <span class="p">()</span> <span class="p">=&gt;</span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;Example app listening on port 4000!&#39;</span><span class="p">)))</span> + <span class="p">.</span><span class="k">catch</span><span class="p">(</span><span class="nx">err</span><span class="p">=&gt;</span><span class="nx">console</span><span class="p">.</span><span class="nx">error</span><span class="p">(</span><span class="nx">err</span><span class="p">));</span> +</pre></div> +<p>Ok, now we have our server code rewritten so let's see our worker code. Create a file named 'worker.js' and let's see how it's gonna be. It's really simple. You initialize a connection with RabbitMQ too, create a channel, check if the queue exists and start watching for incoming messages. When an image arrives, we do the job with it and send back to the &quot;replyTo&quot; queue the optimized image for the proper sender (correlationId). In the end, we do an acknowledge of the message so it get's out from the queue.</p> +<div class="highlight"><pre><span></span><span class="kr">const</span> <span class="nx">imagemin</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin&#39;</span><span class="p">);</span> +<span class="kr">const</span> <span class="nx">imageminPngquant</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin-pngquant&#39;</span><span class="p">);</span> + +<span class="kd">let</span> <span class="nx">channel</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span> +<span class="kr">const</span> <span class="nx">QUEUE</span> <span class="o">=</span> <span class="s1">&#39;imgqueue&#39;</span><span class="p">;</span> + +<span class="nx">require</span><span class="p">(</span><span class="s1">&#39;amqplib&#39;</span><span class="p">).</span><span class="nx">connect</span><span class="p">(</span><span class="s1">&#39;amqp://localhost&#39;</span><span class="p">)</span> +<span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">conn</span> <span class="p">=&gt;</span><span class="nx">conn</span><span class="p">.</span><span class="nx">createChannel</span><span class="p">())</span> +<span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">ch</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">assertQueue</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">)</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="c1">//Watch incomming messages</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">consume</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">,</span> <span class="nx">msg</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">imagemin</span><span class="p">.</span><span class="nx">buffer</span><span class="p">(</span><span class="nx">msg</span><span class="p">.</span><span class="nx">content</span><span class="p">,</span> <span class="p">{</span> + <span class="nx">plugins</span><span class="o">:</span> <span class="p">[</span><span class="nx">imageminPngquant</span><span class="p">()]</span> + <span class="p">})</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">out</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="c1">//Send back to the sender (replyTo) queue and give the correlationId back</span> + <span class="c1">//so we can emit the event.</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">sendToQueue</span><span class="p">(</span><span class="nx">msg</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">replyTo</span><span class="p">,</span> <span class="nx">out</span><span class="p">,</span> <span class="p">{</span> + <span class="nx">correlationId</span><span class="o">:</span> <span class="nx">msg</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">correlationId</span> + <span class="p">});</span> + + <span class="c1">//Acknowledge the job done with the message.</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">ack</span><span class="p">(</span><span class="nx">msg</span><span class="p">);</span> + <span class="p">});</span> + <span class="p">});</span> + <span class="p">});</span> +<span class="p">});</span> +</pre></div> +<p>The key points here are. Open just one connection to the hole server. You CAN create one channel for every request that you receive, but it can take some time if you have a really big cluster of RabbitMQ. It was a quick tutorial, but I hope that it was able to clear a few questions that you might have when working with rabbit and express.</p> +Microservices with NodeJS, Express.js and RabbitMQ Part 12018-04-04T11:25:00-03:002018-04-04T11:25:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-04-04:/en/microservices_nodejs_express_rabbitmq_part_1.html<p>This is the first part of a microservices development series. The service will consist of the bellow architecture, where we will expose an image optimizer service that will forward the request to a <a class="reference external" href="https://www.rabbitmq.com/">RabbitMQ</a> queue and answer with the bytecode of the optimized image. It shouldn't be a long series …</p><p>This is the first part of a microservices development series. The service will consist of the bellow architecture, where we will expose an image optimizer service that will forward the request to a <a class="reference external" href="https://www.rabbitmq.com/">RabbitMQ</a> queue and answer with the bytecode of the optimized image. It shouldn't be a long series so let's see what we can do.</p> +<img alt="Service architecture" src="/images/microservices_rabit_pt1.png" /> +<p>Let's get our environment working. First, we'll need to install the libraries that we'll use.</p> +<p>Create a dir and initialize the nodejs application inside it (<cite>npm init</cite>) and then let's install the deps.</p> +<ul class="simple"> +<li>amqplib - AMQP lib to interact with rabbitmq</li> +<li>express - Do our basic rest API</li> +<li>express-fileupload - easy file upload parser</li> +<li>imagemin and imagemin-pngquant - our image compacter</li> +</ul> +<div class="highlight"><pre><span></span>npm install --save express amqplib express-fileupload imagemin imagemin-pngquant +</pre></div> +<p>Now let's write the entry points for our service, we'll have two basic entry points. The path <cite>/</cite> that will have a welcome message, the second path will be <cite>/upload</cite> and this is the one that will handle the image and produce a job for our workers.</p> +<div class="highlight"><pre><span></span><span class="kr">const</span> <span class="nx">express</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;express&#39;</span><span class="p">);</span> +<span class="kr">const</span> <span class="nx">fileUpload</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;express-fileupload&#39;</span><span class="p">);</span> + +<span class="c1">//Instantiate the app and set the fileupload parser to manage files</span> +<span class="kr">const</span> <span class="nx">app</span> <span class="o">=</span> <span class="nx">express</span><span class="p">();</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">use</span><span class="p">(</span><span class="nx">fileUpload</span><span class="p">());</span> + +<span class="c1">//Our index entry point</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="nx">res</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="s1">&#39;Hello From ImageCompacter service&#39;</span><span class="p">));</span> + +<span class="c1">//The path that will handle the image file and throw them to the queue</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span><span class="s1">&#39;/upload&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="c1">//With express-fileupload we can grab the files like this</span> + <span class="kd">let</span> <span class="nx">img</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">files</span><span class="p">.</span><span class="nx">image</span><span class="p">;</span> <span class="c1">//&quot;image&quot; is the name of the input</span> + + <span class="nx">res</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="s1">&#39;Not ready yet&#39;</span><span class="p">);</span> +<span class="p">});</span> + +<span class="c1">//Finally start the app with the given port number</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">listen</span><span class="p">(</span><span class="mi">4000</span><span class="p">,</span> <span class="p">()</span> <span class="p">=&gt;</span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;Example app listening on port 4000!&#39;</span><span class="p">));</span> +</pre></div> +<p>Let's check if it works, run the service with node.</p> +<div class="highlight"><pre><span></span>node index.js +Example app listening on port <span class="m">4000</span>! +</pre></div> +<p>Open the browser and check if it prints our hello message when accessing <cite>localhost:4000</cite>. Works? Greate. Now let's work with the image and see how we do it. To optimize our image, we'll use the library imagemin and <a class="reference external" href="https://www.npmjs.com/package/imagemin-pngquant">imagemin-pngquant</a>, it will be that simple for now, we'll work with rabbitmq latter.</p> +<div class="highlight"><pre><span></span><span class="kr">const</span> <span class="nx">imagemin</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin&#39;</span><span class="p">);</span> +<span class="kr">const</span> <span class="nx">imageminPngquant</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin-pngquant&#39;</span><span class="p">);</span> +<span class="c1">//...</span> + +<span class="c1">//The path that will handle the image file and throw them to the queue</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span><span class="s1">&#39;/upload&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="kd">let</span> <span class="nx">img</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">files</span><span class="p">.</span><span class="nx">image</span><span class="p">;</span> <span class="c1">//&quot;image&quot; is the name of the input</span> + + <span class="nx">imagemin</span><span class="p">.</span><span class="nx">buffer</span><span class="p">(</span><span class="nx">img</span><span class="p">.</span><span class="nx">data</span><span class="p">,</span> <span class="p">{</span> + <span class="nx">plugins</span><span class="o">:</span> <span class="p">[</span><span class="nx">imageminPngquant</span><span class="p">()]</span> + <span class="p">})</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">out</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">write</span><span class="p">(</span><span class="nx">out</span><span class="p">,</span><span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">end</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="p">});</span> +<span class="p">});</span> + + <span class="c1">//...</span> +</pre></div> +<p>Use <a class="reference external" href="https://www.getpostman.com/">Postman</a> to test the request. To see if it will work, make a request to <cite>http://localhost:4000/upload</cite> with a formdata with a file. Select the &quot;send and Download&quot; instead of &quot;Send&quot; and you should have an image after that. Bellow an image of how your postman should be.</p> +<img alt="Postman" src="/images/microservice_postman.png" /> +<p>That's it for today, next week we'll change our code to use RabbitMQ.</p> +Scaffolding a React app with Parcel and Yeoman2018-03-17T13:00:00-03:002018-03-17T13:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-17:/en/scaffolding_react_app_with_parcel_yeoman.html<p>Since <a class="reference external" href="https://parceljs.org/">Parcel JS</a> arrived, I've been using it a lot as an awesome alternative for WebPack. Webpack isn't bad but IMO it's too complex for the job and parcel do the same (at least the basic) with almost zero configuration. But if you need to create many apps (like a …</p><p>Since <a class="reference external" href="https://parceljs.org/">Parcel JS</a> arrived, I've been using it a lot as an awesome alternative for WebPack. Webpack isn't bad but IMO it's too complex for the job and parcel do the same (at least the basic) with almost zero configuration. But if you need to create many apps (like a react app) over and over again, it get's a lil boring following the basic steps.</p> +<div class="highlight"><pre><span></span>npm init -y +npm install --save react +npm install --save react-dom +npm install --save-dev parcel-bundler +npm install --save-dev babel-preset-env +npm install --save-dev babel-preset-react + +<span class="c1">#create .babelrc file</span> +<span class="c1">#create html, css, jsx files</span> + +parcel index.html +</pre></div> +<p>It's not a hard job, a simple shell script do the job, but what if you need some IFs when creating the app, or even change a few things at the <cite>package.json</cite>? A shell script still does the job, but come on... There is a better way. <a class="reference external" href="http://yeoman.io/">Yeoman</a> is here for you. I've already <a class="reference external" href="https://www.sipmann.com/en/desenvolvendo-app-firefoxos-pt.html">talked about it</a> on another post (Portuguese post).</p> +<p>Straight to the point, I've released a Yeoman generator to get the things a lil quicker. The name is <a class="reference external" href="https://www.npmjs.com/package/generator-parcel-react">generator-parcel-react</a> and it still lacks a few things that I will deal with soon. It's pretty simple to use it.</p> +<div class="highlight"><pre><span></span><span class="c1">#First time only</span> +npm install -g yo +npm install -g generator-parcel-react + +<span class="c1">#every time you create a new app</span> +yo parcel-react +</pre></div> +<p>And that's it. Right now you can scaffold and app with React, SASS and React Router. Hope you like it and feel free to ask new features.</p> + \ No newline at end of file diff --git a/en/feeds/front-end.atom.xml.gz b/en/feeds/front-end.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..7c5bfdd31291adce4f245d541a37bd45ed60bc1e GIT binary patch literal 5555 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 +Sipmann - Javahttps://www.sipmann.com/en/2018-03-09T12:35:00-03:00Could not open connection with MySQL and Hibernate2018-03-09T12:35:00-03:002018-03-09T12:35:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-09:/en/cloud-not-open-connection-java-mysql-hibernate.html<p>Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some &quot;Could not open connection&quot; at my …</p><p>Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some &quot;Could not open connection&quot; at my face, but why? I've tried to connect to it manually and got the same problem.</p> +<p>After some research, I found that the true error should be java.sql.SQLException: null, message from server: &quot;Host '172.17.0.4' is not allowed to connect to this MySQL server&quot; but it wasn't showing to me...</p> +<p>After all, be aware that with the docker image MySQL:5.7.21 (latest version right now) the root user isn't allowed to remote connect to the database (it's alright, security reasons) and if you still want to do remote connections to it with root there are a few things you can do.</p> +<ol class="arabic simple"> +<li>Create a user or allow root to access from other IPs.</li> +</ol> +<div class="highlight"><pre><span></span><span class="o">#</span><span class="k">No</span> <span class="k">access</span> <span class="k">to</span> <span class="k">user</span> <span class="n">root</span> <span class="k">on</span> <span class="k">any</span> <span class="n">other</span> <span class="n">IP</span> +<span class="k">SELECT</span> <span class="k">User</span><span class="p">,</span> <span class="k">Host</span> <span class="k">FROM</span> <span class="n">mysql</span><span class="p">.</span><span class="k">user</span><span class="p">;</span> +<span class="o">+</span><span class="c1">---------------+-----------+</span> +<span class="o">|</span> <span class="k">User</span> <span class="o">|</span> <span class="k">Host</span> <span class="o">|</span> +<span class="o">+</span><span class="c1">---------------+-----------+</span> +<span class="o">|</span> <span class="n">healthchecker</span> <span class="o">|</span> <span class="n">localhost</span> <span class="o">|</span> +<span class="o">|</span> <span class="n">root</span> <span class="o">|</span> <span class="n">localhost</span> <span class="o">|</span> +<span class="o">+</span><span class="c1">---------------+-----------+</span> +<span class="mi">2</span> <span class="k">rows</span> <span class="k">in</span> <span class="k">set</span> <span class="p">(</span><span class="mi">0</span><span class="p">.</span><span class="mi">01</span> <span class="n">sec</span><span class="p">)</span> + +<span class="k">CREATE</span> <span class="k">USER</span> <span class="s1">&#39;newuser&#39;</span><span class="o">@</span><span class="s1">&#39;%&#39;</span> <span class="n">IDENTIFIED</span> <span class="k">BY</span> <span class="s1">&#39;password&#39;</span><span class="p">;</span> <span class="o">#%</span> <span class="n">mean</span> <span class="k">any</span> <span class="n">IP</span> +<span class="k">GRANT</span> <span class="k">ALL</span> <span class="k">PRIVILEGES</span> <span class="k">ON</span> <span class="o">*</span><span class="p">.</span><span class="o">*</span> <span class="k">TO</span> <span class="s1">&#39;newuser&#39;</span><span class="o">@</span><span class="s1">&#39;%&#39;</span><span class="p">;</span> <span class="o">#*</span><span class="p">.</span><span class="o">*</span> <span class="n">mean</span> <span class="k">database</span><span class="p">.</span><span class="k">table</span> <span class="p">;)</span> +</pre></div> +<ol class="arabic simple" start="2"> +<li>Use MariaDB instead, witch come (at least on the version 10.2.13) with root allowed to do remote connections and will work like MySQL :)</li> +</ol> +<p>I changed to <a class="reference external" href="https://mariadb.org/">MariaDB</a> as it work without creating user or any changes on the Java code or the <cite>docker run command</cite>.</p> +Solving java.net.SocketException: Protocol family unavailable on a Java + Docker + WildFly2018-03-04T17:40:00-03:002018-03-04T17:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-04:/en/socketException-protocol-family-unavailable-java-docker-wildfly.html<p>On the last days I've been playing with <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> and I decided to deploy a simple app with Docker. Should work fine, at least that was what I thought. Built a container with the following Dockerfile and instead of a working web app, all that I got was the …</p><p>On the last days I've been playing with <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> and I decided to deploy a simple app with Docker. Should work fine, at least that was what I thought. Built a container with the following Dockerfile and instead of a working web app, all that I got was the error <cite>java.net.SocketException: Protocol family unavailable</cite>.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">CMD</span> <span class="p">[</span><span class="s2">&quot;java&quot;</span><span class="p">,</span><span class="s2">&quot;-jar&quot;</span><span class="p">,</span><span class="s2">&quot;/opt/issues.jar&quot;</span><span class="p">]</span> +</pre></div> +<p>For some reason, WildFly and Java decided to use the IPv6 network interface from Docker instead the v4, so all you have to do is tell Java to prefer IPv4 instead with the following configuration option in your pom.xml file inside your WildFly plugin.</p> +<div class="highlight"><pre><span></span><span class="nt">&lt;plugin&gt;</span> + <span class="nt">&lt;groupId&gt;</span>org.wildfly.swarm<span class="nt">&lt;/groupId&gt;</span> + <span class="nt">&lt;artifactId&gt;</span>wildfly-swarm-plugin<span class="nt">&lt;/artifactId&gt;</span> + <span class="nt">&lt;version&gt;</span>2018.2.0<span class="nt">&lt;/version&gt;</span> + + <span class="c">&lt;!-- ADD THIS --&gt;</span> + <span class="nt">&lt;configuration&gt;</span> + <span class="nt">&lt;mainClass&gt;</span>org.wildfly.swarm.examples.netflix.ribbon.frontend.Main<span class="nt">&lt;/mainClass&gt;</span> + <span class="nt">&lt;properties&gt;</span> + <span class="nt">&lt;java.net.preferIPv4Stack&gt;</span>true<span class="nt">&lt;/java.net.preferIPv4Stack&gt;</span> + <span class="nt">&lt;/properties&gt;</span> + <span class="nt">&lt;/configuration&gt;</span> +</pre></div> +<p>Another way to solve is adding the same properties to the run command at the Dockerfile, so you choose where you'll add it. Bellow the Dockerfile solution.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> +<span class="k">ENV</span> <span class="nv">JAVA_OPTS</span><span class="o">=</span><span class="s2">&quot;-Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true&quot;</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">ENTRYPOINT</span> <span class="nb">exec</span> java <span class="nv">$JAVA_OPTS</span> -jar /opt/issues.jar +</pre></div> +Java - Files.readAllBytes throws OutOfMemory2018-02-17T13:00:00-02:002018-02-17T13:00:00-02:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-02-17:/en/reading-files-java-readAllBytes-outofmemory.html<p>When you need to interact with files, there's the possibility to read all bytes from the file with <cite>Files.readAllBytes</cite>. But be aware of the kinds of files your application will deal with because the Java API files have a limit for the buffer that is defined as <cite>Integer.MAX_VALUE …</cite></p><p>When you need to interact with files, there's the possibility to read all bytes from the file with <cite>Files.readAllBytes</cite>. But be aware of the kinds of files your application will deal with because the Java API files have a limit for the buffer that is defined as <cite>Integer.MAX_VALUE</cite> as you can see above or at the OpenJDK sources.</p> +<div class="highlight"><pre><span></span><span class="kd">public</span> <span class="kd">static</span> <span class="kt">byte</span><span class="o">[]</span> <span class="nf">readAllBytes</span><span class="p">(</span><span class="n">Path</span> <span class="n">path</span><span class="p">)</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="p">{</span> + <span class="k">try</span> <span class="p">(</span><span class="n">FileChannel</span> <span class="n">fc</span> <span class="o">=</span> <span class="n">FileChannel</span><span class="p">.</span><span class="na">open</span><span class="p">(</span><span class="n">path</span><span class="p">))</span> <span class="p">{</span> + <span class="kt">long</span> <span class="n">size</span> <span class="o">=</span> <span class="n">fc</span><span class="p">.</span><span class="na">size</span><span class="p">();</span> + <span class="k">if</span> <span class="p">(</span><span class="n">size</span> <span class="o">&gt;</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">Integer</span><span class="p">.</span><span class="na">MAX_VALUE</span><span class="p">)</span> + <span class="k">throw</span> <span class="k">new</span> <span class="n">OutOfMemoryError</span><span class="p">(</span><span class="s">&quot;Required array size too large&quot;</span><span class="p">);</span> + + <span class="kt">byte</span><span class="o">[]</span> <span class="n">arr</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">byte</span><span class="o">[</span><span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">size</span><span class="o">]</span><span class="p">;</span> + <span class="n">ByteBuffer</span> <span class="n">bb</span> <span class="o">=</span> <span class="n">ByteBuffer</span><span class="p">.</span><span class="na">wrap</span><span class="p">(</span><span class="n">arr</span><span class="p">);</span> + <span class="k">while</span> <span class="p">(</span><span class="n">bb</span><span class="p">.</span><span class="na">hasRemaining</span><span class="p">())</span> <span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="n">fc</span><span class="p">.</span><span class="na">read</span><span class="p">(</span><span class="n">bb</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> + <span class="c1">// truncated</span> + <span class="k">break</span><span class="p">;</span> + <span class="p">}</span> + <span class="p">}</span> + + <span class="kt">int</span> <span class="n">nread</span> <span class="o">=</span> <span class="n">bb</span><span class="p">.</span><span class="na">position</span><span class="p">();</span> + <span class="k">return</span> <span class="p">(</span><span class="n">nread</span> <span class="o">==</span> <span class="n">size</span><span class="p">)</span> <span class="o">?</span> <span class="n">arr</span> <span class="p">:</span> <span class="n">Arrays</span><span class="p">.</span><span class="na">copyOf</span><span class="p">(</span><span class="n">arr</span><span class="p">,</span> <span class="n">nread</span><span class="p">);</span> + <span class="p">}</span> +<span class="p">}</span> +</pre></div> +<p>With that in mind, check if isn't better read chunks of bytes e work with that slice in exchange of loading the whole file into the memory ;). Above a simple example of how you can read chunks of bytes from the file.</p> +<div class="highlight"><pre><span></span><span class="kt">byte</span><span class="o">[]</span> <span class="n">buffer</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">byte</span><span class="o">[</span><span class="mi">1024</span><span class="o">]</span><span class="p">;</span> +<span class="n">FileInputStream</span> <span class="n">in</span> <span class="o">=</span> <span class="k">new</span> <span class="n">FileInputStream</span><span class="p">(</span><span class="n">file</span><span class="p">);</span> +<span class="kt">int</span> <span class="n">rc</span> <span class="o">=</span> <span class="n">in</span><span class="p">.</span><span class="na">read</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span> +<span class="k">while</span> <span class="p">(</span><span class="n">rc</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> +<span class="p">{</span> + <span class="c1">//crazy stuff here with buffer</span> + <span class="n">rc</span> <span class="o">=</span> <span class="n">in</span><span class="p">.</span><span class="na">read</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span> +<span class="p">}</span> +</pre></div> + \ No newline at end of file diff --git a/en/feeds/java.atom.xml.gz b/en/feeds/java.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..d291607f92f73a04629cb13d6319c4fd50f792ec GIT binary patch literal 3423 zcmV-l4WRNLiwFP!000021MOVva@#f*{-38nooyU%OiFUnP3p+bDz?(98^>PTP21^o zIuHqos7ZnaKr8BYXZC6K-#*2@$v(-R1CY8|qM(aA?M(8+qs!sBbGUhKR&e$ebO77`#$)zMC*b#_>*4F&^$@YENwUpuJR zKdZI0NOq2!n(LSyU-2xVX-Yiu6}_d+n*FpH^Yn&9lJzVXRj^T(+7CohV`*)NNERRM z&{#8>Qq6#C4WD#+9yL|9pFpZlK_efOF8C=H_r|PvcwC`Evj*Qc^DG4M;qgJe@xrS= z_3EErHx3S;es)-|!&~^i13>qyAsW=a!wd`5Hm-~R+$kQ16v*%zcpo@UK_->jA75E4!MhclM%k0l;2Yl_wy7Nc1pc=x6ZG@uOJ3%pUdi%ePc%64D{*kdOsDgyoi zRFF)HZp;!zs3tUy_enR07d?m^D3yp?tCG=VpXi98FcR`G-PL8X0l#4)B(q8(4Mc=? zsbWTwj-(h6B@#v+(Ik8Mb1wADg=sq`L5;w||NZOV=&zb_7%l_j&*LUMqG2U`bnLp0 z?a_c)tp?HXl{HUGZuKfPfR`MoX_|u#LnF2iyipeg>!`HSABX6{Ca#D(lOo*(#)=YHLPwoAA&4gm|q;Es7Zg0F2tSY8v3Lg#?_1FA48pxyuj4-X~G z_bY6+@rEc3C`8YgIu7Av))~2npZU-Ig9dpVL+JqBi;a^=-j6hBKG-u4N&zmW}>N-^we23oDHa-J8qvGZ$M;7vZ3s?~rr3o1HJKy=!y) zNhPD8VTioxe@`Y~y9oJpt>}@_zYVzFjiWQi-?7JRPDKpb@F<8F?mE>EtiUxE0ga=j z>A!-AU>Re4-#f1!ST<4RXDYPduh zx*i9Cd()m@u-%+owp-V2r-F6WzO1HGHXBUW`S9uIFH<%!wYz-p(1ZN7l4e%Gr}J4a z+J8^m@2)#qwXL0ji-APv+cx`J%1R+*?C}QW`vJoep5{K%mN&28^%|21Si`W}w;x4Gg;mDmM-&EH;9u@jX>$PA_3Ck!up*NR1%I zXrxYug%YathJn5U5ici#JA`a13RTm`&VeCo1q|hROOzhEw z$3v2*K+0pxcXS)IPJ2>ficiQlJPzN)!xh1HH7(c63bCFQ>rIHYz_Sg92MHMV;^FG( z`?KrD^TTI#NA&$J^?jr7&kncc76&-~+~$8=fX8YA^37s8#0)WoVTF~7VYW(mYCvV; zb75C&ksss=Kb>5&P)_E9*0$;ynAm7xQ_Uw=7Bw}?yvI|vPe$dB8e63oyu-0!KU3Epy)J|#4As%@A6yA6*JoxK2$DLoy3@p%5^qH=4 zrE;eHpQt1?kxjl|#H#)6#rajcy3I6%HnM3d<(0rbe1hM&C6muSQ0xa3?xnq$ zfAA&mc17yLa>o`Y^v~$>*j5X5R~{PUj6t5TrHq`|jd}!Id9d(YX&T(jWsV2=%j{f< zp}W~NSG$+-aY&@)n?@_Or_lpC#Hy`exMWz%X&9R80~2>A3Z=^v`-!QV6xSoh&7avN z%$a&51Z*_}bLtKs?7|iSykXXdhLV{h^64j0h1^_X`QvnK3%aa#@0Y+|w}$Sk*8A3v z=NH#k4uIOxiv7*$q9i^tS6SwM-wH#?lw!)zEa+MOm|bf7-Sy>n7w4U2n0DGVU=`ja`YAB#Wl8%7-cjH3!hkbd?@?!*TP1{x)pI z@#~?+YJ?Zd6gkiJdGCxRz+y!h3%Nn5^RW0Ri^xn0@IOeXjF-L4 zH8H%S2)jksgxL%vW^}+kVuYxas*g7xrv@(b;Hw8;Txlkoh&A9QCg%t zWHh$&x-6jO*ktmtb(u;jGNk}3_3Tt;dY!YDg5AK(A5WY_H3TO6~AP>pj`-@mX&gcnptE=P&k zES<~6iA4^yJB!m<`uS)NbOFKsakt-Ja6~DGo8MruD&iVFiJ<6f;#olCrI6P?`?7SzA=PIhflO}AGM zGNJgLfpIG>v}8J$>9&@+yZ?^X8fG?FqOZ2n9$A5hF1%XUD5`B`Kp?W=dG9yfN%z-V zG49*4)5>-xsy@2>#@;4DfG;HpPs4p;emaJ~4z|BK?lO(Pa5iXW5asEO0URx+$tHe6 zZ(jid9WBG_?V@RS-M)oaGy6S?jC(sl8Z5>Isejw`OmwK{|`l1>Bp2z000lE BrDp&D literal 0 HcmV?d00001 diff --git a/en/feeds/linux.atom.xml b/en/feeds/linux.atom.xml new file mode 100644 index 000000000..7bc2622f6 --- /dev/null +++ b/en/feeds/linux.atom.xml @@ -0,0 +1,92 @@ + +Sipmann - Linuxhttps://www.sipmann.com/en/2020-10-20T19:00:00-03:00Zabbix Running on Low Memory Mode2020-10-20T19:00:00-03:002020-10-20T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-20:/en/zabbix-running-on-low-memory-mode.html<p>Hey folks, another Zabbix post today. This one it's about increasing the Zabbix Server Cache. It's pretty common (if you have the default settings only) get a warning about your <code>Zabbix value cache running on low memory mode</code> at your dashboard or logs.</p> +<p><img alt="Zabbix Dashboard warning about the memory problem" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache graph 70% used" src="/images/zabbix_cache_filling.png"></p> +<p>To solve, go back to your Zabbix …</p><p>Hey folks, another Zabbix post today. This one it's about increasing the Zabbix Server Cache. It's pretty common (if you have the default settings only) get a warning about your <code>Zabbix value cache running on low memory mode</code> at your dashboard or logs.</p> +<p><img alt="Zabbix Dashboard warning about the memory problem" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache graph 70% used" src="/images/zabbix_cache_filling.png"></p> +<p>To solve, go back to your Zabbix config file (<code>zabbix_server.conf</code>) and look for the tag <em>CacheSize</em>. Uncomment it and set to a value bigger than 8M (8M it's the default value). In my case, we set a cache of 100M. After the change, restart the service.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: CacheSize</span> +<span class="c1"># Size of configuration cache, in bytes.</span> +<span class="c1"># Shared memory size for storing host, item and trigger data.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 128K-64G</span> +<span class="c1"># Default:</span> +<span class="na">CacheSize</span><span class="o">=</span><span class="s">100M #uncomment this line</span> +</code></pre></div> + +<p><img alt="Zabbix Dashboard resolved memory problem" src="/images/zabbix_low_memory_solved.png"></p> +<p>See ya folks.</p>Zabbix poller processes more than 75%2020-07-02T19:00:00-03:002020-07-02T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-02:/en/zabbix-poller-processes-more-than-75.html<p>Hey folks, this is the third post about tweaking the Zabbix configurations. All changes that I've suggested here were based on a Zabbix Server with 50+ hosts. Another thing that can happen to your server, it's the poller get overwhelmed by the amount of servers that need to be polled …</p><p>Hey folks, this is the third post about tweaking the Zabbix configurations. All changes that I've suggested here were based on a Zabbix Server with 50+ hosts. Another thing that can happen to your server, it's the poller get overwhelmed by the amount of servers that need to be polled plus the ones that are not responding. Bellow two images where you can see the log and the graphic where you can see the usage percent. </p> +<p><img alt="Dashboard log about the poller processes" src="/images/zabbix_pooler.png"></p> +<p><img alt="Graph showing the utilization percent of each collector" src="/images/zabbix_pooler_3.png"></p> +<p>To solve, let's go back to the <code>zabbix_server.conf</code> file and find two variables, <code>StartPollers</code> and <code>StartPollersUnreachable</code>. Increase them as needed. There's no magic number, you must see what works for you. But keep in mind that the <code>StartPollersUnreachable</code> is responsible for that host that can't be "reached" (of course) and will hold your poller more time.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPollers</span> +<span class="c1"># Number of pre-forked instances of pollers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollers</span><span class="o">=</span><span class="s">20</span> + +<span class="c1">#...</span> + +<span class="c1">### Option: StartPollersUnreachable</span> +<span class="c1"># Number of pre-forked instances of pollers for unreachable hosts (including IPMI and Java).</span> +<span class="c1"># At least one poller for unreachable hosts must be running if regular, IPMI or Java pollers</span> +<span class="c1"># are started.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollersUnreachable</span><span class="o">=</span><span class="s">5</span> +</code></pre></div> + +<p>After the change, restart the server and wait a few moments and take a look again at your dashboard. Bellow the effect that I've got.</p> +<p><img alt="Graph showing the new utilization percent of the processes after the changes" src="/images/zabbix_pooler_4.png"></p>Zabbix ICMP pinger processes more than 75%2020-05-25T16:00:00-03:002020-05-25T16:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-05-25:/en/zabbix-icmp-pinger-processes-more-than-75.html<p>So your monitoring sytems have grown and your zabbix started loggin "Zabbix icmp pinger processes more than 75% busy" at the dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>All you have to do is open your config file (<code>/etc/zabbix/zabbix_server.conf</code>) and find the a tag named <code>StartPingers</code>. It'll be commented by default. Uncomment it …</p><p>So your monitoring sytems have grown and your zabbix started loggin "Zabbix icmp pinger processes more than 75% busy" at the dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>All you have to do is open your config file (<code>/etc/zabbix/zabbix_server.conf</code>) and find the a tag named <code>StartPingers</code>. It'll be commented by default. Uncomment it and set it's value to something like 3 or 4. It should solve your problem.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPingers</span> +<span class="c1"># Number of pre-forked instances of ICMP pingers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="nv">StartPingers</span><span class="o">=</span><span class="m">4</span> +</code></pre></div> + +<h2>How many Pingers do I need?</h2> +<p>Well, there is no exact answer to this. If you set it too high, you'll be wasting resources. The best way to solve, it's increasing them as soon as you notice the percentage growing.</p>Zabbix Server Out of Memory2020-02-27T19:00:00-03:002020-02-27T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-02-27:/en/zabbix-server-out-of-memory-crash.html<p>Do you have a crashing Zabbix Server and looking through the log <code>/var/log/zabbix/zabbix_server.log</code> you see the following out of memory message?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c,line …</code></pre></div><p>Do you have a crashing Zabbix Server and looking through the log <code>/var/log/zabbix/zabbix_server.log</code> you see the following out of memory message?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: please increase CacheSize configuration parameter +</code></pre></div> + +<p>Besides the clear solution to the error, that's a common issue on servers that have a few monitoring items on it (servers, switches, firewalls, databases, etc...). To solve, go to your zabbix_server.conf and look for the CacheSize property and set it to a higher value. Its default should be 8M. At a customer that has somewhere between 4 servers, 7 firewalls/appliances, and a few other things, a 32M did the job, but you can set up to 8G.</p> +<p>See ya folks.</p>Connecting to a database through SSH2018-03-29T10:03:00-03:002018-03-29T10:03:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-29:/en/connecting_to_database_through_ssh.html<p>If someday, for some reason, you need to establish a connection with a database which is behind a firewall and you only have SSH access on that server (and you don't want to use a CLI) you can do an SSH tunnel. It's pretty simple, bellow has a sample of …</p><p>If someday, for some reason, you need to establish a connection with a database which is behind a firewall and you only have SSH access on that server (and you don't want to use a CLI) you can do an SSH tunnel. It's pretty simple, bellow has a sample of how to allow connections to a remote Firebird database.</p> +<div class="highlight"><pre><span></span>ssh -L <span class="m">3051</span>:192.168.1.9:3050 username@192.168.1.9 +</pre></div> +<p>The <cite>-L</cite> parameter tells to SSH do a local port forwarding on local port <cite>3051</cite> to remote port <cite>3050</cite>. You can use it to a connection with many services, not just databases.</p> +<p>You can do the reverse kind of tunnel, forward connections from the host to your local machine, you just have to change the parameter form &quot;-L&quot; to &quot;-R&quot; and the port order is inverted, first come the port where the server will listen and after your localhost port. This remote port forwarding must be enabled on the server. Look for <cite>GatewayPorts</cite> at the ssh config file.</p> +<div class="highlight"><pre><span></span>ssh -R <span class="m">3050</span>:localhost:3050 username@192.168.1.9 +</pre></div> +<p>Why whould you need something like that?? Let's say you want to share a localhost site/database with a friend, but your internet connection don't allow you to expose any port but you have access to a remote server witch can do that. Problem solved ;).</p> +Change display settings on linux with Disper2018-02-27T12:40:00-03:002018-02-27T12:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-02-27:/en/linux-external-display-with-disper.html<p>From time to time, I change the Linux distro on my laptop or just do a fresh install on it. And once in a while, have random problems with external displays. It can be something really &quot;simple&quot; like don't detecting the external monitor or something crazy like the image below …</p><p>From time to time, I change the Linux distro on my laptop or just do a fresh install on it. And once in a while, have random problems with external displays. It can be something really &quot;simple&quot; like don't detecting the external monitor or something crazy like the image below.</p> +<img alt="Display bug" src="/images/bug.png" /> +<p>As you can see at the image, the mint detected the display but mirrored it in a crazy way that works but doesn't at the same time. If you try anything and doesn't get working, or just wanna skip the whole job of configuring complexes text files, give a try to <a class="reference external" href="http://willem.engen.nl/projects/disper/">Disper</a>. Download the latest version. +Extract it on any folder, and make install it (on the extracted folder).</p> +<div class="highlight"><pre><span></span>make install +</pre></div> +<p>After that, you can start using it... There are a few options that will serve you well.</p> +<div class="highlight"><pre><span></span>disper -e <span class="c1">#extend your display</span> +</pre></div> +<div class="highlight"><pre><span></span>disper -c <span class="c1">#clone your display</span> +</pre></div> +<div class="highlight"><pre><span></span>disper -s <span class="c1">#only your external display</span> +</pre></div> + \ No newline at end of file diff --git a/en/feeds/linux.atom.xml.gz b/en/feeds/linux.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..4bf810b985339b113a5041462ca0f6c0cffc1ef2 GIT binary patch literal 3920 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 exc6a- +Sipmann - Maurício Camargo Sipmannhttps://www.sipmann.com/en/2020-12-21T13:30:00-03:00Monitoring MySQL restarts with PowerShell2020-12-21T13:30:00-03:002020-12-21T13:30:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-21:/en/monitoring-mysql-restarts-with-powershell.html<p>Hey folks, it's time for another PowerShell script. If you haven't seen the other ones, check the links below.</p> +<ul> +<li><a href="https://www.sipmann.com/en/monitoring-mysql-replication-with-powershell.html">Monitoring MySQL replication with PowerShell</a></li> +</ul> +<p>Well, this one it's a pretty simple script, but again, if your customer doesn't have a Zabbix server or doesn't allow you to setup one to …</p><p>Hey folks, it's time for another PowerShell script. If you haven't seen the other ones, check the links below.</p> +<ul> +<li><a href="https://www.sipmann.com/en/monitoring-mysql-replication-with-powershell.html">Monitoring MySQL replication with PowerShell</a></li> +</ul> +<p>Well, this one it's a pretty simple script, but again, if your customer doesn't have a Zabbix server or doesn't allow you to setup one to do the monitoring, a set of scripts can be handy. We start executing some basic query <code>SHOW GLOBAL STATUS LIKE 'Uptime'</code>, with that we'll get exactly what we're looking for.</p> +<p>If for some reason, the command fails (watch for the "global" variable called <code>$lastExitCode</code>), we send an e-mail telling you about that connection problem.</p> +<p>And then, we get to the part where we parse the value, this one is pretty similar to the parse we did on the first post about using PowerShell to monitor MySQL. But we basically look for the Value line, split it by space and then parse the second position to an integer. And then all we have to do is check if the uptime is lower than our threshold, if it is we send an e-mail.</p> +<div class="highlight"><pre><span></span><code><span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;maurio[at]sipmann.com&#39;</span> +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio[at]sipmann.com&#39;</span> +<span class="nv">$MysqlHost</span> <span class="p">=</span> <span class="s1">&#39;127.0.0.1&#39;</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;123&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-h</span> <span class="nv">$MysqlHost</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s2">&quot;SHOW GLOBAL STATUS LIKE &#39;Uptime&#39; \G&quot;</span><span class="p">)</span> + +<span class="cm">&lt;# Unable to execute the sql Command #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$lastExitCode</span> <span class="o">-eq</span> <span class="n">1</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Connection problem&#39;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;Connection problem on host ${MysqlHost}&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> + <span class="n">exit</span> +<span class="p">}</span> + +<span class="nv">$UpTime</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Value:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="cm">&lt;# If the uptime is lower then 20 minutes #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$UpTime</span> <span class="o">-lt</span> <span class="n">1200</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s2">&quot;MySQL Restarted&quot;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;MySQL host ${MysqlHost} restarted less than 20 minutes ago&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> +</code></pre></div> + +<p>This script (and the other ones I use) is available at my GitHub <a href="https://github.com/sipmann/PowerShellScripts">here</a>. Keep in mind that the ones on the GitHub repo, are a little different from here.</p>Changing a MySQL user password across multiple application instances without downtime2020-12-09T13:40:00-03:002020-12-09T13:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-09:/en/mysql-dual-password-functionality.html<p>Do you need to change the password of a MySQL user that it's being used in an application, and can't allow a single downtime? Well, MySQL 8.0.14 came with a feature called <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, with it you can change the password keeping the previous password as a …</p><p>Do you need to change the password of a MySQL user that it's being used in an application, and can't allow a single downtime? Well, MySQL 8.0.14 came with a feature called <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, with it you can change the password keeping the previous password as a kind of backup. That way you still can log in using the old password or can start using the new one. With that, the password change workflow it's the following.</p> +<p>1) Change password keeping the old one;</p> +<p>2) Deploy the new config to your app/cluster;</p> +<p>3) Discard the old password.</p> +<p>To change the password and keep the old one, you have the following command.</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">IDENTIFIED</span> <span class="k">BY</span> <span class="s1">&#39;new_password&#39;</span> <span class="n">RETAIN</span> <span class="n">CURRENT</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>To discard the old one, run the following.</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">DISCARD</span> <span class="n">OLD</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>And you are done. Hope you find it as useful as I :)</p>Apache Nifi JSON to SQL Replacing underscore2020-12-02T14:00:00-03:002020-12-02T14:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-02:/en/apache-nifi-json-to-sql-replacing-underscore.html<p>Recently I was doing some ETL with Apache NiFi. But after a few minutes of drawing my flow, I saw that the component ConvertJSONToSQL was replacing the underscore ('_') from the field name in the where condition (I was preparing an Update SQL). That was weird because, at the set …</p><p>Recently I was doing some ETL with Apache NiFi. But after a few minutes of drawing my flow, I saw that the component ConvertJSONToSQL was replacing the underscore ('_') from the field name in the where condition (I was preparing an Update SQL). That was weird because, at the set statement, the field name was kept intact. After some research, I found that the property (see bellow) <code>Translate Field Names</code> was responsible for that weird replacement.</p> +<p><img alt="Apache NiFi JSONToSQL config" src="/images/apache_nifi_jsontosql.png"></p> +<p>Before setting it to <strong>FALSE</strong>, be aware that the properties on your JSON data must match exactly the name of your fields.</p>Blocking a user on SQL Server based on a schedule2020-11-14T07:00:00-03:002020-11-14T07:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-11-14:/en/blocking-user-on-sql-server-based-on-schedule.html<p>Ok, some time ago, I've posted about how you can set limits to connections on SQL Server using the <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. But what if you can't use it? You always can block logins using a login trigger, but I don't like the idea of having selects running on every login …</p><p>Ok, some time ago, I've posted about how you can set limits to connections on SQL Server using the <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. But what if you can't use it? You always can block logins using a login trigger, but I don't like the idea of having selects running on every login. So I came across with a solution using a stored procedure, a table and the Agent.</p> +<p>The main idea is, store the time that a user must be blocked and using the Agent, disable or enable the user. Bellow you can see the table (the table is in Portuguese, but I have a few comment blocks to help you).</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">Id</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Startint block time */</span><span class="w"></span> +<span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Ending block time */</span><span class="w"></span> +<span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="k">DEFAULT</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="cm">/* 0 = unblocked, 1 = blocked */</span><span class="w"></span> +<span class="w"> </span><span class="k">PRIMARY</span><span class="w"> </span><span class="k">KEY</span><span class="w"> </span><span class="p">(</span><span class="n">Id</span><span class="p">)</span><span class="w"></span> +<span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="cm">/* Don&#39;t block the SA user, precautions, you know */</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_users</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">LoginName</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;sa&#39;</span><span class="p">));</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_hora_final_maior</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="n">HrInicio</span><span class="p">);</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_status_bloqueio</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">Bloqueado</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">));</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="k">SEQUENCE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">seq_HorariosBloqueio</span><span class="w"> </span><span class="k">START</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">INCREMENT</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>After creating the table, let's check the procedure that will handle the enabling/disabling the users. Be aware that on the procedure, I've set the database name where the table was stored, you can change it replacing the <code>DBATOOLS</code> text to the database name where you created the table.</p> +<div class="highlight"><pre><span></span><code><span class="k">IF</span><span class="w"> </span><span class="nf">OBJECT_ID</span><span class="p">(</span><span class="s1">&#39;dbo.sp_ValidarLogin&#39;</span><span class="p">)</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="k">NULL</span><span class="w"></span> +<span class="w"> </span><span class="k">EXEC</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;CREATE PROCEDURE dbo.sp_ValidarLogin AS RETURN 0;&#39;</span><span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="k">ALTER</span><span class="w"> </span><span class="k">PROC</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">sp_ValidarLogin</span><span class="w"></span> +<span class="k">AS</span><span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">);</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nf">CAST</span><span class="p">(</span><span class="nf">GETDATE</span><span class="p">()</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="cm">/* Block the ones that aren&#39;t blocked already and maches the time */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">&#39; DISABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Bloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> + + +<span class="w"> </span><span class="cm">/* Enable up who was blocked */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="s1">&#39; ENABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Unbloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="k">END</span><span class="p">;</span><span class="w"></span> +</code></pre></div> + +<p>Ok, so now all you have to do, is schedule a job to run that stored procedure from minute to minute. Again, the main idea is tell the procedure when a user must be blocked and when it'll be unblocked. </p> +<div class="highlight"><pre><span></span><code><span class="err"> -- Will block the user protheus from 10 AM till 15 PM</span> +<span class="err"> INSERT INTO dbo.HorariosBloqueio (Id, LoginName, HrInicio, HrTermino) VALUES (NEXT VALUE FOR seq_HorariosBloqueio, &#39;protheus&#39;, &#39;10:00:00&#39;, &#39;15:00:00&#39;);</span> +</code></pre></div>How to set columns on select using Entity Framework2020-10-28T19:00:00-03:002020-10-28T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-28:/en/select_specific_fields_with_efcore.html<p>So, you use Entity Framework Core, and you usually code your selects like the following, maybe you are getting too much data.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Running the query above, on my table, you'll get the following output, take a look …</p><p>So, you use Entity Framework Core, and you usually code your selects like the following, maybe you are getting too much data.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Running the query above, on my table, you'll get the following output, take a look at how many columns you are getting back from your database.</p> +<p><img alt="Screenshot with every single column" src="/images/ef_core_allcolumns.png"></p> +<p>In my case, I only care about the Title, PublishedData, and a small description. So to get back only these fields, we have a few options. In the first one, we'll set the fields and return them as a dynamic object, the second one, is to give the .NET a class to use. </p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + + <span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="k">new</span> <span class="p">{</span><span class="n">p</span><span class="p">.</span><span class="n">ProductID</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitPrice</span><span class="p">})</span> + <span class="c1">//.Select(p =&gt; new ProductDTO {p.ProductID, p.ProductName, p.UnitsInStock, p.UnitPrice})</span> + + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p><img alt="Screenshot with fewer columns and also fewer data size" src="/images/ef_core_less_columns.png"></p>Zabbix Running on Low Memory Mode2020-10-20T19:00:00-03:002020-10-20T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-20:/en/zabbix-running-on-low-memory-mode.html<p>Hey folks, another Zabbix post today. This one it's about increasing the Zabbix Server Cache. It's pretty common (if you have the default settings only) get a warning about your <code>Zabbix value cache running on low memory mode</code> at your dashboard or logs.</p> +<p><img alt="Zabbix Dashboard warning about the memory problem" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache graph 70% used" src="/images/zabbix_cache_filling.png"></p> +<p>To solve, go back to your Zabbix …</p><p>Hey folks, another Zabbix post today. This one it's about increasing the Zabbix Server Cache. It's pretty common (if you have the default settings only) get a warning about your <code>Zabbix value cache running on low memory mode</code> at your dashboard or logs.</p> +<p><img alt="Zabbix Dashboard warning about the memory problem" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache graph 70% used" src="/images/zabbix_cache_filling.png"></p> +<p>To solve, go back to your Zabbix config file (<code>zabbix_server.conf</code>) and look for the tag <em>CacheSize</em>. Uncomment it and set to a value bigger than 8M (8M it's the default value). In my case, we set a cache of 100M. After the change, restart the service.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: CacheSize</span> +<span class="c1"># Size of configuration cache, in bytes.</span> +<span class="c1"># Shared memory size for storing host, item and trigger data.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 128K-64G</span> +<span class="c1"># Default:</span> +<span class="na">CacheSize</span><span class="o">=</span><span class="s">100M #uncomment this line</span> +</code></pre></div> + +<p><img alt="Zabbix Dashboard resolved memory problem" src="/images/zabbix_low_memory_solved.png"></p> +<p>See ya folks.</p>Monitoring MySQL Replication Status with PowerShell2020-10-14T19:00:00-03:002020-10-14T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-14:/en/monitoring-mysql-replication-with-powershell.html<p>I've been migration some bash scripts that I have to PowerShell, and it's time to migrate a script that monitors the replication of a MySQL database. The credit for the original script goes to <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. It's a simple script where I seek a few tags/fields that we get from …</p><p>I've been migration some bash scripts that I have to PowerShell, and it's time to migrate a script that monitors the replication of a MySQL database. The credit for the original script goes to <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. It's a simple script where I seek a few tags/fields that we get from <code>SHOW SLAVE STATUS\G</code> command, the fields are. <code>Slave_IO_Running</code>, <code>Slave_SQL_Running</code>, and <code>Seconds_Behind_Master</code>. I still need to figure out the proper way to store/read variables like usernames and passwords, if you have any tips, feel free to even make a pull request (<a href="https://github.com/sipmann/PowerShellScripts">here</a>) at the git where I'll store some scripts.</p> +<div class="highlight"><pre><span></span><code><span class="cm">&lt;#</span> +<span class="cm"> Variables definition</span> +<span class="cm">#&gt;</span> +<span class="nv">$MaxSeconds</span> <span class="p">=</span> <span class="n">120</span> <span class="c"># Max seconds behind master allowed</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;&#39;</span> + +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> +<span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s1">&#39;SHOW SLAVE STATUS \G&#39;</span><span class="p">)</span> + +<span class="c">#Debug data</span> +<span class="c">#$data = Get-Content &#39;c:\temp\sampleresult.txt&#39;</span> + +<span class="cm">&lt;# Parse the data #&gt;</span> +<span class="nv">$IORunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_IO_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SQLRunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_SQL_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$LastErrNo</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Last_Errno&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SecondsBh</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Seconds_Behind_Master&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="k">If</span> <span class="p">(</span><span class="nv">$IORunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SQLRunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SecondsBh</span> <span class="o">-gt</span> <span class="nv">$MaxSeconds</span><span class="p">)</span> <span class="p">{</span> + <span class="nv">$MailBody</span> <span class="p">=</span> <span class="s1">&#39;&lt;h1&gt;Problema na replicação&lt;/h1&gt;&lt;br&gt;&#39;</span> + + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; IO Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$IORunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; SQL Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SQLRunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39;Seconds Behind: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SecondsBh</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; Last Err No: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$LastErrNo</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + + <span class="cm">&lt;# Send e-mail, maybe some telegram message here too #&gt;</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Problemas na replicação&#39;</span> <span class="n">-bodyAsHtml</span> <span class="nv">$MailBody</span> <span class="n">-Credential</span> <span class="p">(</span><span class="nb">Get-Credential</span><span class="p">)</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> <span class="k">Else</span> <span class="p">{</span> + <span class="nb">Write-Host</span> <span class="s2">&quot;Up and running&quot;</span> +<span class="p">}</span> +</code></pre></div>Microsoft Against Covid2020-10-03T19:00:00-03:002020-10-03T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-03:/en/microsoft-against-covid.html<p>Has your job been affected by covid? Well, last week I've posted on <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by …</p><p>Has your job been affected by covid? Well, last week I've posted on <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by covid pandemic. </p> +<p>To see more details about if you were eligible, access <a href="https://docs.microsoft.com/en-us/learn/certifications/skillingoffer">https://docs.microsoft.com/en-us/learn/certifications/skillingoffer</a>.</p>The power of PowerShell2020-09-21T19:00:00-03:002020-09-21T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-09-21:/en/the-power-of-powershell.html<p>As a long time Linux user, I've automated a few things with bash scripts and stayed away from PowerShell... I've moved to a Windows environment a few years ago and still, haven gave a shot to PS. But why not? I've made a few scripts to automate some tasks at …</p><p>As a long time Linux user, I've automated a few things with bash scripts and stayed away from PowerShell... I've moved to a Windows environment a few years ago and still, haven gave a shot to PS. But why not? I've made a few scripts to automate some tasks at a Protheus server.</p> +<p>I found the PS scripts being easy to read and understand. Bellow, we have a script to remove files filtering their extension (or no extension at all like the following script). </p> +<div class="highlight"><pre><span></span><code><span class="nb">Get-ChildItem</span> <span class="s2">&quot;C:\TOTVS\protheus_data\system&quot;</span> <span class="o">-File</span> <span class="n">-Filter</span> <span class="p">*.</span> <span class="p">|</span> <span class="nb">Move-Item</span> <span class="n">-Force</span> <span class="n">-Destination</span> <span class="p">{</span> + <span class="cm">&lt;# Diretory where the files will be moved. You can use Date formats to help name it #&gt;</span> + <span class="cm">&lt;# LastWriteTime proprtie from the current file #&gt;</span> + <span class="nv">$dir</span> <span class="p">=</span> <span class="s2">&quot;C:\bad_files\{0:yyyy\\MM\\dd}&quot;</span> <span class="o">-f</span> <span class="nv">$_</span><span class="p">.</span><span class="n">LastWriteTime</span> + <span class="nv">$null</span> <span class="p">=</span> <span class="n">mkdir</span> <span class="nv">$dir</span> <span class="n">-Force</span> + <span class="s2">&quot;$dir\</span><span class="p">$(</span><span class="nv">$_</span><span class="p">.</span><span class="n">Name</span><span class="p">)</span><span class="s2">&quot;</span> +<span class="p">}</span> +</code></pre></div> + +<p>Have you ever been in the need to remove files based on other file content? Bello a script where I read a file that has the names of files that I want to remove. </p> +<div class="highlight"><pre><span></span><code><span class="k">foreach</span><span class="p">(</span><span class="nv">$line</span> <span class="k">in</span> <span class="nb">Get-Content</span> <span class="p">.\</span><span class="n">Desktop</span><span class="p">\</span><span class="n">bad_files</span><span class="p">.</span><span class="n">txt</span><span class="p">)</span> <span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="nb">Test-Path</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">))</span> <span class="p">{</span> + <span class="nb">Remove-Item</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">)</span> + <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> + <span class="nb">echo </span><span class="nv">$line</span> <span class="p">+</span> <span class="s1">&#39; - File not found&#39;</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>And a bonus script to stop/start services (if you handle some Protheus Server, you know why I do that).</p> +<div class="highlight"><pre><span></span><code><span class="nv">$servicesNames</span> <span class="p">=</span> <span class="s1">&#39;app_main&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker1&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker2&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker3&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker4&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker5&#39;</span> + +<span class="nb">Write-host</span> <span class="s2">&quot;Stoping Services&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Stopping: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nv">$SrvPID</span> <span class="p">=</span> <span class="p">(</span><span class="nb">get-wmiobject</span> <span class="n">win32_service</span> <span class="p">|</span> <span class="nb">where </span><span class="p">{</span> <span class="nv">$_</span><span class="p">.</span><span class="n">name</span> <span class="o">-eq</span> <span class="nv">$srv</span><span class="p">}).</span><span class="n">processID</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PID: &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> + + <span class="cm">&lt;# Force if the proccess is stucked #&gt;</span> + <span class="nb">Stop-Process</span> <span class="nv">$SrvPID</span> <span class="n">-Force</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PDI &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> <span class="p">+</span> <span class="s2">&quot; stopped&quot;</span> +<span class="p">}</span> + + +<span class="nb">Write-host</span> <span class="s2">&quot;Starting Services&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Starting: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nb">Start-Service</span> <span class="nv">$srv</span> +<span class="p">}</span> +</code></pre></div> + +<p>Do you have any automated script? Share with us :)</p>Top Level Statement in C# 92020-07-29T19:00:00-03:002020-07-29T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-29:/en/top_level_statement_csharp_9.html<p>Hey folks, I'm coming along to tell you a few things about the new feature of C# 9. Every time you want to start a new project, you always have the same Main File, with the same structure. At the next version of C# (version 9), we'll have a new …</p><p>Hey folks, I'm coming along to tell you a few things about the new feature of C# 9. Every time you want to start a new project, you always have the same Main File, with the same structure. At the next version of C# (version 9), we'll have a new feature called <code>Top Level Statement</code>. With that, we'll be able to code our app without any namespace/class/public void static main structure. Take a look at the code below.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="s">&quot;Hello World!&quot;</span><span class="p">);</span> +</code></pre></div> + +<p>It looks pretty simple, but with this, you can play around with your code, and even code a simple/tiny Web API. To start playing with the new features, firstly download the <a href="https://dotnet.microsoft.com/download/dotnet/5.0">.net 5 SDK</a> and change your <code>.csproj</code> file to target the .net 5 and language preview like bellow.</p> +<div class="highlight"><pre><span></span><code><span class="nt">&lt;Project</span> <span class="na">Sdk=</span><span class="s">&quot;Microsoft.NET.Sdk&quot;</span><span class="nt">&gt;</span> + <span class="nt">&lt;PropertyGroup&gt;</span> + <span class="nt">&lt;OutputType&gt;</span>Exe<span class="nt">&lt;/OutputType&gt;</span> + <span class="nt">&lt;TargetFramework&gt;</span>net5.0<span class="nt">&lt;/TargetFramework&gt;</span> + <span class="nt">&lt;LangVersion&gt;</span>preview<span class="nt">&lt;/LangVersion&gt;</span> + <span class="nt">&lt;/PropertyGroup&gt;</span> +<span class="nt">&lt;/Project&gt;</span> +</code></pre></div> + +<p>And you're ready to play with the awesome features available in the preview. Let's code a way to get the image of the day from NASA API and print the Picture of the Day. No awesome code here, it's really a way to show how simple a simple call could be. After here, why not save the image in a file? Maybe send the file over telegram?</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Text.Json</span><span class="p">;</span> + +<span class="kt">var</span> <span class="n">API</span> <span class="p">=</span> <span class="s">&quot;https://api.nasa.gov/planetary/apod?hd=true&amp;api_key=DEMO_KEY&quot;</span><span class="p">;</span> +<span class="kt">var</span> <span class="n">cli</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + +<span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">cli</span><span class="p">.</span><span class="n">GetAsync</span><span class="p">(</span><span class="n">API</span><span class="p">);</span> +<span class="kt">var</span> <span class="n">data</span> <span class="p">=</span> <span class="n">JsonSerializer</span><span class="p">.</span><span class="n">Deserialize</span><span class="p">&lt;</span><span class="n">NasaApi</span><span class="p">&gt;(</span><span class="k">await</span> <span class="n">response</span><span class="p">.</span><span class="n">Content</span><span class="p">.</span><span class="n">ReadAsStringAsync</span><span class="p">());</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">Url</span><span class="p">);</span> +</code></pre></div> + +<p>That's it for today folks. Keep an eye open for the awesome features C# 9 will bring to us, there's plenty more features already available.</p>Zabbix poller processes more than 75%2020-07-02T19:00:00-03:002020-07-02T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-02:/en/zabbix-poller-processes-more-than-75.html<p>Hey folks, this is the third post about tweaking the Zabbix configurations. All changes that I've suggested here were based on a Zabbix Server with 50+ hosts. Another thing that can happen to your server, it's the poller get overwhelmed by the amount of servers that need to be polled …</p><p>Hey folks, this is the third post about tweaking the Zabbix configurations. All changes that I've suggested here were based on a Zabbix Server with 50+ hosts. Another thing that can happen to your server, it's the poller get overwhelmed by the amount of servers that need to be polled plus the ones that are not responding. Bellow two images where you can see the log and the graphic where you can see the usage percent. </p> +<p><img alt="Dashboard log about the poller processes" src="/images/zabbix_pooler.png"></p> +<p><img alt="Graph showing the utilization percent of each collector" src="/images/zabbix_pooler_3.png"></p> +<p>To solve, let's go back to the <code>zabbix_server.conf</code> file and find two variables, <code>StartPollers</code> and <code>StartPollersUnreachable</code>. Increase them as needed. There's no magic number, you must see what works for you. But keep in mind that the <code>StartPollersUnreachable</code> is responsible for that host that can't be "reached" (of course) and will hold your poller more time.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPollers</span> +<span class="c1"># Number of pre-forked instances of pollers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollers</span><span class="o">=</span><span class="s">20</span> + +<span class="c1">#...</span> + +<span class="c1">### Option: StartPollersUnreachable</span> +<span class="c1"># Number of pre-forked instances of pollers for unreachable hosts (including IPMI and Java).</span> +<span class="c1"># At least one poller for unreachable hosts must be running if regular, IPMI or Java pollers</span> +<span class="c1"># are started.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollersUnreachable</span><span class="o">=</span><span class="s">5</span> +</code></pre></div> + +<p>After the change, restart the server and wait a few moments and take a look again at your dashboard. Bellow the effect that I've got.</p> +<p><img alt="Graph showing the new utilization percent of the processes after the changes" src="/images/zabbix_pooler_4.png"></p>Monitoring a Website heath with Azure Functions2020-06-22T19:00:00-03:002020-06-22T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-06-22:/en/monitoring-website-heath-with-azure-functions.html<p>Sometimes you get your self in need to monitor a website's health or it's content for changes. Of course, there's plenty of options out there, but for the sake of curiosity, let's code our own to see what we can do. First things first. Everything you'll see here, you can …</p><p>Sometimes you get your self in need to monitor a website's health or it's content for changes. Of course, there's plenty of options out there, but for the sake of curiosity, let's code our own to see what we can do. First things first. Everything you'll see here, you can achieve with the <a href="https://azure.microsoft.com/free/">free tier</a> of azure.</p> +<p>The main idea of our app will be to monitor website health (status code). To create a new Azure Function Project, follow the steps below.</p> +<p><img alt="Steps to create a azure function project" src="/images/azure_functions.gif"></p> +<p>After creating the project, you'll have a few files. Open your main file and start coding. The main file will have a function called <code>Run</code> and you can code your request method. I've created an <code>async</code> method to make the request and log the output at the console. The full code you can see below.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Linq</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Threading.Tasks</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs.Host</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Extensions.Logging</span><span class="p">;</span> + +<span class="k">namespace</span> <span class="nn">Sipmann.CheckMySite</span> +<span class="p">{</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">class</span> <span class="nc">HttpCheck</span> + <span class="p">{</span> + + <span class="k">private</span> <span class="k">static</span> <span class="k">async</span> <span class="n">Task</span> <span class="nf">GetTask</span><span class="p">(</span><span class="kt">string</span> <span class="n">url</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="kt">var</span> <span class="n">request</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpRequestMessage</span><span class="p">(</span><span class="n">HttpMethod</span><span class="p">.</span><span class="n">Get</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span> + + <span class="kt">var</span> <span class="n">client</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + <span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">client</span><span class="p">.</span><span class="n">SendAsync</span><span class="p">(</span><span class="n">request</span><span class="p">);</span> + + <span class="k">if</span> <span class="p">(</span><span class="n">response</span><span class="p">.</span><span class="n">IsSuccessStatusCode</span><span class="p">)</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="k">else</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} não esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> + +<span class="na"> [FunctionName(&quot;HttpCheck&quot;)]</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">void</span> <span class="nf">Run</span><span class="p">([</span><span class="n">TimerTrigger</span><span class="p">(</span><span class="s">&quot;0 */5 * * * *&quot;</span><span class="p">)]</span><span class="n">TimerInfo</span> <span class="n">myTimer</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="kt">var</span> <span class="n">urls</span> <span class="p">=</span> <span class="k">new</span><span class="p">[]{</span><span class="s">&quot;https://www.sipmann.com&quot;</span><span class="p">,</span> <span class="s">&quot;https://www.canezecanez.com.br&quot;</span><span class="p">};</span> + + <span class="c1">// Start every request and wait for them all to complete</span> + <span class="n">Task</span><span class="p">.</span><span class="n">WaitAll</span><span class="p">(</span><span class="n">urls</span><span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">url</span> <span class="p">=&gt;</span> <span class="n">GetTask</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">log</span><span class="p">)).</span><span class="n">ToArray</span><span class="p">());</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;Finalizou a fila&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>Now you can enhance the function and maybe send some alerts like a Telegram message when one of your sites went down.</p>Azure Data Fundamentals certification with 80% discount2020-06-09T12:30:00-03:002020-06-09T12:30:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-06-09:/en/azure-data-fundamentals-certification-80-discount.html<p>Hey folks, if you want to achieve some certification this year, keep an eye open for vouchers. A few months ago, Oracle released a set of free courses with certifications. Now it's Microsoft time. Microsoft is updating they're certifications and we have a voucher of 80% discount using the coupon …</p><p>Hey folks, if you want to achieve some certification this year, keep an eye open for vouchers. A few months ago, Oracle released a set of free courses with certifications. Now it's Microsoft time. Microsoft is updating they're certifications and we have a voucher of 80% discount using the coupon <strong>DP900Norfolk</strong> at the checkout of the beta certification DP-900. </p> +<p>Be aware that this certification is in beta and the result won't be instantly available as the regular ones. Access the following link and schedule your exam. <a href="https://docs.microsoft.com/pt-br/learn/certifications/exams/dp-900" target="_blank">https://docs.microsoft.com/pt-br/learn/certifications/exams/dp-900</a>.</p> +<p><strong>Update:</strong> There is a 80% voucher also for <a href="https://docs.microsoft.com/en-us/learn/certifications/azure-ai-fundamentals" target="_blank">https://docs.microsoft.com/en-us/learn/certifications/azure-ai-fundamentals</a>. Voucher: <strong>AI900Saratoga</strong></p>Zabbix ICMP pinger processes more than 75%2020-05-25T16:00:00-03:002020-05-25T16:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-05-25:/en/zabbix-icmp-pinger-processes-more-than-75.html<p>So your monitoring sytems have grown and your zabbix started loggin "Zabbix icmp pinger processes more than 75% busy" at the dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>All you have to do is open your config file (<code>/etc/zabbix/zabbix_server.conf</code>) and find the a tag named <code>StartPingers</code>. It'll be commented by default. Uncomment it …</p><p>So your monitoring sytems have grown and your zabbix started loggin "Zabbix icmp pinger processes more than 75% busy" at the dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>All you have to do is open your config file (<code>/etc/zabbix/zabbix_server.conf</code>) and find the a tag named <code>StartPingers</code>. It'll be commented by default. Uncomment it and set it's value to something like 3 or 4. It should solve your problem.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPingers</span> +<span class="c1"># Number of pre-forked instances of ICMP pingers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="nv">StartPingers</span><span class="o">=</span><span class="m">4</span> +</code></pre></div> + +<h2>How many Pingers do I need?</h2> +<p>Well, there is no exact answer to this. If you set it too high, you'll be wasting resources. The best way to solve, it's increasing them as soon as you notice the percentage growing.</p>Zabbix Server Out of Memory2020-02-27T19:00:00-03:002020-02-27T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-02-27:/en/zabbix-server-out-of-memory-crash.html<p>Do you have a crashing Zabbix Server and looking through the log <code>/var/log/zabbix/zabbix_server.log</code> you see the following out of memory message?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c,line …</code></pre></div><p>Do you have a crashing Zabbix Server and looking through the log <code>/var/log/zabbix/zabbix_server.log</code> you see the following out of memory message?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: please increase CacheSize configuration parameter +</code></pre></div> + +<p>Besides the clear solution to the error, that's a common issue on servers that have a few monitoring items on it (servers, switches, firewalls, databases, etc...). To solve, go to your zabbix_server.conf and look for the CacheSize property and set it to a higher value. Its default should be 8M. At a customer that has somewhere between 4 servers, 7 firewalls/appliances, and a few other things, a 32M did the job, but you can set up to 8G.</p> +<p>See ya folks.</p>Flutter + firebase auth crashing2019-10-03T19:00:00-03:002019-10-03T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-10-03:/en/flutter_with_firebase_auth_crashing.html<p>Hey Folks, recently I've started learning <a href="https://flutter.dev/">Flutter</a> and right after a TODO List, I tried a Firebase integration. But as soon as I started setting the dependencies, my app stopped opening... just a crash. After a few logs digging, I've found the following log.</p> +<div class="highlight"><pre><span></span><code>AndroidRuntime: FATAL EXCEPTION: main +AndroidRuntime: Process …</code></pre></div><p>Hey Folks, recently I've started learning <a href="https://flutter.dev/">Flutter</a> and right after a TODO List, I tried a Firebase integration. But as soon as I started setting the dependencies, my app stopped opening... just a crash. After a few logs digging, I've found the following log.</p> +<div class="highlight"><pre><span></span><code>AndroidRuntime: FATAL EXCEPTION: main +AndroidRuntime: Process: com.example.diadocasal, PID: <span class="m">13672</span> +AndroidRuntime: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/util/ArrayMap<span class="p">;</span> +AndroidRuntime: at com.google.android.gms.internal.measurement.zzca.&lt;clinit&gt;<span class="o">(</span>Unknown Source:60<span class="o">)</span> +AndroidRuntime: at com.google.android.gms.internal.measurement.zzcm.zzr<span class="o">(</span>Unknown Source:7<span class="o">)</span> +AndroidRuntime: at com.google.android.gms.measurement.internal.zzfj.&lt;init&gt;<span class="o">(</span>Unknown Source:23<span class="o">)</span> +</code></pre></div> + +<p>Notice the "NoClassDefFound" of an ArrayMap. To solve that I did the following changes to the files:</p> +<div class="highlight"><pre><span></span><code><span class="c1">//build.gradle file</span> + <span class="n">ext</span><span class="p">.</span><span class="na">kotlin_version</span> <span class="o">=</span> <span class="err">&#39;</span><span class="mf">1.3.20</span><span class="err">&#39;</span> +<span class="o">[</span><span class="p">...</span><span class="o">]</span> + <span class="n">dependencies</span> <span class="p">{</span> + <span class="n">classpath</span> <span class="err">&#39;</span><span class="n">com</span><span class="p">.</span><span class="na">android</span><span class="p">.</span><span class="na">tools</span><span class="p">.</span><span class="na">build</span><span class="p">:</span><span class="n">gradle</span><span class="p">:</span><span class="mf">3.3.0</span><span class="err">&#39;</span> <span class="c1">// gradle version</span> +</code></pre></div> + +<div class="highlight"><pre><span></span><code><span class="c1">;gradle.properties file</span> +<span class="na">org.gradle.jvmargs</span><span class="o">=</span><span class="s">-Xmx1536M ;mine have just this line at first</span> +<span class="na">android.useAndroidX</span><span class="o">=</span><span class="s">true ; uses androidX instead of the default support library</span> +<span class="na">android.enableJetifier</span><span class="o">=</span><span class="s">true ; uses jetpack libraries</span> +<span class="na">android.enableR8</span><span class="o">=</span><span class="s">true ; the new code shriker</span> +</code></pre></div> + +<p>After that, voilà, app up and running.</p>Removing a user from SQL Server database who owns a schema2019-09-06T07:00:00-03:002020-10-21T18:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-09-06:/en/removing-user-from-sql-server-database.html<p>Your customer urge you to drop a user from the MsSQL Server database, but you stuck with the following related error:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>That means that the user owns one or more shcemas of your database. If …</p><p>Your customer urge you to drop a user from the MsSQL Server database, but you stuck with the following related error:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>That means that the user owns one or more shcemas of your database. If you don't have access to the SSMS to see which schema or objects the user owns, the following SQL should do the job.</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">schemas</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">principal_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="p">,</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">xtype</span><span class="w"> </span><span class="n">Tipo</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">sysobjects</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">uid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> +</code></pre></div> + +<p>Once you have the objects/schemas owned by the user, you can change them with the following SQL (schema change sample):</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datareader</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"> </span><span class="c1">-- new owner username</span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datawriter</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>Then you're ready to drop the user <code>DROP USER [username]</code></p> +<h2>How to list all the schemas and it's owners?</h2> +<p>Here's a script to list schemas and it's owners.</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +<span class="k">SELECT</span><span class="w"></span> +<span class="w"> </span><span class="nf">schema_name</span><span class="p">(</span><span class="nf">schema_id</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">schemaname</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="nf">user_name</span><span class="p">(</span><span class="n">schm</span><span class="p">.</span><span class="n">principal_id</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">username</span><span class="p">,</span><span class="w"> </span><span class="o">*</span><span class="w"></span> +<span class="k">FROM</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">schemas</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">schm</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div>Limiting Connection Resources on SQL Server2019-08-12T12:00:00-03:002019-08-12T12:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-08-12:/en/limiting-connection-resources-sql-server.html<p>Have you ever suffered from a slow SQLServer database? Someone love to run that heavy query in the database? Resource Governor to the rescue. You can set a few rules on how users (connections actually) will use the server/database resources based on a few things.</p> +<p>First things first, if …</p><p>Have you ever suffered from a slow SQLServer database? Someone love to run that heavy query in the database? Resource Governor to the rescue. You can set a few rules on how users (connections actually) will use the server/database resources based on a few things.</p> +<p>First things first, if you don't have DAC enabled, enable it now. Dealing with resource governor can lock you out of the database and leave you without action (almost... you can start the server with -c -m -f).</p> +<p>Now to understand how Resource Governor works, we have a few keywords <code>resource pool</code>, <code>workload group</code> e <code>Classifier Function</code>.</p> +<p><img alt="Pool Sample" src="/images/sql-pool.png"></p> +<h2>Resource Pool</h2> +<p>First, we have the Resource Pool, with is the bigger resource group that we have the ability to manage. With it, we can set a few things like: <code>MIN_CPU_PERCENT</code>, <code>MAX_CPU_PERCENT</code>, <code>MIN_MEMORY_PERCENT</code>, <code>MAX_MEMORY_PERCENT</code>, <code>MIN_IOPS_PER_VOLUME</code>, and <code>MAX_IOPS_PER_VOLUME</code>.</p> +<p>Be aware that the <code>MAX_CPU_PERCENT</code> will just "works" when there is another connection with a higher priority, otherwise it will use what is available. Let's create a pool.</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">POOL</span><span class="w"> </span><span class="o">[</span><span class="n">SpreadSheet</span><span class="o">]</span><span class="w"></span> +<span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">MIN_CPU_PERCENT</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">MAX_CPU_PERCENT</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">MIN_MEMORY_PERCENT</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">MAX_MEMORY_PERCENT</span><span class="o">=</span><span class="mi">20</span><span class="w"></span> +<span class="p">);</span><span class="w"></span> +</code></pre></div> + +<p>## Workload Group</p> +<p>Then we have a workload group that "works" inside a pool, so you can have another granularity on how you can split your resources. Again, we have a few options: <code>IMPORTANCE</code>, <code>REQUEST_MAX_CPU_TIME_SEC</code>, <code>REQUEST_MAX_MEMORY_GRANT_PERCENT</code>, <code>GROUP_MAX_REQUESTS</code>.</p> +<p>The <code>IMPORTANCE</code> set guesses what... the importance of that workload inside the pool, you can set LOW, MEDIUM, HIGH. GROUP_MAX_REQUESTS sets how many requests can run at the same time inside that workload (0 will set as NO LIMIT)</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="n">WORKLOAD</span><span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="o">[</span><span class="n">DepartmentA</span><span class="o">]</span><span class="w"> </span> +<span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">GROUP_MAX_REQUESTS</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">IMPORTANCE</span><span class="o">=</span><span class="n">LOW</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">REQUEST_MAX_CPU_TIME_SEC</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="c1">-- Time running/using CPU</span> +<span class="w"> </span><span class="n">REQUEST_MAX_MEMORY_GRANT_PERCENT</span><span class="o">=</span><span class="mi">15</span><span class="w"></span> +<span class="p">)</span><span class="w"> </span><span class="k">USING</span><span class="w"> </span><span class="o">[</span><span class="n">SpreadSheet</span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="c1">-- pool name here</span> +</code></pre></div> + +<h2>Classifier Function</h2> +<p>This is where everything begins... This is the entry point where you should set the group name. It's a function that will run for every new connection so be aware that if your function runs lots of queries or some heavy stuff... that time will be added to the connection handshake. If the function returns NULL or a group name that doesn't exist, the 'default' group will be used... Yes, there is a default workload group where everything runs where there's no classifier.</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="n">fnClassWorkloadGovernor</span><span class="p">()</span><span class="w"> </span> +<span class="k">RETURNS</span><span class="w"> </span><span class="n">SYSNAME</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="n">SCHEMABINDING</span><span class="w"> </span> +<span class="k">AS</span><span class="w"> </span> +<span class="k">BEGIN</span><span class="w"> </span> +<span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="nf">APP_NAME</span><span class="p">()</span><span class="w"> </span><span class="ow">LIKE</span><span class="w"> </span><span class="s1">&#39;%Excel%&#39;</span><span class="w"></span> +<span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="s1">&#39;DepartmentA&#39;</span><span class="w"></span> + +<span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="nf">HOST_NAME</span><span class="p">()</span><span class="w"> </span><span class="ow">LIKE</span><span class="w"> </span><span class="s1">&#39;%THAT_MACHINE_OR_APP_SERVER%&#39;</span><span class="w"></span> +<span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="s1">&#39;LowPriority&#39;</span><span class="w"></span> + +<span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="k">NULL</span><span class="w"></span> +<span class="k">END</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="n">CLASSIFIER_FUNCTION</span><span class="o">=</span><span class="n">dbo</span><span class="p">.</span><span class="n">fnClassWorkloadGovernor</span><span class="p">);</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">RECONFIGURE</span><span class="p">;</span><span class="w"></span> +</code></pre></div> + +<p>There you go... now you have a fully working resource governor, but look out that If you want to delete that classifier function, first you have to remove it from the resource governor (look the SCHEMABINDING at the create up there).</p> +<p>To disable Resource Governor</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="n">CLASSIFIER_FUNCTION</span><span class="o">=</span><span class="k">null</span><span class="p">)</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">RECONFIGURE</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="n">DISABLE</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div>Using git hooks to easy your life2019-07-30T20:00:00-03:002019-07-30T20:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-07-30:/en/using_git_hooks_easy_your_life.html<p>Hey folks, it's been a time since my last post. In the meantime, I moved to another state, changed job, and started learning new kinds of stuff. Today I would like to share one thing that I usually do with my small git projects. Git has many cool features, git …</p><p>Hey folks, it's been a time since my last post. In the meantime, I moved to another state, changed job, and started learning new kinds of stuff. Today I would like to share one thing that I usually do with my small git projects. Git has many cool features, git hooks were one of them. I'll talk about the pre-commit hook today.</p> +<p>Let's say that, for some reason, you don't have a CI tool/server running after every commit and you want to enforce that every developer runs the tests before every commit? Git pre-commit to the rescue. You can code the hooks with shell, ruby, python, and I could be wrong, but even PHP would work. pre-commit is a client-side hook (we have server side too) and he's located inside the <cite>.git/hooks</cite> folder. Let's jump to the code... Create a file called 'pre-commit' inside that folder with the following code.</p> +<div class="highlight"><pre><span></span><span class="ch">#!/bin/bash</span> +npm <span class="nb">test</span> <span class="c1"># assuming you&#39;re using it inside a nodeJS project</span> +</pre></div> +<p>Don't forget to make the script executable!! Now break your test and try to commit. That's easy but can save you from breaking the tests at the main CI/Travis/Codeship/etc and being notified by email :). Why not even validate the lint of your project or check if the coverage doesn't fall? Does your team/company have a patter for commit messages? No problem, there is a hook called <cite>commit-msg</cite> that you can use to validate your message.</p> +Microservices with NodeJS, Express.js and RabbitMQ Part 22018-04-13T13:00:00-03:002018-04-13T13:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-04-13:/en/microservices_nodejs_express_rabbitmq_part_2.html<p>If you haven't read the <a class="reference external" href="https://www.sipmann.com/microservices_nodejs_express_rabbitmq_part_1-en.html">part 1</a> go ahead and read it... It can be useful :). Or if for some reason you want to start now, you can grab the project where we stopped <a class="reference external" href="https://github.com/sipmann/imagecompacter/releases/tag/v1">here</a> and get along. On this part, we'll implement the RabbitMQ queue and see how we …</p><p>If you haven't read the <a class="reference external" href="https://www.sipmann.com/microservices_nodejs_express_rabbitmq_part_1-en.html">part 1</a> go ahead and read it... It can be useful :). Or if for some reason you want to start now, you can grab the project where we stopped <a class="reference external" href="https://github.com/sipmann/imagecompacter/releases/tag/v1">here</a> and get along. On this part, we'll implement the RabbitMQ queue and see how we can get the best of our app and server with that.</p> +<p>Before we began coding, let's understand why we are going to use RabbitMQ if what we have now works? If you check again, you'll see how long it takes to answer the request with the optimized image. It takes a few seconds, so imagine an online service with thousands of request to optimize images (like <a class="reference external" href="https://tinypng.com/">TinyPNG</a>) how long is it gonna take to answer every request? How much of your server is it gonna take? With only one service running, probably the server will crash.</p> +<p>With a queue, we can schedule the requests so we can use the amount of memory and processor that our server has, without taking more than we can. It's better to take a few seconds to answer the request then throw some error to the user. Want more? With RabbitMQ we can see how the queue is doing and we can add more consumers (workers) to it and get things done quicker and distribute the job.</p> +<p>First of all, we need an up and running Rabbit server, for the sake of simplicity, I'll use a Docker container with it inside.</p> +<div class="highlight"><pre><span></span>docker run -d --name rabbit -p <span class="m">5672</span>:5672 -p <span class="m">8080</span>:15672 rabbitmq:3-management +</pre></div> +<p>You can see that we're running the rabbitmq:3-management image, which provides us a web interface to see how things are going. After that, if you look at our code you'll see that all the job is made at the '/upload' route, and that's what we'll change.</p> +<p>First, we need to understand what we need from RabbitMQ. We need something that, we send an image to a queue and get an optimized image back from that. There is a name for that, is RPC (remote procedure call) and there are two ways of doing this with rabbit. Both the ways you can see on their tutorial page. We'll use the approach that uses a global channel whose id is randomly generated (you'll use the name 'amq.rabbitmq.reply-to' but the rabbit will do the job).</p> +<p>Let's start importing the library, defining a few variables and defining a init function that will establish a connection with the rabbit server and create our RPC queue. The RPC queue it's where we'll receive the answer from the consumer (our worker).</p> +<div class="highlight"><pre><span></span><span class="c1">//import the library</span> +<span class="kr">const</span> <span class="nx">amqplib</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;amqplib&#39;</span><span class="p">);</span> + +<span class="c1">//queue channel</span> +<span class="kd">let</span> <span class="nx">channel</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span> +<span class="c1">//queue name</span> +<span class="kr">const</span> <span class="nx">QUEUE</span> <span class="o">=</span> <span class="s1">&#39;optimizeimg&#39;</span><span class="p">;</span> + +<span class="c1">//...</span> + +<span class="kd">function</span> <span class="nx">init</span><span class="p">()</span> <span class="p">{</span> + <span class="k">return</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;amqplib&#39;</span><span class="p">).</span><span class="nx">connect</span><span class="p">(</span><span class="s1">&#39;amqp://localhost&#39;</span><span class="p">)</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">conn</span> <span class="p">=&gt;</span> <span class="nx">conn</span><span class="p">.</span><span class="nx">createChannel</span><span class="p">())</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">ch</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">channel</span> <span class="o">=</span> <span class="nx">ch</span><span class="p">;</span> + + <span class="c1">//this queue is a &quot;Direct reply-to&quot; read more at the docs</span> + <span class="c1">//When some msg comes in, we &quot;emit&quot; a message to the proper &quot;correlationId&quot; listener</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">consume</span><span class="p">(</span><span class="s1">&#39;amq.rabbitmq.reply-to&#39;</span><span class="p">,</span> <span class="nx">msg</span> <span class="p">=&gt;</span> <span class="nx">eventEmitter</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="nx">msg</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">correlationId</span><span class="p">,</span> <span class="nx">msg</span><span class="p">.</span><span class="nx">content</span><span class="p">),</span> <span class="p">{</span><span class="nx">noAck</span><span class="o">:</span> <span class="kc">true</span><span class="p">});</span> + <span class="p">});</span> +<span class="p">}</span> + +<span class="c1">//Random id generator</span> +<span class="kd">function</span> <span class="nx">randomid</span><span class="p">()</span> <span class="p">{</span> + <span class="k">return</span> <span class="k">new</span> <span class="nb">Date</span><span class="p">().</span><span class="nx">getTime</span><span class="p">().</span><span class="nx">toString</span><span class="p">()</span> <span class="o">+</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">().</span><span class="nx">toString</span><span class="p">()</span> <span class="o">+</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">().</span><span class="nx">toString</span><span class="p">();</span> +<span class="p">}</span> + +<span class="nx">app</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span><span class="s1">&#39;/upload&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="kd">let</span> <span class="nx">img</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">files</span><span class="p">.</span><span class="nx">image</span><span class="p">;</span> + + <span class="kd">let</span> <span class="nx">id</span> <span class="o">=</span> <span class="nx">randomid</span><span class="p">();</span> + + <span class="c1">//Event listener that will fire when the proper randomid is provided</span> + <span class="nx">eventEmitter</span><span class="p">.</span><span class="nx">once</span><span class="p">(</span><span class="nx">id</span><span class="p">,</span> <span class="nx">msg</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">write</span><span class="p">(</span><span class="nx">msg</span><span class="p">,</span> <span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">end</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="p">});</span> + + <span class="c1">//Checks if the queue exists, and create it if needed.</span> + <span class="nx">channel</span><span class="p">.</span><span class="nx">assertQueue</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">)</span> + <span class="c1">//Sent the buffered img to the queue with the ID and the responseQueue</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="nx">channel</span><span class="p">.</span><span class="nx">sendToQueue</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">,</span> <span class="nx">img</span><span class="p">.</span><span class="nx">data</span><span class="p">,</span> <span class="p">{</span><span class="nx">correlationId</span><span class="o">:</span><span class="nx">id</span><span class="p">,</span> <span class="nx">replyTo</span><span class="o">:</span> <span class="s1">&#39;amq.rabbitmq.reply-to&#39;</span><span class="p">}));</span> + +<span class="p">});</span> + +<span class="c1">//Finally start the app with the given port number</span> +<span class="c1">//now we initialize the rabbitmq connection before start the server</span> +<span class="nx">init</span><span class="p">()</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="nx">app</span><span class="p">.</span><span class="nx">listen</span><span class="p">(</span><span class="mi">4000</span><span class="p">,</span> <span class="p">()</span> <span class="p">=&gt;</span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;Example app listening on port 4000!&#39;</span><span class="p">)))</span> + <span class="p">.</span><span class="k">catch</span><span class="p">(</span><span class="nx">err</span><span class="p">=&gt;</span><span class="nx">console</span><span class="p">.</span><span class="nx">error</span><span class="p">(</span><span class="nx">err</span><span class="p">));</span> +</pre></div> +<p>Ok, now we have our server code rewritten so let's see our worker code. Create a file named 'worker.js' and let's see how it's gonna be. It's really simple. You initialize a connection with RabbitMQ too, create a channel, check if the queue exists and start watching for incoming messages. When an image arrives, we do the job with it and send back to the &quot;replyTo&quot; queue the optimized image for the proper sender (correlationId). In the end, we do an acknowledge of the message so it get's out from the queue.</p> +<div class="highlight"><pre><span></span><span class="kr">const</span> <span class="nx">imagemin</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin&#39;</span><span class="p">);</span> +<span class="kr">const</span> <span class="nx">imageminPngquant</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin-pngquant&#39;</span><span class="p">);</span> + +<span class="kd">let</span> <span class="nx">channel</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span> +<span class="kr">const</span> <span class="nx">QUEUE</span> <span class="o">=</span> <span class="s1">&#39;imgqueue&#39;</span><span class="p">;</span> + +<span class="nx">require</span><span class="p">(</span><span class="s1">&#39;amqplib&#39;</span><span class="p">).</span><span class="nx">connect</span><span class="p">(</span><span class="s1">&#39;amqp://localhost&#39;</span><span class="p">)</span> +<span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">conn</span> <span class="p">=&gt;</span><span class="nx">conn</span><span class="p">.</span><span class="nx">createChannel</span><span class="p">())</span> +<span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">ch</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">assertQueue</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">)</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="c1">//Watch incomming messages</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">consume</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">,</span> <span class="nx">msg</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">imagemin</span><span class="p">.</span><span class="nx">buffer</span><span class="p">(</span><span class="nx">msg</span><span class="p">.</span><span class="nx">content</span><span class="p">,</span> <span class="p">{</span> + <span class="nx">plugins</span><span class="o">:</span> <span class="p">[</span><span class="nx">imageminPngquant</span><span class="p">()]</span> + <span class="p">})</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">out</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="c1">//Send back to the sender (replyTo) queue and give the correlationId back</span> + <span class="c1">//so we can emit the event.</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">sendToQueue</span><span class="p">(</span><span class="nx">msg</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">replyTo</span><span class="p">,</span> <span class="nx">out</span><span class="p">,</span> <span class="p">{</span> + <span class="nx">correlationId</span><span class="o">:</span> <span class="nx">msg</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">correlationId</span> + <span class="p">});</span> + + <span class="c1">//Acknowledge the job done with the message.</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">ack</span><span class="p">(</span><span class="nx">msg</span><span class="p">);</span> + <span class="p">});</span> + <span class="p">});</span> + <span class="p">});</span> +<span class="p">});</span> +</pre></div> +<p>The key points here are. Open just one connection to the hole server. You CAN create one channel for every request that you receive, but it can take some time if you have a really big cluster of RabbitMQ. It was a quick tutorial, but I hope that it was able to clear a few questions that you might have when working with rabbit and express.</p> +Microservices with NodeJS, Express.js and RabbitMQ Part 12018-04-04T11:25:00-03:002018-04-04T11:25:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-04-04:/en/microservices_nodejs_express_rabbitmq_part_1.html<p>This is the first part of a microservices development series. The service will consist of the bellow architecture, where we will expose an image optimizer service that will forward the request to a <a class="reference external" href="https://www.rabbitmq.com/">RabbitMQ</a> queue and answer with the bytecode of the optimized image. It shouldn't be a long series …</p><p>This is the first part of a microservices development series. The service will consist of the bellow architecture, where we will expose an image optimizer service that will forward the request to a <a class="reference external" href="https://www.rabbitmq.com/">RabbitMQ</a> queue and answer with the bytecode of the optimized image. It shouldn't be a long series so let's see what we can do.</p> +<img alt="Service architecture" src="/images/microservices_rabit_pt1.png" /> +<p>Let's get our environment working. First, we'll need to install the libraries that we'll use.</p> +<p>Create a dir and initialize the nodejs application inside it (<cite>npm init</cite>) and then let's install the deps.</p> +<ul class="simple"> +<li>amqplib - AMQP lib to interact with rabbitmq</li> +<li>express - Do our basic rest API</li> +<li>express-fileupload - easy file upload parser</li> +<li>imagemin and imagemin-pngquant - our image compacter</li> +</ul> +<div class="highlight"><pre><span></span>npm install --save express amqplib express-fileupload imagemin imagemin-pngquant +</pre></div> +<p>Now let's write the entry points for our service, we'll have two basic entry points. The path <cite>/</cite> that will have a welcome message, the second path will be <cite>/upload</cite> and this is the one that will handle the image and produce a job for our workers.</p> +<div class="highlight"><pre><span></span><span class="kr">const</span> <span class="nx">express</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;express&#39;</span><span class="p">);</span> +<span class="kr">const</span> <span class="nx">fileUpload</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;express-fileupload&#39;</span><span class="p">);</span> + +<span class="c1">//Instantiate the app and set the fileupload parser to manage files</span> +<span class="kr">const</span> <span class="nx">app</span> <span class="o">=</span> <span class="nx">express</span><span class="p">();</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">use</span><span class="p">(</span><span class="nx">fileUpload</span><span class="p">());</span> + +<span class="c1">//Our index entry point</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="nx">res</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="s1">&#39;Hello From ImageCompacter service&#39;</span><span class="p">));</span> + +<span class="c1">//The path that will handle the image file and throw them to the queue</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span><span class="s1">&#39;/upload&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="c1">//With express-fileupload we can grab the files like this</span> + <span class="kd">let</span> <span class="nx">img</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">files</span><span class="p">.</span><span class="nx">image</span><span class="p">;</span> <span class="c1">//&quot;image&quot; is the name of the input</span> + + <span class="nx">res</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="s1">&#39;Not ready yet&#39;</span><span class="p">);</span> +<span class="p">});</span> + +<span class="c1">//Finally start the app with the given port number</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">listen</span><span class="p">(</span><span class="mi">4000</span><span class="p">,</span> <span class="p">()</span> <span class="p">=&gt;</span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;Example app listening on port 4000!&#39;</span><span class="p">));</span> +</pre></div> +<p>Let's check if it works, run the service with node.</p> +<div class="highlight"><pre><span></span>node index.js +Example app listening on port <span class="m">4000</span>! +</pre></div> +<p>Open the browser and check if it prints our hello message when accessing <cite>localhost:4000</cite>. Works? Greate. Now let's work with the image and see how we do it. To optimize our image, we'll use the library imagemin and <a class="reference external" href="https://www.npmjs.com/package/imagemin-pngquant">imagemin-pngquant</a>, it will be that simple for now, we'll work with rabbitmq latter.</p> +<div class="highlight"><pre><span></span><span class="kr">const</span> <span class="nx">imagemin</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin&#39;</span><span class="p">);</span> +<span class="kr">const</span> <span class="nx">imageminPngquant</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin-pngquant&#39;</span><span class="p">);</span> +<span class="c1">//...</span> + +<span class="c1">//The path that will handle the image file and throw them to the queue</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span><span class="s1">&#39;/upload&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="kd">let</span> <span class="nx">img</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">files</span><span class="p">.</span><span class="nx">image</span><span class="p">;</span> <span class="c1">//&quot;image&quot; is the name of the input</span> + + <span class="nx">imagemin</span><span class="p">.</span><span class="nx">buffer</span><span class="p">(</span><span class="nx">img</span><span class="p">.</span><span class="nx">data</span><span class="p">,</span> <span class="p">{</span> + <span class="nx">plugins</span><span class="o">:</span> <span class="p">[</span><span class="nx">imageminPngquant</span><span class="p">()]</span> + <span class="p">})</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">out</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">write</span><span class="p">(</span><span class="nx">out</span><span class="p">,</span><span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">end</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="p">});</span> +<span class="p">});</span> + + <span class="c1">//...</span> +</pre></div> +<p>Use <a class="reference external" href="https://www.getpostman.com/">Postman</a> to test the request. To see if it will work, make a request to <cite>http://localhost:4000/upload</cite> with a formdata with a file. Select the &quot;send and Download&quot; instead of &quot;Send&quot; and you should have an image after that. Bellow an image of how your postman should be.</p> +<img alt="Postman" src="/images/microservice_postman.png" /> +<p>That's it for today, next week we'll change our code to use RabbitMQ.</p> +Connecting to a database through SSH2018-03-29T10:03:00-03:002018-03-29T10:03:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-29:/en/connecting_to_database_through_ssh.html<p>If someday, for some reason, you need to establish a connection with a database which is behind a firewall and you only have SSH access on that server (and you don't want to use a CLI) you can do an SSH tunnel. It's pretty simple, bellow has a sample of …</p><p>If someday, for some reason, you need to establish a connection with a database which is behind a firewall and you only have SSH access on that server (and you don't want to use a CLI) you can do an SSH tunnel. It's pretty simple, bellow has a sample of how to allow connections to a remote Firebird database.</p> +<div class="highlight"><pre><span></span>ssh -L <span class="m">3051</span>:192.168.1.9:3050 username@192.168.1.9 +</pre></div> +<p>The <cite>-L</cite> parameter tells to SSH do a local port forwarding on local port <cite>3051</cite> to remote port <cite>3050</cite>. You can use it to a connection with many services, not just databases.</p> +<p>You can do the reverse kind of tunnel, forward connections from the host to your local machine, you just have to change the parameter form &quot;-L&quot; to &quot;-R&quot; and the port order is inverted, first come the port where the server will listen and after your localhost port. This remote port forwarding must be enabled on the server. Look for <cite>GatewayPorts</cite> at the ssh config file.</p> +<div class="highlight"><pre><span></span>ssh -R <span class="m">3050</span>:localhost:3050 username@192.168.1.9 +</pre></div> +<p>Why whould you need something like that?? Let's say you want to share a localhost site/database with a friend, but your internet connection don't allow you to expose any port but you have access to a remote server witch can do that. Problem solved ;).</p> +Now posting on Grepora2018-03-24T00:40:00-03:002018-03-24T00:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-24:/en/now_posting_on_grepora.html<p>A few weeks ago I started posting at <a class="reference external" href="https://grepora.com/blog/">Grepora</a> blog. If you like or are looking for some Oracle related stuff, Grepora it's a good place to go and spend a time reading :). From time to time I'll be posting there, it doesn't mean that this blog will be closed …</p><p>A few weeks ago I started posting at <a class="reference external" href="https://grepora.com/blog/">Grepora</a> blog. If you like or are looking for some Oracle related stuff, Grepora it's a good place to go and spend a time reading :). From time to time I'll be posting there, it doesn't mean that this blog will be closed or anything like that, but probably this one will be more focused on Front-end stuff, a few tricks with linux and a lil less with Java.</p> +Scaffolding a React app with Parcel and Yeoman2018-03-17T13:00:00-03:002018-03-17T13:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-17:/en/scaffolding_react_app_with_parcel_yeoman.html<p>Since <a class="reference external" href="https://parceljs.org/">Parcel JS</a> arrived, I've been using it a lot as an awesome alternative for WebPack. Webpack isn't bad but IMO it's too complex for the job and parcel do the same (at least the basic) with almost zero configuration. But if you need to create many apps (like a …</p><p>Since <a class="reference external" href="https://parceljs.org/">Parcel JS</a> arrived, I've been using it a lot as an awesome alternative for WebPack. Webpack isn't bad but IMO it's too complex for the job and parcel do the same (at least the basic) with almost zero configuration. But if you need to create many apps (like a react app) over and over again, it get's a lil boring following the basic steps.</p> +<div class="highlight"><pre><span></span>npm init -y +npm install --save react +npm install --save react-dom +npm install --save-dev parcel-bundler +npm install --save-dev babel-preset-env +npm install --save-dev babel-preset-react + +<span class="c1">#create .babelrc file</span> +<span class="c1">#create html, css, jsx files</span> + +parcel index.html +</pre></div> +<p>It's not a hard job, a simple shell script do the job, but what if you need some IFs when creating the app, or even change a few things at the <cite>package.json</cite>? A shell script still does the job, but come on... There is a better way. <a class="reference external" href="http://yeoman.io/">Yeoman</a> is here for you. I've already <a class="reference external" href="https://www.sipmann.com/en/desenvolvendo-app-firefoxos-pt.html">talked about it</a> on another post (Portuguese post).</p> +<p>Straight to the point, I've released a Yeoman generator to get the things a lil quicker. The name is <a class="reference external" href="https://www.npmjs.com/package/generator-parcel-react">generator-parcel-react</a> and it still lacks a few things that I will deal with soon. It's pretty simple to use it.</p> +<div class="highlight"><pre><span></span><span class="c1">#First time only</span> +npm install -g yo +npm install -g generator-parcel-react + +<span class="c1">#every time you create a new app</span> +yo parcel-react +</pre></div> +<p>And that's it. Right now you can scaffold and app with React, SASS and React Router. Hope you like it and feel free to ask new features.</p> +Could not open connection with MySQL and Hibernate2018-03-09T12:35:00-03:002018-03-09T12:35:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-09:/en/cloud-not-open-connection-java-mysql-hibernate.html<p>Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some &quot;Could not open connection&quot; at my …</p><p>Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some &quot;Could not open connection&quot; at my face, but why? I've tried to connect to it manually and got the same problem.</p> +<p>After some research, I found that the true error should be java.sql.SQLException: null, message from server: &quot;Host '172.17.0.4' is not allowed to connect to this MySQL server&quot; but it wasn't showing to me...</p> +<p>After all, be aware that with the docker image MySQL:5.7.21 (latest version right now) the root user isn't allowed to remote connect to the database (it's alright, security reasons) and if you still want to do remote connections to it with root there are a few things you can do.</p> +<ol class="arabic simple"> +<li>Create a user or allow root to access from other IPs.</li> +</ol> +<div class="highlight"><pre><span></span><span class="o">#</span><span class="k">No</span> <span class="k">access</span> <span class="k">to</span> <span class="k">user</span> <span class="n">root</span> <span class="k">on</span> <span class="k">any</span> <span class="n">other</span> <span class="n">IP</span> +<span class="k">SELECT</span> <span class="k">User</span><span class="p">,</span> <span class="k">Host</span> <span class="k">FROM</span> <span class="n">mysql</span><span class="p">.</span><span class="k">user</span><span class="p">;</span> +<span class="o">+</span><span class="c1">---------------+-----------+</span> +<span class="o">|</span> <span class="k">User</span> <span class="o">|</span> <span class="k">Host</span> <span class="o">|</span> +<span class="o">+</span><span class="c1">---------------+-----------+</span> +<span class="o">|</span> <span class="n">healthchecker</span> <span class="o">|</span> <span class="n">localhost</span> <span class="o">|</span> +<span class="o">|</span> <span class="n">root</span> <span class="o">|</span> <span class="n">localhost</span> <span class="o">|</span> +<span class="o">+</span><span class="c1">---------------+-----------+</span> +<span class="mi">2</span> <span class="k">rows</span> <span class="k">in</span> <span class="k">set</span> <span class="p">(</span><span class="mi">0</span><span class="p">.</span><span class="mi">01</span> <span class="n">sec</span><span class="p">)</span> + +<span class="k">CREATE</span> <span class="k">USER</span> <span class="s1">&#39;newuser&#39;</span><span class="o">@</span><span class="s1">&#39;%&#39;</span> <span class="n">IDENTIFIED</span> <span class="k">BY</span> <span class="s1">&#39;password&#39;</span><span class="p">;</span> <span class="o">#%</span> <span class="n">mean</span> <span class="k">any</span> <span class="n">IP</span> +<span class="k">GRANT</span> <span class="k">ALL</span> <span class="k">PRIVILEGES</span> <span class="k">ON</span> <span class="o">*</span><span class="p">.</span><span class="o">*</span> <span class="k">TO</span> <span class="s1">&#39;newuser&#39;</span><span class="o">@</span><span class="s1">&#39;%&#39;</span><span class="p">;</span> <span class="o">#*</span><span class="p">.</span><span class="o">*</span> <span class="n">mean</span> <span class="k">database</span><span class="p">.</span><span class="k">table</span> <span class="p">;)</span> +</pre></div> +<ol class="arabic simple" start="2"> +<li>Use MariaDB instead, witch come (at least on the version 10.2.13) with root allowed to do remote connections and will work like MySQL :)</li> +</ol> +<p>I changed to <a class="reference external" href="https://mariadb.org/">MariaDB</a> as it work without creating user or any changes on the Java code or the <cite>docker run command</cite>.</p> +Solving java.net.SocketException: Protocol family unavailable on a Java + Docker + WildFly2018-03-04T17:40:00-03:002018-03-04T17:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-04:/en/socketException-protocol-family-unavailable-java-docker-wildfly.html<p>On the last days I've been playing with <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> and I decided to deploy a simple app with Docker. Should work fine, at least that was what I thought. Built a container with the following Dockerfile and instead of a working web app, all that I got was the …</p><p>On the last days I've been playing with <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> and I decided to deploy a simple app with Docker. Should work fine, at least that was what I thought. Built a container with the following Dockerfile and instead of a working web app, all that I got was the error <cite>java.net.SocketException: Protocol family unavailable</cite>.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">CMD</span> <span class="p">[</span><span class="s2">&quot;java&quot;</span><span class="p">,</span><span class="s2">&quot;-jar&quot;</span><span class="p">,</span><span class="s2">&quot;/opt/issues.jar&quot;</span><span class="p">]</span> +</pre></div> +<p>For some reason, WildFly and Java decided to use the IPv6 network interface from Docker instead the v4, so all you have to do is tell Java to prefer IPv4 instead with the following configuration option in your pom.xml file inside your WildFly plugin.</p> +<div class="highlight"><pre><span></span><span class="nt">&lt;plugin&gt;</span> + <span class="nt">&lt;groupId&gt;</span>org.wildfly.swarm<span class="nt">&lt;/groupId&gt;</span> + <span class="nt">&lt;artifactId&gt;</span>wildfly-swarm-plugin<span class="nt">&lt;/artifactId&gt;</span> + <span class="nt">&lt;version&gt;</span>2018.2.0<span class="nt">&lt;/version&gt;</span> + + <span class="c">&lt;!-- ADD THIS --&gt;</span> + <span class="nt">&lt;configuration&gt;</span> + <span class="nt">&lt;mainClass&gt;</span>org.wildfly.swarm.examples.netflix.ribbon.frontend.Main<span class="nt">&lt;/mainClass&gt;</span> + <span class="nt">&lt;properties&gt;</span> + <span class="nt">&lt;java.net.preferIPv4Stack&gt;</span>true<span class="nt">&lt;/java.net.preferIPv4Stack&gt;</span> + <span class="nt">&lt;/properties&gt;</span> + <span class="nt">&lt;/configuration&gt;</span> +</pre></div> +<p>Another way to solve is adding the same properties to the run command at the Dockerfile, so you choose where you'll add it. Bellow the Dockerfile solution.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> +<span class="k">ENV</span> <span class="nv">JAVA_OPTS</span><span class="o">=</span><span class="s2">&quot;-Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true&quot;</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">ENTRYPOINT</span> <span class="nb">exec</span> java <span class="nv">$JAVA_OPTS</span> -jar /opt/issues.jar +</pre></div> +Change display settings on linux with Disper2018-02-27T12:40:00-03:002018-02-27T12:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-02-27:/en/linux-external-display-with-disper.html<p>From time to time, I change the Linux distro on my laptop or just do a fresh install on it. And once in a while, have random problems with external displays. It can be something really &quot;simple&quot; like don't detecting the external monitor or something crazy like the image below …</p><p>From time to time, I change the Linux distro on my laptop or just do a fresh install on it. And once in a while, have random problems with external displays. It can be something really &quot;simple&quot; like don't detecting the external monitor or something crazy like the image below.</p> +<img alt="Display bug" src="/images/bug.png" /> +<p>As you can see at the image, the mint detected the display but mirrored it in a crazy way that works but doesn't at the same time. If you try anything and doesn't get working, or just wanna skip the whole job of configuring complexes text files, give a try to <a class="reference external" href="http://willem.engen.nl/projects/disper/">Disper</a>. Download the latest version. +Extract it on any folder, and make install it (on the extracted folder).</p> +<div class="highlight"><pre><span></span>make install +</pre></div> +<p>After that, you can start using it... There are a few options that will serve you well.</p> +<div class="highlight"><pre><span></span>disper -e <span class="c1">#extend your display</span> +</pre></div> +<div class="highlight"><pre><span></span>disper -c <span class="c1">#clone your display</span> +</pre></div> +<div class="highlight"><pre><span></span>disper -s <span class="c1">#only your external display</span> +</pre></div> +Java - Files.readAllBytes throws OutOfMemory2018-02-17T13:00:00-02:002018-02-17T13:00:00-02:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-02-17:/en/reading-files-java-readAllBytes-outofmemory.html<p>When you need to interact with files, there's the possibility to read all bytes from the file with <cite>Files.readAllBytes</cite>. But be aware of the kinds of files your application will deal with because the Java API files have a limit for the buffer that is defined as <cite>Integer.MAX_VALUE …</cite></p><p>When you need to interact with files, there's the possibility to read all bytes from the file with <cite>Files.readAllBytes</cite>. But be aware of the kinds of files your application will deal with because the Java API files have a limit for the buffer that is defined as <cite>Integer.MAX_VALUE</cite> as you can see above or at the OpenJDK sources.</p> +<div class="highlight"><pre><span></span><span class="kd">public</span> <span class="kd">static</span> <span class="kt">byte</span><span class="o">[]</span> <span class="nf">readAllBytes</span><span class="p">(</span><span class="n">Path</span> <span class="n">path</span><span class="p">)</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="p">{</span> + <span class="k">try</span> <span class="p">(</span><span class="n">FileChannel</span> <span class="n">fc</span> <span class="o">=</span> <span class="n">FileChannel</span><span class="p">.</span><span class="na">open</span><span class="p">(</span><span class="n">path</span><span class="p">))</span> <span class="p">{</span> + <span class="kt">long</span> <span class="n">size</span> <span class="o">=</span> <span class="n">fc</span><span class="p">.</span><span class="na">size</span><span class="p">();</span> + <span class="k">if</span> <span class="p">(</span><span class="n">size</span> <span class="o">&gt;</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">Integer</span><span class="p">.</span><span class="na">MAX_VALUE</span><span class="p">)</span> + <span class="k">throw</span> <span class="k">new</span> <span class="n">OutOfMemoryError</span><span class="p">(</span><span class="s">&quot;Required array size too large&quot;</span><span class="p">);</span> + + <span class="kt">byte</span><span class="o">[]</span> <span class="n">arr</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">byte</span><span class="o">[</span><span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">size</span><span class="o">]</span><span class="p">;</span> + <span class="n">ByteBuffer</span> <span class="n">bb</span> <span class="o">=</span> <span class="n">ByteBuffer</span><span class="p">.</span><span class="na">wrap</span><span class="p">(</span><span class="n">arr</span><span class="p">);</span> + <span class="k">while</span> <span class="p">(</span><span class="n">bb</span><span class="p">.</span><span class="na">hasRemaining</span><span class="p">())</span> <span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="n">fc</span><span class="p">.</span><span class="na">read</span><span class="p">(</span><span class="n">bb</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> + <span class="c1">// truncated</span> + <span class="k">break</span><span class="p">;</span> + <span class="p">}</span> + <span class="p">}</span> + + <span class="kt">int</span> <span class="n">nread</span> <span class="o">=</span> <span class="n">bb</span><span class="p">.</span><span class="na">position</span><span class="p">();</span> + <span class="k">return</span> <span class="p">(</span><span class="n">nread</span> <span class="o">==</span> <span class="n">size</span><span class="p">)</span> <span class="o">?</span> <span class="n">arr</span> <span class="p">:</span> <span class="n">Arrays</span><span class="p">.</span><span class="na">copyOf</span><span class="p">(</span><span class="n">arr</span><span class="p">,</span> <span class="n">nread</span><span class="p">);</span> + <span class="p">}</span> +<span class="p">}</span> +</pre></div> +<p>With that in mind, check if isn't better read chunks of bytes e work with that slice in exchange of loading the whole file into the memory ;). Above a simple example of how you can read chunks of bytes from the file.</p> +<div class="highlight"><pre><span></span><span class="kt">byte</span><span class="o">[]</span> <span class="n">buffer</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">byte</span><span class="o">[</span><span class="mi">1024</span><span class="o">]</span><span class="p">;</span> +<span class="n">FileInputStream</span> <span class="n">in</span> <span class="o">=</span> <span class="k">new</span> <span class="n">FileInputStream</span><span class="p">(</span><span class="n">file</span><span class="p">);</span> +<span class="kt">int</span> <span class="n">rc</span> <span class="o">=</span> <span class="n">in</span><span class="p">.</span><span class="na">read</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span> +<span class="k">while</span> <span class="p">(</span><span class="n">rc</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> +<span class="p">{</span> + <span class="c1">//crazy stuff here with buffer</span> + <span class="n">rc</span> <span class="o">=</span> <span class="n">in</span><span class="p">.</span><span class="na">read</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span> +<span class="p">}</span> +</pre></div> + \ No newline at end of file diff --git a/en/feeds/mauricio-camargo-sipmann.atom.xml.gz b/en/feeds/mauricio-camargo-sipmann.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..300a85b12c9142e6ef1649449a1208a10bc26c4a GIT binary patch literal 26321 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 Y6Psps(8F$5O8YPWKb5xz(?sY30KM>4jsO4v literal 0 HcmV?d00001 diff --git a/en/feeds/mauricio-camargo-sipmann.rss.xml b/en/feeds/mauricio-camargo-sipmann.rss.xml new file mode 100644 index 000000000..0f0f534e7 --- /dev/null +++ b/en/feeds/mauricio-camargo-sipmann.rss.xml @@ -0,0 +1,28 @@ + +Sipmann - Maurício Camargo Sipmannhttps://www.sipmann.com/en/Mon, 21 Dec 2020 13:30:00 -0300Monitoring MySQL restarts with PowerShellhttps://www.sipmann.com/en/monitoring-mysql-restarts-with-powershell.html<p>Hey folks, it's time for another PowerShell script. If you haven't seen the other ones, check the links below.</p> +<ul> +<li><a href="https://www.sipmann.com/en/monitoring-mysql-replication-with-powershell.html">Monitoring MySQL replication with PowerShell</a></li> +</ul> +<p>Well, this one it's a pretty simple script, but again, if your customer doesn't have a Zabbix server or doesn't allow you to setup one to …</p>Maurício Camargo SipmannMon, 21 Dec 2020 13:30:00 -0300tag:www.sipmann.com,2020-12-21:/en/monitoring-mysql-restarts-with-powershell.htmlPowerShellMySQLMySQL RestartPowershell monitoringChanging a MySQL user password across multiple application instances without downtimehttps://www.sipmann.com/en/mysql-dual-password-functionality.html<p>Do you need to change the password of a MySQL user that it's being used in an application, and can't allow a single downtime? Well, MySQL 8.0.14 came with a feature called <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, with it you can change the password keeping the previous password as a …</p>Maurício Camargo SipmannWed, 09 Dec 2020 13:40:00 -0300tag:www.sipmann.com,2020-12-09:/en/mysql-dual-password-functionality.htmlMySQLMySQLMySQL Dual PasswordApache Nifi JSON to SQL Replacing underscorehttps://www.sipmann.com/en/apache-nifi-json-to-sql-replacing-underscore.html<p>Recently I was doing some ETL with Apache NiFi. But after a few minutes of drawing my flow, I saw that the component ConvertJSONToSQL was replacing the underscore ('_') from the field name in the where condition (I was preparing an Update SQL). That was weird because, at the set …</p>Maurício Camargo SipmannWed, 02 Dec 2020 14:00:00 -0300tag:www.sipmann.com,2020-12-02:/en/apache-nifi-json-to-sql-replacing-underscore.htmlToolsApache NifiConvertJSONToSQLreplacing underscoreBlocking a user on SQL Server based on a schedulehttps://www.sipmann.com/en/blocking-user-on-sql-server-based-on-schedule.html<p>Ok, some time ago, I've posted about how you can set limits to connections on SQL Server using the <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. But what if you can't use it? You always can block logins using a login trigger, but I don't like the idea of having selects running on every login …</p>Maurício Camargo SipmannSat, 14 Nov 2020 07:00:00 -0300tag:www.sipmann.com,2020-11-14:/en/blocking-user-on-sql-server-based-on-schedule.htmlSQL ServerSQLServerUserTime Schedule blockingHow to set columns on select using Entity Frameworkhttps://www.sipmann.com/en/select_specific_fields_with_efcore.html<p>So, you use Entity Framework Core, and you usually code your selects like the following, maybe you are getting too much data.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Running the query above, on my table, you'll get the following output, take a look …</p>Maurício Camargo SipmannWed, 28 Oct 2020 19:00:00 -0300tag:www.sipmann.com,2020-10-28:/en/select_specific_fields_with_efcore.html.NETDotNetDotNet CoreEntity FrameworkEF CoreSpecify columnsZabbix Running on Low Memory Modehttps://www.sipmann.com/en/zabbix-running-on-low-memory-mode.html<p>Hey folks, another Zabbix post today. This one it's about increasing the Zabbix Server Cache. It's pretty common (if you have the default settings only) get a warning about your <code>Zabbix value cache running on low memory mode</code> at your dashboard or logs.</p> +<p><img alt="Zabbix Dashboard warning about the memory problem" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache graph 70% used" src="/images/zabbix_cache_filling.png"></p> +<p>To solve, go back to your Zabbix …</p>Maurício Camargo SipmannTue, 20 Oct 2020 19:00:00 -0300tag:www.sipmann.com,2020-10-20:/en/zabbix-running-on-low-memory-mode.htmlLinuxZabbixShellLow memoryCacheMonitoring MySQL Replication Status with PowerShellhttps://www.sipmann.com/en/monitoring-mysql-replication-with-powershell.html<p>I've been migration some bash scripts that I have to PowerShell, and it's time to migrate a script that monitors the replication of a MySQL database. The credit for the original script goes to <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. It's a simple script where I seek a few tags/fields that we get from …</p>Maurício Camargo SipmannWed, 14 Oct 2020 19:00:00 -0300tag:www.sipmann.com,2020-10-14:/en/monitoring-mysql-replication-with-powershell.htmlPowerShellMySQLMySQL ReplicationPowerShellPowershell mailMicrosoft Against Covidhttps://www.sipmann.com/en/microsoft-against-covid.html<p>Has your job been affected by covid? Well, last week I've posted on <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by …</p>Maurício Camargo SipmannSat, 03 Oct 2020 19:00:00 -0300tag:www.sipmann.com,2020-10-03:/en/microsoft-against-covid.htmlAzureAzureCertificationMicrosoftThe power of PowerShellhttps://www.sipmann.com/en/the-power-of-powershell.html<p>As a long time Linux user, I've automated a few things with bash scripts and stayed away from PowerShell... I've moved to a Windows environment a few years ago and still, haven gave a shot to PS. But why not? I've made a few scripts to automate some tasks at …</p>Maurício Camargo SipmannMon, 21 Sep 2020 19:00:00 -0300tag:www.sipmann.com,2020-09-21:/en/the-power-of-powershell.htmlPowerShellAzurePowerShellScriptGetChild-ItemRemove-ItemStop-ProccessTop Level Statement in C# 9https://www.sipmann.com/en/top_level_statement_csharp_9.html<p>Hey folks, I'm coming along to tell you a few things about the new feature of C# 9. Every time you want to start a new project, you always have the same Main File, with the same structure. At the next version of C# (version 9), we'll have a new …</p>Maurício Camargo SipmannWed, 29 Jul 2020 19:00:00 -0300tag:www.sipmann.com,2020-07-29:/en/top_level_statement_csharp_9.html.NETC#Dotnet CoreDotNet.netZabbix poller processes more than 75%https://www.sipmann.com/en/zabbix-poller-processes-more-than-75.html<p>Hey folks, this is the third post about tweaking the Zabbix configurations. All changes that I've suggested here were based on a Zabbix Server with 50+ hosts. Another thing that can happen to your server, it's the poller get overwhelmed by the amount of servers that need to be polled …</p>Maurício Camargo SipmannThu, 02 Jul 2020 19:00:00 -0300tag:www.sipmann.com,2020-07-02:/en/zabbix-poller-processes-more-than-75.htmlLinuxZabbixShellZabbix PollerPoller proccess more than 75%Monitoring a Website heath with Azure Functionshttps://www.sipmann.com/en/monitoring-website-heath-with-azure-functions.html<p>Sometimes you get your self in need to monitor a website's health or it's content for changes. Of course, there's plenty of options out there, but for the sake of curiosity, let's code our own to see what we can do. First things first. Everything you'll see here, you can …</p>Maurício Camargo SipmannMon, 22 Jun 2020 19:00:00 -0300tag:www.sipmann.com,2020-06-22:/en/monitoring-website-heath-with-azure-functions.htmlAzureAzureAzure DevopsC#Dotnet CoreDotNetMonitor WebsiteAzure Data Fundamentals certification with 80% discounthttps://www.sipmann.com/en/azure-data-fundamentals-certification-80-discount.html<p>Hey folks, if you want to achieve some certification this year, keep an eye open for vouchers. A few months ago, Oracle released a set of free courses with certifications. Now it's Microsoft time. Microsoft is updating they're certifications and we have a voucher of 80% discount using the coupon …</p>Maurício Camargo SipmannTue, 09 Jun 2020 12:30:00 -0300tag:www.sipmann.com,2020-06-09:/en/azure-data-fundamentals-certification-80-discount.htmlAzureAzureAzure FundamentalsAzure CertificationDiscountZabbix ICMP pinger processes more than 75%https://www.sipmann.com/en/zabbix-icmp-pinger-processes-more-than-75.html<p>So your monitoring sytems have grown and your zabbix started loggin "Zabbix icmp pinger processes more than 75% busy" at the dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>All you have to do is open your config file (<code>/etc/zabbix/zabbix_server.conf</code>) and find the a tag named <code>StartPingers</code>. It'll be commented by default. Uncomment it …</p>Maurício Camargo SipmannMon, 25 May 2020 16:00:00 -0300tag:www.sipmann.com,2020-05-25:/en/zabbix-icmp-pinger-processes-more-than-75.htmlLinuxZabbixicmp pingericmp pinger more than 75Zabbix ServerZabbix Server Out of Memoryhttps://www.sipmann.com/en/zabbix-server-out-of-memory-crash.html<p>Do you have a crashing Zabbix Server and looking through the log <code>/var/log/zabbix/zabbix_server.log</code> you see the following out of memory message?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c,line …</code></pre></div>Maurício Camargo SipmannThu, 27 Feb 2020 19:00:00 -0300tag:www.sipmann.com,2020-02-27:/en/zabbix-server-out-of-memory-crash.htmlLinuxZabbixShellOut of memoryCrashFlutter + firebase auth crashinghttps://www.sipmann.com/en/flutter_with_firebase_auth_crashing.html<p>Hey Folks, recently I've started learning <a href="https://flutter.dev/">Flutter</a> and right after a TODO List, I tried a Firebase integration. But as soon as I started setting the dependencies, my app stopped opening... just a crash. After a few logs digging, I've found the following log.</p> +<div class="highlight"><pre><span></span><code>AndroidRuntime: FATAL EXCEPTION: main +AndroidRuntime: Process …</code></pre></div>Maurício Camargo SipmannThu, 03 Oct 2019 19:00:00 -0300tag:www.sipmann.com,2019-10-03:/en/flutter_with_firebase_auth_crashing.htmlFlutterflutterfirebaseArrayMapNoClassDefFoundRemoving a user from SQL Server database who owns a schemahttps://www.sipmann.com/en/removing-user-from-sql-server-database.html<p>Your customer urge you to drop a user from the MsSQL Server database, but you stuck with the following related error:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>That means that the user owns one or more shcemas of your database. If …</p>Maurício Camargo SipmannFri, 06 Sep 2019 07:00:00 -0300tag:www.sipmann.com,2019-09-06:/en/removing-user-from-sql-server-database.htmlSQL ServerSQLServerUserThe database principal owns a schemaLimiting Connection Resources on SQL Serverhttps://www.sipmann.com/en/limiting-connection-resources-sql-server.html<p>Have you ever suffered from a slow SQLServer database? Someone love to run that heavy query in the database? Resource Governor to the rescue. You can set a few rules on how users (connections actually) will use the server/database resources based on a few things.</p> +<p>First things first, if …</p>Maurício Camargo SipmannMon, 12 Aug 2019 12:00:00 -0300tag:www.sipmann.com,2019-08-12:/en/limiting-connection-resources-sql-server.htmlSQL ServerSQLServerResource GovernorUsing git hooks to easy your lifehttps://www.sipmann.com/en/using_git_hooks_easy_your_life.html<p>Hey folks, it's been a time since my last post. In the meantime, I moved to another state, changed job, and started learning new kinds of stuff. Today I would like to share one thing that I usually do with my small git projects. Git has many cool features, git …</p>Maurício Camargo SipmannTue, 30 Jul 2019 20:00:00 -0300tag:www.sipmann.com,2019-07-30:/en/using_git_hooks_easy_your_life.htmltoolsgitshellpre-commithooksMicroservices with NodeJS, Express.js and RabbitMQ Part 2https://www.sipmann.com/en/microservices_nodejs_express_rabbitmq_part_2.html<p>If you haven't read the <a class="reference external" href="https://www.sipmann.com/microservices_nodejs_express_rabbitmq_part_1-en.html">part 1</a> go ahead and read it... It can be useful :). Or if for some reason you want to start now, you can grab the project where we stopped <a class="reference external" href="https://github.com/sipmann/imagecompacter/releases/tag/v1">here</a> and get along. On this part, we'll implement the RabbitMQ queue and see how we …</p>Maurício Camargo SipmannFri, 13 Apr 2018 13:00:00 -0300tag:www.sipmann.com,2018-04-13:/en/microservices_nodejs_express_rabbitmq_part_2.htmlFront-endnodejsmicroservicesrabbitmqexpressjsimageminimagemin-pngquantnode jsMicroservices with NodeJS, Express.js and RabbitMQ Part 1https://www.sipmann.com/en/microservices_nodejs_express_rabbitmq_part_1.html<p>This is the first part of a microservices development series. The service will consist of the bellow architecture, where we will expose an image optimizer service that will forward the request to a <a class="reference external" href="https://www.rabbitmq.com/">RabbitMQ</a> queue and answer with the bytecode of the optimized image. It shouldn't be a long series …</p>Maurício Camargo SipmannWed, 04 Apr 2018 11:25:00 -0300tag:www.sipmann.com,2018-04-04:/en/microservices_nodejs_express_rabbitmq_part_1.htmlFront-endnodejsmicroservicesrabbitmqexpressjsimageminimagemin-pngquantnode jsConnecting to a database through SSHhttps://www.sipmann.com/en/connecting_to_database_through_ssh.html<p>If someday, for some reason, you need to establish a connection with a database which is behind a firewall and you only have SSH access on that server (and you don't want to use a CLI) you can do an SSH tunnel. It's pretty simple, bellow has a sample of …</p>Maurício Camargo SipmannThu, 29 Mar 2018 10:03:00 -0300tag:www.sipmann.com,2018-03-29:/en/connecting_to_database_through_ssh.htmlLinuxopensshtunnelssh tunnelsshthrough firewallNow posting on Greporahttps://www.sipmann.com/en/now_posting_on_grepora.html<p>A few weeks ago I started posting at <a class="reference external" href="https://grepora.com/blog/">Grepora</a> blog. If you like or are looking for some Oracle related stuff, Grepora it's a good place to go and spend a time reading :). From time to time I'll be posting there, it doesn't mean that this blog will be closed …</p>Maurício Camargo SipmannSat, 24 Mar 2018 00:40:00 -0300tag:www.sipmann.com,2018-03-24:/en/now_posting_on_grepora.htmlRandomGreporaRandomScaffolding a React app with Parcel and Yeomanhttps://www.sipmann.com/en/scaffolding_react_app_with_parcel_yeoman.html<p>Since <a class="reference external" href="https://parceljs.org/">Parcel JS</a> arrived, I've been using it a lot as an awesome alternative for WebPack. Webpack isn't bad but IMO it's too complex for the job and parcel do the same (at least the basic) with almost zero configuration. But if you need to create many apps (like a …</p>Maurício Camargo SipmannSat, 17 Mar 2018 13:00:00 -0300tag:www.sipmann.com,2018-03-17:/en/scaffolding_react_app_with_parcel_yeoman.htmlFront-endnodejsyeomanparcelreactCould not open connection with MySQL and Hibernatehttps://www.sipmann.com/en/cloud-not-open-connection-java-mysql-hibernate.html<p>Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some &quot;Could not open connection&quot; at my …</p>Maurício Camargo SipmannFri, 09 Mar 2018 12:35:00 -0300tag:www.sipmann.com,2018-03-09:/en/cloud-not-open-connection-java-mysql-hibernate.htmlJavaJavaMySQLHibernateSolving java.net.SocketException: Protocol family unavailable on a Java + Docker + WildFlyhttps://www.sipmann.com/en/socketException-protocol-family-unavailable-java-docker-wildfly.html<p>On the last days I've been playing with <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> and I decided to deploy a simple app with Docker. Should work fine, at least that was what I thought. Built a container with the following Dockerfile and instead of a working web app, all that I got was the …</p>Maurício Camargo SipmannSun, 04 Mar 2018 17:40:00 -0300tag:www.sipmann.com,2018-03-04:/en/socketException-protocol-family-unavailable-java-docker-wildfly.htmlJavaJavaWildFlyDockerjava.net.SocketExceptionProtocol family unavailableChange display settings on linux with Disperhttps://www.sipmann.com/en/linux-external-display-with-disper.html<p>From time to time, I change the Linux distro on my laptop or just do a fresh install on it. And once in a while, have random problems with external displays. It can be something really &quot;simple&quot; like don't detecting the external monitor or something crazy like the image below …</p>Maurício Camargo SipmannTue, 27 Feb 2018 12:40:00 -0300tag:www.sipmann.com,2018-02-27:/en/linux-external-display-with-disper.htmlLinuxLinuxexternal displaydisperJava - Files.readAllBytes throws OutOfMemoryhttps://www.sipmann.com/en/reading-files-java-readAllBytes-outofmemory.html<p>When you need to interact with files, there's the possibility to read all bytes from the file with <cite>Files.readAllBytes</cite>. But be aware of the kinds of files your application will deal with because the Java API files have a limit for the buffer that is defined as <cite>Integer.MAX_VALUE …</cite></p>Maurício Camargo SipmannSat, 17 Feb 2018 13:00:00 -0200tag:www.sipmann.com,2018-02-17:/en/reading-files-java-readAllBytes-outofmemory.htmlJavaJavaFiles.readAllBytesoutOfMemory \ No newline at end of file diff --git a/en/feeds/mauricio-camargo-sipmann.rss.xml.gz b/en/feeds/mauricio-camargo-sipmann.rss.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..3ec39e8d0f895481348e7e7a1674c191094538a0 GIT binary patch literal 6915 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 Jd#t>2000v|F?Ij| literal 0 HcmV?d00001 diff --git a/en/feeds/mysql.atom.xml b/en/feeds/mysql.atom.xml new file mode 100644 index 000000000..e6787797a --- /dev/null +++ b/en/feeds/mysql.atom.xml @@ -0,0 +1,14 @@ + +Sipmann - MySQLhttps://www.sipmann.com/en/2020-12-09T13:40:00-03:00Changing a MySQL user password across multiple application instances without downtime2020-12-09T13:40:00-03:002020-12-09T13:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-09:/en/mysql-dual-password-functionality.html<p>Do you need to change the password of a MySQL user that it's being used in an application, and can't allow a single downtime? Well, MySQL 8.0.14 came with a feature called <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, with it you can change the password keeping the previous password as a …</p><p>Do you need to change the password of a MySQL user that it's being used in an application, and can't allow a single downtime? Well, MySQL 8.0.14 came with a feature called <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, with it you can change the password keeping the previous password as a kind of backup. That way you still can log in using the old password or can start using the new one. With that, the password change workflow it's the following.</p> +<p>1) Change password keeping the old one;</p> +<p>2) Deploy the new config to your app/cluster;</p> +<p>3) Discard the old password.</p> +<p>To change the password and keep the old one, you have the following command.</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">IDENTIFIED</span> <span class="k">BY</span> <span class="s1">&#39;new_password&#39;</span> <span class="n">RETAIN</span> <span class="n">CURRENT</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>To discard the old one, run the following.</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">DISCARD</span> <span class="n">OLD</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>And you are done. Hope you find it as useful as I :)</p> \ No newline at end of file diff --git a/en/feeds/mysql.atom.xml.gz b/en/feeds/mysql.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..fc1254633b9220b95eca9e14a3b1b45164b80098 GIT binary patch literal 1044 zcmV+v1nc`BiwFP!000021MOGKj@vdA-RCO^2S_l0Ey{KZB)06SYfn)FlSgd_gRTmW zL`j4xQsu*{clny^`W5|?en~HB%dfbur|2S!EM`Dahxc*Lp-4x!zZV>>sM1V|L8Bdn z4MasO6DG1j!uQ9fu8Zm1H(Pza0N%B$A9 zQZ+8t`ZpdBs40N5w*fWf={^=qh8JpxFuad!nLz$z*aHIP$ zd(e{@BoV4&M^1{`@0m5{*egR3_2ZR1x;?BV5BlC_}Q|Nwdv;#@_XfZ)DfD zfRt-w)+Kdp0wKc}-1N&Andwg?T1$(B+Y&~i*ojJ!$?0B6nI21Qa$*oOFEx6kPJft8 zKvG1+p~y{mPEbt5OM?jKvVtHQ;9!MX>|69eId5)bzYfBn{R&nT)Y}5^DJ8}#3Ui!8 z4p%feF-1aG!Df3nOC&PJ@ETad5Y7>`V+ZC)Mhmd8r{?()ce>%ZfGPB$ZhLOaQYzz; zV&YymH)S#78H3KwvbChNbgcMEMORE(eXuJuwDs4g&pxUb!0j)u&oGLmFi_t&p}rQO zmP~k7A4$BlWq=lr(2A^mTx}TVK023~qt)sJ&1M$igLK?C&QYIRaI zkL%mk4C7_$RPjPOL@J$15GUBX=-JLE?He@StUTMPD-F{2&n@lTpb0IxT<;15N2V-u zeuIvca}AEU)$koX8=wmTn2rhLJf-1mt&8(Mc7Aj<9~Rv7oabakk2!!6VfTnH;wNl{ zVh$0(fh@~8{2A{ZpIp&;s7oU1F+O~NYr_$!j<)nsM)!-m+0hzw3KSmrasF>O-QLti zin9N_`=$>hyWP8c{-UzO#nP|+{vzfy0hh2%bE(bw6#vl3baMA@G5v9RH@S@7@bkkj zPiq>?_G_*GlggUiEk@IK*C59qXESKw8t8}7eE#r$Hn~V^>7mC(dh6js>)->gVKAjf z9qoYRWXE{3D=RMV^>6 +Sipmann - .NEThttps://www.sipmann.com/en/2020-10-28T19:00:00-03:00How to set columns on select using Entity Framework2020-10-28T19:00:00-03:002020-10-28T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-28:/en/select_specific_fields_with_efcore.html<p>So, you use Entity Framework Core, and you usually code your selects like the following, maybe you are getting too much data.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Running the query above, on my table, you'll get the following output, take a look …</p><p>So, you use Entity Framework Core, and you usually code your selects like the following, maybe you are getting too much data.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Running the query above, on my table, you'll get the following output, take a look at how many columns you are getting back from your database.</p> +<p><img alt="Screenshot with every single column" src="/images/ef_core_allcolumns.png"></p> +<p>In my case, I only care about the Title, PublishedData, and a small description. So to get back only these fields, we have a few options. In the first one, we'll set the fields and return them as a dynamic object, the second one, is to give the .NET a class to use. </p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + + <span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="k">new</span> <span class="p">{</span><span class="n">p</span><span class="p">.</span><span class="n">ProductID</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitPrice</span><span class="p">})</span> + <span class="c1">//.Select(p =&gt; new ProductDTO {p.ProductID, p.ProductName, p.UnitsInStock, p.UnitPrice})</span> + + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p><img alt="Screenshot with fewer columns and also fewer data size" src="/images/ef_core_less_columns.png"></p>Top Level Statement in C# 92020-07-29T19:00:00-03:002020-07-29T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-29:/en/top_level_statement_csharp_9.html<p>Hey folks, I'm coming along to tell you a few things about the new feature of C# 9. Every time you want to start a new project, you always have the same Main File, with the same structure. At the next version of C# (version 9), we'll have a new …</p><p>Hey folks, I'm coming along to tell you a few things about the new feature of C# 9. Every time you want to start a new project, you always have the same Main File, with the same structure. At the next version of C# (version 9), we'll have a new feature called <code>Top Level Statement</code>. With that, we'll be able to code our app without any namespace/class/public void static main structure. Take a look at the code below.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="s">&quot;Hello World!&quot;</span><span class="p">);</span> +</code></pre></div> + +<p>It looks pretty simple, but with this, you can play around with your code, and even code a simple/tiny Web API. To start playing with the new features, firstly download the <a href="https://dotnet.microsoft.com/download/dotnet/5.0">.net 5 SDK</a> and change your <code>.csproj</code> file to target the .net 5 and language preview like bellow.</p> +<div class="highlight"><pre><span></span><code><span class="nt">&lt;Project</span> <span class="na">Sdk=</span><span class="s">&quot;Microsoft.NET.Sdk&quot;</span><span class="nt">&gt;</span> + <span class="nt">&lt;PropertyGroup&gt;</span> + <span class="nt">&lt;OutputType&gt;</span>Exe<span class="nt">&lt;/OutputType&gt;</span> + <span class="nt">&lt;TargetFramework&gt;</span>net5.0<span class="nt">&lt;/TargetFramework&gt;</span> + <span class="nt">&lt;LangVersion&gt;</span>preview<span class="nt">&lt;/LangVersion&gt;</span> + <span class="nt">&lt;/PropertyGroup&gt;</span> +<span class="nt">&lt;/Project&gt;</span> +</code></pre></div> + +<p>And you're ready to play with the awesome features available in the preview. Let's code a way to get the image of the day from NASA API and print the Picture of the Day. No awesome code here, it's really a way to show how simple a simple call could be. After here, why not save the image in a file? Maybe send the file over telegram?</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Text.Json</span><span class="p">;</span> + +<span class="kt">var</span> <span class="n">API</span> <span class="p">=</span> <span class="s">&quot;https://api.nasa.gov/planetary/apod?hd=true&amp;api_key=DEMO_KEY&quot;</span><span class="p">;</span> +<span class="kt">var</span> <span class="n">cli</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + +<span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">cli</span><span class="p">.</span><span class="n">GetAsync</span><span class="p">(</span><span class="n">API</span><span class="p">);</span> +<span class="kt">var</span> <span class="n">data</span> <span class="p">=</span> <span class="n">JsonSerializer</span><span class="p">.</span><span class="n">Deserialize</span><span class="p">&lt;</span><span class="n">NasaApi</span><span class="p">&gt;(</span><span class="k">await</span> <span class="n">response</span><span class="p">.</span><span class="n">Content</span><span class="p">.</span><span class="n">ReadAsStringAsync</span><span class="p">());</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">Url</span><span class="p">);</span> +</code></pre></div> + +<p>That's it for today folks. Keep an eye open for the awesome features C# 9 will bring to us, there's plenty more features already available.</p> \ No newline at end of file diff --git a/en/feeds/net.atom.xml.gz b/en/feeds/net.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..c6451af921a853ec8b4d02b7afafa12c2b91887a GIT binary patch literal 2301 zcmV`nwdAt9ODSw|z&%a>^(pR6?n!QDNy@S;Ta>NKxvhgJ5Xs@Uv$L}^-^?oQqtCH~ zDc44*q|h82hoQHs-iRm;VYtsYYpUr08>>E$%vA@@9 zz44E&iW}Xw6;|?YPoyzR64(Xr;;i5Hi@R+pk_kkbj|vo1!k9wZ3smg$#BYG+veRJF za-A^C5!I(RYrRjJ8b9IIW2lgaI+t*U%h5HG2)p-a(Dw0pJ4-_xJ?!qa_FB8ITf2MT z_FwNGv|9LgxAhJF+x9Dww#kO&9R2IBJh3{jO!7|6z$!4@LZD<8Ck9l4my!n-GJ^(( zvjjzRc&k~=XG%{tv|E8SFewkjNCbnC;4(CWnXu7-j{>E+7umTzR+u-x)^flJ0yTjpVJVU^DRW%SkkbuaE~Wt~ zCLC3awAH-&YEqU|-~Gi4(ri(vLYovYQ>Jgc0?TrV6HB!UGo04_vZ<5p)B(I)1-JwF zXEmsIYht%CuOf~HxlgXZdRYT2tv6E^r-#c{hdPK4pXJ{YVa<8cvnrU>QL>(nv6F4p z(DBtam+X@cx&BN3yI-`@-7heTd}$N+)dyj09SbiF>#i2VhrbYSd<;xZYG)oczt57y z#WM_gKV}@GD;ugQ21`tFF@{<;l-vc@7gAF2yBQrpWj4)h6Xh^)GLTA5;6MNRF|j^}@8|IS9KN5!_jCAun&F#Sh_K>8#-7jXo#pU3WWfYRTE#{Dr64+F zhA#)ww9;I}W5BYd)93}7^Tb5T0&#rcQ_`7gD9Ovw8enwLY4{>$V{Uvt8c-Q9z>r^R zCac!TQqn*2X2dGRF&d~~#CrEQNOIFOjPnB5{E~{$j6qPTM3j-75Fc5MRXpvg1 ztUc%{D*niHZqg1BVK7YxIHkn2NOx4K<6F+N=m92C5B|_e?UDPp z=Lp3UjF1y2obXv4%%3+_?$N>a{ImvM^XX=R=96F*Peiv%ErL2m`)7^Z8N7C)zV8)# z>tzaamk0D`DA(z<{|SChy}3IzVSYhNNSBLdtFE1@%X&Oh+h=O~Ol^Ow)b?K9h)j#? zIX!jcO&V3+COV3o@+W==m6Y6=!QEuC?U$X3ZaZL>j}^6?xsE#x;#t&muWsKGI92w7 z+ZrOSrE#y^auei!;kWAnd#=Ym=kzya{qn@)#=%ElrSJh6x`duZ$(WiqB7u{yV1L5{ z4y#hMIwB2Bg)|6E#B@5?-|T3k_2=Ea{n|$xtEK;!M;mU$gIaU0aj5Z*=Txmtu*x`p z5#!RuRDCh2Tnh^q7V8ODo4L}%M)=e$lsc4GN1S1C!9k7O!g+A!N-itnqANCI)RI$x zN@|Nh^bV5rqV90ma>jB~lsK*qL1Vy2hK}%7P$A{^L30gEmdh8VAaY)Sgg`k?A;py*n_J=8)hruAyvs(hT{}nYn3W{ zmZnZ^vJ*7~XeVGq54i7QeX;QZm?{yHT`Yc&X~GMW>)-4x&_o^lkV`fDa;;Z~;!bPV zB& zE2Bo%rM~K|@~QvEYZZ%(7w`spr|+FPnDa!^JBU~^E>ATU-PsEag_;{yMcs50P@{B5$0h=-*U4|D$Yr3?aheW}?Fjcrj4pVi!Nyybs#75{M#AmMU ze{tM9raVVoj!0rChL7@Ytco`hxJ9RU^cDk6n^j6Qnw zdm|y+8P~%))q98O?f<4g9|^JdSA)Cu@jPs^V+wTbEu2s+XQ+xRuvB;nGt3*SsgJuB zgDO@ycw2=>QP@H5Tm*6VNyT8o^Umqn$4`UzXaCrUm91NrjcgJ~u?3sdJi#c2B=0+s zqAFh2HJrBV0~j+?r0slblV&p}>_aU5@Jiu3ZjVi#1Y7EeE^mwawZOxdfx3BHJ1wMO z(&Jh%DSqO5OGZBBrh=@2Sn+`xz!w-Jj#E(=bnPN;=!Ppdz{AaSQuJ@Og!VnMo@3Lq z$UVljUHsLn-*&lv$BuZ!>5rCQpt$cxjOd=QFj7dnl%tW +Sipmann - PowerShellhttps://www.sipmann.com/en/2020-12-21T13:30:00-03:00Monitoring MySQL restarts with PowerShell2020-12-21T13:30:00-03:002020-12-21T13:30:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-21:/en/monitoring-mysql-restarts-with-powershell.html<p>Hey folks, it's time for another PowerShell script. If you haven't seen the other ones, check the links below.</p> +<ul> +<li><a href="https://www.sipmann.com/en/monitoring-mysql-replication-with-powershell.html">Monitoring MySQL replication with PowerShell</a></li> +</ul> +<p>Well, this one it's a pretty simple script, but again, if your customer doesn't have a Zabbix server or doesn't allow you to setup one to …</p><p>Hey folks, it's time for another PowerShell script. If you haven't seen the other ones, check the links below.</p> +<ul> +<li><a href="https://www.sipmann.com/en/monitoring-mysql-replication-with-powershell.html">Monitoring MySQL replication with PowerShell</a></li> +</ul> +<p>Well, this one it's a pretty simple script, but again, if your customer doesn't have a Zabbix server or doesn't allow you to setup one to do the monitoring, a set of scripts can be handy. We start executing some basic query <code>SHOW GLOBAL STATUS LIKE 'Uptime'</code>, with that we'll get exactly what we're looking for.</p> +<p>If for some reason, the command fails (watch for the "global" variable called <code>$lastExitCode</code>), we send an e-mail telling you about that connection problem.</p> +<p>And then, we get to the part where we parse the value, this one is pretty similar to the parse we did on the first post about using PowerShell to monitor MySQL. But we basically look for the Value line, split it by space and then parse the second position to an integer. And then all we have to do is check if the uptime is lower than our threshold, if it is we send an e-mail.</p> +<div class="highlight"><pre><span></span><code><span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;maurio[at]sipmann.com&#39;</span> +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio[at]sipmann.com&#39;</span> +<span class="nv">$MysqlHost</span> <span class="p">=</span> <span class="s1">&#39;127.0.0.1&#39;</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;123&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-h</span> <span class="nv">$MysqlHost</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s2">&quot;SHOW GLOBAL STATUS LIKE &#39;Uptime&#39; \G&quot;</span><span class="p">)</span> + +<span class="cm">&lt;# Unable to execute the sql Command #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$lastExitCode</span> <span class="o">-eq</span> <span class="n">1</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Connection problem&#39;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;Connection problem on host ${MysqlHost}&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> + <span class="n">exit</span> +<span class="p">}</span> + +<span class="nv">$UpTime</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Value:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="cm">&lt;# If the uptime is lower then 20 minutes #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$UpTime</span> <span class="o">-lt</span> <span class="n">1200</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s2">&quot;MySQL Restarted&quot;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;MySQL host ${MysqlHost} restarted less than 20 minutes ago&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> +</code></pre></div> + +<p>This script (and the other ones I use) is available at my GitHub <a href="https://github.com/sipmann/PowerShellScripts">here</a>. Keep in mind that the ones on the GitHub repo, are a little different from here.</p>Monitoring MySQL Replication Status with PowerShell2020-10-14T19:00:00-03:002020-10-14T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-14:/en/monitoring-mysql-replication-with-powershell.html<p>I've been migration some bash scripts that I have to PowerShell, and it's time to migrate a script that monitors the replication of a MySQL database. The credit for the original script goes to <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. It's a simple script where I seek a few tags/fields that we get from …</p><p>I've been migration some bash scripts that I have to PowerShell, and it's time to migrate a script that monitors the replication of a MySQL database. The credit for the original script goes to <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. It's a simple script where I seek a few tags/fields that we get from <code>SHOW SLAVE STATUS\G</code> command, the fields are. <code>Slave_IO_Running</code>, <code>Slave_SQL_Running</code>, and <code>Seconds_Behind_Master</code>. I still need to figure out the proper way to store/read variables like usernames and passwords, if you have any tips, feel free to even make a pull request (<a href="https://github.com/sipmann/PowerShellScripts">here</a>) at the git where I'll store some scripts.</p> +<div class="highlight"><pre><span></span><code><span class="cm">&lt;#</span> +<span class="cm"> Variables definition</span> +<span class="cm">#&gt;</span> +<span class="nv">$MaxSeconds</span> <span class="p">=</span> <span class="n">120</span> <span class="c"># Max seconds behind master allowed</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;&#39;</span> + +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> +<span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s1">&#39;SHOW SLAVE STATUS \G&#39;</span><span class="p">)</span> + +<span class="c">#Debug data</span> +<span class="c">#$data = Get-Content &#39;c:\temp\sampleresult.txt&#39;</span> + +<span class="cm">&lt;# Parse the data #&gt;</span> +<span class="nv">$IORunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_IO_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SQLRunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_SQL_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$LastErrNo</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Last_Errno&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SecondsBh</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Seconds_Behind_Master&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="k">If</span> <span class="p">(</span><span class="nv">$IORunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SQLRunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SecondsBh</span> <span class="o">-gt</span> <span class="nv">$MaxSeconds</span><span class="p">)</span> <span class="p">{</span> + <span class="nv">$MailBody</span> <span class="p">=</span> <span class="s1">&#39;&lt;h1&gt;Problema na replicação&lt;/h1&gt;&lt;br&gt;&#39;</span> + + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; IO Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$IORunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; SQL Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SQLRunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39;Seconds Behind: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SecondsBh</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; Last Err No: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$LastErrNo</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + + <span class="cm">&lt;# Send e-mail, maybe some telegram message here too #&gt;</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Problemas na replicação&#39;</span> <span class="n">-bodyAsHtml</span> <span class="nv">$MailBody</span> <span class="n">-Credential</span> <span class="p">(</span><span class="nb">Get-Credential</span><span class="p">)</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> <span class="k">Else</span> <span class="p">{</span> + <span class="nb">Write-Host</span> <span class="s2">&quot;Up and running&quot;</span> +<span class="p">}</span> +</code></pre></div>The power of PowerShell2020-09-21T19:00:00-03:002020-09-21T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-09-21:/en/the-power-of-powershell.html<p>As a long time Linux user, I've automated a few things with bash scripts and stayed away from PowerShell... I've moved to a Windows environment a few years ago and still, haven gave a shot to PS. But why not? I've made a few scripts to automate some tasks at …</p><p>As a long time Linux user, I've automated a few things with bash scripts and stayed away from PowerShell... I've moved to a Windows environment a few years ago and still, haven gave a shot to PS. But why not? I've made a few scripts to automate some tasks at a Protheus server.</p> +<p>I found the PS scripts being easy to read and understand. Bellow, we have a script to remove files filtering their extension (or no extension at all like the following script). </p> +<div class="highlight"><pre><span></span><code><span class="nb">Get-ChildItem</span> <span class="s2">&quot;C:\TOTVS\protheus_data\system&quot;</span> <span class="o">-File</span> <span class="n">-Filter</span> <span class="p">*.</span> <span class="p">|</span> <span class="nb">Move-Item</span> <span class="n">-Force</span> <span class="n">-Destination</span> <span class="p">{</span> + <span class="cm">&lt;# Diretory where the files will be moved. You can use Date formats to help name it #&gt;</span> + <span class="cm">&lt;# LastWriteTime proprtie from the current file #&gt;</span> + <span class="nv">$dir</span> <span class="p">=</span> <span class="s2">&quot;C:\bad_files\{0:yyyy\\MM\\dd}&quot;</span> <span class="o">-f</span> <span class="nv">$_</span><span class="p">.</span><span class="n">LastWriteTime</span> + <span class="nv">$null</span> <span class="p">=</span> <span class="n">mkdir</span> <span class="nv">$dir</span> <span class="n">-Force</span> + <span class="s2">&quot;$dir\</span><span class="p">$(</span><span class="nv">$_</span><span class="p">.</span><span class="n">Name</span><span class="p">)</span><span class="s2">&quot;</span> +<span class="p">}</span> +</code></pre></div> + +<p>Have you ever been in the need to remove files based on other file content? Bello a script where I read a file that has the names of files that I want to remove. </p> +<div class="highlight"><pre><span></span><code><span class="k">foreach</span><span class="p">(</span><span class="nv">$line</span> <span class="k">in</span> <span class="nb">Get-Content</span> <span class="p">.\</span><span class="n">Desktop</span><span class="p">\</span><span class="n">bad_files</span><span class="p">.</span><span class="n">txt</span><span class="p">)</span> <span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="nb">Test-Path</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">))</span> <span class="p">{</span> + <span class="nb">Remove-Item</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">)</span> + <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> + <span class="nb">echo </span><span class="nv">$line</span> <span class="p">+</span> <span class="s1">&#39; - File not found&#39;</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>And a bonus script to stop/start services (if you handle some Protheus Server, you know why I do that).</p> +<div class="highlight"><pre><span></span><code><span class="nv">$servicesNames</span> <span class="p">=</span> <span class="s1">&#39;app_main&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker1&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker2&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker3&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker4&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker5&#39;</span> + +<span class="nb">Write-host</span> <span class="s2">&quot;Stoping Services&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Stopping: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nv">$SrvPID</span> <span class="p">=</span> <span class="p">(</span><span class="nb">get-wmiobject</span> <span class="n">win32_service</span> <span class="p">|</span> <span class="nb">where </span><span class="p">{</span> <span class="nv">$_</span><span class="p">.</span><span class="n">name</span> <span class="o">-eq</span> <span class="nv">$srv</span><span class="p">}).</span><span class="n">processID</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PID: &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> + + <span class="cm">&lt;# Force if the proccess is stucked #&gt;</span> + <span class="nb">Stop-Process</span> <span class="nv">$SrvPID</span> <span class="n">-Force</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PDI &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> <span class="p">+</span> <span class="s2">&quot; stopped&quot;</span> +<span class="p">}</span> + + +<span class="nb">Write-host</span> <span class="s2">&quot;Starting Services&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Starting: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nb">Start-Service</span> <span class="nv">$srv</span> +<span class="p">}</span> +</code></pre></div> + +<p>Do you have any automated script? Share with us :)</p> \ No newline at end of file diff --git a/en/feeds/powershell.atom.xml.gz b/en/feeds/powershell.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..f6c281a5f934ebf6cd8b4f5739f77e5920f5385f GIT binary patch literal 3925 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 literal 0 HcmV?d00001 diff --git a/en/feeds/random.atom.xml b/en/feeds/random.atom.xml new file mode 100644 index 000000000..19f08f5e4 --- /dev/null +++ b/en/feeds/random.atom.xml @@ -0,0 +1,3 @@ + +Sipmann - Randomhttps://www.sipmann.com/en/2018-03-24T00:40:00-03:00Now posting on Grepora2018-03-24T00:40:00-03:002018-03-24T00:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-24:/en/now_posting_on_grepora.html<p>A few weeks ago I started posting at <a class="reference external" href="https://grepora.com/blog/">Grepora</a> blog. If you like or are looking for some Oracle related stuff, Grepora it's a good place to go and spend a time reading :). From time to time I'll be posting there, it doesn't mean that this blog will be closed …</p><p>A few weeks ago I started posting at <a class="reference external" href="https://grepora.com/blog/">Grepora</a> blog. If you like or are looking for some Oracle related stuff, Grepora it's a good place to go and spend a time reading :). From time to time I'll be posting there, it doesn't mean that this blog will be closed or anything like that, but probably this one will be more focused on Front-end stuff, a few tricks with linux and a lil less with Java.</p> + \ No newline at end of file diff --git a/en/feeds/random.atom.xml.gz b/en/feeds/random.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..7c74b82c46d0af15a61b60ff13c4e446d5b46afb GIT binary patch literal 677 zcmV;W0$TkaiwFP!000021MO7JZqzUkzV|6cIkZCBjnfvSYMV_}A%ThnNWi^vl1XB% zE3u6Zaf8V!jmvgvbzGRLNA=SZJH5JZHQb?fip)AXjgtt_6jUlx zucO{q%ZunLJ4!3W5;)bkb<}v@t%MkcAs)_Svb8u%k{9CIQyXQeS6*ZGQFW~}2A1$a znv&X7OzWvuW&@4IYQk|dkel-3f?9z_L|{>`BdI-FBRw*%2$g?TAGkVU$9-eTtYRiU zBRbU80Zf(IBP3G6@wD$sCQxQ)$?3&1IbWVV|CA)F=gBHb_?Mrl*rlYd&u5w9@QKFT z?ar5XG(bnrv%NqDUR&(Q$|t&GXt-tU}q)FIcmyw4W=w!`2X zyO14gf7u<^{_+|s9AH4)IFQWc2Ar3cS?}8*J%nrtg_e%To83ptX8-~3M;F=DpIfq{ z5ZaMzsznrbntK_rgbWK1VlmuQu%#Zf+8~exX%RHhCTv~tzoQo6y_JQ=(7RwLQ|zm1 zv6~K1{)EXxO~kCVWM-cD4|u}Cb;wT%UbUfKhJy>MXED68)K06MJic#Ew1yn_!hOR! z7mN-ip))5QT9k&D*%99;H}Z!;O;v>^$JD-m{xT{Y%?)EddY`2Q8PAjczX|`M2|uG7-%LV`d(O*vx literal 0 HcmV?d00001 diff --git a/en/feeds/sql-server.atom.xml b/en/feeds/sql-server.atom.xml new file mode 100644 index 000000000..f5ccd3794 --- /dev/null +++ b/en/feeds/sql-server.atom.xml @@ -0,0 +1,184 @@ + +Sipmann - SQL Serverhttps://www.sipmann.com/en/2020-11-14T07:00:00-03:00Blocking a user on SQL Server based on a schedule2020-11-14T07:00:00-03:002020-11-14T07:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-11-14:/en/blocking-user-on-sql-server-based-on-schedule.html<p>Ok, some time ago, I've posted about how you can set limits to connections on SQL Server using the <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. But what if you can't use it? You always can block logins using a login trigger, but I don't like the idea of having selects running on every login …</p><p>Ok, some time ago, I've posted about how you can set limits to connections on SQL Server using the <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. But what if you can't use it? You always can block logins using a login trigger, but I don't like the idea of having selects running on every login. So I came across with a solution using a stored procedure, a table and the Agent.</p> +<p>The main idea is, store the time that a user must be blocked and using the Agent, disable or enable the user. Bellow you can see the table (the table is in Portuguese, but I have a few comment blocks to help you).</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">Id</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Startint block time */</span><span class="w"></span> +<span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Ending block time */</span><span class="w"></span> +<span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="k">DEFAULT</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="cm">/* 0 = unblocked, 1 = blocked */</span><span class="w"></span> +<span class="w"> </span><span class="k">PRIMARY</span><span class="w"> </span><span class="k">KEY</span><span class="w"> </span><span class="p">(</span><span class="n">Id</span><span class="p">)</span><span class="w"></span> +<span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="cm">/* Don&#39;t block the SA user, precautions, you know */</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_users</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">LoginName</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;sa&#39;</span><span class="p">));</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_hora_final_maior</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="n">HrInicio</span><span class="p">);</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_status_bloqueio</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">Bloqueado</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">));</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="k">SEQUENCE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">seq_HorariosBloqueio</span><span class="w"> </span><span class="k">START</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">INCREMENT</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>After creating the table, let's check the procedure that will handle the enabling/disabling the users. Be aware that on the procedure, I've set the database name where the table was stored, you can change it replacing the <code>DBATOOLS</code> text to the database name where you created the table.</p> +<div class="highlight"><pre><span></span><code><span class="k">IF</span><span class="w"> </span><span class="nf">OBJECT_ID</span><span class="p">(</span><span class="s1">&#39;dbo.sp_ValidarLogin&#39;</span><span class="p">)</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="k">NULL</span><span class="w"></span> +<span class="w"> </span><span class="k">EXEC</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;CREATE PROCEDURE dbo.sp_ValidarLogin AS RETURN 0;&#39;</span><span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="k">ALTER</span><span class="w"> </span><span class="k">PROC</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">sp_ValidarLogin</span><span class="w"></span> +<span class="k">AS</span><span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">);</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nf">CAST</span><span class="p">(</span><span class="nf">GETDATE</span><span class="p">()</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="cm">/* Block the ones that aren&#39;t blocked already and maches the time */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">&#39; DISABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Bloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> + + +<span class="w"> </span><span class="cm">/* Enable up who was blocked */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="s1">&#39; ENABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Unbloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="k">END</span><span class="p">;</span><span class="w"></span> +</code></pre></div> + +<p>Ok, so now all you have to do, is schedule a job to run that stored procedure from minute to minute. Again, the main idea is tell the procedure when a user must be blocked and when it'll be unblocked. </p> +<div class="highlight"><pre><span></span><code><span class="err"> -- Will block the user protheus from 10 AM till 15 PM</span> +<span class="err"> INSERT INTO dbo.HorariosBloqueio (Id, LoginName, HrInicio, HrTermino) VALUES (NEXT VALUE FOR seq_HorariosBloqueio, &#39;protheus&#39;, &#39;10:00:00&#39;, &#39;15:00:00&#39;);</span> +</code></pre></div>Removing a user from SQL Server database who owns a schema2019-09-06T07:00:00-03:002020-10-21T18:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-09-06:/en/removing-user-from-sql-server-database.html<p>Your customer urge you to drop a user from the MsSQL Server database, but you stuck with the following related error:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>That means that the user owns one or more shcemas of your database. If …</p><p>Your customer urge you to drop a user from the MsSQL Server database, but you stuck with the following related error:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>That means that the user owns one or more shcemas of your database. If you don't have access to the SSMS to see which schema or objects the user owns, the following SQL should do the job.</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">schemas</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">principal_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="p">,</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">xtype</span><span class="w"> </span><span class="n">Tipo</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">sysobjects</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">uid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> +</code></pre></div> + +<p>Once you have the objects/schemas owned by the user, you can change them with the following SQL (schema change sample):</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datareader</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"> </span><span class="c1">-- new owner username</span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datawriter</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>Then you're ready to drop the user <code>DROP USER [username]</code></p> +<h2>How to list all the schemas and it's owners?</h2> +<p>Here's a script to list schemas and it's owners.</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +<span class="k">SELECT</span><span class="w"></span> +<span class="w"> </span><span class="nf">schema_name</span><span class="p">(</span><span class="nf">schema_id</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">schemaname</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="nf">user_name</span><span class="p">(</span><span class="n">schm</span><span class="p">.</span><span class="n">principal_id</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">username</span><span class="p">,</span><span class="w"> </span><span class="o">*</span><span class="w"></span> +<span class="k">FROM</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">schemas</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">schm</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div>Limiting Connection Resources on SQL Server2019-08-12T12:00:00-03:002019-08-12T12:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-08-12:/en/limiting-connection-resources-sql-server.html<p>Have you ever suffered from a slow SQLServer database? Someone love to run that heavy query in the database? Resource Governor to the rescue. You can set a few rules on how users (connections actually) will use the server/database resources based on a few things.</p> +<p>First things first, if …</p><p>Have you ever suffered from a slow SQLServer database? Someone love to run that heavy query in the database? Resource Governor to the rescue. You can set a few rules on how users (connections actually) will use the server/database resources based on a few things.</p> +<p>First things first, if you don't have DAC enabled, enable it now. Dealing with resource governor can lock you out of the database and leave you without action (almost... you can start the server with -c -m -f).</p> +<p>Now to understand how Resource Governor works, we have a few keywords <code>resource pool</code>, <code>workload group</code> e <code>Classifier Function</code>.</p> +<p><img alt="Pool Sample" src="/images/sql-pool.png"></p> +<h2>Resource Pool</h2> +<p>First, we have the Resource Pool, with is the bigger resource group that we have the ability to manage. With it, we can set a few things like: <code>MIN_CPU_PERCENT</code>, <code>MAX_CPU_PERCENT</code>, <code>MIN_MEMORY_PERCENT</code>, <code>MAX_MEMORY_PERCENT</code>, <code>MIN_IOPS_PER_VOLUME</code>, and <code>MAX_IOPS_PER_VOLUME</code>.</p> +<p>Be aware that the <code>MAX_CPU_PERCENT</code> will just "works" when there is another connection with a higher priority, otherwise it will use what is available. Let's create a pool.</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">POOL</span><span class="w"> </span><span class="o">[</span><span class="n">SpreadSheet</span><span class="o">]</span><span class="w"></span> +<span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">MIN_CPU_PERCENT</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">MAX_CPU_PERCENT</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">MIN_MEMORY_PERCENT</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">MAX_MEMORY_PERCENT</span><span class="o">=</span><span class="mi">20</span><span class="w"></span> +<span class="p">);</span><span class="w"></span> +</code></pre></div> + +<p>## Workload Group</p> +<p>Then we have a workload group that "works" inside a pool, so you can have another granularity on how you can split your resources. Again, we have a few options: <code>IMPORTANCE</code>, <code>REQUEST_MAX_CPU_TIME_SEC</code>, <code>REQUEST_MAX_MEMORY_GRANT_PERCENT</code>, <code>GROUP_MAX_REQUESTS</code>.</p> +<p>The <code>IMPORTANCE</code> set guesses what... the importance of that workload inside the pool, you can set LOW, MEDIUM, HIGH. GROUP_MAX_REQUESTS sets how many requests can run at the same time inside that workload (0 will set as NO LIMIT)</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="n">WORKLOAD</span><span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="o">[</span><span class="n">DepartmentA</span><span class="o">]</span><span class="w"> </span> +<span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">GROUP_MAX_REQUESTS</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">IMPORTANCE</span><span class="o">=</span><span class="n">LOW</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">REQUEST_MAX_CPU_TIME_SEC</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="c1">-- Time running/using CPU</span> +<span class="w"> </span><span class="n">REQUEST_MAX_MEMORY_GRANT_PERCENT</span><span class="o">=</span><span class="mi">15</span><span class="w"></span> +<span class="p">)</span><span class="w"> </span><span class="k">USING</span><span class="w"> </span><span class="o">[</span><span class="n">SpreadSheet</span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="c1">-- pool name here</span> +</code></pre></div> + +<h2>Classifier Function</h2> +<p>This is where everything begins... This is the entry point where you should set the group name. It's a function that will run for every new connection so be aware that if your function runs lots of queries or some heavy stuff... that time will be added to the connection handshake. If the function returns NULL or a group name that doesn't exist, the 'default' group will be used... Yes, there is a default workload group where everything runs where there's no classifier.</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="n">fnClassWorkloadGovernor</span><span class="p">()</span><span class="w"> </span> +<span class="k">RETURNS</span><span class="w"> </span><span class="n">SYSNAME</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="n">SCHEMABINDING</span><span class="w"> </span> +<span class="k">AS</span><span class="w"> </span> +<span class="k">BEGIN</span><span class="w"> </span> +<span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="nf">APP_NAME</span><span class="p">()</span><span class="w"> </span><span class="ow">LIKE</span><span class="w"> </span><span class="s1">&#39;%Excel%&#39;</span><span class="w"></span> +<span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="s1">&#39;DepartmentA&#39;</span><span class="w"></span> + +<span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="nf">HOST_NAME</span><span class="p">()</span><span class="w"> </span><span class="ow">LIKE</span><span class="w"> </span><span class="s1">&#39;%THAT_MACHINE_OR_APP_SERVER%&#39;</span><span class="w"></span> +<span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="s1">&#39;LowPriority&#39;</span><span class="w"></span> + +<span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="k">NULL</span><span class="w"></span> +<span class="k">END</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="n">CLASSIFIER_FUNCTION</span><span class="o">=</span><span class="n">dbo</span><span class="p">.</span><span class="n">fnClassWorkloadGovernor</span><span class="p">);</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">RECONFIGURE</span><span class="p">;</span><span class="w"></span> +</code></pre></div> + +<p>There you go... now you have a fully working resource governor, but look out that If you want to delete that classifier function, first you have to remove it from the resource governor (look the SCHEMABINDING at the create up there).</p> +<p>To disable Resource Governor</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="n">CLASSIFIER_FUNCTION</span><span class="o">=</span><span class="k">null</span><span class="p">)</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">RECONFIGURE</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="n">DISABLE</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> \ No newline at end of file diff --git a/en/feeds/sql-server.atom.xml.gz b/en/feeds/sql-server.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..1101825fc84ef31feb24ee7be83d174d0442b3ed GIT binary patch literal 5032 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 literal 0 HcmV?d00001 diff --git a/en/feeds/tools.atom.xml b/en/feeds/tools.atom.xml new file mode 100644 index 000000000..634a2bbee --- /dev/null +++ b/en/feeds/tools.atom.xml @@ -0,0 +1,10 @@ + +Sipmann - Toolshttps://www.sipmann.com/en/2020-12-02T14:00:00-03:00Apache Nifi JSON to SQL Replacing underscore2020-12-02T14:00:00-03:002020-12-02T14:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-02:/en/apache-nifi-json-to-sql-replacing-underscore.html<p>Recently I was doing some ETL with Apache NiFi. But after a few minutes of drawing my flow, I saw that the component ConvertJSONToSQL was replacing the underscore ('_') from the field name in the where condition (I was preparing an Update SQL). That was weird because, at the set …</p><p>Recently I was doing some ETL with Apache NiFi. But after a few minutes of drawing my flow, I saw that the component ConvertJSONToSQL was replacing the underscore ('_') from the field name in the where condition (I was preparing an Update SQL). That was weird because, at the set statement, the field name was kept intact. After some research, I found that the property (see bellow) <code>Translate Field Names</code> was responsible for that weird replacement.</p> +<p><img alt="Apache NiFi JSONToSQL config" src="/images/apache_nifi_jsontosql.png"></p> +<p>Before setting it to <strong>FALSE</strong>, be aware that the properties on your JSON data must match exactly the name of your fields.</p>Using git hooks to easy your life2019-07-30T20:00:00-03:002019-07-30T20:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-07-30:/en/using_git_hooks_easy_your_life.html<p>Hey folks, it's been a time since my last post. In the meantime, I moved to another state, changed job, and started learning new kinds of stuff. Today I would like to share one thing that I usually do with my small git projects. Git has many cool features, git …</p><p>Hey folks, it's been a time since my last post. In the meantime, I moved to another state, changed job, and started learning new kinds of stuff. Today I would like to share one thing that I usually do with my small git projects. Git has many cool features, git hooks were one of them. I'll talk about the pre-commit hook today.</p> +<p>Let's say that, for some reason, you don't have a CI tool/server running after every commit and you want to enforce that every developer runs the tests before every commit? Git pre-commit to the rescue. You can code the hooks with shell, ruby, python, and I could be wrong, but even PHP would work. pre-commit is a client-side hook (we have server side too) and he's located inside the <cite>.git/hooks</cite> folder. Let's jump to the code... Create a file called 'pre-commit' inside that folder with the following code.</p> +<div class="highlight"><pre><span></span><span class="ch">#!/bin/bash</span> +npm <span class="nb">test</span> <span class="c1"># assuming you&#39;re using it inside a nodeJS project</span> +</pre></div> +<p>Don't forget to make the script executable!! Now break your test and try to commit. That's easy but can save you from breaking the tests at the main CI/Travis/Codeship/etc and being notified by email :). Why not even validate the lint of your project or check if the coverage doesn't fall? Does your team/company have a patter for commit messages? No problem, there is a hook called <cite>commit-msg</cite> that you can use to validate your message.</p> + \ No newline at end of file diff --git a/en/feeds/tools.atom.xml.gz b/en/feeds/tools.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..996f872f090df69b943726ed68d02d2cf111a81f GIT binary patch literal 1738 zcmV;*1~vH~iwFP!000021MOJbZrnByea}}+Hb9&JyVBZe(Z*S?kvd7^z;)BuLD46J zD^V+EDN+?FEBn^3>07^|f6_1M8B%+(lelq!z6J0_D-P#!X6DS;lf(Cwrc2p4WzE50 zHyIB|n#|_P%nt^wFGk-F4ySh}g_Jo#)VPB|>3zMQrd`)1-J`@d^K@@K{x*H;Z8exq zyz*L3&s1FrV`xO@)@nCNSu+dR!DwGFzq6qyuWCJ{Sn?Wn+YwP@D42 z&$`d9y417TM8Ky6ZubhE)Wt@Z%BMH@FiCMfY3m&J^XcArZ#>%F8;$qQcfZ*mkMT7c zKf=#Rx)PbVcGgFkZXTua&2ojx(^_Puq*GNWdUf{mDS1n0znst;S!FX@;%;V8G9C1)#1&(BY&Q@*5iR$r)uerP?30+^DZLUvRs(|YO1 z7L+%lb{&DiIc}WkPlrX6Q(L>@qfZ8Re;=B>YY4-9(uyzV-E@X5i(c|O* zqf;{tw`>zF#6Tj1!R=&I3U}7Y<_A>)5A6>ITWO_DCV*n0<^ys~b}&d)CFaugU3|e^ ze8FApEqXYq&3v%Zdfn0wvf$JKNzVyTo_Uo|oo}p}v&f65Cuh&Y-OalpfFaQdT)hsQ z;vzG&v~3fK8u=7dwa!x|d{&Ztk8Gfj`A$d_N-{`?+__}CH~N-9ZvgJOWu}o$bub8% zk!g4J{sW1vd2yrM^%B2PxcSJixq2b(ht`$Z_15u~IlwKgT{wnV3b%|=YgOEKV7098 z0{Sk3z6(}%!OAXJ*)2xY?&Hz;yV0ZZ`QG?5M${*z|F;pfvbg`5QGdozdMUwrRxjKT z#lGWE$I^fzy+R?vKqi?MwLrDj)`2vRBXw0$7?xqesO%*+IwVmTi?b$j(2%lHm^n_~ z*%>GboPzfaa3Kw@Fat2TNL0pn~T8ewgs1HwUDgZmE2okVOWn;i!M8+ z*0n;TcXAskAHKQ@Z$fdQ0pH2YyM%t^QUe76$|ab>YK#EkTQJfvNPf`-`ik7Tfjilo zfHR1rLa;kf<%M35nAvtkh;oEFuKH_m4*q_W?@uHH>cld5I}GEZpHl)fK4hkV=VphU zy9D#n(J}Fwo;ulpzNl$UfGJLViC64>FwJoC^-h>T?$SVe*7J6h%<)Szd9xlDe8;Nb zImKZ*Z0kD=5N(A9m3#pRWvxu;H<-#W$9WWngB~%)9E76v5JqOpA=OJXzlrHShB)UC zL#5*pgYnV^=M24m`MOVVXPZT`ZCN=0k!gjB9XXXpQ}m#d5u_fPa009z21}&`(AqL# z=U5ElA-oLpUHLG*6C^qfZpWeCzvkix=_eGk^{%bzRqz~ak|cD5e0fe!p)m9_lozb* zY+T;im<0GyUxX&?E|zxA#!;&@Ph_eE7dx%cSt6Vy{+ za^5w1Gz1w0{OWAghgW@xIBWt;fyCAJc@{bYr8<|P9xJhkS#?>XumH;UGHboSB6jyK zo!X9O$kQT@Uk)c!hUbZ4`znvCC$b#oG#4Y+wBxekUJ5&IP_kNsW54v9P$jVN9v!Dx z6fc!aj}V+IRh>$o1yeH_D9w5-Cn%8Fk|eHZ+Q-WKYq{i;Sp1hltFR8UR*Y}I-j#Z! z2tkE9lcjEm~<>ps=Clvg$=LYQX4D~v?;8<^RyX-%`|M~yi|IouX go(C?vQDW1!H;M(K`1leS{+}}a7ug8*iYO8Q0GIz+*#H0l literal 0 HcmV?d00001 diff --git a/en/flutter_with_firebase_auth_crashing.html b/en/flutter_with_firebase_auth_crashing.html new file mode 100644 index 000000000..f3dfa3d29 --- /dev/null +++ b/en/flutter_with_firebase_auth_crashing.html @@ -0,0 +1,434 @@ + + + + + + + + Flutter + firebase auth crashing - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ +
+
+
+

Flutter + firebase auth crashing

+
+ +
+
+ +
+

Hey Folks, recently I've started learning Flutter and right after a TODO List, I tried a Firebase integration. But as soon as I started setting the dependencies, my app stopped opening... just a crash. After a few logs digging, I've found the following log.

+
AndroidRuntime: FATAL EXCEPTION: main
+AndroidRuntime: Process: com.example.diadocasal, PID: 13672
+AndroidRuntime: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/util/ArrayMap;
+AndroidRuntime:     at com.google.android.gms.internal.measurement.zzca.<clinit>(Unknown Source:60)
+AndroidRuntime:     at com.google.android.gms.internal.measurement.zzcm.zzr(Unknown Source:7)
+AndroidRuntime:     at com.google.android.gms.measurement.internal.zzfj.<init>(Unknown Source:23)
+
+ +

Notice the "NoClassDefFound" of an ArrayMap. To solve that I did the following changes to the files:

+
//build.gradle file
+ ext.kotlin_version = '1.3.20'
+[...]
+ dependencies {
+        classpath 'com.android.tools.build:gradle:3.3.0' // gradle version
+
+ +
;gradle.properties file
+org.gradle.jvmargs=-Xmx1536M ;mine have just this line at first
+android.useAndroidX=true ; uses androidX instead of the default support library
+android.enableJetifier=true ; uses jetpack libraries
+android.enableR8=true ; the new code shriker
+
+ +

After that, voilà, app up and running.

+
+ + +
+
+

Translations:

+
    +
+
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/flutter_with_firebase_auth_crashing.html.gz b/en/flutter_with_firebase_auth_crashing.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..f0e35616f884f32233bb265307692c43618196f9 GIT binary patch literal 4664 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 + + + + + + + Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+ +
+
+
+

Apache Nifi JSON to SQL Replacing underscore

+
+ +
+
+ +
+

Recently I was doing some ETL with Apache NiFi. But after a few minutes of drawing my flow, I saw that the component ConvertJSONToSQL was replacing the underscore ('_') from the field name in the where condition (I was preparing an Update SQL). That was weird because, at the set …

+
+ + + +
+
+
+
+ +
+
+ + + + + + + +
+

So, you use Entity Framework Core, and you usually code your selects like the following, maybe you are getting too much data.

+
var products = Products
+    .Where(p => p.UnitsInStock > 0)
+    .OrderBy(p => p.ProductName)
+    .ToList()
+
+ +

Running the query above, on my table, you'll get the following output, take a look …

+
+ + + +
+
+
+
+
+ + + + + +
+

Zabbix Running on Low Memory Mode

+
+ +
+
+ +
+

Hey folks, another Zabbix post today. This one it's about increasing the Zabbix Server Cache. It's pretty common (if you have the default settings only) get a warning about your Zabbix value cache running on low memory mode at your dashboard or logs.

+

Zabbix Dashboard warning about the memory problem +Zabbix Dashboard cache graph 70% used

+

To solve, go back to your Zabbix …

+
+ + + +
+
+
+
+
+ + + + + + + +
+

I've been migration some bash scripts that I have to PowerShell, and it's time to migrate a script that monitors the replication of a MySQL database. The credit for the original script goes to Paweł. It's a simple script where I seek a few tags/fields that we get from …

+
+ + + +
+
+
+
+
+
+

Microsoft Against Covid

+
+ +
+
+ +
+

Has your job been affected by covid? Well, last week I've posted on Grepora about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by …

+
+ + + +
+
+
+
+
+ + + + + +
+

The power of PowerShell

+
+ +
+
+ +
+

As a long time Linux user, I've automated a few things with bash scripts and stayed away from PowerShell... I've moved to a Windows environment a few years ago and still, haven gave a shot to PS. But why not? I've made a few scripts to automate some tasks at …

+
+ + + +
+
+
+
+
+ + + + + +
+

Top Level Statement in C# 9

+
+ +
+
+ +
+

Hey folks, I'm coming along to tell you a few things about the new feature of C# 9. Every time you want to start a new project, you always have the same Main File, with the same structure. At the next version of C# (version 9), we'll have a new …

+
+ + + +
+
+
+
+
+ + 1 + 2 + 3 + » + +
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/index.html.gz b/en/index.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..c7b6e1e0438bdac5ee87ba12a8ff29ea2465543f GIT binary patch literal 5939 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 V@h)iffYYts{{h*Tefx5S001K~nc)Bc literal 0 HcmV?d00001 diff --git a/en/index2.html b/en/index2.html new file mode 100644 index 000000000..f6e02655f --- /dev/null +++ b/en/index2.html @@ -0,0 +1,582 @@ + + + + + + + + Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Zabbix poller processes more than 75%

+
+ +
+
+ +
+

Hey folks, this is the third post about tweaking the Zabbix configurations. All changes that I've suggested here were based on a Zabbix Server with 50+ hosts. Another thing that can happen to your server, it's the poller get overwhelmed by the amount of servers that need to be polled …

+
+ + + +
+
+
+
+
+ + + + + + + +
+

Sometimes you get your self in need to monitor a website's health or it's content for changes. Of course, there's plenty of options out there, but for the sake of curiosity, let's code our own to see what we can do. First things first. Everything you'll see here, you can …

+
+ + + +
+
+
+
+
+ + + + + + + +
+

Hey folks, if you want to achieve some certification this year, keep an eye open for vouchers. A few months ago, Oracle released a set of free courses with certifications. Now it's Microsoft time. Microsoft is updating they're certifications and we have a voucher of 80% discount using the coupon …

+
+ + + +
+
+
+
+
+
+

Zabbix ICMP pinger processes more than 75%

+
+ +
+
+ +
+

So your monitoring sytems have grown and your zabbix started loggin "Zabbix icmp pinger processes more than 75% busy" at the dashboard.

+

Dashboard do zabbix avisando sobre o erro

+

All you have to do is open your config file (/etc/zabbix/zabbix_server.conf) and find the a tag named StartPingers. It'll be commented by default. Uncomment it …

+
+ + + +
+
+
+
+
+
+

Zabbix Server Out of Memory

+
+ +
+
+ +
+

Do you have a crashing Zabbix Server and looking through the log /var/log/zabbix/zabbix_server.log you see the following out of memory message?

+
__mem_malloc: skipped 0 asked 24 skip_min 18446744073709551615 skip_max 0
+[file:dbconfig.c,line:94] __zbx_mem_realloc(): out of memory (requested 16 bytes)
+[file:dbconfig.c,line …

+
+ + + +
+
+
+
+
+
+

Flutter + firebase auth crashing

+
+ +
+
+ +
+

Hey Folks, recently I've started learning Flutter and right after a TODO List, I tried a Firebase integration. But as soon as I started setting the dependencies, my app stopped opening... just a crash. After a few logs digging, I've found the following log.

+
AndroidRuntime: FATAL EXCEPTION: main
+AndroidRuntime: Process …

+
+ + + +
+
+
+
+
+ + +
+

Your customer urge you to drop a user from the MsSQL Server database, but you stuck with the following related error:

+
Error: 15138 The database principal owns a schema in the database, and cannot be dropped.
+
+ +

That means that the user owns one or more shcemas of your database. If …

+
+ + + +
+
+
+
+
+ + + + + +
+

Limiting Connection Resources on SQL Server

+
+ +
+
+ +
+

Have you ever suffered from a slow SQLServer database? Someone love to run that heavy query in the database? Resource Governor to the rescue. You can set a few rules on how users (connections actually) will use the server/database resources based on a few things.

+

First things first, if …

+
+ + + +
+
+
+
+
+
+

Using git hooks to easy your life

+
+ +
+
+ +
+

Hey folks, it's been a time since my last post. In the meantime, I moved to another state, changed job, and started learning new kinds of stuff. Today I would like to share one thing that I usually do with my small git projects. Git has many cool features, git …

+
+ + + +
+
+
+
+ +
+
+ « + + 1 + 2 + 3 + » + +
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/index2.html.gz b/en/index2.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..642adebb4386bb45300344848cd1e9063d7c9ebd GIT binary patch literal 6177 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 + + + + + + + Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+ + + + + + + +
+

This is the first part of a microservices development series. The service will consist of the bellow architecture, where we will expose an image optimizer service that will forward the request to a RabbitMQ queue and answer with the bytecode of the optimized image. It shouldn't be a long series …

+
+ + + +
+
+
+
+
+
+

Connecting to a database through SSH

+
+ +
+
+ +
+

If someday, for some reason, you need to establish a connection with a database which is behind a firewall and you only have SSH access on that server (and you don't want to use a CLI) you can do an SSH tunnel. It's pretty simple, bellow has a sample of …

+
+ + + +
+
+
+
+
+
+

Now posting on Grepora

+
+ +
+
+ +
+

A few weeks ago I started posting at Grepora blog. If you like or are looking for some Oracle related stuff, Grepora it's a good place to go and spend a time reading :). From time to time I'll be posting there, it doesn't mean that this blog will be closed …

+
+ + + +
+
+
+
+
+ + + + + + + +
+

Since Parcel JS arrived, I've been using it a lot as an awesome alternative for WebPack. Webpack isn't bad but IMO it's too complex for the job and parcel do the same (at least the basic) with almost zero configuration. But if you need to create many apps (like a …

+
+ + + +
+
+
+
+
+ + + + + + + +
+

Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some "Could not open connection" at my …

+
+ + + +
+
+
+
+ +
+
+ + + + + +
+

Change display settings on linux with Disper

+
+ +
+
+ +
+

From time to time, I change the Linux distro on my laptop or just do a fresh install on it. And once in a while, have random problems with external displays. It can be something really "simple" like don't detecting the external monitor or something crazy like the image below …

+
+ + + +
+
+
+
+
+
+

Java - Files.readAllBytes throws OutOfMemory

+
+ +
+
+ +
+

When you need to interact with files, there's the possibility to read all bytes from the file with Files.readAllBytes. But be aware of the kinds of files your application will deal with because the Java API files have a limit for the buffer that is defined as Integer.MAX_VALUE …

+
+ + + +
+
+
+
+
+ « + + 1 + 2 + 3 + +
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/index3.html.gz b/en/index3.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..3fffebaebd741fcfd98803ce79e3e718095ab145 GIT binary patch literal 5532 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 literal 0 HcmV?d00001 diff --git a/en/limiting-connection-resources-sql-server.html b/en/limiting-connection-resources-sql-server.html new file mode 100644 index 000000000..ae88e23dc --- /dev/null +++ b/en/limiting-connection-resources-sql-server.html @@ -0,0 +1,533 @@ + + + + + + + + Limiting Connection Resources on SQL Server - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Limiting Connection Resources on SQL Server

+
+ +
+
+ +
+

Have you ever suffered from a slow SQLServer database? Someone love to run that heavy query in the database? Resource Governor to the rescue. You can set a few rules on how users (connections actually) will use the server/database resources based on a few things.

+

First things first, if you don't have DAC enabled, enable it now. Dealing with resource governor can lock you out of the database and leave you without action (almost... you can start the server with -c -m -f).

+

Now to understand how Resource Governor works, we have a few keywords resource pool, workload group e Classifier Function.

+

Pool Sample

+

Resource Pool

+

First, we have the Resource Pool, with is the bigger resource group that we have the ability to manage. With it, we can set a few things like: MIN_CPU_PERCENT, MAX_CPU_PERCENT, MIN_MEMORY_PERCENT, MAX_MEMORY_PERCENT, MIN_IOPS_PER_VOLUME, and MAX_IOPS_PER_VOLUME.

+

Be aware that the MAX_CPU_PERCENT will just "works" when there is another connection with a higher priority, otherwise it will use what is available. Let's create a pool.

+
CREATE RESOURCE POOL [SpreadSheet]
+WITH (
+    MIN_CPU_PERCENT=0,
+    MAX_CPU_PERCENT=20,
+    MIN_MEMORY_PERCENT=0,
+    MAX_MEMORY_PERCENT=20
+);
+
+ +

## Workload Group

+

Then we have a workload group that "works" inside a pool, so you can have another granularity on how you can split your resources. Again, we have a few options: IMPORTANCE, REQUEST_MAX_CPU_TIME_SEC, REQUEST_MAX_MEMORY_GRANT_PERCENT, GROUP_MAX_REQUESTS.

+

The IMPORTANCE set guesses what... the importance of that workload inside the pool, you can set LOW, MEDIUM, HIGH. GROUP_MAX_REQUESTS sets how many requests can run at the same time inside that workload (0 will set as NO LIMIT)

+
CREATE WORKLOAD GROUP [DepartmentA] 
+WITH (
+    GROUP_MAX_REQUESTS=2,
+    IMPORTANCE=LOW,
+    REQUEST_MAX_CPU_TIME_SEC=10, -- Time running/using CPU
+    REQUEST_MAX_MEMORY_GRANT_PERCENT=15
+) USING [SpreadSheet]; -- pool name here
+
+ +

Classifier Function

+

This is where everything begins... This is the entry point where you should set the group name. It's a function that will run for every new connection so be aware that if your function runs lots of queries or some heavy stuff... that time will be added to the connection handshake. If the function returns NULL or a group name that doesn't exist, the 'default' group will be used... Yes, there is a default workload group where everything runs where there's no classifier.

+
CREATE FUNCTION fnClassWorkloadGovernor() 
+RETURNS SYSNAME WITH SCHEMABINDING 
+AS 
+BEGIN 
+    IF APP_NAME() LIKE '%Excel%'
+        RETURN 'DepartmentA'
+
+    IF HOST_NAME() LIKE '%THAT_MACHINE_OR_APP_SERVER%'
+        RETURN 'LowPriority'
+
+    RETURN NULL
+END
+GO
+
+ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION=dbo.fnClassWorkloadGovernor);
+ALTER RESOURCE GOVERNOR RECONFIGURE;
+
+ +

There you go... now you have a fully working resource governor, but look out that If you want to delete that classifier function, first you have to remove it from the resource governor (look the SCHEMABINDING at the create up there).

+

To disable Resource Governor

+
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION=null)
+ALTER RESOURCE GOVERNOR RECONFIGURE
+
+ALTER RESOURCE GOVERNOR DISABLE
+GO
+

+
+ + +
+
+

Translations:

+
    +
+
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/limiting-connection-resources-sql-server.html.gz b/en/limiting-connection-resources-sql-server.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..a4d377bcf5478dd7f5aeeff31aa8b65e8d3b4692 GIT binary patch literal 5867 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 BN9h0n literal 0 HcmV?d00001 diff --git a/en/linux-external-display-with-disper.html b/en/linux-external-display-with-disper.html new file mode 100644 index 000000000..22e0990be --- /dev/null +++ b/en/linux-external-display-with-disper.html @@ -0,0 +1,421 @@ + + + + + + + + Change display settings on linux with Disper - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Change display settings on linux with Disper

+
+ +
+
+ +
+

From time to time, I change the Linux distro on my laptop or just do a fresh install on it. And once in a while, have random problems with external displays. It can be something really "simple" like don't detecting the external monitor or something crazy like the image below.

+Display bug +

As you can see at the image, the mint detected the display but mirrored it in a crazy way that works but doesn't at the same time. If you try anything and doesn't get working, or just wanna skip the whole job of configuring complexes text files, give a try to Disper. Download the latest version. +Extract it on any folder, and make install it (on the extracted folder).

+
make install
+
+

After that, you can start using it... There are a few options that will serve you well.

+
disper -e #extend your display
+
+
disper -c #clone your display
+
+
disper -s #only your external display
+
+

+
+ + +
+
+

Translations:

+
    +
+
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/linux-external-display-with-disper.html.gz b/en/linux-external-display-with-disper.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..ac06097ea834f0fdb5b4aa4466215aee95301448 GIT binary patch literal 4353 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 literal 0 HcmV?d00001 diff --git a/en/microservices_nodejs_express_rabbitmq_part_1.html b/en/microservices_nodejs_express_rabbitmq_part_1.html new file mode 100644 index 000000000..cd8b360c1 --- /dev/null +++ b/en/microservices_nodejs_express_rabbitmq_part_1.html @@ -0,0 +1,549 @@ + + + + + + + + Microservices with NodeJS, Express.js and RabbitMQ Part 1 - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+ + +
+

This is the first part of a microservices development series. The service will consist of the bellow architecture, where we will expose an image optimizer service that will forward the request to a RabbitMQ queue and answer with the bytecode of the optimized image. It shouldn't be a long series so let's see what we can do.

+Service architecture +

Let's get our environment working. First, we'll need to install the libraries that we'll use.

+

Create a dir and initialize the nodejs application inside it (npm init) and then let's install the deps.

+
    +
  • amqplib - AMQP lib to interact with rabbitmq
  • +
  • express - Do our basic rest API
  • +
  • express-fileupload - easy file upload parser
  • +
  • imagemin and imagemin-pngquant - our image compacter
  • +
+
npm install --save express amqplib express-fileupload imagemin imagemin-pngquant
+
+

Now let's write the entry points for our service, we'll have two basic entry points. The path / that will have a welcome message, the second path will be /upload and this is the one that will handle the image and produce a job for our workers.

+
const express = require('express');
+const fileUpload = require('express-fileupload');
+
+//Instantiate the app and set the fileupload parser to manage files
+const app = express();
+app.use(fileUpload());
+
+//Our index entry point
+app.get('/', (req, res) => res.send('Hello From ImageCompacter service'));
+
+//The path that will handle the image file and throw them to the queue
+app.post('/upload', (req, res) => {
+    //With express-fileupload we can grab the files like this
+    let img = req.files.image; //"image" is the name of the input
+
+    res.send('Not ready yet');
+});
+
+//Finally start the app with the given port number
+app.listen(4000, () => console.log('Example app listening on port 4000!'));
+
+

Let's check if it works, run the service with node.

+
node index.js
+Example app listening on port 4000!
+
+

Open the browser and check if it prints our hello message when accessing localhost:4000. Works? Greate. Now let's work with the image and see how we do it. To optimize our image, we'll use the library imagemin and imagemin-pngquant, it will be that simple for now, we'll work with rabbitmq latter.

+
const imagemin = require('imagemin');
+const imageminPngquant = require('imagemin-pngquant');
+//...
+
+//The path that will handle the image file and throw them to the queue
+app.post('/upload', (req, res) => {
+    let img = req.files.image; //"image" is the name of the input
+
+            imagemin.buffer(img.data, {
+        plugins: [imageminPngquant()]
+    })
+    .then(out => {
+        res.write(out,'binary');
+        res.end(null, 'binary');
+    });
+});
+
+    //...
+
+

Use Postman to test the request. To see if it will work, make a request to http://localhost:4000/upload with a formdata with a file. Select the "send and Download" instead of "Send" and you should have an image after that. Bellow an image of how your postman should be.

+Postman +

That's it for today, next week we'll change our code to use RabbitMQ.

+

+
+ + +
+
+

Translations:

+
    +
+
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/microservices_nodejs_express_rabbitmq_part_1.html.gz b/en/microservices_nodejs_express_rabbitmq_part_1.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..cfe72f91a1a43d47c4f9ca46cf64827750bd090f GIT binary patch literal 5849 zcmV;~7AEN*iwFP!000021MNL)ciT3WpW|PFsynqkHT87jM7GsBuQok-xUoB(IXO8# z5D7`JNrE9j%W5Y-X@AB3vAq`nDUu>(NpUjSJx!gMB!G+i!hPV?qi>$Rd2;@*(`RI& z0)Mb|gujSS!|`#0g^j@$d|}iZY!Uc#6fi}JJE5^;>bUXS`E%!CBVQEKfE_okIh#fz zRt@5cP_YoIPPwNh#~!=pE_3wD9^oNZocfM*sn3o(&2|CQM5)MO9}<3j-1w*S+lli; z1QAty=(8ML&W@QkW@$^smCpvRxEl+}V(d(kDOVHnT6pZ2vpw?cCW@Jq%}YsW=#jT{ zIOOWpujG`*igbuW&Uh5iFg$7*P+JSc1tMgM{{fhYFo(#0xq|!6n>bQD8Vc2PMbJuq ze(?0<;9n=d9?aSoFRuTo_M`Scenp<l03Ny!}jWwj8 zqJ=J!*w1xv$8=ToY31CfiJFKwPaI9+|M_p13-W{pG#(2wSD^)U_Ly{I9+kBDG#UC_ zPIx%hOn~n)3GgidBg8P3&B3M#W!%T%A%YGjphO(b~$k^-r1)X0g#@rQ(l zYOU7DN@CEgQ#fCscgYhM)@!H6W`$AQ(iLTCC}|qpkW8nqsRxNjmp=;vhQ_S*~V%MmpKb^a{lHOc@8j3c<5$Q&3p#qfn{d6 zr6w$3Emz9cwAX}RDUWi<=jueWaR3aGE$EwHGu>bT^df|m{1Nb1HpfDYeMTcLH4gyB z4-{}k4Oq=gD&z> zR{i5v_DD-m6uVL2i(L_G#p)A?4A@~+OW;JQt;c2LQ|NsNgX`+BP!>_o1H;`XkDB+R zn_?OIA`V@(;lED1T&n4k{14VAonE;Rgu|Q(OovGmII% z0^IPI1LLWp$~2}?S_3~6tGL1!ai4tK>-CBSL#WE2q!Zl`DSYmcZ(Y}|s^i4e$uL+W0QW08cO6A1_hwQ%mY|8`hcD`pX+3I%8%Yike8pV(ix*o7O4#AjmZM~#F?_;6$h2( zzVFa$%6$qUekI&{_nH&v+sFO^;JthIkd~1zrp`^DKpZ3v;p0d63qKJVXsw4@R-!{c zVYv#;Y0p7RPeHe05}B%cT=3A-S7;0rNN|JLt?TX^$R( zBJY++|2CMNagPmYTq@ARClk3%j>tDWz*Gu6xzs>iM;-jHw*JQ|HMBT`(PS*t zq1TQ!e6e&i&mc8Jo8KoMjjzgtApf)|oN-KN6~yF}DjieZQLo!OSW1+wI-Ni&w1k>3 z!qZ#OEnzXK>fIWIlmQ*L<8@fQXtV=qSr2m5GO7305&96~`c#68E3iHFvL3(Al`9eD zU0X==g~%oNg(5YQ!*M{tEbiyp=yt{USWFSmAYViU2E*#3}@D&S_ zqn2r3(VV7nOk*iUjls_%U`H)lVg|jH4>_sa9`7{-cIYvYVmWs|oqg@a z%GAsO#bTPyE7a70p-ucpM0UFAU`+j9u8tmGb8PTQTe$j;GkKIp<)kw>8V)jbzSEh8 zG>tfAaX@uMtOWUl$&!tmq7K7YhQB~=iT?Yy+Xl?}La=bgJ{)1%pJT0vsLK_MQV&um zEIV$@Cj!npoqqRzzuk7)J@^*_``?*I+WX`rin*_63~+KVU?sF#dAxFJT8M~Nm2otH zpYsWq1b!gzf=Dcu%1n2N5yUkG(GrhcLk<*S&_*x?V6sWhp_Q!wjQ4##tHPyjj}V8< zhrkJ9G#B;IRY}bD!0R#y_ouc6s0#D};vssF5)lF2FdX9yu$oY1>W)M_1tr&@WA-6o z&=cqm&Dk^^S+EeAfjhvwwQ?RZ)l03!jX|mxs1O9eCQPdfBs)_yRj5&#ni5GMmm`kuE!dU@m!>F7Q{6g%f z2$wJ7d8>2|%CM+BAq5byOEUsoT!U~`*1DD8l1Xk*XZZ8UABqJJv5z@a5FAcvO zN78E?35K+kF%=YK=q;cI{p&uAu>pa
EFGL12OMxlUC#WM(kfyoj_siwv%XR2Kj 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 + + + + + + + Microservices with NodeJS, Express.js and RabbitMQ Part 2 - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+ + +
+

If you haven't read the part 1 go ahead and read it... It can be useful :). Or if for some reason you want to start now, you can grab the project where we stopped here and get along. On this part, we'll implement the RabbitMQ queue and see how we can get the best of our app and server with that.

+

Before we began coding, let's understand why we are going to use RabbitMQ if what we have now works? If you check again, you'll see how long it takes to answer the request with the optimized image. It takes a few seconds, so imagine an online service with thousands of request to optimize images (like TinyPNG) how long is it gonna take to answer every request? How much of your server is it gonna take? With only one service running, probably the server will crash.

+

With a queue, we can schedule the requests so we can use the amount of memory and processor that our server has, without taking more than we can. It's better to take a few seconds to answer the request then throw some error to the user. Want more? With RabbitMQ we can see how the queue is doing and we can add more consumers (workers) to it and get things done quicker and distribute the job.

+

First of all, we need an up and running Rabbit server, for the sake of simplicity, I'll use a Docker container with it inside.

+
docker run -d --name rabbit -p 5672:5672 -p 8080:15672 rabbitmq:3-management
+
+

You can see that we're running the rabbitmq:3-management image, which provides us a web interface to see how things are going. After that, if you look at our code you'll see that all the job is made at the '/upload' route, and that's what we'll change.

+

First, we need to understand what we need from RabbitMQ. We need something that, we send an image to a queue and get an optimized image back from that. There is a name for that, is RPC (remote procedure call) and there are two ways of doing this with rabbit. Both the ways you can see on their tutorial page. We'll use the approach that uses a global channel whose id is randomly generated (you'll use the name 'amq.rabbitmq.reply-to' but the rabbit will do the job).

+

Let's start importing the library, defining a few variables and defining a init function that will establish a connection with the rabbit server and create our RPC queue. The RPC queue it's where we'll receive the answer from the consumer (our worker).

+
//import the library
+const amqplib = require('amqplib');
+
+//queue channel
+let channel = null;
+//queue name
+const QUEUE = 'optimizeimg';
+
+//...
+
+function init() {
+    return require('amqplib').connect('amqp://localhost')
+        .then(conn => conn.createChannel())
+        .then(ch => {
+            channel = ch;
+
+            //this queue is a "Direct reply-to" read more at the docs
+            //When some msg comes in, we "emit" a message to the proper "correlationId" listener
+            ch.consume('amq.rabbitmq.reply-to', msg => eventEmitter.emit(msg.properties.correlationId, msg.content), {noAck: true});
+        });
+}
+
+//Random id generator
+function randomid() {
+    return new Date().getTime().toString() + Math.random().toString() + Math.random().toString();
+}
+
+app.post('/upload', (req, res) => {
+    let img = req.files.image;
+
+    let id = randomid();
+
+    //Event listener that will fire when the proper randomid is provided
+    eventEmitter.once(id, msg => {
+        res.write(msg, 'binary');
+        res.end(null, 'binary');
+    });
+
+    //Checks if the queue exists, and create it if needed.
+    channel.assertQueue(QUEUE)
+        //Sent the buffered img to the queue with the ID and the responseQueue
+        .then(() => channel.sendToQueue(QUEUE, img.data, {correlationId:id, replyTo: 'amq.rabbitmq.reply-to'}));
+
+});
+
+//Finally start the app with the given port number
+//now we initialize the rabbitmq connection before start the server
+init()
+    .then(() => app.listen(4000, () => console.log('Example app listening on port 4000!')))
+    .catch(err=>console.error(err));
+
+

Ok, now we have our server code rewritten so let's see our worker code. Create a file named 'worker.js' and let's see how it's gonna be. It's really simple. You initialize a connection with RabbitMQ too, create a channel, check if the queue exists and start watching for incoming messages. When an image arrives, we do the job with it and send back to the "replyTo" queue the optimized image for the proper sender (correlationId). In the end, we do an acknowledge of the message so it get's out from the queue.

+
const imagemin = require('imagemin');
+const imageminPngquant = require('imagemin-pngquant');
+
+let channel = null;
+const QUEUE = 'imgqueue';
+
+require('amqplib').connect('amqp://localhost')
+.then(conn =>conn.createChannel())
+.then(ch => {
+    ch.assertQueue(QUEUE)
+    .then(() => {
+        //Watch incomming messages
+        ch.consume(QUEUE, msg => {
+            imagemin.buffer(msg.content, {
+                plugins: [imageminPngquant()]
+            })
+            .then(out => {
+                //Send back to the sender (replyTo) queue and give the correlationId back
+                //so we can emit the event.
+                ch.sendToQueue(msg.properties.replyTo, out, {
+                    correlationId: msg.properties.correlationId
+                });
+
+                //Acknowledge the job done with the message.
+                ch.ack(msg);
+            });
+        });
+    });
+});
+
+

The key points here are. Open just one connection to the hole server. You CAN create one channel for every request that you receive, but it can take some time if you have a really big cluster of RabbitMQ. It was a quick tutorial, but I hope that it was able to clear a few questions that you might have when working with rabbit and express.

+

+
+ + +
+
+

Translations:

+
    +
+
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/microservices_nodejs_express_rabbitmq_part_2.html.gz b/en/microservices_nodejs_express_rabbitmq_part_2.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..919994d9b6b0bcad2a623cbe106a1a44067369ae GIT binary patch literal 7063 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 + + + + + + + Microsoft Against Covid - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Microsoft Against Covid

+
+ +
+
+ +
+

Has your job been affected by covid? Well, last week I've posted on Grepora about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by covid pandemic.

+

To see more details about if you were eligible, access https://docs.microsoft.com/en-us/learn/certifications/skillingoffer.

+
+ + +
+
+

Translations:

+ +
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/microsoft-against-covid.html.gz b/en/microsoft-against-covid.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..6d4eda9d89d7ddc1cd722eb04c9c26fd807a5e96 GIT binary patch literal 4521 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 H%uWCRp|Pps literal 0 HcmV?d00001 diff --git a/en/monitoring-mysql-replication-with-powershell.html b/en/monitoring-mysql-replication-with-powershell.html new file mode 100644 index 000000000..40eb4366f --- /dev/null +++ b/en/monitoring-mysql-replication-with-powershell.html @@ -0,0 +1,576 @@ + + + + + + + + Monitoring MySQL Replication Status with PowerShell - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+ + +
+

I've been migration some bash scripts that I have to PowerShell, and it's time to migrate a script that monitors the replication of a MySQL database. The credit for the original script goes to Paweł. It's a simple script where I seek a few tags/fields that we get from SHOW SLAVE STATUS\G command, the fields are. Slave_IO_Running, Slave_SQL_Running, and Seconds_Behind_Master. I still need to figure out the proper way to store/read variables like usernames and passwords, if you have any tips, feel free to even make a pull request (here) at the git where I'll store some scripts.

+
<#
+   Variables definition
+#>
+$MaxSeconds = 120  # Max seconds behind master allowed
+$MysqlUser  = 'root'
+$MysqlPass  = ''
+
+$MailTo     = 'mauricio@sipmann.com'
+$MailFrom   = 'mauricio@sipmann.com'
+
+
+$data = $(mysql -u $MysqlUser -p"$MysqlPass" -e 'SHOW SLAVE STATUS \G')
+
+#Debug data
+#$data = Get-Content 'c:\temp\sampleresult.txt'
+
+<# Parse the data #>
+$IORunning   = (($data | Where-Object { $_ -match 'Slave_IO_Running:' }) -split '\s+')[2]
+$SQLRunning  = (($data | Where-Object { $_ -match 'Slave_SQL_Running:' }) -split '\s+')[2]
+$LastErrNo   = (($data | Where-Object { $_ -match 'Last_Errno' }) -split '\s+')[2]
+$SecondsBh   = [int](($data | Where-Object { $_ -match 'Seconds_Behind_Master' }) -split '\s+')[2]
+
+If ($IORunning -Eq 'No' -Or $SQLRunning -Eq 'No' -Or $SecondsBh -gt $MaxSeconds) {
+    $MailBody = '<h1>Problema na replicação</h1><br>'
+
+    $MailBody += '    IO Running: ' + ($IORunning)  + '<br>'
+    $MailBody += '   SQL Running: ' + ($SQLRunning) + '<br>'
+    $MailBody += 'Seconds Behind: ' + ($SecondsBh) + '<br>'
+    $MailBody += '   Last Err No: ' + ($LastErrNo) + '<br>'
+
+    <# Send e-mail, maybe some telegram message here too #>
+    Send-MailMessage -To $MailTo -From $MailFrom  -Subject 'Problemas na replicação' -bodyAsHtml $MailBody -Credential (Get-Credential) -SmtpServer 'smtp.office365.com' -Port 587 -UseSsl
+} Else {
+    Write-Host "Up and running"
+}
+

+
+ + +
+
+

Translations:

+ +
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/monitoring-mysql-replication-with-powershell.html.gz b/en/monitoring-mysql-replication-with-powershell.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..77ada72a605906d41e1d61e1e0276050c842e960 GIT binary patch literal 5611 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 F008*w+|B?1 literal 0 HcmV?d00001 diff --git a/en/monitoring-mysql-restarts-with-powershell.html b/en/monitoring-mysql-restarts-with-powershell.html new file mode 100644 index 000000000..e9464b501 --- /dev/null +++ b/en/monitoring-mysql-restarts-with-powershell.html @@ -0,0 +1,540 @@ + + + + + + + + Monitoring MySQL restarts with PowerShell - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Monitoring MySQL restarts with PowerShell

+
+ +
+
+ +
+

Hey folks, it's time for another PowerShell script. If you haven't seen the other ones, check the links below.

+ +

Well, this one it's a pretty simple script, but again, if your customer doesn't have a Zabbix server or doesn't allow you to setup one to do the monitoring, a set of scripts can be handy. We start executing some basic query SHOW GLOBAL STATUS LIKE 'Uptime', with that we'll get exactly what we're looking for.

+

If for some reason, the command fails (watch for the "global" variable called $lastExitCode), we send an e-mail telling you about that connection problem.

+

And then, we get to the part where we parse the value, this one is pretty similar to the parse we did on the first post about using PowerShell to monitor MySQL. But we basically look for the Value line, split it by space and then parse the second position to an integer. And then all we have to do is check if the uptime is lower than our threshold, if it is we send an e-mail.

+
$MailFrom = 'maurio[at]sipmann.com'
+$MailTo   = 'mauricio[at]sipmann.com'
+$MysqlHost = '127.0.0.1'
+$MysqlUser = 'root'
+$MysqlPass = '123'
+
+
+$data = $(mysql -h $MysqlHost -u $MysqlUser -p"$MysqlPass" -e "SHOW GLOBAL STATUS LIKE 'Uptime' \G")
+
+<# Unable to execute the sql Command #>
+if ($lastExitCode -eq 1) {
+    Send-MailMessage -To $MailTo -From $MailFrom  -Subject 'Connection problem' -bodyAsHtml "Connection problem on host ${MysqlHost}" -Credential Get-Credential -SmtpServer 'smtp.office365.com' -Port 587 -UseSsl
+    exit
+}
+
+$UpTime   = [int](($data | Where-Object { $_ -match 'Value:' }) -split '\s+')[2]
+
+<# If the uptime is lower then 20 minutes #>
+if ($UpTime -lt 1200) {
+    Send-MailMessage -To $MailTo -From $MailFrom -Subject "MySQL Restarted" -bodyAsHtml "MySQL host ${MysqlHost} restarted less than 20 minutes ago" -Credential Get-Credential -SmtpServer 'smtp.office365.com' -Port 587 -UseSsl
+}
+
+ +

This script (and the other ones I use) is available at my GitHub here. Keep in mind that the ones on the GitHub repo, are a little different from here.

+
+ + +
+
+

Translations:

+ +
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/monitoring-mysql-restarts-with-powershell.html.gz b/en/monitoring-mysql-restarts-with-powershell.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..a3f5d364b2b765b9b043133a9b89f4a03d861b45 GIT binary patch literal 5479 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 literal 0 HcmV?d00001 diff --git a/en/monitoring-website-heath-with-azure-functions.html b/en/monitoring-website-heath-with-azure-functions.html new file mode 100644 index 000000000..980b685d3 --- /dev/null +++ b/en/monitoring-website-heath-with-azure-functions.html @@ -0,0 +1,619 @@ + + + + + + + + Monitoring a Website heath with Azure Functions - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+ + +
+

Sometimes you get your self in need to monitor a website's health or it's content for changes. Of course, there's plenty of options out there, but for the sake of curiosity, let's code our own to see what we can do. First things first. Everything you'll see here, you can achieve with the free tier of azure.

+

The main idea of our app will be to monitor website health (status code). To create a new Azure Function Project, follow the steps below.

+

Steps to create a azure function project

+

After creating the project, you'll have a few files. Open your main file and start coding. The main file will have a function called Run and you can code your request method. I've created an async method to make the request and log the output at the console. The full code you can see below.

+
using System;
+using System.Linq;
+using System.Net.Http;
+using System.Threading.Tasks;
+using Microsoft.Azure.WebJobs;
+using Microsoft.Azure.WebJobs.Host;
+using Microsoft.Extensions.Logging;
+
+namespace Sipmann.CheckMySite
+{
+    public static class HttpCheck
+    {
+
+        private static async Task GetTask(string url, ILogger log)
+        {
+            var request = new HttpRequestMessage(HttpMethod.Get, url);
+
+            var client = new HttpClient();
+            var response = await client.SendAsync(request);
+
+            if (response.IsSuccessStatusCode)
+            {
+                log.LogInformation($"URL ${url} esta OK");
+            }
+            else
+            {
+                log.LogInformation($"URL ${url} não esta OK");
+            }
+        }
+
+        [FunctionName("HttpCheck")]
+        public static void Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, ILogger log)
+        {
+            var urls = new[]{"https://www.sipmann.com", "https://www.canezecanez.com.br"};
+
+            // Start every request and wait for them all to complete
+            Task.WaitAll(urls.Select(url => GetTask(url, log)).ToArray());
+            log.LogInformation($"Finalizou a fila");
+        }
+    }
+}
+
+ +

Now you can enhance the function and maybe send some alerts like a Telegram message when one of your sites went down.

+
+ + +
+
+

Translations:

+ +
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/monitoring-website-heath-with-azure-functions.html.gz b/en/monitoring-website-heath-with-azure-functions.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..375d76b45f29eb2d4161732436531eecb59a1c0b GIT binary patch literal 5706 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 literal 0 HcmV?d00001 diff --git a/en/mysql-dual-password-functionality.html b/en/mysql-dual-password-functionality.html new file mode 100644 index 000000000..6fad2d654 --- /dev/null +++ b/en/mysql-dual-password-functionality.html @@ -0,0 +1,520 @@ + + + + + + + + Changing a MySQL user password across multiple application instances without downtime - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+ + +
+

Do you need to change the password of a MySQL user that it's being used in an application, and can't allow a single downtime? Well, MySQL 8.0.14 came with a feature called Dual Password Support, with it you can change the password keeping the previous password as a kind of backup. That way you still can log in using the old password or can start using the new one. With that, the password change workflow it's the following.

+

1) Change password keeping the old one;

+

2) Deploy the new config to your app/cluster;

+

3) Discard the old password.

+

To change the password and keep the old one, you have the following command.

+
ALTER USER 'appuser'@'localhost' IDENTIFIED BY 'new_password' RETAIN CURRENT PASSWORD;
+
+ +

To discard the old one, run the following.

+
ALTER USER 'appuser'@'localhost' DISCARD OLD PASSWORD;
+
+ +

And you are done. Hope you find it as useful as I :)

+
+ + +
+
+

Translations:

+ +
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/mysql-dual-password-functionality.html.gz b/en/mysql-dual-password-functionality.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..78cece55dea429aeca14c881f052b9e3a5e10f53 GIT binary patch literal 4846 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 + + + + + + + Now posting on Grepora - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Now posting on Grepora

+
+ +
+
+ +
+

A few weeks ago I started posting at Grepora blog. If you like or are looking for some Oracle related stuff, Grepora it's a good place to go and spend a time reading :). From time to time I'll be posting there, it doesn't mean that this blog will be closed or anything like that, but probably this one will be more focused on Front-end stuff, a few tricks with linux and a lil less with Java.

+

+
+ + +
+
+

Translations:

+
    +
+
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/now_posting_on_grepora.html.gz b/en/now_posting_on_grepora.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..bcfc36d75d90f0dd54ad0891e77e56325b1ab27d GIT binary patch literal 4023 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 literal 0 HcmV?d00001 diff --git a/en/pages/about.html b/en/pages/about.html new file mode 100644 index 000000000..33f451dc3 --- /dev/null +++ b/en/pages/about.html @@ -0,0 +1,304 @@ + + + + + + + + About - Sipmann + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/pages/about.html.gz b/en/pages/about.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..c365de6e62ae8843a84ae6da38ec750ab8ec0c29 GIT binary patch literal 3040 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 + + + + + + + cartao - Sipmann + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+

cartao

+ +
+ + +
+
+ +
+
+
+
+

Consultoria Cloud

+

+ Projetos de implantação e acompanhamento de sua cloud. Otimize seus custos de infraestrutura levando o seu DR para a nuvem da forma mais transparente. +

+

Mais Detalhes

+
+
+
+
+
+
+ +
+
+
+
+

Gestão De Banco

+

+ Gerenciamento, manutenção e acompanhamento do seu banco de dados SQL Server. Com foco na segurança e velocidade de resposta em consultas. +

+

Mais Detalhes

+
+
+
+
+
+
+ +
+
+
+
+

Power BI

+

+ Dashboards analíticos para análise e tomadas de decisões do seu negócio. Baixe um dashboard e analise o faturamento do seu ERP Protheus. +

+

Mais Detalhes

+
+
+
+
+
+
+ +
+
+
+
+

Monitoramento

+

+ Monitoramento de sua infraestrutura, aplicações e bancos de dados. Fornecendo relatórios detalhados desde avisos, erros até o uptime de serviços críticos. +

+

Mais Detalhes

+
+
+
+
+
+
+ +
+
+

Consultoria cloud

+
+
+

+
+
+ +
+
+

Meus Serviços

+
+
+

Has your job been affected by covid? Well, last week I've posted on Grepora about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by …

+
+ + +
+

+ View comments +

+
+
+
+
+ + +
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/pages/cartao-pt.html.gz b/en/pages/cartao-pt.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..a1e690047f2c4cc3ecf456c0496d174fec57b302 GIT binary patch literal 4676 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 + + + + + + + Java - Files.readAllBytes throws OutOfMemory - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Java - Files.readAllBytes throws OutOfMemory

+
+ +
+
+ +
+

When you need to interact with files, there's the possibility to read all bytes from the file with Files.readAllBytes. But be aware of the kinds of files your application will deal with because the Java API files have a limit for the buffer that is defined as Integer.MAX_VALUE as you can see above or at the OpenJDK sources.

+
public static byte[] readAllBytes(Path path) throws IOException {
+    try (FileChannel fc = FileChannel.open(path)) {
+        long size = fc.size();
+        if (size > (long)Integer.MAX_VALUE)
+            throw new OutOfMemoryError("Required array size too large");
+
+        byte[] arr = new byte[(int)size];
+        ByteBuffer bb = ByteBuffer.wrap(arr);
+        while (bb.hasRemaining()) {
+            if (fc.read(bb) < 0) {
+                // truncated
+                break;
+            }
+        }
+
+        int nread = bb.position();
+        return (nread == size) ? arr : Arrays.copyOf(arr, nread);
+    }
+}
+
+

With that in mind, check if isn't better read chunks of bytes e work with that slice in exchange of loading the whole file into the memory ;). Above a simple example of how you can read chunks of bytes from the file.

+
byte[] buffer = new byte[1024];
+FileInputStream in = new FileInputStream(file);
+int rc = in.read(buffer);
+while (rc != -1)
+{
+    //crazy stuff here with buffer
+    rc = in.read(buffer);
+}
+
+

+
+ + +
+
+

Translations:

+
    +
+
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/reading-files-java-readAllBytes-outofmemory.html.gz b/en/reading-files-java-readAllBytes-outofmemory.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..aca5a732c7f97f9dfa5760e148475dfafec19c57 GIT binary patch literal 5179 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 + + + + + + + Removing a user from SQL Server database who owns a schema - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Removing a user from SQL Server database who owns a schema

+
+ +
Updated: 21 October 2020 +
+
+ +
+

Your customer urge you to drop a user from the MsSQL Server database, but you stuck with the following related error:

+
Error: 15138 The database principal owns a schema in the database, and cannot be dropped.
+
+ +

That means that the user owns one or more shcemas of your database. If you don't have access to the SSMS to see which schema or objects the user owns, the following SQL should do the job.

+
USE [DATABASENAME]
+GO
+
+select so.name Objeto, su.name Owner
+from sys.schemas so
+inner join sysusers su on so.principal_id = su.uid
+where su.name = 'username'
+
+select so.name Objeto, su.name Owner, so.xtype Tipo
+from sys.sysobjects so
+inner join sysusers su on so.uid = su.uid
+where su.name = 'username'
+
+ +

Once you have the objects/schemas owned by the user, you can change them with the following SQL (schema change sample):

+
USE [DATABASENAME]
+GO
+ALTER AUTHORIZATION ON SCHEMA::[db_datareader] TO [dbo] -- new owner username
+ALTER AUTHORIZATION ON SCHEMA::[db_datawriter] TO [dbo]
+GO
+
+ +

Then you're ready to drop the user DROP USER [username]

+

How to list all the schemas and it's owners?

+

Here's a script to list schemas and it's owners.

+
USE [DATABASENAME]
+GO
+SELECT
+    schema_name(schema_id) AS schemaname,
+    user_name(schm.principal_id) AS username, *
+FROM sys.schemas AS schm
+GO
+

+
+ + +
+
+

Translations:

+ +
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/removing-user-from-sql-server-database.html.gz b/en/removing-user-from-sql-server-database.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..b94cd337ec202084a21909246e117a384e30bda8 GIT binary patch literal 5126 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 oUfQmZY>AoGh?UWIdv3%? + + + + + + + Scaffolding a React app with Parcel and Yeoman - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+ + +
+

Since Parcel JS arrived, I've been using it a lot as an awesome alternative for WebPack. Webpack isn't bad but IMO it's too complex for the job and parcel do the same (at least the basic) with almost zero configuration. But if you need to create many apps (like a react app) over and over again, it get's a lil boring following the basic steps.

+
npm init -y
+npm install --save react
+npm install --save react-dom
+npm install --save-dev parcel-bundler
+npm install --save-dev babel-preset-env
+npm install --save-dev babel-preset-react
+
+#create .babelrc file
+#create html, css, jsx files
+
+parcel index.html
+
+

It's not a hard job, a simple shell script do the job, but what if you need some IFs when creating the app, or even change a few things at the package.json? A shell script still does the job, but come on... There is a better way. Yeoman is here for you. I've already talked about it on another post (Portuguese post).

+

Straight to the point, I've released a Yeoman generator to get the things a lil quicker. The name is generator-parcel-react and it still lacks a few things that I will deal with soon. It's pretty simple to use it.

+
#First time only
+npm install -g yo
+npm install -g generator-parcel-react
+
+#every time you create a new app
+yo parcel-react
+
+

And that's it. Right now you can scaffold and app with React, SASS and React Router. Hope you like it and feel free to ask new features.

+

+
+ + +
+
+

Translations:

+
    +
+
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/scaffolding_react_app_with_parcel_yeoman.html.gz b/en/scaffolding_react_app_with_parcel_yeoman.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..3c1aee4b23f1f0488220b61dcfa9a7b8fe931cba GIT binary patch literal 5014 zcmV;H6KU)piwFP!000021MNKRa@#nPzvHLCFt;arN7Sbi$Fk*&lSyVg6(^q9v%6EN zDHTLQ6l{uM2+*=-Hji{qaW8h=07;P)DO-t?@>OjIh-*?i8G~XA)2$8dPFlmK&Kv!3Ya@#!D1B zps|{YC^zmYjidklABPL_lFn%439_`66}xqrbRr&>%=TF09FQfd1Vxja5Cxt^7--kxt6hc|6askD-Zwxa>C|BGN8?s z^`ig(#s^ue(=ZgBox z!ey7TCel=QStOpaK^J5A8+FmHgFWi3!WTGmS zcS>FZ&JrEEn^X&*fl09}(6-f-%~;!!vOVv&;3E}Hj`$o*xbS8m7uklf`8CrWR#2~E zNZFr&SY^u-!t)soxzsWM9M30o#{I?cJt%5U7j-C0+=TE`P}d?<0W^FBMM>Isr4^>w)neF~$G z!Kbbc3T+{EaV8s({nnH4rr3rP5Qm{U@VDD3w`#s5|C0?!w_k1q(1ss2_)`VQJfdL=fiH?6j_`4wc--&ziw$D{WzflR-FrYL{D!#)e{UC{Gc|NNMefq4rO}y4O;)*_ z(HoQ44~RWy<0}p(&3)gd*OdDdvi3^6j~=zAFt(551Hwm-9w9FiU(D^B0fFR49Kg#@ z@E`t#RU+O15V_NLkz82SeT|vHp0rIOi@K)2P&--6vCdvfd%z@fog;Xi(B?QMX{OlP>

G%43 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 literal 0 HcmV?d00001 diff --git a/en/select_specific_fields_with_efcore.html b/en/select_specific_fields_with_efcore.html new file mode 100644 index 000000000..00e291bab --- /dev/null +++ b/en/select_specific_fields_with_efcore.html @@ -0,0 +1,506 @@ + + + + + + + + How to set columns on select using Entity Framework - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ +
+ +
+
+
+
+
+ +
+
+ + +
+

So, you use Entity Framework Core, and you usually code your selects like the following, maybe you are getting too much data.

+
var products = Products
+    .Where(p => p.UnitsInStock > 0)
+    .OrderBy(p => p.ProductName)
+    .ToList()
+
+ +

Running the query above, on my table, you'll get the following output, take a look at how many columns you are getting back from your database.

+

Screenshot with every single column

+

In my case, I only care about the Title, PublishedData, and a small description. So to get back only these fields, we have a few options. In the first one, we'll set the fields and return them as a dynamic object, the second one, is to give the .NET a class to use.

+
var products = Products
+
+    .Select(p => new {p.ProductID, p.ProductName, p.UnitsInStock, p.UnitPrice})
+    //.Select(p => new ProductDTO {p.ProductID, p.ProductName, p.UnitsInStock, p.UnitPrice})
+
+    .Where(p => p.UnitsInStock > 0)
+    .OrderBy(p => p.ProductName)
+    .ToList()
+
+ +

Screenshot with fewer columns and also fewer data size

+
+ + +
+
+

Translations:

+ +
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/select_specific_fields_with_efcore.html.gz b/en/select_specific_fields_with_efcore.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..40feaa2f015d8ea2df4376e93633c9fb11bfb9d2 GIT binary patch literal 4861 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 literal 0 HcmV?d00001 diff --git a/en/sitemap.xml b/en/sitemap.xml new file mode 100644 index 000000000..d8c09b54b --- /dev/null +++ b/en/sitemap.xml @@ -0,0 +1,881 @@ + + + + +https://www.sipmann.com/en/ +2024-02-14T00:32:49-00:00 +daily +0.4 + + + +https://www.sipmann.com/en/tags.html +2024-02-14T00:32:49-00:00 +daily +0.4 + + + +https://www.sipmann.com/en/categories.html +2024-02-14T00:32:49-00:00 +daily +0.4 + + + +https://www.sipmann.com/en/authors.html +2024-02-14T00:32:49-00:00 +daily +0.4 + + + +https://www.sipmann.com/en/archives.html +2024-02-14T00:32:49-00:00 +daily +0.4 + + + +https://www.sipmann.com/en/monitoring-mysql-restarts-with-powershell.html +2020-12-21T13:30:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/en/mysql-dual-password-functionality.html +2020-12-09T13:40:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/en/apache-nifi-json-to-sql-replacing-underscore.html +2020-12-02T14:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/en/blocking-user-on-sql-server-based-on-schedule.html +2020-11-14T07:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/en/select_specific_fields_with_efcore.html +2020-10-28T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/en/zabbix-running-on-low-memory-mode.html +2020-10-20T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/en/monitoring-mysql-replication-with-powershell.html +2020-10-14T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/en/microsoft-against-covid.html +2020-10-03T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/en/the-power-of-powershell.html +2020-09-21T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/en/top_level_statement_csharp_9.html +2020-07-29T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/en/zabbix-poller-processes-more-than-75.html +2020-07-02T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/en/monitoring-website-heath-with-azure-functions.html +2020-06-22T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/en/azure-data-fundamentals-certification-80-discount.html +2020-06-09T12:30:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/en/zabbix-icmp-pinger-processes-more-than-75.html +2020-05-25T16:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/en/zabbix-server-out-of-memory-crash.html +2020-02-27T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/en/flutter_with_firebase_auth_crashing.html +2019-10-03T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/en/removing-user-from-sql-server-database.html +2020-10-21T18:40:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/en/limiting-connection-resources-sql-server.html +2019-08-12T12:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/en/using_git_hooks_easy_your_life.html +2019-07-30T20:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/en/microservices_nodejs_express_rabbitmq_part_2.html +2018-04-13T13:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/en/microservices_nodejs_express_rabbitmq_part_1.html +2018-04-04T11:25:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/en/connecting_to_database_through_ssh.html +2018-03-29T10:03:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/en/now_posting_on_grepora.html +2018-03-24T00:40:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/en/scaffolding_react_app_with_parcel_yeoman.html +2018-03-17T13:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/en/cloud-not-open-connection-java-mysql-hibernate.html +2018-03-09T12:35:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/en/socketException-protocol-family-unavailable-java-docker-wildfly.html +2018-03-04T17:40:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/en/linux-external-display-with-disper.html +2018-02-27T12:40:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/en/reading-files-java-readAllBytes-outofmemory.html +2018-02-17T13:00:00-02:00 +monthly +0.8 + + + +https://www.sipmann.com/en/category/azure.html +2020-10-03T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/category/flutter.html +2019-10-03T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/category/front-end.html +2018-04-13T13:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/category/java.html +2018-03-09T12:35:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/category/linux.html +2020-10-20T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/category/mysql.html +2020-12-09T13:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/category/net.html +2020-10-28T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/category/powershell.html +2020-12-21T13:30:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/category/random.html +2018-03-24T00:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/category/sql-server.html +2020-11-14T07:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/category/tools.html +2020-12-02T14:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/mysql.html +2020-12-21T13:30:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/mysql-restart.html +2020-12-21T13:30:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/powershell-monitoring.html +2020-12-21T13:30:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/mysql-dual-password.html +2020-12-09T13:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/apache-nifi.html +2020-12-02T14:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/convertjsontosql.html +2020-12-02T14:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/replacing-underscore.html +2020-12-02T14:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/sqlserver.html +2020-11-14T07:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/user.html +2020-11-14T07:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/time-schedule-blocking.html +2020-11-14T07:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/dotnet.html +2020-10-28T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/dotnet-core.html +2020-10-28T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/entity-framework.html +2020-10-28T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/ef-core.html +2020-10-28T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/specify-columns.html +2020-10-28T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/zabbix.html +2020-10-20T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/shell.html +2020-10-20T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/low-memory.html +2020-10-20T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/cache.html +2020-10-20T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/mysql-replication.html +2020-10-14T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/powershell.html +2020-10-14T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/powershell-mail.html +2020-10-14T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/azure.html +2020-10-03T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/certification.html +2020-10-03T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/microsoft.html +2020-10-03T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/script.html +2020-09-21T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/getchild-item.html +2020-09-21T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/remove-item.html +2020-09-21T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/stop-proccess.html +2020-09-21T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/c.html +2020-07-29T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/net.html +2020-07-29T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/zabbix-poller.html +2020-07-02T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/poller-proccess-more-than-75.html +2020-07-02T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/azure-devops.html +2020-06-22T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/monitor-website.html +2020-06-22T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/azure-fundamentals.html +2020-06-09T12:30:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/azure-certification.html +2020-06-09T12:30:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/discount.html +2020-06-09T12:30:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/icmp-pinger.html +2020-05-25T16:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/icmp-pinger-more-than-75.html +2020-05-25T16:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/zabbix-server.html +2020-05-25T16:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/out-of-memory.html +2020-02-27T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/crash.html +2020-02-27T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/flutter.html +2019-10-03T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/firebase.html +2019-10-03T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/arraymap.html +2019-10-03T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/noclassdeffound.html +2019-10-03T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/the-database-principal-owns-a-schema.html +2020-10-21T18:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/resource-governor.html +2019-08-12T12:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/git.html +2019-07-30T20:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/pre-commit.html +2019-07-30T20:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/hooks.html +2019-07-30T20:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/nodejs.html +2018-04-13T13:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/microservices.html +2018-04-13T13:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/rabbitmq.html +2018-04-13T13:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/expressjs.html +2018-04-13T13:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/imagemin.html +2018-04-13T13:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/imagemin-pngquant.html +2018-04-13T13:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/node-js.html +2018-04-13T13:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/openssh.html +2018-03-29T10:03:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/tunnel.html +2018-03-29T10:03:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/ssh-tunnel.html +2018-03-29T10:03:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/ssh.html +2018-03-29T10:03:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/through-firewall.html +2018-03-29T10:03:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/grepora.html +2018-03-24T00:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/random.html +2018-03-24T00:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/yeoman.html +2018-03-17T13:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/parcel.html +2018-03-17T13:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/react.html +2018-03-17T13:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/java.html +2018-03-09T12:35:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/hibernate.html +2018-03-09T12:35:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/wildfly.html +2018-03-04T17:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/docker.html +2018-03-04T17:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/javanetsocketexception.html +2018-03-04T17:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/protocol-family-unavailable.html +2018-03-04T17:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/linux.html +2018-02-27T12:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/external-display.html +2018-02-27T12:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/disper.html +2018-02-27T12:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/filesreadallbytes.html +2018-02-17T13:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/tag/outofmemory.html +2018-02-17T13:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/en/author/mauricio-camargo-sipmann.html +2020-12-21T13:30:00-03:06 +daily +0.4 + + + diff --git a/en/sitemap.xml.gz b/en/sitemap.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..e174b54d9c5ca3d93612654ccf84308b8e7fe192 GIT binary patch literal 1849 zcmV-92gdjxiwFP!000021JztjbE7yAz2{e?a&H@OK5UmKQ@d4rn>}p~d!u9_j3z=N zl8DXx`fY*jIJGeeo`cZM!4Te))ZMS8Zm+)YN^$+lwBbsAyNM^!%{7x$Wn6B)-PAUR z`OWvot5vOqVfGqtmS(v#{M$`oZMB?Ex7+PxJDVuInI=&bPyhY<$3L`SB>^stC6cn6 zE4+Vc+KWFFCANLj$>WAw{HikTKk4o>)BVM1G+A5^xcBgRvNIXJ*ufq2uA9fJmMl^h ziaxq0&GFHyBvMYODyK|NS5tQb-bRcqRrZ)f$t^?)#J5jTw45c&+Xdi`5Yc(1c?229fL%-5%gD)(#Iu0fFEUQc3M!nXOIF$)BzI5o{W#2JuQpU|ov+$Q zI;x2&dKjRXeel1!a#35$bSE%!u9=fesmpxQmHOoUQ4UM6=w$s7y=SC>`k!LU4=JSU4FopA@9prj;@+ z2PM-DW)@15e%S5ajbGnnD9Ljr+|F>S8Nm#dR8-@cL}scSBojTN z{WMqo_`JmAk33#D)F7pWXI|UIMhl606bH6{EG4o zC=4#m@Pn2~i%&wXNy#u;Jcj@|4`pz>s+|Vmin{DOS{@DJ?f`S-`EWb5pVr!p1Ls?* zQvhJ8lVJhi{9h5)prR|^8AVWFp~M#jfH;H==+?wet8@aud#n}=0IQ*zS9VZApdX+c zW@*7i2Cmm60K9EM4GRUWv8rkd$Xo?k0C?%3Do{TddsDB`pnO-YI;bqwSC~DP)w;EM zc~z~)ml5@BbS4=7TEDJqe$|74d#>hEXrnBHb742LP35O&ZsnKYplEQGBb( zSe|2u$O1s@dgTt~&?qmtq`V>m)K(fG(EZfGp#BG6d1u${02@p{wN%4e9X#ds+z#q! z@RWHtiKfaj2(WF}NB}syZi|N8l_rQ~z)P}WC6@s~g-UK- zYH~JD8xv;d4j_ny;96gXHcNRDHno&Y1OOC=6G8$T!rXUlec+OuEfFCM>?Q4dzCvsO z1?3Lt1$~8{BzD^e8353>e=`7_0kjph*~&%DqJFSm()Q`As?znT1_0EpQps%Bh|3O* zxB&p~X%!9teP18n$GyM4^27J7%K<>Xps(83?zdpZ^-`laT)STCulG;;JhK_z?d=6^ n_v@$AlGK`0u7Hw~=#7HIZQh!rrrqxmKVJO@aIN;uz*qnP)X;=B literal 0 HcmV?d00001 diff --git a/en/socketException-protocol-family-unavailable-java-docker-wildfly.html b/en/socketException-protocol-family-unavailable-java-docker-wildfly.html new file mode 100644 index 000000000..4112676cc --- /dev/null +++ b/en/socketException-protocol-family-unavailable-java-docker-wildfly.html @@ -0,0 +1,491 @@ + + + + + + + + Solving java.net.SocketException: Protocol family unavailable on a Java + Docker + WildFly - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+ + +
+

On the last days I've been playing with WildFly Swarm and I decided to deploy a simple app with Docker. Should work fine, at least that was what I thought. Built a container with the following Dockerfile and instead of a working web app, all that I got was the error java.net.SocketException: Protocol family unavailable.

+
FROM java:openjdk-8-jdk
+
+COPY target/issues.jar /opt/issues.jar
+
+EXPOSE 8080
+
+CMD ["java","-jar","/opt/issues.jar"]
+
+

For some reason, WildFly and Java decided to use the IPv6 network interface from Docker instead the v4, so all you have to do is tell Java to prefer IPv4 instead with the following configuration option in your pom.xml file inside your WildFly plugin.

+
<plugin>
+        <groupId>org.wildfly.swarm</groupId>
+        <artifactId>wildfly-swarm-plugin</artifactId>
+        <version>2018.2.0</version>
+
+        <!-- ADD THIS -->
+        <configuration>
+          <mainClass>org.wildfly.swarm.examples.netflix.ribbon.frontend.Main</mainClass>
+          <properties>
+                <java.net.preferIPv4Stack>true</java.net.preferIPv4Stack>
+          </properties>
+        </configuration>
+
+

Another way to solve is adding the same properties to the run command at the Dockerfile, so you choose where you'll add it. Bellow the Dockerfile solution.

+
FROM java:openjdk-8-jdk
+ENV JAVA_OPTS="-Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true"
+
+COPY target/issues.jar /opt/issues.jar
+
+EXPOSE 8080
+
+ENTRYPOINT exec java $JAVA_OPTS -jar /opt/issues.jar
+
+

+
+ + +
+
+

Translations:

+ +
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/socketException-protocol-family-unavailable-java-docker-wildfly.html.gz b/en/socketException-protocol-family-unavailable-java-docker-wildfly.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..fbe2b250e904c15c2758653173a8829d8ab7c3a9 GIT binary patch literal 4999 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 literal 0 HcmV?d00001 diff --git a/en/tag/apache-nifi.html b/en/tag/apache-nifi.html new file mode 100644 index 000000000..9327f29f1 --- /dev/null +++ b/en/tag/apache-nifi.html @@ -0,0 +1,296 @@ + + + + + + + + Apache Nifi - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

Apache Nifi

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/apache-nifi.html.gz b/en/tag/apache-nifi.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..c8ca6b2473138d957dcc430c31d1fcd36987b953 GIT binary patch literal 2903 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 BnX~`^ literal 0 HcmV?d00001 diff --git a/en/tag/arraymap.html b/en/tag/arraymap.html new file mode 100644 index 000000000..34eca1f28 --- /dev/null +++ b/en/tag/arraymap.html @@ -0,0 +1,296 @@ + + + + + + + + ArrayMap - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

ArrayMap

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/arraymap.html.gz b/en/tag/arraymap.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..469cb849eb0d51069e658c798dca54f586cd2ab9 GIT binary patch literal 2892 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 qf~qb9#wA%(=4Qs) literal 0 HcmV?d00001 diff --git a/en/tag/azure-certification.html b/en/tag/azure-certification.html new file mode 100644 index 000000000..7807221de --- /dev/null +++ b/en/tag/azure-certification.html @@ -0,0 +1,296 @@ + + + + + + + + Azure Certification - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

Azure Certification

+
+ + +
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/azure-certification.html.gz b/en/tag/azure-certification.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..d9a3afb8736da14c188785f57431827220e07c89 GIT binary patch literal 2904 zcmV-e3#arSiwFP!000021I-$1bK5rZv;8X&=6aGFlhnhhV_9w*W{Aq$tJ86 zXoQmxg;?S-7DUt*sj{UM*d)g~gjvQcaAjFB@csFG?g@jcl}a{fqFKDE0-Nw?j3aWR zwS5gLeCw^3CQ(5f4H-=?(KI8IjZ`Ltgu=&+c~}C4>lh?gW*j*Q_T%2IGkTlSXHWLgJ;R4YKk-_xlloSyov1WKldCbGbe)%-*TH~HI z?pxynYkVL5RX(U6r99UtYJi+VRr^R_U|W!kPD=1EyX6qqs7P`x-H-%4(~dPj2_&)O zCQQ&o4L77BWf)c;Gag(XSLRY2s{AlON8bJPx;hu*ETXVf2mW+B^;s>Kpr6SAb^G;6 zFb;92gho>d)80Yv!TrPTLGP#vHRoCAjx&NUfj9Nbg?MTJnP)gHAk>R0NWdA-2Iy|T z->*)L0hGW@H@!xJGa911K@c>-xET)VObpP0Er_L5Zwx_7vI`nVHRXn-0%EwybdZODZx@1FdwdkG|CP570IeF{*M+EmJ$b372X3hq1Pll{?V^MmuBd6 zs?rssrPDzn4H!YIQpWh&RPzCHp*mesaB0ezi?1+c7)o^`-JKn83Trd9J`mj5*-^4g z7@xb>1B7RiAH&Np@DKi`=tO%xK;;%4vl+1fym{YM`5l9AWhgbEIxc7uYVnPe7H=`E z3%2+;6VM(kN8d|#;lDJwVa_uoO+pe~$J;vbWx~}ugBDBW`~j5r?6NM1(w{bk8)bOW zAdKZyMNIW3{a*iYqfj~Md1)$@cQ$V*>;hykxeC#O=X4b5PGz$+(~@!l4Ad&JPXp^a=B$HR1c88f-$iC}fvt1nkP zKXSc@XKIpj6vj*T!(o@G2PBRbc$7t^n5JXQbf~Z0e z&8eKC2b~{KLAF_@dU%_cbrlT#8EdpmKCIcQ9?5G=C-Qn&_+URDF`No*BAh_vN#bTI zU>!t52#cbMmVu%t2Rhmt9JlJWcARBgVMFGjQGP6fGm4=|j0s~T953`F5RoL}870D5 z8^vW#%DqCTL+Iq}@@L%tKnqc)dsdDi1P&^i{U%oi7p|v8NQhR8;B3h0H}~vZgoSZ& z`R)eTsKH)}86UF(ZgAN;2UnlLD4km|P+>50L*wL)cT`%02YrC4t?(rpz9LP;H=UTs~SAfC`$jd)u{lbkcLrBvq%=OzM~ z7Pjb0{~w)VM%0#69f`{C+$&ZoztK++eem?%`o)`D^80OQzQ;!9Tde)fRvyn5ZcJPZ zhMY_Yxw(;TUE_v`0KzfBhN=#WJVYEM)tQwXITvGw69|BzI;a*|u*46-WEI~W#t8qa z=Z9p1XH04*)3<&IGj)ABTc8&NouV@%OZ{}@r%rlp$9jHV-0L1z->dTu+^`wkv=?06 zK(%Y|YGzz}B%!v9H#o_v=PL>Br*;BLsW0BHv5L8qOSn2F1ZESi z52!PBCQ&~T%;~w}(+q?2!y6XmCxqu_>SiZybv`4AlG%8p?`*-Pq1MFYQ$4dikHF$M z^V9_<0mErNY4SZ-El4&o`#hhkB?-& z@K^7>bS9?l_pJ*-Z#o_qP6x`FGwQnDK!9YtEPxnBe1dI2+3?l z8Uet(Fx_q$3%Ah7;tCoQW85_3lBvsh^3Ias-PNeJ zKeJ)sy^o^2gj$A=^NYS$xR%ZU6`5CGkz$W$k+W|B>QAr$>NRZtfRZ((Kjwm&qTpFm z>U*c0@|q8wO4xnm2q1JS0O9?LLvAjy`|IHwO5Gah%|)lg`LJ8L*lf_h)w}pUdP=|` zQ-bo7=v_NZm$$r);rej#ENokc*vc&$C_j4kyXkvX*ADw1M4(3tWM!p%>S45brB?>5 zvQp{L<<({_|I!I+mrQ!PGxYMU800=kt9m=uYD(K{(NIfWxHe?BQjir4M`1X%%!CLN zWV?k8w_B}j_M12OKEc*yz_=hQ%3RM_lYBSVM$Uxgu|r>7!s~(l;`M);d^52DD*yl= CYk<%I literal 0 HcmV?d00001 diff --git a/en/tag/azure-devops.html b/en/tag/azure-devops.html new file mode 100644 index 000000000..30e606b70 --- /dev/null +++ b/en/tag/azure-devops.html @@ -0,0 +1,296 @@ + + + + + + + + Azure Devops - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

Azure Devops

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/azure-devops.html.gz b/en/tag/azure-devops.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..697035d97aa5a00fd6c420967462d64fcf5dd2a8 GIT binary patch literal 2899 zcmV-Z3#{}XiwFP!000021I-$1bK5rZv;8Yj_Ii?AlhnhhV_9}-FmJ`lr6 zG;v7cobAIKg2S_Y1V7`LNQ{Cx&IFMY=jY4k?nB3(N^ndj&VrI<$}{PpfG3h90J@~1 zoKHfspaF69!y%#xl@v2q1elRY-|N*#&819T@;;}FiSwKL^SS$k$0?R{%7{gmk_ibT zQesLf896)uBhLtWN)|j7$VIPd8sj7x`(}23gWs4ZMAAQiI8Q9v{|Y!|-c6QDnoha& z0v`MMw_iU!KmPsv$KzG+>bu2n@+j^7@}p9dMK#TMN;0{cI6N8&D#?{v$D&+t0#_y#Bi~;xm!2@FTB+m~O|*+wS6~|+jd4Wow6?E7 zg>Sv}(j+QrqcNk&HJWE+b}N+`A))XwV;+`3;U)&jl^G`vPE$q$?Onc_`%2GcguxV( zBulU|t=4TN89KlG;Q~DenhicQnvg3-#GDWaF~gWI=OiY6AcVghdhk)&#A4opNmr4w zyzpUdx*!^1gY+haQv4ZcRd^BS5hFOILhAr%JeuK{veo1#2PIQhHHsP`r&QG;5*XMPB%`wm{KI}V#0@Hv+(GsFw;+Okl>7l=<^^5+F;xahcp)>bYu%+Db<@okdo|*#!*ALQyg4J8PAi@O*v$3 zZJYQk_kPFr6nu1GH#$3F>lwqjRt#tSHyg97R)cQbhZ*Nb@GGlz{ z-i#2=B|n9iAK*XyOVOG3dVne{I%PSr0KDbURrwu*Z)GSopgJyS5^C{{la_BWtP8ey zmkUW}tBO#`-8V4_DMsCxCZ%X6C*a5j4beZ3SFdSErZ{U%=-88y@_(cU7`=)o^ zAFCRI0)_>YxSHC_DjU*;H7|K;m$n4klS)hQp-gHlr{VxZT0F9FG~P6qk|%Xk7t9hX zlwuM_b5Om@Ah{F$q+-%l|sAxm6

{}j_v5yH+c}$sD8|5n8OGst*QG`c(Pu zo!b7ToUeeaio;OlPLl_rP<(M}X9L|aj}UbC-A>s)8-6?}25INubW7Dz=GHP8aSTpt z1Qdx<<|{D0nDCT-EG0-mUg}^W}!i7k+k! z@PR!yl{^Drx7gi6dx+&6%nE<7(t$h6lRzbY;i*Fjr+t0(b5Rk4j^S5B4ry{okwZqM z&r5Rcax`Pvyljd+_H)*1jbhlaPcv+{m`fDJuXMO!F=99s+AKJMFasTBDmooRLx_R0 zWL8n3Cr3K8TfDUHqjpebTwz0+p;2)Lf-{PtB1{QmB%H4FBoL7#0xc8aYz^5e0TrI0 zb04&AcC9nMex!wH(tT2m!R?P~n*Ceu3vS!Yfsp;Ie!#gUf#2Pm3lUbnc3k7G<+}CV zR*M&F@7&+&i*+CTrv;iZs9ccOcN6Kk!Me9XWooZVl5khCO1%3j*gM#N?I_cK0Oh`l z!)TJ<>?qGmg>zp8idW)2+fks4)$1Q$-dBMVB6k$W`~KPGeU&EVOV~Qkq3Z1@)GLMf zS|Q$7(K4KbJl;{PpES~a6$wH~otG|lu1*k7=(R??ucArLnb=XPONDb6flLcqcBTK1 zPB9~D|EbPDy&@ePY`|Z^vU|gyIbBs6MT4cc*KM0ded~@0&{Kdcz$qeUA zYRA&odI&RhKbo)51wrTNiIJsw{PA@!y|LrFI1nE6kL&N%fd+2b0N%F$+uStj;f!;+ z{XnO7+E?h+9S$01+_6xaj~@=zmF+4C>JgdZh~RKg+_J)aSX_RaBThZ*zY{(V#dKwWym$H_*ergAT-UI) zW?J#~LW837^47KjGk3OzadQN%j;r-vsJKn8TWf(cbQR(EXktG8`U|~zTR+iP@4Yk^ z^X{9@l_2sw2zZ{z&LQgjeC|H%9S?dBhwh;B_TUygnc?92709c;53>Q9BkfzMA%bm0NhSP5uH|GW5WrOSx#C3z`QWs z?HCJp(8S^jnh|5%G~<%1!>dQAV_mj)(8xTST;DlBU!hLx4ZII4y%Q}gDpd$u6A&wf z8pPw(C62zwFBudCrAnny91wxT0iIEfL*xh`bS?nl&4xqXUSbco!?%>WEzq|YoeJmee(mP6MgLas;``_Y0fWp5Do&sG z?J!+m36@F)>n1vu;)PpdbB{+Rw||*N4Kx^g8{3pR5^5Y zciG6lbcVVWlb-Gjy<+ + + + + + + + Azure Fundamentals - Sipmann + + + + + + + + + + + + + + + + +

+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

Azure Fundamentals

+
+ + +
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/azure-fundamentals.html.gz b/en/tag/azure-fundamentals.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..74996d29cef95cedad339aed5e4e5c1d1283a431 GIT binary patch literal 2903 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 BgE#;H literal 0 HcmV?d00001 diff --git a/en/tag/azure.html b/en/tag/azure.html new file mode 100644 index 000000000..3e60da0ea --- /dev/null +++ b/en/tag/azure.html @@ -0,0 +1,326 @@ + + + + + + + + Azure - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/azure.html.gz b/en/tag/azure.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..6553052ca051c48ad9be9c7e20b9a966764c34ed GIT binary patch literal 3044 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 + + + + + + + C# - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/c.html.gz b/en/tag/c.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..94180cccfde377af6f24379278f1a4b9215126dd GIT binary patch literal 2954 zcmV;53w87#iwFP!000021I-$1bK5rZv;8Yj=32?EN$TO$u`IcDoJVsLCu!{TF`0}9 zA|VPfNH7FwS!wg%Zvl`LNl}WF<~nv-8zgoY``!h>;Wv+7o?ZU=>M@$ike%!f)gQ!g z6pSnqStq;jhG73>7s1akBoZTUiW5QP$a-`6#C~9vry?AZk#$4KEar){kjEoQA^@FH zUrt9pxuG7h^}{}*5tS4(TX>j}QP=5INKK`TZSoqG&Tqde<&>z#36Du4=Oc>;13@LZQtOl`XB=54Xa$m-$7T2# z87ndta+g)?6X7K^uJQhm@c`j5PbGqt=15Ly6bMkX$5J1L2n;|Nk3)b)IP#H?B_3lz zL~W5OTS|dVa;!o~6IKFOh7<$Woy}&BFsNFoWQ``8#j7f?36F+2ARDdiYEa>p-a2s< zta|vNE#Ux20tW2wQ zTS$gZFJGRcCqT2thei`}&WM;20)b^1bLEtT#Px)5XMG3$71B}K$YtQlTV9&>-bUp!5_rE#w`?w7^~rSX0A zSMi{Jl=5t&r~$HaRqZ2zfo(w&Iw`o+v;41lYqif9r)Mn)MvF^f_@|e)a}z)Ql&-Jx&O|2Hw;k8{(+}WR~DKhfpu7ARcEt8K8Upe!n^~22cVs z-S`#>&Zv*>d7jqVW`ZFba!@~DXh)Z`ap1JXGh60VSHxa4iHWy zKZci|;D7ipMkm_q0V=cTn5Coy;LQ5A%I_F_D?zaV)p0>1UyE;?G=Ga>U9iRbR7g6R z7ld-|eh!IGF=~f2%0)Xm0!QAfiGDAfUr?WnaZ;Pm;ZvAA>uJz8G*lfBj%s$T+7{e( z(pCRf!hdRV!;EK0nuJ8Uj<2r9W*7J4o=nL70+L^Nno^?W^Z5R0* z*;oSESXRgmp+~#PoWun$$@eeHvmos)mRqDk^#J*gBo@++2rX7t)q6cCeX4wSj?4a~ zoG*hcibG%JPLl_rP<(q_&IY<;9w6xM+pWBPHvBkH4C2<_@rtUY%&lcG;uxI92*?_D zC5vf0bWG%2F3L~$Kv%K4Gz&rrpIIl>IA2-{wz)@0bbES}yJoTpSqI*NO*PV~Z#74S zq3Yo}?VSwAuxEuB06oD|$q5RrRSNW`lv7rMf`>e?Ri$p?xYSfHzg%+k%)2%S8nEFN zQ#;QqAz{~}nv^R~OmPxl9XaZ}!D?Pk{ao@GJy*EsBFBY-fMAP%)XZW%IL*r@iN3a& zA%{Z669BfetvmF-SWdxb;TQgxCd8hkk*BJf_?+D51u*~0y;`m>ah^@A;9x~pa^+AIna5l zAq1-dSk4#;SJ;q4X^(>*K35ZwnA&3;jog4@;;Jf!wgvtzBPPMdpkCc@m+j%(aCU$?rIZ17_3ox3Z2 zvFd~Wwm=gGWf_Xrb|O77Sa(*aL~X=Lq-EoJ&Ipxjk)7>&}~E#-Nx zaPF!=;aq%RTMBeOzxeg}T@@%Ia!YZX7mqLRsx&d5kwi?P>TN01D}{KW5bvsJ366Xo zZYkDljdWK2V2!8co1Cx|C>p%L$@Xp(a#wv_5p;cOz1X<_rO^#9Q*CPZzn)#0xE z%DrNh@@xGB(FadotzX>Sl3%n}+jNh%-W#`I@~iB${>cvOOWg2_-EW-E?U2|QJZv%{ zWOMH;I{|J8RUjM^Y^dsZ&0^O=QXLD*k##j@ID*I=s=EM@cnf^bkCySxd6#f+dah3< zIAv0MzrI*Sn5i4;bdJsmIz?wjmihtIkDd6ooP@F?`Cj+1`d%F=;f7u6x=rfx&Q=d6 zoXgcmYL)ZWOs{soS2N?vQy;aL-QcjWo=7ElpxUA+rJi4`u!_0%jJP_91!g0z?*I~Y z4pcvM&FICFK_mUn(czE1 z{!zbszuP~2&{vn{^T?}4WQ+rX{a$v@4fB5X`GGlP*0b(=;bLEm=LX1muaDx*;wQ+q z4ND8A6>m>9C_2sW%?mJdYi<}fmjLR*KyTQx`~0f4Zg7IG0{j7u%%8viMsMF$?^M)# zCr-t*{kC-_h&=T?o<_2@k6Ld|?FXI1UgtsI?zP_St-+HC_O4%nyy`ooCD3+W7*Kn! z;o?Uz8DL=1=U%ERnd2o;6Ubwx>sq^IL~HFW-$4b~QEC9(R!tGDMqp#Z5t2zt8Uet( zFx_q$3%Agy#1(W*#<+39C08eGKcQCXbB7ihm}isgTYKmS)N1?&!iAOIiv|{zDnwZm z5G$D)#KZX|4qo7pEEMv#^KO}jaAF9LNWS1cacBg+t$au(5LoR1?;}yu;-|fK=}qC7 zReyXO`O7|e2K2RK?iinCe2f{=C0*hGwFCGKQtqJ@{=AbrazkLLQfU+iL?Cg1XPL~b zh(bjD1fASd`{C~gz25n&gR^caqzbw)LeN&g-ecydAb*bMkYPs4ud<*3=)zCcGVQ&; z3K-+)kh-*0K!=|cxQ1$hA@@;4X6O<4YsNYdz$z;h z4qeFhRCk z*l@em%4Q?H!6zVPU3!cQvZTz_j5W!(xi&H;N*+6O)prhhpuZvhABSEH(o-w|0C2;j AivR!s literal 0 HcmV?d00001 diff --git a/en/tag/cache.html b/en/tag/cache.html new file mode 100644 index 000000000..fe839f43e --- /dev/null +++ b/en/tag/cache.html @@ -0,0 +1,296 @@ + + + + + + + + Cache - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

Cache

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/cache.html.gz b/en/tag/cache.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..42f9b13b417e5ebe6565bbb9c0b63b1af71f0eec GIT binary patch literal 2895 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 + + + + + + + Certification - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

Certification

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/certification.html.gz b/en/tag/certification.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..92904e34b419e46dc3866c3e0778725eca314811 GIT binary patch literal 2883 zcmV-J3%v9niwFP!000021I-$1bK5rZv;8X&_Ii?AlhnhBV_9-)JCF7zZj;9CwUfzs zAQGZrg9Jl>l9e|9{T2X8krbs!onFVz!yvJ{*!L~~4j(=L>GJybH!sjshU{#AsD2@a zqhMr_$U57HHw61<`v`u9A(0q)Q=AAQN7gUbFYTvRc`Cvo8Cf$*<}pvCg*+Zf5&`I( z`f@t*$&7l$)(?k>MpRPFY~f)>MqQ^6nocT}np8 z4@izFsbu8rk|dH&s0YwILNjT0UN4~vn-gMpxu+^BU*lrxU3GqeUt zF5)u$oQxG23%RS>_KENk8rOKgU_3y0%u|VAr3I2x8U+G$?y=N|Ap%DY{H`<4#-w(yBbuu zrMFHT1vzarWHh=%(}YYmQkf9q3l}ryUwP?i@i ztW9S`Bdm~KrI3q10j&xr;5=Xi$5dz?0F7r898$Iz{R|O3$BT6&YtqEumE6f zZL7AR5G-5H#t~)GO~H13tg{nGfT zG=7Z!C?3?0Ql4!TH9%IbszW3&uq{YJCk6QD{bGn~R3y2Vwog2sXvZ3$2$I-o6DDY) zhU-%iGYqSb8Tal^D|0dSRel(t6X$V!U!4na5>QyG1An@m`mB~q&`)H5y8Zej7>C$X zLW8M*)L z0hGW@H@-)LGwP$SJkM)_u@mgmR1DBjS&))aoiPL{Np5Hu)Ra5M-d&LJH1h43L)O;D zdEEK>bRASeVuGbIU^ZL}X_V{n8A+-z?l&bUEG71)D!d11Lhp%x`i)zGF3iyBRHe&D zOQ(ZE>M?>=r3~@CspA7=Lv^~N;L?;a8_zIh7>aZw-Mu|$3Trd9J`mj7+f%Yk7@yns z1B6q_PvPZf_y>Pubf&!?pfZb&SxQO(&b)7{{Eor55)>Oy9Tzn6wfM$K^S2n*1zX&v z0@{N`K`7_$yO8)4qjpH6T(pxDaO8uU=wF44cho0ioYW?C_!K73+8gwUhN>CDQO&MZ z+k(4Jy6Vqb_|HvlnDGorlaNT)@wQHUiLkZKpt({xe*on@xvLAJ^ruZ>2MJy@2vc&Z zJf?b+ey@MLQK$@bK822DgEaq$PQSozjf-j1>RCd_70~s%ewVB_jV>T=RzZfYX`c6o zs)itsVF4wsqV~MX`gB&Bmpm?)wg{Iem6qU_GO4kgiUSO3@u-BO@y4l?&;nObZ7@ry zP_juFO+ocGgXB*1lZr`Om6PR@j-Q-q0)?GJBT2nGMf3)`uBd%*nzuWKZjBYq4$V24 zU^Kys8E8|6EaNBy&_RMbPaw3I?nqTYokQg+4npoLl@VSfxoDSl2yLk?^$Og z+I5jHk&Pvgjb(-G5PGy(<|Hn7Nxpwko&{-dx!f`pst3q_B(acoL};JqTAE^-3^mX$U5+rY^sq? zed{?Y3{?-;Y42<}u5Mo;96)6-QSygEft6al?II~FLBT^FO1NH!fIYg{aoc}=-i;8ONG|VSv@?>%eo*#H)W0b&4x9N z*CTO_0Yp~Mav$nvBZgz46^$c^97*g%1)PPb4{n`T!NSq?wd>0TCNaO9(k zX8)2yf+N<`8YHw*iMKZ75QLlrH7{XP$O6zgY=^iV~D zP*O*rvz@CG#1nd_5g)2(l5-|@lrY)OM{=27?S8Lj#(okz+@|B+1okw7CoH*(lk$~YepEUYASj|Z`G5b23t0jq&^BI@R zo*vmY8k##&ePwTB-}V^QSKJ=9W6(&yb8`Ho*FWiZA9wr5Py6a#brE^hh>USSu;0tB zLSf#|4xG$6q@Hzeg^PVLUKk+fR-e|I#m|s!8O38hQFNlJ-Hv-GE{;z`&x~V&nDNm4$!x#)p$+r!b-QIfkmYXQPu>+N~Q*JvAD*;k2oYtg}m>4SfwGH z7{VixKXRWqP)tc8FUSM}s~zA&Bx+jxe9$hvDIBxvk1ryB)h923zIMz#(Hxq%Lh0(BWqVuAy3B$U_v7 zIeHF0+dcqoF6W@GO=zHEsm!hN=s`>Ro1{@8{2-`y}9TVI3M;a*NYAMFZC|2i(U~h$dsV$JbAwyrpvq5#&Eq@{NT4sN72eH z8Yn;i;a6}-IYp}XhFuII(4%>>vQjp65o})RCj(Ylsc`7xg0Yr==>)Y4CLP@wI@yK_ zav!8sy{T$7rR}w7sHLtw8?sv=$O?v~Fsxc;LWBvj+roz1omMux#x1@QDC^Q=T#yxI hu4k-CzU{SBgmnM_ literal 0 HcmV?d00001 diff --git a/en/tag/convertjsontosql.html b/en/tag/convertjsontosql.html new file mode 100644 index 000000000..388f52d36 --- /dev/null +++ b/en/tag/convertjsontosql.html @@ -0,0 +1,296 @@ + + + + + + + + ConvertJSONToSQL - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

ConvertJSONToSQL

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/convertjsontosql.html.gz b/en/tag/convertjsontosql.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..be14bea3c2108207f9c3f0923a832dc5600c8ca5 GIT binary patch literal 2911 zcmV-l3!wBLiwFP!000021I-$1bK5rZv;8Yj=32>(N$TO$u`D@toHR`*Z@ayAG8qp< zLKI?)3f1Bz713-UYznH&0%lUHtLpDVoZdo$L5;P7M@!Ot)z5~E;>GeP9Y`Ss!__n~7?B{(J{=bDmP$}{PpfG3h906L?g zoQ^_rO#|ZUhkZm7Dk)~J2rwg~uGguMno60v4r9R}~%-5o9#2@&1_c2;ni$C4!aaNKR=I2~c~$@(_jy%t07W zV}M3D2~mh89%Dg7ZILQlN`XystV75%W`QfSih=LXW;0J1RIOC9K@-j5RTbETM`Ik3 zTdnPDP~lr|y)=nR+GxmVa)qWDnQWvoAtV$&X3WD9DBQ##xiaI(!D-59puNjibNBUJ zMi@*nNwNeh(`wx=BtxecuV12{fM$&kjV9!r5iunM!ptz{%PEP89|+;k`X2l$ZDKKR z!KCv@Szh?CHoYbqVTJT6g;M+pXjOO-=Mf_~r9$ffXgr$Wn6mlk9R&3Z&)1QxNt43= z9ET3V0)Vx(o!WvzuwpqECz#D84fLYT1j9tQKy*T6Fugq`MZ`#~8D3Hz^Kibuc$#*t zanBm}t?_|1et`a7Jg6U~Jl7~{fSgiQ`$%A5Tab)S7T}+D7eid5BFT+(LlW>zJJtXt zki?FgFhLVF+>nZtVOV|4cyM)GnM-k~^1}cfc@NT?>RgPoh{94G_|xswXSG~{{zV3; z+pkZ8afmx5G@447_6~Xv9~^cMdPh~L8P7s@oDqBlys2L<#8U&vEW>FDpR=?xN`(GcAWf}jb;&2UI_F+c~lAeK_SF$5{eE@>Rqlsm@3Rh02O z3Eh-K*4D;((E0Xw9aKhAf~7KGF$@tyWALpEr3O^T1x-RNzH!p> zErxZ$79VpV>14hjRC4!YOhSrLJEln~+R+g>@?K5!d-437hGdMh+Jp|Dg~^K!2Yo|h z)eqsMX4k51!Cfa^^=B>orzSTnc!s1&NTTa_TPMCuxLRk>U#XlwfbyPQ)df-d)248v z49^>cv7D-msotdD>mP0ussNo$p<~$~&A+14&#+tLV%oHNkq}A+bc1f#CF@P23y5D- zkfCq-=iQ;IAt+#2K#8lUy{xh!y|(5hPwmo{V0%(&34SS)8q29Tz>pRXEF6tD&ZXo@ z71af^#0sUDgwYgK?=nd4L_evRbX7T7KI!-=nI=%!IW&?qxKczfq3cT8d&gzFW9Zgc z(d^KYlLteAl|W$4or^j$I*>G4aFV>0w{O&R#Jda$hW z`F_tiA<4Fje2#1?fov)(WQWkBT^CN`gO`;17v))y_Lj>nQ=xi*{6{heX-9+>tElR| z9+W;+zB|XZe<|lHAQ#1>5ttS-%xP{wD@Nj1(_mV!<15fa^=-tumkY(mz7 zw`5a|bn08r(ZW#maGmx}hU1kTEJOro4dyJDSm>})u5Y_e&MYW+D8pRU?I!-M7JK#O zirW{yc8d_gDKsj?P3VNW9|cz?cEz7ewLuIAK*I(9fm#MlF7edagwwpd`Z?9K&?}&Y zlgu3wB8PK7oJP9V%A zaWfU24x%B%Kv^;uQK2UXIfvmt@s-jfRv z=05%_FMYLKx4PSEaN$#hv%A(8t3LQ|3p8O+xgf7^C(=&_>&^<5sl6&m!fnMW@$RZ% zA7THsrA)s7%3T$Q(ImgwQl1wI=dKDA&!N6;DbUL~)UmrNP(tLE;&`u~Uffk_Qa*zg zVG31mOQGH<#B+ssS4GQk67qOUvEFH zBamrf%dYhQ(J5v`?LXD|r~JyjVwLhc{RGhmPhYKHyuBsA$_D0(H!fdd-7mK4IG?*Q zaWNQfG9l#lMzwW|8zKM*#{?UyIt+@CaFA37QgY;6ju}qC;fLxJT4cczKM0dmd~?zw z{Og_{k_pb4)J~O!{xGL<(pTu!?e}VCTzlT2wurYlrmE*BIitGsS4w?(zQ!u%!Y$$I3=o)2 zxITT()R{y5xUZlG0g~g4s5dMsj{h#q)a{Pb>U>62PV@0b-`RpoL#>I)XL@FP9)ZPi z=Be9B0*2Fk(&THfT9RyH_C+yQOA?mz8J8=bzHwbNG*_?sO8^&#ZosI%IS;U#f=2qC zqr)G1{iA;OLAQVSu&=Ib=SfhF$P`BehrQy473Ra@;@cc=>RJDz@Np={a|7gk)Q7-k z@e|~_hNUIbinnJP6rGkgwhJ(GUuzgQ$It4hTJM93o8+psu5pGgBm5^CnP30>gWi9r zp609fUYd((`+e(D5P2E|JWph6AGLlxbsu&Pd!2`Ux7Yfxw*gOPIJkNP@~ZD)RzTa6 zJPDLqP zdf}&PnfBh_3mD_*kh-*0K!=|cxQ1$hA@@;2X6Om{YGBG40d*zX_$Jz5|uD-~0Z zqs=S5Hei*N77o3*x2)w~IzjCPlb-Gjy<+PHxewB+-hQ>3()L<3)Ka&p4cToW$O?v| zFq~RuLWBvj-NJ_3tyVVs%UgVWVCynqT#yxIu4k-CzT0b~V8Zg)p|5V(^+12i`afgN JsMy;o000illFa}B literal 0 HcmV?d00001 diff --git a/en/tag/crash.html b/en/tag/crash.html new file mode 100644 index 000000000..22ba845a7 --- /dev/null +++ b/en/tag/crash.html @@ -0,0 +1,296 @@ + + + + + + + + Crash - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

Crash

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/crash.html.gz b/en/tag/crash.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..3f9b3cf71dbed824411581d26988f425dcec781d GIT binary patch literal 2891 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 literal 0 HcmV?d00001 diff --git a/en/tag/discount.html b/en/tag/discount.html new file mode 100644 index 000000000..814c764c4 --- /dev/null +++ b/en/tag/discount.html @@ -0,0 +1,296 @@ + + + + + + + + Discount - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/discount.html.gz b/en/tag/discount.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..287007416eaeb375b76ac8cb8e28c63ad311f590 GIT binary patch literal 2902 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 + + + + + + + disper - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+ +
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/disper.html.gz b/en/tag/disper.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..b2adb47c6fb6236959ef5ab54cdb04a07a75afee GIT binary patch literal 2894 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 literal 0 HcmV?d00001 diff --git a/en/tag/docker.html b/en/tag/docker.html new file mode 100644 index 000000000..7423d2112 --- /dev/null +++ b/en/tag/docker.html @@ -0,0 +1,296 @@ + + + + + + + + Docker - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/docker.html.gz b/en/tag/docker.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..0ab4f165d5dc2a5268cfd23b02d17018b03d1ee8 GIT binary patch literal 2931 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 literal 0 HcmV?d00001 diff --git a/en/tag/dotnet-core.html b/en/tag/dotnet-core.html new file mode 100644 index 000000000..4506b5f85 --- /dev/null +++ b/en/tag/dotnet-core.html @@ -0,0 +1,316 @@ + + + + + + + + DotNet Core - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/dotnet-core.html.gz b/en/tag/dotnet-core.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..f5255a2d435971325192600e9a1fc82b043a06b4 GIT binary patch literal 3040 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 literal 0 HcmV?d00001 diff --git a/en/tag/dotnet.html b/en/tag/dotnet.html new file mode 100644 index 000000000..afd18a1fe --- /dev/null +++ b/en/tag/dotnet.html @@ -0,0 +1,316 @@ + + + + + + + + DotNet - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/dotnet.html.gz b/en/tag/dotnet.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..53c89a92882eac90aaddfac721bd67c6c56159d5 GIT binary patch literal 3037 zcmV<33nKI%iwFP!000021I-#~bKAD^v;8Yj=CzVrlhonVu`IcDoTGgcr)lk8lgVfx z5~2`;1Vez9)i(eAEdY`tDN2!&ypEm2B(b~Ldl$#>izh!_T>ts%DVoWUo$U|RFT`*Z zj4TpaXZ!GlVE=3%!Ot)x5+iSh6G7z2`t|ym{m3d0MK~lQ>z0yv%oAxLk4KV306M3> zoQ-^POFd%imqSD&Dk)~R@Gv8zuG6WInn@YkcH<3G=TK3;UjKi>W!kK)d6KPv^5sKyD8Ng@{`iw6TiB^j%EN|ZB>tTVI*NiO0t z{G3b_84J0qYW9in5*pWdf6RD*@Pwxl!AuJzXEX`~DBEMH5040pKp2lhfJQj-k&h*w zU_nG}k}6wDflYF(Lr4==0$0Wq1J|9;=Z-L_TB&4%CYr^oDzFKUhBzQw&FyMX;g-HS zaTMgV(U8&T2F(&O-AH9hh%a2sn1dxyxC=pYWyX<(a%ciq&gxNw;PfyxR(2s--M5jc0v+XGR5=AfWlNA_|xswN3~pn{zV3;+piCTafm%5 zG?+;kc8+?F9v*j(dM8z=IZu3hk`R0Yys2L{#8U&vJi&1ep*~bWJkEGBKo9!;esy31 zpae#`@f{MJQ6D|CJ>|~8PhPRDR+Xsn;_w7~SrmQLe{tNm7Mzzb-*xDX}+G;XOc8dPn@zuiXlCVTMkpDqa4x zbh-q>gAueUWr*)g0Usb6s?!Yxm!^!__!d)!p*lCx-P?0!FgH{41Hrw$JtfPO@wt6B zKsc5B6h6L(fABX(XWHulDzoT>rKAMl%=@;=?-+b5L9qeVaX}+ri*KAX|B7K=u*KU{ zNIG2D{vcdjQJ+k3QXA0WQ-y8FVZgr1@8L`T=%pT+Etg&k{nefUei|yJWp-bOCX*3Nmy}*StSe zH3WGK3n+0FwdYmVr?;hX$>VZqi*R{RX$gKQlN!sZIKYq=k4iWiZ<0#MqbjNmW(gHa zHV98MP`%9{xfA`SV$xRSWcjA!Cuf>KVdv0DQtw6)9Yfa@wGU47cE`}Iv7*_bIVV$$ zrdTlpZOYK4XXvYFBI46a5~V}e;5VS-ypORqN@Sh=z(X>0aZMTcgL)`g<-`4+bw;9H zC;1TBSOVEtR>%&aN4w3O#04+O*DuPmAnh%uTc$$w0{M?57SfIgEml_5dp#(9s(g1& z%l@UDFM}+KLto`ilLw(te0f^V2D)P&An5Mft-O6U{5Vhy;?}|GnyRJDtz|Ic7@Wok z$QpMgi)lM_OypcH%TM=6SFyS@OF{{sTW8fcUzrM)x+h3jzvs7I;GxtN(uADcuwVPOs3G#5=ZSmSk05FpC9-fNsa`p?!i217zxNn$k0Wp zP|Mq=5v->c=ve}5WatoYngytbuld*{@8?zmIP;jPCHPoKSpKPQZS08|PU7*&hs3|; zF?ykJ(N&HMl@VP$KqvQ2%#cIH<_Q4X*&YTg0@H;NT#5p zMCD)$Q6Dm0-WV0RPY(`s0&mDg)l5`Qoe5XiP)ul$?R4RUVyOEQ!Wi)<3q1%#Bnd#v zL|AJRb5Uk8PtX+(n)7l;V=~&27NSn~qIiZBcT~~rN2Mxo+j^yg8dvK2tPN#)dvDG} zSh(78jl1UaR@c-GUaY-yf2}W8eemBFXv&~Jf$F`RNY4z`y%j1^I}#-FcNHtgyRU-1 zg;n;BGW{1&?yESAM(N#-^1M(u_f?>9A>Oea1-e{Z{ruv-3KS8!qd3mXr`PvYnwZZ? zB4$wab`wuSh$nQV5$~&Ll5-|@lh9H?v3E4h?%6^O+vJDUp2{u%9%E{7?g{0cz zl_P6BVK{>1GF0a}BJq~^o*%8^o4rfn-u7IdOmWJj4q$yqjxbZV4bla=BLQ5q8AYt~xLqaebbXsQtY926{%%7VlCFP7PmJkZq`6o1yJC zsOx+N5Gd(nqwnm%rJ>fu_^Q%nXJSoFDhol9EOMFfR8)sBQK>?dH36}bsX;tmT;t#+bRtWIyzabNr6HUc z!XuI|xlbG#L3=JAlPLsNJHUrX)U^2ipk4Y>IA+x!pGN+wPhJ3h?U;MUXBnShhIC1n zI6&DZ<%N@BPuvDouiUT5$IKZ<^W>!QYqP~M>^tt``_oH6#^3~Brw-izZ zU3fy!R>1OU?x-MtfftZrMysE)paAH?Pt`Q-gTD(Htnb(X$?@GdG(C~ z?C>P84oiUg#v(wyf~7T3Dh=tok1&!KywZ@m9+**Hb1$%fJw%oOLgxYyUavUh<`R3j z9=@T}t%2TLbPAj|`;~hD4f-$jF0PB7!`eX32+DT(_se0rycE$Gu8$W#`t8yIfpUum z%1?g$&9uI1MFeY0M4(6WWM!so=y9-lrk@O0Wv0TRi<r4*BQ5{{o7~L3 literal 0 HcmV?d00001 diff --git a/en/tag/ef-core.html b/en/tag/ef-core.html new file mode 100644 index 000000000..fa6c25513 --- /dev/null +++ b/en/tag/ef-core.html @@ -0,0 +1,296 @@ + + + + + + + + EF Core - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/ef-core.html.gz b/en/tag/ef-core.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..d1b796dfb008b818e46a70248448e93b7d422b90 GIT binary patch literal 2917 zcmV-r3!3yFiwFP!000021I-$1bK5rZv;8Yj_Ii?AlhnhBV_9zVbd{pQ?$#G?dDI%lLtmy#Lr zLsDW&Dj7L@@)SMdDM2=RO_K=6@zgaF`)jO5JSLL<4s>~3Bl|CpQ|8>HiKNM#OUL7p zn|*)(@%iy@=RY6kgUcVTf0akc;Fq73hH6xklqV#W`OMJhBg*pGD~RPK&Nq>4Nt3`|j(rPZ0l?bY zR%<~aSh1XqW6W|%J-ui*K|dBY5Dkd*7PqIQh!}}A!z;>j?&pWq(_&Z~k80y_ZG2Q4 z-$Q>?59&uL&o+vhAgff>Arcta79^!X1^#ir8sZieNp7U=6OX6bu_h>nBzD?`37Tl( z`cxzg!|HR!y{ps4T!MX-A13I;xtH8D=OUbj6qXvm?{Ltb)p7~?JDH&2xIGERA@+jM za3NvZIT}5DdL1SNwZ=AGzi(y@`#rsT1 z8srtBlDqFB;!}+J5sgdHPENp)4_cys8Rf63Pv$snP3Z8cOkOlL=nERDHVDTpyEbhL z?ivi$??(8KU2a(L3`vuaSl98sPJF4bwa%ceQaOJD3!?O=O<{*A&O3yuIaL`` zqhLH5A8!?^09`JiW7#6jKcdr5u-oEd(Y1P!5K09My`euOn@yt&h+9;UscYKi{i&)U z$YWSQiEF66tg=46uFXrH)Jt28>yt`L@S#jhCMA!Xs5Y1-QYghF zj257Jn?Z6X`bov4t;)&jNyksgG=aj-p^>ECl_GixU02*cI4#>9L$}3>W`~xX1Q-Qa zF#~PN)TL+W-|<`|r!PpHO2o$i*&E@T~eD>l_gr@qY` zRfcMZ>tb{^otGO|2n0|TysCLZrMgCyzAgET)u7;^jBZt~yV$OE*6T0VyuEO-TSSf^ zjCk@=B*dcu^)3TSm@h7uR4y(_039uH)cJ$ey{P*6o-dK)ND!&2O%}xh5)v|WQ6|*> z_DKvIsvJE{VUr9k;#Ic*?f5k>+wxA`jCGo!7`6=44%H2I5=Fr)oorl;7*2$?2aX}M zB(YN!krtvp_t4Pq36CKVSp4s%vdLX4-VMA)6VR7z(Q;MMq%n4(}pXYiKh)5Fh zloDZW4AUy<6fU6i9kgoo`eyw5NDI-X`=}a&zaKR;`&oVq{@Tuaknw6gfVCxQ-`^|eR)}|1v=qlak9HL6l}5U&B0(srGt%pws}sZ%daV)fs%VmPCU%tS zLgCy-Ak)H@UFrX$Q%s54bE-2>`8W59P0FwI6GR_8{cZi??JfBib}xT**YY{0{cMxY zv)qn|jlpU`K*;SaT30OYaDN~i5p1aH7%1YwLQYLk$Nk9&yUyf z&C!Z*uSc#=0-Q0aJxbr$pEiZt8(uoc@l6$IbWZ^a6M6 z{I+fU)_03~7;r8(pWZZ%_6oh)<5A0u8xI)N{_qy(QtjjN`7dX{dEE`ApC3 z&LglmPaSm~Nx*QLPa6Lntd=CZn0;Q%wUR{5`HagIPhZ$Jnwq;-ef4i+-}V^QSLGhI z6VS+baB_TqG(H&*?+wSt560?#Hjlk#L?$>S*dG;Fsxa>tH{IquQ_s5Zg^PVL&kd0C zUZ47!#m|s!8s8hWG=TnU6pJ zL~q|UkMGrcC&|R3|F(At+4cO@~ZE> ztbz7}EcTRIQ2(IgjzKXQVqnqdUZ!sD94{r%7d&A^J@tD=wBEt`bw`LDr3S$5wG`3o z1U5FDA(>{R69CK$)BT>Ya1YIDTtOFNjGLrfa&>C;E$Y>7)_Z7To=vXr9iVSeuk*Uy zg_Yim4i=RvL|qdQD}@@w!~6n=KSF6-Ddg?o-8v27BoH34{E_>_p)vG}@*xQzu=*iB zM53j|j|ctQo60ep{`e&J*M0I4(ASQ+XMC3NIc7+GQwM@PMEwx{f|LhngFo+;j@%Jg zs#F@q0TD(I;1Xb70}^F1+JlbV8}xhlO=i#KHEP4ZLa2^t_3tyu~g?) zdGg+h;r;cfu77EU`QN-3)s@mJe5~*EEy0bnCaBE3`oa@CJPobG8le6{6+pd&y&h1i zP3f;@!Ax23YE$alO9kZ(Ut6kR50NE+(76DFw`&f$y~G}FhVLkK8=$uroeJmOe&d?5 zL;tnj#dXm$XjbKdpyJqhzaFNmJKN51eVG5?_iHEC$}Ku5KmOqtq?%`>T6Ea#AOby_ zCmSmjQxC)KEB$1^8Y@)}U0qbR@-GcgzhctSouO0gyCC;LTGe~6URT=Qh=zLV`m`gv zRf4QxSPH{xWhO+JAiFJWxZP=Gv$?#*w+-sL^cWXpO_`e+>yq#G+9;T)dF<3xSL%A8 Pzq9&3`h9{W!zus(T$Qc` literal 0 HcmV?d00001 diff --git a/en/tag/entity-framework.html b/en/tag/entity-framework.html new file mode 100644 index 000000000..3de613a16 --- /dev/null +++ b/en/tag/entity-framework.html @@ -0,0 +1,296 @@ + + + + + + + + Entity Framework - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

Entity Framework

+
+ + +
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/entity-framework.html.gz b/en/tag/entity-framework.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..9d43094e22eb5738e0f543890ac181b5a128826f GIT binary patch literal 2912 zcmV-m3!n5KiwFP!000021I-$1bK5rZv;8Yj_Ii?AlhnhBV_9j}+0Yp@NG+sHZ1N$a*E8!^`^~xih(`&Qbk0bPE+sSK zhor=mR5Eh*B!=G{Jxzg|B~P!Ajb76v!f`xx4aEK$&k>J_q`$)gJg(9Im&Yk{Zqh{3 zWX`4I@yN}-zyJ9B__y<)kMqIh57)oSqh#>Q&q`G_s!7TdlFEE$@o*xjB$sNP8s&l` z>kMr`l6g{xUy`{ZV;p7Ts1SSd$xLE}(>+C7%}FhpPu!gvw^ zG{Uiud@S)C3nE&JG}%%L?2=;>LYA@`xH7AlxbAYfbc8|GN+nw~(Jfw6fn9hs!XdfU z+O7r_Ztbm;#9>JrO&N`^&>|(lRw@A@zHl*P4wgXSCIZQo8D|zw5=K4kU9Ot@M$e^$ z!4#7ujj=MV)@>yjI=}eo1$qiJTYP9VA#+B=f)EHZ!r=*A&i8aG3%5(1Lht<7Eh>`SNZThKPqkxBPz*`z zvuqCFt*Df`;Sv zBp8R-3qr$%glXq!^x)p{@Mv_>go1?a+w+v*E8tE2*bq-0Aj=ddC4_p>1o1fI=>&Z_ z9*>(7a{whUGfZxf;Eej{OV9JVVC)q8G!qkaR2QVCRA&xBO43Ujg)QaIv3C`wJd1rh z;gGepaqbPiI^6`7l7wKX3|I^|LK@|I{F-)>2|CkW4^V|g=PV;N0B1S2Res0dTPaEmsE!L7`&xYCq~%)- z>w+!bXF}2-uLzageHRg*V$_dlT#9yb0*-vp68+04e@%Td$7yRqhfihlqQgO7&`9+| zIBwasXe(lGnyyQu}w8gkSsk8(?%B03}Dh@ED#iJUI#+zqS^0N$OoGqLHTWIqxa?!BtrA&h-}8t}UEERz{-hpiR{3HjzL!kqxp_=+UkVCvm|`%KeM-EJ%B+X0<;EmHJ7M#*eKVxT_mq>CXh*V`Ki(&zp z2^qR56KbQ|R%f>W?Lam!+wxA`jCGo!7`6=4j@b=%5=G@Jy=`2K7*2$?2aX}eB(YN! zniiry1VC9YtB}x>6CKwbF4}a^dPJpMVMC6gVQ~P0Q;MM+%n4(}pXYiKh)5FhloDZW zjMpmr6fU3>AM|YXLT4QPNDI-X`=}a&zaKR;`&oVq{@PA}kos!PfVCxi-`^*G0 zc9iKqfO1#GVKmNec9iG2!nvygMY;IEb`|eR)}|1v=qlak9HL6l}5U&B0(sr!_w=Ws}sZ%daV)fs%VmPCU%tSLgCy- zAk)H@UFrX$Q%s54e5%7w`8W59P0FwI6GR_8{cZi??JfBib}xT**YY{0{cMxYv)qn| zjlpU`K*;SaT30OYaDN~i5p1aH7%1YwLQ)+?$(eOIXE+9LpQ`g`k$Nk9&yUyf%^8bu zuSc#=0-Q0aJxX8ZA1ZoXH?7`S8Sw{7FM zzFXA8fOEO|7^iW@SLoFqk6LEjc+#NuhqpMOY9}WNKCIe)rPLR%H(147wZ&YW{sFTw z*XPcuI&Ekl^cD1M@gc)0QEymS9Q<9FsoNc-wfPJo)Ux?j-`RmnL#>O+XL@FL9)ZPq z>Zp530*2Fk()jOSwItca?DJx-l_YA;XI!p$`ogx+)LgpiZvbrU+a9C(&fLRx0vZ_) zPLA)7#wX+9z2W%y!B}0?=CRj|$OMN3`=jD+73Tfo%G(@l>RI=_aIr7uxdC$C>*HUu z_!+Wo!_tar#oIFtiq6Zs+6v6v)EdUk!LvG~)|;T>4!LQqYn-CX5Pv{3^YiDQ=|K>m97$dxY3gY5?3`OA) zl4(Xd0l>U4-R~I-_t31y6?7rSxJk+-SEp9rqF(Kay@w{|+2s1(0s02@I`7?GSn0j! zU{R?;)HMOIQm8>Z%r9{GBb3IKLf#JEtWAellQZY*2*mjb+O5D{XH?Lp^nm+L7HVLDn!V zg<-Wa6CzBI-4-_7?zFPmT;AfdgSsv~#syhZ=4Qsad?j2DgXc++NtFL literal 0 HcmV?d00001 diff --git a/en/tag/expressjs.html b/en/tag/expressjs.html new file mode 100644 index 000000000..40e6a83cf --- /dev/null +++ b/en/tag/expressjs.html @@ -0,0 +1,306 @@ + + + + + + + + expressjs - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/expressjs.html.gz b/en/tag/expressjs.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..507f805019032cff7046bbd768dd50f1c067f2cb GIT binary patch literal 2943 zcmV-_3xM<=iwFP!000021I-#~bKAD^v;8Yj_O+5*lhonVu`IcD&bAY`N$mEulgW5M z5~5&(M+nfe(&oRv1wc|DMJZOB_Srd161$7NcX5nAd-C(+i{D>9MKckxlijiWg&2;* ziA7@TWEZ{=9GvVT_!&n;VC2tm#)+6%zg#@CA6n*6j3Y9!ZYY_jNhU1hC$S(gfX-bqlG>vc^k6k^qyTWXg#6-~dKskvG!vFCT%ADIQ6*Tn{;rL19 z=HGww^Tp*Zffy9i)AqRc?EDzujfgK1-(g>gtjsp~6 zfj!I#Z%k5WODeEUj&%rm#td+2Pd;+p`F!qhjjEJNHfW+yZ`CP~N$PAOM902<#;aYWf-@*1Lfju-1lHl%?_WeE-}ggF2! zYg>&8IcLRmHjXh{2?Ofszj~YXjpu>!JT#sU zjOPdFkLpGKNafjDQ6prPs@g{!1KXTrbXtLb*sUIMgNh)x!VZX^WXiEdD260<+=dC7 zXy68vrwqgF9!vb|cO9WuQ{sZ;`BWkq5iNr2*x4y zjL>i|cjjlE;CaCXlt2 zaUS%(I9>;pk(6K|4Ol#`h1AORlN*xNVcf3_C@ci_XEMA;Xi9HMaQu~9gRacb>(!+z zpO#LSL3l8NR;7&at*+rCWJ7hjrr^?)F&p1t$}kk@R=PVo&J5;ea(*DVv$G>*nX+VV z-;NN@MRE)uKfpiuo1zot^#D~^)MGg@0G#>ImiZlnZ)GUepeinC94PU%la^mG%nP=- z%DJG^MMbFO?z@Nt6r*lL<5IMvBXH!shUlM1i*p(f4`+=56+V^8i`E8xMkCn>;kaSf zx^2N-r+xWnE&PWzH!OIDq)AAu>UdWrzKq*SXV6&5oIir{o?SNuk@{1nu)_>5T7)s2 zs*I_@bT}9uZWO8jozI|S*&xloqSKGC+u&l>HhYl}N(J=&e$XfDO`{5kTU3y-s~hLt zv8*A;XP85YtEs)LvH`s@#zm5vr7gzhpwtrlk|x!blW~9{Egl#+3eU@hNa8xG4Q7cX zN-+peGf=(FAh{FuCS%f;s)YknLk25D#Scum!k=2kLjaWqbA z1QdP;m^zJf+_TzHk$lVC5eR}zGX3|1)DrV>>Ao%0? zK6xC2%|x}K+TBOAKT>rKPsjFPbsDUca$=AbJpss#bd*Jn;C75 zGxMS^C}VM0JTaVd<+M143?zu1$;4$L8bEp|yNN1csKJrSdMyE54_`CiWQoLv3{1mf zdkAL~L$UM-Vs@z<-genWr(VA_5P6G!@h$h{~)iWf8gPLal zQgDO+Hp>GP2BTH7Hq^GeyLBPL!o~0NjA+L#=dCY9Tm1P{;_R;V#kvpv+X77)6m=+h z+lll{W8GV!GP#T=aj>meCEk4%>)DWE#-M3aqg=?(SpBYTMBfx zIDhrxz6ul*v86c9PfsuIt2AjcCmEkX)!S02mlE+@BHmZgGU$VnXiKqPE2R4>5`>c6 zO1{~;Izc?4bA@-DcnYXGH3MYLWVX+k5}A*LwNFj);xHF{e{P?(Vdv@8FgQ2f`7- znyL!(BIGS3W%a04>MITI>q)M+llOdgBp z3v@=%DSE7BY3_P`(@Ss7+*Omn+^rvu!lir|#+!h>Zi=XH;F9@UfkOMuxqk!*2$|qhbF+e|Y$CC{OAa zv0snK6o&){gW_-<#)IO{gWlOzqwW=ValpNW27**4dDfGkAlud~Et!_QJy)RUv^=b@ z!1PhQW?Y{<$Wscn&MPhv)U9=cGjti^cW9!2{rM+)^R|AFBfmRo&S%{>ol8!{sqZIw zEIRwB^UJCIuy;7 zd4}uw8G+X4DI@Z&+tH$R_ErzRLhML20B)zDh)yf8w&4VcEGMl1U|tyRcC>{%Xku^$ zjg~fUnk6EU8*|^Hj&aALgGTyY=laeb`WkgwFJ8DX(-m)FQL2KQnt)g-)W9DtE^zo0 zj>u9WZ+dT6X>bS1F(Akq>(CequXseJ5Ln$1?<3yO;)lJi@uhOix<5XJ+PvbEkAc2& z%pL8sEb%Zy^3E0nd5F3p{0~y@p*8-zQ#x`>V98Rc6$eBhae!y(%q)pQM12bl;B))Y ze-8$OvzG^t`$kArbm0j>w*gC*xg&%81ztdgnXG;)f&!o`Kb6yT_x`A0w4+1nQdR*S zevse_sso1HM=_bBC*ZT)J<#TI4C>mHhBB5+Zlx#hEE(QijcW7y6brt-;??2eGJLG> z)OpdZutuoNyz1y1J4qH=`v#!8S_e=sVL1zwj3ISN4@Sy@XAH@EYz5^t7uYJ;ePnSU zbjktY&5A>AF0uRT;af`G8tBbMr^0!=TRX6B(ZA8VxGs85z#ub%ikJ(@3SGZjOR!p$@NtiftCRSsPpSvT@8ouY2V zq@y}Rr&wA-?t`?dmY1Ejw7nJ$b>u;MOLnUSS;4R*hSkVSh%ipJn^<$Z)y#VRe204{ prY?O33z`*Wu4k-GzPoFqV8Za&u`4fEs0Vd_`G1e(s)o-j004omyMzD$ literal 0 HcmV?d00001 diff --git a/en/tag/external-display.html b/en/tag/external-display.html new file mode 100644 index 000000000..bff2a39c2 --- /dev/null +++ b/en/tag/external-display.html @@ -0,0 +1,296 @@ + + + + + + + + external display - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

external display

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/external-display.html.gz b/en/tag/external-display.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..faab66aa10edd21f979c31cdc5617f6413646127 GIT binary patch literal 2895 zcmV-V3$XMbiwFP!000021I-$1chk7?bNefVxw}bsYdeoZX_}NR<+0quo3eNJa5z1R ztvI5xWh}XAVEONNB-xJbI3eM3_q2sZwq{22o{^N{t%onq&i{J#2u)?kPIiat12G&0 zBa1}V$u7Jh*gx4t@G}gF#K@cCL=ZW$-km?T?^)%k2!~{3T~RWNc_J<3@ko*gKxfpK z(~(cEs7Gx5u#ad&CB@7Z9%f|JbvhMNQz>Jcd`jun$okWMcWR&UFvgOO87a}FWJLUc zKu_9w3cUj>+5ne*$8t)Gn4-g*nR3cbuj^va^fdI98EcIcCz#N3}I0R^f zBOm!#;xQIP)E23-r4-mC$0~$0VI^>7Rxxnh*=*(rgQ}HE)@Y(xys845@MwqwveDYE z1{H4UtrJH{|#6 z0M^#FY6}X%vgK?H!9ADM(~C9}^dn&d(Fu{>baP6Ih>=(`yr4Yh{(Qf9ns!U$UTNGf zjSouWJLpUCpnjC{Y@?_FvT{}JBY}Z!K@vJCz`yPmLtLXGA<@}B@pz&gYk(q1V#iIG zpoto8mKq0W%(!=XT$zipukynH9XWU6>*`#HlYqif9r*2b>a$udK|hlL>h|lCU>ssk z2@R$ark#V{y*r29gWgdUYQ_`a9w!7}0&nWWhIncKnI$;RA=Ha1h{qXE2IzLb->*)L z0hGW@H@-%KGwP$;p64~e*a`M&DhBAFEJ#VI&KQD}Bo{OcYRVmB?=nbu8u@n2A!}>n z-0A#uyb3BIF~L$9FdMFfG|Kh(6-lZv?k^=MEG71)D!d11La&K`{EJ(GF3iyBRHe&D z3#UsUJQzXCQik~2l=1Oy9Tzn6wfM$K^S2n*1zUVf zg`|^tK`7_$w~+W0qjpH6T(qMjaOAz3=(of9Tk4ZBPHGc6dt{a*iYtxy^0YziIA8fpF!oqmJe8W+>1)w6_Ij{VrK;8eKr#tbz<((?9PH zRSiKN!vacNMeTW&_32eV6m|}cB=s&8(F^FhqW0c#-tHK>HC8k`H0NZ3 z(F7}IpiLRN^aTAJjYWL?oJ8r+HTVtaIPYVuwGvq;zw?j`U0hQJ{-z#ER{3_nXPuB} z+eN-bHkLp(mKCx?=+Uk+Cvm|`^8JhQEJ%BcJwW~=iG{QyLW`AE^3867Yl)VXX|*BJE_h*BK9*wQ_|s z9)6&OsM9?w#^C4&70rH^!-AvMGauxIE%zv;Cp_wjBid=gnQL3`KBYlj#2~QwrYxKH3AzOj*v`J(g*4{<2S= z0e$V5JH}@jA7h5pmvkV=1Jn-SFG#tER`~Ny?#K;+rAnny91wxT0iIYjh|JJK@Y(hrXmc?Kb!|ce6-#Aql_&2k7~Wlu>hkwxnE&fXQQRgi z!pHheUl3eNYk>01tM59o!;`?;F9GWBQUTN}*yI7F(v<#I7R=-YuQa8;xRg;|@r|Vd zb{|;+2%QQ*c)#S3>r3qZYWRjyw*q>7(J62~>{f0l8}wi5U0fGEAz+XxLD_lpZaGXB z*R_q|`e6RlZ + + + + + + + Files.readAllBytes - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

Files.readAllBytes

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/filesreadallbytes.html.gz b/en/tag/filesreadallbytes.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..9610aea6acb84b981d89ef4c78ad1581430fb4e7 GIT binary patch literal 2907 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 F007dUn6v-@ literal 0 HcmV?d00001 diff --git a/en/tag/firebase.html b/en/tag/firebase.html new file mode 100644 index 000000000..8ed71e8bd --- /dev/null +++ b/en/tag/firebase.html @@ -0,0 +1,296 @@ + + + + + + + + firebase - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

firebase

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/firebase.html.gz b/en/tag/firebase.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..30d1f1bf360555585039362896ac838eb2d01517 GIT binary patch literal 2886 zcmV-M3%T?kiwFP!000021I-$1bK5rZv;8Yj_FBoUN$TO$u`D@t9!-0bR};6_PA21l zNQgoV5)1%ZR@?mdTL2_QQj}uldL7$|1roc9eeVL$_>0FcA6@+Z>Is^wn4Rs9^#@`& zi6#z7oU?s+LvVPukKkt<6NOPQ$3hY{aele@!M*QPrxF~KiE~ZKBIQCkDBy`A34ktW zsOFQ9T+@KK=HU?0ger=eD+A2Pr0?}=q~=PcF8Pqr>xuK5`^&leh{q{bbjnDDE+rEZ zMx?-0R55Zkqk>GaB*;Z?Xd2@r8T)o-e~s6eCq&UdfG|%gbpI7_%DfwqDw$JRFiR#zpm(z$UxAv!TUqTBZQ|sQwUaCA~mN;BthK)%R(3;Fau#cjR6|rBt#)r zSnEqR7OAtP71$=nCWK6|3b;0>9QpoYvGAltHA*F0G|?_zU4d+;dhk)$q{4g!CS69_^3sR3 z=`}G3YoymH6ync7tI~@&j~Kxzl|~0Zl8r%$}#+L9Aa-lk1QE+L>n2WD5Wfimwuw**QpsEG@jghqVpq{Ukd>w+!bXHwDG zvLsY+_kB!4icvSFNg>+F2{`gWL-a4>Uh^AJ|SJBGw7>y&L2T}7gtR|wEm1K+(_VMi!c?ZDq?Cd z8xDrYTZPI&7jx)Xwn+1j==2lpHn^C#t)3@@LIM4tANI*+)0hI{=M`k^+rD{!tZN7g z7?x1tYHBa4Y)G#w^NOd{(w5-rq}CFAXp>sY={UfU7LO`825*`v#gjU!3ucKmN*1jAmFf z18vIKr)TKvWGd6s=OoF-zQu1r$3-9GY?a74`;o_F?Bj+q@F(?9vC60WJ?D%hyDsu6 zvZ(^Hsj873LyvZyJBbfoQtV%}XF=LqEw@UA`T_DE5e_nr2rX7#)dvG8eY$-2POJW< zoiB$hi^EXoPMZgzP<(Y-%?74p9wF%NyPcwaw)}Wd4ARcQ>4vJM&240`;#i#42*?|E zEsJeCOiUD9uF6mU$W*bWG%G@aFPyV_oUbhfo81#6`vbGp-7?vRYyxk^rXHEpx0$2T zP|a|i56;HZa_0(>0NR3g6;~*AS1Z%ErJu116g(8+t?P9g-<8&S{pFgw=RS6e(3vra z256oZRLw67aWA3#&o2XkrQWJ~`Ut{lUseD7U`e2FQMu9A_^7~dXSW%y_GMGLv7fP4 zrRT$j8Jdx~!74JZZ-q|{^AW?TG}^}rM3N$|&;jTm8iJb_Rk3t@GdVKR+v13IH>}2u z;2Ik;361h&4lF2!q(3E$k#M>+lR!j~hzm-jvoR{m9FrT|q&Miys^!eO^N|svN%v7X z2Jb$qY4)?c6uh&U<{-gUO1`rtN8jFQa}kz4{v#8_`e(6jeM8maw&xmWf1@wfeej;c9bOHu3{Blbft$^T`qveO>ra}4>}2ApO~HzqCy8_i~f+}?gwHR2X$2f{JIma6gi-1{A* z^zo9KIG0m~6Y%Y^K2w$=Sm6g@vW{=hO{9N4@Ix}g8B@l8%mp37Oy6{7OZ1$ebM(l{ z(mcrcu9x0a!#F?M9rTau@Ac6HZrSH;+vctB4b5=Ix!Qa*Q#-fI_391>4Kr>$Jhm`ntYWXv60T45fZ2qbvt*%95}Jp1IXzc?$gm*#4U6)_ybC*Z zyTh?2pAp1aHr?twJ8)^KwK4hB%hsXDa`to&|1oenaaYS%9 z$nQ&GKFqJN?O~;v_1{Y$hjO~KK;C-S!o$$9r}=TZ`N9t1o~ROb+NemQsV z_l^g>`$Kood3Ue{PYE1cy#jglw_4UfyR$3_v|3R2pydKVGZ|rEG2}s}ujRZz5a7@`JiF(09;?V@UL-ml%Ah5a-K18yi#g7Nw%A3+L>;Cv83DtMJVM&(UD;{MFH; zekG(zx-dd$L7{tJcsj_R;U#34$@;52C;+4qG(Hi$rv7O2`v`P9Q``${h@SZ$@!q03vyM*gKU)Ge9xOlRoj zyDZ3kkXFr3tJ9XYH=?1Az8h`HZlxe=7>>qp8kq?ZCdqCKTW)t+*={9o@l}GVE(69T kSySd_#@gh&y*6?tDjqxb^?kV+m~W*17qC^J(xEB<0AO#H0{{R3 literal 0 HcmV?d00001 diff --git a/en/tag/firefoxos.html b/en/tag/firefoxos.html new file mode 100644 index 000000000..b0af0002e --- /dev/null +++ b/en/tag/firefoxos.html @@ -0,0 +1,286 @@ + + + + + + + + FirefoxOS - Sipmann + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ +
+ +
+
+
+

FirefoxOS

+
+ +
+
    +
+
+
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/firefoxos.html.gz b/en/tag/firefoxos.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..f3a38bf776ee7ffd4c56290a71c3a25ff55cb02e GIT binary patch literal 2821 zcmV+g3;OgQiwFP!000021I-$1bK5rZv;8Yj_FBoUN$TO$u`D@tp6yN2q_x{?CzJ6& zBt#(w35EbIt8M=KEdY`NDN3<=y*t~91roc9eeVL$__L?4pIrX-<{6sHn4Rs9)dylY zi6#z7oU?s+LvVPukKkt<6NynU$C)5<;{1I1++p*_bCp(%*qHPb|X!2smZlZI()!PPy~~ z9{c%s-#k4({_Xt7<7Mya`TD?mw#l&xAhEdaYXL4wy!~j zZ@u->Br0j6F{8;fnu9-Wr7|NV6h3Cm!xAXm#vr*e>$!|Dm|~J- z309`nx~(Kb=a;Wvq31xe!G}f@a>BgWp~?>elq)~3bZ%9^$@xQX5u#`BMtMDG78NDUp=~sRYx-vtrSC_6F zt(-1{@L&Y3OBv%^Q^QBdh3a%o!KEo zju6fzKZTbc;XnLK(V6yofGR9HWjV0`yv5K}`5l9AWhgbEIxc7uYVnPemTxhv3$}Ql z3rT0oicrbjw=oGRM%|burD!K7;K&CJ(Laxu7c?YOoHZtN_*5n@S{w8kja4IrlZIXE zwgq>c_0{i2_>XOFSnv!GVa4P12*70?g*VV`U^jV>U5Q9;JOX`J`R zs)nF|VF4wsruMSRhV;gomprvgTY~LLr6u@KCN-8*aeyH$9$7dVZ<hHGUP0HDbPrC;cE`|du%g+aB_}hC zW>_%;ZOYiEXXwjhD$>(eB+19V!EZswWgp{gmB=~!j>lx|bN4qJU#0M`a_bk6R&>VlV+FI38_)#3y4jXqjMToGbA*r89cle;nQkrtv!_enJdQyde!HVQFBQ&x6)0Yc4{S$) zUM(+ve0g65N{HN19Pfu`m-khglrLbfIESjYqfl=Y;)O!IucBqJ8|LwjV*R9%?yE=; zO6q{{X6Nbz@q{ik;(ZlOa?Zq#Qe7&Xy9i`j*s?4AZ*+XeCfu-#US!*M#$aOVQT=l_zn<`2{u%<0~OBXAgRtS` zjMagq$buDq5GL#RW>YTwn}Hva8P1v1=Fqo42s3q!mM_sOg3i$sBTI9a{0;0q?Wicu z4F~<>`g^tS#Vy;WZM&xRt(G3nIG3CE{k21(La**{&@ki1t*P2v-Qh%|8QF3{bdhUu8YRzmQG(9 zyEt?MM)f6YfZY@{GVGlke=``K4EqoI!{diTb+fljf_g-zI3hS46qj)@9~O6{<|Itd z`tOC0Lor<%An(0CFEopvA=fo5t(aE4z0jcOyu942z|7U2VceWls#8t9gD5T?>(;u# z8M=z_2Q)DsfBuQyzN;Vns`p-+i+T5L=SmQH9t1p3Wakidem-{}_KpX=heLPJd3Ue{ zPi8o{egpEV?@X+Lc4v7KD7B#OLCfj1Vlu+OV#tGB-T8PyMxdxZV?;f5J4Uq5!TLdY zggvDO!0j{?(P;%XHk=@t<)jq=%nQ@qjrS?VM&{Y% z`pyCR8g*JPYJFJgy=Y-ksY2MAfLJNiARaF-ar6U@$x0z_d+*k12rq^3NaPPZBpywm z*^-aR3<9eg;X@=ETKss>wcb>YS@*|hNx1HlPk_F5%su0?j88E`>N_3~! zKpXsduXN;=z*42sC=Q4~;sDPwnOPBqhVP2+Q9>5zDfn#n0JOQ9 zgSs}Ok%}doTjj}nD~9*iquTzu1q;7^FRIIkRromH>htAW>5NdBdG%Ep_IMUKhZdmz zDh@!sfsGPSvZnNxdSIq3c-EBq-b+Dw!xvsE*hAz9AapJO;q973ZZENio8enZ-3I9G zMW@1fw_m&9YSF*dyZAnOLBJq$f{HWSeLGB7w|%YQ`gr+$*tL#(m0Pq>e)|0{;E-~T zRDTOQ1w^1n3uJAjV(M|UeWlk1thQ3+(A5=JBmdGF>Q+p8x-;~OO$+2cNUM6|(rHWE z8_`flUA(nqw@Q#T3`b!&jm(4y6J)oA4Yxb3Y<6aMxTm&t889x$nld*t)+XQGwNWr( XdF + + + + + + + flutter - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

flutter

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/flutter.html.gz b/en/tag/flutter.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..d1aad3435087cb12620c5b286b5f115eea08db6b GIT binary patch literal 2888 zcmV-O3%B$iiwFP!000021I-$1bK5rZv;8Yj_FBoUN$TO$u`D@t9!-0bR};6_PA21l zNQgoV5)1)aR@?mdTL2^lQj}uldL7$|1roc9eeVL$_>0FcA6@+Z>Is_5n4Rs9)dylY zi6#z7oU?s+LvVPukKkt<6NynU$C)5<;{0;)gL~hxrxF~KiE~ZKBITKMP{0#O5&&J$ zP|hbIxuyYe^}`{e36&HxR|J@mN#E<$NX?~8UGgEP*AwSA_m^|`5sy68(RE+rEZ zMx?})R5EflW4V+hLoRwl(-NfT6$s;L4A2NCAqug? zQ!I#REK+AnDX>kBO$d3$EO2E_G4lPzV&Mscs+CH%Xrf)bx&qtqXpAFrtF?U%Dtzm$ zmnKn38;u!FuFyOqv#nHSgoMJ!jCoiBg_{^8S7w|zI87N1w0HSx?pr;V5e8EXTr|PT zv|6{7Wa#|j<#Y4{&}{Ib(S%$wBIblZbQ#8cIVUmk10npy(1VZCCKmG+OuCGe<%JJx z(`%v;)<~~YD8-+FR)rUF9x;MbDzpxO#)BD-DO*lnLo6@waudmhG%5V$ICKye0IaR; zG!_(s70bCe!E7mMpcic?7$(96qBA0c`RyqwB1U4(@QU)3hs(q2Y2LTS18Y3A#z)rp z9{RI-P(Mm}u2IwoIi;!&k-)&VAQ_!i;2-y^A#PBScfS2Y5`efI4vR6i#kZa8P7)O%i(ZXpO^wD zfth}Kg9K+ZL|+C$&<5jXIHb84p(9%mOR3%zf|O*JG>#g|o#Nms%6OiHZptBRYvbJO zeRaACDkCYuQW>xqZiF<-4fr+5>M;H{78I5e2XhtPBQ&EoBs~4buR&L4==JK-m7|r@ zWe^^Wpmix@d}Av32)R(5t|+)PWz5Cbm@*9Ixs~qTo;QcJnOYwR?(OX#4jqy*f(wS{#exz z6fi8H#MRVZR@snVTl12qc4RXJHb>G&y`CQ#TpG?Fy9QbaGI>q@!@r)9fi=r&l2s3gW8dJnpyRTSakfh2oc+jSGWKyp8TgZWu&nawe$P20$*zlh zifk%@Y$|JH$Izo)7f#}Xmz4V#S|T`w&ZhWLBT^A-Kt!-v2AtM>o3>5y>PKxL{1^# z<$}uj<&0)T?K>}_`p++e3=6eW_0$1`)4rjjXnDglc>3G=#oJr*f7z?-v`6_ILw>dar}@&2iHpHTvl$_`x1X&>+~Vv&I40Oo)gE7X zzk{SYU6K>$a>{T5zCBh)$|4I^_(7Pg;a?B@kj!w-r1l?uKZh_=7oGVMJtycK zJu^)+~a-4rx3?42BcHyEA_`}g|8`n%l(03GQz-O$b($n%6UOX zpbL1yhdVyoIQpnrh zyLB4EOCdZG`GSYUqX~3}@*$Z)V09yWh(tq+9}l|Lo60fk{`e#b*M0I4(ASQ+XMC3N zDP~B03kQNcLfr`df|LhngFo+;j@%Mhs#F@q0TDOTC>(O~fW z)zPEA6;c&l7$LNv(7i7_739zG5;DwW{Z$bZ0A2a1TBdvOX9Z&%9a5LJ3h3~o0@qL- zFytXh$O1hEpY0xiHdk{{*JdXWk%#;Psno{3PDkyLGN>T-Th#Ucg&IKU6 zU319oCH8PLd`qd@0KL8FR5w@ix$d{fBF@v&KaqO9JV%yK#vy4+DgUL!)W_TFAZ32rOKhJOUOq4r8Cs6nDlgK z=oPyx$bFDj^-inPmbN#dp^my5ZOLwxAZr+o!f+ay2@xj9ZVMZ3cUswOC2#Rf0$Y~> m + + + + + + + GetChild-Item - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

GetChild-Item

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/getchild-item.html.gz b/en/tag/getchild-item.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..75cdb2276e29a0ea2433b87ba4a21e5177c770d3 GIT binary patch literal 2882 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 literal 0 HcmV?d00001 diff --git a/en/tag/git.html b/en/tag/git.html new file mode 100644 index 000000000..c54ee57b9 --- /dev/null +++ b/en/tag/git.html @@ -0,0 +1,296 @@ + + + + + + + + git - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

git

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/git.html.gz b/en/tag/git.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..92e82473ddc75533955256ac3a1184cb0232b280 GIT binary patch literal 2891 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 + + + + + + + Grepora - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

Grepora

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/grepora.html.gz b/en/tag/grepora.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..9261097ef2b60cf0afcb38b325ee68ace776b18f GIT binary patch literal 2880 zcmV-G3%~RqiwFP!000021I-$1bK5rZv;8Yj_Ii?AlhnhhV_9men@@{T2X8ffS`konFUwVu8f&V&A&}H2&=A4^OUsd;JW}Wy~%P$La$y zoJ13cB+kVlydgNeI7IL>j)}x5nBzsUqVbe_hWZ5kW@N2Jep!nFl(ne!OlN&V8$ZRW>86lzYF=HN1MOYDn)^!6WrV>LlO#*9 zGOgBaB^kQB`r#$|7HBs3&}c#~84+_rAi4}=zMPYo_<<1qV(7s~X%mZi3npDg%JRa8 zwdpO<2y3L*DU{;RK&!%wIFA^?DHU1=K;zL2$CNE6KS3-n@NyH$hBPVsWx zq0wBzw0AOi_~5jEGB~S4EqE5X(~RI7;7xtF5Kk>2iwvhFgnCg22{_}~2z@>r4(k(B z03|TfPw$Z6jE3m*APCxE+zf{_7bA3H3t}nNn?jJ1?3%_=L%CBN+(a4Alh92$WNmGn z2fZ)OH$g$2B3LQ|7Q>B@M!5mMC0QND|I&iOQsQ8)!h3{f^p1q*U-~uZ$_%|;UAl6# za=Hw{gAueYWsL7k1s@?7s?!Yxm!^!l_!d)!p**+JJvi{@ur^cc1HprX10~Ch@r8Rg zLO7TF9A18e|L`wG7uxFqs<7yk<-`K;7DHF%cMQIjq11rtxS&a>#Wzk`zQwRE*y4RI zB%LiQLM38qMeSH6gW>5`p$gE&96FXQ()=Sj{RF!WF6M2k7YU(MKtJe*eX`j!x`6ma1sVIMZ9W{U z8iE3b1(dj&+RG{%(pzg@^3*PE3AQJdmf%B~)L2f%0fw}AV&Q1KX)YyC>ZmT5B~~cK zB#h>udY3_RC;Canq^ruw>Pg2>$uxn&&Y_W{!Hpt%4P95#JvuMj9YeRlie`tFoXjwq zVZ{uzDPx~rpnoS*k)FRKNj~-sehWG-`xs}dM9#%`JSJlwHYaMDix{+$bTerkak39v5Klb7(nS$<-2!o z`i#krjgbjLhG(A{@CW&3RS@t_!_oul&&RZE#$%V5MYIIR&- zH10|k({|{XD7jpfpZ=Iw=x?GQN$ zUtB{@mjHdulk3RH>!~vbr+p#y^NKG}fd$zI6a-^fQ#o_AiX2(ay6*goH8WqPG zIHMSn`;;(7!s${^0uf0fo>3y4jnP--lESh&jX?)ymo4MACt8Rm-6z!;-1wxX*}vqD z;D*g~28qln?ar25yt{W6A}oFUd!7;FmF2qijZ=%WUMif!jlNj-!GBty8G|AODSAJV zzBO3)R;WyEJ4q7mD^`hjUj=&)Td6%|`VXMoS8*6k^1D6dd7*Ibt3dHmd|-PD^m6&; z#~1fipoGXh#qnM}ySlH^qAs2tp`?yJ zZ}+ZF5KrihM!c`0NzR$rQ>rV4vx`8cg)O_%|3{~o5w(?6N15_(?iK5lf6`A7eem?R z^^3b(a?ef44x5p`VzIw$scF7+W8z{k#%xB&?uN4UggqCIqL&0+q9;a{=E=m@ zu-~`iwK%IC^iS*W)mZ~>+0bp<&#i9)^>D_y+JA4DGj2Q%P}{y8PLY~9 zM=q%D=9N-kzS&?Eb03y)bwmfuCR`s5XX{doiyrbnuBw6om zii_U5wQg~St|R;bP0Yuif1WA&>y_e=<-hJD-7DQeK0nZcJIYynIFWrZ|(?Rdy z&>eK%9c{sr84hkQ zs@_s{+S2w$G}KX-oh{j|5@Zd-Q5a4mGa7RP?OrRJJ>w4F4X||?FfPcNGB-2U eCg1MbD44K3cI>MQa6Qo9F#R7*0{S>{DgXd#zI53D literal 0 HcmV?d00001 diff --git a/en/tag/hibernate.html b/en/tag/hibernate.html new file mode 100644 index 000000000..55cf0961d --- /dev/null +++ b/en/tag/hibernate.html @@ -0,0 +1,296 @@ + + + + + + + + Hibernate - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/hibernate.html.gz b/en/tag/hibernate.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..fd2164674dcf91e32910ae4413be812fcc3cfd31 GIT binary patch literal 2904 zcmV-e3#arSiwFP!000021I-$1bK5rZv;8Yj_FBoUN$TO$u`IcD9!+zTv}xk@+R0=* z5D8I;L4qMb%SxO7ehYx4K#EeVT&`p1VUXBe?0Xjg$6q}9<>AGjFCL@0jM>@#Sp7l_ zC(*3g8e6N~V_0#2EClckcTQ!c%L z$A13PcaP4G|2+Toc-gyrdi{qyN_)Tms&r&gO*5X7OfDx5k4Az@a;es_C>I<#XJ`YG zT&6bsf=m?|2l?xo4v7ddnl^ZUz<7l4l;;w`N=qc?G>HW0J79STLj-mpjHfX`BbxUn_BE*R zt+!s9L?vxBW;D4%^Nh^4QkfAF3Li7(VF?s&Vvt;!apK@KWi-&<<*T`G^;||6OfhNP z6kwHZE6LFL#V^m%k3h4*hei`}$%vQ}0`X-S^W~hx#1Dk<7efzzl{T@Mw_ws`q%1Fd zSesrGjj%>~okA)8474h|i1UaMoKm5605raz;h3`JE8X>1t)gclX*cK$CvkLsfel^4mDw5ntHzWbiv}27>0!i$&4HGoc zzzwNL8HUxTj0abzwYe0BDnE?SiFYr(sn5kYizqDBgFpRVb5_eG=zB6k{b6$wj6>Wx zq0wBzw0AVPfA6?|G&re4EqE5X(~RIN;7$E>c%uFMLRhGM?PqX{$;#;MME;hSz|(nPi69=wLxFdST#a8Y1p-H zTX5G|U;Wt#|Dnwd3!Wiq5|ZdT-qndO6Ry@7G*&9-kD$C~S4}~b{s7NUyDV$y2+uCD@)+T7qB7q{eb84lty}BMV34O>-%EQb%>cEU`i< zCSf!O)w>LmJJC-nCS6rdR!=&9N~Q@Eb`Fgs4XzZ?OX#|i?!jrC7k_$}zT>|>m*5;iy#L3iKnlnciZ!KK5z6?&IjhI{+ETFFJwc*B(0ko2lWoX4@K$W9kxqS^ zIjRiR4A=SKY&>0UT_F@eUGUQKg-Us~I(^#(a%MrnLmA(yV7D=D_15bz*ZjS3vRlMX zz<3@)ijl6$9g5$C1S-Y5Z=r#3oZ*&E6ujc(hO$vvMKu5&snQQiebY>&A8oQGEr2&(&L83h~ZRd)8GW+OcFO! z;pre6LJ*WSvkD76InuG+;-+;cwWBKI3LEkajfz7MoKXxVVM-Vy;dH4dfrum#&nOYj z#+a=#P~iq%1*-vs|aNTASg!E@M1kRQWzJo^_wwFGB zpJ#=~mh0BHTP==!u5k7@`eNM&|7n3{3`!Ry_T5DK(O}(Kp)$2uB}ureSS8+F6-?#N z9cB7Apxjk)7)|n<9p!nZaPF!=y0q;mkS<_%RiK2(9mVl}etdCPrAhe$_Re#tdOHgB zLLt6Vh<8=A3_2hl?)k}j#6DHoZARwTG+BH z{eN_d8BrThbpR?qbFWyZ{8B$b^ug0->lbft$s%L0EAaW1C}C*b&FbsR0SV1*xq$vVC{auNRZzz@j` z=S*tn(sz3ZGj&OtFVS;?&cOg$mgX7AcfIt+j`8ADc+fwtzgMRkxMdT#Z4bDZ z=W_F@PVLCA(5pKfG|ag1;6ZH_Z*gAL%u^D)Q0)MeQlG!tU=?%omT=|4z-+?xF?6QR zAe!fX1wB{1%W+238x|GkfEQ-!cIRqMJ|hU0e7ep4pv8U~!sx>Y9>( z;WVE#`5dg4B-@yMR?Ib$gynq3<%*{-To;Ya9jyK&z{Q~(FsiT61MH@tkzw!T_`AXI zWZ1vgA0FQys(agI64WCy#Sy{bptx#<`LMVFH|Lys)_*H}9E$1E0C{iqX|P%R47sjh zX~neS?TH3O=jGLH1!gX84ddn(?L=_LLd`x6@EWrxn=PaDrr(lU4vQ zFHCnk#=;#mvABYU#27ctxa8^p>wDC(ZrnR)WS&i~?;N0SQK$79-iMXmiWU}?Duk^G zh?PPO;=%F)M?d43tQ7LP_hy}j@KOkmME=Y};?V?JNBMxvAh5a-K18CS#SaHv>rLgD zb$@&eRe8-P9|C>tn0v-&8J}W?)E7JuAJe|2Y~Ap1(MH*tbHeq6;Ggtp&993r_|4GrWWhGg*IC1O-4>eyWz~ z9{g3o7)OWHrL6)w{Gh-!R0j-sh!V0ukHBZU2cXT>9MrWLjZ`ez+$vArTQR)99@X~8 zG%Wn~t*EY=R^j9Ppl=Uuq%%Tg=G7OW*yCB`99n?-Lo0xK0oy*HWKHQ$wqT|#c-EBq zs;Qv7;d7=6_7FJ&2%QT+c)jM3+e_@>X84v;w*h*4(W!9W?ANX@Tl8=BF20YR5HQG` zpyC92-wxB&U2bc*K3F~tyVl{ga*GzqkDmT++F#YJ!@dU*=+OdMTdA0O5N%)S7XwyX zsdDJ*0<)2S=?rx%COzF5dc_tDav!8sy$$QMrR|MqsH3h`Te4dv$Qp*DFq}qaLWBvj z+roz1omMvc%v*egVCxcgM1rg-b2DRY^4(q=1rwIXj(v62t_S*S*8c)~waa + + + + + + + hooks - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

hooks

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/hooks.html.gz b/en/tag/hooks.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..ff7c53dc1d2ba3eddd6fd1d82530e687614453c1 GIT binary patch literal 2892 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 literal 0 HcmV?d00001 diff --git a/en/tag/html.html b/en/tag/html.html new file mode 100644 index 000000000..5c9d7d2e5 --- /dev/null +++ b/en/tag/html.html @@ -0,0 +1,286 @@ + + + + + + + + Html - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

Html

+
+ +
+
    +
+
+
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/html.html.gz b/en/tag/html.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..2570f2a5f92852c636743e05e0ce6f69e53e83b3 GIT binary patch literal 2817 zcmV+c3;y&UiwFP!000021I-$1bK5rZv;8Yj=32?EN$TO$u`D@t9!+zTq-o>y+R0=* z5D8I;L4qMb%W9kdehYx4K#EeVUhmF!Vu8f&V&A&}H2&hrkB={Yd;Jv6Wz5d@$La$y zoJ13cB+l7BydgL|+eh#-j)}x5nBzT>Wr}XhJ2$%oPDGj0<)qQ*JKIU?x_c-gyre*LRFN_)Tjq|{?kO*5X7OfDx5k4Az@a;es_C>I<#XJ`YGT&6bs zf=m?|2l?wt4v7ddnl^ZU#CU}8l;;w`N=qc?G>HVLI$(JSLj)!ujHfX`BbxUn_BE*Rt+!s9 zL?vxBW;D4%^Nh^4QkfAF3Li7(VF?s&Vvt;!apK@KWi-&<<*T`G^jt<5OfgBa1S`{O z-ByyJ^NSx}qVIubgAa`+&vFy_lSiHRQw;V*_Be3Uk^n73fkWuz=Gd{~=a z6OFJ&dYwWk{tUD#yomFN5u8$?bpSLT&TvfGa`H0-@&Ye6k!(nl!e5R<2Vnug+S*QI zK_OVNoQo68mXZc~(RPAiB3vLkBQluZo{}PBB-RYCC{KB~JglDPeQP|h#zSj-WR35m zKdJ}yqm<_wMU9YCs_GC43~URM(OCulX}=oc1{Fzeq#KfeXWFqwD1jt)+J*_5XyAra zqzuFAQ^td<)7o5$LzN#!=)}99-qhz}oJACt>cMZn*PPXI3Hm!3q5iNr3C1DroX}`4 zVcI(yJh*?{KN_6Wp%y#~-DyVf74W7$T!^O@kVS^m5<XHLUp>L;L?;a7hhw_Fx2K&x_f)x9M)!PeIU5Ex2I&8F}`qbMhNGU zpTf&e@E`uA=uCS(Kou69vYc1|-eTyg{Eor5GL#xn9TzkSwfM$K%eNTT1zUW`g`~4( zMX2QNyO@L&qi#%-QnZs3aO8uA==b8~8yb=+&KeUsd@7R{T@Ctz#;OOxNyDyn+k(5! z`s#Nh{HHcIEO>^bNl2pWcvmOBOt@NS&{L_LKZ5d}T{Q(!`qQRxqYN)wgt45ejH$tF zI2ayp6{-MT%%Nl1BF+Cqr=MZB!Nt67^&%mZ3g`#@uunFdMi&sjs32qC^vwHXRYOp~ zuz(U*Q+ruuLwaq^OP<=LEy4Dr(h__qlN!sZIKYq=k1QOGH_fHwNgdS%v&0Ien1sS+Sv~3aDVZiv*f}(kG`LbkFQMy7x(BCayJP4!Skdgzl9L%mGpv|_ zHf8M7GxSw573t|qlH_CG;J2XTvX61LO5~jVz+*D@aYGsSvwEk~wG2iagVP!TMdPky zF>QyAiIU4z`RO0&D%O-{MJVG7=d2#*YfHgK_XLUlKyP!mOtvBGz+17YMmqIv=BP4M zGhF9`v+-2#S|JKRQ}ArLL8Z4^iM}oEoLNxtP=>au)onbRHFMU=K{0Ib)O67eEQ%u0 zm&zR$BZgCp{}X7&AWK6I+fAhJ z4c46%DpUJ1l7zd8RpQ-M!9KuVV@H|(2`G0}9M~b}H#^GnLgCz1f#Rk3$aWOy zFYc;936VRBZpbMz&l~-7_ntzI?O6 zD&|@y;p(Iam`%7oqs-JUwRtF1&~wGd9A`wmVNr2NbYZ4$cj(gOGoo^yPq+Hc4qO^) zZA?DXGrRK$EKV~|-C+?hoaU1ze+R22$u?$R6myN_X*r*9x#H;y*F|Gdst~p&AXW-Bh)2r{9KFIZSt;aQ@BKOr;iV8BiG0OF;?V?}E%}Jd zAh5a-K18CS#ZL!a>rLgDb$@)CgzG-}80c%q+%rDQ_!KjwzTN>r9-(doe?iIvw85YE zN=I%9ELAFv;(!Pw4)83KnH5opsE5#6JaZrY>u4}|`TFQ_-wLUUE{qUbP-uo1o(l38 zcnKM1vi_okhPVHsYlWFm3}l}wUsJ|u5Py)`IpX6w_?)MouOB3S|Im9TGbnuPFvdEh=w}q z&aEZ8Rf4QxI10mQWF|zIAiFJWxZP=GvopKJ6}7F)fN??Al)0I)Hu-L^je-fwW5>R_ Tht&i9EysTY;&N?>^(X)Ul#FC$ literal 0 HcmV?d00001 diff --git a/en/tag/icmp-pinger-more-than-75.html b/en/tag/icmp-pinger-more-than-75.html new file mode 100644 index 000000000..2bc6f6f7c --- /dev/null +++ b/en/tag/icmp-pinger-more-than-75.html @@ -0,0 +1,296 @@ + + + + + + + + icmp pinger more than 75 - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

icmp pinger more than 75

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/icmp-pinger-more-than-75.html.gz b/en/tag/icmp-pinger-more-than-75.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..82e84340069debc8d1b266b32e1967b465c06232 GIT binary patch literal 2912 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 K^&eN^DgXc>AC@iv literal 0 HcmV?d00001 diff --git a/en/tag/icmp-pinger.html b/en/tag/icmp-pinger.html new file mode 100644 index 000000000..4c2e715e6 --- /dev/null +++ b/en/tag/icmp-pinger.html @@ -0,0 +1,296 @@ + + + + + + + + icmp pinger - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

icmp pinger

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/icmp-pinger.html.gz b/en/tag/icmp-pinger.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..211bb0c6be25b41c51e0e8da3f24c749fe52b8cd GIT binary patch literal 2910 zcmV-k3!(HMiwFP!000021I-$1bK5rZv;8Yj=6aG_lhnhGV_9!?{K0-?Ri|Pck%@If$vokyw2;qZNn!w< z(?HH90lA?*vGv0~qA`^eGh6tWkxAd_)kw{xOl|L{3w&TX1Vns{6~ zK9Ah&$A?eOj($J;;pfCtWGv*a>N+68PifNN{W0Sq!XD2gf|V9X&OjRiH14x3fFS})5XO@Tpb?G( z6kv%xEQn|y_Bw^Io-sP&fZ}nVC7)&uq z(ikh#YTcHSp|i`MFVGJ_v%!Z(6LP_bm=OXIW*Bqjj6}rsg>dIX2R;g$RG6>8B#Tg4 zUbwI}y&)Q5h4dK_b_>riu^2DXL5O6JRPA2!{M+# z;Q=UtnSOGM1ZOlr4}9NmgRxT_&`gZbK~<27QXLP1l%!WQ3LDDxuzwws^fyjffnC5Y4H}rx?qd< znUHk4C2TP-rS(CXrx*p95?J* zw=KBqw6A{G!hdRW!<=VGnuNr2*^Or9W*7J52GSMVN|H z6)`oK4hO@djY8$1^BHt38>IPLbov=~8(hrVR?ibcp@6>M5Bg-iX>N$OuKqF2y$#ofJ=qTMlc8?0z{Xu-)8 zqbXL*K$|jl=_&eW?1|*$g2dU_HTW&)xaec7jS^X>Kk|r-UEELx{;VDXJwW~=sfDy7LW`AG^}zs2pDN$I zld69y=gT3>;xJUX)8s)Y6knfIvw`lIM+mz6Zl`FU4L=SPgQT-}vZiV&b88ulI0mOR z0`kUP$zs|L9TNqY%ktAd&{eD{&5}^c=hkUG&R3R#{q8Xm{ej-?ZkTLC)`7QVQ;l@$ zThCExsAjm%2B%}Mx_O0Q0ENNpiZ_(%t5xc|E|IYc6g(6Wu1ay_?$_2r7k=Wcd~ z==q2}kKWo!R@=x59Xt1lfE}nE@s!wdhGYBa&{4+`R{PrO=RcYddVYTKve@yLgpeYH z6d`nU_;ow`%?LIxo6?TmjI|meA2!U=4AwPP5_!oh+-#VS7*2$?296=PB(YN!lNO=@ zcz#hR%UIBpBOTB!zFGIoYAB^#VMB7EVSe&~Q;MMuc!V($cnduVL?j7$N{O)625Omh zatF{E51O@Vg)<(0poM7CJuk=L?FTi@ev#LLw>C2$x*?C{JRC3GN@OO&9@Wj2ZMEQg-X>9mBhieVikDzRj~K4>)KML ze*wyU6^GF{yWLWr7YgUT3KT8G2ezd^7mL@wytuCd#YAo?j`P#g%lj%#!soDIoM#|9$WBg?pASG3*x`)XNrjL~IN; zn@$P2yFIIF#VyVcgd>6tRUH9&G+0Qg6DT>ct~`cg@b$4eb{46>#P@@E72h1K2=`{- z24speCbd85J3NG$x(v-0=z^d#bZ%s6o^?FzCAZbE&QE^_{iFJOb$WqY_I;bSeXDy# zJ)Ckb*Pq_hj`niB+QUJ^jB5`V)b8*O=TgnoB>VFH z91M?#{lot7=+RK!&n{xW9+3$S2@VGNl`6~!`AxSu&(yQ-d*R|hcnbsMyw|6`X7N*G z+lHkj(~7re8Wf!sSF|OVxu7+SoAYLMHm$cn`PFgVS~oaFS0Vm@Cg$VMKhfKF_2YZ> z-bpes>%Q$=2_nyYpJ%b`?4!<`Gy75RXwZ8!vagtzfSn%z8QC=x6!^iqw-xAzPYlMo-t1mpU!_&~(uK?;VQ~}gW*y#bK%9Q?U7R(d{ zuQH{+y_8d4^R=ZCb{|;+2%QN)c)Q||n@jBedia)7w+4E1(J67>?bfa-Tl8P)U0fGE zBVdpjLHVKcZZ%AocebtJ`grj?=vL0Fm0Pq>e)9ZRa7Z~rszHaX4kFN_`LecBKJ_@< zywcAGthQ3=(B(yCBmdGV>XuA8x-)e0T^Hm&NUM71)oDxHYtc|gU7xmOw^EQ53`=2H zjm(4y6J)!E4YymZY_^tn__je+mpPlS?^!HZ(3-8H+ IZO1AA0PFRi4*&oF literal 0 HcmV?d00001 diff --git a/en/tag/imagemin-pngquant.html b/en/tag/imagemin-pngquant.html new file mode 100644 index 000000000..b3ea0576f --- /dev/null +++ b/en/tag/imagemin-pngquant.html @@ -0,0 +1,306 @@ + + + + + + + + imagemin-pngquant - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/imagemin-pngquant.html.gz b/en/tag/imagemin-pngquant.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..ce997257c3252dc81cc0ed04af1040692c50937e GIT binary patch literal 2953 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 literal 0 HcmV?d00001 diff --git a/en/tag/imagemin.html b/en/tag/imagemin.html new file mode 100644 index 000000000..44963f259 --- /dev/null +++ b/en/tag/imagemin.html @@ -0,0 +1,306 @@ + + + + + + + + imagemin - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/imagemin.html.gz b/en/tag/imagemin.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..f22916327f0fc079f7fcd748ba4a711d80aeda5d GIT binary patch literal 2944 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 literal 0 HcmV?d00001 diff --git a/en/tag/java.html b/en/tag/java.html new file mode 100644 index 000000000..b3c895c3a --- /dev/null +++ b/en/tag/java.html @@ -0,0 +1,316 @@ + + + + + + + + Java - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/java.html.gz b/en/tag/java.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..111ec7242a12985865831b56f4450e4b0e3df95d GIT binary patch literal 3068 zcmVG!x&3CWu!uvk_qtx zQea9d89DhMzQM>w7c>rW6pdZ;b$5l&kViz)KY%EYDm4G&amt+AB$hOua_M+Hbkpy? zetLTN`{|E|S?}umo8RO?-23H6rJf4aIN>o#WHzyQFcMUfD>YAra?X);g4Q6(EUv;Y z$W)QBkh`j6p9n9ZafA0W#sh?>Je3G$%8;DXC=j4(kEK35A}|4AJPrXG;mAimmUxN< z5sgXeY$*k{$*~S0O;`n7nNo~gcd=MF!k}uUk`0<@7q70sHar^QfZS zprDP$j7HaJo{-r_DlQ}Y#d>hN$TlI+X?!Suz~1|NN;|3N{Wb)STnq&Jmr42U%t)zmFGd_d02Tqs60PH zf0i%mM=8%XiW(uSP}M#X7}yphp|cYF!*2PA8&o8@m9|ejo@mD!p$L-LaT_LRqJisE z5i<<4PZ{^Fk85Kw_Emlup(E!}d|Mw2aS~9Nst14iz2>NvOVB^a2=#}}K`;)n=Y$4x z3B%68;PIow{=wj=4z=KkZ%-3~uYou9%Z7Mr0a+wCE+Ev0I*7*^Pe$nT;c!?Vm;xw) zk$!xO1ZUJopL?Fy24g4Kr>PjBgQ_4Er8-jxQj%QJFlZ=uioNR~;c4XCF^8Md$8ShdhjG8GKw&AdH&@|3LNj_x{Npd(8gyxfUau})@w9Zh z1j2(6v?^tYZ%z3gAsedGH3gTZjM-3eDZ@~kTj}oXICGersriB6&d!dKWybizz8xW) zN`4F18L^#GMybjngv0dN*WTjh5QzLlWZfa$U}V zo%Pk9weTO>+%V@Ek|rUMuH#*u_!41jok35fa{dU)dve_rMCnhP!VVIgwFpyjsv@Qa zv*BQPxKXGabTNmHWrH;TicUYmZi9!wZSZ*Ldgf= zX%4El86-d6DaH)8cFJ1E23A>bw%C1PQK$I8N0Zl4E#|&RIKvxe$P4~(YBL( zjBG4{Y%FVJ$IzqQF^>>*_uWp>J{x`Drr%-t~9hO7f`$)jr+U>2Q2?5P_lg^odaIS_yV6cs1qxn@&{nm&jps^Rz4~#*)pP&4L)dtX zr#@sCX{)rM_>G9Cvb+5bs9gxFodNapgs04h&PgIg4K1mm1(kDj zo?ZO-QkTW=3X1KrG~?KOY!m&y^&y}GC-T{?NAwyO)-7CeaJqbjV5d>pQW*{T3LydS zXa0<3A5+i;XE$oOuTY(cNavzH-w3_VCq!mKRGAR6Jak}s7v(GTRL=_!zrxJVS@zHr z35x**soGE?jH=Y9Q^w9R312vLm$Q(BJo%{7@_nP{ijq?$g5(_1i9oMX`D%8qY5g5F zjNO#AMtJ_%i1}s-Sd#)o-bfY6YnVSV919)lID(WdiJhoSZz1YKJ}ug>GQ;Y@kuDQ0 z8Lyu2stG#b3LAWg2Kjy(PAG=%VoDez{xs8rKtz&&CzJ?lZTc^ZS?&b7j=~b4+BccJ zd7y=8(tT1sLn=L}Y4(#+B6w`GoOL65MVNY4${gB2=K`yM3nw-u|vd#HlxlChmkDsetkaTtx#+b!jJ zsc;^uK)O}hQXt(BJyd~Id$OH4&JWKnAF4DlUywx1q3UfZ)N6%!p%5RcXbE)GJls;O zpES}#6-li+1W9hTu1;!!aiI|(s%VmPCbpF7QsLZ1Ak)GYUFkp3DJDeiWvIP$dC$FK zo$^om4WbX;?yXulNY0(60x5gsnayG zLty?H$VXgd zBVab-`gAH$`;*P%fSjH!-lsSr>I)0<=c~79`u4eVLCnl0?P%jLYS3pV>AVo2wc6rjU(&+hbJUtnsiN zgGPqEqrf$Gi!tW-Lyx-ego}MK%?yz9 zP9GAP$xo1N8jo$2D!}j2#Qgf} zFZAYZ{j^Vgcj8pcyKg#Ig2+?P<7p&2`>6Btsr|TjIOshd+Jny9y$yIW!QS<2kXPN2 zTLJCP(#TZp?q180q+&9_z#_Iv1wBF8fVWxMY zg+-+bQPl**O0EWRmR;iD2ON^6Lf-V=uF?=r4B-*UAGl8(8o@F^o{<>@RyV-=NHnzg zVXs^HQaWbcAD=;owc?XcfWCIj9pkf%PccL4Vjl!~fVu(v4^r--HU7L)IC4v1sZwba z2SgxofM=P^tcXHHeFIJJ3;XQXgTdhZ^}&;VC8SEa@PwdEgk{>oQ9=F^XOLkgtDo|q z0O-A~N_-uC%w7DFEx;CSMilr*I%9D4N z4DYT+b@h%N^S^p0$`j~i_*mcSL&aNZjZl$!_5BF!@FcMID}eg`B|yD~B|K274C$Mk zFj5q}%8`mgjZ zu8Up}Fvy&s{4`;=8m7xD9R$J(?$LGvz~P z!RDD>8L-++r9+qZ8XEbR&QP~x($SrvlP{+s_d#0KOX^Nr+Fpx>I_kDXOLi*-S;4Rr zhSkVSh%iC6o7ix>)y!tk;0~9Qs=9>LtspDPT+djWe0SGI&P2sy$F918qaXDB_WuJ| K3;`DJE&u>e-t7Yb literal 0 HcmV?d00001 diff --git a/en/tag/javanetsocketexception.html b/en/tag/javanetsocketexception.html new file mode 100644 index 000000000..6220b18e2 --- /dev/null +++ b/en/tag/javanetsocketexception.html @@ -0,0 +1,296 @@ + + + + + + + + java.net.SocketException - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/javanetsocketexception.html.gz b/en/tag/javanetsocketexception.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..92c570ae5652c268ec6d52afcef1f795a57672c4 GIT binary patch literal 2930 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 literal 0 HcmV?d00001 diff --git a/en/tag/linux.html b/en/tag/linux.html new file mode 100644 index 000000000..7e2ff66a1 --- /dev/null +++ b/en/tag/linux.html @@ -0,0 +1,296 @@ + + + + + + + + Linux - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ + +
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/linux.html.gz b/en/tag/linux.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..7f925142bdbda0ce162a19c7a55d0069fb8e7f90 GIT binary patch literal 2893 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 literal 0 HcmV?d00001 diff --git a/en/tag/low-memory.html b/en/tag/low-memory.html new file mode 100644 index 000000000..bce4812d1 --- /dev/null +++ b/en/tag/low-memory.html @@ -0,0 +1,296 @@ + + + + + + + + Low memory - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

Low memory

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/low-memory.html.gz b/en/tag/low-memory.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..dc90b86757433293f98f005df4fba20a5ba762a7 GIT binary patch literal 2896 zcmV-W3$OGaiwFP!000021I-$1bK5rZv;8Yj_FBoUN$TO$u`IcD9!+}_w`t<`+RJ1- zAPG^3L4qMb%SxO7ehYwoH)N;e(yeX?5PwdWa8XVGS7G}9Tf6Zk`zGa zG?KGPL~dwET>Wr}Xi6o;%oQPKWYYI~HBvJvGnc$8=*`6W-Tn34eaw>#OByg@(WPWU zqL@^el1fI-p7S|MNW$|4a?vZAB{)sTzM0!!<2KT=yUjC6vw%x4 zhsPs9CAm`TSd>eSoHMim zNiH%Qeog{K#zFqNsv{!8oMsK)A2A*y9PmOSSZRUejHa;wg@>$&V2HpFgz+o^XoS-U zMOfkh3nChe)Y(!BY?EUXLXk5ITp3i1e1ATld%~bQ#!4#7u zPq8ws*6mUcTTEU;IM4B76Ul}&8T{oqau5~( ztgY=d78HV&%egqkY$0i=7i}jPrNRZGQzFCJ-6<&|Mqp4`m{Ee;Yj6&5jyc6WViLX1m`h@rF!t&?=@$&T!OwQBh()@C&4(x zoe>((BuslpgNF}}`$vP5I@Fx!ksIU$UjuLI!-aTi0h#AGt02^iI!MSF&qwI<;c!@= z2mqA8Oh3Ctf-@SS&%-cmgK={l(L#*Sku8X&R4;%aCHWOi;)Zeq9A3vcFVe`(IAm>Y zoCm!xPB%g2BqLZV1D3;$kVd&7zae=Y#{bHK!cyXJrowxKru3FXr(gLs=%pEYy}ESO zXytS{ga;#NUCIRCnj$_zE>x#$3NB3bRh3q{TN*TD`@vF4*F2 zAtaqHmV_$qzDr0%G3q8XtwcLH0Y^S)i2ix9cts-;;Jh)R!)IyovbRB>(L{AZIBnRq zZd-8IXGO4kgiUSO3@yNo_ctIg0PwS{Im?cpt zURHb4Jo# z7x@_3Oaj?V*2s>bN4qJV#0M{__Akn_AnmP|Tctwv0QryP4$_VYEmm382LmX5s(klO zZU0ivS3)j}!%*c;lLw(td~s@L1Klx?5Onw5PSrjeemp1!S?Az%L)B8|)-o7z3{GnV zl#RQR#k3tdCMqsh<)?q7t5{Q-6``EZowItJuPp`J-4i7G1HIYZGTDZ#18>Eq8tK%x znWLqln&CPdoQ(r(?+UR1`hvHXGc2`NE7W&gpZ%^VNbM#(BAz;gaN5^YKmXMP&`U!A(h*W>yD(e+3n0+WZ8KiY z%cgK+zhJF8FNX~)G(&TPQAAnbDyJHjBZf1fm5);hB}v>|MWBOd1b$wX#ii%#$&n7< z7Ei4Ep&d9mSJ;qBXk4Ci;GAN}`T=2#M8QH&0uf1Ko>L;6jbXV=GNrwBeuLJ`u4l%d zkF*d?x{sG*aPFg;WqU`ywwLv|6{mqiXTnbA_|N z(HHAJ_)iNoWl)_Uckd?B_Xg|U3YDwCIcH)=sV)`HT?8^MY}J+iKRU&ns6D1S z3nSGQ|ax+I{o|9l}iA zbQYjZg3i%nBTMrjdb$6tS;*Kg`)^Xk2q6=K$X-MJD(o`)eX zQrS5~onO!0hrQ!L@8QrLblx0n!IL=-uU~+?>U%9~pxtSahDt4{d(d)$pqPv?uo&^M zP}g!^m=kCMo-(4Ix*a20=V1LVBgURm1K@TVis-Zg8yilL%nQ;A0Op11ZpT=-gC-VN z&~g~#W;vH!9Z`LYI@Yy$2aU|L$@QHB^fl_V-lhAn(p%BOqEdyhH36|wszE$jT;ljA zoRF15UiaRt(-2+;;gQOpROzKDG>7sLnL=Q7V|<82LyI2{y4IVeW7hrgX&SBjju82*Bk2WW#o?^TZ65?HEK8pQz-NF3l8EO$?!li+7~|-Wy0le5 zhaVKUhU$PJ4^c|y=n432_W-oHnuEGFrLl@7n_K0{dn< + + + + + + + microservices - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/microservices.html.gz b/en/tag/microservices.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..3ee4191b166856915c19cb96c3daea0338eab913 GIT binary patch literal 2941 zcmV-@3xf0?iwFP!000021I-#~bKAD^v;8Yj_O+5*lhonVu`IcD&bAY`N$mEulgW5M z5~5&(1Vez9l{WwVEdY`tDN3>0w9n3AlGt7By^CY~*^{3iU;O^^DVoWMo$QX)FT`*h zPAn2zC%f>4;NWBz!Ou7%5+i?xQ$gg!`sL!8{m`lo#W*4p>xPnf!c%D>pU0BK06M3E zoJ|69Lw#cFmwiNIDk)~R@G&EkzSFCbnn{`1>d@29U07ro0LZhn&oN$=NJN>3H4Ny-zF%EiRu;Yd(PF4a60$~i~Y30i|B z7fBUBY}y=o!##@S)L!TreVLgg}fL##}ig5pjJX-1*RfUxiI7%vWHNMW`$< zT$r2Q5RI@xdX+*U{uHz-oRIU75u8w=bpSNJo#KeH#pE?a^c*kNk!(nl!2cWv7QzC6 zwY9CrghH@xN~Ax#J0(TLNURxNQucVT*e~B^{mS#8@;t0O zA5@+npg+nN^`n$$8%2$fRj6to2@GsQ+M?4E{KIbfh#OQSxs`T6e4c8@8lf1H*l`;s zXrh4|P?0bUvwMvD*T=Q71P3ZVjL?zuAi1rNMK}#9Ox1%w{a$la%O&W0GD7`fa}bO} z>=~iqOv12pFnIXjuzxT(szc3r8rWV+@HOzJe%TODEg)plxJ~ZCmgc2 zHqL|I7suzg|wU9=+KEEMp9mf5t0)?f-{!E4U2uJa2E%XEajH5RMym zt=ksdb=p^d*1~^ibHkixNScJix{h~s;!B0Cbq39q%K0NG@9A|@5T!qD3Oh{kqD7dB zQx!2am<|WS!;M1apz|4YEE}ZxS9JOjb{kyG+GfuaLZN`Z-w*m^y=im-aq|i?c1`oV zJ61IW`3wsvaW%CURW_hEm2t_FYH5pcbx>&uekqe0%c(fPkQNUrI2zB(q~viO)dsUf z3MC(erx~c;W{}*8ep4}Nt8%h@)A3UPQK?68N0Zl4E#|&RIKvxe$P4~ z@wStEjBFx-Y$9u9$IzqQF^>>*_uWp>J{x`Drr-rX?RhO7f`$)jN cDpMcp?`>waHO?&Z z-k^xbVgAH$BDB-u7_yKgcB+z>g=hdNqUb2fq@f2#I`g#zaXo~qIVa@`8?rDB^DQEr zQVa#tBaD&2Tj)U`B1yd{Y$|O z{@W}OP#h}llC`0}-QBHo5f(0fpQXe&ZZU6tG1}tKrwV6xtuNMn@ZT0_%Al}A+1pN} zX9nxu3YDs*Jc)yC#VYXbt6*2KJl#^J9|7gQiopP1Trmb(UtxaonlJV@?32X%TL@Z)+xW%ZxDU(_R0Fi zyIb;;Eb%_g(r&Zw{xc%=Keb5xzwNz$*=xOQVMoNq;F!}XA$ND$s_)>I2nWIu!G@|1 z^E~7&B-MVToLHA0!!ZQ(SRF!$)L-KJLA;7@Hrj-HGjIbk#Tk=2X!MCL!b}~FXA5*j z&?$OsWNGevebY;BtGO#b3mEhd>)+L07H(PGZd%)}E{OHxlykX$FR!-Io9opc4jN`$ zyWOOgz<1cCZ027Hj;U5QN~ve(Ypi0%)gs?K(AgdvkiWc$eXns4pzc zcYiO;(A{=Zn|y{4Kbg1DcedctP-|oIxgOb`M_|!Q9d$TOz;K#R8h;8_3zBWjzR1TK zNuuI>#^v(2&uklw&B?pI2x8;F_8HX|Cwy!tppjwk=tQ?9IDg$MeNrj zGQlCi!5}|ihw&i4_h5Fn^{9I#TpS2*VSpgjDW1*bC&;!9OG~B|Z_hO-IxP zZx}bH59*{suk-SY1a)iO;1pek_#K*ip*FAhmL5tQ$&?^eTfd4k^>u8$T! z1l`J}ymE^c%1?gy)pW#a6$0xyM4(6WWo@Q>=ux + + + + + + + Microsoft - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

Microsoft

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/microsoft.html.gz b/en/tag/microsoft.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..0142e428cf42cc81d55ae7e5a385722ea7b5107a GIT binary patch literal 2879 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 literal 0 HcmV?d00001 diff --git a/en/tag/monitor-website.html b/en/tag/monitor-website.html new file mode 100644 index 000000000..93830ebfe --- /dev/null +++ b/en/tag/monitor-website.html @@ -0,0 +1,296 @@ + + + + + + + + Monitor Website - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

Monitor Website

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/monitor-website.html.gz b/en/tag/monitor-website.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..769f74d94da12a146a583d537c922a091945217f GIT binary patch literal 2898 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 literal 0 HcmV?d00001 diff --git a/en/tag/mysql-dual-password.html b/en/tag/mysql-dual-password.html new file mode 100644 index 000000000..aa418a5fa --- /dev/null +++ b/en/tag/mysql-dual-password.html @@ -0,0 +1,296 @@ + + + + + + + + MySQL Dual Password - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/mysql-dual-password.html.gz b/en/tag/mysql-dual-password.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..8ca9701785cc611433111a13749406a12ff9eddf GIT binary patch literal 2928 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 aM!|&Tv14Cd(CdNz8utIii!X8=D*yma{-8Gi literal 0 HcmV?d00001 diff --git a/en/tag/mysql-replication.html b/en/tag/mysql-replication.html new file mode 100644 index 000000000..15c317db9 --- /dev/null +++ b/en/tag/mysql-replication.html @@ -0,0 +1,296 @@ + + + + + + + + MySQL Replication - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

MySQL Replication

+
+ + +
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/mysql-replication.html.gz b/en/tag/mysql-replication.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..d6d777528754d63541668c75fb0d66ef7ac8a347 GIT binary patch literal 2895 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 literal 0 HcmV?d00001 diff --git a/en/tag/mysql-restart.html b/en/tag/mysql-restart.html new file mode 100644 index 000000000..87c38ea8f --- /dev/null +++ b/en/tag/mysql-restart.html @@ -0,0 +1,296 @@ + + + + + + + + MySQL Restart - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

MySQL Restart

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/mysql-restart.html.gz b/en/tag/mysql-restart.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..646822de1eeace2a94de52514d1a44a7d9772a01 GIT binary patch literal 2893 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 literal 0 HcmV?d00001 diff --git a/en/tag/mysql.html b/en/tag/mysql.html new file mode 100644 index 000000000..68f460203 --- /dev/null +++ b/en/tag/mysql.html @@ -0,0 +1,326 @@ + + + + + + + + MySQL - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/mysql.html.gz b/en/tag/mysql.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..6436ad84a887f00aac490339c40e21fec6332029 GIT binary patch literal 3070 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 + + + + + + + .net - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

.net

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/net.html.gz b/en/tag/net.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..0fdff094cf58006a94fc7845ac7a10459abdda61 GIT binary patch literal 2890 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 + + + + + + + NoClassDefFound - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

NoClassDefFound

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/noclassdeffound.html.gz b/en/tag/noclassdeffound.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..e6a0d0dbf4ab6e151d3295103126a766ce5cf378 GIT binary patch literal 2897 zcmV-X3$FAZiwFP!000021I-$1bK5rZv;8Yj_FBoUN$TO$u`D@toJV_;q-o>!+R0=* z5D8I;L4qMb%W9kdehYx4K#EeVUaw<2u|Q&XvF}{~8h`fWhl|VKUOz>18MCwfvHCy^ zC(*p0FL<0{NvDihbSasT zFd`+Uq>_=dSNwuuA)b)gGoB|Qa?u-_#yCmFz5&=@V>#vtk@R<<&l8LMzXDE~cblb> zrc*AxfX9CR-8WCpkAFM=@p#$0`u^rud6f2k`B7=gqMBwrC7E1K93G7XmE=mTV^JK^RYC zfJPY96k>^|SP;=zq|TO7V4ED95b}&!;L56EkzS`zia!Ib3NPY3Vg#pDXdM8JM>8B#ww(L~F}=XcO(YxAr0|#H z&_P%Lu(r0-SWpO7Ea&0`v!$egUbLNHmPB*E6P(IE)T1xdEXij ztnttqA6erE=#T0_{V3(RMo}Z=l&U&J0t4HEWOP=6f84KzxIsmdTj_=*;F)%;5lSG5 zowi|uCK|XQ6)D58`jqkD`m{Ee;!x#>5jyc6q__3C7-tcMrF!t&?=@$&T!Q{iMyNk* zPJ(fWJ0~=nOPKbK1`i(`_m2iAb*Kf;LU)=Gd=0#*4;SL81!R%ow1iME>L3AUJR70U zhr?lgVhW%HX8P$Z5}eTxeI5is8;qObkmh29j%-0JrFv5cQj%TKIBF<&ii7JYQ>DjE zIb>~ZoCm!xPB%eiBqdlX0~W)LkVd%yzad#2#{bHK!cyX3uEKkSX7rYXr(gLs=*kSe zUR}C!v~s!(!h;dCE@g~wO(h>87pl`W1(&9bx%dWChM`Qi(%swh=CC$X>jS~Py*(w% zjPZqgJ3=^@{1je(g#Yj_MQ7UU0jjX*l;y+%@D@W?<#!Cem7&yt>bRgusKqxD!>2NN(cqxZXsp^H zoHXoOw=KBqtgn7I!hdXY!-8i>nuH{}j(2t9%Y>_S2JMx~`6DRr*>zJ8r9W*7H_Gs` zMHtJe%9t9=hJ)epR-p>e#T+`8Ez~mPQcS{V4ytzNg7-$qF2y$CEbJ5vfVLs8?0z{ zXvxV8qZwArK$|l5=^6SmnTquEB}wwJZ}3~taoNW>TP1SNzT+_&`?#SD{7F4nR{3HkCj&l{KY@j>l5rXc%+bP>;!;c5WAnhESZm3$y+*$@B zj=^b-fTD3%vY56*$3)5Hs{HhibQNn#vm%u7g>zPq^R=a5&wGMIf1r1~TPE9(b>OYo zR3n}GHgi-Nsu`~H!P$7)+`vLWfYM;f@`y@>wQ7CWWpZXg!9yA4s%*EhZ*|z~FW0=j zaJ4%`(2PM)Ko7N`a(*?V8BzPsE9e5|S3!n_+Oc}-K*DKXRsB3OB+%EW#8+L!9F_R( z>^7s;ylhH0_H)*%^kUdBLo+}(SVa_Nu5_(oF=99sTKhPGfRe<`R2({phT!dGajg7b zPmXjDxA&3f|ewc97?+%I|DR)pvK=LWHG{f6p^w{IguQzOQO= z+jE7pztI=#KKM@yRD|P>A{7yMZ-vU#u9PIu+!R6rhfyYqgX#_r28rogpxWLz1g`sK|G;18u7l0COKzfN2x9q&RqmDEo|A9{y#d!jHsQa zI_Z>ubFWyZ{F8oy=!2)ftzW#mCI6Sb%1(QfzhcP0Y`|&0bYtRTu+eNr$ldK{s}Z+2 zI}nZuHdM987vAq6sZN>X#JQR>oPckS)zPxZf)#!cChPd-_(b?O13x4)oHMEYN8i&S z%+!TvzC-u5aNSxrI73$v{(vUtJr&d=xW!`|_r_i*SAI`0m);K>XJ*RMfd^&OWr(C#cx0;LwzJ!rW{P)tS` zSPXfPtJ^s*$Ov=+PZ?29-Hs8hbFhA;5n)fM0dPAFMRZz$jSVMAW;tmE0Q16hw__~a zK@*EB=sApW(~L{5&Zr)tj&*z9K_l~Qa((9j3R|c3O5KN*-isC%l`4d-35bW?;i({hftQeBChMVP2+Q9>5z3HWUH0JOQ9gSs}Ok%}doTjj}nD~9*iquTyr3=6-0FRE*! zRromH>YIRD>5NdBdG)0x_IMUKhZdmz(iA|whMgTyvZnOcuVAJuc-EBqhEhR!!&j3k z*hAz9AapJO;q973ZZENio8enZ-3I9GMW@1fw_m%8Y|+2fyZAnOPQV~@f{H`teLGB7 z_p+_w`gr+$*tO25m0Pq>e)9b + + + + + + + node js - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/node-js.html.gz b/en/tag/node-js.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..43719f17b1d1c0779c0e69b976ec742d920d93dc GIT binary patch literal 2945 zcmV-{3x4z;iwFP!000021I-#~bKAD^v;8Yj_O+5*lhonVu`IcD&bAY`N$mEulgW5M z5~5&(M+nfe(&oRv1wc|DMJZOB_Srd161$7NcX5nAd-C(+i{D>9MKckxlijiWg&2;* ziA7@TWEZ{=9GvVT_!&n;VC2tm#)+6%zg#@CA6n*6j3Y9!ZYY_jNhU1hC$S(gfX-f*)dRaLtVT&p1bq*5lh`2pA3veYxy@2RQ!f#YpG0o{ z{Wnie4}U*>b-3tV{&4e~I7oZHzLFX;sHRzxl1wZnRuYal735ORV^A(QvQE$%B(X?M z_&M<;84J0qdJYKpGnzJdf5egyVK2!Af|(Xb%xD~P(6-O=03H!ofv_Zv02<*qKmium z!<_KOBz3l=0^8(RhmdE?0GHO}BiEhJ=MLAXN~vUnCfdcTE3gfZMmQvQn%h;N+%>*B zX&jcc(U{Tr8qG2?-AH9hNWfjpn1cmSxQ#$^X~v0#)09zPd6z54zE)!yVKBr5$zm)` zt8`mQhE6YjK10udW`hrf#>IjWJ|hI8OEcz*8HtGNbMDTE4*V)@VlZ#Oq>E5mp1UwN zy&(!=h4dH@$D2xlr1K&A(rQOv5sUzniT#|a9|A*)o?KH?bI<|L!j3jD)v^@tl(1i2MQ?Ajx|CtB(dW*OwdFF zH=sOa7-sia;$I)v#!?)}{4hdC&V%%}J{I9Dq%c(v{`7mzQ6(3r@5u=Dhs{AS4zXv1 zhBE=f&cWc}gTwy8;HVBYPqM)FGJ>yxH~GtkcxnNeXE-e(1tlP!SHaSPzC6G1|7==Y5o=#4QhlGH41F*XOKmf)8(skWSq0}N^Lz`#*>UM@ru*HLXSOC(W> zL3o;h>TL$eov1e%leR1;%QqE2CDQ~7djgFl^{*w-OX#}d?%r|P?r6FVRunt5 zl8=#11&~cejqDhDw41_7T=0@|{USXJ(%y2qWh#^}kpD<#A?1kBVii?=Fo4o0%XjbC z^e^dr1!PqmhB9~RJP3v2i(@kzsE&Drpu6vO%Jy0F<3KS;JA21#s+Kgjl0l23aatpw zXxybNy6sRgQF6H~Km7w$#hTJA31!LLI;qF`%2cq{Jwm)cP%GUHgKfwv@Rn@KCzblv zb5t3s8LqRz$=E9wt`G>IEcj%2LZ!M|mA)(aoEcE?QbxBd*KKSYo%QO+6>l$G><*C= zQ9nzd(Usc({8Ea0#V^S%6fVv$fg6vC=-p)s&Bx`ykvkDq`}FeX%%p|pRLsy%K=8-& zee_gQbgsB6jIR~pvsdUP5JrP`ftvBGKeoyLe^g5UpHfQy?r4um6u zHB}YnMaWx7$el0coko7v2pii;09!hb0$>KsIy#znLHHF z7wC+jQ}kHN(%kdm45#>{@uy(5B-zI7 zi(;&iBn;=%E?2yLX4`12&)n4&5E}=!aG;bS`mjSPE7hu;i_N5lSu{_ybOP@dB- zV!s}dDGmt^2F1}jj0eSy2feSYM%^p!;(&V#4Fsu9@~kI6LAI?~S~4wpd#*syX?av% zf$4*K&A2{ykY^NXomX5Ts9Wm>XXrA-@6bg5`twip=575LM}BwGoX@&%I+vV?Q{PYW zSakML=a*CaVefFzdpNWQows`%@I;3F>z5#}y#KTU+MVXHFV%v&do5>8lF1MQi$UV& z@&woMGXky8Q%2-lx1&Yt?5!Sqh1ij50NhSP5uH|GZNmu?Sx#C3z`QWr?Pv>k(8S;h z8ZB+yG)qJxH|D-Y9pi>Y2aWW*&h?!=^fl_VUb}E%rYqjUqErPpH36|wsDVFPT;T90 z9Fe6$-t^wC(%=r1V?dBK)}b*JUh#-bA+Wk3-bcKl#SeR3<4fh3b$@&cwRy!SAIlwk z>6km(XIbK5hUASc2=WkhL--%0+(T>pd8c&bmcWvwQY#LKK;i(;(wSKjg^2nV8o=lF zqyHWZ24^o19`}uqs_4QKf^GwrEOSQ&`3t;&3^Q5%R0IV;SAHs|>F)he!DvT^)TOKf zI{YBP6;uZdxsPHpM^C_KyL+I`K80TVah*nR(U0H+GUNwDt`^b+HbhUczz~C>cZQiXM!V1Gvi%3RM_n|ycIM!|&Pv13 + + + + + + + nodejs - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/nodejs.html.gz b/en/tag/nodejs.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..c750ee4c80148531b2a1d759bd8a73032e7f9308 GIT binary patch literal 3008 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 Cip?(o literal 0 HcmV?d00001 diff --git a/en/tag/openssh.html b/en/tag/openssh.html new file mode 100644 index 000000000..a738d9651 --- /dev/null +++ b/en/tag/openssh.html @@ -0,0 +1,296 @@ + + + + + + + + openssh - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

openssh

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/openssh.html.gz b/en/tag/openssh.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..1eb9ca959a719780aae54c1c9e2761c1520a2a04 GIT binary patch literal 2892 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 + + + + + + + Out of memory - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

Out of memory

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/out-of-memory.html.gz b/en/tag/out-of-memory.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..df6f75e1280b4009bfeb2f5c88b0b7306b817e38 GIT binary patch literal 2890 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 literal 0 HcmV?d00001 diff --git a/en/tag/outofmemory.html b/en/tag/outofmemory.html new file mode 100644 index 000000000..8745319ee --- /dev/null +++ b/en/tag/outofmemory.html @@ -0,0 +1,296 @@ + + + + + + + + outOfMemory - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

outOfMemory

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/outofmemory.html.gz b/en/tag/outofmemory.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..fa1795b272b636f290f9948033eced06a10bf553 GIT binary patch literal 2905 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 D+FOh3 literal 0 HcmV?d00001 diff --git a/en/tag/parcel.html b/en/tag/parcel.html new file mode 100644 index 000000000..33ec419a5 --- /dev/null +++ b/en/tag/parcel.html @@ -0,0 +1,296 @@ + + + + + + + + parcel - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ + +
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/parcel.html.gz b/en/tag/parcel.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..bef9e1860219951d09cba7a0af3f3186d6c77361 GIT binary patch literal 2904 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 CkE@0N literal 0 HcmV?d00001 diff --git a/en/tag/poller-proccess-more-than-75.html b/en/tag/poller-proccess-more-than-75.html new file mode 100644 index 000000000..6cfcd6595 --- /dev/null +++ b/en/tag/poller-proccess-more-than-75.html @@ -0,0 +1,296 @@ + + + + + + + + Poller proccess more than 75% - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

Poller proccess more than 75%

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/poller-proccess-more-than-75.html.gz b/en/tag/poller-proccess-more-than-75.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..550c654867031f13d3f19f5c0ab1cc2c92a7174e GIT binary patch literal 2908 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 + + + + + + + Powershell mail - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

Powershell mail

+
+ + +
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/powershell-mail.html.gz b/en/tag/powershell-mail.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..48bc48e234d454e152455bb26352c82ef0ea9b1c GIT binary patch literal 2898 zcmV-Y3$64YiwFP!000021I-$1bK5rZv;8Yj_Ii?AlhnhhV_99r{dG#F4Rm{%z$NCpy zIEf|>Nu0BNctdb_wvXUv92136Fvmg?HF18q`p$jqRHqUglZkUn$s*-KIVj+XA_;&l zXsG6sklfOMxaQ#y(S$0BnJWX#$fWP}YNX~$r7n4&(c6jhoBPYT`;^BiR&>fpg)Su% z5=NxJR8%o?_KGivkaNNqiZNx#MVB;6 zXoQmxg;?P!mP9rdsk5aO*e1s&giNpsxVEYs`TkEku zgDIwnNU%1o(QPRiI=}kq0(}QG8+;fvsg{g@j}wS8%b2g`Bqn|!rN0<@@T;&%h4~6h zx{S2tr4MVQDp%LFYY4H}r zx?qcUnN)PPED06deH)XIV$_XkQiyhP0*-vp5dHIbc}YVu#iB7`!lyKO-r%6mXsp{I zoHXoOw=KBqtgruUg#XayhB?oWGzm#e9q*dNC!}k12JMy3`6DRr;-)Ex)}Jwj8wtE@ z5vJl)MNAE5!@=*1jAmFf18vIKr)TJ&$yBDN7bMBXzQu1r$3-9G+$)iD_C1fu*vAcJ;E(E|VwI2g zd(Ih2c3tFSWK#uXQ&l57h92!UcM>1Gq}ab`&w{kKT5gpJ^#kNTA{=BK5n8Ogst*QG z`gHm3omTxzJ6{f27KfqEoi-0bq4?sonhi|HJVMajcRNM1> z#j!Z85s)|TS{B=On3yQIT$P{xk*Q)$X;y>;UpQy=IA2=|_Pi%Z_6KIid(UJWvI)Eu zn|fqY-)4?VLp8&7J~$gsn;TdN2v8bKRXn0pVXazkyG+I^Q1DPhxh~sn>{mMM^_Od2 zpS#)?5d_a zW7I)3gh(g~XBiu2a%2L$#aHW|S`971H8vz08s#S;SWpagVG7D3;dE&xfrugzXqrf8 zW8ju)D0c>v0ik)TRy^zRM@EPy-KXUkJpZVs*}vq$;JM9A2syCQ6*%{#@$DTt7h&n+ z-!nn1%NFa__gpQWe6Df!H~M1T2mfw?W(?{VWcS@f`p#lKSfPa8v63X*RjdN)gG!q2~j(WY+;0>^imVB zE>xd_s!!Z2)+xU>PY`|Z^vU|g?JfC9_A&qK{^hS2`7axHnl0U!xESm=n-Q|TZL2EA zEr9@pV}dPJ6AgJ}I7sQ!DK&Afrwk|H_hWq|Ek&@x55i;}-yXY2|90SqWQH@QjBlCy zJ%pLQD9x7Wf}nHs)XLI42l={}-c>_9KN%kMkL&OC$p&uO1KzgElpNmlnu-XHJCe;%CTpElVq=HE%Br zC^|2$Z%Z(Hd21QBXVLoH+H8mNYvsDNZm~eu5q^&*_Sc_(qBn2rNBjD{mu7O_ebc#? zM4bl#&l1%+M4eyG-N(J-LGSU<9dzCv+=HhC4sKq7y!zXiHPG%XO9GSUy9X`z51Ppc z1B)RKGJUJ(1%g0_@SG9-)a_W&ItS}lArbbp8UVM`P(-H{*xGP{l*mXc0GJo1yB%xc z4w_WBf_}srHx*oQeSY-~>QrvsJ7{E|ZLaSeps!G;^(x+nmEOq~7PTs5RTB^^xfi33QI?37J7)bt8O;WJ8M|4!V^$rDN9p@p%%i z`{YxgZya;a`Yhv9%#i+y2ZB68-3a~%DG$&Ff8Hw`xh1f4skDj%B9J)1vutM8L?NQS zfj;Sl`{dt8gTckCqo@5!NR@P9grK8<&VJ$PAb*LMkYOh4ukxS(=+aO1GTnneN*L?t zkh+XjK!+bRxPj_`ArDbP7U&uHZ1(`PxtfEzHlvY_r7E}DllN8(@2^L7^@AD~e)Ue4 z*G;SNalSP-2zSaEp(68|%TVlb5jlqyK=ZK`K)r$<4JcKn%x7CLQxv?)l>V|Qr@Y~l zrV{oLIT8q+OF($D=8*T7*u%~6Ev0S)^!-Jr#Cf}4yTWYIf2DWvee{BWLFNSI2hjV~ zFkRi}wubAIM~$lk~L*+W~@!V?X{6JQSsQZudmz9z + + + + + + + Powershell monitoring - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

Powershell monitoring

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/powershell-monitoring.html.gz b/en/tag/powershell-monitoring.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..f373f9992b467f368a0c956ea60b670619a3322c GIT binary patch literal 2892 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 literal 0 HcmV?d00001 diff --git a/en/tag/powershell.html b/en/tag/powershell.html new file mode 100644 index 000000000..945a1427f --- /dev/null +++ b/en/tag/powershell.html @@ -0,0 +1,306 @@ + + + + + + + + PowerShell - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/powershell.html.gz b/en/tag/powershell.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..34b6f695fd3077acb2d371a09a44b790f8423f42 GIT binary patch literal 2931 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 literal 0 HcmV?d00001 diff --git a/en/tag/pre-commit.html b/en/tag/pre-commit.html new file mode 100644 index 000000000..47aa392fe --- /dev/null +++ b/en/tag/pre-commit.html @@ -0,0 +1,296 @@ + + + + + + + + pre-commit - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

pre-commit

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/pre-commit.html.gz b/en/tag/pre-commit.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..d3821a8c5156bc9c623a62a840965e384cfe29a7 GIT binary patch literal 2896 zcmV-W3$OGaiwFP!000021I-$1bK5rZv;8Yj_Ii?AlhnhhV_9mf1G{{T2X8ffVIfnO?`v!yvJ{*!L~~PCt9{)8mWZUp_@k8MCwfsrrQ& zPNJDZ66b6m-Vhv~?IZY^#zbNiEO91?oH?&AzH=Ws_EdsnGIOpeS*1La4hnc8NdllN z8p`D?B-b<`u6{T~G@+7W=86C_G8=k>2C1c#sY~AH^m^v}=Dt36AM-fHlFk{i=u$Ex zVMHoSNhKp^X-3?D$1#=2MXzWY<0P5-W^R9j+n6Ur(m#MSPb|v+3OHrnO_oZU&bjn} zpr3#L^^^1C-_L(OE(VuBT>mDI(!sAkDyyUxNzY zdh4Z0RMAFLMw2VF%*f(aDhonF;bX=;EP=vJ43aA|&K#Vkj0W1fd^Pu#p34Y>DJDsl zU}ajZ+gdVoe(}=_^c~P_@uAU#EEo|>LLk5lW4>IHnD~JZ{%Y*OugWGC^A=26M9T8Q zhqdW7(Fhx)Hz`!&FF>opi#U%M!6_A52SDSS1&%2zX1_opDYAS?h_ zTiaHs(?ss{AlPC*Fhfra2emETXW~0R9XI?O83Cpns4F8jjnOU>xEu z35}K#roE%l!w1L1qtQtdYQ?kAoo57J0dMM;3-QzevdVB;L8uo^kbpCuP0;7#@whoL z2T%et!}JCT&S;1}4}zcz#?5d@b1^|jwjh>Ly*UIa$u4OewUj%@!Bv#;JPF;DL)O;D zc`*3mbQ@GgQi7#2U^(0hX_OoAYmzl#{4XsiEF}(>D!eCXL2pQS`la81uFWtQG^MLX zYp2T~JQzWnQpWhk6!8gip*meraB0ezi?1Pebf&!?ph}C*SxzhfZ#8yRe#hWj8A=VPjtiQET72WA)mseff-TBF#Ud(~q#*;$qpgdYKR^1q_2>I3(LmqYH>%R*S+SwHFcshB2E*f}(kG`LbkFQMy7`Uj^~yJP6KSkdgzijxIK z3#^!dHf8G5GxYCdF4EH%B*~|~!S6uFRUhNrDv@*cJ&(!M$1P>xkLtm)%E$XX=Zqw~ zF7h$5sRXjAY>=Hok9J);i4R^+}Z!87d-4i5+BfZ(ZWwHxd2i}@ZHPWeX zJ4dyl+Tpq!olWP~-W6g2^aXD%XQ;K;DAaddA!im8JX8U$Ds~s=R&%}ia>LBPuVKoL`Acf<~Rh~ZRd&Eo{(ND?{suy&N`KY(&y#bGqbZ+4XD zxx%@x0>y=R&vq2(Me*wA=l4~hgvcGm@qT=IabKlL`3m;NOQ?D~3iVPUzEX(yRkRFt z|2*DNtY0+JeH95pNgaq@?_8ZAp3p0ecwa@6oHMbbR2K^8E&`brw(3g%ADv=G)CN-> zaLT{AS8P)LML$9G!PDQ?FW%jfpSVxiZGZA9M*L*s&GW*IiHpHLiv=Nfx1Fs*+~Mdz zI40Oo)!truzJsJXSdug6a?Wr9emzyE$s!BZ_(7O#;+qo_;a`vZkSuV{r1l+sHHR=$ zcbs{FUJ!JS9vfNOM;KoZ(i=O3%R}AK@VNP29ZKMiJ>G3wyv==~9xgbS+Ye8{nL0seAKR7mT=71~ z8BuRoR3779n5nxRi?#WLcv}oX@yi`Sh9VqN%w;)i?Ss4&8uJeFGj~HwBH12Pem0kH#nC;e+A$_~BSx zyB0~%jK~y61c#&YrWEGG@&el&Q|ej&o$zre=7j$ z#TE1$#<*$5C0FND-=Lm#VctU%^K5c`?*M&;dY!lEKCJXkbg-yYA#6=RtdwdHkBSQ% z{fJ|-R>+&d+f5q6OCdZG`6CaBM-%7_R!G%!VT90%Lg&8nRFFT%1!S1n=BqL&0J`>5wM_ru&l<)!I;1Xb z70}@a1+JlbV8}z1kQI6YKHEP4ZLa5_t}SS!V#(%KdGg+x;r-31w!ej8;aBfOeN(g! zALmfaHO|}p#_eN={;l4{_t7%~23ZnR9x(6QVY`%%V{DgXdMMTeOH literal 0 HcmV?d00001 diff --git a/en/tag/protocol-family-unavailable.html b/en/tag/protocol-family-unavailable.html new file mode 100644 index 000000000..c01e389ad --- /dev/null +++ b/en/tag/protocol-family-unavailable.html @@ -0,0 +1,296 @@ + + + + + + + + Protocol family unavailable - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/protocol-family-unavailable.html.gz b/en/tag/protocol-family-unavailable.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..68e5fbfec27e7b88ab496030326d47ead5369e3d GIT binary patch literal 2932 zcmV-)3ybt0iwFP!000021I-#~bKAD^v;8Yj_Vr0_O;U$b$Fk(sIh!}R8oSqIG9HM8 zD8wMa5TInH&3}IjfTT!@Qmjndv2z$Cb{Bi^0^sObUI3yEmLCG@aiL{W%BS|6vT~c4p zCq7wFkJ$R*5YdQAikU4u%*dqg^lGH$QpPsFH*bjL`B>f0$@u;%Ye>_f^ zbCbl9##1gGkB4sh)Ax_gkN-IT`8excJzM-PkK*31KP#y_IA+w--sP&f z@AO=7d1R8OB^WCn0e?A>8HAfnSA9 zD$G}4;w(^>7cQ(#7ephhkzS`zh(80Z3Mb$^Uu}VS*+axIPsz!?604aqs%HHWy=G<%bbEaqh)8^|=ry0fnV{@TcEv&T6>?{YXZr zKWt8dafm%9G?+`6c8&)3?;ZD#1}Al>B~N^Nnh<;qys2L{#8V5%GQn{HpDJ`mj7+f%a4 z7+=~qBZO1QPvPY!_y>Pubf&!?pmK{&SxPDZ&T?q0{Eor55)>Oy9Tzn6wfM$Ki?+2~>1Wt&a4~ONJx>UQ0{ULx?~~1@(FMfKE6CV2 zt@Qp_)ez({ETF{I)Lv9spDrr%lE>B32JLKRQfUc(DU%w@sW`xp7LO`88gH6P$)h@| z4Q2@yN*144t}S2HKRdOV7}Mqp65bUyvvry9U1n9T$C!wN)bP>?afNrIZ{6toGsL@ zSD`wv*>^7L>y6O1BLv6}82t~P(Rb*PUKa+x!OBlq)~&GaM?ktE;=CBoVm{$(=D-ALzAXaTEr)5Oh@7NSY_VL67FIjU*) zi+mq^zL`%UlU8~QYfCY>eJJE2WG?=gCd7Dlv2K0m*5dHz3TJ<#FV=nV-xg@bpbA2b z*iED-2J6lWm8g9$iTqu~D)8>AU^-XsCX>pMcU2rlqx5D+d7dkryDCtai4SZ?fnH=6 zKR>^#0;#&Zn>fzP$Cr0inwT$P8$O4sx1&(672<_LysM%mIP!V8qgZb=(p?n^LP?#y zE_SX?5KrhrBi>cfBaBxP>WhmFRx!7K5myJ2z-+|zQFx+GJ(_2aIXzo^NO3~c8y4hek(Xxbc4vD{ zJ_9P}>2#~_?7*d=*2d&hJ+nKHz~VG<)Kw_~!)ZQg^mnjYkZfc2c|O-j5*6n&E|))j zW!q?M?t%4Z2{!g^k5PS%?_oOzjSPDy$KMZzC&T`|{_yzzP~9D8kynq%7zYIVgZ#P| z=KcH@-ki1SS@*qgu`i~X0dn5!6KS*f8M1A|(u!%t+fxmS&Wr2g63kp48^+C9xH>o2 z8>#$SyKb!oPS90=KcI>E_19nM?YsKbf_m@7shD@)cCG}G=bp#YNOlfU=a+N)e(!kD zyFauCop%RY@MMC$>(?N!`c7vJv^z^9PpJiU4_fX&6q5l47NOpx>Q>S55(2%&V@A|d zw_`->9IRi(1lUn(0NhSP5uH|GW5WrONlID)z`QWs?HCJp(4@i@bTY=cMd3t0pibr1 zzk^2R+2s1p0aUV1>!$!Ntn^;Au&7ias+xdU$<-hpWS2O2i9@nd$lKn#bsEBnAv_}a zlKaG=5%iq$0hvKybpw2eL_>?84!V^$rDN9p@p0s@`{YBQuN`yG_$=d7%#iwu2!cF7 z-2navDG$&Ff8Hw`xh1evsWgfMB9J)1vrJ}IL?NPnfDY@a{ouEw!QjQ~qlf)UNR@P9 zgwT@0o?z*yAb*ZC$S{-jS9wqXbm^yRneM@#C5&-&NL|`0pu#kM!SU>6;j2mfe{7K)r_jB2cPK>CeVsrYLxoDfMMlPI<#8RVC~pvIG!17l80~%^|m!*u%~6 zEv0S)^!B1t;=J3hU7@z{oC|IY+9^hYb@V(4%>>wo*RzAlSarD+5+rsdVV_619; ee7Dy|&P2sy$F92W*8}~H?f(InzuG`^D*ynj-Msby literal 0 HcmV?d00001 diff --git a/en/tag/rabbitmq.html b/en/tag/rabbitmq.html new file mode 100644 index 000000000..aaff2c059 --- /dev/null +++ b/en/tag/rabbitmq.html @@ -0,0 +1,306 @@ + + + + + + + + rabbitmq - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/rabbitmq.html.gz b/en/tag/rabbitmq.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..589c752e2891ce88365574d014973c13de9565ba GIT binary patch literal 2942 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 literal 0 HcmV?d00001 diff --git a/en/tag/random.html b/en/tag/random.html new file mode 100644 index 000000000..3b483c821 --- /dev/null +++ b/en/tag/random.html @@ -0,0 +1,296 @@ + + + + + + + + Random - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

Random

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/random.html.gz b/en/tag/random.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..cddbd215e28a5b85d148dc129bb0c60baa5070ea GIT binary patch literal 2881 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 literal 0 HcmV?d00001 diff --git a/en/tag/raspberry.html b/en/tag/raspberry.html new file mode 100644 index 000000000..ea78b3b28 --- /dev/null +++ b/en/tag/raspberry.html @@ -0,0 +1,286 @@ + + + + + + + + raspberry - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

raspberry

+
+ +
+
    +
+
+
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/raspberry.html.gz b/en/tag/raspberry.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..3942c3047021edd531e5308c7263b272e709ecd0 GIT binary patch literal 2820 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 + + + + + + + react - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ + +
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/react.html.gz b/en/tag/react.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..c298c9704debe4124c3976f2c0813072f055adc7 GIT binary patch literal 2903 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 Boo)aC literal 0 HcmV?d00001 diff --git a/en/tag/remove-item.html b/en/tag/remove-item.html new file mode 100644 index 000000000..8057e63ba --- /dev/null +++ b/en/tag/remove-item.html @@ -0,0 +1,296 @@ + + + + + + + + Remove-Item - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

Remove-Item

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/remove-item.html.gz b/en/tag/remove-item.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..0d8ab8621ba66def608cf6ab6a350d29bdb265dd GIT binary patch literal 2880 zcmV-G3%~RqiwFP!000021I-$1bK5rZv;8Yj_Ii?AlhnhhV_9men@@{T2X8ffS`konFUwVu8f&V&A&}H2&<#kB_f@d-W8}Wy~%P$La$y zoJ13cB+kVlydgNeI7IL>j)}x5nBzc5}@&bnQf&qBP0|)X3WD9DBQ&$xiaI#!D-59puNjib6@GXj4+sD zl4J>1rq#NwBtw^1KfXlY0nG*<8coP0BVtYnM3`aBmva&mKM=xS3_bWLZDKKR!KBMb zSzh?CHoYYpVU6@Ug;M+(XjOO-=Mf_~r9$ffXnZrnF=fliYl!CsUTz}UkS2w{9ET3V z0)Vx(oyLMfuwpqECzvfI4fLYz1j9tQKy*fAFyEb$B4Q-g46i6pdAK~Tp5}dPJg~+? zYkXpjAD};~2lbeXf9#eI~hEDaN0i^oYkQgJPX}vM(_>rraoMVrxuV!hSL&4y{Ll(obhagJ|7N; z^@%Bf5}4_ycSvwXL-ctN1Z^;GhC`Z*5jwF2v6SjfAxKGfP2;Gc+$j!jqKxNB=%yU9 zwl>a#-WTVapfZvYER_L^;YLWK+yF{jR)_Jww4kt*IGC&O9-$e%BjNd%ehs=ZL$6nt zt{knLE`#u31g%RM<2zHuN63ZhbVI?VDPu0a#gt(v(XDh34!k+6&D8op@ZjJ;$ueVn z;ogl9&LuyGmmlFj{7cb=_IiLSEIMU5u>icq&{g>zgKuRhHJ~~!XcB7ijgyvdF{}%= zc%KVNXUmFE$=$ax2`NV1m?ouYXJ_EZM-9ao%k~0YMnuArE>lV%6oRx6h!Gyo5GDUylfH1 za;h?>2D9N{c)C@n0(3Elj%AB9|Ac(%FXrUNXKf6+tr=Uj*^Tk zY{(llDh@SpMlq!LDJYAC)1{sSB9cTrqeM6xW3b97g>7{*gFehIUdDM(v=B|YkE<~_ z@<~mzf5{=i5t~U3(wSA@oh=!8cmFIzSo-+)JR`;}%XRD9rxtI$R5*tleX;I?|Fl3e z2BioR^?o9KXRz+AP?_3%k|f+$tP=0O3icj0RC~(wA3(XU;xL-zcYDh7LgCz3f#Rk3 z!1fgAFYc>A36Xn>b^?T>@0Q`YC~^vk3`F0x6k7}#d@ug?yE=;O6mag zcJJy0@r2%J#QQ3mN|UIX{fa^`ApC3&m*un%{+C9NWgHKPn!H4td=C(n0-;qHIjtoe8%O9r_Wp$ zjm-_IzOZ+3=mw1H3+@2BDQINaJ3IY)FgzRfAM}T(4~Objb(sY9h)i)ra5yL~LSa5E z?x)Quq@MNP3m=DKx->xEdwo`G7QaBQYgk$_t$2H;LD6M-v08zdYgNOzIVDyn%6fNG zT=>?lb&E4}9pMjXVm|)-6TN*`KXg~`y)+l|?%U3_Ao4N@c%I14G3xw$=|1e84tfuV z?x6GTXbYaqaB%Yq!qx=DN}&evXnBRBA8<@o3VGXmw@yQNDTGHN zf8ZhUXabF(d_-mtSltL8Bhk>}$D^+GrgF@>KR!*ub)S3;^tEFi7@uW)iWyShuYn+s zP&b0VAmtI-;Liu8Bew*WDwRfYKm-y8c$Ue`iYP?XH_-Mxb07WpWH5O7>f~|X3aN@N zj1XE-Xw(;;3i20t2^nUx{;CKHfUf*hEz>>vqk=Jx4yj991$6jPforG^81fh;WPzT5 z&vuVMo2xmfYcm?DShBfQo_w%k_;5X{?XSA9@T>Qtx(Hf@kMpfQ+rN{}2$h*vUsGa_ zXOVMk0qUBS!$CO92RP*Bo+ti9Oy7 z-%{!}KyNQP70$cE+T~)4{;l4{_t7%~27%tRI8Q#b!*q4i+8VBpme0ekbrh}KqJ{F4 z=f8kM$~jWKH|$~%fgUZ8wUvsgN743`el%dUl`4m>t`{5mm(EbPV$#!{p;v6EAooF9 z)tjnLTiV`;hC1rfvn9J#f~;XU3d3n+CPbJZ`z>s^-D_pDYuw>G0=6y##syhZ=4Qs) e5aDl literal 0 HcmV?d00001 diff --git a/en/tag/replacing-underscore.html b/en/tag/replacing-underscore.html new file mode 100644 index 000000000..b13500296 --- /dev/null +++ b/en/tag/replacing-underscore.html @@ -0,0 +1,296 @@ + + + + + + + + replacing underscore - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

replacing underscore

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/replacing-underscore.html.gz b/en/tag/replacing-underscore.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..fb74e2d92a7f4e08eba78df83aa8a48b285e2486 GIT binary patch literal 2906 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 E0PeM + + + + + + + Resource Governor - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

Resource Governor

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/resource-governor.html.gz b/en/tag/resource-governor.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..78e0b1f95d31febb49051e12fefd0bd98b459634 GIT binary patch literal 2900 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 y-D_pDwcO#G16!8?wf`trigIUDgXdf50Mf8 literal 0 HcmV?d00001 diff --git a/en/tag/script.html b/en/tag/script.html new file mode 100644 index 000000000..f9173212b --- /dev/null +++ b/en/tag/script.html @@ -0,0 +1,296 @@ + + + + + + + + Script - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

Script

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/script.html.gz b/en/tag/script.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..19f87131ffbee00500927c0a6572a5251f4a002a GIT binary patch literal 2875 zcmV-B3&ivviwFP!000021I-$1bK5rZv;8Yj_Ii?AlhnhhV_9men@@{T2X8ffS`konFUwVu8f&V&A&}H2&n-4^OXud;J{EWy~%P$La$y zoJ13cB+kVlydgNeI7IL>j)}x5nBzFXm*i#9P$;7#%WRdbrIw;_YBnf~n zXej5CklfLLxccE3(S%BhnJWU!$fWP}YNX~;rY?D()4PfDtNZh%`;^BimUPO9MVFEZ z2_sTsN-7z-xC%0wO5~y|n#MRu#=d!fxW;MB6C&yFK$a&K)qe$?GVeZ1B~7PXdI699 z{M#>|U7r4S`Qz!bck|uduks}A{qmzykVQ4kcuF$4oH#rh2`b5rTF0VXaO7N|4M=jC z+VBf9Rb(9Gud6vELJL~w{R!g{!c(401S>6(oYN!{pzMIJ;uXv}DGi{=@bZKX0JBosbo%)=5W+{YlfGULR-Y07Azy~|f~U+B4vFqmSJWC>QL z)w-=DLzmY-yh7gq%?2MDO~@r9VonGImtoA8a}pCj5W-&!J@_bXVli*Qq{~QIUih#! zy(1c7jr2N&Qv4ZcRd^BS5hFOILhAr%d^N){Wy{G=5XuX@+(fb=O$vWG4jqIA0BdVI zjRl2Z#d0oAFk4C*=tbKJhKX>2=#0oPIQhHHsP`r&QH35*XMPB%`wm{KH{2#0@Hv+)Fnk0nfB!jZgwf?7R&VG||8f zsYn@y)u)UHx97FF6o)E5jL@0)D7~-G#W;&7EY*YGey=&JGI;#xw0|-s zFw;-(k>HGm=+htw+F;xahcp)>bYcr)Db<@okdo|%#!*ALQyknz8PAi@O*v$3ZJbBF z&(1eNWh5n7Dgze7jgUsU0lyjA2;=#=He0`L|?SLJsMzLlZWfaYPRAo#J zX2ZeobgNJW=wc2X%NA+=5uJX7-3Ax)w$+P-P%5Aw^us>cY#Loa{Gx)4ebY4`j#Ujo z0mA}HTutp|l?~~gH7|K;m$n4klS)hQp-gHlr{VxZT0F6EG~P6qk|%Xk7t9hXlwuM_ zb5Om@Ah{F$q+-%l#m+))=q(2K>7cemue z+mckeCfu-#bA!vjF8<;Worz#_%#rY2{u%8AgPXwi7#QxZ%1r# zTs!EW*59k+2Hdix+qR=y-v;X8jB~m9xTSU$SLoFp4jN|Mcp{)Semfi_HM5RfP~Fcf zrM|k_U=?#EmT+}S2h1j1pATp1e4u$CSI~3C`y6LPy=~7sz!DODm=oZ!a_`x-9QhD=>4TY8W>M#Og3v?{12_-nzB! zaE5Lo{2oor$DeU%0{pxs%X1WGNad(?6%pqPv>uo&_nS66LbkP#^O&lyoq-Hs8hbF_Xx z5n)fM0dPAFMRZz$jSVMAW;tmE0Q16hw__~aK@*EBXfKR$(~L{5j-$Rp9qTH*gGT1r z78g{QK>@Mnt)g-)F7TLuW|G}j>$?PZ+dUnX$UWc@JQtMJR}}X zpb?Z$$P5Cj8{uOl8e05t)V1DJj#>A|=SjHklTU%ZcFY6gvy4wML+YzF5abc+M(`J; zJVG1%`Ji;em7l6*x<`LhFvig#b!n@B4nHVx4b=fd9;1XT&@=Ga?h$Bn zH3xNVMk5tVHn+-?4^|8xu1B@~Ef*Gk@lI5CK&$X^zShV3_tF`mGV|&iO6>70a*i!P z{S7F9dJTOTP_m}2q1JR0O8G=LvAmz$D83>O5FzN z?M0`;d3#v9S8UP0)w}pUdO^S-(3=+L$%l5Bt}aFLhUD>hV+`yj3AO;x8Y zZEr+F9d+N?lHDpn)-W7};WRQ6B219|7B<}OwX)eY?(p>hTbBXjf~+ZXGh=P??XHc2 Z3Cm;0zPba~1N|M-{{h@Wb8&Mj0065Uazy|D literal 0 HcmV?d00001 diff --git a/en/tag/shell.html b/en/tag/shell.html new file mode 100644 index 000000000..585a34fe7 --- /dev/null +++ b/en/tag/shell.html @@ -0,0 +1,326 @@ + + + + + + + + Shell - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/shell.html.gz b/en/tag/shell.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..7fe84f7894c15d3a59f03bee2af0ca5330df8fce GIT binary patch literal 3049 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 literal 0 HcmV?d00001 diff --git a/en/tag/specify-columns.html b/en/tag/specify-columns.html new file mode 100644 index 000000000..3873719b6 --- /dev/null +++ b/en/tag/specify-columns.html @@ -0,0 +1,296 @@ + + + + + + + + Specify columns - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

Specify columns

+
+ + +
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/specify-columns.html.gz b/en/tag/specify-columns.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..64aa963b317a54f40ffdc291f8cd99ef3b3bd99a GIT binary patch literal 2916 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 OSpNsT#a2YqDgXci;j4iF literal 0 HcmV?d00001 diff --git a/en/tag/sqlserver.html b/en/tag/sqlserver.html new file mode 100644 index 000000000..9c89061d4 --- /dev/null +++ b/en/tag/sqlserver.html @@ -0,0 +1,316 @@ + + + + + + + + SQLServer - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/sqlserver.html.gz b/en/tag/sqlserver.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..09cf0717b3d8c5b13486582a71cede67bbd98bd1 GIT binary patch literal 3012 zcmV;#3p?~5iwFP!000021I-$1bK5rZv;8Yj_Ii?AQ`Ez$V_9-*Cuy3Sq)ijI*G?wm zfk=o#3=%8=T2|Wp_gjDuffS`kiLYblVUpNg?0XlF(HD<@esuZA%O_~2B6hYv(!UVH zaX5BJ?40ex7lMPceFQ(Fh$xKw85WYLvGeQY5AH+99*S{9#?B2T^MniKAfLyI!~i;{ zftrm2azlOMnwLXFW2z`-uJkb@<6fs*AvIGfamk-4y%{^dyT6{hk9d?|MJJ3{bSW8= zAS4B*qKc8T*S|b}O~efm$VIPd65%)=dD+nZ3bPT9iK6d;GLJ37|MEFyom-J8noPLr z_&oB`AHRKke*DMzFUO1S)w7%5)lt&@?H8>hi)tcxLWEk39UcxPRpd&~V^PjIa?a2i zB(+Fv_&J$qG7j=qH60M?3!2n;zhFE>c*0YKV5S99Ga82y^zE}WfJX#&AdDvwKqDLn zD8LF&uq3iJNtG?Fz$Q7?A*6y?;M$&Y=y~(`ydyJIqg1j%6V2jP71)GFBOH>g=JpJz z^sKL)Bn}JOXvAoIjb?&OH&U4r5=aj-*1-xW+(sa|HsjdANy4aayvx&L->irgwUAU+qyv4$vyBzD?_ z37V+k22>^t!|W5r{p-`pSb_tcABO0p^B}pcjzw666sGFJpI)~vJe;RT%GU3koZR{h1E$A)3-#5}bbRRiH~Vbh}mQ zil?R12?!5H(5jRXzRha*5V=sDt|_=QWz5Alm@*6nx{>bQUS|e#Gd({L+}qpJvP>DD zySGDxQ^il=;|KT$e-m_OydI!(i%wWdEP&2@;OhL2!M6lTGEfs2G!BgTnUfY@G0Y3L zc$Z2=r;CzM!QJ-}2`EPGh{lCzCnw;@2Q|^Zj25qHKqgq!22A*rCeK?N^aYJ{BZT9c zU8}YQcb)e1pSAEGn%pqw8ImR;v8m&2llX*mjn1I4(m8(!&(7jyDRGgU)Brv22j$AJOSY*sXCfYnnYz2!#TAelO^e^`K)7wsvG7Ab`iul$AyNPkDw_g3Y;_tbW zZ4o=B?*vdcg?`uNu`B;%y7kqmMlV7G^9@Q@kTTNI+YwIl{QBo2CkD-eCI_hrfeKN+ z{5RzEH(ez&g3XfDLpl4{B=}uxLy(Byl-igI9@+XR7UmyQ!>gQ1p$1LIRzyJu3NuH1 z9?M)K5x#HwU^Id<5BdN*-y%8;H~wl2=&nF5SeNFNqS;V<$1AYR4KHbkX&)As^0 z#VJ!J(#^>`!c1RbNEhe@LFb@wBTIdU^4o55YbV_N%%Vesqn?oX@ zcL?jd@;N<-h!hK=zpyahrN7LEw%hft^BGb#OD7wBX9q4bYE4W&H6y$82rN!SM_(c! zU^v4kjqifhf@Bl3&-1ZblCYdFbGiKO3)e-X?1qHNpDqqupHXwc#m8;}8X0s?j=${> zP6oXPy}|LrfxcC-i2Z6rCO9NG=;s$9U_8k0r(~xPX4HEpJsil%A_MBYGiNo~kzemJ$D~=kNe$+1GnFLd$0jd3G83L1bOv+wH46zG>x-F z-#%zK8PrUM7+4IrpX&4WjxPxGYfl)_Z|znlTI*o-kTS#_tp>nt)fCZc1kP+YMoOfl z5dh2!!|hgP;T9TOTtPRH88;DJalM=P9co$kVOnUIy=S?;b%4G>t;S0-9?bMkHn6Bw zA#F`StmJBt7mG_A{)8j4RLGm|+f^E}lR$XH>L(tM4vnE2s|zxPz-ov15XqVrKOD5J zFQsEv{qad0tor05pl=*=FY{T(Czv69zYc;tMC}m%2PqHG8h_p^9JwK|bg9e~2Sgxo zfM;cySrdhb`VP9*r|!jnkNW)=FOMGetdJ_{!V^Ms3hS(SM+fR7V5)tGGyUW4K-{o&{~|Btg4H1LeoheglV8Go+VJun0v2dNf~EX3B>y!p$@N zoPkwlDjmAKUQo-wbc)&~lO59;cJlQwv490{2 literal 0 HcmV?d00001 diff --git a/en/tag/ssh-tunnel.html b/en/tag/ssh-tunnel.html new file mode 100644 index 000000000..a94bc6d67 --- /dev/null +++ b/en/tag/ssh-tunnel.html @@ -0,0 +1,296 @@ + + + + + + + + ssh tunnel - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

ssh tunnel

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/ssh-tunnel.html.gz b/en/tag/ssh-tunnel.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..5f12c328d396eff41816ceedab5ede5a2eb39660 GIT binary patch literal 2895 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 + + + + + + + ssh - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

ssh

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/ssh.html.gz b/en/tag/ssh.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..9b02e94df30cb46ae2bdbbbfa9998c91093d06c6 GIT binary patch literal 2890 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 literal 0 HcmV?d00001 diff --git a/en/tag/stop-proccess.html b/en/tag/stop-proccess.html new file mode 100644 index 000000000..949f91d62 --- /dev/null +++ b/en/tag/stop-proccess.html @@ -0,0 +1,296 @@ + + + + + + + + Stop-Proccess - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

Stop-Proccess

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/stop-proccess.html.gz b/en/tag/stop-proccess.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..62f2abe710048cd24772d78e4965feef6c1d8572 GIT binary patch literal 2881 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 literal 0 HcmV?d00001 diff --git a/en/tag/the-database-principal-owns-a-schema.html b/en/tag/the-database-principal-owns-a-schema.html new file mode 100644 index 000000000..54832f3c1 --- /dev/null +++ b/en/tag/the-database-principal-owns-a-schema.html @@ -0,0 +1,296 @@ + + + + + + + + The database principal owns a schema - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

The database principal owns a schema

+
+ + +
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/the-database-principal-owns-a-schema.html.gz b/en/tag/the-database-principal-owns-a-schema.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..2b6690a033a0b8015e321048b3ca406e72f6e50b GIT binary patch literal 2909 zcmV-j3!?NNiwFP!000021I-$1bK5rZv;8Yj_FBoUN$TO$u`IcD9!-0bv}xk@+R0=* z5D8I;L4pN9%W9kdehYx4NQzRVUan(1u|Q&XvF}{~8h`TS$H!N{y?l!1DrOglWBq{` zPNIoJ66fL&-VhvK93uD`$3$Ti%(0L}O`M;vzI7iu)u{x>Wa8XXvPij54hndpNCKb> z8mjpuB)2pmu6Z~{G@*)O=E?vwGUeazz&D>`MQLYI;W z2_sTqDykT{xSA6bVuhzz5|j#>1T@7A@kJsLMlzU_7$XZ?#q1y6}k z%ZbCIk)(=T>vbxWbB>$~v;j#i(<=OeOf?w?`Rhgqi3|iy8@xYaJVJQNGlgKKB~o*m zL=sF9uq=cj0uvF&(-@!;PQp@;vav{=Ev>*dIW{3=f>pq^spZJ`7mI}_Eviu}*`kSd z@#+d}!=o{d$WCkf22}c$w_ch=1#L8DG`T@@L1tU2%m@jkj~Vl@0t$CANUqH|ad4V4 z8W`{L_1u?cP7nrDOc9Y_ZCaz-QZjUT_2UclEzoT6VbG*nG9u@MK7 zG4$Z0ut|ma3QW3;wB@A_Ytvg|5Y|YqQz*orfmWp#aUL;(Q!0%PfX3G|98Qg4QW#N%W>!+ECJY9+i5H)CCis{ae~=W(ZDR)PB2WQ3q)r`1@ql0X(Co)!|;mo zl!wdX@@d|$j0ctRurfZWj31ys%Lo0VmFHSTjgV8Q>KI83Y)c~OtOS35SPpT6iXwN) z4N1U-ajX$aAc>u~VS*+axFMA(!?604@!;mXHkaa1=Z6tG^B$yk^|=^}h{94m`0e+a zvqmmS{~#mOA2uh!IK-V38qF0l0G|B{0)Z?~vq-hUn8E2-;v=fkT?f5jv>~Qc zxl2Vpae+?R@#91a3iEuZoqGesKfYQRG_d@IGF439-$e% zBjNcMehs=bL$6ntt{APHPC$4tg4U&s@trO2BjiGLx}o6Glrb0IV#+Yo?pC@72i_dk zW_o=fcyMr_WtlO)aPLM4XNsT0%lGgf{-x-`cs)Sn7M-$;Q~!B;O?84gcPH0Op`*ivomnyqlW08#>>|>1N5VsY={UfU7EdZT z25*`v#gjU!3ucKmN*1jAmFf18vIKrx)n+WGd717bMBXzQu1r$3-9GY?a8l_>RY9?Bj+q z@CWr!vC4=0J?DZX`!4b!vZ(^Hsj873LyvZwJBbfoQtV%}XF=LqEw@UA`T_DE5e_nr z2rX7#)dvG8eY$-2&a3{VoiB$hi^EXoPMZgzP<(b?%?74p9wF%NyPcwaw)}Wd4ARcg z`G%^c&240`;#i#42*?|EEsJeCOiUD9uF6mU#8k1SG%G@aFPw{doUbhf8{sn~`vbEL z-ZI&SYyxk^rXHEpx0$2TP|a|i4=%>jop!YlC7?-wueeF6*IEhRb?uB*px~hheO=4j zWU92?>o3!b*^s-vX$cK`ZRe1dm<$JJWr!&O?P>JbilMv@fiGUgcCkVVVxo zbkOUco}<@>&PuPHrM#AaROac)_ zA}%PA&c<*qlT+>uCNDxuSFM9K4o-{^O}dZEF}VIoO|yT?g~4^3`4KW>rB`saB=_At zIu~K-<3BQydv39AeJ9r9(3cwLaHB8Qeej|!KJ0v#^f_IvpBFJE(p@G&Jt9*a5gZQkTUeM6^UHC21Zrmechbk9oGvYp_s$#?+r=-C z>spppOl#hr8Blat-0GHK_DC?vGECaNQ>#1AXI|2i9j9pJImemwO<{Bh-!HFGzWWHu&>F;m9q4rAwt%91wxT z0iIcSWO_`e+Ym;wxZRAW;Ja+8sTX-`t-+}!v%l223 H6Dt4!_K%xt literal 0 HcmV?d00001 diff --git a/en/tag/through-firewall.html b/en/tag/through-firewall.html new file mode 100644 index 000000000..e1e06a8d8 --- /dev/null +++ b/en/tag/through-firewall.html @@ -0,0 +1,296 @@ + + + + + + + + through firewall - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

through firewall

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/through-firewall.html.gz b/en/tag/through-firewall.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..47bcdc3d09c51b6489aac8fbd3b14f9719377a3b GIT binary patch literal 2897 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 literal 0 HcmV?d00001 diff --git a/en/tag/time-schedule-blocking.html b/en/tag/time-schedule-blocking.html new file mode 100644 index 000000000..4bd20fcca --- /dev/null +++ b/en/tag/time-schedule-blocking.html @@ -0,0 +1,296 @@ + + + + + + + + Time Schedule blocking - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

Time Schedule blocking

+
+ + +
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/time-schedule-blocking.html.gz b/en/tag/time-schedule-blocking.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..5673ae38d5e9a26f08361fd58f3f1c2f9ffdc5e0 GIT binary patch literal 2906 zcmV-g3#IfQiwFP!000021I-$1bK5rZv;8Yj_FBoUN$TO$u`D^YlQiv3(x$cBYbTTO zKqN#V1__n`Evs$*`z-*H0x3$ddby6Bhe2X@vF}{~9Dnlcho@J+y?&17GG=G{WAzI$ zoJ13cB+l7BydgL|+eh#-j)}x5nBzp{^Rkocm3V%uktAE{qmzym_;?scuF$4oH#rh2`b68 zTF0VXaO9k!4M=jC+VBf9Rb(9Gud6*IBFJdk;QfN}2;nKuC4!ZfNX|hQ0+b)HJXC4{ zqY%c^7@!eOLKI?&r&titSftLDQec}Ln-KDhS>VdJV&waa#ljN?RV$Tj(L}p=bp^KJ z(HKYMUTgarRQT3gFHNG7HX1XU+@N_zW?QMu2nmIc8S}6N3U@I`uFN=baGEk2Xz%jX z+?RSTBMhdPBw2!$X|--E$pcwmi(*7(R8KSF<259&uL&ozn~A*WQ;Arcta79^vy3jFOhShbFJgv>8I8^yzgigFi>0Ny;##uyRsUH04_nNa>EL3AU zJR6};hr?lgVhW%HX8P$J5}eTxeHsKo8;qObkmh29j%-0JrFv5cQj%TMIBF<&ii4Xd z<9QOgDTl1Bjq|AY+36;zjHCohWx!&%5z;6(;I|~J!}woVP*_SF%vE@g(2U-Z@bnA6 z23?t<*Q-lcj#f^WL3lthU6(S(cc!3^kPFr6hJs5|#$0@hDZ@~$Tj}oYd2?8ssr7;2 z-rk;)Wybizy&EB%OMVJ3-@`xno1!!A^#D~^bjosK0eFj{tMWSr-^x&GKy_TuB-G*? zCoSJ%SQl*ZE*Fx{mKC9ryRTysQjEGWO-j*DPQZ~58lrz1FE43GrZ{U%=YPRAo#JX2Zeoc&kta=wc2X%NA+=5uJX3-3Ax)w$+P-P%5Aw^us>cY#Loa z{Gx)4ebYtnk5vsp0mA}HTutp|l?~~wH7|K;m$n4klS)hQOPSPIPQ?L+w0LCUXuN4I zB~R+8E|?`&D8(d<=Ae3)L2@VhNyVhA%E{_U$4|*Lfx^zAk)*+mB6{}j_v5y4vJM z%&lcG;uxIP2q+qNC5vf0bWD_7uF6mUNLR6@G%G?GUpQy=IA2=|w!SAw^apz5yJfNs zSqI*VO*PV~Z!<@gp_<`3ADoS+8}_jf7oaR4~kaB2LoQL3yVyF&N!WapsOFaohB#C%N ziEuWCZWmXncBCKB-~Z367Qi3 z_73)9JIeHLKzXR*Fq-6dJIeD?;XG7<;w2Qi9R+%|glhIs1xkqAQ5^64=T{F^nv^eK z8$E}rx1&(672>5re5j&jI0<>YqgX#_q=zcfs%P9$tW|gTP(_oRGqIyoR|@Ao0+|-J z>`MP1onl7RUR0fh%8%SD)+zs_pCJ0+>7(_F_qXK7*~a{D+n2v%1iyx5NPujtMqYbubix;UKAwsN}@Co-&+(+mF?`w8(-Leh?<>_~z_I__qT; zBr}{dsa;E7@*&LBZE3zluLwFvPmL_i!;r6f>75?x6GbU<;niaB%Y)(EU$3%J&wsrA#Zwb*J%hZh44t^_dFyXO`y`s3o?Vi>PGkwiG~*6A9SrZ zm1EZZ@p%%i`{YxguN`yG_$=d7%#iw&2ZB68-3a~%DG$&Ff8Hw{xh1evsWgfMB9J)1 zvrJ}IL?NP{K%4Z!z4*`3VDReo(bK*aQWaeoA+(^-*e^U4b6SOu^R>Q4xRcHZm6=!Hh+>atk#lGP>MyPU>NRZofRZ((zukhFvfx=$ z>hq?8@`mr4D%eBh2q1JW0O8G=LvAmzhnwMBO5FzN?M0`;dAnb`$86ER)w}pUdO^S- zbApQV=Y2a&SC_i2;d-(BF6>%I*UBwgC_nq|7jQ^9N2*tcT@NDAqXn|IQZaQAZC~jJ z16Et9a_H(Nvyp%440S6eJ>404#Rd#=AEZ^?`FGmV_C_?+QTMAY*{u>}4Z~3wP9rlR z!UWlEVZ-fCE1O;BJw8XUbr~=&$eJ=YGu9^G{k2grVR`J>S9k7upuchbFW6}MEb}S= E0KKoCO#lD@ literal 0 HcmV?d00001 diff --git a/en/tag/tools.html b/en/tag/tools.html new file mode 100644 index 000000000..259cfa8d2 --- /dev/null +++ b/en/tag/tools.html @@ -0,0 +1,286 @@ + + + + + + + + Tools - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

Tools

+
+ +
+
    +
+
+
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/tools.html.gz b/en/tag/tools.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..48c019d09b1d773e2ff22ebbcc9f833e8c8422be GIT binary patch literal 2817 zcmV+c3;y&UiwFP!000021I-$1bK5rZv;8Yj_FBoUN$TO$u`D@t9!-0bR}-h#PA21l zNQgoV5)1)aR@?mdTL2^lQj}u#dUv)H3nX?I``!hh@fVL@KDzkr)e|(AF+1BIs}IC* z5=|VEIA{CthT!mQAHmN!CK97yjx#~z#Cd!1gL~hxrxF~KiE~ZKBITKMP{0#O5&&J$ zP|hbIxuyYe^}`{e36&HxR|J@mN#E<$NX?~8UGg!f*AwSg_wBj+h{q|GbjpZDmy!ty zBT`~YDj7Mu;G7BMqBk^+agvOE^Ll@c(U>Ph(%*q9Pb{MU2smZlO_oZUPPy~~9{c%^ z-#tD*{_Xtd<7Myir|VzkQQG_EXQdyDYMSwsWO6xicr+4Jl1sIYMY-U}IYS$eTD?mw#l&xAhEdaYSylwy!~jZ@u-> zBr0j6F{8;9nrCFTmCB5eQ23ZJ4@;nM6NBW+j1vc^DWie*E?>=ktLHMpV2VkSC0LnO z>$Z{%onO3sj(z}|4L&rQkV{6yoDhgD!2(UF_%qO|@FLD5MsP}n)&bCXFvBrr%gJkq6C$LoIj~y3>r{E8tCixDZb*Ad3vAC4_oW2MIXi*$90(91iOfQvf9} z(@$@Z;Eaao%OD8aVB8FcG#4XuWD8;`)tf?)lI)VkQA4>?99%^i&y&ziIb>~ZoO`{m zPB%eiBqdlX0~W)LkVd%yzb087#{b5G!cyX3uEKkSX7q-Hr{DNB=*kSeUR}C!v~s!( z!h;dCE@g~wO#L1q7pl`01(&9bx%e7WhM_pO(%swh=CC$X>jS~Py*(w%jPZqgGeS6* z{1je(g8%R@MQ7UU0jjX*l;y+%@D@W?<#!Cem7&yt>bRgusKqxD!>2NN(bk|ZXsntboHXoOw=KBq ztgn7I!hdRW!-8i>nuH{}j(2t9%Y>_S22GX9`6DRr*;P{zr9W*7H_Gs`MHtJe%9t9= zhJ)epR-p>e#T+`8EzGO4kgiUSO3@yNo_c+*@;p43rYFiWgZib)vF zLG>3y4js96hTM=G5(4j}M6T30&krtv!_fa(lQyu}ZwVD%c0uZ0so0KLO>giUV8Z{ANdao++HWDp0%>AK8uqJzu{0 z`Pp3+C?Rr3al98#F7B!{DPO=oaSl~)N1ZscMz&l~-7_ntK7X^p zD&}4$;p(Uem`%7oq|DSVwRtL3&~wGd9A`wmVNr2PbYZ4$ck0sQGoo^yPq+Hc4qO^) zZA?DZGrRK$EKV~|U1AY1oaU1ze+R22$u?%66?2W`X*r*9x#H;y*F|GUy471IK|LZ<91$E2iidst~p&AXW-Bh=rLgDb$@)4gzG-}2u4}|{_5ya-wLUUE{qUbP-uo1o(l43 zcnKM1vi_ZUK-N|&rXEJyS9)o{YAaO^U0rWA@-LmCZpEahJ43J7v_S5Iw5m5Qowl^S5e;?J zrCUpOs{~oYa1@5q$V`YZL3Uf%aJ$pWW@mPbJ8D~(0po(KDRVPpZSvh-8wC@V$Bun< T5vvFKdyfAGm93$W_b31Wk&-+^ literal 0 HcmV?d00001 diff --git a/en/tag/tunnel.html b/en/tag/tunnel.html new file mode 100644 index 000000000..b377f61d5 --- /dev/null +++ b/en/tag/tunnel.html @@ -0,0 +1,296 @@ + + + + + + + + tunnel - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

tunnel

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/tunnel.html.gz b/en/tag/tunnel.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..4f563ac20d3c005489e1933e4b76ebd10528c505 GIT binary patch literal 2892 zcmV-S3$yeeiwFP!000021I-$1bK5rZv;8Yj_Ii?AlhnhhV_9cnPt^xv zIE`iwNu9HOctdb_wvXUvnh=Rm5aV1BIdgu#{KkFk*i$J^$jrH+WSQ|?Iw;_&Bq@L{ zX(;1aNN#9AT>Wr}Xi6o;%oPDXm^k(M#>i&H0KIKVqY1fUM8t$Za2dvY8Iy$gfe`+3?7>H66N`BZCR;_y^1_F; z=?&2c8>BZWRN^l{tHO&oj~Kxj62)K)i#nXX)^fBap)i{09aew zX)P!OE0=R|irGriKrh-&FieFDL>EK`@%o6^s2`;~*C=X&oJv)PNMK-Fken`R@DKa-5VxpEax2}C1U%P{H9;vPvC}S0&_oM2 zq#|P&R-ZE-T%R`PG90S>FhM8YqwKahm*702u+#v4hlBR4mP^pz$OH|??MW~WabrTG zSi-b-GHGm=+htwx?tQKhqMqAbYu%+Db<@pkdpk0CQ(bda~xbpIWN-C%{XLjZJbAg z&rY{N6mDg&0ot&m2!0ly)66UP7Cg2GbbAXec$K?{0I!qdZb)cQbhZ*Nb@vS57a-cArM zBtM0hAK*Xy%g~wjdVne|I%fs30KDbcRrwu*Z{;X6pgJyS8fx*4lU8prtP8eyR|rWL ztC~>7-PZ{TDMtN-rj=+XC*a5jEzv(sRu?oRbDXy(bokUJFZ&ww2~AWNgwvK?o3;ga zT@2OlR`?HHZdmdRNt2LN*YUnie7SJ7&Y-JOIe!A>J-==XqV%Ut;YK-LbqHfQRTWdC z#dtJ6zEh|YbQwd(a)&g3i%vhnZi|b!YxOcAR0Ng7-$qF2y$rTv4`s@*YkTdZhyXvN6_qXkyX zK$|l4=^6TGIv3gLE0Pvd-{5zkf@F&@JIDvS>@yXo^wXhT^IQn z*-Qf2Og6|)p+~zZox}$(srE0*vmouQms_Vo^#J*g+&-^(p9W2&6-fom(E!;&Nr5Vt?mgD!;#+T-Z9yQtOIY&rW)zgx1FQf zQ0;JyM`zP{xo?Fy0A0Zw%MohLHH!3osTa(Gf`=-&RkiNo+G?yfUv4;i>0$Q>9AGdd zfdt?y$*-z?=ar1XU849(h}cu74^H=@>gQ=q0Z9%$LPZ0WG|#LZO%I*5kg=T%v(Jzq~wboh37V$%=p zz{$D7hEzhM@|*+b6hqdZ6UIn5U+GC8B1yz^N`$jDEbAmw+Fa*1XwB?;X8id`3(=tTun2g|ola7n?r# zcMG&&P@N!m?(Q=%IJlRpK zpES}#6$wH~or&J;T%91E(1k{PsG>>Enb=XPONDbEflLcqb*2B0PBABHkEzZ$9zBxM){>{h_$pRNlY8TR%bOM#}l|?t9REUn%v~#TKiWE3}lWQ$1id<@!81SLX@s1H6)+E8Z74C+ZE0 z$^*SiGj+cMvNoR)m2ok@(|2~@(opMS@`aw+okw7Co_p%Pk$~YepEUg|SglBQG5fNd zYb6QG`HahzPoKChnwra0op@Xvx&fp5E)mr3S$5wG`3o1U5FDA(Ya1YHauAuEO z#?5jrxjLr$3iYh3^B$U*XOruD2j~mb>%33*VWoGXgGHqZVQT_nrBs7>vbx04_c$SI zg}fQO-J~JB48kLo-}8`oG=&CHJ|PPTtbT+Kk!Wf0!$IGAQ#)qUAD^e;rcXWv`r0w~ zjL$MY#|){j;y{o`s2{;!kn#X+@#nqDkvjrQl}e*HAOeX4Jj-NeMHC|HD`-x;mL$N5@c z1Kdhyf~w4`Z#1#T^T;{00QEPf0O~bt?tqdtrN4UxGgZN}rqtJyO3GWlmsGxf#pMF-_)-~9p(DPyF1a@gG<0zFzF8!MGlPole5`oVxTR;nGkzKLw*U%Ej3 znn_Q0hF-bRg4_pbRd2R>U1@tO8tSS0(T?m^3$lUXC=92SnGj)u?6$DscBhriZt@;q qC$M!HFfPc3GPg6 + + + + + + + User - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/user.html.gz b/en/tag/user.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..6fa0cc891871f2ad6095fb0cc1a3134f30a0800d GIT binary patch literal 2956 zcmV;73v=`ziwFP!000021I-$1bK5rZv;8Yj_Ii?AlhnhhV_9-)Cu!Q7q)ij2*G?wm zfk=o#3=%8>T2|Zq_gerY1yYn^wYiR+he2X@vF}{~9DnxY$H$kyzI=-2GG=G{WAzI$ zoJ13cB+l7BydgL|+eh#-j)}x5nBzWr}XhJ2$%oPDI&i~Hu>eazz&OFCu5qD#qy zgb^t*C6$bvy%8isE_zMV7$?ctH*fdX_>6f%B>f$T^2DO~uYgnL-Datz>6A+^;IW^7 z_w|$W<6qBzI$rj!zQ6fJ9;LmXe^TnPsHPcDNhX&QhesnpCAm`TSd7wB7{+2BK?3AtoM%n5W=lx}y=XhZFcB^goe>$#?@mb(F%oNrSCpqbTpm_W^S(76SmU8JKC;FS z&>z)<`ccYrjiN@#DOGid1O~PtW6@a!{$alw;szB-ZlxQNfM?pVMks+KcG`vsnrPsL zRHO{U>Qlyp>(km?ibItjM(D(QklxnkVw^=3mg>Quey=&JG&q7D*p#O zV5XnmBEcCA(dR)Bw86L;4rwk%=*SktQmQwFASKxqjiZKgr#QHdGM*=)n{vq7+Bgq- zUz~1&%1BDER0b@D8zGHy1AarYI*k9N1%;)=!CZy+2+im%2~WTDYtWS$dcC@Ih})uFCHid@Dn#0o8FqlTeFqoV0w4VO_Ar`&>vm zTULZh?!JjhNHOZhG$}kLdIx>^8WVx2;|zgi-f2?W< z3K$kp;%aIyt87Sbta-^(yR;?Po>W?bU&^G$aw-lmq{Sl(N8?R%DS1*yb-^sLLMbL; zGzZnY43az1Pbwx|RZdnSxmzaNkagg#*i<8(`ZjY^ z8LAns^TFA8s&}mr1)wQ-w%nl7TdhRjm3Gc7D0nDCTh;0|o~^ce{pFgg7yfmJu+c3i zfVw$|>GH%CzcJPIsw|`SpP_ySRV&OH@zf!N)4sm?xhRN1pPCith;Mn+|Y9KaNTA#fI47xM$VQ}c6X01L|FRx_dF{+w_LZr?`(1C zbA_|N(HHAJ_)iNoV^G7P!tEx~w+8Fp3YDo{J4wP_#VYact6=Y8C%U6d{{fWyDh{Jb ze!HVQ&lS#n6)0Xpq1#cQ7fUE=_f?>T$Q{M;et3F$U!_U;f@ES2Rc}Y3UMj@b3h};* zmf(n$AJq*c$jqgbmZ@xF>CIcH)=sV)`HT?8^MY}u9mKRU&XsGYbv36`I@ zSFBThrJo@B;OUd~i+8u=r`gv1z3tp~r`XdTjfsoF8D}#> z?(V3zzu=ar2EsAHhN=$jBFr5m)p4VoI9F4K6A0q5x?>Pou)+_*WF6m}qY3|J;D=;} zb0&45=nGqfnY#JTm*@pS=jgGKrFpRRbuYcO^Hp)wKjai4+_ItFwx3=3Kd;dN-q#`r`EltC;K5gsT%?U^e0UZXr{r zOU=XFf*wRljx(a(u&6lPy);vIJ1lMT8BsaUr(1nz2QCe@HYT6xncaB=7N?n~?w$!4 zPV-5VPr+(QvW?m2#atsvSk7l$u6X*)bYVxJbpM-m+{Las7GXqBZ9+0aeof;VewgmIlR`h{(Ir$P)wHw$a}Ak_|4*H$aM`% zE2b51&on4HFYn_kFmoGk7&n&->LNn#?TYUN>ejl!8M=z_Z)jqE{rM+)`>uXhquzUI zF6Q00ohw1)c@XeCk)1=-d2{YQ>>Uq!4~Ooc^X^~^p3HD?{SxF=UpTFSc4v7KD7B#O zLCb}bVlu+OV#tGBUDJ9&Mxfn!%7}XEc8qA9gY~QG53tmGCsu&sn4# zWM)MaBI*$|eb3yB{~iqnFJ2x!?pq;M(S;F03kutmg{Ol2IbK4BnXJDmf&!o`KUK?g z5B{iNjH5&9(pCW-eo){Vssn~RLZzTUelEP3iCOV5Tg1)|C2G zt)RT&8?_4d5IF(}oeMyCyXKJFOYGrh_?A+)0eXAUsc_!y*Y2cS^l$YpzK@;}Fvy&s z;xv8V4%5{IeQUU0EWZ!C) + + + + + + + WildFly - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/wildfly.html.gz b/en/tag/wildfly.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..3f0ecad61ef0b832dcd8b44211567c3879e38eb0 GIT binary patch literal 2929 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 + + + + + + + yeoman - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ + +
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/yeoman.html.gz b/en/tag/yeoman.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..84244d2ef3e29dc80c4d8c45f5863880d2d00439 GIT binary patch literal 2903 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 + + + + + + + Zabbix Poller - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

Zabbix Poller

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/zabbix-poller.html.gz b/en/tag/zabbix-poller.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..4a4d5a582f8ebbee3a103feca5fba7e3e15fe4d3 GIT binary patch literal 2903 zcmV-d3#jxTiwFP!000021I-$1bK5rZv;8Yj_HvS2lhnhGV_9Q8Ci3Jk7i+%3`(DFx{^}W;$%viqj@1WZ zI1VQkiLKLJctdb-x{Kgv91)3;Kf|dYa$@~*`Mv$fs!qi?A`|O|l6k^YX(6A-lEeTy zr-7VJ0&+urV(W)}L}Mx`X14G#Ba^<SS@afsn?`N-%7QL$%H^0e)r1$GA$L{V0TF&mlLqfk7!MKlcqS37v_Nu3<4}OkeU=3u%L~`jKwzkz+PzaVUXX6;Ng`~b-w4GoO3mb?|iS%c8r=*A&i8aGZ${r6E`{mQDUl|W7 z<6&idP#GVhKgtL7qm*YGMU9YEsA?Yx3~URM(rF3)X}28W1{Fzer5zBTr`oYbD260< z(uN6|Xy67^Bn-pq9^?M?No_8{fyxgfbnF}^xAnOQry+%Do91Cjt4!4DS5G<7e^Wj=Zqg=0jWMcMQIjqQrpexS(;M#Wzk`yv49C z*y4RAB%LlwLIroNungW=Iep>ojq3_6w#()=wt{S3PeE@o}3=Lw-uK;Q2NeX`y(x`4QO1sS`h zdEOnX8iIU=1(dj&+KVb1(3{G<G%T%ZyApeonLfR3b#mcMtU;w30 zmG9n3)xVVU<&b4@7^>W9@*ot72Pf5RpgZOfg6_WCDcWblj|0UZ>Fk}Xsane1S_UJI z!D)?vym42un6^X5M8V~<{PYiW6>CbfB$V>Gby|<}m8D?EdyGVXp!d5QCfks8;4Rry zBc1xzb5t6t8LqRz>Da4pUm+YoWiV0khf;yHT7B0=GFE|tha$#R(QaeD(qFH>T=Dtb z(e4mGAGMg!BPlVVUFSX#u>G_no)TNmaBLqPI_fmSYF}3UP)P$R8c5MVM~4sE znQlg|dD)b4>}IT0_4%-2jAoFov5m+}UEyBCe8g}fv<+|!K_!Wus#vrT4Z!1z0$Ij@ zo*d~wZt=;wM^-~9QXJ>UXP5U?nuO0`qdbGEx1~_86yh6& zcwa?JaUAeyOR;{|NcUAF2qkqodb4$Pf_Or2G~#^~O>)k}mQr0RoVy5QTG*m1{eN_d zDN(ykb=oPvaIaXW{Ih<7=!2&()-T@OlK<0=W&54VUoq!jHlvp-sx^BAy@ROd}{VqJL*$Kc^(b;vAIe~Ir0@hZMKND=PMzzxV0XH04@ z(l>SpGj;WuEzku)XXxC>(mdIC*h_A!!JMD<4*Ey+_v)+yx9s*dZT41oh zsU76ydbNjxh8fo$C#XH)9ZsQ|2}#bWZuON?FW#)Nin&jVxjNzlW@D}oms54B&^*n{ z>Dl5#hQX)d4GZ(ry-PE7x6`sFpCOgA%-iTYTX1QpwK4fz&uq^lu;`_Zx_l&HIL#-G zzXYoV$u?$R=5viCQE@)wa{1F&wvEQ-W>sJG+c>a&M)k$GkL?6BGVC26Jsb>=hyBC; z@aWM{-Nr6rzaEhZ4haqh`2{M>2l>6WIla`g?t9_lKzIuSPT|Ncfu%~NQ5+C~!~vdVGP5EI z5%m~4qUZLLe;*767q1S^`<0L?>B0!1IfWj6?x-Mti5HMzCabUVpaAI7Pt`Kry+2AA zVP5lQB3CODfn!6545?QgSs}Qp^Bv{x5|@umJIK%Ms@WoGA#J^ zy(lk`mf>T4r|$%Ar8PoD=GE7m*x_kt?N)VR-&M*f zulbTv3A>Lh0ff#3AiQ01$jv2oe?5FlsapfRx#*NQ?{;gKk}dkL^e(Q8o)a+0jG+9e zdAAy-%NyF(aDB3P5p*l3)XFVdC_jDiD>$T_A=Q?{1_u%7(R^83DW7^0ZeHmp16Et9 zbm;P0vXOu36m?4`9o-o^`CbchAEZ^i-|Dob?X_sAqb^HZvRf(03WlXHtVU)+gbA|U z!iL+eRyG^TJAAjGs!N}7K~|Kxp0PIh?yilTiHgULU3G!32l{)e{{>QiC{VX5000SL BlXU<9 literal 0 HcmV?d00001 diff --git a/en/tag/zabbix-server.html b/en/tag/zabbix-server.html new file mode 100644 index 000000000..63b8fe33f --- /dev/null +++ b/en/tag/zabbix-server.html @@ -0,0 +1,296 @@ + + + + + + + + Zabbix Server - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+

Zabbix Server

+
+ + +
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/zabbix-server.html.gz b/en/tag/zabbix-server.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..666e8cb2f7581b14d672cf42fe9c9dacb88ef3b8 GIT binary patch literal 2912 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 + + + + + + + Zabbix - Sipmann + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tag/zabbix.html.gz b/en/tag/zabbix.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..fb3ba1a3e9c92526ef8be2ffa3939c26d9d6c197 GIT binary patch literal 3025 zcmV;?3oi5@iwFP!000021JxR9bK5rZv;8Yj_FBoUN$O$Ou`D@toHWf%+@y)yYcG@W zKqN#V1__1$Eh}yQ`z-*HA}LCd+_d9!9wv$1#lCm(7=H2i#rfs$FQ1^P4B6@KQ2jy- zN5RMCMRc&Hm-gKIdVKB^@(TqD#q$ z_yNf=C6$bv{uhtO^cLCZHH||YMMKwo-(BJ~ zwzgH9PzaVyXX6O7xul++w3(nE2^)w`i1enLQ&L2X#G2s+PjAgR&qcr8;8>Qj%QJFsLbajJ@k1;c4XCF^8SPsELSllYGGO+&64EHw<2NL!!nog*pse9P1-dXpr&E3V0^#GMwbj(sx0&r%1Tjh5QzLlWZfa+E8s(xLAA=+B)kOa?oWG_%8RMijpu?vydDhpUFKDQ`ARN`~ zTD2{>>!hpxtc3sAkPUomGcKs-jnOPAWDDQ6n2o{d4n(| zr^;ihH|h8KM{9-3Kxb3vSk_4MkLdIh?AExLHqD+Tgj@k#uj_ZoYSZWf;${_O=$fv1 zcc^Lz@)#CS;woy-tE^9NO5>8p<ECwIX^2U02lJJIUJ}L$}6?W{2jS zOfZ^Y#SFA5LzkYSucNVuPcBH54qb!afR6J%##$?pb^0R@$e4I-C46R`R^xnWDp=|sBhl^Yh3=ZcCS)CW3pUl0 zPJOF6DhyQ**JC&LUWZOy(#sSm7w4y4{lYho477D*2^E4oIUff z4Fczbmd{SoC;|kVN4Bc}Aqjahw?pm|M{Pb>&2y@sY+?V(5P(#Kp7R;H&;-y05NPJM z9;@bKlW>2N#4%?Kaw#lRJtAPG4Z$$(;SK$U1aW)|gwe z$6B_jm!B2MM`TT0o;ds26T`94Nd`wyE+nxNRb?zheaPi`>sMrVJvh)Msv+A}b8Wde zBwS%bxuik1mxmLIp|cqih#G%9*MmSrl7J_a2y12ODGF(3X!a~FR|lPnSE^Hz5a8a(z);q0#T#i|ef z(*jKxbYRe*Y$wtW2J7Amm8d-z68YPTmE+x4!QSB;yroS429*0M4x>?eyQMtO70!JX zD4dJ;Y)gSI=C6N#eqRNOh}=>f=cgx^_f?vh&qyMsQ1!MH>ZL+_tq||4XbFyd9&Rbt zD~)ttMS@Vu`ok^7f_TdM!uu+kE zj_`2`&P{9#K|GldvUz});|w=sLm(UyY^ds#n59PxNwvu?N7mJt;Rur7P@Sxa#9QEd zezc5lc8`U7({p_?!6}nE!RTuW2s3rxBZYV)=nS13S?b%l-*w{Ka-Po)xO&~A>UXt4 ziyJlq*6jlat~E)7i_TgUawVhM)fLCDfQy@3agk) z1QA!~8o+GC^@&=dc2w&}7#TfVyiYMiAADg!cBFA>hBiAQsPh?6IZelFeP;_U4YejF zpX!nAc?1^6iKA{@5HOtPlSZF|)tqD#v(K}!T9PO^pK-bD?F-vRLvx)(-)^$8Z+ndD z+dv++W6(&ybA0q&uYcU{9(Maj5Bll~$~^L_5gFrvV855$8i8>?yUb&bZ1kx6PPo_? zEKS;TUR`~Ny z?#K;+rAnny91wxT0iI3d_5hqk{Z7 zoe_?` zDwfLJDo@^7Fuc1Q)#ZDE%>VYCC{E26;bVQT4?=IHH9&dh)pt6u!;`?;F9GU1qX6|1 zmi|DgG^B5z!bo25N<->`W=46%&CCLJA6Wtjoe4mAv*eKLOYHt?_=Zxq0(yPXDRAEI zR&HW6=)csvxGs81z#vnCvQvoNa+ofzr8I`?qxmzxT{^%}ZqY#b@v~pSA>|aQ6&tL5 z5rH1fla-mWp+~{`nO+#M%1nhr7k4pg`Ik;myI|7MouQL0!y)%UTGdPOR#VzuiH2J0 zhDbwpD+F1>uoQ+>%S?zcLAIONaJ$vaX0Ks`3sq%ZdW;LQq|DWfHOaTRHZmqk9y@f^ Tts(uOZ{`0F25Xi4r7r*gdQa0A literal 0 HcmV?d00001 diff --git a/en/tags.html b/en/tags.html new file mode 100644 index 000000000..30b2db196 --- /dev/null +++ b/en/tags.html @@ -0,0 +1,381 @@ + + + + + + + + Sipmann - Tags + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ + + + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/tags.html.gz b/en/tags.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..7e45ea97e0202483ed9eb61d13911e71a7a8eab3 GIT binary patch literal 4150 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 + + + + + + + The power of PowerShell - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

The power of PowerShell

+
+ +
+
+ +
+

As a long time Linux user, I've automated a few things with bash scripts and stayed away from PowerShell... I've moved to a Windows environment a few years ago and still, haven gave a shot to PS. But why not? I've made a few scripts to automate some tasks at a Protheus server.

+

I found the PS scripts being easy to read and understand. Bellow, we have a script to remove files filtering their extension (or no extension at all like the following script).

+
Get-ChildItem "C:\TOTVS\protheus_data\system" -File -Filter *. | Move-Item -Force -Destination { 
+    <# Diretory where the files will be moved. You can use Date formats to help name it #>
+    <# LastWriteTime proprtie from the current file #>
+    $dir = "C:\bad_files\{0:yyyy\\MM\\dd}" -f $_.LastWriteTime
+    $null = mkdir $dir -Force 
+    "$dir\$($_.Name)"
+}
+
+ +

Have you ever been in the need to remove files based on other file content? Bello a script where I read a file that has the names of files that I want to remove.

+
foreach($line in Get-Content .\Desktop\bad_files.txt) {
+    if (Test-Path('\\x.y.z.a\c$\TOTVS\protheus_data\xmls\'+$line+'.xml')) {
+        Remove-Item('\\x.y.z.a\c$\TOTVS\protheus_data\xmls\'+$line+'.xml')
+    } else {
+        echo $line + ' - File not found'
+    }
+}
+
+ +

And a bonus script to stop/start services (if you handle some Protheus Server, you know why I do that).

+
$servicesNames = 'app_main',
+    'app_worker1',
+    'app_worker2',
+    'app_worker3',
+    'app_worker4',
+    'app_worker5'
+
+Write-host "Stoping Services"
+Write-host "--------------------------"
+
+foreach ($srv in $servicesNames) {
+    Write-host "Stopping: " + $srv
+    $SrvPID = (get-wmiobject win32_service | where { $_.name -eq $srv}).processID
+    Write-host "PID: " + $SrvPID
+
+    <# Force if the proccess is stucked #>
+    Stop-Process $SrvPID -Force
+    Write-host "PDI " + $SrvPID + " stopped"
+}
+
+
+Write-host "Starting Services"
+Write-host "--------------------------"
+
+foreach ($srv in $servicesNames) {
+    Write-host "Starting: " + $srv
+    Start-Service $srv
+}
+
+ +

Do you have any automated script? Share with us :)

+
+ + +
+
+

Translations:

+ +
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/the-power-of-powershell.html.gz b/en/the-power-of-powershell.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..ddc763fd8896b2dfa8116b44905fbd897a254f44 GIT binary patch literal 5613 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 + + + + + + + Top Level Statement in C# 9 - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Top Level Statement in C# 9

+
+ +
+
+ +
+

Hey folks, I'm coming along to tell you a few things about the new feature of C# 9. Every time you want to start a new project, you always have the same Main File, with the same structure. At the next version of C# (version 9), we'll have a new feature called Top Level Statement. With that, we'll be able to code our app without any namespace/class/public void static main structure. Take a look at the code below.

+
using System;
+
+Console.WriteLine("Hello World!");
+
+ +

It looks pretty simple, but with this, you can play around with your code, and even code a simple/tiny Web API. To start playing with the new features, firstly download the .net 5 SDK and change your .csproj file to target the .net 5 and language preview like bellow.

+
<Project Sdk="Microsoft.NET.Sdk">
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>net5.0</TargetFramework>
+    <LangVersion>preview</LangVersion>
+  </PropertyGroup>
+</Project>
+
+ +

And you're ready to play with the awesome features available in the preview. Let's code a way to get the image of the day from NASA API and print the Picture of the Day. No awesome code here, it's really a way to show how simple a simple call could be. After here, why not save the image in a file? Maybe send the file over telegram?

+
using System;
+using System.Net.Http;
+using System.Text.Json;
+
+var API = "https://api.nasa.gov/planetary/apod?hd=true&api_key=DEMO_KEY";
+var cli = new HttpClient();
+
+var response = await cli.GetAsync(API);
+var data = JsonSerializer.Deserialize<NasaApi>(await response.Content.ReadAsStringAsync());
+
+Console.WriteLine(data.Url);
+
+ +

That's it for today folks. Keep an eye open for the awesome features C# 9 will bring to us, there's plenty more features already available.

+
+ + +
+
+

Translations:

+ +
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/top_level_statement_csharp_9.html.gz b/en/top_level_statement_csharp_9.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..86b6fb12c652f985fb73e365f9e24c7448283b69 GIT binary patch literal 5302 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 + + + + + + + Using git hooks to easy your life - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Using git hooks to easy your life

+
+ +
+
+ +
+

Hey folks, it's been a time since my last post. In the meantime, I moved to another state, changed job, and started learning new kinds of stuff. Today I would like to share one thing that I usually do with my small git projects. Git has many cool features, git hooks were one of them. I'll talk about the pre-commit hook today.

+

Let's say that, for some reason, you don't have a CI tool/server running after every commit and you want to enforce that every developer runs the tests before every commit? Git pre-commit to the rescue. You can code the hooks with shell, ruby, python, and I could be wrong, but even PHP would work. pre-commit is a client-side hook (we have server side too) and he's located inside the .git/hooks folder. Let's jump to the code... Create a file called 'pre-commit' inside that folder with the following code.

+
#!/bin/bash
+npm test # assuming you're using it inside a nodeJS project
+
+

Don't forget to make the script executable!! Now break your test and try to commit. That's easy but can save you from breaking the tests at the main CI/Travis/Codeship/etc and being notified by email :). Why not even validate the lint of your project or check if the coverage doesn't fall? Does your team/company have a patter for commit messages? No problem, there is a hook called commit-msg that you can use to validate your message.

+

+
+ + +
+
+

Translations:

+
    +
+
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/using_git_hooks_easy_your_life.html.gz b/en/using_git_hooks_easy_your_life.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..cb77dd1912d7b31404b85f3ed9eb203b238059dc GIT binary patch literal 5026 zcmV;T6J6{diwFP!000021MNI%ciXnIpW|PFD6d!ctte`7;#gi%$4L|SWNYHy-oBh1 zACQD3*xX8hmet<;r28x0AA2(ZNRbq^B~Fh&G>c6UgTd@G*mQXR+1u0e-`+hZV;T6z zTZj0I_%s|HHCWg<-hwxbddFJ?{u~BOQsRzjBA7gC{Br)I^|(=N3TeQO8rPgn;wX^~ z;zprlA%IS}C&xz~yXG#l)Q1+~A(x!`mT;-hj=Jqm3DsE2*kZq@{Q9WzZ|j#6>of{t zD!Jpc0$$FJm^WfsPsydvj(-t69FY;1WE@3Tg2;$4DyC!_r3vx*kP(Y~;Bi31@X*#> zw&s`!qL4}c2aFhng#rJ^jkw>wNn*)kCz5S93headqh}|3zn%QNH|<=UUH@C|#+`rt zjIt|Wjgu&5iJTraqR~Kb$u4l50%k)|KDrD5W-jl6(pd+@1tt&WT7hbhvrA{ML6$Ms0_>eJA*wpvi zR04(@@D75}3wVuVA0iX#&BnIxRa-TzC>PHoA~`vK`O@(;hW(s8d84>#-j$UN9cvZ0;EGG-SPUE z5Q*kk5j?}}MBcQOe;RiS&%MHPzwo?Ucz#I!%s=2C6rQC8H6V>lR4pPXkS$okhdKD? zt^AQzut;_zA^o^fq6}+5ApNm}x}G43N?(tQ*rzbM1O9Y%P-=^*=Rq(Vkp1?<_@>;3 zA)CWc9r)YrR9h8ag8#t=q}#7Hf^wKOW_&c3(A?hbJ$|^?-RBcuiL_YV(1J`xyV623CJQV}7TV$jl z)V2do%90Bnj4Hx)sCzX^qBQiZID(o-Dd%D5yMskg35yw(s6g|$5K;@*jjmZzhOz%y zfTB`TcZ}{mAVYq`yn}z*CFooYolcp%>}h6nI!cpyE(3a_OWFakCd|3wVA9<8EqYD4 zPoZ9|#e45wdkkayI6fe}ckdqZGW4T~bu%DPE<^|L@-zI0e=#{$Ru51{qmG}l0ziAx zw=lRgX_m#L6^IL#4d)cp`Jk5jT8@GxU-e;*8ar^5P! zVETc3%%Mr8LAg(^a#QJ(`#ivT0Szm9E$bG{b=bwf3*kT4nW3Q>f+k}jp`k~%Rp3j6 zrDO*442<~$;?d-)$_UC&slpm1bXvnq!KgBy>J9t7{@zli4CrJG_5KoW{t}t4Ah$xr zxNdY45HbOD-LBVVi&di%h;1^+p{?hUTZfoKi0e}UDXt{;EX#WQy3j78xR}~PT5Loq z!7o&))*Si)g|N6==%e~MsgzMz?rMQr0_cOdMUlfZN`{mSDG~!^%Aw7V$v;9z#0Rfgm>$}?e@%Cq z)iI5w95s$#MgcptX+;=xr5p-cSzYfnj#;?rAgj>E641u7g!T|>v}p|+n^xZiq+7}w1fy|RbA7iJEgODh`J19m2RWT0; zOeMFQS^2E#X+tuIn>z;!vKFda@u1n!eQG_xRPD%%E<2P@WK_=5Pj^>ku_`w+L`gKs zCe{lez_p3LPeiwuIb)Xh3NXsQX4K%5ig1eu&h=6C%5nGj&^gY{`75X3*~H-;O9HBD zV3?Gyu|BX81g#Lf5&i?g6%HP*_HLZ0g%G2(hacjcw;-G-rY@J@XC6#`uTq`4F6uTDU`MTm1q$z zn}Rqh%M!&4h|gstm=eGxF-OTZISUEQu}Hum(*R71oRI+R-b3NiFoL!OEEqU$;eui~ zf|kq3X{p2w?-L0xU`CaMsG5*X$Q4vFfphNUH!7@y)_Ubje(p#gP|i0#rar7eb1Pz!`>6gr*4t zu4m>kVP*&*2IrB$Y!gsP>R%D+M5$Dq7nVz~8xRNdwh!$Xa$$V@ilGn%aDWuHK(rtZ zh}AG_qaq4hXnR0y*hGS^8A$r{jNtl)4bvhBAGrRaL_>!V+z5kLQ?ve}M2OudAbMrX zAz*izmW77&;Fpi<1Bgc`dT}ua)e5kzgzt$GOL_GNJAhQ&l(orkFqBInwMHIO4Ms{R zXSH0?f*s2qy-!{B=26nGfIW|%vHNMG8Y813TJA1 z<>{fw_JnC68PTW~kkyVFY0N;-xLAS~#Y5c)R33uUvEw$V)m8)_+Uf-wIRZ8 zB~Fa)-zRUPiJrXbV2flbtw}Jyd_@tQ9V7|bP*E8T1?^3s%F)h;Nfc-#+T$}@rrHq$ z2x{Ox_IX0Dxv)=x2{Goe&7`Y_a+nG+5zK@*DAJh{23>qI*lCkr$5U+4hItJ+1!J_r z3h6~+08nHbi4bsNm}IzDgb$6yfIUJ<0G`Z*k_s5h6Y>l`W&F~>c5!C|0*-O?7-p?t zFc=Yx*#}GrEG(XYxNs~GUC_b-KugLclp7dB)OM|VT7ej4cCCzYYJ4>nDq7|oDPqhp z#w77aC4tMfw*r#-)#O%u z16HUpg@2RdD3J3FbicD{zR{3XZ%6I9++bs9#D#4B-Z5Enqb+sFw*C9Rd{? zLulf~+Qtv6s=kqpfg&B3Lvek8wjpjcS|v!e@iu6j!TjYF7qZ-{ zcJXlWvS>bK5NiQCoey|ocKBLVfNT|@G3d^O=dHvrzM7D?$%uy8Uia;g zgMVr<`Ozp^Kv0pSGgS0j2eWD|MVYyh*=|OA1PPwP)Ipi6ezf<7d)+gXs9CaUe77d|S0ALh=SpcG@-Ws9?;Pck<&s&QdTelV@daHuO z^1%P)fntr^vreqol)PEISg@VBZlHh}c&GPefnvR`e+P=c1H~N*6#Z3!qOLUi^6;># zAY3OltVhx9MTDN!+xxAq56K36FR`|1-aI)dd zYNn3DoQf=+RLyktGy#`(lQeKDGppQea6UCyV-dg5b#A^zKK@xVHiF=suGn=J3rV+v zanAA@KX9*TMe~8KVjDS6Stzbi)aTY0klOotQf*ux9YOH4)gijN0GyMrkJ;T8@%>vM zex1#s1 zC(6chpL-B1id9Cgum8SLc3qlRiy3vU&84x4I0b>$3i5NURW7cH)~bfSQkx5EpEZ?v zCp5BH#syE&ap8kG+6^?9dO;l6T3#xu4aXHQvz@vXfGXt7h+7!*tJ@??4p<0tv@1Jn z(Kk;%jfFa71ojg^jIk0WRJCJ~9|+6Oe5l5OI=E8Z#HWc@KAKTHGLl5tJEYfqWG=SQ zgj36>4#T}8XQ~=4Qwwk=8Ve7kIomxDV}y~EIFQ(ZxF5A%gD!r@l_GPsL(N z$D1mHfQTMvDOeJ^{n}yz{Y-RoKDr1)rv^V7GC+Kol*@1E|z1fhT zSJ>ySG89b3@BW4iy`Fyf`PE%zC}eU&cG_>ApWjt(;%EW|EY=DeGW8BSewZsV?htDU z4Lz9dY{u4m)#Nji#KEo{K>2k-&NKMt1WADb&h@3VMw2o$g0wBQ7I-2Pgj@E z(%eq1SjPNbebR?3ZmnKiUz2tagW z=)!sz9vcLYahYZjkHvb?L>&hHHayapx?^UAe8??aXahsGw5q_JTvS~edY~pZO4uTH zPZSRF25^v{KD>Q{>rKe@`wRz};rKROD5qD%3fvnDty%E194eTn-T{$b>MvyDsX+o- zQ~CmJ%t9eiXz(50mePp64KITEFp<9yF>^tn?!}NZ-xC*T4i{{=Ob;)ki8{^AB;KJ) zgHRy78lO3ss+T6AQl|mKgTh}O5WhGOI_cC3m_;Gh4Tp@a9|w!!sO}scAPyMSSXJgQ zS)@TE-cXW9jSI)8A>@cdyp|{uch=wa!ukIC>W#3kd$#$y1{H_Z+9;tuAbgrm$!kVV z$f@R~dKczVC%!4BLvuT@*WD|>$Eyys6s7gAWy>X{`!KV|VHC;5w|h!gzl>b1ey^g& zg*Q`hRb`EPOVyMv!G>|Nj6!|=VS!fk4eT(&OJP847^&-s30|j4e+5B!8>D6^>xg}2 z+A2Y!V0_x-%%}U7mGA0!R8ot2mcE04U$tVzAd!A&fA3MRzu)gZ?DqE__woMzG<3@z z8PgG?Ue8>)hj!0oN`2o=wc3}$rk-%7X0PN@-3l~ojl{AvNi(96wigPNoMcz{bFlgC zDBNXIO9$qw1>vbOYtzPrf&XRsIq3#v#7vUEL&4F%bbqU$tsoCpCB1aTR^ddLK?cKJku49`CewoHI9X;QVR}{K;Qt&(vcaFf=4}pImHX>>94!J-s^X} zr`>`}<#^$VK%EM+;7J>u{1u%-ggKgjWt;+_b34Uhws-!_VYHz`=u%n%8Gc4^1=R#a zw$ydDXJE72J0Q(j8|1YiAE7T5sYOe^S2(}%mu)i7ZA#`_SXsg=G*xz(YR*FBur1OM zfapZvPVLtG!I@<#wzU|(CeNe%I9dR`#nYZ7it&VCNG%2Z)7%Wwu){#yVGCm zu1}|D-gaT12hE}e^Ru&m>FFX)Y<(zs7}RL4ERAHEo{pA}^j3qFM#>F3zsO#RzkEox zb0XWSGHjdG3W$9WR@LOCSr@h!b|X!^USAX4az^HQG_Xgb5}63|1>0<3P3=Y_>m`{r szKx + + + + + + + Zabbix ICMP pinger processes more than 75% - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Zabbix ICMP pinger processes more than 75%

+
+ +
+
+ +
+

So your monitoring sytems have grown and your zabbix started loggin "Zabbix icmp pinger processes more than 75% busy" at the dashboard.

+

Dashboard do zabbix avisando sobre o erro

+

All you have to do is open your config file (/etc/zabbix/zabbix_server.conf) and find the a tag named StartPingers. It'll be commented by default. Uncomment it and set it's value to something like 3 or 4. It should solve your problem.

+
### Option: StartPingers
+#       Number of pre-forked instances of ICMP pingers.
+#
+# Mandatory: no
+# Range: 0-1000
+# Default:
+StartPingers=4
+
+ +

How many Pingers do I need?

+

Well, there is no exact answer to this. If you set it too high, you'll be wasting resources. The best way to solve, it's increasing them as soon as you notice the percentage growing.

+
+ + +
+
+

Translations:

+ +
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/zabbix-icmp-pinger-processes-more-than-75.html.gz b/en/zabbix-icmp-pinger-processes-more-than-75.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..e35c2eac4dcc0a9f7c66eba440ac10c931c156af GIT binary patch literal 4749 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 + + + + + + + Zabbix poller processes more than 75% - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Zabbix poller processes more than 75%

+
+ +
+
+ +
+

Hey folks, this is the third post about tweaking the Zabbix configurations. All changes that I've suggested here were based on a Zabbix Server with 50+ hosts. Another thing that can happen to your server, it's the poller get overwhelmed by the amount of servers that need to be polled plus the ones that are not responding. Bellow two images where you can see the log and the graphic where you can see the usage percent.

+

Dashboard log about the poller processes

+

Graph showing the utilization percent of each collector

+

To solve, let's go back to the zabbix_server.conf file and find two variables, StartPollers and StartPollersUnreachable. Increase them as needed. There's no magic number, you must see what works for you. But keep in mind that the StartPollersUnreachable is responsible for that host that can't be "reached" (of course) and will hold your poller more time.

+
### Option: StartPollers
+#       Number of pre-forked instances of pollers.
+#
+# Mandatory: no
+# Range: 0-1000
+# Default:
+StartPollers=20
+
+#...
+
+### Option: StartPollersUnreachable
+#       Number of pre-forked instances of pollers for unreachable hosts (including IPMI and Java).
+#       At least one poller for unreachable hosts must be running if regular, IPMI or Java pollers
+#       are started.
+#
+# Mandatory: no
+# Range: 0-1000
+# Default:
+StartPollersUnreachable=5
+
+ +

After the change, restart the server and wait a few moments and take a look again at your dashboard. Bellow the effect that I've got.

+

Graph showing the new utilization percent of the processes after the changes

+
+ + +
+
+

Translations:

+ +
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/zabbix-poller-processes-more-than-75.html.gz b/en/zabbix-poller-processes-more-than-75.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..bb06031668e233d72cf58b113b62f365fe35a773 GIT binary patch literal 5183 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

U=5A^6NhX1nE6DQ{v=@vJR zuIA|NmfdNQ(j2|AFVMqBeCw{}bVRRWZFZqvf-4_rp!-!osT%9gRg`*tUbYg$_31+lm4MBO5UZJAj4nILwsiY`1SF+e9bzs(gO`&p8=Bht7k48uB zBk$4iX!ywMdPDc{;JD=-9CaTZQs!%pKW^0xp_dk66o9D#QEPe{q5|Oa&g$W?&dAqy z0q%mDib=v2!C;H@UpFUEcV=oA1ZrjjYdX~=`!#8P+l*T3 zoeHC_VqBd-t<`?`Fj5q&OkG_X{z+MPWxma4+NCy^MkWg71X?M`&y|*0Un^}?CH+Bd z*3?8BD)U}wq+Z53PtmdAy}6SHG#7g5h_JJ|ic}ZN*1#05lC6PVd3kI>dTnkfZ%MB> z87j<~^z@Ku*L?D6B-H6>u&yaYAUjqfS9`PBN%rips%q@16Sw8_hIlHiaHceW)-?{X zcR;WC*xY-@lUue=hYXM04d<%SHq`@X!m2$lO@^T_w&dy(`)tCHK8KZ^CH)gB z#hBp{&*G`UyQvk6nBS>y`ta7B)r*^JvN;U{E}>ct#7 z!j$-uM|dq{u`ZT7vW_g`9T_j21$fip&*70qc=5sx_=wxMAP0tQYgK_exv07%@IXy& zm=^986}rMf-T)5rue21ok5M+3Mn!dWJVl62F#> zrv?dVP3a4?u?U6v`(G)dKZh5=@N&{XM9c+&x`PpCz9$A~4g)q?rH3EzFnUM?lX%4` znFi|hIT{~P`;J5}UP7f#rwniV{NaFj>p(b6=Ju4?6k^?I#MtI>FdvSpj_Ly9DWe*z z${Z$(SVZF0YT362L!SnaBhn<-3<55X%>e;T()eE3pYDXZEZtM8yQKx&{Z6CI~M~}Ps;-Puq z7CkbeV@AD>c~=m$dnQxri~6dy`AIaXCx&ygoAOD$&cLiS65G}!Er>?iUMf&>mcDx^ z16$stFvOAAc#nmja(VQ6eV09~%RR&S$QRw|N`; zr19a*e%w0hv>tcuPUDxo75!vP-7DNt!gon7f$pYt3EADNI3a*Ujwz7ng>Hfy!VX>* zmCS4p?>01RjlJdfc#NroVt~Glk{}wDz*>iWBIATr0)TpprQ9eE zWr%CN-;ze|l~E1S)8BQhZ|sq8NTc#SQcW1?lc*pOMIrK%0ADd;5Krfqbo>TV<3b=G zTfZ#h5KaW{5y&@qI{+#+7R#q>1dg>kru#&cr1*JnH}_S~}@C!L+*>6`L?PhS4H+NIefFPXlQX*O$i@@~3# z8BwLXKApevc60kYXciTipTGLMo-X3V)`yZu-_<_skbs006<>=5qi5 literal 0 HcmV?d00001 diff --git a/en/zabbix-running-on-low-memory-mode.html b/en/zabbix-running-on-low-memory-mode.html new file mode 100644 index 000000000..8511d0dd8 --- /dev/null +++ b/en/zabbix-running-on-low-memory-mode.html @@ -0,0 +1,555 @@ + + + + + + + + Zabbix Running on Low Memory Mode - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ +
+ +
+
+
+
+
+ +
+
+
+

Zabbix Running on Low Memory Mode

+
+ +
+
+ +
+

Hey folks, another Zabbix post today. This one it's about increasing the Zabbix Server Cache. It's pretty common (if you have the default settings only) get a warning about your Zabbix value cache running on low memory mode at your dashboard or logs.

+

Zabbix Dashboard warning about the memory problem +Zabbix Dashboard cache graph 70% used

+

To solve, go back to your Zabbix config file (zabbix_server.conf) and look for the tag CacheSize. Uncomment it and set to a value bigger than 8M (8M it's the default value). In my case, we set a cache of 100M. After the change, restart the service.

+
### Option: CacheSize
+#       Size of configuration cache, in bytes.
+#       Shared memory size for storing host, item and trigger data.
+#
+# Mandatory: no
+# Range: 128K-64G
+# Default:
+CacheSize=100M #uncomment this line
+
+ +

Zabbix Dashboard resolved memory problem

+

See ya folks.

+
+ + +
+
+

Translations:

+ +
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/zabbix-running-on-low-memory-mode.html.gz b/en/zabbix-running-on-low-memory-mode.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..9505389b274cffd5a079a2e304cb51e8f3165721 GIT binary patch literal 4889 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 LCe(`9dQ|`btmk0R literal 0 HcmV?d00001 diff --git a/en/zabbix-server-out-of-memory-crash.html b/en/zabbix-server-out-of-memory-crash.html new file mode 100644 index 000000000..197040676 --- /dev/null +++ b/en/zabbix-server-out-of-memory-crash.html @@ -0,0 +1,547 @@ + + + + + + + + Zabbix Server Out of Memory - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+
+

Zabbix Server Out of Memory

+
+ +
+
+ +
+

Do you have a crashing Zabbix Server and looking through the log /var/log/zabbix/zabbix_server.log you see the following out of memory message?

+
__mem_malloc: skipped 0 asked 24 skip_min 18446744073709551615 skip_max 0
+[file:dbconfig.c,line:94] __zbx_mem_realloc(): out of memory (requested 16 bytes)
+[file:dbconfig.c,line:94] __zbx_mem_realloc(): please increase CacheSize configuration parameter
+
+ +

Besides the clear solution to the error, that's a common issue on servers that have a few monitoring items on it (servers, switches, firewalls, databases, etc...). To solve, go to your zabbix_server.conf and look for the CacheSize property and set it to a higher value. Its default should be 8M. At a customer that has somewhere between 4 servers, 7 firewalls/appliances, and a few other things, a 32M did the job, but you can set up to 8G.

+

See ya folks.

+
+ + +
+
+

Translations:

+ +
+ +
+ +
+
+ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/zabbix-server-out-of-memory-crash.html.gz b/en/zabbix-server-out-of-memory-crash.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..76a83b041c08f3f0edaee1893aefea480484d38f GIT binary patch literal 4859 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 literal 0 HcmV?d00001 diff --git a/feeds/all-en.atom.xml b/feeds/all-en.atom.xml new file mode 100644 index 000000000..f24e0613f --- /dev/null +++ b/feeds/all-en.atom.xml @@ -0,0 +1,813 @@ + +Sipmannhttps://www.sipmann.com/2020-12-21T13:30:00-03:00Monitoring MySQL restarts with PowerShell2020-12-21T13:30:00-03:002020-12-21T13:30:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-21:/monitoring-mysql-restarts-with-powershell.html<p>Hey folks, it's time for another PowerShell script. If you haven't seen the other ones, check the links below.</p> +<ul> +<li><a href="https://www.sipmann.com/en/monitoring-mysql-replication-with-powershell.html">Monitoring MySQL replication with PowerShell</a></li> +</ul> +<p>Well, this one it's a pretty simple script, but again, if your customer doesn't have a Zabbix server or doesn't allow you to setup one to …</p><p>Hey folks, it's time for another PowerShell script. If you haven't seen the other ones, check the links below.</p> +<ul> +<li><a href="https://www.sipmann.com/en/monitoring-mysql-replication-with-powershell.html">Monitoring MySQL replication with PowerShell</a></li> +</ul> +<p>Well, this one it's a pretty simple script, but again, if your customer doesn't have a Zabbix server or doesn't allow you to setup one to do the monitoring, a set of scripts can be handy. We start executing some basic query <code>SHOW GLOBAL STATUS LIKE 'Uptime'</code>, with that we'll get exactly what we're looking for.</p> +<p>If for some reason, the command fails (watch for the "global" variable called <code>$lastExitCode</code>), we send an e-mail telling you about that connection problem.</p> +<p>And then, we get to the part where we parse the value, this one is pretty similar to the parse we did on the first post about using PowerShell to monitor MySQL. But we basically look for the Value line, split it by space and then parse the second position to an integer. And then all we have to do is check if the uptime is lower than our threshold, if it is we send an e-mail.</p> +<div class="highlight"><pre><span></span><code><span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;maurio[at]sipmann.com&#39;</span> +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio[at]sipmann.com&#39;</span> +<span class="nv">$MysqlHost</span> <span class="p">=</span> <span class="s1">&#39;127.0.0.1&#39;</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;123&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-h</span> <span class="nv">$MysqlHost</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s2">&quot;SHOW GLOBAL STATUS LIKE &#39;Uptime&#39; \G&quot;</span><span class="p">)</span> + +<span class="cm">&lt;# Unable to execute the sql Command #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$lastExitCode</span> <span class="o">-eq</span> <span class="n">1</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Connection problem&#39;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;Connection problem on host ${MysqlHost}&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> + <span class="n">exit</span> +<span class="p">}</span> + +<span class="nv">$UpTime</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Value:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="cm">&lt;# If the uptime is lower then 20 minutes #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$UpTime</span> <span class="o">-lt</span> <span class="n">1200</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s2">&quot;MySQL Restarted&quot;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;MySQL host ${MysqlHost} restarted less than 20 minutes ago&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> +</code></pre></div> + +<p>This script (and the other ones I use) is available at my GitHub <a href="https://github.com/sipmann/PowerShellScripts">here</a>. Keep in mind that the ones on the GitHub repo, are a little different from here.</p>Changing a MySQL user password across multiple application instances without downtime2020-12-09T13:40:00-03:002020-12-09T13:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-09:/mysql-dual-password-functionality.html<p>Do you need to change the password of a MySQL user that it's being used in an application, and can't allow a single downtime? Well, MySQL 8.0.14 came with a feature called <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, with it you can change the password keeping the previous password as a …</p><p>Do you need to change the password of a MySQL user that it's being used in an application, and can't allow a single downtime? Well, MySQL 8.0.14 came with a feature called <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, with it you can change the password keeping the previous password as a kind of backup. That way you still can log in using the old password or can start using the new one. With that, the password change workflow it's the following.</p> +<p>1) Change password keeping the old one;</p> +<p>2) Deploy the new config to your app/cluster;</p> +<p>3) Discard the old password.</p> +<p>To change the password and keep the old one, you have the following command.</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">IDENTIFIED</span> <span class="k">BY</span> <span class="s1">&#39;new_password&#39;</span> <span class="n">RETAIN</span> <span class="n">CURRENT</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>To discard the old one, run the following.</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">DISCARD</span> <span class="n">OLD</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>And you are done. Hope you find it as useful as I :)</p>Apache Nifi JSON to SQL Replacing underscore2020-12-02T14:00:00-03:002020-12-02T14:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-02:/apache-nifi-json-to-sql-replacing-underscore.html<p>Recently I was doing some ETL with Apache NiFi. But after a few minutes of drawing my flow, I saw that the component ConvertJSONToSQL was replacing the underscore ('_') from the field name in the where condition (I was preparing an Update SQL). That was weird because, at the set …</p><p>Recently I was doing some ETL with Apache NiFi. But after a few minutes of drawing my flow, I saw that the component ConvertJSONToSQL was replacing the underscore ('_') from the field name in the where condition (I was preparing an Update SQL). That was weird because, at the set statement, the field name was kept intact. After some research, I found that the property (see bellow) <code>Translate Field Names</code> was responsible for that weird replacement.</p> +<p><img alt="Apache NiFi JSONToSQL config" src="/images/apache_nifi_jsontosql.png"></p> +<p>Before setting it to <strong>FALSE</strong>, be aware that the properties on your JSON data must match exactly the name of your fields.</p>Blocking a user on SQL Server based on a schedule2020-11-14T07:00:00-03:002020-11-14T07:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-11-14:/blocking-user-on-sql-server-based-on-schedule.html<p>Ok, some time ago, I've posted about how you can set limits to connections on SQL Server using the <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. But what if you can't use it? You always can block logins using a login trigger, but I don't like the idea of having selects running on every login …</p><p>Ok, some time ago, I've posted about how you can set limits to connections on SQL Server using the <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. But what if you can't use it? You always can block logins using a login trigger, but I don't like the idea of having selects running on every login. So I came across with a solution using a stored procedure, a table and the Agent.</p> +<p>The main idea is, store the time that a user must be blocked and using the Agent, disable or enable the user. Bellow you can see the table (the table is in Portuguese, but I have a few comment blocks to help you).</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">Id</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Startint block time */</span><span class="w"></span> +<span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Ending block time */</span><span class="w"></span> +<span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="k">DEFAULT</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="cm">/* 0 = unblocked, 1 = blocked */</span><span class="w"></span> +<span class="w"> </span><span class="k">PRIMARY</span><span class="w"> </span><span class="k">KEY</span><span class="w"> </span><span class="p">(</span><span class="n">Id</span><span class="p">)</span><span class="w"></span> +<span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="cm">/* Don&#39;t block the SA user, precautions, you know */</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_users</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">LoginName</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;sa&#39;</span><span class="p">));</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_hora_final_maior</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="n">HrInicio</span><span class="p">);</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_status_bloqueio</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">Bloqueado</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">));</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="k">SEQUENCE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">seq_HorariosBloqueio</span><span class="w"> </span><span class="k">START</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">INCREMENT</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>After creating the table, let's check the procedure that will handle the enabling/disabling the users. Be aware that on the procedure, I've set the database name where the table was stored, you can change it replacing the <code>DBATOOLS</code> text to the database name where you created the table.</p> +<div class="highlight"><pre><span></span><code><span class="k">IF</span><span class="w"> </span><span class="nf">OBJECT_ID</span><span class="p">(</span><span class="s1">&#39;dbo.sp_ValidarLogin&#39;</span><span class="p">)</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="k">NULL</span><span class="w"></span> +<span class="w"> </span><span class="k">EXEC</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;CREATE PROCEDURE dbo.sp_ValidarLogin AS RETURN 0;&#39;</span><span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="k">ALTER</span><span class="w"> </span><span class="k">PROC</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">sp_ValidarLogin</span><span class="w"></span> +<span class="k">AS</span><span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">);</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nf">CAST</span><span class="p">(</span><span class="nf">GETDATE</span><span class="p">()</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="cm">/* Block the ones that aren&#39;t blocked already and maches the time */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">&#39; DISABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Bloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> + + +<span class="w"> </span><span class="cm">/* Enable up who was blocked */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="s1">&#39; ENABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Unbloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="k">END</span><span class="p">;</span><span class="w"></span> +</code></pre></div> + +<p>Ok, so now all you have to do, is schedule a job to run that stored procedure from minute to minute. Again, the main idea is tell the procedure when a user must be blocked and when it'll be unblocked. </p> +<div class="highlight"><pre><span></span><code><span class="err"> -- Will block the user protheus from 10 AM till 15 PM</span> +<span class="err"> INSERT INTO dbo.HorariosBloqueio (Id, LoginName, HrInicio, HrTermino) VALUES (NEXT VALUE FOR seq_HorariosBloqueio, &#39;protheus&#39;, &#39;10:00:00&#39;, &#39;15:00:00&#39;);</span> +</code></pre></div>How to set columns on select using Entity Framework2020-10-28T19:00:00-03:002020-10-28T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-28:/select_specific_fields_with_efcore.html<p>So, you use Entity Framework Core, and you usually code your selects like the following, maybe you are getting too much data.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Running the query above, on my table, you'll get the following output, take a look …</p><p>So, you use Entity Framework Core, and you usually code your selects like the following, maybe you are getting too much data.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Running the query above, on my table, you'll get the following output, take a look at how many columns you are getting back from your database.</p> +<p><img alt="Screenshot with every single column" src="/images/ef_core_allcolumns.png"></p> +<p>In my case, I only care about the Title, PublishedData, and a small description. So to get back only these fields, we have a few options. In the first one, we'll set the fields and return them as a dynamic object, the second one, is to give the .NET a class to use. </p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + + <span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="k">new</span> <span class="p">{</span><span class="n">p</span><span class="p">.</span><span class="n">ProductID</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitPrice</span><span class="p">})</span> + <span class="c1">//.Select(p =&gt; new ProductDTO {p.ProductID, p.ProductName, p.UnitsInStock, p.UnitPrice})</span> + + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p><img alt="Screenshot with fewer columns and also fewer data size" src="/images/ef_core_less_columns.png"></p>Zabbix Running on Low Memory Mode2020-10-20T19:00:00-03:002020-10-20T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-20:/zabbix-running-on-low-memory-mode.html<p>Hey folks, another Zabbix post today. This one it's about increasing the Zabbix Server Cache. It's pretty common (if you have the default settings only) get a warning about your <code>Zabbix value cache running on low memory mode</code> at your dashboard or logs.</p> +<p><img alt="Zabbix Dashboard warning about the memory problem" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache graph 70% used" src="/images/zabbix_cache_filling.png"></p> +<p>To solve, go back to your Zabbix …</p><p>Hey folks, another Zabbix post today. This one it's about increasing the Zabbix Server Cache. It's pretty common (if you have the default settings only) get a warning about your <code>Zabbix value cache running on low memory mode</code> at your dashboard or logs.</p> +<p><img alt="Zabbix Dashboard warning about the memory problem" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache graph 70% used" src="/images/zabbix_cache_filling.png"></p> +<p>To solve, go back to your Zabbix config file (<code>zabbix_server.conf</code>) and look for the tag <em>CacheSize</em>. Uncomment it and set to a value bigger than 8M (8M it's the default value). In my case, we set a cache of 100M. After the change, restart the service.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: CacheSize</span> +<span class="c1"># Size of configuration cache, in bytes.</span> +<span class="c1"># Shared memory size for storing host, item and trigger data.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 128K-64G</span> +<span class="c1"># Default:</span> +<span class="na">CacheSize</span><span class="o">=</span><span class="s">100M #uncomment this line</span> +</code></pre></div> + +<p><img alt="Zabbix Dashboard resolved memory problem" src="/images/zabbix_low_memory_solved.png"></p> +<p>See ya folks.</p>Monitoring MySQL Replication Status with PowerShell2020-10-14T19:00:00-03:002020-10-14T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-14:/monitoring-mysql-replication-with-powershell.html<p>I've been migration some bash scripts that I have to PowerShell, and it's time to migrate a script that monitors the replication of a MySQL database. The credit for the original script goes to <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. It's a simple script where I seek a few tags/fields that we get from …</p><p>I've been migration some bash scripts that I have to PowerShell, and it's time to migrate a script that monitors the replication of a MySQL database. The credit for the original script goes to <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. It's a simple script where I seek a few tags/fields that we get from <code>SHOW SLAVE STATUS\G</code> command, the fields are. <code>Slave_IO_Running</code>, <code>Slave_SQL_Running</code>, and <code>Seconds_Behind_Master</code>. I still need to figure out the proper way to store/read variables like usernames and passwords, if you have any tips, feel free to even make a pull request (<a href="https://github.com/sipmann/PowerShellScripts">here</a>) at the git where I'll store some scripts.</p> +<div class="highlight"><pre><span></span><code><span class="cm">&lt;#</span> +<span class="cm"> Variables definition</span> +<span class="cm">#&gt;</span> +<span class="nv">$MaxSeconds</span> <span class="p">=</span> <span class="n">120</span> <span class="c"># Max seconds behind master allowed</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;&#39;</span> + +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> +<span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s1">&#39;SHOW SLAVE STATUS \G&#39;</span><span class="p">)</span> + +<span class="c">#Debug data</span> +<span class="c">#$data = Get-Content &#39;c:\temp\sampleresult.txt&#39;</span> + +<span class="cm">&lt;# Parse the data #&gt;</span> +<span class="nv">$IORunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_IO_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SQLRunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_SQL_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$LastErrNo</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Last_Errno&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SecondsBh</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Seconds_Behind_Master&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="k">If</span> <span class="p">(</span><span class="nv">$IORunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SQLRunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SecondsBh</span> <span class="o">-gt</span> <span class="nv">$MaxSeconds</span><span class="p">)</span> <span class="p">{</span> + <span class="nv">$MailBody</span> <span class="p">=</span> <span class="s1">&#39;&lt;h1&gt;Problema na replicação&lt;/h1&gt;&lt;br&gt;&#39;</span> + + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; IO Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$IORunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; SQL Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SQLRunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39;Seconds Behind: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SecondsBh</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; Last Err No: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$LastErrNo</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + + <span class="cm">&lt;# Send e-mail, maybe some telegram message here too #&gt;</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Problemas na replicação&#39;</span> <span class="n">-bodyAsHtml</span> <span class="nv">$MailBody</span> <span class="n">-Credential</span> <span class="p">(</span><span class="nb">Get-Credential</span><span class="p">)</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> <span class="k">Else</span> <span class="p">{</span> + <span class="nb">Write-Host</span> <span class="s2">&quot;Up and running&quot;</span> +<span class="p">}</span> +</code></pre></div>Microsoft Against Covid2020-10-03T19:00:00-03:002020-10-03T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-03:/microsoft-against-covid.html<p>Has your job been affected by covid? Well, last week I've posted on <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by …</p><p>Has your job been affected by covid? Well, last week I've posted on <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by covid pandemic. </p> +<p>To see more details about if you were eligible, access <a href="https://docs.microsoft.com/en-us/learn/certifications/skillingoffer">https://docs.microsoft.com/en-us/learn/certifications/skillingoffer</a>.</p>The power of PowerShell2020-09-21T19:00:00-03:002020-09-21T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-09-21:/the-power-of-powershell.html<p>As a long time Linux user, I've automated a few things with bash scripts and stayed away from PowerShell... I've moved to a Windows environment a few years ago and still, haven gave a shot to PS. But why not? I've made a few scripts to automate some tasks at …</p><p>As a long time Linux user, I've automated a few things with bash scripts and stayed away from PowerShell... I've moved to a Windows environment a few years ago and still, haven gave a shot to PS. But why not? I've made a few scripts to automate some tasks at a Protheus server.</p> +<p>I found the PS scripts being easy to read and understand. Bellow, we have a script to remove files filtering their extension (or no extension at all like the following script). </p> +<div class="highlight"><pre><span></span><code><span class="nb">Get-ChildItem</span> <span class="s2">&quot;C:\TOTVS\protheus_data\system&quot;</span> <span class="o">-File</span> <span class="n">-Filter</span> <span class="p">*.</span> <span class="p">|</span> <span class="nb">Move-Item</span> <span class="n">-Force</span> <span class="n">-Destination</span> <span class="p">{</span> + <span class="cm">&lt;# Diretory where the files will be moved. You can use Date formats to help name it #&gt;</span> + <span class="cm">&lt;# LastWriteTime proprtie from the current file #&gt;</span> + <span class="nv">$dir</span> <span class="p">=</span> <span class="s2">&quot;C:\bad_files\{0:yyyy\\MM\\dd}&quot;</span> <span class="o">-f</span> <span class="nv">$_</span><span class="p">.</span><span class="n">LastWriteTime</span> + <span class="nv">$null</span> <span class="p">=</span> <span class="n">mkdir</span> <span class="nv">$dir</span> <span class="n">-Force</span> + <span class="s2">&quot;$dir\</span><span class="p">$(</span><span class="nv">$_</span><span class="p">.</span><span class="n">Name</span><span class="p">)</span><span class="s2">&quot;</span> +<span class="p">}</span> +</code></pre></div> + +<p>Have you ever been in the need to remove files based on other file content? Bello a script where I read a file that has the names of files that I want to remove. </p> +<div class="highlight"><pre><span></span><code><span class="k">foreach</span><span class="p">(</span><span class="nv">$line</span> <span class="k">in</span> <span class="nb">Get-Content</span> <span class="p">.\</span><span class="n">Desktop</span><span class="p">\</span><span class="n">bad_files</span><span class="p">.</span><span class="n">txt</span><span class="p">)</span> <span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="nb">Test-Path</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">))</span> <span class="p">{</span> + <span class="nb">Remove-Item</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">)</span> + <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> + <span class="nb">echo </span><span class="nv">$line</span> <span class="p">+</span> <span class="s1">&#39; - File not found&#39;</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>And a bonus script to stop/start services (if you handle some Protheus Server, you know why I do that).</p> +<div class="highlight"><pre><span></span><code><span class="nv">$servicesNames</span> <span class="p">=</span> <span class="s1">&#39;app_main&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker1&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker2&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker3&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker4&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker5&#39;</span> + +<span class="nb">Write-host</span> <span class="s2">&quot;Stoping Services&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Stopping: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nv">$SrvPID</span> <span class="p">=</span> <span class="p">(</span><span class="nb">get-wmiobject</span> <span class="n">win32_service</span> <span class="p">|</span> <span class="nb">where </span><span class="p">{</span> <span class="nv">$_</span><span class="p">.</span><span class="n">name</span> <span class="o">-eq</span> <span class="nv">$srv</span><span class="p">}).</span><span class="n">processID</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PID: &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> + + <span class="cm">&lt;# Force if the proccess is stucked #&gt;</span> + <span class="nb">Stop-Process</span> <span class="nv">$SrvPID</span> <span class="n">-Force</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PDI &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> <span class="p">+</span> <span class="s2">&quot; stopped&quot;</span> +<span class="p">}</span> + + +<span class="nb">Write-host</span> <span class="s2">&quot;Starting Services&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Starting: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nb">Start-Service</span> <span class="nv">$srv</span> +<span class="p">}</span> +</code></pre></div> + +<p>Do you have any automated script? Share with us :)</p>Top Level Statement in C# 92020-07-29T19:00:00-03:002020-07-29T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-29:/top_level_statement_csharp_9.html<p>Hey folks, I'm coming along to tell you a few things about the new feature of C# 9. Every time you want to start a new project, you always have the same Main File, with the same structure. At the next version of C# (version 9), we'll have a new …</p><p>Hey folks, I'm coming along to tell you a few things about the new feature of C# 9. Every time you want to start a new project, you always have the same Main File, with the same structure. At the next version of C# (version 9), we'll have a new feature called <code>Top Level Statement</code>. With that, we'll be able to code our app without any namespace/class/public void static main structure. Take a look at the code below.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="s">&quot;Hello World!&quot;</span><span class="p">);</span> +</code></pre></div> + +<p>It looks pretty simple, but with this, you can play around with your code, and even code a simple/tiny Web API. To start playing with the new features, firstly download the <a href="https://dotnet.microsoft.com/download/dotnet/5.0">.net 5 SDK</a> and change your <code>.csproj</code> file to target the .net 5 and language preview like bellow.</p> +<div class="highlight"><pre><span></span><code><span class="nt">&lt;Project</span> <span class="na">Sdk=</span><span class="s">&quot;Microsoft.NET.Sdk&quot;</span><span class="nt">&gt;</span> + <span class="nt">&lt;PropertyGroup&gt;</span> + <span class="nt">&lt;OutputType&gt;</span>Exe<span class="nt">&lt;/OutputType&gt;</span> + <span class="nt">&lt;TargetFramework&gt;</span>net5.0<span class="nt">&lt;/TargetFramework&gt;</span> + <span class="nt">&lt;LangVersion&gt;</span>preview<span class="nt">&lt;/LangVersion&gt;</span> + <span class="nt">&lt;/PropertyGroup&gt;</span> +<span class="nt">&lt;/Project&gt;</span> +</code></pre></div> + +<p>And you're ready to play with the awesome features available in the preview. Let's code a way to get the image of the day from NASA API and print the Picture of the Day. No awesome code here, it's really a way to show how simple a simple call could be. After here, why not save the image in a file? Maybe send the file over telegram?</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Text.Json</span><span class="p">;</span> + +<span class="kt">var</span> <span class="n">API</span> <span class="p">=</span> <span class="s">&quot;https://api.nasa.gov/planetary/apod?hd=true&amp;api_key=DEMO_KEY&quot;</span><span class="p">;</span> +<span class="kt">var</span> <span class="n">cli</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + +<span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">cli</span><span class="p">.</span><span class="n">GetAsync</span><span class="p">(</span><span class="n">API</span><span class="p">);</span> +<span class="kt">var</span> <span class="n">data</span> <span class="p">=</span> <span class="n">JsonSerializer</span><span class="p">.</span><span class="n">Deserialize</span><span class="p">&lt;</span><span class="n">NasaApi</span><span class="p">&gt;(</span><span class="k">await</span> <span class="n">response</span><span class="p">.</span><span class="n">Content</span><span class="p">.</span><span class="n">ReadAsStringAsync</span><span class="p">());</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">Url</span><span class="p">);</span> +</code></pre></div> + +<p>That's it for today folks. Keep an eye open for the awesome features C# 9 will bring to us, there's plenty more features already available.</p>Zabbix poller processes more than 75%2020-07-02T19:00:00-03:002020-07-02T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-02:/zabbix-poller-processes-more-than-75.html<p>Hey folks, this is the third post about tweaking the Zabbix configurations. All changes that I've suggested here were based on a Zabbix Server with 50+ hosts. Another thing that can happen to your server, it's the poller get overwhelmed by the amount of servers that need to be polled …</p><p>Hey folks, this is the third post about tweaking the Zabbix configurations. All changes that I've suggested here were based on a Zabbix Server with 50+ hosts. Another thing that can happen to your server, it's the poller get overwhelmed by the amount of servers that need to be polled plus the ones that are not responding. Bellow two images where you can see the log and the graphic where you can see the usage percent. </p> +<p><img alt="Dashboard log about the poller processes" src="/images/zabbix_pooler.png"></p> +<p><img alt="Graph showing the utilization percent of each collector" src="/images/zabbix_pooler_3.png"></p> +<p>To solve, let's go back to the <code>zabbix_server.conf</code> file and find two variables, <code>StartPollers</code> and <code>StartPollersUnreachable</code>. Increase them as needed. There's no magic number, you must see what works for you. But keep in mind that the <code>StartPollersUnreachable</code> is responsible for that host that can't be "reached" (of course) and will hold your poller more time.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPollers</span> +<span class="c1"># Number of pre-forked instances of pollers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollers</span><span class="o">=</span><span class="s">20</span> + +<span class="c1">#...</span> + +<span class="c1">### Option: StartPollersUnreachable</span> +<span class="c1"># Number of pre-forked instances of pollers for unreachable hosts (including IPMI and Java).</span> +<span class="c1"># At least one poller for unreachable hosts must be running if regular, IPMI or Java pollers</span> +<span class="c1"># are started.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollersUnreachable</span><span class="o">=</span><span class="s">5</span> +</code></pre></div> + +<p>After the change, restart the server and wait a few moments and take a look again at your dashboard. Bellow the effect that I've got.</p> +<p><img alt="Graph showing the new utilization percent of the processes after the changes" src="/images/zabbix_pooler_4.png"></p>Monitoring a Website heath with Azure Functions2020-06-22T19:00:00-03:002020-06-22T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-06-22:/monitoring-website-heath-with-azure-functions.html<p>Sometimes you get your self in need to monitor a website's health or it's content for changes. Of course, there's plenty of options out there, but for the sake of curiosity, let's code our own to see what we can do. First things first. Everything you'll see here, you can …</p><p>Sometimes you get your self in need to monitor a website's health or it's content for changes. Of course, there's plenty of options out there, but for the sake of curiosity, let's code our own to see what we can do. First things first. Everything you'll see here, you can achieve with the <a href="https://azure.microsoft.com/free/">free tier</a> of azure.</p> +<p>The main idea of our app will be to monitor website health (status code). To create a new Azure Function Project, follow the steps below.</p> +<p><img alt="Steps to create a azure function project" src="/images/azure_functions.gif"></p> +<p>After creating the project, you'll have a few files. Open your main file and start coding. The main file will have a function called <code>Run</code> and you can code your request method. I've created an <code>async</code> method to make the request and log the output at the console. The full code you can see below.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Linq</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Threading.Tasks</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs.Host</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Extensions.Logging</span><span class="p">;</span> + +<span class="k">namespace</span> <span class="nn">Sipmann.CheckMySite</span> +<span class="p">{</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">class</span> <span class="nc">HttpCheck</span> + <span class="p">{</span> + + <span class="k">private</span> <span class="k">static</span> <span class="k">async</span> <span class="n">Task</span> <span class="nf">GetTask</span><span class="p">(</span><span class="kt">string</span> <span class="n">url</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="kt">var</span> <span class="n">request</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpRequestMessage</span><span class="p">(</span><span class="n">HttpMethod</span><span class="p">.</span><span class="n">Get</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span> + + <span class="kt">var</span> <span class="n">client</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + <span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">client</span><span class="p">.</span><span class="n">SendAsync</span><span class="p">(</span><span class="n">request</span><span class="p">);</span> + + <span class="k">if</span> <span class="p">(</span><span class="n">response</span><span class="p">.</span><span class="n">IsSuccessStatusCode</span><span class="p">)</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="k">else</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} não esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> + +<span class="na"> [FunctionName(&quot;HttpCheck&quot;)]</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">void</span> <span class="nf">Run</span><span class="p">([</span><span class="n">TimerTrigger</span><span class="p">(</span><span class="s">&quot;0 */5 * * * *&quot;</span><span class="p">)]</span><span class="n">TimerInfo</span> <span class="n">myTimer</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="kt">var</span> <span class="n">urls</span> <span class="p">=</span> <span class="k">new</span><span class="p">[]{</span><span class="s">&quot;https://www.sipmann.com&quot;</span><span class="p">,</span> <span class="s">&quot;https://www.canezecanez.com.br&quot;</span><span class="p">};</span> + + <span class="c1">// Start every request and wait for them all to complete</span> + <span class="n">Task</span><span class="p">.</span><span class="n">WaitAll</span><span class="p">(</span><span class="n">urls</span><span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">url</span> <span class="p">=&gt;</span> <span class="n">GetTask</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">log</span><span class="p">)).</span><span class="n">ToArray</span><span class="p">());</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;Finalizou a fila&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>Now you can enhance the function and maybe send some alerts like a Telegram message when one of your sites went down.</p>Azure Data Fundamentals certification with 80% discount2020-06-09T12:30:00-03:002020-06-09T12:30:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-06-09:/azure-data-fundamentals-certification-80-discount.html<p>Hey folks, if you want to achieve some certification this year, keep an eye open for vouchers. A few months ago, Oracle released a set of free courses with certifications. Now it's Microsoft time. Microsoft is updating they're certifications and we have a voucher of 80% discount using the coupon …</p><p>Hey folks, if you want to achieve some certification this year, keep an eye open for vouchers. A few months ago, Oracle released a set of free courses with certifications. Now it's Microsoft time. Microsoft is updating they're certifications and we have a voucher of 80% discount using the coupon <strong>DP900Norfolk</strong> at the checkout of the beta certification DP-900. </p> +<p>Be aware that this certification is in beta and the result won't be instantly available as the regular ones. Access the following link and schedule your exam. <a href="https://docs.microsoft.com/pt-br/learn/certifications/exams/dp-900" target="_blank">https://docs.microsoft.com/pt-br/learn/certifications/exams/dp-900</a>.</p> +<p><strong>Update:</strong> There is a 80% voucher also for <a href="https://docs.microsoft.com/en-us/learn/certifications/azure-ai-fundamentals" target="_blank">https://docs.microsoft.com/en-us/learn/certifications/azure-ai-fundamentals</a>. Voucher: <strong>AI900Saratoga</strong></p>Zabbix ICMP pinger processes more than 75%2020-05-25T16:00:00-03:002020-05-25T16:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-05-25:/zabbix-icmp-pinger-processes-more-than-75.html<p>So your monitoring sytems have grown and your zabbix started loggin "Zabbix icmp pinger processes more than 75% busy" at the dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>All you have to do is open your config file (<code>/etc/zabbix/zabbix_server.conf</code>) and find the a tag named <code>StartPingers</code>. It'll be commented by default. Uncomment it …</p><p>So your monitoring sytems have grown and your zabbix started loggin "Zabbix icmp pinger processes more than 75% busy" at the dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>All you have to do is open your config file (<code>/etc/zabbix/zabbix_server.conf</code>) and find the a tag named <code>StartPingers</code>. It'll be commented by default. Uncomment it and set it's value to something like 3 or 4. It should solve your problem.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPingers</span> +<span class="c1"># Number of pre-forked instances of ICMP pingers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="nv">StartPingers</span><span class="o">=</span><span class="m">4</span> +</code></pre></div> + +<h2>How many Pingers do I need?</h2> +<p>Well, there is no exact answer to this. If you set it too high, you'll be wasting resources. The best way to solve, it's increasing them as soon as you notice the percentage growing.</p>Zabbix Server Out of Memory2020-02-27T19:00:00-03:002020-02-27T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-02-27:/zabbix-server-out-of-memory-crash.html<p>Do you have a crashing Zabbix Server and looking through the log <code>/var/log/zabbix/zabbix_server.log</code> you see the following out of memory message?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c,line …</code></pre></div><p>Do you have a crashing Zabbix Server and looking through the log <code>/var/log/zabbix/zabbix_server.log</code> you see the following out of memory message?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: please increase CacheSize configuration parameter +</code></pre></div> + +<p>Besides the clear solution to the error, that's a common issue on servers that have a few monitoring items on it (servers, switches, firewalls, databases, etc...). To solve, go to your zabbix_server.conf and look for the CacheSize property and set it to a higher value. Its default should be 8M. At a customer that has somewhere between 4 servers, 7 firewalls/appliances, and a few other things, a 32M did the job, but you can set up to 8G.</p> +<p>See ya folks.</p>Flutter + firebase auth crashing2019-10-03T19:00:00-03:002019-10-03T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-10-03:/flutter_with_firebase_auth_crashing.html<p>Hey Folks, recently I've started learning <a href="https://flutter.dev/">Flutter</a> and right after a TODO List, I tried a Firebase integration. But as soon as I started setting the dependencies, my app stopped opening... just a crash. After a few logs digging, I've found the following log.</p> +<div class="highlight"><pre><span></span><code>AndroidRuntime: FATAL EXCEPTION: main +AndroidRuntime: Process …</code></pre></div><p>Hey Folks, recently I've started learning <a href="https://flutter.dev/">Flutter</a> and right after a TODO List, I tried a Firebase integration. But as soon as I started setting the dependencies, my app stopped opening... just a crash. After a few logs digging, I've found the following log.</p> +<div class="highlight"><pre><span></span><code>AndroidRuntime: FATAL EXCEPTION: main +AndroidRuntime: Process: com.example.diadocasal, PID: <span class="m">13672</span> +AndroidRuntime: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/util/ArrayMap<span class="p">;</span> +AndroidRuntime: at com.google.android.gms.internal.measurement.zzca.&lt;clinit&gt;<span class="o">(</span>Unknown Source:60<span class="o">)</span> +AndroidRuntime: at com.google.android.gms.internal.measurement.zzcm.zzr<span class="o">(</span>Unknown Source:7<span class="o">)</span> +AndroidRuntime: at com.google.android.gms.measurement.internal.zzfj.&lt;init&gt;<span class="o">(</span>Unknown Source:23<span class="o">)</span> +</code></pre></div> + +<p>Notice the "NoClassDefFound" of an ArrayMap. To solve that I did the following changes to the files:</p> +<div class="highlight"><pre><span></span><code><span class="c1">//build.gradle file</span> + <span class="n">ext</span><span class="p">.</span><span class="na">kotlin_version</span> <span class="o">=</span> <span class="err">&#39;</span><span class="mf">1.3.20</span><span class="err">&#39;</span> +<span class="o">[</span><span class="p">...</span><span class="o">]</span> + <span class="n">dependencies</span> <span class="p">{</span> + <span class="n">classpath</span> <span class="err">&#39;</span><span class="n">com</span><span class="p">.</span><span class="na">android</span><span class="p">.</span><span class="na">tools</span><span class="p">.</span><span class="na">build</span><span class="p">:</span><span class="n">gradle</span><span class="p">:</span><span class="mf">3.3.0</span><span class="err">&#39;</span> <span class="c1">// gradle version</span> +</code></pre></div> + +<div class="highlight"><pre><span></span><code><span class="c1">;gradle.properties file</span> +<span class="na">org.gradle.jvmargs</span><span class="o">=</span><span class="s">-Xmx1536M ;mine have just this line at first</span> +<span class="na">android.useAndroidX</span><span class="o">=</span><span class="s">true ; uses androidX instead of the default support library</span> +<span class="na">android.enableJetifier</span><span class="o">=</span><span class="s">true ; uses jetpack libraries</span> +<span class="na">android.enableR8</span><span class="o">=</span><span class="s">true ; the new code shriker</span> +</code></pre></div> + +<p>After that, voilà, app up and running.</p>Removing a user from SQL Server database who owns a schema2019-09-06T07:00:00-03:002020-10-21T18:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-09-06:/removing-user-from-sql-server-database.html<p>Your customer urge you to drop a user from the MsSQL Server database, but you stuck with the following related error:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>That means that the user owns one or more shcemas of your database. If …</p><p>Your customer urge you to drop a user from the MsSQL Server database, but you stuck with the following related error:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>That means that the user owns one or more shcemas of your database. If you don't have access to the SSMS to see which schema or objects the user owns, the following SQL should do the job.</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">schemas</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">principal_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="p">,</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">xtype</span><span class="w"> </span><span class="n">Tipo</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">sysobjects</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">uid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> +</code></pre></div> + +<p>Once you have the objects/schemas owned by the user, you can change them with the following SQL (schema change sample):</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datareader</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"> </span><span class="c1">-- new owner username</span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datawriter</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>Then you're ready to drop the user <code>DROP USER [username]</code></p> +<h2>How to list all the schemas and it's owners?</h2> +<p>Here's a script to list schemas and it's owners.</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +<span class="k">SELECT</span><span class="w"></span> +<span class="w"> </span><span class="nf">schema_name</span><span class="p">(</span><span class="nf">schema_id</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">schemaname</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="nf">user_name</span><span class="p">(</span><span class="n">schm</span><span class="p">.</span><span class="n">principal_id</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">username</span><span class="p">,</span><span class="w"> </span><span class="o">*</span><span class="w"></span> +<span class="k">FROM</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">schemas</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">schm</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div>Limiting Connection Resources on SQL Server2019-08-12T12:00:00-03:002019-08-12T12:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-08-12:/limiting-connection-resources-sql-server.html<p>Have you ever suffered from a slow SQLServer database? Someone love to run that heavy query in the database? Resource Governor to the rescue. You can set a few rules on how users (connections actually) will use the server/database resources based on a few things.</p> +<p>First things first, if …</p><p>Have you ever suffered from a slow SQLServer database? Someone love to run that heavy query in the database? Resource Governor to the rescue. You can set a few rules on how users (connections actually) will use the server/database resources based on a few things.</p> +<p>First things first, if you don't have DAC enabled, enable it now. Dealing with resource governor can lock you out of the database and leave you without action (almost... you can start the server with -c -m -f).</p> +<p>Now to understand how Resource Governor works, we have a few keywords <code>resource pool</code>, <code>workload group</code> e <code>Classifier Function</code>.</p> +<p><img alt="Pool Sample" src="/images/sql-pool.png"></p> +<h2>Resource Pool</h2> +<p>First, we have the Resource Pool, with is the bigger resource group that we have the ability to manage. With it, we can set a few things like: <code>MIN_CPU_PERCENT</code>, <code>MAX_CPU_PERCENT</code>, <code>MIN_MEMORY_PERCENT</code>, <code>MAX_MEMORY_PERCENT</code>, <code>MIN_IOPS_PER_VOLUME</code>, and <code>MAX_IOPS_PER_VOLUME</code>.</p> +<p>Be aware that the <code>MAX_CPU_PERCENT</code> will just "works" when there is another connection with a higher priority, otherwise it will use what is available. Let's create a pool.</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">POOL</span><span class="w"> </span><span class="o">[</span><span class="n">SpreadSheet</span><span class="o">]</span><span class="w"></span> +<span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">MIN_CPU_PERCENT</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">MAX_CPU_PERCENT</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">MIN_MEMORY_PERCENT</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">MAX_MEMORY_PERCENT</span><span class="o">=</span><span class="mi">20</span><span class="w"></span> +<span class="p">);</span><span class="w"></span> +</code></pre></div> + +<p>## Workload Group</p> +<p>Then we have a workload group that "works" inside a pool, so you can have another granularity on how you can split your resources. Again, we have a few options: <code>IMPORTANCE</code>, <code>REQUEST_MAX_CPU_TIME_SEC</code>, <code>REQUEST_MAX_MEMORY_GRANT_PERCENT</code>, <code>GROUP_MAX_REQUESTS</code>.</p> +<p>The <code>IMPORTANCE</code> set guesses what... the importance of that workload inside the pool, you can set LOW, MEDIUM, HIGH. GROUP_MAX_REQUESTS sets how many requests can run at the same time inside that workload (0 will set as NO LIMIT)</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="n">WORKLOAD</span><span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="o">[</span><span class="n">DepartmentA</span><span class="o">]</span><span class="w"> </span> +<span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">GROUP_MAX_REQUESTS</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">IMPORTANCE</span><span class="o">=</span><span class="n">LOW</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">REQUEST_MAX_CPU_TIME_SEC</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="c1">-- Time running/using CPU</span> +<span class="w"> </span><span class="n">REQUEST_MAX_MEMORY_GRANT_PERCENT</span><span class="o">=</span><span class="mi">15</span><span class="w"></span> +<span class="p">)</span><span class="w"> </span><span class="k">USING</span><span class="w"> </span><span class="o">[</span><span class="n">SpreadSheet</span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="c1">-- pool name here</span> +</code></pre></div> + +<h2>Classifier Function</h2> +<p>This is where everything begins... This is the entry point where you should set the group name. It's a function that will run for every new connection so be aware that if your function runs lots of queries or some heavy stuff... that time will be added to the connection handshake. If the function returns NULL or a group name that doesn't exist, the 'default' group will be used... Yes, there is a default workload group where everything runs where there's no classifier.</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="n">fnClassWorkloadGovernor</span><span class="p">()</span><span class="w"> </span> +<span class="k">RETURNS</span><span class="w"> </span><span class="n">SYSNAME</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="n">SCHEMABINDING</span><span class="w"> </span> +<span class="k">AS</span><span class="w"> </span> +<span class="k">BEGIN</span><span class="w"> </span> +<span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="nf">APP_NAME</span><span class="p">()</span><span class="w"> </span><span class="ow">LIKE</span><span class="w"> </span><span class="s1">&#39;%Excel%&#39;</span><span class="w"></span> +<span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="s1">&#39;DepartmentA&#39;</span><span class="w"></span> + +<span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="nf">HOST_NAME</span><span class="p">()</span><span class="w"> </span><span class="ow">LIKE</span><span class="w"> </span><span class="s1">&#39;%THAT_MACHINE_OR_APP_SERVER%&#39;</span><span class="w"></span> +<span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="s1">&#39;LowPriority&#39;</span><span class="w"></span> + +<span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="k">NULL</span><span class="w"></span> +<span class="k">END</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="n">CLASSIFIER_FUNCTION</span><span class="o">=</span><span class="n">dbo</span><span class="p">.</span><span class="n">fnClassWorkloadGovernor</span><span class="p">);</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">RECONFIGURE</span><span class="p">;</span><span class="w"></span> +</code></pre></div> + +<p>There you go... now you have a fully working resource governor, but look out that If you want to delete that classifier function, first you have to remove it from the resource governor (look the SCHEMABINDING at the create up there).</p> +<p>To disable Resource Governor</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="n">CLASSIFIER_FUNCTION</span><span class="o">=</span><span class="k">null</span><span class="p">)</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">RECONFIGURE</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="n">DISABLE</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div>Using git hooks to easy your life2019-07-30T20:00:00-03:002019-07-30T20:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-07-30:/using_git_hooks_easy_your_life.html<p>Hey folks, it's been a time since my last post. In the meantime, I moved to another state, changed job, and started learning new kinds of stuff. Today I would like to share one thing that I usually do with my small git projects. Git has many cool features, git …</p><p>Hey folks, it's been a time since my last post. In the meantime, I moved to another state, changed job, and started learning new kinds of stuff. Today I would like to share one thing that I usually do with my small git projects. Git has many cool features, git hooks were one of them. I'll talk about the pre-commit hook today.</p> +<p>Let's say that, for some reason, you don't have a CI tool/server running after every commit and you want to enforce that every developer runs the tests before every commit? Git pre-commit to the rescue. You can code the hooks with shell, ruby, python, and I could be wrong, but even PHP would work. pre-commit is a client-side hook (we have server side too) and he's located inside the <cite>.git/hooks</cite> folder. Let's jump to the code... Create a file called 'pre-commit' inside that folder with the following code.</p> +<div class="highlight"><pre><span></span><span class="ch">#!/bin/bash</span> +npm <span class="nb">test</span> <span class="c1"># assuming you&#39;re using it inside a nodeJS project</span> +</pre></div> +<p>Don't forget to make the script executable!! Now break your test and try to commit. That's easy but can save you from breaking the tests at the main CI/Travis/Codeship/etc and being notified by email :). Why not even validate the lint of your project or check if the coverage doesn't fall? Does your team/company have a patter for commit messages? No problem, there is a hook called <cite>commit-msg</cite> that you can use to validate your message.</p> +Microservices with NodeJS, Express.js and RabbitMQ Part 22018-04-13T13:00:00-03:002018-04-13T13:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-04-13:/microservices_nodejs_express_rabbitmq_part_2.html<p>If you haven't read the <a class="reference external" href="https://www.sipmann.com/microservices_nodejs_express_rabbitmq_part_1-en.html">part 1</a> go ahead and read it... It can be useful :). Or if for some reason you want to start now, you can grab the project where we stopped <a class="reference external" href="https://github.com/sipmann/imagecompacter/releases/tag/v1">here</a> and get along. On this part, we'll implement the RabbitMQ queue and see how we …</p><p>If you haven't read the <a class="reference external" href="https://www.sipmann.com/microservices_nodejs_express_rabbitmq_part_1-en.html">part 1</a> go ahead and read it... It can be useful :). Or if for some reason you want to start now, you can grab the project where we stopped <a class="reference external" href="https://github.com/sipmann/imagecompacter/releases/tag/v1">here</a> and get along. On this part, we'll implement the RabbitMQ queue and see how we can get the best of our app and server with that.</p> +<p>Before we began coding, let's understand why we are going to use RabbitMQ if what we have now works? If you check again, you'll see how long it takes to answer the request with the optimized image. It takes a few seconds, so imagine an online service with thousands of request to optimize images (like <a class="reference external" href="https://tinypng.com/">TinyPNG</a>) how long is it gonna take to answer every request? How much of your server is it gonna take? With only one service running, probably the server will crash.</p> +<p>With a queue, we can schedule the requests so we can use the amount of memory and processor that our server has, without taking more than we can. It's better to take a few seconds to answer the request then throw some error to the user. Want more? With RabbitMQ we can see how the queue is doing and we can add more consumers (workers) to it and get things done quicker and distribute the job.</p> +<p>First of all, we need an up and running Rabbit server, for the sake of simplicity, I'll use a Docker container with it inside.</p> +<div class="highlight"><pre><span></span>docker run -d --name rabbit -p <span class="m">5672</span>:5672 -p <span class="m">8080</span>:15672 rabbitmq:3-management +</pre></div> +<p>You can see that we're running the rabbitmq:3-management image, which provides us a web interface to see how things are going. After that, if you look at our code you'll see that all the job is made at the '/upload' route, and that's what we'll change.</p> +<p>First, we need to understand what we need from RabbitMQ. We need something that, we send an image to a queue and get an optimized image back from that. There is a name for that, is RPC (remote procedure call) and there are two ways of doing this with rabbit. Both the ways you can see on their tutorial page. We'll use the approach that uses a global channel whose id is randomly generated (you'll use the name 'amq.rabbitmq.reply-to' but the rabbit will do the job).</p> +<p>Let's start importing the library, defining a few variables and defining a init function that will establish a connection with the rabbit server and create our RPC queue. The RPC queue it's where we'll receive the answer from the consumer (our worker).</p> +<div class="highlight"><pre><span></span><span class="c1">//import the library</span> +<span class="kr">const</span> <span class="nx">amqplib</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;amqplib&#39;</span><span class="p">);</span> + +<span class="c1">//queue channel</span> +<span class="kd">let</span> <span class="nx">channel</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span> +<span class="c1">//queue name</span> +<span class="kr">const</span> <span class="nx">QUEUE</span> <span class="o">=</span> <span class="s1">&#39;optimizeimg&#39;</span><span class="p">;</span> + +<span class="c1">//...</span> + +<span class="kd">function</span> <span class="nx">init</span><span class="p">()</span> <span class="p">{</span> + <span class="k">return</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;amqplib&#39;</span><span class="p">).</span><span class="nx">connect</span><span class="p">(</span><span class="s1">&#39;amqp://localhost&#39;</span><span class="p">)</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">conn</span> <span class="p">=&gt;</span> <span class="nx">conn</span><span class="p">.</span><span class="nx">createChannel</span><span class="p">())</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">ch</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">channel</span> <span class="o">=</span> <span class="nx">ch</span><span class="p">;</span> + + <span class="c1">//this queue is a &quot;Direct reply-to&quot; read more at the docs</span> + <span class="c1">//When some msg comes in, we &quot;emit&quot; a message to the proper &quot;correlationId&quot; listener</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">consume</span><span class="p">(</span><span class="s1">&#39;amq.rabbitmq.reply-to&#39;</span><span class="p">,</span> <span class="nx">msg</span> <span class="p">=&gt;</span> <span class="nx">eventEmitter</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="nx">msg</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">correlationId</span><span class="p">,</span> <span class="nx">msg</span><span class="p">.</span><span class="nx">content</span><span class="p">),</span> <span class="p">{</span><span class="nx">noAck</span><span class="o">:</span> <span class="kc">true</span><span class="p">});</span> + <span class="p">});</span> +<span class="p">}</span> + +<span class="c1">//Random id generator</span> +<span class="kd">function</span> <span class="nx">randomid</span><span class="p">()</span> <span class="p">{</span> + <span class="k">return</span> <span class="k">new</span> <span class="nb">Date</span><span class="p">().</span><span class="nx">getTime</span><span class="p">().</span><span class="nx">toString</span><span class="p">()</span> <span class="o">+</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">().</span><span class="nx">toString</span><span class="p">()</span> <span class="o">+</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">().</span><span class="nx">toString</span><span class="p">();</span> +<span class="p">}</span> + +<span class="nx">app</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span><span class="s1">&#39;/upload&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="kd">let</span> <span class="nx">img</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">files</span><span class="p">.</span><span class="nx">image</span><span class="p">;</span> + + <span class="kd">let</span> <span class="nx">id</span> <span class="o">=</span> <span class="nx">randomid</span><span class="p">();</span> + + <span class="c1">//Event listener that will fire when the proper randomid is provided</span> + <span class="nx">eventEmitter</span><span class="p">.</span><span class="nx">once</span><span class="p">(</span><span class="nx">id</span><span class="p">,</span> <span class="nx">msg</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">write</span><span class="p">(</span><span class="nx">msg</span><span class="p">,</span> <span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">end</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="p">});</span> + + <span class="c1">//Checks if the queue exists, and create it if needed.</span> + <span class="nx">channel</span><span class="p">.</span><span class="nx">assertQueue</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">)</span> + <span class="c1">//Sent the buffered img to the queue with the ID and the responseQueue</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="nx">channel</span><span class="p">.</span><span class="nx">sendToQueue</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">,</span> <span class="nx">img</span><span class="p">.</span><span class="nx">data</span><span class="p">,</span> <span class="p">{</span><span class="nx">correlationId</span><span class="o">:</span><span class="nx">id</span><span class="p">,</span> <span class="nx">replyTo</span><span class="o">:</span> <span class="s1">&#39;amq.rabbitmq.reply-to&#39;</span><span class="p">}));</span> + +<span class="p">});</span> + +<span class="c1">//Finally start the app with the given port number</span> +<span class="c1">//now we initialize the rabbitmq connection before start the server</span> +<span class="nx">init</span><span class="p">()</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="nx">app</span><span class="p">.</span><span class="nx">listen</span><span class="p">(</span><span class="mi">4000</span><span class="p">,</span> <span class="p">()</span> <span class="p">=&gt;</span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;Example app listening on port 4000!&#39;</span><span class="p">)))</span> + <span class="p">.</span><span class="k">catch</span><span class="p">(</span><span class="nx">err</span><span class="p">=&gt;</span><span class="nx">console</span><span class="p">.</span><span class="nx">error</span><span class="p">(</span><span class="nx">err</span><span class="p">));</span> +</pre></div> +<p>Ok, now we have our server code rewritten so let's see our worker code. Create a file named 'worker.js' and let's see how it's gonna be. It's really simple. You initialize a connection with RabbitMQ too, create a channel, check if the queue exists and start watching for incoming messages. When an image arrives, we do the job with it and send back to the &quot;replyTo&quot; queue the optimized image for the proper sender (correlationId). In the end, we do an acknowledge of the message so it get's out from the queue.</p> +<div class="highlight"><pre><span></span><span class="kr">const</span> <span class="nx">imagemin</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin&#39;</span><span class="p">);</span> +<span class="kr">const</span> <span class="nx">imageminPngquant</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin-pngquant&#39;</span><span class="p">);</span> + +<span class="kd">let</span> <span class="nx">channel</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span> +<span class="kr">const</span> <span class="nx">QUEUE</span> <span class="o">=</span> <span class="s1">&#39;imgqueue&#39;</span><span class="p">;</span> + +<span class="nx">require</span><span class="p">(</span><span class="s1">&#39;amqplib&#39;</span><span class="p">).</span><span class="nx">connect</span><span class="p">(</span><span class="s1">&#39;amqp://localhost&#39;</span><span class="p">)</span> +<span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">conn</span> <span class="p">=&gt;</span><span class="nx">conn</span><span class="p">.</span><span class="nx">createChannel</span><span class="p">())</span> +<span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">ch</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">assertQueue</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">)</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="c1">//Watch incomming messages</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">consume</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">,</span> <span class="nx">msg</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">imagemin</span><span class="p">.</span><span class="nx">buffer</span><span class="p">(</span><span class="nx">msg</span><span class="p">.</span><span class="nx">content</span><span class="p">,</span> <span class="p">{</span> + <span class="nx">plugins</span><span class="o">:</span> <span class="p">[</span><span class="nx">imageminPngquant</span><span class="p">()]</span> + <span class="p">})</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">out</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="c1">//Send back to the sender (replyTo) queue and give the correlationId back</span> + <span class="c1">//so we can emit the event.</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">sendToQueue</span><span class="p">(</span><span class="nx">msg</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">replyTo</span><span class="p">,</span> <span class="nx">out</span><span class="p">,</span> <span class="p">{</span> + <span class="nx">correlationId</span><span class="o">:</span> <span class="nx">msg</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">correlationId</span> + <span class="p">});</span> + + <span class="c1">//Acknowledge the job done with the message.</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">ack</span><span class="p">(</span><span class="nx">msg</span><span class="p">);</span> + <span class="p">});</span> + <span class="p">});</span> + <span class="p">});</span> +<span class="p">});</span> +</pre></div> +<p>The key points here are. Open just one connection to the hole server. You CAN create one channel for every request that you receive, but it can take some time if you have a really big cluster of RabbitMQ. It was a quick tutorial, but I hope that it was able to clear a few questions that you might have when working with rabbit and express.</p> +Microservices with NodeJS, Express.js and RabbitMQ Part 12018-04-04T11:25:00-03:002018-04-04T11:25:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-04-04:/microservices_nodejs_express_rabbitmq_part_1.html<p>This is the first part of a microservices development series. The service will consist of the bellow architecture, where we will expose an image optimizer service that will forward the request to a <a class="reference external" href="https://www.rabbitmq.com/">RabbitMQ</a> queue and answer with the bytecode of the optimized image. It shouldn't be a long series …</p><p>This is the first part of a microservices development series. The service will consist of the bellow architecture, where we will expose an image optimizer service that will forward the request to a <a class="reference external" href="https://www.rabbitmq.com/">RabbitMQ</a> queue and answer with the bytecode of the optimized image. It shouldn't be a long series so let's see what we can do.</p> +<img alt="Service architecture" src="/images/microservices_rabit_pt1.png" /> +<p>Let's get our environment working. First, we'll need to install the libraries that we'll use.</p> +<p>Create a dir and initialize the nodejs application inside it (<cite>npm init</cite>) and then let's install the deps.</p> +<ul class="simple"> +<li>amqplib - AMQP lib to interact with rabbitmq</li> +<li>express - Do our basic rest API</li> +<li>express-fileupload - easy file upload parser</li> +<li>imagemin and imagemin-pngquant - our image compacter</li> +</ul> +<div class="highlight"><pre><span></span>npm install --save express amqplib express-fileupload imagemin imagemin-pngquant +</pre></div> +<p>Now let's write the entry points for our service, we'll have two basic entry points. The path <cite>/</cite> that will have a welcome message, the second path will be <cite>/upload</cite> and this is the one that will handle the image and produce a job for our workers.</p> +<div class="highlight"><pre><span></span><span class="kr">const</span> <span class="nx">express</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;express&#39;</span><span class="p">);</span> +<span class="kr">const</span> <span class="nx">fileUpload</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;express-fileupload&#39;</span><span class="p">);</span> + +<span class="c1">//Instantiate the app and set the fileupload parser to manage files</span> +<span class="kr">const</span> <span class="nx">app</span> <span class="o">=</span> <span class="nx">express</span><span class="p">();</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">use</span><span class="p">(</span><span class="nx">fileUpload</span><span class="p">());</span> + +<span class="c1">//Our index entry point</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="nx">res</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="s1">&#39;Hello From ImageCompacter service&#39;</span><span class="p">));</span> + +<span class="c1">//The path that will handle the image file and throw them to the queue</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span><span class="s1">&#39;/upload&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="c1">//With express-fileupload we can grab the files like this</span> + <span class="kd">let</span> <span class="nx">img</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">files</span><span class="p">.</span><span class="nx">image</span><span class="p">;</span> <span class="c1">//&quot;image&quot; is the name of the input</span> + + <span class="nx">res</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="s1">&#39;Not ready yet&#39;</span><span class="p">);</span> +<span class="p">});</span> + +<span class="c1">//Finally start the app with the given port number</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">listen</span><span class="p">(</span><span class="mi">4000</span><span class="p">,</span> <span class="p">()</span> <span class="p">=&gt;</span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;Example app listening on port 4000!&#39;</span><span class="p">));</span> +</pre></div> +<p>Let's check if it works, run the service with node.</p> +<div class="highlight"><pre><span></span>node index.js +Example app listening on port <span class="m">4000</span>! +</pre></div> +<p>Open the browser and check if it prints our hello message when accessing <cite>localhost:4000</cite>. Works? Greate. Now let's work with the image and see how we do it. To optimize our image, we'll use the library imagemin and <a class="reference external" href="https://www.npmjs.com/package/imagemin-pngquant">imagemin-pngquant</a>, it will be that simple for now, we'll work with rabbitmq latter.</p> +<div class="highlight"><pre><span></span><span class="kr">const</span> <span class="nx">imagemin</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin&#39;</span><span class="p">);</span> +<span class="kr">const</span> <span class="nx">imageminPngquant</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin-pngquant&#39;</span><span class="p">);</span> +<span class="c1">//...</span> + +<span class="c1">//The path that will handle the image file and throw them to the queue</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span><span class="s1">&#39;/upload&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="kd">let</span> <span class="nx">img</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">files</span><span class="p">.</span><span class="nx">image</span><span class="p">;</span> <span class="c1">//&quot;image&quot; is the name of the input</span> + + <span class="nx">imagemin</span><span class="p">.</span><span class="nx">buffer</span><span class="p">(</span><span class="nx">img</span><span class="p">.</span><span class="nx">data</span><span class="p">,</span> <span class="p">{</span> + <span class="nx">plugins</span><span class="o">:</span> <span class="p">[</span><span class="nx">imageminPngquant</span><span class="p">()]</span> + <span class="p">})</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">out</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">write</span><span class="p">(</span><span class="nx">out</span><span class="p">,</span><span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">end</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="p">});</span> +<span class="p">});</span> + + <span class="c1">//...</span> +</pre></div> +<p>Use <a class="reference external" href="https://www.getpostman.com/">Postman</a> to test the request. To see if it will work, make a request to <cite>http://localhost:4000/upload</cite> with a formdata with a file. Select the &quot;send and Download&quot; instead of &quot;Send&quot; and you should have an image after that. Bellow an image of how your postman should be.</p> +<img alt="Postman" src="/images/microservice_postman.png" /> +<p>That's it for today, next week we'll change our code to use RabbitMQ.</p> +Connecting to a database through SSH2018-03-29T10:03:00-03:002018-03-29T10:03:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-29:/connecting_to_database_through_ssh.html<p>If someday, for some reason, you need to establish a connection with a database which is behind a firewall and you only have SSH access on that server (and you don't want to use a CLI) you can do an SSH tunnel. It's pretty simple, bellow has a sample of …</p><p>If someday, for some reason, you need to establish a connection with a database which is behind a firewall and you only have SSH access on that server (and you don't want to use a CLI) you can do an SSH tunnel. It's pretty simple, bellow has a sample of how to allow connections to a remote Firebird database.</p> +<div class="highlight"><pre><span></span>ssh -L <span class="m">3051</span>:192.168.1.9:3050 username@192.168.1.9 +</pre></div> +<p>The <cite>-L</cite> parameter tells to SSH do a local port forwarding on local port <cite>3051</cite> to remote port <cite>3050</cite>. You can use it to a connection with many services, not just databases.</p> +<p>You can do the reverse kind of tunnel, forward connections from the host to your local machine, you just have to change the parameter form &quot;-L&quot; to &quot;-R&quot; and the port order is inverted, first come the port where the server will listen and after your localhost port. This remote port forwarding must be enabled on the server. Look for <cite>GatewayPorts</cite> at the ssh config file.</p> +<div class="highlight"><pre><span></span>ssh -R <span class="m">3050</span>:localhost:3050 username@192.168.1.9 +</pre></div> +<p>Why whould you need something like that?? Let's say you want to share a localhost site/database with a friend, but your internet connection don't allow you to expose any port but you have access to a remote server witch can do that. Problem solved ;).</p> +Now posting on Grepora2018-03-24T00:40:00-03:002018-03-24T00:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-24:/now_posting_on_grepora.html<p>A few weeks ago I started posting at <a class="reference external" href="https://grepora.com/blog/">Grepora</a> blog. If you like or are looking for some Oracle related stuff, Grepora it's a good place to go and spend a time reading :). From time to time I'll be posting there, it doesn't mean that this blog will be closed …</p><p>A few weeks ago I started posting at <a class="reference external" href="https://grepora.com/blog/">Grepora</a> blog. If you like or are looking for some Oracle related stuff, Grepora it's a good place to go and spend a time reading :). From time to time I'll be posting there, it doesn't mean that this blog will be closed or anything like that, but probably this one will be more focused on Front-end stuff, a few tricks with linux and a lil less with Java.</p> +Scaffolding a React app with Parcel and Yeoman2018-03-17T13:00:00-03:002018-03-17T13:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-17:/scaffolding_react_app_with_parcel_yeoman.html<p>Since <a class="reference external" href="https://parceljs.org/">Parcel JS</a> arrived, I've been using it a lot as an awesome alternative for WebPack. Webpack isn't bad but IMO it's too complex for the job and parcel do the same (at least the basic) with almost zero configuration. But if you need to create many apps (like a …</p><p>Since <a class="reference external" href="https://parceljs.org/">Parcel JS</a> arrived, I've been using it a lot as an awesome alternative for WebPack. Webpack isn't bad but IMO it's too complex for the job and parcel do the same (at least the basic) with almost zero configuration. But if you need to create many apps (like a react app) over and over again, it get's a lil boring following the basic steps.</p> +<div class="highlight"><pre><span></span>npm init -y +npm install --save react +npm install --save react-dom +npm install --save-dev parcel-bundler +npm install --save-dev babel-preset-env +npm install --save-dev babel-preset-react + +<span class="c1">#create .babelrc file</span> +<span class="c1">#create html, css, jsx files</span> + +parcel index.html +</pre></div> +<p>It's not a hard job, a simple shell script do the job, but what if you need some IFs when creating the app, or even change a few things at the <cite>package.json</cite>? A shell script still does the job, but come on... There is a better way. <a class="reference external" href="http://yeoman.io/">Yeoman</a> is here for you. I've already <a class="reference external" href="https://www.sipmann.com/desenvolvendo-app-firefoxos-pt.html">talked about it</a> on another post (Portuguese post).</p> +<p>Straight to the point, I've released a Yeoman generator to get the things a lil quicker. The name is <a class="reference external" href="https://www.npmjs.com/package/generator-parcel-react">generator-parcel-react</a> and it still lacks a few things that I will deal with soon. It's pretty simple to use it.</p> +<div class="highlight"><pre><span></span><span class="c1">#First time only</span> +npm install -g yo +npm install -g generator-parcel-react + +<span class="c1">#every time you create a new app</span> +yo parcel-react +</pre></div> +<p>And that's it. Right now you can scaffold and app with React, SASS and React Router. Hope you like it and feel free to ask new features.</p> +Could not open connection with MySQL and Hibernate2018-03-09T12:35:00-03:002018-03-09T12:35:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-09:/cloud-not-open-connection-java-mysql-hibernate.html<p>Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some &quot;Could not open connection&quot; at my …</p><p>Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some &quot;Could not open connection&quot; at my face, but why? I've tried to connect to it manually and got the same problem.</p> +<p>After some research, I found that the true error should be java.sql.SQLException: null, message from server: &quot;Host '172.17.0.4' is not allowed to connect to this MySQL server&quot; but it wasn't showing to me...</p> +<p>After all, be aware that with the docker image MySQL:5.7.21 (latest version right now) the root user isn't allowed to remote connect to the database (it's alright, security reasons) and if you still want to do remote connections to it with root there are a few things you can do.</p> +<ol class="arabic simple"> +<li>Create a user or allow root to access from other IPs.</li> +</ol> +<div class="highlight"><pre><span></span><span class="o">#</span><span class="k">No</span> <span class="k">access</span> <span class="k">to</span> <span class="k">user</span> <span class="n">root</span> <span class="k">on</span> <span class="k">any</span> <span class="n">other</span> <span class="n">IP</span> +<span class="k">SELECT</span> <span class="k">User</span><span class="p">,</span> <span class="k">Host</span> <span class="k">FROM</span> <span class="n">mysql</span><span class="p">.</span><span class="k">user</span><span class="p">;</span> +<span class="o">+</span><span class="c1">---------------+-----------+</span> +<span class="o">|</span> <span class="k">User</span> <span class="o">|</span> <span class="k">Host</span> <span class="o">|</span> +<span class="o">+</span><span class="c1">---------------+-----------+</span> +<span class="o">|</span> <span class="n">healthchecker</span> <span class="o">|</span> <span class="n">localhost</span> <span class="o">|</span> +<span class="o">|</span> <span class="n">root</span> <span class="o">|</span> <span class="n">localhost</span> <span class="o">|</span> +<span class="o">+</span><span class="c1">---------------+-----------+</span> +<span class="mi">2</span> <span class="k">rows</span> <span class="k">in</span> <span class="k">set</span> <span class="p">(</span><span class="mi">0</span><span class="p">.</span><span class="mi">01</span> <span class="n">sec</span><span class="p">)</span> + +<span class="k">CREATE</span> <span class="k">USER</span> <span class="s1">&#39;newuser&#39;</span><span class="o">@</span><span class="s1">&#39;%&#39;</span> <span class="n">IDENTIFIED</span> <span class="k">BY</span> <span class="s1">&#39;password&#39;</span><span class="p">;</span> <span class="o">#%</span> <span class="n">mean</span> <span class="k">any</span> <span class="n">IP</span> +<span class="k">GRANT</span> <span class="k">ALL</span> <span class="k">PRIVILEGES</span> <span class="k">ON</span> <span class="o">*</span><span class="p">.</span><span class="o">*</span> <span class="k">TO</span> <span class="s1">&#39;newuser&#39;</span><span class="o">@</span><span class="s1">&#39;%&#39;</span><span class="p">;</span> <span class="o">#*</span><span class="p">.</span><span class="o">*</span> <span class="n">mean</span> <span class="k">database</span><span class="p">.</span><span class="k">table</span> <span class="p">;)</span> +</pre></div> +<ol class="arabic simple" start="2"> +<li>Use MariaDB instead, witch come (at least on the version 10.2.13) with root allowed to do remote connections and will work like MySQL :)</li> +</ol> +<p>I changed to <a class="reference external" href="https://mariadb.org/">MariaDB</a> as it work without creating user or any changes on the Java code or the <cite>docker run command</cite>.</p> +Solving java.net.SocketException: Protocol family unavailable on a Java + Docker + WildFly2018-03-04T17:40:00-03:002018-03-04T17:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-04:/socketException-protocol-family-unavailable-java-docker-wildfly.html<p>On the last days I've been playing with <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> and I decided to deploy a simple app with Docker. Should work fine, at least that was what I thought. Built a container with the following Dockerfile and instead of a working web app, all that I got was the …</p><p>On the last days I've been playing with <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> and I decided to deploy a simple app with Docker. Should work fine, at least that was what I thought. Built a container with the following Dockerfile and instead of a working web app, all that I got was the error <cite>java.net.SocketException: Protocol family unavailable</cite>.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">CMD</span> <span class="p">[</span><span class="s2">&quot;java&quot;</span><span class="p">,</span><span class="s2">&quot;-jar&quot;</span><span class="p">,</span><span class="s2">&quot;/opt/issues.jar&quot;</span><span class="p">]</span> +</pre></div> +<p>For some reason, WildFly and Java decided to use the IPv6 network interface from Docker instead the v4, so all you have to do is tell Java to prefer IPv4 instead with the following configuration option in your pom.xml file inside your WildFly plugin.</p> +<div class="highlight"><pre><span></span><span class="nt">&lt;plugin&gt;</span> + <span class="nt">&lt;groupId&gt;</span>org.wildfly.swarm<span class="nt">&lt;/groupId&gt;</span> + <span class="nt">&lt;artifactId&gt;</span>wildfly-swarm-plugin<span class="nt">&lt;/artifactId&gt;</span> + <span class="nt">&lt;version&gt;</span>2018.2.0<span class="nt">&lt;/version&gt;</span> + + <span class="c">&lt;!-- ADD THIS --&gt;</span> + <span class="nt">&lt;configuration&gt;</span> + <span class="nt">&lt;mainClass&gt;</span>org.wildfly.swarm.examples.netflix.ribbon.frontend.Main<span class="nt">&lt;/mainClass&gt;</span> + <span class="nt">&lt;properties&gt;</span> + <span class="nt">&lt;java.net.preferIPv4Stack&gt;</span>true<span class="nt">&lt;/java.net.preferIPv4Stack&gt;</span> + <span class="nt">&lt;/properties&gt;</span> + <span class="nt">&lt;/configuration&gt;</span> +</pre></div> +<p>Another way to solve is adding the same properties to the run command at the Dockerfile, so you choose where you'll add it. Bellow the Dockerfile solution.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> +<span class="k">ENV</span> <span class="nv">JAVA_OPTS</span><span class="o">=</span><span class="s2">&quot;-Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true&quot;</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">ENTRYPOINT</span> <span class="nb">exec</span> java <span class="nv">$JAVA_OPTS</span> -jar /opt/issues.jar +</pre></div> +Change display settings on linux with Disper2018-02-27T12:40:00-03:002018-02-27T12:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-02-27:/linux-external-display-with-disper.html<p>From time to time, I change the Linux distro on my laptop or just do a fresh install on it. And once in a while, have random problems with external displays. It can be something really &quot;simple&quot; like don't detecting the external monitor or something crazy like the image below …</p><p>From time to time, I change the Linux distro on my laptop or just do a fresh install on it. And once in a while, have random problems with external displays. It can be something really &quot;simple&quot; like don't detecting the external monitor or something crazy like the image below.</p> +<img alt="Display bug" src="/images/bug.png" /> +<p>As you can see at the image, the mint detected the display but mirrored it in a crazy way that works but doesn't at the same time. If you try anything and doesn't get working, or just wanna skip the whole job of configuring complexes text files, give a try to <a class="reference external" href="http://willem.engen.nl/projects/disper/">Disper</a>. Download the latest version. +Extract it on any folder, and make install it (on the extracted folder).</p> +<div class="highlight"><pre><span></span>make install +</pre></div> +<p>After that, you can start using it... There are a few options that will serve you well.</p> +<div class="highlight"><pre><span></span>disper -e <span class="c1">#extend your display</span> +</pre></div> +<div class="highlight"><pre><span></span>disper -c <span class="c1">#clone your display</span> +</pre></div> +<div class="highlight"><pre><span></span>disper -s <span class="c1">#only your external display</span> +</pre></div> +Java - Files.readAllBytes throws OutOfMemory2018-02-17T13:00:00-02:002018-02-17T13:00:00-02:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-02-17:/reading-files-java-readAllBytes-outofmemory.html<p>When you need to interact with files, there's the possibility to read all bytes from the file with <cite>Files.readAllBytes</cite>. But be aware of the kinds of files your application will deal with because the Java API files have a limit for the buffer that is defined as <cite>Integer.MAX_VALUE …</cite></p><p>When you need to interact with files, there's the possibility to read all bytes from the file with <cite>Files.readAllBytes</cite>. But be aware of the kinds of files your application will deal with because the Java API files have a limit for the buffer that is defined as <cite>Integer.MAX_VALUE</cite> as you can see above or at the OpenJDK sources.</p> +<div class="highlight"><pre><span></span><span class="kd">public</span> <span class="kd">static</span> <span class="kt">byte</span><span class="o">[]</span> <span class="nf">readAllBytes</span><span class="p">(</span><span class="n">Path</span> <span class="n">path</span><span class="p">)</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="p">{</span> + <span class="k">try</span> <span class="p">(</span><span class="n">FileChannel</span> <span class="n">fc</span> <span class="o">=</span> <span class="n">FileChannel</span><span class="p">.</span><span class="na">open</span><span class="p">(</span><span class="n">path</span><span class="p">))</span> <span class="p">{</span> + <span class="kt">long</span> <span class="n">size</span> <span class="o">=</span> <span class="n">fc</span><span class="p">.</span><span class="na">size</span><span class="p">();</span> + <span class="k">if</span> <span class="p">(</span><span class="n">size</span> <span class="o">&gt;</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">Integer</span><span class="p">.</span><span class="na">MAX_VALUE</span><span class="p">)</span> + <span class="k">throw</span> <span class="k">new</span> <span class="n">OutOfMemoryError</span><span class="p">(</span><span class="s">&quot;Required array size too large&quot;</span><span class="p">);</span> + + <span class="kt">byte</span><span class="o">[]</span> <span class="n">arr</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">byte</span><span class="o">[</span><span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">size</span><span class="o">]</span><span class="p">;</span> + <span class="n">ByteBuffer</span> <span class="n">bb</span> <span class="o">=</span> <span class="n">ByteBuffer</span><span class="p">.</span><span class="na">wrap</span><span class="p">(</span><span class="n">arr</span><span class="p">);</span> + <span class="k">while</span> <span class="p">(</span><span class="n">bb</span><span class="p">.</span><span class="na">hasRemaining</span><span class="p">())</span> <span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="n">fc</span><span class="p">.</span><span class="na">read</span><span class="p">(</span><span class="n">bb</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> + <span class="c1">// truncated</span> + <span class="k">break</span><span class="p">;</span> + <span class="p">}</span> + <span class="p">}</span> + + <span class="kt">int</span> <span class="n">nread</span> <span class="o">=</span> <span class="n">bb</span><span class="p">.</span><span class="na">position</span><span class="p">();</span> + <span class="k">return</span> <span class="p">(</span><span class="n">nread</span> <span class="o">==</span> <span class="n">size</span><span class="p">)</span> <span class="o">?</span> <span class="n">arr</span> <span class="p">:</span> <span class="n">Arrays</span><span class="p">.</span><span class="na">copyOf</span><span class="p">(</span><span class="n">arr</span><span class="p">,</span> <span class="n">nread</span><span class="p">);</span> + <span class="p">}</span> +<span class="p">}</span> +</pre></div> +<p>With that in mind, check if isn't better read chunks of bytes e work with that slice in exchange of loading the whole file into the memory ;). Above a simple example of how you can read chunks of bytes from the file.</p> +<div class="highlight"><pre><span></span><span class="kt">byte</span><span class="o">[]</span> <span class="n">buffer</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">byte</span><span class="o">[</span><span class="mi">1024</span><span class="o">]</span><span class="p">;</span> +<span class="n">FileInputStream</span> <span class="n">in</span> <span class="o">=</span> <span class="k">new</span> <span class="n">FileInputStream</span><span class="p">(</span><span class="n">file</span><span class="p">);</span> +<span class="kt">int</span> <span class="n">rc</span> <span class="o">=</span> <span class="n">in</span><span class="p">.</span><span class="na">read</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span> +<span class="k">while</span> <span class="p">(</span><span class="n">rc</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> +<span class="p">{</span> + <span class="c1">//crazy stuff here with buffer</span> + <span class="n">rc</span> <span class="o">=</span> <span class="n">in</span><span class="p">.</span><span class="na">read</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span> +<span class="p">}</span> +</pre></div> + \ No newline at end of file diff --git a/feeds/all-en.atom.xml.gz b/feeds/all-en.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..7058dd7f488d2059aa3afbf17755e8802ae5b701 GIT binary patch literal 26305 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 +Sipmannhttps://www.sipmann.com/2020-12-21T13:30:00-03:00Monitoring MySQL restarts with PowerShell2020-12-21T13:30:00-03:002020-12-21T13:30:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-21:/monitoring-mysql-restarts-with-powershell.html<p>Hey folks, it's time for another PowerShell script. If you haven't seen the other ones, check the links below.</p> +<ul> +<li><a href="https://www.sipmann.com/en/monitoring-mysql-replication-with-powershell.html">Monitoring MySQL replication with PowerShell</a></li> +</ul> +<p>Well, this one it's a pretty simple script, but again, if your customer doesn't have a Zabbix server or doesn't allow you to setup one to …</p><p>Hey folks, it's time for another PowerShell script. If you haven't seen the other ones, check the links below.</p> +<ul> +<li><a href="https://www.sipmann.com/en/monitoring-mysql-replication-with-powershell.html">Monitoring MySQL replication with PowerShell</a></li> +</ul> +<p>Well, this one it's a pretty simple script, but again, if your customer doesn't have a Zabbix server or doesn't allow you to setup one to do the monitoring, a set of scripts can be handy. We start executing some basic query <code>SHOW GLOBAL STATUS LIKE 'Uptime'</code>, with that we'll get exactly what we're looking for.</p> +<p>If for some reason, the command fails (watch for the "global" variable called <code>$lastExitCode</code>), we send an e-mail telling you about that connection problem.</p> +<p>And then, we get to the part where we parse the value, this one is pretty similar to the parse we did on the first post about using PowerShell to monitor MySQL. But we basically look for the Value line, split it by space and then parse the second position to an integer. And then all we have to do is check if the uptime is lower than our threshold, if it is we send an e-mail.</p> +<div class="highlight"><pre><span></span><code><span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;maurio[at]sipmann.com&#39;</span> +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio[at]sipmann.com&#39;</span> +<span class="nv">$MysqlHost</span> <span class="p">=</span> <span class="s1">&#39;127.0.0.1&#39;</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;123&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-h</span> <span class="nv">$MysqlHost</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s2">&quot;SHOW GLOBAL STATUS LIKE &#39;Uptime&#39; \G&quot;</span><span class="p">)</span> + +<span class="cm">&lt;# Unable to execute the sql Command #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$lastExitCode</span> <span class="o">-eq</span> <span class="n">1</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Connection problem&#39;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;Connection problem on host ${MysqlHost}&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> + <span class="n">exit</span> +<span class="p">}</span> + +<span class="nv">$UpTime</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Value:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="cm">&lt;# If the uptime is lower then 20 minutes #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$UpTime</span> <span class="o">-lt</span> <span class="n">1200</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s2">&quot;MySQL Restarted&quot;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;MySQL host ${MysqlHost} restarted less than 20 minutes ago&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> +</code></pre></div> + +<p>This script (and the other ones I use) is available at my GitHub <a href="https://github.com/sipmann/PowerShellScripts">here</a>. Keep in mind that the ones on the GitHub repo, are a little different from here.</p>Monitorando restarts do MySQL com PowerShell2020-12-21T13:30:00-03:002020-12-21T13:30:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-21:/pt/monitoring-mysql-restarts-with-powershell.html<p>Bom, chegou a hora para mais um script PowerShell. Se você ainda não viu os outros, de uma olhada no link abaixo.</p> +<ul> +<li><a href="https://www.sipmann.com/pt/monitoring-mysql-replication-with-powershell.html">Monitorando status de replicação do MySQL com PowerShell</a></li> +</ul> +<p>Este aqui é um script bem simples, mas novamente, se seu cliente não possui um servidor Zabbix ou não permite …</p><p>Bom, chegou a hora para mais um script PowerShell. Se você ainda não viu os outros, de uma olhada no link abaixo.</p> +<ul> +<li><a href="https://www.sipmann.com/pt/monitoring-mysql-replication-with-powershell.html">Monitorando status de replicação do MySQL com PowerShell</a></li> +</ul> +<p>Este aqui é um script bem simples, mas novamente, se seu cliente não possui um servidor Zabbix ou não permite que você configure um para realizar este monitoramento, um conjunto de scripts pode ser bem útil. Primeiramente nós executamos uma query báscia <code>SHOW GLOBAL STATUS LIKE 'Uptime'</code>, com ela nós conseguimos capturar exatamente o que nós estamos procurando.</p> +<p>Se por alguma razão o comando falhar (verificamos atravez da variábel global <code>$lastExitCode</code>), nós mandamos um e-mail lhe avisando sobre o problema ocorrido.</p> +<p>E então, nós chegamos à parte onde fazemos o parse do valor obtido, esta parte é bem similar ao parse que codificamos no primeiro post sobre monitoramento utilizando PowerShell. Nós basicamentes procuramos pela linha contendo <code>Value</code>, separamos por espaço e então parseamos a segunda posição em um inteiro. Então tudo que precisamos fazer é verificar se o valor parseado é menor que o nosso threshold, se for menor, nós mandamos um e-mail.</p> +<div class="highlight"><pre><span></span><code><span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;maurio[at]sipmann.com&#39;</span> +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio[at]sipmann.com&#39;</span> +<span class="nv">$MysqlHost</span> <span class="p">=</span> <span class="s1">&#39;127.0.0.1&#39;</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;123&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-h</span> <span class="nv">$MysqlHost</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s2">&quot;SHOW GLOBAL STATUS LIKE &#39;Uptime&#39; \G&quot;</span><span class="p">)</span> + +<span class="cm">&lt;# Unable to execute the sql Command #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$lastExitCode</span> <span class="o">-eq</span> <span class="n">1</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Connection problem&#39;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;Connection problem on host ${MysqlHost}&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> + <span class="n">exit</span> +<span class="p">}</span> + +<span class="nv">$UpTime</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Value:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="cm">&lt;# If the uptime is lower then 20 minutes #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$UpTime</span> <span class="o">-lt</span> <span class="n">1200</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s2">&quot;MySQL Restarted&quot;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;MySQL host ${MysqlHost} restarted less than 20 minutes ago&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> +</code></pre></div> + +<p>Este script (e os outros que eu utilizo) estão disponíveis no meu GitHub <a href="https://github.com/sipmann/PowerShellScripts">aqui</a>. Tenha em mente que os scripts localizados no GitHub, são um pouco diferentes do que exibido aqui. Espero que tenha achado útil.</p>Changing a MySQL user password across multiple application instances without downtime2020-12-09T13:40:00-03:002020-12-09T13:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-09:/mysql-dual-password-functionality.html<p>Do you need to change the password of a MySQL user that it's being used in an application, and can't allow a single downtime? Well, MySQL 8.0.14 came with a feature called <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, with it you can change the password keeping the previous password as a …</p><p>Do you need to change the password of a MySQL user that it's being used in an application, and can't allow a single downtime? Well, MySQL 8.0.14 came with a feature called <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, with it you can change the password keeping the previous password as a kind of backup. That way you still can log in using the old password or can start using the new one. With that, the password change workflow it's the following.</p> +<p>1) Change password keeping the old one;</p> +<p>2) Deploy the new config to your app/cluster;</p> +<p>3) Discard the old password.</p> +<p>To change the password and keep the old one, you have the following command.</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">IDENTIFIED</span> <span class="k">BY</span> <span class="s1">&#39;new_password&#39;</span> <span class="n">RETAIN</span> <span class="n">CURRENT</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>To discard the old one, run the following.</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">DISCARD</span> <span class="n">OLD</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>And you are done. Hope you find it as useful as I :)</p>Trocando a senha de um usuário do MySQL sem downtime da aplicação2020-12-09T13:40:00-03:002020-12-09T13:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-09:/pt/mysql-dual-password-functionality.html<p>Você deseja trocar a senha de um usuário do MySQL que está sendo utilizado por uma aplicação e não sofrer nenhum downtime? Bom, a versão 8.0.14 do MySQL foi liberada com uma feature chamada <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, com esta feature você pode alterar a senha de um usuário …</p><p>Você deseja trocar a senha de um usuário do MySQL que está sendo utilizado por uma aplicação e não sofrer nenhum downtime? Bom, a versão 8.0.14 do MySQL foi liberada com uma feature chamada <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, com esta feature você pode alterar a senha de um usuário mantendo a anterior ainda funcionando como uma forma de "backup". Desta forma, você ainda conseguirá autenticar com o usuário utilizando tanto a nova senha, quanto a anterior. Com isto, o seu processo de troca de senha fica algo como:</p> +<p>1) Troque a senha mantendo a anterior;</p> +<p>2) Faça o Deploy da nova configuração na sua aplicação/cluster;</p> +<p>3) Descarte a senha anterior.</p> +<p>Para alterar a senha mantendo a anterior, você deve rodar o seguinte comando:</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">IDENTIFIED</span> <span class="k">BY</span> <span class="s1">&#39;new_password&#39;</span> <span class="n">RETAIN</span> <span class="n">CURRENT</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>Para descartar a senha antiga, rode o seguinte:</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">DISCARD</span> <span class="n">OLD</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>E pronto. Espero que isto lhe ajude a evitar downtimes e dores de cabeça :)</p>Apache Nifi JSON to SQL Replacing underscore2020-12-02T14:00:00-03:002020-12-02T14:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-02:/apache-nifi-json-to-sql-replacing-underscore.html<p>Recently I was doing some ETL with Apache NiFi. But after a few minutes of drawing my flow, I saw that the component ConvertJSONToSQL was replacing the underscore ('_') from the field name in the where condition (I was preparing an Update SQL). That was weird because, at the set …</p><p>Recently I was doing some ETL with Apache NiFi. But after a few minutes of drawing my flow, I saw that the component ConvertJSONToSQL was replacing the underscore ('_') from the field name in the where condition (I was preparing an Update SQL). That was weird because, at the set statement, the field name was kept intact. After some research, I found that the property (see bellow) <code>Translate Field Names</code> was responsible for that weird replacement.</p> +<p><img alt="Apache NiFi JSONToSQL config" src="/images/apache_nifi_jsontosql.png"></p> +<p>Before setting it to <strong>FALSE</strong>, be aware that the properties on your JSON data must match exactly the name of your fields.</p>Apache Nifi JSON to SQL removendo underline2020-12-02T14:00:00-03:002020-12-02T14:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-02:/pt/apache-nifi-json-to-sql-replacing-underscore.html<p>Recentemente eu estava desenvolvendo alguns processos de ETL com o Apache NiFi. Mas após alguns minutos desenhando o meu fluxo, eu vi um comportamento estranho do componente ConvertJSONToSQL, que estava substituindo os underline ('_') do nome de um campo utilizado na condição da SQL (eu estava preparando um UPDATE). Aquilo …</p><p>Recentemente eu estava desenvolvendo alguns processos de ETL com o Apache NiFi. Mas após alguns minutos desenhando o meu fluxo, eu vi um comportamento estranho do componente ConvertJSONToSQL, que estava substituindo os underline ('_') do nome de um campo utilizado na condição da SQL (eu estava preparando um UPDATE). Aquilo estava estranho, uma vez que na definição do SET da SQL, o nome do campo permanecia inalterado. Depois de algumas pesquisas, achei uma doc que a propriedade (veja abaixo) <code>Translate Field Names</code> era a responsável por este comportamento estranho.</p> +<p><img alt="Apache NiFi JSONToSQL config" src="/images/apache_nifi_jsontosql.png"></p> +<p>Antes de definir a propriedade como <strong>FALSE</strong>, esteja ciente que as propriedades do seu JSON devem ser exatamente iguais aos nomes dos campos da sua tabela.</p>Blocking a user on SQL Server based on a schedule2020-11-14T07:00:00-03:002020-11-14T07:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-11-14:/blocking-user-on-sql-server-based-on-schedule.html<p>Ok, some time ago, I've posted about how you can set limits to connections on SQL Server using the <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. But what if you can't use it? You always can block logins using a login trigger, but I don't like the idea of having selects running on every login …</p><p>Ok, some time ago, I've posted about how you can set limits to connections on SQL Server using the <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. But what if you can't use it? You always can block logins using a login trigger, but I don't like the idea of having selects running on every login. So I came across with a solution using a stored procedure, a table and the Agent.</p> +<p>The main idea is, store the time that a user must be blocked and using the Agent, disable or enable the user. Bellow you can see the table (the table is in Portuguese, but I have a few comment blocks to help you).</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">Id</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Startint block time */</span><span class="w"></span> +<span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Ending block time */</span><span class="w"></span> +<span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="k">DEFAULT</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="cm">/* 0 = unblocked, 1 = blocked */</span><span class="w"></span> +<span class="w"> </span><span class="k">PRIMARY</span><span class="w"> </span><span class="k">KEY</span><span class="w"> </span><span class="p">(</span><span class="n">Id</span><span class="p">)</span><span class="w"></span> +<span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="cm">/* Don&#39;t block the SA user, precautions, you know */</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_users</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">LoginName</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;sa&#39;</span><span class="p">));</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_hora_final_maior</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="n">HrInicio</span><span class="p">);</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_status_bloqueio</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">Bloqueado</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">));</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="k">SEQUENCE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">seq_HorariosBloqueio</span><span class="w"> </span><span class="k">START</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">INCREMENT</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>After creating the table, let's check the procedure that will handle the enabling/disabling the users. Be aware that on the procedure, I've set the database name where the table was stored, you can change it replacing the <code>DBATOOLS</code> text to the database name where you created the table.</p> +<div class="highlight"><pre><span></span><code><span class="k">IF</span><span class="w"> </span><span class="nf">OBJECT_ID</span><span class="p">(</span><span class="s1">&#39;dbo.sp_ValidarLogin&#39;</span><span class="p">)</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="k">NULL</span><span class="w"></span> +<span class="w"> </span><span class="k">EXEC</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;CREATE PROCEDURE dbo.sp_ValidarLogin AS RETURN 0;&#39;</span><span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="k">ALTER</span><span class="w"> </span><span class="k">PROC</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">sp_ValidarLogin</span><span class="w"></span> +<span class="k">AS</span><span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">);</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nf">CAST</span><span class="p">(</span><span class="nf">GETDATE</span><span class="p">()</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="cm">/* Block the ones that aren&#39;t blocked already and maches the time */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">&#39; DISABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Bloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> + + +<span class="w"> </span><span class="cm">/* Enable up who was blocked */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="s1">&#39; ENABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Unbloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="k">END</span><span class="p">;</span><span class="w"></span> +</code></pre></div> + +<p>Ok, so now all you have to do, is schedule a job to run that stored procedure from minute to minute. Again, the main idea is tell the procedure when a user must be blocked and when it'll be unblocked. </p> +<div class="highlight"><pre><span></span><code><span class="err"> -- Will block the user protheus from 10 AM till 15 PM</span> +<span class="err"> INSERT INTO dbo.HorariosBloqueio (Id, LoginName, HrInicio, HrTermino) VALUES (NEXT VALUE FOR seq_HorariosBloqueio, &#39;protheus&#39;, &#39;10:00:00&#39;, &#39;15:00:00&#39;);</span> +</code></pre></div>Bloqueando um usuário do SQL Server baseado em uma tabela de horários2020-11-14T07:00:00-03:002020-11-14T07:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-11-14:/pt/blocking-user-on-sql-server-based-on-schedule.html<p>Ok, algum tempo atrás, eu postei sobre como você pode impor limites às conexões do SQL Server utilizando o <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. Mas, e se você não pode utilizar ele? Você sempre pode bloquear logins usando uma trigger, mas eu não gosto da ideia de ter um select rodando a cada …</p><p>Ok, algum tempo atrás, eu postei sobre como você pode impor limites às conexões do SQL Server utilizando o <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. Mas, e se você não pode utilizar ele? Você sempre pode bloquear logins usando uma trigger, mas eu não gosto da ideia de ter um select rodando a cada login. Então, eu cheguei a esta solução, utilizando uma stored procedure, uma tabela e o Agent.</p> +<p>A ideia principal é armazenar o horário em que um usuário deve ser bloqueado pelo Agent. Abaixo você pode ver a criação da tabela:</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">Id</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/* horário de inicio do bloqueio */</span><span class="w"></span> +<span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/*horário de termino */</span><span class="w"></span> +<span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="k">DEFAULT</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="cm">/* 0 = desbloqueado, 1 = bloqueado */</span><span class="w"></span> +<span class="w"> </span><span class="k">PRIMARY</span><span class="w"> </span><span class="k">KEY</span><span class="w"> </span><span class="p">(</span><span class="n">Id</span><span class="p">)</span><span class="w"></span> +<span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="cm">/* regra para Não bloquear o usuário SA */</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_users</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">LoginName</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;sa&#39;</span><span class="p">));</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_hora_final_maior</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="n">HrInicio</span><span class="p">);</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_status_bloqueio</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">Bloqueado</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">));</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="k">SEQUENCE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">seq_HorariosBloqueio</span><span class="w"> </span><span class="k">START</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">INCREMENT</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>Depois de criar a tabela, vamos verificar a procedure que vai fazer todo o trabalho de habilitar/desabilitar os usuários. Fique ciente que, nesta procedure, eu defini o nome do banco onde a tabela está armazenada. Você pode substituir o nome <code>DBATOOLS</code> pelo o nome da sua base.</p> +<div class="highlight"><pre><span></span><code><span class="k">IF</span><span class="w"> </span><span class="nf">OBJECT_ID</span><span class="p">(</span><span class="s1">&#39;dbo.sp_ValidarLogin&#39;</span><span class="p">)</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="k">NULL</span><span class="w"></span> +<span class="w"> </span><span class="k">EXEC</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;CREATE PROCEDURE dbo.sp_ValidarLogin AS RETURN 0;&#39;</span><span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="k">ALTER</span><span class="w"> </span><span class="k">PROC</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">sp_ValidarLogin</span><span class="w"></span> +<span class="k">AS</span><span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">);</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nf">CAST</span><span class="p">(</span><span class="nf">GETDATE</span><span class="p">()</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="cm">/* Bloqueia os que ainda não estiverem bloqueados de acordo com a hora atual */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">&#39; DISABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Bloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> + + +<span class="w"> </span><span class="cm">/* Libera quem estava bloqueado */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="s1">&#39; ENABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Unbloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="k">END</span><span class="p">;</span><span class="w"></span> +</code></pre></div> + +<p>Certo, então agora tudo que temos que fazer é definir o job no Agent para rodar a procedure de minuto em minuto. Novamente, a ideia principal é chamar a procedure quando um usuário deve ser bloqueado e quando deve ser desbloqueado.</p> +<div class="highlight"><pre><span></span><code><span class="err"> -- Vai bloquear o usuário protheus das 10 AM até 15 PM</span> +<span class="err"> INSERT INTO dbo.HorariosBloqueio (Id, LoginName, HrInicio, HrTermino) VALUES (NEXT VALUE FOR seq_HorariosBloqueio, &#39;protheus&#39;, &#39;10:00:00&#39;, &#39;15:00:00&#39;);</span> +</code></pre></div>How to set columns on select using Entity Framework2020-10-28T19:00:00-03:002020-10-28T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-28:/select_specific_fields_with_efcore.html<p>So, you use Entity Framework Core, and you usually code your selects like the following, maybe you are getting too much data.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Running the query above, on my table, you'll get the following output, take a look …</p><p>So, you use Entity Framework Core, and you usually code your selects like the following, maybe you are getting too much data.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Running the query above, on my table, you'll get the following output, take a look at how many columns you are getting back from your database.</p> +<p><img alt="Screenshot with every single column" src="/images/ef_core_allcolumns.png"></p> +<p>In my case, I only care about the Title, PublishedData, and a small description. So to get back only these fields, we have a few options. In the first one, we'll set the fields and return them as a dynamic object, the second one, is to give the .NET a class to use. </p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + + <span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="k">new</span> <span class="p">{</span><span class="n">p</span><span class="p">.</span><span class="n">ProductID</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitPrice</span><span class="p">})</span> + <span class="c1">//.Select(p =&gt; new ProductDTO {p.ProductID, p.ProductName, p.UnitsInStock, p.UnitPrice})</span> + + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p><img alt="Screenshot with fewer columns and also fewer data size" src="/images/ef_core_less_columns.png"></p>Como definir as colunas no select utilizando Entity Framework2020-10-28T19:00:00-03:002020-10-28T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-28:/pt/select_specific_fields_with_efcore.html<p>Então, você utiliza Entity Framework Core e geralmente faz o seu selecto da seguinte forma, talvez você está retornando muitos dados.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Rodando a query acima, em uma base de testes você obtem o seguinte resultado, veja quantas …</p><p>Então, você utiliza Entity Framework Core e geralmente faz o seu selecto da seguinte forma, talvez você está retornando muitos dados.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Rodando a query acima, em uma base de testes você obtem o seguinte resultado, veja quantas colunas estão retornando da sua base de dados.</p> +<p><img alt="Print com todas as colunas" src="/images/ef_core_allcolumns.png"></p> +<p>No meu caso, eu só pretendo ter de volta as colunas Title, PublishedData e uma pequena descrição. Então para selecionar apenas estes campos, nós temos algumas opções. Na primeira, nós vamos definir os campos e retornar um objeto do tipo Dynamic. A segunda forma, é dar ao .NET o objeto a ser retornado, pode ser por exêmplo um DTO.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + + <span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="k">new</span> <span class="p">{</span><span class="n">p</span><span class="p">.</span><span class="n">ProductID</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitPrice</span><span class="p">})</span> + <span class="c1">//.Select(p =&gt; new ProductDTO {p.ProductID, p.ProductName, p.UnitsInStock, p.UnitPrice})</span> + + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p><img alt="Print com menos colunas e também menor quantidade de dados" src="/images/ef_core_less_columns.png"></p>Zabbix Running on Low Memory Mode2020-10-20T19:00:00-03:002020-10-20T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-20:/zabbix-running-on-low-memory-mode.html<p>Hey folks, another Zabbix post today. This one it's about increasing the Zabbix Server Cache. It's pretty common (if you have the default settings only) get a warning about your <code>Zabbix value cache running on low memory mode</code> at your dashboard or logs.</p> +<p><img alt="Zabbix Dashboard warning about the memory problem" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache graph 70% used" src="/images/zabbix_cache_filling.png"></p> +<p>To solve, go back to your Zabbix …</p><p>Hey folks, another Zabbix post today. This one it's about increasing the Zabbix Server Cache. It's pretty common (if you have the default settings only) get a warning about your <code>Zabbix value cache running on low memory mode</code> at your dashboard or logs.</p> +<p><img alt="Zabbix Dashboard warning about the memory problem" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache graph 70% used" src="/images/zabbix_cache_filling.png"></p> +<p>To solve, go back to your Zabbix config file (<code>zabbix_server.conf</code>) and look for the tag <em>CacheSize</em>. Uncomment it and set to a value bigger than 8M (8M it's the default value). In my case, we set a cache of 100M. After the change, restart the service.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: CacheSize</span> +<span class="c1"># Size of configuration cache, in bytes.</span> +<span class="c1"># Shared memory size for storing host, item and trigger data.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 128K-64G</span> +<span class="c1"># Default:</span> +<span class="na">CacheSize</span><span class="o">=</span><span class="s">100M #uncomment this line</span> +</code></pre></div> + +<p><img alt="Zabbix Dashboard resolved memory problem" src="/images/zabbix_low_memory_solved.png"></p> +<p>See ya folks.</p>Zabbix Running on Low Memory Mode2020-10-20T19:00:00-03:002020-10-20T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-20:/pt/zabbix-running-on-low-memory-mode.html<p>Olá pessoal! Trago hoje outro post sobre Zabbix. Este é sobre aumentar o cache do seu Zabbix Server. É perfeitamente comum (se você roda com as configurações padrões) receber avisos sobre <code>Zabbix value cache running on low memory mode</code> no seu dashboard ou arquivos de log.</p> +<p><img alt="Zabbix Dashboard alertando sobre problemas de memória" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache gráfico com 70% utilizado" src="/images/zabbix_cache_filling.png"></p> +<p>Para resolver, abra o …</p><p>Olá pessoal! Trago hoje outro post sobre Zabbix. Este é sobre aumentar o cache do seu Zabbix Server. É perfeitamente comum (se você roda com as configurações padrões) receber avisos sobre <code>Zabbix value cache running on low memory mode</code> no seu dashboard ou arquivos de log.</p> +<p><img alt="Zabbix Dashboard alertando sobre problemas de memória" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache gráfico com 70% utilizado" src="/images/zabbix_cache_filling.png"></p> +<p>Para resolver, abra o seu arquivo de configuração (<code>zabbix_server.conf</code>) e procure pela tag <em>CacheSize</em>. Descomente a linha e defina um valor maior que 8M (8M é o valor padrão). No meu caso, nós configuramos um cache de 100M. Depois da troca, reinicie o serviço para que o mesmo tome efeito.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: CacheSize</span> +<span class="c1"># Size of configuration cache, in bytes.</span> +<span class="c1"># Shared memory size for storing host, item and trigger data.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 128K-64G</span> +<span class="c1"># Default:</span> +<span class="na">CacheSize</span><span class="o">=</span><span class="s">100M #Descomente esta linha</span> +</code></pre></div> + +<p><img alt="Zabbix Dashboard resolved memory problem" src="/images/zabbix_low_memory_solved.png"></p> +<p>Até breve.</p>Monitoring MySQL Replication Status with PowerShell2020-10-14T19:00:00-03:002020-10-14T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-14:/monitoring-mysql-replication-with-powershell.html<p>I've been migration some bash scripts that I have to PowerShell, and it's time to migrate a script that monitors the replication of a MySQL database. The credit for the original script goes to <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. It's a simple script where I seek a few tags/fields that we get from …</p><p>I've been migration some bash scripts that I have to PowerShell, and it's time to migrate a script that monitors the replication of a MySQL database. The credit for the original script goes to <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. It's a simple script where I seek a few tags/fields that we get from <code>SHOW SLAVE STATUS\G</code> command, the fields are. <code>Slave_IO_Running</code>, <code>Slave_SQL_Running</code>, and <code>Seconds_Behind_Master</code>. I still need to figure out the proper way to store/read variables like usernames and passwords, if you have any tips, feel free to even make a pull request (<a href="https://github.com/sipmann/PowerShellScripts">here</a>) at the git where I'll store some scripts.</p> +<div class="highlight"><pre><span></span><code><span class="cm">&lt;#</span> +<span class="cm"> Variables definition</span> +<span class="cm">#&gt;</span> +<span class="nv">$MaxSeconds</span> <span class="p">=</span> <span class="n">120</span> <span class="c"># Max seconds behind master allowed</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;&#39;</span> + +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> +<span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s1">&#39;SHOW SLAVE STATUS \G&#39;</span><span class="p">)</span> + +<span class="c">#Debug data</span> +<span class="c">#$data = Get-Content &#39;c:\temp\sampleresult.txt&#39;</span> + +<span class="cm">&lt;# Parse the data #&gt;</span> +<span class="nv">$IORunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_IO_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SQLRunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_SQL_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$LastErrNo</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Last_Errno&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SecondsBh</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Seconds_Behind_Master&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="k">If</span> <span class="p">(</span><span class="nv">$IORunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SQLRunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SecondsBh</span> <span class="o">-gt</span> <span class="nv">$MaxSeconds</span><span class="p">)</span> <span class="p">{</span> + <span class="nv">$MailBody</span> <span class="p">=</span> <span class="s1">&#39;&lt;h1&gt;Problema na replicação&lt;/h1&gt;&lt;br&gt;&#39;</span> + + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; IO Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$IORunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; SQL Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SQLRunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39;Seconds Behind: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SecondsBh</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; Last Err No: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$LastErrNo</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + + <span class="cm">&lt;# Send e-mail, maybe some telegram message here too #&gt;</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Problemas na replicação&#39;</span> <span class="n">-bodyAsHtml</span> <span class="nv">$MailBody</span> <span class="n">-Credential</span> <span class="p">(</span><span class="nb">Get-Credential</span><span class="p">)</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> <span class="k">Else</span> <span class="p">{</span> + <span class="nb">Write-Host</span> <span class="s2">&quot;Up and running&quot;</span> +<span class="p">}</span> +</code></pre></div>Monitorando status de replicação do MySQL com PowerShell2020-10-14T19:00:00-03:002020-10-14T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-14:/pt/monitoring-mysql-replication-with-powershell.html<p>Tenho migrado alguns scripts bash que tenho para PowerShell, e chegou a vez de migrar um script de monitoramento de replicação do MySQL. Fica como crédito o script original do <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. É um script bem simples onde eu verifico algumas tags resultantes do <code>SHOW SLAVE STATUS\G</code>, são elas. <code>Slave_IO_Running …</code></p><p>Tenho migrado alguns scripts bash que tenho para PowerShell, e chegou a vez de migrar um script de monitoramento de replicação do MySQL. Fica como crédito o script original do <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. É um script bem simples onde eu verifico algumas tags resultantes do <code>SHOW SLAVE STATUS\G</code>, são elas. <code>Slave_IO_Running</code>, <code>Slave_SQL_Running</code> e <code>Seconds_Behind_Master</code>. Ainda preciso verificar formas mais corretas de armazenar/carregar as variáveis como usuários e senha, se tiver alguma dica, fique à vontade para inclusive fazer um pull request (<a href="https://github.com/sipmann/PowerShellScripts">aqui</a>) no repositório onde vou armazenar alguns dos meus scripts.</p> +<div class="highlight"><pre><span></span><code><span class="cm">&lt;#</span> +<span class="cm"> Variables definition</span> +<span class="cm">#&gt;</span> +<span class="nv">$MaxSeconds</span> <span class="p">=</span> <span class="n">120</span> <span class="c"># Max seconds behind master allowed</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;&#39;</span> + +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> +<span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s1">&#39;SHOW SLAVE STATUS \G&#39;</span><span class="p">)</span> + +<span class="c">#Debug data</span> +<span class="c">#$data = Get-Content &#39;c:\temp\sampleresult.txt&#39;</span> + +<span class="cm">&lt;# Parse the data #&gt;</span> +<span class="nv">$IORunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_IO_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SQLRunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_SQL_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$LastErrNo</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Last_Errno&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SecondsBh</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Seconds_Behind_Master&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="k">If</span> <span class="p">(</span><span class="nv">$IORunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SQLRunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SecondsBh</span> <span class="o">-gt</span> <span class="nv">$MaxSeconds</span><span class="p">)</span> <span class="p">{</span> + <span class="nv">$MailBody</span> <span class="p">=</span> <span class="s1">&#39;&lt;h1&gt;Problema na replicação&lt;/h1&gt;&lt;br&gt;&#39;</span> + + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; IO Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$IORunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; SQL Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SQLRunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39;Seconds Behind: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SecondsBh</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; Last Err No: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$LastErrNo</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + + <span class="cm">&lt;# Send e-mail, maybe some telegram message here too #&gt;</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Problemas na replicação&#39;</span> <span class="n">-bodyAsHtml</span> <span class="nv">$MailBody</span> <span class="n">-Credential</span> <span class="p">(</span><span class="nb">Get-Credential</span><span class="p">)</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> <span class="k">Else</span> <span class="p">{</span> + <span class="nb">Write-Host</span> <span class="s2">&quot;Up and running&quot;</span> +<span class="p">}</span> +</code></pre></div>Microsoft Against Covid2020-10-03T19:00:00-03:002020-10-03T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-03:/microsoft-against-covid.html<p>Has your job been affected by covid? Well, last week I've posted on <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by …</p><p>Has your job been affected by covid? Well, last week I've posted on <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by covid pandemic. </p> +<p>To see more details about if you were eligible, access <a href="https://docs.microsoft.com/en-us/learn/certifications/skillingoffer">https://docs.microsoft.com/en-us/learn/certifications/skillingoffer</a>.</p>Microsoft Contra Covid2020-10-03T19:00:00-03:002020-10-03T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-03:/pt/microsoft-against-covid.html<p>Você teve seu trabalho afetado pela pandemia do covid? Bom, na última semana eu postei no <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> sobre um Voucher para certificação gratuita que a Microsoft estava distribuindo durante o evento Microsoft Ignite. Depois disto, eu fiquei sabendo que eles também estão entregando grandes discontos para quem teve o seu …</p><p>Você teve seu trabalho afetado pela pandemia do covid? Bom, na última semana eu postei no <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> sobre um Voucher para certificação gratuita que a Microsoft estava distribuindo durante o evento Microsoft Ignite. Depois disto, eu fiquei sabendo que eles também estão entregando grandes discontos para quem teve o seu trabalho afetado pela pandemia do covid. </p> +<p>Para saber se você pode receber este desconto, acesse <a href="https://docs.microsoft.com/en-us/learn/certifications/skillingoffer">https://docs.microsoft.com/en-us/learn/certifications/skillingoffer</a>.</p>The power of PowerShell2020-09-21T19:00:00-03:002020-09-21T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-09-21:/the-power-of-powershell.html<p>As a long time Linux user, I've automated a few things with bash scripts and stayed away from PowerShell... I've moved to a Windows environment a few years ago and still, haven gave a shot to PS. But why not? I've made a few scripts to automate some tasks at …</p><p>As a long time Linux user, I've automated a few things with bash scripts and stayed away from PowerShell... I've moved to a Windows environment a few years ago and still, haven gave a shot to PS. But why not? I've made a few scripts to automate some tasks at a Protheus server.</p> +<p>I found the PS scripts being easy to read and understand. Bellow, we have a script to remove files filtering their extension (or no extension at all like the following script). </p> +<div class="highlight"><pre><span></span><code><span class="nb">Get-ChildItem</span> <span class="s2">&quot;C:\TOTVS\protheus_data\system&quot;</span> <span class="o">-File</span> <span class="n">-Filter</span> <span class="p">*.</span> <span class="p">|</span> <span class="nb">Move-Item</span> <span class="n">-Force</span> <span class="n">-Destination</span> <span class="p">{</span> + <span class="cm">&lt;# Diretory where the files will be moved. You can use Date formats to help name it #&gt;</span> + <span class="cm">&lt;# LastWriteTime proprtie from the current file #&gt;</span> + <span class="nv">$dir</span> <span class="p">=</span> <span class="s2">&quot;C:\bad_files\{0:yyyy\\MM\\dd}&quot;</span> <span class="o">-f</span> <span class="nv">$_</span><span class="p">.</span><span class="n">LastWriteTime</span> + <span class="nv">$null</span> <span class="p">=</span> <span class="n">mkdir</span> <span class="nv">$dir</span> <span class="n">-Force</span> + <span class="s2">&quot;$dir\</span><span class="p">$(</span><span class="nv">$_</span><span class="p">.</span><span class="n">Name</span><span class="p">)</span><span class="s2">&quot;</span> +<span class="p">}</span> +</code></pre></div> + +<p>Have you ever been in the need to remove files based on other file content? Bello a script where I read a file that has the names of files that I want to remove. </p> +<div class="highlight"><pre><span></span><code><span class="k">foreach</span><span class="p">(</span><span class="nv">$line</span> <span class="k">in</span> <span class="nb">Get-Content</span> <span class="p">.\</span><span class="n">Desktop</span><span class="p">\</span><span class="n">bad_files</span><span class="p">.</span><span class="n">txt</span><span class="p">)</span> <span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="nb">Test-Path</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">))</span> <span class="p">{</span> + <span class="nb">Remove-Item</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">)</span> + <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> + <span class="nb">echo </span><span class="nv">$line</span> <span class="p">+</span> <span class="s1">&#39; - File not found&#39;</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>And a bonus script to stop/start services (if you handle some Protheus Server, you know why I do that).</p> +<div class="highlight"><pre><span></span><code><span class="nv">$servicesNames</span> <span class="p">=</span> <span class="s1">&#39;app_main&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker1&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker2&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker3&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker4&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker5&#39;</span> + +<span class="nb">Write-host</span> <span class="s2">&quot;Stoping Services&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Stopping: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nv">$SrvPID</span> <span class="p">=</span> <span class="p">(</span><span class="nb">get-wmiobject</span> <span class="n">win32_service</span> <span class="p">|</span> <span class="nb">where </span><span class="p">{</span> <span class="nv">$_</span><span class="p">.</span><span class="n">name</span> <span class="o">-eq</span> <span class="nv">$srv</span><span class="p">}).</span><span class="n">processID</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PID: &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> + + <span class="cm">&lt;# Force if the proccess is stucked #&gt;</span> + <span class="nb">Stop-Process</span> <span class="nv">$SrvPID</span> <span class="n">-Force</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PDI &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> <span class="p">+</span> <span class="s2">&quot; stopped&quot;</span> +<span class="p">}</span> + + +<span class="nb">Write-host</span> <span class="s2">&quot;Starting Services&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Starting: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nb">Start-Service</span> <span class="nv">$srv</span> +<span class="p">}</span> +</code></pre></div> + +<p>Do you have any automated script? Share with us :)</p>O poder do PowerShell2020-09-21T19:00:00-03:002020-09-21T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-09-21:/pt/the-power-of-powershell.html<p>Como um usuário linux por muito tempo, eu automatizei algumas tarefas com scripts bash e fiquei longe do PowerShell... Voltei a utilizar Windows alguns anos atrás e ainda assim, não dei uma chance ao PS. Mas porque não? Eu fiz alguns scripts para automatizar algumas tarefas em um servidor Protheus …</p><p>Como um usuário linux por muito tempo, eu automatizei algumas tarefas com scripts bash e fiquei longe do PowerShell... Voltei a utilizar Windows alguns anos atrás e ainda assim, não dei uma chance ao PS. Mas porque não? Eu fiz alguns scripts para automatizar algumas tarefas em um servidor Protheus.</p> +<p>Eu acabei achando os scripts PS de fácil leitura e entendimento. Abaixo, nós temos um script para remover arquivos filtrando pela sua extensão (ou sem extensão alguma no caso do script em questão).</p> +<div class="highlight"><pre><span></span><code><span class="nb">Get-ChildItem</span> <span class="s2">&quot;C:\TOTVS\protheus_data\system&quot;</span> <span class="o">-File</span> <span class="n">-Filter</span> <span class="p">*.</span> <span class="p">|</span> <span class="nb">Move-Item</span> <span class="n">-Force</span> <span class="n">-Destination</span> <span class="p">{</span> + <span class="cm">&lt;# Diretório ao qual os arquivos vão ser movidos. Você pode utilizar formatos de data para nomear os diretórios #&gt;</span> + <span class="cm">&lt;# LastWriteTime é a propriedade do arquivo corrent #&gt;</span> + <span class="nv">$dir</span> <span class="p">=</span> <span class="s2">&quot;C:\bad_files\{0:yyyy\\MM\\dd}&quot;</span> <span class="o">-f</span> <span class="nv">$_</span><span class="p">.</span><span class="n">LastWriteTime</span> + <span class="nv">$null</span> <span class="p">=</span> <span class="n">mkdir</span> <span class="nv">$dir</span> <span class="n">-Force</span> + <span class="s2">&quot;$dir\</span><span class="p">$(</span><span class="nv">$_</span><span class="p">.</span><span class="n">Name</span><span class="p">)</span><span class="s2">&quot;</span> +<span class="p">}</span> +</code></pre></div> + +<p>Você já precisou remover arquivos baseado no conteúdo de outro arquivo? Abaixo um script onde eu leio um arquivo que contem os nomes de arquivos que eu desejo remover. </p> +<div class="highlight"><pre><span></span><code><span class="k">foreach</span><span class="p">(</span><span class="nv">$line</span> <span class="k">in</span> <span class="nb">Get-Content</span> <span class="p">.\</span><span class="n">Desktop</span><span class="p">\</span><span class="n">bad_files</span><span class="p">.</span><span class="n">txt</span><span class="p">)</span> <span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="nb">Test-Path</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">))</span> <span class="p">{</span> + <span class="nb">Remove-Item</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">)</span> + <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> + <span class="nb">echo </span><span class="nv">$line</span> <span class="p">+</span> <span class="s1">&#39; - File not found&#39;</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>E um script bonus para parar e iniciar serviços (se você gerencia um servidor Protheus, você sabe o porque eu faço isto).</p> +<div class="highlight"><pre><span></span><code><span class="nv">$servicesNames</span> <span class="p">=</span> <span class="s1">&#39;app_main&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker1&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker2&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker3&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker4&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker5&#39;</span> + +<span class="nb">Write-host</span> <span class="s2">&quot;Parando Serviços&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Parando: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nv">$SrvPID</span> <span class="p">=</span> <span class="p">(</span><span class="nb">get-wmiobject</span> <span class="n">win32_service</span> <span class="p">|</span> <span class="nb">where </span><span class="p">{</span> <span class="nv">$_</span><span class="p">.</span><span class="n">name</span> <span class="o">-eq</span> <span class="nv">$srv</span><span class="p">}).</span><span class="n">processID</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PID: &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> + + <span class="cm">&lt;# Força a parada caso o serviço esteja travado #&gt;</span> + <span class="nb">Stop-Process</span> <span class="nv">$ServicePID</span> <span class="n">-Force</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PDI &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> <span class="p">+</span> <span class="s2">&quot; parado&quot;</span> +<span class="p">}</span> + + +<span class="nb">Write-host</span> <span class="s2">&quot;Inicializando Serviços&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Inicializando: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nb">Start-Service</span> <span class="nv">$srv</span> +<span class="p">}</span> +</code></pre></div> + +<p>Você tem algum script de automação? Compartilhe conosco :)</p>Top Level Statement in C# 92020-07-29T19:00:00-03:002020-07-29T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-29:/top_level_statement_csharp_9.html<p>Hey folks, I'm coming along to tell you a few things about the new feature of C# 9. Every time you want to start a new project, you always have the same Main File, with the same structure. At the next version of C# (version 9), we'll have a new …</p><p>Hey folks, I'm coming along to tell you a few things about the new feature of C# 9. Every time you want to start a new project, you always have the same Main File, with the same structure. At the next version of C# (version 9), we'll have a new feature called <code>Top Level Statement</code>. With that, we'll be able to code our app without any namespace/class/public void static main structure. Take a look at the code below.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="s">&quot;Hello World!&quot;</span><span class="p">);</span> +</code></pre></div> + +<p>It looks pretty simple, but with this, you can play around with your code, and even code a simple/tiny Web API. To start playing with the new features, firstly download the <a href="https://dotnet.microsoft.com/download/dotnet/5.0">.net 5 SDK</a> and change your <code>.csproj</code> file to target the .net 5 and language preview like bellow.</p> +<div class="highlight"><pre><span></span><code><span class="nt">&lt;Project</span> <span class="na">Sdk=</span><span class="s">&quot;Microsoft.NET.Sdk&quot;</span><span class="nt">&gt;</span> + <span class="nt">&lt;PropertyGroup&gt;</span> + <span class="nt">&lt;OutputType&gt;</span>Exe<span class="nt">&lt;/OutputType&gt;</span> + <span class="nt">&lt;TargetFramework&gt;</span>net5.0<span class="nt">&lt;/TargetFramework&gt;</span> + <span class="nt">&lt;LangVersion&gt;</span>preview<span class="nt">&lt;/LangVersion&gt;</span> + <span class="nt">&lt;/PropertyGroup&gt;</span> +<span class="nt">&lt;/Project&gt;</span> +</code></pre></div> + +<p>And you're ready to play with the awesome features available in the preview. Let's code a way to get the image of the day from NASA API and print the Picture of the Day. No awesome code here, it's really a way to show how simple a simple call could be. After here, why not save the image in a file? Maybe send the file over telegram?</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Text.Json</span><span class="p">;</span> + +<span class="kt">var</span> <span class="n">API</span> <span class="p">=</span> <span class="s">&quot;https://api.nasa.gov/planetary/apod?hd=true&amp;api_key=DEMO_KEY&quot;</span><span class="p">;</span> +<span class="kt">var</span> <span class="n">cli</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + +<span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">cli</span><span class="p">.</span><span class="n">GetAsync</span><span class="p">(</span><span class="n">API</span><span class="p">);</span> +<span class="kt">var</span> <span class="n">data</span> <span class="p">=</span> <span class="n">JsonSerializer</span><span class="p">.</span><span class="n">Deserialize</span><span class="p">&lt;</span><span class="n">NasaApi</span><span class="p">&gt;(</span><span class="k">await</span> <span class="n">response</span><span class="p">.</span><span class="n">Content</span><span class="p">.</span><span class="n">ReadAsStringAsync</span><span class="p">());</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">Url</span><span class="p">);</span> +</code></pre></div> + +<p>That's it for today folks. Keep an eye open for the awesome features C# 9 will bring to us, there's plenty more features already available.</p>Top Level Statement no C# 92020-07-29T19:00:00-03:002020-07-29T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-29:/pt/top_level_statement_csharp_9.html<p>Olá pessoal, venho hoje falar sobre uma novidade que estará disponível na versão 9 do C#. Toda vez que você deseja criar um novo projeto, você sempre tem o mesmo arquivo Main, com a mesma estrutura. Na próxima versão do C# (versão 9), nós teremos uma nova funcionalidade chamada <code>Top …</code></p><p>Olá pessoal, venho hoje falar sobre uma novidade que estará disponível na versão 9 do C#. Toda vez que você deseja criar um novo projeto, você sempre tem o mesmo arquivo Main, com a mesma estrutura. Na próxima versão do C# (versão 9), nós teremos uma nova funcionalidade chamada <code>Top Level Statement</code>. Com isto, poderemos programar a nossa aplicação sem toda aquela estrutura de <code>namespace/class/public void static main</code>. Veja o código abaixo.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="s">&quot;Hello World!&quot;</span><span class="p">);</span> +</code></pre></div> + +<p>Parece muito simples, não é? Com isto, você pode brincar com seu código e até mesmo programar uma pequena WEB API. Para começar a brincar com estas novas <em>features</em>, primeiramente faça o download do preview do <a href="https://dotnet.microsoft.com/download/dotnet/5.0">.net 5 SDK</a> e modifique o seu arquivo <code>.csproj</code> para apontar o framework para <code>.net5.0</code> e a versão de preview da linguagem. Abaixo como uma aplicação de console deve ficar.</p> +<div class="highlight"><pre><span></span><code><span class="nt">&lt;Project</span> <span class="na">Sdk=</span><span class="s">&quot;Microsoft.NET.Sdk&quot;</span><span class="nt">&gt;</span> + <span class="nt">&lt;PropertyGroup&gt;</span> + <span class="nt">&lt;OutputType&gt;</span>Exe<span class="nt">&lt;/OutputType&gt;</span> + <span class="nt">&lt;TargetFramework&gt;</span>net5.0<span class="nt">&lt;/TargetFramework&gt;</span> + <span class="nt">&lt;LangVersion&gt;</span>preview<span class="nt">&lt;/LangVersion&gt;</span> + <span class="nt">&lt;/PropertyGroup&gt;</span> +<span class="nt">&lt;/Project&gt;</span> +</code></pre></div> + +<p>E assim você está pronto para brincar com as novas funcionalidades que estão disponíveis na versão preview. Vamos programar uma aplicação simples que faz uma requisição na API da NASA e printe a Imagem do Dia no console. Não é nenhum código mirabolante, é simplesmente para exemplificar o quão simples uma simples chamada de API pode ser. Feito isto, porque não salvar a imagem como um arquivo? Ou então enviar essa imagem via telegram?</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Text.Json</span><span class="p">;</span> + +<span class="kt">var</span> <span class="n">API</span> <span class="p">=</span> <span class="s">&quot;https://api.nasa.gov/planetary/apod?hd=true&amp;api_key=DEMO_KEY&quot;</span><span class="p">;</span> +<span class="kt">var</span> <span class="n">cli</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + +<span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">cli</span><span class="p">.</span><span class="n">GetAsync</span><span class="p">(</span><span class="n">API</span><span class="p">);</span> +<span class="kt">var</span> <span class="n">data</span> <span class="p">=</span> <span class="n">JsonSerializer</span><span class="p">.</span><span class="n">Deserialize</span><span class="p">&lt;</span><span class="n">NasaApi</span><span class="p">&gt;(</span><span class="k">await</span> <span class="n">response</span><span class="p">.</span><span class="n">Content</span><span class="p">.</span><span class="n">ReadAsStringAsync</span><span class="p">());</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">Url</span><span class="p">);</span> +</code></pre></div> + +<p>Por hoje é isso. Fique de olho nas novas features que o C# 9 vai nos trazer. Já temos várias disponíveis hoje para testar, esta é apenas uma delas.</p>Zabbix poller processes more than 75%2020-07-02T19:00:00-03:002020-07-02T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-02:/zabbix-poller-processes-more-than-75.html<p>Hey folks, this is the third post about tweaking the Zabbix configurations. All changes that I've suggested here were based on a Zabbix Server with 50+ hosts. Another thing that can happen to your server, it's the poller get overwhelmed by the amount of servers that need to be polled …</p><p>Hey folks, this is the third post about tweaking the Zabbix configurations. All changes that I've suggested here were based on a Zabbix Server with 50+ hosts. Another thing that can happen to your server, it's the poller get overwhelmed by the amount of servers that need to be polled plus the ones that are not responding. Bellow two images where you can see the log and the graphic where you can see the usage percent. </p> +<p><img alt="Dashboard log about the poller processes" src="/images/zabbix_pooler.png"></p> +<p><img alt="Graph showing the utilization percent of each collector" src="/images/zabbix_pooler_3.png"></p> +<p>To solve, let's go back to the <code>zabbix_server.conf</code> file and find two variables, <code>StartPollers</code> and <code>StartPollersUnreachable</code>. Increase them as needed. There's no magic number, you must see what works for you. But keep in mind that the <code>StartPollersUnreachable</code> is responsible for that host that can't be "reached" (of course) and will hold your poller more time.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPollers</span> +<span class="c1"># Number of pre-forked instances of pollers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollers</span><span class="o">=</span><span class="s">20</span> + +<span class="c1">#...</span> + +<span class="c1">### Option: StartPollersUnreachable</span> +<span class="c1"># Number of pre-forked instances of pollers for unreachable hosts (including IPMI and Java).</span> +<span class="c1"># At least one poller for unreachable hosts must be running if regular, IPMI or Java pollers</span> +<span class="c1"># are started.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollersUnreachable</span><span class="o">=</span><span class="s">5</span> +</code></pre></div> + +<p>After the change, restart the server and wait a few moments and take a look again at your dashboard. Bellow the effect that I've got.</p> +<p><img alt="Graph showing the new utilization percent of the processes after the changes" src="/images/zabbix_pooler_4.png"></p>Zabbix poller processes more than 75%2020-07-02T19:00:00-03:002020-07-02T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-02:/pt/zabbix-poller-processes-more-than-75.html<p>Este é o terceiro post sobre configurações para o Zabbix. Todas as alterações que eu sugiro nestes posts, são baseadas em um servidor com 50+ hosts. Outro problema que pode ocorrer em seu servidor, é o poller de informações ficar sobrecarregado pela quantidade de servidores que ele precisa pegar carga …</p><p>Este é o terceiro post sobre configurações para o Zabbix. Todas as alterações que eu sugiro nestes posts, são baseadas em um servidor com 50+ hosts. Outro problema que pode ocorrer em seu servidor, é o poller de informações ficar sobrecarregado pela quantidade de servidores que ele precisa pegar carga de informações juntamente com os servidores que não respondem a requisição. Abaixo duas imagens onde você pode ver o log e um gráfico onde aparecem os percentuais de uso dos poller. </p> +<p><img alt="Dashboard log sobre o processo do poller" src="/images/zabbix_pooler.png"></p> +<p><img alt="Gráfico mostrando o percentual de utilização de cada coletor" src="/images/zabbix_pooler_3.png"></p> +<p>Para resolver o problema acima, vamos voltar ao arquivo de configuração <code>zabbix_server.conf</code> e localizar duas variáveis, <code>StartPollers</code> e <code>StartPollersUnreachable</code>. Aumente o valor delas conforme necessário. Não existe um número mágico, você deve verificar o que melhor funciona para você. Mas tenha em mente que <code>StartPollersUnreachable</code> é responsável por aqueles hosts que não respondem ou não são localizados e irão segurar a thread do poller por mais tempo, causando uma fila e um maior processamento/tempo de atualização.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPollers</span> +<span class="c1"># Number of pre-forked instances of pollers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollers</span><span class="o">=</span><span class="s">20</span> + +<span class="c1">#...</span> + +<span class="c1">### Option: StartPollersUnreachable</span> +<span class="c1"># Number of pre-forked instances of pollers for unreachable hosts (including IPMI and Java).</span> +<span class="c1"># At least one poller for unreachable hosts must be running if regular, IPMI or Java pollers</span> +<span class="c1"># are started.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollersUnreachable</span><span class="o">=</span><span class="s">5</span> +</code></pre></div> + +<p>Depois da alteração, reinicie o serviço e espere alguns momentos e veja o seu dashboard novamente. Abaixo o efeito que a troca teve em um dos servidores que acompanho.</p> +<p><img alt="Gráfico mostrando os novos percentuais de utilização dos processos após as alterações" src="/images/zabbix_pooler_4.png"></p>Monitoring a Website heath with Azure Functions2020-06-22T19:00:00-03:002020-06-22T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-06-22:/monitoring-website-heath-with-azure-functions.html<p>Sometimes you get your self in need to monitor a website's health or it's content for changes. Of course, there's plenty of options out there, but for the sake of curiosity, let's code our own to see what we can do. First things first. Everything you'll see here, you can …</p><p>Sometimes you get your self in need to monitor a website's health or it's content for changes. Of course, there's plenty of options out there, but for the sake of curiosity, let's code our own to see what we can do. First things first. Everything you'll see here, you can achieve with the <a href="https://azure.microsoft.com/free/">free tier</a> of azure.</p> +<p>The main idea of our app will be to monitor website health (status code). To create a new Azure Function Project, follow the steps below.</p> +<p><img alt="Steps to create a azure function project" src="/images/azure_functions.gif"></p> +<p>After creating the project, you'll have a few files. Open your main file and start coding. The main file will have a function called <code>Run</code> and you can code your request method. I've created an <code>async</code> method to make the request and log the output at the console. The full code you can see below.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Linq</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Threading.Tasks</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs.Host</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Extensions.Logging</span><span class="p">;</span> + +<span class="k">namespace</span> <span class="nn">Sipmann.CheckMySite</span> +<span class="p">{</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">class</span> <span class="nc">HttpCheck</span> + <span class="p">{</span> + + <span class="k">private</span> <span class="k">static</span> <span class="k">async</span> <span class="n">Task</span> <span class="nf">GetTask</span><span class="p">(</span><span class="kt">string</span> <span class="n">url</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="kt">var</span> <span class="n">request</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpRequestMessage</span><span class="p">(</span><span class="n">HttpMethod</span><span class="p">.</span><span class="n">Get</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span> + + <span class="kt">var</span> <span class="n">client</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + <span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">client</span><span class="p">.</span><span class="n">SendAsync</span><span class="p">(</span><span class="n">request</span><span class="p">);</span> + + <span class="k">if</span> <span class="p">(</span><span class="n">response</span><span class="p">.</span><span class="n">IsSuccessStatusCode</span><span class="p">)</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="k">else</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} não esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> + +<span class="na"> [FunctionName(&quot;HttpCheck&quot;)]</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">void</span> <span class="nf">Run</span><span class="p">([</span><span class="n">TimerTrigger</span><span class="p">(</span><span class="s">&quot;0 */5 * * * *&quot;</span><span class="p">)]</span><span class="n">TimerInfo</span> <span class="n">myTimer</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="kt">var</span> <span class="n">urls</span> <span class="p">=</span> <span class="k">new</span><span class="p">[]{</span><span class="s">&quot;https://www.sipmann.com&quot;</span><span class="p">,</span> <span class="s">&quot;https://www.canezecanez.com.br&quot;</span><span class="p">};</span> + + <span class="c1">// Start every request and wait for them all to complete</span> + <span class="n">Task</span><span class="p">.</span><span class="n">WaitAll</span><span class="p">(</span><span class="n">urls</span><span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">url</span> <span class="p">=&gt;</span> <span class="n">GetTask</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">log</span><span class="p">)).</span><span class="n">ToArray</span><span class="p">());</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;Finalizou a fila&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>Now you can enhance the function and maybe send some alerts like a Telegram message when one of your sites went down.</p>Monitorando a disponibilidade de um Website com Azure Functions2020-06-22T19:00:00-03:002020-06-22T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-06-22:/pt/monitoring-website-heath-with-azure-functions.html<p>Algumas vezes você se depara com a necessidade de monitorar a disponibilidade de um website ou mudanças em seu conteúdo. É claro que temos diversas opções disponíveis no mercado, mas para fins de curiosidade, vamos programar o nosso próprio e ver o que podemos fazer. Primeiramente, tudo que você ver …</p><p>Algumas vezes você se depara com a necessidade de monitorar a disponibilidade de um website ou mudanças em seu conteúdo. É claro que temos diversas opções disponíveis no mercado, mas para fins de curiosidade, vamos programar o nosso próprio e ver o que podemos fazer. Primeiramente, tudo que você ver aqui, você pode utilizar o <a href="https://azure.microsoft.com/free/">tier gratuito</a> da Azure.</p> +<p>A ideia principal da nossa aplicação vai ser monitorar a disponibilidade do website (status code). Para criar um projeto de Azure Function, siga os passos abaixo.</p> +<p><img alt="Passos para criar um projeto Azure Functions" src="/images/azure_functions.gif"></p> +<p>Depois de criar o projeto, você vai ter alguns arquivos. Abra o arquivo principal (<code>HttpCheck.cs</code> no meu caso) e começe a programar. O arquivo principal terá uma função chamada <code>Run</code> e você pode progamar nela o seu request. Eu criei um método <code>async</code> para fazer as requisições e printar a saída diretamente no console. O código completo pode ser visto abaixo.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Linq</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Threading.Tasks</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs.Host</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Extensions.Logging</span><span class="p">;</span> + +<span class="k">namespace</span> <span class="nn">Sipmann.CheckMySite</span> +<span class="p">{</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">class</span> <span class="nc">HttpCheck</span> + <span class="p">{</span> + + <span class="k">private</span> <span class="k">static</span> <span class="k">async</span> <span class="n">Task</span> <span class="nf">GetTask</span><span class="p">(</span><span class="kt">string</span> <span class="n">url</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="kt">var</span> <span class="n">request</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpRequestMessage</span><span class="p">(</span><span class="n">HttpMethod</span><span class="p">.</span><span class="n">Get</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span> + + <span class="kt">var</span> <span class="n">client</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + <span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">client</span><span class="p">.</span><span class="n">SendAsync</span><span class="p">(</span><span class="n">request</span><span class="p">);</span> + + <span class="k">if</span> <span class="p">(</span><span class="n">response</span><span class="p">.</span><span class="n">IsSuccessStatusCode</span><span class="p">)</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="k">else</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} não esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> + +<span class="na"> [FunctionName(&quot;HttpCheck&quot;)]</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">void</span> <span class="nf">Run</span><span class="p">([</span><span class="n">TimerTrigger</span><span class="p">(</span><span class="s">&quot;0 */5 * * * *&quot;</span><span class="p">)]</span><span class="n">TimerInfo</span> <span class="n">myTimer</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="c1">// URL a verificar a saúde</span> + <span class="kt">var</span> <span class="n">urls</span> <span class="p">=</span> <span class="k">new</span><span class="p">[]{</span><span class="s">&quot;https://www.sipmann.com&quot;</span><span class="p">,</span> <span class="s">&quot;https://www.canezecanez.com.br&quot;</span><span class="p">};</span> + + <span class="c1">// Starta cada request e aguarda todos de uma vez só</span> + <span class="n">Task</span><span class="p">.</span><span class="n">WaitAll</span><span class="p">(</span><span class="n">urls</span><span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">url</span> <span class="p">=&gt;</span> <span class="n">GetTask</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">log</span><span class="p">)).</span><span class="n">ToArray</span><span class="p">());</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;Finalizou a fila&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>Agora você pode melhorar a função e talvez enviar alguns alertas. Como por exêmplo mensagens no Telegram quando um dos sites ficar off (status code 404).</p>Azure Data Fundamentals certification with 80% discount2020-06-09T12:30:00-03:002020-06-09T12:30:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-06-09:/azure-data-fundamentals-certification-80-discount.html<p>Hey folks, if you want to achieve some certification this year, keep an eye open for vouchers. A few months ago, Oracle released a set of free courses with certifications. Now it's Microsoft time. Microsoft is updating they're certifications and we have a voucher of 80% discount using the coupon …</p><p>Hey folks, if you want to achieve some certification this year, keep an eye open for vouchers. A few months ago, Oracle released a set of free courses with certifications. Now it's Microsoft time. Microsoft is updating they're certifications and we have a voucher of 80% discount using the coupon <strong>DP900Norfolk</strong> at the checkout of the beta certification DP-900. </p> +<p>Be aware that this certification is in beta and the result won't be instantly available as the regular ones. Access the following link and schedule your exam. <a href="https://docs.microsoft.com/pt-br/learn/certifications/exams/dp-900" target="_blank">https://docs.microsoft.com/pt-br/learn/certifications/exams/dp-900</a>.</p> +<p><strong>Update:</strong> There is a 80% voucher also for <a href="https://docs.microsoft.com/en-us/learn/certifications/azure-ai-fundamentals" target="_blank">https://docs.microsoft.com/en-us/learn/certifications/azure-ai-fundamentals</a>. Voucher: <strong>AI900Saratoga</strong></p>Zabbix ICMP pinger processes more than 75%2020-05-25T16:00:00-03:002020-05-25T16:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-05-25:/zabbix-icmp-pinger-processes-more-than-75.html<p>So your monitoring sytems have grown and your zabbix started loggin "Zabbix icmp pinger processes more than 75% busy" at the dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>All you have to do is open your config file (<code>/etc/zabbix/zabbix_server.conf</code>) and find the a tag named <code>StartPingers</code>. It'll be commented by default. Uncomment it …</p><p>So your monitoring sytems have grown and your zabbix started loggin "Zabbix icmp pinger processes more than 75% busy" at the dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>All you have to do is open your config file (<code>/etc/zabbix/zabbix_server.conf</code>) and find the a tag named <code>StartPingers</code>. It'll be commented by default. Uncomment it and set it's value to something like 3 or 4. It should solve your problem.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPingers</span> +<span class="c1"># Number of pre-forked instances of ICMP pingers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="nv">StartPingers</span><span class="o">=</span><span class="m">4</span> +</code></pre></div> + +<h2>How many Pingers do I need?</h2> +<p>Well, there is no exact answer to this. If you set it too high, you'll be wasting resources. The best way to solve, it's increasing them as soon as you notice the percentage growing.</p>Zabbix ICMP pinger processes more than 75%2020-05-25T16:00:00-03:002020-05-25T16:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-05-25:/pt/zabbix-icmp-pinger-processes-more-than-75.html<p>Então o seu systema de monitoramento creasceu e o seu Zabbix começou a printar "<em>Zabbix icmp pinger processes more than 75% busy</em>" no seu dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>Tudo que você tem a fazer é abrir o seu arquivo de configuração (<code>/etc/zabbix/zabbix_server.conf</code>) e localizar a tag chamada <code>StartPingers</code>. Ela deve …</p><p>Então o seu systema de monitoramento creasceu e o seu Zabbix começou a printar "<em>Zabbix icmp pinger processes more than 75% busy</em>" no seu dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>Tudo que você tem a fazer é abrir o seu arquivo de configuração (<code>/etc/zabbix/zabbix_server.conf</code>) e localizar a tag chamada <code>StartPingers</code>. Ela deve estar comentáda por padrão. Descomente a lina e define o seu valor para algo como 3 or 4. Deve resolver seu problema, ao menos até um próximo crescimento do seu monitoramento.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPingers</span> +<span class="c1"># Number of pre-forked instances of ICMP pingers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="nv">StartPingers</span><span class="o">=</span><span class="m">4</span> +</code></pre></div>Zabbix Server Out of Memory2020-02-27T19:00:00-03:002020-02-27T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-02-27:/zabbix-server-out-of-memory-crash.html<p>Do you have a crashing Zabbix Server and looking through the log <code>/var/log/zabbix/zabbix_server.log</code> you see the following out of memory message?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c,line …</code></pre></div><p>Do you have a crashing Zabbix Server and looking through the log <code>/var/log/zabbix/zabbix_server.log</code> you see the following out of memory message?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: please increase CacheSize configuration parameter +</code></pre></div> + +<p>Besides the clear solution to the error, that's a common issue on servers that have a few monitoring items on it (servers, switches, firewalls, databases, etc...). To solve, go to your zabbix_server.conf and look for the CacheSize property and set it to a higher value. Its default should be 8M. At a customer that has somewhere between 4 servers, 7 firewalls/appliances, and a few other things, a 32M did the job, but you can set up to 8G.</p> +<p>See ya folks.</p>Zabbix Server Out of Memory2020-02-27T19:00:00-03:002020-02-27T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-02-27:/pt/zabbix-server-out-of-memory-crash.html<p>Você tem um servidor Zabbix crashando e observando o arquivo de log <code>/var/log/zabbix/zabbix_server.log</code> você localiza a seguinte mensagem referênciando falta de memória?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c …</code></pre></div><p>Você tem um servidor Zabbix crashando e observando o arquivo de log <code>/var/log/zabbix/zabbix_server.log</code> você localiza a seguinte mensagem referênciando falta de memória?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: please increase CacheSize configuration parameter +</code></pre></div> + +<p>Apesar da simples solução para o erro, isso acaba sendo um problema comum em servidores que tem uma certa quantidade de itens sendo monitorados (servidores, switches, firewalls, bancos, etc...). Para resolver o problema, vá até o ser arquivo <code>zabbix_server.conf</code> e procure pela propriedade <code>CacheSize</code> e sete o seu valor para uma quantidade maior. O seu valor default deve ser algo como 8M. Em clientes que tenham algo como 4 servidores, 7 firewalls/appliances, e algumas outras coisas (bancos, apps), 32M deve resolver o problema, mas você pode setar até algo como 8G (ressalto que mais memória nem sempre é melhor).</p> +<p>Até breve.</p>Flutter + firebase auth crashing2019-10-03T19:00:00-03:002019-10-03T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-10-03:/flutter_with_firebase_auth_crashing.html<p>Hey Folks, recently I've started learning <a href="https://flutter.dev/">Flutter</a> and right after a TODO List, I tried a Firebase integration. But as soon as I started setting the dependencies, my app stopped opening... just a crash. After a few logs digging, I've found the following log.</p> +<div class="highlight"><pre><span></span><code>AndroidRuntime: FATAL EXCEPTION: main +AndroidRuntime: Process …</code></pre></div><p>Hey Folks, recently I've started learning <a href="https://flutter.dev/">Flutter</a> and right after a TODO List, I tried a Firebase integration. But as soon as I started setting the dependencies, my app stopped opening... just a crash. After a few logs digging, I've found the following log.</p> +<div class="highlight"><pre><span></span><code>AndroidRuntime: FATAL EXCEPTION: main +AndroidRuntime: Process: com.example.diadocasal, PID: <span class="m">13672</span> +AndroidRuntime: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/util/ArrayMap<span class="p">;</span> +AndroidRuntime: at com.google.android.gms.internal.measurement.zzca.&lt;clinit&gt;<span class="o">(</span>Unknown Source:60<span class="o">)</span> +AndroidRuntime: at com.google.android.gms.internal.measurement.zzcm.zzr<span class="o">(</span>Unknown Source:7<span class="o">)</span> +AndroidRuntime: at com.google.android.gms.measurement.internal.zzfj.&lt;init&gt;<span class="o">(</span>Unknown Source:23<span class="o">)</span> +</code></pre></div> + +<p>Notice the "NoClassDefFound" of an ArrayMap. To solve that I did the following changes to the files:</p> +<div class="highlight"><pre><span></span><code><span class="c1">//build.gradle file</span> + <span class="n">ext</span><span class="p">.</span><span class="na">kotlin_version</span> <span class="o">=</span> <span class="err">&#39;</span><span class="mf">1.3.20</span><span class="err">&#39;</span> +<span class="o">[</span><span class="p">...</span><span class="o">]</span> + <span class="n">dependencies</span> <span class="p">{</span> + <span class="n">classpath</span> <span class="err">&#39;</span><span class="n">com</span><span class="p">.</span><span class="na">android</span><span class="p">.</span><span class="na">tools</span><span class="p">.</span><span class="na">build</span><span class="p">:</span><span class="n">gradle</span><span class="p">:</span><span class="mf">3.3.0</span><span class="err">&#39;</span> <span class="c1">// gradle version</span> +</code></pre></div> + +<div class="highlight"><pre><span></span><code><span class="c1">;gradle.properties file</span> +<span class="na">org.gradle.jvmargs</span><span class="o">=</span><span class="s">-Xmx1536M ;mine have just this line at first</span> +<span class="na">android.useAndroidX</span><span class="o">=</span><span class="s">true ; uses androidX instead of the default support library</span> +<span class="na">android.enableJetifier</span><span class="o">=</span><span class="s">true ; uses jetpack libraries</span> +<span class="na">android.enableR8</span><span class="o">=</span><span class="s">true ; the new code shriker</span> +</code></pre></div> + +<p>After that, voilà, app up and running.</p>Removing a user from SQL Server database who owns a schema2019-09-06T07:00:00-03:002020-10-21T18:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-09-06:/removing-user-from-sql-server-database.html<p>Your customer urge you to drop a user from the MsSQL Server database, but you stuck with the following related error:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>That means that the user owns one or more shcemas of your database. If …</p><p>Your customer urge you to drop a user from the MsSQL Server database, but you stuck with the following related error:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>That means that the user owns one or more shcemas of your database. If you don't have access to the SSMS to see which schema or objects the user owns, the following SQL should do the job.</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">schemas</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">principal_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="p">,</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">xtype</span><span class="w"> </span><span class="n">Tipo</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">sysobjects</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">uid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> +</code></pre></div> + +<p>Once you have the objects/schemas owned by the user, you can change them with the following SQL (schema change sample):</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datareader</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"> </span><span class="c1">-- new owner username</span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datawriter</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>Then you're ready to drop the user <code>DROP USER [username]</code></p> +<h2>How to list all the schemas and it's owners?</h2> +<p>Here's a script to list schemas and it's owners.</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +<span class="k">SELECT</span><span class="w"></span> +<span class="w"> </span><span class="nf">schema_name</span><span class="p">(</span><span class="nf">schema_id</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">schemaname</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="nf">user_name</span><span class="p">(</span><span class="n">schm</span><span class="p">.</span><span class="n">principal_id</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">username</span><span class="p">,</span><span class="w"> </span><span class="o">*</span><span class="w"></span> +<span class="k">FROM</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">schemas</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">schm</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div>Removendo um usuário de uma base SQL Server2019-09-06T07:00:00-03:002020-10-21T18:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-09-06:/pt/removing-user-from-sql-server-database.html<p>O seu cliente lhe pede com urgência para <em>dropar</em> um usuário da sua base MsSQL Server, mas você trava com o seguinte aviso de erro:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>Se você não possui (ou no momento não consegue acesso …</p><p>O seu cliente lhe pede com urgência para <em>dropar</em> um usuário da sua base MsSQL Server, mas você trava com o seguinte aviso de erro:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>Se você não possui (ou no momento não consegue acesso) ao SSMS (SQL Server Management Studio) para verificar quais schemas ou objetos o usuário é "dono", a seguinte SQL vai resolver o problema.</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">schemas</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">principal_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="p">,</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">xtype</span><span class="w"> </span><span class="n">Tipo</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">sysobjects</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">uid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> +</code></pre></div> + +<p>Assim que você tiver os objetos/schemas que o usuário é dono, você pode alterar os mesmos com a seguinte SQL (exemplo de troca de schema):</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datareader</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"> </span><span class="c1">-- username do novo dono</span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datawriter</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>Então, você pode dropar o usuário <code>DROP USER [username]</code>.</p>Limiting Connection Resources on SQL Server2019-08-12T12:00:00-03:002019-08-12T12:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-08-12:/limiting-connection-resources-sql-server.html<p>Have you ever suffered from a slow SQLServer database? Someone love to run that heavy query in the database? Resource Governor to the rescue. You can set a few rules on how users (connections actually) will use the server/database resources based on a few things.</p> +<p>First things first, if …</p><p>Have you ever suffered from a slow SQLServer database? Someone love to run that heavy query in the database? Resource Governor to the rescue. You can set a few rules on how users (connections actually) will use the server/database resources based on a few things.</p> +<p>First things first, if you don't have DAC enabled, enable it now. Dealing with resource governor can lock you out of the database and leave you without action (almost... you can start the server with -c -m -f).</p> +<p>Now to understand how Resource Governor works, we have a few keywords <code>resource pool</code>, <code>workload group</code> e <code>Classifier Function</code>.</p> +<p><img alt="Pool Sample" src="/images/sql-pool.png"></p> +<h2>Resource Pool</h2> +<p>First, we have the Resource Pool, with is the bigger resource group that we have the ability to manage. With it, we can set a few things like: <code>MIN_CPU_PERCENT</code>, <code>MAX_CPU_PERCENT</code>, <code>MIN_MEMORY_PERCENT</code>, <code>MAX_MEMORY_PERCENT</code>, <code>MIN_IOPS_PER_VOLUME</code>, and <code>MAX_IOPS_PER_VOLUME</code>.</p> +<p>Be aware that the <code>MAX_CPU_PERCENT</code> will just "works" when there is another connection with a higher priority, otherwise it will use what is available. Let's create a pool.</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">POOL</span><span class="w"> </span><span class="o">[</span><span class="n">SpreadSheet</span><span class="o">]</span><span class="w"></span> +<span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">MIN_CPU_PERCENT</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">MAX_CPU_PERCENT</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">MIN_MEMORY_PERCENT</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">MAX_MEMORY_PERCENT</span><span class="o">=</span><span class="mi">20</span><span class="w"></span> +<span class="p">);</span><span class="w"></span> +</code></pre></div> + +<p>## Workload Group</p> +<p>Then we have a workload group that "works" inside a pool, so you can have another granularity on how you can split your resources. Again, we have a few options: <code>IMPORTANCE</code>, <code>REQUEST_MAX_CPU_TIME_SEC</code>, <code>REQUEST_MAX_MEMORY_GRANT_PERCENT</code>, <code>GROUP_MAX_REQUESTS</code>.</p> +<p>The <code>IMPORTANCE</code> set guesses what... the importance of that workload inside the pool, you can set LOW, MEDIUM, HIGH. GROUP_MAX_REQUESTS sets how many requests can run at the same time inside that workload (0 will set as NO LIMIT)</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="n">WORKLOAD</span><span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="o">[</span><span class="n">DepartmentA</span><span class="o">]</span><span class="w"> </span> +<span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">GROUP_MAX_REQUESTS</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">IMPORTANCE</span><span class="o">=</span><span class="n">LOW</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">REQUEST_MAX_CPU_TIME_SEC</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="c1">-- Time running/using CPU</span> +<span class="w"> </span><span class="n">REQUEST_MAX_MEMORY_GRANT_PERCENT</span><span class="o">=</span><span class="mi">15</span><span class="w"></span> +<span class="p">)</span><span class="w"> </span><span class="k">USING</span><span class="w"> </span><span class="o">[</span><span class="n">SpreadSheet</span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="c1">-- pool name here</span> +</code></pre></div> + +<h2>Classifier Function</h2> +<p>This is where everything begins... This is the entry point where you should set the group name. It's a function that will run for every new connection so be aware that if your function runs lots of queries or some heavy stuff... that time will be added to the connection handshake. If the function returns NULL or a group name that doesn't exist, the 'default' group will be used... Yes, there is a default workload group where everything runs where there's no classifier.</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="n">fnClassWorkloadGovernor</span><span class="p">()</span><span class="w"> </span> +<span class="k">RETURNS</span><span class="w"> </span><span class="n">SYSNAME</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="n">SCHEMABINDING</span><span class="w"> </span> +<span class="k">AS</span><span class="w"> </span> +<span class="k">BEGIN</span><span class="w"> </span> +<span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="nf">APP_NAME</span><span class="p">()</span><span class="w"> </span><span class="ow">LIKE</span><span class="w"> </span><span class="s1">&#39;%Excel%&#39;</span><span class="w"></span> +<span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="s1">&#39;DepartmentA&#39;</span><span class="w"></span> + +<span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="nf">HOST_NAME</span><span class="p">()</span><span class="w"> </span><span class="ow">LIKE</span><span class="w"> </span><span class="s1">&#39;%THAT_MACHINE_OR_APP_SERVER%&#39;</span><span class="w"></span> +<span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="s1">&#39;LowPriority&#39;</span><span class="w"></span> + +<span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="k">NULL</span><span class="w"></span> +<span class="k">END</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="n">CLASSIFIER_FUNCTION</span><span class="o">=</span><span class="n">dbo</span><span class="p">.</span><span class="n">fnClassWorkloadGovernor</span><span class="p">);</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">RECONFIGURE</span><span class="p">;</span><span class="w"></span> +</code></pre></div> + +<p>There you go... now you have a fully working resource governor, but look out that If you want to delete that classifier function, first you have to remove it from the resource governor (look the SCHEMABINDING at the create up there).</p> +<p>To disable Resource Governor</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="n">CLASSIFIER_FUNCTION</span><span class="o">=</span><span class="k">null</span><span class="p">)</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">RECONFIGURE</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="n">DISABLE</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div>Using git hooks to easy your life2019-07-30T20:00:00-03:002019-07-30T20:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-07-30:/using_git_hooks_easy_your_life.html<p>Hey folks, it's been a time since my last post. In the meantime, I moved to another state, changed job, and started learning new kinds of stuff. Today I would like to share one thing that I usually do with my small git projects. Git has many cool features, git …</p><p>Hey folks, it's been a time since my last post. In the meantime, I moved to another state, changed job, and started learning new kinds of stuff. Today I would like to share one thing that I usually do with my small git projects. Git has many cool features, git hooks were one of them. I'll talk about the pre-commit hook today.</p> +<p>Let's say that, for some reason, you don't have a CI tool/server running after every commit and you want to enforce that every developer runs the tests before every commit? Git pre-commit to the rescue. You can code the hooks with shell, ruby, python, and I could be wrong, but even PHP would work. pre-commit is a client-side hook (we have server side too) and he's located inside the <cite>.git/hooks</cite> folder. Let's jump to the code... Create a file called 'pre-commit' inside that folder with the following code.</p> +<div class="highlight"><pre><span></span><span class="ch">#!/bin/bash</span> +npm <span class="nb">test</span> <span class="c1"># assuming you&#39;re using it inside a nodeJS project</span> +</pre></div> +<p>Don't forget to make the script executable!! Now break your test and try to commit. That's easy but can save you from breaking the tests at the main CI/Travis/Codeship/etc and being notified by email :). Why not even validate the lint of your project or check if the coverage doesn't fall? Does your team/company have a patter for commit messages? No problem, there is a hook called <cite>commit-msg</cite> that you can use to validate your message.</p> +Microservices with NodeJS, Express.js and RabbitMQ Part 22018-04-13T13:00:00-03:002018-04-13T13:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-04-13:/microservices_nodejs_express_rabbitmq_part_2.html<p>If you haven't read the <a class="reference external" href="https://www.sipmann.com/microservices_nodejs_express_rabbitmq_part_1-en.html">part 1</a> go ahead and read it... It can be useful :). Or if for some reason you want to start now, you can grab the project where we stopped <a class="reference external" href="https://github.com/sipmann/imagecompacter/releases/tag/v1">here</a> and get along. On this part, we'll implement the RabbitMQ queue and see how we …</p><p>If you haven't read the <a class="reference external" href="https://www.sipmann.com/microservices_nodejs_express_rabbitmq_part_1-en.html">part 1</a> go ahead and read it... It can be useful :). Or if for some reason you want to start now, you can grab the project where we stopped <a class="reference external" href="https://github.com/sipmann/imagecompacter/releases/tag/v1">here</a> and get along. On this part, we'll implement the RabbitMQ queue and see how we can get the best of our app and server with that.</p> +<p>Before we began coding, let's understand why we are going to use RabbitMQ if what we have now works? If you check again, you'll see how long it takes to answer the request with the optimized image. It takes a few seconds, so imagine an online service with thousands of request to optimize images (like <a class="reference external" href="https://tinypng.com/">TinyPNG</a>) how long is it gonna take to answer every request? How much of your server is it gonna take? With only one service running, probably the server will crash.</p> +<p>With a queue, we can schedule the requests so we can use the amount of memory and processor that our server has, without taking more than we can. It's better to take a few seconds to answer the request then throw some error to the user. Want more? With RabbitMQ we can see how the queue is doing and we can add more consumers (workers) to it and get things done quicker and distribute the job.</p> +<p>First of all, we need an up and running Rabbit server, for the sake of simplicity, I'll use a Docker container with it inside.</p> +<div class="highlight"><pre><span></span>docker run -d --name rabbit -p <span class="m">5672</span>:5672 -p <span class="m">8080</span>:15672 rabbitmq:3-management +</pre></div> +<p>You can see that we're running the rabbitmq:3-management image, which provides us a web interface to see how things are going. After that, if you look at our code you'll see that all the job is made at the '/upload' route, and that's what we'll change.</p> +<p>First, we need to understand what we need from RabbitMQ. We need something that, we send an image to a queue and get an optimized image back from that. There is a name for that, is RPC (remote procedure call) and there are two ways of doing this with rabbit. Both the ways you can see on their tutorial page. We'll use the approach that uses a global channel whose id is randomly generated (you'll use the name 'amq.rabbitmq.reply-to' but the rabbit will do the job).</p> +<p>Let's start importing the library, defining a few variables and defining a init function that will establish a connection with the rabbit server and create our RPC queue. The RPC queue it's where we'll receive the answer from the consumer (our worker).</p> +<div class="highlight"><pre><span></span><span class="c1">//import the library</span> +<span class="kr">const</span> <span class="nx">amqplib</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;amqplib&#39;</span><span class="p">);</span> + +<span class="c1">//queue channel</span> +<span class="kd">let</span> <span class="nx">channel</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span> +<span class="c1">//queue name</span> +<span class="kr">const</span> <span class="nx">QUEUE</span> <span class="o">=</span> <span class="s1">&#39;optimizeimg&#39;</span><span class="p">;</span> + +<span class="c1">//...</span> + +<span class="kd">function</span> <span class="nx">init</span><span class="p">()</span> <span class="p">{</span> + <span class="k">return</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;amqplib&#39;</span><span class="p">).</span><span class="nx">connect</span><span class="p">(</span><span class="s1">&#39;amqp://localhost&#39;</span><span class="p">)</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">conn</span> <span class="p">=&gt;</span> <span class="nx">conn</span><span class="p">.</span><span class="nx">createChannel</span><span class="p">())</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">ch</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">channel</span> <span class="o">=</span> <span class="nx">ch</span><span class="p">;</span> + + <span class="c1">//this queue is a &quot;Direct reply-to&quot; read more at the docs</span> + <span class="c1">//When some msg comes in, we &quot;emit&quot; a message to the proper &quot;correlationId&quot; listener</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">consume</span><span class="p">(</span><span class="s1">&#39;amq.rabbitmq.reply-to&#39;</span><span class="p">,</span> <span class="nx">msg</span> <span class="p">=&gt;</span> <span class="nx">eventEmitter</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="nx">msg</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">correlationId</span><span class="p">,</span> <span class="nx">msg</span><span class="p">.</span><span class="nx">content</span><span class="p">),</span> <span class="p">{</span><span class="nx">noAck</span><span class="o">:</span> <span class="kc">true</span><span class="p">});</span> + <span class="p">});</span> +<span class="p">}</span> + +<span class="c1">//Random id generator</span> +<span class="kd">function</span> <span class="nx">randomid</span><span class="p">()</span> <span class="p">{</span> + <span class="k">return</span> <span class="k">new</span> <span class="nb">Date</span><span class="p">().</span><span class="nx">getTime</span><span class="p">().</span><span class="nx">toString</span><span class="p">()</span> <span class="o">+</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">().</span><span class="nx">toString</span><span class="p">()</span> <span class="o">+</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">().</span><span class="nx">toString</span><span class="p">();</span> +<span class="p">}</span> + +<span class="nx">app</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span><span class="s1">&#39;/upload&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="kd">let</span> <span class="nx">img</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">files</span><span class="p">.</span><span class="nx">image</span><span class="p">;</span> + + <span class="kd">let</span> <span class="nx">id</span> <span class="o">=</span> <span class="nx">randomid</span><span class="p">();</span> + + <span class="c1">//Event listener that will fire when the proper randomid is provided</span> + <span class="nx">eventEmitter</span><span class="p">.</span><span class="nx">once</span><span class="p">(</span><span class="nx">id</span><span class="p">,</span> <span class="nx">msg</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">write</span><span class="p">(</span><span class="nx">msg</span><span class="p">,</span> <span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">end</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="p">});</span> + + <span class="c1">//Checks if the queue exists, and create it if needed.</span> + <span class="nx">channel</span><span class="p">.</span><span class="nx">assertQueue</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">)</span> + <span class="c1">//Sent the buffered img to the queue with the ID and the responseQueue</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="nx">channel</span><span class="p">.</span><span class="nx">sendToQueue</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">,</span> <span class="nx">img</span><span class="p">.</span><span class="nx">data</span><span class="p">,</span> <span class="p">{</span><span class="nx">correlationId</span><span class="o">:</span><span class="nx">id</span><span class="p">,</span> <span class="nx">replyTo</span><span class="o">:</span> <span class="s1">&#39;amq.rabbitmq.reply-to&#39;</span><span class="p">}));</span> + +<span class="p">});</span> + +<span class="c1">//Finally start the app with the given port number</span> +<span class="c1">//now we initialize the rabbitmq connection before start the server</span> +<span class="nx">init</span><span class="p">()</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="nx">app</span><span class="p">.</span><span class="nx">listen</span><span class="p">(</span><span class="mi">4000</span><span class="p">,</span> <span class="p">()</span> <span class="p">=&gt;</span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;Example app listening on port 4000!&#39;</span><span class="p">)))</span> + <span class="p">.</span><span class="k">catch</span><span class="p">(</span><span class="nx">err</span><span class="p">=&gt;</span><span class="nx">console</span><span class="p">.</span><span class="nx">error</span><span class="p">(</span><span class="nx">err</span><span class="p">));</span> +</pre></div> +<p>Ok, now we have our server code rewritten so let's see our worker code. Create a file named 'worker.js' and let's see how it's gonna be. It's really simple. You initialize a connection with RabbitMQ too, create a channel, check if the queue exists and start watching for incoming messages. When an image arrives, we do the job with it and send back to the &quot;replyTo&quot; queue the optimized image for the proper sender (correlationId). In the end, we do an acknowledge of the message so it get's out from the queue.</p> +<div class="highlight"><pre><span></span><span class="kr">const</span> <span class="nx">imagemin</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin&#39;</span><span class="p">);</span> +<span class="kr">const</span> <span class="nx">imageminPngquant</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin-pngquant&#39;</span><span class="p">);</span> + +<span class="kd">let</span> <span class="nx">channel</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span> +<span class="kr">const</span> <span class="nx">QUEUE</span> <span class="o">=</span> <span class="s1">&#39;imgqueue&#39;</span><span class="p">;</span> + +<span class="nx">require</span><span class="p">(</span><span class="s1">&#39;amqplib&#39;</span><span class="p">).</span><span class="nx">connect</span><span class="p">(</span><span class="s1">&#39;amqp://localhost&#39;</span><span class="p">)</span> +<span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">conn</span> <span class="p">=&gt;</span><span class="nx">conn</span><span class="p">.</span><span class="nx">createChannel</span><span class="p">())</span> +<span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">ch</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">assertQueue</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">)</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="c1">//Watch incomming messages</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">consume</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">,</span> <span class="nx">msg</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">imagemin</span><span class="p">.</span><span class="nx">buffer</span><span class="p">(</span><span class="nx">msg</span><span class="p">.</span><span class="nx">content</span><span class="p">,</span> <span class="p">{</span> + <span class="nx">plugins</span><span class="o">:</span> <span class="p">[</span><span class="nx">imageminPngquant</span><span class="p">()]</span> + <span class="p">})</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">out</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="c1">//Send back to the sender (replyTo) queue and give the correlationId back</span> + <span class="c1">//so we can emit the event.</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">sendToQueue</span><span class="p">(</span><span class="nx">msg</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">replyTo</span><span class="p">,</span> <span class="nx">out</span><span class="p">,</span> <span class="p">{</span> + <span class="nx">correlationId</span><span class="o">:</span> <span class="nx">msg</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">correlationId</span> + <span class="p">});</span> + + <span class="c1">//Acknowledge the job done with the message.</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">ack</span><span class="p">(</span><span class="nx">msg</span><span class="p">);</span> + <span class="p">});</span> + <span class="p">});</span> + <span class="p">});</span> +<span class="p">});</span> +</pre></div> +<p>The key points here are. Open just one connection to the hole server. You CAN create one channel for every request that you receive, but it can take some time if you have a really big cluster of RabbitMQ. It was a quick tutorial, but I hope that it was able to clear a few questions that you might have when working with rabbit and express.</p> +Microservices with NodeJS, Express.js and RabbitMQ Part 12018-04-04T11:25:00-03:002018-04-04T11:25:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-04-04:/microservices_nodejs_express_rabbitmq_part_1.html<p>This is the first part of a microservices development series. The service will consist of the bellow architecture, where we will expose an image optimizer service that will forward the request to a <a class="reference external" href="https://www.rabbitmq.com/">RabbitMQ</a> queue and answer with the bytecode of the optimized image. It shouldn't be a long series …</p><p>This is the first part of a microservices development series. The service will consist of the bellow architecture, where we will expose an image optimizer service that will forward the request to a <a class="reference external" href="https://www.rabbitmq.com/">RabbitMQ</a> queue and answer with the bytecode of the optimized image. It shouldn't be a long series so let's see what we can do.</p> +<img alt="Service architecture" src="/images/microservices_rabit_pt1.png" /> +<p>Let's get our environment working. First, we'll need to install the libraries that we'll use.</p> +<p>Create a dir and initialize the nodejs application inside it (<cite>npm init</cite>) and then let's install the deps.</p> +<ul class="simple"> +<li>amqplib - AMQP lib to interact with rabbitmq</li> +<li>express - Do our basic rest API</li> +<li>express-fileupload - easy file upload parser</li> +<li>imagemin and imagemin-pngquant - our image compacter</li> +</ul> +<div class="highlight"><pre><span></span>npm install --save express amqplib express-fileupload imagemin imagemin-pngquant +</pre></div> +<p>Now let's write the entry points for our service, we'll have two basic entry points. The path <cite>/</cite> that will have a welcome message, the second path will be <cite>/upload</cite> and this is the one that will handle the image and produce a job for our workers.</p> +<div class="highlight"><pre><span></span><span class="kr">const</span> <span class="nx">express</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;express&#39;</span><span class="p">);</span> +<span class="kr">const</span> <span class="nx">fileUpload</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;express-fileupload&#39;</span><span class="p">);</span> + +<span class="c1">//Instantiate the app and set the fileupload parser to manage files</span> +<span class="kr">const</span> <span class="nx">app</span> <span class="o">=</span> <span class="nx">express</span><span class="p">();</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">use</span><span class="p">(</span><span class="nx">fileUpload</span><span class="p">());</span> + +<span class="c1">//Our index entry point</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="nx">res</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="s1">&#39;Hello From ImageCompacter service&#39;</span><span class="p">));</span> + +<span class="c1">//The path that will handle the image file and throw them to the queue</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span><span class="s1">&#39;/upload&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="c1">//With express-fileupload we can grab the files like this</span> + <span class="kd">let</span> <span class="nx">img</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">files</span><span class="p">.</span><span class="nx">image</span><span class="p">;</span> <span class="c1">//&quot;image&quot; is the name of the input</span> + + <span class="nx">res</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="s1">&#39;Not ready yet&#39;</span><span class="p">);</span> +<span class="p">});</span> + +<span class="c1">//Finally start the app with the given port number</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">listen</span><span class="p">(</span><span class="mi">4000</span><span class="p">,</span> <span class="p">()</span> <span class="p">=&gt;</span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;Example app listening on port 4000!&#39;</span><span class="p">));</span> +</pre></div> +<p>Let's check if it works, run the service with node.</p> +<div class="highlight"><pre><span></span>node index.js +Example app listening on port <span class="m">4000</span>! +</pre></div> +<p>Open the browser and check if it prints our hello message when accessing <cite>localhost:4000</cite>. Works? Greate. Now let's work with the image and see how we do it. To optimize our image, we'll use the library imagemin and <a class="reference external" href="https://www.npmjs.com/package/imagemin-pngquant">imagemin-pngquant</a>, it will be that simple for now, we'll work with rabbitmq latter.</p> +<div class="highlight"><pre><span></span><span class="kr">const</span> <span class="nx">imagemin</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin&#39;</span><span class="p">);</span> +<span class="kr">const</span> <span class="nx">imageminPngquant</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin-pngquant&#39;</span><span class="p">);</span> +<span class="c1">//...</span> + +<span class="c1">//The path that will handle the image file and throw them to the queue</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span><span class="s1">&#39;/upload&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="kd">let</span> <span class="nx">img</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">files</span><span class="p">.</span><span class="nx">image</span><span class="p">;</span> <span class="c1">//&quot;image&quot; is the name of the input</span> + + <span class="nx">imagemin</span><span class="p">.</span><span class="nx">buffer</span><span class="p">(</span><span class="nx">img</span><span class="p">.</span><span class="nx">data</span><span class="p">,</span> <span class="p">{</span> + <span class="nx">plugins</span><span class="o">:</span> <span class="p">[</span><span class="nx">imageminPngquant</span><span class="p">()]</span> + <span class="p">})</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">out</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">write</span><span class="p">(</span><span class="nx">out</span><span class="p">,</span><span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">end</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="p">});</span> +<span class="p">});</span> + + <span class="c1">//...</span> +</pre></div> +<p>Use <a class="reference external" href="https://www.getpostman.com/">Postman</a> to test the request. To see if it will work, make a request to <cite>http://localhost:4000/upload</cite> with a formdata with a file. Select the &quot;send and Download&quot; instead of &quot;Send&quot; and you should have an image after that. Bellow an image of how your postman should be.</p> +<img alt="Postman" src="/images/microservice_postman.png" /> +<p>That's it for today, next week we'll change our code to use RabbitMQ.</p> +Connecting to a database through SSH2018-03-29T10:03:00-03:002018-03-29T10:03:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-29:/connecting_to_database_through_ssh.html<p>If someday, for some reason, you need to establish a connection with a database which is behind a firewall and you only have SSH access on that server (and you don't want to use a CLI) you can do an SSH tunnel. It's pretty simple, bellow has a sample of …</p><p>If someday, for some reason, you need to establish a connection with a database which is behind a firewall and you only have SSH access on that server (and you don't want to use a CLI) you can do an SSH tunnel. It's pretty simple, bellow has a sample of how to allow connections to a remote Firebird database.</p> +<div class="highlight"><pre><span></span>ssh -L <span class="m">3051</span>:192.168.1.9:3050 username@192.168.1.9 +</pre></div> +<p>The <cite>-L</cite> parameter tells to SSH do a local port forwarding on local port <cite>3051</cite> to remote port <cite>3050</cite>. You can use it to a connection with many services, not just databases.</p> +<p>You can do the reverse kind of tunnel, forward connections from the host to your local machine, you just have to change the parameter form &quot;-L&quot; to &quot;-R&quot; and the port order is inverted, first come the port where the server will listen and after your localhost port. This remote port forwarding must be enabled on the server. Look for <cite>GatewayPorts</cite> at the ssh config file.</p> +<div class="highlight"><pre><span></span>ssh -R <span class="m">3050</span>:localhost:3050 username@192.168.1.9 +</pre></div> +<p>Why whould you need something like that?? Let's say you want to share a localhost site/database with a friend, but your internet connection don't allow you to expose any port but you have access to a remote server witch can do that. Problem solved ;).</p> +Now posting on Grepora2018-03-24T00:40:00-03:002018-03-24T00:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-24:/now_posting_on_grepora.html<p>A few weeks ago I started posting at <a class="reference external" href="https://grepora.com/blog/">Grepora</a> blog. If you like or are looking for some Oracle related stuff, Grepora it's a good place to go and spend a time reading :). From time to time I'll be posting there, it doesn't mean that this blog will be closed …</p><p>A few weeks ago I started posting at <a class="reference external" href="https://grepora.com/blog/">Grepora</a> blog. If you like or are looking for some Oracle related stuff, Grepora it's a good place to go and spend a time reading :). From time to time I'll be posting there, it doesn't mean that this blog will be closed or anything like that, but probably this one will be more focused on Front-end stuff, a few tricks with linux and a lil less with Java.</p> +Scaffolding a React app with Parcel and Yeoman2018-03-17T13:00:00-03:002018-03-17T13:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-17:/scaffolding_react_app_with_parcel_yeoman.html<p>Since <a class="reference external" href="https://parceljs.org/">Parcel JS</a> arrived, I've been using it a lot as an awesome alternative for WebPack. Webpack isn't bad but IMO it's too complex for the job and parcel do the same (at least the basic) with almost zero configuration. But if you need to create many apps (like a …</p><p>Since <a class="reference external" href="https://parceljs.org/">Parcel JS</a> arrived, I've been using it a lot as an awesome alternative for WebPack. Webpack isn't bad but IMO it's too complex for the job and parcel do the same (at least the basic) with almost zero configuration. But if you need to create many apps (like a react app) over and over again, it get's a lil boring following the basic steps.</p> +<div class="highlight"><pre><span></span>npm init -y +npm install --save react +npm install --save react-dom +npm install --save-dev parcel-bundler +npm install --save-dev babel-preset-env +npm install --save-dev babel-preset-react + +<span class="c1">#create .babelrc file</span> +<span class="c1">#create html, css, jsx files</span> + +parcel index.html +</pre></div> +<p>It's not a hard job, a simple shell script do the job, but what if you need some IFs when creating the app, or even change a few things at the <cite>package.json</cite>? A shell script still does the job, but come on... There is a better way. <a class="reference external" href="http://yeoman.io/">Yeoman</a> is here for you. I've already <a class="reference external" href="https://www.sipmann.com/desenvolvendo-app-firefoxos-pt.html">talked about it</a> on another post (Portuguese post).</p> +<p>Straight to the point, I've released a Yeoman generator to get the things a lil quicker. The name is <a class="reference external" href="https://www.npmjs.com/package/generator-parcel-react">generator-parcel-react</a> and it still lacks a few things that I will deal with soon. It's pretty simple to use it.</p> +<div class="highlight"><pre><span></span><span class="c1">#First time only</span> +npm install -g yo +npm install -g generator-parcel-react + +<span class="c1">#every time you create a new app</span> +yo parcel-react +</pre></div> +<p>And that's it. Right now you can scaffold and app with React, SASS and React Router. Hope you like it and feel free to ask new features.</p> +Could not open connection with MySQL and Hibernate2018-03-09T12:35:00-03:002018-03-09T12:35:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-09:/cloud-not-open-connection-java-mysql-hibernate.html<p>Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some &quot;Could not open connection&quot; at my …</p><p>Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some &quot;Could not open connection&quot; at my face, but why? I've tried to connect to it manually and got the same problem.</p> +<p>After some research, I found that the true error should be java.sql.SQLException: null, message from server: &quot;Host '172.17.0.4' is not allowed to connect to this MySQL server&quot; but it wasn't showing to me...</p> +<p>After all, be aware that with the docker image MySQL:5.7.21 (latest version right now) the root user isn't allowed to remote connect to the database (it's alright, security reasons) and if you still want to do remote connections to it with root there are a few things you can do.</p> +<ol class="arabic simple"> +<li>Create a user or allow root to access from other IPs.</li> +</ol> +<div class="highlight"><pre><span></span><span class="o">#</span><span class="k">No</span> <span class="k">access</span> <span class="k">to</span> <span class="k">user</span> <span class="n">root</span> <span class="k">on</span> <span class="k">any</span> <span class="n">other</span> <span class="n">IP</span> +<span class="k">SELECT</span> <span class="k">User</span><span class="p">,</span> <span class="k">Host</span> <span class="k">FROM</span> <span class="n">mysql</span><span class="p">.</span><span class="k">user</span><span class="p">;</span> +<span class="o">+</span><span class="c1">---------------+-----------+</span> +<span class="o">|</span> <span class="k">User</span> <span class="o">|</span> <span class="k">Host</span> <span class="o">|</span> +<span class="o">+</span><span class="c1">---------------+-----------+</span> +<span class="o">|</span> <span class="n">healthchecker</span> <span class="o">|</span> <span class="n">localhost</span> <span class="o">|</span> +<span class="o">|</span> <span class="n">root</span> <span class="o">|</span> <span class="n">localhost</span> <span class="o">|</span> +<span class="o">+</span><span class="c1">---------------+-----------+</span> +<span class="mi">2</span> <span class="k">rows</span> <span class="k">in</span> <span class="k">set</span> <span class="p">(</span><span class="mi">0</span><span class="p">.</span><span class="mi">01</span> <span class="n">sec</span><span class="p">)</span> + +<span class="k">CREATE</span> <span class="k">USER</span> <span class="s1">&#39;newuser&#39;</span><span class="o">@</span><span class="s1">&#39;%&#39;</span> <span class="n">IDENTIFIED</span> <span class="k">BY</span> <span class="s1">&#39;password&#39;</span><span class="p">;</span> <span class="o">#%</span> <span class="n">mean</span> <span class="k">any</span> <span class="n">IP</span> +<span class="k">GRANT</span> <span class="k">ALL</span> <span class="k">PRIVILEGES</span> <span class="k">ON</span> <span class="o">*</span><span class="p">.</span><span class="o">*</span> <span class="k">TO</span> <span class="s1">&#39;newuser&#39;</span><span class="o">@</span><span class="s1">&#39;%&#39;</span><span class="p">;</span> <span class="o">#*</span><span class="p">.</span><span class="o">*</span> <span class="n">mean</span> <span class="k">database</span><span class="p">.</span><span class="k">table</span> <span class="p">;)</span> +</pre></div> +<ol class="arabic simple" start="2"> +<li>Use MariaDB instead, witch come (at least on the version 10.2.13) with root allowed to do remote connections and will work like MySQL :)</li> +</ol> +<p>I changed to <a class="reference external" href="https://mariadb.org/">MariaDB</a> as it work without creating user or any changes on the Java code or the <cite>docker run command</cite>.</p> +Solving java.net.SocketException: Protocol family unavailable on a Java + Docker + WildFly2018-03-04T17:40:00-03:002018-03-04T17:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-04:/socketException-protocol-family-unavailable-java-docker-wildfly.html<p>On the last days I've been playing with <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> and I decided to deploy a simple app with Docker. Should work fine, at least that was what I thought. Built a container with the following Dockerfile and instead of a working web app, all that I got was the …</p><p>On the last days I've been playing with <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> and I decided to deploy a simple app with Docker. Should work fine, at least that was what I thought. Built a container with the following Dockerfile and instead of a working web app, all that I got was the error <cite>java.net.SocketException: Protocol family unavailable</cite>.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">CMD</span> <span class="p">[</span><span class="s2">&quot;java&quot;</span><span class="p">,</span><span class="s2">&quot;-jar&quot;</span><span class="p">,</span><span class="s2">&quot;/opt/issues.jar&quot;</span><span class="p">]</span> +</pre></div> +<p>For some reason, WildFly and Java decided to use the IPv6 network interface from Docker instead the v4, so all you have to do is tell Java to prefer IPv4 instead with the following configuration option in your pom.xml file inside your WildFly plugin.</p> +<div class="highlight"><pre><span></span><span class="nt">&lt;plugin&gt;</span> + <span class="nt">&lt;groupId&gt;</span>org.wildfly.swarm<span class="nt">&lt;/groupId&gt;</span> + <span class="nt">&lt;artifactId&gt;</span>wildfly-swarm-plugin<span class="nt">&lt;/artifactId&gt;</span> + <span class="nt">&lt;version&gt;</span>2018.2.0<span class="nt">&lt;/version&gt;</span> + + <span class="c">&lt;!-- ADD THIS --&gt;</span> + <span class="nt">&lt;configuration&gt;</span> + <span class="nt">&lt;mainClass&gt;</span>org.wildfly.swarm.examples.netflix.ribbon.frontend.Main<span class="nt">&lt;/mainClass&gt;</span> + <span class="nt">&lt;properties&gt;</span> + <span class="nt">&lt;java.net.preferIPv4Stack&gt;</span>true<span class="nt">&lt;/java.net.preferIPv4Stack&gt;</span> + <span class="nt">&lt;/properties&gt;</span> + <span class="nt">&lt;/configuration&gt;</span> +</pre></div> +<p>Another way to solve is adding the same properties to the run command at the Dockerfile, so you choose where you'll add it. Bellow the Dockerfile solution.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> +<span class="k">ENV</span> <span class="nv">JAVA_OPTS</span><span class="o">=</span><span class="s2">&quot;-Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true&quot;</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">ENTRYPOINT</span> <span class="nb">exec</span> java <span class="nv">$JAVA_OPTS</span> -jar /opt/issues.jar +</pre></div> +Resolvendo java.net.SocketException: Protocol family unavailable em Java + Docker + WildFly2018-03-04T17:40:00-03:002018-03-04T17:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-04:/pt/socketException-protocol-family-unavailable-java-docker-wildfly.html<p>Nos últimos dias eu estou brincando com o <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> e decidi fazer o deploy de uma aplicação simples com Docker. Deveria funcionar bem, ao menos é o que pensava. Construí um container com o seguinte Dockerfile e ao invés de obter uma aplicação web, tudo que eu obtive foi …</p><p>Nos últimos dias eu estou brincando com o <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> e decidi fazer o deploy de uma aplicação simples com Docker. Deveria funcionar bem, ao menos é o que pensava. Construí um container com o seguinte Dockerfile e ao invés de obter uma aplicação web, tudo que eu obtive foi o erro <cite>java.net.SocketException: Protocol family unavailable</cite>.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">CMD</span> <span class="p">[</span><span class="s2">&quot;java&quot;</span><span class="p">,</span><span class="s2">&quot;-jar&quot;</span><span class="p">,</span><span class="s2">&quot;/opt/issues.jar&quot;</span><span class="p">]</span> +</pre></div> +<p>Por alguma razão, WildFly e Java, ambos decidiram utilizar um protocolo IPv6 na interface de rede no Docker invés da v4, então tudo que você tem que fazer é falar ao Java que deve dar preferência em utilizar o IPv4 com a seguinte configuração no seu arquivo pom.xml dentro da tag do plugin WildFly.</p> +<div class="highlight"><pre><span></span><span class="nt">&lt;plugin&gt;</span> + <span class="nt">&lt;groupId&gt;</span>org.wildfly.swarm<span class="nt">&lt;/groupId&gt;</span> + <span class="nt">&lt;artifactId&gt;</span>wildfly-swarm-plugin<span class="nt">&lt;/artifactId&gt;</span> + <span class="nt">&lt;version&gt;</span>2018.2.0<span class="nt">&lt;/version&gt;</span> + + <span class="c">&lt;!-- ADICIONE ISTO --&gt;</span> + <span class="nt">&lt;configuration&gt;</span> + <span class="nt">&lt;mainClass&gt;</span>org.wildfly.swarm.examples.netflix.ribbon.frontend.Main<span class="nt">&lt;/mainClass&gt;</span> + <span class="nt">&lt;properties&gt;</span> + <span class="nt">&lt;java.net.preferIPv4Stack&gt;</span>true<span class="nt">&lt;/java.net.preferIPv4Stack&gt;</span> + <span class="nt">&lt;/properties&gt;</span> + <span class="nt">&lt;/configuration&gt;</span> +</pre></div> +<p>Outra forma de solucionar o problema, é adicionando a mesma propriedade ao comando de run no seu Dockerfile. Então, fica a seu critério onde adicionar. Abaixo a solução utilizando o Dockerfile.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> +<span class="k">ENV</span> <span class="nv">JAVA_OPTS</span><span class="o">=</span><span class="s2">&quot;-Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true&quot;</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">ENTRYPOINT</span> <span class="nb">exec</span> java <span class="nv">$JAVA_OPTS</span> -jar /opt/issues.jar +</pre></div> +Change display settings on linux with Disper2018-02-27T12:40:00-03:002018-02-27T12:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-02-27:/linux-external-display-with-disper.html<p>From time to time, I change the Linux distro on my laptop or just do a fresh install on it. And once in a while, have random problems with external displays. It can be something really &quot;simple&quot; like don't detecting the external monitor or something crazy like the image below …</p><p>From time to time, I change the Linux distro on my laptop or just do a fresh install on it. And once in a while, have random problems with external displays. It can be something really &quot;simple&quot; like don't detecting the external monitor or something crazy like the image below.</p> +<img alt="Display bug" src="/images/bug.png" /> +<p>As you can see at the image, the mint detected the display but mirrored it in a crazy way that works but doesn't at the same time. If you try anything and doesn't get working, or just wanna skip the whole job of configuring complexes text files, give a try to <a class="reference external" href="http://willem.engen.nl/projects/disper/">Disper</a>. Download the latest version. +Extract it on any folder, and make install it (on the extracted folder).</p> +<div class="highlight"><pre><span></span>make install +</pre></div> +<p>After that, you can start using it... There are a few options that will serve you well.</p> +<div class="highlight"><pre><span></span>disper -e <span class="c1">#extend your display</span> +</pre></div> +<div class="highlight"><pre><span></span>disper -c <span class="c1">#clone your display</span> +</pre></div> +<div class="highlight"><pre><span></span>disper -s <span class="c1">#only your external display</span> +</pre></div> +Java - Files.readAllBytes throws OutOfMemory2018-02-17T13:00:00-02:002018-02-17T13:00:00-02:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-02-17:/reading-files-java-readAllBytes-outofmemory.html<p>When you need to interact with files, there's the possibility to read all bytes from the file with <cite>Files.readAllBytes</cite>. But be aware of the kinds of files your application will deal with because the Java API files have a limit for the buffer that is defined as <cite>Integer.MAX_VALUE …</cite></p><p>When you need to interact with files, there's the possibility to read all bytes from the file with <cite>Files.readAllBytes</cite>. But be aware of the kinds of files your application will deal with because the Java API files have a limit for the buffer that is defined as <cite>Integer.MAX_VALUE</cite> as you can see above or at the OpenJDK sources.</p> +<div class="highlight"><pre><span></span><span class="kd">public</span> <span class="kd">static</span> <span class="kt">byte</span><span class="o">[]</span> <span class="nf">readAllBytes</span><span class="p">(</span><span class="n">Path</span> <span class="n">path</span><span class="p">)</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="p">{</span> + <span class="k">try</span> <span class="p">(</span><span class="n">FileChannel</span> <span class="n">fc</span> <span class="o">=</span> <span class="n">FileChannel</span><span class="p">.</span><span class="na">open</span><span class="p">(</span><span class="n">path</span><span class="p">))</span> <span class="p">{</span> + <span class="kt">long</span> <span class="n">size</span> <span class="o">=</span> <span class="n">fc</span><span class="p">.</span><span class="na">size</span><span class="p">();</span> + <span class="k">if</span> <span class="p">(</span><span class="n">size</span> <span class="o">&gt;</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">Integer</span><span class="p">.</span><span class="na">MAX_VALUE</span><span class="p">)</span> + <span class="k">throw</span> <span class="k">new</span> <span class="n">OutOfMemoryError</span><span class="p">(</span><span class="s">&quot;Required array size too large&quot;</span><span class="p">);</span> + + <span class="kt">byte</span><span class="o">[]</span> <span class="n">arr</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">byte</span><span class="o">[</span><span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">size</span><span class="o">]</span><span class="p">;</span> + <span class="n">ByteBuffer</span> <span class="n">bb</span> <span class="o">=</span> <span class="n">ByteBuffer</span><span class="p">.</span><span class="na">wrap</span><span class="p">(</span><span class="n">arr</span><span class="p">);</span> + <span class="k">while</span> <span class="p">(</span><span class="n">bb</span><span class="p">.</span><span class="na">hasRemaining</span><span class="p">())</span> <span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="n">fc</span><span class="p">.</span><span class="na">read</span><span class="p">(</span><span class="n">bb</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> + <span class="c1">// truncated</span> + <span class="k">break</span><span class="p">;</span> + <span class="p">}</span> + <span class="p">}</span> + + <span class="kt">int</span> <span class="n">nread</span> <span class="o">=</span> <span class="n">bb</span><span class="p">.</span><span class="na">position</span><span class="p">();</span> + <span class="k">return</span> <span class="p">(</span><span class="n">nread</span> <span class="o">==</span> <span class="n">size</span><span class="p">)</span> <span class="o">?</span> <span class="n">arr</span> <span class="p">:</span> <span class="n">Arrays</span><span class="p">.</span><span class="na">copyOf</span><span class="p">(</span><span class="n">arr</span><span class="p">,</span> <span class="n">nread</span><span class="p">);</span> + <span class="p">}</span> +<span class="p">}</span> +</pre></div> +<p>With that in mind, check if isn't better read chunks of bytes e work with that slice in exchange of loading the whole file into the memory ;). Above a simple example of how you can read chunks of bytes from the file.</p> +<div class="highlight"><pre><span></span><span class="kt">byte</span><span class="o">[]</span> <span class="n">buffer</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">byte</span><span class="o">[</span><span class="mi">1024</span><span class="o">]</span><span class="p">;</span> +<span class="n">FileInputStream</span> <span class="n">in</span> <span class="o">=</span> <span class="k">new</span> <span class="n">FileInputStream</span><span class="p">(</span><span class="n">file</span><span class="p">);</span> +<span class="kt">int</span> <span class="n">rc</span> <span class="o">=</span> <span class="n">in</span><span class="p">.</span><span class="na">read</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span> +<span class="k">while</span> <span class="p">(</span><span class="n">rc</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> +<span class="p">{</span> + <span class="c1">//crazy stuff here with buffer</span> + <span class="n">rc</span> <span class="o">=</span> <span class="n">in</span><span class="p">.</span><span class="na">read</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span> +<span class="p">}</span> +</pre></div> + \ No newline at end of file diff --git a/feeds/all.atom.xml.gz b/feeds/all.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..15102270725d3c715d3097d703df26b30843da92 GIT binary patch literal 35006 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 z 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
  • +Gao~Tl6ToW$S2;FFT|7?&cqCnnh#1ki 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 MKkn87;iH}e0JZ%tPXGV_ literal 0 HcmV?d00001 diff --git a/feeds/azure.atom.xml b/feeds/azure.atom.xml new file mode 100644 index 000000000..4741122a6 --- /dev/null +++ b/feeds/azure.atom.xml @@ -0,0 +1,52 @@ + +Sipmann - Azurehttps://www.sipmann.com/2020-10-03T19:00:00-03:00Microsoft Against Covid2020-10-03T19:00:00-03:002020-10-03T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-03:/microsoft-against-covid.html<p>Has your job been affected by covid? Well, last week I've posted on <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by …</p><p>Has your job been affected by covid? Well, last week I've posted on <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by covid pandemic. </p> +<p>To see more details about if you were eligible, access <a href="https://docs.microsoft.com/en-us/learn/certifications/skillingoffer">https://docs.microsoft.com/en-us/learn/certifications/skillingoffer</a>.</p>Monitoring a Website heath with Azure Functions2020-06-22T19:00:00-03:002020-06-22T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-06-22:/monitoring-website-heath-with-azure-functions.html<p>Sometimes you get your self in need to monitor a website's health or it's content for changes. Of course, there's plenty of options out there, but for the sake of curiosity, let's code our own to see what we can do. First things first. Everything you'll see here, you can …</p><p>Sometimes you get your self in need to monitor a website's health or it's content for changes. Of course, there's plenty of options out there, but for the sake of curiosity, let's code our own to see what we can do. First things first. Everything you'll see here, you can achieve with the <a href="https://azure.microsoft.com/free/">free tier</a> of azure.</p> +<p>The main idea of our app will be to monitor website health (status code). To create a new Azure Function Project, follow the steps below.</p> +<p><img alt="Steps to create a azure function project" src="/images/azure_functions.gif"></p> +<p>After creating the project, you'll have a few files. Open your main file and start coding. The main file will have a function called <code>Run</code> and you can code your request method. I've created an <code>async</code> method to make the request and log the output at the console. The full code you can see below.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Linq</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Threading.Tasks</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs.Host</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Extensions.Logging</span><span class="p">;</span> + +<span class="k">namespace</span> <span class="nn">Sipmann.CheckMySite</span> +<span class="p">{</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">class</span> <span class="nc">HttpCheck</span> + <span class="p">{</span> + + <span class="k">private</span> <span class="k">static</span> <span class="k">async</span> <span class="n">Task</span> <span class="nf">GetTask</span><span class="p">(</span><span class="kt">string</span> <span class="n">url</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="kt">var</span> <span class="n">request</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpRequestMessage</span><span class="p">(</span><span class="n">HttpMethod</span><span class="p">.</span><span class="n">Get</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span> + + <span class="kt">var</span> <span class="n">client</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + <span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">client</span><span class="p">.</span><span class="n">SendAsync</span><span class="p">(</span><span class="n">request</span><span class="p">);</span> + + <span class="k">if</span> <span class="p">(</span><span class="n">response</span><span class="p">.</span><span class="n">IsSuccessStatusCode</span><span class="p">)</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="k">else</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} não esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> + +<span class="na"> [FunctionName(&quot;HttpCheck&quot;)]</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">void</span> <span class="nf">Run</span><span class="p">([</span><span class="n">TimerTrigger</span><span class="p">(</span><span class="s">&quot;0 */5 * * * *&quot;</span><span class="p">)]</span><span class="n">TimerInfo</span> <span class="n">myTimer</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="kt">var</span> <span class="n">urls</span> <span class="p">=</span> <span class="k">new</span><span class="p">[]{</span><span class="s">&quot;https://www.sipmann.com&quot;</span><span class="p">,</span> <span class="s">&quot;https://www.canezecanez.com.br&quot;</span><span class="p">};</span> + + <span class="c1">// Start every request and wait for them all to complete</span> + <span class="n">Task</span><span class="p">.</span><span class="n">WaitAll</span><span class="p">(</span><span class="n">urls</span><span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">url</span> <span class="p">=&gt;</span> <span class="n">GetTask</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">log</span><span class="p">)).</span><span class="n">ToArray</span><span class="p">());</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;Finalizou a fila&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>Now you can enhance the function and maybe send some alerts like a Telegram message when one of your sites went down.</p>Azure Data Fundamentals certification with 80% discount2020-06-09T12:30:00-03:002020-06-09T12:30:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-06-09:/azure-data-fundamentals-certification-80-discount.html<p>Hey folks, if you want to achieve some certification this year, keep an eye open for vouchers. A few months ago, Oracle released a set of free courses with certifications. Now it's Microsoft time. Microsoft is updating they're certifications and we have a voucher of 80% discount using the coupon …</p><p>Hey folks, if you want to achieve some certification this year, keep an eye open for vouchers. A few months ago, Oracle released a set of free courses with certifications. Now it's Microsoft time. Microsoft is updating they're certifications and we have a voucher of 80% discount using the coupon <strong>DP900Norfolk</strong> at the checkout of the beta certification DP-900. </p> +<p>Be aware that this certification is in beta and the result won't be instantly available as the regular ones. Access the following link and schedule your exam. <a href="https://docs.microsoft.com/pt-br/learn/certifications/exams/dp-900" target="_blank">https://docs.microsoft.com/pt-br/learn/certifications/exams/dp-900</a>.</p> +<p><strong>Update:</strong> There is a 80% voucher also for <a href="https://docs.microsoft.com/en-us/learn/certifications/azure-ai-fundamentals" target="_blank">https://docs.microsoft.com/en-us/learn/certifications/azure-ai-fundamentals</a>. Voucher: <strong>AI900Saratoga</strong></p> \ No newline at end of file diff --git a/feeds/azure.atom.xml.gz b/feeds/azure.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..60060d193646c5cb0da4c73e89df3f9bc3e32304 GIT binary patch literal 2577 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 literal 0 HcmV?d00001 diff --git a/feeds/flutter.atom.xml b/feeds/flutter.atom.xml new file mode 100644 index 000000000..5a450e645 --- /dev/null +++ b/feeds/flutter.atom.xml @@ -0,0 +1,28 @@ + +Sipmann - Flutterhttps://www.sipmann.com/2019-10-03T19:00:00-03:00Flutter + firebase auth crashing2019-10-03T19:00:00-03:002019-10-03T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-10-03:/flutter_with_firebase_auth_crashing.html<p>Hey Folks, recently I've started learning <a href="https://flutter.dev/">Flutter</a> and right after a TODO List, I tried a Firebase integration. But as soon as I started setting the dependencies, my app stopped opening... just a crash. After a few logs digging, I've found the following log.</p> +<div class="highlight"><pre><span></span><code>AndroidRuntime: FATAL EXCEPTION: main +AndroidRuntime: Process …</code></pre></div><p>Hey Folks, recently I've started learning <a href="https://flutter.dev/">Flutter</a> and right after a TODO List, I tried a Firebase integration. But as soon as I started setting the dependencies, my app stopped opening... just a crash. After a few logs digging, I've found the following log.</p> +<div class="highlight"><pre><span></span><code>AndroidRuntime: FATAL EXCEPTION: main +AndroidRuntime: Process: com.example.diadocasal, PID: <span class="m">13672</span> +AndroidRuntime: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/util/ArrayMap<span class="p">;</span> +AndroidRuntime: at com.google.android.gms.internal.measurement.zzca.&lt;clinit&gt;<span class="o">(</span>Unknown Source:60<span class="o">)</span> +AndroidRuntime: at com.google.android.gms.internal.measurement.zzcm.zzr<span class="o">(</span>Unknown Source:7<span class="o">)</span> +AndroidRuntime: at com.google.android.gms.measurement.internal.zzfj.&lt;init&gt;<span class="o">(</span>Unknown Source:23<span class="o">)</span> +</code></pre></div> + +<p>Notice the "NoClassDefFound" of an ArrayMap. To solve that I did the following changes to the files:</p> +<div class="highlight"><pre><span></span><code><span class="c1">//build.gradle file</span> + <span class="n">ext</span><span class="p">.</span><span class="na">kotlin_version</span> <span class="o">=</span> <span class="err">&#39;</span><span class="mf">1.3.20</span><span class="err">&#39;</span> +<span class="o">[</span><span class="p">...</span><span class="o">]</span> + <span class="n">dependencies</span> <span class="p">{</span> + <span class="n">classpath</span> <span class="err">&#39;</span><span class="n">com</span><span class="p">.</span><span class="na">android</span><span class="p">.</span><span class="na">tools</span><span class="p">.</span><span class="na">build</span><span class="p">:</span><span class="n">gradle</span><span class="p">:</span><span class="mf">3.3.0</span><span class="err">&#39;</span> <span class="c1">// gradle version</span> +</code></pre></div> + +<div class="highlight"><pre><span></span><code><span class="c1">;gradle.properties file</span> +<span class="na">org.gradle.jvmargs</span><span class="o">=</span><span class="s">-Xmx1536M ;mine have just this line at first</span> +<span class="na">android.useAndroidX</span><span class="o">=</span><span class="s">true ; uses androidX instead of the default support library</span> +<span class="na">android.enableJetifier</span><span class="o">=</span><span class="s">true ; uses jetpack libraries</span> +<span class="na">android.enableR8</span><span class="o">=</span><span class="s">true ; the new code shriker</span> +</code></pre></div> + +<p>After that, voilà, app up and running.</p> \ No newline at end of file diff --git a/feeds/flutter.atom.xml.gz b/feeds/flutter.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..1e4f7da06982fa87d1b2b7c933f0b0adb553de6f GIT binary patch literal 1331 zcmV-31`V{*neUc6(Doz});dGr#Q6q39bNKO_k252V!nZfMfC-a+Nv8!&Mk?kq9kxoFY`<>39c_gPV=c>2yk_J)(3P>~uOWgFUPA z)+n^x3O4%4i=0Xc+i)aGYncv%dLR^BUPGo?QUe)}Wa1bKT%!$dMiEJFK zIFi{rzn4f^lw-k7w%WV7(UY`rJd_@VlICo5N=yCeuZSzyr#aQB0v{Y

    qK{V~&zr zn)VlbZO>QiukClef2PcF#TnRH!JL+;$LNKygW^SM2S2hI94T>a+Ne>4J0)gt{Pl!^ zu~efQAQ;sW0l`h73meh|Sj;9t%fb2Gb+!R@KLC|6Xr5*kXyW#r!uh*{cW}auZNo8G z&2bS5M@=wrX<4eN#Y`mdLy6N27^S59e|*QvFl!wtn=y!4!DNj2${Bi*&wv&M8mgi| zLxp2b4np9nG>BFQ8i75}CSg+$Dm4)EG)2pH?S7(4B<|o7C4`!~#n6mYo>j_ixyzVO zAQIHLf`Cp6=V&EFC9r1Ar75Uvu7mqGSY#@rJsE4o;}4~@JZF74+B@Gnfy0aa!}sUM z@6P&=Q!cj_t=?-DF=OEG-~X(T8?>6`eE9%*x@(t}RWOXgNTJZu{vQ?p*{J9P)(ygL zXkG|LVoqZfQA0%=-X9@Xql|{|l0@o`K_iYIl5ZZm;tNm0StZ9f39+{C`i<;V1i&= za)H~TX)J0E4>fv}>#~~1ZtSC_9%mp~X(MT6bge9A(xpE_KbQf_w{f`Ih-qC*aaoq(PpQGr zT?@USq|kWA(-sqGNj?0`zG4&aYbd#zxF*f4k?QCxibqg^#RWl^_SrL6j#`GF)1eB*~5AjO_axfcUW=fjq7(%id| pX5^7gvW|`K*;X1gN34}bi^sDEwt;`ERK4mN{R7r_tPR2w0070#iDUo( literal 0 HcmV?d00001 diff --git a/feeds/front-end.atom.xml b/feeds/front-end.atom.xml new file mode 100644 index 000000000..020ecf405 --- /dev/null +++ b/feeds/front-end.atom.xml @@ -0,0 +1,178 @@ + +Sipmann - Front-endhttps://www.sipmann.com/2018-04-13T13:00:00-03:00Microservices with NodeJS, Express.js and RabbitMQ Part 22018-04-13T13:00:00-03:002018-04-13T13:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-04-13:/microservices_nodejs_express_rabbitmq_part_2.html

    <p>If you haven't read the <a class="reference external" href="https://www.sipmann.com/microservices_nodejs_express_rabbitmq_part_1-en.html">part 1</a> go ahead and read it... It can be useful :). Or if for some reason you want to start now, you can grab the project where we stopped <a class="reference external" href="https://github.com/sipmann/imagecompacter/releases/tag/v1">here</a> and get along. On this part, we'll implement the RabbitMQ queue and see how we …</p><p>If you haven't read the <a class="reference external" href="https://www.sipmann.com/microservices_nodejs_express_rabbitmq_part_1-en.html">part 1</a> go ahead and read it... It can be useful :). Or if for some reason you want to start now, you can grab the project where we stopped <a class="reference external" href="https://github.com/sipmann/imagecompacter/releases/tag/v1">here</a> and get along. On this part, we'll implement the RabbitMQ queue and see how we can get the best of our app and server with that.</p> +<p>Before we began coding, let's understand why we are going to use RabbitMQ if what we have now works? If you check again, you'll see how long it takes to answer the request with the optimized image. It takes a few seconds, so imagine an online service with thousands of request to optimize images (like <a class="reference external" href="https://tinypng.com/">TinyPNG</a>) how long is it gonna take to answer every request? How much of your server is it gonna take? With only one service running, probably the server will crash.</p> +<p>With a queue, we can schedule the requests so we can use the amount of memory and processor that our server has, without taking more than we can. It's better to take a few seconds to answer the request then throw some error to the user. Want more? With RabbitMQ we can see how the queue is doing and we can add more consumers (workers) to it and get things done quicker and distribute the job.</p> +<p>First of all, we need an up and running Rabbit server, for the sake of simplicity, I'll use a Docker container with it inside.</p> +<div class="highlight"><pre><span></span>docker run -d --name rabbit -p <span class="m">5672</span>:5672 -p <span class="m">8080</span>:15672 rabbitmq:3-management +</pre></div> +<p>You can see that we're running the rabbitmq:3-management image, which provides us a web interface to see how things are going. After that, if you look at our code you'll see that all the job is made at the '/upload' route, and that's what we'll change.</p> +<p>First, we need to understand what we need from RabbitMQ. We need something that, we send an image to a queue and get an optimized image back from that. There is a name for that, is RPC (remote procedure call) and there are two ways of doing this with rabbit. Both the ways you can see on their tutorial page. We'll use the approach that uses a global channel whose id is randomly generated (you'll use the name 'amq.rabbitmq.reply-to' but the rabbit will do the job).</p> +<p>Let's start importing the library, defining a few variables and defining a init function that will establish a connection with the rabbit server and create our RPC queue. The RPC queue it's where we'll receive the answer from the consumer (our worker).</p> +<div class="highlight"><pre><span></span><span class="c1">//import the library</span> +<span class="kr">const</span> <span class="nx">amqplib</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;amqplib&#39;</span><span class="p">);</span> + +<span class="c1">//queue channel</span> +<span class="kd">let</span> <span class="nx">channel</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span> +<span class="c1">//queue name</span> +<span class="kr">const</span> <span class="nx">QUEUE</span> <span class="o">=</span> <span class="s1">&#39;optimizeimg&#39;</span><span class="p">;</span> + +<span class="c1">//...</span> + +<span class="kd">function</span> <span class="nx">init</span><span class="p">()</span> <span class="p">{</span> + <span class="k">return</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;amqplib&#39;</span><span class="p">).</span><span class="nx">connect</span><span class="p">(</span><span class="s1">&#39;amqp://localhost&#39;</span><span class="p">)</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">conn</span> <span class="p">=&gt;</span> <span class="nx">conn</span><span class="p">.</span><span class="nx">createChannel</span><span class="p">())</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">ch</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">channel</span> <span class="o">=</span> <span class="nx">ch</span><span class="p">;</span> + + <span class="c1">//this queue is a &quot;Direct reply-to&quot; read more at the docs</span> + <span class="c1">//When some msg comes in, we &quot;emit&quot; a message to the proper &quot;correlationId&quot; listener</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">consume</span><span class="p">(</span><span class="s1">&#39;amq.rabbitmq.reply-to&#39;</span><span class="p">,</span> <span class="nx">msg</span> <span class="p">=&gt;</span> <span class="nx">eventEmitter</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="nx">msg</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">correlationId</span><span class="p">,</span> <span class="nx">msg</span><span class="p">.</span><span class="nx">content</span><span class="p">),</span> <span class="p">{</span><span class="nx">noAck</span><span class="o">:</span> <span class="kc">true</span><span class="p">});</span> + <span class="p">});</span> +<span class="p">}</span> + +<span class="c1">//Random id generator</span> +<span class="kd">function</span> <span class="nx">randomid</span><span class="p">()</span> <span class="p">{</span> + <span class="k">return</span> <span class="k">new</span> <span class="nb">Date</span><span class="p">().</span><span class="nx">getTime</span><span class="p">().</span><span class="nx">toString</span><span class="p">()</span> <span class="o">+</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">().</span><span class="nx">toString</span><span class="p">()</span> <span class="o">+</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">().</span><span class="nx">toString</span><span class="p">();</span> +<span class="p">}</span> + +<span class="nx">app</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span><span class="s1">&#39;/upload&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="kd">let</span> <span class="nx">img</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">files</span><span class="p">.</span><span class="nx">image</span><span class="p">;</span> + + <span class="kd">let</span> <span class="nx">id</span> <span class="o">=</span> <span class="nx">randomid</span><span class="p">();</span> + + <span class="c1">//Event listener that will fire when the proper randomid is provided</span> + <span class="nx">eventEmitter</span><span class="p">.</span><span class="nx">once</span><span class="p">(</span><span class="nx">id</span><span class="p">,</span> <span class="nx">msg</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">write</span><span class="p">(</span><span class="nx">msg</span><span class="p">,</span> <span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">end</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="p">});</span> + + <span class="c1">//Checks if the queue exists, and create it if needed.</span> + <span class="nx">channel</span><span class="p">.</span><span class="nx">assertQueue</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">)</span> + <span class="c1">//Sent the buffered img to the queue with the ID and the responseQueue</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="nx">channel</span><span class="p">.</span><span class="nx">sendToQueue</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">,</span> <span class="nx">img</span><span class="p">.</span><span class="nx">data</span><span class="p">,</span> <span class="p">{</span><span class="nx">correlationId</span><span class="o">:</span><span class="nx">id</span><span class="p">,</span> <span class="nx">replyTo</span><span class="o">:</span> <span class="s1">&#39;amq.rabbitmq.reply-to&#39;</span><span class="p">}));</span> + +<span class="p">});</span> + +<span class="c1">//Finally start the app with the given port number</span> +<span class="c1">//now we initialize the rabbitmq connection before start the server</span> +<span class="nx">init</span><span class="p">()</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="nx">app</span><span class="p">.</span><span class="nx">listen</span><span class="p">(</span><span class="mi">4000</span><span class="p">,</span> <span class="p">()</span> <span class="p">=&gt;</span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;Example app listening on port 4000!&#39;</span><span class="p">)))</span> + <span class="p">.</span><span class="k">catch</span><span class="p">(</span><span class="nx">err</span><span class="p">=&gt;</span><span class="nx">console</span><span class="p">.</span><span class="nx">error</span><span class="p">(</span><span class="nx">err</span><span class="p">));</span> +</pre></div> +<p>Ok, now we have our server code rewritten so let's see our worker code. Create a file named 'worker.js' and let's see how it's gonna be. It's really simple. You initialize a connection with RabbitMQ too, create a channel, check if the queue exists and start watching for incoming messages. When an image arrives, we do the job with it and send back to the &quot;replyTo&quot; queue the optimized image for the proper sender (correlationId). In the end, we do an acknowledge of the message so it get's out from the queue.</p> +<div class="highlight"><pre><span></span><span class="kr">const</span> <span class="nx">imagemin</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin&#39;</span><span class="p">);</span> +<span class="kr">const</span> <span class="nx">imageminPngquant</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin-pngquant&#39;</span><span class="p">);</span> + +<span class="kd">let</span> <span class="nx">channel</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span> +<span class="kr">const</span> <span class="nx">QUEUE</span> <span class="o">=</span> <span class="s1">&#39;imgqueue&#39;</span><span class="p">;</span> + +<span class="nx">require</span><span class="p">(</span><span class="s1">&#39;amqplib&#39;</span><span class="p">).</span><span class="nx">connect</span><span class="p">(</span><span class="s1">&#39;amqp://localhost&#39;</span><span class="p">)</span> +<span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">conn</span> <span class="p">=&gt;</span><span class="nx">conn</span><span class="p">.</span><span class="nx">createChannel</span><span class="p">())</span> +<span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">ch</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">assertQueue</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">)</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="c1">//Watch incomming messages</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">consume</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">,</span> <span class="nx">msg</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">imagemin</span><span class="p">.</span><span class="nx">buffer</span><span class="p">(</span><span class="nx">msg</span><span class="p">.</span><span class="nx">content</span><span class="p">,</span> <span class="p">{</span> + <span class="nx">plugins</span><span class="o">:</span> <span class="p">[</span><span class="nx">imageminPngquant</span><span class="p">()]</span> + <span class="p">})</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">out</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="c1">//Send back to the sender (replyTo) queue and give the correlationId back</span> + <span class="c1">//so we can emit the event.</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">sendToQueue</span><span class="p">(</span><span class="nx">msg</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">replyTo</span><span class="p">,</span> <span class="nx">out</span><span class="p">,</span> <span class="p">{</span> + <span class="nx">correlationId</span><span class="o">:</span> <span class="nx">msg</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">correlationId</span> + <span class="p">});</span> + + <span class="c1">//Acknowledge the job done with the message.</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">ack</span><span class="p">(</span><span class="nx">msg</span><span class="p">);</span> + <span class="p">});</span> + <span class="p">});</span> + <span class="p">});</span> +<span class="p">});</span> +</pre></div> +<p>The key points here are. Open just one connection to the hole server. You CAN create one channel for every request that you receive, but it can take some time if you have a really big cluster of RabbitMQ. It was a quick tutorial, but I hope that it was able to clear a few questions that you might have when working with rabbit and express.</p> +Microservices with NodeJS, Express.js and RabbitMQ Part 12018-04-04T11:25:00-03:002018-04-04T11:25:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-04-04:/microservices_nodejs_express_rabbitmq_part_1.html<p>This is the first part of a microservices development series. The service will consist of the bellow architecture, where we will expose an image optimizer service that will forward the request to a <a class="reference external" href="https://www.rabbitmq.com/">RabbitMQ</a> queue and answer with the bytecode of the optimized image. It shouldn't be a long series …</p><p>This is the first part of a microservices development series. The service will consist of the bellow architecture, where we will expose an image optimizer service that will forward the request to a <a class="reference external" href="https://www.rabbitmq.com/">RabbitMQ</a> queue and answer with the bytecode of the optimized image. It shouldn't be a long series so let's see what we can do.</p> +<img alt="Service architecture" src="/images/microservices_rabit_pt1.png" /> +<p>Let's get our environment working. First, we'll need to install the libraries that we'll use.</p> +<p>Create a dir and initialize the nodejs application inside it (<cite>npm init</cite>) and then let's install the deps.</p> +<ul class="simple"> +<li>amqplib - AMQP lib to interact with rabbitmq</li> +<li>express - Do our basic rest API</li> +<li>express-fileupload - easy file upload parser</li> +<li>imagemin and imagemin-pngquant - our image compacter</li> +</ul> +<div class="highlight"><pre><span></span>npm install --save express amqplib express-fileupload imagemin imagemin-pngquant +</pre></div> +<p>Now let's write the entry points for our service, we'll have two basic entry points. The path <cite>/</cite> that will have a welcome message, the second path will be <cite>/upload</cite> and this is the one that will handle the image and produce a job for our workers.</p> +<div class="highlight"><pre><span></span><span class="kr">const</span> <span class="nx">express</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;express&#39;</span><span class="p">);</span> +<span class="kr">const</span> <span class="nx">fileUpload</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;express-fileupload&#39;</span><span class="p">);</span> + +<span class="c1">//Instantiate the app and set the fileupload parser to manage files</span> +<span class="kr">const</span> <span class="nx">app</span> <span class="o">=</span> <span class="nx">express</span><span class="p">();</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">use</span><span class="p">(</span><span class="nx">fileUpload</span><span class="p">());</span> + +<span class="c1">//Our index entry point</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="nx">res</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="s1">&#39;Hello From ImageCompacter service&#39;</span><span class="p">));</span> + +<span class="c1">//The path that will handle the image file and throw them to the queue</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span><span class="s1">&#39;/upload&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="c1">//With express-fileupload we can grab the files like this</span> + <span class="kd">let</span> <span class="nx">img</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">files</span><span class="p">.</span><span class="nx">image</span><span class="p">;</span> <span class="c1">//&quot;image&quot; is the name of the input</span> + + <span class="nx">res</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="s1">&#39;Not ready yet&#39;</span><span class="p">);</span> +<span class="p">});</span> + +<span class="c1">//Finally start the app with the given port number</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">listen</span><span class="p">(</span><span class="mi">4000</span><span class="p">,</span> <span class="p">()</span> <span class="p">=&gt;</span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;Example app listening on port 4000!&#39;</span><span class="p">));</span> +</pre></div> +<p>Let's check if it works, run the service with node.</p> +<div class="highlight"><pre><span></span>node index.js +Example app listening on port <span class="m">4000</span>! +</pre></div> +<p>Open the browser and check if it prints our hello message when accessing <cite>localhost:4000</cite>. Works? Greate. Now let's work with the image and see how we do it. To optimize our image, we'll use the library imagemin and <a class="reference external" href="https://www.npmjs.com/package/imagemin-pngquant">imagemin-pngquant</a>, it will be that simple for now, we'll work with rabbitmq latter.</p> +<div class="highlight"><pre><span></span><span class="kr">const</span> <span class="nx">imagemin</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin&#39;</span><span class="p">);</span> +<span class="kr">const</span> <span class="nx">imageminPngquant</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin-pngquant&#39;</span><span class="p">);</span> +<span class="c1">//...</span> + +<span class="c1">//The path that will handle the image file and throw them to the queue</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span><span class="s1">&#39;/upload&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="kd">let</span> <span class="nx">img</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">files</span><span class="p">.</span><span class="nx">image</span><span class="p">;</span> <span class="c1">//&quot;image&quot; is the name of the input</span> + + <span class="nx">imagemin</span><span class="p">.</span><span class="nx">buffer</span><span class="p">(</span><span class="nx">img</span><span class="p">.</span><span class="nx">data</span><span class="p">,</span> <span class="p">{</span> + <span class="nx">plugins</span><span class="o">:</span> <span class="p">[</span><span class="nx">imageminPngquant</span><span class="p">()]</span> + <span class="p">})</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">out</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">write</span><span class="p">(</span><span class="nx">out</span><span class="p">,</span><span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">end</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="p">});</span> +<span class="p">});</span> + + <span class="c1">//...</span> +</pre></div> +<p>Use <a class="reference external" href="https://www.getpostman.com/">Postman</a> to test the request. To see if it will work, make a request to <cite>http://localhost:4000/upload</cite> with a formdata with a file. Select the &quot;send and Download&quot; instead of &quot;Send&quot; and you should have an image after that. Bellow an image of how your postman should be.</p> +<img alt="Postman" src="/images/microservice_postman.png" /> +<p>That's it for today, next week we'll change our code to use RabbitMQ.</p> +Scaffolding a React app with Parcel and Yeoman2018-03-17T13:00:00-03:002018-03-17T13:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-17:/scaffolding_react_app_with_parcel_yeoman.html<p>Since <a class="reference external" href="https://parceljs.org/">Parcel JS</a> arrived, I've been using it a lot as an awesome alternative for WebPack. Webpack isn't bad but IMO it's too complex for the job and parcel do the same (at least the basic) with almost zero configuration. But if you need to create many apps (like a …</p><p>Since <a class="reference external" href="https://parceljs.org/">Parcel JS</a> arrived, I've been using it a lot as an awesome alternative for WebPack. Webpack isn't bad but IMO it's too complex for the job and parcel do the same (at least the basic) with almost zero configuration. But if you need to create many apps (like a react app) over and over again, it get's a lil boring following the basic steps.</p> +<div class="highlight"><pre><span></span>npm init -y +npm install --save react +npm install --save react-dom +npm install --save-dev parcel-bundler +npm install --save-dev babel-preset-env +npm install --save-dev babel-preset-react + +<span class="c1">#create .babelrc file</span> +<span class="c1">#create html, css, jsx files</span> + +parcel index.html +</pre></div> +<p>It's not a hard job, a simple shell script do the job, but what if you need some IFs when creating the app, or even change a few things at the <cite>package.json</cite>? A shell script still does the job, but come on... There is a better way. <a class="reference external" href="http://yeoman.io/">Yeoman</a> is here for you. I've already <a class="reference external" href="https://www.sipmann.com/desenvolvendo-app-firefoxos-pt.html">talked about it</a> on another post (Portuguese post).</p> +<p>Straight to the point, I've released a Yeoman generator to get the things a lil quicker. The name is <a class="reference external" href="https://www.npmjs.com/package/generator-parcel-react">generator-parcel-react</a> and it still lacks a few things that I will deal with soon. It's pretty simple to use it.</p> +<div class="highlight"><pre><span></span><span class="c1">#First time only</span> +npm install -g yo +npm install -g generator-parcel-react + +<span class="c1">#every time you create a new app</span> +yo parcel-react +</pre></div> +<p>And that's it. Right now you can scaffold and app with React, SASS and React Router. Hope you like it and feel free to ask new features.</p> + \ No newline at end of file diff --git a/feeds/front-end.atom.xml.gz b/feeds/front-end.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..71e5e8dcf0e040592e8f88a5356e39213dcd9bbc GIT binary patch literal 5549 zcmV;e6;kRSiwFP!000021MNNSa@#nP|NRtLPt`cC(}$hR+|D_UQ=TNV(H( zm|cooOO?Lb-0kgbGLeQVlIif(W?=^1pEh3~Z0rw&h!_k_^{dU1G1*?fKOT>J;}<=Z z5Btw|c7E(18kKAw>>Fufad0BDgr_O%vR`tQnyyHr{l5KaKbGkQ8|7kPr_ydNZ6E1{ zD(P>sT*R+7d2B?UawA~gK0emyVO*>35Bz(392VAtwYy2RhzHetGCEi^&wd|%+%K{S z77!gg-`V}CyYoYL_r>Y%i@lv4_-}UyKkWDYkbPYQ4#s}?QS=oTV`Txjqwi`m>zo zO}?CEFz?y(-pG`gnS<`E2x6&6%i*sEt%NOJn32j4_EVk!VtA4N@Bf5Su{S*7`A{*( zLi>ICeZTLA15peg?#%$*souD^Isz=Ib&#NL(7w<*Xyw(!$O|2K(IoKK@qdP?H>D>GdW-bl{2jpfy1>*3BWN=4Ks>qgD*(c zxICmfndSmhV`HFF#pjzoCD_>jw#NQD4Dd`xv(E@3fIWeKD!}t1O^L`L9RUyES43*bE%QU%c$xh_F& zg@LJ?8)*-W8VF;MTa-oJ6dNqyCisj3m;*9Nvxq!bc7_otpuEREqlUpZI!u)Y>Q47gXnn{Npp^zf| zID4yTJ!pGCg1u&ed1R_(BxY9>$xAOOBRL$!@IOOBK+6Ti=sxOkuJpQMhpLV9l@6rR_nC-pjf~E)YM}@p$ z!K>EY2LPwh|2JoSkS&Z=gK1y5Nsqts6ies0iB?HQJsxN0Qd#o9`KM< zLdA2$Dy2T|vBLq00KB+^${00ntQ06*D^#G_MP2LC3V~5PM&rhd|t%qQ|L1kj0@`%#IZwqQR)!6KgBzCy0-dQo2Cy+}9|V1gC=v?KcEb z$kBu{lI)ssB;%USng!N z+YSTxFrwXzLBa6}Sq>}oWX?${ES-DoXXQ*54V=^%M4|E#65d=Gl}jFjAAqLpv+xo} z8Z(16@X#7?{1z8Ij6rQ%%%>s-OoCg+WQ42FVTmdMjXo40p%~h*XO8B6N&f)!sgc+8V0uL(ff+#I2g}DQ8v3fyglJ=>^L-bAm(j>)OUG!7g70~fz5MRQzm*I1 ze>Zr+_Vl2QjfH5oOyQ*J1`J2^3^>V+&@pe$+u`>jq)}-R#|>bAxg3fa$Wbx0%vitu z{_gj8Er31C2VTR=WVi}1G-d^eMsFDEIKbm(ONL{bPE84E}R%jZPL# zk*AMNYaM=j!eq3kaLx^)XQAF5{hcG*Hp-Ahh%8BKFWi1|_|^YSg| zrVtaF)?2N9ut`LUv0d;2@uO~zr1IULF(*LTfJ6_$m|UjA7Eo=O{a+ekf4-HgfXB!a}o6#tD~@SjoDGD()ro;9VGDEWd*F#I8|ST z6*{+a{nmgr;)b{7%>Sd^6x+O{(%qYWO81_s_0wIgCzb!XePcDiA}zg8mHYz6B914n z{>9boRN7-G!RKRCzmXP6Ao7M=@~N%y#VupWV=P3imygwpU;Osot>T5asu0Tvc;=aELuaJ8n&Kdd3VLJe4Yf*5(lfwloLNh z@Sj$4>b6^Adz%IhxoNa-*T@=*yh#8#pThS;U@E7+UvRhQB@~yJ?0&rHFsEwi&_b>H zoa$wBfw7;VU14`7f{HiG5Wg4o4 z%Ixiyw(c?75-$sGd7gto)3hUA)rFRo;P%)F{6i(T&Y!M!yuD{oZGqcG%{kLi7Nxtq z3(ktgms8HqHsH->XW&=ACaky*FMz1Ah=x?pjsyH2y{3BmA&~-)6_oXzwnFqS>p54h zo+Cs6IUaspX1UTeV&>M+b({{r6g)ML2W{QVFS*Ua)^DRo^}*DfLdZxuqRoQSr@G5K ztGoOr>Mb8bx#b_K%<|3)@*Y+a^|1x{EA10iRiEerTiCaI_=yq(1v zso3vu+64KV!w=Ii7iF7XtPluAtsWI#QVs3#pZN@7#*V-e_#SY_0e2fmcJ z19m#9_YA|9Hz20cHd?a1*Wy@>L4AcIX+T>QIrZ{!4d-nClB*1Rw3ORuezPktC$5zp zt9;D!Xu4Mw_PM!5|Gu(XrtCoGS+mxbuJYMk&y&&y2NQq?<-e$?5IuBoM+U|&YMw$Uc zY0fgU+XL0S$@=s92w@K=++G*yr370=)OD7x$I6aU*saGmm6EA8zK@mdkAnc2szp_y z=l7>7H|-;7n+DBPTUq6U`)vU4LB~xqgtYaKv_cj0)5j6z+MLT`RX(nws@b^3iHYAEjDl=IX1=37@-w|K-(w{ga9mbSlQ?1Wcn zB*W@Gs=Slkx>NO-}Ii;yET{9vt&>yFvjY%Hj1s=Gz zde*2c;@&IQC4S1 z4#wcvWh_Af9a@b=(yK26&RBu2z z0=g5`q0>(ih=pZr4$n&}*Umg`=9R6T+A9(9;ySuNG~$yEOM%!B&x?zxTN0~#7-ufe zeX8BQkF$xvZ zf-a+D9`8TemQF?~Dq@VqRoTM`%iX8|&aTTfPSP0NJmZGp#o?|UDc1RII~5xzpmo^a zMUE4u134^mDnbRlR~Uap#TUW4BQSvL2{N|7u$tel2>Xc+tp8>!XLVkO6L67jl`uxbT=q4 zO_whk74QHCp$!pe-Yy%Bvx{1kE&R^Wp-0c;A-OA!Qj-2jl!y)sweEn0xtdp#x8c~x z?$_Y>2L2)Sc}tPY!LP|9WXTSEc3S}&cUPDWbD5c1e>HoOjH>eM>_+l&^ozE;Ftl#Z zDZpnPW{<$7-ubWx&HTO5&S|T;gl=b}cdp&#JN}2)>~MNz+Sq%6g`Qp^l@^0w^rr4u zc6YOn`J}gsN&$`HjE7WKomk^s(v=xS%iQU#EOx za!x1z{B?3z8|c&}cn_eX@NLdhsqR+7;X_wk>S;`x#N8ur3&ts<254(#3#@#1*U34_ zq^m8Q_fy>r;7I__NioMJ=TrPiIsPMe0kz<<)x}z&+9eqRDKp0RO7#A;H1}~M^LKO% z#hw&ZX*_cq^OW)$0$3xZ$(&=jE3?>Pjrs%7aAi^t{R5i$JS@S_jVMhE{7F literal 0 HcmV?d00001 diff --git a/feeds/java.atom.xml b/feeds/java.atom.xml new file mode 100644 index 000000000..4d3da8486 --- /dev/null +++ b/feeds/java.atom.xml @@ -0,0 +1,89 @@ + +Sipmann - Javahttps://www.sipmann.com/2018-03-09T12:35:00-03:00Could not open connection with MySQL and Hibernate2018-03-09T12:35:00-03:002018-03-09T12:35:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-09:/cloud-not-open-connection-java-mysql-hibernate.html<p>Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some &quot;Could not open connection&quot; at my …</p><p>Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some &quot;Could not open connection&quot; at my face, but why? I've tried to connect to it manually and got the same problem.</p> +<p>After some research, I found that the true error should be java.sql.SQLException: null, message from server: &quot;Host '172.17.0.4' is not allowed to connect to this MySQL server&quot; but it wasn't showing to me...</p> +<p>After all, be aware that with the docker image MySQL:5.7.21 (latest version right now) the root user isn't allowed to remote connect to the database (it's alright, security reasons) and if you still want to do remote connections to it with root there are a few things you can do.</p> +<ol class="arabic simple"> +<li>Create a user or allow root to access from other IPs.</li> +</ol> +<div class="highlight"><pre><span></span><span class="o">#</span><span class="k">No</span> <span class="k">access</span> <span class="k">to</span> <span class="k">user</span> <span class="n">root</span> <span class="k">on</span> <span class="k">any</span> <span class="n">other</span> <span class="n">IP</span> +<span class="k">SELECT</span> <span class="k">User</span><span class="p">,</span> <span class="k">Host</span> <span class="k">FROM</span> <span class="n">mysql</span><span class="p">.</span><span class="k">user</span><span class="p">;</span> +<span class="o">+</span><span class="c1">---------------+-----------+</span> +<span class="o">|</span> <span class="k">User</span> <span class="o">|</span> <span class="k">Host</span> <span class="o">|</span> +<span class="o">+</span><span class="c1">---------------+-----------+</span> +<span class="o">|</span> <span class="n">healthchecker</span> <span class="o">|</span> <span class="n">localhost</span> <span class="o">|</span> +<span class="o">|</span> <span class="n">root</span> <span class="o">|</span> <span class="n">localhost</span> <span class="o">|</span> +<span class="o">+</span><span class="c1">---------------+-----------+</span> +<span class="mi">2</span> <span class="k">rows</span> <span class="k">in</span> <span class="k">set</span> <span class="p">(</span><span class="mi">0</span><span class="p">.</span><span class="mi">01</span> <span class="n">sec</span><span class="p">)</span> + +<span class="k">CREATE</span> <span class="k">USER</span> <span class="s1">&#39;newuser&#39;</span><span class="o">@</span><span class="s1">&#39;%&#39;</span> <span class="n">IDENTIFIED</span> <span class="k">BY</span> <span class="s1">&#39;password&#39;</span><span class="p">;</span> <span class="o">#%</span> <span class="n">mean</span> <span class="k">any</span> <span class="n">IP</span> +<span class="k">GRANT</span> <span class="k">ALL</span> <span class="k">PRIVILEGES</span> <span class="k">ON</span> <span class="o">*</span><span class="p">.</span><span class="o">*</span> <span class="k">TO</span> <span class="s1">&#39;newuser&#39;</span><span class="o">@</span><span class="s1">&#39;%&#39;</span><span class="p">;</span> <span class="o">#*</span><span class="p">.</span><span class="o">*</span> <span class="n">mean</span> <span class="k">database</span><span class="p">.</span><span class="k">table</span> <span class="p">;)</span> +</pre></div> +<ol class="arabic simple" start="2"> +<li>Use MariaDB instead, witch come (at least on the version 10.2.13) with root allowed to do remote connections and will work like MySQL :)</li> +</ol> +<p>I changed to <a class="reference external" href="https://mariadb.org/">MariaDB</a> as it work without creating user or any changes on the Java code or the <cite>docker run command</cite>.</p> +Solving java.net.SocketException: Protocol family unavailable on a Java + Docker + WildFly2018-03-04T17:40:00-03:002018-03-04T17:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-04:/socketException-protocol-family-unavailable-java-docker-wildfly.html<p>On the last days I've been playing with <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> and I decided to deploy a simple app with Docker. Should work fine, at least that was what I thought. Built a container with the following Dockerfile and instead of a working web app, all that I got was the …</p><p>On the last days I've been playing with <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> and I decided to deploy a simple app with Docker. Should work fine, at least that was what I thought. Built a container with the following Dockerfile and instead of a working web app, all that I got was the error <cite>java.net.SocketException: Protocol family unavailable</cite>.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">CMD</span> <span class="p">[</span><span class="s2">&quot;java&quot;</span><span class="p">,</span><span class="s2">&quot;-jar&quot;</span><span class="p">,</span><span class="s2">&quot;/opt/issues.jar&quot;</span><span class="p">]</span> +</pre></div> +<p>For some reason, WildFly and Java decided to use the IPv6 network interface from Docker instead the v4, so all you have to do is tell Java to prefer IPv4 instead with the following configuration option in your pom.xml file inside your WildFly plugin.</p> +<div class="highlight"><pre><span></span><span class="nt">&lt;plugin&gt;</span> + <span class="nt">&lt;groupId&gt;</span>org.wildfly.swarm<span class="nt">&lt;/groupId&gt;</span> + <span class="nt">&lt;artifactId&gt;</span>wildfly-swarm-plugin<span class="nt">&lt;/artifactId&gt;</span> + <span class="nt">&lt;version&gt;</span>2018.2.0<span class="nt">&lt;/version&gt;</span> + + <span class="c">&lt;!-- ADD THIS --&gt;</span> + <span class="nt">&lt;configuration&gt;</span> + <span class="nt">&lt;mainClass&gt;</span>org.wildfly.swarm.examples.netflix.ribbon.frontend.Main<span class="nt">&lt;/mainClass&gt;</span> + <span class="nt">&lt;properties&gt;</span> + <span class="nt">&lt;java.net.preferIPv4Stack&gt;</span>true<span class="nt">&lt;/java.net.preferIPv4Stack&gt;</span> + <span class="nt">&lt;/properties&gt;</span> + <span class="nt">&lt;/configuration&gt;</span> +</pre></div> +<p>Another way to solve is adding the same properties to the run command at the Dockerfile, so you choose where you'll add it. Bellow the Dockerfile solution.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> +<span class="k">ENV</span> <span class="nv">JAVA_OPTS</span><span class="o">=</span><span class="s2">&quot;-Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true&quot;</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">ENTRYPOINT</span> <span class="nb">exec</span> java <span class="nv">$JAVA_OPTS</span> -jar /opt/issues.jar +</pre></div> +Java - Files.readAllBytes throws OutOfMemory2018-02-17T13:00:00-02:002018-02-17T13:00:00-02:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-02-17:/reading-files-java-readAllBytes-outofmemory.html<p>When you need to interact with files, there's the possibility to read all bytes from the file with <cite>Files.readAllBytes</cite>. But be aware of the kinds of files your application will deal with because the Java API files have a limit for the buffer that is defined as <cite>Integer.MAX_VALUE …</cite></p><p>When you need to interact with files, there's the possibility to read all bytes from the file with <cite>Files.readAllBytes</cite>. But be aware of the kinds of files your application will deal with because the Java API files have a limit for the buffer that is defined as <cite>Integer.MAX_VALUE</cite> as you can see above or at the OpenJDK sources.</p> +<div class="highlight"><pre><span></span><span class="kd">public</span> <span class="kd">static</span> <span class="kt">byte</span><span class="o">[]</span> <span class="nf">readAllBytes</span><span class="p">(</span><span class="n">Path</span> <span class="n">path</span><span class="p">)</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="p">{</span> + <span class="k">try</span> <span class="p">(</span><span class="n">FileChannel</span> <span class="n">fc</span> <span class="o">=</span> <span class="n">FileChannel</span><span class="p">.</span><span class="na">open</span><span class="p">(</span><span class="n">path</span><span class="p">))</span> <span class="p">{</span> + <span class="kt">long</span> <span class="n">size</span> <span class="o">=</span> <span class="n">fc</span><span class="p">.</span><span class="na">size</span><span class="p">();</span> + <span class="k">if</span> <span class="p">(</span><span class="n">size</span> <span class="o">&gt;</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">Integer</span><span class="p">.</span><span class="na">MAX_VALUE</span><span class="p">)</span> + <span class="k">throw</span> <span class="k">new</span> <span class="n">OutOfMemoryError</span><span class="p">(</span><span class="s">&quot;Required array size too large&quot;</span><span class="p">);</span> + + <span class="kt">byte</span><span class="o">[]</span> <span class="n">arr</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">byte</span><span class="o">[</span><span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">size</span><span class="o">]</span><span class="p">;</span> + <span class="n">ByteBuffer</span> <span class="n">bb</span> <span class="o">=</span> <span class="n">ByteBuffer</span><span class="p">.</span><span class="na">wrap</span><span class="p">(</span><span class="n">arr</span><span class="p">);</span> + <span class="k">while</span> <span class="p">(</span><span class="n">bb</span><span class="p">.</span><span class="na">hasRemaining</span><span class="p">())</span> <span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="n">fc</span><span class="p">.</span><span class="na">read</span><span class="p">(</span><span class="n">bb</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> + <span class="c1">// truncated</span> + <span class="k">break</span><span class="p">;</span> + <span class="p">}</span> + <span class="p">}</span> + + <span class="kt">int</span> <span class="n">nread</span> <span class="o">=</span> <span class="n">bb</span><span class="p">.</span><span class="na">position</span><span class="p">();</span> + <span class="k">return</span> <span class="p">(</span><span class="n">nread</span> <span class="o">==</span> <span class="n">size</span><span class="p">)</span> <span class="o">?</span> <span class="n">arr</span> <span class="p">:</span> <span class="n">Arrays</span><span class="p">.</span><span class="na">copyOf</span><span class="p">(</span><span class="n">arr</span><span class="p">,</span> <span class="n">nread</span><span class="p">);</span> + <span class="p">}</span> +<span class="p">}</span> +</pre></div> +<p>With that in mind, check if isn't better read chunks of bytes e work with that slice in exchange of loading the whole file into the memory ;). Above a simple example of how you can read chunks of bytes from the file.</p> +<div class="highlight"><pre><span></span><span class="kt">byte</span><span class="o">[]</span> <span class="n">buffer</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">byte</span><span class="o">[</span><span class="mi">1024</span><span class="o">]</span><span class="p">;</span> +<span class="n">FileInputStream</span> <span class="n">in</span> <span class="o">=</span> <span class="k">new</span> <span class="n">FileInputStream</span><span class="p">(</span><span class="n">file</span><span class="p">);</span> +<span class="kt">int</span> <span class="n">rc</span> <span class="o">=</span> <span class="n">in</span><span class="p">.</span><span class="na">read</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span> +<span class="k">while</span> <span class="p">(</span><span class="n">rc</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> +<span class="p">{</span> + <span class="c1">//crazy stuff here with buffer</span> + <span class="n">rc</span> <span class="o">=</span> <span class="n">in</span><span class="p">.</span><span class="na">read</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span> +<span class="p">}</span> +</pre></div> + \ No newline at end of file diff --git a/feeds/java.atom.xml.gz b/feeds/java.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..2b3dbe2890a6ad2e1ce50f974dbcca0d72d57563 GIT binary patch literal 3421 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 +Sipmann - Linuxhttps://www.sipmann.com/2020-10-20T19:00:00-03:00Zabbix Running on Low Memory Mode2020-10-20T19:00:00-03:002020-10-20T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-20:/zabbix-running-on-low-memory-mode.html<p>Hey folks, another Zabbix post today. This one it's about increasing the Zabbix Server Cache. It's pretty common (if you have the default settings only) get a warning about your <code>Zabbix value cache running on low memory mode</code> at your dashboard or logs.</p> +<p><img alt="Zabbix Dashboard warning about the memory problem" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache graph 70% used" src="/images/zabbix_cache_filling.png"></p> +<p>To solve, go back to your Zabbix …</p><p>Hey folks, another Zabbix post today. This one it's about increasing the Zabbix Server Cache. It's pretty common (if you have the default settings only) get a warning about your <code>Zabbix value cache running on low memory mode</code> at your dashboard or logs.</p> +<p><img alt="Zabbix Dashboard warning about the memory problem" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache graph 70% used" src="/images/zabbix_cache_filling.png"></p> +<p>To solve, go back to your Zabbix config file (<code>zabbix_server.conf</code>) and look for the tag <em>CacheSize</em>. Uncomment it and set to a value bigger than 8M (8M it's the default value). In my case, we set a cache of 100M. After the change, restart the service.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: CacheSize</span> +<span class="c1"># Size of configuration cache, in bytes.</span> +<span class="c1"># Shared memory size for storing host, item and trigger data.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 128K-64G</span> +<span class="c1"># Default:</span> +<span class="na">CacheSize</span><span class="o">=</span><span class="s">100M #uncomment this line</span> +</code></pre></div> + +<p><img alt="Zabbix Dashboard resolved memory problem" src="/images/zabbix_low_memory_solved.png"></p> +<p>See ya folks.</p>Zabbix poller processes more than 75%2020-07-02T19:00:00-03:002020-07-02T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-02:/zabbix-poller-processes-more-than-75.html<p>Hey folks, this is the third post about tweaking the Zabbix configurations. All changes that I've suggested here were based on a Zabbix Server with 50+ hosts. Another thing that can happen to your server, it's the poller get overwhelmed by the amount of servers that need to be polled …</p><p>Hey folks, this is the third post about tweaking the Zabbix configurations. All changes that I've suggested here were based on a Zabbix Server with 50+ hosts. Another thing that can happen to your server, it's the poller get overwhelmed by the amount of servers that need to be polled plus the ones that are not responding. Bellow two images where you can see the log and the graphic where you can see the usage percent. </p> +<p><img alt="Dashboard log about the poller processes" src="/images/zabbix_pooler.png"></p> +<p><img alt="Graph showing the utilization percent of each collector" src="/images/zabbix_pooler_3.png"></p> +<p>To solve, let's go back to the <code>zabbix_server.conf</code> file and find two variables, <code>StartPollers</code> and <code>StartPollersUnreachable</code>. Increase them as needed. There's no magic number, you must see what works for you. But keep in mind that the <code>StartPollersUnreachable</code> is responsible for that host that can't be "reached" (of course) and will hold your poller more time.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPollers</span> +<span class="c1"># Number of pre-forked instances of pollers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollers</span><span class="o">=</span><span class="s">20</span> + +<span class="c1">#...</span> + +<span class="c1">### Option: StartPollersUnreachable</span> +<span class="c1"># Number of pre-forked instances of pollers for unreachable hosts (including IPMI and Java).</span> +<span class="c1"># At least one poller for unreachable hosts must be running if regular, IPMI or Java pollers</span> +<span class="c1"># are started.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollersUnreachable</span><span class="o">=</span><span class="s">5</span> +</code></pre></div> + +<p>After the change, restart the server and wait a few moments and take a look again at your dashboard. Bellow the effect that I've got.</p> +<p><img alt="Graph showing the new utilization percent of the processes after the changes" src="/images/zabbix_pooler_4.png"></p>Zabbix ICMP pinger processes more than 75%2020-05-25T16:00:00-03:002020-05-25T16:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-05-25:/zabbix-icmp-pinger-processes-more-than-75.html<p>So your monitoring sytems have grown and your zabbix started loggin "Zabbix icmp pinger processes more than 75% busy" at the dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>All you have to do is open your config file (<code>/etc/zabbix/zabbix_server.conf</code>) and find the a tag named <code>StartPingers</code>. It'll be commented by default. Uncomment it …</p><p>So your monitoring sytems have grown and your zabbix started loggin "Zabbix icmp pinger processes more than 75% busy" at the dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>All you have to do is open your config file (<code>/etc/zabbix/zabbix_server.conf</code>) and find the a tag named <code>StartPingers</code>. It'll be commented by default. Uncomment it and set it's value to something like 3 or 4. It should solve your problem.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPingers</span> +<span class="c1"># Number of pre-forked instances of ICMP pingers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="nv">StartPingers</span><span class="o">=</span><span class="m">4</span> +</code></pre></div> + +<h2>How many Pingers do I need?</h2> +<p>Well, there is no exact answer to this. If you set it too high, you'll be wasting resources. The best way to solve, it's increasing them as soon as you notice the percentage growing.</p>Zabbix Server Out of Memory2020-02-27T19:00:00-03:002020-02-27T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-02-27:/zabbix-server-out-of-memory-crash.html<p>Do you have a crashing Zabbix Server and looking through the log <code>/var/log/zabbix/zabbix_server.log</code> you see the following out of memory message?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c,line …</code></pre></div><p>Do you have a crashing Zabbix Server and looking through the log <code>/var/log/zabbix/zabbix_server.log</code> you see the following out of memory message?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: please increase CacheSize configuration parameter +</code></pre></div> + +<p>Besides the clear solution to the error, that's a common issue on servers that have a few monitoring items on it (servers, switches, firewalls, databases, etc...). To solve, go to your zabbix_server.conf and look for the CacheSize property and set it to a higher value. Its default should be 8M. At a customer that has somewhere between 4 servers, 7 firewalls/appliances, and a few other things, a 32M did the job, but you can set up to 8G.</p> +<p>See ya folks.</p>Connecting to a database through SSH2018-03-29T10:03:00-03:002018-03-29T10:03:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-29:/connecting_to_database_through_ssh.html<p>If someday, for some reason, you need to establish a connection with a database which is behind a firewall and you only have SSH access on that server (and you don't want to use a CLI) you can do an SSH tunnel. It's pretty simple, bellow has a sample of …</p><p>If someday, for some reason, you need to establish a connection with a database which is behind a firewall and you only have SSH access on that server (and you don't want to use a CLI) you can do an SSH tunnel. It's pretty simple, bellow has a sample of how to allow connections to a remote Firebird database.</p> +<div class="highlight"><pre><span></span>ssh -L <span class="m">3051</span>:192.168.1.9:3050 username@192.168.1.9 +</pre></div> +<p>The <cite>-L</cite> parameter tells to SSH do a local port forwarding on local port <cite>3051</cite> to remote port <cite>3050</cite>. You can use it to a connection with many services, not just databases.</p> +<p>You can do the reverse kind of tunnel, forward connections from the host to your local machine, you just have to change the parameter form &quot;-L&quot; to &quot;-R&quot; and the port order is inverted, first come the port where the server will listen and after your localhost port. This remote port forwarding must be enabled on the server. Look for <cite>GatewayPorts</cite> at the ssh config file.</p> +<div class="highlight"><pre><span></span>ssh -R <span class="m">3050</span>:localhost:3050 username@192.168.1.9 +</pre></div> +<p>Why whould you need something like that?? Let's say you want to share a localhost site/database with a friend, but your internet connection don't allow you to expose any port but you have access to a remote server witch can do that. Problem solved ;).</p> +Change display settings on linux with Disper2018-02-27T12:40:00-03:002018-02-27T12:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-02-27:/linux-external-display-with-disper.html<p>From time to time, I change the Linux distro on my laptop or just do a fresh install on it. And once in a while, have random problems with external displays. It can be something really &quot;simple&quot; like don't detecting the external monitor or something crazy like the image below …</p><p>From time to time, I change the Linux distro on my laptop or just do a fresh install on it. And once in a while, have random problems with external displays. It can be something really &quot;simple&quot; like don't detecting the external monitor or something crazy like the image below.</p> +<img alt="Display bug" src="/images/bug.png" /> +<p>As you can see at the image, the mint detected the display but mirrored it in a crazy way that works but doesn't at the same time. If you try anything and doesn't get working, or just wanna skip the whole job of configuring complexes text files, give a try to <a class="reference external" href="http://willem.engen.nl/projects/disper/">Disper</a>. Download the latest version. +Extract it on any folder, and make install it (on the extracted folder).</p> +<div class="highlight"><pre><span></span>make install +</pre></div> +<p>After that, you can start using it... There are a few options that will serve you well.</p> +<div class="highlight"><pre><span></span>disper -e <span class="c1">#extend your display</span> +</pre></div> +<div class="highlight"><pre><span></span>disper -c <span class="c1">#clone your display</span> +</pre></div> +<div class="highlight"><pre><span></span>disper -s <span class="c1">#only your external display</span> +</pre></div> + \ No newline at end of file diff --git a/feeds/linux.atom.xml.gz b/feeds/linux.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..c4e7261c116b601c39add4cebf54ad6877fbdd46 GIT binary patch literal 3916 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 +Sipmann - Maurício Camargo Sipmannhttps://www.sipmann.com/2020-12-21T13:30:00-03:00Monitoring MySQL restarts with PowerShell2020-12-21T13:30:00-03:002020-12-21T13:30:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-21:/monitoring-mysql-restarts-with-powershell.html<p>Hey folks, it's time for another PowerShell script. If you haven't seen the other ones, check the links below.</p> +<ul> +<li><a href="https://www.sipmann.com/en/monitoring-mysql-replication-with-powershell.html">Monitoring MySQL replication with PowerShell</a></li> +</ul> +<p>Well, this one it's a pretty simple script, but again, if your customer doesn't have a Zabbix server or doesn't allow you to setup one to …</p><p>Hey folks, it's time for another PowerShell script. If you haven't seen the other ones, check the links below.</p> +<ul> +<li><a href="https://www.sipmann.com/en/monitoring-mysql-replication-with-powershell.html">Monitoring MySQL replication with PowerShell</a></li> +</ul> +<p>Well, this one it's a pretty simple script, but again, if your customer doesn't have a Zabbix server or doesn't allow you to setup one to do the monitoring, a set of scripts can be handy. We start executing some basic query <code>SHOW GLOBAL STATUS LIKE 'Uptime'</code>, with that we'll get exactly what we're looking for.</p> +<p>If for some reason, the command fails (watch for the "global" variable called <code>$lastExitCode</code>), we send an e-mail telling you about that connection problem.</p> +<p>And then, we get to the part where we parse the value, this one is pretty similar to the parse we did on the first post about using PowerShell to monitor MySQL. But we basically look for the Value line, split it by space and then parse the second position to an integer. And then all we have to do is check if the uptime is lower than our threshold, if it is we send an e-mail.</p> +<div class="highlight"><pre><span></span><code><span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;maurio[at]sipmann.com&#39;</span> +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio[at]sipmann.com&#39;</span> +<span class="nv">$MysqlHost</span> <span class="p">=</span> <span class="s1">&#39;127.0.0.1&#39;</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;123&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-h</span> <span class="nv">$MysqlHost</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s2">&quot;SHOW GLOBAL STATUS LIKE &#39;Uptime&#39; \G&quot;</span><span class="p">)</span> + +<span class="cm">&lt;# Unable to execute the sql Command #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$lastExitCode</span> <span class="o">-eq</span> <span class="n">1</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Connection problem&#39;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;Connection problem on host ${MysqlHost}&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> + <span class="n">exit</span> +<span class="p">}</span> + +<span class="nv">$UpTime</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Value:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="cm">&lt;# If the uptime is lower then 20 minutes #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$UpTime</span> <span class="o">-lt</span> <span class="n">1200</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s2">&quot;MySQL Restarted&quot;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;MySQL host ${MysqlHost} restarted less than 20 minutes ago&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> +</code></pre></div> + +<p>This script (and the other ones I use) is available at my GitHub <a href="https://github.com/sipmann/PowerShellScripts">here</a>. Keep in mind that the ones on the GitHub repo, are a little different from here.</p>Changing a MySQL user password across multiple application instances without downtime2020-12-09T13:40:00-03:002020-12-09T13:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-09:/mysql-dual-password-functionality.html<p>Do you need to change the password of a MySQL user that it's being used in an application, and can't allow a single downtime? Well, MySQL 8.0.14 came with a feature called <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, with it you can change the password keeping the previous password as a …</p><p>Do you need to change the password of a MySQL user that it's being used in an application, and can't allow a single downtime? Well, MySQL 8.0.14 came with a feature called <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, with it you can change the password keeping the previous password as a kind of backup. That way you still can log in using the old password or can start using the new one. With that, the password change workflow it's the following.</p> +<p>1) Change password keeping the old one;</p> +<p>2) Deploy the new config to your app/cluster;</p> +<p>3) Discard the old password.</p> +<p>To change the password and keep the old one, you have the following command.</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">IDENTIFIED</span> <span class="k">BY</span> <span class="s1">&#39;new_password&#39;</span> <span class="n">RETAIN</span> <span class="n">CURRENT</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>To discard the old one, run the following.</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">DISCARD</span> <span class="n">OLD</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>And you are done. Hope you find it as useful as I :)</p>Apache Nifi JSON to SQL Replacing underscore2020-12-02T14:00:00-03:002020-12-02T14:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-02:/apache-nifi-json-to-sql-replacing-underscore.html<p>Recently I was doing some ETL with Apache NiFi. But after a few minutes of drawing my flow, I saw that the component ConvertJSONToSQL was replacing the underscore ('_') from the field name in the where condition (I was preparing an Update SQL). That was weird because, at the set …</p><p>Recently I was doing some ETL with Apache NiFi. But after a few minutes of drawing my flow, I saw that the component ConvertJSONToSQL was replacing the underscore ('_') from the field name in the where condition (I was preparing an Update SQL). That was weird because, at the set statement, the field name was kept intact. After some research, I found that the property (see bellow) <code>Translate Field Names</code> was responsible for that weird replacement.</p> +<p><img alt="Apache NiFi JSONToSQL config" src="/images/apache_nifi_jsontosql.png"></p> +<p>Before setting it to <strong>FALSE</strong>, be aware that the properties on your JSON data must match exactly the name of your fields.</p>Blocking a user on SQL Server based on a schedule2020-11-14T07:00:00-03:002020-11-14T07:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-11-14:/blocking-user-on-sql-server-based-on-schedule.html<p>Ok, some time ago, I've posted about how you can set limits to connections on SQL Server using the <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. But what if you can't use it? You always can block logins using a login trigger, but I don't like the idea of having selects running on every login …</p><p>Ok, some time ago, I've posted about how you can set limits to connections on SQL Server using the <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. But what if you can't use it? You always can block logins using a login trigger, but I don't like the idea of having selects running on every login. So I came across with a solution using a stored procedure, a table and the Agent.</p> +<p>The main idea is, store the time that a user must be blocked and using the Agent, disable or enable the user. Bellow you can see the table (the table is in Portuguese, but I have a few comment blocks to help you).</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">Id</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Startint block time */</span><span class="w"></span> +<span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Ending block time */</span><span class="w"></span> +<span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="k">DEFAULT</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="cm">/* 0 = unblocked, 1 = blocked */</span><span class="w"></span> +<span class="w"> </span><span class="k">PRIMARY</span><span class="w"> </span><span class="k">KEY</span><span class="w"> </span><span class="p">(</span><span class="n">Id</span><span class="p">)</span><span class="w"></span> +<span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="cm">/* Don&#39;t block the SA user, precautions, you know */</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_users</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">LoginName</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;sa&#39;</span><span class="p">));</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_hora_final_maior</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="n">HrInicio</span><span class="p">);</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_status_bloqueio</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">Bloqueado</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">));</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="k">SEQUENCE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">seq_HorariosBloqueio</span><span class="w"> </span><span class="k">START</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">INCREMENT</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>After creating the table, let's check the procedure that will handle the enabling/disabling the users. Be aware that on the procedure, I've set the database name where the table was stored, you can change it replacing the <code>DBATOOLS</code> text to the database name where you created the table.</p> +<div class="highlight"><pre><span></span><code><span class="k">IF</span><span class="w"> </span><span class="nf">OBJECT_ID</span><span class="p">(</span><span class="s1">&#39;dbo.sp_ValidarLogin&#39;</span><span class="p">)</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="k">NULL</span><span class="w"></span> +<span class="w"> </span><span class="k">EXEC</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;CREATE PROCEDURE dbo.sp_ValidarLogin AS RETURN 0;&#39;</span><span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="k">ALTER</span><span class="w"> </span><span class="k">PROC</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">sp_ValidarLogin</span><span class="w"></span> +<span class="k">AS</span><span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">);</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nf">CAST</span><span class="p">(</span><span class="nf">GETDATE</span><span class="p">()</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="cm">/* Block the ones that aren&#39;t blocked already and maches the time */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">&#39; DISABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Bloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> + + +<span class="w"> </span><span class="cm">/* Enable up who was blocked */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="s1">&#39; ENABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Unbloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="k">END</span><span class="p">;</span><span class="w"></span> +</code></pre></div> + +<p>Ok, so now all you have to do, is schedule a job to run that stored procedure from minute to minute. Again, the main idea is tell the procedure when a user must be blocked and when it'll be unblocked. </p> +<div class="highlight"><pre><span></span><code><span class="err"> -- Will block the user protheus from 10 AM till 15 PM</span> +<span class="err"> INSERT INTO dbo.HorariosBloqueio (Id, LoginName, HrInicio, HrTermino) VALUES (NEXT VALUE FOR seq_HorariosBloqueio, &#39;protheus&#39;, &#39;10:00:00&#39;, &#39;15:00:00&#39;);</span> +</code></pre></div>How to set columns on select using Entity Framework2020-10-28T19:00:00-03:002020-10-28T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-28:/select_specific_fields_with_efcore.html<p>So, you use Entity Framework Core, and you usually code your selects like the following, maybe you are getting too much data.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Running the query above, on my table, you'll get the following output, take a look …</p><p>So, you use Entity Framework Core, and you usually code your selects like the following, maybe you are getting too much data.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Running the query above, on my table, you'll get the following output, take a look at how many columns you are getting back from your database.</p> +<p><img alt="Screenshot with every single column" src="/images/ef_core_allcolumns.png"></p> +<p>In my case, I only care about the Title, PublishedData, and a small description. So to get back only these fields, we have a few options. In the first one, we'll set the fields and return them as a dynamic object, the second one, is to give the .NET a class to use. </p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + + <span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="k">new</span> <span class="p">{</span><span class="n">p</span><span class="p">.</span><span class="n">ProductID</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitPrice</span><span class="p">})</span> + <span class="c1">//.Select(p =&gt; new ProductDTO {p.ProductID, p.ProductName, p.UnitsInStock, p.UnitPrice})</span> + + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p><img alt="Screenshot with fewer columns and also fewer data size" src="/images/ef_core_less_columns.png"></p>Zabbix Running on Low Memory Mode2020-10-20T19:00:00-03:002020-10-20T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-20:/zabbix-running-on-low-memory-mode.html<p>Hey folks, another Zabbix post today. This one it's about increasing the Zabbix Server Cache. It's pretty common (if you have the default settings only) get a warning about your <code>Zabbix value cache running on low memory mode</code> at your dashboard or logs.</p> +<p><img alt="Zabbix Dashboard warning about the memory problem" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache graph 70% used" src="/images/zabbix_cache_filling.png"></p> +<p>To solve, go back to your Zabbix …</p><p>Hey folks, another Zabbix post today. This one it's about increasing the Zabbix Server Cache. It's pretty common (if you have the default settings only) get a warning about your <code>Zabbix value cache running on low memory mode</code> at your dashboard or logs.</p> +<p><img alt="Zabbix Dashboard warning about the memory problem" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache graph 70% used" src="/images/zabbix_cache_filling.png"></p> +<p>To solve, go back to your Zabbix config file (<code>zabbix_server.conf</code>) and look for the tag <em>CacheSize</em>. Uncomment it and set to a value bigger than 8M (8M it's the default value). In my case, we set a cache of 100M. After the change, restart the service.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: CacheSize</span> +<span class="c1"># Size of configuration cache, in bytes.</span> +<span class="c1"># Shared memory size for storing host, item and trigger data.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 128K-64G</span> +<span class="c1"># Default:</span> +<span class="na">CacheSize</span><span class="o">=</span><span class="s">100M #uncomment this line</span> +</code></pre></div> + +<p><img alt="Zabbix Dashboard resolved memory problem" src="/images/zabbix_low_memory_solved.png"></p> +<p>See ya folks.</p>Monitoring MySQL Replication Status with PowerShell2020-10-14T19:00:00-03:002020-10-14T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-14:/monitoring-mysql-replication-with-powershell.html<p>I've been migration some bash scripts that I have to PowerShell, and it's time to migrate a script that monitors the replication of a MySQL database. The credit for the original script goes to <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. It's a simple script where I seek a few tags/fields that we get from …</p><p>I've been migration some bash scripts that I have to PowerShell, and it's time to migrate a script that monitors the replication of a MySQL database. The credit for the original script goes to <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. It's a simple script where I seek a few tags/fields that we get from <code>SHOW SLAVE STATUS\G</code> command, the fields are. <code>Slave_IO_Running</code>, <code>Slave_SQL_Running</code>, and <code>Seconds_Behind_Master</code>. I still need to figure out the proper way to store/read variables like usernames and passwords, if you have any tips, feel free to even make a pull request (<a href="https://github.com/sipmann/PowerShellScripts">here</a>) at the git where I'll store some scripts.</p> +<div class="highlight"><pre><span></span><code><span class="cm">&lt;#</span> +<span class="cm"> Variables definition</span> +<span class="cm">#&gt;</span> +<span class="nv">$MaxSeconds</span> <span class="p">=</span> <span class="n">120</span> <span class="c"># Max seconds behind master allowed</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;&#39;</span> + +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> +<span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s1">&#39;SHOW SLAVE STATUS \G&#39;</span><span class="p">)</span> + +<span class="c">#Debug data</span> +<span class="c">#$data = Get-Content &#39;c:\temp\sampleresult.txt&#39;</span> + +<span class="cm">&lt;# Parse the data #&gt;</span> +<span class="nv">$IORunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_IO_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SQLRunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_SQL_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$LastErrNo</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Last_Errno&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SecondsBh</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Seconds_Behind_Master&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="k">If</span> <span class="p">(</span><span class="nv">$IORunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SQLRunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SecondsBh</span> <span class="o">-gt</span> <span class="nv">$MaxSeconds</span><span class="p">)</span> <span class="p">{</span> + <span class="nv">$MailBody</span> <span class="p">=</span> <span class="s1">&#39;&lt;h1&gt;Problema na replicação&lt;/h1&gt;&lt;br&gt;&#39;</span> + + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; IO Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$IORunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; SQL Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SQLRunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39;Seconds Behind: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SecondsBh</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; Last Err No: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$LastErrNo</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + + <span class="cm">&lt;# Send e-mail, maybe some telegram message here too #&gt;</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Problemas na replicação&#39;</span> <span class="n">-bodyAsHtml</span> <span class="nv">$MailBody</span> <span class="n">-Credential</span> <span class="p">(</span><span class="nb">Get-Credential</span><span class="p">)</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> <span class="k">Else</span> <span class="p">{</span> + <span class="nb">Write-Host</span> <span class="s2">&quot;Up and running&quot;</span> +<span class="p">}</span> +</code></pre></div>Microsoft Against Covid2020-10-03T19:00:00-03:002020-10-03T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-03:/microsoft-against-covid.html<p>Has your job been affected by covid? Well, last week I've posted on <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by …</p><p>Has your job been affected by covid? Well, last week I've posted on <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by covid pandemic. </p> +<p>To see more details about if you were eligible, access <a href="https://docs.microsoft.com/en-us/learn/certifications/skillingoffer">https://docs.microsoft.com/en-us/learn/certifications/skillingoffer</a>.</p>The power of PowerShell2020-09-21T19:00:00-03:002020-09-21T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-09-21:/the-power-of-powershell.html<p>As a long time Linux user, I've automated a few things with bash scripts and stayed away from PowerShell... I've moved to a Windows environment a few years ago and still, haven gave a shot to PS. But why not? I've made a few scripts to automate some tasks at …</p><p>As a long time Linux user, I've automated a few things with bash scripts and stayed away from PowerShell... I've moved to a Windows environment a few years ago and still, haven gave a shot to PS. But why not? I've made a few scripts to automate some tasks at a Protheus server.</p> +<p>I found the PS scripts being easy to read and understand. Bellow, we have a script to remove files filtering their extension (or no extension at all like the following script). </p> +<div class="highlight"><pre><span></span><code><span class="nb">Get-ChildItem</span> <span class="s2">&quot;C:\TOTVS\protheus_data\system&quot;</span> <span class="o">-File</span> <span class="n">-Filter</span> <span class="p">*.</span> <span class="p">|</span> <span class="nb">Move-Item</span> <span class="n">-Force</span> <span class="n">-Destination</span> <span class="p">{</span> + <span class="cm">&lt;# Diretory where the files will be moved. You can use Date formats to help name it #&gt;</span> + <span class="cm">&lt;# LastWriteTime proprtie from the current file #&gt;</span> + <span class="nv">$dir</span> <span class="p">=</span> <span class="s2">&quot;C:\bad_files\{0:yyyy\\MM\\dd}&quot;</span> <span class="o">-f</span> <span class="nv">$_</span><span class="p">.</span><span class="n">LastWriteTime</span> + <span class="nv">$null</span> <span class="p">=</span> <span class="n">mkdir</span> <span class="nv">$dir</span> <span class="n">-Force</span> + <span class="s2">&quot;$dir\</span><span class="p">$(</span><span class="nv">$_</span><span class="p">.</span><span class="n">Name</span><span class="p">)</span><span class="s2">&quot;</span> +<span class="p">}</span> +</code></pre></div> + +<p>Have you ever been in the need to remove files based on other file content? Bello a script where I read a file that has the names of files that I want to remove. </p> +<div class="highlight"><pre><span></span><code><span class="k">foreach</span><span class="p">(</span><span class="nv">$line</span> <span class="k">in</span> <span class="nb">Get-Content</span> <span class="p">.\</span><span class="n">Desktop</span><span class="p">\</span><span class="n">bad_files</span><span class="p">.</span><span class="n">txt</span><span class="p">)</span> <span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="nb">Test-Path</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">))</span> <span class="p">{</span> + <span class="nb">Remove-Item</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">)</span> + <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> + <span class="nb">echo </span><span class="nv">$line</span> <span class="p">+</span> <span class="s1">&#39; - File not found&#39;</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>And a bonus script to stop/start services (if you handle some Protheus Server, you know why I do that).</p> +<div class="highlight"><pre><span></span><code><span class="nv">$servicesNames</span> <span class="p">=</span> <span class="s1">&#39;app_main&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker1&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker2&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker3&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker4&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker5&#39;</span> + +<span class="nb">Write-host</span> <span class="s2">&quot;Stoping Services&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Stopping: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nv">$SrvPID</span> <span class="p">=</span> <span class="p">(</span><span class="nb">get-wmiobject</span> <span class="n">win32_service</span> <span class="p">|</span> <span class="nb">where </span><span class="p">{</span> <span class="nv">$_</span><span class="p">.</span><span class="n">name</span> <span class="o">-eq</span> <span class="nv">$srv</span><span class="p">}).</span><span class="n">processID</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PID: &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> + + <span class="cm">&lt;# Force if the proccess is stucked #&gt;</span> + <span class="nb">Stop-Process</span> <span class="nv">$SrvPID</span> <span class="n">-Force</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PDI &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> <span class="p">+</span> <span class="s2">&quot; stopped&quot;</span> +<span class="p">}</span> + + +<span class="nb">Write-host</span> <span class="s2">&quot;Starting Services&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Starting: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nb">Start-Service</span> <span class="nv">$srv</span> +<span class="p">}</span> +</code></pre></div> + +<p>Do you have any automated script? Share with us :)</p>Top Level Statement in C# 92020-07-29T19:00:00-03:002020-07-29T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-29:/top_level_statement_csharp_9.html<p>Hey folks, I'm coming along to tell you a few things about the new feature of C# 9. Every time you want to start a new project, you always have the same Main File, with the same structure. At the next version of C# (version 9), we'll have a new …</p><p>Hey folks, I'm coming along to tell you a few things about the new feature of C# 9. Every time you want to start a new project, you always have the same Main File, with the same structure. At the next version of C# (version 9), we'll have a new feature called <code>Top Level Statement</code>. With that, we'll be able to code our app without any namespace/class/public void static main structure. Take a look at the code below.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="s">&quot;Hello World!&quot;</span><span class="p">);</span> +</code></pre></div> + +<p>It looks pretty simple, but with this, you can play around with your code, and even code a simple/tiny Web API. To start playing with the new features, firstly download the <a href="https://dotnet.microsoft.com/download/dotnet/5.0">.net 5 SDK</a> and change your <code>.csproj</code> file to target the .net 5 and language preview like bellow.</p> +<div class="highlight"><pre><span></span><code><span class="nt">&lt;Project</span> <span class="na">Sdk=</span><span class="s">&quot;Microsoft.NET.Sdk&quot;</span><span class="nt">&gt;</span> + <span class="nt">&lt;PropertyGroup&gt;</span> + <span class="nt">&lt;OutputType&gt;</span>Exe<span class="nt">&lt;/OutputType&gt;</span> + <span class="nt">&lt;TargetFramework&gt;</span>net5.0<span class="nt">&lt;/TargetFramework&gt;</span> + <span class="nt">&lt;LangVersion&gt;</span>preview<span class="nt">&lt;/LangVersion&gt;</span> + <span class="nt">&lt;/PropertyGroup&gt;</span> +<span class="nt">&lt;/Project&gt;</span> +</code></pre></div> + +<p>And you're ready to play with the awesome features available in the preview. Let's code a way to get the image of the day from NASA API and print the Picture of the Day. No awesome code here, it's really a way to show how simple a simple call could be. After here, why not save the image in a file? Maybe send the file over telegram?</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Text.Json</span><span class="p">;</span> + +<span class="kt">var</span> <span class="n">API</span> <span class="p">=</span> <span class="s">&quot;https://api.nasa.gov/planetary/apod?hd=true&amp;api_key=DEMO_KEY&quot;</span><span class="p">;</span> +<span class="kt">var</span> <span class="n">cli</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + +<span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">cli</span><span class="p">.</span><span class="n">GetAsync</span><span class="p">(</span><span class="n">API</span><span class="p">);</span> +<span class="kt">var</span> <span class="n">data</span> <span class="p">=</span> <span class="n">JsonSerializer</span><span class="p">.</span><span class="n">Deserialize</span><span class="p">&lt;</span><span class="n">NasaApi</span><span class="p">&gt;(</span><span class="k">await</span> <span class="n">response</span><span class="p">.</span><span class="n">Content</span><span class="p">.</span><span class="n">ReadAsStringAsync</span><span class="p">());</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">Url</span><span class="p">);</span> +</code></pre></div> + +<p>That's it for today folks. Keep an eye open for the awesome features C# 9 will bring to us, there's plenty more features already available.</p>Zabbix poller processes more than 75%2020-07-02T19:00:00-03:002020-07-02T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-02:/zabbix-poller-processes-more-than-75.html<p>Hey folks, this is the third post about tweaking the Zabbix configurations. All changes that I've suggested here were based on a Zabbix Server with 50+ hosts. Another thing that can happen to your server, it's the poller get overwhelmed by the amount of servers that need to be polled …</p><p>Hey folks, this is the third post about tweaking the Zabbix configurations. All changes that I've suggested here were based on a Zabbix Server with 50+ hosts. Another thing that can happen to your server, it's the poller get overwhelmed by the amount of servers that need to be polled plus the ones that are not responding. Bellow two images where you can see the log and the graphic where you can see the usage percent. </p> +<p><img alt="Dashboard log about the poller processes" src="/images/zabbix_pooler.png"></p> +<p><img alt="Graph showing the utilization percent of each collector" src="/images/zabbix_pooler_3.png"></p> +<p>To solve, let's go back to the <code>zabbix_server.conf</code> file and find two variables, <code>StartPollers</code> and <code>StartPollersUnreachable</code>. Increase them as needed. There's no magic number, you must see what works for you. But keep in mind that the <code>StartPollersUnreachable</code> is responsible for that host that can't be "reached" (of course) and will hold your poller more time.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPollers</span> +<span class="c1"># Number of pre-forked instances of pollers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollers</span><span class="o">=</span><span class="s">20</span> + +<span class="c1">#...</span> + +<span class="c1">### Option: StartPollersUnreachable</span> +<span class="c1"># Number of pre-forked instances of pollers for unreachable hosts (including IPMI and Java).</span> +<span class="c1"># At least one poller for unreachable hosts must be running if regular, IPMI or Java pollers</span> +<span class="c1"># are started.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollersUnreachable</span><span class="o">=</span><span class="s">5</span> +</code></pre></div> + +<p>After the change, restart the server and wait a few moments and take a look again at your dashboard. Bellow the effect that I've got.</p> +<p><img alt="Graph showing the new utilization percent of the processes after the changes" src="/images/zabbix_pooler_4.png"></p>Monitoring a Website heath with Azure Functions2020-06-22T19:00:00-03:002020-06-22T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-06-22:/monitoring-website-heath-with-azure-functions.html<p>Sometimes you get your self in need to monitor a website's health or it's content for changes. Of course, there's plenty of options out there, but for the sake of curiosity, let's code our own to see what we can do. First things first. Everything you'll see here, you can …</p><p>Sometimes you get your self in need to monitor a website's health or it's content for changes. Of course, there's plenty of options out there, but for the sake of curiosity, let's code our own to see what we can do. First things first. Everything you'll see here, you can achieve with the <a href="https://azure.microsoft.com/free/">free tier</a> of azure.</p> +<p>The main idea of our app will be to monitor website health (status code). To create a new Azure Function Project, follow the steps below.</p> +<p><img alt="Steps to create a azure function project" src="/images/azure_functions.gif"></p> +<p>After creating the project, you'll have a few files. Open your main file and start coding. The main file will have a function called <code>Run</code> and you can code your request method. I've created an <code>async</code> method to make the request and log the output at the console. The full code you can see below.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Linq</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Threading.Tasks</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs.Host</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Extensions.Logging</span><span class="p">;</span> + +<span class="k">namespace</span> <span class="nn">Sipmann.CheckMySite</span> +<span class="p">{</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">class</span> <span class="nc">HttpCheck</span> + <span class="p">{</span> + + <span class="k">private</span> <span class="k">static</span> <span class="k">async</span> <span class="n">Task</span> <span class="nf">GetTask</span><span class="p">(</span><span class="kt">string</span> <span class="n">url</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="kt">var</span> <span class="n">request</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpRequestMessage</span><span class="p">(</span><span class="n">HttpMethod</span><span class="p">.</span><span class="n">Get</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span> + + <span class="kt">var</span> <span class="n">client</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + <span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">client</span><span class="p">.</span><span class="n">SendAsync</span><span class="p">(</span><span class="n">request</span><span class="p">);</span> + + <span class="k">if</span> <span class="p">(</span><span class="n">response</span><span class="p">.</span><span class="n">IsSuccessStatusCode</span><span class="p">)</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="k">else</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} não esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> + +<span class="na"> [FunctionName(&quot;HttpCheck&quot;)]</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">void</span> <span class="nf">Run</span><span class="p">([</span><span class="n">TimerTrigger</span><span class="p">(</span><span class="s">&quot;0 */5 * * * *&quot;</span><span class="p">)]</span><span class="n">TimerInfo</span> <span class="n">myTimer</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="kt">var</span> <span class="n">urls</span> <span class="p">=</span> <span class="k">new</span><span class="p">[]{</span><span class="s">&quot;https://www.sipmann.com&quot;</span><span class="p">,</span> <span class="s">&quot;https://www.canezecanez.com.br&quot;</span><span class="p">};</span> + + <span class="c1">// Start every request and wait for them all to complete</span> + <span class="n">Task</span><span class="p">.</span><span class="n">WaitAll</span><span class="p">(</span><span class="n">urls</span><span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">url</span> <span class="p">=&gt;</span> <span class="n">GetTask</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">log</span><span class="p">)).</span><span class="n">ToArray</span><span class="p">());</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;Finalizou a fila&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>Now you can enhance the function and maybe send some alerts like a Telegram message when one of your sites went down.</p>Azure Data Fundamentals certification with 80% discount2020-06-09T12:30:00-03:002020-06-09T12:30:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-06-09:/azure-data-fundamentals-certification-80-discount.html<p>Hey folks, if you want to achieve some certification this year, keep an eye open for vouchers. A few months ago, Oracle released a set of free courses with certifications. Now it's Microsoft time. Microsoft is updating they're certifications and we have a voucher of 80% discount using the coupon …</p><p>Hey folks, if you want to achieve some certification this year, keep an eye open for vouchers. A few months ago, Oracle released a set of free courses with certifications. Now it's Microsoft time. Microsoft is updating they're certifications and we have a voucher of 80% discount using the coupon <strong>DP900Norfolk</strong> at the checkout of the beta certification DP-900. </p> +<p>Be aware that this certification is in beta and the result won't be instantly available as the regular ones. Access the following link and schedule your exam. <a href="https://docs.microsoft.com/pt-br/learn/certifications/exams/dp-900" target="_blank">https://docs.microsoft.com/pt-br/learn/certifications/exams/dp-900</a>.</p> +<p><strong>Update:</strong> There is a 80% voucher also for <a href="https://docs.microsoft.com/en-us/learn/certifications/azure-ai-fundamentals" target="_blank">https://docs.microsoft.com/en-us/learn/certifications/azure-ai-fundamentals</a>. Voucher: <strong>AI900Saratoga</strong></p>Zabbix ICMP pinger processes more than 75%2020-05-25T16:00:00-03:002020-05-25T16:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-05-25:/zabbix-icmp-pinger-processes-more-than-75.html<p>So your monitoring sytems have grown and your zabbix started loggin "Zabbix icmp pinger processes more than 75% busy" at the dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>All you have to do is open your config file (<code>/etc/zabbix/zabbix_server.conf</code>) and find the a tag named <code>StartPingers</code>. It'll be commented by default. Uncomment it …</p><p>So your monitoring sytems have grown and your zabbix started loggin "Zabbix icmp pinger processes more than 75% busy" at the dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>All you have to do is open your config file (<code>/etc/zabbix/zabbix_server.conf</code>) and find the a tag named <code>StartPingers</code>. It'll be commented by default. Uncomment it and set it's value to something like 3 or 4. It should solve your problem.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPingers</span> +<span class="c1"># Number of pre-forked instances of ICMP pingers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="nv">StartPingers</span><span class="o">=</span><span class="m">4</span> +</code></pre></div> + +<h2>How many Pingers do I need?</h2> +<p>Well, there is no exact answer to this. If you set it too high, you'll be wasting resources. The best way to solve, it's increasing them as soon as you notice the percentage growing.</p>Zabbix Server Out of Memory2020-02-27T19:00:00-03:002020-02-27T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-02-27:/zabbix-server-out-of-memory-crash.html<p>Do you have a crashing Zabbix Server and looking through the log <code>/var/log/zabbix/zabbix_server.log</code> you see the following out of memory message?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c,line …</code></pre></div><p>Do you have a crashing Zabbix Server and looking through the log <code>/var/log/zabbix/zabbix_server.log</code> you see the following out of memory message?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: please increase CacheSize configuration parameter +</code></pre></div> + +<p>Besides the clear solution to the error, that's a common issue on servers that have a few monitoring items on it (servers, switches, firewalls, databases, etc...). To solve, go to your zabbix_server.conf and look for the CacheSize property and set it to a higher value. Its default should be 8M. At a customer that has somewhere between 4 servers, 7 firewalls/appliances, and a few other things, a 32M did the job, but you can set up to 8G.</p> +<p>See ya folks.</p>Flutter + firebase auth crashing2019-10-03T19:00:00-03:002019-10-03T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-10-03:/flutter_with_firebase_auth_crashing.html<p>Hey Folks, recently I've started learning <a href="https://flutter.dev/">Flutter</a> and right after a TODO List, I tried a Firebase integration. But as soon as I started setting the dependencies, my app stopped opening... just a crash. After a few logs digging, I've found the following log.</p> +<div class="highlight"><pre><span></span><code>AndroidRuntime: FATAL EXCEPTION: main +AndroidRuntime: Process …</code></pre></div><p>Hey Folks, recently I've started learning <a href="https://flutter.dev/">Flutter</a> and right after a TODO List, I tried a Firebase integration. But as soon as I started setting the dependencies, my app stopped opening... just a crash. After a few logs digging, I've found the following log.</p> +<div class="highlight"><pre><span></span><code>AndroidRuntime: FATAL EXCEPTION: main +AndroidRuntime: Process: com.example.diadocasal, PID: <span class="m">13672</span> +AndroidRuntime: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/util/ArrayMap<span class="p">;</span> +AndroidRuntime: at com.google.android.gms.internal.measurement.zzca.&lt;clinit&gt;<span class="o">(</span>Unknown Source:60<span class="o">)</span> +AndroidRuntime: at com.google.android.gms.internal.measurement.zzcm.zzr<span class="o">(</span>Unknown Source:7<span class="o">)</span> +AndroidRuntime: at com.google.android.gms.measurement.internal.zzfj.&lt;init&gt;<span class="o">(</span>Unknown Source:23<span class="o">)</span> +</code></pre></div> + +<p>Notice the "NoClassDefFound" of an ArrayMap. To solve that I did the following changes to the files:</p> +<div class="highlight"><pre><span></span><code><span class="c1">//build.gradle file</span> + <span class="n">ext</span><span class="p">.</span><span class="na">kotlin_version</span> <span class="o">=</span> <span class="err">&#39;</span><span class="mf">1.3.20</span><span class="err">&#39;</span> +<span class="o">[</span><span class="p">...</span><span class="o">]</span> + <span class="n">dependencies</span> <span class="p">{</span> + <span class="n">classpath</span> <span class="err">&#39;</span><span class="n">com</span><span class="p">.</span><span class="na">android</span><span class="p">.</span><span class="na">tools</span><span class="p">.</span><span class="na">build</span><span class="p">:</span><span class="n">gradle</span><span class="p">:</span><span class="mf">3.3.0</span><span class="err">&#39;</span> <span class="c1">// gradle version</span> +</code></pre></div> + +<div class="highlight"><pre><span></span><code><span class="c1">;gradle.properties file</span> +<span class="na">org.gradle.jvmargs</span><span class="o">=</span><span class="s">-Xmx1536M ;mine have just this line at first</span> +<span class="na">android.useAndroidX</span><span class="o">=</span><span class="s">true ; uses androidX instead of the default support library</span> +<span class="na">android.enableJetifier</span><span class="o">=</span><span class="s">true ; uses jetpack libraries</span> +<span class="na">android.enableR8</span><span class="o">=</span><span class="s">true ; the new code shriker</span> +</code></pre></div> + +<p>After that, voilà, app up and running.</p>Removing a user from SQL Server database who owns a schema2019-09-06T07:00:00-03:002020-10-21T18:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-09-06:/removing-user-from-sql-server-database.html<p>Your customer urge you to drop a user from the MsSQL Server database, but you stuck with the following related error:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>That means that the user owns one or more shcemas of your database. If …</p><p>Your customer urge you to drop a user from the MsSQL Server database, but you stuck with the following related error:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>That means that the user owns one or more shcemas of your database. If you don't have access to the SSMS to see which schema or objects the user owns, the following SQL should do the job.</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">schemas</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">principal_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="p">,</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">xtype</span><span class="w"> </span><span class="n">Tipo</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">sysobjects</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">uid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> +</code></pre></div> + +<p>Once you have the objects/schemas owned by the user, you can change them with the following SQL (schema change sample):</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datareader</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"> </span><span class="c1">-- new owner username</span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datawriter</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>Then you're ready to drop the user <code>DROP USER [username]</code></p> +<h2>How to list all the schemas and it's owners?</h2> +<p>Here's a script to list schemas and it's owners.</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +<span class="k">SELECT</span><span class="w"></span> +<span class="w"> </span><span class="nf">schema_name</span><span class="p">(</span><span class="nf">schema_id</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">schemaname</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="nf">user_name</span><span class="p">(</span><span class="n">schm</span><span class="p">.</span><span class="n">principal_id</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">username</span><span class="p">,</span><span class="w"> </span><span class="o">*</span><span class="w"></span> +<span class="k">FROM</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">schemas</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">schm</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div>Limiting Connection Resources on SQL Server2019-08-12T12:00:00-03:002019-08-12T12:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-08-12:/limiting-connection-resources-sql-server.html<p>Have you ever suffered from a slow SQLServer database? Someone love to run that heavy query in the database? Resource Governor to the rescue. You can set a few rules on how users (connections actually) will use the server/database resources based on a few things.</p> +<p>First things first, if …</p><p>Have you ever suffered from a slow SQLServer database? Someone love to run that heavy query in the database? Resource Governor to the rescue. You can set a few rules on how users (connections actually) will use the server/database resources based on a few things.</p> +<p>First things first, if you don't have DAC enabled, enable it now. Dealing with resource governor can lock you out of the database and leave you without action (almost... you can start the server with -c -m -f).</p> +<p>Now to understand how Resource Governor works, we have a few keywords <code>resource pool</code>, <code>workload group</code> e <code>Classifier Function</code>.</p> +<p><img alt="Pool Sample" src="/images/sql-pool.png"></p> +<h2>Resource Pool</h2> +<p>First, we have the Resource Pool, with is the bigger resource group that we have the ability to manage. With it, we can set a few things like: <code>MIN_CPU_PERCENT</code>, <code>MAX_CPU_PERCENT</code>, <code>MIN_MEMORY_PERCENT</code>, <code>MAX_MEMORY_PERCENT</code>, <code>MIN_IOPS_PER_VOLUME</code>, and <code>MAX_IOPS_PER_VOLUME</code>.</p> +<p>Be aware that the <code>MAX_CPU_PERCENT</code> will just "works" when there is another connection with a higher priority, otherwise it will use what is available. Let's create a pool.</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">POOL</span><span class="w"> </span><span class="o">[</span><span class="n">SpreadSheet</span><span class="o">]</span><span class="w"></span> +<span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">MIN_CPU_PERCENT</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">MAX_CPU_PERCENT</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">MIN_MEMORY_PERCENT</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">MAX_MEMORY_PERCENT</span><span class="o">=</span><span class="mi">20</span><span class="w"></span> +<span class="p">);</span><span class="w"></span> +</code></pre></div> + +<p>## Workload Group</p> +<p>Then we have a workload group that "works" inside a pool, so you can have another granularity on how you can split your resources. Again, we have a few options: <code>IMPORTANCE</code>, <code>REQUEST_MAX_CPU_TIME_SEC</code>, <code>REQUEST_MAX_MEMORY_GRANT_PERCENT</code>, <code>GROUP_MAX_REQUESTS</code>.</p> +<p>The <code>IMPORTANCE</code> set guesses what... the importance of that workload inside the pool, you can set LOW, MEDIUM, HIGH. GROUP_MAX_REQUESTS sets how many requests can run at the same time inside that workload (0 will set as NO LIMIT)</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="n">WORKLOAD</span><span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="o">[</span><span class="n">DepartmentA</span><span class="o">]</span><span class="w"> </span> +<span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">GROUP_MAX_REQUESTS</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">IMPORTANCE</span><span class="o">=</span><span class="n">LOW</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">REQUEST_MAX_CPU_TIME_SEC</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="c1">-- Time running/using CPU</span> +<span class="w"> </span><span class="n">REQUEST_MAX_MEMORY_GRANT_PERCENT</span><span class="o">=</span><span class="mi">15</span><span class="w"></span> +<span class="p">)</span><span class="w"> </span><span class="k">USING</span><span class="w"> </span><span class="o">[</span><span class="n">SpreadSheet</span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="c1">-- pool name here</span> +</code></pre></div> + +<h2>Classifier Function</h2> +<p>This is where everything begins... This is the entry point where you should set the group name. It's a function that will run for every new connection so be aware that if your function runs lots of queries or some heavy stuff... that time will be added to the connection handshake. If the function returns NULL or a group name that doesn't exist, the 'default' group will be used... Yes, there is a default workload group where everything runs where there's no classifier.</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="n">fnClassWorkloadGovernor</span><span class="p">()</span><span class="w"> </span> +<span class="k">RETURNS</span><span class="w"> </span><span class="n">SYSNAME</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="n">SCHEMABINDING</span><span class="w"> </span> +<span class="k">AS</span><span class="w"> </span> +<span class="k">BEGIN</span><span class="w"> </span> +<span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="nf">APP_NAME</span><span class="p">()</span><span class="w"> </span><span class="ow">LIKE</span><span class="w"> </span><span class="s1">&#39;%Excel%&#39;</span><span class="w"></span> +<span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="s1">&#39;DepartmentA&#39;</span><span class="w"></span> + +<span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="nf">HOST_NAME</span><span class="p">()</span><span class="w"> </span><span class="ow">LIKE</span><span class="w"> </span><span class="s1">&#39;%THAT_MACHINE_OR_APP_SERVER%&#39;</span><span class="w"></span> +<span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="s1">&#39;LowPriority&#39;</span><span class="w"></span> + +<span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="k">NULL</span><span class="w"></span> +<span class="k">END</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="n">CLASSIFIER_FUNCTION</span><span class="o">=</span><span class="n">dbo</span><span class="p">.</span><span class="n">fnClassWorkloadGovernor</span><span class="p">);</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">RECONFIGURE</span><span class="p">;</span><span class="w"></span> +</code></pre></div> + +<p>There you go... now you have a fully working resource governor, but look out that If you want to delete that classifier function, first you have to remove it from the resource governor (look the SCHEMABINDING at the create up there).</p> +<p>To disable Resource Governor</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="n">CLASSIFIER_FUNCTION</span><span class="o">=</span><span class="k">null</span><span class="p">)</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">RECONFIGURE</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="n">DISABLE</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div>Using git hooks to easy your life2019-07-30T20:00:00-03:002019-07-30T20:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-07-30:/using_git_hooks_easy_your_life.html<p>Hey folks, it's been a time since my last post. In the meantime, I moved to another state, changed job, and started learning new kinds of stuff. Today I would like to share one thing that I usually do with my small git projects. Git has many cool features, git …</p><p>Hey folks, it's been a time since my last post. In the meantime, I moved to another state, changed job, and started learning new kinds of stuff. Today I would like to share one thing that I usually do with my small git projects. Git has many cool features, git hooks were one of them. I'll talk about the pre-commit hook today.</p> +<p>Let's say that, for some reason, you don't have a CI tool/server running after every commit and you want to enforce that every developer runs the tests before every commit? Git pre-commit to the rescue. You can code the hooks with shell, ruby, python, and I could be wrong, but even PHP would work. pre-commit is a client-side hook (we have server side too) and he's located inside the <cite>.git/hooks</cite> folder. Let's jump to the code... Create a file called 'pre-commit' inside that folder with the following code.</p> +<div class="highlight"><pre><span></span><span class="ch">#!/bin/bash</span> +npm <span class="nb">test</span> <span class="c1"># assuming you&#39;re using it inside a nodeJS project</span> +</pre></div> +<p>Don't forget to make the script executable!! Now break your test and try to commit. That's easy but can save you from breaking the tests at the main CI/Travis/Codeship/etc and being notified by email :). Why not even validate the lint of your project or check if the coverage doesn't fall? Does your team/company have a patter for commit messages? No problem, there is a hook called <cite>commit-msg</cite> that you can use to validate your message.</p> +Microservices with NodeJS, Express.js and RabbitMQ Part 22018-04-13T13:00:00-03:002018-04-13T13:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-04-13:/microservices_nodejs_express_rabbitmq_part_2.html<p>If you haven't read the <a class="reference external" href="https://www.sipmann.com/microservices_nodejs_express_rabbitmq_part_1-en.html">part 1</a> go ahead and read it... It can be useful :). Or if for some reason you want to start now, you can grab the project where we stopped <a class="reference external" href="https://github.com/sipmann/imagecompacter/releases/tag/v1">here</a> and get along. On this part, we'll implement the RabbitMQ queue and see how we …</p><p>If you haven't read the <a class="reference external" href="https://www.sipmann.com/microservices_nodejs_express_rabbitmq_part_1-en.html">part 1</a> go ahead and read it... It can be useful :). Or if for some reason you want to start now, you can grab the project where we stopped <a class="reference external" href="https://github.com/sipmann/imagecompacter/releases/tag/v1">here</a> and get along. On this part, we'll implement the RabbitMQ queue and see how we can get the best of our app and server with that.</p> +<p>Before we began coding, let's understand why we are going to use RabbitMQ if what we have now works? If you check again, you'll see how long it takes to answer the request with the optimized image. It takes a few seconds, so imagine an online service with thousands of request to optimize images (like <a class="reference external" href="https://tinypng.com/">TinyPNG</a>) how long is it gonna take to answer every request? How much of your server is it gonna take? With only one service running, probably the server will crash.</p> +<p>With a queue, we can schedule the requests so we can use the amount of memory and processor that our server has, without taking more than we can. It's better to take a few seconds to answer the request then throw some error to the user. Want more? With RabbitMQ we can see how the queue is doing and we can add more consumers (workers) to it and get things done quicker and distribute the job.</p> +<p>First of all, we need an up and running Rabbit server, for the sake of simplicity, I'll use a Docker container with it inside.</p> +<div class="highlight"><pre><span></span>docker run -d --name rabbit -p <span class="m">5672</span>:5672 -p <span class="m">8080</span>:15672 rabbitmq:3-management +</pre></div> +<p>You can see that we're running the rabbitmq:3-management image, which provides us a web interface to see how things are going. After that, if you look at our code you'll see that all the job is made at the '/upload' route, and that's what we'll change.</p> +<p>First, we need to understand what we need from RabbitMQ. We need something that, we send an image to a queue and get an optimized image back from that. There is a name for that, is RPC (remote procedure call) and there are two ways of doing this with rabbit. Both the ways you can see on their tutorial page. We'll use the approach that uses a global channel whose id is randomly generated (you'll use the name 'amq.rabbitmq.reply-to' but the rabbit will do the job).</p> +<p>Let's start importing the library, defining a few variables and defining a init function that will establish a connection with the rabbit server and create our RPC queue. The RPC queue it's where we'll receive the answer from the consumer (our worker).</p> +<div class="highlight"><pre><span></span><span class="c1">//import the library</span> +<span class="kr">const</span> <span class="nx">amqplib</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;amqplib&#39;</span><span class="p">);</span> + +<span class="c1">//queue channel</span> +<span class="kd">let</span> <span class="nx">channel</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span> +<span class="c1">//queue name</span> +<span class="kr">const</span> <span class="nx">QUEUE</span> <span class="o">=</span> <span class="s1">&#39;optimizeimg&#39;</span><span class="p">;</span> + +<span class="c1">//...</span> + +<span class="kd">function</span> <span class="nx">init</span><span class="p">()</span> <span class="p">{</span> + <span class="k">return</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;amqplib&#39;</span><span class="p">).</span><span class="nx">connect</span><span class="p">(</span><span class="s1">&#39;amqp://localhost&#39;</span><span class="p">)</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">conn</span> <span class="p">=&gt;</span> <span class="nx">conn</span><span class="p">.</span><span class="nx">createChannel</span><span class="p">())</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">ch</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">channel</span> <span class="o">=</span> <span class="nx">ch</span><span class="p">;</span> + + <span class="c1">//this queue is a &quot;Direct reply-to&quot; read more at the docs</span> + <span class="c1">//When some msg comes in, we &quot;emit&quot; a message to the proper &quot;correlationId&quot; listener</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">consume</span><span class="p">(</span><span class="s1">&#39;amq.rabbitmq.reply-to&#39;</span><span class="p">,</span> <span class="nx">msg</span> <span class="p">=&gt;</span> <span class="nx">eventEmitter</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="nx">msg</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">correlationId</span><span class="p">,</span> <span class="nx">msg</span><span class="p">.</span><span class="nx">content</span><span class="p">),</span> <span class="p">{</span><span class="nx">noAck</span><span class="o">:</span> <span class="kc">true</span><span class="p">});</span> + <span class="p">});</span> +<span class="p">}</span> + +<span class="c1">//Random id generator</span> +<span class="kd">function</span> <span class="nx">randomid</span><span class="p">()</span> <span class="p">{</span> + <span class="k">return</span> <span class="k">new</span> <span class="nb">Date</span><span class="p">().</span><span class="nx">getTime</span><span class="p">().</span><span class="nx">toString</span><span class="p">()</span> <span class="o">+</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">().</span><span class="nx">toString</span><span class="p">()</span> <span class="o">+</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">().</span><span class="nx">toString</span><span class="p">();</span> +<span class="p">}</span> + +<span class="nx">app</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span><span class="s1">&#39;/upload&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="kd">let</span> <span class="nx">img</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">files</span><span class="p">.</span><span class="nx">image</span><span class="p">;</span> + + <span class="kd">let</span> <span class="nx">id</span> <span class="o">=</span> <span class="nx">randomid</span><span class="p">();</span> + + <span class="c1">//Event listener that will fire when the proper randomid is provided</span> + <span class="nx">eventEmitter</span><span class="p">.</span><span class="nx">once</span><span class="p">(</span><span class="nx">id</span><span class="p">,</span> <span class="nx">msg</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">write</span><span class="p">(</span><span class="nx">msg</span><span class="p">,</span> <span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">end</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="p">});</span> + + <span class="c1">//Checks if the queue exists, and create it if needed.</span> + <span class="nx">channel</span><span class="p">.</span><span class="nx">assertQueue</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">)</span> + <span class="c1">//Sent the buffered img to the queue with the ID and the responseQueue</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="nx">channel</span><span class="p">.</span><span class="nx">sendToQueue</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">,</span> <span class="nx">img</span><span class="p">.</span><span class="nx">data</span><span class="p">,</span> <span class="p">{</span><span class="nx">correlationId</span><span class="o">:</span><span class="nx">id</span><span class="p">,</span> <span class="nx">replyTo</span><span class="o">:</span> <span class="s1">&#39;amq.rabbitmq.reply-to&#39;</span><span class="p">}));</span> + +<span class="p">});</span> + +<span class="c1">//Finally start the app with the given port number</span> +<span class="c1">//now we initialize the rabbitmq connection before start the server</span> +<span class="nx">init</span><span class="p">()</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="nx">app</span><span class="p">.</span><span class="nx">listen</span><span class="p">(</span><span class="mi">4000</span><span class="p">,</span> <span class="p">()</span> <span class="p">=&gt;</span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;Example app listening on port 4000!&#39;</span><span class="p">)))</span> + <span class="p">.</span><span class="k">catch</span><span class="p">(</span><span class="nx">err</span><span class="p">=&gt;</span><span class="nx">console</span><span class="p">.</span><span class="nx">error</span><span class="p">(</span><span class="nx">err</span><span class="p">));</span> +</pre></div> +<p>Ok, now we have our server code rewritten so let's see our worker code. Create a file named 'worker.js' and let's see how it's gonna be. It's really simple. You initialize a connection with RabbitMQ too, create a channel, check if the queue exists and start watching for incoming messages. When an image arrives, we do the job with it and send back to the &quot;replyTo&quot; queue the optimized image for the proper sender (correlationId). In the end, we do an acknowledge of the message so it get's out from the queue.</p> +<div class="highlight"><pre><span></span><span class="kr">const</span> <span class="nx">imagemin</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin&#39;</span><span class="p">);</span> +<span class="kr">const</span> <span class="nx">imageminPngquant</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin-pngquant&#39;</span><span class="p">);</span> + +<span class="kd">let</span> <span class="nx">channel</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span> +<span class="kr">const</span> <span class="nx">QUEUE</span> <span class="o">=</span> <span class="s1">&#39;imgqueue&#39;</span><span class="p">;</span> + +<span class="nx">require</span><span class="p">(</span><span class="s1">&#39;amqplib&#39;</span><span class="p">).</span><span class="nx">connect</span><span class="p">(</span><span class="s1">&#39;amqp://localhost&#39;</span><span class="p">)</span> +<span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">conn</span> <span class="p">=&gt;</span><span class="nx">conn</span><span class="p">.</span><span class="nx">createChannel</span><span class="p">())</span> +<span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">ch</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">assertQueue</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">)</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="c1">//Watch incomming messages</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">consume</span><span class="p">(</span><span class="nx">QUEUE</span><span class="p">,</span> <span class="nx">msg</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">imagemin</span><span class="p">.</span><span class="nx">buffer</span><span class="p">(</span><span class="nx">msg</span><span class="p">.</span><span class="nx">content</span><span class="p">,</span> <span class="p">{</span> + <span class="nx">plugins</span><span class="o">:</span> <span class="p">[</span><span class="nx">imageminPngquant</span><span class="p">()]</span> + <span class="p">})</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">out</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="c1">//Send back to the sender (replyTo) queue and give the correlationId back</span> + <span class="c1">//so we can emit the event.</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">sendToQueue</span><span class="p">(</span><span class="nx">msg</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">replyTo</span><span class="p">,</span> <span class="nx">out</span><span class="p">,</span> <span class="p">{</span> + <span class="nx">correlationId</span><span class="o">:</span> <span class="nx">msg</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">correlationId</span> + <span class="p">});</span> + + <span class="c1">//Acknowledge the job done with the message.</span> + <span class="nx">ch</span><span class="p">.</span><span class="nx">ack</span><span class="p">(</span><span class="nx">msg</span><span class="p">);</span> + <span class="p">});</span> + <span class="p">});</span> + <span class="p">});</span> +<span class="p">});</span> +</pre></div> +<p>The key points here are. Open just one connection to the hole server. You CAN create one channel for every request that you receive, but it can take some time if you have a really big cluster of RabbitMQ. It was a quick tutorial, but I hope that it was able to clear a few questions that you might have when working with rabbit and express.</p> +Microservices with NodeJS, Express.js and RabbitMQ Part 12018-04-04T11:25:00-03:002018-04-04T11:25:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-04-04:/microservices_nodejs_express_rabbitmq_part_1.html<p>This is the first part of a microservices development series. The service will consist of the bellow architecture, where we will expose an image optimizer service that will forward the request to a <a class="reference external" href="https://www.rabbitmq.com/">RabbitMQ</a> queue and answer with the bytecode of the optimized image. It shouldn't be a long series …</p><p>This is the first part of a microservices development series. The service will consist of the bellow architecture, where we will expose an image optimizer service that will forward the request to a <a class="reference external" href="https://www.rabbitmq.com/">RabbitMQ</a> queue and answer with the bytecode of the optimized image. It shouldn't be a long series so let's see what we can do.</p> +<img alt="Service architecture" src="/images/microservices_rabit_pt1.png" /> +<p>Let's get our environment working. First, we'll need to install the libraries that we'll use.</p> +<p>Create a dir and initialize the nodejs application inside it (<cite>npm init</cite>) and then let's install the deps.</p> +<ul class="simple"> +<li>amqplib - AMQP lib to interact with rabbitmq</li> +<li>express - Do our basic rest API</li> +<li>express-fileupload - easy file upload parser</li> +<li>imagemin and imagemin-pngquant - our image compacter</li> +</ul> +<div class="highlight"><pre><span></span>npm install --save express amqplib express-fileupload imagemin imagemin-pngquant +</pre></div> +<p>Now let's write the entry points for our service, we'll have two basic entry points. The path <cite>/</cite> that will have a welcome message, the second path will be <cite>/upload</cite> and this is the one that will handle the image and produce a job for our workers.</p> +<div class="highlight"><pre><span></span><span class="kr">const</span> <span class="nx">express</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;express&#39;</span><span class="p">);</span> +<span class="kr">const</span> <span class="nx">fileUpload</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;express-fileupload&#39;</span><span class="p">);</span> + +<span class="c1">//Instantiate the app and set the fileupload parser to manage files</span> +<span class="kr">const</span> <span class="nx">app</span> <span class="o">=</span> <span class="nx">express</span><span class="p">();</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">use</span><span class="p">(</span><span class="nx">fileUpload</span><span class="p">());</span> + +<span class="c1">//Our index entry point</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="nx">res</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="s1">&#39;Hello From ImageCompacter service&#39;</span><span class="p">));</span> + +<span class="c1">//The path that will handle the image file and throw them to the queue</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span><span class="s1">&#39;/upload&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="c1">//With express-fileupload we can grab the files like this</span> + <span class="kd">let</span> <span class="nx">img</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">files</span><span class="p">.</span><span class="nx">image</span><span class="p">;</span> <span class="c1">//&quot;image&quot; is the name of the input</span> + + <span class="nx">res</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="s1">&#39;Not ready yet&#39;</span><span class="p">);</span> +<span class="p">});</span> + +<span class="c1">//Finally start the app with the given port number</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">listen</span><span class="p">(</span><span class="mi">4000</span><span class="p">,</span> <span class="p">()</span> <span class="p">=&gt;</span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;Example app listening on port 4000!&#39;</span><span class="p">));</span> +</pre></div> +<p>Let's check if it works, run the service with node.</p> +<div class="highlight"><pre><span></span>node index.js +Example app listening on port <span class="m">4000</span>! +</pre></div> +<p>Open the browser and check if it prints our hello message when accessing <cite>localhost:4000</cite>. Works? Greate. Now let's work with the image and see how we do it. To optimize our image, we'll use the library imagemin and <a class="reference external" href="https://www.npmjs.com/package/imagemin-pngquant">imagemin-pngquant</a>, it will be that simple for now, we'll work with rabbitmq latter.</p> +<div class="highlight"><pre><span></span><span class="kr">const</span> <span class="nx">imagemin</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin&#39;</span><span class="p">);</span> +<span class="kr">const</span> <span class="nx">imageminPngquant</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;imagemin-pngquant&#39;</span><span class="p">);</span> +<span class="c1">//...</span> + +<span class="c1">//The path that will handle the image file and throw them to the queue</span> +<span class="nx">app</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span><span class="s1">&#39;/upload&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="kd">let</span> <span class="nx">img</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">files</span><span class="p">.</span><span class="nx">image</span><span class="p">;</span> <span class="c1">//&quot;image&quot; is the name of the input</span> + + <span class="nx">imagemin</span><span class="p">.</span><span class="nx">buffer</span><span class="p">(</span><span class="nx">img</span><span class="p">.</span><span class="nx">data</span><span class="p">,</span> <span class="p">{</span> + <span class="nx">plugins</span><span class="o">:</span> <span class="p">[</span><span class="nx">imageminPngquant</span><span class="p">()]</span> + <span class="p">})</span> + <span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">out</span> <span class="p">=&gt;</span> <span class="p">{</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">write</span><span class="p">(</span><span class="nx">out</span><span class="p">,</span><span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="nx">res</span><span class="p">.</span><span class="nx">end</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="s1">&#39;binary&#39;</span><span class="p">);</span> + <span class="p">});</span> +<span class="p">});</span> + + <span class="c1">//...</span> +</pre></div> +<p>Use <a class="reference external" href="https://www.getpostman.com/">Postman</a> to test the request. To see if it will work, make a request to <cite>http://localhost:4000/upload</cite> with a formdata with a file. Select the &quot;send and Download&quot; instead of &quot;Send&quot; and you should have an image after that. Bellow an image of how your postman should be.</p> +<img alt="Postman" src="/images/microservice_postman.png" /> +<p>That's it for today, next week we'll change our code to use RabbitMQ.</p> +Connecting to a database through SSH2018-03-29T10:03:00-03:002018-03-29T10:03:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-29:/connecting_to_database_through_ssh.html<p>If someday, for some reason, you need to establish a connection with a database which is behind a firewall and you only have SSH access on that server (and you don't want to use a CLI) you can do an SSH tunnel. It's pretty simple, bellow has a sample of …</p><p>If someday, for some reason, you need to establish a connection with a database which is behind a firewall and you only have SSH access on that server (and you don't want to use a CLI) you can do an SSH tunnel. It's pretty simple, bellow has a sample of how to allow connections to a remote Firebird database.</p> +<div class="highlight"><pre><span></span>ssh -L <span class="m">3051</span>:192.168.1.9:3050 username@192.168.1.9 +</pre></div> +<p>The <cite>-L</cite> parameter tells to SSH do a local port forwarding on local port <cite>3051</cite> to remote port <cite>3050</cite>. You can use it to a connection with many services, not just databases.</p> +<p>You can do the reverse kind of tunnel, forward connections from the host to your local machine, you just have to change the parameter form &quot;-L&quot; to &quot;-R&quot; and the port order is inverted, first come the port where the server will listen and after your localhost port. This remote port forwarding must be enabled on the server. Look for <cite>GatewayPorts</cite> at the ssh config file.</p> +<div class="highlight"><pre><span></span>ssh -R <span class="m">3050</span>:localhost:3050 username@192.168.1.9 +</pre></div> +<p>Why whould you need something like that?? Let's say you want to share a localhost site/database with a friend, but your internet connection don't allow you to expose any port but you have access to a remote server witch can do that. Problem solved ;).</p> +Now posting on Grepora2018-03-24T00:40:00-03:002018-03-24T00:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-24:/now_posting_on_grepora.html<p>A few weeks ago I started posting at <a class="reference external" href="https://grepora.com/blog/">Grepora</a> blog. If you like or are looking for some Oracle related stuff, Grepora it's a good place to go and spend a time reading :). From time to time I'll be posting there, it doesn't mean that this blog will be closed …</p><p>A few weeks ago I started posting at <a class="reference external" href="https://grepora.com/blog/">Grepora</a> blog. If you like or are looking for some Oracle related stuff, Grepora it's a good place to go and spend a time reading :). From time to time I'll be posting there, it doesn't mean that this blog will be closed or anything like that, but probably this one will be more focused on Front-end stuff, a few tricks with linux and a lil less with Java.</p> +Scaffolding a React app with Parcel and Yeoman2018-03-17T13:00:00-03:002018-03-17T13:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-17:/scaffolding_react_app_with_parcel_yeoman.html<p>Since <a class="reference external" href="https://parceljs.org/">Parcel JS</a> arrived, I've been using it a lot as an awesome alternative for WebPack. Webpack isn't bad but IMO it's too complex for the job and parcel do the same (at least the basic) with almost zero configuration. But if you need to create many apps (like a …</p><p>Since <a class="reference external" href="https://parceljs.org/">Parcel JS</a> arrived, I've been using it a lot as an awesome alternative for WebPack. Webpack isn't bad but IMO it's too complex for the job and parcel do the same (at least the basic) with almost zero configuration. But if you need to create many apps (like a react app) over and over again, it get's a lil boring following the basic steps.</p> +<div class="highlight"><pre><span></span>npm init -y +npm install --save react +npm install --save react-dom +npm install --save-dev parcel-bundler +npm install --save-dev babel-preset-env +npm install --save-dev babel-preset-react + +<span class="c1">#create .babelrc file</span> +<span class="c1">#create html, css, jsx files</span> + +parcel index.html +</pre></div> +<p>It's not a hard job, a simple shell script do the job, but what if you need some IFs when creating the app, or even change a few things at the <cite>package.json</cite>? A shell script still does the job, but come on... There is a better way. <a class="reference external" href="http://yeoman.io/">Yeoman</a> is here for you. I've already <a class="reference external" href="https://www.sipmann.com/desenvolvendo-app-firefoxos-pt.html">talked about it</a> on another post (Portuguese post).</p> +<p>Straight to the point, I've released a Yeoman generator to get the things a lil quicker. The name is <a class="reference external" href="https://www.npmjs.com/package/generator-parcel-react">generator-parcel-react</a> and it still lacks a few things that I will deal with soon. It's pretty simple to use it.</p> +<div class="highlight"><pre><span></span><span class="c1">#First time only</span> +npm install -g yo +npm install -g generator-parcel-react + +<span class="c1">#every time you create a new app</span> +yo parcel-react +</pre></div> +<p>And that's it. Right now you can scaffold and app with React, SASS and React Router. Hope you like it and feel free to ask new features.</p> +Could not open connection with MySQL and Hibernate2018-03-09T12:35:00-03:002018-03-09T12:35:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-09:/cloud-not-open-connection-java-mysql-hibernate.html<p>Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some &quot;Could not open connection&quot; at my …</p><p>Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some &quot;Could not open connection&quot; at my face, but why? I've tried to connect to it manually and got the same problem.</p> +<p>After some research, I found that the true error should be java.sql.SQLException: null, message from server: &quot;Host '172.17.0.4' is not allowed to connect to this MySQL server&quot; but it wasn't showing to me...</p> +<p>After all, be aware that with the docker image MySQL:5.7.21 (latest version right now) the root user isn't allowed to remote connect to the database (it's alright, security reasons) and if you still want to do remote connections to it with root there are a few things you can do.</p> +<ol class="arabic simple"> +<li>Create a user or allow root to access from other IPs.</li> +</ol> +<div class="highlight"><pre><span></span><span class="o">#</span><span class="k">No</span> <span class="k">access</span> <span class="k">to</span> <span class="k">user</span> <span class="n">root</span> <span class="k">on</span> <span class="k">any</span> <span class="n">other</span> <span class="n">IP</span> +<span class="k">SELECT</span> <span class="k">User</span><span class="p">,</span> <span class="k">Host</span> <span class="k">FROM</span> <span class="n">mysql</span><span class="p">.</span><span class="k">user</span><span class="p">;</span> +<span class="o">+</span><span class="c1">---------------+-----------+</span> +<span class="o">|</span> <span class="k">User</span> <span class="o">|</span> <span class="k">Host</span> <span class="o">|</span> +<span class="o">+</span><span class="c1">---------------+-----------+</span> +<span class="o">|</span> <span class="n">healthchecker</span> <span class="o">|</span> <span class="n">localhost</span> <span class="o">|</span> +<span class="o">|</span> <span class="n">root</span> <span class="o">|</span> <span class="n">localhost</span> <span class="o">|</span> +<span class="o">+</span><span class="c1">---------------+-----------+</span> +<span class="mi">2</span> <span class="k">rows</span> <span class="k">in</span> <span class="k">set</span> <span class="p">(</span><span class="mi">0</span><span class="p">.</span><span class="mi">01</span> <span class="n">sec</span><span class="p">)</span> + +<span class="k">CREATE</span> <span class="k">USER</span> <span class="s1">&#39;newuser&#39;</span><span class="o">@</span><span class="s1">&#39;%&#39;</span> <span class="n">IDENTIFIED</span> <span class="k">BY</span> <span class="s1">&#39;password&#39;</span><span class="p">;</span> <span class="o">#%</span> <span class="n">mean</span> <span class="k">any</span> <span class="n">IP</span> +<span class="k">GRANT</span> <span class="k">ALL</span> <span class="k">PRIVILEGES</span> <span class="k">ON</span> <span class="o">*</span><span class="p">.</span><span class="o">*</span> <span class="k">TO</span> <span class="s1">&#39;newuser&#39;</span><span class="o">@</span><span class="s1">&#39;%&#39;</span><span class="p">;</span> <span class="o">#*</span><span class="p">.</span><span class="o">*</span> <span class="n">mean</span> <span class="k">database</span><span class="p">.</span><span class="k">table</span> <span class="p">;)</span> +</pre></div> +<ol class="arabic simple" start="2"> +<li>Use MariaDB instead, witch come (at least on the version 10.2.13) with root allowed to do remote connections and will work like MySQL :)</li> +</ol> +<p>I changed to <a class="reference external" href="https://mariadb.org/">MariaDB</a> as it work without creating user or any changes on the Java code or the <cite>docker run command</cite>.</p> +Solving java.net.SocketException: Protocol family unavailable on a Java + Docker + WildFly2018-03-04T17:40:00-03:002018-03-04T17:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-04:/socketException-protocol-family-unavailable-java-docker-wildfly.html<p>On the last days I've been playing with <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> and I decided to deploy a simple app with Docker. Should work fine, at least that was what I thought. Built a container with the following Dockerfile and instead of a working web app, all that I got was the …</p><p>On the last days I've been playing with <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> and I decided to deploy a simple app with Docker. Should work fine, at least that was what I thought. Built a container with the following Dockerfile and instead of a working web app, all that I got was the error <cite>java.net.SocketException: Protocol family unavailable</cite>.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">CMD</span> <span class="p">[</span><span class="s2">&quot;java&quot;</span><span class="p">,</span><span class="s2">&quot;-jar&quot;</span><span class="p">,</span><span class="s2">&quot;/opt/issues.jar&quot;</span><span class="p">]</span> +</pre></div> +<p>For some reason, WildFly and Java decided to use the IPv6 network interface from Docker instead the v4, so all you have to do is tell Java to prefer IPv4 instead with the following configuration option in your pom.xml file inside your WildFly plugin.</p> +<div class="highlight"><pre><span></span><span class="nt">&lt;plugin&gt;</span> + <span class="nt">&lt;groupId&gt;</span>org.wildfly.swarm<span class="nt">&lt;/groupId&gt;</span> + <span class="nt">&lt;artifactId&gt;</span>wildfly-swarm-plugin<span class="nt">&lt;/artifactId&gt;</span> + <span class="nt">&lt;version&gt;</span>2018.2.0<span class="nt">&lt;/version&gt;</span> + + <span class="c">&lt;!-- ADD THIS --&gt;</span> + <span class="nt">&lt;configuration&gt;</span> + <span class="nt">&lt;mainClass&gt;</span>org.wildfly.swarm.examples.netflix.ribbon.frontend.Main<span class="nt">&lt;/mainClass&gt;</span> + <span class="nt">&lt;properties&gt;</span> + <span class="nt">&lt;java.net.preferIPv4Stack&gt;</span>true<span class="nt">&lt;/java.net.preferIPv4Stack&gt;</span> + <span class="nt">&lt;/properties&gt;</span> + <span class="nt">&lt;/configuration&gt;</span> +</pre></div> +<p>Another way to solve is adding the same properties to the run command at the Dockerfile, so you choose where you'll add it. Bellow the Dockerfile solution.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> +<span class="k">ENV</span> <span class="nv">JAVA_OPTS</span><span class="o">=</span><span class="s2">&quot;-Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true&quot;</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">ENTRYPOINT</span> <span class="nb">exec</span> java <span class="nv">$JAVA_OPTS</span> -jar /opt/issues.jar +</pre></div> +Change display settings on linux with Disper2018-02-27T12:40:00-03:002018-02-27T12:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-02-27:/linux-external-display-with-disper.html<p>From time to time, I change the Linux distro on my laptop or just do a fresh install on it. And once in a while, have random problems with external displays. It can be something really &quot;simple&quot; like don't detecting the external monitor or something crazy like the image below …</p><p>From time to time, I change the Linux distro on my laptop or just do a fresh install on it. And once in a while, have random problems with external displays. It can be something really &quot;simple&quot; like don't detecting the external monitor or something crazy like the image below.</p> +<img alt="Display bug" src="/images/bug.png" /> +<p>As you can see at the image, the mint detected the display but mirrored it in a crazy way that works but doesn't at the same time. If you try anything and doesn't get working, or just wanna skip the whole job of configuring complexes text files, give a try to <a class="reference external" href="http://willem.engen.nl/projects/disper/">Disper</a>. Download the latest version. +Extract it on any folder, and make install it (on the extracted folder).</p> +<div class="highlight"><pre><span></span>make install +</pre></div> +<p>After that, you can start using it... There are a few options that will serve you well.</p> +<div class="highlight"><pre><span></span>disper -e <span class="c1">#extend your display</span> +</pre></div> +<div class="highlight"><pre><span></span>disper -c <span class="c1">#clone your display</span> +</pre></div> +<div class="highlight"><pre><span></span>disper -s <span class="c1">#only your external display</span> +</pre></div> +Java - Files.readAllBytes throws OutOfMemory2018-02-17T13:00:00-02:002018-02-17T13:00:00-02:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-02-17:/reading-files-java-readAllBytes-outofmemory.html<p>When you need to interact with files, there's the possibility to read all bytes from the file with <cite>Files.readAllBytes</cite>. But be aware of the kinds of files your application will deal with because the Java API files have a limit for the buffer that is defined as <cite>Integer.MAX_VALUE …</cite></p><p>When you need to interact with files, there's the possibility to read all bytes from the file with <cite>Files.readAllBytes</cite>. But be aware of the kinds of files your application will deal with because the Java API files have a limit for the buffer that is defined as <cite>Integer.MAX_VALUE</cite> as you can see above or at the OpenJDK sources.</p> +<div class="highlight"><pre><span></span><span class="kd">public</span> <span class="kd">static</span> <span class="kt">byte</span><span class="o">[]</span> <span class="nf">readAllBytes</span><span class="p">(</span><span class="n">Path</span> <span class="n">path</span><span class="p">)</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="p">{</span> + <span class="k">try</span> <span class="p">(</span><span class="n">FileChannel</span> <span class="n">fc</span> <span class="o">=</span> <span class="n">FileChannel</span><span class="p">.</span><span class="na">open</span><span class="p">(</span><span class="n">path</span><span class="p">))</span> <span class="p">{</span> + <span class="kt">long</span> <span class="n">size</span> <span class="o">=</span> <span class="n">fc</span><span class="p">.</span><span class="na">size</span><span class="p">();</span> + <span class="k">if</span> <span class="p">(</span><span class="n">size</span> <span class="o">&gt;</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">Integer</span><span class="p">.</span><span class="na">MAX_VALUE</span><span class="p">)</span> + <span class="k">throw</span> <span class="k">new</span> <span class="n">OutOfMemoryError</span><span class="p">(</span><span class="s">&quot;Required array size too large&quot;</span><span class="p">);</span> + + <span class="kt">byte</span><span class="o">[]</span> <span class="n">arr</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">byte</span><span class="o">[</span><span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">size</span><span class="o">]</span><span class="p">;</span> + <span class="n">ByteBuffer</span> <span class="n">bb</span> <span class="o">=</span> <span class="n">ByteBuffer</span><span class="p">.</span><span class="na">wrap</span><span class="p">(</span><span class="n">arr</span><span class="p">);</span> + <span class="k">while</span> <span class="p">(</span><span class="n">bb</span><span class="p">.</span><span class="na">hasRemaining</span><span class="p">())</span> <span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="n">fc</span><span class="p">.</span><span class="na">read</span><span class="p">(</span><span class="n">bb</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> + <span class="c1">// truncated</span> + <span class="k">break</span><span class="p">;</span> + <span class="p">}</span> + <span class="p">}</span> + + <span class="kt">int</span> <span class="n">nread</span> <span class="o">=</span> <span class="n">bb</span><span class="p">.</span><span class="na">position</span><span class="p">();</span> + <span class="k">return</span> <span class="p">(</span><span class="n">nread</span> <span class="o">==</span> <span class="n">size</span><span class="p">)</span> <span class="o">?</span> <span class="n">arr</span> <span class="p">:</span> <span class="n">Arrays</span><span class="p">.</span><span class="na">copyOf</span><span class="p">(</span><span class="n">arr</span><span class="p">,</span> <span class="n">nread</span><span class="p">);</span> + <span class="p">}</span> +<span class="p">}</span> +</pre></div> +<p>With that in mind, check if isn't better read chunks of bytes e work with that slice in exchange of loading the whole file into the memory ;). Above a simple example of how you can read chunks of bytes from the file.</p> +<div class="highlight"><pre><span></span><span class="kt">byte</span><span class="o">[]</span> <span class="n">buffer</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">byte</span><span class="o">[</span><span class="mi">1024</span><span class="o">]</span><span class="p">;</span> +<span class="n">FileInputStream</span> <span class="n">in</span> <span class="o">=</span> <span class="k">new</span> <span class="n">FileInputStream</span><span class="p">(</span><span class="n">file</span><span class="p">);</span> +<span class="kt">int</span> <span class="n">rc</span> <span class="o">=</span> <span class="n">in</span><span class="p">.</span><span class="na">read</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span> +<span class="k">while</span> <span class="p">(</span><span class="n">rc</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> +<span class="p">{</span> + <span class="c1">//crazy stuff here with buffer</span> + <span class="n">rc</span> <span class="o">=</span> <span class="n">in</span><span class="p">.</span><span class="na">read</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span> +<span class="p">}</span> +</pre></div> + \ No newline at end of file diff --git a/feeds/mauricio-camargo-sipmann.atom.xml.gz b/feeds/mauricio-camargo-sipmann.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..5602750351f3e8f320a65c7bb53a1230a88248d6 GIT binary patch literal 26314 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 RmD2vp{|~`yaWj+W0svGhIY9sb literal 0 HcmV?d00001 diff --git a/feeds/mauricio-camargo-sipmann.rss.xml b/feeds/mauricio-camargo-sipmann.rss.xml new file mode 100644 index 000000000..a99ad4a74 --- /dev/null +++ b/feeds/mauricio-camargo-sipmann.rss.xml @@ -0,0 +1,28 @@ + +Sipmann - Maurício Camargo Sipmannhttps://www.sipmann.com/Mon, 21 Dec 2020 13:30:00 -0300Monitoring MySQL restarts with PowerShellhttps://www.sipmann.com/monitoring-mysql-restarts-with-powershell.html<p>Hey folks, it's time for another PowerShell script. If you haven't seen the other ones, check the links below.</p> +<ul> +<li><a href="https://www.sipmann.com/en/monitoring-mysql-replication-with-powershell.html">Monitoring MySQL replication with PowerShell</a></li> +</ul> +<p>Well, this one it's a pretty simple script, but again, if your customer doesn't have a Zabbix server or doesn't allow you to setup one to …</p>Maurício Camargo SipmannMon, 21 Dec 2020 13:30:00 -0300tag:www.sipmann.com,2020-12-21:/monitoring-mysql-restarts-with-powershell.htmlPowerShellMySQLMySQL RestartPowershell monitoringChanging a MySQL user password across multiple application instances without downtimehttps://www.sipmann.com/mysql-dual-password-functionality.html<p>Do you need to change the password of a MySQL user that it's being used in an application, and can't allow a single downtime? Well, MySQL 8.0.14 came with a feature called <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, with it you can change the password keeping the previous password as a …</p>Maurício Camargo SipmannWed, 09 Dec 2020 13:40:00 -0300tag:www.sipmann.com,2020-12-09:/mysql-dual-password-functionality.htmlMySQLMySQLMySQL Dual PasswordApache Nifi JSON to SQL Replacing underscorehttps://www.sipmann.com/apache-nifi-json-to-sql-replacing-underscore.html<p>Recently I was doing some ETL with Apache NiFi. But after a few minutes of drawing my flow, I saw that the component ConvertJSONToSQL was replacing the underscore ('_') from the field name in the where condition (I was preparing an Update SQL). That was weird because, at the set …</p>Maurício Camargo SipmannWed, 02 Dec 2020 14:00:00 -0300tag:www.sipmann.com,2020-12-02:/apache-nifi-json-to-sql-replacing-underscore.htmlToolsApache NifiConvertJSONToSQLreplacing underscoreBlocking a user on SQL Server based on a schedulehttps://www.sipmann.com/blocking-user-on-sql-server-based-on-schedule.html<p>Ok, some time ago, I've posted about how you can set limits to connections on SQL Server using the <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. But what if you can't use it? You always can block logins using a login trigger, but I don't like the idea of having selects running on every login …</p>Maurício Camargo SipmannSat, 14 Nov 2020 07:00:00 -0300tag:www.sipmann.com,2020-11-14:/blocking-user-on-sql-server-based-on-schedule.htmlSQL ServerSQLServerUserTime Schedule blockingHow to set columns on select using Entity Frameworkhttps://www.sipmann.com/select_specific_fields_with_efcore.html<p>So, you use Entity Framework Core, and you usually code your selects like the following, maybe you are getting too much data.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Running the query above, on my table, you'll get the following output, take a look …</p>Maurício Camargo SipmannWed, 28 Oct 2020 19:00:00 -0300tag:www.sipmann.com,2020-10-28:/select_specific_fields_with_efcore.html.NETDotNetDotNet CoreEntity FrameworkEF CoreSpecify columnsZabbix Running on Low Memory Modehttps://www.sipmann.com/zabbix-running-on-low-memory-mode.html<p>Hey folks, another Zabbix post today. This one it's about increasing the Zabbix Server Cache. It's pretty common (if you have the default settings only) get a warning about your <code>Zabbix value cache running on low memory mode</code> at your dashboard or logs.</p> +<p><img alt="Zabbix Dashboard warning about the memory problem" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache graph 70% used" src="/images/zabbix_cache_filling.png"></p> +<p>To solve, go back to your Zabbix …</p>Maurício Camargo SipmannTue, 20 Oct 2020 19:00:00 -0300tag:www.sipmann.com,2020-10-20:/zabbix-running-on-low-memory-mode.htmlLinuxZabbixShellLow memoryCacheMonitoring MySQL Replication Status with PowerShellhttps://www.sipmann.com/monitoring-mysql-replication-with-powershell.html<p>I've been migration some bash scripts that I have to PowerShell, and it's time to migrate a script that monitors the replication of a MySQL database. The credit for the original script goes to <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. It's a simple script where I seek a few tags/fields that we get from …</p>Maurício Camargo SipmannWed, 14 Oct 2020 19:00:00 -0300tag:www.sipmann.com,2020-10-14:/monitoring-mysql-replication-with-powershell.htmlPowerShellMySQLMySQL ReplicationPowerShellPowershell mailMicrosoft Against Covidhttps://www.sipmann.com/microsoft-against-covid.html<p>Has your job been affected by covid? Well, last week I've posted on <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by …</p>Maurício Camargo SipmannSat, 03 Oct 2020 19:00:00 -0300tag:www.sipmann.com,2020-10-03:/microsoft-against-covid.htmlAzureAzureCertificationMicrosoftThe power of PowerShellhttps://www.sipmann.com/the-power-of-powershell.html<p>As a long time Linux user, I've automated a few things with bash scripts and stayed away from PowerShell... I've moved to a Windows environment a few years ago and still, haven gave a shot to PS. But why not? I've made a few scripts to automate some tasks at …</p>Maurício Camargo SipmannMon, 21 Sep 2020 19:00:00 -0300tag:www.sipmann.com,2020-09-21:/the-power-of-powershell.htmlPowerShellAzurePowerShellScriptGetChild-ItemRemove-ItemStop-ProccessTop Level Statement in C# 9https://www.sipmann.com/top_level_statement_csharp_9.html<p>Hey folks, I'm coming along to tell you a few things about the new feature of C# 9. Every time you want to start a new project, you always have the same Main File, with the same structure. At the next version of C# (version 9), we'll have a new …</p>Maurício Camargo SipmannWed, 29 Jul 2020 19:00:00 -0300tag:www.sipmann.com,2020-07-29:/top_level_statement_csharp_9.html.NETC#Dotnet CoreDotNet.netZabbix poller processes more than 75%https://www.sipmann.com/zabbix-poller-processes-more-than-75.html<p>Hey folks, this is the third post about tweaking the Zabbix configurations. All changes that I've suggested here were based on a Zabbix Server with 50+ hosts. Another thing that can happen to your server, it's the poller get overwhelmed by the amount of servers that need to be polled …</p>Maurício Camargo SipmannThu, 02 Jul 2020 19:00:00 -0300tag:www.sipmann.com,2020-07-02:/zabbix-poller-processes-more-than-75.htmlLinuxZabbixShellZabbix PollerPoller proccess more than 75%Monitoring a Website heath with Azure Functionshttps://www.sipmann.com/monitoring-website-heath-with-azure-functions.html<p>Sometimes you get your self in need to monitor a website's health or it's content for changes. Of course, there's plenty of options out there, but for the sake of curiosity, let's code our own to see what we can do. First things first. Everything you'll see here, you can …</p>Maurício Camargo SipmannMon, 22 Jun 2020 19:00:00 -0300tag:www.sipmann.com,2020-06-22:/monitoring-website-heath-with-azure-functions.htmlAzureAzureAzure DevopsC#Dotnet CoreDotNetMonitor WebsiteAzure Data Fundamentals certification with 80% discounthttps://www.sipmann.com/azure-data-fundamentals-certification-80-discount.html<p>Hey folks, if you want to achieve some certification this year, keep an eye open for vouchers. A few months ago, Oracle released a set of free courses with certifications. Now it's Microsoft time. Microsoft is updating they're certifications and we have a voucher of 80% discount using the coupon …</p>Maurício Camargo SipmannTue, 09 Jun 2020 12:30:00 -0300tag:www.sipmann.com,2020-06-09:/azure-data-fundamentals-certification-80-discount.htmlAzureAzureAzure FundamentalsAzure CertificationDiscountZabbix ICMP pinger processes more than 75%https://www.sipmann.com/zabbix-icmp-pinger-processes-more-than-75.html<p>So your monitoring sytems have grown and your zabbix started loggin "Zabbix icmp pinger processes more than 75% busy" at the dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>All you have to do is open your config file (<code>/etc/zabbix/zabbix_server.conf</code>) and find the a tag named <code>StartPingers</code>. It'll be commented by default. Uncomment it …</p>Maurício Camargo SipmannMon, 25 May 2020 16:00:00 -0300tag:www.sipmann.com,2020-05-25:/zabbix-icmp-pinger-processes-more-than-75.htmlLinuxZabbixicmp pingericmp pinger more than 75Zabbix ServerZabbix Server Out of Memoryhttps://www.sipmann.com/zabbix-server-out-of-memory-crash.html<p>Do you have a crashing Zabbix Server and looking through the log <code>/var/log/zabbix/zabbix_server.log</code> you see the following out of memory message?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c,line …</code></pre></div>Maurício Camargo SipmannThu, 27 Feb 2020 19:00:00 -0300tag:www.sipmann.com,2020-02-27:/zabbix-server-out-of-memory-crash.htmlLinuxZabbixShellOut of memoryCrashFlutter + firebase auth crashinghttps://www.sipmann.com/flutter_with_firebase_auth_crashing.html<p>Hey Folks, recently I've started learning <a href="https://flutter.dev/">Flutter</a> and right after a TODO List, I tried a Firebase integration. But as soon as I started setting the dependencies, my app stopped opening... just a crash. After a few logs digging, I've found the following log.</p> +<div class="highlight"><pre><span></span><code>AndroidRuntime: FATAL EXCEPTION: main +AndroidRuntime: Process …</code></pre></div>Maurício Camargo SipmannThu, 03 Oct 2019 19:00:00 -0300tag:www.sipmann.com,2019-10-03:/flutter_with_firebase_auth_crashing.htmlFlutterflutterfirebaseArrayMapNoClassDefFoundRemoving a user from SQL Server database who owns a schemahttps://www.sipmann.com/removing-user-from-sql-server-database.html<p>Your customer urge you to drop a user from the MsSQL Server database, but you stuck with the following related error:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>That means that the user owns one or more shcemas of your database. If …</p>Maurício Camargo SipmannFri, 06 Sep 2019 07:00:00 -0300tag:www.sipmann.com,2019-09-06:/removing-user-from-sql-server-database.htmlSQL ServerSQLServerUserThe database principal owns a schemaLimiting Connection Resources on SQL Serverhttps://www.sipmann.com/limiting-connection-resources-sql-server.html<p>Have you ever suffered from a slow SQLServer database? Someone love to run that heavy query in the database? Resource Governor to the rescue. You can set a few rules on how users (connections actually) will use the server/database resources based on a few things.</p> +<p>First things first, if …</p>Maurício Camargo SipmannMon, 12 Aug 2019 12:00:00 -0300tag:www.sipmann.com,2019-08-12:/limiting-connection-resources-sql-server.htmlSQL ServerSQLServerResource GovernorUsing git hooks to easy your lifehttps://www.sipmann.com/using_git_hooks_easy_your_life.html<p>Hey folks, it's been a time since my last post. In the meantime, I moved to another state, changed job, and started learning new kinds of stuff. Today I would like to share one thing that I usually do with my small git projects. Git has many cool features, git …</p>Maurício Camargo SipmannTue, 30 Jul 2019 20:00:00 -0300tag:www.sipmann.com,2019-07-30:/using_git_hooks_easy_your_life.htmltoolsgitshellpre-commithooksMicroservices with NodeJS, Express.js and RabbitMQ Part 2https://www.sipmann.com/microservices_nodejs_express_rabbitmq_part_2.html<p>If you haven't read the <a class="reference external" href="https://www.sipmann.com/microservices_nodejs_express_rabbitmq_part_1-en.html">part 1</a> go ahead and read it... It can be useful :). Or if for some reason you want to start now, you can grab the project where we stopped <a class="reference external" href="https://github.com/sipmann/imagecompacter/releases/tag/v1">here</a> and get along. On this part, we'll implement the RabbitMQ queue and see how we …</p>Maurício Camargo SipmannFri, 13 Apr 2018 13:00:00 -0300tag:www.sipmann.com,2018-04-13:/microservices_nodejs_express_rabbitmq_part_2.htmlFront-endnodejsmicroservicesrabbitmqexpressjsimageminimagemin-pngquantnode jsMicroservices with NodeJS, Express.js and RabbitMQ Part 1https://www.sipmann.com/microservices_nodejs_express_rabbitmq_part_1.html<p>This is the first part of a microservices development series. The service will consist of the bellow architecture, where we will expose an image optimizer service that will forward the request to a <a class="reference external" href="https://www.rabbitmq.com/">RabbitMQ</a> queue and answer with the bytecode of the optimized image. It shouldn't be a long series …</p>Maurício Camargo SipmannWed, 04 Apr 2018 11:25:00 -0300tag:www.sipmann.com,2018-04-04:/microservices_nodejs_express_rabbitmq_part_1.htmlFront-endnodejsmicroservicesrabbitmqexpressjsimageminimagemin-pngquantnode jsConnecting to a database through SSHhttps://www.sipmann.com/connecting_to_database_through_ssh.html<p>If someday, for some reason, you need to establish a connection with a database which is behind a firewall and you only have SSH access on that server (and you don't want to use a CLI) you can do an SSH tunnel. It's pretty simple, bellow has a sample of …</p>Maurício Camargo SipmannThu, 29 Mar 2018 10:03:00 -0300tag:www.sipmann.com,2018-03-29:/connecting_to_database_through_ssh.htmlLinuxopensshtunnelssh tunnelsshthrough firewallNow posting on Greporahttps://www.sipmann.com/now_posting_on_grepora.html<p>A few weeks ago I started posting at <a class="reference external" href="https://grepora.com/blog/">Grepora</a> blog. If you like or are looking for some Oracle related stuff, Grepora it's a good place to go and spend a time reading :). From time to time I'll be posting there, it doesn't mean that this blog will be closed …</p>Maurício Camargo SipmannSat, 24 Mar 2018 00:40:00 -0300tag:www.sipmann.com,2018-03-24:/now_posting_on_grepora.htmlRandomGreporaRandomScaffolding a React app with Parcel and Yeomanhttps://www.sipmann.com/scaffolding_react_app_with_parcel_yeoman.html<p>Since <a class="reference external" href="https://parceljs.org/">Parcel JS</a> arrived, I've been using it a lot as an awesome alternative for WebPack. Webpack isn't bad but IMO it's too complex for the job and parcel do the same (at least the basic) with almost zero configuration. But if you need to create many apps (like a …</p>Maurício Camargo SipmannSat, 17 Mar 2018 13:00:00 -0300tag:www.sipmann.com,2018-03-17:/scaffolding_react_app_with_parcel_yeoman.htmlFront-endnodejsyeomanparcelreactCould not open connection with MySQL and Hibernatehttps://www.sipmann.com/cloud-not-open-connection-java-mysql-hibernate.html<p>Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some &quot;Could not open connection&quot; at my …</p>Maurício Camargo SipmannFri, 09 Mar 2018 12:35:00 -0300tag:www.sipmann.com,2018-03-09:/cloud-not-open-connection-java-mysql-hibernate.htmlJavaJavaMySQLHibernateSolving java.net.SocketException: Protocol family unavailable on a Java + Docker + WildFlyhttps://www.sipmann.com/socketException-protocol-family-unavailable-java-docker-wildfly.html<p>On the last days I've been playing with <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> and I decided to deploy a simple app with Docker. Should work fine, at least that was what I thought. Built a container with the following Dockerfile and instead of a working web app, all that I got was the …</p>Maurício Camargo SipmannSun, 04 Mar 2018 17:40:00 -0300tag:www.sipmann.com,2018-03-04:/socketException-protocol-family-unavailable-java-docker-wildfly.htmlJavaJavaWildFlyDockerjava.net.SocketExceptionProtocol family unavailableChange display settings on linux with Disperhttps://www.sipmann.com/linux-external-display-with-disper.html<p>From time to time, I change the Linux distro on my laptop or just do a fresh install on it. And once in a while, have random problems with external displays. It can be something really &quot;simple&quot; like don't detecting the external monitor or something crazy like the image below …</p>Maurício Camargo SipmannTue, 27 Feb 2018 12:40:00 -0300tag:www.sipmann.com,2018-02-27:/linux-external-display-with-disper.htmlLinuxLinuxexternal displaydisperJava - Files.readAllBytes throws OutOfMemoryhttps://www.sipmann.com/reading-files-java-readAllBytes-outofmemory.html<p>When you need to interact with files, there's the possibility to read all bytes from the file with <cite>Files.readAllBytes</cite>. But be aware of the kinds of files your application will deal with because the Java API files have a limit for the buffer that is defined as <cite>Integer.MAX_VALUE …</cite></p>Maurício Camargo SipmannSat, 17 Feb 2018 13:00:00 -0200tag:www.sipmann.com,2018-02-17:/reading-files-java-readAllBytes-outofmemory.htmlJavaJavaFiles.readAllBytesoutOfMemory \ No newline at end of file diff --git a/feeds/mauricio-camargo-sipmann.rss.xml.gz b/feeds/mauricio-camargo-sipmann.rss.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..9106508685622cd894d7a1ee1b33bc1453545fcf GIT binary patch literal 6909 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 +Sipmann - MySQLhttps://www.sipmann.com/2020-12-09T13:40:00-03:00Changing a MySQL user password across multiple application instances without downtime2020-12-09T13:40:00-03:002020-12-09T13:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-09:/mysql-dual-password-functionality.html<p>Do you need to change the password of a MySQL user that it's being used in an application, and can't allow a single downtime? Well, MySQL 8.0.14 came with a feature called <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, with it you can change the password keeping the previous password as a …</p><p>Do you need to change the password of a MySQL user that it's being used in an application, and can't allow a single downtime? Well, MySQL 8.0.14 came with a feature called <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, with it you can change the password keeping the previous password as a kind of backup. That way you still can log in using the old password or can start using the new one. With that, the password change workflow it's the following.</p> +<p>1) Change password keeping the old one;</p> +<p>2) Deploy the new config to your app/cluster;</p> +<p>3) Discard the old password.</p> +<p>To change the password and keep the old one, you have the following command.</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">IDENTIFIED</span> <span class="k">BY</span> <span class="s1">&#39;new_password&#39;</span> <span class="n">RETAIN</span> <span class="n">CURRENT</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>To discard the old one, run the following.</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">DISCARD</span> <span class="n">OLD</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>And you are done. Hope you find it as useful as I :)</p> \ No newline at end of file diff --git a/feeds/mysql.atom.xml.gz b/feeds/mysql.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..052f886a6a26b7457cc5ac4fea538dbab79526fe GIT binary patch literal 1044 zcmV+v1nc`BiwFP!000021MOGKj@vdA-RCO^2S_l0Ey{KZB)06SYfn%ElSgd_gRTmW zL`j4xQsu*{cm0~~`W5|?en~HB%da@Dr|2S!EM`Dahv(jV?x9FWx4#t}t*FvWib10t zgbhSREE6WOLBpD~^}2C8d={mYCJ3NH4;r~KWe?-3s)DK;NR{DE7=DLGMiz}>WSHS} zIA>)+gg`CyZax3$KEj*nh%>Q7xuWTYMsIoa1|Gz+zzw7*A2bLzR0(1zaALRYs>Lo( zjf=JZl?Mb83Lxh#p{6|DbFpOjC5{Ng%gB}q1W$&YuoJf0omTi}(eCzMg}pFrg~6ok+S40CI*^< zn9zoZm}*oplS^w*A}e87L7$?km!y?g!drFJR%%7;LJ-c(I>^mVsx#V`_K`E4UlwE! zdXjv^LS1SY2~yDEJ7U#ef5uFrF)4`3B-(l@!v1}PYdCbtkgRu7X>%X3cV*R^hHG0u zyfrfGk~$qhjo}M!`sItv^d}OnrA5MR10zxF+DVbg>Ar_DJ#Mbai9yV~)aa4A&ckE^ z%|t{Twzmn-35tn$X%OLDRzRWw4koDEe2X3^=glqm>mUr;uV6(%y&(XfQev#4FvmH> za7mLBJ0x@!Y<7h+Ln31guR$^lbeIafQwQcqMhh^nm*)AAcDmuUfGPB`E_-gvQYzzu zV&YymH)%2B6@$vosLZDlwhYk130jf0=hcRB?%BD_oUB&Ybdo0rT~Qtc-#TRuFoIS{3L2mXm#b@4 z^Ekh4&M;o4t}DKg4v|XNCEyA6E_$}}N&5zkH!IIp>QaNS{c}q@H)ujjF4wyR!I3G; zoZp~gZ^jHH(5q6LGj6Y#3 z6mwt%2eK^Z@MpYtd~ikUp)QH2$N2C8t_nw>nr-P>M)!-m+0hzw3KSmrY5s3G-QMIy zin9N_`=$>fyWP8c{w%Y@#nP|+{vzfy0GF^$bE(bw5ML-{I=Oqln7*CfO)jH1`uy+b?|}LFqqP# zj&?wDvSYm2l@*uw`Zs_7&;FiF=i||Aat-vu{p9O%(Fi`6?(;~LJG0%P@}n%NpGw^k z1}7n$XP|m&xf@MU@8<9Zvb}h~4FvA3nRItWs)|9wpZD&nT+jbk1UfpgkMVf>d&2+3 O8U6#_e1o944FCY>BL*Y@ literal 0 HcmV?d00001 diff --git a/feeds/net.atom.xml b/feeds/net.atom.xml new file mode 100644 index 000000000..a2488bb3d --- /dev/null +++ b/feeds/net.atom.xml @@ -0,0 +1,59 @@ + +Sipmann - .NEThttps://www.sipmann.com/2020-10-28T19:00:00-03:00How to set columns on select using Entity Framework2020-10-28T19:00:00-03:002020-10-28T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-28:/select_specific_fields_with_efcore.html<p>So, you use Entity Framework Core, and you usually code your selects like the following, maybe you are getting too much data.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Running the query above, on my table, you'll get the following output, take a look …</p><p>So, you use Entity Framework Core, and you usually code your selects like the following, maybe you are getting too much data.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Running the query above, on my table, you'll get the following output, take a look at how many columns you are getting back from your database.</p> +<p><img alt="Screenshot with every single column" src="/images/ef_core_allcolumns.png"></p> +<p>In my case, I only care about the Title, PublishedData, and a small description. So to get back only these fields, we have a few options. In the first one, we'll set the fields and return them as a dynamic object, the second one, is to give the .NET a class to use. </p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + + <span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="k">new</span> <span class="p">{</span><span class="n">p</span><span class="p">.</span><span class="n">ProductID</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitPrice</span><span class="p">})</span> + <span class="c1">//.Select(p =&gt; new ProductDTO {p.ProductID, p.ProductName, p.UnitsInStock, p.UnitPrice})</span> + + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p><img alt="Screenshot with fewer columns and also fewer data size" src="/images/ef_core_less_columns.png"></p>Top Level Statement in C# 92020-07-29T19:00:00-03:002020-07-29T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-29:/top_level_statement_csharp_9.html<p>Hey folks, I'm coming along to tell you a few things about the new feature of C# 9. Every time you want to start a new project, you always have the same Main File, with the same structure. At the next version of C# (version 9), we'll have a new …</p><p>Hey folks, I'm coming along to tell you a few things about the new feature of C# 9. Every time you want to start a new project, you always have the same Main File, with the same structure. At the next version of C# (version 9), we'll have a new feature called <code>Top Level Statement</code>. With that, we'll be able to code our app without any namespace/class/public void static main structure. Take a look at the code below.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="s">&quot;Hello World!&quot;</span><span class="p">);</span> +</code></pre></div> + +<p>It looks pretty simple, but with this, you can play around with your code, and even code a simple/tiny Web API. To start playing with the new features, firstly download the <a href="https://dotnet.microsoft.com/download/dotnet/5.0">.net 5 SDK</a> and change your <code>.csproj</code> file to target the .net 5 and language preview like bellow.</p> +<div class="highlight"><pre><span></span><code><span class="nt">&lt;Project</span> <span class="na">Sdk=</span><span class="s">&quot;Microsoft.NET.Sdk&quot;</span><span class="nt">&gt;</span> + <span class="nt">&lt;PropertyGroup&gt;</span> + <span class="nt">&lt;OutputType&gt;</span>Exe<span class="nt">&lt;/OutputType&gt;</span> + <span class="nt">&lt;TargetFramework&gt;</span>net5.0<span class="nt">&lt;/TargetFramework&gt;</span> + <span class="nt">&lt;LangVersion&gt;</span>preview<span class="nt">&lt;/LangVersion&gt;</span> + <span class="nt">&lt;/PropertyGroup&gt;</span> +<span class="nt">&lt;/Project&gt;</span> +</code></pre></div> + +<p>And you're ready to play with the awesome features available in the preview. Let's code a way to get the image of the day from NASA API and print the Picture of the Day. No awesome code here, it's really a way to show how simple a simple call could be. After here, why not save the image in a file? Maybe send the file over telegram?</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Text.Json</span><span class="p">;</span> + +<span class="kt">var</span> <span class="n">API</span> <span class="p">=</span> <span class="s">&quot;https://api.nasa.gov/planetary/apod?hd=true&amp;api_key=DEMO_KEY&quot;</span><span class="p">;</span> +<span class="kt">var</span> <span class="n">cli</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + +<span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">cli</span><span class="p">.</span><span class="n">GetAsync</span><span class="p">(</span><span class="n">API</span><span class="p">);</span> +<span class="kt">var</span> <span class="n">data</span> <span class="p">=</span> <span class="n">JsonSerializer</span><span class="p">.</span><span class="n">Deserialize</span><span class="p">&lt;</span><span class="n">NasaApi</span><span class="p">&gt;(</span><span class="k">await</span> <span class="n">response</span><span class="p">.</span><span class="n">Content</span><span class="p">.</span><span class="n">ReadAsStringAsync</span><span class="p">());</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">Url</span><span class="p">);</span> +</code></pre></div> + +<p>That's it for today folks. Keep an eye open for the awesome features C# 9 will bring to us, there's plenty more features already available.</p> \ No newline at end of file diff --git a/feeds/net.atom.xml.gz b/feeds/net.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..bf1f67bfd8d058895ed5bed865f0c1db431d92ee GIT binary patch literal 2298 zcmV`nwdAt9ODSw|z&%a>^(pR6?n!QDNy@S;Ta>NKxvhgJ5Xs@Uv$L}^-^?oQqtCH~ zDc44*q|h82hoQHs-iRm;VYtsYYpUr08>>E$%vA@@9 zz44E&iW}Xw6;|?YPoyzR64(Xr;;i5Hi@R+pk_kkbj|vo1!k9wZ3smekKy%q?Flo6? znB@rR(`&U}CN+(paO*MD#zTcmIK$=W8cBrRyAawwK5S=ch(m|nz1Ci9_jPM`@7wr8t_q|H1{Gqx5Ns=rrA&m6Wu@GYoU#- z!!jEw-EAj0vF=Bf>3{zk2n8oBW_qlk^pm#lp11u<92dc|@xjtmo7W>A)SY&*peBoP zz#MFza;N;ShpZ9>fQp%Vk9IgGirwANNBh_fI9G!gSi3*V`+LtjHNg+MYx`%H`@i67gb zr%qeVtFIiNRt+6r zZF9*!>5%Kc~sS zwY%*=B^FcabNGG^-_POuIeb5d@245QnS}^z9i;2|ywX_?pFRR`Eo1yVN46W3+$P$eqD!C+hoNvA15P zFn4)Ce};0MPWzwW=hU0KQxoPFw1jlIXtwIwsk*GkGqruDw$Ie|w@PjA<&DU+xSrEf zN8Y4SmjTzicCfk15spz%?X8BlA%bDxA(;%Kj9rx~l_kQ`RrfI&K_!^i>KUkfBTHS(J>ac_R`y`3m+oIohx) zMUx}Uz*I1Uz(h=^gZ<48HClh(-P^BysIgl5e|f0kMm$(Q;Tp#o?|4pi+63#1^A|BL zT1<5plgc%(a7nR}a8;QrI&6eb%|ekw8Fj=NmK7Y-$Ss)%XRg??A};!2Ge*rg1*oL9 z2t@B7JufN_hb?C;H$`#dDiE{;d}QbXZv~Z5ZYRzk7^^WP;eZ|-S4w=g)v;u$#mnk) z|5a5Fm9-O%{-Dm`AJS5l#sSu=JcPyiY{jm<5qdqiDzss?0v=L*j0HGO(KS`6re|sD z)FwMoD}c5E#`1vsF3K0XE`X^LA=$;^_n0QUFuDHCt^!Te!4J7qvoF_lbtvwHc1?;d zYrou})oLWT!zH%4I$xfs#3;$Pl=!c-u>6Ba9?wh7HJke}Q?!kwRB)xV4F7a}w+_2F zd|aMCx6VTh?kH|8HG|@m_RKJ|)xHs?*k%Eaol2Gi(<;N9?;g7j6pdFjanSRV!p&F- zg{cbt_lghU`0^aRvf9UlM4@87ITtn-4(J*;GKWyj5~*0|L`ZA4lBkDO2(&V4 zWL?s$-YTE^Z@gBq$an#7pm+M-nS(h`B)x-(CFAluW6_gnubSiLC?p$O@3;gA_U1F~tOghH;!*WaI_6}sl4h$!qjePgx-1JD$Jbb;T z125{hJhz?OB>DD~Qm$?O9Xexr7sgtYPp$>q$IP}8;_NeD1K_VgsG~&R`O%zfuEatA zLML9QOdX^;8htv>2N>kG8Z6^kb%+Jui;5pcH9wAA+I7*$j9iTN53}` zvYl}~tWdponBM+x3iOc>dw(^!Yah?UHanm|*WSX}#BzqJxB^RsmoUS;v6}k0YcZ%| zg@dbW!cCkffQS?NzJp1Vo3776Dg|V zWnHUjyFP$1Gez3Yw>D`uW5Pbf(hsi`zT@`TN>Zx3zOZ3MM_S z1(V_@uD4|5Q*J8A8i*Air~!O|G2%ECbwSrI;)ZUxasxcvOeaPEW=m+_BkMUfJ&W99 zT-(K8z4~pJ>v!ykN1Xd;`2~vme#D6G2@4~Iv`aY}NzFPB-gBNJi3FY_DNC_vcM_}U zEA`}%-BP1U7eC&E%(x##XpZ1W6BC<5tn?z~l?6GTQ(tc@4gQm_);0H&I?eqW=LA&G UukO*i{~*!*FE-+9d-X8@0G3K}VgLXD literal 0 HcmV?d00001 diff --git a/feeds/powershell.atom.xml b/feeds/powershell.atom.xml new file mode 100644 index 000000000..3b2a0dea6 --- /dev/null +++ b/feeds/powershell.atom.xml @@ -0,0 +1,124 @@ + +Sipmann - PowerShellhttps://www.sipmann.com/2020-12-21T13:30:00-03:00Monitoring MySQL restarts with PowerShell2020-12-21T13:30:00-03:002020-12-21T13:30:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-21:/monitoring-mysql-restarts-with-powershell.html<p>Hey folks, it's time for another PowerShell script. If you haven't seen the other ones, check the links below.</p> +<ul> +<li><a href="https://www.sipmann.com/en/monitoring-mysql-replication-with-powershell.html">Monitoring MySQL replication with PowerShell</a></li> +</ul> +<p>Well, this one it's a pretty simple script, but again, if your customer doesn't have a Zabbix server or doesn't allow you to setup one to …</p><p>Hey folks, it's time for another PowerShell script. If you haven't seen the other ones, check the links below.</p> +<ul> +<li><a href="https://www.sipmann.com/en/monitoring-mysql-replication-with-powershell.html">Monitoring MySQL replication with PowerShell</a></li> +</ul> +<p>Well, this one it's a pretty simple script, but again, if your customer doesn't have a Zabbix server or doesn't allow you to setup one to do the monitoring, a set of scripts can be handy. We start executing some basic query <code>SHOW GLOBAL STATUS LIKE 'Uptime'</code>, with that we'll get exactly what we're looking for.</p> +<p>If for some reason, the command fails (watch for the "global" variable called <code>$lastExitCode</code>), we send an e-mail telling you about that connection problem.</p> +<p>And then, we get to the part where we parse the value, this one is pretty similar to the parse we did on the first post about using PowerShell to monitor MySQL. But we basically look for the Value line, split it by space and then parse the second position to an integer. And then all we have to do is check if the uptime is lower than our threshold, if it is we send an e-mail.</p> +<div class="highlight"><pre><span></span><code><span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;maurio[at]sipmann.com&#39;</span> +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio[at]sipmann.com&#39;</span> +<span class="nv">$MysqlHost</span> <span class="p">=</span> <span class="s1">&#39;127.0.0.1&#39;</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;123&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-h</span> <span class="nv">$MysqlHost</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s2">&quot;SHOW GLOBAL STATUS LIKE &#39;Uptime&#39; \G&quot;</span><span class="p">)</span> + +<span class="cm">&lt;# Unable to execute the sql Command #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$lastExitCode</span> <span class="o">-eq</span> <span class="n">1</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Connection problem&#39;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;Connection problem on host ${MysqlHost}&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> + <span class="n">exit</span> +<span class="p">}</span> + +<span class="nv">$UpTime</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Value:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="cm">&lt;# If the uptime is lower then 20 minutes #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$UpTime</span> <span class="o">-lt</span> <span class="n">1200</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s2">&quot;MySQL Restarted&quot;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;MySQL host ${MysqlHost} restarted less than 20 minutes ago&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> +</code></pre></div> + +<p>This script (and the other ones I use) is available at my GitHub <a href="https://github.com/sipmann/PowerShellScripts">here</a>. Keep in mind that the ones on the GitHub repo, are a little different from here.</p>Monitoring MySQL Replication Status with PowerShell2020-10-14T19:00:00-03:002020-10-14T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-14:/monitoring-mysql-replication-with-powershell.html<p>I've been migration some bash scripts that I have to PowerShell, and it's time to migrate a script that monitors the replication of a MySQL database. The credit for the original script goes to <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. It's a simple script where I seek a few tags/fields that we get from …</p><p>I've been migration some bash scripts that I have to PowerShell, and it's time to migrate a script that monitors the replication of a MySQL database. The credit for the original script goes to <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. It's a simple script where I seek a few tags/fields that we get from <code>SHOW SLAVE STATUS\G</code> command, the fields are. <code>Slave_IO_Running</code>, <code>Slave_SQL_Running</code>, and <code>Seconds_Behind_Master</code>. I still need to figure out the proper way to store/read variables like usernames and passwords, if you have any tips, feel free to even make a pull request (<a href="https://github.com/sipmann/PowerShellScripts">here</a>) at the git where I'll store some scripts.</p> +<div class="highlight"><pre><span></span><code><span class="cm">&lt;#</span> +<span class="cm"> Variables definition</span> +<span class="cm">#&gt;</span> +<span class="nv">$MaxSeconds</span> <span class="p">=</span> <span class="n">120</span> <span class="c"># Max seconds behind master allowed</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;&#39;</span> + +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> +<span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s1">&#39;SHOW SLAVE STATUS \G&#39;</span><span class="p">)</span> + +<span class="c">#Debug data</span> +<span class="c">#$data = Get-Content &#39;c:\temp\sampleresult.txt&#39;</span> + +<span class="cm">&lt;# Parse the data #&gt;</span> +<span class="nv">$IORunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_IO_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SQLRunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_SQL_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$LastErrNo</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Last_Errno&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SecondsBh</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Seconds_Behind_Master&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="k">If</span> <span class="p">(</span><span class="nv">$IORunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SQLRunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SecondsBh</span> <span class="o">-gt</span> <span class="nv">$MaxSeconds</span><span class="p">)</span> <span class="p">{</span> + <span class="nv">$MailBody</span> <span class="p">=</span> <span class="s1">&#39;&lt;h1&gt;Problema na replicação&lt;/h1&gt;&lt;br&gt;&#39;</span> + + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; IO Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$IORunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; SQL Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SQLRunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39;Seconds Behind: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SecondsBh</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; Last Err No: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$LastErrNo</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + + <span class="cm">&lt;# Send e-mail, maybe some telegram message here too #&gt;</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Problemas na replicação&#39;</span> <span class="n">-bodyAsHtml</span> <span class="nv">$MailBody</span> <span class="n">-Credential</span> <span class="p">(</span><span class="nb">Get-Credential</span><span class="p">)</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> <span class="k">Else</span> <span class="p">{</span> + <span class="nb">Write-Host</span> <span class="s2">&quot;Up and running&quot;</span> +<span class="p">}</span> +</code></pre></div>The power of PowerShell2020-09-21T19:00:00-03:002020-09-21T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-09-21:/the-power-of-powershell.html<p>As a long time Linux user, I've automated a few things with bash scripts and stayed away from PowerShell... I've moved to a Windows environment a few years ago and still, haven gave a shot to PS. But why not? I've made a few scripts to automate some tasks at …</p><p>As a long time Linux user, I've automated a few things with bash scripts and stayed away from PowerShell... I've moved to a Windows environment a few years ago and still, haven gave a shot to PS. But why not? I've made a few scripts to automate some tasks at a Protheus server.</p> +<p>I found the PS scripts being easy to read and understand. Bellow, we have a script to remove files filtering their extension (or no extension at all like the following script). </p> +<div class="highlight"><pre><span></span><code><span class="nb">Get-ChildItem</span> <span class="s2">&quot;C:\TOTVS\protheus_data\system&quot;</span> <span class="o">-File</span> <span class="n">-Filter</span> <span class="p">*.</span> <span class="p">|</span> <span class="nb">Move-Item</span> <span class="n">-Force</span> <span class="n">-Destination</span> <span class="p">{</span> + <span class="cm">&lt;# Diretory where the files will be moved. You can use Date formats to help name it #&gt;</span> + <span class="cm">&lt;# LastWriteTime proprtie from the current file #&gt;</span> + <span class="nv">$dir</span> <span class="p">=</span> <span class="s2">&quot;C:\bad_files\{0:yyyy\\MM\\dd}&quot;</span> <span class="o">-f</span> <span class="nv">$_</span><span class="p">.</span><span class="n">LastWriteTime</span> + <span class="nv">$null</span> <span class="p">=</span> <span class="n">mkdir</span> <span class="nv">$dir</span> <span class="n">-Force</span> + <span class="s2">&quot;$dir\</span><span class="p">$(</span><span class="nv">$_</span><span class="p">.</span><span class="n">Name</span><span class="p">)</span><span class="s2">&quot;</span> +<span class="p">}</span> +</code></pre></div> + +<p>Have you ever been in the need to remove files based on other file content? Bello a script where I read a file that has the names of files that I want to remove. </p> +<div class="highlight"><pre><span></span><code><span class="k">foreach</span><span class="p">(</span><span class="nv">$line</span> <span class="k">in</span> <span class="nb">Get-Content</span> <span class="p">.\</span><span class="n">Desktop</span><span class="p">\</span><span class="n">bad_files</span><span class="p">.</span><span class="n">txt</span><span class="p">)</span> <span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="nb">Test-Path</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">))</span> <span class="p">{</span> + <span class="nb">Remove-Item</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">)</span> + <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> + <span class="nb">echo </span><span class="nv">$line</span> <span class="p">+</span> <span class="s1">&#39; - File not found&#39;</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>And a bonus script to stop/start services (if you handle some Protheus Server, you know why I do that).</p> +<div class="highlight"><pre><span></span><code><span class="nv">$servicesNames</span> <span class="p">=</span> <span class="s1">&#39;app_main&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker1&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker2&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker3&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker4&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker5&#39;</span> + +<span class="nb">Write-host</span> <span class="s2">&quot;Stoping Services&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Stopping: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nv">$SrvPID</span> <span class="p">=</span> <span class="p">(</span><span class="nb">get-wmiobject</span> <span class="n">win32_service</span> <span class="p">|</span> <span class="nb">where </span><span class="p">{</span> <span class="nv">$_</span><span class="p">.</span><span class="n">name</span> <span class="o">-eq</span> <span class="nv">$srv</span><span class="p">}).</span><span class="n">processID</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PID: &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> + + <span class="cm">&lt;# Force if the proccess is stucked #&gt;</span> + <span class="nb">Stop-Process</span> <span class="nv">$SrvPID</span> <span class="n">-Force</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PDI &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> <span class="p">+</span> <span class="s2">&quot; stopped&quot;</span> +<span class="p">}</span> + + +<span class="nb">Write-host</span> <span class="s2">&quot;Starting Services&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Starting: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nb">Start-Service</span> <span class="nv">$srv</span> +<span class="p">}</span> +</code></pre></div> + +<p>Do you have any automated script? Share with us :)</p> \ No newline at end of file diff --git a/feeds/powershell.atom.xml.gz b/feeds/powershell.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..7d8e786f7135d91eefbea8c8d462fbc1d0a14296 GIT binary patch literal 3925 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 literal 0 HcmV?d00001 diff --git a/feeds/random.atom.xml b/feeds/random.atom.xml new file mode 100644 index 000000000..1e34eeded --- /dev/null +++ b/feeds/random.atom.xml @@ -0,0 +1,3 @@ + +Sipmann - Randomhttps://www.sipmann.com/2018-03-24T00:40:00-03:00Now posting on Grepora2018-03-24T00:40:00-03:002018-03-24T00:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-24:/now_posting_on_grepora.html<p>A few weeks ago I started posting at <a class="reference external" href="https://grepora.com/blog/">Grepora</a> blog. If you like or are looking for some Oracle related stuff, Grepora it's a good place to go and spend a time reading :). From time to time I'll be posting there, it doesn't mean that this blog will be closed …</p><p>A few weeks ago I started posting at <a class="reference external" href="https://grepora.com/blog/">Grepora</a> blog. If you like or are looking for some Oracle related stuff, Grepora it's a good place to go and spend a time reading :). From time to time I'll be posting there, it doesn't mean that this blog will be closed or anything like that, but probably this one will be more focused on Front-end stuff, a few tricks with linux and a lil less with Java.</p> + \ No newline at end of file diff --git a/feeds/random.atom.xml.gz b/feeds/random.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..75ffc4e9caea26784ec43338b505a1980d3f23cf GIT binary patch literal 675 zcmV;U0$lwciwFP!000021MO77ZqzUkz4t3dIkZCBjnfvSYMV_}A%ThnNWi^vl1XB% zE8GnZhQrQ!j~{kvbzFGMK7GVB(Xj7=Djx)r&sr_hC8%Qky%HlaS{QVf=XrT zb=3Q6c@bS@M`?vv0*4y6jvDW~l@P-)#KU<^wiahe@rkSTd!USt6$_T4i#6ANu7G*`j(4q!EZYZjVL~g)&X_@lA0n$T=mQZNvc%<2Pv^@6+ct2Xmj{e+?9fi<{ zTvIKgP-*UBz!EZSKsbxxrh+Z?pw$L}EJ%x>i8i5h#cM|`!h0(VjiGVDO{Uma)nYdn zp!^Awhnk34Yst(!@d|jb!F9+_30}1!UxuF*R?lL1WvQKZIe2{EoM;U>?uGk?buJhk zNyJNPYRw)oMQhhW5fsg4(Y_5-gT J4>`XE000olLz@5q literal 0 HcmV?d00001 diff --git a/feeds/sql-server.atom.xml b/feeds/sql-server.atom.xml new file mode 100644 index 000000000..2b51d7760 --- /dev/null +++ b/feeds/sql-server.atom.xml @@ -0,0 +1,184 @@ + +Sipmann - SQL Serverhttps://www.sipmann.com/2020-11-14T07:00:00-03:00Blocking a user on SQL Server based on a schedule2020-11-14T07:00:00-03:002020-11-14T07:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-11-14:/blocking-user-on-sql-server-based-on-schedule.html<p>Ok, some time ago, I've posted about how you can set limits to connections on SQL Server using the <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. But what if you can't use it? You always can block logins using a login trigger, but I don't like the idea of having selects running on every login …</p><p>Ok, some time ago, I've posted about how you can set limits to connections on SQL Server using the <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. But what if you can't use it? You always can block logins using a login trigger, but I don't like the idea of having selects running on every login. So I came across with a solution using a stored procedure, a table and the Agent.</p> +<p>The main idea is, store the time that a user must be blocked and using the Agent, disable or enable the user. Bellow you can see the table (the table is in Portuguese, but I have a few comment blocks to help you).</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">Id</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Startint block time */</span><span class="w"></span> +<span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Ending block time */</span><span class="w"></span> +<span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="k">DEFAULT</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="cm">/* 0 = unblocked, 1 = blocked */</span><span class="w"></span> +<span class="w"> </span><span class="k">PRIMARY</span><span class="w"> </span><span class="k">KEY</span><span class="w"> </span><span class="p">(</span><span class="n">Id</span><span class="p">)</span><span class="w"></span> +<span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="cm">/* Don&#39;t block the SA user, precautions, you know */</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_users</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">LoginName</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;sa&#39;</span><span class="p">));</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_hora_final_maior</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="n">HrInicio</span><span class="p">);</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_status_bloqueio</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">Bloqueado</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">));</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="k">SEQUENCE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">seq_HorariosBloqueio</span><span class="w"> </span><span class="k">START</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">INCREMENT</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>After creating the table, let's check the procedure that will handle the enabling/disabling the users. Be aware that on the procedure, I've set the database name where the table was stored, you can change it replacing the <code>DBATOOLS</code> text to the database name where you created the table.</p> +<div class="highlight"><pre><span></span><code><span class="k">IF</span><span class="w"> </span><span class="nf">OBJECT_ID</span><span class="p">(</span><span class="s1">&#39;dbo.sp_ValidarLogin&#39;</span><span class="p">)</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="k">NULL</span><span class="w"></span> +<span class="w"> </span><span class="k">EXEC</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;CREATE PROCEDURE dbo.sp_ValidarLogin AS RETURN 0;&#39;</span><span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="k">ALTER</span><span class="w"> </span><span class="k">PROC</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">sp_ValidarLogin</span><span class="w"></span> +<span class="k">AS</span><span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">);</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nf">CAST</span><span class="p">(</span><span class="nf">GETDATE</span><span class="p">()</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="cm">/* Block the ones that aren&#39;t blocked already and maches the time */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">&#39; DISABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Bloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> + + +<span class="w"> </span><span class="cm">/* Enable up who was blocked */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="s1">&#39; ENABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Unbloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="k">END</span><span class="p">;</span><span class="w"></span> +</code></pre></div> + +<p>Ok, so now all you have to do, is schedule a job to run that stored procedure from minute to minute. Again, the main idea is tell the procedure when a user must be blocked and when it'll be unblocked. </p> +<div class="highlight"><pre><span></span><code><span class="err"> -- Will block the user protheus from 10 AM till 15 PM</span> +<span class="err"> INSERT INTO dbo.HorariosBloqueio (Id, LoginName, HrInicio, HrTermino) VALUES (NEXT VALUE FOR seq_HorariosBloqueio, &#39;protheus&#39;, &#39;10:00:00&#39;, &#39;15:00:00&#39;);</span> +</code></pre></div>Removing a user from SQL Server database who owns a schema2019-09-06T07:00:00-03:002020-10-21T18:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-09-06:/removing-user-from-sql-server-database.html<p>Your customer urge you to drop a user from the MsSQL Server database, but you stuck with the following related error:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>That means that the user owns one or more shcemas of your database. If …</p><p>Your customer urge you to drop a user from the MsSQL Server database, but you stuck with the following related error:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>That means that the user owns one or more shcemas of your database. If you don't have access to the SSMS to see which schema or objects the user owns, the following SQL should do the job.</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">schemas</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">principal_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="p">,</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">xtype</span><span class="w"> </span><span class="n">Tipo</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">sysobjects</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">uid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> +</code></pre></div> + +<p>Once you have the objects/schemas owned by the user, you can change them with the following SQL (schema change sample):</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datareader</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"> </span><span class="c1">-- new owner username</span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datawriter</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>Then you're ready to drop the user <code>DROP USER [username]</code></p> +<h2>How to list all the schemas and it's owners?</h2> +<p>Here's a script to list schemas and it's owners.</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +<span class="k">SELECT</span><span class="w"></span> +<span class="w"> </span><span class="nf">schema_name</span><span class="p">(</span><span class="nf">schema_id</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">schemaname</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="nf">user_name</span><span class="p">(</span><span class="n">schm</span><span class="p">.</span><span class="n">principal_id</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">username</span><span class="p">,</span><span class="w"> </span><span class="o">*</span><span class="w"></span> +<span class="k">FROM</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">schemas</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">schm</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div>Limiting Connection Resources on SQL Server2019-08-12T12:00:00-03:002019-08-12T12:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-08-12:/limiting-connection-resources-sql-server.html<p>Have you ever suffered from a slow SQLServer database? Someone love to run that heavy query in the database? Resource Governor to the rescue. You can set a few rules on how users (connections actually) will use the server/database resources based on a few things.</p> +<p>First things first, if …</p><p>Have you ever suffered from a slow SQLServer database? Someone love to run that heavy query in the database? Resource Governor to the rescue. You can set a few rules on how users (connections actually) will use the server/database resources based on a few things.</p> +<p>First things first, if you don't have DAC enabled, enable it now. Dealing with resource governor can lock you out of the database and leave you without action (almost... you can start the server with -c -m -f).</p> +<p>Now to understand how Resource Governor works, we have a few keywords <code>resource pool</code>, <code>workload group</code> e <code>Classifier Function</code>.</p> +<p><img alt="Pool Sample" src="/images/sql-pool.png"></p> +<h2>Resource Pool</h2> +<p>First, we have the Resource Pool, with is the bigger resource group that we have the ability to manage. With it, we can set a few things like: <code>MIN_CPU_PERCENT</code>, <code>MAX_CPU_PERCENT</code>, <code>MIN_MEMORY_PERCENT</code>, <code>MAX_MEMORY_PERCENT</code>, <code>MIN_IOPS_PER_VOLUME</code>, and <code>MAX_IOPS_PER_VOLUME</code>.</p> +<p>Be aware that the <code>MAX_CPU_PERCENT</code> will just "works" when there is another connection with a higher priority, otherwise it will use what is available. Let's create a pool.</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">POOL</span><span class="w"> </span><span class="o">[</span><span class="n">SpreadSheet</span><span class="o">]</span><span class="w"></span> +<span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">MIN_CPU_PERCENT</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">MAX_CPU_PERCENT</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">MIN_MEMORY_PERCENT</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">MAX_MEMORY_PERCENT</span><span class="o">=</span><span class="mi">20</span><span class="w"></span> +<span class="p">);</span><span class="w"></span> +</code></pre></div> + +<p>## Workload Group</p> +<p>Then we have a workload group that "works" inside a pool, so you can have another granularity on how you can split your resources. Again, we have a few options: <code>IMPORTANCE</code>, <code>REQUEST_MAX_CPU_TIME_SEC</code>, <code>REQUEST_MAX_MEMORY_GRANT_PERCENT</code>, <code>GROUP_MAX_REQUESTS</code>.</p> +<p>The <code>IMPORTANCE</code> set guesses what... the importance of that workload inside the pool, you can set LOW, MEDIUM, HIGH. GROUP_MAX_REQUESTS sets how many requests can run at the same time inside that workload (0 will set as NO LIMIT)</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="n">WORKLOAD</span><span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="o">[</span><span class="n">DepartmentA</span><span class="o">]</span><span class="w"> </span> +<span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">GROUP_MAX_REQUESTS</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">IMPORTANCE</span><span class="o">=</span><span class="n">LOW</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">REQUEST_MAX_CPU_TIME_SEC</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="c1">-- Time running/using CPU</span> +<span class="w"> </span><span class="n">REQUEST_MAX_MEMORY_GRANT_PERCENT</span><span class="o">=</span><span class="mi">15</span><span class="w"></span> +<span class="p">)</span><span class="w"> </span><span class="k">USING</span><span class="w"> </span><span class="o">[</span><span class="n">SpreadSheet</span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="c1">-- pool name here</span> +</code></pre></div> + +<h2>Classifier Function</h2> +<p>This is where everything begins... This is the entry point where you should set the group name. It's a function that will run for every new connection so be aware that if your function runs lots of queries or some heavy stuff... that time will be added to the connection handshake. If the function returns NULL or a group name that doesn't exist, the 'default' group will be used... Yes, there is a default workload group where everything runs where there's no classifier.</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="n">fnClassWorkloadGovernor</span><span class="p">()</span><span class="w"> </span> +<span class="k">RETURNS</span><span class="w"> </span><span class="n">SYSNAME</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="n">SCHEMABINDING</span><span class="w"> </span> +<span class="k">AS</span><span class="w"> </span> +<span class="k">BEGIN</span><span class="w"> </span> +<span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="nf">APP_NAME</span><span class="p">()</span><span class="w"> </span><span class="ow">LIKE</span><span class="w"> </span><span class="s1">&#39;%Excel%&#39;</span><span class="w"></span> +<span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="s1">&#39;DepartmentA&#39;</span><span class="w"></span> + +<span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="nf">HOST_NAME</span><span class="p">()</span><span class="w"> </span><span class="ow">LIKE</span><span class="w"> </span><span class="s1">&#39;%THAT_MACHINE_OR_APP_SERVER%&#39;</span><span class="w"></span> +<span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="s1">&#39;LowPriority&#39;</span><span class="w"></span> + +<span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="k">NULL</span><span class="w"></span> +<span class="k">END</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="n">CLASSIFIER_FUNCTION</span><span class="o">=</span><span class="n">dbo</span><span class="p">.</span><span class="n">fnClassWorkloadGovernor</span><span class="p">);</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">RECONFIGURE</span><span class="p">;</span><span class="w"></span> +</code></pre></div> + +<p>There you go... now you have a fully working resource governor, but look out that If you want to delete that classifier function, first you have to remove it from the resource governor (look the SCHEMABINDING at the create up there).</p> +<p>To disable Resource Governor</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="p">(</span><span class="n">CLASSIFIER_FUNCTION</span><span class="o">=</span><span class="k">null</span><span class="p">)</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="k">RECONFIGURE</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="n">RESOURCE</span><span class="w"> </span><span class="n">GOVERNOR</span><span class="w"> </span><span class="n">DISABLE</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> \ No newline at end of file diff --git a/feeds/sql-server.atom.xml.gz b/feeds/sql-server.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..4e54fce9edfa345a5fa31b78b380ea301b12b1ef GIT binary patch literal 5030 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 +Sipmann - Toolshttps://www.sipmann.com/2020-12-02T14:00:00-03:00Apache Nifi JSON to SQL Replacing underscore2020-12-02T14:00:00-03:002020-12-02T14:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-02:/apache-nifi-json-to-sql-replacing-underscore.html<p>Recently I was doing some ETL with Apache NiFi. But after a few minutes of drawing my flow, I saw that the component ConvertJSONToSQL was replacing the underscore ('_') from the field name in the where condition (I was preparing an Update SQL). That was weird because, at the set …</p><p>Recently I was doing some ETL with Apache NiFi. But after a few minutes of drawing my flow, I saw that the component ConvertJSONToSQL was replacing the underscore ('_') from the field name in the where condition (I was preparing an Update SQL). That was weird because, at the set statement, the field name was kept intact. After some research, I found that the property (see bellow) <code>Translate Field Names</code> was responsible for that weird replacement.</p> +<p><img alt="Apache NiFi JSONToSQL config" src="/images/apache_nifi_jsontosql.png"></p> +<p>Before setting it to <strong>FALSE</strong>, be aware that the properties on your JSON data must match exactly the name of your fields.</p>Using git hooks to easy your life2019-07-30T20:00:00-03:002019-07-30T20:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-07-30:/using_git_hooks_easy_your_life.html<p>Hey folks, it's been a time since my last post. In the meantime, I moved to another state, changed job, and started learning new kinds of stuff. Today I would like to share one thing that I usually do with my small git projects. Git has many cool features, git …</p><p>Hey folks, it's been a time since my last post. In the meantime, I moved to another state, changed job, and started learning new kinds of stuff. Today I would like to share one thing that I usually do with my small git projects. Git has many cool features, git hooks were one of them. I'll talk about the pre-commit hook today.</p> +<p>Let's say that, for some reason, you don't have a CI tool/server running after every commit and you want to enforce that every developer runs the tests before every commit? Git pre-commit to the rescue. You can code the hooks with shell, ruby, python, and I could be wrong, but even PHP would work. pre-commit is a client-side hook (we have server side too) and he's located inside the <cite>.git/hooks</cite> folder. Let's jump to the code... Create a file called 'pre-commit' inside that folder with the following code.</p> +<div class="highlight"><pre><span></span><span class="ch">#!/bin/bash</span> +npm <span class="nb">test</span> <span class="c1"># assuming you&#39;re using it inside a nodeJS project</span> +</pre></div> +<p>Don't forget to make the script executable!! Now break your test and try to commit. That's easy but can save you from breaking the tests at the main CI/Travis/Codeship/etc and being notified by email :). Why not even validate the lint of your project or check if the coverage doesn't fall? Does your team/company have a patter for commit messages? No problem, there is a hook called <cite>commit-msg</cite> that you can use to validate your message.</p> + \ No newline at end of file diff --git a/feeds/tools.atom.xml.gz b/feeds/tools.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..08b617c69231bb42e0eaec3bcb24bc5a13b365aa GIT binary patch literal 1736 zcmV;(1~>U1iwFP!000021MOJbZrnByea}}+Hb9&JyVBZe(Z*S?kvK`?Aa&E&LD46J zD^V+EDN+?FEBn^3>07^|f6_1M8B%+(3zMQrd`)1-J`@d^K@@K{x*H;Z8exq zyz*L3PgPwBV`xNY)@nCNSu+dR!DwGFznsYNS3G2<>HKgqP5n^0hCz z%znDmv&}@np#(nn3Z2x&MwiN`pVKi(aX4w~9LDqM-gs|3+T9zC_s({|*&mPbH5xy{ z&q=xxnYeb=$Cqv%rSZ*jg~!ucWTm7NRVaFW`qK${OQ%1-p?9*@A_LgenjBfkY$I<2 zmI!)B26{&yoHZkFNA5R0YF2tj8@);C*I-Uqgq;)=Ds)U}kos+4KHbYu(4 z8`1IYYDtB*-4H6B=*XACy2Tn?u)PU$AaUMYDl2dWk2;($+`7&5Lfi)L0x{~N|a)8mP znTA`oi56lY5yIehvMGf->tyqTs(^>~2ZOD&(k2r?u~72?xh6Xpq^c5g>H01{=Po|y zF7_5ZoYZDMSZTd#>6t7zbwJW{0+eS) z^PudUHJ!7jbJlc=;k5gBH2!Y%XneLe{(|B3S?T|6IIS%1e@Vz+FpgeH@SW8QH$<85 zI8?ASAV;rIf-sOtCPXbzr?qvUi{nUIl@x|$m?|oJf&C5X6UO4KiR?3^tQ2OBlMi+V zasr#+eFIQPgJldS-++P_%H)B7oo|Z*>}GQj_}sQ&5v>-IRlAbA3j7P}kz~ZkX{K$~w99Y&oQQiOx4M-Nz8;9Acbw zJX|nX+Tfg_x3Avz3GQsONVY922Ou)7P_ZMY@@R@4bTWd}LlaJb)x%(^lmJ>=rs^Ck zK|F+)VX`Y9=5~Tar@`$w&imI~{Gj`UVzxfCRlN$HgH4izj*u_U=_wS(eTMRam7R^t zI~$V#KkAFngssK$mceNZ`mPj8t}YO)aQru;nwJ{iem&4(V)f{1Vb*hg`vX6(G-PGC zdhc#JQzo4WS6&joW9o{o-Z8Uqhb!Zf@F#-VZd6YA)K(l1>hHd&>L>ReJ${0E3QW#h zMvsOdgMeS3uKMt@FA;}LfGLo;+&<4kXP{K)GSp)w7BQGJuap^>s!-VEy9b&JCIh8ekF^8^GFy_w6;1nCc7G|Cd=iWQLTD8hVb+S-?blmUj}(C@ zu;641Qbk{hsCjIGU<>I2Dk#E3dX7)4ctw@+ZqEeQlSwT+(+0Cn-&$B@9q*EdfQxMb zx+<*J$X;l>&}w~wZ}(2TKdRjPa_@wKU-sO9?VX`sM;9FHO>UR{=Qlt9ubUrw_{Q_V eMK?-p+V)1VKor-nf8ie}(|-Wbp8KvA5&!_>3QlYQ literal 0 HcmV?d00001 diff --git a/flutter_with_firebase_auth_crashing.html b/flutter_with_firebase_auth_crashing.html new file mode 100644 index 000000000..4cda043cb --- /dev/null +++ b/flutter_with_firebase_auth_crashing.html @@ -0,0 +1,433 @@ + + + + + + + + Flutter + firebase auth crashing - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    + +
    +
    +
    +

    Flutter + firebase auth crashing

    +
    + +
    +
    + +
    +

    Hey Folks, recently I've started learning Flutter and right after a TODO List, I tried a Firebase integration. But as soon as I started setting the dependencies, my app stopped opening... just a crash. After a few logs digging, I've found the following log.

    +
    AndroidRuntime: FATAL EXCEPTION: main
    +AndroidRuntime: Process: com.example.diadocasal, PID: 13672
    +AndroidRuntime: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/util/ArrayMap;
    +AndroidRuntime:     at com.google.android.gms.internal.measurement.zzca.<clinit>(Unknown Source:60)
    +AndroidRuntime:     at com.google.android.gms.internal.measurement.zzcm.zzr(Unknown Source:7)
    +AndroidRuntime:     at com.google.android.gms.measurement.internal.zzfj.<init>(Unknown Source:23)
    +
    + +

    Notice the "NoClassDefFound" of an ArrayMap. To solve that I did the following changes to the files:

    +
    //build.gradle file
    + ext.kotlin_version = '1.3.20'
    +[...]
    + dependencies {
    +        classpath 'com.android.tools.build:gradle:3.3.0' // gradle version
    +
    + +
    ;gradle.properties file
    +org.gradle.jvmargs=-Xmx1536M ;mine have just this line at first
    +android.useAndroidX=true ; uses androidX instead of the default support library
    +android.enableJetifier=true ; uses jetpack libraries
    +android.enableR8=true ; the new code shriker
    +
    + +

    After that, voilà, app up and running.

    +
    + + +
    +
    +

    Translations:

    +
      +
    +
    + +
    +
    + + + +
    + + + +
    +
    + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/flutter_with_firebase_auth_crashing.html.gz b/flutter_with_firebase_auth_crashing.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..2f7a9d747bb4cf800da870a9bf7939549b420b71 GIT binary patch literal 4651 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 literal 0 HcmV?d00001 diff --git a/images/Resultado.PNG b/images/Resultado.PNG new file mode 100644 index 0000000000000000000000000000000000000000..f1e5147de30808140884ac7377745c7b1123ad4c GIT binary patch literal 7830 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 CbA+1! literal 0 HcmV?d00001 diff --git a/images/Resultado.PNG.gz b/images/Resultado.PNG.gz new file mode 100644 index 0000000000000000000000000000000000000000..009bf386064a34db3773f2d60a66f293bcf52d1f GIT binary patch literal 5227 zcmV-x6qM^9iwFP!000021MOIQJk$ICM+rrAB=<`?ok)==bLW)QsVI`%CaqG5Sq!^0 zoQg7+I$eaJlXFt!(pL;Kles3tSy_dx8J5k)jJa+0{cL@|zw^)U@%`)jyFShyk6k{W zz22|a^Zoj~UeEXQ{l0U;$6I5)!FmM+1&t$z5Be!6D6)a~N!4}09iO5LF2I*!oS*lP z3Y8S2N#J5_q~~!@1%+2R8^jUHz_nWJ;h;DLg^gs{Td@=R{JesKiPe#Vo~M$)yb&VQ zik7ExR-(HrpzKt)-}a-?oxn#-+}7Vz6Uw*WJy)BuLC5lexdL_9Ddnk`W?rX$JA3a( zOQk(2M6*!6wOcy=Xik&x)sKW_#c$7e;5CWM^G;DQder)_n6Qf8u{$b6~t zm+}9gan{$=%j!7`=b+PX61isCK9tcbpH2_wp?=`WMS}Yw&Z(XWr zXN*gVHn2~t$K)9OP@;!3YWIvntZ#z%-=VjI+>Fokb;1U?Z5TubnxrjZBIe4N%?Z-k z8RbyO-`;*LEz9Rc!Xai+fiyfWVB0pk#;In3kZ@Bf%`qBN=u z1dGw}EVOv$HMLQa%N%w#Jw&P@E$R z7FuNCrP{u8_j-k+H(1p=#Gc8WnLSjD1T^d%S||$1rkaGdkCvQwyAy%0T}%lIJ%CD( zj;m1V0Q+img!i)WV_B!TX0c;HZ|TA)BAl06TpbXJXu>A~@SG6;+cZbE)WFTI&ts+~Tx`HeZ__}N~K2yDq{ zdsTiKJaaO@bjyYxCLl6DAeMIS%WcLHpgU6tvj@G5# z=L})iVBsJNR5f}D;gZ2z3c}6%jy@;4%%3*V_f79?KRI1}dznKcM_uxr4hJ(5N;xQz zr$1vwxLO>h@pQx~gIfO69$gn<`6}CY->}d=17omXAS(nc-hj05q4JbX-_v8Djso0+S#%4<&UfA{Z@7ZL8WVN+nQ}3fM=BCrq z?&>7JU+eu*CmJrg7|x%Yj)mv3Up;iuru6ZX4Jn!?xHICba2wWiACVO6Q%y>++sslnOWpqAsJpRFHT(@@#4%TN%+|UjfDkVyaW{pqLDh<*E^`Q+f~RgSlqi=4^?ET?r)W=d4Tku`LbHq&s?0KR6ZhRYOEc<)}?~hZB9J zC7@_sho7?F`hQt~s#;Zfnld&B*&-5g>y-VW@)CBtMnuJsA!YwiIA{m$e3jc)rkL}a z<;MC5kS^&BLw%*a@C82S?%b$&83{||4Diwe1r{Hcj;!!cmJL+T;^yL3Hn2AnN><~7 z8B$hFg5V4z8uZBEzMe*m>F+yD;8%*6@w>iilUXq&WtN=EaVe`6$?A_3 zo@=$4a{R?yKwd3CO=Hy<4|Jt}~8&1j#H%Hs`ugMX$kXBccZ$Z}~ zzX(hY?}~FM%8nJK+RWKaE1JIjIY`rGWQ}2I#5tRH+i=CrRkrSvPq*YzrT~(h_M?521Nfq>)Vid6DPgNTFk!P6h46mgemMgtrKZGU6!XL6 zh+C|cZwjs9S;yu0z-DH+@RWP)~SH+VvkJyavZed z*9+gthTP5a&>w5SsIfz>BI$A;rvXg$p4ZmVZL^qaGF)n@xEk`knz|okPJ`F0vW;{1 zMSd}+>J`ZV7&(%BHC5RQu!Txscvp}adnz{AnN6`vlp~kTu-@@cZ!MR33zLdWu^XTM z5E$;bVGL*N6U81zO!&y=;}b;+)EpBJ^`Y_*;eZ4CFqyxx;W>US2Dp5GO6IQGan1DO zj+t*y+k^6n*%cHbo3h7lAT!xL`F1nem(_h`?y_-=Qk6OlHndr6j**mW3Yg^d#Sh8i z{mo*w)YVA5T9)O`{RCqWyCn9^GJY!;rh8Z90#$hpPpTr759jYKc< z!m(21Of4T?kS%!ha2702*u#`qdPdZWE>u~(z+h;ya*}tqE^7*M(xC*I;VX&Xl&1^~ z^!w_7gr))9{_6$H#*R73x~7-~{M%*e7ShU$mv}tc^zKX4$TP^*vMIP6&V*7cqH}CW zAz3&MHBnl23LM7BAvB$z1e|DJ%NT#G2WEEezdUD9gSg&%3%h#Wgh)D zX;GXj+qjBSsCb-2%2aWPnNAX=?U2>nf>si7Drx1D1HWsDcZax5jyfI4`YR-*#rc`7 zd>SrW@5Uv7t_=>#a(6;Dch=t~)SDm%WLasXY-9hcvh$TywS)Jc-ar)+H&-(pqjQAt z9l#BdvKF|^!#Vd2|FeiWskr17gpJ+wQ2^mHnZImY0i8Gq)Lm-6%$@H3KbxdTtIN^Z z$T2EP_RyaH4nT(m#r@e6_k=5R9{QAK{jZ9$Ms2BcopF0H-^17ktobB#-XXa-Q(6M3 z1AXPfGuZ_DwG^4dcYh4|K?Zhgn;A~{;$hx*vK~0F_Ga9H_0f6q=FUlprIen&_>*k7 z29RM5%hwm=R&Id6D-O=Hlnu8(=mB#0t^d)H|8GI;&2UwaYP>G$!}OqM{Bp_TQyhE! z`I5N);HDT7HRmLpMW*p`Sv>E^Se+V9T@U!R?ocr7M5b+1Uh-$Bpqh%$)?6@tQg7*X zu^dqgL`g%9?HL*v=w94$p-QKdJUI(3C4*w-N3S7uZoGlNtMp;bjLm{)ticWqw|xkD zQTMuP>YZFO@Am|_^i_?%4!gM=uite)!Xa2venxzGqz)xS-m;x@lz~5Q)Bi5ky65!T z8SthyY!%mY%2*Q;d@xC$VwfBj*rBJ%Z%xwal8|fka;3zWkojIPBr|Kr^euUM$~^4I z2$_rwaO4!gSCl)l#;0lgYPKC;c@&TozklEV>L%IDZWp`LgQkL0ojXABre+Z3W8p1iXc_j4FbzO zpOIOFZ316Kw9$B;5I$4}A$8~(2GTdk%GoR^HSMNwWFI>SwtnU7S5c#Y-1yQbN|*L1 zC&X)}vYXvr*Pzp ztWuUb+x!UY)Z@?Q)&+DXXW9M&b=3Y|mL&FC0|SZ|c#9(XBPZDj?rK=Lin8QP2b*k*PaL5H~h_?EvKQbrdOVE&M`eDgL21Bhh=(#*o#pcSz1U zj%q-K;w?KL<@iP0&E?a4(jt2Zjn_BHSMMJIhD8~^%OJGbU?X4t<0ilygKGaqZS!w7 zKCex2mx|-Wi>w^MNFt*h&%hW`C+(Y8m${3a@+z5xLV9T0*Q>nUWnuU0yR^OA-oCW3 z+s3ZC+S+i?`c?AsWa;9f03x0tYYHR_jFpRW)zZHPd(5Kd*LSyvZ#29kylh<(;h%g* z|EH!&`nbl?bax=T=mLnQ%y9Z9kswN~LE-W}ZE739BIlHCziBZu-2Aumhr`D_Ks!!r zQNM|;)*#LQ%f<#;6q@bFAuN#t?9QDeCy(uHf1J5I;CN{_7|)pOeBLOaawlxv-0z4m zj$o^ejcnT@hQ{88sgY=_4n6vCbSS>!vv!s3p>wVmo#cwGrh`!cAsfM=h+KQul+Hku#D zePYP|fbGt?md%=aZbd|74JYG{)6kG$#Lw)K@wU-o4q!y%dHLweg}#d+30 zwc}Qtnq9-!gXPZRc)aN9d+gw7yok4tZH~^#^(Gcy?~OV4(K(w=9%|_EAI3YRJapD^ zxIG_oa@JoD#P5Eo)a6Ksla zA-Mn`i}{AkNLH3Z4QRS;`^@90!9X4%pWBi3^l&m2HYB@6!{_{_E6UbV0@UpQ+m zv@VZrmh66hbD`HmQ~s}s$b;hD^PwS9p8|h_-zevVna2PF>;BhpyT<`C!ho7LDqBWd zY&JaxCqSUkY5oe(r5{p+0z|xKaC_Zpqxp209SKzmto=enmMx}xnI6a3MP5RlxSVzc zvTJn(l!hM>JfE_+CZKHV=?^4M>)PuJNEj-Nm<@zPYzQshQrzHW=4)aN0i$C~_+D)B zvyXeh;sxfXq@^sm^fH+fs>+=v-aa% zZbuhL=ybAD@p$lDei>5e?x_iN+Cwwz3|2+3ITdx8puY1lCb=%ZgF0P zMA9C~#t0f5^LGW>8k;bjv5pO(ovXvxlLF7Cn2-;E`skv(-pe#di$i>F)ZxAPu=g&z z9h!)B&w(JiS#RzMuWlxuCV--enbQ_N{ST@bTySMJzy%bI82(z-sl#6;%o}+nAmUDU z=fL6u-uQrke70g0F;WL-ihr?9cs=W&Ux#73xM9hImqP<$+-`S!8C77SR(9b`Bf$1= zO8v)MmySCP6aaFtwxw|#Bv_TG7_Srvj_#>eY5;`%* zi2{e-cSCR-*`;*>$dSFOT3sGz{cyl)hcS!X!w5V6DvjB+2+P@rXowJnN@CW}Kct2z1h zcP*u{F=q#M<;i-8v)c^E4GS-qlb^cs&A2o#y9@H|9zG?uGVywatnAnB-K<5?-_rX) zwh}&}E44Pz=WCs0R$V7NK#^zc{pE)&$PKD&B#p+Ax9kC+Wg`ZT{T1Y|Ab$nIiGWX@9RF-cCO{V|2V-WMmpR_M2@hquyE_?YMQaI z8~|BZSPePZ_E)rLl<|KSOzv7}kw_#owjwsOIJ>Z_y1F{E03VZ4?17A8GMV}L`B{Zk zDS72-*viD5G6VvVoLd%`Rg#`xnTD(E=;-hZO-sxvO~@&&udlDDs2~!FcsxF{po&B) zjn6KL&o0f##}|`Gb+sQ;Fcr16wHXEYjQq+}OnFuTJ}$E)9alLwH%A~4;zDy%F%?O< zWtEkclarHMTU%38Q=6Ncb#-+c8ylX{9@Ep)>+9>Yv$NTF5`)1Y;qzBkR|c5OwY4=S zbA(io3xmPp3P^T{(wdr@s;a6K#QtZM#D%7nkVuH=f@%^eKC3h{ADy^Ye>~iwg@2%gf6o5}_n7D!2d{l1}i*3q>G;{o+fjiau4S{wX@gzKnR9&4L zg+Qd_)zr>1L-r#Wl1VCv&Q1JSS02IaA|VjbA(?n4lUhI`g@opMAR|g@KW0a!k?@(R zCDnH55h5XiL~4i&&BUfgMHi416ck`ElwV~20J<~~5Lq-K4>M}zSN$Apm zG8&1HODsYAb-jN0`AcO84uOb@OUfmbm6J&L07PjmieQHz6$~xJz+mz5X=&vjJ&>QU zgpW*S7a=!kVS&_0qrszcsMLmB0^wcG+mf_+zxdp8OhsyZ!b)@G+FDCmDXG90h9l2W z%Lu=jOuxe6FH1`qskuu_U!1ES6_2h)hEU>XInMNHTkjkM&b^v~M zKOO)K7K|<#EbyyEmEr*yfl!?K5y70r=hxQP#+RWQ=V7pz*x01ns`91b!T?l95vgpS z1Lju<1Mr2IinQ2RL@+v+P!tjova~uf!W>FLj||MuzxwJGo1X3oh5jbvBAZug%Sc&y zabv5iMMZwIc%TGZOQ>y(!Q+RQzTgX@2f9dMkV}FrEW$~8ns+RGM&^_57+YAMXhmA6 z=ldL%diqjOlQ&FqC>+Wv*j(lO`n-s(kUUJ|#P#xXe0@3E-}1v8CrRDob1lU`L^~3T zyNiDZW~DFIIKNI^L;KxaIvLd3f#~R9=B`cD&5rpMwov@WHX773~M|hVGb8D zYutsI4t{u|$~f#&4Sp-C55A9|UQ|sX@~QYuWX65z4J(hkl9S;Qrqfp_kR(|fka<%$ zhxGlysa^w9M{+qNVosko^PCL-VqI}Y!d-7qoThFa6$f8)03wZlg&5kOdLYtyf?cuc z!ySOFEelc{FrWCNf++BcIy#l0A4J9wMb2$lkJ6H24SbWdUO*yHogt^h@MBjNT-CS+ zzU4VyFJOYvszlFl=UqNDrN~8_mip4EcPhw$ty9J|j3vpj zDXREnftaSfA-&|vl}5lcuI*BUzJH{C;;X?{z*mVe>vz>KJ1V(CSg`}=ejMil;MZE) z1YRX{Oj)3>xfby-n)|Dsv^~9u?!vh%OutZLm~x`Z8~|B;Mq7IQKf1~QVV%| z;xjr7!nmYg12bETvtK%h%CF8ioDK$=0P1-VNelF+9P`sbyy~2i|K9+OHsdtsK$m{X zv;uy)2}*X(ZV=M$F5Fvx!KvCQ{ubQM50dJaMmD3{S>uBkI5c{P%J1dlm)vShzsu0m z@!T-t{AEi+4U;yi@iOdJEX%sKq=C@6x#i7wSX8i?{?%Sht)NS9+mA}-V=fKpdy*|+ ztmrTyVcS9(N$x!OcEG$3Zit(ctyXeooa$+-}| z-esrf!x$bm$umYDg!2Ou!77FAZQxcl?v8^@cHqSGrrm#@S=l(12FmK|jt>!AZgPy8 zwZJ2<2))28X=ndRtGA{I4jBT`Em&nO48-N+N$Uw?pi>D8xrM=6*AJwD)4EmLJHd6o zJ*m=>;aN3qK2%c*u{Szpys|-DRNS6*KYv`$-a~!7uFX#20;ZSe6Ua&x1}D!Qo3&Ea z^OvBh0~-T&iRno1Y|ol9WqTcc z7+n?T2xMmB%aazWd;Ou!?Qu0Vp_}&df}!JF5raH3pWc7W3FOL+m)(?7Bs4OX{X z!WSbO@3`5f`2e1Vi2(=M3dEPGP*(#l3`Mn>*AKm_0b% zsD|V4wq*9tyhD22%mr!Qm?}+K48_jLYGl^euityizN+xP%MMh=o@V&6S%FPXY?*2- zld(sw*}$WXzILhvg$IvpxlzAau7oC2>U4OcyYI3^nlQ7?IK6s>Wy%GDs9#J!8|=!T zj%7+KfrWW{A^zp&CkNDoT%>D3=@XXBUt{alPMeoLC}0k-Et@Z3ch&(%IkHzs%$L&M0Zw#AFf< z!6*=D>Bsp#_+uJZUoAkkT7f?!h=>`FOO-;7&4(eWo~QYqH+?1xRYu^zT!CTQSI;sJ z2MB2@B(+PLVf@*fgj2KmY9U&e*;oRnWr%??N0Qidr5CWJu@_5XWo7j@UwFS>9F7;wn1k~hyh%sv=c2NvB~$dXzvuK_5PA6g zG`LO{t*#LjDOMW_bpA+?4B5k%L<@mQn4k+Gd)9xZc6mX;bED=wc|k6&2OQuT#>aub zj|A^N(t{yAxgY;L0fF7_%41w&qrxUJM3Zu&+yForfD!a|U!(lYpp-MpsrN3wbgc{%J0`Jv{2Y`RKC#sb96p zXG|2+zM%qgt|T%v;5%Duzg>hS7ca`p$c7PjcPJK@x;dtPjIl!opS-Q{kwgZ(P`o6} z7o#-73VtGMmn8%)=SPf%WVbP$M5b$8uYHf)o{EcL<~?tF>SNgHmp=1;Z{zH`##bK; zEm3>7P5ZF!t~p2Vz4{@4;L1t2?{VF6W>n#uVHR8V5c(Y5ucFN~o|=H+t$VkRN2gj7=Y4WrJnB`|?49bd*5K z=7+Sfxp)3r_3?uOsnCxVQySCCbZ++=vwNNEETYj2Ew~!|Abc-p?_0^vmD>l+k8!VO zw(#gIdw2@&w6i3izhU!%GT_K!ble$x(FtJne^Z2_VSN1KkFr`8B4&GBxP3^@>^i_X zy4aTdj|+_vviP;N=Q?MM=}?|}kvH7Qm*4s#AdlB2W^@oYMm$Zc(jB1UFSXbT`Pr=H z)4tfopqCLo$bh6~&`g2;ihKI{!wz$8u>Y5a@TSPA(fot*4~9aTr#XI}rdW`Lq&~kc zZa;~0;fX&e?CoRSg))G?>d4T-=I|O1z zk)_3#U5&uHXdBGc5vJ4}>S9Wo5OPzf!L|7zy(E4NnIyOzMm>pZ6Bj=K_rueWd+tg! z`8^K$@%g(COv}2%K}6wkx+(M{@r(W|nTHHF`3MQN9plZI*!n$jj;+*EgWzxcyBLE~ z=bb{w+5}0m)hamYa#f9vc_k1iJ-e{m6Svs{nc|Z4W?TqmWPfY{j{z@}e%w|ew|rIw zeJo;QW>{a%f-QKX1L$V-vJ6;!c4T(J)#4R}_(3i8^>Z^l4N4)4CVI-ST@!r<{70Sn z;-cdjkiLKap*7L^S3wTR4C8ahfsSOGU$0xYwAO;$_7D}ePF1|X)1Mjc_!f5Aujjc> zG_J2+)c$@n!`MxVp1F2zycQ}!zpY8faEAuGBxbdDM%rANd`&*Tn{g#{Ov<`gud%gD z#SNm!Q~2s@O>ofw^?-QT%k2`=ktbqLTpq_GrQ6>4jQQ)$b~NUG7aBNRuW|44s6WfS za+p}j;g+UgN5wC@E+f?LR$UkT?wkxwgPwrQU47$|v35=jObGm*8ObDBB`vs4>+2+) z2us}SQOu%S0ba9`2Pdv$t3KrVG{nHLC1 zYFAOwM9(Sk@bu*R{24w5jcNd=KXd~j#l6N+#b%JSMT$l{|?9pV88Vs`;-QW9+B-0@1y~g zUlVrS=hnw++E*17@`wIbAHWf4QET;*<_N#pv2YO~m+wfqsE*c8gq$CM&NC#D5POK= zGfOf}AwJzomTByBE#S31?o~(S6R+1#;NA|Dhx>bU!Rf1{T&>9C5V?@BWf#*&LFi?Z zUjj>$B@ndfVg4RG1Zr}aUqQ|eJuqgN2Z`m2;g5)p(;)9sN8uyg$9@eSt|% z@k~d@fY}AQQt)?n=+nc~aBl0H?0do%;H;vlXOvF0P29gCDdVe^A&9bge7Cln zDgF9$LPgHMtl@(T&s0b9&AE@BpF^W-k%{*(Rc$|I<&Z>!-{+UC-e_mz?tk_poNFLg(W2gB=4laibj*YYK5h1!9vQ8YWsV^azr3ZjpJ7c3cIc+L(jXF<}W--O5Yc_z3doB=z^?;hV}4lDbmYDZj&FwfGZE=!)l z*2;W4s{WOB@%|D2d&l`Y@4x+pQWLtMb#d`%a=Ywj`_|yk{=vLwCNJKSDNIxTonoFN=cQi8ARD$v3R`03~ z1CUc3JI)9$x9<<82&XUxaT82I28}r}c5M~u-lA{=igq_iw%xU=l6&Ul#YjJ<0wU}4 zL4mtDdq12#)<=6y;l7OB0R>85C`O2}w^Y5NRuQmv|rzat9dH(C6=6w_Cz z#Jyp?dfvl@VMh~PXd_cpZi#T^YsCkGu6b~FM!Q`EppF0Cnrt1__sy@=$*O0aQhAk9 zm#D-I+=;!m9A5XUa^Pq9Fj3fb5BlywfIxG@PybCW%U?S)GH%ftyCtute0Asx;^o{) zi=98WDzmM;^6v(C@si!+;Qv_m#nzEOo#Xa*DoN;gd@gAbP?*?3Gso^`+S~aEq1Y(ryu-Kk~&=eKWEK-*qvJjz8O74b_qEmh@xE*-8v zL#xRBNbJbxSuzAX*Qa1AofZAMQ-uP#o>4f?4hO%)xppPo9>*0Y@(PNpbZrryc(m*g zmF?^C5A1ne#VibA!8AzIfm4q6Jn)jeR~!1z$SKg8#shWRSr|ID`)<_nx(KHg>b7@) z9zv&kud)m>SpO|UesT{1avk*ua%7FTa;afo;SEwTi_S^GADn*`BF=Ihod`YKd62=% zqPkQ zez|f;4fu+!f2INyGyI3ki_E@Wn!R!9i)#CuT4lEnztd?47?QZXs1+o6P{SRsZ}7R; znkz2$Sj?&qnj_ahiH)jZwOi;&eSLrXiE`pMiI{`}c<4i)yl41ruX-8Zn(^m1`*7hA z$;l&?7jN0!Pf*|PFR@NHzWpJj$lF)-gf#QFu(of((LcU!gh8{2;=U-{bizX!C1j=h z^-FF-sKuN8&n=^^RNu(;p%&s}-b2FUw(YtsP2xe9qKZK9lO??WQ$Rgc5-V}lo7~%I zv{W)}e}7yy0{^%mgj@NMg_aAWp?h^AS7i7UG+JQ(rjBm`&mU`IO=wa~-106719 zTy;Gr36A^TU5>DvtWuc)^yx85+t>%f@DJsKBY)#+QfhtTD!kF(zL>v%je5DZr`A3e zLw7stX)kcDpU3;iB-IaXRgYg1umG|K!9OBQ!?Sk)H2|?fh4<^4NR(3H6aRvdzaV>^ zm&`%tPy<-@L1&-wzk!Lqzh>7Nq{;5^>H?L;pvs5ne+XC~F7QDuowqA~} zCXfHQW**r1o=fc3%cuHr$KI-^*S}cud>$?M8F5y0Yn#tzql?hHx&;p1LV$TZc_^?O z!f=P#cq%B@Y63%ijBRw8D;eo#Nx1_IsWViQ#T@i^2NS9l;~&3oDW#OTjpyThQj(ve`d5u<_t|5n)bxGLqGUpnT8ze)Y+$+uQGcpSSu5dM^@ z12_{vYU_Qd=I|0(18}Yby{lHWR7OQ7lY=;H^N9aMQ0>a@aaDu*Z%dWtK{ZJ>D%*b5 zr$PP?H05C7r%fa(O?N+keuAm58ML{&dKX+<-4n^Yh4E1#6Fk!M9KU(hgX`?{P_vRIh}Zk z*jtQ4f|fyss!wS>kTWWeN>tu&DmRcfjKh{=^{ll3XLZ0c?OASWsr4J-aRFu?bjKP% zIbeyPId!sITa-Im}W`1=Ud1$|7k=VITy* z)_i0?R#*qsJ=~`u<@DsTdl`F2o~{8ci7Vd3lZ^CXUtq&b9c!ug9ZM&-v_^qAOy`EM zYs+YJ^E}v1K3kAQ9PB{`=@f)o#6ivBS`}Lmr-FU6VgFf%Y-x~&7yTRP1=IcV1HAwC zC!hF#_voLFb$$mnHAYDMja5UR{r`UTKh6A~t^IEbnVUy3GLeYIQXZN}m`JcNSpUHO vDZui>UD-o-|FI6dq5Ww2I4! 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

    cMbkHXHsylNRAly^E;DGO>u4Dzb{IC=!KQkIr+R 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%0AUBtNxhft0oxHSn429Y=bXemp1zO?_&A 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

    *MiXx#rI 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 CQa*J6 literal 0 HcmV?d00001 diff --git a/images/azure-data-fundamentals-600x600.png b/images/azure-data-fundamentals-600x600.png new file mode 100644 index 0000000000000000000000000000000000000000..88cf15c7b3be190439c9d729c4b370325eebbc9d GIT binary patch literal 41438 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%0AHITm4zM3{ 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 z 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 z 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≫I*CmcB#@0xdvsVrHzdUV)qfEf^Uks@G~ei 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 z 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 T7}E=$j*jkT9=eyDAjkg)R5XrR literal 0 HcmV?d00001 diff --git a/images/azure_monitoring.png b/images/azure_monitoring.png new file mode 100644 index 0000000000000000000000000000000000000000..3471441a3e02f185f58378efc5a9250e292798d1 GIT binary patch literal 129663 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


    E#BQpTb4{qz&j?Cv_7WU)>KG_5NZJFY-jSl z-ejphX3gFD`N6tsmWr-#F#Y|tx&Fz}pFH^2&r!Myl8au*x=+L*ku!M!VeDF!qq{iaV>5VLiG1dWMR*h} zdJ9yx7L_afmOZHzG0@s#C}g#$1&Wj@Cq`1XD*)LA$B%ToGN(Fbl1oOs3=ITkQjN-S zC&mUsO~X5xF2R#(0yZ6Su*TqvrIVOD(?;)?r2BScQgc8p$bBmMcsq%bAGBD0>|xgt_75H^8c4iIm`CsOI#I&N4_QoGEg$71 zSnBF0vw(Is+l}(aPr-Qvh6uNY;?6SH(HWFvM|XU9T>3oTPLWfdy!=rBe1z%Xv!H|H zx^^XB-w@T2DBEU*BHnyQ#0#y2Kdif}5M+I|Op}ZQdzp0MLAL2Q7BNV|W*5~Cq~uzm zTrn1ak_1!1AA^`O{5+UwHJAlB(mD&`Q{O8A@$%GC_?}qzr3ci+`vB>k=F(=MvdoSI zl9%>a-}t1j-$)5txfHNfUtHgHyu`k_s8v;GXvL>;_&K-h{I?OW?V>S`*~+C zn!=a-{<$PT1WdjLOA4)q?+eA4r9X#d(OUSP&%;0prvueolU60@&2v{yPjUjOloPQp zE6Rw^AX6$nArC}qzhO%wUM=bJo5mfUEt~&=8?H@BF95w$?|OFlZ8t=<8^RrV`=d7b z^Wach61qQ}<4dkGPe-jK&XGON>5%`Ux#)Lz-0O>VqR!Bg$xetKpa`!=?={|!hvjkb zAIFJ97?EOxE4OSnH=Px-7)OHfmq9b;G8r9iWFcsQ4kSB}R~CPq?B2TgwE8VzHofAs zvD~E<5#Bn2Ep2=meT>Q$Jo;PVWp}XQHB-k|u(94s~XDdaafz& zKGCr^4J4$L@wZXw41xNe5p7gwfQJDz3e;V*W&m2Nt;mfm;sM$?;J^7esgH^eI_A9gSJBEGx{mD&amn`$Tq4o8iKDHs~H)gZN zTo*Fa$!VAxfNJk_a>#DiSC1Pvf32o6X8F;DSu+QA6GCt6ll%Yk9db@z5uABK*Hg~t zd|g1Mb$F47Y0}5>{1=$E)ZV(X8}K|Ju=r!hRWzmKSWSIbL!at+a1= zv+1MU{edGyPr{=y;WlyqBC0*&8iG&C$NS(Ua4S_b=S z$WV=IGk2y;*-X@q-lxhX6V)S0$6c(A+hI4~Y6-fWJ#sx3D}NXTE#2EcVdAXfS-;yq zp}iw-v3IF<|I_&6UkiL@drr^KgF;-0RaG47J{laoME6t+Xq&g~^A#uxqVZtCz0JK< zQJa2k(;Gjatx?0O~e_q1-xDQ9aOf76px{V zj}lH3|Lf=OK7yll9oPEWw=`_h?a*jtSzp3I&5SX52L2Nu&j<=1$7(8vOz4D;8QSANd zy`q4Jg7sJ5Y>P@KohD&1%Vcj;V@gzu1;SpS9H94x)ONszoL_eL?W{&&)X z{HwjzArbIAXvXTi$XFq-FMVcylbC$63}-hF7379co-k!oZsBNc2RxBbkRQnxUuz`m z_D81VZOEjnDnnTm3~m4=UvatsE4WpU@9Uo<*aa3pH}WRGKyo7(hJG~|?;X>5EAfS} zm4yqgqU?^e%lDwfm}E7^X?ClcEB zIcb`Lv5@6&$BWSlQcKp`hxz^4;L1QCS$On#ZTp?sZ<6Pp{9H_9z2f0!6@;*D&#(X^ zzM^Zf_O$hf%onNYi%sbG$+l+{Eu3FzIfgZ~y|7}h97@QkyqtOwtZ!XZ=XE>N{c-oV zWYu;f1TD^bJo~Ch#H3y0v8V>GR#AV`+vWigdrqX4hRK6P*L?C4F}B#OJag@xM(xPW zS&$i$t=Po?20zD?2pE0>*PqrVh8~YE$w(gZA$-Dcv8z*31+}4xy_UKxgi%i9;!Ad;d3BIvps2#Wb*=*0_M*`+r#a zIACyxxA*%P?tm2u3nlR%Jhr~!K1cIsBWPBq=JR1l0pY2&aug49uBF07eJOGEa#5Ah zviS^@kgbBc3X)0tKdviYit&2!{hZ8gA1;}sx*BFiI6YxC#kr8+K9($;kNTrw_qdn_%jt=PThD z>sH^O{f+48B{?KDMH@X;tNka?cPwK!*C$$_oS`fuw9xr%C^0cCoh-=3*h4-{Iy%UW zqYv+V!`tBvPwL{?{wq-q4s!J!`}t1nS;$+MLY(om{ z8X7l$2d*JPj&`jj$!|^19HronW*u|`A{hbca+>FL{cn|j_5AE~-;MWah^6a6X(3vj>MRP2awXKpu)Mc*M5vxRVWuNwcT8?o1| zvG;8e?`O+w+WojZAR6_oh6d0kj}7`#>8p@ ztr&AK5Bv(A-6&nV>_g?N?{y`jwRPsHDRzL?-p%BKTqDke>#UrFSKwuzM!HA#|1S3A z*JZFsPl`Gt3KtktBcL~*GoLGZ#p;2=_G}XZ#B~PgX(O zhg$9U1Wm)P*}z<;*jNt5Bq+2DBi;VT(OI}f(YI}QX(d%yDFF+RkhqQ-RRWVn1pNK4Re?bg?h{Rf^`|X^ zH!#O(eHU>lchvDX&!6ONGqtmS(GF1TJ*1SRHN6KdSf!Z&%fm+ zODpI($~3gdBLyg}z<0Fabsuv7xr}}Q)6>rNfD1Vfy#_u1PMouFB1>QCj z9=oM$&00A6f*p}-J#w7~SpNlI?(z@6b~*)$BCbB9c#o-)BU4)lzi^H$!xSe&8mT)+ zXN*YJhl6QCH{z~bF#a3;=NDq!wl=L38uew{8BI%F5nZwx%Ot|gHS=Bur8Ctk3~i*% zuulym8GgHt^Thho!Q$WjfUeMGmp)LnNO$!eB49Z{4=`B&x2O3V2;4~C!efQ#mcWGu1<2eDS;qb=t!U`<|gc39Eb4!?!O|fX@b8t zAcPn~J?fc0fw>f+mxYGcJ`ce~=QE`JIv7%GgBt~j{_K4^IVh4iYFn@_^$%w2WMKj8 zQ_GE7+qD_Kk^>Q73>cVyXShJm;gdGMB&3qg)X(DKTLq2IIIF>iu?EwliB-qzYpP7F z>?yb!iGUG5=gjt6`MMXPbStKh-uO30E?cucD-=wFWz7Da|^;V{9T-Uwd_ADvcpd z@16E4)r^%rbB|tRe0eWPOe-2#?_AULfHHPB$sNd@N&%(fnTyW~Uo7E(lh( zygi2S)Q`fhxqx9#f~@bm3-}zy{f$KqALm5*l=Ma3O-kU zMUsk)^jGW7O(qKM{Bd99$VF|}0Y4YN_QNIvA(|I^6f))zr%fmCupm{Um^BT4nrBD9KCP1rwli$r&@=UC=tuX_%mY2# z-`p+pk`0P-q3APlYth{s)D!;BTM7Sw<8d8ht$Qob! zw?)edw<1t?e&r>L`!RU1-LT=GICeRf?ts{kRtuJ<_tA16SW9^Fo1xF@cyBRw&ohKg zSbsaC1(2!&)CXO6ab0&YV=0BLt+n&5@v=a6m{-8;=8N{LjhP(Q{kn=4>Bi4@^NwFK zXolTTv;Ixdr(cgiaW=|!O2YC%J_froz85@(cYWT0jo9G-QbUWx$sXRcX#AJc>guid ztZjXq=imz${Ggy;?yd)jYO=Pv`0CZj76~>9-K1rqV`15>puf)5i+*fOn}#O9k7fq@ zDZwSWawe}c`)}5Z>efRfCDYx@__5FaLXkGYqbRxd4RZ`D1$}Y1uC*DOBU!Z(77hFF zqW&dS$&cN|q^(DZ+O!{YsaRgJfxkPFH4Ov9<8lDdmB^S5=O38FJu-H%62Om zTJu6Sxg3skQQ>?nhUBp+ui;wMDbu&6JwUg%= zcC!NFw4iS?c3Roz1%B#{Ogbz*s4ll?{9reD9si$3DQb8(+VoQAnS7bW4JB!%1bhUM zQfDgnKmq9)(@-z6&ar9Zm{-WctsYNB96Da;lOdZ~G=sHt=q=Ftx`04$mgx@lj%5Jk zLayS=D;;P+P}5iBGMe{eicTs4^o8TIs}hc?nXeXl1T}Y`oKg{T-+-r24s5#+*;=Y= z_-1iS^t{}O8F&?S3aUM8v*4OldLe8*JC&PUuJThym#F~hQ>eEZK~dibOL!(UKxBpj zx}%Iv_~)%G&=20+xI;BqO5*S;35a>q;9B25{cg9o&smzJu3De`g$TLq{zm+zeYztP z{AHYSLQ!4Sm#P^tNL;kw6KZ|c)hso+bGkn_H|Ir0J?EWQwBE^@J?uXJip7UYoyNE^ zMC-)aihFn~Wg5CZK*~GCnllE(r2aL0eG}u#o`RC>$oov5V zi7$Gt)AOm%Mc|J6zH$M~;wZLATbTO@QiVOV5F_a1GSXZ(q;kjA;~xWs?(FT|GOUno zrx&S|OH$+P-UqV~9sJg;9vV14qo4ov7X1l&vhGxNAhSO-QZj-IKT)3NGZ_@qm zk=9sa{D%iqV-s~Do1Mx`JN|!`{tGR0M9@m5b`6~~O0pD$rqF!Ik>!oY7gD4dK7|oz zV8PP!+`QOVh&$wpv}W~>8w)DqZDqA2lw2>34stMyBPs# zX`1sRDQ_YgN;;06i|dk?Uh6%nH(a%vhkU*EEyOy!epE*r*L@9veoE2BeF1Fp=(-G7 z2yV?xKGf)K2h?@>wV?$T4{_k%Rv+QfCWEB8<0z#b88^bDMyYHrqO^Z;csenG_URd} z8txU(NIj10w-y&5)KyWno|VBpj1W}0TL;G7IWZ``e>Kxa5!N0f3WCyeP^xlr!Rno zNZT5`1{Tl!MO^JI`fs)HsCrH^CBsr9^xw+KHA^GfT7v>#ep^@v91s?;eyg1A35| z8QzN`KC^RIm(wdbTbJp@Y}ZZY=NjiFC*ccH0s2#H$w)v1R5ZW&gXiQVUgSmn0yXd^ zoGkvAKUq`cuRH0nXrh5Sr{sWieFGZaZFZ!6@V=o`p;s*BtLy?9%$bWxTIe|V@-57S zE&ejd^0Q%e0qF9Y`x1i4pxhTrEY4W|z;j~K1imQ2^OP70Nn59v*Amt0o940+=B;Yz zy#%&T%&@tqr8o;1qK6n52HlHED9ukrL9L*~JXmo?gk)%*9=#+*yB~!|6_b%U zjGlF}RKG*{*F~YhoXWT-SfD|K&{I&s*erSOwCJ(-c3*)x2V%)=sdCbQ`5%_w`*rN1*lOY zH#q*5m~jP?Vl!vgh|=IWTO-XJX)U%VIWKl{W`pKOQi%F+QrYvZG#~m*&yr@xo;1#j z6r?zd`I;1S&Av!x7I!_|oI8FaHq{)ICqVYdV|Kf7@}MrzVEuUgUg$OxGc>l&#Fwh%!aV=$xu zE!O58AfOMpMnuxfAnL!28SA!QB_-Fv(qpac zRLUQb05($}hDwneKZN>UZW}BsY@OvOZg_CK*4o~qqEwo};c6Xl9?%NakUds)T*#>{ zdo$`bd-;6P??S0tfE}J17)%O}sMn+N-m%M4b(trJM@`b)7qMbD-xg_2H!cz^7D*~y zoRH@ajb0T+Y6%HtT~Rp%X~S|@7aE)j9GG!f*LLrx)AKX(``gq4SP1uPoW}3bmf{`T zP>-il?n^V<-iwictV}}a?ETHOY{znnDa9ZSL!2*;TIQedC@p$PAm(3s3$M`iq_g!= ztu<_zJ%vI2kzwQOVtCmN(zI7Y>v!nZ+)W?`sXUu-UYuAokw(nrBxakejQQ*gg7w5? zU-rJMw%OasmP%$#(|DgyTcW=!*m7^3G?yplKu|(hY9PFQ(Lx5-D(Bwu*YbIuxRE_? z%;!?^@$y38^F3*yr{YCMJ(__;ko&rTT0M+L1}6#8#V$keCH;Ba(hlr7M8OlPrQ`;B zyj8#pE~EGEN9)B1DQ9cGO9(z=E;oWhFC@Y&74~`B?(GAkHkXB^_QR3s)k0q z!ucy?hbfa(A~|M)O2H>kQyqXO{9 z^eQ!H=HG;DzTpuhlU@??+8+0ec@1UcptRFK%gMn+>LBi|ood}{)*DGx<#{K=;%%3A zsj^x3{RJPVS>){J^}gKw+V;fp$snhIU(T&Nn|*yJaShLOShcuTyXKt&j_ZSbhlhVD zj*|I#{Mqb!v(UUSy+A!$BB_h)q?_F zwvQ%Nzr)VlQ_iz~nU-yDz$Om$x^>I<&hzY~1<+Xip1vBk&WRtzM#W!5N(nT1Mc3(K z#lJpln->arF`Jo_UcSAmRP$qx`}j6Sd^4l4;uR{m^8;~2e?H-UNa$_K2w5P`n<4=8 zU3*e`_Ou(81H8gj!^mXJ@NoONQIK?5O*jG5z~-52GKjh%W~B~OJ2?gNe+CZzjt@<5QhUZG|CXM*vD*^4Qs4EN?V!o$ zmUcTSz;{IShVNb2E?*yHVz2n&E_nHZnFu8N(px25p7_5otQfJG%Ve@|i;oQ|CLb$v z2uoP3In9_De1#1|iXT825E2>HEcH!RNsN95%}LBN;@*_bn+)piILEZl!rt6PmrNX* zSsbp`nR=MIfV6nNrlkC9adKv6eEx-y58cMro92aob3c!> z>M)xaQeAs*-1{Pd1T{P~Jto|%`7^}51-}a2zk2zs-;m9Z9O-cO2*rk{Q|b5c3Q1sk z6BN{w@mO>R%XLhDK8v{+4X`6+oS96GJGyUs|5%%!I^Rt)iW94HGc@^2xz(T5h+oVxN#>X9eKF z@b%272OG>9pWDtXp@oy6xM;L_ia@JJ7+TxW8slzl$c@KFaT&3!zC}mJZXGf?S~+W-ra z|7&$wk((MjUX}V<;F`0bsEB7%QE5AdU^klcWBjv9rsjS^-hF0@pB6F8!M7WRRySE!tdwP(!?TYArh|LH+C>HfMsDm%=+`dtNvvGm9%Y%lRT7u?;vm zSa(=p{=P?Cw}hJI@nJG+A7t#10U;$MwfFdlZv7$+v}8~j{AeL890KZHjai__F(xgx z=ih8-PYv#0pRQZ$wI7v7bgdj7O5|RjO|~BvRfhBoygvGnYD`ESUiW#NVe?lez@_KZ z(22-9yT@1gWwxZ-SiBpR2XX`Hias1ogx;K?Jcm8wRRo>uFn!$EN>{*LJ-G)1qMTdb zR~8;$v!=Npo^~=v6=nuUq>rUgY=jO>-Sc4ld<*5}{QBMcj|*^Wa=7S5e4Tky(;W>q zL9STT*ih$=|E_X7sH2AAH-s7@yX@=@OcwX9zXFCz9(7}{2{#ek5@x1if^SbIlDPur zRpKKEWkj`}*Wxc434MO2Dhn7qpZbjo%WjzGg|qICO8+VDzPCTgDU?PeBJu} z&i0I;&mm;sy0Eb%{&j$n+Q8g#p%NJr4|UPID~MAo<|lvJZ4T!Al9xjmH^6x*v;9TNP<`Xc zU-uLaa0Q4>IT!r$`w{Z2Wu&-5lh*N0-=Mon{?N+$VCtJOS@`UsUdP$!6S9YYaAV~Uv7sngTt9K&gQOH8=+Xv40fc?^JYAO*)#({h_W3I)bXIb>79t6K;HVv4@cI;f0Jw4Jl8t{QEi|1-{L`GEw_3bkkBTVGa|ozoqlu3@r+z zXrsB16?hI0!ZP-3)Zm8)1lyxiGhJPduOhHBhDI)Df1+M616$8^HD81yb=8)^IHPF@ zqG#MGfUNb;r<`BOxG_!@Ln##k2Qz;QNt%^w z)VK`1|Cd1ksw{$hsJs7(JjZa~g9mGRqxToiXIj{|wx9Z29RuA*sf<_!gm4VxV{tpa z8nf7lQFRmP8|$e?@($Z3i-YvrpASBsd-fA*!3EXlefcxL-v6Y$QoiZ232DXee&ohTG=gNHpL;FNK~|F#CMrbZ)Z!_z_>=5!Uqb7k5R|3eLsv zE0K%u!nUc~?e$!~=3Cik>J?Rg;;YCJ>w;8fR8JMK?Xe@jT%maxT0pUsey7l1!X^)N zWEb3-oxZQukPx{Yfm6C&@lePWnl`Hb7*E=)u7P1fTC4BrPt%l+ib;62iUn9#0Q9vr zUoa%Eicrt;9qh|uj94@P>~J~-MB;2(aI~$7U{?gePO+r^TN2n4`m@-t$??hl4@9|E zM5T1p(%=Ds9S%FXwJ&Uv6lK`poMoTh463n)I^*@&i?r<9uWn?I04Mw{3QJuLZf&AA zQBxuWnp!z8{YDd!z~hG^!Q3Wzt0_lx0aNG&s8rDuZC#L>{ZI?J*2Oj`?hTLEhSWBW{i!N8CF_5v(Ci{#N` z;R$*+tW5qHKOkofjiAy<-wNs*o4iRm^Sv!0#9Q*~99{7REo{3%Bv%==HXO%r&vD_` zaR?@dGfpu?Ha4aF%&Y9$=Msgl;445DZDaw!aeDTKx!LP?7C_0-bZ}y@x=BlI`dRBL9qx`>FwCZ>Ql8uE_xjz(hjI1+4d-zQ}*mVozw? z(y znXKy{(Tv?$xt?KoSeo(=xIw?um~eVfWDmki7Ic0jEZ^~)I_VCvN16NLlC?3rVJw)4 z@ig4Iv73(xc_bAIhmH^dcM)B=44u%Lu7kFWJ~O8RIJK$>LZ!eCF|nM)=SA>(30!Rh6B5Hf zLQpmbYptSAy@?5GH$T|0@4+>{`3zF`Yh09WHO7nI(UEGtC5J9( z5ir9m2yIj`jjEyyrn|r}fSpWCepqP`x9fA^< zVsja2f&1bK5!=5Xv3tH>iA>L8^gjP)Op}D<4SfWEk=~Uff$-x#lEZbdBO;JOFw+w@ zxD&^U^h$v*-CqMKkd=B0f_$JYh`JBpee&_TW0uFP8I42y7k>td^rQ+Gr&09mr1z6< zswOm>$Qxi;WZPl{Lg|mhEHJi%Id70sg+h5LF4QL|E z=MH`1PukFORLWibM=%}kO>%(jwy>}(Os1h&=3SOHARK}8>*ElYx}Z^Qc6-O$j~mh$ zq>74P6sOh#%2khH?E;JXVhDqVAiIFT0OR*T z1a&X_;1;?|=p1@?qGz1Alry4bbvy6$n$I+czg?nomRJ5k+vL)}Aiu(%4ody|lF@>v z&wP6OJ#GzRvwN5c3RiucAo>RV1dJjgkMy?QTu{ukwQr zZuuo3gpU|4={&^grQI&!g`4Ap_M8ww%a^8mh@$7@t+`);F$`W-7aDm+sft#!A^{JD zdB z7hy`Wl=~=Y#q=bAYz(hH@TG?|ivK=N&nx~d{OE!0I$Pi{W4A4Srj-PEGK}{FbEM#R z)h0tQ@AT1(x?6UKU%(|$VpgZt-1TPziE9E}VKptt$b)|?9^oW@D)h}v<)nn>Q! zRw`c*uc!s~bK`QYj#F0+FDXiU<5;AFeGmUEms_LJ>#_U&G2h(3oqZF47tS8s!`v%7 zJ#&Ao`|*B(YEnffQQp0vhxM?y-7;sFds6e^s``Drz4LFfhx#&V>*Ql zM{yW}2>TcbGC(5u^ASNy?%LSlPb4+q5M*ABe#nDAEe0E-!U%llH7PSv;P#3cwJMrE zb#8a)9IUpJ09kvET>lbH$(ym4Jx0e+Je(3VIIFY~Y6Kl-B&;CMv&4XqKd~O6xXMd8 z1)oDHA0klE9jEn@U!cq}`;KuFQ!s5wRh7#<$|5yf_sMh0kvnOO)t<4J-88}z?#&`CKcLh5?4 z3Z-&&4;&^a%BjVF5GD)V-FOK1YNdz7jWTNBHW?jnGUQTP^MwVLCe=~VrKEb#epz{9 z@H5py6o5w*tW6W`o#3#i+EzfVk}co)uADIcId0%JrZ|rP$73dZaTcXy##4lEE>Rqi z7@mv$m~;NyBo};7y?TI<;x2x@9~!WzmypO^ag85TFuKI1tCJK_X6H~t)aA$!4mG%B zvbn|Lc~IEkzlFN*hg^fs0k@8@845Tf`ZT-}&;_qf-u<(jRLI;|vDjK~5peqVZ%qw( zUWUtmdZrkH?@=Mt|-qS zzkoqu2aD7;f$5HA5{C&Yn%=n&r||0i_3Cuv7{5!VWnt^eM~?m=to9PLKDRkq`PqW$ zSJzQrZ;%bu5ByIrfsgyWUV?13)?b7q`Z-j`<&*i4j(7&6=(^2Y@GrzT9?^D~sAdM1 zs-C{&6O4Vgc3+Prs#74D;A;YCBx9ltYU8BkE1BS4x63ILqRWeZ1&5}NQm!Cf*6ZEN zA~}lvBa$SLiN}B7h>)2!;so8;i7oRe80Xn`s;}Su7F#1P2V+QZC`6;p>s8r`g^3A> zRO`OJ3k;jPqXSg0w;rG7dX%isv`PZ>M97=fe&72t$eL!UedX+24){R}adf2#{SJ)O z6=G~UyiEXGaJvQvgo`uDAV?Yp3AqM>3qhZ>EQk{o=MGGWnUb`?(lFDKuhfXtl9Z7F+21y2~6AjnL=;e?-qX z6JXw?d!pt&uSw9j?DVbUts#rOA3v;rGG(E5Om`%-4(9c|>04^Yq|V#V{+)MRM(q8m zZ$El3YF#xl=!^2cQMMXFF=xkQFAp%oe&4rWpH%p?4b-7TZDXA4ksDwgN}Lu!T5<1B zR9T3_=Z5%kqtB|$)s%&r0GmmnMTV$hJzC8;2;)TVYt>gHtHq>GuXp+0vhGIEOBDb3 zG-0$T4(P4fE&YJ+7Jewd^8w=hSzKLj%n`ght-1!AL0MZ-oAC@1h$>kenO1I27o@iw zn0o4!p#D)9#)MR{yG({GEnIlC?^(XVTe7)cZj`u)u!RO7!Yu|fOzSn0$`s1i;63`s z^fk#wJd`LOD4#3AGbd?Z$gxT7DO?js1SCk;^;xuH7sZ3O-6qbu8hDM`9Szv&ddLh6 z+9^|bE0Z6a3|+wy_CpL5V_?U%BZ!?Mvhd~9?snrrIP9NBp{Dc}c@cwsTEAAl(7t}kh(>qc* zwxL_3k!`OWnz-spVA|syrf(sGe()deUAQ`3k_1{ujxgFx>CZvU#;c(&uGCZ0U7pg{ z*QbrOS0T5RgJ=;!-wNHzNXuL9!KLV`P_D_X;|Bl_o<=QQ6rNq`PF&@J8&ts`Hx7gp zJ7<*D1?k)bCI7U2AWr2rb~=gZet6BhTsMA`YC*ka{D+z?fh)< z{tgW1EIbM}n5UaWP&&=}UWtF(ZffGAdLpSd_d9BuOzlXpn^~!TMk^sMRQ__s)p5`_ zhQ`#aG}hdqU)SM0iY@RJ5KvNN_DHA8zQa%J=1#()eXySoouAHV2r|7~>;3P(*OSq4 zGyIlrKFzCODS@|SCxvHu)`YAKRiHjDmG$3vY8zg-(r?UbvTe(xGJsT}gateIffwjL zGi?SQmpA}>J35cij5m!Q{eyX?tD+{GfxXb|Z?SfjTz)n{oD)?aVb@?ARV`mU z6a6ch%LMf4`Ulal!Qv~_BSyRn!Hzz%Gz5JI-w-p)yWqxUjlOTk^bvoHrk3oou}=R? zdn`)T^=dliU?te>HMu77KHV$G(h<#ytzTK#cdgS8mfL(^$x>&v5`hf~W(%#$vk|AysT zuYXL6)%`87vg&`x<#zeEpS;R&f`P1z((tldx8kDaEYJ^75TOu>-rY8K*d5|fC|r7` z3$2;?%l6eU<~nj2GybQ+X@`o6Pr1kDPVpVjz>&&XSM`2RjsNPm`=@?X-Lv68g44YA zSoW-FOA-nS(^1xq*mEqZ!~;3cg)^TGcjUP!6(3=9FTSR>ANn2I|H)0s@JLRV=X$e1vwwxX(GXPOXNm;+Y-! z*bi-3!UC3v^>>P4XIyUzV39sR+bgu9)&WbIfD?00CuwqEx^_tyfQR-{27t-bmZ$h|$@SAaOMJLI_Ql?j4gdxPp8QIq|CQ8e&!!0v& zSX<;MPLP?i#knD7;M@G4(NJe}vB^8cuwrRi1sM5Hd@JZQ{L;A(UAqw8HQ%*vmk_V1<)NN1CqE_@J#FiswbRj;xAsm z&!+~elZ#&oreZ}Q3&GtQRgt-;!U+mC?h`=+xrJEF<(6nV*C)Xt%`(WxxY zPDdH<;|y2y+l=7QV$z)c{F2$<-{Q5Df`L%*&CAi!<a8y4n9( zd@r{4L54}{?}S{T+lHAILtM7Vl? zWNO?_-R2pUUvYPUv^cLp%WDM7Lc+vA{dOZ&@3%&$>Cv%;+j%AL$Gn7Qp8#KFgF_yN zENgoa>}_!_9uzf(T(P*c?|);yy&Lc!?73h;3HO+C7K$m5M?JPeodlk#-y5ZjiB~4oM-UF4%zgxpAw_86)dqX2OYJoVJG3ud%*C zJU}Lol%7%j6OerWtO$vxc-Mrd^vY)1#BUZpkP$7x<(JMz;X(oWKgQN4s{W+K+>Bu) z8RsU3)OTn)b*E(z?w>jhUP;Lg#}6fIsXf4MNiS?WJLER+1?}>zvI)K@e2>c>u6M-+ zdzZ(QpoZX!6rKA;-~UmfvsySNt7(Jz;N(Ik(*!^*A{>-)LQ>-_|Jz%(6ceQ5q!&Su zYIr>LK;pUGS_0c2zfR|zWDDw-W33l|D-miO9A>Tz9~XEq=sm;1RkUa8wNKtNlQTD7 z=6Wqspwp*0a-iH@(dK~CDUtDDK(M}#^`R=1Cm9tkMSjK8ezO$p3K4HF-uNQCJ^9VX z(8Z9ISxYs~@KNYvi3$k#6egNIxbZhy-c4=e<{aen1zjl?Xe%T9J1mz4H_xX_bSI{ zW8oBt)9`jhTUqpg|AxD~Hvc$+JNwsJ&28kXBT|xb$TmujTm5LI1fdg~hEHoPL_#(A zH$X!MUV7s4akTn?A1}8qkKOFI5Iu0J|2-RhB%o#7miQD>2VO?*`nHY7yW8L<>H z9hVbpni?~G_up_++41N%)EWIrOXkcGn``Np@$IS9m`}e0_K!y} zO*n}|TW&HGKypP+mWo!}+U&TilI=Ok_AIs}w%}43UZn~oKOoTo&u3ho|wDFDx2XPM#-cb|pnf zr>0AVtM!)UCnY>0*TOX4#-t?zm5Zmxy&-ErrQhPYw@2dd-50NLlO}&R-}4$q7_N^J zV8l6qkDizoWvyh8l=r$?bu0~5zvoD>F*=6rPEI%xnDHJyh3CU+PqCd8eJuo zw)j^|){DO&%gU4kV$(BU`q_t zwI_bhY7V!DhRV;j1pl-xr1P|WgerwC^6Z?^NG>ge;e+@y=QdtGL}wmt**XS5#Q|+# z2QN~HDp{H!MfBh@)|Qsk&+u(_;~2SZTbqgne>Bfdd87~_U0zM+hTFSTW65OTnFs3K zyI{Zeg2(ZDLh%_qN#cXO+^g3AfYrV+N}(O~#3*!`gM;&n3~!OUvo1qVvD>2PqPF7Z z;-KEOuXb`oU6{!IsjtzID(|BI%TANLFY#G1%!}t4OFRoRi%IS;H&28kOMJNjU)Nc` z@aBw(k++bi>pKS<{}!n+vE#5D^@NsCWkfivweYW{9B_K|qdl`dM)L9^wuT!5jwRoJ zgiFTIqMHfm#)x@TIp3jfZHEk)8o63;Lw)}3g`ErLp8k_txP@4(n=MsE;kF3@H$vj# zFUb7;$ItDHe{eak+JDkq#x&m|*3a>LUm6E!*0zNE)Q>xAIjHb*Hx3OTjV{%#9}|~$ zNiy^;r30y{_c1k!9m>dGo_7)1Z@$TD8T0T2uop*u1oF7#7~X)C8A>?hW6n;4e*k~p z(PCZUb+ggYb&lq6!<>iR1>3jzpWeZc4}`jx62&6~H}2(5TkqhbUne_cSmMrbU8sh2 z_QQHPeGT{B@g*Ej6nQF3%VG_-at?eD{P$?!04bi#no^+4O@>ch-@c94`)`2RdZbFd z|C8pn{m*3j(~F38Tm+N1ix-DcX0)R4_KV+kl{P!3slPvwl{1Sfm?_nmySvwz@7*LI zqPr^6v*vVWI|)O4FBpU_0hq|XEyKCOdM>Mq1`8upwgc1Cu6yB^$uxiTR@i|V72xe; z|BaCXQ}TZKZwr z;O;YKwnD;kGr$V19W=K}sDF9)=IQLXzNbkR3aUN!E3Hdjnr;Oy)zlvTKG^WsAbIGv zylX2V{lpp;cQ$iCu)=*^)*MSJu}E77T7gXX>S%-Psu=rORDs0nXD*KaRZU;^Qw&rf z66q*HfR_ZAzM;RWq{t)m0F3*V3V=xYK0gNbNZkG*6G%t$J>(z_*owKSo`via)kVY^oF ziX59&bx0fXJh3D}z#0+SF-|BJWIi0rsBE2heN3YF>FlSiCft<$`6$*HHxzGjmi6NE za2|>^w9$SHrcY9=eN=!BXRB)2gdYv*pokhX;J8?_^nQa?$Snh81@OrG`TZ-bJp3qr zjF`gsXcYUYSsZ?ouN62KFwx9GpS*cDl<0=#{r70dMgMYx6mD(knITiue8b=55rDz= zXF)xAz$~GPgs?2&YAAPXZxL~?0M<_-_h~Ox#iw75T!^2wPl9S7n3uKO;px2|Z8598 zpQX2tn`}_xv;R(84AEb4>GmA<++!o4LP$+k}7&T)nbLV=NiKy!9B}ATbX`{DlVW7eg@yF}B zj41iXIZqz+xQ84>y?i4soF(w=0ehSxKbM%6JtBn?34FFg>=mQm z>s0#tPrgHCR69noe*+B@mL$-za;LswgB2H3L&y~HwBPzLFJH+u6|Uc(O6kaIA6#|2{(kNps!yH{qv`xp3Kmj#&$@W; z;I$J%pHjoKWu0twh~S{wksdrd`*#5%OTSD5j1UCPV|{RTg064j)7lLt`+X)o};;`u3N9w)r$OF zRgKqq*Kah-K}u-BF*d0lSeCQ(;;*i30{LEf#4Fr`)|Je+kDs(jmT@2>8V2%VCO@%7 zW;{owDH#Y*gk)21rW*Ohamwl;#VN1?V*+&1aa}*i+Pi!%`~EWr5GLXkxI?d#mPwPv za{ppusk4Cq-4^^2ySmBq@|R9u^{Zv0w#%J?Z~rA@`ZsX0=Kd#5anzuWKYF21iqBo!)=8A#q5obs2V#~-AFXo zzBYW1wxp#UH0e*y$Vw9p`ZrZ=iNSPN?@RyG#n77Oyi>^wn;7%ei8^vlyPY*(AK2tj z<3K-s$7kJ6h^02^7LJl2yH@-V2*6(lvoMdzh5 zAj=JYET(}r#UE3iV_rNQ?IM@*b4TO#kEnnazi#5u?%4@mvgO02BqXxI6TQ;5|71Vi_K}Bb+{oBlAXrqWD^Xc|o`GQQ|;d;Wd z`{dj!e}r>x*1B8^HM{%1aemonLK+AH_m_2L!o%PJDDaxCGPG^FY^b9l92qe4P7$L` zp^4}@mq=uMuW60fzw#0CDYs7(6?qxFrvH0_Hi;IqAN{0Ph9m4y=8 z+iS~Hf6OlkICX#BVTeumBRwrV^U*QHT1lYUn!8VG;`!8qCUFcU!WWiyym98s?WUSUIj%5`U!>aJ&a`!{+FAzH6g032s;<~L zc>^dDHKw<(o9dM$T#__hPm=+V(}DVAsqPa z+4q~z1+(|F0y=c*{Zu-Po6W>XH1*+Ef@3;YDLbw;YV?02*O|_^YqFf+%cJoQUb%zr z096a%)2WMCvw8|#&9$4<=t0N)){n<}NOoKSi@limG z6{r)Y**9eQ-$5*>^mfqG@gI#DQteXuLrGi@-Jw#Q<_Ec%WrVnJ;9B2ib@ca{VxI6F zFZYxQuiYsTLy5HC4jYo~SE$?L{M0Q>ee5;aRRY_I%U&{-sosD( z>3uK-a-HT}c|Op>9c*c)?Id7UbXF(Y`%o}pFh=)Yl|)?c^69Hmf3CvYHZ4HcQuaMH z^Sn$#&D3zkl!L0o0Uko^nO$Ur%jo9-hPPfFV1^$uTtA3>@B>*uH)rrYtpB3qd0tV% zR{JKRZMF$eBOiEhUSgKbboTL*tkw1tL=;YiSx^yeMpC_@&EYR~TOHb(o}M;tXD%g# z<7f2*JBJC&B{WmbPTAs9^*XiM*!rowm=&U0riIxT?Zdu=Hd)sH7_J*_6o>+UBJ#Nu zIt5gO91e<2>RGb*e~wgJ&c>T-;6@VqaJXKNJ>t|N#}^^l{DxgRaL2N(gXP-3UCLwZeDQqRC&YY% zej(Pr$L0BvglZ>z{ERG67aRB~98819PX8_2)s&wNQ^}5R%dZ($t@*SbJP7E|vtEqe33r2PD z`@aCMYS(~j;@YgcyF|}BiX|afqES1~3ca4eTjh6ko*V=r3owfX`1K1qdTfpf`$zI3 z*CQ@1KXL)6#|TO@6kzACCF4n;k`KcR4*45RjudSod8+xYquJM3KplK-RVJp8Hp|2Te;8AVpes1VmEJA3cVJ=fk@7uk|6qY#q4H}{@WM&-uJRkJt0{H0H@y!NGq)CqkZKJf4pS1O#o(0}G2YAFuvX z^BQ`l+Q+?YifcM!gdT_!0@)Qr?#UjJrycYMCpt%N9Td|xApc{aLpiy9`|+c%r#Z+> zbKBlaRn#h5E6AUMQQ@XZ#T%WqbN|chEodtR+(qNv&wqvP9$MJ5x}B}FDR#XZC#?T& zPB(ck{FlB-WJFnF^cAo(Wn!9g4b-Dgtqqr@^}~I?a{y;b@GJ@~9Gk+PFynQ^5153` zfx+

    ;Lf$fElEI`@sG)Ch=pLi^Ad1`*t9^oxJCH)vHH^k(Zke0f&EHF@CW9_3XIk zBQm6|+H9D-zMj)w`Bh>~gl6Gc^<)VczAM7>Y{0&;3_#e@Kw@=@70&ome^TW_LR`d$ z@ri)BycM|GEgn|*M-S)!9d6Uua8MWiZ=xL9CGs&Mp!w%zac3XFM)1D(-!{n?NEz*i z-Oye-L$g3y!E5z!eyr1>3o=oR@%kd9;2KJ$7oZY6Zo@U7nVlpighBKstM`grR8CNg z+Ej26-sZQ1-Hk6?8gK^2cQxL`_S4>9&l|8-<);(TW#Acvwb7QUAYZyUDXg0~jfrrV zIiBFY<_Ji5umdXTP87@`4j+8)F9t7Tm;H}KCSXqC=L?~c=LIJH``s&+9(79#vR|!G zaDnrKBe=GddVY$KoW;Yt*Yz4QOy4RwJ)(md<^!mcskDbn^C%`Z-D)g(%;&Cp)B-2+~b;K=GPw1w;1R&>xz=V(}v-)$)m6sw1l;I~gJoFuMOXOd2l?@1o#4gp;3$z+D|L zs;~%==m&A7!rt=<+?nJ`-lq~;RDin452nVH9rJB=X-{G%PPnwkaTDyJeIWZrq{a{n zdv?&hlO8Icz~SoK;b#@O}cRDU+nO7oC*UoqPq7#)WSrgaz$FdBj%>^Hy&!T*$ z^MDvLlhP@rn#3?^Dj=4B{nmey44AHs+j*VBN8l@0mhK__RNIa|A|>nxK&*)hB-5Hx z=TZ?%0&YOHXcoo~_K9%X;~!$D?v#IepQ?fQhY_{E%8|W+=*e5~ue*!Bki0d}^cX^% z#VUY*ho%*sM2H!?OOB1Cvp3w0jOzzc?KMlFIQ4Bv;f7#7I0ZfdV1*9>H3P+M!(aY| zSNV&eza)PDB5b9OwZqh_h@mBf9FkrVn;!Gj{jkf`2NOhX%k}=2|G%k;IK#lZ-$pXJ ziYMS)OmVx-sq-^tx3u3Hd5y;l_LIR$dvw>qW;+UxWUZVQaiPsh-ZiN z@AH14_MLiUtkQ%TEtNeF>+wLjli))`O<{Sbl}=8U-`}c#PDN<7%RI;&Ge&b#z&M`< zJGllmghRq83u z?pL|@M=Z$<2f;f}eL14gL<%zdCwiJ6XOI7cg@(8T z{BzF#8jfCII2!njWM&@8)>+}34U^p%#GR)W2AE*-_2FoFP#{?Y?L39U9$#ka>?(wxf7h;Yz+ImrAKf(6qbP}j39>)rk{Ai-R{Ar? zXBsYQ%#M89C1oQ0D#6&y~jJHYDO>P-min{}d zIYrtFHe>%eBzU!P1>wIJcnt7V1K%^&ux;wI;et<#Z|mQr*&J(5y4RfmNn0D zv?xhU@CL3q2=)CasF}~6=G~MsyaK%85e&Ik`>BlUi(lk>ipUn;sQvE*>M%ZzlZESP ztX}?HE}u2xCtZ?%Sy1naLpJWmW-UuiJX)%<3BnXRD{c*$>lTrF10$^#-zNLLxk4V8 zD7U@ChTq}9|6x)dFzy*)NH^NX<7Ga!GS>%jUa4(pU`K+nD#67y#_7L}I*0nkQO0+w zxJ}e?k4wPibINnGxcP=-5EmUi^0}u+;bCYh^?}^f#2{Zv-~2J=YANQA0H*6#qnP1i zBIE3^;F8^)q@7n)|Am{a1StFqFJ!Q}mF%dKDstGb0AtR(Rl%!FRAcUeSiie}&%&KS zlTqbzeRq^kf(I^b55%GrM-t3V^AyJjcbY4&6W8o7wkL%#Cdd%AQiQdZTA*Z4yF>uZ z$NAX)tyk~XwixoOnZO8p&!ozkmPDO37GlkfD`I`5SkEY1yGqU8`5SMxe6%(EtvzlT z5VrI!VXQRjWUA0Z-P{n+5#bXhZf zh$~-p_`v&8lICi*j#1;{wiOv_L;+kA2gQsV2HxM4o3ujn${)4w#vQwoxw^zVLv7<& zZR+i{YU)Cj?G}5DwG!>)>O`uy!xei^bt(sSWhpDuU(fJvEITBvqobc^X@2m{`z>e^kStjxlx8QwBFUo_$q}Yd+9h0$7vP5{)(JaHo#^5 zhd^EE-f(MzhPvFyVFi8FI#Tn6`vZRevy-ZozYn#5uxf3i(c6oXUAE&p{@UHK6@aLQ}H$&i{DaHra-x-Hj`g%q~1$*NCz9m7fELcU`M_DUZZmaIpcG$Oe)rZc@W@ zwet1WBuzF?+TZD9J2L8(nK*dJ%Ha6CNWr^LT<=>GWA3m1zT(Eiq%=Mlv>MgxnV(XN0obea!osH{=A2H_;)uUND#O+N zXPVp|x7qIYIxj?ir;-mgG~1oiC2+af_~k@>D-~nDeN6i{DH-^a%fq^HT-=#p#Q(RJ1O7Clw257S1XusQ>*4Pa*p zv=?ds$8kW0z^R&$8_#hz(eA$+KS#ZYW^~Hbtx71@qsxE)EddH|K^fMI>bv4c1Zzf# znb$`m`Te(5)r;b7Ns-@5{>+MgZ+8)ZWg42khz5mo1uQhl^`>(ec0n^0jA%k@q%gCY z*KM#R32Y2pAVQU}-gREjU&h&y)VwZk;P6ApY*7*Ev*G?NPp=lsN=Zgnht#cU z#VNwmIiE-Z9?glYHy?T^276xk5~C@XY>i?-9>0r1qfOMNaVO0tm2~lrdM)un>mxJz`Bi?a$I)aC5@$>=-G9L4GwpHTP(WKZCuTm= z9x!37*W$X?w`f{2ivg{$Un?S!R&R{@(x;{~ipeVT#XDdmEjlEB*NNWXdlc_5M&p|r znpSjRHn%Z5c?po(sYg}#=Tfk?poJiz()XT_AJfzWWiKd|H1rSDzvgk^Jbf|+t}joZ ztq55?UTZRdM*7k&=i9RY5KZR|vB}ME5uCF7q1TROGCaoECX0@0(U%iLU;c zraX1Zncqvsx!cKD5Wh4;7SX*^zGIRi8H@Ck?KM3fs9xNh3!`)JAGqTeK&HpFzUzz`Bv%KdKg-+fwfu}9<29m&^TabEI7DxwF z@8{CrKm3>B=}+(Vw814g3Ue)k0E_Cxg0C6*-$r1%016H-cLCEz;E}m*_@|6|nIc5h z_fptxqB{Iz_^YK_F(r}-52K9RPjOS=vmt3hpn@3DD>1A7r z>1#8`UIpcyiUd470c=shbqpPI3`vG{%Gk1`{&%&-eO{>HVfSnJtCO-Z%PPZ6&;uPs z2jJ%G`sD5@vo?H$5%lG}`X?O38Nvr#KGoX(y?HktZ0=2R<%mW0Z3Hfb(8a#rjO0P=B)riOGy562{*qkFQ;c`>j)C#N)XzZJ9@9s3w~mQ+Gq!#u`-Ex25=oQSZ@EQ6+#7Tvw|}@ zy2~M`Y);+MPg-|Oa2WxvP$-LWu+uw*PgV1`mNkg z8Ek$gQ`Q;*`#TSs)vokD%@$LU4I{s4DesIw!DL?LYg9{yB+i^?Yu_mF&D3l4hOf7dq^N~5pPUlKNL9+MJ8I*Y>(E{ zz?Ywq9PnoQTDA`M&P=)n*q!`>^Aj=~dj9ZwVXECS9rcO##e~s!vYYWiGHsa&39QGn z(SS2&&U(WHRdZ>X!+nj%oJv(iWKVm4x4bd-fXl*4-9#C~@qW-C$bY{e?<}zig~Bxt z(hyE@*VVn3AVF#3{E?bFeGr3(`JkvvPz&e)Y5+<&sr;u< zkM#iVcfVLdt^E5UjfB0)FmbftV-V9o4gipaN2dECNOQ}C!%+HYh;)z z@D65lM$o?U!uW6N_~3*50chvDT+vMBuIZ(FNGkta)LBU$louTa8U3W|Q92@|n;Mg& zlXSPp{!4Oc#!Y~rOu$Ff6`RdH-=D5IOLwO;9Xht%r(Yx5SP+4{SPJ_gR=xP_cF%+* zrG>T&-ET=-=kdF*9);Q*@ulEOm+1$Gc9%JeMilD8+11N_aQjx*4Sg;Cp?n#u-F5LI zu{!TFg+5Jz8Ok7P8W9M;n%+O!+}wQm@lmsTB%#msKrv;E`b)UXqEnH}6TEQn$Z(Z4 zFP~XX(IQJz&)y>~L_}lkq(j4JX8=)^^#HYASz-zEpw>Y5T|^)smEo!Xmhg*dUc{Q! zLGS%WM_a8opID01-UhH(ycQB~1jw5^gJr|q1C0mr_L;U4?9MN%7}tNp0?bV^J9tV# zPW$l~Wa2-kkn_2T(1%%egmS7DRhYRS&XQ3T1$Dy);-8WJoV#&IE3Bo}cjx_KQ>DZw zQ!CWHp1D}FtczcqP3AO??F;`w82haj7T7!X9|bJbHl?7>Zd1)(wz#X{F9Oh4#EaD$ z&Q688aQ0jz z6!eu2Dr~~=n-QF*sfG(>6bJiqvb=Gi$#mgaaN@WBX7~UYl!55(yWN1}CbAG@&s3@g zPtSxp+r3eH2D#32xKAFL!348WQbK9bukTY+lsLy*N;o0k&q(cW5(Ax2WAe-xUQU^r zrjh|k@HOEh&s|hcqDN6Qd#oAI){rnN?sYa(>xuq8sM*qYdX`uPDAQvmZ!#p z;uQ!AKmgdOA;#1;-(h2THu807HMwxvd<@A*Q|0m%%92+!_gh{+la-Kh2qRvXVqxW;G{}g!N_PD^u89ii z6KYKaCl+IFDph1m61Xkdk6--C%awhEX=myYo4)zfkZ@=bq>*e8n6hVEEGeyFPgOIr zKK-rk2OzZIFmk}Y4zhg|#jXzYz9a7u(!b$;4z-AVFPp+gS0o#Vy69cWHfRy$e zlSo*KHi-5*N%dQim$&oU=>cNK+_RV1^z2BNv`xFqU_{@1|4{nZW=VzGZJ@K0 z0sZMINm6TsI8?l{wuf300T1Ux}ukqL_5oTWfcK4@2SMd5oraYYas;Q<6Er~+i6$Fg97 zv^v&a5(eR~O}vs5{$3yNlyQXZjV*7*DG%F9V5#h57!tu8g+jbxLS{)EGZ_z?=BG6r zv1hYOEs;NMI-xvaFm!cFow+fMN|;dObmrEO2-NZ#D*q*0Lo_oVT$!C11vO1pkdOJm zU^I|ApQ<##p_qD|wWZ$a_UBypVaWP?p$zapR%h+5Y7w2t>1r46TxPbmHhJiYKyYQXFS6w7E^;#>a7X*gRRa=?&8dV9Ur8go%3RT!ePP!-B& zJ&U&4}7tK^2o#h*j*asT(0Ka%;Xv* zbx@0>LgL1%zJ8pJYsvhb3Q0N%#WWbBxf97O0cPWNOZ8B34d`4y6Pu{0cb9^79>%%O zc5j3w05Jzc22sR|^^HL17JLXYxxHavXTcIvMpt~M(`4xSawNIR6g#1~VysvAOF#17 zAAH%4-Q!0l3DwiCe^*m)Ga_%rOn=`zAU@J?uXFzyPS6aj+kBN6wqa+CszbF-{ioFxXj-%#yAOaX-9sT+6KS zTi$8jZyIGZ9=b(L0XoKm$obC@Eu{qAXE=|!urI6~zBSlE@SPtnql6Fs!$0&%?lSBo z0UlQ&9&XHjLW&t3Sej`%x%CxeK?51`WMVAgU)=rM-PTSnRNQi_kECS24jQ8Kfy!g9 zDl8N-Ln`?b9yQ|QT(&+D^s`OQVIAB)Pr-@CRqEENW%%=NGz8QDISA8$Kjnca{x)swzFfgM|Y z@b8;HSpwY718Z6$&Fq++Aysv;RsRMjWC<+32Z3GNie2B^Z~7J|R;!%^wr`%w{P`7> z{T_-l8WH9X^bIZT`o$fwK3JJByjF2lkg;#9!yh?T@O_uBo5Qray@XRtENe}?+G5~g z`94tC1}Z6xsUsV5{KeMuqbdd9^@#5wgGe_Eqd;9_?0sOGL?C0aGPzCJiQX>SZHpixN`@>;iyIo@KqG*9o9ngAdsH1*Op*S+fDezrjPFaYTK= z^z)+OL+Jk~-krm@YkMTeEx53@sUs;4=`+c~@j+uMxg8#jfB%!b&lFy83sR(ly{ZEU zj_2W(F6-J@khxfT@6J|^*m--q3P!=7wGEi3`1iC7eWK{cDu#}y5%<%{DJ$@6VPt=B~T*nV(5UkkPu%=)iDY7=1w?8mv$B z0QNEl-^nm8i2A`>(@7v0;;Y3?2Bw80(}1&_DB`jD#-;9H%0y+|1}saJI#RU#g*)Uc zG>QD*c_erxe+~57g3mj@M)ui${QEiPF=a>g)cFz$NOC%SbWF_9({2d5yc?i)cn6nv zJ{y6KWEf?v5=_&v!!(q;ku^0Cv*Z^ILM3~jmu+lhN)eV+fil5oPoJ)N5m=7$s?Hf? zS31fQA7EM17RPkOZ#z#uJ(LZnR3YW>WBrD5!4O2$%)3_iFB4}gL?rceXUhf8_3HL= zNz7OVh^weeRdK5wqk5L1WxIB4aGc1#9O^xy zJR{`hp6~ov7i`JNUfl#=IuQL|;nVTYi@ZMAs0;Fnae*6ZlK}c*91lmKO9zNM_4a`s zNJ>7;Y%VC<43!&jbhP8Ic_*$pk(agSAuZ}(l9)26rkdA_H-M3%3FpA{x~&1Qb@$x+ zzqs8z)EnIG^Y*jnjPSk&{37T`+CWM7^KiWj zr{`)}N-!#ef0H-ycM1ct&~a@^C)K)%fGSeMb1 z89zK0k-}wOUK4D6+IiIOUhN^Z6mZ+e(h)Eqde>pX0w@7m*lq2Fbm5+Mu*dTFhII!X zJGWONA!8%%(zTi1kV9g|eS$U!6^mPw}MY!yDVoZE?)((t{<^Wu$ljwn6L zty{UeT8p2JbX4Ni5=9?nSbxqK7306d%y8#Z+|FY9anw(pX#j2`1lLPh~DJOeJL>SVi9pQ&FuZ{zQ$_(efJK zS=tKV>-o4_TozjKy8z=hJfS~yn`rAjm~_|lu+A5d4=c`@m*RzJ5`8>h|B(ZMGWKM} zo==!&zBC-<^%)-xb@Zk&`-k_XM!)FVuUx$BVc5N5$+mf|iP&zJo%lel3Vn)eTzM)V zzMT}h(s|l2RFvK&Z^-8cg zwJai8tkC(9#F~@cEWiG9_D9XI&en<4^HWmXxQk`K)o!h*Z%vKgv}s@Pj@_qiqr>+# zDN1HoFp;R|2Y7F$U%`lJtQ4Qn?kYM@v@;0|+*?Y0&0rSMV0D9l3tAX{rj+K7#y}R_ z&ZCHp8;B{;-={}5p)jw0#Iwju+s%H95z?=x@GtBW5mBrB)|HZi?s+9UCJ!XOV?pb8 z(p`DQ*j6xJ67t&;4<=Co<1weqpO=mcZyTVE3M10WAfCkksqjWEtUb0ctdig4V4@#4 zt~)agsA_)HVpiz8nQc~lIgYwr5HiccZPwW&ValG*dU=racscCEA=q-(RBaqN4dE>?2N@5VSl7ZNfv@vm?6=tuZi? zFnv^J8`jWk`ISLi9UjP20%N}JR7oX=KW}s9fPisCt-f(d;T4CWs$n>r>5$ZFdr?FeMC?A?^3a>V`DchCdzF~2uQ=rJJ;>%+ zpCbYgQjBoN%Yu2VC`2iq#dY~6z-YBbEx_|!{Hgbz!khJ0HHM znC|xTV2@TU6E2MxJ&tVx_s>&(X*r)BPM)_eCq^K~W@A}IZ4kuQd%3vCk>?9|6ndqabOJhDZst5b8#i0dmGg{ zpCZliyL9x%j-Q0*7h!u5M#@o6*9^ zYD8Zv^9tedQ1`$Ys0aB*QSuR}r1shreFpg)ITle81DR+ThkZx3=tCwxp5o>uTsKE& zc)`qRtJ$s(yJMO};IT$&VPZ8l^&rT1GK6xNAnxQiKcSZH2A^#f%76XIk5?Gq7b$yYU|s^hg6`;!Wl(yO|Tngp1wb%|7-~N!)Zhn!5H&8Ch!xG>JT0 zc*82INA~gb*U#(#x6FEcEDl5XSKG90^U!aXvC90UN7O5;sd~ z3DKqxsWe~gQZ^<>n zI%@8uF2986P{AiGaQYl1EO?x`2`l8g3VikIh`s^Bkr4YDJ&exO6dNXp`DvhRFczs} zvvVyoeu91=5S}3}^Ru)Jx{0;2@>&!ju}6ituUH+`WVh#YMX6eEhWq-R1eNGCTlS}U98cX{b^X9 z$jGio+vb}YLVh;#R=zwc5xMSx&eI}r#teeh?QwFZnUtz6R?z-?LT+aSx$(^vLnz#VW;#L24>&jLCC8CT{ujbVZ zS0g8Gz2&PQx=hrOZMY5hzUKf&bPI zXJ3v7o?3E^y|T-cz)=L@2BRVGV*XS}EQd_HbM{R$$C(D7-4j=DUYrY2w0&gGz+>wC zmP3DNyn6E;eV5LI2-7s)jC)i2Y_*r>zkjC1wvhBzL7=7?wWz!%WKvO()i*J0L)PWM zq+9vy3sTi|z~xS8!RnySSJXqZ!rFM$e-^QhQd)uwo4@-+F}5#BiO`*{65~*3q29YF zYr`WzUAGcSX?FiQn>{3hA8603g1)D$v1uIxSkWpJJ~r-7QG2zs(r}}|7gSm`1&~36 zzl1X6F67K!$l+GODjHf_rp+r&W%}oH#`f)4_!jt@ZcylA#u!s$@^Jmn6!G6jU)VS= zj!P4ju}X+W&`Nbjlt|9!vAIwmls9Uu%6UC&XH>R+Yf?tDdD6+dA%Lf4>Fj&HWHFOL zF|$FjV8JZ#-LaXjlPq8Mh(0bT9zpc9)L4If-ENq=G}$o{8NDnf7*36m%1Y5bZ+G&D za=JtZ{#9V?EO@HF9pPTf`?x(6+c&iwCPbPs2Ngj~PrsmNbbn%YJK;X|W@`t>S1s|F z4t(NvBA8h}KMq|~(r4R-(3Yb#WYn-Gs`>wN*M;`Bh&JPk-YIGYaAGeD9Kiz zbgho7keeelG8hsIgACOrg6wrvUZukApd6q>L7~64TUQV@W${9t6=TixLZ{Lzb}(-~ z)4jdROF|>c*Aa!jBK`EwhTx0rI$mdvM+pSaW630m_^6cP0atTnPg|Quu9<8193eWR zRFq=aZagp3h3)oDq(}tlM8%q8U0OcrHYyRlZyp1a{@qNwpv9I9I=LQo5&dz+oL$B~ zAPpwoiV98=V>daMYTKUkS&~ixQy~Y?NI!jPg`R>+71&S}6U=>vQ^J z3G|tldSG?TT8#=2i05kv*jTnyHyqLnR8u0UXN@r`|7CAHL1)1m&^G|hpWw^VDzr?OI<>8N7jnlXrr7O14nGuuRnk3|9OTUbo$Me_bPoIh^*M; z&QR0y`nAB1YF9xF*V11Vat$opzeDZpDMM1zCe86rk@OUuys6|EOjcK<7nP}s-udQY z$8IZMj&CTq2F;z}hh$O8K&LJ9o|+90+zfCuOztdUO;o&PPM40gHd~(1vGjOvKgUmW z-GSoGNNl7GmOyKv^;DbU5E(Uu)QzGCYOu`Cbp9$F>-(4%oyjk8Fb9}?OwbI>Ny$gd zPg2bW4@SmaoM>Voc8{Bn2@YZs!q6QGQ)ZiNK8ROcW24N7INcadIEUr7OWID#1D$mf z^3cKg&9?vK%PTYvNkYgl#jb&z?I6AQky1Bb?y=N};gSD_{J&=$!BUxQW4sP;f9p(Q z_De(yj64i8m&e-PNT#zkYa2PYn}|3}WFW9tDlvlRLU|&oIP-a8AK6l1Ve2;VxUm&n z1%nu!KbH-ituRHoflqL8;4`w3RS!Bbtx93q7i&Q`1pbkB8b_S~+pVi7Szcik61-8% z&I5SP(pU9kxRKh`7%a`$lBJ<~UVz)eICKqj*(@+);A6w34$f_2&SaxHJT8n#lBP9P z+!bu`VEM(*ZxF+XkhGsL@+xAZgi>(CRFr5@I;n;VXr0k#q%>_}O&+iO!oOWIPTMI% z1l9b*h${O)hAb_VMtpG|n+Ftc#)}%_=BW|>9+xRuv54G0hS2K4l}DZ8yz%B-A8F?7 zJlK>BN^4ycnneR#=}2bf(wjhsO;;_tnHs1-r#2|M-J6$WoJ^^t4&(8_(VZ7ZQ9>H( zsB9TsKVBR&Mcr|daD?0XHPr5zw%tV$A=FHnG)XfCE$QG4>}=+PKn9Q#a-Unih#GB_ zNes{lcCQ)xgW!_RkBlwte!_G1_0%e=03q9P)9BF=y07XFWYK9OB=iB|WvtT&hX_N# zZSc=$M2z$|b?&EK@$2%YHlg zXVS+YjVTYYsyA~!|LBaqZGnl=?wfg~hlbuu?*}c^C)l!n_@>EGNJ#5mj?yCir^g<2 zZ|tLFr0)&jJztw1ibR>-z-i3~p8?Wg;9jV{X8Dok1~P#$>Va{j4E`~rJ~3fh!rr_4 zuynh1nGn054`w?-qQG&ukRdM2959uzrZHa#9N=l|KO)uitE9j+Y_}+Nl{NS3jrVOC7?g33KZC>tGz{b-%;Bu>#C1TjFvKaNy2oZ z7XkgEvqz$Fay^oP`+LVlKjcS-SA^@!@JlFvvZ$^H)U}tZ?O&b{$x#E+^iMV+53TSz zFi4>85jyqF@2@zQiqlnzBicxDml4x#)Q6cr{@pXw2jVaZ&+VF3R83X7hMd=w<{tfd z+mIGD>FV=E!qJtXYRF*l;f;x{mEF+@aD1~nsSWye&xof3EqSzBEbB5Aox%Fnw)QC~ zYSHLio<$6ZU^skr{(u_~((AxWLOh~JM%gbTA)Ub=SmFv4zjp&ev#Ms9`I7MmZEs9{ z?as=dNCyCpbK>oT8pVMM6tr^i)$Y#1EX#S2(bRIeK{M%=X-ICzau81u*qUMp{RW^7 zDPj55zc|dVw};&C*t0_G%aG_L*sgru06`0I2w+gDRReM%w7HP?H@QTKgEC@U*oe~v zgG%2}N}*g<@2IEZQRKeVxE7v4ePu;4O%}D|w-HIyBJhN0QM1EBO8iAcleLMLzJ#vC zqn*>&8WsbX5{-j^5(EK~cziDQn0x#qFshL*Au6^+t%3Mc$N4RcHU8*h9Noa3v<}4d zLj&nCrfX1w=w02lC2}56_m!~vu4$(}bCXwu5FVf%!AEo9qc4Cu9!DK6!^#%fPBju-0{T1|iT&BrNXS5_6F^;AHkTv|9dk91BgB~hgAfI zI$-I^&So;*ioN7%MNXN#q)@1&w#_$RtOwS30D@@mt-rnAR_BoizsZsWo}%(9iJ&dG zEuy;v@j$UH_O&SHqd95);bQaqc|`{nlD~5!FS={%Blbp? z*aT}Am-KKFk5h==w1;#tz>Tp|HC?)%nMXuwR_rB~$03diJ`(h!Q>zveIXv>vGR9}} zUKAFXk)znTwPAP1KUIov^F8|OD8D&W6xC~X4_t2c(DzI9?-ooQVk1@kS+Qb~C!Ra0 zlg%gE39HMIU)-nCP^NN>tMe2s_z|1(HaQ%0$w%`E#_wK_0(o(0AB{Rtf^8%ggqj0J zan(F;QI?VV6~GGR_FUnOISG-vdJ{b}ybl%$?e*eu4m7lYJhR{_()mL0H%nD)MTYoz zA=TrWYoT06!&iR;CfFS?nV)T(Z@L*~QhwVlug0?@p$DIw+N*fp2o}Se?h0W`M|PnZ ze#YlO@-uj5OZyB!@H^c(H;YWeJc@id*T*JU|5=++9;e@b4pQT419-nXchZ&Y!5xTw zj=C$%e1~E_-yq9F!c!jU^qhY#MfxJhCsO&5)5f4fW0c{m$iuoxA{iW#x!M-EHl@pDX#m~X1 znmhkK>O(ZWM>cV>9ICjVlR%(73l?!ozzq=pem+47n7xAGu~wX-A)Alo1HEw& zdR0tO3qrSice7t8F2hzg4fES7wEM``LV9Kr=xM$ryuV&d94{}2=4|D)J(CL#)@&ay zb@!^=>@YRFtw%Cb0f<A?fV}Ro<9(+-!`q| zz5PmILIL?bJ%z5|wSu@rHy;r^{e`ancf`N1>Ivvw>D}giFEjbOAaR}_T*Bn_4Fd&D zZyEne^_r$DZ&#ETGVg2C;S`0rY2ebJxiL1vsFG|kJs4nj>I~7NKMZCGU#J3q+Q|@Z zs_TG>HwOF-jV#iL)HS{VR{A!+J_5%K(L6$#hBF2pp(pMISr(ZKxmGuxp;{yAv__5W zgi&X$BYz&7KezhM1?I{PNJsLlBe;v8^IW)X8a1MV$#`78T`gaf9c1I8|AW#Jw}W!C zlVFst?uk?EOInGqkNb0R5q{JDa`YkdF}vDObo>uQXw^NneEo|iJNPA@C54(M9Ph~v zXwtg8!&G0U;mn6r`tKO+_J1zmTpzl6o&6h<6yX@9BPPE!dwK95c|C4@qcCWGQ;OmG zlkD)qEc9_YA?g}>=Cc;+0@>IP?RINT!c;*-6@d{@=OL(Gk7eSIyb80l4{cT4|2dn> zyA?k?;;}#c)CZ?Tt=a;TUg~@pKMKg_rZPA1xo+AgDqz8$3Sb<99>d(xZ(ca+7eSXd z#_kf$V=OmJzSIHMHbkfav)MDag@8Ex>7n6jhck7LNyMZ!PYK@E?hF-zBdck>SiDg} zPc&E(nfLahM}Cf9+oN0iqofFu6(b}cADTc@f3kI6_KQN>7CS0)_)-#O5-iX{61kIb zi@^Ew)+?9!_$H#K%JQ}q5xf=?Jl^2d#}aZQXRt&mGN)aL zxqBu;K!lM!UDtE1?tUkB(dYrc9!_^*s(Oq1{zfKXG;da#n?Mz`JvtZWNbljkr+c%< zaI0`BHPei7kY1U+s|=W0Ww=RFC_>Ldg_v}FIKM}yuIF?g`gQ=W`Gl%aRHx@YqtRVO z2$8ZN{2^@vC#6Z3@LOvl$;q3KG52kMBxhgUzAC~N`Op4I1Lu5ZzwJgGcT9w8%>2rB zt-~J8+k{U0UlqKYM*;GpnulJi8S4omAW=)J8UM`^Y~Kc95(BqSrcHW1thzrGJZynU zamA8IvbY1<+1yM!&$I>R;)8O!+9q%!Jl)%`gt96I>xr&*t@JjAnl`tW9YybY9-Vds zGcVn9Tr7R!JGD0-CT`TXht{iZyfW}S6G&(HqEPhKX_=EM z01K#ukmD92-ag|G9dF8Eqv0GmCd2O!nyGYRFl`N2%eJ$_T$mSH;JZmKyW8Wrvfj(# zqSg((9ynX~-!n1}v@ziA^6RS3yVtC|HCAYd$+s5lnG;@n+`Qsl$%;PhrPeMr8H4Ew zLx@a%L}okm20UCMx`Mu6;nZR@X!~Wf#&ofM^U`SbZVemvtf}?n3)DPz;mIMQXKHq) zn%xm+!w;k}4&l#aI;p^*_C2{Rai@}8Y)YH0+p?3}2&_QU#zMdhRsPFXPE5FM_-l_? zv%I=%k*F4Bu6p&`#n$!0$Dc;EvkPjIPcz>*FTRd$Jz&bd9>_gI)wa*ZSi#Kg5@i!y zo!gYw0Ve(sLzF&yS@gMdJIEdK6fS++{@HV!j9H$=QuLWFTugyfMuGML>Z8@22XZlG*d&_D{xTx zWb<6AiuwQJtbb*!Ao%&VUfhd@EyGEc6oA-wbT7~d5H{a=qd(`2>$qEVYbn`DmNdXN z>ANKxncoVU!9%JE^ze=tFZQ+2^Gc>!y2opjJTqEj+1=$ElG!(5dpgZ*=_Qo0e3h@m zt>eCa=*ij?|Av$OSaRA;#6avu;iqD=rxpvJYcfKa@yBn?&NQseN3^5$o_=Fx}`#*h2EtF}cZ zxxGEIcujU$!>G~PXrP$?VPRUMPa*l>`$0)dVLRwo4u;fG?-Q7L$sI?a^(8zpDN#G zp1%3c%!R~0(HU!Y_e7}ssJQ1~v4-R;mH=158qL3}E&RCV*9an6=k#Ua z(w)$I=qkh`(Hb?`IMY!H-^oF48zIjz@f~Rg8#o)l*7fB-aj>=I*SeOQBuPYUyUuad>0KX97PewTKy=gt4KFkc12 zIcB)Ml7HHC+w8e~ z`86MEf(a&uj}8v!xiM<&gNae*9PXD-;^42Dge#s&@K*WVoD<$4P$tVPE5Zpb;9D!c z*|vSMb56?Oqu1(-{F9$O%~u%=m7m(eb@3P^|@gI{up(T?=SP zlWfStmZV!E61c6{X>HsB`7^)UTc_N2&)Mw)gyH#8Q)IiAb)PR7vp%ea?*5iirw_l% zv>doZ%jlhvs<{%%Z1*DPj&^1l$}&|3HYDRv+i(6o>%0qpC<^bssxb`v@ny)2GGB?Y z;^^qXu1SPK`sfT}l)mx^`Lxu!keaZVrAWukdh^`;m6eMyxgRDYP1N^)Dc^=OOjH|L(gEElR= z|D)@2A~MH>L(VNd)9xu9SA=G9_ipv>HEwG;Z2&IX?dK@gCThlAF0@J?ydVNBXKG}8 zM=H@jA%8|p4@;VCGX<7JoNggo1%-5pa}DBdhtIrMCTjiUC|X;W#99&Jo37iZ-|K;|+(76KVw8YBR z&D!?FB5exuH5c5~+<(v>#=)33tO_`3)kdO1Lu?o&4LDNq;KyCzI3v_LzlH7Z@8_jp zEa=%=qGVC9rK`0{0=MESMh{e-ym6Q zrOp2+IuCy~zc!4={-J1VQ*@zXbfKkYsZEePMo?-CYLr^F+NxSrd+(9tiM>bdqNo|6 zR;gLBYH!}W|HAp4bDwkW>;7KX%NIMgOQ>_`Cf6vv=WT$oC{W_6zo@a}O6M6Y@FeN} zH`fEZ@!HvMK5wpYh+XTKQ`5Rv9!5%qriMObTYB^vj9zy{xv51IiWpH8*(;ZY3tV9r zV80mjsOpjw{ROQ+ZQQ58e#mFuV`6Z-&ldPc?^>GD`Kn5neJ#!j-RCSXF#MCqyFR_e%B-yPE_ z>N8|xZcy93O0nAUw%i$J-*%8C0(q^bN~AE1g62EE((XQwtnbd^VF|B%rY^t;k)g1@ zg>bOMl9-0#tD(1UGS|JwB%i1{_vcap&fi>$cDBRrmi;i=+Z;cwW)l7^?b4b36?#YA zQK2hP_l&9?5kdXV3EETe5p$+aUonsnErDrJXsau7%u#zH2Y#MPH{vVCGdkh6Tm zGjT~*!vgPI^71wH$v%2{+K8-n7+r9EU{muYVJZ#{7KX*&Z)7P`5`?xY;cbJJ#ttNY?C5D01cfI9qyu-X&K(L^SA0 zQ%NLaE8e^ve@At0bgfDEt9zJx%nqG0P1W)iGrY-nYlUPq6p9|h zqHd#pIZ2T%TQtqjWM7@+(>1+YMmKs(iiR!Umep@N(bfP^@QjJ0u8Oj`ilrp> z#HrplJDC{#y+6F6$!FdmzLWG5afjfv_y8w2rH~b?s!19x7Z>|fk;pD7B$E5$XE+-V zho)hx#rIODkBip=KPWhsv7ay)7j@0vY{FJxNqOXM`xGj|u*oF}RYJ*ko9C~U^uJl& z&LU$tbs$IoRpYb2GOO%JOhAul1u-3HKj}&t4_0eqz)=}tU{*(KQk-v2$ z47U5%{;6{3<6zxDNG{bOQsTdnA+WL&n6bkt5`5&eT)!@sUF6()ApPKLgwOecqE#1Z z9!F8n|LU;#G2PyuOpdOTI?Eec4F67cO8I(dzoSSs>e9Z%K)pD^KWTPyq^Ds~)ITibq4`sfj5+E61K(z;Gt_7TU&@xg}_bR&Yy}J{W*@=@Mho6 za||Zq1?~>%O=iGt=m`)%n)^WMY58$_j_P zQOzgu3Hf=YS1RW&t9oHvHCUf&S)B|m;6iLr6dZi+N`x(WH57?2LoeEe%}=jfz7Tf< zN=EN;#kq|l>a0v2C1|>d*|e&}i0sfDG4|6NvVZM)KnXwYh7NRQ#bN`mwmkF&KIwW2 zfJ6T|Ia^|@LF%@-BlU0An070A1KviGtIR|A@`jI~AjG3c8@NMY1dNrjC-^L4UXB&oewpHDpS0lo z+Bca3KDh##INrhnr_rr9`&q1rkBG=G9){GFoPz=XVL=8;&K=@b2=>=iT^?lBG#9u2 ze0SL!i4rOw1sq@JE=x~JdGFJtOQX(u`yYszvR}9m%{)y);@B>s!08N6r&)Wl6+ zzQ-=_X(HwH8HQL5N|wpSf{O>Jr<*P5E+YxvZ!!IeuKnhPg)bUU1QVBijStzn zL^ab`!PWEZz{Oy%Zwq*N<;?3*k95n~KcIiWoeqsDiNcWm1boZU@xNY&m4Mx}?tn_? zsj--j`x~Q*0@OG_IKowz%k7xz%16Rg+@mTY6az+^L3pG9v0p2({+w4+$#c@Xi3ro za1Enj1P~MJWimi|kgWpa9aOq)V6DgV>Y_xP$HTdi`?)d(;IVc*EQ~cIPFqaY*H)N z~ouvEI??2wg(KtPZ;N6Qk(MY7?1=2DBZ zjD5}If+TLAvf+~1FPhbhcV6B#s~)h=fu&mtd5}(RL{w|bP2;sgh@)P01;%N~jF8XA zpsysQ+Dp#SN%b$c5)w(UbclM^ABIUF+uOP@fah^$gJnMaErwNHEShw7b^{UvtN4Cb z9oDHYSAoUM8k4Ko*zFW zPP=%T(oFXG_uzL!8Ka^_%5Ukh z)>5Y++{O2jVvq@IfhSt-OCN+R1U9s`$SDdz4*Hlz-k`>@FR@xS@?a;1AmCLAPion_ zS%fE><6CM)^wSB8RWukPL}Pk03=SC!xvojf;cwYAJ?E7V!o33D6UGJm$T;gXn%6?5MYx% zc6s9mTryp{`F>_5pS;`r_v1fsdAlAG5cBB9e)!&Mv`*3KRQ;Q&fDYflMd!!1*)T<@ zR%g&UJ{KCPMG=)tyz`;#YTj=UY8+v#^g&6_F(w8pMb5aqWOTyAAW+bww-oi8FpfMK+^`#=@+!fNOj@D}>B=+DU z9x>WQ3z_v{Q~8b4>2;66>FdS6S-+AA|C=o!&N!%+mQ;6D-E}6@H>8DAR9QU%ng*5> z6%z!y!3v0}HQ@`X3*;}HJf>{tFZ^auCj9sN(P(FpFmZk(|G7A+$`D#E)VW>L6zRpw86rv8(hTx*HU>1%pqy(%14eF1DgC*sY|W0mor zRfTRQ@FGf&3UvQCaQwjxPE%;Nt=7i~!Bwte?mV_rKyWJfua`5)H+e3{ubPP6nBE=H zyuUFm1j=o(1Yq*wH2qQgH;798DfGr6gs-4+{v{_CAl1GxR2Ec&Ni8hCB;@*2f9p!|ISE~^P!vv+V{AIqmvr$(Ppl3SI)q0{ko=prd@{TgvI6TP;6!L4!^|%G& z{C1o5tsaNQ8hQ?vJszifXc& z7-VgU{3t||ub&cq@)Dv$_m&}a_%aDcHI}g<#>onZV``>i3N;i-S6{$*B>-c z33juOFjsN;PvyU8<1%>Y-?%AAOq)bsFCdN3q@4x)!dX-z& z+jY0ZtdY^mV*i=0#DY#fLQ2afZNcwG;G;4QFxMals>^D8JZA-9dPB=T8cA>$ASeo_ zN51Qy+?Y_nrj{l{LqWME&2tuQ&(gk9RK$Ey(+8F&HbjBJAF!-9;l-7`{D)84W={+M z)+zrys0ggL2p8^PCDSMoFnptRl%+Uc>N`F$yb;!>V^4~R0p)>z+Sc_hRsgAkO?~B+1=k#Jgx9uPesjmR8!UES>s^pv)&jeye;>{SBLzT6kv~` zUX?f~(s#CI#;$)&J_74wR}uv*f`h(MH_Fs9W0e6jC9QW$9YIVVl#8!lQp7a9C6oEv z5Bf|8cTL}Dr88bjkiXKEOohv?BRzb3zXXgvCmiK*;%se==o5#z<0^K_M@B5iX1OZ9 z4cZGL`r`>}8ykR4Mw+2Rf9cxQp@!5D$gaUGN0yYiP>wh(=`sEtb0PS{9;5zJ-|m86 zZpMxO9emoiW+QUwUBZof^6w2dd(Pc2QAGx{l+_tG86tUIX`LG%Fv4DE!mlAXNROJ~8{qhJrBVT56 za$O{kB)|`xp7azDALu4?=JZl)7g_R!=ZfIw@3G{ALGd)H4S%z+sDA7+*-ym6yynY2 zzr6r+^TC0v&!ldWn7{o`pK~U|9+D63Z6NeHj(nh~y;GHz%;Ajt4V}KPbM!Ek^_mPs zPMz>BIwG;Nn9#^3Z0>>eeKHX@}E7q^1n}Zs?WQSWB+KDY`Bcz3466`z7h&wlIM)W%)MiL$r8W;HIx z!+T%vn%3=^Wt5!wG#Tg<<|~s8)peFQ9%SwopL8K4Rz&!wmefUFR#Ik1xfMJo6wG>a z&VJFB*mti2uXNn&9$truBGGaMzrt`?l1ZnX^YNNVrskI%MIqatkt>ZCG2PE zHyTGURZ&=Xj*xBc`%wZjb6lZLhOZCtbM}c>8MOE$5<`dhfDvh`r*$#r@;z8@9lLt_ zLD`A7J;2SZOE}K>51;`>TMvZ+^AXsUo{W+g9w z(Nju^kUyP(p%BjrpC!aJ!LFHK`)SQT3CmM8P^t%G9%Pij>~tye_E=NtGMm9#{ktl{ zr`*`|8gFd)qC=5c=W~s|Ui_-l#n`K0F-~1*qQS?5?IN}x{ILvY>t)M7>0KtO~<2$3b?MVq&moJTef{K%FOHr#VM)Y%yvhXE_I&98}DL zBgcJ)Vn#X;P6`isH-4)YF)kYe{RJ&cpv1kGLEbepE@!rA_B!Yi-)Cg;$XVD@O9#M) ztA7RPZWND%7!*!kFAP=t&*GyMVZ}Hij*I%m=_uNQ|CT1~r`4!sm|0!BLqZ)<1-Hrd z%;#*`(4bAGjLxwBivE8X#gq_qsMNhsG9FtARGB1!IO)!!Kv4Q(xU>rJY=g){b_HR1 zLapx%Z|`IpVyj*!fCiCfe7aOyEB8&n5ejZnZ{i63$8KJDS6F{Ee`B*d91O{#=J zb_4s#osg}Ke;RqeUC+<_-sNf-^MW8_!E^rh%LtFGRJ3sQl!wWp<|~W%&+$#@cPuF< z#KgU<-VY6eKZ&C!d-ET)pq?F{ouK12gM0xF(bsX4j6sU!qCOg-FR4t0-JPD0CX>yU5E`V?|&!Apcw|0rS%x z3>i!nb80vlHQ8PG2M1L@0SBW`->P8qh-|6iWEI1jzpiy3G8 zo`|Z{r(70}gZt@@s$Nr2p*42=#;w%lB->0#?Gm@{b{zSoWxxS&Fhu&mWqJ z_Qh353WPsieL6;S>Uv{4HaJzL$#)<6fC_y#TZI~=B06~cZp_KTnbFsx!uKy~uBb|V zyWAdJkduI2!z^5zGkh~YiZa6+z|xW>9V{)0pBT8WATCt8sxzD4t&J6DtQVhfS?;F* zeL{&z9v{#Re{<5AHQW7Dg!bPq~=;Y9zT(4r!J@%fTR*jtmqmR36qsMCCQql`Y=$ zk7RSe9Lm3U+VF*JzRUXv9`|TFdh`LlQP*QSJ3dcR3n*~3ZdFv^X7>z6oeAWTsdGUVs$SkV z#|}y;uvWw0v`F!37+%${pQFJf2P0)(WF72jWy<&vsl|!;qJ5cluCD#f{-7C&JDE4cJbwrWbqJsTy8%L!g{*o8Jmw4%lai8eu81)S36(gK&hlb3ntQZ2cs|asb=&{z>}!)- zgzfX`n*~(z5$6yh0Rr8`$D>EkX=s~rxk#$OxWa?1fpj^keTP;AIbfUE1^J* zxx#7(fCRz-nDdfAw(c1VPU`MG82JgW)Hpn06j)K;k33Pz8U z%(mI}u3;dC-}K1w3@O>rLD$?tC$lxWdHQrYrIf%B8}*?%hTr10NVt0i%axYIYgXs&whUnb+CT`k9?7U&BC-DENo@x#^6c-IiBODm zMx=IKDmZ%VRp0X0xj=t6txN&MZ$Ren0QBJF2a4wdO%t>0JF|q_k0}yCRG-OniF%yZ zND<78xmBpB!4vB%I2DDn1v#P0L=93vVPP}0M6M;S6>dYx;>nErREQ;RiF(wFi!eR^ z_U7!@k)69A;owk@9>T6bC;~r_U7{uWAgM+Blt;OT2~|!svGWt~F#X^`yBya7O3$BA zYezQPp(?T8eT+8+m`R#V>8sNBV-&Y-{W=n6nJUHvL|vYU2B*@fy)snFkT%nhVb$e_ zF}=q-ue4`lM+!7D8n}And)V){<0H2ObtBMg|Ea$UrQL>Em5zQ2WB7qrkGn6{_-|v_ z9~L|~+uJI{kk?XZEJH?f-!#4CGJgDZf&Pq?0CtiIUXHw^F}9-tG8*?>x7tJKu4@f3$&pc3sJh_=2kePX$mx>QS};mFF!XpSiRsLL(i|mt+T#-yc8#_ULjFXfhIX4f8_h$VLvR% zcRspnW5T2M|0?Q~oGk6IvzTezXAr=Bh_wgl-_sQg(qexguB@JnHVdlmd)+s!^Y*!m z0XINhK)*UWT#7gP?#GBf4ez}F{mBW5V5e5!X3u9<5DWhL@%yaQ3|&Kiglvh!jrZhA zc(T@@L8a+BeG0Tmb}Utei03Q9e+*cS6}#%A`siZI1$KU1S)_ptKO{S;?NSZ?B4?+{ z^gZh?oqWpbBWPqwe5@z_n|xKkezPi4*gpyMD%5)}VH{4FAp`5C42qF2Qd#->CdN*? zY+b9L-az!zFBq4)I}C|aB)by+GIizsAd)V5rf(gtSK3Z&HL4$&TooH(bEGI}x1$|j z-bQ$4V_!RbLOrT_n=JtIshJX|62P6c3nlvGb}TFePPo~0AIZ;ppYI2r?E~rt8O%5N z*3Z0tx|An3--5wv_Z-BIC@`l=S(E+^0ekJ8VQ(s&C6kh_!|*>eGBTG=RPJQ8B%Z!% zjb9FmXFrP*IGo1qUtlP)_9rh|eK*2HPfN)3%Ht14;in#_2Ni;hyr$H8_g{Li@YhBv2mIR;$Pzi>Rm%JpSDuHL z{We%)!1cjf+lT6CTZok}tA(lGzJY9N-T7yJt$<@99hUG^%b)1br@z1|EY<6@QdQto zBOcoBZ5=;bB>l%O4X4m_|tq9co^kY!BSiMVWC04)CEC-&h zNH>tXe*(U{G8l^PS|x4Zo%79K$J;!H?PF&3J3D=bUFPo=Jkws$p>Kyr96 zTwm9}Yc;_8q`}~{d|J?~_o)Qzne#HsF{~5+ebu|wqkEa>Su9#S$oJt_>06l@(!-5d&&p1pV zPiw>73FmKuPzlpCZu5NFVi0v;Z!S-%9TbQ1Xa;iD8*n;z<2aonddY0Qob}D!d!E3H zd_Q>fp7w3=&UG)_VDID^^o9ozIe_Ry9+P0O4c#Hhpo`zqbT=J~u12Dk0Kg-Q-a|l> zC;ySo>T$&%5-?wP9%l4u*y`JCF{QWQWX}fl(6I5;g$?K<&+{0;Ir6PYnUTFFTbu{Y zDBThct0YvEGxI z&+e>WD;8Uz=@)xwsHD^eztsbHeNP5_J_>iyMCFcG6^%jU|E{PY)dSO-#WU5)KRy}C)wg{}2MVy$yVh0{cljpI*5ioOAp zrQg$%UVYXgxoCaDYvAg5(YO2Zn7EBQeE|dMs!HIz@qQO5iD19(V_0K<4}b`Q?urN` zCC*?-I4;PpGv6}P#RC?-c1}EQ@5KCl0qiGK5+9H*$bn1rk^n@Klw*AAUGMJoeD(uz z&zKicZNMrKg4{)XTkg}l+rFILFfH`lR#56-(pP29KJl4R}q;%VflyeP|?rK5) zv`mQ7!wHlV671b6tc~o~ujG<6z48ec3rVNar7_};<&nZ|ZED$wUOK4uC-mw&XIkbC z?B_Up3eb)!H*pmbZycgmK0HBO!2Te{649X-J4r1@nH6J<*(IjxemB=&iWS$Bt$lg* zqIB-Tg_ED|EoeqXfooQCumVHoZJ40TSDAuay7=B;)ZuFWBKGG_Rr{&)p+kJibq&AI zD&Y#yG90J#Rs0)4Wpr{BSq8bRjAd+|ka!=p`7CI;$Jv#Pt zb9~8YbiMvC41?V2z6sk+Dh*mb5tezJhQ+*GdDGGB{>eofQ6g1*1ClMq6eL{Kju^)= z4u^Y5c%$Bgffi1>i4R!$Qh&S20lRgC0G-8wl>ZEeJr50LUa5Qqi+NoVQ}bOmsqQuR zPEWnM`lJnhulmENc=5*|y7v+n-&`(hTIP-lw}%Iq$t{F>U&7K|l@vR)iTj1M z=jVz9MT~}r=JR;XRk-9eL^A8uJSLi;h07|V2`k~95*)38A?|<|!mY)+WA@ThEmvv@ zm08tpMg^(k*MIX2nk{Zp3_o5J-6}eB5WvMj_JVQSL91i34F7a0;-;8CI5dy9%X1lO z(^&C@X>gE+ysm-w1CJ|d0Xau{u-M$sNFBV$Kr8)w-9iO~a-$7t14+C6p9^~`I6qJ* ze5kQo`aF;pzEIU^(r*`z~)SQdoRpS0MZx>qCm$bG0nJnjD z;Y}n2@N2$G5cSlX(3g}dRU4z=8Od=?D-=ur>0LxXWf7gIi*WN$GIt`GlQYHRY%R(UY%dtyml zaCRl})*FnFY&s}Br(Ik1q|N^8V}Z{as|ik~IxbPM6du&zCfC>R#HAMQII=n0c2qu2 z@AC z0Mf=bTT8#{pS@?F*Mt4Ot0RnLmq3b2^(*1PzvhBb3kf$~Cs|b+TkrF9p=ienSqQ*_ zFX%#F=9YBJn6N}ECg6~u==r5Z&N|MW2eTBQl6TNSdTf+1XHOtpnzU0BtD*G**cccTjlG@vz=%$_aNN~t)FNTd^API?w%(q}6czAf)%vG3q z^@jhS^(TP`acgP3==@$Uk_xkMHK?GR%HqMBG!2lt>SuAAh|!B8jbkuPQnuM+Rp1-s zJ@Gl~gBYzvrzVnzQiFp6}c=d({zA4|*X3ezgJ|j+yg~TM!?#;A=k%7==uE3uOe#~$opRJLqTmM@ctXM9@Og(cg=nkB6_khbpx-S!bEPg%!U%=jQjs>w@`a%79^D#m&(wNIL zHRZ3OwEkesH%QMw1q-IwJ+M!+%XTvm1ZJkXK1#!A%VypYo^^fss|8JoNxkAU3SZSS zW{9l8BIyr-rMvy=`#i(o32Uu4&eBBPT;$d1(ZQenUh@CSNjg{#cSNCSh5`a$ zo_agEn6zwi8toFbbC2in?pX#kEHbi}NiFNGi?aOfS!yo|HtAC3hA4@h`3{5DVjmq~ z+!$^_=lrZ@w~@UEV~cRrfgG4n$&=jq!N-5h#^kjzDq*YGIO9$9<>=B0IU2dcjc!cu z-y&RC_rOCAnXX5Ve8N9&={zX*vE13?{Nf%4`UM{KnY+Ia0_oHLivJP!Mk+Yp-2cIM z6u9#A74+8rcp_+3e(?lI^8v``*DVrDq%JMD)-7?p;8R|T`PQ4*|L(kKi-zn|oKfd` zA(J^fEUqwUh*y!bvVQ;0XyZ!!?}&^o(h}SGwpCw%+|BhWD_P5DE3MwY6jvWzqY%J^ zb;TrYzp(Vi&juD>Hk~3>{aLieC+xEP2W40E{g3(s|4%B?{~>W@9)JfZqE9x2b0M=G z0ZS_p+FH#$37EQU*1nO$>{WalO%R_w?`xValJP^#(6BJ0%K06{C9-ch{2*&I8LYauOltIT^H=-%^Ez zFBw8R=?wfEKW6?Mv3$#kIm8=O=HaT39$QMhEe&@iw5jr5Qs)cnN*HQ>Cbk$);65rk zr!k9+!+nB)JNm{<4LX^bRt@qH7#T`n&n}2BQ;Zo#1y{|p_R`Gc!g?tZz$neNzuBIo zo@tvdtERJiQaI*?_Um5{g8TD|U{fy;j{)UcifWelE@R<1=_b1ZpN8-~xKnAWleO1Y z>=y@QpYK^?T1mS14XY(GAG7O4Cgg=bNRnR>%!^;eS+Lpv{Y_Rf$qT-TW`AY}@Yj~K4}d8IT7e8jcy-Dl=8*I7eJ^6gMLk;>@dcuMNW2NX zjCBJcP2Rq}GW+S~yrU2L5Bc@hOwkgLVco;hx`lHr&b=v;x14Vu%vU))3WBCm!vuBy za+uR^U22jcru>>u2#3?>gvM(ftt?=Le3rL{oIEY&7VL2IoHtagkXRmbEm7V1-9wuq zujhpCpy5sX{x&P6=#7a>nG-~WJ(C};=n>U+)3YC!OsCU_E&Ld0sYcqd&|C8gfMk&g zVWzJCiml2fHn~H-Em>JZ<{(D#C_pag^YtDo2;!D$w*KG6MH=!zHN$c?d=xn_YU?i1 z^{tJnk6!Q}WziSIgun8#(JOC};g^G1O!&1i$WPkB_xh>pS!$^SoR#v5GGwdx_RA3u z+z)+MVQ^$OjHVlNa%uShsAArm%bEyJc{}}GM6}fX!4+ImDqD8V^{H830#Opf^|x>Z zX(XF0vfuKmO1e~G_HE_2-qWIVdG30^#(jLU`RFQV_NBs7J+KPOoJ7?+oZ!_F|{$xZ^8KN@?7b-tByBeoi#3Mkbg7*&0Q?j6p%D zhu5{<1k0)b2_fYrMA1ZWOUp#LZxsAUoOXo_J!sN$>h<2c(Gorwd8TPqh_qQe{rX7c zC6pJEQc{AWE7Sh%ZA_PP`=d7^1o*3J7b(`RfSy}@mVzwctyHRZec~-#$xH}<1djFG zn=~R2pUoaTsitIQ_WZ>6gt&ZQL(EL9Ei&BT=x>zXY0UpOMw)v_C-;DkEk{!tJ0#W! zym{#VhmUhHqBrPCSr?;pZEx8g5n4$)2Hc)_?70}Z^P5xjT2}JSu3sv#U4L`wyO^c{9GDaGO?Ujk_CJ7YN~``r9g#qZa4jBYvS#8m>1HMO>drR~iML9Gfi!Bvq=7F>!6oy#H%bQ2ca6Fe4ote)g z`AuPOFNiA>I1@;gLr(Vsb!0h*i`u&&R>1;nO*vtv63- zlBT1itJL%kFYGz{jJ1@tQ&q&s__g)3ESH7;+&hM)Y-^^!9x=@lrm@Kc9nSkG0lU2{ zJsDyo;~m!E$qAvtNohNe>sCY={6q{s06PlRCZs>DCi|sRGC!&?BetfIxvA!VGRVam zcj{5&&BdMh>qEG+ac!<6ciSbWmv%!0N~j$gD$O<6rh?F z!Hp~RU6~xtDb)Cnu<2DxIjxZt=c#6Rmj0;Z!$_tSmQO@sR7qw>&x++nZ|~u;mNXss zN_hX1RBx5mCC>!iI#``GqDxoE)fYFn8LTrzCes_?U zjH1~vVTb~4e*IUdfs?-P^2=v-f3F}cQnlISMhEyc6VqS1s~{M%b+j@^!a#1z(>V3& z)e9X^vtXm@dB41cs@dl(wfKSi(9SHIGP5>#@aXQDl?g|&Wq3>Rn=|&!%!iw=Q98TI z|3(?osbOI%vOJ#1z+?0ZuiV9YCHq(wDRE63b^T0QgxHk6;X@oPZT?uSkW)f|SyKky zLatycnC3ZtZN9Zlf4?erfz7sVlJC&&nA4RPn)x$;OiGyx-ao+8DY(& zc)ii@Mgvn6*z^YgQUZi5b3vLGV@Ytf_}sn6EW>eF{RpFCy5TG5;~!B3XI-7l@`0!V zh|%6MvCmD^T4T)dm9+9%q={N_*)e7+@NhF{4F9N zejJ!^&tYYH!;$VbXyhrmHb)`TE-0aO-qgQR>yku2_w@!YdXC(p6n(jl;PJoXLuA;8 zXIp-+jfP&h-=hR$P6p*hZPG+^dHyn0D$6RR={;FpsXFu^HD4$To(fpT$aJRc29!0B zrN{O$!CH*^xdpH|Ibz5*{8h854V<$wM5+VZJ@ zARm*=rzx)tqEZgl_Gqfsc9GM|OkMFTczM>FeNc+A#_ya#l#7NAsOl7h$2UsAB;{RUG*QqZEI2;ow z1D0iXS-+|%01E=oeS2**G%C)p z8{^w;90-HA7Msl6G*}sRau}#SC zhbo^wC)hT()H)c^lYNn@gI}QIE^tI$f&J3gm`TN0>uf>ds!<6^=eJxSs;}epB7r2HUYcdC?980cCx zF-8)P?L2+WFjUhf0u1O@p2F`D_)vI;jBy&bjDgRI@(SMmY>{eMsOdS}8CX6;ZtBj6I zHLv*btf_u_e*3ltI9jv-yL}#xk!-MVEWR|no@_-=eNFhN#(5b{vm>elvt$j1X1AhL z2iKGp#o6B%Du4DvOO&H0!Laoo@o^zXBhs5eWT@uPe)~srFN~mZR@S8`KGB;UF3#4oE9cgJxj(_4^ZR)Kk- z5src)+@rdK>op4Wh|6k@>&PZfY73Kca{CHS!-Z0PaHoL-Wcq_|guuMXA}M7MpF%94 zKTWM&^3nagwA;z^)H-$7F^zDkT0m7Z$ApF0hgGO2d|A!m$k`7VVSCd3o9$DqYpcN< zSQ&lE6(NzDA)S%{?6Z#_1oFlOb5ib%OD!5w6z8v<3b=LtxaKb)b1J0xrwUS?Sji5X zOks*AU%wVp5WV2KP?J;QzbdRcTdj2-;kOC$w(PfpKDDnEcmwo9~9TmmqW7M zF=QY}yx9@t1M>LLNw<@5U)BNiL?h;+=FRa?U{P`zfG1Fvag)6F=0CuGjbF(r&jK6J zFSsubb%?*`yS16&N@L85QajoM#$Ju|^~LD7`(G`*ga)XeW9)e@KLq2?t>mg3eQdyO zhFpP+MOfDq6qI;DVe*z#@coat)H(*IiJvV~92%a&3y?d0$mEfiTRI=?w-a|YwH9?_ zH_gbI4$iG@PN51tqWm<(TfmP!+?Et>GZ%Wzv)l%#P(n~ zrW^aK^V4+S$h{nLkz$blys9s$f;nMKJ@EI8MfX};MwmmErC~NX&PV$!Vf!b-$d<#& zs)>~59(e}&{_ZQqRaDT$*+G(q`rMocAc4x!CAC7d7v$XiRZfc ziq-M8WQj|QG_(kPo5+ycPe9Bw0dm|)v9ZLdB`HH4*>pD%x8CSr@g_>z&y9CX<}tnh z|LfI0x8nG*d~k|lF|s3CRFumM8Lshboq9nH;Tr1mA;T#3Red7+Y{mQ1qC)csse_;( zPZe~tf#ZAjdy+!lUgL9|1l&yV?oVdIdj^Qxi3X0!XbBivy=*_j+Fnj@tzYh&D}(Nx z8K#2w(fIe%u;LE*v`#H%Y3*Y`%JATuE<}-$+F088c&c7L|_o1=oPkAR`( zsGWhB0Qx-1M-FaCZJ_;EX#Ez^^%ORzm+^NnNmh!#%pfO}b)m^HA4qyp*(y^(StLbw z8Pt77*5Rk#HJjOZ&?d#U7aQs#g}GOJuVCOg;QM-a#eF?tgRiF+|GqX9+8rA!VYI*Z zsT*WgR#m--FNBDty+xL0dg!u^vOlixkAwIbsZx~+m=whW;W%klZ~})CH-g4&VxWi_ zyT~W|(_|+LQm>vyzj$&<-m?DQCE|3^{*MiOL4|k$plVHgVo(?&6rcVdOoIyjCjqbnuVM|V!mz$AE7I+Xs48v!ci)jKJDSg;iQ~@plgEIy zC+5|j2WXZ4Rz9uONVlwGY*;@_PxcKlmO}7%lW05zIioo=P7D&0M~~7HKT4EQ<1-16 zlG-1~g~1I!eDtTp=U#=gTgHy)Jjl*ccGb##-?DkLATS7I|wp#j5!Tr z<1Qdl&1~oufj(oELfqHPQiq$fKtFI+2WQn$lag>o9D~+9JgcbqcMzlPYHI;d~E))ECpX_iEL z)tYB(VPpG2R8SeX@K4@Lx-#Q>Nb%P{6ctFIkU_LM#5_=FYvP4+^p_rKU-lcIHyMOT zRnuG2K{=`lqoK&=QwxfwvT;qLNxOq1!W@1f95`3FA%EjbOB<7}6o(tcyfY`r(9{Ma zdc>ev9kbp$W&7{m)yqL?8?3t8hFBIuwwA%t{e6Yi;l4#o&wKB%Yt{w1T3MB96XzT= z7euUJfN^dAxHQvo0bH);CK1Ks%xVx;5Gg2{pDQ9OmOJr=^MYWiBVatAc%QLa9%?Z8 z4k2_Z+K4p6J=WrVT&9v^s7R2UdXUBSSi2Hrr+3lMKtCu&teqLUHBGQ2kYgP?THWa` zL~Io%1TxL|Yb`W<#$4-J780ot>%ui4C*Fj>^0k{)b&K>v^&hjSy^kmd#0UU)#f2|t zpc`D5dIiFg`942H4f-K=`=&Xu5}YxY$#V%LZM?)!gp8&Ng4YJ{`Je-`CTg^48#0Js z9FCFuH}ruT;K9?^f&I=!20%@}iwqEviNr>g-UK7kT3BiHEgj#R3Ym5fuT%Eaka+C0 zVjAI*vEjM8P7P+iz#6nswVB`Y$Q`E_IsRiqyNEbx5Pbgf#=Jtwkp$;H2`Fd7mgks{ zH4LWF4FuZE->(z*T=`UoM?PcT%h@#hrB7BV)IqhyJ9-gDN`0l|_4$@hn^u|z>EJ(+ z-7SehTMOP7d3v%ZS~zd6TZtrghu6GviQWmVv3Ah6>FcmhP!Gt zP^BxYC&HT*L08~szJiBR+ckI|8d&ff>tjUS9lbhkg%0fj;fvnJvI%iv&CiZS{mGY# zhG>1cr#7o0!Ab@UMxBv^gFG=2`Il ziqNWfxoGf#a5I2cG=}hU$LeFUr+P`k2G#SJA4UTC|71)B=?l8+HQ z?~zvQXVgZfYZ4%ezu7MG0bR|McH8~aC0yFbS3J2_5C}~j?riK*>K;-aotgN|{fpJ; z?@Eui>d%+&qae*bwUDZ#z1=X(Pg-Iy)ju~Qo(i3Kj{3AqLr`fVKf+;W9+sT5(uLiw zVaX?<_zQe>0C3a<$BC1E{>g(B6(3bHL^D3Km5i*-uJYa9OLNyZmDIZLTbiN2)mn>> z`zMS7qj{#P1oKa6O}Qz)9w>ia?h`V5buojn=>T#wG>W{G&wX8IwKWe(?xGSO2IvAJzzlfTXO6tX zIQ=toryd}B$x)FoE22pDj#R6h5#cP0#rcR9=sbp6HQ2Snnn#YnCw=|!P<`ylhrpke z(qXJhCa{SVSE0-apx?lQxeVdaGwA{I7cfavDr1wXH z<2&$GsIfY5d=`6RQTkb?;DN)+EF;j+i7P9bx(9pX_9I`=;)!Q|yNceE?prlA=zgQ@ z$~!u*LeYcp+|VDk^2VCz*0+&lV3b)>Kaem>m0XEYrIk{XxJ_y{#`)y1J0Ek zCiIY)KB3moDlkpouc74o?IF?iU8?_?oiMRYuFgS;c(2J|J3GgMsJr!qgW|-3_WVo8 zffQr_ZjnDiTsnQ^r_Ed)exaivQ=Gti@t3(p##_LWFz>6xrgzhEGMya6o8$<>XDbF$ zClB_0B-SFps=*)Td6?HBVi_h3RikP|B;|T46Zb;-jp^MzN!$(W60-H*zs2fj6n^Ip zts%DSB`V(=!I$_JxVg+7p?krol*ZxOyh^mOix9HGg-C8J^XQQ;BrO`1d)K-Ksn5Ah$bY2%bg<4l0xiM49V`WX@F%?YCDhP47H5sSWXB_xjWIfdf;dOi09my(R2&K}oPe|?|12hOcb%u}d`@l~k5>JOT-Po_(JneX}$ zkIW0_GyR(~6XIBu{Eww;|k`ipbN?b}fpc zlVbC>c*MmVJ1vgEF*3rxU%#%p{Olnz2`tdp*kcU|Na#WI*&&(0UmgI5+7jhlCX+}NN)yh2R*bBgbF z3rrjI$m5G!NvH5aZ@Mx;n%w1(~iCt@=dfXe^+TAStkGN8lhw9v1e zL6aa~=AE~qGi+)RmE9RW(m|lzhd&vb6qE>_H*>1OPO8PbL^`U+a-Dwb?F%joDRRn_ z|Kyq@dfUKbXEUS+w4fty`;3F{C?MsVgv91i`CCLi9QKb3}&icAjwyt#W(@RMfrYOUQU z4xNT=T+5L@{PU1U1U#8K8bOrEWQ4;Bh(~Mk(rbCA?WF5DGj)gklAd#vK6Ss#vqC_c zL+3jxO4O)kyb3!?+{wSgc%iYd`ZfVREt5nxqiF);kqi-eWpOq&7&i`Adc8)yY*--bm~uW`}SW6|9xCPjKG)@<$-3Z@@{n6`J$hv1j13Dm^nuA{@)c`f7o%---vJb z5n|bWoLBUB+o&iovz!i(k3qkTn?Q$yXO6;S;?Jpszn)Kb<^=P-offn`zOe`06+Y&c z2m17H%tXGp(fIMv;rMo7&2pbsGkMND&(P)QvZ}6q?@b8xi&6CB`XgnY#`B)_lEUD2 z@PQSb7g)YwOSBm!>@I9^ZqhCQ_y&MJXd62!tX;%Epia6r-F8hHgURFgG<{uTga0A4 zW!(MVwxn+&);#m*Hk^0`Nubz!R}vos{!~Y>xWiUzO$1o?ulOG7I?ebTT2GwE*a8a%cy}md!zj@8vdELw|emge8NrC>JnHC>}e!-4Aj4TMmK= znz_QlB4ub=fv92I%M31(M!-GD#<>bA>%SJtLa!z|?PN1S-d1xP0w%{B(*tn`rOfJ(dr&%DmLS&u z)<2vT86p9^U7N;@($l3BIk8Mxm1%IV|)ODK>55ENm)ADGVHbl^{2xOcL^~Rj)DO3F<>CxDo zo6RhtG3>df+f-r;^3v{MSYcl0zOzG;SSC-Ya;0jy8`yO^_rx}*0W=G?{ULd*g~+_y zQbTde?t2;RApn*0uT^A~0Xa(=YT4_unom|BxTa?(MxQGtgxxM^beeynrDQW834<79 zw#wz_MLaMpZ4u{JZni}p{b45 zut5cUBmzUBieTgwV#K0%=5tJdMUkNsX_!yrT_5f2YaG0eztot-zxP=RZRe0x$8NxJN_z(4sPbUfm*`8Vh(%gB9pklIN=nNeJ|^qGl$EJdpS5_%@TT$??gP(Pg;cmj14H^DYWV|kb8knER_J~+nASK(4J6(1u z{h5?2*SXB}qOwmb7r?rrlO73fNC^a{1Bige>>xwQGbv~mDYE!;p-2!Pn5!c?ktcgI zzb8NBl=oLHrlfLfAm0#o^J;CWlQ63;CuRv^eEoS9wsAFb*rh_y)V-4g${zmo1YX&tg=e@W-~=g`DI*>4;FGUzDHwzi%4C30%4 z(Onw$B`%(#C6&aMr5uD%6*qXpDs=vGccMt;pUd`A_jPvO5Ntu6+v?`4V0mBUEV?q| z7L(@tdA)hb6M=7Y|Qz`oQ!(lVh)G+tx#$AzAN zOO$0)3US#~U;|p9%ff}L!)(n6{~&DYcv#+lf$sz-5un}NU9ug&kHBljfShf&%5H!k*N=UQ;y z>(^BCg5!+MBBihx^b7I0(5J}9SI~NFmKgS{%>45E+|+5}uOez1dfE)8HPHX+Z@ZDZ zQMc_mdvjffyo>}Nm06vcRG>dnBVE-AijX$v!4EQN3~4MyN#e0w$c*iEtE*7qeZ7ZpY>aib_z zGib>pHMpy1V7XLGZ5#TY*M5)q6=Gw6#c4`&0Hv!DEkm5ptuK{K)}`hH4F(kN7|Zh; zWj1Eyb`dgE26vX5+f=6y*PV}BUu_XIf0cPaGDwGK5QQ{NeAp%+)j+NUt)y<|iHa&QY z4N`>?64*hWaL^H588839-!iOq_ z-@D~Bw#;*KteZD=gsJ5bQT!DiL|QFbrh1qIXKN`Cm&^8d$1oGW_~gw;VR~!#KGp%F zPa;{#u=?Y+sZ=i$d`Jkcd5>iFC3Los$ zO<%#L6crf(#lgjvHV zL|SD0G2p2Xu#^N3bt#(CO@6o*Ce#+IoSoM$<+5r5BexGs=+3vExf73#5e*a>Lwz^z zrGNN{`fIZu?A8_F(SJLtfcwSo=Sc~#GkH50^Gn}Zu zN~1@NNUu5>t!NAzUOY68H?g5NDM-Q%jXY(A zj(tYph4h>h4RR*reHe^20W|mI4+waU~miqmR`>( zLu9#|xm|xk_06-{Uio+4!WAZ$rO9=eJ_q6I{U_jyM4{7^k|o#Sab$h$ z;xZ8bEajOwNz4v)?~LCMN=Nno_?R@7m0&GM02h49Mq&Yz?-W}SliNB{7IjJgS^wljXoBJL z21c+VSQ0|K*iZz{A@oG)xMYgw){8(G142kMiGV|Jq^zmPUQTdBC%mu!WBpX`>2G0C zR75Tq0XEXQ=waLW84Wla2fZZG@F*jU8>R<)O(@)hwu8G$)k7Cq*Z)ks4}PZLkNKp# ziVg0=P!}5HRs4R_Jy7P?{n0c}mfwsw0zdk7c-oAvza+M`C``qw%hSarP2LAm8Ow0% z&xfzAVa~Oo7zuGKeL^S+_MFWCP(TdK*f<4U-t_Q#;$q^|#?`EFAJDjXdfq<~tpI65 z#}bK>IrVm<0ls^m@tm=f%D`;NTT!fzQgTG4e_jUnaM^^lXVVmK?A8z2AC0Bg!7{hi zu5bc52^LQ^G0XYhnjXdH7Fz4Ec5eKU{8<}<>CK4f75bx*iRpQTzl!Jk zVn%@s6;&P3kjT8)Jisxu#{>8w%lpiKIXHLtWLU!jRT|Q-9vHJZD{|Jlf*dp*kcasY+D;_J!>X$4OB)a~ywCAig*S8aOv>5cv7A=l#|3H3=rA3?v;`sS79+S^RU#hZF>V0V!>}+^jlwf}&li z_AhNOqIN~U(t^=nu$Ob7X^HPI-RK`wye&p*Bf7KQF=&ciuv}woe68A_Rxt|Y(~rJI zv|Ro#R}GLuhQTUE4o)@_&ORkfU3^qWWDG{Ak4qiby{^AjkgEUfu_C(mGhFQpyA_wG z&WOSI93Z(ucCdZA5a8rFJteaNFUOO87p-8wFXZqncA~vvp8JwZ5LjDJV3Kw1Fa}X%R z7onfbzw~$N89QBar<=2^ED|b}<5sr$UFfqOFZ!!X{3 zwUQ!7W;-!0)$ci6m(X?t#w&|i4+9R~4h39yo1wY3PqL?@G?BrgvEjtJRVSQzXn&x5 zo|&%}Mzc`oUEF^##(ZgqUj@G{eE)UcLJ#JF_t<}_qK6xU2VhsQ-{T45-+udgx%o>! zoV0t3RphvzLxG%Hpwi7IHG^B9Cd%>oF&P3!Lp8i_bq;TBsQrj7GKGrfBdnvku!MT@ zyZub)#r7M3r;x%=VP4@-%F=i^my?qBe2^_5l_V#BC{y-C4_W`l<6h9J?HhmSBIV#? zHs?F<)mN7xW&CCg7O#1_aNRTWl*`Uhs#HZTZNxYScq5w9yup(uBIn8%Ddb1;5SY#V z`;k9tIhk4|FLJilhmjVK9{t?G!2_ss(b*^&eMdgivGSAG#y*S)D*TQ69mqG}Ve*}e zkVM1-o_%ETxgDOUzffgEUVEh?K{+)U^YJX`p$o2%~Jx?X2ZsNw##Fk6h6 zg?KqYq)526{#W8k#pq$#th+|qwAgZiYlhk+>|jiPQTFUJW)KC4)2vL zg+H$wT}tfO8F}aKrB0kV+Z=RcZhL2PZ%PssZv-&b2;w)?Ua((RLmmqS^wVZbCw{WlCcj-;@Sd(K>3gQ~*BAoVXawBNq zV@JH~z(_k~PFp5h>G0V7$0xP@kEI{{qG@-Aw{y5R0$?^pH;`rO7^tGu;pUpz(I?eiIHax zuu8v0y{jl^^V5v-z0p|>?!-VBa3BsG!?{;fO?`m8i~~;T)VK$QFype+X1#O7Y7=Ma z)K8Nm2?Ay}vBNZhH0EWKePzo(476&L>M*lM-?$I_dKZ>jJgR2AdZvJjeeoe7ZTAtp zY>o0sDNK%QSfjwn2}Z&5q6&o(lL-8eT>_w7PeV5AKMR4szaN-9OzWiHt@A5Lqiid} zn&%JG{n6T50mG5-HF{ghp&J%n_ueV*cVy z`2-9vQ3^GiNRv=_dA(kG&OdhF<72bxET8wS+@Q>R>+ScSa)RF*C0IfpS<~IBC3X4% zKE$C-ULElB`dzb0*As4K2;ml>RioJE#wT*-(u^idiy;<;9}?xhb{$_*p!CJ8FB=>~jE-Q>UdO0ORd(I}K`A{%D#W!axW|n9Ee6KQx%H%+FQYFu|{r zJ#mNStgLkjeY*+YoS^}1Jc_+DN{*FEuIW7{YcIDfHy;BVQTWC;u}ABQVZZ+=F|d>4 zcKI)OjgMuwuJ2xq<8%JT6{I~D=%!CH-B;^Fl-UwROI_56U4qxiZFbec(P5m3SvR~0 zvH*|5IhgN%t~gVI7@^qo_#6f7RX3y4;u#NvmRhK{t6AV%S3?8I12f(ZWOL-R_4)?z zu?sUC)xOq*Y9!|w!f{BcZkTP~E8jeM23hdL$A;(1HVnDGNuTpzAia$zm^O4LAaXx@ zujsfX=<~Kvm#0oMNvMnXxeF!{YL}u*>>`zApo)%76e0N{+4bm6a7iH)@PSucN;+<2 zmRX*;CVx2OMKESLbyj^Ujuy9SOm43!I%Y&#C%&6#X_3z6ny;|d3tCA(w4Y>eUHorl z%24^ZbEA;vs#XU96+=PTSP_}{DZ^jZ6NZ?b)&0YBUGyfTdc0q1bz^1i{M{Ds+43OQ zzk*NpYv)Tbvfofur!yE)!vcdBE#(3g>{##a@bQY;sS0IqV9z~bRVO0o#3i!smT1b{ z!tQKDYb%;r^-l#j4$CFYz}CAnn#MCvq@Szi47gd&T`XrABrTyUrmfi(Wsn7dn3k%V zK|x#dkYe?sURwyf$4X|`D)BB8&qlh6^9_Wi?!*kZXSu9NMKHl~G88tFXc=CCTrq9t zKPNM6baKfJdSH~jJS8ZBm(`a-7OI7`2akytwfnpT+C+`itq9*3az+7AK8PiWv8${Y zxgLO0KKPAU9`9Q`~C_Ef@2SgX5qEC1k!D&3Y8I1!UJz;D!FO$dXctjqH>##t_YBrwSUY#3fPG12yFj~?#vc&G2#mYS8aOdieCY-B#%d1<4_ zlFtG*x204Z>3`#CgLB0nUcU1==1Glu9ZcuygW3}KZ z)xnVj@Z738MxB2E$A#SFle>5X)|?wRf%k-E0?mK)H3%Tm?#E$XZnKEqfF{*QL3TmC1``583*vU6nP_;3i1u^ zCa02TeH(M=`V?^vji>T^JHH&SUiaj0H)y^u856mOuE-3bC_@X+&dkUL>9AfP6{p4p zQCc(L=tCc5XL}AA(5r=KnyN;Z`M(DIAt>rw*y%e+eN*J?&#y{<&$9mo+&4|@{iULZ z6!w|LM#o4c7cW`ydQjtT;{o6WCdE?R03u)S|MsKdW#(6U$mk%wR=YWf2QTz$&q`4J zQlviJGHgr%F$`^ntcVEuz_O-;{Dn(S`3wi)nIA8v{v#EW^8PI{tAyj@Cd>c+Y}P@# zkouHYTWbg1Qn4UGSR&LpkBo5fXVIp@i>SamW9|(J2X!dkOrIn1q0jhA=-xaoHLiV@ zx)gof@>@Fsi!vgnD6F9oqe^8-2Mh1(V!cL%{7ai_YZw5HT;A@g8XJ|g>iTLW=#!jft2b8HzM!AE?G!3oR#0{)j|hAU z&#G?x+}$sBk27yNi-Sx&0UzcoZog2TDRb6x^IyDHvV{Oa*^W0f&m2pS)&S^Ny7`MJ zqDA#x7-`&2OdXooEa>1+-5m1*d!5q<2)Qv;949SfF-V8=Ogo4^x*tpU(U&BI(_=YE z6wx?YhXbDOiu7n%Bg zZM+4|`-eplsb*xl-zQEO3HL}Kc$AyN@zY^H#N|wBkq){xC-jEAS-5JF(QFXOCU#>_ zXJn;k%@37%l&|?>R|G!B+}3_*mIZ2;jrYjr$rS&W9u1u;#yydHfde&QA3w%LmOK}( z#Tg+e!K&ESzy>I!yq+T`X88ssBL}x%f`YXo*JjieCV#i-p(o$xikD+8fus1fYNms> z%Yq-S`lP-Kos4QP=;vc@V-={@`8|^MFrkw3@#8jnq{UnONBrlGi4mu&gace-wPRtw z4m4k)NDbK|W21WhrGA>m^kOG9E~LTl!_!HI}-kc}-ZEFM5&gD82tZQ^Pl)DV> zxmvh*e~K+moC-qcnCDJE;94`;8jm}#!+zfH=3*g~hjbcBSQ{jJ1OywC7{t^11^k)x zUei47DC<~j14~PW_#!G-7cO7X^avkma#u{7Cr$2AY#kJv$BlMs4{i>e|I50>@*prp zB#U3VIg81};Vh9egPg|HZ{cmi&d>KTM$-NEKN(fOzM&2|jwMALqIK2J4c4Y}!4#yx z8N2J%M{O{hd*(ouOc_6j2T{2&nvMeIOfc^i1{*7)*Zr^?-z9S2#~V^0cLY%-W!(eM zhu*P(n5!?YIq3KbJi0wuqhMG;xhSm4h42mQi-x7_=wkSI93{+_71 z1uO5EJ7+IdnBsQ`MCVNXkt5JO4Jr9kr)hrukUyAeO4Iy|M-PrO%y-K#c{N0^@^xxXG2dDFJy}fw70~Fahn?dhqk%O#S%y*}zNY(=grh2nRCLj0bn_UV};g=|H(O1tK5UcKt0z)czx% zi=wx6C%x`REMsGd*Qwxci1=@yFIK*=%AagP-0W1_2=m_n_ryy|VYOCDtii<48Ba0n zNj&C)vrzxr7w|d-q6>6BX93kg?8#Lnc7lvqHZ*q+>TMJ;)*L3^?`5X|1VIxDlKy!z3}IT-l2p=JO2Q_p(8zm?`Pjb`z z!lLo$0H78Pn}Xo~uCxTQ;NZm}OB9LU(4kLFLVk}uzNh!X$4g4e@a>vpdGCLI%LBbJ z@w7>lqKB}x+nOf*oSALXl4Qn8+Tu_;yVoe6MBY=HfK^VhRi&?9lSr!x^UsZ_I7hcn)J9dW07=4*R3vM+}8#W?QP} z#1Ttck2S@NfL~kK>q{@rfeNmX z?r1Tj`}oO{;b?U*?E5z?=Kf>UTKOcoYkCf0LuBq$%O}e~-ES zjK=5{bL#o9ec};v3>&(0&fL&TRVX&pYKD`)v6W)G5%!CIyR%-~E4K5+@ZSUeNX@4r ztWDg14z-$d{IW@W1U|{hcNjXs?v>(2Lcrf+q9+wT z2T~7S<3Y2LzS5Tz8Dgq-?(e$-PX-7a5rOxe0ve1Vh?;yKzE#o!M>FYC407Ax8t+3IGB|tov6DduoNU`;4pGik` z$C^97ZdGL*&kzb7gM36bO;SGSIK*Oo&N>t>^X~fgSUagA>QdQsDw#(I z$W|ivPlCyFw&N7>3uCL6QaknOQk+%kFo?4>924<;uKxJHd9MHGUp`TA2r*chrIQ1O9X0pygcXNgKM#4$Zb~ z^pu*L#_xXPM$ei&5~Po=)W`jxQTWk6icUKQ8Tur~n1_u4FjNALwNM^FCz!CZ)dIY7ESm=6&P*CWUi(QnA0ZjGcJM zdFTU$*@r$?!lhWOsQ9&;D3-khYlEt!?>GW=W;?KG)-(TCq@-0s;`zklpopuBHsP zK9cr913g*rjh}=MZ5a=BNhJ-so%-7`jx*)n=G9{swY*c`&Rd+NEqk1LFde^3m1<|C<$Km zK_Vl(x)Lohg3?TY8A>1DPZ5HQO7TE+Oe5eqBF55bJ=)XoPZ~p{5=$0Xrf{=%;f;Exa+3+dc|G|f({#X@+GpG4U*+nypTAl> zroa-D0uU7>nhnN)CwhpD!st--VV}Z|$073TGhK z#7-Ht7F)A#=tV!Wcl?S7eX^LbrBvhIIxnT(Q;dEr`-)mgBH@jhnx7)8)3C2Rt5R&c zxwwl8h3Txvvqpl;B9(9}%t+u#vtj9p7h{!tOdt0fVOHB1q-M?c1BP!;MI%hTYyUyY z%w^7#aAZUVR5b#KbAdM1c!T~~o^)nGgbZ8v3jb_&RP(`_WaBR(mB3}u&A7L~O8)mB z#K6@9Fm3T#+#XoWBqW zVO~H6ovgQ9I;jR-fo>9%XzPP>^1{9bWjwAY+ROM|o@+cyspT8!rfd9he!-M;2PYaU%0X<>%mM3fLU6OnB1q! zdY0C6PXM_~;awH-HT2NQR@C0ggy@3#6&P?a`Mh-;cb7OLi6&m)IF3@4s>-i#!xku= z+n+YgXS`WdK*WC>vW`m)z5hRo&O4s!|BK_-&dSIogd*V@ea#{>kv;F{y0*+*BjF-@ zXN1DF%AWUg@3ptgLbl?Pm91QvMOpdz{r~yz{rJ4!=bYDhzFwk7NhTVr7#IrZw25k! znMTd~AF0+*<2;y@oUDX(tNvampD-YRLnQB!5LHDw1IrH)A~aE1H>#sRqBIE^7RS2X zpqCsXvY2FAFZ>5@>_4}DD9Jqc6T#DXs4P% zKq(LTVRGh2SY?i)Q*Q!R^55M&xoD?un9xl^b!&AQ+6-F%ZC|}2q1^;8VSey?Ivcvz zCbLoT4Sl*@zN@HRF5Kg)-j-^!@%d+h}phqH*G}WJElC3ZgNCj!6D|)Wyek~pPb0ZUD-VU9vqUh8vS8Q;5xbcfK2&#!0^)z z_#qY!#Y)^@!#jmcxpXod)IOZ(YfC7VZcL~Kp>_u8gA!3jcMi>HA&va%Kq>GG{)^qP zg}Z<{e7*XCBE-iWwOB5M$d#j6olVD|ovBC7T0k6AJ`OY`YM zA+J^_Y{X3t!(4(41~mG|72x}BevjENNg1IlZ!HtKI*hf1O$4%{6=i8}!qV?&7Vv1j zDv8E1tZ8#V+^cM6?hrwJ&#Cl(W^TapQyi0IQ1Z7qbxy??Uzs!LH;aiT=Kgm@H(c+1 zB{2lt8WDQll(0gk5`UZMR^Zcl?+N2W7n#~})SOFBf({)RmwSWZk-N*}%fjf7)IZ=I zUaHh;LxVG(wmSxzH|W2v=0oPhn-v!94iPVp>$ZWc))UJBNC~O%cIAY{3S?AVFIeW|I550C@&s;Wr|C(N4AjB|@zDQ5C1sAMU#E zceSe2B;+y=sQ6;0!QwKI`a>jGkc_drHYH5VgqYQE7KR=n*)HmiQ+b|k33>T^rnzZs z`;HUv#*dM0vLC;J0F`Xa&wk>>S zVOIO^ha7qEH3ILlU~s8jd((kIO7pZFJ_}IVaiZvBt;L?fdS>yM^#BVRU(ZgZrjp4kgYHwQGUSLZFr`gF)z^n+MHp|9i#7Ft*ZHSlPj*K^@j-_4;8Q=!l_-)G8PWig#i^h z`JF;4i0jm*=7|+fJ}$+<(2RQ-oj@(3esBuHN{pStAb}3x(nLeA&{YD0dxBj*XjpT7 zSAEA7*9$7hrq*;lJ+vVFCbHsxvBK~AnAxXCu@UPmkVKQtgB{(xKZ=M3(Bp!^QeKu= z_j_UVg>fz!B+I_T>ZirIO6~5qPoHu%1u5=FH*$yfXh)r;YcO7y7C3g7T^FQY6{R)N zH>P|&I29LCK4;u+f0?ePx;TVa+0jSulkYuOHz0^}_p7?Gj#d1)^IGP5IW_$iq{S@)EaT#VIDxK>_56dN1AL(uyPi-9HsUlzRhLxZ(~ z1JlDysnM4U+kPCmZl;;aoN(6Z`LEdJE}WGBAG`5zvE{b%N|P)BipVt>un+$N@+Ho~ zT)xZ&|IJvS(PB}>AB=u5^MGR`i4>#VXP5u5vKfir~DRhzNvDyaw<93O0d=E7aW+25m6A@QlQwq1vI zQZFSYaU^cB*m5Re12#|Gvc#Ba14ns%cPz~F9qGes&5Nc!i_bwo8~HNt!@zi;kPgVL zfYoB_S$IYF&qKyo-qZensr>o#m0& z{fd)&Di*%AF^ZTWC0>Q=sd09KZdbh1a92`CREhhvY51oM%{1CDvr^F1Z1FZQeGg8g z@Y>h>=jE2dd!G&|cxf*b{&D_j$|75Q@75NTPPM0>rm4`?fR7q)J|u82DaH>X2c_j!$}=b^P&oVe4QeT6r*4@xD^Cd2gVscQr=@@fpjx#gX*I$P`oCJ>EyvMQ=M5 z@nmkhn|^`A8n-f=n&;?sKz#)o+R8cIxZ&q3y&b_GkV7NVwB0% zg~_!FUzTYMkxNK)_Ym6m`vAAo#-ILi22V`WA89-qs9N=zY9XIBn0qME^^Gh#%2>Bg zXMZQ)QPR*`rAWHN>5kSa7TITbQgo@?%4FmV!?BjfkNwvn|>yx0h-DqrGW%j@9pgxs~Ap zpIYGL27nf~d5FusUC%(O+vZQUti5H)5!a1~Pr0hsHv4zL4aDVmEdjbSqJPKQ08xW- zBvA#LQs6nPKeFWSqu$Iq>XPZxJ;~mH7Rhbkt9-~0Gn_x#-d`vi*=nvOd?Z1+tG%!i z<&`#Gv|=AFy!L9S07Bg5Yjx`TbNUX#nxf6p`JBAa?6g`IDvBGM^rntr#vR8z0Ur0t zRz;2}(9*bbmKVsagM6YbFhF2vYPs_cVjX7f@I8XfSFQ(04kQeMCfJN@Ys?6O%FPu> zW!x)`H3fvig%XIp*|>|-SOcn;av|guGvsv2WU3WZn%!Im+V4xOo=xm62Eyks$j7tW z-siv@``HN==Jr$LlER={BvnM+-czU-M*y07$z!OmVPfHyHMU!XEMTpWyx9qW@R3KV zwoc^TEJ!ykZ=9h$?0!vLoY-dAWQQo0Q=hZQxJxgKMxA}r36*m)XJ_-Ok=;453Lkx3 z5ZE-45Du+rwn<6*)V9*gEah*pB=fHS{mtpYyWLd(@$ymOhUvRX1|tAH@LNwss8Z5F zBKY-K1USFKr$A@c!1VLq-c=#V2$06#a-Pes;ca{%u}3r&S^N`5VfNjLN|mf(AJPmp zQu-Y2SVT+;@ubf>*{Bnq8ppf#*R$buzvPXw-<1eCq2HC8gW)JTO62XsiI8KG1P?cNxOVS3S?VM3ifEC!bx#ET4m`6ZQZy(_ znS}*80{^exSpabQe#2xsG;oyCEnAT%%Irw&y-9<`OF^Xd_Y?e13~peAYe-bz2gee2 z4EzFz35hZGX39se$`7OnWv&rnM(7zQF(UQSK_txYg-jalu+4G|*ZJ0!y@g0nD>v6u z&=mLZ-3CYEmp*ov%71s?V&HqPD~r8S(&pn;4_(?Eu!^Y41;IesxJPB4rPFo&+X_1_ z(yIR{5CyW>3So^laQo$hdS}~4i#M|F4b%lAqoJ!w;po34Gvk5T#`!^Qlh5hZ^|B~) zl@LvzJ0nfo8jW)*qKiGmSxK6A$478r(er`U(FZU2gdZ#rHvZ)~Yp z&<-;Jt&cNl$U34*U-7z$(8vg%Kcd}uw*PKlCY+%`CkMVpUt~a<`{i|CqzFP-XT^)ZE%?%rmoAc1ng`cm%XR-&lBJB|NBnZqlqX7S3T4^t0Zs0g6kI?N+!~moI*` zM^)r@bdVl@^_>LtAD}gzfw0{12&gWye5)M!)`gGSINKX-$%5{{zBI*qMuJ{w^SyqF zar1392j5r26JP~6p6<;y$0{Z3HH-W}Y!&q6sKO#&=&-lYA;c`6Pzf9lF5N1s&%)jq z;dr-seUA%wC;kbcN$8Q=@ZxTnms~ntIDs5HrgGagnbq{yLSBzqwr4Q2MUos?zNWJ_C~m;k8m%_R6mj z3N1=>)2KP6#kn3@)!lI6#)pei8)l+RuR>`T{$_bP?RcgwFlZHmm82V8tzT__WDni9oxGJKB&HIC2Wx25q-6Qpi+-*3_7D;4p;M-+;< z1isv(Ob4PciVtWk#+K>3Olsx)IFKRBse;Q)0W7%`d`Ep-VS&3%*$Ebvuv&V&n~Z8) z&FZu3rXy33$+T00JVjGlQ@o%tm3z{kx?O-`a>+;fN2hZCIisnyF2S?)*5v~$|KTF; z#>`)p*Mky+SgF6Z8T=U8ZJ!rU4agfSknQB|wP>q&@?ztJDHkC#+yw0PtLMQV3&?YB ze1rvsF;|6r=+(trNHraxN;d^(l7Yck5|JhROo9*c<(FV1u7kXmZo&wxX8Y9xt*)oO zNJ5VMBjUA)S?5f6`>8PPDP2`j#Og(F0`VeaVDc&?LSy*G;g`4i2b3{c+vRU?8Qkl6 zYPHEG#pZIjLG6ofPDSV8g{CgrWAIv6N_>^-rs|rc0^fn)y;D6>!Sy)*8z0`X&E4{q z&D&(W9*|;;kyHm>b~jb!PDsnx8k>fo8ng??!>+%OU+`}GWAE{DZbSYi3@xgpiDy>6?ouU6Sxol z^nu2a~L4q15x-zti=Fh$B2CWHXum2^o7^)_^d`DHp#P%Op#vZ#`MAUsnxs~OyS{$^x9 zh`J<}%FItL@BpnRiWvdK+h|@r!r$SU|8sUd?FVC$wVFUT9WxKfAHr2T9Vzx7YQAHm zwRRNqAAIOXTVD8cx41H%Wy)T2)X~$#ER+0{E&Fu|WsfG&Cr&owIE#h(k1`1LUz45WKE~&n1HN=ONQ<8p0QwyxN)87*a;SHMw z=L!`l2hp0=HJ%iOUA4Q5FAfK!FI|Y;=b+5ykv@yb71yPOHA38C|LT@}>#vI~mwnR! zykGIv|6uy~Tz?FLXwM$gl~dx4eb-_L>vk+-E6ecQY1ISjnq%DxW3dwwu)H>odOWL zV3DDDJ`M6NN6meN(u-uF0jsh1Og_*7%E{t?&TAZyO(c6Mg&}+~)^Km8us<=0GGXbJ`m=Zkwp>q{YV{~7p)CBC;Yuz{ zC70y)>a&A^*wfy2=2$mV=76E^b}UN8RK`LF1+Re5t0{GRUPrGx11QJerYR2V2DlMZ z$1^$R=lP895iz~(f4L)eQ@X-*%@td`Z%Vc>n$I3S&c4e{OLb!WqRY{+M-(GO-6;6O zQgG;6PqCt$B`MqnB8?}<6#@Xb#SP|ALJ;@7e+2|a^F0KUS#Zn&(nPokF{QE<39d*L z*xZyR?@G2>c(=J@b~%U8t;w)~R>(d9KG%o;&?d-(DmcRiKSm(a%TE84zBXf-*bc|1 ze&9kKM&A3@;c=dO8Tz)%_wImBdV$pT*#|wU3}{!hyv3zFB-%IKHiTAS9*%3lGwfh( zGFXz7Vd*T}9jPYX+X$5_K<3+)-}ORK@*Xxqm}9M86M_UY$cTK~-k;P9IGE$T0F^D| zGYCHU2k~2bkid7_y8WehcL*o&OPaxi!WH=wW>NYWQLrI8qT55nty2Ynt`Hb}Q^bDt zCZJyEExb~MP`Zs+Ft;qVi6Q(xv!zqYrv~!(WUl_05c0WdE-*rJ)#bpR*j6h^3mb_R zUhifq{kG$~SLgqTMyIvL~XT30jMelknK|FM7Y2eqoa? zFwP{qYEo!ssXkw07o^MAzxDJ#V(Q|fW6lMCP1B98t6mHx5sR;Tlpa(S=|b_QX(!jI zDfSh57gJWG|B>+zYbgl=O)+jSvQVHxyQEs_Iz0|ee zUt`fZmUay-in_$FnQ!R4XzEI-5qwAE95)s_&VRcu`%OQCh+1LZHr8zvgs6=8Vj-|F z<2d6F2(00d`S_j;j#ehZq91i#*kGYFM0%c;ZgWcl))0u2Cq46Ihl&lA)QS-`bR~4O z(uI*|?VyQ=wW!MtIwx=7vFK1hqfNnL*oO342;F& zEE})77dAgQ7hk&CaaDYGg#+|%38KvONXhL;v(bHjs}Y^Og-n z;E=lD6vAZ$SMMV{)#b`Fj{jDTS*y~4 zhC5ml(p{xuoE5@1uxDSn@SDEp3CCKDw%}F|0>4rpKxf>^IT7r%*>ldf7m53JDyM`S z%B=c&+T35`oOyvNQXnrcc7&;-i62pn7l~Mxn#4;jPx7-x5s~RxHU?kZL5nvH@^Qaw zx++$KRZTiZWUf44FWoUqh8fGxA+MgEr>_we(fsV}g-vhx>D2y|$l^RyU8F9|x{wH31b6BQz*GREI zyY#}YlvhWCTPgQ;THeIcGgGBW5B6w z64}izM?ySpm(%$BJ5bat~9p zh!A@Jk4BXKL2-`NI*%4_i;6FRmy-?{i~{$4;;Ip7?mjDp zd9&u4cb=7wAtq6$N88~*C09$JYDsmTe|Pa7#Z%HG%-losqRwU3d>s@@@+PL@6p$Kj z3-=bs26sF^1&)wnllQp?!F1MXigx=Aq8x4|GesQUt-0*Aiy z4!C~!`b(wXC@L(fsA1Br*j!`FV!2fV-@(w3V-W6D(U+qhR)hRSR@>r(`-iK%2`A+A zq0>wcMnyUCZ%Xqm-8ApQv}*OrvgZKI{8s__44blKsOyd zn(@KjjQ!g;Nt)O+=4~<7<14nl~{truG zfW-^p$5NkWJ*r8L5H{oEcf6O%ibLGuw=DIk}ho1&wlPhtCv5yqtM>oT$E=Ux@pN zx>hzArTZ@EX*Fr!VI#YVTJhr}-c@|o13r9?IsQ30kZr`=Wid-~6f*2gl*89=s`zZ2 zo={wdJ*%AOteCk`k1lDHk`?io%d%~f<9Nwk-iDzw`)o|Xmm_M2Xr_=K6uiIV`qhbV z4RRG^A)a>7k}@Go2=d27SsW^{O{WZ&hV`TZUZ33gH`0=c6PwjUAcu?E@BT{-ZbK2- zGlFiRZlS4y3N7v^;pRIla;|l*^@q5TjRR-oYDans6TW0b- zKp@DSy+9EU5+fHCE2lPFegSvU`$kW#S8OW!Nb4)4v%eVB=axo+ znFM9AuZE$jSG%ji{U?(@AUia*tebvXaW7+Q;*pS)TUulTv*!geAj;m zuLUAaL5X^{s%L?J-}W#Q!Vi~eryk)%-4}!{FC)1Imtm?+M357bwR%P}?i~&Pr&yCy zBb@Yr6>GB}I1g+%O~OKfE|h5JLsD%8-D{i|+=n#O2qEov$ty86*% zMqn>aNW9032N;Zo5_DHtgXtYa{VGx#OZBW zYF3XRhp_9M>xT6wUTC{#?3yQXwXyHcIE}FLiywA}{3DGE2Kh`J>#k}lzV!NcU9f$B zDvA3!)w};_ZeE%-etKEwNQdnCG^R@I0bRaeR=^RqCVm8?85Lj_gHXypH4lGo++ech zGaLS?dhx}3Hk_T3VKqO(dP9Inv2iQeWpy*s2w-ifhc#f69D5JU8Od|s%$y}n8tO!^2y1v@?7X}gA z`d7Y|fEnA6|GI>YF}Q9W>++bfxN}iJUYrMKq%V(yGg@*vVfU?LOwlk?Xzee82H_;% z5j4F|rDvf;BmJ6^R?c%kuIS_kV8pLWX47B)qP|?4U_fEF9a3MgV)Gm4@#{k_>i3|Y zsP?+!DRH>u8o}V@8_96&^FxQC2>B@72f6s%iutToK%!Pb2|dRyoXfJh{k-$7b$LZA z|0QrLN2&4ng6zV{r!y*`nqH}}mT3=s+Ha{aD@7s)lowydpV&qy6$kft=ox+Gy)Cg% zTVZf`+c6d)`fo6scU7c|f8>?GpX_EGC5SiFa8nZ-7zGFLkwm5thTuV>Jt^Xa_o2h% zLYM_+a!Q@15cPuI7c8@nskDQFybNIF<#|^>Wqn-QLJFZ}RvD_j6ME7-YDGolN9D3mOShK1rD9*XkMUn9fvA zIJvBpZ(VqiS-pVTLq*fQKb6K=+*c}dS~Zg^AgyeoueZ5>UHK_?wz^UEPMwA+^qKQU zko3Q4#T@SAa_!HxV9tR~3~sa%;6U23SF&44$2G91@3BVc33W~04uoP`Im);e^Kn-C zA{Md99`zMT$f1LguPynyPn;y30DNsMTy_H1l^|$(PZ-YmFA?!gWc6JO#Qqkdw`(zL zGVPX#P!{r#VVoMy(S|$g&q_F{TaW9(Ev$6WZ}@Y0ys<0!EnPP$t7nc`fbc9lNKMf+ z8KoMZph7*h#aDi;otw~ku|_!=@p$Y3`A~O9Ez{%h)nE@nDx8wH&Y@WK6NYM9{sFig zM(SCX3f+ZP7vE`JtAe`F%jwsRySrZ!?T$M`=$7kMBw@xi1fvHBRzZ}@ci!~WzV;65 zF%I@lrS;CK z%1od{x|~*SKBAYo!)VaLvG=PimW;kD@D;UKJdtmMA+kJ0<)3Vo`FX;G7Law~sX!}r z3WY00IiP7!=<_mSmKIUfUiu`TURy-_@a;whyLFXM?^9SnyVbYQ^2UwEw68BcUL;y< z`*A{Z8)O=^w_aAzTjA*Sl3JPZx2*R^x`^q7NT3CVScY{FT}E5UkmOi-3{gzOJQBo^ zY=dwh47ol#F56Df#IfZ-y)MV)()!_dEDK?ZnBt$9nw;HmQ)a6Pfdt}sxqIchS<<`k z|KHXB?HLN)c~Hz{K(0_+S(?8p7Ycu$6tMdE17X;Nb^ENUg*qB5@jO(4`KV~KJdzO< zF>Z-;3T3M*yfI(5B^zk`bB3l==Er{qv8oKnM9WWiv}Ty&tpEOT_%Hd*8nK5*Z5DJS z?z&M4len&sD|HZCY+2GJ{S(yBA{ZF5vG&QW;Vk4?`6aJ4ij#?jX-FZd#^(DwLD+jr z8-l@9yOOJ26}=pqpTI5ilv64>f8oGGs_W@nDd&&TqVg5@7Q*2T*FMoBo_+iC#3Jq! z@ExJ;)^$=?tPR}2$y9op;8L+UZ&)i@T{6JOwbN;v+ArDg%}jot*YFs3r&VGOb3yDs z`V(BBVjEL|HZDQ>I2*42KK9biWewI+tBtTX`*Zfr)!e>Fbe3|b^?W@g;0!ap3i&&L zZ#(?rmU8~v-=&C3_uoPNoj0&yM|e0m0B85dXFVd0mzimszG$^B`sVjmm3Xw!%*5A~ zbT6;<`R?#=T$lho9Q^H@cy3YU_KTiug;0kgUQ*=Cj!Jx$_6&k&W~ElWkKMN4jRNi4 z_Od2siMUsPxRKs{ZKax*Dq`EZP7*_Sw8TqD)g5z@IS^~+5E?eT1g$y0{eAtX2>1|d zPX>=jB$|(g^B^_SijaJ1p73l^ve^xe22$83x2QISR{g6sJ zp&N9(M& zUO#H4!w#;#OL8*w<$)S?bj>cAAmN1ZA~qvs zO~^wJMV*~mR+9zqMuX3S$D?=;;;h?tI%q2Ff&yYB16i8TE5J=tMN0%Nty@=Wg~ZW+ zQ%cWX`NVS_!D)M~N4Mca&d7iwcwh3!V z{S490QB_N`Xa_G@`lrVie?KM}LC>KWqq#jokpx+xU%g+USt)6Ui7$TbAJNV4r!JU4 zd_;0Tgus=U;Tnq`8&Bjp>D}pwu;5cI|THW)||0f5w;V6&Rd_cf;3{O!jHk z>6tfBd=H>V_UHW`x<7fl_2@m#;)PmtrguVy{}xAqYB=xoKR*)i))Vi>)r)#OwUr$q zSPDbi4k7&Ohy&&-v@bB0vwZN@pe2Z*_Z(bSC0A z-E5Tdd4e)hd_pDJt)RHyF1wT$n}09?Gx*xkYq7aQ}Ov&fv?A)7g_jlqxoq!YcN^YHAtZP8PRIIQj{XA{TQy=I z#Zq5R-4!eMn(!K**%dV)efQ;mOEPoB!4e4DvxzW4DmRP;)O_r-P3e(@em&Sl0%h-e zj3(fp+%g;DhhL00<@tvd=?+Ko*dJa(DR-V=G9vaTig7yLfSbbE1Swn*qDdGTOwsTrzY_DNH8%3@^9fLRNb_#hv!ula&Va~CcGtf{{ZH4({eNnK?$+PLf^BbLIe{{MkoqW8VXA+x&&!)_X-6Wc$=J_i&vA#36 zo%g@4(4k*m5r6G1Jf~Krc8D9Rc`IrKRF1y8xrz-C(dIB|P&k#PGDDY}99roS{_tkO zF}SG!Hbj!e{$h-gllZl?UcHE%mnN4(jQ0Gl++vbDK4CSX)DGIHyl!sz(63e#&R3E8 zn94*pg3A@cQfOa^`U*2Y?3-e@t|>Ny>Y~3I^k|L&$%*jurk}!+T+Us)maqBJ120B zuBRcs>j{?~`?xpVQP_UE>>{525E(&V-^G^yp_%)4r0g%UrA&^mLx5*g$UZK-jMK=2 z=C_?xE}8rL&zT=SbM$h-3|RW>A5(SC_ga2@|1%RD-g`A*!(ZG+^^l_3j$_bZKc<;- zZ_zL0>fZ)tRq0qL{?4kuGc`w7DAzO&{=vrBae?L6KZiQ21#5Ww0dz|jXJHLs!I^Cf zeCUSy8svs1v5z6@jo2QiUNyDZr58L|y3O*H`v$+?FQXc5uvx?wnhUfYTH00iY6rL% z7Fq8ex(9B4B00}>U836yn1jQ6oyV5|U*O%F^L0T?4K0kw57)+<$s1h@Wb3gqgsjP2 z=EF||eQV&5awZQ1TH?%A)tJj~*8*}Zef<0p)my-ocm{iJVM>m&a;*sTOuKXe%}7~H zfj1{|<28rrE*}dNO@W>MQxI;BY)OcbK)Y~4NyK}H9ddAS%R*CMc?aLXW9|kzP;&=X zH|TkjKv#ttm<)#vB~DOu5$3Z{_fX(h;?KIDPjEt5#QGopOJ%W)WR_wjute$l?j9!3 zKu+h$?rl>8qT@WsBvS}$t$r|(^bV3+TCHJNTDL*POgN%DhVsDsr8;cI&$&MH+ z;AyIP`WGH#8+0K7M}^H$){V{0=9Nmf4e5u7sx|8TKss z*_W^XWni4sc?R<~4dJXiHGjs{OZZywppXBUOod$WPaoo_?#Og?)8>pQ|F_yc7Yg@Eje10sEaGaIe=2 z8QWm5Gc8{^ShhwAY)09bP)zlZir2o8hn(DNCZ%p!jeu>px6H+!p=t?q_z|(MPy83q zfv3bb2Cd&edbWVKtSIn&o?SWTkTaUH0n=@{ccrwZgz(le*@)JSMrW>`YO_zkIt&GM z88SaH`Bhty!&u?Qi+ew@a^X_}Kf)hO9rMFcLY+lK}V_}JZ*j>6su zcBRd*mt5Jq@xD)D40P-I>4+2kLi3sy@tbm~^y4H=^{qCzBo8F$wS}fSacJ1%kRp=k z7pc6-sVh78=B@^rI9Hknt)d^ImmX7Ow`JDwsG?&Yxw?Dpc6gZF` zk$aw)HN;uR2o-eY1X!v2P#UBxsq5cG-6FONu{PXBh4Mcc=3AJlt;+vE(zm;Dx6Aw^ z%q$h08K2Vdvx?vN0rZQp`7)%tMBJn>`&Qt zyj4_j=J?X&iE)+lJ8;d-fMJOXZv8KP-O#$jUF6tU70p@g*ycX7zD~9jXHiPf!IXc& za^aOzmQ~obG6-tpr9X3>U-LMwJE>wusw_%Koj;8l^iYCp3{T|Z?m}H)C%b#Bn_LUbJqV`7edX(xP6ak1q#|BFU$Z*ZX->A_Zg|vDFt2bU zO;01oI{j7Rld_IgS4A5Bthr-;7cjNNnoo|pML>U4a{^`{6Iupm4F2G9mGq4A*L`oo ztn`GCr=o9K67G|a5NM6Ci-9)r(Aq+-r9C8m0oTbYDuENomnu3yq;mEee4#P0Guy(K zp@74WLE#dhrn#xgCBa>MT4!q{bUOM_2X{dAZA41NCWC0}<9-1$nu+n5lYi zYO9+z4K!B1r!i(bXG@G*Q#`S_AgQ&fD^t#q7=h^Z+C!AODS`tb7m#z0I_f;gu^ml` zoESO@Y#E%4y8K#=aM_Hg@o*8 zyoJ)7=Bgu>Rd9ahKYQ>V#0-o|Lpn+DW7~c2t0S3HlgQteWL0{0BM%aJ!^6-9FiMeY zul~!?)a<*0Fhm)IH67$2!cf=AIN>GdCaz6AknC58iN&Cf&+4~Liskul$xiamj_$Vz z{F%f|X;Eph;3H*&2_^3a0naz(&jp7tC}GCd)$^bEpn+_oCwJIbwuaM}6mJg(0t-G+ zDWt9BKe$Yu+`@tS6Rd9wnRmaeIrpV=C?5cPp5W3dD^`7}Hn*hmzTvK_BgI~hI-5{fVdPUw6 zFKegVQkXpy+)^9Sw%3`u-|eGPg$bf`}knW%U{oI|EzdkBN2jE7jy>U;1WiiHw=FL@!A7 zimiT`v!>h4>tSU1gjQIW7~tkDRyKIFjJ3>E?p-Lllz>ICv8LBXMP$1}zsLm`J^Fg3 zQQ1RF==ueYdE&0>$HfC-&G**$XKOTS_o(#yH5W@6f30HwRu?{!p_Tp9CDr=QyK;^# z6}%}s#!LwCCM!A^)0_?;Ybt+ucI&lMdEU2AkJiaHsx4y2NuGtOx4fb0Nl2z*4V2$H zx8W}f0Dqdk70lGu2sYvn`pr7Mjd6_VK~5asexc2eA2wah?GKWksd`&dGHW>zN8IIm ze9fq?E}v^&kQq1(5Cyh`bH7XrAyTd_NQ|J~sw%}a5#EHomjJ&=+BJFLs^-gW*BHc!`4K#ZzWbB3>F{IH1pPtHZqhRoeS>}fQq6{snGM`wx z-bTs)#_5ev=vyXFz>GAC3|-mmz|hx|y#j7K?5zm>Acrxs3dEZl_=t1cets9Wz7RQb zKYcZ<{7Wnjc~~)+5&r6&qNxr5?kh_F+vPuw#0_1mehAdiJxm01cz_p-D0CUu$)9FL zuY^8*1=~m}TWHsh36zZRvk-?%yD>kyXiAlEj8Uc?G94cZogd)qaK@#FrZDm zs!ZMkh`N#$2!-F%FTCeZ4Ai$shdqtB9_1;FVSIc$W1xfv!W6sPa2P}hLllTiNCE?VT*FuV|Q>0kad;A znCkhrgn#4-0A8vZx+Y|6V3tGUuPcE|h+*a{=ERu)QmQoWa?PYhAzo7}l~#r7W+Pv~ z$)ysqg5SPm|0QLA+XC}u4aQu{k+AI*PG`dIDgs?K{|}>4HfXj4y2{#y{={X2_Od@Jy<;NS>?0WNZB|Y$bYTAAx&2tT`q2)3wS{~Mk6~{s&rxs5 z@H7X&%>;QQ_>bjcI<;ZK2t9Y_k;e-N9gg9CaY4A>3{7rp^nE5Ko85%tzb1Hn`K@5Q z^XD+mOpY%0)LNH&qQJz#-#=__+EXhiy~u-b8f)L>)w{uW1EEZA;pj15DxA^z=XX@5 zWAi~(rcHSf;FM}QL%!jpJ$M@}T0K=WkF$e@McK>NShz!r27oD4b**t3>uIO0x={)x z!zxk_Q(+?W#3EQ63sR_7%E1{6Je|1T%_fSNxabGKbVeL8MVnmXZ8^;`{)TC#qIq|I z4_=XLp&-};`68-Lk~mnBsDfqYT^9^a>k=T^!Y}oby)GD41OwK6qx$dxHTRzpRTg%} zD&g5`lVwL*gG|Da`<(lD}9Bp-CCMYC&@ya84#C~^U)5ygOmhj-7xFX>4D z6Qm||h>8mgP2i3KG5qoI#A`upxOm=yL4Gst?m&E(MdTr0)e}J!@iu|oeoWtN7xn3K zW8)X^NgvI)^~upCOmg7iNXdr$!`$Y*LX;LVlnM#I4DVR{e-6Rg(W-x5G}!bJFP8PF z!7b?^6j3r2Q7nA!9Dev#?6X|>-JxS(4D^*>KWz=z400{c(>oc_5^^bWJFi;@PYEiH`1Y$z_n@!ESG+^RtJI7CQFI>uRQ-P(zjg>2S5ZbXuUU~I z<7-B?d+xpVCRbFr3YkTSLax2{J@?{T*?SW*E|DGLibPkD@$>r+&f{^;=X~Dd^?E(I zaH(RjFF&4a$3hYq1Su$sOF0h!sr!&y@=0hBD(4%Lp^}J}Ff`R}x`F4l8lLh!t>Q>^ zI?%Sw`KBEu2UE%sdn=aZ`lFf0HCOW*$L~Ck0^&Cx;~coUbiG1@5!7cY6#fV^j+Ey< zCc|I&xb;HY+5<^3 z=E^eqS8Bs@_m!`QE31Qv}HLDWOAwYe8??q<^Fw_7(Su&$$|=7J$GvK z8+@#alrdMrj>d2-8yBZx*T`-EO=QF;mE9wVB|nrhw>Dy?&VFMDn1D! z-a!GCI+(K?{J-|T3WThUWU)6Xd2jTS6z%O!$jA!O?;+nuBn9>o-YkW=9FIsT_`pv# z0`e@+=6Fkcy^@O;fA0=&wYs~fpeci-9Mtm(X%k8)e`v37zNnd7i76B(Bp)>h1HNfk z`%dsi53a+ITZ^yH&lX;fr0E;b!OE8ihDbHU*p}tOg-d$5s2oXx$wolA2z(+#$%@{@ zEnDVtni7>dS{#TX>-(V{F?3&STDd-I*q5gN3i%VrmG%u z)|Jd3)Z6*0fJca6smWXrw4%_9e zZ6tf6P&C%=sH3iBTP5R8&@N|2`NGKLO#`pp+&9)W9vL_eu{;n}M53G;>_~%mOv?OG z)-{Te&)Vq(0X7CeF=lMV-RtI`B=zBtb@n`_fX*@RWDuwg(Dbl}8Fxtj8wb5H$zann zoPbp6sZ=t{)j>8v3lcbD=ea9THS*A@2R0q!88J_|mf6))bHCFtHzo}dN@s;HfjL8Q zbCq1g#C0a88=iudgJASlBr#hO(R1L~N>)RQbuYjf)_AyYIDT<2j`x}>_0OSBn`c*@ z5EQ$*pNA4<^UI6mq}sc_bK?OUdx@yi0-Pjb6w!Z0u%ULk52_v}`Sy3UrT#;{H1^Ue zd%^`>D}9*|jkQE?EvrZxQY@15I7lG&9;^@6KWSPf3X~)JZ_sjD>zbfDGUgEXfK$;YRlj{)XR`zOL|T|;Rj52$n*AyVtT`{JfFN_7{f zGOnB1IVoyy>ztMIn9}>0@kB{l*($5{u3(uds7(^>BMWqRBv`!VsOYctE_ZiAiks0& z`W<&N^X#_$Ip4AF{Tm4sx1PhO*qj=#Q1>&^cDh{Sqqz(M((AVVH@;R1fo1?(yVx$C z8yIy3C;N*M(-mgl6zKte%NB-KCbnx$hff4kkJ8?zr5b?2pS0={BxBc7R9p{z&WGP? zl9M&@6x;3_V>q-RTkgTsnREcB?8|Xx$01Z zz<9tw?J)Q)*XkaFAXmW=(T;>nkbo#-OBM!y#)Y+p7~i|JOLu_*v?m!Co3 z6Qr2E%hJC9@fa%eeTeaVih_OF#BZ8oCq1hB_yj@^&=J7iL)G_wF?j3-ky*BR7yQ=r znoP&m#rUsxt9&u|XN%j&%jd>i?{LToMH?Q-lSjD$d;*EZQt7gZAYQF9W@%Um# zfR72Kp+x*+fTN*@ix56J7*J%U%Jnoy^u+k1dS60@KtaJ{(6xk#G|Jci1_LRs!YmRk1FF_bT*xRJ^j;m<`c8Gd%9)i5j0vJ0n6=9btIzMA+8Np>Ev%} zjHj9Eu7aBy9;geCW(7z+>!w2DMR^d*$Zbnldzhna!tL0}Z$4e59zam|RJ?V(jqypp z@UNI~(wm6qPZh=>$BruZ1My$6L$&z{LLX&@e}Vw=fgcAE_ z-R^DIHUCQba(}w%50`VzG7xC#V=P?*^OvYZ82Y$aGMeHx!@MOC_p1BF{;L9(@g8q} zy6~5%1SbE+aTvf%{*qj}oqnYX)i#Gnw z^2K_7u3HUDZ&m-zjJ9rQTd}@e{}f?&mVHR`7@F&#BCkMTGzxiP;4NZ)a=?Ytz^Xl^ zhV%&ptgil9_}V&Yh&%fsLsl<3N2RaaLIru1G9k`0I(6_!TLXam?4}fc_7$K36!4ZN zcax)Kqe+UNdDSy!gCH{o56fSsab5xgEXK+e1rsZ%Nh6sW$q>Oi8Wf5diIr-6kELSq zH1U-BO7MhV>#pm67o8794X{lw$8D_ay*|N)u>SaLZFOwwx0RAjL+#6xRawHPNN%y3 za9IsRHkC^0_b+$X69nCEQz8Qv6rIuBP!#SM7<*vX?D4phdYG7@-0ishMMf%0DFDBs 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%0DiQ`C{GKnGCr`|h>a53! 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

    i#poI7?ANt^vC4O}!mjSe+) z!s$#g%!Qb9_K3sdTO|aKI1h7qo}2X!;kcnHko3iSpnva(wnYM!XFa3Qa{*Pq$Ik$(%`#)UpS3iJ9k52f?m;WIrXOYeHM~w19Ps>pw;9p*S$Zq;B z7nj%k@WY;;e0a{qvqw6lNg}2t4<4K_^h>sz9j|U)P>XQbLRqg^J$ao_Ctjr;-tCOG z5jM9sOq(6#TOOo|t1;4;@Qk!+Zv*E*H=ObK{FJZ%onPTcKmSw!03ZNKL_t)w^Y@US ze$3S1beL=a(LqF2T#BB^5#>_eQ@gs%IfgggLo)}EenzcYE^bqLPY2izpS*6kC_>_m ze!9y~ikgo^!#Nc}D)ZCc;@5r3Mf*zASn-f(ExlA-P6&n`_-jl)t=aX8Vy$))Q zMxI74pI>u*vuCrN7;|R7A35xc3TnNUhI;1+u^IKMp@RAzI%{m!M=DQ>Dzv80Wo=F= zLWe~xG-3?+VE0G7Qofd89imc1F+z%Hz+IRtA=FV8quz%w>%4*hM6G*D8JYGYC2u%P8sHYglJ)8hR;zQ)&(B$( zo{(aPR7l;DA_?zSq;$g2E$Gu4V~DiPwrFbS<@JHXRKPvvwb%ZAo;~{zL@)*5N4B zT8S|l9it~XsX7!mS3#^zTU9QW>EiG{P})R{dV1DhZ!O%l=qBW?JH{niQwkzjxSygz z6>G*}4yJ3;j>ylkpl`OFV#S5cY3CHPW5x!RSxhac-l^(I-iKiKMG=}Ny6C4a()9zv z#KVU@?|dcj&0qd9-+K3V5Et0h|BBBpD_742SC<^NOK$c*;q3fvNn~e zYY$54i3wA!M#72Gfx!k_>}gk2$Dz(VLn)PIqSj1q#n82?c{0AoJ5NYKMZS2v?+_rD zTVB4p;nh`Ux2YUZVa!aEYH^Okzd(pp=^8`_lli@|yHzZCw`7a`^Fpl}0}!L$ zzZ8WK8ZkmCM)`PWRU(cU!G}r=4(|&oI#RG8O9zCx928P;q##FH*m==TCEwG9wZ88@ z5`t=Y7K?$D0(~FpVqoZcQlA)NppPAwS66)g^eJz=e$H3levOZRw&Qj`a&vQwxWJGi zsT(u|FnWTw8{j;B2PY>dco(>NenAZ{sJYqaqw7p?s;lcdA>b)wT#0PATW()n^5XiI z=Py3JA7JjU`wLKkZvBW<-Xm~OD|6kF%MCIX8lI957il$)Kz0yTSf`;px~Gv!K` zpdTJ`cK(ZOUcE=H<57U_%XHo4IcP>R2G)zE@_6MaHs1a%|x+xolqXy$S$U}7T zw*_$yftv$dTD!9zJLfFC#RQU=OGxISz@TD^*_<0GC`2qG_+V}zQO$w6mh_|^oIBd8 z{hWhvj%m)fjtkr`*F7U>a$B2WI^A)XT`r*K^cusW<+yflHhDV!)b93a}^U2SJ|NRgCXC9s} zxOjQS=Pw>|@vP(aW}xN3`#aCG&kGOEe}%TI^i*oTun<6~rE+_7gNU%(?r^{|39qk5 z-g@nVM`t6;W#jfH@&2c$q_E`gee)aq(r zo+bf&0U6mJZn?SHb8~xOyP3G%P8{})JPEa6^s4?$BI*nb7AA-YrCO<^h4)Do(~E%y zO*VD!2k@aCsU+_m;b;}td*?iapeT!rjnoM#D%upC_E7oYE#S{kndI;>5n`f?o-TTP z=nxb1$I#sJgz&&jH1wd`0fdX`;J=N0kkW8>mQ<@f*aPe{v4zP)&d zuYK*yoOGxB_~Q#Mt}oecw_IFybjuq;O88_&n=V+gw$OJStMwAkFK~G!)cqw+M;BbE z7G;p>y1;%jve|99e0j;mcQ_XEuR^|$*H5n}r}L;HYG_lV0FkLx$6>7O z4@zmMXjjNZ*pG#lQFnp~dUKxCLg{DGp`+GBGohh3OR1iI{YG%HQxdhy<)sjXi13^cRb>abydg4tT_>*H<1(bQCF zGqkT+ByAqF9EM(5VWiXhq_*n-KJf6-15VZ}&dxMNbiH1&+3s1a5>uJj?K00lKk(_} z3*P+Ff6MLm-|~}>BOiRc=F?A3IqVbT*x3HbmXlNAboFg~?l{~$<*?fl1jvyo4EWQI z;2`+%3p84zOgmn_*bsx(B6Pm-c$oP1FFxR#|KPu1z5W41{MWqt(HP#j)P8NtykRm}6BEs`q$K{U-5Si*j)h&7K{wgw%OJ$nMQH0%U)3HOE zA{xVj6c+Z3YK4Icb{ituG+47QSfEwJ6-8){c*>j!Glv}75UW!QcaF10tD~ksVRYH5J^!{7C{HM;3Hk%vFH**r@co*H?Uq0tQL{gqN7WZE=7E^_p%Dt zS6f1aH=aD;^(T)Qx}LM;0@7=YKPvTaYU2jB*AthQ&$zxlu-V>_^Nz6;l7qY#-uvL{et@~Z{`Ov>enwY*MDVv3 zYpxk1c&J4iVx<5f5d2p-Klx40Prk53;$)|{OWIOjMV3gy@dBw@onM$~$%#IRMQFpF0l}FPo4RMat_q_S$m&j9LyWjKdkpT_{_a1)#n)l~hjh=M()-Hoe#h0-k9qR> z?{fXwk9q##Dc}F_0k>mMtsdu+(sTAX`Ub^0azoz{r}XAj3MDsO4WvHdLdWv-j5PFk z2O$k~-BNW~6te)UP+VF?TCq~ZW+kJVRpij7X|*uxaH$_iJ-!oa^Pe3^4rsKTDRurj zHYj)%g2t%9j^gzl@jf7u6=AvEv)vq+Mm(tM(ZkgPN353Q6eu zp2e_cSS(3tVCYuFxWI)D7iRQD(U_PL>*c_5xn!~IIa~DfNzt_69E%|_^nnyDkI8H2 zRjDIVgeOl<_^1ELw>eokUVD5>mpX9p=zPhy-hGSj|K%rarX8;?3(Gzce2;h9daqFg zqgvGoL=THa#~W|_0-I~k&D90B+bx$@&lqbd$ z&tI;2cGL5R-@V}dPk*1Qm%@t|Z}DQg;C9mCusLtqD$_1`N2v#<>7bjk?+IyviyhHd zrB~}gi$d!}l>;!4+=5y&zEzNdluB)dW{8TDhHK3%#ZbglF82Hc=XIcE9&Vj-EdgzW zo(1z@ClvoWXbZLPLkr;bo8c3n19|FroN4Hoo^b1Z_OU_SEIXyXH z=p)N65rbozHnck7L?au#iH-z~6p$8ap|M`Ww|@C8&1$lBa_)~hT@HNft8ehV4?bnw zAGm(;ij;bW=;@*+lt(uajB@Lp{@KH_Be*yC$p<5!e*PXeH=nay^o+Uk-S2+FFaK)g z?YI68v5maAaQyj?-ebGJPvX75{uW)X?HI}rN$sgpKxTW@y*1!N0wWRd4j1OlC;|he zf-8+u8@v4szc1~Gm_ee{OsP96lOm3;*&wP^gbR@rRJa~| zINFKxRN3q|YyFKG1?01#zE>nseX~x+iKij>vZom#2X0XR8%BWOuJEEj>w18GJ z=rGo3gy>0~c8ukz(kiqpRD(5}w-^DVmAq5bQ^P4Wx}a6T1#PGgK9CYDmWhxcbwZ4u z7!xrqz(t4w=RGk7`jqGvJVmP^i0)~r?w)&HPbJl=IidCl4# zLnG(=-O(&hjxc=B5)2c${3cqXeuF@t8ssv~Op=h=Q2DbxX14R{_L|W4% z*d`NM4(8xcCj%nX?4YV^NSrq+NNwRNgf-Vt14KKYnh9^!0}IXT024rAatFCK3pI<_ zkyV{7P0X&W8kDZn#_1+%?{-eRPLw}O7Q$yph!^{PmVFU}+Of@&t(WDw%%Wgxj&yD& zBJ@6&s`{jW*S?wH&1G~a2bSivpwDT>&a9_Uyue_8mrRdSsg^f_2iKg6ze^+MiK)C~ zbJ(-F-O;Lvn?+CFj)^?pP}@YSmDS=2k-*uy=keSBh<W;`72sFFvGI*yYEJEvk@J1j%ZF7Z3ZXa2PYSHoQ-CeQz{_qfH~zG~wI< zkwQKk$oZh1R^BYu3<1 zz7zT+41#Q9Ui$N0W0Yecjy({{@*}*TgfC~*TiT!S*?{z&C-w0jcoiCq|%bWc0 z$3Nrx>XxBPG?zd;A!IFw92IE`7KuQDH{Mz^48Or2eW$TKe8i96`<#obTW| zS{f;MQm8mzNpTIX12^Gh#5v8-aK58eJq04wczjJN71!v3u%C)_TvuyF!K;6#zGX&@D=XR=ba19rn>Rc?~ZidvwGF6<@`&COb?UC1v z3;_(s5;vn)`jKi_pTg+DHOth{P_DVf*c+_o6)w?#=Vr96p`VnutP<22;byRW)-K51 zrVF}B0@2TonK>8d3rG>B`SCNrrkfZv#1-;%;N`PR#&M6(Gb|n;2+<3U5yu9RQELdw z#G$OY+H4qa{#W|;f~)5P?|r`JqpL?`JheG8P+SLMA%;|#gsWP)i2-Q|FM%TJd>Ri2 zrkpi+E=GLx#5AA@tc}CC!%Z4-Kjl3+Z;+-vRdeXR3p(V67`3$;)o3Y-;g4D*oI_lr zh@p87jw!}YlY2{pQYTBf&9rs^CY)1kjFxUEVi<@)-Fv!mdz$Ro?GGIGBc*7U&@^Vo zsW26x7LQcz`cmpoQOYKQ9Xl|<&<1MJjFD;qa%SyqR%H;PH#&0eE1QQIeMD-RpDnAi z@ZL}!h@GN}I>1pWfGNKr^ht20sxn(N}`I)({F{7&eHGrIni)ndt_ zU$9y(Se+zRi=LC^l9Tm<)v%;biAA6A;m+lx1Gm1*G8f94)zHnapcP8aZ$-|+G&UAX z>ud7$Xm3Auv;{|SfnR**0lQ7*XU{(6>gtLRduyx~y5w;ol2ahGfG@gUG+#J-yyDlt z{rC89{_B_g$#?&fF^`mznCi&xF!E|!SUvDOc+}qyF!$Hryh}t#^;5d?1A^NE&cvCz zfC%$Rs^R?HZX4B=Bc}JjGZ!f0C&X{i`2B+SDg^YjqYZeLf^wI*rVy~vF-|;|>-lP*?@08KQRaBiVG6oOh&ZAb_{7&T+HaC4@MQ6=6~!s1k`gKr>#7(1j| zl|c%$l8IqPRm`y=V)V`zLda}%(9cS@8f~rC&rvrOA==pFjp}jE<6Xm1R6J~Sjwa@+ z@LAJPo4Hx$5Ih}1Q@C?W&Hr2}v~0n7`mr?}NU&5>aNe?l{hYJmh_SO{uCz|FEl8oKmO?HKR|}3zo^F`(meL9$0k6hnLnIYlaV{FI zFl&5*X|&)@h=RUXHgq)y0i|f5Os)7aUjJW=L+L= z!}fM!nkuDK&11@qRvN9&gYKLGV=2#urqtq0WP2C52TGfX(L?$^nA=T+5R{Vg4x@++ ziL7dGR&C7e$TNCueokg8ShV%JHKiGq($vIX9|A+)OwZy-ozO)^TfNatG3Z*9q9b*l z)b}jkt1w-#` z5sXOFlRu6lYTkS8qu3$5Z^Q8B)aEhQoQl z@p9a3juIJ*t@qyPhUQJoYuXFd_B5C`s@61cFh<*KMTfzejuUe>9mCOP8#qRzIa_ce zA$kGR?k&k}z5r_SOT=q!aX~vKowrca9cxus$Q9$wbQ&Q_<>-iaNs7sWVaQ4&xxrp;kzp z*N`=*V(I;E!)@LfGF6%KoOrDRlK$5mWdacNJ~l;q#QK_?4@jw$+^D93v5AY>#U`Ri z%e-EM;LNq8s9Pyjk(RrYjy`(IrWvZKL5kJQWs#;Oo6!xg6rK(vjee+f5mIuNr0Xmw zG0=5Asf)xI7lJ4w183_KmYt$6!6&n4n~>dv$2!ni?~#r& zL@(IH1)^g1E(T5dH3CV+_hP7+B3g(JRo>9$T7>;>Lda~l6XTfK9yWOY3Re@G&4$Hr zqcsdE;(Vq{+OZUZBeubiVHIHi=HGvV-}#;Yl7IETR35zkg0Fq$E8JZ7y!qw{-6HX& zUwCvsz}#PdGcG4Lr2IWneTpZlMHWv$g_7<#XlP4wYqO`otNFA zf#mlZtR>c~QWZ)U+uWI5J0{xIZwi{5sLfe0nnxtls;7^R)ylCt-LhIc7H5SQ&l6{T z<;lr`xbsX0cj-qyQG}%^n&ESJzu>D>h-M4~^0aAy{NR)hyx8v=~Mu&eRmD)$xYRw7Jz7 z({|W1f>uK{pghwT}SLj>=VJ_p_(L;X}|t>uc1%$WD&a^ToR zEtx=}wvpU2wJAa&Rm19HgxKi|GiAqimvxvdM)}lA&6=95(v>-wa2DN)0iSYw_tZ&c zHg$6e*3zh@n&w6~^kC(QT1}yX@DMy9s?Ms`W|UIX-v^4aQIEeb1l@$4n}Z}BA(*(j znp@68zY;G;_-7D5d_* z4(B`}R{9?PqyO~p^77)J@x2fKIbB**)~v_?03ZNKL_t*3rNXcM-LLW1JFoLgU;W1Y z0CRu+^}bv?5X)Z?K>*(fE)au|Lgvv!VZDG9_dGe<5Mv;96=KI2DvuuD(y`>_ zvlAE-3(1gmkqQ0C_Hv-ss4dfO!JKmHeP{hY(O}&PX_@9Ckw}%Q{Cg2~9H9$FbOG-R zxyUj1M!RU5Q7dN4J`QAN>y$YhOzq3_B?hMl7jQ1AmNnSv-4@B{1GQFN{ID`VuT=sf zdU_R^1=eE8yXBbef!yg-?kFaO?`H>;51v+<(jel^jH}LyT5JPy^Y?2cRGWK}=5}5~ zfv`-Y^(DiivKAW2F?aEEh!% zz4ymWb4E~n&;g@W{Ty0@HdSbvRit`yPfGqsKZ_5l9YIvQ8@(Zn8o^L0bOS7xo-Q>) zY=orfp!b+?Thod?5R)Q-DF#*xwMGxi2P~JTESCd|<%;EU$@yYnz3Lc}*O0l`(Z@(k zj+g>5swPRDbJgM%?%a;v1?C>GfMd5S)KXb5blq!Be^!TpcuKA0oauXg_M<*Rlsqxj zazvzVH(SO$vfnoTk3alA(r);N|G{r)MTB1vyN;*NUvYc;g6Jd7K^Iko>_fs6ElOcF zNN9%7*+b!<{%7B2|1X}A^M`!>>u>RE4}X(~4<52!-fLj)ufL|3v_hIbAm)$2j}}VC z5$;qv-X3o^FT&my-lUsQ#gbmdxhP)+YGPswXS|P+9XgJZ+rT5XG@8J$fkcK0xb+d6ypcN`91S(?XeV$^K1>Ory z0?xXHv>35i5--eRL|-aC=+Nj@s%gc!+J)0fJ8s&+&==-`O7!HeB3}KToL6Urv$pHn zyitHNRpb>xt3?M6^Zxo6jG@xp9Fd}Q$5GRwBEy;TQ_3JPHw{BIaVK^XH%Z6LS~WeX zBYFZ={emaw!jIqoDeLu;S~I~9yn1!TI2{OkSe)N1uESWt9W$NInSTGw^(s8yfcl7(VI+*(YSie|aE81T_4au)Sz zoi%3qHB3Eo9Gn!5iRLoWXG8TPwa!DZ5izylePifgxpMRiN9u*HQ<^0N?dDPkW5By! zGirP#_{5@rKukSd7g%(Ot{+%0*DRL{*6Wp)zb<=LeaFxz&5Uu*zJ^oHjIr9fCJD|( zoVcTa-HFnkp*nmtbj=H;DOTg8(VWu(QX1IMx>`onzU4w5M{1df-jT=5&CP~GE=+kx zjGlcK{_4G_oGuScc}J@YoICKr&o23+KmL%fzPr}LV+^bok<=w(-x1uX*7&4hiH>N_ zaL<>&GVss-^MAyv-CLZmqLxpJK4bR-%>DJ(>JkzB^by_RFGx;bvSz2X=1sd`(5E<0 zlSpgoY6#BTDS4JWPMUEbD&}m01-ChTNJyCgwFi4Lv`iO0Pu}$Gx0UU!K!dI;yz!-x zEsM=hYmAd;cW_8s zQe9@ei8R+i{sK+ods-D@Qr(UgBnCt#LTI|NNSHAWq!!hUctr_fRGav`d9{`iiaJ5i zoDDGfhx6vTQA9&b=%=UqMhG3HRh+rApqi+69#E==-8tJ9bw|<-iCNTW--{RAF$_;b z$fUJnK8wHGHBk49aY@b87hgP~J8u++J{Qgl!G8Z-%Mj*LMzCMf%0XB`>co39bR!hCREyM6`ECP|8i!QPvXd)V5uUw*4-K0q+Az6kVIf12x0p zb_6#Wy0T#!x74~<=ZK3olxLz#5IP+Wy=L2}>*TJzxrwu3#_OQYjC#RbbgAvyMhUf% zQa6m_PJb_oG>8vOsM6u13TT)kDxt&7%WB8Gd1}eF8LK$h`${eu?-E!?kq$~?_EUe{un_GTQpj2ZIs`=z6cot1SkG2Y zhgm-DZxEcfna%sg;m{bTMycN1KRU4ZxhM$H7G;a8Z#FEb($pvrD<#z2 z6wfrm{!o~vO08Aj(PoI#OgqFGHdD02Hm|K4(*W>l^~@YZ35QITlJ5JqvL zKkH(MoSY7$|4 zIl3UYs5J_kS6lL!*&nv-w-blM9`8LLe|p95{o(ic#y19j^IN}ybB!1yxdi_52T$4F zX0~L$^M8KAKlrVY(_z8q&o9Z7Bj;F+!>D^EEuwB;G!!GF%r_s;<-Iz2~1TtuEi0#1YL^kg{T zV+U^3dn83|(6m{mLhw%Y4CcIYPGS0zt0iyhNz*w^)0J9}8$NTCym(uH<%obNJnim2 zpQam_iW-{E@9bz z4o%2ylycDEub5aa7Mv^}GqsUgC)$)b9Byfn$z?}AY{}z}Tn>sFi71NV)xPdsLP8*f zUajaxeQJHgY;o3ab#~OK=D}tLrAQi|qGPoP^j)Oymh>qSohK%J zH#Du-SITEnLqurpY!M6|A;(h@RgS@ zN4yjEhl#^sqLzuv>&EkoXFPgz#_l$9y;!m8d*aX$lMdW@oK#5d^!<0GA`$SgI6Gw; zcU)Xuv77D(nEUJh$5)+p>|g$X)P71_7KmPLwt}AA5u{p-yf{sqwW7e*W{a-E;@&59 z33!E4t8MfOug>}yqez&)rY`;t<@uXC(CYMmvG*pumZjNw-t%>P?{n_Cecb3WBP+8S zR*|M9kOUzC1Ox(xV0fh8;IaOZXPz6L*b~d9AX%c>h-4MXs$vx@Gb6i-%xG_Wn!Uef zd9c<#Q5+a(*Ve5rAbLk%%t9`)C0@yz>;>fmhK5 zFnY5Ku($xd_O(?)^!s}RFyS`Z`EcGCHqD$%!jwl!Q_jt5 zb;jZG0R`prY}aeHyBo%_QR+yZ?#R0}wTyax?YpV$MKWP&m_rb*p;wPFNZ8^c%;(CqIBCK3lN zY}5rW`-0ecEp)wagb19HsRZBXqNh)RA$2VJq}fX`;zQKJX}-Cw*is;6**kwk z%sP)~BDnM5DpT>?-i@3dcl3j5g<^6BXf$0(fLaQ*b(%%w9WFp?fxEjM+x3R4n+-Qt zZ@9d9LyqAhJ!NXVczMTm*ZAbqi3j&T<;nRGLpbM8fA}dcuWuO+98MC4 z2gPZtC_2>{+ivJpV2QM9GJR)FHW-;v(aC@sp_4E{g}(ZaNzQm z1)`FMqPv!vZ6Ug&t~Fabd9c~5{Y*7TU7HZDs50^T^^Pe!#3`n~iR1cC5#oqw(yl1vl%0oQ|YYO4Qoux}>g!q&ub4WykAR zw26#L0qx;v zNZ?zC&z$Gd%=W9fNf8U0($0{%OuSQ#Me=h|tAge(CB^Yq*qC*+TP9XVha7}sa%tq< zhH?}9yA58U7wv@b8VXG9JuNwCtx(L>~BUg3XOl5p)e-}MhwKc}6lCy>umZC8a zQ&uXg>W&n@kE_J!k!sf`=+Dn6!YWNWT=pz`=cxt8ow|i;odvb*1>G~B#qISd*mXA7 zAS%Z{Ci>VD zW2a1*5cXp_p8_H1xTjB%Ax63`k&H(I!zk2sK_}uh~C+_$uUPkH+z#h9`;$+f61 zg!6OH`AOk7esIKx4myB>LBcbY`6; z(_@Lgw}N-%s^2MkSgd+3F3!1~Zr>F!?~Z>shtSx)`Ir|^|AM;PlKMz%>KLM$Lj|$% zPtXNgv_s*&=u27LKBZQwi4tAYIlEz0XKJQy;#6xPHkbFVfj16^fO7-hDT5;T3Vvjl z8|Aua3mW}grT$85-YL687gxoKWA0o*87;GLQ5_y(4~h#oTB{Uk+EHlEc2J`0Y|$5Y zDL1s5DP>2OJhc{l&@Mu29(<&UgI2VY!2H>?;}e4iuZ|5LK_(s1ctk&6OgQgs3~gkfF0XS?qJ@eU6)RgtS{zs&=QEV9q9e zj*E$HYg4|;ez9UMHXJTQK#N_?39@citJK`A=<_=2azRIG)P2;2^AMv7fLn#xZRUI< z^?IMw3d1sR??KP~i~AfNp0HdjSu8sGZmD6YLG~la;Jn$XBdO~c`bbJa;c{Ifg+P}g z(FDW?T~GAdLCn*Rl6QZ%6S%(zHEKh;}5hfyfy;Zip_YHD+MU)gRpdcTYloArh_*Vnwfe$L7A1QB@pbmFH!f64M_#W+qj zQf++l^bP;^k3Zq7SFdQTGETx~tv&3^n++vv;cI;0QETS2Ep!8z(nOBL!E(UU zI9M*YyIE`T;gfa=faV0ELhxz^g5U43{X7B?ES5kCs7_S;8vQJwd^;{w=ZGT^)eU8< zg6`Z+mxG-X8(+-#1X%lAth2{#v)4ssnnt8Hd<^tM$MNbM?>)JUY{wnbxFv7bAcb+< zve~|2nr>)yGKilbG7w6_qW=L|16 z3U$s9nzp)dTenH|Gg`KVsI&O&L*?L`90V=NTUEHRb`MnuT=(bJZ0$u;ubV|U?A?ID!UDask)7;CsqZ*LMIFe z&h^}_;j_ zIKQ*S*D$k9{~W2FhT3Oo)fQlnR0Y0;6sTp?-M-EL#j9npHAk*HN?x+v>z{2WUJalJVzCAyD%jQy zsZjk)6ZWP{@JMY;C4kU#0O|lA* zosMQ`f=>&4ir|*SkWkcqv=LqaXZb<%qV1B2(Y-Ca?(cNI#6&j^L1ZM?t-61jhWa^| z^?tGEY7wdF1D&7~o7dwTX(qJl83y@++MxaptB$p>gQ1RiE3+`D+p(b0WY2LlHOJ^i91#YBvW=p)WW1y}}0=%9;&u2k4Fza;Pmj6E)Dq3VqB_&C@hA+Z~dbW_`^T_ z8Mik#D#j0jk3xun5CfAFf{$eHK$5-Jp+89P3Yd4tf0`q>i9`R4g?mQ!Yj#Z?w;_Tu zHLb;6jpcy>q@)?#Y)*!)Mp9L!zuHU9nIdnCAOz)9IGe3E!L=D5uM4EMUo}V$Tik@V zt`v3p+~L`QsB?!D(fyPPZCzFUfCy9pRp|)92`!I!anz=vblcr)^6oVy-?A$ka@kOd zjw_~V$8NLRTSQx{EC%R%ZQlFf_F4>2v?5G*=FS)pAtW3|)iu##t)3Vn&GbEp=EivE z6@#W?B6TfEVX7M>MAAWElr43H-OP-*5t@RCYPj z8g!lG`0$W}|L*X1vgo-eyaQhH|g1CYY$((0yo-+cCS|_TElu~Rw>22IlaXwO8rAnsNszTX< zlA_JFj;^JYBG44}Rt@c;S{5tpnmTpx%4d-_ySPvnU(-TkW)NvN106Yep%p>(zOv64 zQtpiwi_VEUYaDi88aO_njwBqd1a`X$Vq*ekBDU($QVNFnZv=1mOtg-pYvw*O8@m&_ z)HpsFIKOwn;p&uScffLaNa~lw7>EhAafd*Ni4=oc+ha%HCx%6&w@ypnC8OS|;MaSx zuAqs--As>tTlF>Tb_%?WA*juCc#aCVW}O(PZnIh=Q}J}6nC)IOy`qmsez4A332bgA z`qMz{lmpWRM;9C|XKt@D$yHjNaAo4Fm#z{wc>#IvjE99N>*2IB2oeTE#U@P_Bl!7pJ*EO>}i@ zOgNWtPW1+*RH_t8QI|&yp6i>}eDZN6brVPVH7BQ+^vBmcII7&;IVAV2bLGpQKSb6G znrQJ-vUXr}EQGzub!6e47A`8<(E_tMbA>r2=k7P9*pA=(y`b7_3kU1LTj#>as;J(g z)JiUsl7M~X@aUM6lY4ZF#JCm4%^kZjGmY2ecFVZEWV78cO?OBwI?AhR#}^zS7PZ7i zfQS#8*%DE`hWAEW6&(>eo7+RD*UJ)(X<8g(?l=L{rs!Cv1zoP%LE}4ycL(*=BUK4LxDD=56&6*N!|Lo5NU)0+|$D&cMs*Z^2Ui2zXz*kFd z*IQ}m6UWCZ&hDLZvN~bW5A=(H)DHv~Ep*emEYXUhlr&eU?^z5zi^V{n5~&O35Ylc- z@WDo%73ZpMNSXr)TAZ|MT}DxHEn>yDIfrb+rSFDjDO76PpKI2!3NNp>TpW73e(r2F zLX4IwuiPAuaB&{#lOYPI++J@8Oe7QpIF>C}H+RI8*iI8igXbVdw#D)0%`Gopjr{D> zZ}{lmW12KNB7g7)AM-~)`6avE$Q;`dou}3v(^S}29gB)@Y}WAVo507Pe$Io#dwlr8 zJwE#OJ?@>Ka_`;)7ON8$F%eU;jiieGLC0Xu4?0c^9-kT)_b+(%YQydNE3U#0m##<) zM+yU7j5s$Ef@hRbyT@HrLG<6};`Hu#cl;k7(pZES9L8@z%6@)}bGA@eWxWT1*+MJ| zCM#yQR1J#0bmyI|Yj3#?RYOnor7T*wP>a?Up{Ehv&iZ& zVxX20<#RNn8#_wbadr8Uqm#n@2Ve4E{{FvYb@&6ki?s0%*oOa>Kl$mz^@|g(-z;p` zFPiWj?XSRQct9{nJTx8KRWar5yu)us)G*!!I%d)+0?V?Jwr|y|J1Q`h%68h}L!|FJ zPEO8PtOi_xoAo6nPuyI+hD*q0$GE#;A6S!UJ>Lk#}2gju?9DhKY?C3Z-l*rR@`xJ*b1p zl8(K1|Qj%YBe!yGff4}0Ds<_%cEKM(ao?`{W-nGw8lay)Uy_?Rw%g`<7MUr z%^f9h!Q+DdH}9}6hj#f&apY>kcpzuhFvTtq%_#)7>4@gc@ybq#$vP_{#Lk&KOh}=z zS|(1B+@xjw|k)e+)7Xy9YvFLja`kt;&q%K)f zyV;`s+}*?aCSJ3{s0i9snLB}E8j)Y;rqA(kw)(-HE;Rx&%WaF zdSsj?{^T!Ta{1;@`Q3kX%!g0j=jqq4xVm10bDZ7_93R8?zuoiEllO=r(k~k)=bjLH z&d(j+`rwo&@4wHE1&<#+;pFs$q3aojL7)9u#S<(uuEAIwxXfzMLI`wony1Y7zxRO8 zpH95Kdr4Ts!LVS_Z^$_jqh}nIjIM4wq2pZv^X~YMe2560d%@CwLFd8EIuqM*YLaq~ zb6WMszR?ZBI5}!oAl81jmm5Cm+fn8neNZ86@?NzA;(OW9_P*z*}bpoGw&h)($joE|vL^A{-n9cB5Lin_vmU9#^4A#rvd%o>#Y# z6kUNFx~rT@v6(}`S(_fI)I8F~j@GoGQ;{jeP&q!j6}n*r zAMlcCcmr<%2(=oy*7Z7qY0dOQLFe_gl0vdOChMYaV=%RqLNtMH@*TUpBg@XtPtWRT z#rg6WCy`y5*xcT6dws**%_Xg7wwoJjS+m{TF=d5oRRxCNoVBvO7;3&lTB7UByjr|BgpOcU< z%z)7M!ofk$@#zI8$7d`TgB2o6QXB{&D&5zE4~ZBO(JO*~7y`qhV;BY&eMjG^YiQ_t z8!H*A!3tAndXt&govJ=wjK%X3*LK!pD)YOXYGch!-w|7kA#Lczvum0%A zeEiuL{8zvKKJOjBhbxXqrBq>k+xX!xo^id|&|2g9H-*}+_`!Dr>)pgUXY14nwK8`465sF0;2(9V(C^(M~H*CjCUca8$tVe1c z_pT@A!pAAx?flepa3Cxe9zU~Gyt)IN_mrYqA7^uM)t*$OdZtMzQ?-Rb-3Zgt48%Sd_TVeJTn`wh$luUQ$d(uo}W8)3giqqJFcz* z!k+`bfyfr;|3`K?5JII(lR1F2qqe8=HgkmS$-1%^*n$=)F-D|n+VFhMooj@k0>wI2 zwqsRi$5GFt2k(j)LX0-*YpS*kq3NO? zdhLwtp>RErR7-_+MVvJVlquw)`M;yD!8B7%1SI3VW*pTbjBRTPyAdx9m{88oM3qLX znLJf$D^zo!sjb-@I!?JIHCu|f6?d&dX;5mV%wk$>TsM!Kz=|ZsCE;hS*%R zlp^HZjMQxRioguV)1t*nB&VZZA5>teV^5)GD6Q^UCc%DxtEw^6d@EbvjMJhzm}U+n zz2Cjl!aoEdCeP8yiu?EOb98h@-wh1Il78rQykl@X{dLs*r|9Uq$a2tJp?>J;xvDU+(#jRQ=;yj!(#lIm-mze6M|(R3cg z{OV!F%ftI{ax5$t!L$a6CdB}G0?ksP1#)rhMiWI=A*Eov8!PadV>`lF3WrGxk43Lz zf-Zqb-G6tT0OZ;#M2iOuU{s%n?boUS?B)2L#>)7Jd1{D6*1bV?2ER{+^kXXXknWRap+le ziNoa)%f$gTM>f0HYSh|%G^E#d@HQq4~(g_4`bU>NFPM)<1$SBrUPx~RPgNzhJb zYxv;y0^GS+iqWxLIxg-Xb8+v2#qx}PQ07pw&l6M77y+MDpAun_B17NP4IQaZ3|(Z= zYd0;WNDR?Lp;{o#oijIgX4?#{th`OBu2$p$2r*SY_|_9vhmK*fG*BE0$&;r4Zkrhq z&vt^#+lkY|z#@5lA5zqPw|^IC!P)mh*9C?Y!Bz4$qZH-FLGUy;akt*$O2E5D-c1}1 zo>O1(M4oP8yUpBfD?j?1OYW^+F?5CFqn^L{^qN2a#V@(M-Qa`g=rqxFjgOvm^xc4$ zj>Tcma?H54AVs+Upz`F=l5M-;w7bu5{%60=$sg;2~F6dd;_yQFCAP&yMJBN*7SblV{9@==Gr&5vC1X z-KfCV$A|=Vt_(wkW}|=x#WfR4R)TX>$!ZT3wX9YPVyw-C4n(jloe&yx5M8SiZJ%o- zcs#qU@cQKu|I5Gqnu`Zd*}OU6`KuK#UOeR0OULzPq^c21;bqo#SF5uwVyS~lh2U__ zQFCFMb~uEgA6OnPIX-%bgv9N3&A3~0cXP+x^&O>*Ow$eP^|jhVWk)GHL|wmj&*mQJeEje^t<)^YE72q3xK)gp^E?t!j>JG4kfR zX)Vws(_~A{YsNf*RNZ~*-WzB%DQbDnR#-G$_-jSsV@+^gyH7JccGfTHj=$&v?zPZD z3?XFc;B&fnYuW*=MFq5_WJ49`=XRErmAYVnMgSp1%M7w0Pic*DH!;^a)j)KfSu=#* zqoSPxZwb%Z^|L~C{(S+wuS6&GgJXHvbAEBc`T0E#mM1J03l@uxlvbqB>xd;<3bYTT z80ou?zE|haVo*Jc(r_awMspXvEs~tm^QWB_(T;6mqfzz`Ceq;EE z6da48n`<$I#8@kVqW4SF4se$oUc|I})%ZWcIBuD`$Z{A6PPKePf?}iHaUAhd>3wB4 zPJH^}H80OH+(9@hSM7{5uC=+U&DlcEI z`SH*HmLLA;r+oU^GeTEc{;rTxBf15B>WBn_gVYU#;)y=KD`4Ioe-DRLdOjn`FGvIx zi+XjTAYx&DWco&FX+n%$)P+wg0meP|txH$EkoqB@T z_Oq*=DSJb&>q20hJ`+#QqGa8@R&kJFmxBtIYaZF z5_(UYZOaESeoUERyk?2_P(6O`5-@jJ#GG}_MDBr-g>l#3y81*5-nY>T;FCU=g0rs1 z94Voqa!r43`}@4r`95-Vop$oPk`meL%-UQ~d1BOJ4W|yVU;&B!0!~ktT--n9^yHM~ zYNh!8;lOf)g6iUe79%kPx)>SyK-VR@p=0PehSbpwiM~twq9uko9}3f>m?p*EEgE;w z%$YT7TxM6Ibwe%VYSzk$6H;)T930^GiXp&xzIwhUMaS_fn226CEU8mo%d82(RU{N1 zT?{0n4VPM}6Xa>fgVPNM2OYoo{FdFO&}wD3bNuT+{FtBo;u+une&KtMJ|IY;<&hwf zslw;aDnI`0n!DWuP1tM-U*#KiIni3>?k?}gTBSDLyqQQ|&+lSbal3^NKNxs){~izS zJ>cTO6CU4x!fJ6qOr2d{duMrTdwV@M*gMyWK1W4#Q;J!hTPt{WHQXIAEf~jniMxJzW(sW*3w5F-zVqkNp$-9Wqb&m6s zBkn&q=Ja0T=I)Z8{mm`gt)uS`IlF(4^bfl4S8K3-=!W-^ zIwx>Db!LI`ccdl6L!BBi1;*yMd}&%1S2Z}YDgQ&Q(FN#`th$ixR4HVRS1T?q9ZG#OSo6Lc#?V8+Xy% z4qB1odxnc{B(-D#_jIDXH=>4XS9%yZcNL3hIo}F6qD>HrvAyQ;ZD-(HJv>28` zsYS;o-du9dsLE9oX4o|KxSHN)cJ?%5{p1WWL>%p{0NXX-ZRXZo9@6v~YvT5}e#DbU zAx~?B#f(g>Sn5HDyJ#2rsH}IR+#3!kaX)BbX_ew2dniX|Xg(wD`)Gf$N-_@00 z7yA%B`*ddOdg3a}1J9%P&UyIgjN`)<%jJrpU(%(87AY|h?DNGK72O{r{h-~Jq3c-o zIwFdlXXrZm)alO{duQ&hXwYWmZOCNX7b?=KYK|=AbWW+(QJg;4u7Mbb$|0IzhA=06 zJNtd&8o3mPArLef*4_!8%a?2FD1?I^d?AR#yB^<7K;zBjma|pk;#lE-d4&J)!@uS7 z?v{(A3%by;xyyX~^pY>1-Ovqz*S~(r#lev|7d`*o|NI&M>yN(S^XG3ATM!aWs%BQT zTgC}?;}#bn^_IL|1FtU~Kl;ftj(_`v_a9yG{&)U4XNM119j%D5r!z71emv<#?cc6Z zi>DG5;E1Kzd&hR0K`Q4bop#}YIj)5!R43eQCSJYX@X6=T`0~r=ytusL^KU-p**6=r zo>vl{7tc3*_403ca&d^ih8P>kt(0%&J?V(_ZJXiXP;8%yaMrGSh2JDn~_yKP2RRvhA} z#c3*X0X*b7;X|+j!;w*9Xw7IBrgNNK+~?@z5QyyVw(K?=UcPw4%ja(>?Ur%7CFeEU z?KPWmt3WRk8~UhL+gXf?gMLsJin@h*{ba7;-2iSt3~c2Bq#1MXH6hzOwYfNyGlC>7 zik%j{(d*(?@`MXoEQw5b=QL`;co& z-a}TaQx?la-*=?c)5U@4I}_o0QdHY?N|BVbtFl~l^n;FthAz={9U-WQIC?88opErQ z=x1onx|`KDIb!zjX1QBBKAPVbwQ6aoePKP6LnYwf!ZMwk^&WQRtQ{+O)lwl^*hr*$ z;pi}NdgAF)L|SBOYu2|L2G>|ED<=;sZ4$nDz2$bdrT2k4dLA4evl<5N;Ep4kaYxRL z&%f^Y;m5Cd_G;wx!1K{?#>Zd2;Fm96u$xqKc6{PFT6we-F&!7s#lYD`=E;+L zoS%LhZ{+b15?*fTx}GjYg4?|-VBQ`7_YU9gSjta{Tq6>xK4`{Ht%z$799|OAJf5V2 zO;-?G0lh6Ypf6N!BONFDa&fNVLs5`aXjG~p$#u6_iqMMFmO9D?iBT2%y8VDTWjY3> z<$C*fMC|XX`f_t1zL7k-dyXjg#TM^ijFD1xS6y4Bm5LA0^+AK;Y!2KFDhAz7x=45* zv;$KcB@0b5!B`Xz?w#`9qYLicJ0~rc3`5V=w?!B6R>)IP4T+)I z=ggtpRID3Z;`sE8)3Xy|9GG(E^74lD%?($tpObT;)=QoDZzt-M*^Qz?ThY(wf~S;1 zmpmzI=Pbn8wa_8WsbeI0a;!vL)**>;))86CL@QxzS-SsZ}O z!u47BZR5>(jHU3zS@dlMxfi@E)-{Og7Rrgu4yIirn~nu^q!UBX?vy?q`kkD0Zpa$d9G@(B`0z3J&M#Q5 zdX|d=wK~taLBSJZAcaWpJ5th7OW&(5q)&?Rk15i1K^ZL;l(?S?i`VC`SQeIjE*;%j zm!(<(W8V?cphRbmIX4%Db`s|dC)JV(1mWhU@b&Y|`906ci8+VR@i%r!^EC1DMW%bO zVi>eT8C=I=@OT&4Znl(hM{t?*Rb>$x-@LiuESC=EF$GWi# z-n3#87<#C!5M4ATQDrwazWHX$U;X$eeE#}VDu+;P)ZYZ}Cb~G1Qsewy#8X9 zE$Nm|2mVYnbnx$e_bV(I(`9%74H$GX5d$_SH?awgnhP~}TJjXrL8PGkic%{sdUbJ# z?V?0GJUHD+BHo~4YKsm&>aNO7)TYVO9&b_|gMCpE@dN^`O}IAUMceF)K5!ihE^AtD z41t^-jR~PF001BWNkl%)|Q^xX^g^;&Vc948uUq6R96` z*WNNyUL&%#g{v9rzu`mD&t%EQl}fETZV^G@T>_1we3cZG!$PO?e(%thZ{2Gpble9+ zm)LH$v{rB~lJi8ZTEz5=p4HJAtAiE&;s7ba=621^_KK&UeW5VFT*$juY&L7Q+dB;d zL>IcsI) zn97=*8+Fpf%sU}CN3gEZ9Mq|s_@*%nZ8qRFy*IGyV0L2FfT=EQnjCpTwJcdoTQ(r~`xdKKph-VvfxyQ=qZ?b0%LQti*#>%E}syt0&> zK8veW;@-uI^Yb%S2lrSE2Mo&veb*DCrwiWF%>ABy;$xyq9ZN&^hc3`{J&TkWx}e?I z5H)4l2OPmH&4p5x7c>W;iWEimGkX+Of24M9*%$FT(qKOVn&UX6HHGjQNw_J=50S>O zgrT2>-QG4r&c+@3Baa^*B22tP3hP~AJ7wz*={38) znJC3`ac|;V4+_gu$FKj|J$`5P9gfZpIXl1L(Zyp94p$7_K=hv0vVK1r$p`J^iDpnW zDLApNu4}ATJ>BKVa%m$oqaRkpAe|lCIwB?V;`J3j`RUjE;h+8mmsig@df+%(y-x}Q zzKS}E1iEFi zZE3321dqY{S(3mkyu+(jKrq}n=nKY$eetq?Y1KxIf#yxH=SbL$1H~hE;u&34O6+nyTW!S zAb}?41c{E?CTeMxaO)M+*Ai9Ls;c^L9`BPmt(5fIqySaJ3WGJJyryxBt2DDxE4DpR zYE{=r^#~e0u-$DKmLtpM1J2K%aB#4o%9`!wmKWbVRfkI}fO9)s@(8_-d}_vb4yur1&ukkmRn($gs|k~J zG&oHoF64dME>62tF*!<`v=dPs)0FY8u-#;Z$2oQGc+`EEr<>ws%cr=tooW;RHD{q9q%@3uFTn1r8J&>dCS2; z&)M0a8xR{ab_x1a4a}y`sI!sE%q<#vA^46~s*2Cc$kC8FUhOEmz{g*{;_B`-7x&I+ zz_fEb{p2;DeENdM#23%keE8nPqVwEN6ASP8pZ?94{MnD6@$AJLYHg$x3^3@}>^!A8 z?skxy5{9I{+4=!eMRVqh2&eYfD`;*4=RV14%$x9c4) zz0x(}KkC}|?)d-k(TMdcLj4#g3U-_4_N@tcp^0XZsOLrhS7;PzxTY50d2ZfXrD9}K z7xynpEo5fFZ9sg&$3Tn2*z<>+-0VzfC$4fGAt4Y2L}v8PY5~! z0EhF1sl0)0v;t*EHn15k5L}Ol?rP&)96Ie%715SyZJfb;~Xnv`nV7d>Y>R?*N(Z_vTn9VCe8V%7>E zLZxV4OmM3C@s3ssQy!^OsHHMZcPjSuo?yVTV4WcE3SF-%W+NnwqUzBQp|dCyu#C6im0GV@Kv^gGQ6d_&RftYh$~s5F$S520=s<&Ycr> zTj6dj_~d9+v#z{gn=@x%y2fUA!@>(EX`+V8=5EJdzj?{g;gZcbu{sDGb`5I$-`RV! zUQ4qpUF#XM`I@zM7ds+$L}cT(Y*!gmMR9SCMF}CKf(tIV;1?i%Bti%foTEaxTxGj# zr^{VtIx{jOGy2%wYQAsIIk*_(TVW7a2%&0nNtP|!JNI7QoTGW)=jCdKy+=gsXW_@c ze9pzaSLAGy)75(9lP_NK_}L2!^Hh6IckU$4?!aIDn+qOXoRZT(-v?G}J44s&$^hIz zBftCa!S}!O9`C&Sb?%-# zQ80jpKuC>~2qH7Svxlne>z?PYFZta^AM)jk8?J9|naa$5-ZO24sa2kSp16Mff{S+w z501aV+1WYAt2?Y$9pkWKHD>ypS*=ILA<_2(t5u>~tr*7({`Y@(&3=E&)zuC0D;xD! zkN>AfYEK#ULsT~q1#Pz4pcV&$CDgetA+&=#0+wlpK(Mt6_@T30NCaC8U>8Wh)a`;L zHmBS(&j}3$VsI;Db8((hi{}zG_1|M(LUS#=Mc7Lew?sQ_wposiIE+FOMAN}iidbPL z3&$(iDkq@5X~qfN_35ZiDFY6kXRAjplwGfN{F3B4K#CQ1&O4% zLdBC+)K^X3`GwHifgCCXK?!6r;NDUwM1KuM!{K$Wst_V76T!7XBG5>-W(u7ZN3GGs z^%%kEvV9+IZ@t~HpKjsJm$bQ%BJN7@LrFtKn>8P!VaI;L94aX=~5QfQ?DnbHb<%HC_6>!`>?t$S*jnWkz2 zUDr#bBy=$%q0(i$TtiIYtD77%M1#_4ZPb#W?)-8z`>$XV6~vJHs*7+|4_dEMd@>N0 z|BtOEYHc))#=qDX=1FMH)7BMQ@#qF$QHf6&?apzhPzQ)G&5g3hUXKd)C9}y)V_7e$ zYgnSg+px=CEGQ9egy29qUnfS_kx6K*R>HlDQ|{k;z{$xS*6V>`7|Gp8iis2hT{aSK zh$g(v*axsIPp?%3n*NmYI2;47OLQX~uxnxyD4~ z;NmLNEm9_OXbef&Tu=P|`Imh8`UUUZKjWP{C)~Z0XuCbf!-_|DGrKwP(_g*d!%tr^ z%`>IJuYb4W#j6ka_IG;z^3U#b2eGWP8lYKWp;G92;q(~(>|5uI=?=G>%Fq`cUciHQ zj`+d%-si#DeI7h`j|Yz~SoJ+A4JJreweOxP%krh6Gy@&6oZ@qh?B>EM+WSFlf3!S= zB*7ZkW=yH6D4&0J%Wpsah-a@}u`PvZs-zGJ6z49@z05R|U*hkGGGgZy4*Z zNNkuj*d&EO(1_3>p5!dz(*Z3M%wZ!Md7C0+*6Bq6W*7Kjz3QL621gNMN_zZbvIRjP5RWMRFE@4pjhGWUwwC7z-Qh;cEe zidqLP<^n-2SkY`zwgXRnLVy%38N0S>TAK!Szd@qysU=$X8$(6K?A}2ls&3H~Y~L)) zVGKAyRd86I+Pa{+t=680bwyFEDAXqI5NaR=yQzv@Xc~zKL}4MaD%Awd7{$q&HaTcBNh}bN2vTQT zi2$|ENC;%fM4;lYE6P-6N}I_>#G{J=7*Vx2hcZvht+1bWh`JbA6EQbJwAV34Wf&q| z6x+WCh#`Ac59Cgfm?)*VCVXjC6RO1ufzTsaD8&Lgwc#*2MM%CLa|cnYXv^#;VY@S? zM=8!#Q6sY=5RwUOLyCtrkVv!%LbB|xR;^&!U-^_pEgHe5N%kE|IU0@tTdP`*l^(uF zi}MKe;*;R93Voxt@)AuXWv*c(NX`ixmA<`vt*>rs(^^vX{ z==+|&i$=oD9bKR3x=f16izx@&U@VqeZCcp0df`&2bD_*Lb1{93E-*L|FX%By+#ju# z#S1|@4;Ii~JKz*H`^IKtH0G48IB3oCo_2F3XV~u@0Eh{-V+x!kL83Xdq8F9B&5j{X zbaCR@o0mL&w&$}i-thC^e$1Pz=lr+-%@25RZ_UvttjCGUo{)P&%RK&a%Zt}rW=~k( z>?Xc^s=WWc3BTu^iILTl$WbVh^5VrzsgWmN-tdh_rwm=@hd;dF^yGr0qZ1xnJmBt~ z`>cnRt@6TQY45|5NWpF8VQKh$>f8VV;}BW*jpH?>AZRE^$uv=d2FFrN>}TQWvzd>c z{DCJ=ueiCsVYh!nZAQhODL`YIHyj@~zWv>My!+lG&d=_0a(stzT$6LhIE<{iZ0@wK zXBaR)d3lu1l5eXzo z4&t)?sOR*8a~1Gh8`pN3ML3F&RypM0*e|h3hAM|F5LJa#jaI7=sHpA`+1o!mnEl#1 zT`v+;$W71|37sXK(##>D3Z;0N5wXCLGo(xZVgUmNg_8d`}De zR_F{AWa4Fn*k&3tF$&x5Et|<0FH6o(PKhXm7{%Qyvm^TLGhEb!<;DVXy$5@OgA7}X z2ThG3=dFNI7jIi8(iX&Z6fP3QR|>nSG1tUyCv0vCyIrCbr4(FX4k08X@(T8QgS~bL zXv3(;(I@i-TQlrno)$s(lHKElkC-;bvS*fHNoyrc$ZYW$OHd+W(*;A;D8ne6-#z2O z#Y4`{?yy=P)AfTP`4=8bOcsoo5-|&XpU5dQq{PrAhCb5|ix79D>pOB1`rMIIXIiAN zG!W)KX|=iy+Y-`Ct<-993$0YF4|}|Naa9kDol}_0>ytIZFpyH`(+~gdgvI%3jl;S~j>8(wqBC`G4zv9XPoCcJ@kg(C`toybrwwzf zBuNZIMx;MX%uCyF+C?5by3g6kJFJdJ#&OL!ScE~}4-9?BdgvL}11IYh$H%9vj#u=l zC&x^yjotQ^{q~k18@~CqJN)BsUNcSeR|U+!=7+S2zI;rqPmoY(AyZvbASwi`TdL~W zAXt7&T5N5ToF32a0utgoXxFk(*;fKuu(tB-6(=S}QqD=Bh~6 zQ5tZ{Q0Ub|-oQza%?>ANLI~aAayOg4>QIC!@7Z+#Tz4wrl z<8#Xy>U+Arr$6K$+3(3Q(Pc|^?z%+R2l_72_t^syGhOdNiCt%UmYA^K!<|Bkt>j!F zT&ua(Oy^<(-BM?2D~{o}W~WpuN)`ff!}5jynba=tVu{z9@4mOto=#nus)Rw|gXrP3h(U;g-86w;Zh!yLn(=kEnBG+854G0`J_- ztb0K>%I3CmeN))&8~?+e@JeADU3K^4a4J5_`I?x3fVTLPA4Bn$Sm~8yck~cGI5EpT6ePFJ5uHI->6apZ?(` zudbhSwb?M$H;2i0@%N>P5JOMDjvRMK41LEqu2}cSqydIuu);PcR^z~WHF9=x!usTx zqxHyoI3mUlRGIe^x7SzfcDKy)j#>(jE>`^EvySa<`&9w+ukxXlu6{~4KStcK(iEbP zb?snPgc)^^8?janNK6k8FgxEND?0Va_YGR-N$AsN#q z#zyBwZQR_^rGukYBp{bxj=(2+DI6CU-JNq1_sGyaYEH)rYXBJrpvrVNMnYiMv zHFvFugU_PJ2~@WyOE9gGYg?^YF$}&6Y_^q~Yvt-vxVaW~`$$#e%a~}{=*3HH#sYSe zfKMF7Ebe8dOv-kH7d(s56#p)$qv(^ZJvz6ayVW_m?%Zb#OL=Tt0Vi9xCiH`Fes|!( z#eL3B-(kHvW*B?AZe@%W2i2uyxPIfcL~@D@+46?So4{qH-tn#GmZ_M@9T0Lk= zLJ-#L!2NUK2j6+XIv;bp5xOiKuZ8nd<-6a#&v(A{4bIP3+&{m^$>}{-{feO*?Yoz} zu=CZSxh#WQ?X9V3;>}3N#nffykss{ z5TmW3LqhAyzH>pzoidJ@As?|?4WyJ9*T)PUB%j=^$BuE;bG%-0dVIpk$r-Ehh^|Wn zjgpcHT51&59o_e&}SRb;g1r;H{aBHYI{YAO8xKU>7BU z7z;5Na0(o#RH0NMR6C$^G*&_IL%g-(t0LQBx0;cVL4#>;BqFV##UcfWiH76z)q)QN zBYajGjS2B!NU$}UY9z%qXhDO8OKJ;1G+l(?1z}=|M_5Ro=zMU{SZ0&yZc3Srt_m!z zx$XRogJC#*^;M4vUrQzjGM z)>f#sdCWqk>jOCl`o3ee7DQ%Z9L9R_*%%g=W5}Au|eI2>F5^irB`<>+kRgE@vqB$KloBcmoL2pG%^9h_gel)VX zEo@u$)mEd`Xhn`-6DXS7o0o}==|y7j_b53lNt8;2V2R?%3l>Be)`|1`YcB5H=ltX@ z>(vR}Fd85(8Tr<%w1F4{y$2u$NB0kXq)Qz`-;rFL+xO9?FxiB-DP{XCioFg^tH*y> zdix^0UDz$HHJe%$*YIG4Om$+bh&Zg!(Flvn2rpiI-ShHtrb~hIqjXrkX>07~Kxr@> zZ~-2*&}=n4j+vA@Vr)#srZ>}ULe#6vEsr06!s}Ph8HWuY)D3Um+_KqisF*YG{rBGC zhyV89^4^0LNToEmy{$ZZam)Ys?|#MOCoc{{7kXkcGWfUN8~F1dob%}7f}`UV_wPRB&e=J`uqNeX6k>!FjX16}BAI5( zS|Zq5I%141=V6V#1)YZIU+wHz2?TL|)La{Xczn(8KK%u|`I?BC2Lc1z?Q8bsHCpY= zS*;U-eKt1^f}QDy*bVLM4uyh=;&hNXw`GPUUPi1;`sQO)oMk~iCPOc zH?JwXEz@q#Tnn=UC7aA>gSpMLV(;%)1O~T!LvgvJHbs1Wg2R`X34bYEYP6pe1IEhwF^z$>Sz^4 zb1g-7YVgkVE-uV$t+=SyZKJ`gnmBbdMhkbVRn4h|cWcs3cL zMEc%r#330Ju`IZH#oT3TIQv>GXUgzE#at3qnD&m0r!f_~wC72f=1R)Jgya$q(~H`a zS|giH;Oa`*+(fqf#$0AEL`_o=Vp6xdd}c#FXi>Ifc3$NL?nU-Y%Vfu{n2^^4!_ag+(~-lg`#Ag8(|K#ikIpx-G?W zqD0JvRZ0bS1nPnK>h^kX8?@PTw;}}33!7;Trm6Ds<;>6vt6qrN0C(8tmr~$%Tj{%n z!mSilcWYUhKF?4}W3!pLyqx*?qtE&MM?dHJt1nS$bRF#XGqu9lHM-6UffuhgJbC(> z|LVW^YmT#`E%4-J;D7#`XZ-Bf&$!)9K5d0ol`>g|Rsfzon|bzf%Ur7$8j7SwOi*Wd z{J8O>Uwq16e*f#d|Ni@&+`UWH!ks(!IXXUJ=z3x_A#_Udu-XnwtVyt`(z6#Eatho% zABo9_#~4{$L*?GR5&b)vR}mKnwPLE8=d{Bv|vU9<^Z*BMfxv+we{%N&mb>-CC$ z7)c>grY-aK)~MaPov+slo2@wl=UNC_xxKACeRat{e)!71zyEJ9#IGLzJRYH5(M=x^ z+bh3{quux7ZWnN1n_Z$&gMo=ei76k1ji`;oMP^&wSbOA!$71ta(k$?<*mMvv2qG25 zAXJETeW6+L5ta!{Ygl4%Ps%-MDwaZ;#b~pBD2PMJhSkz~nPwvpEsU@g|AHG`GYD3= z2v(G#W(QY1<{;T&EOs>o&sJ&6vuT1+Je#fD+!0|NwXIjgT0qk(NH7|#HtT#A*-MDl zapUQ|K!}~KZh|vj!2Wm16bS|x6LU=jBBlA%N|mBJ6Y6@wX9bFBJW82u?bJ*=B*E4` zwV0M5Ch^Hrz*bhX6>4HD4Eq~|pb8;VTOvuI)GZeGkkDwW#i|iw>OhxF17WspyR7DU zM(f08vuC&25JjnFZ=VCd#3Tfw389EmS&fMpx5Suym0~nx)yBLxPKvs7Nb&WO+JvQ6 zJrr;Y3LgTsS<#`|m|L;WcodpgURRlwn=9q^wsN~EHVIT?z=#KBc75?Ze3^Fn5TM}5UK4eQPiAN!P3($Z%BPAiM^I04$L#cbPTTh3O+gX?3vZj zasU1u9z3|q@yQu^wPNUw=~7SMCFj}1!zxrlaQk>*=xwTE*)sX9lc)>i)O*2_$kBol zZCYc6My*z$Xj59VEHiUrRaz+)$f+i>tv+>dER(N>Z1Q9Uz7^3%h&CW*5Cx5t(p<=k zui>EY17q(EK#P>wi$Z}$Wmjgl1;)OkOM%)ZrZV{i!bH)RmlL0V_Lz@9`GDuoUjTd7 z>qt(G&%fB4^Qi^;9MLmjTxE{eN6hn{%Qw&XnHl{XV+a*&X0orGn!1+r&=q z`ROk{&OsAZ4%*|@l&$}F^LVs4eo>&o++Tk1UX^x11t zA9(ow-LDFmf2j{?Tk`ym#OW~-B7_V}kExZav*|@bHmtZdzl16xUX6QGLyH8(MVPaZ zKM6izC^nz)Q97PWLla+fB-CfT%k*Xu_BD)!VtfB;jvIv7j8hPzc(9wH)LUt&S`knS zO#A8~b(VdC8YEAh2n@z0L7Ig#;%+6HPZVsD&{`pd6<}P0TB~U_g1$}bRa=dqktBfF zN=KQDkt4RQP}k##qqrp)Ry>B@H5@%b>p_6nS~Wv+s}M7^ObXUz=afMzjma<40g*)W z&`dM&WS^v2G{CY#v&8R$VANhaStC#g(Jsij6u;c;La}7-YBuO5wDR_F)KDpk(UP^1 z;+ht$Xv(=`$w_Ku$98kWRBVmYs@v0n+IFDkr0Dz1Je!cRsM3nT!Dx*<1m-f4JE66S z?QTyEkXM7b)y#howeE}Yy~>LPK1=xTOl^>;O??S zXu#J|vWU?!-Hfdr6Q`#u9=&sy`}gj%K02fCN7E6dj+Feu6FGc;`jqHWG)7AbHfiat ziywzbp9gX>E=zWeONz-p2M0Zi*^uWlTQTMOtKDImWbd`DSMf5P#2%FuOYa~B~eWqp+R-gkTc z&0l^oBufp1 z5v5o(fI7_TFhfaxX$MyXDy>aWXLp=9?KLdil1gn83lk=Z>n_AZm7(FGfRSdLbs`p! zsBXR1*3eoFiLLIkNan6srbVSTT6Kqqm=+*)W-$cY!G{=V7@;;HFc(_H^e!rg=cB4C+HZOn@x z+1GdGn30D4{ncDLM0bUWaahoqCX=xts@mVBR!FH-n=sYoIVPG~2WrKpb!4U`s)v?X z*+ZL%AtFsc&56?_Kp3gaZqrSK203O*Gp)@u&unh4XgV>~+1F9(POp0S{Mec@kdpco ztI~opHP9NY`|^;+?PjLsKr2E@(3tHrgOVc9gjU>+E;CI7#VO4}gjyDhIT*%w6O{^Q;%Ur5WXmT%vRL#jInf-3!_S)Bttzp#UKx=lX z#1v`8gp&68bjV*aYj4+QSE0J7*wtv!zj8JRYz(W!`Mq-$(xRgv> zos$JR#%LD)l(Ug=yF{NeV@`B~0q44$>AFCddy54L!85ADVa2*ofla64j-T34*Rzz? zYzV4qe4A$M4=d1px+cbG3c;F++6uU4!!m`$zYoe>Dz_U5F>-VoiT+)vtsSOo)6{r< zIg@hZfepIDOXpG-L7$S6IrbSXQzQTmzV6fS8TSCsZ1s~Wd*xbe z;Uj^doli!V-Me)x_!q_s81c19gW$niM4Cq9Wi%UU8>=O{yCeA&q#;fvZR#=e;=B?S zLak<}4#91$)du4s8kZyOkcC;{X}Hb1!2<+LO^aZpT^m`aY@KpzN=zMq1;>dT1g1;( zSIbQEpAS+j#1Uso5D`{{P#ya}xy{(Dtwh__+my+Q5ec3H<*TxVsN1v=LV>WiDN%@v z)YWn2i5z;CaK2i0Zeuo!rLFNGNu*E>>ZHl|DH{C3%ZP}%lO&*0e7(~7lmN6?fvL<6 z`&u$`s)>k`xuCS!g*fDnq5~mTYTeS9nWh_VZf6TdY~rvutA$e6naH;(tp%b62sSa% z;**#d{q?XzI*U+64fHHRY*^lp=Rs*T>#!9CncZYK#6UIY)SQ@$trcs1;lNKx1yP=Vd|7hz`XL&4Q_#h_oRki#tYDdh<`Xq7x{wWt14>&o#%Qzg_s;4&% zgv3CK!SyVG6f-$SFG`Hr)AgC&wJQsRuFpc(Ww&E@PD75qx^Xs3vA?IbMyYDgw-jHU znidVULdGU54zLWC@6_5`-36YFW)mD2(`vQ%yaqyRR+I*y1#;}oeJI6V&tQdnanXIN zg6hoqc`y;H!d%qt>=tb?7va_GTR#2xH(b5>f)Itd&RpNT;&yXG*LSoA!!R;Wh1ajQ zY_^f}2ghjG@#M1`J3De} z>QODxbuzPEEI~cxG$LNKs7C+)VIyUlhtn-|SG6fm@To<$gy`1rFh83nSe}r$(ARU4 zsJ<6hci~u%d{ur$nxeIp$gI2 zG>6rlU%Z&hBBe<2iI%!ZK-FAVQO(OGB9v0RD~`lq==c~1n*s%K(rxkeUvRPU64&4m z!rDkNP})S(MvU2r$683KC&rNwqdQIltxmMLve~_4e|^I=?@i<_4Xx&Q(H49?lZ;=o zZ%hqaA4Xe;NUE0RjalMLwd8L!Qf4Tw8!`=6rW6wkPcxvAEKnwU?^TO;_KCnutdZ&@ zRr|~f*Eeu|1KW*IW|*tG?!@f%5)!ME#9XF>omt4l(2&?jA(B!fihrVQ zg}F?&QuNPGtxi!%3y?uvo#f(9;M?)c4bKIHM|AF;1j1l^Gn>}KU= zyS0fN!frpACa)D*wfAX1RX+Lfiks^~F&ZXs1$}QPOsdM|8x!UJAMACr(?vt;@wTS7A-dw};*E20z zG((q{KX6Igw(~T1!L>0Jiy-j7z0N#-vEwKI@O%E@mp|v~_BkROBq^_6*-C4*>bSkG zv=TTvRo1I}tXC)W`93N47Sx%Ng>!c1SWDTE3#-lwnSK};S0k&{z}R)H#t~X&-c3yN zgax{ASfSUdZo&{s3%q)L%k9SK)2By)sTNL0;o+kbhQ1?$r>A!&MF0Qp8vW|=|NEo9 zCT@R9tS?ZtYzlLORDYxWBknF2V|8F(wB`;MKV+7^(`Br7=~i{Eg}a)`D7h4J6f1U{P+KHYAlPbRo)v@0u~d(I8Y-h|B-=^&)! z2c6m^Mx4^b)EdnWodQBa;_Qwdn=)7tX}XG~XwSVlmdY&bZ=p`= z6NkmEVO_3;U@D<`ffg+IQQO3NjBal>U5i8yGz~&gPcRM^;eZIMBjNsobKZIQfRptD zR>PX14@kC4A_u3~CU*|yOb&q@GqKC0ER0>C>yk~(hGe7qt|RAx-1VmAlI33jwx+Gs zGKc2LCM&ISuroJjwp16`qW1o&+L{mWDNXfa-Qk3)6nETN@Mv>qk$^PjX%E`SUEslk zp4*Kc1m$=kRGJxpUp;S>dc(KBxuQ#f-EK#zORR>mqe^XTcQb>_a9i7w3F}3bdZ1Q$U{B|c% zGf`h-+CAr z$BuDWGmHb{kjXJoc3WDV?e7w?1_&Hy@%Dw4Anb2uUR~}9DRDk_gc#^L`1}x*Hq9W(QRlEYNfzFQb$XuutR_lSX;daV6g)rY zts?~6*@_KE4Ih$y=UP!FYAtr4JFsj)rzycjtwv-8`!Y$ZF4*fS>X)JGHiQ{MAS6TE zqn5#xf|7#gkGLh$_!>qwwd^A`(pM#B&m-KCOZrHTQv^EV`YToTB8xz-YVN$VYjPHQ>3}=z3Z~ARyu!aMM&B80ody(p&_}j8m-u$ zcabtz_S?N#va5-mwK;#t4_*r(V*j&SFE z&Ap39oS$E?9#7~UB)5bbc81F(L?__J==gqv$EDr?cwLT+LvNjLmuCaPFiCmc9H7QtcXO;cf4L8@g5 z+1kig$RacG+@A%FgZ_xO)~@F(26d&b4RN8CMoNS8+|0Db+f zQjOZ(yx2ua{YcIOF|IAJvx~%(&BmP) zeTob@lX}y-oUD#mtukXj(x;Br3iIyP8$^4PRjP}&D|54Ece@vIU&xw`71bqnn;qSq zQ^t_dl>iy&$+6lBTr1jy7q4!=Dq#LOJya*+_SZ0fgmF(i?OEOC-24*uMCew7Pc<9G zmFy<2H4CkJ_6#^PL@|15jg*BwB2L|v1iDlNP89V$HZ0`Z1|HyLlN}eMs_Q{yDW>cw zs+e6k_yj>D&=wsmCO}M6CdS6N3e*bwon5km>0XMrh$0xsOdJZQKonA3!rn~RWBeH# ze;Yy9SrJ}3;N6f(8Eyy*0n~bk*ZjhP}6o8Nmp_Hhr2IA z7yvuRTC0|&B+=-=)r!HUCX`mZi@_Q*bE}w*v@{n>I~*{_;4U10wHoYqx9rMmN~@F# z^WKW5I$2U|?o7)>Q+8WDOu9l$l&O-Wb5NQ3>Pn1vk|MR*w4}OKQ^dyLLkN_~rf?w$ zbF-|dMYyb<7`$})EGs_W+gGhzUBhlC>?g|_N|N10W<^GlkrrkoG;(Uh6kVTVYmpSI z5p83lwa9*_>~3rdq;2n?>u~rkSn{;xXT6Q4XmmM|awEn@%8i^M$3mBskX*~svi)pR znns4B%!3Cf+`IRH^>{(wuNYUojo(9tV7Xi=1`kTK)oIQ~#2r&6XCvbdgSmu;p*MUYehtF>L$-ZZoXR;$Lz z>A=y^UB>i(~@2u(89lOm9iNZI(amuPoR+KrS!T4E$suQ~{{O;FZ^1&~k zAm93{|L%`AeP2EPNj|jFb{`_!56H_!FE-9i;%knU(Z%W;tXpZW@U{xy@bSxv0~#8v z(*O|Zu&BoHw!{bxajUGf=qnU;y@?X+TMY=(6w%p!x0voi9Zn}Y+l7u@kSZ3;Ct}g; zDR^j_G-kB~X;CQij%mARvzfWMZd_l^OuIrzfpL}Tdb>b#7w9@+fqscJVqPetw&tnL zM5;lpK(LjXIgf0d>#UJQj3cJJk3onsqRs5!Aq3E!t{3t2r@> zVbiOst#mxCI>mu$XE{nXrLYx8Eq3qhW;;l`l%XzvbMsUQL5oF6mSz_*m;=d@j>V^X z)%hz}r(PkX=&x_jZnBS2Z8Os(XiH3!aapuk{uN@yOpFF>Gkt|knnL#6rD{c03zeLf zP(#eFJy`%}a}CxsPuModJ_pOB0NmzGv(<)FVifw$Qk(N&;IJr4mrbUcveMkHnsZ}Z zA9Hd49ZruQF{}s1VMR{CvT8ymMj=PjK#6q3Af#kYq1**>7s**n9N7<^Ib;y9zUyr@ z6f@CZ2N4rvt5bceqt{Ede{cTpwVD>L)|q*p+&Q%{mWoXl$p>xA;>1Cg!r0E5MZeaX zYv6o^WIrQ(@w{?#GxM$YErr_j4tSFTx7)&}pYND!*ViuY~-9tp_xn0ZQ~J)eU*$qb#gRt=lG1T zy??=f`JewMy!Yr`7d;#0+%OH1>#gb7j#q)4f=$$2>`XPtzs+U@2{VyIsc&OQnl$!% z_`~C;{Qb{=%dda`5w9;_v#&eu-%(DEtT?^Ci5OU0D3g-Mj{By{H8>P`q6_VnQzUQEUjFEKPLQiI1F@tP!cs4*?L5t+#F< zh5)L}b+(bJT6muNbimEUmdNa#g{UkaYwMar!ond9LM9E6NECPIhK-a3@pWnsB(;8YpGIOdYeXe{}G&6f^4dTjm@#nEpzYF8+&{!!>$HcP1#knW&ovB{JbBZ^tHn^>pn(i)Pl)mpGgQJ(@a_QaIz zP!)5aOl8M*KT-Ev_WK>vd}E?VZFE6s!HT35Z7oo%*<8y!9dPf_*C0#yU_;5imeeK| z;oxD8E_pyC(X^3#h+(*Q1Db^ps1nH0rT{S}8W9bytzcj`Rkk~!6xeMAZQgBR8Y;BV zjnP+}mQR$kLMZkfnS*I-lG2SPMxAG2x3L1KH5;ife2I{tQHj|u|GrDiQzb+tra%mp zkSaL`&*2J)RQgT{Qpw36g)t-$vqi7g9mnT)xp)4MqxCtdThXPS>}#JKI|DcRzfuTv zeIn*S&K6sdQ)1|yhTCUP>$TNT_ADYRcnnG?K8go9=vhiBXr`yMe*gd=07*naRBKGr z>w!Rh?q8L(Tiv>BX|(C zF1_n%is^rv+0_+Gw|@8GKy6kO)I*_V0{(el`SABo`TL)Jz_aHc6S|FA&NbR)npcQ+ zY&M16cFTI*GtFCWwzo9kb_1_pn+sDHjhX@|`@MbM_q)XQMmRpTGi$q>+1yODBEEVv z+k8%m+zDs*g?S&idId!a>1alx9&*5<8h5A9!hSE*IdFM9vDv-g)%6R8RpYP!v%luf z>A4N0MA=X9?B$-9Z}lgMdU2eHol&-jzGKyQ zjD2Pp28JPXGz_*@0`PpR=FtMnYtHgbRz-?)np#CA(j+pBkfSxkK_VIhi2-z`ir*F? zGS|k-*L!~R>yP;8_n-3VXTRkSpMA!Qr(cnH|H(e2ydZ9VMw?$^t>SVSHi8NgJ1R=m z$-!~hTByw~u7i{oYi;qpZgY)@ubY+*t2J{31@-6vJ-BrU)z=pt0Ymg_TZFFZAabMHerT$?Hx+x{Z4t$~ zW+zA`N^?=H**6KkRtTn*3DLqMwKh9=Lps>GRn=7dzEY~pq+pJz+LUR=EYv|=bZf;T zKGBJxL)uc9G-Ju&3A)w3b}0(Vj#7>Z99>QOdp@95$^g#6XvNj0A0Anj!|Bv%|KMJIjVi*(jwkbfm5l;)JT% zSo==QttXH=<@EHJd-oslf427~O_E(_dggP+d#?{MM@|3|AOUbdvC5>PO2v{DRVpi! z7FuW{?X=Jz&|hfNf09}6y3M*JnN%W0vPcjBfkY;9o+2^^46Hus1&5|7~@C`p+e?F-;!%o#dSqow(h^0!IVWT zuIt6bAbPiw1F4QV<@<)BG%rs^zPvZmw3;7%ucZ;Rk?c>#R+00H5Ho!!Y{8WRpRAXy z60bp$f;$j>#j|HG`Qpp_JbV0<%f)lXxT24VG${NKX&O)0-Qe)(U5s{Itrp~xS+CB> zN?eldRC9SbUh8`Phgba=vMR(N8EWxdw%5jMj*dDMiL1-Pa+QdyM6VOpD8gs~%cO(- zLkZsuLDQImv8syAtG+8KE*FVhG~P#c_cXuy%{?wJ;IIDj&$#=}O{`M%o6Pw_@%qh( z)`^>kzILW{<#knCx)RZOQl`QHM^=5}-h)^C*I$0d!zW*}TrSZ%psVXmie(u3!X{;! z24*|E?9Ok}wg-6I)`CSW`9*^&M)`zu;;$kkhvX%>RC`bcN}E4dIy-B1V&mQ0(>SBjt=rK@N%{cHXRH=B+5?AR3fZ zYE0p^xK)WbRmIv(prYDaN-m6P5T`)xWXPDpl8Pd02`<#=s+_ORq%x3mshDyv9+;d_ zNCyZU+BDarCs!odx1<&5g3?|{!6=jxZcIUJ#aatJG=?B97%L7CaZ=>!YLY`m7s0bD zYUc=uDPb9eL8EJArP1gj4|h@2jg)FLufk1A)j>#0eGB%IaZ??kX~}Fcs=g;BNOcWZ z43t!bc{1DA6v!fyMq3~V55+h-Kf(KnY$k|Psd1B<0__MXl5-&Cfqt=M93%a>q3;(W zx~#1ynb8+?sX7ItAy@ccmh^37Qf+2Pmqn$w-5#Lk5t(Xntoj+F>e@2bH>{KsrFN1) z)!$#a4ys_a6AG$=amd6dor07#aTFo2Zv#3T`FUH@(2Y3Bw6iitOmZ{V#-P2yk{Kd| z;8-n2Qc_i3AvgK$cc-8R?L`Fl6 zqiDY`(IwSXWpNCJC|OcDQ3L%&pa1T^@$&W8TrO8A1zih$3|yRL)~iC}4YPSB#OI&_U2~IR*f8{KhRqtI z6zg7b`dU)Lw@dn(Qd{bUjP0naik3$xxzM#9qcvSy*qLQQ&|EGQ7Z-(bOoT9^O(I6a zW+R3EjhmWoW+Z}QompID*6T#$;NZ|T4>@1-tT(^cEmsL^Wo#ak0u6fy zo|{J>FrVzvv>nPgtkxLgFiP^UWDh|)PFBX7&RZs3!_Iudv~8GpkJCoFC|StMs($y| zd^|PEI9?)R1iA;J1KgtbjLv-Y-9wDEf>g+&$*Z&b z^uueOK3{XSl*@>3z6II+@AFDMdh-Qpd;luc8&9>z6)oD1A|lC%IC@mQMQYSFhoGb+ zsR86l$rZ{^R6##miP1JXG% z7@_T!Obi2BZE@`4l0j8>VbPG)wce%VY5}dnVx{EvQ*w_|VwtASZmG${RB^O1PLf%b z%&Ns^o40-iiuldRMv&*E#5Pe|GE!2_sA=(ThIbuJE5IkKr6UwlV6!==Une$0&t_b* z=`X5_sgr}iXvtg2iBz**Ql*`JbyST#^wM*F_k7=X*Zt$Jo0XN7J+t>S^UmITy^~pQ_VcNLg$uX& zV!LF?pUMIb?0xw7u)YH(VxXUPQ1zwU34&(x(TRqB^1@QUk}VDp3QvwcB-RY5o%_VY z7EdG=-DCu(Zj6HoQqtJ*FHdU>4lu^h_MxiDEl5gWKO^C@_CNKb0c$Do1Aau|m7jL% zcm>f9$^aShq@c5+YqX(n7HIXcaXtP#UbLD47`(Wa@#46q(^qEUo7vH$jT*mt6zS(> zFw2-g1ArU)$&(u^r%{2q#~VUQA-^C{_sYN|!(u|EdRnu{d;r?VYUH7S9C$Sf_2N*} zxMr0z<2=Dd@@nL3M=4^yo$7MHCNBT$>xFSEw?bnjoJUEr0Ywj_r>KmV9WAKGuyHxv~ayU&mCvM*|#Uaz0Vz{93_OSEU{SQ2syK9MG><%j(-KYKqb^;w}<NS`wj6t>Gz~)#c}<}ntZj#@SubNg`wcV+P+GOx1W<%e7X-J3PpW?#J_*am7-#y z&U*3C@~F|~tM5)_EPYAm`*|N6(mLmy6a`5Rw5-FgO$9d0YKj56c;&5BQUhTgBI|IV z))Ovs(GdZ`1)0~StM#m4b}wNFNWF3djz=p(f*U0H(yWLGA&;tbz}Yw`gS~lDQbd6! zE2XK#WygaS87_$Q5IoY*4!(a>=W^SSTHQbyISpJgQTa4WbPyp5zBt-0`|=(Ba^dGk zZL?#Y^4QY1wX{Ewxq`BT$dB^!&2MoZ1}_1HDu;P4d*$JT=VTlqM(Y0QGzc| ze&$uCX+A_H2w0eJTCTVE+6FfglxO7B1*gN(+nMtG$GGRdWb)ecz;V>I9wR7OLX!U? z3v~|s2!fN`Q;O;GxP@?Gxw09!xW|m0BwOnbg5?Hu@*?3HTeb^dmBv5B8m$HkK&<9pXkh8G5`4Yb4F5}w(d)qa)>y5z zy@GXuyuU5-%rxvlap|7qT#T8-JC&5)8H?~>BVI7{6NN+KCtDPVbnD zHo_FY-hBJ*)_-d}&WZydR$6abA0=q?QG8PN2j(#qg59BLPi5Ra256Cy$Ix({YuI$dx z`j+3_I)l;WxPkue0#esiPPTw!zJm@><)G% ze*5iiM2q<7BqOJeF!Jj{s=|8)Gg`EW8*c+6KPcZ@8iMrf+L9-)r*zIN9x| z6u&tX=Qd71J3A9MUiR+aq6~Xbt;7F>9D&>F&Dq;~y6|xOc>k4>B*Dt3eSYM!AzliU zv2i=6uX;K0tB!pVEi)48=thr?BV5Y~@B=ky_JesRKJ%35tO!oZ1ws{H8tFSYLeCY{ z_1HCccgn(YQFKbp#A`fP_K_9s7v|I+)(DwC!wBL1 z74NiAwrlnI>6E%0cO2Wo2hJRMw*G*QKvM2`7$h$q>ubFrUqU7oKap&wku#Ax{ESjQ zo*1vHQO&-f#Xkp_TSW)b4C<5(Baya2#a%v^{^X^O@8+tpGeOS!Qb`GR1dJoK;#DF> zs?^^nyM2)z!DEWjmp3Y5vA1RMrA_X7UZ$joav4R>3VuNJNCcQ>KUE6pfc%;)SG8-f zkLZ^gKAK4(gp<-`VA8d`VGgj*$2%(f2y}K}X8@R_dtlmuM)WiQ=1>cZ(6 z^vxd5gQKFh7n@z~nK2DqhY9LtasrEqo=n5)Ce0jmprIZO06MjBr2|IlC2u-%Vbx*s z8csFux+$R5$?}6>XTh_x9a|@&;kEM7rd7?|YN$ zj9LZH8A>tq8YvelGS2I`>d`T1a}8OZ^fQwnr$v1M5C}E!C+@jc*tu{jkpJc;JcGKo zzqD(;glC19YB`$g{7rsS8|kMl-|M;2aocWn-!mqYcc6i75^nm-_ z$YhdZ5TR&5Es}0;Cd`CS--1cYYo!;9+QZ@bxcmD$2WYQkg}VVmY`6DQ(l+6%iu|-X zs>A!OiTBH$HtV_Q+oD)AH=iw$kQFW|7P3U$@G5Vl|KOm168D?f_koJt)9zWyk~2GM zKLF$ww)ha`)$Q6OyN;_{-Vd2?yOHgy`)5IpG#O{x3D_z1(<&bLr(X!QKi6Y4uG|PI ztsZaIFL0f#?X)#}sxAho7j0l~{uOXUpksLoi8vYo2EVEwPA8*NDs5!p{DzA=jf*)B zd0!1UrfhLn+bAU4$-usUiYfZX3;LKKUh3(`Qn+6+Rltu zc7v0nj%)!>Iz8A&P^OV3KIu|Hq7(8O2@i7W(0aYD4eYXZfZ~9_oLECg zEp|tX#Oc1+XS(a#_$SF_rD(Z3gPiV|^{)AVIuwbyF>nT{0AA2gBKZC_HY}gTTI(bd zBnt`ZA&+NO{1P{!Y&E1Wy@8vL>a%`{)2ar+C~3u-z7;%Kz0o?u9N=k)tr&E6=Vh3bJ)%YfW$v^xq*-4*(SZqR`5)+eC!)LwW z(!xT~rr*gkm08t>nF^A}1wpneQG4MvWzKm(4V{ja58_w!>&e$!+~QWdx}Alu zW88B0G3gS%06&^&ux*s}>;~0_H6%nShY~(^UapVZ4?vMy3DionW_Cwo2cjYJGdOs~ z@iBz(q2h=Hu3%vpMq2jHu8t{*Xha0!3Cs*gY;sR3Gx&`7?rMa3JgW^dilVFKuOIRt zW>kD|cAn)MHp1!qllgb_o@-WL-<;y+v(C2B(RY`uX%~1c4x8xgoa&TX7jm*5ZCHiH z^WByqnHNm8Z<&^;Q5j|^rx3%VCWXGjLYC?S1G{8(gC9>XA)>S9j#lp*Y-D*1AM$>; zH#4ROl{}V@z;GJ8jU}qtEea6W(`@^;pa!A)8EciFA!QHQi;|eodkDo>T_|VB|a;Mv|t-85E zX{EAcXO!`SgG;9RwXIN$tJbDmZha}1)Ppi`l&xtl6x0L#@RYumDB(nIY9zu^C}Yx{ z+U@6Oo{HusQSdw#vp*ia^Ew29z%!eAYoVWBw2nQ`T28f8W(nXDX?!nwc%f!43~E7T@I z+C8AB7retNK`5QwD7p0;243S9QEA$GmjV>Btg#wKa)YLG7^55B7Nw`L-MKz4OkWhw z$!3wprndq1L3Cn1*2yR)#SskL+#i zW9X5)wkA(!BhA!;bM_BC@%YX|LCGw0A8U#!*jUH#^c?(bO9wUbK<|?-&pKM= z*4jc4GQq>v^j@#0Hyc|R;>Lw)`47MyoMjRH_U{#idyAgzpim_!1`|qi+1ea@wTS3x zk@pwGPgl!6dwn<$udq8EQS7RHrc_bh6EPjjn;&Dg{{4dS@>pW^`(eQOIpYT!pYB3q z(T(c}elytloyUhJ=bfw?!`G(ebUU8Ixy8h>A|Q@>7eHf@Nm+3jJ$=wF6&om<=4>+{ z%Bf?(=bhs)5YP9!bN9E!>_c~|3xJQG4k;oOQz2VieVv2@lTUMzQ8Ol15)t!FZ!KeM zYEbxgr}NG(v+e5P4r!eG^I*dolzSdXP59Vgi~z2RP0VRR!GcQ96#r!13pYzSrZ{Y= z(nq%hD)k%okZLeI%s$5Ztl+#=b`sMj3}mLLs+M1kAa(bkv?S@Zh19gfa+PFR)JZ3+ z&JpJNyh9k&7S@@~!ZSM+(zB-4d6eNYx9z+X3_@v|TtYfTa-$oL#K~QeX`C5$Fr%_C zqExOLa{0UC-&exv=}&J@-e;Zco(6Q@Z9Nlx;~t=i(da10Bt9^|zwvP!#U5~{7%79F&J=$D`D8x)z$^wN5A2MPg z6=94j07)hpC3gnCr_Z@hRJVUbij_^JrxT#eSG}Km9J(6`*dj}^U$zY8KMXPlF`-TQO8 z8m?*R+HGMENtIPa=ycwXJ#Nfz&Sc6ET92r$+ObQQGwHXu2t*H`(#_BU} zX=DtgOta&)YfMN{YNlfQk@-HJ2fMU*-5! z1dQHuhP;9yWb8{KO$}Igs7}l28Ocu*vQ1%6Vf0c~(Opc9S?c_{ma3rB$UQL#bMEP@EV&H2Gf4Isf{k8(=5U4c4Ka6Jq$H zP?hJhnb!<9aCWO-v-SF%TbNY~YhOp7sxmFnL`3-aa?_X?npp|w4nI1kM(|6|MS&lq zhhxj8504w_D%S31xWO-8>-VkOMP!Ix^m?SZVc`nk^0V)yr2ejAxQg0iGkU2cqsL4Wty+0Nps>B&mmxK)S* z9)9;iyNJ#SJ&W3C57#@-&ABrA!cv-J60G+jv4RKnpU8ZFl#X8Ceik#+6!n^|HKHhJ zjR7+WQ4YV%MhGn9MAwNWZ=|uF_Y)z6KmP=j8%{NZ-VBp-ds~pD+0m;(X2AZ}g1A=v zYSL=-X;Uw$-ax6~o#jdDx$w5fnC5VmcRwvqkvT-A&$m(a3EDB=l2Gy2mFtVOzwhW`YO7@qP560`Axs@!Wk2!k8KHN@#6;n-p zq{;U*Hf3M)nko?lX>^T>T#hvs3zQY_|yBi>9!ERY0^Kn!&X`*I?& zH?>QY2X*9BzRW#Aq{EWSNlh4v-@n0?UM55{LYO9!HM~k!VtzD^hcqCZRo^>WH5Euh zp6;@h06>;%MCBp4fU-3NBv!eJ>3Ly%m0+BF4)&(YD5+9B_G60-YX&H>#`A}qS{LVM z(}c*7M{IVktYa#fsi?ZUC7F=T5c_UHm!&3 z>uP(UoewoNOIzc_+v@U7Vm)@dhKC?LkO+Wz8b&ScuPSkJyM^=n?)PmcjH4n{ak{DT=PTz){e+q=M6#sYJi+*>u{2eA~+!h0|y9IDylKHA}Ewwz|E;|+@T`gz63o!JTJ=V&(U zcqGWTB4)NiRokYItk*lStX}*R#BJ6i8Dd`d|`bTZ6ro}7t9eRB3-bWWstQ_0Uxa>hAdFeW{+DS|?I zVMJpdcVgKV?J0}GK+KG}d4pCNkzSCqv%Qx&C`47M&#woD19OI9#Kz`@1e0OJh@O$yA0em$saASr*9$bDVoIyS6=S{^Rn) zUcn8}sv4b}P|U^rh$keGN92ILY$UX{i-lr`_epxKKxF=DCR%;}Ib)rgE4+nT;`G(Lxu*)>~V;$GdG!Z=da(< z6{+C;AXKVW8Ff#1+-1mx?do_f$vvIAg5smXjj{9HaS|>7^Wv{nz+lfOOBm6{U$VU4 z{Y$s{-jIM>$LfwkDq7(pzS6?p;h^!#nLHj1B{R2Io>xUXpK}FAETKa{gJd<_8*hRU zp^t8EmYC#8`l<^Q{%)3$wKR65yjXi9tdWkKODZ^oP<5FDelD;CWf+~y2KvDbmi!k( z&%4{8B<>0zdT7{yz`HdnE-sT<9sX2gHqGfE(Go@f3wX*|Cp~z^ro@1;;H2D>C|GMm z;Ac%z3DAzITHmfHu;V`uOuYQ|u5Yln5-4o7*t}G;{K(lRdzUFOcf;J>(%V`>cJ4_j z1#45~YgxW1kLg!89p%r6hF$0RY(zUwRrI-Y894zLhFP5Ds`>GQFy5J%>AG{@D~ta+dOI?*eDb}A{+=9b&GwbG ze)sGkY#!J%Qn7Q@=W?@6Fv7*v?9#Z#?0aYa?zUaRQe2|wCb#U=5ij|7e`W4o_|qS1 zy!NvkoS!|*&IKaDKxE9RG>YuIPH_I$26HYwvlCE(_88cx>MMQa?gFm$IU}eNQRf7MqGU7i?-= zIOPcHOvMKuQFUbI9I^4~WS|R{SGz@x1gzEE@~l7O`SLiv(d>wkO0#n6H(o?XJ7Y5v z4Tcc&r#UmA$;|N|x+vo;fm`$j??%Lz?4NB|`qBPktfkMXkEzxlsb`7x$p^Y{3hajt z!O{WoZ&aj|^Fx79yS*q4TqSbyq^ZR?sn4m!J|Pf1!$G#9bzP?%8`iEJ#eDsugw6a_ z6gb?kjDb}zDYX@PyrwpIRZ6NVV;U~EfLpA@$;iM$f52W%+zVStiD5FBnKJnVv^Kz4 zaMXe98EWqD#O;dcV(>907#^TJqNPfxV~!Lwq3MpxqMNHHT<1$-_LF7_B%WDv9mZDU zvJROe*6D(z7S3vuo~-s|yfZmNXm9;vILB8Q%FT13|Ef=^D#w*-tDoeTVlh4$k=|2Q zBJ_YoKRv{f+>QySdogYJYMi-ob}8*-vh&K@=j>Ge@R&MBY0$QIZQo29pO1+wI=iHq zcfF;y;jyufcWcwtrjw@&-^p-opZs&rbTW;M*+Q*IsyVhAL0!t>t(>YCc-EX5nT7#| zq&5DA2|s0*<;TMb1(+)Vx7&@K>!*{WP8}BFVrC*KRWFWbmmICtsT_{RJ%xUy@T;6ukEfLHuCVU;j@!J%PS)pA-zlgRB(`G=M;fee>vJ{^KVvn! zXwZVmPO!>%!K|563j%ZSJS1+pe6Q8-$XBjcZ(viWrCDzWe6Q4hXX-MK@|0USdL-$2 zsLZJGPG{FiQ<~!I(c3M*A_)@0J&;MVi2N*^I9Hd8z@J2KWR$+?9B`Y!&XTwOaIsFW zAB+N7_8i2KjT&X1^-R8c!Q8Df`(t*Df2a8lmj^B!suaLDy?v--m4f?A@;3Q_69-B3t@M*|KQHuW2z<)A?{n zl}tMmU>X{;BSa!MY@4#@?WN&U+U$M#;`Zvp{r?YsuVVagr_@#|`}q<-hi=rXJNe5I zt(1{zGknW>!NBM0^ON&EbMY5GpW0W-o7xETQ?b_srU!_jO7nx=En_dNQ9VTr0Y;cb z+OqE^$cWa8NKF=iemU`ZA_pj)h1r1eB@w&>xmVA$rZ5vYj%6u{T%TZkDZ-}PNJF4w zx(p&5MLV1)$f3C5WL8g`9X!L*<&?g$G7^%&ISEUzN9er0y$`<~t)+^UrLARjvuwUN z#6oKx7JOaFuirgrS8eEc%haLSWykgV<8Jd^pa)Ae+_zto0QrnQ0L0hYP}E zeYiFsKqD<_6VX6pMasq;!jn_ibtMIqcV7FbS@3cKKewq8O&j)Ajy--VzHQ1FlAcI} zo|O*$h?A!w{Ul~xcBWgbkOPERys&oM#iV6+IbyMCP^7{x7u0w-?KfFsIc6{19%RQa z?6A0gg+@d@d77d|S%%=5*NpG-VixWd(Q&Pa;mG9(9t03uWw>HeI@+Y^pk*ViCU7bH z8)I|qG9*hm*`*I}Sn+BkWLfo2$1O>t6zvhTh~hc^p%|yPR5aa&uFfRO4x|5bAvW)O5JV zth;ADcF$Ex2WQ5=0Vji#kpfELb+I1X`(Y&Xl=JQ-$HM(~>z9dz3{8(zd7YWa-aA>e7ai6ZoGp7Eol=7Qa{~&Bl^{3S>KWK@njf(rx3`A9SD?PPS0?1 zbMArLf;$B1@WX0rV|px1MFwFRo~IY&&yr$Z93SyzxQV`P+B`EGE`Ooru$Y2$Tdr-R za#G!%_U>{UV68D4*lDV@W7Vsj3u*)%-cCz05;5~hamcy`_Xo{NjklgqJ zXnu9>drNY6^7P%O-{)DsjcLT*M!k|l;mL9F8%+AwbU|y}7s}&#V_kB{Q-_&`m@*r9 zU6;*lcd9lue`w&cMG(;@`5c+ON}zOe7DT?QUO&vSA`2iD8~9jn>cRDmp6Iu(OfZxo z&o426Mkh^hGNorsLn+(%X`4v%=B62aFjsKH>7wV%`F{UPx-nG>{ipXghIeO|ouij4 zzp?X0iyy_;MDq{yPfO7Ztq? z>W8zK%NS_&eM!b?2fcs9d*=hVD3OU$7z7nIklEJ$&uhG` z-dHMDFJLc-+#d(?Mg_&^M-b9OShN!t-T_G<5wo0MQeS3R;1>`gKInu+zmZ!z*9r%q zgAxPP`fAkB)@a2vZ41+2y*;zMSii>zvS9z%&-2tR*N?Q>GulM?qUZ~P1|E*b`vh~P z@J7X#2tFj5vc-ZhrJrhms`vS!(cN>}baniRq z+Bf(YOR$JfR>rl%Qv7FduqL38L+udcMhXvlV#km) zAQGq>f>ykg@m8L+W>S@&6acb^jTqGV)zX+-EanS76ygBkt50ReAqlyZ<4>pEgVLZS zbV)J5fKLPosBY-cJ)53>!W2?^rT4(3$M7MfP-Ht6jEXfa3vehW)q`B8mlwBGBQri| z#qXMy@d=P>k9;RPv#d+R&%+JYX3UP-94#_YU&rY-LxIa9C9g+89stTKW96!+? z#->9y!<^nAr8;TA;N;V9t-a})MyI=LsomWn3&(DoqBTaB#9pR(q56gnp1;g`z)a$| zp3hhGzxld_P0$}Ni(6Xl2qh&|>T#%JOLnm^^Up3-54Cjlhi%)kI`ohxh(5=LO1|FU zCZ5(4zxw6@o^7X3k>Xvile8HeKP9-^>b%kwz1rsOyh<~!fn{o`$UP$`ut8{!d{p^t zs~A4LJT^7f(=XHYl6l#*JSYbGAhg;3(n01@r+-I}EPhr;s?;V9nFI@9WS*yC4jfvN_cJ0qxySE6t7 zns2CwJtR81vwr7xuC}MGbnoNvGEz+DgwxTFj<-B-HoUm?pja~oeCU(d`Rgx?k2cyc zSD31bh`A$z%M|WtX2Io&aQf@dOH{(s$<*A=!j;y{!pg=$jQO~=lbO~AF2<}YsLG@2 zByC}Bqwof4q4h>h+x(54IRwruA&x8RDRK{huy8e{^+eb^xQKX)G5?J#a{v8LGdJ_S z5)y7H0+o^bkIKCy#%%5C>LkL=?cw3U<-yP8h_vG7g+L(OJbc`Ie4O_hoGxAtuBM)x z4leZf2)ML=W5`&zm?LeRTx}d3X#ZfEnmM|;iZL_e(*6fp($y7dWA-n)gA14G-z{!` zOt|hZn%fla!p+OY^JiMLw4(p$i%7y<{)qn!qGjRyxA2c-Z}ay^PNql~3vDka3o&M> zg^Qyb(%j;2gg-|A0g*;pn7UfP#rb&ncsP0Q-vXlC|3}xKG5*Uy*3(rHE)L=02b-IN zc{q8@c!f9xEO<;gA;SD%P75J8znLk7@BS0=FVH_G{}V>e>>fpsPmoVY5W*|KD-00? z^ZaY@cjy1q*LHL>xBhb};(Y(A{a4%Hx}w~FR@dIV~v2w{fJ^vT;I~Iyi{_QT^YY z_Yv~Im6e~XrTHIcu)?1k|<{$!-0teQ-Plu5w<0(zepT>t<8 literal 0 HcmV?d00001 diff --git a/images/deletar_mysql_monitoring_restart.png b/images/deletar_mysql_monitoring_restart.png new file mode 100644 index 0000000000000000000000000000000000000000..7713c6a0a348ed15cfd6c340f7c123de3b78d13a GIT binary patch literal 152073 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 literal 0 HcmV?d00001 diff --git a/images/deletar_powershell.png b/images/deletar_powershell.png new file mode 100644 index 0000000000000000000000000000000000000000..e73b73161c8ed9ddf45690ec65caca8a34ce3551 GIT binary patch literal 168587 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 z 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

    eXx|A30i!8fclrzIY$e48%f+O!; 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 literal 0 HcmV?d00001 diff --git a/images/ef_core_less_columns.png b/images/ef_core_less_columns.png new file mode 100644 index 0000000000000000000000000000000000000000..1b7f3b3b1469e6f55636bb356c22ab88938e0fbd GIT binary patch literal 29290 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 Q?}tQsC94Xqkv0qcUvfdLdH?_b literal 0 HcmV?d00001 diff --git a/images/efcore_select_fields.png b/images/efcore_select_fields.png new file mode 100644 index 0000000000000000000000000000000000000000..3badbd6915d447f91bab85725857dd453027ac8b GIT binary patch literal 124967 zcmeFZWl+{(+c$_Ppdd&iNGRRiDGgH6-6<*EAT3?e-Q6YK-FeX|-QBP!_w(MfGyCrB z%zoPs`#}Z9>mO$wzd8u~E-i`(j{^?{1%)UsCL{+11x*hH^@{5)Eci+1aw7xy=asFT zr~p*y2<|TU=G{**Ra+=1q^_4guVSc>K0!f!h7uRzS8z%`NO5#SpI#0~OIR{@`S1$b zSNbzLMTX!Gv|KiYaJ!k+FDJ!=&6)gx`MrpRafW zkm>*Dhi*t;bYA}BXXG1PfwupA=JN@M?=O`9`MB-dS4980Qrk8%w8;Nlbo9%ckpEl{ zI!*BZzaSWs|Id!0aLO!lwX!S9|C;}0WR$(pU$lrObL=Ajoj3^Vt0y%VvhK-xdt4k< z=>JY~drhE7?9NmJk~?QNTE6Wc>i@2dzgs4g%(0&uSqK@ap@e0>qjxvRL=pdY4QX(7 zL6G!KY?$_D-q!?Sibq8d_w#rCcMYu;qTyk8rCWxInJc^&x8W11Jot{jd521`7V7VR z$`be%Awx)e!0&>Z*2o~vH91X5@Ufxd=7%Ohn4UWY7OhrhzKZq{H{xCo>c`dNOBbo2 zjtcpLkD;XD`p^&d)t1Y@aAbAg!0!D06Fu6`^dp%wTIuK^ideSJf!SD&N#p8v{~=$S z3^TN+QPKs5-TICjHY>8{(#-Z?${CJC0~04yGV4YSgEP01IscP{j|)p6{D+*sLNX#s zwD%v|;-lOP3kQSzF`Z~b&N62N5g7x;yWND4 zt*pGGccu(&aMub;#Nq}T1NQYjMf?gvZ&7r=e0(oLYq%Y$t#WW#L6bN| z^e89or%eXlvdlp;Cso30RgI9nE&NFnXClLphPkqbQfqOE4jug*F>t>Ndh)M_1%8V@ z`J?ON*I%t8x+@7&?>(N}iL^(xcTWX3C)skxvh*{1Z$m}U?vYZ~^Ryvn=Vwy!lBFN^ zS}k`+nWC*qPUcsh?7pNuo-__#xmYuByY+tezc~EeIx=eb9QX%eNc9Bk+(R><-NcUT zdMByj{O&?Lr0H4_30K^D_PSeLes_^JL%{6O<>?#iA$M0E6Y2RHn}pMIQMVQz+ih6J z%k_@j4qDA;pB(*0b`hh98BBk&9W~YP4dcvM&y_(wskAtdRc%pk-t3-h4Rho>!u25S zi}$h)kIlh^B}l@*Qy&Sr1Ck|7_` z@@yaAF2hY9#ASuoR#1gizv+ej?;nN}&#~F$ak^*tClfZOLQw_+Oq{OAIz*$XRZAgJ zU(SQUekz^0LOeGP$8HP^CN^T$e^-(2J4-bzYZ>iG_aoUxCkurZZgoE~ei**3YFV;c zjfN29=Btcmi>~O7u8=kJKF{j%INw$*U|*jk9V~h_O+daNYtU5VBpe;?O%w^bLqF7z z!{gJ?S%#Ojj5AWw>B6|_ zC$s4Bl{u(P*unA@-($m!q4rN5C@Gwt$f?|S7V1yI)}5}WZA=7_37a<-1>!#Qzivs> z;)N*%J5@69-$wAquyp_(~d|ChiV6!h(P(0h^sDfv4)i%yAf zX`PEzOG%F>{SoaUn*=gq@-{cb*p;g;NFWInS=upX>6vK>R1xdpW?!Ifc6P4q@r@U? zMr~x(wq^;}RacMDPsr>iad9c*{i9B;v_W-Kp@8%D!4G3CiuxBhuu8>C{a4MseM1An zS>t2rmej9ZYV}o~rQh!@dDZbg5v)8M%Y>g#2M4dU(k+YbZy|n1_e;4CxBb_}QE7|t z776}yi!@?GwZv+D!NyM5qz6;#kXCQ&S}$E%X5-(Aygz{d8k~EnamALeK6%C!D|%d?5chQM1F;Qw1B1L; zCYTku1Rw8zS`+_xMbtGNLdrxH*X?P(CTYqkk`;(EzGi0`*Y3f>S@#`H@s%w z*=9Jmi^63Lx|+*ke?-=h{SCRU`}(tFGDDaK*3L{wrF__IjaqAnfljBQF<+e@+HJ{i zDpQKiEIC)M-jQL!- zl|y%arY5*i3EnyU^NBm&t}U=?6cT#vcHYXz;rOL$0>Z4Pqpam|-~h(h$+X8j_Mv{* zaL5rsS(b=1ne2$5`?r^7!sAHR;#u2!tSS#xF;s)if9LIxRwbuUCf?-U-ZH)+`43AS z|F-#PZ4as&{n0+AZ={TRY1FMaJl}89z29Ak zBqPA-tdj4^q+>bRpfl6x=@#-k?Sz{wz(#AYR9tYruky28vdU=pT4Zs6x?bUppF8Fr zzzc5~ylNILx|lC~eaWJhNoRQTYh>ub&I?jnpdN5h4*&igq)cpYu~#O|c=1GQNV{RV zdruh~lpVLzEd|qFk<%yT;MBQC|q4&qhXP^QYHaf z{qu=E4kXyXq|9h4NU0>Yb` z*+TA!9hKGrgz52e&W-+F8K)bfx2M@zn2-L{&AwU)_U+Y)8B~H?&uF;84l*zgYkI;Eis7< zC_{-=e?+zJhDw}X^-+e0Lx?-t?<_?q=HK^V}Siw9mGG+%TZ;*)V z4MpJp+rp@{eXd~aZFySbHc(yn`>|1^S0MRuJQ!3Wx3eWi-Up*VQIsaj{a2)t&cRI& zgsH9u$?A1xia+I{KuYzek#l<(YX z=F`gArT8=hFO5zENzLkN1(W%rNBLrfr{!#CtY*OOTmgwJ%9j}4ZMdpo%wVtPd1V(Q znGk~IU~t6nK3%berAl7z#fNWEukG|J^dQQRGXFbU#K2ga{@{^0rSosDK%WN|n(wsD zgc&EHj#u^j<~HQ^M*?#Lfhxys)5CJO7G890ZOeqb>Pegx#HqkwigD zv5-<@c&+Q9-R$E)^NGpjXWgKdS$G(YEV^Hr$6eN9MZu4_8&JVBi3E11bEXZ`7Vxe^ z2!6LrwOv43&nV-$SZJcb;rALRbckmI&ILCvMZL{cn}(E`IAZrhNa+9x7}S^(WX~QX z%VB*-yR09NGsoQv|bigXO*?$m|xTdvzrSo{z zI&NZ+$Yy=H<~n#fxlKV$nW3c-`fYSAP)k!y7cBg>xM?i{eMX8Q%_dCG6ax1KrDnxG zG%|VGli`OLW;2yu;rCE>rVAmn2xs{larK9y<)>Mz<@_0DWg0j@_ zT0HG3ewNk9+&+a9(XP!$`hb}EH+yP7ef4r-h<}|XX}Y!eydg{0jb;xLXn4DaXQ+0c z44?SNXk~EdUxop?>o^E zBjNG9j&E(&MuPQ;T>W}HnbVvj73_b&XE(q9SqFoKoweeJTTEF2H80qm!Ps+>&1N4X z*TR%a$Ov$K+D-l)%3vuC)?100ziI2i+f-jUV8D?&m~{-f`HM62*_fX1>Z@N>HUKj} z0TMV=XDJ=CR!$XHVKF;?oDB zji$=5cW)p#mDCLBuF%IkeEtkR3n-ZQ0^fgr{_>^W*Ut|bA78*ph#UoFO-RHa4I7(Z zNa&+(M*AB$IKUyorMCk_vaId!=9=+{#RVeWW}#n~+h3!AgD+EE4xy~4Y_2lRl8C_g zGS@wZ*I2~_SvP~Q<72?JI|wN=k21(cfd&gkfvOy`q+ zz5%dIhn5SWrT~q+kP~N#8D(}wh`Iusjv;;-%pmL8wm;7fA}iKcFbE=91#+)uDGGLl zgnjR(5Xo2$Q9UgdC9bnEnM2AptrtH^oE(J*H&?afyIpl2XXhH)Ec{+3X10;CxQ-oe zM0)jys#?M39DbL>h?9x0#HG&g4~cstV_7{@tQyVcyNZ&=@RR#JJYv>R$u)k>UcwQJjc-3rRdqAz<~S(dfF(w3HG`1Qq|3%cA^ zdwNFmEg};1=Q`+1CIxh1-Fb<$80-sm&4)@oCaxLuS0keiXyiBw6+KR<{WN> zM$jc9CVJF{ZTHDgHj{31I2?z!v2NV{os?CTYBe&(MV6MbB(G`X3n zc0hTaD6gsWrG2w;N&#!J+EoM@1yke5$!pbAzD$Yu`MM7|^=}$%)R%f z_4!FmL5Q5sjXnh{FEmfY&Z#D)%t-RhheZ#x99SZRSc`lB+U|;T*RQQu_=t&b84bgCz+iu61>7gc;B|A8NlJf7$fV`SYJXik!SYFbo#f! zT4m^tL~{|Z`6wvJbCvt_DGMY&<H3~FjXzd`)tjDqT4RnXe`t%LyD~Nr9<#_JTqh9Ho=}ub7IDh#Kp%@5%lQw zKZq6uOY5hbWuG%^PyJq2IzI5wjEb)$O-IJ(QcUkd11r z0yt!|(8n8sJ>jGMJlk;{tfbt4XTgy*#NjrV?Mjn;Frm7|I z!^6YgX8}$%_AC!$x%hPWFu1(lK(+tj3CHiL|L9j27UpEaI7o_L(67K#}v5=^~N z9U8o_B$qBNBEZl1LBZVcz(7@iK~=86aPAuBeOoSGz(?*=81T3~U9v_fOh#fKz;QVM zIe#|jo=?#lovzl!4Q_G5=PNPO3wY!Q20KcT;}FC1tsctjs09=}lmV`^XN@%vcJHFj%*`aHgOM#y7i=8UU`6;4BG-JX;@fz zmJ~qZ^p4hRVo*gPl!XXK&2dK?x1v1^x&uQm!vm%IA|=tXIhaX`r6YZ(PnepQMAfMl zLxg$Pe@C)>Kw9}Xh#4n1vJLk`*0|}IO07g?b3Q`?OvsxkLZ9qeX?=!m4J>Hb^eG*K zX<2WwJcD*t)*xJ3}Wvws;7M$g^5 z!9s;*-TM`wU$C88v&7S9vemucZ3oK9=JM%lXU{7=k30J%!?J5N-MPX;F!pRI^Q;@W zyy6c^h~1xIpsmEs6@0$*59gy`9I&=@2kAM$Py~68OQrGN&thFZU#*K2Df)#{S~B;| zm=iZn{=~Zwu;~TNWv=C#+?plp?{RJW%i64ab`Kf#)X=h2v$E9sBGY<1Y?#8=TK-op z5mO0HxZ9-+{uO+wc8hj(qIlLlqqTxIt0muW5h7dgWX?tmtO%DkH zd&P8It(c7$uS*>tfJ~>|rDJTqTbi&G&QW(X*g(oSXfL$9k?acHdw!rT2rkVtTpZ5$ z0|NeZz2Fj_GD0=*Ay~=wri%mi^5|<`?Qo%iG`)I6OLC+47ssZq!cf=U)IWV#OnI@` zlbaH_oDTkJvBgBCM$CY{*ww@l-N2z>WA<4HF3=kakm1Y(mZRYpA~S>+6`r94L6b(m zi|+RwH|f%$&xFLu$z|r1=l@<@bgQhi=^Gka*K;AoqSa_>fe9HXecg+FKlTZi&poxV zXIV^Rcn9nPtoO0_bRIF(ZI>hG*YxdzoClYEo7`HOT+GH-T$67R5GyU2aHLF@x_F#@ zaOe#4*NtLy9N3g{N26S5a$t|4ySJ%t&{SjNf7;UZARhbmXDbwN^%%%G4M&w+4gFIu zYBCxD%IT5kogn6Oh2INquhyQfbNJpUq`YOH*&S6`T6;{tnv3=$b8C70sK*T+*yD2)6*$Vu9F;a_uhc7wgFp#>e+Y@Jjs2GK z{HC&!>evLf!V#m@u zEwQ=!Ej3z{HH@<1Or^q+QXxd_X&5XZAH37$$5cSWQOz_CxZ}2!VQh}VNuTaR>c}C~ z<|HnSM+6lYB-4?+kaIo%=VY9tCx z0TKpIZ=;Ac9U^(P*AHN9S*8ZKwF*D?4OJ@2D_PCZBq}w@C<$aWWala#4r`I{Fa?~9 zea@sJ*TYdQ+|M=Ma$?bvMQ=%XCIec8SX38)G=(Q>&1<2m=M>{{jE6@_cxoJf^?#-j zlZIZELYI9rRU@6NhnYUZ=QDN=qmmEE^~-ryQ{BWG5U_7Y++PW-rTL_2isaRXW|0J0 zFK~^*9wMX|jH z53T_3lj@g2)HcLeUS3zE)Z#Eh&FK6`6H58dhyGpuxE#)59hs>6tSo{hR&_xvT?bLy6QsfKZ|eQ1C`7;d7TLgE|hJJx^M5 z_Nl5A%5D$tSHz_nyHe`jr&}I=4BvUO)WbF&{M%Be(Ch zRzuonx;q@HTL?XX6ncZDom$f$3*Q4;dZ_{b zF^c6I6JAi5RW3HqC0q3K7v8!9fLPJ#a`xyNj<#C1QJ=8F`4_2_CDrMW3K$NnSF-N$ z&!>}%@ry_)Ns>u-_Ie4YQ>{)Gcf?P;i5)}~D{40Nr&)vU}Mw9JePK?0o8tdBg!ES%OP?0Fgm~>@e+e(T*iWuK@6TwWd zcW`adPqO94nga|WHdpbs;V9Y7_E?1?UaE6Co94odt^8kw(~pgMpVoX0Xt&GYKRG4{ zFL$;4;p<^RR^e%t!KzHETBW1SHa-VPCf)_|Gk1|AMBaFUJta|ET$}>%oodN^8L{tB z;A90L2kmLGJWp*VvuC>Lu1lz_N>-8-C|+vqBagL(O+ajWk*iY^7-MC98qU_JK13;h z?*a;2|Ih%@=dYs8^9(behxuj>x8~|vZhK>o(!i~O<>zcY|KK>3sr% z-535>Q)Qpb5RsRv&yi(Xc#{xzRV}xfK86BFS`5KIyK@N&x@SS=xKRckys6H%NDEgAOXsJ% z*R4!IOkOt?c?GeQOk15#2a2G`g&F^0JiTa{c`SUwpfgPbktj!Ns@p5*zO{+^%t&Q%mruXYBsD- z3n*L7_x2nb1^2Hm4Rt4zALY)Y(1qdVZVp9j1RKYFQp)-QXulNKhf0G@B@fN|Y5nN$`}-MDUfEC-+q7y{ z$w&+GlN{i6CghIylX1Bn{6Dll#q>Yp^Z+10arvESv#;Ow#qfMNj$afkt7+enLsT$@ z;C>vDHeSHJ(p{doG-Smq`4(F?*AMDCHb*%X8);qMk4|>fq#kheivc>etG%GwVg%=D zF}rcv(1tsxsG=aC)^I&4ZXKAqZ8Wl$rA$D`RrgCUb3CgJu|`ke<9Hp%Fiux`A!5F%YCGrMHTnKmgbRy&%`tc3h5X(lMWFw3UYUh&=!02(yxwYf;I zl67o6hlH^)Rc-F?*jizv`R+-xSp&pvMd64gGp%;sORkn{t((6H z{b-Q&&|J#DvAo6ZUWE@oTa~osTWGb?&;EN4q2E|uJWrf7?p$n{j=iw4A;J=$ix*~5 zVT3DUe^(8{QmX%!h%(qmwlKDq{mB{bJ?T75*vqYiA$25QMT10Cd@Cc(VtgRqSSIm5 z5uA3uR{&#AjtmhKirsrSDxun(vMl{{5+ZEG)tpj9DZ9D}^^Qxhr_x zO)22BW)jr^Z*V_rjxRBVSd_VXw9khD2kHNn*Er!ndZkY6f~ z74@G)5QOT|)X&y7?G4V1qC@~Yv2U2_!nBF!a=**wZc#YE0>nsQFZE6*IeGDbsrt~N2bf5yX`-E*2BKbO zNAY89GUWKhYZVgpuRrA43uG$To!RD(CE1$_+LAOCAyKjrEE*r9Z!z-2VZn^q85}kV z411d+Jm~^NSpaPlRO@j$J!*$i6>9W}Kv?C}1@DTyE%49z&gHUwJZ&)SrKyr@k2D~q z**V4>25VC#c!H*Cxhx(e)Xcv*hUO|FHuYH<~k~^Zk|6R42mb`t(YUxuDqT_n|xs!U0dfxhz z1ECNG>WC$gSx`;Dy8V@Loug_2ElIfYDg*fqPPi8^XIRok;x#hnk)n@34s<%c-yG?E z8uULb&A9|Re%~R{{aB-!S%)Cruq8;y+*nMrwy6INs%Dgv+V;3WSLJXHao-t+*OWP? zExA1yrg-u2m1biqpGSkQ8OxPj!+R-$Iug#Y&1bLJfMIR?yf%r!X=Mnw?E2FJEE5QB z#EEzVqDQS><3qPydO~ib#%9&_5T15bm{`tZR(G(Sx_kWk=Y1b9kZN%|k6aQudqX>RVDkkWdcERQdb(+V z(7ak?a6DDha@ubEM(|+_NK-Azw{J&>A7X*-t~sNTYBEnBMpC71Fq53qWbAz0(>txR z8D7S)k##$idJP8!#z`_@MvBrsHJSqJBl{@~)RxB$@r%&~>gVa*P4CgC{;qNNUFM5% z$}$5@jAJk0wJD7z@&DuqrAu+%nNuy+Xl)eeeOsyt{kr=7&V=vL;l{YBAzLiEx-O^L zFb2zCB?^guDvzR;*MA4mE1xW^N$RJZBBv%7)P2$S9Ts+{<{888H5kK^VInhsQET4Q zW+N^0t`zRBR>FaucWT9d9*~r zzig5Ab8jz;&^g~g$I+-T@)%)$x$gsEOKR)HzCK7F;PQHm=q3RKi!e#5LX~d0;`--u z;b{v1zz`9l8vQJ>qs1U;i==T-0$(7$@$y5DsTVor%=uRFEp10VVex`P`UC&w$#o<; zFdDwvG@7E(yEiWVA{NIjxBCTm4{1F#dH_Xz&g93CDmK8{SrSjM(rmx$hC^c}qwX zb63GX30yaR(Y)E3$E3fLd;Py99v=SB#DfF9xKY8bY=a0r{~a)SwE^#D1aNC;oD@}}9l6Ub?Il00Dg-S^rwTVNa2 z({xRP-J<2}MhGaDkgjZ?1e4%pPK(WwCFWC0#Q;PVg}7g1>cpqav$@#$CDS3YGL<6O zJ94tPuu=h$x;_R%qcjNCIC<=`TeegnsFnDOJ|EleKULnXy*R6ucxopg<5kE)!p6iE z-V7%*o}&r<>WMQ*qHvjKE=!*f#PEhU?RK9)#vpvU!VCm{z=_~?Z99iKZWdGM^dWym z;F^HfeXdN~%W9l815?n2g@lqDIbv9#!<)GN+3n}e;`f6GPRog?VZkBW`E{pZZ^4=t z@~fFoTt$HvMTwX+s@>sgG0Ly#Is9+ui`iy}e=Ye&HJ)HW%&Lm-5|8~ZfDu=`;PUHJ z^ujpsA;LEjSwr;yrCT2G{_My>I4%)%9pj;hl;T2SxLRZ5j=f~Xk$QNzCly(_=ERP( zxxH>C`k~S45Thky$dG^zGCIQ`T}BKXyl9c@tc;wLuZoPiLUb>FPQT;e3r@x_`dtcc z_fCG95MZ=zeC&YMk+K1Z4b98lUq%-kgN&AE>XzNX11*Ai@$`nIpK70nBU%UKzl$_WDkO={qIQm0dspOf4~`Gisk4Kr3KQm|xQDLSS-_fK zzBBL|Yyq532x#ng``XSJPzi~#{Swc&uR=w(fb>Y``lu*wq(n>LQT0YO_TzUi)XU|G zEPV-(DJx2QB6l=5ohJc@Le$Rh?=JQft?K1;SuIGZp4(hyiC#D%BB}0XNI9@skg_k^ z-cr;3d&5SKLTRNIO*mzfKT00!2C{4$-+&~{jD>wDf6?2hNh_~ams}AAddD#H!9VX( z@|CHEDyJ)gN{RbpN8x%u)vKz+m%qd7&m_PN?xzS+O;3-<6$(+DRnd@)O0uX8YIM-+ zT<+7a=pZjFub^VzE{!UsF;uH45v_SUmo|yiFZZb2ERu#y|9|ES0^YG*JIt+sW6H(x z$MC>qqvqY@OUUk#vw~W?IZME32gA(K1}JdujWzXzY=45%d)_k_YF}c;1AQ<^;#>1k za-&DmE$MWn>LaE0V2uEX@r_uZ%{uO&H&P+1Mc+N?QL-Q)|z<0=avZk z`is4Z`Jz+pmdm%Tp7)F(nMLhrZj%=aRb1xnga-zJjJhk$+DGlYD`m-Kniwe*v3Y^ew4h@zf>i>4p&pl3~}GDki~51nS~<| z%auX@*!v6{7?Gm3u{I1uNd=CGM2w3Jh?o6vy&!tzd_U<&+q)Doi~I{Q<}JEL>!B6! z?oCw6jB;i)H2+~GP6`Q9#wV;ICa5|CTJ<{+p30N{=VH`M(RpKTX8~<+SMDWHbIccI zPa$KmnnsR>=cJc~E~;_EfMdKERUl_%7*+)If)Px%k+G+gfs{JYyjWn&Yet%Lc(o~? zLVjQ`W>JhTCQ0_r*pKyH)#+avS=>hw-yiBke~9X4B+@4cGfTTOuj&!Qo-8A?-zvaoJttr&Ngb+!o=amA^tct(aTFyH{izb z^hz3U<&~B;?!#QNC}?3Ob17LZ5AF@$i#126P7gMiE3nBOml~?;x~Nf8x-@&y9-O9Yi-$GGZ*XqaiuqU9Mg5x|CR<|L&edrmYfR*v!Yk579}{)SG=9i7OFGOKFOR>r zk4`~;Rab_8B*}xuanAMV$QQet{{F`1QjWxtApDZl9g>9&JDp*GRj&7_{KzmzK^@&+ z)1J@uMGuXGRFX8B#-mrND=D~Jv}S^wmsAHz%iWU}YE%ku@G$F64n%nXNd3$-=zb}m zgk7?}EoU`w#)AGDO_?d^9g%A^2pF8Pa22{e0nmc)Vu|VJN7D2#dpP7_j1wreQS`vw z;(M3dpu{Do918}l_L$>aV{B;PTU+fUkyw(3TC0&%AF`5yvqIq>JRYtDpSI~)a<8vY zfG;sPyNMp*Opg>;MeY?=Jg#tTb&`@5qf|TSZ3 zsHnNvR5UAccPWQuR2o|XcsP^VX_^*?F#nIXH>Dd9#FY8{E@WIkk|DakOZ(GxRBD1e z#vonvmek&OsUcDL{it@+Kl}FbeXr@H>v16X@o?3xL-=a{9$2juz5|h&7k=RSA(arQ zTmPhKmU@yvjGnVjV)Z!7nA;=cFDeLS1*ivHQeOx6y0FDG6a|B#|AGzy+H+pCqW^g7 zK8$pB)@+sYIbVyg^L2fJvHUz~7vW%K(x~)3-R!1k>AX6-IRnGq3MqQ`Rib10kXR5$ zQor1#5;T_e>io$Z!%=s35TbD9g}Va8vXZj=3{`8fF?k4*k-FlnNqdN(a2&UbV@0wW z`0Q5k`&Iwp@36O1&WH~JODH#(I-V8+y#OL~Wlk11^>FXCG1%|<2)Ra_Dt z?w3&v8ze!9d4BQc#QqSq3IvUsxtVU2fVa7!)Mh7R`YN6Z3J8Jzhj7^QWkeMWC>nMH zduA&Q3_t}eZXGzv0+~04A9lA48ulA{rN2%53!Oi3GoOqvH1M2!dgCVxttv;KaNuKixFmK}`Z;>|+j@`GM&i~1?n)-? z6Lb*G?YyRW$a&KY(u}lM8|%KrTm|h_1=Eae-_^X#KQTo`syOKpS2svn)A1uJU zyEKsi{sem5j`--%=1#xu!K`b@ZL7s0ZL-JX|D% zgHeMuWR8}?(pp|MWK(w~a38@a@oLlpf&!ytgoYE3*MBqXUc$PhA_UO1W)=vu$G&O3`)Ms{8 z7IKR@h|LnT3GBW+%HRB3SlNL*!omk%EV9~@Voem~sh8G)K*f1a@of{IE5nA>QMX{U z|H;4x8unDLH{ypbpL~9TgF1|B#!cjZAddHKp4~)Vthrf7p+G0-9V`MwlG1 zAwjTk`q=9-ElQUW11^TGKDohK6W?Or7#U-ejQ( zQ!wfi8aBR3g+qKBzfS%U{x#cPR71hgrFgWep`0y;nQ_q%Jf*ena;Cjs)vhuV$3U1tao}Tr49%G+ zsZR~rS5uTVvf&t6YTzy%mKv+LT{OiFb)mga*Xfb<5gFy+IPDm?7tt99Nj>VV+d1pvItLU zlxRGHk#s1nkChPmd(S*x`JL*?h-*5cf1tk(ldb6Oc;uEoBV|O!=|m&nPY{xtu{q{eHF8H zP+`w)_jgwf5uVl(m5oK6dwuRw50izIxSutxS*N1xq$pjd5*BI!+KHwrgWRYt3a&TS z8L9hs=10vLONkBEXO&)#Y*&d{_0WS2x2cU`zN=CS^?#%GbUGtB2~_Dyxv}C161R@q z@qrgZxIjw(UAl@WW#O+JITWyt$|JA+@CWRSWw$$Nz{wPLk}-6F$zE2;b|5Y_NDQQC z&YH|Yf`hE&8ijF-nD3_^GKD++O?HRms;JJ0 z5~uwYAw}%oG+4C$N<>WQuI{M`6ER14dqid!T)Kq1C8og~7IPyi-sV3#cGR**J}F1K zI))0C#DANnJpVIs;HIURAJ3gU$TItv8WOALKFeKFZ+`t}uG3(ou;B=12!wn9yS#Ha zFWoQw22`KY!z5e6O>c>Y9U$085(n}wS)I7>0)=?82Jr{>94?oAi+~wNf{oX%` z%$-(5G-FNLzt6YKPE8rYWO2k62B}4L2fSSSb66q&fHBGp-tkD?jyuA?w2{PON2tAy z1mU`8ol8HKYVn^?kWq>Rv!Wvn-l@WhGZM}rU=4<OIV{8 zKYmaf$2;U}@9ut_jU6i+_Lp!|faCaikX6JU)A9^~``slqA@lu_g0I zmpBJ6odqq=&KM=Ad*=s#Dq<3|xc_&*y`21<1(SL~Oh|?PTKeO^O9mh`f>2T0$Rp@A zD!pq_R1|kHLV^p+9{V3P!^Pnn@UxF6mNX5QYFoj49EsEHSciiB{YFs=a`o=vY_n>} z#gH*DbRHS~Kqe($WXcR#L~d~AjYteCE~4C53Y%ZIM%06-IH3klB{5%Lo1haTid9N= ziB)o_%xK!HsV7!$r)%$XZ%*k|gj})rB*&PeNbKPpJR8@+-rvy})kW?R+Gr)&s#Vh% z^|t7wG%NOC8$+Tjmf%UF>tWi#=78dTaCrxiO9H@)J`EL{VaFg0^@l4U62$Y9VLa;( z_#D4P6L_i$g5F1GU^oYuzjp+KJFxK~gp{o;LZ($+X?H*VblmMl7z5g1jQUt1<4chD zC8>22mT_@Lm`egO{vhWnDvORu-PjUr{F0g9P2k{Wwtm~$w9^OPkB-OXQ;n(6*=b#? zrWb}5FQ^FJ+S|RqQZ0T!3K@X5%U|Y5@Uz8o(4!3(ZW72tfF^+T))F;{@wPBj1l*p- zmT{$pDF!oi|1$-wO)y$2_1wy zj3UzmsQd456jP3iH3}w;XArbNG}uQ^6{7UNqyW$BazQUpc=MTGO-2^evBwjW>l1JP zOFI#W&C2ZMK{rJ$RsPa-WcNx6?Id`ZiQzjgqm zrT;g>{T0Xm#c(h78!1&jI}46K>mWnNj5`6@vy-RiC7FAr(4{ab&<1q8?3x@2?Ci<1 zeK%4j<6)yJ@)to1$f1T;Oy2;A1>P`F77`swaH?#dtwDC9bnF{A)xR(x)9K&Z^+}huCb0 zFP0t0KruMqyNlX;$UT}H%hz@caRe_vrI%AhQ^9(pVU#gJVkW}ueTe=^`C+eCzLQFw zW^HuU!XANq-_c+_)r)t#ofoDL#@6{F73C%U7o5NW8Yh6ZY%)WSBp$`?endFh#1UZO z%8ive0E}Jj@W+7d+%WyA^wO6;IL4}TcBhN?e!|^=1_%a|UPc(6yN$N6x zzre1#y{QRsdVW4KzIZHi)tp%QE$0=&4Si|h=m0EC2HyZG0>KZ-? zKLk@Lp5h~GU_aR7+}VZZIm&T+R0@sU%Gpd*a%2p{V%u@PQ`INtCVU&3O~S|-1m#Ke zWhW5c%#YfPyjw`4WFGw!{CIzc$tIMyo$jyLyYUhVW`iizpWc0a4JJOL>&JN{teo*3 z9Rg?PK@>DI>2$FS*u(3>u?7;Hte+FUOTsH%>IM47Or1UHuvm!As(&LU6Aio7cD2^4 z*&{#d4!4aKQyz-(R740npTpf&aK-0n$eAMOjykgN#NWnzQ_FH|LiLIsE;%<>GgC-= z?~(z~6@$ar#}M4v7$Evif><@6@SvXs3{cfY*&(%dl}{_{LB`Z~4~9~J6;eGm%#5Bd z;PeBovqj|yHRs9Fr%n0>>GUQ?e5h6HW3-hmg|+wUuOz;iHuR!y9Nn08;=eR@;U_zx zfkf0MBu2fNcji-AGI#IJy*3%>g7LpR7P?oG+F7Ips%UO{c|2&;Re9*e+@jGO1?AXs zd)AZK4@`s_YjB<+(=k)q8A4Do!Sa3`-l}%pMb-x5axX3Dc5W@6J@~A{YW|!AdUX}a z5t~7zifrX+OOJsISoH7YjV4}l_4xm3B^s-+U;=^;h=g!>>~Y&-l^L!bCyCVC4e*x*RX>u;bYeC^48p)@GfMlrM#e@{2IcZ=)p~GUjG%*3Q-N3#&YHsR zU-+SKKTKtaF~XC6H;@#8nIk8nBE1lX7vqGl3N>M{`Lan(+An7E55|D+HA~h;A8p^~ z7E82sZ~ZZHwQujYp`?Wrfw!VIce4BNJDH8=7o;!iA-nJs_vf2_y4s0 zo;1m+ytf`MQvd3Y=1_>9&90*Xmk8c*(~_n}Sjn_ko;A{N#V7mL!G*5#{iw*b`MKESbYB9m$hECH_eJM%(_rD!x9$P8mDsiFNtn z4obCidU#thdXEmiyXzDzn{wuT+Zyv6v_=});*aclou9t^fR3QoWyJ2I;0RCCrq5_d z{21Cz9wi|DgSOkBkk%+ykD0>2cvFYoOOJW2Y%(e(LzKZJLiQ_cH@S~_n?Y1DCQkRn z^w$bzdxd6>pk|m}t>{(Wic#gh8rc>4W?T@&&bmXj;YD^LGz zYfQVAcS%;58+LMntmnNk{^NChylrwvl%1&vYtEE{Ksv4e_viW8K*NZOzRIwUsQ1ij zc-?o@#B*tfTx?Nk#zJ|~W3az6R9Nd!=zm0@!$kK(^~Jvz`5K%VPoGH5qKO_cGy#_k ze-<+h>67j1(}}Agu1BAXHgCn%5Uu@Vs@TTf(?2_E)w)7T=|1B}{GZ=fQr9H}%RpX_ zQi7uvWT|#kRrsk}-U{Cs67;BYiCp86lDR`aKpG(_78Oz;wsnzVEtUvh^G8o!7oJgkpzOZJ--+IU-IreRePSnN5I4ue0kA@NkF zoTjjFO%#8OLp39D4;W(IV~eS}No~zT2`yA*uP!w;(q3PyivQ2A-B@iP0VL{aX>XE* z0ZEwZ%ban|U+m+t!#UpaY1-JXhT*%sJx>OeB^EIe;(p(EWAWATV?-1hh0St$EJu$lZ5Mg(01}##6pYU7VB~H4N8rCMtRCy?@W072{jT9! z|Iuk%D`sXB8v!9O+Ggyj4F38$%MM0byE!lnkWFT;M(e% zSrY-(7vzb}l4&|9oOS&1ie@83k!}1&;?2PWMfGMx%ylsIbc57pu(L*)yClkMaG}J% zOF<%(l5ybqtK7+8sBw3I%joSE$&D@?CF-h)*;|rY#S%!+aq84AogF4r_xEx!)Q}B3 zFS>$EEmUh~*Yx@?>YZuQ%gXKPD}Odzs1u8Op90>^sAUuXH$kVZM@Ft{xQ_@C7M`v3 zqiz{~>E=!8nkbi_->h|$N^hc4@*7GMPTCDbNT$+CpazhES%rl z@tIue9lulLg{Nx9PJCv?{NJ=8A;rmKW2b&wx%ghJ*%x+;9WSShyK*lHcYaa#uTX5N!P0hwfuBLJ$*A_CS3=7 zsH@6QTdBb`8l#qn4jp$0(bS+~Y8a$ei@oJsVS9TP+&CrBPIMmJNP(!B3;J&6O?2Yp z^KVxc+?W*>W@fBLnp8q-VoH-0frO*Gv-M=N6TIF@qZ}}#*fvb%K8wRyk9;853J3a$ zXBsu#kFh_(Qw-$cG$ukYL{0x%j7Is@mRR@U^*|%_^W8lDLeK&rWzT@>GmqbM!v~An za={343KBW&d+XmdhE~}GkOYya!0PHMoIU-I7bfbZjJ&bjKDij*G>x&1=V%bTgsNxDmBT3fXA2DvWf8gl5h0h5 z?YALbK1F6>p_6~C4?6bJ@ZcwW32Zh8GrXmLfipVHb3>Gr_f}#RG|HMo$H}l_&lw?v z`~`HlF1h!?)#dsu1XiLa9nRQ@Eun>=E&W4D(HkmqKu-Gv!1nAQJ$>~T?1tTV9NW$r zyBqTO_pU~j|GWE|5i_f_=e4q_hK2>V*i3;vN@}E~&0yD^ zG*vAFzizx@a!upO3Wl9qn#zq0t{OR$L10-^M0OFZKE_l>9s$^HB5aac>RnFm@h|h` z8d-fLjH8fI4194>`;ZbX_BRK1mdfpfq`w+uio>4;3cs_pOUYRNdkiW&hJd|OXP@`R zBi`m&$rXd`$eJNZU9VBZt&kfrE{K~9TD26@Es|5DbMTI{S7+|sy*`|JUDp#;-Re*RUMNMy- zakG#FbAEB28_~tWhyU5<-yIrO_+xT$LkFf_@E=gOTy_3&J&l!3UG0Qx$BQL~S|vk7 z%LbXo7|PL=zR|?)xF^HPyM*wEyPoq5(kk!Fh2u`8(&}iIyX2rIfmBOg4>@%Jxd)T7 z^EHZm(@kspOkOR3sE!+^2O|G=Ny}QAFuIZ_sk75d zD&A?u{OJF0C7jmWzC8~cw7LFH;9Y0yk0G4{IwhhJY9;X-uI6xPW~X&9dk~pQYtG+s z)|0QU(xcU8D(Yq_cnUa@4n5aIj$BO?ws6aJfcqT^4-RG3 z0y1?~1y+I1(bdX~_oz}<5c`;fC9p^2ggqx&7f{X1P8)bI{)g^bt6b&FGVb4fl&@-g zyi$eV);t&b)89o0SRRhUiL58zviq!$5fKs+Jk;`8hww0TGR%ljV8~_5 zpi^r;?|Vx~AJ!Gp|8GM{e>K+AzbStn zf+_oXAd=z@U8gUqpxldZbqVDg1;?n{$)H}pRCbb}YiS?h5FoVoP{W|lSw^(O+k|xv zboff>Lejth5j;)i@X`=|qXz1!DIwXkY0zM#Ca*N74`_0rdqL%;yJ6!dm1?D>*=rWk z`cep*ZumAhGD!}Ooy2aedjI-87%M@fZ07DScI{{yY2uG^tvhFi~u!{|=U z8WgU`!b3&3=bCeh4QQl zsp0$-EQ?sh<1z|H;}l0=tBz?Rxb9f^h^BJ4n5|W?M%|sSVkE;$TdLa9jU=Eg<{bZc52Ogd^}NBrl9NeTzn9W?tm7J(C|uBpN5D2 z6?E?{{?GHXFOBRLlJLu_MbFy+dzaHS-?D?l;j-_;Ufk`uzgI@B??=(MY(du$?%K_R zmvhAyH?Jmr#Nv1XmqQ&tq`wZmpX|Awy8{02$ik3+@2)xZCZTG(90l`USE-3j_eR-d z6Ww@Tv;2J`?aM%ELazwx-o7KJI&;2tJpI{qakp z>ORd*Os6DTP%jJ+l zd9OoBZ~ohUj<(y%1o}H)|A#Kcs)zrv%g>w|8#fr?#rW4-xMy^8(lEA$QR#f7$`>DD zq<7)yM*-N%+^6*O+lbQaFX)PTXa%jAlH(q592pm_%OTJWDh!foKM53s3|P$;aWDtR zyWQEPgGnL>i(T%!f7{xs#~~M3p32-`;>v zmm@VnMKINq9GgPS@J>tU9?Kp_i&^cgeNID@#7{oPZyKphySV1I&ZVBFNZ#prVe6bK zh^dhC!w!=nBkw;7(+a82|N6Gv`{H+!juC`x$Rk-RT)a&Djb&SLJZRmn_u)D2uvYn3 z)$Gp&&y(g#gD$5^7o_}o`?(yu`fcKyNGqa)&$m5?w2NgM?x&^gkBA+biMVP8x91)C zukPvQ%D0EKTxQht@M*%lw_g%C!2iA<34feygR8*%74Vu) zk7oJR_-;M>xX=0gk&dqIQ5b;gm#ZgN++>N{9 zLgEw}x^Grr&eIKpY%D8ViIz4Tzf741mHoaH4%5$q1CLWHwWEr`_13;#4Cdpk*1yle z=VlP1=h4~n>G^5C_eJQ3=MJvW{p`q7=VdS3ZRWu+@7EO!F3}&flTtD2_;yX1_irl( zWwO1(`*Vx@+5D~?!a@Y0Z+DCIKD(>Z-=Dg-UpPKbrawqOtqwie{HNS16XNP?(Mvpb z6Xu_N@TF7RJ+0tnVAqg;bR_3RqYvM&XE98<-*5`v7dW@S%-V22yZ3%#ejHEt>Z^q? zd~K)Mj3LXV>(7_%o@we_&%2rT^kxT4x;L^Foy(g`|3})7zo*Jy3>GW_?^2+M!VFAo z!pQ?eYQ=c2Mu6(Q2q2o3oL{_s$LS>?MFIDVEtu|S8L?sJ_*4?Uli7`s097Ztl$pXB z^e9dYmkq41yxbi739Gsq1>6By>#XOFK^bAdDO|&N9eE65q3a!fCs&bkVmumLLLT%u zw1ig|Mm)crL$w{1J^ip#{WX82_9^qWD4R~C)ZjkEtvwf`>uk2jvr>*=G<`oa*!q9^Z_Ad_i;VE{InuXba=DK ze|C0%Ti>`g9yfwIDTR0i>-Q?-B^w=Z3wIIeyY?UQp~oH|hA8 zisLjIe_&NI7+vcSe-n znK<&feKGVqg(n_-6#Nglv8(NqQ}7h5sI}k-1-79*+F?+@hI(9MYCN zUqsikF54W~t!`}|O}+mY1FlD((YxGEq)u{$Jr5=Yln##wKPN_rkA~Bj=f@0OlKyAo z^ia3X{>#tDABT4dD6DevRFg1tfZvA;EPUGVYV_$n-0i2vE%xzAh`L->_Djfr)OU!I^U*{rWBYtjm@%914sON1)l1}M5Y&(|^6*1)PnIC(!=IU;g zud_o3Oxbg*c9UqO9!Q1-Hw(Rn)hDRfhnLdwDu&1>0pHn?i~Vt<%xS}Y4!=(y;1vD8 z$p8Cri0{YC+5ES&2c)O1IOf!;M`&`tx5jawz3Ay)^zpqfy{N$Lkf-0%9A&Qm3+l(U zbnVg6$Ax$8)w8l64{|`WhjUPu$RCc?BM7;`W`1wzC!?3>y)Sa0^s6cr_%VoVbWoY+ zomwUYVS>@fvc2Qb`{;C%+4~WmcXfcByCeL0@OWd!+~bo`>vN%d@#~^toqsfLyQg)q z{@$YJBa6697-vTo^y6bQPJRS>kkvT{OWS_K!nt##BBr_G{oB((nUEOH@VB?W)DCs$ zG}4%K-#pZ=2H2^eZZ3TS@71Z>K5ri9C~%8V2k3DHvN*}95DNmDpc8z>-MU>f6mkYi zw>t!Vf3_Zg{xBwqH^Nf+MGY_pyT-Mhj@L}R!l{y3CH<47qCSA~(Hk!qGAoVhNr{l) z3a@5NLY~?%^1w)pXu-y=m48(hg|MuL#}6@EE&(+*h2#wR0^f8Fsj?Eis6et_8|Ho# zqzX2FWF@8SvfeeIJqO(@Q&kk1eTVI|Yu^iG5)P3g{gaSq@dC}uJ)A*7rUAUm{ zcG>qBk#zFB_3u^V$#@q&&nJ8P6Br&Tok8sQ)alFuM2M`%m&}6aM2xGwu6~Pat zsUWZTzVHpmC;wAGPR`qa{&0<5(B!Qe%_%(-9P+uYzukh(95Z?%`%o}4{VFSBz|zW` zl6zIjXR_e;Lgr0J6b}|D!~o*dWNxKQ22*m9!8J%9-27k6s0O0;6UZ}N(^#UOh%{S} zA-8>Kvd#cV>ATuh5?~-lEY52-4jY9vU?^*&bFGVc%`x!&szS?xxux3m0|a0EnVv%T z0V#Z}yKSq+8r{`J_*ik(KQJGcx99)izWuiXSrCDY3PGBLqPv^1Np5AUYurPiko&kO znN)U8L?H!N16Ljp={!6{2UXFpiAx(lZ_tm*L^VK3U}m+w(z}N|rHVS>y3UfM@vS6a zGb3BV{7@SMG}^e3GJrEprCkGGF{2lCR$`;ZRiUHWK}C%aD_rKGoEvM<2AXr0;^AA; z0IFQ$rh{IITNJG5+eI#f?-_2?7O2?fo~`X^nNl!n&1SJD z5cvZzqoDM+BiX4mC5P9*#_4FXbqD1}!{DH%LZwI!VahSD-Ag%F=sm!j;9X zQxuQy&H180l@*@SZ?ZVlRX^eldY{b96aR8!=uyW%!EDcDB1cGP?)ZU8nVN>q@Yu%0 z_|hQciv&#IG2)@9k%Z)xeOk`JsL+tlUy$MNiRRLh%Y}9PblD8h+);wmH3+A>G7Id}%U1VtcL0Ksy1aOT4G8E~IhP$iQG~(f1 zmO^d<=_bz5o!DU7-Y8am;Sy~?wvxvG@AkxCd#Jx?xbm$-&$BFFHJ&4nvAb2=WTy?P z6zNWemGJP`7+;pYd%M@I=8~3@^UITNGO7$Ms$PMDSN&{e_bkynkJM>=$pKQFuwya> z-tIhAYLr&@)PquUEj!>=?DApQ`e-+OO+c|pi6}AvuGNIOFwU?z*E1yio0bW(bP5A{HFu?tOzG_C6#h;CF)}rReNjKA!l+ zN)UsC6drP&ZsebZU(9jb`hQx0R)64yWgZ3V&+S)M?b;qW6pj-n26bdGy>niyqcjww znBbYecA@c^mSz22k2FT`Xy^@j8)UK%y173rMEfT@9ndIIp&|qn|4L^Iu*Yo!Smhiq zJIDwERp6RL@reZj7f9D2NHCx>MgmvJywu-aLM9rb=al9oQ;eM4Wo0c;q4d*{t*FL* zqd07reK`lqG@_CjN0mgA6>40PP2~0%6WEk?dKwbhS+#H=D%cLSR&sJ+4|?2BWq6s0 zCv>#LbaY3rqbXTas_ zHzMd)@dtPEWVi?@)*Oqx-!u`@c+6Kb2};WWWZdycRKIFanXUu6-h91Uk|WKa6)eyc zhvOAYGn11I#mkBr5c zr)2MXag$fvjXt-Zcw?H)mHqz?%O{||XW_6_$Tv4!iHXcY^*0hp6!0lGoLbNvtC%(< zf7O~4B3s}ZrFo6Oqt5q{&bO$YAFlmzj9#WFU7w3!)B5-ILFZFs+_r{wQJeocl7FKs zv_PPoae<&R|Av_;2TIRK#jP~1G^w?0)kwCU(8zo6vQCCKpu_rh2vn9pgaB++rP?2s z{~U7078*Rj-?nNLKD+~}8a3tXi6(iOBMBoslX|zFD^RKT95k<u+G>juhtAm7tSwjo6SZ?*fVl!KsS<;{+|1a>Imc28J3VFR zz8^Z%HtI^Dr)fi^nGIu-J>&A?;Ti3IJzvJoL__z6q<)Y(X2WaBtd`>1A6fNfn-eI- z#e5Un-nncuT()F0DK>K&@vyCkKyI&SErYLg9x@xAYu>c~83VEZ&(O@g$SbmUE~XF# zcor`<`0ukMkh#p(Tfb()=VA@ z9OXtwuMDLTvx53DuSWqRmT(o)<;R|pn~gyZ&8+-Ysz|7(dru9vZ)gCPyTSDkSqTiJ zt8OIbuRg*7JXM?mG8I+5cTC!NsL>br3_v*ye)%}UqqLG!NYY{wWT8^uFHDsMUwSZo z+8Fng%o~A5&4jmNb}slWPM+_*2fT)y2UmQYZuJjhr&w&bo*5LD^V8>B?Cv%P-@7{` zHs(amH1a^|e;W$}sZQ~9+vELUVaTmdpl)TuYi#Eg`JUeX8KzLr&bZ=r81Z2x%{)S# zK|-Isf`>UxfO8D}SB|3TPYRm$JtO$>F##ztTu+opF>By= zi`f)rSvg!HU;FntjmPyL!#Mqj$KE|LOEy2`YbVY*c{hX$#F&-)6C7u6bXgVw0O@P% zW-oez#%_3%BVb(PD!G{(d}of%BH2T1^E#F-t=zNpTU$kO0cab&JtJ<$9x?g?w=@jy zOYQCNaB22G_PFytSk|w9*+xoNA?cu4&C1HCe5p^tvGC)}a8Q@Iamyoat)?62^hl$m z&mP>`e4e2k&t@;4j&TwtP)A_(O6;k6wWx{g5@pOVFqm@4{tj_Yg+pFX!Pz$l1^b#g zJ5-tEQHX`p@wNBuj#AjO)S+g)2+Nmb07Ixp-`5j+8<$gpof_$>4b5(D6Lc!qmDH+2j!4O%&5nv-!1qmP59%aoTPxtr8iYEg;-ENQ?n;`)7Dya!! zi8la)mBd7UEf5V7*qWx5eODsKiX!YCajTP_=9j^B`>NInUGa3+4_$sPNqZbG(8*TK zS_Ai3-{0RC6u~O$820JVOFz>!1g|`hLv-1+DJk zZtgL54j%#ZS>RBwucOxyyv!z^OqM)a5-^D(MHV?1PUz?|nfFlR&La_fr0!nJy81jL z*TYE?w#2lQJ=+6ika%ceGPnVO(fkf9GtzDMYxL>we!2;DVS1(hAqxw5iS40OlUj(v zS2o=I6N}i^%luD9;i67yll`X*EmO|Lw=g#K+%sN)WLNu(&wzFyto@ev*NQgEI@zQ< zjf$3qMUDfujPfW_WeUE>s1lh^V#UasaWyF|W@>y-z`>B>|07}96dDs;A0lJEU}pKp z>0wAL-&K!gW+^PACw)Uc1rBFEL(-mMhJhfrK%;F&#PWL^dnyZgBS_E)f&;sM+Wx0v zCXmVL(da;Ij0A;Y$eCf}mVx@#;}Wgp09({pU}=x?>tmWwmy?j;`B2HTs4d$mQ~N}1_wOh^G*3xHEs6Gwg^8s7SB$&SGn4>~r(gf9!}X+Hf7A=q0th)7=;VK>r5+ z006joEFtB@5_OW*=ksSzO?Zr5A~QLsb60o>Kz<2Z5kVO16y_Q$?)g(grnl*kzcdfU6VZq5ne2C;d;;VcUOJ6=Qli-3gsAEq!=|Mn$3!dfL&$}YzDElB%5e@oSGShducnh?2{_Q! z7E;>Q6YjlN-|hfgj8v9ZWz1Zrk~dP4^%Xi<3JTcl2az+7Wf_cA;NOUnI<`^y+ zBuY;15!HT{3aam#^x!lhcO;+c-+fuU zX35kwY1u?p?@sZcFeyC6LZaLzlwM1o~+YaCl< ze?N|i06<9wt-qZ3=%TbRyN41kwQ9u!^(345HQK3!>=vorRU_(@7y#Wuo=+h0)6B?8 zZLrF3t`T;cSt+}z2pC`1+ld)0JOg2=)XXbnWTxu6eNxhO5HAx8q^}wo{|W8A@yCHJ zS(8dV6z)RkRw&10tO&T2}>8N&Mk?>n>l=ewqRRD zEI9S=AKqgJHx2?6geYN&shj%)P8_tctwDPOqS%b}f~@J}%ZqAIei#c8IIO5I5-XgI zOh2%lG9E7iwJU)6<^dp(EJR&#}n3Ntr5>qd?@jEG45pyDw)^|bi`jG z4_ML4$@-+}M1-(oo&p$=*^GMTGD3KYm%dq7JKi!kGi$^{Ms016@<+G(V=@nqqlrk|T_eEyK8kie1hU%cJt#_Sq!yP#WQxFw zlYquO#MH!RcQ0B8eu|()kAxKKz)9mYyO_=)Hovko%`f`b3N!8hMA7>mip;t#8ZvYpmwSPhWdfr~%V{7fM*R*c2IeSowx z4d>|DAH_#b>zrcJAvH@~RT8o93owtE+CXesC|?PTG&b8WctvyMcQN>c~8NF zv?#@K7)e@rvv15A{M(e9_dungjF%FD(ROcbpItHS@kT7c?B0x!(nlK>;=b52ZubsX zst#mTL}M@3)dx?QF*E{_MBK--cp=u>STE`m2-k7ppTFaBoW+6Nfd~V zK$R%8SgMkN9jvjX_9uh;-+oSy2GJD}Fc|y`GF0J3HifhLczbR>cKHD%hmdK<27g^*zImxq+oO z=<*c@yiB?ES^$}xBM7fko2lr6Xo2a2HQN^wn z?E?9V5Ap5|S1$*%<-(z4c#kRqCSG&8c@lhHk31s8+zvmG%(r8pInk;i-IR zUlJgh8ekFAwMh&~W78ZqA((_~#3+LXnleV9`o+f+^>??Q6Gf=j;F%WxwDP!k%D8F7 z$sH3}w6Zy%FP_DiWlQQLeK7@dNjugQP^vF1W-2z|F+}rk=k>e$#WoclF4Q1+)7)J+ z>t200UU+=@8SeP+VDIYw<+bF|+`UN9RwsqE8_lpw=l7gzi3ES6dC14P&jY)Rbbl>; zu*dW)$P1r393c@1OQDnB_Ac3B6`ya>+ap)kJnUP>j7Ixv?^NKuPV`?zMWX@Wnn3U4 zBDLrKo!p6jt8a5lgB*c0glG&!EG`1{-HUh=+mK@>Uk)D3O+8ru-~8#6%Gz0Lj*Lqt zQj{h=LM&|UYe8mqx6D3=0Iea>U@5zlA%Ae>!N}+I#am|vNaqEm?80Tg;OgAz-xzE# zke#h~I7m1#f)XgI`ltOq!5+PNP?()?Vm%z{LQD-3#z}u8o3@@^0Fni8`yIjLP&$~V ziSzqW0VLA|V{v+qlBE|gReH%6k)uJT=;YV&8=ZW{Gx%uItf~}kiyfhtizhCb9=XMf z)~x@)$D~g}OxmO;E6D+UWnsh%ClKQZdxT0vyprrXmK>sG84?V_q?0dr1Le41D1-{-$_{J zWR&9KoG6Su%hGOY#PpjzoUTw>PqPeax2x4^=`}pkiZ-vFHfx23%W{Q+xnT7y#zJnD zmmevrrO-7iXRVuN=s+52;E57N8cV@c+^ZS*vT#8p`9{iSM)sQ>W7Zsnn-@-p024pI z*mpnVoS~-%*`me#JRC3R_2ZoY&w}eLBEX~d&+OnAym2dN28pQakMG?*J2BT#@7Dpx z7g&6=$JM`9P6`HDxaCAZ@k;LIOEBkBZ7j{ulsc}3`@qqy!}+L+Ys$hT%>Yg=BJya- zdRE+F7)YQvK1zb=XU~Ko>0o^yN@FW-X-dq2n^w5g@6Ro+`Y4+v{5xB5fK2(KT~n6x zkXM@9JC2%%OV;VeMyJ$St2GyPLT=ioHkKWmF?*225--304F$6~S3Rv;pDQ~bxqKdI znw&8yeevQii`u@C0{|4lqdyV**b84#foFh|Q(TgDd8f9O^5qy%t69s|41OAs|1mZD zs`M?3=Ic50s-QHKWu?%EDez}VkFrj?M?-_jZGGnB!MJeR zA6qeLw3q8YlMO{{yshUr@25k(9n3Uw=DL^o3~ygk`>KG^+4zLgeto8fAH2tZxQK}i z{yN?A@qc{qcV~Z*x^KqT6#6c0BS}X@mYz1>0iyWoZ3YS^3^MlOa_G`#3WxS}wCy%y^#!Z8jdgVqa;73q`=hX_soFSk(nF3C*%DPtYX-gUNjo%T z9j=5H9Pr~pr6s(_@LO#i%7!#+oy$CaRfE?EqCqn+mx>DDmWAkGl0a- z<9I?|3L~;%1aJYfE=kW^1sf1FrcjyMvc*VI;=Gh-0;_qHZL3(oti8xjH$OH;U2wfZ zjB*xAi2{~8_g4}`zq;tl;LGQ`k+70Q&w&pvsfuJ2MZxBxa-3yN^Sn-vOQ@67R=>ov zWXvSpSDw}6`X(~fiO+BS7H~=LX>+|dlGDYHgnUAH!PJoFO40qs0m(#r z))O=cvwEo1Q9QAI7@HR{sTm21afl5Rc%WXcZ!%z<&U7E1-eD$;3Cvil3t9F+M%S|!uFD1<=pLQiHbe#cPf{85Smn$0|6+LbRqR@FqsnKXf}8( zmJ+ta_lJMprW|va(Z!Nr;hCW|p=|iwqU{(%6P84^PyLxo1v7M>y1#Ak-MF1+DsI59 zB|*0rA4RKdoM!hei+r?aHN6n4NIg1 zThJvlYV|9+X2o33GiFCPh%MHW)pZ&Ub?x(q7h8xL3!>+=3Ql=aX3$coQp$;mRZqRH z;3orjdJ|EqvY%Fw@pb`Lv}~*F@T{(yUiL3iz%hLLy+Htj9yWnOhXP;_7h!*y@8}#^ z9p#(6^TrB6)+{-Rvo>zX5(4)n$xr*_T&|ZSxiJn>kE>VEQ$FZ<9^C%%n8X>L!&Fs)Hw4`zu92pg5uSGK#TKS+==YxHM03Zil%AsCD3-@ z4neB;;+%Fu^#dfnq8Kr-tw4`lX@^?rPS@akteKyswDUP`X*$#-YXI-gavoqF z`;$>LWIJ#+MVbev3utg_@(`}Q%5%-|h)b48-S%)89kIn!l*^N`aOSYDVa&!<;?~Z}e{exHP&0+qGGNQ2b@oQPU&U4+d2H59vu4 zG5I7V^EH2*R32X`p#EbpCLS+_^RzGT0jc&kL;d1ib6!aa++Pe`y{`H`??2HP30$#W*@oV5Ew~EAb?D{U z4;aGxlVN?22H^XwZ|t(xDk1z@4qrJ1GLhS^31P5{jHP@Jta?x%;O{~q7pMx%UQ(~V zpEK~8AvS?g<9m{J@Z>x8^G{vH%!P370zHiA+*0Yrblsg~Ibl6;E~1h4seQLi;J*o~ zAJ0aX|1vA}_xpQd*J-rl{`f1FH^a@ua) zLL9=#`-}>YMEu#F){p6c^)UUNyR5H$@(g`>=kygmKl`kMJd*TW=;@9A4XGLX%S#6k2}(qDPl_QEMqkt@;=OQfJFv1!UA z;P=Z!ANe}Rm{pb_p*)=j4mTzo0U8>jnGZVn*Twca#nyUoJs4yMG;{A8Ur%it|MDKm z#q5?RrYox+k|QQbL&mG6HIR0()JHa(eq9@B8!zeXlQ+Z5kj5MK z8w>lCrQP)e$Bh&XvUhFtOayX&{qO}YZ#*E5Er_W3m}@Si0u?(Hml<>_#nw7wVd99p z4UZESZkAL`P-{bq;V}A09^0r%&QVQ7gZU606y_Bp8p#Kp}YENjLKMO)M zhopSgmNS766f{c_IdDq>{Tf|Woo!kBb!-!KRCQLGs;?w9fVXGg@$$nkOgt}8WoR<~ zdP=ejeY(EY6FP$eX2)bEV{b^=kdh|ks?p(;&Xox_5|vAgdOaN1`-ucbS}`40JK?fL zUI{6W`+x}23`ISx1t;%BHp5KnTVhj|lUFH`JjY(qpimUz!s3TA!!7~i8VRBUU zAzf>=K{+#84aoU1+%3mSSE}M*P^eaupCuM0wo1Ebi)y3VyLwU9;KRkwHG-@Ez==8T za`Bi;$r9}pTlNm`2|b;EF@K?!kly+o4P+LaJcK~+t`-XS$>3otLf#d#5SmGw?SV{6 zA!gUKRN+Mii9fQ$>wCk2k6#8e_}#mce@IoPXq5tCq+9|ujJ!~XtntT(nwN*#?kmyU zZT#HGI7X&{VZ0F)0?xyO+wr3}4C%E%9LZJ1GTy=|;}>b3x1YCmwRX>nuP__oSxckkQsQs^|ma=JY&o`g3jkPh!coPYbifp6W4nwJJ$h z&HhdHW4<9L<7fWQZF%~f?DdXF14;|AW~YU+#Ic=n@{62OH#v;`F|_7H6XyblK`KU z{G}+~vjnGA4}vpt`wS)9GXx0YJ1zQ^c>TTB&mqn`n26Z7A@pap)4lZa3LZ29j7*3K zd4k%WU2tl?OyyV<%M=qWrLYz+PXv;Yjx&3((P?=?^^ri(T`VruOUhLxHcFWP7C5bf37|F&W94~dOP zKANaI*WC9UXH8`CvEB0)Z*0hBr^9^0$l)vfZh}+TEJeafrRi?|@M|3n^900DN+mys z35Q-*A3BgE^PtWhsWq|4-;~99fhYMc7w0BFZ$0di`OB0M=fqIU)=W#u7ls^h^2itX z?km;(-Mtmv{+HcSM-aK4Yl}O&{dwu1BxC@9Vquku2daspEt#Pi5iS8EgYz%mIy4%Q zcQd(18!7&I*EDs3U7(+WCt`pmdZ{#=-BowM=)+I;)MSOZk^*!Z|sP_*p+y|?d z(4*Zx6qMi_;N1%}LWEMPTzpeGm7xIyvMmP~X=@&^{_Wi=s0eH|i6 ziPa&0=jCmUS)?getu=TH7E82hT;`s4pHlS1Mly>>Ynv_Lh_wBvvX<{MVC^CDr7&9S zQO1dj7!09_z3K|!QBt9!fa7ej2cQ_$^m#Opa1uc=HXMdQg+Qwy)#e!2prXf$*}94{MpV>Jv$r~d4NF1=vsx)J*Zn@kxfx>u^$RX3PqA+!wt4&- zZ8l7CUr;K@2{5dTEgtH#PM{@89ZKFLOfnZA!(ChrH8WDoK-zERlmt#`AON~Yk0-YD zTEiWwIAR%@)_4>^sK9O@)Y_CS{NF!#tGUT-S+w-R3YCnMw#GE5l|Giz_p*ixNUZEr zjeNK3mT7JZHB<*qF}^mXBXaA`bo@1(YH|u(TbrMc2!RP|R}#NtADDHDYyN}kp=S8r z9{Gm#hHqJ#TERdk9Acxg`lciWYvk0}!%=^9d|D#+{-X7~5bxSExZdDbp#t0gPTlMM z`}p`c!xZzJZOc^`>T*pSZWy==84fZu1z+Lf84LHah3`F$m<-+|QqQIH=Z!Cuz?+Fe zOYZFPw-WWBy3W>NYYs9wF{we)!C9DUMJ$T!j!(wT5UtT-Nk_a>*?1HYWEUzwjWx`mojVae|w?p(T1*0|MAo5?2NU`D>^0=uiNhR zr%`7ZEVcgT$tk&b}&34u#Gv} z<$5$y_ekO}1xNl3{sO`D6WY2>Zl229YUUz4xw-M}ZFQma7kEaC*(5;YW$Kc6r~) zUUd1pJiv{6Hd2a`&J~;Y$LTGYYq6ZXUgGAy)JVF5D@k=7ouF*@h3c1hVvX_e@JL5b z&)C&9<^H~ifoZalr#HERt-`4=nGD7UB1o$<_z2d`&E4Z{AjyUA7Q(OZVd^Vk&pHxI zplmk|6SxFx!eQ!tBor)~C;ItqM>Z%QXw6~HLr~z7sYre`$3qC4dp9SX+xKX$Wv(0q zwF3)~y#h$ki5kSg0w5T#1$FG@@Nx^e0oGgsN_jcdN~Sf)ho0|;@mu$m=`>@ejBE*# z<}oBO=tZP=7>>Lf78*!p%V@Zu3$3jJG;JhmQrmiXz&-DcdF!pD zR=SgUg&Dm_F}>CG=Dh>^s<^&d{sf{Pr+-f9e8qlfR94}PP8oyYL5-(?-Jt}`kHux- z$?j_Hr*Yv|teyUN3N?zg(y7vPHj)eo2X!a-!GhVf4&~8JGMky|{#%Iqj<_TEe=$@! z7Xs1IhD%!7I>JsNDJhzVN7y!8`W|W|p$hQJvccF-3vYOG!!#B=zW)g1;iEko!j5DG zgk>Vrv_f{`cdTW)mq=g)?6AcOoccXXrGMLlk`Fd+x4$B9ERS zMC0kcqZM->%XX`!_SI=Dk=ld_i zNE4a3w+;J0A%8*(zg|~L46;Vb-8gJtaNjk7*{^=X16RX|`iT?+Qmbg5J#ff^DTbIv zhsjuSOAy-yaR|*IQ#4x!OO^GHjj=_K+YtzQC8v~FU}0lfbA4r2B~EclIHigq%2XX@ z&RuL;*F22Ygz{Ib>N{J-F(_RQ53fo{RHO7%#Ay{7%gt0adi}F#h#H$4hc6z8)Zk1@ z8k)z*M05iFKL8g&=)UI%_trr^?0-dafW$X$+1i zdxR#_f=VtbSDheNq%=CGQ>E&|d5UuZQ*e=NzjWc5V=~(b%IZw26s81b`nP{c{c--T z=aX7B(jk-up%WNK(aBC?Nu;45Oz-L#7%2r02PbH%UyZy#6%+GzVP17O60UNmzWGis zr9y?b9j#V_Z+_)deDSkSXSGZ;ySqDVZf+6B5n852=5(S`H&F)r&C?|?N+p2ANFa~P zD2krpTyIUT(rFBU6at-O20(%kF=7N}e}vc++`4)fpP%8^e7w3xYp%oMLYE^)j&k(K zG1k`BnP2GAYPE=?kj<_8+*JwM7=l_YB^;il7PL@WGZ^(*UpY#%(;?9bNumLt(dxpCtrORLN5?d`I?y~$uOKp2T0g-9<=6PMCMNQozd+y#~%*BQCd z#k1MeZ$F^kXwvP@r#q-MNs1t% zO81yh5DS7S%KJ6BJ$B96`dkuYgQ@NMi!kcxxr`-%HULI&~q_@3l9Kl2RV_~LW4TXh5`D;#Io+`7ZyU`Ud6d!CFVu*OYT zY1{^l0&eg{VI-{oAT@Sc>(n4;zwmQuUE09Ya$JW@QWFph0inVhK!0z&1dhGUgP&#Hf7&2ZPvD4dPb@>S0 zxh~@fJmJ%6uki4>BShhlk9_z9LP%B?dK^2l&y_0|iFJtY)sddZ&0Dwdq(TZos7H*( zGA*_zJ$yfPJ9(aUL#4sP0+}gBW!Hlr1o(lE5FMnHD4n1ZMI0xD;fV2gOgK(EaVu4j zLpf=5jmgynVyr-+htZ)-HkPp_C#~3QbBpEP-*q#acs|*Df&{(3xse$o&SB z5*VAkl93fDd>bxM#C~MeXr&-?B~Uhyd5QPb&{;GjRi7*H7*ur4UyPl=86J^U;K%AQXHc+-ARse+Ly z9U?Qf09i|fI8M^InsG=JMI>>OrLC(>8JKQgXniU<%`60&Y+FT60*dW++%K8yBQ^B0 zIArH?EPMVLTa|`M;(~KN_eo{3Ay&1qgvG6gW6zh>lJYpKl@!dT6tm@ATeKFK5hz@2 zLUDKJpe=G|okfr;Y^58yRFP7pRn&w*%|(5?jG; z)%3B#`vwo6-QW*@?~9y2vysN6XpJ(URDu+#GB6q+aQEh2qTv{{MrD<4^I!HjN=#<1 zQUYW{91B&zbvdO5SlYk=z@#0Wvv08JxA!#tT9~pML1zZkI86joi&TzF(At0}5lSFp zO*l$8=#SaD-{Z|Ut|KG_HIG)O$>PESODk!h@apmkiwkL>@KB8z4aX!}VQyVRN?9S;CTT;BnT1EX)e?4E+C~~dEqEZCG76q<6zjQ-`{6*`yPH!M=Q;E zG$slaVHg#$5}w5OeExs--YnLZ?7Z*$t+i^}^O^5_d+z2;iW14DD3P=*iKalyQcH^M zh^8Iefe;}Mk|2@+KRAdVf|zk0G9icqKggg1_(4t{0trG4NT5u|v@DTqv72Ofv%7Ei z9nL)LxrVh?9@eU1?{jYVZL*v9(mEe-?mfFs?W)>UwQK#?|NDR6KM0g(ZQPG^xiqX) z4&+(KLP+7*92o|*J1wx%>x?v6o{`R-SUAm6imY$|tvqkbl`{U^Hl4Nc*VIE5e|9a- zgvDLVvi*Iz6>KAYQeE;=+*_~b0Fzt*J>~wEsg4?N)F{i{f9A|}>Lap^pHi38yjT3G zID;iJC6n0L-vaftxRu2%2zfT8)ktks$6u~jen&jh^FRWaLA%34`Nem1ALk(E?T<%h zSNKNvg{mCxJkH~XF)m$L=kw3}6d(Q2Q&?*$ilSyvjMKPCp)l5PbbP?^@d;U$fvknP zB~Ynm(B5RR%;Otla3<1%JTIsRkfj-IV+Ou3D;LITKdHr#&Hg5CK=nYTqUXy}?lRSd zPc`^KQo1aa)~3=pr1PBdXwJc%L!^8Kp#)(V((WX5dp)+cwpiQTf}PBnl(e*Ds)LL7)P{Fv40`UA@R)aDm{eq9`(y3K)(KxwZW& zzI6oq4HL^alnnxzoSm#$- zJ*PD%4W_4jT?u7nb?qBmQgu%)utjG8qlJSzW3SckOR3X}38Q&0`+IeH^9{h?d|$O| ze^@FAFxp)U%LCYnHwptDwO8(H74UY(If!|Cqiqu|W*g^%-t+jOj6t`}uYB&4{M1i; z2qAD~yVh1u_~o7$TIX!<-eNMHV~ug+lAl~#fy1l%nx!_yFsAbmyiald{q#-N>N$se5Bnm8fFxXhAI0y zLtcCNW|e~KblVL2JuY6n$i~J78yg!8Rt7x({De@2NF^{=CrW0%qWTVqFSK)H`|L0L*Hu$5y)b1KZy@hn9fpe-oD8!oi9KQ z@>n=+LmU|ukvq#W!X@#=S9a|V!cMBIv5SzTd$ zV}s2Ln`~}uG8nj$?jR_b&r)`G_gs~bu=Kh;R#!GzU0Ej#Bf@-67=&b5P826>ZCoSI zb9((AS(>uBb{QlXQ}DufzRBU}5M5}mw}~;@)D0~nsehVpq3L6FgC|e--~DmXO8r-kN_ZkJIn3*2~!Ht#$vMhW-XoS2WcNtK&LLS+smK zjRe$bF>wXN{Be|3RN?_EqmH70%Vy)QANZY$a}e|PMQ9Zlvh{No<~$zw5JK>&r$4}7 z{e@4n((ky3qLd(=5Z7oAB7{p%AcPm@YOK+mjE>m9eLy}-(WcZrG#gi1A z=Ez-a<-26os_gE&3~cRyWt#+}vVqb(Q{L;3}M=1f?Y7(FBBL z|7e>qiV0=N`r11CNBazVE3|BjR@^3=Wo%uz$~T_-cdTt}5=RN`jSgFzSGalWWhT=x zolck0Xo%J>^^|2P+7uLNj+xCIa49RGREP|e>sBn4tK1T<8?X@?AqCQd-#Cg%;uiS& z6XSc;s04&SLS_9{rVX@TTo8^11vB8B?W2}B~08A1`Tr}$h zR=q9TyZZP#&;0twPA&i4fBH3E{Q8|U-}6>M%qRcSd-#c;e^>STwHNmJ(m(w2o4)Vw z{gY?zY5Q*$|Lnj2LvDP#W;#CqcR$JXCpX@fZQtuY&x*)Ktmi8nM91&wv7E=1SRF~g|%4Mw%j^5=dymJ?6ctngo62e#?6~Ina}2~3dlHNto1Wn z*~r_22P`;%A*FPs(fHmQzJ$8@@UDcoqJD@kwv=~KJ@^}+aTz?7X^eXIys)xoZj6Iw z#_eAU>CA(dz}VtGJlC`Ecd-C;$~k>GKwIGepa#%@5X|N|qtT50-6O<{uOpQp2qj6U zMZe!;ZEc;6jdj-7*BSKtv^pK4Fhm84y}ezek_>t)Jo)%jfa37vki+9W^0eUa;1F#z zT51H6D;FO_o7|^^KaO_t9w+OT)9%WO6!2m*{TjMFhn`aU#L63C#^)|5J% zsyUx<-I6Q4k`zR7NE}D>M9-aPV<`$(0hOh>6AEVqT5Gf^*_x6y^UPT_crSy2({9_s zy7X7YYE*Yh$-YTy$Wf*SJ)2U)6sqzzzjg_tY;`mZP~nfQh9wPfb4Dt*x=$LPsnTzO=d#Pkivwspadx(c{1Swf~FRI6L!wZw16`T<-Di zk6f)@pEC5iOEll}{Y1OB*rE8Lr#5-lk6n3NwtcVryjxt(HaLh*xEta>kMsCJ#@e9E zU;Txj;*(E*!1YPd8jY<6q%w>(Rmrqe5^H=P7Sn9&uSnB5ySuxjXQHg6$QSVTa{N;nZR2tZY)P!C5`jyAw^qr*PHSOD&aU!J-0Gh^oVftBtbG;y}z{I!-y>KjF1kZy}W= z3KZ>jLa*OrWp$O!%`FCNs|*Hxj*}rfySv0uh(!@7OAy3-`^7)S0xN?Jtd_Kr2vGEN zze>ABVZw#2tFAm=D%zbM`}^B$ZCzqIpR&8VO%k`5r*kIL39~Gxv`RpLk`fgJ1VQLn z8WkXgYhWma^o)(5Zr~=J?L!nIy25E{jHS>8MP7Cj&K*;u3$(Tipr%Z#l;^!!W!Au| z?mBr$;je&yU*ozpuI+-3rSVH;ae%HFnuV3h_5ds}FI7*OQ}<2t4tA-rQw+}1fs|{O zpsGwkJrDpU3In#xDv=G}@qMjb?DBJe{lonB|N3w4y3Tnz>HCkK>9CS_ISxnn`%uo~ z&v3Moh+q87C-~gYew;WAowmhV5E2D$fDsKhT}#!5-aVAPP|^x8jz!TrWjdQM9*@CV zFA5F(dXB}ZDp+jYTFiO+;6Q`)0!>r)hmi=Ou?-`^QvcA5>Ub#Kd~Nk(kzjmBS#%8~ z+}0|4L1V2i&0Pi{7HdQ;;I(2Qm9)5i^&5-Yjk;X7$qSV%kPxD7^Ir{&B^awWZt*QY zOgT6kQVPc7l>NOEq`HL^k}wL0TM^w}kJZ%`*4Nir9jwvocWL)J#BoF%B}~RMc6V+& z<|b5hS{+(Ri!h8B^jB#mZKhLyJp;jo3s>3NxC}zj@4COI>71SYo9ylF(`vP`)-a#V zNRotkIw#F7={O@$5+y{%(5TW6O8TzCJ_RMEqU26(` zIWEs%D@{v@Z7K)uyMW_`_uGZ_u@6WYbt{Qk%lkjD{eAkG_wv=>dy$(j9o%)Da}e|W z$7rC; z5alSaG~_fX{5lQbewwq~g^8|h4i?UxM^f4yG+33TJvH??Zaa$&)0(fF%VBZ96$ZwA;k3ggA-` z!_ZYrMYl+j1SKS45Rex+gZ>JEid@MylH-#jHr6ljaO-g*m2lzWMds5P)A@vUtIue3 zjHcj~S6^dgb-?I&1On#s8A_?Dw~kbftx+oQRZqU8TS{+c>C!l*FOpIrK|7>HyE@12 z{wv7yj66-9#wK@6jn*zjrM0FK;w~^5(&I)^0mZ79@RCGkA!R9-?lZe=V#!@4Hm87c zMdNVx8=4yvCAV1Ps2Y<$01S*$l2#DY&$>U*{r>82{3QSI*Z%J}T;~S`V*c3||BxHs zdFxd>%UYB#eeuipl;Zixzw~Z?^5@@Oy?*UG`+Vt(Z?4@rYoBiv>&1Xqx!s_&&*MDa z`S|FE-o@YiE1%`cr46jL6xvn&xM~o`Ob97z216(i0wn@e5D=Qsfef5BBqXc^oB-3Q zpf_0MM?Ug2qu~j|;R%z`kmKVch9@J2$46wd8R^vZl958XQsvT8K-Z1r%5TPL{fns> z32WhQ#*j_HBd|o_ORUvPli0;s@o7y=`H#hFi&d_9pWCEZT5(YXTwd zO!Ls1?`!IR%D>e@Pj?JuwU;iZ{~65ZIYQ1kJ{j@)YqwFscL;)jR+7-|c3D|lVP$oN zwY4?6y&j!zmsUF=NfKB39fqXyIfsY)wA&qolFVjP@;s#|T(y=iU}a^Kt>`+F=?PK< z#I2C&bk5_CKFQ9`9pX6V4oUkaYF& zb$;%z{|LYHTVH#__x&J1%#H8t@vT3)`TcL_9>K-Cmvl1IQTn#*e>oyTR`VW*;qYzW z_IaGgayT7L$>tgJNzTd9gxj}vk;?V|iCZz9UYC`X0c)%43|3ZH8LZOnwCHpbl2$?#MFe5M zjn`lCEJwld$pIVd7YHL~e0g}dj|u}e*Dn!;36DJV6xw904K|76n9=l@Ten|leRY$= z<0Fnv4lzcfwIldEMtv$EierQL`h6AKA{Na~ zYweC(qtuk$R{$e~AW0%NrYrCGz7DrXy!iDyeC#t%RLeg7%=`H2@4dvq_8X@;&eKWX zdu--w=K$tB-qG0FSmm$%^3U)SAAMhyW7k?c(W7>0BG=DD5D0|~BvBZ7*JFuNvXP=` zPzXy5Nd-7UiBS?`0!(O#ql9j&%f?`XN3K0Wnx>4$LynFQI6Bzn;9!r#!vju^ju;Pz zoE)DpolKZaXXIJFltL=8Q$6z)N;tnqY7K)M6dHX&Jle2UQ)?CKelvbkZf+|qrDtUG z@71;txF%`NuE3=a$Hu}sWf$5- zK-R3X@owH0*T=O42YAMPN&1l>VTCM_tWe5=ykiaI~~`r zW}b3*bc_lWNfcp?B`b2eog?xhC6MmkisKepo->=x*xI%=JQ-EzB+WA>voY3!k^xeI5)mo@B}1gDg~E=lajc>Ax)!M1ut=D+q0F0!n;GqF9%E6%$AY;Ag)|nZW%d6Cls2~t`qvYK# z7q}S@VwO`s)fu_#w(9gx31S-Ctlry96*UCFZ|J91Z@21dyRcvC_uKkz{SPiKUoD`q)7KIGtV7b(jgID)K55d~N? z1)pY8N}>YaQ5e_xS*gIMN&TnvjTog;L@FRoY7LAr23-^sW$Gy}D*q>~HM%H#W5+kY zZ%N8q58x!8X{LQ&*l!Msr^QOcVwTbngeUueFO^X5)gHtf`ggV7G4II^ft-IO5A z0Tyxkp?{{X;BK*;;sM0zs-;p~TZ4h-`D_Y&C8s@h%F(O2uX?`kmc7Z*I?UmLov2s= zcWg_?Wf%TyY``CfwO~b+wlLOUgoMJl&z=@cCn?8ABg8Fddk_SYB#!8IyYzets<+am z-|f@wb?NrIB<(h>#5Ljz1IcVQfWNz!3` zb)7&4>>unAgdxW#2S}+HPex2Qq)yY%G)JW6;S?aNI@8d zL{a3=j4SKbg#$0HyxR+f3kPo8-%M2|UuTz=X}u$PvheJlgk^dPon@pS#G}l<;6t=<&jFFys@TICA510jzVQGvHZb?%pE6U>M zazxUuw7Tjtzu0K+bm{9NyRvjL>tk5jw`dM{lq||w+bEB2>3S`TOdGn3GM%-sng^rx z%f|MsPoI@|N;*~zfxGBHo(a-v&SW%a=gyw99S9^z6wzw87_9W^_InKaJ-Yn?-EN0o zuS>7fq1EmX#SzCRBf=nb&F-RzIF4y0ZIUP^2tvBuF72d)k|Eu0M!VA{&*sE&Lccd) zJQ;(4G)pP8CXgW~C;Mc%6YS1r6QoeCd$4khq*4kgd=tJ(DD0fl1^9HKW3|F4@O^ds z_eLAEap@+<*k}r^owg=(Ag5$%mMhS#Kd+@$>-1%{*k<|k(lu?qvC$Rg{s9=JB!Q6h z^bZ!m0DS3-f5_kc$G@_T1QGnD~XAsfH)2bRY1wWlsR;u!9SlKK$}qk8qW-z8j}6rr35Q# zHm77ML{K)W!&j8JJ~6qU{c4?KOo1p0tW{WJFiN3pKpZD@J3TfxHY?3SmS@c7GbWQU zOrDTS2@5Y z>jC|g|4tpodl%soGj)ncRKG7bG&{wXG?f=;g38m!+tk=J%dTsovjzM)S%hvinDd8h zp)ruwg68_3ajX&+SALIn0I>klg4s0V_+-q^_C8WT5GcYpByK14x;^^64!vHFUf%(n z-e5qt+jHgJiPvRGMHmJ|QA89vYl7KqO1s^nC~{V$Vl_3c=*oa7nWGcVkhjJc2 zWU(=5@w1^_a zB#zzS$Ho@c81kZUse}2H@o2=!Xyo)X!xIjVjyO3yV)xDtnfjw-lSC7s)j&>^l$I!wj@!2`>OomZC>rJOAP~7h%yYzW%7Hklov@>T zRwtp`>pDQw>(T3V=?{AJdVTtXKCO0#B#DWl2&*keClCYy(^du99m3cxqw{;aLlybV6 zumm*H*-TjfJ(Iq7jtT;j($vxSp((sz*c94>o5EK_IbdVTrjpe~tdd&QJ<$ZeemLG5=+&{6zpG zkXYZ7w)x0xMg?5_py?WiIWxW@FRJa8<*lxTeBe?>__AmqlmXfch0Ai-Ja?U1wNk!K zysq4>OMfJ6S=w5fHP*)k78OM#tqy`UxadWg+6@Zh>4aOiZ}HWy{A-^3#`73clyCNc zr34jzG0pT1)jrEfZ)uGnEJ)#8s>>8hIl$B)LzcLs+$DF1iD$E4CG%oSZHhlidx||- zW^ z3ic28h~oqcj3*~N@#vF;LCogHMK+9Ko=w@=zr)7bCSeefrgLVqDKZSWvvY^hXo&Uc zA!FS4L`YHfOLB~i)6*ywAOpuH1}Y%%)lVg)RYE|ZP>~|>%!->(Sd1C`0Nssyqaj;@`^>%`BtiV{YEM$(`+OtX0JAge=W5y13gP@<&3Zk|D9q|?*6_8m$U>} zYy4DtMm1n-c^=A_LikhKq;DGcOhYMS8$hTk1NJPH-yLN)W_*vA>c*o^lnB3zTo}@{ zU_6>3#Br5+jN%&9bh;fneFtt<1}hBu16I~n=yp5IvXn54P(qPqb6$G+MS>vW*3K>G zj*VeBJmOtXz7Hh=1cKF-b;2kD1HD$8PNxe(FrCjBjZSDK3CF{+)7oh5bTY!*Z+P8| z6w(8E;Q>vE3cUWy%IZB1#5;HIxCE)zROXegH;tw!40)crhJ0D(QczkuPqGp~`s;LG zH822ebAJKM&6f`N-GBNg3#p_}Kl5Im{mPBII#!>@_ZD5*VU7_7>5h&pwie)*ls96L*_(&l=h&ek?)YQ1RLBtC@F%(8K znM@cCj~Nb+m`|tVdFHBraOJ6C7=rgQa@~D1^2{>BrHq6sO#&mrAof5ftVNWSn9@Dm z3s)M2@Zd!ojWh;B!&eEwSQL%{5kg|DVKh47)}33tdgE2@+`i3poRSxY`7EW?8PMuD zIzKORS3#1^F-1Y8F|nRKfCjL0DFkPspzAbJ6CswO&&qGwQZpsZxEs&aSi{zXdcArR zyfn2mr{8y0RDhyhu&}Kf=~^m3AR2G6jS}tZyetB$W^&OOpJrMTDwlA$K2O4@KpYUQ z)Erext8u(mlV%0u@eKAHsByh&B&}ApE?7Bc#S{SGM z!J69qQ8-PjL?T7%nHx!<6hYt`^2y4z+gT=*=hHEmfj|BJJ7rAO$H{0zt_yUgNz;rh zOG&fbX}yfOk0M?Z5c1BOH@;c?{%=3W$3FAqLYLlW{*#Zrsm;JyA%lCIY5W z(s}%uj7Ki@c=|mTX|*NOJY_Bewys^}`n89-cIgTmgH<}MmM@cT4h;U`U!?>rO5z82 zH{&kN6zl4mW@>>d9g-HA2Q9~pM?>bbIi|=R_aG%f5EFzkVH6WZv77CNfztyR9SUvP*tkd-$AsaOAnY*DW@K4PSmbU{C_0oJyeyojmiDud-fDuV zGmdS6sjE?p8@&B&zf4J1n|MQds02GDxT~w0mP^{3$5??P;eXTaFC|kXg(S-i)9H!7 zH+`?8(5F?~E!v$H-Cmn+r%Qizm6erM*4Nh<4Ehw>GMlB0Mq}o)8MlL52+#C%+8x@h z4r?oGL}A4K;UVMcq&&z)JZPaJ--JMWb`WcvtCroX&A@Ul)*_6ZM15S<|+frm1 z#yZ;pr2=of7ZQXKand4bbqRvV`5NJp15T*x#3HtA;jRnc+0^yXz`BmWMr&+QirF0< zE*k^6@DF@^CtPC6nAuL3?@UF(jcdfM!(Aca79Dp?zAv9GQ!~-*HPp64$&!W>H<8I5#{k&?pni@v$IW^WEjziI%0yQP=MN)Gd6eIPBj2G{$Iizi~CthFO@*rE*^K45VEHat}f+YWQ1H6 z&*`HU0E|8BfEv|X&GUwIRcsy@8tnjHk!Of`4ku#|Hoa9s91sKQdpXWrP4*cChxk z8n642Le?HofkFkccJ3BVgfH-#n!8=(cRFHo-+d$(;&*=QPx#npo~U}m06g>SAG;@; zf#o;{F=t0&Vn$5w_hFpJeTpcQeCUZyu3k-ux-G6;f0)OvKgNZ%bq2j2tsruqM53nH zt*4ctr0~l}zyG&JH}yK0`aus^E7009NvE8goN&0m$8`Vwk4v}j#d;~1mK3b6Az7K2iXSSnN?2%{FUbPs-07>XiC7nx^A zw0Ft&ER9#e8tZ9!n!}-E0^%qpjv|B*tgWtb<$7M>X)Hf^}Izp4RSY~4ypSUL2Xd3^WiiJV_4WdcKRXMN5pG(%M1ixp1m9s-O zcH9&ei&KE>6z6m59MmZ5l=j9#37Ca&z@P*V)~8IZaeZnkl<$u_%L-=GIYNvb10o<) zz7ua8k|Z%nt3{{RWp!tC8N8)tm!AAXtt_#gaq zwd}3f3@pc60Wq(AXP@clt%04ly8eR@iH+~~A)Lp32r1ynhX*|IXrHai7kTuNM|t$} z!>kVmv=b+CRk&1&Ig3Is$1G7R8Jd%5Xbd{l?AI9<7Fsi&&)MJG<@oTB`Fw`)Y>N=0 zDuGr(NEj!?QS2V(VML}i-?{N3^DJj$b&HkW8gZPU5N?DpzC*8U7#redrPe@RXi}3q ze??oa!V`DsM^30Eau*X8sY8CYQ zU4({fmoAg*oOwEDHk)xW8gX=V#Qy$1N5?}Z<0)BQAW%r*JbJ<)rqk{s5EV#C)08wz zna^gV^Er8zdiKaylUR-Q27w6N-y4H@ld)JBoXdX}0O&GESRU^0MJRK2obLR4=30$i zEHNpkbT4)hT%6k0JycSa%;K5rEvDMsahIUE0S0XIMdMpy7t=dsdev>i0nefk%(EQE zWyO%I7K)-*2&0fBcHM;?s9EFU#Vs~3Y_hhoNvGWNrDyqGBhU}tH9wDcHm+Ul@c#F0^3+q0@b1Uo#g(l~bdxqw7$B)1n4-Zn zSleLGm!j?iQ9tCWzxgs?tp(b`(eXaJ``b)TPROzhYi#A*tE57OF{)~Y*CLKvND*Kq zM1dlkO?mN!=lP?5_f-lD{lO|*7cX-C+QVGFc#X}K3v`keVGsiKfZ}u^uGBd<8i92E zEegxgbjXdHFCr-T=}-N6!XQGKfGjV_i#gUe5EFiYvA%t~DZzp)?51ccKK7Cbq;6|BK~Q}k%PS^CqpGWca_$But!*aN{N$z7)BxgsYGA?#jDacROJDpl|IPpT zmltdXp855U-LuWWa-64=>bM_Wm(Sz=#M&U@>5o3d$3OZZo_ypnHu`;%C~+>(OZ+Edb;_5?J`SFkZIC0QoIGr&ZPnphV zWO)wSprj=U1+Cc4fTJMr;LcQ{TsN~8{&!sUlGWu2^5?c3fL(eckP-q2qY!H?{cev7 zTNilr;YZL#PMT(nCL{I^57^t=V|Vv}lhMRgWob*`tEU1f30n!>b_>|3%>S}%&SW}a zK6mBkQcA)w!nXWSWGs1}`xI2MIAcE*UO0P};N^@sgS)%8D6=06Na1v<>TD2Gij^C? zZdO(;q@J1piN^9~!l^E|UXI0m*XuRSB8*QP30viq@Cb&w%dl|i8xMM`G*9JtUT&>I zO9+H3$IqP@cgz%VC{e)yH(tHv3{#VkIEm>Gx~#0NaOvU|E?v6J#?}U%ZkH&I9m}e1 z1x{om=~tJbFMWPnpP^+ybRPlCgE^R;wXPqaDf0o@z};4XTD2J=#AmzvSQ@$m^eJKG!|AEEQyi%or_t^dwUKoT`U@WsNW1gkX!zN2HCMOOg-B!$?-=*Ja(TO91&{Y5_YaLS~EP@bg zonZK`>_auEIyMR*P$5Jyot9yBWx&Y6^~*^hTlr zwH}^S*wKGp+pO@jjct?w4-lr|6=g8SlBI<^*F(4aJGb`;0!g6$lrRX1lZf6*m-Vd; zE?&CG)vH(8Siitvu;Mf|IAC7xymWdujdNORry3b0u=YOofw95&lgfNY<1EMO&;RBp z`LBQVpWn01z;c{}7+m+z^Z55N;z;r5KJ{Kc|0|#2%GxIFI6_)bQh9%v#zXgv_t(sF zGnd~8Yb!youmWo=X`Zuxc)-El4x`b~^=M z2SjniV9?{Ct5-4admmYzGo4O3IzDD+XO~;scQ`yaVKSaz3JbI)L3$~f6T2{w|Or37GbPN;+S5q$NI)Pm#$pl;^oV1UARDh z&?gQfB!a>kw5~fnmwK;?F}t4(jJzjweE;Gs$LjCbX5i1di?upWA^m$7N(p}Y(;wnL z{p-)Lwc2+ASFC#yN=aT00HUE!!26~6u-4Z7T$(~%QTpQGQbY)f+%TR^*xB3R=wOd@ zHuEI9>nq_Z6e7YnL!tdX0c%59|VCp->8pH7F?>rKAE8 zNY|NHS*#9-ES%ilCzOJRAAO92qdjI?^RD-Qkj;(D42Or1&$zm|PB&@skN(j=ptrit zmFo|2{purJx_p&EXN4$?38W$wDXGN!E*TJlB#Mw$P!u7#&d9VSJ;^yZ*~RGBQD)BL z4_)KQC!g?5z${AD1HEeoRxAvdZm`jA5VADHlm30imAsbzQA#Of5E6$moutF&+9ppv z`Zx&4^PKT`%N5{;@GmLg%C*e^2m}fwKUS&mRdP7IbLtK5)pzdO%ZyFtM>km4fz#G)>PrFU(pccUO{xVoP%u@cg&@y0N5d1gw{LTNbbu)eBmyNAQb~kV zNEHx=X1V=)9E8pmw>`=l{gQ*dx} zz;iErlRy6IzvkwRm&tX`fAx3%3kVW=D;Mc>dMM#qs#{y2^_=nKgoDiR(#tRL>>quV zfA#-eY(&W-=X8 zRz0b}x0n}#UZ=yLH^7yv7i4+HbUI}=nJ`c1WLZutijhLP=74C5EOT91i`-u~L*+0{ z4OmWD3pB!F8_WacXic+x+JTs+pjJR>^?<;57i{5A;MwWWGNp4y51F%=7gMK*nw2?c zF-yz7RONMXI72j!r(s}Fu`2Z^s?JFz{;fZ+t^O?!q&`>fYtjUDa^V~}n+(TnR(dz# z?!hA02n_RC!Du*T=k`9|`o_0W3Zgim)9Qq=#ql|Sd87FK z-~J{a`^*yyj@6(44VOwfkGCE|oTrffeTWae?@@m9*M5bk9=TFKybu+LF%|;fy|XHL z6oN+6mSve9K=oj?I5DC&mdSL+!Qmcz`@5vm8N&C8P*NeKLIoizaA~4AX*sP+5YTS7 zPy~GA_SgC6|JxV2aQPb79(sg_t~|trwJkcGE`bajP$|bYAw5lP{n+iP2_#0l>YH>v z<@Vlfp8e)Gc>Yhn&TxMp9at_t`UszR`p>g|=_&VMHWsZ5gi=@`5i%fDT~^}(&-}%Q z(Aqgi-`U&dr5i8u-IrhB=F2bh)jxcZKbVe@DxfkzvRSFTTvp?E?-DhrGVMOExdiCii981p-SLDtf&RYbyg*2Lo36 zJ>n>IRbgHfZLMoKRyH9s*0DoN^!*=18_jew zW&h}a?cH7O+}Yt^|A_HuN|xo7?nnsNB40>Fzu#wdbrpp4?c-BsGv}n7&SnHb>{%pl zv!HWKQFvp(!Zl8#gbw9rI1K^RAU+NNg7#3|RszDxmCh#~b zg;c#?)_zrQ#@ZNTxLew(VxnXN$TU7*nI$@lk*QO=)kkLWw=`X6G@I|=|5d3{rHH-v z3N=!Dm4+IzV^eDHy{XpTTWo3*t9I?81hGeLY8OTA&2#@>Jm=)(U0&qm%6)ympGkzr z{n!1=F47;(`T6gqUDkiZY?f0jQyY2MQz^;G6pPIl-fJyni88O=5$335#m1hy{da2V z(qwjS&`cprKx+AX=eU2BfmaUww%TEe?Bm~j#zpiO4`#n(|1lqS5ph24r3 z%P@-o)ByMQM)>g;9NXne#5j@9F;?>hnE!RYQ_p^d!a4AyVllcd`F9h2Y%cfe-O|;l zm-p`cPOU}~o@ix_gY)@~tYO;)uTB%s)X_ym;m>ARnpVJ@hWv36fRs;jY9FW{3&=T= zd=#HbCPXf;M-uo)&^=z2es|raeE-(8QNZOLeTWQ)UTo;-XLZ@N;iG5wBsa^Fs*-2I z+ia4(=KK~`PHAbzeu-osyyJGdfR5Z-yTD<$$BT+Gdin@rEppQaIlbV~m+9204L*d;JP`={uKZ2#WRJZy=pwAg{`8Gqcj+$}=zH;=gn>bzRLUb8&YY#x;MnB8?DE`sa*6?2IZz zLA?2?4c3iBtI>U_pch;m?B9A$)(HGlE+x<3dJ=f~-2ZxM+~yO!yx1%vDf~O$sl8w4 zobGEu!ivd{K6F}(>$zy!Yh#P?4{sSLV&&UU_LRgQm+F_iw@8W_@dRhDexM{r?A=8Iq4f=D}8?%NyHOMn#`_)fyIY?v2wbbY9mtcFKL#!V-P4U)^~2=?%OquJ~;k zZxf%*vC49jIhWzi4DWm053#x*jCRV|a(l>o#bFex{eXF{wxfPzbcL3U&8#j%plDdL z3uc!%=>xB-to+v587CN4z+0rJD4NBeH}+mrr-?fRYlE}FUHxjWw4F43UGGaVVMlw# z{+K?uUJrFx{nB@bJ~aroE8k$R#Jf%mWk>L@qj`9(cQ0E z6*29{8kGFfcb0j!!75b}6Qp&FR{UADZGk@~x@k}6K`~X?b{4N*g(TV?eW>LI?0De=&6BhJ z+S~(A)WUv<#v`;rMA%QbI#57iD{6cJpo>LlX-;nrX1}|f!X1HD)U{FC)qq2v&eKM# zi5{Yck0GD!`OPFV@=vo3pMSb=lNy_%yT-it%Cu6^V zG7WA|Kb3lT{U`v?rR5k4%aU9bS@!n!wXLlxHH-3`&|C}5sdAz0XI8F+2@fzQahTHNvn$bLeF2W+)lR*##&0|xp?~zUmW6#iTP2}((+NN3`}7d zS)VLvKg~@@Vve%u<1R|lH8YCO8unny9kBxGZ97m=yKQF230NKdcA)uco-lM4Zb)8s zz~R{=@Pb54#w?+_i_0oFU1+=q+{drR@nmi}>p(p}9E-M0ytBAD8@|PIhmCA-{KN#i zALrmN$*4Nz0-N-nw9!+3PS{?H2tCuQ56?fJF$M^|O@6jd($wWgEC`y4ysO{EM=eFZ zB0=v1RC#_$*_;0K!QBmK=#f6A`=13~KJeN~Z-4e{z*~uL|C}Ag0V_yFXw$z3J#+5O zP*X%Pp1iE*hQo{G#;g6*TfFX&=HyZp0G{3UJWdyuY@@g{X_ z+;_KqkIwVEdf>4nG}jsM!p_8FpNOocGizUmZauMG+Q7+^jYY;#ma~RzNb{lRwf~o# zoY|J+A#_Z9{CvkbuFwacFETrrKs%Bc5Eqscd;ap~-XlpRnm2)2L54guL_6_gdW;-3 z?O&IT87k@=>XV;sv>SscS}1N`j@aT-OMS1oXfZqF3+|t@1-zSpXTeW^N0D~YtMD&g z6xuxZMOp!;=?e|cwTwu<;LE2LI35@j;|?CX4XuV<{x72i^0P-vfRj^O-#oUm!Xq!w zrpzW#S4of7v>N&C)GggQwqWZaEh<WK-^NP42>3Xh@uBb3J7HZQ?~XTc$LS7QZK!*xG*qf` z{Via_PFGNlYZd44+8h_=h|5|}aT^{ESkU-$loKq{3`x9q<`d{+B0ugZfaLh9w6nA) z8J{n0C{oGhlCf`5)%xU@Bsf0%u!wi1XOvORSN(TUm%Y-(cKR`|Lnsiz(t*B{Y^iC? z5xtf0I`C_osX`?Dd~d7&>`6}qH0X&99xX=D=O5&%pJ~kE*9e@w|31G>!x8I=OLzGx z9KoynZ4Mlifn#E6&%sQp(6My57;t%D->74$eRzEnE>y3Qv$(7;?L0H?^s_}NM;xBv z!MS?r(=~P)K#K*DEu7t(bU62(?JMQTytYgY?gD6T&f4A}EREHlm|1%=%<)3&- z15d=+7;?Q0^kt}~Jmb>UmewX7$fA)-4XVz(%2lbD*zO&P$D# zG4ixPI3H|YqRC=T`MrqMLmX9j&}{t&#W?nUDuh{KVA37Oe5kIV%$6GllX?^61bzRz zUGWjDdd*#)aT7#YQuN7LL6dv&Vt?xnmTTFle=5g&x=p{q6&Kbg; zy*8-cH?m?XR9EtP=tb_gcW4yl&F(ZsjfNZ7^rYES-eQeUGnZ~2cax8IPyZSn=G{C# zUY!Cx*}WMZ=U2mBcZ^5(1J{~blR_Ww{=D{27fv!!Mu>G?DE0+D)_0x1lt}9uRd1JN z2$+hylyFN7Jjn})vdR^2+g!?;hpLdkY__Tt7td8Il>tsQVjaR1BNNukP`?`jh84?J z7vxhCHISEt+GM7Cau2^zRx=gO;m?KrGgO_FFNw|1I`7eDh^ou|hl#M50AoB?)AEsm z%XrGm%EI5TxinUWu|J1`#q_kGeQpNX%@U(WMky~+6O38t9{yY=fP%7gYKT;~muO+% z1I|h8$51xcfS`EStkx~8ar9Z0C)ui<>1?z&9D%tOb9?FNcE0u6?eUOiow?ryNYmQu zFl@c!8O`;>SZpYdimKye-=i*SCoM&uA5M*9HSMUUghCKHTW|h^jjYTo{mt!&VCR}N z@3!aPTwA7Uzt~F?UJ4vwOeY$Z`z!T5x-*93m2Ok$zJ9|3O_SglaOR-o%;dg2PfC#a zoCD?`jY`2v_UImd?)mHF9T2py7hCqkJ`V{lA~bFW$^n4z9>cMI4-0tJZo=C{jNgh6 zZo3z)iY(d`5+e~UvuEJ&)(qm->}f4a98tS;JJX*u$ROo?e*uno3uK95kZpl zDdHG45C#3fpg$OJacQoD&BU|#sqrJX-H>(C@Hg(u(lhQ5m{jd$vjtnC%~0sdxcfR} zd#vjYtJ*jqL!}wDeIqEg*mmZ(@4j$AIh~#!_NBxo1;%B=^r`Y^QWMdeWewcjV^?35 z>fO(+lUk9i7W!3Qzi@q?L_>qB$nC4D3cGGOl9(-OBWgQH?Wm~!3#q4&CpdJw?6*sS zhguq(`BI(D3QlN+@}>*WQVWPmGN!|h+ax--WXIf&*Qc`QJ3m+3@XxnYvZvy@vPa?V zVRRsas%^Do63i*WdvRbB74{9UAaK05iB{$|??}hWks&Mk@f{sBfFY$@{J)VO9un_3 z*iU1OoBQVL#j+*ZP-&fa7>{eKk9O3k(nY;wh}#+>d3J3W1F?K>G>ufJ#}9~DjK@xc+(2ue_+r4*;IUgiGlT6b%Q zc0XHAb#-TZs@cZ*m8JFFQf7KR@JGv24pc8g@LKw=yBvroVnYk#n>Z6UOYua+fYEAx z@%3lM*!iez=E%WGIk6O6%AUUU zGF*+Wsz*F3M*DD=#aWla>7pGCLo*c~EBbEA>wMUU(S6X?`ANmqQZYkkf`gBFu42CR zZCiMY&(;K&CD8Eoy$+=lLic|3YC*2x?w}a8;@Hdo@?k&k*7VcatyEC8ApYPG)wYC4 zc{UFNT9!mxNHJB7eJF_;{hW-icQ9hYTDs|d5xdS5pR!VB8U=s+d!Emv2n*9ijqD1D zm@or-a+I-C@WF@x<`l*32cJ-#557;Jv(5&R`}Fo_TT1{+{%mxq`ADoV-M(W_ImvD_Y!R%Sg?3 z*oq0SS4QZi7POF$h8P}N%{dqM1VBzAc-Zx8U4SQAOqO5Mt3_uN{mb~KTqI9Q#L+fpM z2qvgI8`>bPetuJL@(aV%2bNh+f_+|68==`E?Jy(mQPHTcIPj%u6z zo;@-5Q3OGOT|};z5J*0~7B{JV|2`=OJTiD114;d%4gAGNz8*BIixF)K65{A(D(;p4 z8Ua~Um2xN{HMISQkVt_%q{Yzp_7oDD!K^1ynwQ187M`jfgt&w(pIYiT{b}Ybki2RA z@Z@Klk+EFRxob4K>tkJ-{{82fr~h5K9{jDBd>c=14b7!q%nRy zXuAI6w%YA>^!VzO*91ZX>{dUmh0R521;i*_oOhnsq~>QmJJ8NLsG<=R64KqTTJxh> zFs5287t_#^^%SoRLilnu+g7LUh`a?kJ2#9iiwU)O9$4UC&=qiqcErMR1CFrg7dqb6 z%wjWit8o@im6$ISw%fkB(Sz2io+?_6Ab{wzaEZuI`#JC~l1gqqrf`Z;HnNF)TQNgri7+>fG` zYDWj(HVcc-u|=A>Pgz>sVst$4ToQx{H_4-qn9BOfKNr8pb%emwK%oLVE3u0!mi)B5 z6a>#L-3oZ=RX)arg^SO1g|lO|ny$Cf9;jrgG%KN<)><5>QF5Y{{V{T~heuN8v|+l4 z(SEtS+e=!tZ59GLT3%`(+z}5%0@bXge$llx;n-;1C{B&)7ksH8K*`$b_|=Znw_YR= z6fp_@!_{>JSGQ$)M}i?MwCl;;x=gETn37_e3+zJ!=KN+5TE1MBbZmxW#_G4Qw@EA! z@8tNbGviFj=So5+5jC1ASU$#;S~f*3#(MA+sEWEd$VW~+#iIe*h&esdrCK%XBr^i8 zxq7+2mdunYblbgkd;0v}E2k^ete|$c*3&HMR3eCT>0fwspvb$-dbmcz(> z@QiLen9@%d9`<%NJA(&a4BdKm?(vPV*Cm-B|C&MSJpS#Ty)zt{n{%lDw9TAiLs+!b zA$ZlAx3fsI!Y=a z!YyXkD|#W9%!dk=eb#FhhI+a^#qsu4!X^d#?-trDs{aL!)z{WSD`xsG#SO>$1i2}M z%gUZZ4-1l+Ek(1wbv=GIXs$k8Xw=DwLkU--Zhn!b<@tx9RmGt-Q-!;`(^`#=`G`!~ z4$_>xu(%RuqGbA_A0n?`oPhHOh%i~O<-_k*=Edc2OBL2wdsyf($D!t@OeinJy-~Yt&g+PeI(R1ty{iv`+nYEdrA43>^ zH>3%9EzAn(;S3wcArsC&%|$H;!@vb8!h?Wjuz*yQ3mMduG`S3JpM-sR&%t}PD&5b=q_#Ua;R0a7uUM(#{yFbx*j>Sn-$_${Me{UoFoYUPD-t1&8kye{=hnm`!mO_KNq26yBV{y^%d#)0I+@0xbYgsU?%Bv4q z$ZN49HFWyHAWWOgx(HHpy(Y{j{FeV|LDkGD3XebA)pW@q`oTR3?1m=Rq+u2ssYIK$ zVLkfI@}>Jz2i3LD-IRM1XFyXuyvi~9DCQJ7da#G2kDdk&Fn|p2xRD-zq~I^7qHHo7 ztSMBxIP`k;q=+k#Sjap{rL56H1TWTi1i+a?3$0- z3$hr3BYM&y)f{EuioP}6%#vR+)^OX(gh(_rH`z+W$9Q^K#pi%AJJCu*m8oyjqc}`o zm1$4+e9Pz8@1ke-FP|HhTY;rwVyCw!w2xSnmhO1}l}WAcwiG6vjb^F8k98U@j7O(^ zq&WJ9(U8dyNB}d3ZoI9>5GUC>ev&@&Dg5%C&Wg4%Z@gRk@>}Jva_yU|-bbK&ENgArFsKUvv{s5lcG6I(p>=L~Hkqzv`f*@Nzi9&5D41k4X(OL9gBMP20K2nb9-o6S(2Dv>+6I#fCZ zS1*y6m7#DqeFC^dCnO6eK3|*nn+viikO8;G{`WE@;7u8pV=AEU;dSScxChbQ49K^5 zAL8b24TT!0r{VY7cJOjG@)Qzb^iB`f;Vm{PtOLOevPqU`adtTTZK8hiuKiHQZF7sy z{TpMST`X#)jd`m)3;y^>*VKo8L4zy7Dd*j`)16>& zAw!tsx-Yl>C#u=gZ!~064afcjv**s#rGmW`uSh2Cv+;lPQ#0Ttm5!c177CvUle27SJp8L6AQf;ZRmxp z5>G-NDz-IBL+u%y`yw?e`YJUjnlrp$TEC`WSHq^dv(ppD1o3VAWncP?qJu|)s*k`| zChgDbI^{a;Pkum>$2tC+qOU~Fg<@(^$o|3Lf2qU$(Fp(Uk}R$ASC=)`<&9OB_qoyl6N?t!DWIat*i zim;G4{)I|W3@zWST(qlf^b-#_#?@o!C1&eR+1Pjj*!~Lt_e$tKChWG4t7Zpgy54!W z9bWOYtXbo&KM#@}=dt?V7D^5p`CwF4db%XzS`2Mp74@3PNOTdhnU-&e8QE5$M10hA zZu{FW9SytsM+{~&R7->r=)-F#)14l_`M2_Aq9rzKBCK%^`4ZQ7Q3XlNFIcA-3MUBV zQQ$j$gBmFx9npu&=9a3N^bqTg+19s9Shy z@8HD5`Nh#%D^x{&D_hD7XUv8;j3F92+cIn0i6Z?I9%_SAx@ z(TLyuynACS3LYg$6-~tgTSIF*S7d(6UQ~EK1&}}1S|zx1G0M2O3QVydCG!L_M$*Tg z2Kh*nL*K0hL8*z^IH39kYS^i^lqD8x!f}}Y;4Dn9h8B`bz(toZgeC|}523NGx4h2% zrSw0f=u;&~gOb|@7uU?#cGw5fY;8NrmjS2j&k3{1r#pN?-kx@J{ngEhSE;0-71?&t zHW93s+^IW29iKQY9(z{(G<0(m5ZsQxg*<2zz%;L?QC+clkAte;ex0YaAya)FBzCL+ z4Ze&HkTF856sTz%^w)EkzS1zyaQ`ynt~K+6x0rsG*8)3n=R0}H7o?5HW&99(=1E1@ z!)q5j;xPw69Q?<_&%I4zfu>x(7Dk0~Ra0ZHkU=cGfqUApPo}FlIs*+5>if@=EEClc z#Mbr6Ah?3&N94Q6Aj6a)q)j0L11$_oA1+<;b51ju{UAF+#FHzg>Qpsm^?3He|M2vK zG#uUz4E|2BjgEN_fV|K#UK?;4EEmt%ni=4S@l0h?`3{zO&0xGG#{#sZuBY2?{&zle z#Jt`or8G8j{}S?=Usx~;u*04`AAckJ5U2IUV$Zue8fhyXnopG;2CBiOhY^*WauiPR zMLQ4smX7o6ix_~a`mboq&a`mgAcpeRcUcQK=N zW(H$sa6tsLojyh;$V84D8e;l`5m)aggE~lKlO)VytyQvmXU!)U^2VJysz5p-YVZ#r z^LTHpHJ95vH74GBN_UN~z!XG0fF(D|@Zp2+iTSx)e&rX$^yGV#sf&hpKv8gcelX(4 zTG5}k$-6UZQUypg_(6!TpSyTa_zFLd>F!Uiy^evwy9Qhn<~ATPVgr*`#pd+zD)N7) zbN|@$DWA;qhf0rBnE({_c8#6?o!H8l)J?gn^CzcMJK-D5&S~QUkcC2nF7FGBl2eLP z6BVL9^q|6&ySt|6&p)k|b>HK%|2Y^?j+JLNWg8+DEl9__w{9vh>qU|WQ+$NY5?Mj1 zKlqjPb5)yXN)~q~4%~O$#Q*}G8Z9>q(b5`1a@e7z8uhIT!DF4Bq{Vv5DsKX2MY!3D zPuqz==Z>DFq2d6jnLYZjbx1W28ciKOkJym|0qd~d(O*0&Xn9SK6j50j z2>%OsH$)j?lm>zw%xKIkaKd!H;XR$Lbul#1wzbbvL6xrV&-j?YN;G4`X!FI*XJkLE zXI6HF;flcIBa@@Zg6hBu^(nk~8DmekPe1eGrDH!a{bnLb5ZMy}8DU2&PF5q8Ep|7BIiYCAE=x^(>~8n6+MH<2W7oFzvIVjOj?>CK&4I zee`Xs{?wtnGmWaYFvvr1%bFF^f*Dbam#?P@R2v#8Cm^dZLo+0GPy2L4?8y zvsBpoI@@H%GvM5wlD_+SbtwccMj^-N{ zC7~G`3v~zLDjF){ixBCrc9Xy^V@5iWz0r%k)c!yjj_u{V*R;`XJ?u_9apYtwM(dNy zpM(EAh{6S=L4wt^_1lMg*A>j^Zp0Et7K36+0$aM>;#rMln_1aKf2s*@(a2ESBhZ3t zlb3LeJgU_y2SZ>JS}%bM1*j(GP<#tzD!~Hjd2kH{&HMLQi!;8~phnS0eeB=Rqv2Tl z@|hP`7tAOPJa+pJ4_V20B)gC9M(OAkc^#-05t)=|ms%R^sU)pZn@sD>&gle@kITo! z*CA&XT8ww&7Vmjf!A0_PH5Cllfh6$RifzmwHg zP7Q>J3(z$~csif$^Xe5Q!&`FxJS@O{%owGR9HaOgGE!Di)aVrFt0BR`g=38@V0QXp zVEkS!*m%TOKZ_cbfS2 zP3-HNIJ5$;uZE{1KF#~ImmUjJJF&rrm0!?Za@#ReaGNjNuq2hvDcOqPo58?KM%n%wMf7i5nGC94t+W zgA}{9w5WRv9J1`aL?Z;O*pW$)*9ek4y;uAhD&%9VF;)VOOI=W3Ca7$8V=>wL=0!7y zD%8!*vkph>vEvE2QKu!0;my{L1zc{rBwyMvWl2K#cVkvFAdL~dJX!&)bYd)M0EeGscmV*R2DBy7rGvXpUfDfgO~nZ;fj`-Ziv0hHRHyBr)xv`Vnr zVRqjslzp?O20&#U$<%R^pqLXu%u3~)wM8kJAJnH5Qnooz!T&P^Q`6A$=c=^$U-KXN ztzy3_Q)WHQY@IH9#{%0*N?{!PQ*~|cbbjnl2TC7iW5y;dFdnBt^`0#0Kdx_h)8_7& ziB-p_scGS9YPcbhNjoinTQx9Ed94B==KLZ(Zrm51UVJa3eO@_3$oUBv|D#6tpWEwK zM{j&j_dqv))wi|GT*OevCKPNg)JqM>Z=%pAHVDQLLy(7&{FFs$n5km8A*#tm!lz~- z>`V1-gfFA!p7!wes#0#?pe|Yk8>+s^;|L9TG31KP^SK?Y$IMp`{pl`f1<3_|B62+W z7)#RSpM>s!{iVzV+%eQsxx=XLES zozF9%Zb0cCK(uVE@#WnoOIdo=j}=F!{c-oZ>vwt-OrFOZI~qTzUh{RZ2UZuc@1Lj^ zk0;!dHP}B#+58c1VtGS>fO}00Fdsr9$!Vp2ujCjkbp+%T-rp+6#pBe6c>2YT zcKy6Q-N_hZO3^1r3U+6NP4n(XP2&|SC?|mEj&!$ylw{R}((BUkT($Nu$6 zJu#62TYaSM zy!7iL7#9|&SJ z47FhRsQ1JAj3cV@1{Au42l>p3$F$v@Z9>YMH8cbRaSznHa{QQuyoAo|-RdN=O3O?G zXIm|*l~WVsA*7`~z*WXE7lyB&c`P9##i5jVq-dGoDtaOA({N<-T&DFlKhpWr=g->$gIN4_!-EfR5uYp6vrj@!}~(wB$NApTf37mH&w zWdf-QdzoPl4Z3!XWr9r{Q9;bF(_fP+2Y;>hR2HGcCszp*_ugWe6qeKUSojov-uUKb zUqZ0C=}*nMdWZ=xrR%}X{@>M(v79ynLipg}wVVI%;4$E~U;i$dX`8^B#Gh=;?3?4u zJ?=rW$j=AC3dMjomUFTrj@p*qWQD18Ef=ru);4yc*NzF*bEj4fcfzHv3*B3d;`*6D zy*;ktNy2Nt{&@_E%TBqsYg3`ldF_EWn?~QWS)pAg`~109$PjTtF^;UBY9mc+Kia5rm)%IKfsLTF5B`bR1cwFmFL#s|dm4=l$4cRW9<6rn?WEkZD1HwR z^qCcBSXjQD^0p=|t+@H)zt0oi?-DH3G{9 zPJo86(7>PiPR!-}aGjc1aw~Ng3~E)>eBnTXC7Xt^Yuwz{epC-;Qus)kC|<)393aA} z!I)ilPS_Rc;G~IK6|@Ig@NrMH#PRcbo&6Xo(PxBDZBcfezIkOCWhRdVAO_fX+7qvN z_EoF#<&$h{YZV@3N$b8Jl8{75Fl6Mdl9&=SU)@})6I>*NEO^0Ug~U1=y3l#d?^;{C zVwF1P8gtv7hpn@3LgurJ2?yY+;tRlR?)&Iek zJ*tNwU@ZLVb>Kz#oUY%gUr`1oJS8(cEj3P$T7Wh_LzxxR^nGU0WTY0H5By@JjEnmv z+}vQ!PDM_is(gp0LyOquBgQ}Bm zI=z24%}Z@r<1FeXc3n-a;)P#7|A=GFDxk1RO+)7b5#C-npxT_(aEGGY9HdPp3DWW8 zCK+_K#Lo}eu2+uk<86Gh{$wg-4`C_pBkM4E_VC#m)JSlU%Dq4M-+(n`b>N`QOR5i< za!(UCIW8~hoDUlJ+kMYj046@J0QX{4@=HO*@Oscr?jx=8R9_R`B*apXj*ptg?cYBD zw+sN%w z3&2hb*dvI{f2QeH?~b@2Y|JQFmsRBVTyZmyG;Fn)5cT)uJmz+n=0gC>E0`>ZW5anQ z1)JKhmLY)&@Zw?h*^a)QX8fa1oxN3LqnKL^f=3$LSy3{$=?xa0Agd*FatT!KtTyjo ztE>cXvxbfW!T8f44%RG9^YUg~_A@L!Mr`EW9Z9`+LT_B4QFnWf|5}=3 zcyt#}DCi^}ID3Vda?a}ff?H@M4yU{g;sEwb;nOvlB#=lTR_d?1xu7=%i5;!#M4uLX z)Mb+%+jd(QE*XA-`E}otd*}@>cST90y&~zg-)9(XXZ9Yvh95 zv!!jniknxg?A(&8Mqt0%>>8-CHD>{(PYYTnjeZ*@yRxEKQGe3>%5{g8vrLiw-93Ef zu+4{6AiW^LgjG!NBA#HLj=C=Jk#?&4zhd^eIo*x*`DjpU&#|>K`l!~;Grrz$XSeCs zH)X0PpyIzt$%6l25nsa`$jLLqs=2H)HNtU+_A|K|9hX~1>}rfQ7PxfgyPC(G{X?qu z+xO?4);3ljWdXk%ISYtHH%zwTz${b4S}!sPtnj=?WNJ6PxA3XsYD@RpgXGji1jP93 z^H5|NJDR#T0Zt5m(mcBzE_F|!u0;pqV;_oQhV3J~LYd?C5jxkoqD>?7^=*GzNBwE* z-fPw|C#C@DIzwN0&S9;{f`}+6WM?f{Y^lX3XJg~3SeJOZ?=)|3ag7aszWc+t5H(m4b$e zK0fX=JS7C8@HxqIabsy7kagVpZwmwt?AI*6)ARr@cDoqON3GZb8isF%1cevL9B2(& zD5Q~8$I2S1sJ@wvNsbFfOY30enw^|YsRAmR5}RWNm_Qw+a%KsLOa4O;unLlK8uh5c9=#s|@5?RYp!NLUdS$@HxZ1^QK#_+Ei%; z-^l`9MTF3ZD_GMCiJf8-+HcVO@g5c*e}5%#)+BCx-6Q+yJnz#57wzrHf5yMFYKW4{ zDBSL8p0?F^8A^8b*4&ZhRaZUcm#cyM%DGV5snYD6(ZUwO6au+1I6Vo>iEA$U9j8-o z3J;l+Xvx9=VF-S%gF;lniH%bPsy(B_%USt-WN>idS`!kKG!!k*#MV|wQ&{{@iLFR31Pv*0* z>Zud|p+*?6F`jIp-$m)nqAe9dt2 z?}6dimxm|+4viY>0C_bgrU_2fTUX;Yg-zX8hO-6 z0mMbx!O7g3SQVDl)7A|2lG<%TRNLed=7uwDi@i7R9`uSNjOR(L#o}CC z^p4lRMF;V&&>bK0Fa@+zKGicBt&q2$k&60%ogbeRt`T-PW-Tvsj~?b&2okjTJw6GZ zNC%_G-DzfK zAJ3Erh9KGByW&_UF`E&hFuSvN-GN56kC05>JhZf`dTk8BgjRq86sWLt&|`myeDXmZ zWZqJgGpU99tpcf!QDdRx2dC%UGFSY{)A!GMxG>5)8$>i6UC3)`h88C^C>>I%HiT-6wnaC zYL*N6VWg3Ub2Y22-6L7EEpDfR$%7Gf8sD9-aXRnKR^@A&!^#)Q!$ug5!ECFRwIe5Z z%e;WZ@jpO7$!rt!zT3qfjP7#_5CoKQeuqQ~nM5eQW5(Zm(SdI%ROjZGOpg9S@t=j? z{c^e|otk(z8CV_fkVziL^af%eX76w~Y3ntiCA&wA#D&f{8__5UO}M{=PN=0uF{+Z& z9svw00I0h~&%4XiMc7<(=LTFD%*{*4*0jk{^Spv{w5bk#+}%;vPEwx6d%AjN(~M#)bVp*A8) zG$BRDpGC<~mqwUamyWBOD+gJCG^K!DPF?FJD=WLpJF@Yd+kTNr-~7C$*s)G$W?@%v z`b!~eSatFi#VLKk^862vR*zSOhM&ozBdjIOBxwYwX_L1&!b}Ho5f*Er07*5qfBw&( zz(|NaI;c-3lQOJ3TO5d}5;yj~=Imy)62$?Q3>)p&hfy)*;~p<%XD47d_~IxaVR;-V z4r$Q;9v58lM8-fnpELg}cYxMrJA+gZEVSOzEYp#W`M$*FS#I@4OXoCCWK>;3YZ@5+ zzCNap(UKMuFWd}pK%!6prTQ*&lRkygd&mUV_)HN|WhSEXw0y6~Q9+EwMiF6Ir#Pc! zhWUnsZLup<_xzP+TA-vhF3#6w*IL-qE_WXt|6`ZjAy@yusJt~ZsRwZ0ZO8uIiqzxe z?EUGO{}o=|O&`Jf6+i3R?~9b2Xrk-AZ8d%()KdT%!N&95B$2i^Sw z`fj481LH^WrTqzU*WKNTj}FS|p&MwE;`D27!NKm318F`@_nN0Ev`y097!MkQ@SJfmJ0YX4aT$8Z?y zq8s$7vH8DcTkLnIlUulDug*gdX)Msh#Gg0{)Wk(E9{veDhV9pMhUpLHbRLLZRV$(0 zj@uks_a!`qnuXiidM&%g^xK%c?$EQMd=Ivw{9Dz!zX*y7kxLoypapny#wO+BnXkNY zB+D#Mcl>W>;orqN#+$z?UYqTTp7KgtiyE}~{ml^x|7y-FzP+|48y6oxP=F~r15iU< z%RLPalfq1qjDT&&1|$$IBl+-@Zs#u4YpvN&7!g{nz*)+vQ~(V@?uDpJ>mkU)y0phqnjogMT5E%dNerxfs_Q=4Q6YOd(t|8$mia^I`SLC{&PO-v(`v< zJ+gWi$m@{?ZU623$WvG-n`HkbKjVA#>vQUA`Q|Q_K(pwMj?)G)iG>56f+QMd3k1LD z!p_CW{!*ZG7JYgmE5(6IJX+Pz)Xz?S;mUxu41<&6zj=Rl5K|v6=chZF$ z6{c}CPB@eF38>ZBH6H-@mY%c^R|S7{iB7!OI+We#*X{K*rc41`F50m)e&@Oj8D;v% zJGU=5oL~+RDzM`LS7;gMqTh~)--Y;nEDVe`o>Y(R+-7##Z}3!tgTRYG?@1D*gtJeh z;YFQhDHzusOZjQ%6j{bXi4bQXkR6h(U_J zwb2{V%`eatxul)4wEJ;1BO6}wBRhFfQUhWLNUpJt9fMhzm1K2VxF(!kJ_E$~~ z`6)GYYsoB$7~(bayT+vH9H506P$_^|QrYdkeDgo31Lu$W`~JmuRme2WdY0cruSI&* z6R=eJv)HOQYnSVT_m#)v-vvY$=IgFUAQ-_a@bc%61ExIxB)Yr#%j5D7H}uJG-H~;! zuEQiC=vv@4>Jc&M^3G|>K=MfS?&S2V^PbP^4y)w6tJIzA>DK`Xi#pg!qWdm7AN%|7 zX#SnR0a)g)RO(Ls(;8b>9>R+e^TSLyB)RexZa3qav#>cYbpqJdA-YTr(y~AGrUG9R zVuu{)b^+_h1)G-r@nBQzW#xhy)MMBdiY3(aD{e3re{CX78*M5nG3CUM+vT5qdPql; zWc9+c>E>s5P!XqfP2;?nA1PduA{O=cLr1^T2Vb12@nggIQT?>40~i3u&#f$27B+{i zzQcWvqcU{Us;7Y&O9wSNl=szRAHw;=iLQI-Qp{G=S+J`y-ddOeWUXOkO+E2<_m3e5 z2S!N6w^K0c#c~1Xq1LA?rliBd!k>QJV|%rDUGfkduCipxtEGJY0fFWEo)9Te5dRbq z?ck~2VdNyKi(wuc*V@h8*A*a!BbeY3c565Re>7kZuI&?vU>8M(OU30qO4Uu6zE6`_6;l%sG4Swbr*h8|_&6 z_>4G-E-u#e^+xwTK)PzIfoZGE%2X#ZTrP>K;Lx8(esOJed-dF#wEax?G@NOhNJ3LC zd9CHM0okh~P!jg{H~=GX6IDDdXg2+okGH8T2cFGL70RDV=i*|6+!*V64c&`TG7V!4 z=0z(e>Q<4#NGO{PpNK6z5+6N=8s}^A*9bZ9VB$gYQLK2X+!DDefk&o&76H+6h$J`a z?9y%xUAkwf?VqnWOrv6z>#a$FX+&od+;8e4!8z-KH#gjLKIZBpyz8p8NBtBcj9<7T%UHH5NF3#D_l zyV@_W>Ns>DS7)fItd7a_%gF75Fb^3b3@+HOtPB-i9q{+6;-HG>uU_%^xW-&tOv-f9 zNPKSlnso2lyOGtvkPY=|+8H|W>Y)yv<%$kxob^)SQ)lUcMj;%jhmy|ly<=@?>ck!@ zJZyAyGy&RRV7EV&qDm?8pJQJQO-&U|`YcysX_#W&jLcnL%QTF^uoEu^`O-to7#&#H zy3CdexU@3+?;o2p+M4qZ)^}?3wpm{5g`XmP0Hx(I-_Y|BcIW48`zia?C0l<#j|V;T`gC+DAvXj5Rh+07#xfoG^ykK_9XMYEZ8=sZflDN zt6|nK%VN8gtEFl)<;>mYR6%9vl0`8qXEAQ6a zk9qgU{$zY2;)DU{><2$mD9QZ#j_$KNv?9xq;p)3md?o3+Uw510cQNoQElzlaWd(zB z#l25^@D>vp#%>nLQExO=rz5kQgq#^vO5D`;wbnSv=D9O4!r>-W?Qev@S72=QTVqPp zz;C(!M4(#;cKwN*Iiu5GcmIoJ+D#{$Gkw{dhOEu0t&PKD&xi1PVd;!M1%HBPpyi2Z zh4!P^KYsnce;XfeeQuAvHe=pki*~1u?iW^8cSjQ4rq69=4430w59A<(W%=}cx}TG{ zoMGo(f&3_BR#h`aX;9DemZ7@i3ainsZQ|k}lv76qIcV)4v+IxKWJ8}&vnUxSzam1@ z(k=%@g;6ul#@F}y`y$c!0*lQ3NxOT*7=DWL*0XZuKP}&8rpUs?W&Dke7NFrxS#@2b z2m<~P{IfQ9-Cs^QU5f6;d+r8yF1qs z?oYEn<_ey0kdP|NjC9~>m6+A&lrbox%M;mS!$M(lzf&m5-Pf_QMF#lVmWM$|bLfy? zz3tkv@Lu5Ko`|H$XpM>>mUVwSM)n5a0oM28qsQ9yf+wp>gjPMHuCD9{hDZtf++#lH zR-3da!rPyTQte8u^W|>KS@E zG>CBS=l9Q?X^PQhns?}BoP;)j;vh=KFm#k6PZ{MGWtpm-B+E?eN{g6~l(gM(4Fzw+ z>O55NS=S0(`igaZGw?|D+1#i8)~3^KcMERZD!cmE&sW84pGWz0uZ!$V(ytx{!py?0 zw?$UP*UA&@C!Th|*KP9UaoyX$w2+&RuoIiCsL=JWy!U+Zt|NOOA5ZJS?foj-aq}h} z>K2YiA};b6;bgw-g!lw6GOmk&C|)||J5*y9C#StY7L={BegVzRZ~HNC){M5om|!Mu{3rZ;ljL|Jfr zQ661=XfKYcwk4cmn%OrLT-7z(2e+@3MTH6`n#_ls);Kjy-kou^F5fSP= zRr&hC=Biy#@-?`mucY22;zug_vrHS$VP%l-ebKIgrL6IL*m;~$cm6?`?{bdf4%1e()<=hE?$ z0a%dlvrXRHeD{C32v9vSM4L5?9n3LdQf0!23r+*?si2%d{Rd?qZ9K+ngWi1K;_?3d%qK_3&cW^!H@+-EuDJG;=}|2VT&nPIf*iA+G#J3I z<41NV3mkzkgE8ZozN7i=*Zw?axIedHJ#e`Uh-LNn${o5I#$H($5>o?p^K*dnM3~q$ zz?_;xgPNM;iE@DZYX01M3qdGG_z}7#lQ~K%Q!8Joc(njx>xh3IT0yBO&aGh0ugIKT ztU?zzyvtVk8>+KTVTAP}07};1ynaIdD>LNuuS~Jx&vxcu+qysXgG;L)fy!Td=cFKL z!-2o_xG2BFKZG|EX^mh-WYLv64$L6NgbMG(^l@Iaa&!iX=1o!H{Mfi4$H3 z_FFup&#SjUq=2>p9L|5F0$yLm(e7hP<_K?|VY{6YBp6j?>yk7i7YGit~c%P&9W}? z4~LyMJ!}LnLY@(3NCm$W5kcym#>QFl({bBvlk)?9-8G)813XtA=ZpMUF|+u4 zp(~QTz2xZ|&hUz@M`&?386Td$TfG;uoaIwiRr>k{R^>)vi3Bea&m957hne}BF;KGt z?%-uD)5lSTd;;9XNPBV;RFYiRnh)N|>a@x#49U&j*X+mXZlQ&Uljw(}Cu)K#yK7H2 zxw^8&CBJD?zv-Deg8jv4LW)WxjD1PrO3H#OO2qD&W&6~Iy1U8etJ_8Z!7OVZFuAK^ zt7q_g`lXiYaE^<_n{BZgC(*nB~qAVGxT6_Ai0~#zi9kE?|Xgzl6r&1kr(}i7fdQxsv;@^}>TF zLP9iw7Bp2V6N?CK*XWU1PE~xAwecL~>UncF&xrh9SiWB9cBP1=?l&HdIl0A!MJD=D zu{k)ry%JZ6;^~2VVgQap{dQH|Ikq#4nyGXyYH!B0R6W6(10k;SaSvpYF9{E~B;0Y* z2@fJF1jp$yN92Cmy2lvAh|voyG&x@yQP}RGW$C$WX9Ip|z+-RuMXOFoJIr z%RD~w(-n8A1{3NfZPOn2=bk*U@1L{ltzSPga<5x^Rf{NmJ$ny0AFWj#TYMQ+_WEu3 zaPS;t(Zja2k={S-X(021wJ!?X%_#DF>jUps#Wp@?XH9XAAie3Sj{qR4WPNiavE1v_ zE=zox6PX~r^pGAm2`|-9FHbFlEPa@!{WgUTEyz#n%J6psVqj;aME&yKNaeBKuUll# zPpzn#p5WACV7#3v`4ikhTVHm?*C?Izi+u^7p}k`yqAQWsim|c-osO7<=~KCVkdBZ z9*UQ+o7zld1dz=n@qd^ECQV#j{UY{R*j2M6;&uXu>0`cqaUhEMX6ry?QpCiNkl>yr zUA+v9DO8^&r}tD$aj5;ZgFCR4nyjhu!tJd&Z1AKQp~ThH)`^d$+^pr`;194QI5|6| zj)Nv|<$pd|S*MK$gEYI9bU=x7S1SM77KW9X z9wHKN1Z-^inknPQ(iuLENz%ei5BG$aQ)S+sB=qU?i5TV=R;PZB1i0Hv)?a@cIyZ-jE;( zA|hh@+X0*^y$&&(^H5eq)_Qto!52hj;YZLY2a0wuGXtLNu9U1hXWlDkJclHbFZ2fq z6oq&sY=5#Le=;Izy1K~YmWs93(b4L*p3L(3Av0@$u(r*)WK*=i$K$d`RNA2U$H2to z6b*s@zO*s@Av%U|@E~n0)v5UL1@A4sHT_41kVo|5;RkEM2nu@l=#YYF#|)6h=Vm`S z3PJuz@D>k7VybDUlsyNc_+2zw^Uqggmd*=`<@9enupwlQbikTpe+Lt!5R|)(DTiob zB3Y=%xMwBH6idr-T#{Vo2U7L#a9Flvav44^aRZ?Ky|@t4y|KfDlXHMd z;U>eNPL=+7<5{R(DIvdCFghCTz`5n7MgM0e8elEXF3u@kdI(ORFy--i!=x!PXH%y) zm9+1E>9SBD$ByTXr9u^_O~CPHJ#`KFS*b+S?|gtolk^-rRD=fOO<&{;OwuC2Z8&#h## z1?qfGPU?Cs_Lz#eA^>hiOf}XduAq`eNCis_k=05w;$m*v<%{ExIlGNtYrcN(aqdB~n<}vWyhKGx@ulQ|>q>~s2O2tR|9Q*hXBCIq# zR{wLGaPC!*FN)b1gh2th7g);Vx?L6gSG~H$m=IPd`ojJ)~AJd52`PX!C91u67khLcr*nJN?`9xcwytxe%xib?d zfe}F>+PJ>Ibo-<2q6cN=TWiGr&m1~|mmw2@>lkl1#spd0Nb~!cWFZ8G_<&O|#Aa_X6Nc zG$4pO>rmSuz7yxxVQ|!ym72~n?bj#s_&i|=-(MOQoZs+P5UZ`O`*js&jLw`nKSWG= zg_l=%j3ibIh7>UDAXDRh)#CBk6OgA>0(!hIf2Fz>(-Hxx4b6C2Gl`x$%d`??{4yyF zp4mG$ZNt{#qw!BG`klQ-Q`CvWtesxS{OUV1;xRd~=63foUUrhAVIZ%0@%RFXVM<@8 zQXbi6&f)%ub5V)`m*CmxvJ)Gdn&#$-yMKI9x`~_ip_W5C$Xv8ZEbM}U{l!AJ`w9vZ z?A(oA63q%Dbzv}Z%h-~+v0rJYxR7D*?$8MuzZlLRqDsS=N>XHxs+4O!uIy)--M`_g z!KIO_+L6>YT|tJVqI-7Yp-_67qs5y0dPXcmO^Aw>8&|hVbPII_a~4ZBpM`2cs!V$x zCzl~QdMW!HK93#--iMzST$9wA$NFYDgTP3=GGVy*SZOp= z)w;&U;5ZU+Y}Z==zSj+(e%hb^oE8yOVL>rw#q_xHzr)QOgDA9?iby{mxOv7tbT6c$ z8sl$0b=Z%56h{^J-Cupa_t*`xv;S#EAZU|cLRhs=OO(!a=o}1YQzlRDWrs7?m)pXD zJ2Xf+gN}S{-A+kC6pkE>Alr1!ENP(@Wz{k>BNEQDT;e~6b@Gylmte~ljia84>rd@= ztm}DRiy0Jd8k>B-!$$Qa@wr1_>8LDt;?aIwpe5b?Maq9m_@1#BsJM-5ajGd>f5-xMnt-9lbsS9J9T|br?C(GzhD|t_BKS%!|9{Bg_jAVQb&N^p8ISm;ua7@p_R~b?!0O zZmH!_J8t%q&zqq=v51&@)Q&fqExaiHhBRAQ1;rp+S?T3;_AA}w%TP>g9lNhTDSXcj zvt>|_Ux_xHacGg14A%GXz@jqruEm4$$TLYSxIWJG&juY{smX>OsqLpWU=|ToO&YvC zk0V&pjh@u{g%*0?U!$%4Di3ZhDizCPq9$b+Wshgt4uMWzzSq`o?HylkTv%;Zo+6qe zxC=V@%1x(~tYe_NcawU}#8eSGnaKJPmH-ny$C4qM!^q|om&MRKXqnq~s%q}C7eiK^ z$Kj4>5+DZYWEggnwvfpml%d6wS&x*dObsES@TLEe#Ik26kJ(wvpO?Xc36;W(Qi}M& zU3GC{=#%uRx-IhD(?r%0kiygaZI*#0z257Ih>>=Zm5o%Z)YkF% z37Bv_gLF@Q=`N-<62O+>PIx57mb;)9V=OodY&oUSdCF@Jo%kt@%_gSOaQhHNwMtE$ zh9!JSNh&EZReaWyhJ|&5LjLbp2b3`?3|dW2Zc*#+?d!A`UQ}SyajIlSR>3dhV`D`9 z;2`HEsd&>KR>Jj-Xp5cDV=122G{BC32mmfGu22jIT?F`6x$>P4u#1`Pk4_|+zU_dc zDj)J=Rlln!{I-@S{3>pS1S4$3b3!T4Mw_&+W01CQ-Z-BJvhv) zkWP~UByScTgk0JXWt+CGCCk)bz32^+1o&pmCXkY^&91weclWMA^~_koso=vtBrT;Z z^337zUrJS~zC7_H?xg+X@l0__g(@1EQteU)9z%6v7;r#w?$IAgt2uGLN}5;i7&6p> z5pmggwu;{+GoT<#qg;(Xxxyj5Yy4o*>SgL1n7?P0_1^brXH%jOkoSG(`@DkUq~r0P zjcv8<#-p)VLKqU}Y3^?`6{fvZy5v%gksWpdhsxo>*EFo%uL4&GanY|G(%75se|Nq> z*PYWq!R8z@JVtJ0jiDE(qDGuAbVPO`b}<^Z436)+@ixtyFWjf-j;N=|Tz14{Zv8`P zHDLuW@^wB-3r8jX^Egv4_j-jKbE0{gAgspxx>8M>6M8@77QRli`NaXHp3(5QD*R*# z)$x#R=lHnj3H%(0)+UMh_v4h0i=XgwFJ9;8nM*h9K5K$!;f9^nxZ8L2m`noUyWqR2 zT8Ed*dH?jd>k+#4y(W%Rhcuf!5*Sm{Jnbf3^!C`bDdPhV323C^E(=!tsZ%$A{CcxY zd~{2QfS{=x#rJAUx{fYE&y5@h#n0FTyy32`ZBOkr%7N#5ch3w3BV%z&Rz_|tOCGhv z*G)=tR~apw;9gO+?pRgRIFX7WEK#Zle13%IwwDo$bQ45xE|G05O~G#396DuVzXMO&^ta-BtYsl z7_dQC9~2n-5q)KVSwSayVWnvlIJ1A}J`Ov~RANZj+$pWk5OBcloxSuD=KU)=(}CZe zD-#=K_F>)uu@^x{DBtP(4hJYf1Jys&yE=gX;BqEn5^~%Sman4W45g_qxeGPr0?VI3 zoj$5cr&&`k_Jv9oE2-3^_;cBF>q?tL)RO8)u!Oa5rkUj~mHg;vf%Ufr)`TBq(b$%5 z0!wmCGLw!9wR%_%P_+`b7qQ;ew9z_r9imKOB9lB=syMetLdk|dG3Q;}qjKoTml(=q z9=H@yG$AUWRD;Hd^RWKf0^iiSX8TR7ezh<%Q0@m4jxGds+;|EeDT9reZ$qw26xriy z%s6zo$fiyN&Wh6U*d!$RN%1M_Bqdn|mn(E=5jSVBtWb{`QB~pWdxe{_vk#fa&Y8fj znf-oBTQg(Fd`faB_;&w(kvQK63w)itch@`YPC7ijR=m8Eg`WfP)>Y^q&7tex zQDOFNgkY(GC@`npezv`Ap}ZsuzdOaXV)f%E`6bo{^$a>7=>g6c#1~(l+QFEfQ0*YY zw>iVzxRC5F;-5X~ib<-RnhSrV^KfvfcPx0}6>*BdXEoBb8Uxob&|2;`S9b@`H&4WX zWxQLS1*j?Jt~MqF@*~*7!zU{Og0y4_L=MUqfMC!)GJ5PN`4^imw3g*MY7iHToWNQVFH!7y`UW71bpNrgu>Bm<4-w zW;w&DuxYrT4i^5nWbh~aRo587$)f}F5N+`>XDTI=u`NVwc1LlfLQpj&DU5vFBJ%s7 zTj#82PF-u%D7d;^^q<<9{m#QDAx05V?yAP$rY|s`g+x!Wg zYMs?!v)u&HW+FrzV~+Vm0*i)9(&BhPj2QyIa5d#k3IR)`gq((?DqRz6eqxew8WZ#9 z+%n|xBB&Y9R!^XLUGzp#;YmZ0Jd=wa6#jcul7_*|G1WN_3*@v~^7Ok2DGI6QTn;L~ z3^}MGib|Ax$gwBYNBVxS&ZQ{%n#qt(J*CD0UZ^)~^v(R)=9@fYGR?rbrIx4lT1h)K zPpS@mWPQ|H)ko7szWsH6dG9Shr{hYzyLC>(!*9esco^8&PM_PAlpi;dY{nLF-%qQ( z0uA2=Cv!^u&0X6xZ(IeE=VQ)^x@5M~H!cgT+&7f?)!h5S!i&y>+_NU9TrOUH>9DZ< zNPjj(i*I=Llv8AOH!z)@pI>lKdWTj1`4SAvty4;42?KJ&gw6e zERr*;&|t z?HoMYgudtEURZ2VE?=a&(U)r`;;4tL=;{{&XK;IPPy*o2=jBygs#7)n2s{zLZ2k(M zvcCFL>n6!l1y5fWn;4O98Mxm(d;Fzp9calK1*#(cj^qf7uqogwXYEO6J(BHSfvRXl zG7{OR0Ja091`EP54!i|`NKp6d>9bzz6$Af0_hG})hIEEtW6xnCWJSAu+|cK&-tiWEp`SgT-eGq%D{>QAjlS7%VpDIu&&(!Lu#N&yi@^WY7StWABq3KD2n z3bCzD_Qf5rZJ?Z@3@u_yqrnaV{*qkUhV6>Q^Lt-~FOl}}l6ZJ{Ono}TZ7hPW=%O9; zLjdYl<jX# zAy&>dC1~ zoU0I-@Pj@aQ9zgt&3ekRu~s1yn-nrxQX@!g<=8nayB zq}r1&qy9y$6co?2>FFK+AlMNrdHX}}TeRx$(1`s>d&gb4mfVPSd9VonU_4KZ)JlpQ zr7v`iI!&oW`=wH2yf^-U8#35CMOT{g_^D2LQ!cgzU>K4U(b{K`Q=I)G`6Z|~kTxjV|@bURXh za(=RbK$4Vc?0pD_E_h{t9K>F=Pfheum0DHvgFc>Zaj>Nk0g#Q)p<@rG*+O*IAN=U0 zTZy}tBaP2nGURo+$a3{K=@qP14xr`yH9m{}!D$pH8iR# z*dH|bu;x234PD-7=lJ@BWA%q2zQSl(2c)?@R?4B*=8m-55I;3e^^;6BSq3p#GdA}3 zG>p;g0`}(+*6;%te$FH5lk+u;ccWyjSHwx;_+j&A_e}w1;aifohnRPkv-Ndy6N{9T z3}dhrJpb1&1(bUo9j(9|!?-~*p6G3=gNyDz>@e?nfAR9^*;O|j?3@Dl-E6l}5lX`S z&9yW5Jd=R(z29V!h%ZJ&O!PAq39}ZLxp1O%44F}Ue{>UVTVW-bn3b*{w$a5w*YnxW z6rbDx-#a#cdcF#iD#O_tq=Z=W9evrxTIC@+yGFdMFyobS;jUTdrd@u7S8qN4rVbpKOEd3gC zxk|9k9BRoZXj^oCRVCopF}huxJ3 z?`eD;aY3q~`_Fk}%%dj09BOxwuR7rAJpw+oaV>y_WqUm{T5aFdD2@MMdi_Bz!Hn6U zsc$<*a6+S*V)kR7Y)Q`0Bf+SVi6{lgI4z?&EQw) zcHeF16at1vq~t?*75 zx+Ch>%<&`(UVn&|-CR38R|bVe^v=q&(+lw!oQycV)es05MJ^!`DC&QmaN^x5%_;on^iC z@S_lN&;lUI8@?%Wai7gteu*IpZsFkdrlkJ1O)b_VcJ7>q4IS$Di z0yz;-Ayo|RoY*5#YporwKKYTXGlX7VG{@`oC;Ojw8?-xZPoprtJp0^6*wwtfYkd=5 zw~aV>@LWT_XJ2UI&f`4MPTmO#~LILHdaZcb2{onuBEyJaErM8tTKg6G{r?a+S*1Q z9;uEV@zz`+xyM^H`H0GB@gpAu$Ra6Zn`E(UD-E_s%B$^P2Q;k^Tr@N(lSkE3Q@6tI z1tutynN^4JkSJ71lFg75!?E4K4n#YBUJ6uD5reNXJuwuQzkV4ml#L=A<8MC-RVpR4 z_X?ibSl2XnNZnq9y0%JoE_XZW$zdmqjZLbQDr~hd&sim!S1L8CA|QoB>f6p!Nw;4X zV1cj~y(D9Sk5 z0M@eilW)=zE@dIgi3wI-{t~?f{-kz%oomUnq5OG zqgvrQSjq_5w*M9wRfeCYlyW9;IQ6XZCW_6Waw-<7F{$zM?F@{6Y9Mscki?CHbxmpx zqTa*BV^w6_3>SoAM&HABu#t>w8j$a&Pz6m}{Rs@@SNg589j?9wP~`fZzw90DCNHe6 z_TN*IOU6)gj?0KxW?;lon##)RR;Ov#zzL}eT(z>Nrlf(r9WceY2MYAr+@gl&ws<!#@@#Ivxw>M0s9MC*gMfj=zprQlS3&-s8PW%YbF z0or#re)p^hB5}SZbjsN7!C*r6BCnKsm9Qr zW5JB2TG5wi27nT0+c`OLhW53}z-)Vhn6Q$Io>9^xukY##D@OQ@4zO-XFHMEzBTB}F zf@|q0l2m?U=HB^%!5Ook2H{jCe8n*ODeh@N;jv`l1ZW{}e#%P|8_zw=LXi?iyRWM@ z1|Dy`!2Pkai}Xo$lv%C}tw(f0>D$f~ZxJr8j*v&1GhaYzovJ3b;#?dR0XHHL^n5Uo zIfx+Za@M6yo+Ot=&Rm0%jA#3p(C`_n5<>rD%(!%}+`6K=_UAL-w{*8s;M`uMzsghI@4f?)wzC<~;mP={X$YaDQuB%ak%vRBj=~I`I zd9=j^J&Wfzz-{ach(dO6+?~T?V*=05UtHbL5w{Bx>4pQ1$*^*cU4R2JVH73c9h|WD z-A9u&W5i%6&|nBkv$xXFEQDBYw}@{FrPJ3mIr{?+XSKhXdK~CgxtQk+Qc!-7VrBK} zdCNb#K%AQ^oiduTEaXcMD_N2RHA^&{sg^14V;9Dx)540jWRe*}B66j9!jtMpVT@A> zq_EALNqg2V7b34oa#WbME>dhiYMp^8)J@)m20xBPCUuVMv5C({g{N#RGVWEO=WM#O z1q#>@&QKF1K#E80uMHn4-9i$k!zB@v!Ahe58H58T$+>3lSHe0}(zi==M~!O0mpU|c zOP@?T%WaBy>r}Ar^1kCWaNee%0pNfqA^&YxIFWEkGIQIEs`PGYmF6lh5^IbwU(Wi*uHFEkTIq7fB*x*XPZm`cUXlh?V5Z0q@9BGZC=Pxc zrF3~yfz$7bGRfP1lzbB$dSoDweW$zieTtCvccvOKJ!PF_mw<_j%~3 zV#k+Jkh7&Vx= zaF_@?QKyI&k3Ly0k0KZOx;5@fDxRwQTeyT!G!yOT-oW1k*hpB`t+KBrBTr8Zt*y&E zXHfba!={eEN3k<_eX^{%(5a@0W*$gTWO`r>8fuh1s5XsCw{=x1 zxr@|6gQBNki#&7%8X2>S!)W_V-}P_5o7YXP^g}KBuM{3F9-fNLM?aa}Xt2M?0=cuU zqV71~xKyThX9zzL20XCoS2+DeTqb``LN>{M zjA55OICtB_8@#+u(n=b`%Vqp~Cp7FRf?;$v2CdoU7`M_~-dSPfgV5!1XEYPz$;sKK z`__XL<=`q0uI87)T!`)Tq4Nc7j9PP75Q>GiLCXGh_OpPY=h+7sVW6Hx%{ADXS(-Vy zSFV_q6IO9v)H}H>)y2CIe_lMUO zp3o4j&mnEC`rbE3wT{Hgr~5XoqnD-ms4O3ji)*cO&-BloNYnR!wxL~Y6K4PK1z0zy z>LrQuA%#kwx4U;w^=NqTm>S0u9+f>Fj-l`;>$`*%n5UK@;-Qul{mR+aW#aiP6oSyo zN$5g&%U88;ydMsT(_Hia@b8|tuj*x@aP<zBT_T5LOM34nd&i*^PsYg= z);K40+sh0nL5}X|OzRo|NEt*T$xK613G^i_TZ(fFF|O&4KeiNH+;8oi!LU?=P%6qc z6{;XIWPE4f^zj);kTkiTvb&vEOxtp~Z-otd9Bj%1ClMIot_HQ=atWr^5e;T+&LLi# z@`f8niRI4A`T&gsSmFCIgDvA3L8)1(g`8}%T!!R{6X9V336v%l@&Ej!Kp%JlNakLN zZPz;nR&T!m0uPcN-W;n$A^A5W$Ddh_X7Hw)JWO)$c??wL?7>yWsYPT&XYs`v#l!!8m7w)(;&QK~ciC?}f& zivIkx3$~=z;C}l4N6UsIq7z_X@kkDM{pGbzYqMMc;esS^jIl5!jN=SQ`KiVulTe;v z0y3-=`GkE+Y$r}`hWv!0ED5HEIFW@+@m$`j?aa9g*%(4&=c_d{|a@|TR4BXXxXg;p`M5z8XUl_3l#oA3CIeY6#)TSGG5v|d()oe1_)R+QR7P@8EWWu zit`ecjZVc{bMNZyNBDN3s_m^ulB{D)xQ>g_S~Xy_!p6jmwtPq;jPiO4q2`|bIy?(~@SU8}qQ8+~NQqGv~@P21(`g%%Wi z{J*L6w!PB_E(b9yVrcxsFV)GCb^@t=(uUkH0xW%(fvC&M55!gb8+>T5qA}e@B0j7+ z>!)hvT9#a&8kTL~U!kjxF`l5a@HRe>8xvu|2_+dD6{~~7fj&CLB_$4F{=uC-szkLg zFJ|$7O8M#ZYDK(vQ5V1B;wz}xl`(cC6*aLRo5e5!J_SqEX4tby!P}9GGDTkLo^s9Q zQ=Zwa?LPe}Us+zrnLo`NLM}49n(9q{DD=5w46F^z`#u!TjL#)IX~jxZ=TtKYW%|&s}S4bet_iaK;%y*GH1%(EC3`s%=dBWl@;QKO~XtMT$eP^?-o`UcZ}|1 zwUJ|S5*(ZT_31d+c$I4fWHF>9RDJhT&pJ(R?*Bib{;P?sTC?sz0x4iZg#53f{~}XThcaN<$Bl zH$7nrE{fsRY&S@+tW>m;)})|N5R?@9YUFC0mD>ElnxErMAIY)efj`nj)LKiUE)~@q zf9lY6kb8Y|3UkIa{!Z3$OD+~_0dbuee1K)4#LOYgJvgxH^0o!Z-do$_3eUrY10Dp( z<$hh#S|HS3igfIm%?2A2T}y>gF^KbQ91fHiZ_yB&-}#K~KkaYd@?AB=j`o?7Ra0%()1-$>bYg z;|#dNJ?yYG|C`v8DgMC9p@6aqa{R?xDpFp?y|gJ*?shhHd>b!Uu(1hZz^keICF*+k1aIN4&ej=IsOpnux4dk`WZ^;#Ey zxdUXx;$(}pipy6b;xYt-!D)p- zW{%BbdGT@z%XvJqRnY^c*WhL+AW%H+V=55*VZybobQIOkw>CmPXGZl)+ zP&a4jHT0#EKv$1Ue&;oRJLJmO$f8XYI3&5g7N}IQa(9Z9>WOO2!fi;I$X;C@%R@Mg zc}k9MJb(F<4S)6TYl~*PK*|SP<@)o8;>iQkB=5qWc5fB3Ny+!Wl+IGmJ6787j?8}I z23v|S!Nc)TagcKwp@=2n)KPU|$^=pyzZxA{$iGQb!Q>(`_6(4TVCArqnNOqE-y3MU z8Ls`BynP69Vqb4-JgclC8UKEet1RKBxtl&Zd@Hd3D73!+yvyPpM-CiRrN6LJr`Q#7yu(dg^4W#5&*Q%PZ9aPT(<#ly zmB6teik<*^!j*H`&GqSV%P-*wzh+b;&RGn(zNZQy{iVT=tBkNI89yhURkMs$!QVCH zs$sAlGB9Y_9I&wa*~)jrcOAPOdFRtoF$Nn-G_2qf84|66*56|~2YsG;-}{^e5R79B z>Hi*+e-x4NmkUyA9j{!~cXe}JIB2kRUE)0Y!q5S>vnFUd-q``a~t`xl$ z?B-ab!RpdOCd*-dP4K$LYf(&_k(oKwslqhw%nn{SXG>T5-86r1`6Y3}`26lOLlpBU zVwvBFh(j9`$7EJGR_0k2ouYaY#shHo>S73&!TzwIH`(o=$IuaC@=d!)G;JUf9*^im zc(an*aQne1d##_KbnIc*=K+0TZKZJjQ!F)%a0z%(F1AgV89x&KhI!(^FoTWgCPhhl zj8;AI79{QNH#r~`@~!cXl_?@30-8cy@ z`wDRNAH4=l*}(!MA4=sS*t1zedxBu_eqL>O2=%DF+UrZFwrhS`X?}+}Jqx~)iu*yl zv@~j_e=$|Z1W1{+)_W1uqy2fm-zrk^9WA~ANn>?WiO~=Biz(eX(#5T!`C9u22PxC; z{+~2TG|GSzvNfLxS9)E>qz?1G#AqU}&7kC6%r;%DWh>XG^mG~2JKNR#)>=PH-i0DC zBLu64vybm1|0p}tw`N{+1aUQDT>}o;?p@w%@<|IRiZ<#ZET8k3%TIJ5#3ZJ%aPh#_d76^8(^^HE7Td zr;tV4=9K97C?(E62^q;-F6T=ve{F9LgONFC$Ne8oXB|{k_wI4JTUt`-E)kGMK)SoT zk?xX|?r!Nrb4U+ehwc#RmhP^*-#hc0;cqu1Ywxwz^Nr7_EXUT&7!QOK^GTrlL)5P7 zh~HhxLz}))GJKIKRZy=Cck-@1i^e{~tU#7_89TjLBuI-!1b+R&h7_s=XM5Xmq~+!J$EWt-rg|C3e5t0L za^>QAND#+}cGU-9fl5QA+b;n0?aiazHM-z(}SlpRoo$bYIjf zKLrb`)=TAE!z?}jK8l~qJkskrW! zrIcoZy2+W5sOP0TP-wH-`9#bFDL8Xuh-2w#4$z=>Q>Q$C0xv_A-Zm+5Yd@r^e8aB< zb){LDX28uhlxx`8+q*5T{Vkq7p~8&VwC*1s=0tva8l&Uh;waXwbUAy4_i$X_+>~Q? zJ(~~`Tx8D)8m;JV)5$8qyfQtBPhy6hYqR{v#jE_AP|{Bnp8UsD*vs4`pghY~SYCdmghP_&L?u4p$IzfC)MTI z)6*jy@(P0kaKnFRzqda-1+p6ICB6n1kN)V!Fp~aAXpI?}!_lJ<_1#&*Gs?!hHMSY* zH~xSZ|7veWy|=|m+4C1e(P3W`oi*0c^5^}}hfkMl3vI{!Pp8Y#TV@7^9G@ah2*NwMi{mj|JqjzA51ZaQ_I19e8?k-q2>)1JU%|I?{JOQYdM>?@x(zYb`G5yv@hUl2KX#DLZQkB z!zcs6^7QX83J;$%N@F=N4ep>{QDo9etI}L26tN#>(uJkZwqp3Aw8!?VG;wQ+GNL%* zwAuD(WI}N^9)+8-M&>R%m}JOINP(#VupzOe%Z1|bWRdf>cr5){Gc|KXpH%aqd^xY= zkUG%emM@fC<87{vIkPMwm3;tbg=Fx^CF+DbEK9b6RIcvNUT2gz^2hJ1*B>4Jb8LLI zF{A-hb(eaoNHg-^S13#bpe8!864?US*nKT018k@}THTHSmJKN`nFCe=V4V|2vvR;>k z_-4ZUD0Z=qHTs(#BTAuun*X{MhI~^vk@|UKt(+nAFb{@3KsQwf`F1UC@7!ku)FO*k zPZ!LdG=M#$Pxrz{ekV6DATVyeU>b|snA#E;sie(p^w`GlAu}$#NuGSYeV9FeF)(;c z7P%FA9$|mw@mKW$%%DB}ShyL1Q+TfG$klevxG5X7$B(CtB05C>0JG~qE3AJWyb6UO!)J; zNHH@MrQ`=c5?+zm{2~jw;zCCGaU@{x=%8BJbl_+|Yv1Ao;1wFtgdz)$Rw|QtuP*ikUA(%G;@uBYPO#T_B~}HFZ_Vj&8Y(h zwJMG2$&ufv{84X~6TB4aMDPLZmdmJK&1_k!I&JaUJ}VXpsNbAT{`g2lL?a^$fyj8; zrH`Mm0(Hq3?Lq2kAlH3r-U3xjl;EHxdn^X_Y?g82*uhYhDoav4YE;Mg^y`}5jf-CX?z?5nnKWOik_{5yP*vVz@vcjUvs*O zIp8C3+5m>gRn7z5gtVFyU6c=PFlW9uN3vyz3ze{$Lte{Y%s>A%|8m%VBzhqRS)oa4 z;oGXd-|$B_6uwAAex5aYZIfGgTStMpw-ouZj=^!w6Ow#(W@}-K3ENMq-hI=3;4@f+ z!k3CwlfK&!XBQ+NaNIs3Km9J#xea<`tZ`vgVaK)Jm6EWWUDPXs7_EY&&oxP`3YM7U zNWh!np&O@>$-#lv+m>hfoSARDv46MDnF(`f5&A-_w1uPwQn>_mW|2yKXHGn*i-4*|sF= z?1?W#ac#)?-!u%I9;k} zg7R%T-^s7B*6-^fCa6hZUN={^Df~`?_YKBb8N* zxPc`>Kq?28xA3+hq)Q(8IdNwouf|1kLxK%7KAWe5R5HcJB2RLmWB z>##6LR57Mfv;48TLDU;VLT0w(ZC!r{(r#NIzGu;dco(z}ghbQ-mRD21mopx{1&aPiG28fr zsZ&X+E#ECWS9~Vr(Q_vqXKT{Tj#bR|@Qn7U4B1B_7C&I*N@R2hsbJZ4W%h$HVZgB_ z{WWAN%N;4NwhO~-!5CVak|1?bWqMI#dnbX`}FuD;8L^h1yI3uK=^sm{7vDB?A4ejb$Ake`DUYQ(cAD@~$ zW=z9m25~flIqVQw9OVj4W8ZY1Q4}re(Gn)%EIQ8RZ1U5!wvwv*qKxP(?l|mx<1E6O zeH$3HGF3ZkrF59Z8+DZtnjiB~JTjjYS)vcQ?V%s^S-r0(%;;Vyi1w{wq|EH07QT0c zfSb7SOZG8kuGzn*g7vBoEI)Cy<0QtNqkQCSvhb?K2}cnt2gC_{awans%Em0;?M3se z;MKRZ^o1bbd0*@jd0(67Px{|p#UR1c;?$_4xWRs#R6|rlCsaZyO(q$A067t0X{kBj zWk!4v+hA>s(J10de%Q@5oKJ7yRf3u+%nPqC2{K2?&i=z*Mh zmkC==tF{cVZZ*vC!~|h&`{jq0vz4v8x0kc4hsi+HQ4e4m0$emxowX}AwU`i6(V86? zJuY7;#F;(=0H8&<+%H&~mRH72(n6Jf*}k_{5X@LqqnLH`M8QDXLlI`yme;qo{6`ZO zR+RRvjw?YJI-{27WnaWklgzLF?4;>du(5c77wYTmE&5P%L3am7VUHSN+<_|a&_t^x z*strzzosW5#hbJFvi|#_8AZp4PKhc~ihgb8TiV+j7rcfrHkwD#zxYnVf2{$ka{{Wr zNr7=x@}at!2{B(y^cdHg-_@rzzwIOaoLtv{>5uy1#aw;$WP^RMl?-$;5=q*sc0A?t zOpO8twl{<~meGzaqkFelv6k7gCE*n>B1tsUCiQ-4j6BSlg;*rN;3|Bsdn2%t(pWH_wAu=SICsEB3&vJM@-vgIKB|Z@mi>WVV zfj(mefjurwz0IsyH*~48VY1bV)oaQu3Sh~i`BK#ivm=gf+a^<9a#yc&tS2Ra)OVLL zQ5tIU6*6yPXBV-WDsIyTIVAXh8t_Ez9_J7mqxEl`7hV|IN}FU`X_!l@J=G-IO=dORvKZ> zEa*C-74A&js(1(#aKm+;g9VHG*E^xp*8NNv73!7t-vNmhJi0g0JfkQ>us6)L`yt2T z$VzkX4hP?O68{}(I8$ZatYaOdBhmy-_=P@y^T^0I_QJaAlOo)*hla^Wk|Ck&QamK%xsB!I3$sY&F9d64u$!}nIm^PL^v{{Px-~7fjB!<3DFtvMQdhSsq+78-c`|yG!k7UJfV@PeTg^M~6D!-H z2%i46d{75&k@j@Wwr%=RRCz`xBb8;#8p~Ef6~w2Awi-VdEZ@g*Et-f&OOj@B7(ibf zDZoCf8Z^~BhsedEVMafhqDl}fi7UWj&gZkC0XLQMU<$MfTL_SH<;Ic3KVDBvwDJk< z?(8HSxB(0w;C*khjg3-Vz7>p+XX?2$zvngbX^%kN(*_SLQ4cauycXEH#a`E*qpwiP~Q@}-29OMw{Mm+Vx; zRFGop57z9(&uQz>{_fhjp@x(P`w?4C`f*hNiHMEQyxm%ZcS#C2d82K+3U%r1cCn{u zzo!;hWj%~VnwQ1wo4b>=9B|FI%6{lnD%pC602^-N;^6}9^ZhbaIUaIn=4_?o=HX|* z`I>tQJbNxK-n~u$qq|031z_6zK=ihy<^8-9WLqLdHUP|1fP;k!J~c)i>+XpeL^1II zU;Pspx7?|~LXWSxfs_~%7#kAhIcyehEBwqYw-z3C(JfOf-`bxN&0ydSLC2Ha_= z5LI{Vp&GH{yDuXCE2E=qHwLV&UzfkRAW<)N4ynd}y{Ko0k9`hd2%UmIA;l+oU^HjC zF1Dy=s+2^-C`6O`)u;ChMp`ujbUj_7{>d#g%tp2@^`&bp#e+^pt$nOSvl{m(L9JD{ zK1w`^k50xE@Pzc4eWqz;E5mQ7sFLI5Qox=ZESl3!MzAUI}6Ti&Rj*3_;C3_c%%+=pM9&G zTnfNF*Uh9KJZH!av`lM%%fy`n9iOgghFh-!RwY6>G0+lwrX@`-7X&4=$ ziA<)01Pc&XvkhK2h{-dLmS)(^fo(keo}x4X!)HGSn4l0}Yoz_@!CgH?BId<5dPP}1 z0U#UFzw8oO(_Kr1GGj6ofIFwzpoDw8yjm)plOXoug_FUqL~^u!DxZ&R)}WVRDg>Ki z=Fr2MXZij|ZLhb?FKref?~#FjHAkw|npZ?5qw4k>_5#eph;5y8N@ctWUU~7`+Q8Fk zY(}I-UOBfIOnJySNtJAP|4S4!@K^}s23WxnD|4rAddYT>Zu}v1HS1Xn@%-2C;28E^ zd%dmfb&N3bC;bAWQm@*t`&EiJ+Q~4uOCs5{J7^@%}k<1jPZzp zETlL&L5zhY4}JI8!QU5PL znN{w9p{~C1rxsdjg@qk;sg3RcOnwq*Zi#0eK7I&FGTy(lC~8$uo^3dmv3RF3uL}CC zHlT;W=lWxPIdx5a|}^3rX>{3@`!Vx6TNufCMM&&8s0Jv z%*X6OZtumEX@?Oi`TA;k|8$&y1Ge1mSrkzF2&S26(9)|kqr9_Xq~)Pzgwcq4xpb5d z|Cj~+yyD-UGuhAECIcvDdC%K}3N(u}E7iU?s;B8zhg&R}i`O&CbDm@o^-y_FVa`|vjmXKP;3kdxW-$mgdg1dtUD><; z7rN>6iz#@yS+>O}Y<;Q7D@{f!nLo}!rTQKaNGB;c8tIP1-rM(Ai+naI!5FTX-zN7S zbL(t1QGNz58MZ?D{#(nV*a4FfXj7MlXUkWiwl%M}jvN2zM6avNy3#vEo+zr(=?qW6 zXrEK6pXHz_-U%B_o>$j5!?3axhQmNWoow!62G0o>(KxBZU3Qg`SC5-BOj`?{t1xi* zh1rEelT71Zqj`mx0*Pp@Mj4W~Zz$@FsQ~{chZgZ>!qY?3mhJ1~Ya#LcAT)`(9 zyj@1s3WBk(Npvh))bF#GX=LQ9azmkJ77`+4*CZH^*SgAvHc$UdMJnsIiLL|VmJ)Y#dplr*aiklC{Xfkx>h1n|bkt4>5;vcwvB!HOQ zr3_j5J`Rseb}$eqr<4c9mh6GM%0vgU+vm?DaaN=$2UfV`py{SCvfOaiuM%KP z*<vo7KSDQgWZ&n_@l`Lg`J3{ z7P#uH2n2|oz*J#Rvd|Py3#1SAt3jimpnDgZvhurQV3fUUsE^3;YPsv?2@vqIwd2B$ z9zl6(YS~l^hhAa@veN&oJ|=Ry5D>CEIg%%I{n5#y#<2LN2a}#`2JE8I18|X4<(kCt zbn;o~Wb6g=&QUBCV_c{#PhZsFUDeP9)2W=Iedwrg;jr`VD7fu%G ziX?Xf*KYLJvaCns9ukHE%Cg61>~i>t%#RJO}2H-nu^O_ z$JiQ!bz*i~UCZ}Xv!?}C z+gQQ?WokLv!sg667Cm@ejp5IumpuZr#+u^I3+yQa84nvE%h3jy9)7t3fK1-UgE>Qk zSmy(5EeZ47@oJ`=Gljeae$3ExJxcQ|u7>xl;5FTu&ahU(ywAxSVm z?0KL7?9m7IgVsDVEV-SAT(gN(5+Z3M+fXh{q!()EM)MVsU6I$heq&po;W>2Q1M^=En2r}1JQ9`@amlIm@_kS+gIgS|$2eVI-dtGYjb9JQ z4ZQmP${J5W$rL`y!5P}^Y#={7*r*`5xTs?j<$lRb&`t&L^~g0x(TslrZ;fzqy$hzW zuq9Vs-CP*?OZWck3&5!GjMpuSGlM+7u#~ymmEKLh3xbt2(1OFBbdDmaVpQNwqSI4( z|MaD}bVl}T4!^(R0k;m@&vog|U)`P$16{A_5BY(&(2JGqGw2lu&F2zo5xF`&B*{fo z>-^MBx0{T~cfWqyn{w7PBfb@J)X677LGNP{}k$-!DKi61$hXY}xQTg}!gd8I38WWcE2}bneSHoxjDx$Us@_zlIIAoaGlxH#s7x7o zN}tLB&pMz`?cL@s18YU~dt-uj5E{IBCKkO#1zfy~K@HVt@r;={^AFg+0r3p7D$rx~jBFaX!dv@ebTyK^BG!KdrFJIIK(s>E}767aDfK_DQX-XM%vI zmN#-J{l2;_Q;~gfH9~1JqYR!Y>0vIHf`1^{fZ&5zm~N3+iR!>Y7`efsW>#^Z#9(qg z@H8m!daUlQb@(=tDhRG?6)IPdg$}>fVBWs!!)3H*mWmDBIgvx|6HpOOihDHY0@kDa z=?8OM%aoMlGuYEcR4)8y?rbFV|n08{cb?i??Fn)R@87MCsSo1U3nwx9hK- z>Ofl~2fW!g+p@*=lnzPD zR~AwA(tYOrf?BtXYA35!t=TDg(IH>;7qvRx27Dxl8!;v^MzTihuXReeDaTJvf}GJx35&VIPcFrll^Sk7^FUvQm zz|OEZayw;+ixjuWN~2*yr;iffyFvsmM20sWLf6h*VMAa0TTgHF({i%o;_`#YYSUY2^tlIdCHk z)EP9;A`VNuE0vQrVSp`)*v*PrOrpzCjphk>d+{saLW*9)OlcLdNUqtmS**-eQIiqj zmT#T(jplX40htKemu@&%J6EwV&myeA#J#oZ7`6|Rt-M${?j~e&IQPc ziDk`4Y#)pJo#*SZ?()xX-`8^IDt>DS4Lt99{fHswG=1dkT`Kqj@%nH5|4h#8y;`iq;J(d^0<0Le97x2R(LHpcz8udqo{Ro`H^SheARhy9=g zB2LtS=)GU=te`NE)o@9E!L}$W9Vx~hE_)_~uRvU13=j5@lee-$EoJ%L+>JI4V zr9+J#5a$=be!}n(DxKwYZiTDnR+rXEzIR(NZ@^Y zr?QfUQU+WGTnPLjklVb!@oyW@d+6Kfq|@C3U0q(8h?3Vokk&|x_~Nyr=s%s4RX6s< zdO@ug#t`%-?L!N@`1H#&9S@Sm^4yf$vNx^Jw9p-L_Xwql4Bj=IDF&K=}S;mfO;z@Vw7ScaRAnT&U^p6~Q0*y2$>|UkYuMXG$e)@=5k6 zlk1r7MTfJO{=rs3?iPj&>R1*+AvHlBdxL1X9L0-THgNf-_f>BxbnaDE_+@uej(+`8+9P}$Vb z&dDTc#<2O|Tn=|#8AcT+3CSpjDS^}(b1ZtdwBhf*x7WK@()|0Okel9_FoXK<(oiFt^vd>9AwEA`PzwNk>>f3Hwi45p}woWIcg# zvTg>S+shk99;u|tG!Cta&v)32x$#4YEp}ypj%BqOM`P!9bYXNc{t4u$BXP9RAy?1J z%nAw-Jci&VFXdQ*#lWgP4JnE}9GI-atY>O(kU#E#itH0`v~Bd5Eo|bzDxun7r<9~V zPno3{sfCLY3H13KY6Md;OuQVrvqTKLXnuIJw#r1)qLCS6Qa%2PM=z-|%At=pQFa~i zaWDk7j2;TyN?l$2#sFSvn>OJqU$_YshQ$0GCqkOdb}L1bPsr-BXRH6d@RydenWaDd z?)rEJENYyF0@b=@Y0QIkJ@`^8HDXjLoJL86{zSTV!D9xYS60GSt_@o`^PCH3A=IHv zUC+oq6K-hP=e4={_kBENJmSxY50n|NdIo|1-7Us zh!3^R-8a4K+&_NDJ@M>>35SF_<2T`q1ymY9T?7=}2VFs8WI zabmwWyXKA)the)hkpcR^>vy&YIOzw<8x`k>g73}$8*8~SOu~ITD>Z7XG58D#)Z{zV zdD5v(2V-fm#i(y-H7V)TT|RtDA*sWb;@QB;vF(MuW!!|({HnqG{ByPh zpj5O{8$t|))4J?3Pa^0%Z9BTOiGS@!gCcqi4JjGW4@Ke{ZMJ<-_nP_G!7wTm3asez z4IRf4wQ*BA8c};Kb@JJ^)f0oaY@QVD{U?A;@$cV3kKr1Oarf z28%JM!2sqPfy76!d_7Jk5~uev|7kd9-cbI z%RBH56^i@>%*VJ6@3dLdMN8$Mr+^`pjWS@+w=9$Ml+dWCnbQNkDyEt0(p5gBNPq8` znBIilWHKiJRaM9~McF|77CpOU%Vss6cvw{{X)zOM zCO<%$0wjs95I0>WdbU4%pV%2`e9FAUNieZ(mb9_8A02e}x4ogekqYstlvJ)bwEfG( z;_l|vUDUE>$(fBefZNOAESR6Ws<+Y>m~UBGk_RtAKr#NN9v}*G{i}&O%Ts|sP&%7w z`n^FORw0wRap+5OCU3YpOq0%Co2zex9z-t&Nh09ta{$m2eJfIFS3pni-6K28<1Cb~ z+o4!FUoyW`pj*572dnoPi<$O(+)*6mMAmxq4{xdS3(wq$J!qyZ$xD4Ei0Z12qpQ%2 z?t=*%k2YueSS)SD(1F$3VgX`-=FLON+d=YktkMfgT*t&#;4MZVCQnV#+B&QGb*wr5 zD$T2Zi#yQ#Kj~Y$@D%!N*SvOZOF0sfGs9Nit4v*}_Z zO)ygM)I1m|<==XA1^n6!OdWR~N0PZMchNO}(~ZFXnWD2`%E6cB+`b51vM*F~F#vi_ z=VcL>>oxLKt8+OotpZmga#nTMBW{E+v~Wk~#W_DnMuuiMwHfnJaFfKg0)F?MozU6s zkAN(I5e~4gRWH?NSuD?^dbn}IBPrFFR@w$upRn8BE}7kazrW7|andHMQ%Z*gsb(e( zqSX~37CRSn{Ys)y2{CcZHY#?iyjjdt%A8p&Cys&Z4=N1S3+t4^th1w}T5kNt-9~tb zCPo$^F9i<_UisGo#|9o4XAd%1A_=sobmGF53%|{JI0+IZ{xCwt2Pc$%tN4SrSn2e( zDYp`M4wq`H5Ru^m`||h8KHjY5&kqO{#Q51X3fBP^ilKxXL>0aH^HHPbJR3KQogjq9 zBHS{1VA|$N12>8Nvp0bwhk5d&LDMQuusnmP#lK6qy#3_j5kIU7P~5uzJ)S3}U_Yjx z1+O)+f&Tmw#kD6V(2NejG8xTlzX8-*BMzzy?kRJCGb28Gk-gxZYGv+Qo=6+PM zJ|EUt87YE@4O!>W=cGZD=k`^>X9?Tm7Ta-ere=h>1;GR_XC44e15wDmVD9L5U7N|7(R zb7G*uxEUaPvBJ>c6OUBA>fy$as4h}jQuHo2B?ud%dsmu_3xsy|%gV@3DP00Q292kz znsh;KUbC9;1fauBxcK?5pyv=v#?I1h=`sEDz3g(K9KB5Av+c2tX z98y`C;~Ph#yMk%rIC-cTWJ$geWQ`$9NxWYq2^ULa5-l=JT&ac9AlDv#AYm$bzx!1% zH})Vu-`US==->jkXcJMUeFmx?6ZduN@dwjIf@~;btM8jIv;#~N0^D8 zxy^_@SD^^s{?>8I>j25sK`~4$RXr=wvU~J#*%LNUDY4)nRn&H=W8)5xz2pnIYGmKR z^eH<|>d;kaRK`e~U2^DA@Uryg3s~sdB9*FCiW6Qv+SOkC%Y|0;{=^2LQqRYeFWAJ* z!|%U$4tViU&wmoT{8gzco5W|zo6SXx@h>;uPRjXf8l9}#-G7VCzjB%WZL1P+wfaS^ zR!@}drU!kiPY^Gwe?56jyrw%DaR=%~jPsga-CukO?}utQFh0YUSNiL)vxk7Vls7AO zEntrJhL*{$x$K|xj$99T!Jqxl_{_LbrR{W77+b|UQpBDf= zqg_dL2W;#diQ67263sT5vy z%r5w4IpQsOc4MrU9(lF1(BIQt{x~cUahY zPCjm94@*FvB{au^12gqUa#@y@PWZ`h;FRZdcZx3Pb3#^|Z*=P%;X1{9Dx@9+0+pPQ}Sf2-TNvn)=3%Es7J(-%gbl%E6nUg!0D5 z6(tP+_rJXaoE<}MtL@fbHlLo8yY3e6hoU`$Zjj#&3o=_wolIU#7~y|f!KTR-CNYOR zYMfsRnv}UfP;=Us1sKX2POX14d!6D`|_5AiXg+pe|D2OL1^!m1^f{2EM73(>lmpqUiA*( zVO$*uTYJb69}3D2t^DI&dZ)WyuI{>|p9%=K<=zXIt8!YofzV0xcY5Z=KcXQflyf>wdJLFIhZ zgWrVL%Kq_AN(g;K4nX2@aqG6``Ve~+oU9o@lAxMU%Guj!(+pYZbd8T-@9fQmVB0i( zL6KmPUZ#P~U0`WiGWexKT+v~TU!c-0C98v^$_}0_nVz6gVNpHfoit6*1?_`G65E1s>j;;QcST=HPHXFd3L=^ri*i z$fp*u6HFrnMGEHE3RYK*?K}YkYxUTQyk1!MB@0{i=J0p5ELy(iNGrV@a`MZjTE9#% zc=iKWN!GgYZ~J9^yz9}#syKIvVfrX4OdF+2wWgV19==kY3DY|%iEpIt`Qwi8nRL&P z^%tT4%u3X8A77psQxdcqZ~gKuizI>IAz-@hSn9=w(-_x>7!uLqaFzJmezNfBE%A)&Y02WH8gE?e+0 zS7J|lEsz#ofDL+4_E1lGU(SZ^%m3XDQ=NgXRJ8AD?B=BTr#k53$%_@O{`VNw57EPQH!rjKK@{qu*o56!&Gz)bXVC@6~)-No*$ zOyc|DZ`n3Bi-c54E(Yt1gXBo0lLvP`2cWwPZ~2WJ>Hq1eT6LU_usP7K-TkL z+HbT9w4)Ef7v>{wznHL)e@Hj!maIA&FVUfhWznG&t|&_$81BM{s-ToF3S_g4su#+h zNGDqjmn&-x*)|z-Oo+9c6*{Ij2DA)KzJJGtmrw#NY{+#`lHwCY@!YVK(#HRK7G^Hp`~L+; z*R0vm%lGKm9ero?dsd;5 z<0AjEFvI|}ECpFa#hTNlP6LUVf3$(ZnEi&vDna(N^kGL&pVW_?ToqlhmgU{Rt`F#J zciX@rJ;$-uCSB~WfF6U0Tp>xSe24;L${&}P9@cdt9Y5d?TLw#i&4xeT*|Ah=h(5=Q zsIO9u!?X_54?~WpbEoIB>nA5_8!Hfsq?vSlIU@O13!&pOD%1AG)To8ve*UqZBQ!EC zdvWFx$bM6ZQ8kw|&t)P=%9$6VGqw*P;wn|jrpq^f$C(yi^I8b~@xf7%ZgX?^6kSFZ ztQD$K-pKqL8SwP7X|WKZ1DW5lGN_<;!{qR^uoeA(&R&Eh8abTbc)XHPjZA)jP92?| zPT@~iAkyI365a3C(a-JJ4aWK|vm)Ad?3XT>N=iH_D7>?bma^%Ibs6ylPTnt-K!eRY zTGTWfY8<}2$@telN=`=;LVH&@eLT2G0NvGgo~dXvVb?Z{17k0`ZpueqO5)Lq9tak? zID3q^2z)@*vSUrBaASoI)~Y*^A>+upCdo+kQD-VM&V<|4cYvXCls=J)p6@~<BvsW=BthSv{lqYCjbHr6U%*UCC$62QH?CH*IC`rE>CeIdkPXSmbIxhsvCt?c~QKQeYpsj>hvDxK@d6LR0uephuFIb0K2n|Cj=lY%P;pflZUbe zYhjpvuH!05FoF&mU*C){{#WN$2Yi!LA1a`jn^2U`ing@e;+#8rxQCmp__V z61zm2)#-Sl8a*{1#IfNtef{d=Lc8emus_$2}6#2#U)4HE$Z3MN?i*?01O@e(U!q9yjKo!k`_hIBN^)a}y|HkVK>#OF(h8&<7v=rdxH)R4U66 z3Y?gKKrhwWFFwcuv6O>UgL`aZ_hk%=sS>X7>03_E&rdx0ggaPmIapaDOQ;<pZSl6{!;Ko@Sp8N zTnIWTIY`M}_t*R#SAPSFR?n3`*`x%2gY^i+hQ`p2VWt6_Tx|B!*QPG_(O1t_Sa=f+ zcnB1tF?16#FWpcO4Jzw9{u~H_t0dq_Q~FoK6(rN?^^O>pRBYDJgFEQUP@P)_33JY| z(D$Io6@&@WgaQlt?~6*+?siWIQe1b0qz&BV_v3W^cY zS?}8qR^l)*o?L&C98m;KTlaN0qSAZTY9UL3gcjbKIy{KH)>dlZUmQNqp1j?RFH(RY zh(d6n#Uo6h^50-C%L3d8+gy$@z{Pzr&D_U(01Q>~y1eI9%J&<&evBITP%!a0U9fIBDeE)l*gEY%7WBKqy<7K5p4Ib2 z?L%3-Vo*?IKqnh%@4rfs8Pfr9FqH!-R`DWxMQ485`%3vqMEr3_+++%TZSL8h*OEAH z#dxeSYZb2lg3@@<;|btW6>aOS{H7i3xp1PfD@#%+aKR72aq)BOpWn3z zRMZ}nJW|xB70dgvuWbIl^R6TQ{vKJxIJ@+|bBEz^BLw@Qm#FJogf0CSQ)+n zbDr2s{Renm6M9~rvjK05j$gO0`|bUl`||@WnZ2a}3O}TDc6npL*O`519&%p&an=fr>-h2j+WpA{KKH|h>C=#R9|eUJnC$xEdGfCMOz@Hx(rTwn=%b855;Xi3hLO5nC}L8xtHXf=Mr^a zM;Sn6ic94wJ(ptW=fRV=5nEfDinl@(_+i}D7)50ik%|@$2ipPVQaYkOj~SyN9Xixzq$^@b^n_DxZ#{@YGBI9uF}8$Z&{;u3*+UXwQJw;vX}5DaZ`6b z+8Bn}c7!*NPp&8O0<7>LMVg=;4Sf#l_oI?=!Hr>vep=B(zzgBz?k5HKhK4qo?>-N2Q>0QpNz<_w9=nXPuBDua&0@PsU&6>e`c;0gE`&9l?4Zn!E|#X zW&QZ7!WjJjdtG?gAp!9{MV7pYv;s}(3N?f~uwLCi^a>1Yc zn8fY~`$(*JY1fP8_cYE(Kd>O_98!Ng$Ttx-zK937-reS)J>xC;cX_8tjso^`to3{) zY_7$jNehCe6uem!F1`r0_dbHypAE*7A@dphnNs56z_Y<_HUa|IOr&P39!kF&;W}f|J)IsqQ zx6d~}D~4b3@F9wU|8`vT-b0^Dk2jAgpDF_4=I^XWr%NX<(mi9g-3G zc?U;+9rlOx{KqL~>NYX)7F|c)*V(5R#ZMM1+G9V!(8ABMUxwGYB1qx@5W8mS>Obtv zM@QB7e{0XNIOm||cIjEc8v%Jc`TbQR;n5lE4=VH#IXTT8pEPuUXokd+eX#@G=nBphaB!kb* zf+(Gk`lup4MFijF0m`78_trBrXq)^Lotx3YGoz`~(*F8CPm%Zqk*0@b+KnmpI8&_F z!75Be4}-E}mxmf<8~wCe+%Wj@62$6lb0aFvKU(ebUspIt)}0*zSJ1=tGOv!i{Lio4 zPAM``Wp(RxoxYBx+Y8uH>~JZVp)1Ch* z8v%BED!{YYA!@~)U%y)U8~u( zCw8*Z9=&(p)3l$q0~J9)<#ua|2_U-fUWL%l@+}UhimJ%)SExq4vCGy35ir9>uuA9W zDX6KrjYl(#fNYX#NnvjzNkg3!S*biL0@*d01UW?>jd_prN68aIf)wz7r@|_6aYm>a z^E*2XXB2^tPais-pI?nP4!C^Ze_ma`ho)awoIls~XchS_ypa86V<`(hx9B-PXFpdX ziH+F&9ZcG(cm|QJFr?wv>#0FBQC4vs9_{Xsi)D2;9MUTs{!^-Z- zcZqi3scfjz2l{P-$4k;jxkQbOmuEMilr1W!U7I}?jJBw>8^MpsF_HvjBP-BPWzfxo zEmmfZ?;02yoINgT8j1Q1&-SBL?1VaGX=LqpY@TF0`yx^}gYHHEI?SQtstSPoJ2^v> z81iLh^vNGYCAuzA{f%AMeFpsSyKqI{KYiVgp-Ud!5Xkm4oKF#$mEv8qHizG$m$p)@@!2MwxHO&5jZqe^&ionbH8Ie=cIQkKeyXMyjJB{gAajfy@Ke8Ryl!i0*;s3Tcm(Kg9uS4=^-;{_B`Z|# z?|+303J!v7R=k!lyWLCD<=9#^AEPg+NnE^d=t8+@NEuf;y`pi&A1~~XF5wg$O5HkZ zROeP5?maXMOwea2{^qc!JebzL#+)q115z8R`=&$XIpFo^k z6i79_dp~}WgKL>`>%{S4BEyc|tOu-Ac`ah~3;hjPZzY8tPs)y^fQdyqw<4UZCh^N= zb-m=IlyJRwiA`KJ?W#R=0 z5My>bd6+?+ZVmIu)OI{pL^0l=+ZUx7oHSX7R}dW`YTFt#46vduQA&v-stJ$2m5oxK zWu>;8C5#ksX{*#!Ghf7bO_`KAQj+;12Q=7Hdk^f80x_S=<-?fcz+*>RFm#zy&vG8it_n&)e`6ix-s>MY z)_=#FCl)x`zbFg=a0E1lN? zC=|(udtzWxkkuo^!{zhrw0S@^q;P7Yygoo6sbo%eppcq>5@ z*N+aJOPVWWQ*!BcG}!Q%ra~I`V2X;NQ~uS_wlO`J@9g8kOiszUaeJFl6Yzv+yLog(aw z8?%n{Zsw04d|Ys`MzS+9#$DqMDG*r4a*b15L}u0%cG3`dPo>Z>EjFE;Ik&yYCviqK zIpD5Hk>JZDUG}=H%I!=NmQKJ0JGF@1x9#VvW-*)6c+%kr_<+YMBT*=Q&U?=AdZ;9G za%b7GQ?ls-KL6_@KhMDnM*TF$y6P1VL&2D^&nsU*j3vR~oeA+hsK65_VzMY)Dciy} z?n^&}`5FZbPI7RA)^Go__m!2p~%@(2^$&&C&QV6<;iDiD;HU)9oi#FaXB^=uIS&fTMf_f!(k86zWD zP$gax`j`Rv6}Vfz;JR<$_P#;`Xl9^#?`*W;oS@YWgAYVdO!2+`w~N^P56G8&s7ZTP zvO}8xS;_e2fIjZ8j*eZy=jWH-PA}J|88@Gg_IkMJ6vJcU)kstsfmDMcF2*+>9%;I; z0HjBFWsLd{a%50aKAa=E?&{&w4dAt&{yU#7Ricm5aZam%lHITE{0wJ>hHFiZ{k@&8 z*#r9Ty`_aA5;@(Gwk(zKoE!=l9@2}+W(i*$6QlH|6|uP6pSbGY-uNi3?(Xtmv%tS< zo~%E5-E^52E~{-wtHk*s$JQRI=r(9rAcT(#_EC$F}Ju$AtS z>g^D)plUSDDluvDlIHdSAU%tLo6Xkz!BjDH=_tWaUKfHn*GfOGJjGWw#qR;yWNPuS zli_(o|A7m$PVi8kdJV@V{#*lQ?q!|lp8uVc{cWmvMN`mdPrjoVTu>LxYo*VhVyhSQ zJN(BuX5+>dgi8LJ^vJN)&A&PCNqiMZdaKM8o5GCJLCzTO>G+rN5fy$27vK*1fde+= zKbDl%O|uu+^hkj)$KfxdOW;Wd47!~8kJpwbp%gqQw3^pv`&G{IgLOe^XdYnDdpMeb)NTPD44HA$DS+qSv$gPd|8)_MTpLRL=YeF53)1oVWCJ7%X2gCH(6$M$-qJ;qvxZ6KHXpoZ++D1D!`Cawkbaoco{LAYUd6Gs> zIf)5%X*7Jet!33YYIFN%R@tIqXLxU7pY0@n-d;ipDdH;Y$_#k8g=f%$wwxY4k|rb6 z1J5vCHcnqq^CbL+ZGYjJFP&H<$|4V@R?Zgxjj-S|6UxHF!S7*8>MOF;BncM>>pJ`R z3?!?I@7&+((MgDKfJk`B)LYzMka5@jqlMzec#oRauYU%-__~dT`Z|Qk+bY9n|p#U7N1g^L+x+~G*rFW)|%BvHZo82=uQkOp$ zaq3!^k7vwh6pv4)TCAaSvWp;x%7|5j6WM##eP72)8WAFSl#D|Am87|olBrzlw2bTd zf%n6EPLiVkUkduibn)Z?b*MQ?=Xex_tzD<_cQ=V+l#I2E zVbX{BBg$zJd2Rva<4_y0okMnvm4T+TpW`Yr*~7TEd}_mVn=Ku zI8wrWfVN~n0r1E=m2nCNoj!X`w@ZvTt#*1CCYF){3tNBIn8;I~S0NT>?2GRojCBBzHsA0Spgo z5I#~Vb1aJ(!`Lj9Z-u*`uyv*dNrT_U9Ej5%x#f?SjaFBCUvG2k=%iD`4n9^Hzj$<< zm2lQCIs!y;=ODHJ>4Rv{by&auAJ0}uyI!JWvxTmuq-s#dr{Vr9F?0|ht)+|je5l8( zf)98ch|`JD&x8S0h1`44$ZC6#ad33g@hM+B>aZv2bNbkjCr35{fb>CLBNiz@&FrIU z;7M5^!GC5jJ??Cy`aI*hmQPmP?LVqr{pb0a)=f4};tK5W;G7bl_S}ib=iu!@-D9D( zb`sO3JYGgS*TEV~NN6rQ+Dfjj*vYiLLt*E)5f(z0TogPc^nHqK@4oq&pfpr_VcWH$ zjD}|J#@bh-qM95PtuOvvhR>{#9CO~jCS?g|xq&AZ!BtPJF8d|PcRMe0Y-3{UAPnw) z)bf)pHAVfkUU+CKap>OFkWd0cj~oY`<>%|bi(liG$Jd<_a<7SCrR$y&mc>I&(vxCk z5_!-Aw@#zkU!@g23D;zat_eR8jTOaj8*W6g&7Pe%cEE!_gjQaeyfwVnMH;P$>r@(R z^jl$kv5TAE{FPQMXg^&wwEiOoKGYAw9P|J>UugctiZsIp2NrzFJqCXpN|&&@BsS^R z*tw)uE4d)lrr8fXM*v>eGhht(AkFLO7#JJYXN&>bp4TC6^L~z5{FlWuURVu;pge91c64(-y$-@a+m@9|+o{xH-Mti^ zp9g-15qI_&kXk*u=cYYEn0=*D^mo^XoS8J{rrf(s)--0%F9kdX5aCtLYdyHHRn#1L zDdJSf&|8t*iH_Bb-|{>Pjy6)cInD|+zB>I#g%7J#)!+nUL4Pu;SobOtZ^PddN$0 z-L(9(w2X2VFCAi|j@kAJBH5t%XQSmd?ow^i8b^JJhdt@_2S|FzL40>%?#akuP$n6o zw21=hcH?!Yd758yd~3~;?8m%XIuIxK7ydR6QAB~v-*Ng*4p|Cs(>L5l=J-m}picy; zsTx~ZGgBtDF;epbws{`J;vfx3VY6pEz~iXl01}e`z^XmMunb7(ll`O8) z>wK!ZRcJGSEXHzvzDHqf7m!_oU?uudqUqZSjf_#~DsdlI+P%Jetp{Y^tUXY?oCyXd z*Ap%0cqib=af2w{p}z|x*?{Lo;!gjmbMzs7KmAk%`Uw!GFDC>g1QM6Y62t3{tP*4A zGOmSTrc7P^9+P^oRr>`;UMRfuH`df~8sLcU_aAok9eTV#Tl5XtW9jMo($*2L;b_&3 z*hbWqmt5+4F**^0o0I1ki4~sm+~YjZwDtSMrX5I%uaOvmsaI}zAp*eb|D==tM*OuH zwdSKGja3N8*P$iDK0_rfYYHU$OAjT+Xsn>P44iAql`AQJ_*{#1yX1H+H5$l`l`)N` ztq~S5r~1OSY>IPDz?T>dDI5$Yakv1?1%gS-eaHs$raWLx%) zZQu}?E-YvKR|g#bZ=e_ihypjNDMv)nL;$;^VRBsRv%B%mcm&h)Nzk>IZk0|;wM8k_ z+d=wX?%v4=E;25Xx1@~Hb)1oOs1pQI0BO)@Dn!4r?g=YlbAv)H`19Sw+JVv+O@Lv0}}Y+PXqUE?rL5tUgW-#$9fmxpkse8w#13u z%wSRj>^xji=T(m_rqZzSsekJ}r>U@OkGuDvj*AknyQ|J?)iq!5?@XAH#R*(*zQny^ z(&N-&nvSGG2;U#c=6x^E*)zY}N2}0fD$!uW2q-rIpx5Q`tl4HtA3}12jD@mK4X+@3OVXO%9R9=j9yrlf z1Er`(_5s(CZ~mG~ea+`apfm4oLFde`a*s(iM)7vikiA~4%VqUqX~VGg z#2N8p+4U3a{@%9ku@>sNG7!K2Bkvs;F=rPgTK2ntU;uDSayxv`r*OORo| z>3x$>;0aCyV2rDe&!5H1J^Uhxac7EnYc30}2%obvRrF$RFQ;`nOn(lJy&pD1G?_rJ z=a7jcfvgND3?W<(`bpSWF|qU?my8{^g*f-M4CF4NC?PCEHZO5UIBqJI0;4CQ3oAo4 zJtt?4mQ@*D5yfN7v-R)&ebm2$_fTlxO#q+?iF-YzW1dbjh>9%i!bWAx_+Qr_{V5-d z-BsVQuE!w`C-Iiv^=G^FZB}F7??OZpFI<=|!E_^vuoQ=^M98m+%mI%-F8wY1fC@mZ z%pkXOV`xxf<8i3WAWzJ+Q4iBlm(beq9U9d+4I?QwNgww&Cb}r|M;iL5&mZ@yKYFa!+~JsaP%4M z@DISd`|a<<(W5~!UbSHyIlRsBzfvRu7_2!u$Su$c+xJO8MM;OsljOCmaRwihXm;tB z5MzZ)744Wt+6eZS7LHdTBj*+h1irCca7F9mMg9!zy4KG#^%9)PBc57I;`$AyBGvn9 zNbPPARCz5cYO9I-x#P>zdiK@j8IexGy{k{ygcFUtN&D@TNWI9}>AuwVhv67YR!l~6 z+3Syn$4}2JH27uFYe=W(9bM8sD+jI+|hawVQ(&-%h+LOcd; zz@dX5R!59w+PPMGvU}w=dRgDZoO)+a$nFLr+*h&(i>?oP7(_vV4-Kxc*vk3EtqiCpXlNiaa<8gk_tCGQC50b%&GgCEOQ z{LX?Woq@!3jA55$wslJi3VAIsz+q6xUkCy@y2#(86bQm!g>X{IrFqQEWwea7tis3V znRZMlSBudsVC#mD7;ofb?L%TDC^JQb$>PL>O@ub>%wb2`gp7w9&Cx;#G*) zBYfp$(rfStfw3e^EEmm)99M z!YP!R1c}(_ecvLO0OMpv7p}8GO*5B=RNn|v453oMw=c|Tk$BxE7hI;9SnrhwKpQh+ z%(DjO6|m1rjZ|NUU%9^z{$NYCj@1wLOW-1jRY;;OJ`X#$06u{42fj7sF&f7Nr!65R z8CrJxdN8xb#3mfarIuINmj?+ehEC}o$_x6~PHci^+V^~O>kI%@f{trn7}eG!(tN-j zhu=-+0{3^Ku7<5uG+y>#8|SaAw4S?CH@ak=rHdum{RnjUuXd7eKA#Mt9l?@f8_Hhj zlc)*;Coxz0P>=l8$=tvrbisz0MGoEtsDcsu!i|JikR7Albb7nns0}A7Zw(5mU`VRY z?3D)pRES$E(r&4p@6{sr1i#)zN&(o;4amQiHLA_vTyUIkd-&y*eJ_$a-I$D6Z7l&E zd>%U)g$Xbx=}C5djt#H>F~jczO12`^nNK&!%Ln+0v7`H}SdhFS5ZUPAL+cYaj8fG) zFkf%uYKV*71!9D{7%Ki-7r|ZI$o1;%GZ8Xzh}<@eB}I6pGh6l8+M*!WmQ(g!q>p+=1f{0~eR*64EVR;FQD5)-S8=eq_x z$L#pCaOxR-(Mo+B840&-{H4kkVV%Tf8%c~OkI!i;O11SX?g(Wwq&&9=X{Y5_f6CO# z{$OcpVf9Yc&Q_414ee8vB$%npFhk{dY@MiHL3PY^3J=M!hIm%%uMkJx9zHI9Qem4j z5VY;hx4C~C@z+^}L{@HgVrm zZuT$P_kPC>EPUrZNriRuH{FTsS85WiDtRI5M2=swEdtQebeRjw7*4~d2-fFrjuRt^2 z;DI`skIhd%4~HvzkwFB>5PVj-;^hq=^nZ6D>I4{e;#6;i#B!Za*Th1*no-vtjhXwW zKaSt-w^H-A=V{I*9WURg1TvTS&U@$m@cPna)`7QNbewi<$^P?Q8dhY7NIvjW6sFlB ziNz^0u5WuYfNr}K`mup?{@}a!8Wi&9V-lC(z~l7Jq4w5~ucRai!tAHmE3U%n#(#!P zcnOomzxjrQW8X}guA@m5&ENwdR=xThb=`5!%sep&cYDF_CIVT-JmsRQA}G^v6f`M) zW+^eH@v#(V=WAL?-H?)LrL+Cb-jb!MH^~7Ii z8CUnwp#vN9zA}duBDdW7(e5?Jgg+=N$ZqJ;KXd-R#V@Jrl&`v^G3vBtgL zpu|fN6wP$t^r^O5_ysNJR3~0@%zdIKfOz?!ChVIK%$A>~bY}!i)a$&kBB|84e!8hW zKAb7cZt~m>1LK&^iW?Sxo&KYC>8KIHH_)akvfOkOcV~*cj_k7g(7_fYjHuIpDZF4| z+?}W!N71mS6ucR~uHtWTcz~~m8#0z;DlwKuAuwC5QFlyXY&VC&9L_wd*7JThMS(0 z5ChCo!bwdfqrAJ*SO)UvSe^f{fOw4>Feuwd!tXIA=$8B?g4l|9+&5y>DVEuex+;4qdUV8ZUrUE8N)o&R+ShzrcMg3AEE_G` z*8mdNBUAGS`5X*uPG_8XZocKy;5nt}V6PjER~I`$#|L*`U176Eykr*%S;x^#61T)9zGxJ}3-{;rwOgm-UY zY;Bo`_i|6taD!Z99aN?}o&pbcgVDGj*2EgCCx#hR?f9sYU1Uh^#R?}%xxG_O5J64c zLKX^I@6VfUc94tb(8H$4=x@%<%c6-0ydL~(nd%S++OE^0`2yC&|uxjX%04*jQ6<9}_@lkDA->$!;za)#+sO;V( ziLPpl*SJuq*MECJmLkBH-Rz(QhQHW=F%u#CwmeBG!(s}i=+Kc7Aj4D)&=f`@ydUqJ z{83L7|G;1{Wug%vHuF69<>uz@b_)7mod-3=6B1k)&oci=n{9uRkV|INND- z(o)&59+_yNA42-itT6+WE*wwQJ_5KcgpF%g9hsr{C4{nx0EZEjGvXIdb(a79Jt(s# z@C*gGfHjKPG;y#sNTB zN?i1Xz-LHcEORW)On=i4do#iU?|uK2C-(&zmjeA_773L9!7?R@vV$iiZK+?DoUs(P za9mZa22*Hi4HyfgqTIi?5NvRJy}?Hxo7V25n?4q50A{es;>kDMB9R-$MR8$`F&`KR z+`XNnl#?HPHCga;*%@o9TFos*mnr*Ih8XQ$Fw{k?|JGZfspaa6p^Gpp$L5`erCcZ!?NxPj~T$1(f<81XG(bjBZlc~2uwm3*@PHVqco!6GyXe>ATmy1SLYQNKjz!(*-kss zqw64sOY5rOE^KM^Fw0(I zD+$DC)m!yrc55#i(ieOX2UT2cth5m{Sr-f?Aj8ZQZ}XvJyEp1JHahB703X*Kw2yJh zg@U4L(NQ}mKlgI;4r>?2ECJX}EO|)lGsZIj>4-Y88z=+#dfWHl`@d!4N5?qyP3;M8~b#7Xfs~Jd!nKLF#EpJnvS{I(F61kZu*PnL9W-Wpxn2Lo*aY2X%2glmVo#V7J>PGL^P zuXt`kAP95flh0u|gSE$Yk#<59;@ZD;fV5cEu-S2TS1!V@%$7rE_j>qf#(#Ve7quv) zh2ZUXb4K|=igmauk2sH9cNI6Qwru#7Rg!1aU*pKiIYK4j?O)qWiT&;P;N;>y&p{V5 z4}1zsbFw(|*98~D5uS5yVED&%io;EWke?H;AWAdjLClC1_qRi`y5)ue3 z^DxAdhd9ZnMqjm#{BF|Mt|(c!V%y!eiJIfjJH@}npHXXzNAIii*0*7w{B8vk)|uD& zv5W%-onLmIT|VCCKa+)=D*9)Qh3}Yk``38`4228J5Y493Q)B*4deHgDpTkjCzII9R zU?C+JKC%RQ)QPM`d$lTBPUVZX0;sK4)p>TzFVsJGqIrv&^Eepe;X&AMO;2Xd+Ex>Z8==jS0Sa}`hI6)TX=~# znL5^()m9xTZgortqNxzJQ*ooW0T3JfyLlB5;hvdh)OS)@t6pEV9U9t=#JT&rQgY z&UED?70tkpFfEgdNhZ?dn#i+(fYeuk{H*qz&A_uvh> zD28L420goB7iC;V+XdcuJyR$B%_vTOFIS8qMWQrJ=z@?wBB$)QE#a&+0_5*TyZHWG ztV|b`rZ(Ejkw>k%H5ucUElPi1i*Iave^*kyXg`~`XcuDn^pT3_+)B(%`k72V%n@SaZldE1 zk>+y6$Q{%GoSQy~xw7r{gjss}bo;tUb?7EnrEA@x8>W8UTCB(OvZ-Q7NbVC&=(F+A zEwod0Tp+0G_ikoUu4fZG3YO_$8zGXhucwfo`%qtxSIo0&Y0ojD*M*Hfss&E|3c~)i zosSTDCDmmuM6Zb6XBx5hDJ+qbdGn)uOP>0?Y#qcJz99W7$|K!Tz$i_I`bLkUE||&To?Gb>o{_%}$jTn_`Motc}6cq0r zdMA}qVDKHvF{uaASt^eX%Q~?Nsy$hNzdvgzOmt2e@GyvUW@(9-3om(E!MqFD(l9-V z(d+F~sqp(h2tJSR(q}&ljdjK;Lal6|1`sh692tOTJDGkb44PueA+149teJQGV^}e3Z&T z`u|#h*X`^~GP|+UKFoTSnq6Qp26^5dpiT#+2+Qgwm2Muuj5xk>qycOjK$;9)%`#jr z#*A4?>uOu$ByVBhu6cL0o{Deg0u6u5FZW(|RxkhbRrcIO=Lc_4dxRKCqrUF|0#vzV z3>TihbA#~SLTl8hqF#JfUPgXE2Asm+0WLaBqEq)de`KZ(dPJR4jUtvQ?c~R$TG?YY zzDu}~coC)&_g6@w_pZ)(VAQ+T>8RWDBl2lO%8q5#jTio(xz>ND6JhUwkDB9&h zP=fQH(*m9Hr`dtGr6n~utc3*pZyQam`;5>HV)C-Y+IoG1|X=XDn(Py#ZUXy*|^IqsvB|PP$g_sY} zw}91)F2p)JXEUfBd|Dx;viGOm_eeAiapUIMSh+3!=9q`cFxa()Qt+{3THCL_$N95o z2fqV|5w9g0;X9)@McRPD${M9Hw_Vf*NR_sA)zbFt1@V(1jYc3#;p#0e75Y3twfOG9 zwto>uT&b#j}jOhbHh%RWB-y;+7$ce4_oC4zRj^0TN6+;mVT{QxEz_+y3Vy0qjm-2rH zQfuV3v3Fn4KfxC|+*2w+lrd1$IhQG)5->2&TK1a#;_+lmZF7Cwmq;SlZyGk0RmAkQ zj9eSR4$0dR;)vVgRxoo1Uv9r%-#JQ-m(w#Iq@ks zY;x~jtcdY(f|}oa852J-pw#3Z=oO0~+`&Xz1JAWQcH9cfVy%HK9LuW1 z&CdrCd&ZB^PUnEg+(4%-FpAEJE>_tuF@ad=?_GEa27TGe?f*nx7~d=+P9t-tEZcVv z%JQAXa_dz!58*$m`I}GIwpPd6$E{s0?8z8p{zC}$yz=8vq~IaN75I01`WeH#sL%y-%CZwq_-)-f6!z~nn? zixVdep53pf!}e#~;vQn6Wp%AChDi|pa!e?XbUK>SJV3SG>*kI8 z00OVzbR#?$Y^ZuZ2q8d(<2;IDG@rC6#Hn0FLpQ>(X<-;mob*Ok9>0O~uTe^tY8ptJ zup042hu=q6gEZk=8s1#bhSrSUk)ge_P!)qz=ByX_SCgVWIQHuga>=wHicJ=anB)-B zY+55czL_f9qKhn#-nO>kuxgnWi;b&a*HAe`9P zoi_L(cad-V+1 z0pv?mdr@smuu7NU&Ur~;>Wat#MOI2)%k^L2eLV^+lMNWM1@@(1mEcP*i42oNxz_qIW~hCEPA6 zq)^^i#DoZcs)KvYHw=Z6JT%Y2CpYZ)s_|{-U1axftG}Ht$t0uOdw9YE_!v8Hh`k}- zNwFYW@+J%NMFd)uv`)NP^No)7JXHnkcYeW%}FDu_RUV9~736h#wOqIqA^3Dv13b`OUJx0i(>nVLkx;7rgDeNlOk z4w?-dy^6szI;nOBtXud+sJczG<20F^5S-?KQ5*rE8>m$Y3Q=Nx6G7>=AW3sI0H7yKylclO#J|QV1(QdzWK_xT)E>9SQS?$^^5V9S#sj=Dusp$ z7{=Z@4XHz@_R+8}g9uo6%u@>`Hqq_I;J?FKWF@jG@4yGA<1~c$!n)EVrIf6l-gmzsZ(T z5aD?J^#^&^;7G7sMUN0g^BxQ(nYxrya2a#9XDQR2u60z4_z1W}`#&A8Nq>#M)q}6! z44O%7?9h54c5~nXyPhz!5ViT;X!!b{KneHD=J}>I&VLD&XxxG!+p8TIs7pVGubr$! zN8qKy42-Hq1X>U&Lp#j({+z13+7-ZOBnB~}%wg2FvH2Lfc*Q@m6UC>T{d^bL<<0Z= zGUyQN@wZN=is6q(gea2e%~G;Ue<`MNm>|h?lAMx~&Lf|@lh)fzYrsWu%j0e#uwGmX2C{lWl6spTUFbPxGIb7#*+ zb=_bD6xJmA&zn7y zxPMpO)u3*OIVz?eZ?zI}FBE5+l*~L>IG4pY#(=?a@m#9QQD+_VS~*R*G89@}PPi?r zXegZ*nHuQupPz%6vkcRWo+haX*@$>Sf8NKpACmrOy?+&=Oz}Nt5TN_y>3a)XnC5wi z(rD{Kr3!IszgR<3KSN>Gix{R}sd0v?D&*K|b@uU*t>&}p?CjH4SYZQ=ELm|Z0~{72 zSdAL^(F5E;s1g=D!hiqteg}q;gyQ99jI9j4Uj$(GpP7>dwueghz?VXa*+AK(V$LJi z^6SpsYo$<1%&*Nog$_0BL`)Wpt3R|Il}SamP~d4W{a&dZ&u|bN2HUfdmR>|TDI!O zikY`wK|O7&vVT{>kwXKV%}-nHirp1zJC7bZ4u9rmv-_3nyH^?UR0~MVQteE=ED6pu z-L#R~FQP9RA7eKKQNn{2tG%wZ(gM;i3`=YLs#hiT^t0;OR0SOF>}MZ*(&`rNb)Du$ zt#|>U9a|ZeyP=z_@95LRO^e&9K(A@fP3P0Y;P8!T+|+^@b#FfFeK7 z*%cuGY?YF_-wa+Mt;+BQ;+QyG&Gvt%Yow7;`JDW)@z=?Wil8XT;T^JndeX&hi z0gfV8K%a7N-v#n6Mr(`<+!a%;fa?S|QcO|C%g%sHl3uBP=F5%31uYZ%q+qq7EQP+0*bR+5G3ej zGN`F8o!Y~+BW?l*X>CQ5Kzb~jYeSl-noyoMFCm&qxt5GG7(Dx?NG}?5#7#`m11}u^ z3n#%=eR1&zwYdM+*>#3B`7C>?ARq#Q(m}cigwQmhN;M)Klnx<@5CQ=bI#NVRKzdW@ z(u;tCfHWy0MVf&0juh#=DS;dHe?8~i=YF`){g&CC`R%+rGw&wZo!RKHP+s$yTQ8CP z6wlU@Rqe(=4&Rr5Z&EwF3pi?$FhB%X&DT^TskB)B1wx;=KlJKQYGepyCaE|^| zH&&tzJMZ%iFK~^-Vq|trKV2Gew>;G$QRU0%1DY~mIr`~DRjg<~NKn1$dQ4tRsht2Q z>GV5`bYSTqGduo8$V&LNeBoSA$|!gJK`+Yqt;NB~5YNb=@8nCL@P2W5P&V4I>SaF-&sL#uz zhB-c$LK;R}K(~Q1Pq-4!r`0i#u&TRT;s2B6e7EoXGafHb)>)Vzztg0R8`VX|5iS}u z##GeJEw1UjZ}4qiazDBhaB?n^@xiNE=X^EvwE4*Y`H+1uFa*=M>~hYhrym)6N!D{$ zju*np`6h=jnS;T+g{DEGtJ_l)D$wcTt6Y>l@Nhq>3iaKT z{upV0caU+yjVy?tN62ABZzz|DB7R`(a2-Jn42|RMlh|>_D5Sq@^(-qyjpq?+TnAp3 z(&89nd7E_k&N@m-jfhvjV1;ZF=S>-9q>{ytL7+Ga$a1s5!a;Y^=CW9e*2vgtyVY?x zMckUq6%I@sYq*?k?Bar#a(XV|%s<-6$?Ig5{1YZJio09gLpSEq*6DsxLKvHx6oX+l z@rw1)+|$WhOz&bHSqzy1QcJtv+(>s)B8h)Qw#7&mWL$FfoG+JA80Xu<(>FHNpqdYI zbIU~Di<4@HYo=Dhg)IHo45l9+vP?V&7(2R?F;;OUAI;OU^gY9mhppbQPIz&Jzn|N< zcsdA#-v0QdT^h{vSUzB7%jl_l>CAH8ZtKK7>;We+UouF< z-n%+&Djwo2gCzBF9xP>8nt5Jl^VAcDlOeOu^%vUHsX@mj<^iem@Gl+u%oKkKL~ zQV#PPi0!Zty0NWLXDR;XW30C4NCE;Th4j;PVMW`Lav{3j+Z^2=h&Am>vy1E+P6&wJVsh|N%T(D)cB%{;Y<7!MC z@u0&&<$|M%__Bx{aq12E6En^}N)9j^JW0$~Pj0ra`aot&N)c z3oC>Cfo5%Y$P_8-H4;v(ZQlLZ0}hkO>u)AcPIbsU&rkNpSKTbBBvzpM?V&-# z)>|?L%9Q;w4xhUozkhr;GyMqW%#l%Gz|^`Bw2Z~DzC31>>M-Z;zljD@EDM*N{ao=- zVT*r46~J=IS8vZgYwyG32&E5g1Lk>t3>iKwba6E|)zGo>y?LNWel>{wGbneg1f%R4V+7$6_AOqBP z{0t=>HmO=;s+$VGkK#O{m{w%p=G^7UHGW;w*tom{3?!GcFnfCKQI1CMbmiBf*ec;> zwX}T4W-~))A$BcTaBg#K-b?u1jRgf5!+6yN+z&J)jML`Auyrerk;cg4;%%3C&h!_m zhAdR6@!JE<;MKh5>^Hr!0%1V|)k&E@%~f{xi%8Y;UDI+!G(nvxtuKfKqZsHUzfs$-m;7l zrDBMu%EaAQu?k$}x4L|%O}v3uQj&_<1)wq6pRbl;;KrbOFbOv^%s&s!8tnX zYqde9ZBF#oCLgI|I<%bs*+J5`xu%~-PAf%ms!y=Q*A~2}#A5OZ8RM4#R*iE9`7=vP zpV;&o_*dR1(qj9mZ;ZY05l}ByP*>f5W0Pt6y&;>3B$>|JsZcY7bcrR-gsFww!Mk}$ zqb;Nh(`()RmVNo?$ieC|)z<=0syyCGLTBVjpLvQ(U25%|GGmZ!;|RXCfIcUfo1(10 zE!Rpd>?2<(ejX|%TNYmv==B9Savu8%YHgOEd8X1d3;UpG8=MZ4)6Pf(e)tT*U+-2B zA@xM8uCkZinE&Y$o_w%x@M6>oLZP#{*3~X9l0R}<=Df9cpq(*7*OKXt0fM%P98%c@ zx@za&C~lukJ*>y?Y7#c>m?;&fXADL()^8P(`N^xHdNS}kTYE=}czQs!SvoC6)FM4s z=3VUl?&; zDnq)7{A+5>_LbaS47H`%XfP+&;p?l^!ztwVP@J6iSSJXnDa{}8BU?3%=d8ic&}B9{ zJSKXw-b`v{T$CS3x11d{GwfcM9+KH2v)nvKDuEfHo~)IQH;Ka&#JNq9?oeh|>%~~R z-8&KteF5s!oRuSib<;0=+5m^ia%Yl(Z`zm8ktmc)XpP`JBEnsi>)SojYfCQPYkGwt zUL&=5S9~%2yMo=y>n}r9YkW1PbZk+XjMGfz9)u4)Qc2F?Gl_zb7i?v4zIni-VTQWcU!rgufF+bj zDBxZZC#0xU1FZIT<8=tDvQ6cf%>WsKAp%0UCo|%?A03a7_nZ)?Hb!DABMe%9C!&zw zdJX}f^ox)ePd$rI(H>$^NxO1=h%_Lckt+Uh&Wl(Ay-jnj)5R_+UTO8RZYx#II|>hC zieB#P`aVD0eta=r=7;zZ-UGtp?sELL2dSM68d8~AM(I828%wDHC7@`w+9w~I7a!Gc z)}Tf{^JBkK)YhMBIo(%$c(gvM-8Aod-!?$K5So_vaEZx%qzjpmVf8E;PcyRI*yv9L zNE_{We~k9oT5-^rl8QU{u@hD{?f2=qmER8G71t=Hc-*kHqvQYcTD=#x9siM3%jlaj zPLFCaXr(S`!@I}3A?s}mjg;2?_qgw2&v*p;^aoU*={ekVHKR=b#FHts_XK;T;wHO^3>XPo_rp0!>qRozUI)d zLA$>f>&}J;Y@Q?j7py~(KRk@evlCO@~yLQc4n#LC@ z=JjXq??KY8F`dpf4;Q~I1*%|MywU8-u$OEj_2ELP;&cZ3tE_g%x>n2M8Kh_Q5-)QglhspR29_6jjZ+U+SOUhxs2>Nwrkv%5 z-}*rje-;?e%M8|MylS>(*X4Y*m8kk^xII;+Waym zc3KLCc8U9EJx%kXAR@N6m*ohJs;<;ZjGwrTg{mCkk(K zaQ@5ejwo0?J>S*nqbwPh>#P@}tN65FFjpv4DZbnw zdvo7}yK%2!EB5Nm+Nvz1X8koC38(n!DMAtm!$X%}Rf zWySaUVq>3*J<=mbd;k)i;PqQi*3XU><3~JBKkE3ka`~Nm+-9dWUQ=xf3D9dX6nRd* zc0iJS=_j6ejlWFCU)NZaYPgtx*tDoNSM28Jyf)^K>Tg*6#qggUK+b!ftUJ(}Nb%Gtx`sos+!WR3r5{4${=MPR-PWJD@10EmMYDMKe7 z>~bI>lh1Q5nj({Hv%u>V!#tgsgnrjbPthCX0uVjZ7nCzY2|7n)BhZEdnAH4+>d1Ux zG-Cx5ui4Fh|HxSOY{!XvnRT-i%{0k$^+D!(tlmRfhA6m6I7Gj`(i4SDzL3cLPUg6m zWcoEi&8AJ#$@uL9t2436}zUWjZJ3T(!!)7$O}b-Y~w4_LQ`OZH-ZR z$lzCyoIb4y+Sn(uY{4wV%VC`(Ewf-|Wka{?0RlQ#cDr>KSi01j(bdrEI%vaK%yRG> zQGq*!%nMq?pOt8uBLf3i3gAdH8vIwOJN(JlOG_Dm(gN3T_Zo;)B}eHT^^?}5XMU7y z%{L_8ZNJxkTOpYn(zeq~Z$q|7*P^;SWy_irv!oEheAG+NqdEALm21c{Y?yGj_on5C zxy=I<+UmojnrZ9uRK6a)Fe2HD&$HV-74^2mdhSoYOe7T64Bx}%Maf3@_d6BY7>jWG zB)fPEJ9s~}-%@8wjW%-J_YJ4mDW>VJ>>I4j$lg>m)HugCH5GhMyvj$nOm2M}<*(gw zgzhz%f9A{nc=G*lXl9j0rx(ck$&Ulc$NnWSqk#PQG?B2>WYsvEs~?K z12YxUoXX@8mwOrK_vy~MYd3SI;}4P#7wb#rJYcrV0Y8xVZ}sM+bI%W~hEHZrzpqK~ z^##!o;w}?uXzXgNbsr3KaukEYoooX*$a*CeLP#6l~%58(NMWW>ex9S=N zxsh;r!H3dX;#$rs2s`9mZw$h~TiX!kje>#Tf{F@Ma-LuUfFr^c%I)dsfX0G7Hzm0fhk4MQW%@LN6XcKtOs=2sI>hL_j(m zML|jkA@m|rlTd{O5ERar-@W(y1Ma(LGLu;|dnP;YUVE))J^R1u|9&!Yfgc+^W;%C{ ziRm2UVES*4Ntfv&Gh_*MUJ^uJlA zs~65Oo#(p1#fbg-kIC(K=`wcW3wS+F%-&?-0<%SBj>ft1Oi0sLBi^h}b70oe3T~fA zPef&PY;`dr39JHHp7SE_FR@9K#PE{L6TzNhB{|B8*9>#=WdV|sCcY`LqUE}__u21U zF8$}6g6jI?@pdl+!cQRFA@l$aVZ#QhG#x zS?XYr%f^dtYvLEOnO&w+^L|IfS>f%Z1BK-=IA(QHWfSk^O{H~NhRvgId#@ZuS_?PJ z!|Dx?Et#pXsH(Xk#j!(6Vf1f&pY?9KcOE^7q zHvPL2aTqRrlUNq3&e|2(tH|BHc6ivMN0`ZX%?}|my|?UVCE>b*8U7=)8civ{909Xf zq7aY5we6 zRN{*dj*E1Q@N?SorCJMRDUAnvsqkFv1@a$-L2_!~m;I)WS9S9TKPg&WFK_au4f%OQ zc*%Nzqf1**-$tO!3!2||z8Cn)^T>fa-u(HLR{+l7z#>9+3l5!b9vu zdi7<-=n6d+Y%>m@OM~U2Vfq|kAwy zc7q8u9I^kWUbQ#r??vCfpDe9FqPnQ>A4E8c-N%>YZ=1NdUgP>tpv zC;5(Tt*-E2r22ab0p42e!oiR2kA%%0hdLG+k#`RY{pJtzYJqotQVJoQ#)TiJv^Di- z(7zW#BFw4@+4ABMTEgGyFT08lL)$^Qsg4!3@bJFw9tDw!?2SCRfbyg z;*fvyDZXlTEHM5v#-lXdbp*3_@7q=id)ZpYacAVpcWOU=4#+F+aO_KWjQWoWz8-Y? z8r9Q)ulM7d$@W%$^MUnh?IRHjqYKx4;a;7m*=0B-BjpUzn3IX)0H)DhwKecPLNz-2 zCR(NjKjPCA3RLjiJ1P50A@7IZBLf;}{+yLdls~W4K3MM;#;Z@wg+>Bxpmz)+tfMSv za*#&Ja^dz!LVs9Zl-tg)P@vW+>%MAAjhPebc@z%#=b86RPN%- zqBJW{ZvS|^Q|CCJTD(kY4&yIOim_kDq861VR;#OzPSCZ28fS%hlk*t!;0V#hn%e(`*U}`UE}@zi#dc)sRff9v{kgqdY;0{XlD2%eBG1 zPC*VGVt!W=w+T+=KPgn?{=q*{i-6y|#;IR7NZVScT~R_2rgi>>bdPrV{FP<8L1oV{KFHQpK^F0dv&ffXME9BR_&I)3pG% z$_bT=glD$IC*(ou&|0KS1RA~{_F<)r5_&|FjSOb_kIA67#m~AsaDv@re}lUMk$g=g zyQX4&Qt5U{vVE<4qj!;IrlRXOjmlm9EGlXy1lYP}T%vuUNB#}H^*6n5)%U3HtmU>r zS8sjeP!F|G-mDhiqNl0D%$8NvYnUzb$)rUm=fX%1A_I&z>@`^|V{GFqY#N9{Asj#@ zQ%@{lo(Rn%l3~|H<@uYAceTm9sdyk0^^OH`K) z%l*O>O)|)_dN~s0bh{qq83x%X!)Y#b71Ns0O27yeTA;q{MY`6>-zmHOqcuwb4_pT! z0#Gj=v0ve0lnh0!85?AZVYuE{g&7XU=v#72A?@6|VkK40X0zHxlA5|9l z=zj%HLUtx_g^4F*~6tWO)9djzQ(P!+=ctR!E$`+mBqV?{Y+Xp!D(Z zWY!x@;F0gm{Q<-Y-qnwxJB=08#7n&G0d>9}tEYld;f+Q3vB(_g& zfP1zzK{GGkW|^VEfHpq{L_-`x{-y>w`agCY;s4weLH5%IE~MrY1*e32gwB#z4vsru zYrX~P2U-q7GuBaobU_E<6qT1$txEXp>O{nmyVFf7E#k;YcxKYJNR#5c@w_`JzI-TY z40_~JFPC?ETWrk?tV*aE%-&cQ>)5H&@^hQH}5<$(RJd>n-pI8mn(+(%DMy$@b4dTNTBDTR8Cmg~@E=p; zex;f&w2G9NV+X@l>LAPS+rI;6x**e^ls6@z{H__A-+AHV_c1$2SMUNBEEdmNi6RO>a&^wTk@Pi8j7GtUz88p} z3ZPv68DDBC^nplDaSy+czriI%e)8?AgS1KinYBf_8PC}6djGf0p|2Z+cn`|gvA{bQ%?VH==(ZjeHMQ1^GU5JyR)*(fIH5PO2rLPu>Fmj^R!%lTMh`6=#istZY z*TqSEhJZd_DE0pP9I%@Uw<`A!v(#TfZ-&m8UVDQ$PHiqnH#Yb1YpN;_|t ztmtG%-rjYd*pK|ZM+K0zJ=W-_*8FBIL$$q|BZpG@vT(1n@cP^T9EO5)dop|OT`7bp z9Vn2-$cy!wyL}xmqT6Nnhp3Gira+{&;1OdgU0KPm*AQrA4mH zEW1)9?@|0zTz5P$Xsy1PfCDuTd&FiwT^Mq*A=ATt!=@Oy9vf>85xO}U)AqcQm+uaM z$;I4O2^nHTz?AB|u}4ZhR7Uo_M}+d2yip)Owrcaz2(nRPiwM(;UH^1@NgGb{IqzVr zo6jbJ$u?%1O!K&4G{*95e60L|ro_u~e3g!X3vbF2_|qd@BPnjlXh>q_TRWe(>=wLj zETp%^$~WQ?N=vcJ?q~>BLtlg_G3MwOmnHeJG*Mrf*H{2zLaJ;=+8RrKk!Y*V`I6E1 z4l%IR*X0=bNt_(6nD3zA(9qJ;-{THA?a7?7$Q5f`30(SlC`=HtC5?SM{B|NZ7pcb5 zt!8!mHf8_!Lg>tfpNE>914%qX9`4ptNgIO)xtTla8odCHt_uWr2k8T_NR_F;%tVM^5B>Qr6)oDAKOAoRz60rVe}Sohn- z$7-KTmV#W84T!(|r{q_GS|F#6qR$)agE?)462S4v4d_QUJL4ZJo8L3)#HV|om7(;P z5o;ygE#@`m7^+ zwZhN)RU{{0_zn8Y2@mgl`PZp_lqmu+bk40XeR23KGbSp#z823Y70@$_dJbjPN+F+k zHI2Ui%c9}hl+Qk-R33{>;N!t`aq*@XVwH9C!2KvbnM#^hDC6XiD-d4u`4oU4; zd^+T+Q7ohidRZa4X|$>$?sJ8atmNhUZpJUtJ?oW}w=*)wqP_1vp3@t`uCL}kfeh zM_ae2WW?G4#;yE~JV+q5fc}8q_D9?FcqeORt?O!=Yz|J5!@o!HwREh2*m{9^g1 z9-Ibqp}<1I^{%{*TN$>r!>8bxnk*#yi>5SQ&LW#P76HSOhW}u8t}uT+Z!3kgmevn9 zM5e8c?*s0wborTymuYSPJ+f9Sssm|1b}MMY;+{FC0FIU%k8bOeDm9OHNo!N%gRMJV zJJuU6UH1sHTBbE;*5kcHB;hc^2&G6f;$%IN!?#Ndal*lVmYZ5;i5ogxS_y(5hY_kr zP6ZKr9pcN89HzjANlr6<3b|(_aP3>2X9BSm0I!=SUNbuBoI~itcR`m-1zVCN8=jhP zFmD1Z{dl+PuC85fb1`24%R!T>qzxhqb`7F#TU|3BdS3MnwXg>FY;HJQKP1(iIfWvzCcr zpmTc4Ph+JrONH2(pQ5$=+^YD>@+WOgRX{xCW-rtrWw zp=#DCNIvP=_ZvYg^_BRRdP4p9ao3{Jz->v&%D0;JMI0VimSlclc{dTMLdhNx{*USY zzHias(aOq^%d_pHGkGWT)C(;@M|5Wky;DfIMS9FJZI$n)d7MiC5mS2wa}wZtL2Kvz znMaS%B$~^$sCft%Brf(bJFN5YOS*0wOQXkqgX_e&L>shL&APfFkseTsyGf*Loh?Gzn6<}95@JV()qhNyK-U*0shCNUG`&jaek$1V&K6P z2abiPLw{Lfm8fqum!YrPy5kcj79&+4=|13P2bWc|EVb3ILYYM*XFoA)Xzp#JIs7FW z+tf!Nw4Qm4_LJK+!rd|IY9njq4tZ0J`1&9LyTb2X@OpogpAe3;4noCLH)<|VYNg~I zo9UtkDE(hIdy!<64bi$~$T3yrl>hpFOvb(A=-~U3E**J1d5q4dhjiH=tK>AQfyK%%FE~ag0G_YRP_GDNE&I(U zTD<7EEAhPV&ZMx}eTbN$eH9jiG;x`<17GuNhXdfjX7-CM13mgq`AyF~NZItNqgGXa z)4$?dfAOb2fWSmdGm?SatVNmC&?YKZ@%iR@KJ`YWiTNW)aac#X3Oe7GTz<6#+M`{n z;p^ca^K8FeaqklWKfT`hfv8#lOa>WKw9@f+FT;&;zDhyg&)y=c&T~^MWdc}jHNIID zXJk-ySlN7=4d19iz}T_3bg)6*p@3f6IL=b_vN~VW!WSgi&b;c)TP}782W;XkkBE-G zDis4ZdRo?CQfkQoODMhZ;4Q%SzAm)XJrNnK1X<6-0BY|!nH79l)*on$Rkr%Qd8j4C zfH|CI_1|B4gMv+k4Ib_6J2}b&^r&+jm+8OeLi1D(J`mGa0%;McC2^*wQQilk&GcWS zX)*~`SL5{9?~?9d^rI00Ifz*159tnp?ZLwsfVtqU{vwiqR2x8KH+x$;hhSXz**5sj z*DR9f+E_@?du1DC#hdvWV_&{sFB|hV3S(~0^SxiSJyeaS%unpG;wbrH1})ZDK(2N zgq~{rr@>6%hy$<=QU|#(IQ`qnDf9E@+Rx4~OZcXJ_N}3Tp5Vl@MgryN0cDl=x89#q zUjKNOOnq^zqGj406{)oSnLg4wNDF%k7Gt?XQmpz|$!AZdy0r*5CXFys)QrNzftp1V zs!cY$4abq1(%@q)caHtti%Z~)NB5qr?8U_o%`eG} zy5zCcLdTvfuRCi%Rcf0bBtDg!@pXqlhM;|En~E@V*V0iD4VNd+CRh#6S6z0?V7@;2 z{HF{AdgZZU+~uk_tko<9R4HShbCSN5Mp@Hffe~W_wCNFK=$u4umzPPY%Bkk@4t>?EoitPFL3fEHV3zYAm|`O0|SMMFT-^Yoh;ZyB;J$HrBNLz6$g3 zHf(brrR%c~=%n?%DF`zVZj7yfMY}`yDrjnX-Z-Vv!9z=8=7%*#Ia-)*_xU<}Jix1y zV?N5dMfm+%?xu5n_4iZz=KYg0v{_L->&EF2f7AsObnFryv;5Ql%NAj+OABPzlACMu zGvt@Q26Qb@`ues}38O5$ZLoMOl;cf1wTUcZIn9F&6lblK>~$BZ^_@gS1Or12_;o75 z?~z*sh+@>y^|MbvVRk4JC={CENdcC#O*2v*Vt=4S6 zex^brKi4n?X_noAi;dJZSB;7@E{tSV@KLoxs6OgK*-$uORTo zFK?|AwM&n^bM5v{ofNUopQx2dP~auWHa>SqG>mjUBWL0+0}pYD_08#IpS)=arF>)>YvGRTk?9Y67 zSj5pNe_@d&`5>&|X!Q^tG3D-@?xTFueli)24t=400vj1mG;*JK@xpcL4eKK?&&(-&?5oNR=IEaYk zI=!k)iD6JUHSdf`qab&xRWL~Hu{~gz3bNKa?z))~Y0YUi`pS1JfGQXD`lA5Ex~D(P z!_nX5rEej^4$xRvuxY3o&+cL@ww%fPk3{1&=hDwLRY6czDSH)%YuJzGIaV1bB3ZgJ zavZYvq@NL&13mVC#0h(tGUf?U+Ky46R=UnEq3rwARb|4hAbH&)v$0OlqCW~Z@B;`6 zrouPls=sa|D}mrW^4au|&bk6~#nB!7(NYvY6rn?nn zHb8NSBC`}~8zzPT@QEBK zwQOl_mQ11GscKUhn`jj<*-^G}jMFUpi2SJ{fX2WZk8<8-s*VW+D*}E_Gcd{*vQKW? zP}Ex(rnOPpeq7&-g+>!<3q?I|>JB4FMVy$#seZio0PRnh5)|C?`?&QJCYEhy=%!Qh z&GUz!Xo+y6>=@LE(3XCHM)z=mxOPbeR%#}Qtcl?MJP60e_Mnd(u> zv>d{Ob}69hty6ZaOrt{)|I~HbUy|GG5dy%qK*M4Cq?xs;h2^=?Z&=-jhsa4G=4ijs zF{FTU?xTmjBF>Km4DK_?B$8Y>8C0OPHIm{0U#r>2Xy%9a9{#Gf^t?2IS{wa23G(kj zjZ6XETXOL=o1EKP-97MBe}lrrsMmV)gvY^k{;8h(C*qlgbfsW^65l89D@-|UO%b_; zL3+cU%EpT2C|hx(d8Bc}d(Wonf51)pm{o*Vb?NQGyQ;oM3AGD%SMRDXq(@sTGQh`^**Ui?0+3= zn!T%e1UemG>wfNOBeYj7*POT}OJkv*S9S%3l$HYne$J1xB=j0q^Rcm5c^fHB;FOa~ zmN0RN0hDB5lyCTlxtKC-wa_8^eKy`FUk$;~c-TJ$u@>juneBLBQkkkvf+~=&3JZ*K z>(q(mw|~8m%l5v{eoy7{+>cet){v8?+sBmdu<7vL53|zs;xmOv!(LVWYZmN=hBgn& zZ+L}9@~j3LNDnm%FnAeIFtFi6ANkg^M*K!m(t*a33+9Jyz1p+SL@q!Dn*_T5#xm{xdeEGL%h)A`fmeh$MJhre$lcth-4+k>FPb64$cfuZ; zZ}h553R%XM&>IuAB=Wf%Rmb*1sz&9-!va)?|9PmTj0i%-LuQd6@%P zHu6KgiQwi+fLc3-*_w}NIz}Cbps&e#tDt4g6S-Vd${j+fr4C#Narcd?&WReA44LU| zS*z4!nvG0>*vm8{03*Rg*(7br#i3<{3q7L!*VsPb)$z{X@)13vps|Cq$}tB6iX z-FD@@by07v(G6?6H*HsIbi(&RF}c+YIx5v(-d1zrNMB-+-s5bHDs9W0!C#2D~IoLs)>OuZdtfLTn5sjXDoJJ0L-COj{ zky=*Fid3kI%t%s#n?*=-TvF<@wV7919gOjiSXXAXF0akVlpGFC)YhQ5tW)DgJ?nEB zt+TD8wKMIsHS{2>vcbheF1`eJJr-~G?gd&(|B3R~sx+c1*eBRC<4NCT6^Kbku@1JJ z)rj{3*b5e|Lo~nRm-%+O{2{#wCBe)6rMy=lYx)iD{3j+6u}anHxI3cd=EgTgDPR8) z8J$eDG2{_2@55N$t7LolRzXEy18yO4zY_HcWpYm6@U9g7ps_P4XdASRRaMjDjIkU4I6sdzA4!SiSE;FTE6_A3 zs(I=4v00b5#eO1{(KhsG&j?%n-m2f~94Rtj=YFj_fU6&<*IPuBQrAGcoWiYeuaX`Y z)ayoCyM0f|%HrfYX?(qnqayMtG{wu&z{*~;KW3uH)Z==8B>_kJ z8W|JMHEh_0#p0w8xTBN*M|(II6j*QI0y_r;9v_(?i*EmQUi8#ol4o zGC1PyK77ghB{QBQRv!FxG3P%fv(Gap;t4a^&U+x7{P2lZXOLa@j&GOA{&7lY`--tK zPHJTe=1Zf~sJujMIjyTL?!l(*lyHt}jxvd%8UNv=Bn+48K&_YGU>Nb3P% z^^`*%O;_A+S863uT2EAl@%5$4i{s>}yu3wi#%!cbwO_Rjb*K@1va80Jt+yN;BM#b> zw??RP?-%vV`EyC2+wOt@dH!md0SfAWf87tETFEl}ta@`wBxlh^@0X39r|z zVVwMQzmr7~#C%e|l-+`lc_`?OOjWi(`I9HB5+dx#f#TnRj#e`-13d^t!4?odG$fLt zJSi;Eoyoogxpweo->IWRQ2ffF$F~|ixAsp-29A7Pi}A#3Hsv9c!u4W{7N4g!`VIQR zBG5O@$_e%EmfOyCmao+oQ!lR2wJiG^kE8xZ)YUwHYtAMH<2KKiD2npr5Vn> zaGAW_Gt|`ntNobflaDlE8L0f&nDA*vNv?K%!pK+0wY|;LI&|1G!I{~j+%&C2p(i}a z-zmwzYMFBM`*3&2uk#1V;hJ5k=Z9JLMl9Me7Ol0l@;@F$Qz2v;j<^u}!GZWva_i3L zlYH0|pVzegExd*O;j8&j2Zi3Yfu_*eRh9LfPW0Z=kFfoa1%{09%RB9^hh|-*$7sYj z%K6Sf*pqyeq?F&&tJu7XnpxPWk!p>Pj=Adj0M^UUuU}bhTewwK*Glt|*{W;bAkq4F z4GeSMsJvW8wcTHrWh!+u_k?_WHim-?XRS&rD`sZg@;sk6@YbT3;fUmTOG%o$wuvHQ zjf_nK22oY{=F!yd`M{&rqeBhV1C8o040~rI`GRFg_CaS@$O-LlZdpGbI>+5>8L;79 zF%GOZCvrWbnh{uEzn-mOgKG3D_n+>Hb_?e&^9pE?71=qaw4uB`rMcab*Y2bw~J1W#ucr$f<;ur>P0Gsk0?&ZKG0!oWb)URdKEpz(NQ#9tf> z6f7dWLY#`ToGRE0fH{DEJcvu|f+qVnbh z>MFnaM`o7kiZo0mcgQ;i2LcyV?4NKFfGP5MJ4>{adzpqNIibD3|DPTYe@!b%L-RFeTR>;!rT7 z)!Lk8kJ(j`kktruF@01DJ6EAoY<}Kq=eD2pR>awsa+J7}b|x`J!X-!#TddO#D}Dh< zOZ4;dR=e|nt&)fP#v`lpf4&*+u177Z8JGqhbi4oP6LM&?X0&=Fxrswp^YCwP&_m~L z*bKqZ_41)BbHc!)kzIU1mrUTT{gcFZCr;XC{zVQsdC=KN1-qeMgH<}2Of3?d+1qsF zx4JcSTyJn&&D6{G;03;VE&TXn&AhCKZTS#GE>kh)Ho4`NDI+9mk>?woZp&SY#I8J$ zr1BPe!7RA-y_Hb6xL7~B7Q67`;6|hFCA=3Ps-kcCU^><1M(*OWA0M)3;M3VhxdaSr zzdxDal@wg(1$bFVF~O}I{d8OrqC6_5H@=Qu#mtIIa*>?x3A};;MX5=4gJ}kb7n971< zIi^+O9wKYYHvxfbk)0=z2I26-;LNcr0<69z(0xkhDVzpy zNwWM_x;zHBdqRVmB1*q|fErfl;P{f+elhm>oEXo zAc_nw(Y1h%MZgnvYm-GiCo5}G{s4xt?S6ON{O!;h!I*PqIvMqn4t@lk;Z)I2pLup} zTbYI)6uNgi^`HbC?njVKwQdngV#7M8b^^S&_oao077JP#~PRFT(=W;M1~X#%D})gqU;@V5eN`~|?=k-h+(@H< zV`ZQGPxhht@522Ds*gF&Ol3bnzAH;TPvhoQEojR}m0T54xmStARIR(RU6b(>;4?{S z52&|5cGr(k4nj}5qbO(d2dsw!%dgcU+w$DLpp5*0f?#W9_5RC0SaS< z_+OrS>SKtTa*s&25)dRoow4t3(i!%b6Pl#OusA3!fcnD?I(V&AR3~7zq~r^fwJJAn z)@qHZf|=H!Gn?UMX`z%}eE)+BG};Dsy-dt=J~1)c_R_;N5py>aj=sG4`39N9Ms=w; ziR^N7%w=#poYmCRhY!NTK0Zgf4-YHLwI67|BVPs#Z>XsU0X=dpEzbLGo9r|lg*NRU z5|TV${tHJ{@Ag-3b}sxy|5}>U*0%Z5IJg13h6>i-6n`8{%%>LsBlCqqHy2}1Ig3d2 zf-nTx7KefWmu8j9a>#`fai$U5v~}X~pMEq^&>Hyngno6U_ zlJ^}`L60NZT94!umlhr8b6Fa*3vsH8`kz}`hUz=|F`8rEJyJ()Dm&j!ZcvCzL2k6u zJZXDP19H^VZH|TmNB18Dv4wot!CA0{MSs)rNgcaO&dMOQKi(oR0_8#WY^XWPY?L}w zKRV%Xh}?m6DAu}HsAMF*c=!)9*VyG^rXc3p^(HfbLd9Te{?5?;e@vx6fA?6&7dD!I zt%_$JGcmL*=Te8|zcG|Ue@52~l-SlTpPDdI-N>Ri=GfmL$;Yi~#+MMX?}JzmprmUw zv0g2Z#`G0td~CwVViHE%a7H3n67oK~Kl+bW_Qn#iFljx!VZ9DP)qt{n9gK#JnO|3D z0>?|mb9jpfLGTc;{`qstO9?qDxRN)U`!I@2lf)lwrN+s%DMXivDkX{B99x}FjrA%m zt-DGt_Rnctd@!(IAo80}+- zgU!d_-0T8CU!ca#*>cNb-=wX%0xs$Yoj@_)2}5YBz9K@x_)fd1iBDEVpiY|e-4dog zG4{?z=ulIpP5>!a2F7d8qhmTh=<`l8#>A^QjupWsX`hiKsqs9GUY?j1gu1#R<2x#v zMQV1Ico%4)%)RlpfaiJoT`W86of`@hQrYa!2KXd(pKIz>=c<}Wb;KAk4eP@7*(C+$ zfRRxy47vO8n#*@f3T<)XS8$kCoxC=3mpo*!zFEYlH(%1wRtvWU0!JW`roPIy;RQ%q zez;Z_gH~=+JW9dlv;J7VvYZhw`|v)KzA~YEq1bA|q6R!0q^ML@^lWKN{jks&ITo>r zib-`Dq7LvZCey3e+twG{cm!np0>2-&o&e7rI$lkcY0_UDk?TLujt)LdMHHbwy#~&u zW>4fG{zlckesjZ{<`f_Yd#PC4UBq)xB; z9>6xkKE`hz{XU??R|Q{ed1~~H^NxT7GC=$euZY#VNd`FxMf2=O(9MhBZ18r=C*3}iNuUVHp!up z33GB=z=jnKUXrzzJs~PqS(zxqOR2U0YGGS_9X(ywxjRgGFYKA!e4l&!`?zttpAl0! z$zSo|vD4WFvR{itHG9*KP~8zR~ows;e}Ur+}&+ zR_?|fu+e$;{&(;QsRl9>G6b_BT@9-bL?$xTsnd+P_X21t>gqZj|>mAhTE`2N9xB*uOBd0gt+O8 zxwr(c%1Wz>3cTGNxlA1|*HSy)W)mJ)9mEXtXnbjYpyzj6<9J0N^B1p&`cEY=3#GO% zm{^$7b(rIwFaKLdii@^m9&o$MJSXrpjKdsSsm%7M#mLZ{o9{9|48lA2lr0-#Sd~)X zH%6XtAJX-&XYcMG-rVS8+}SZvuQ_qId8)NFeO?g{lU)rHpG!yg{T36ckH z^$bm@;~R#j|KsfKAY0E|u}p>|)7~#uY2I||=NlBy+X$zD;uC$ro%h z9AS>voGtSAd_evkf(YPAD;Rdu zmza5|5qPqwT{hn9Te8iOAE2PH{;w6%&sG%sz|hMA?*3x09k-u=3zC^us4 z+FeN3{qc&bk!0S{kAZiys*Jti(83K>g6aFs;YBIIccrcbopc5*ehN;~M z&K}o1$};J%rurFepOTe=RuUjz)ISLlF%(=2&sb zDwGbh0w93-dpPU+8;zEs5>E zPl?#Qw)F`Y8*hQZ!p@@Vl)|WgY15rqCpWE4gVpR&@(iw2`)lu{k*3DbI|w6F;<_eR zy)5omLf8029J^>`;QY8M-wf!GfG@+=f5AdjfnYP^Wmyv?q{=X`81 zL}Pr;Kh^On$0;LSxLNrOsQ~zehJO=oDq8Sy*b*yDZHYEEgUzx~Ql9A?20MYzU>`yX z+~t}k4Wrq>HV-$^2Z>AK~ zR|CEgSY~3V){N;QT`L^ES%hi|7cTAp>{D=PO?e&_GgYij>HrLSOe z&~o_Sjz9L{r}Ed&;sDnggZHTcq>_dQ|5tkbJX`mwBg^-1t zF6Lrcil4G;r~_DVnz=xL7#QMU9i##eQJKj>E4CgK%3?2)-}v{aD;pNnCh-e425efSf)=T*vQ@zT;TQ_sR^qB4tU zb?ynRHB6|ygSy-9g6 ztE2*ZnBBCHk}>I@ss9Qz1LLVxmjEMS&9B`j_lacga$@@F7C0Csbuz$CirG8{Zx z@EH%=0zIYNdATI+lO?TeYUc$Hbg9%IJjV^-;#Pb5u>5X9MJWl#-iBliy1;r#@t=<+ z=Gmq<0}SW%nlTxxmf%J3ne~_08=B%I&=&}fo=$nDdm=PL&qnfZ#~Cuxv8*MB?EW- zQhR=NX?N_a9PjKnrO?|V3d_j|=atQy-bUoKe_4M7Q3u`Y8Qk!UA=~P%kYttSb~_7u z3@*hIa)}QJ7RbZcRRoz9`TH12rmodMX-O!9P1;m8v8ewfqQRKdZ<6(LTR3Xwcy0}^ z|8yZakc`X!q^hke)LoQ{n_O#3dcY7#rI!1jZ;3`N)6tFZ^!Mi2szZF0-QqAE+c#bBo$d8IzOS zoH$`2+K<~~dk8B3QIxfHc^t|kQlqQ*hqUWfxcl~d=6y_pX`K6GWw^I+P<8(Xfqcs0 zpS`dW_jEN@m?OrNFhjiWKZNK|w_=Yd@ z5F)SA%C8^=S%FE@3E~cNd96Q0EOEL|amI(R}(= z@lFCfE1*Am*Pg9b^lGP>1yF07%w>If4 z%Ti!JN1MAbreK)Vk!Omm%ocI%9jqL*yvBHkCgFOgka~MXLvV(8nJHximp%*<>)L9lDV49t%4OjG158gbiNUf zj=tzzj`En0h!mn+bgBCJ9hg)=Rf4`$VjNmMzoFrdQ8k;Ma`qElC{iSrFApi3JTCU* zg=b#Lkgp}5oZa&p(#+D<>Ff3IQ&a2xv!dJNvle-Ay;rasHrYdZ3ld2NU{b_nX3Kc! zDX3nq=+OXCEtj3ja2yTF3E{XrEOx!3K<3w<&@=1N-g-7lA_KGdc>x8TiaJBlN^{xA z;eEgUZa3`zQCjb8d~P**D(8)Txz*JTVLVW)xBl+r--~~?HmhMf&6o?4I*Odk*fkYu zOWQ@>HNod2f~)a+Aco|8a|HpXQ6j||cG{zFJq<&pmL_X(LdgbgI!E^6)xGwYdnYb2 zKD66tVrnjlkd5p;I1W=a+lV+TvOrRLEVAfIQ>F6HWP;FxCK!^Bn~fVOLxF5YY*vz1 zms^cUQWoxz@hr)bT&1a)4${aN3y%~MGM&kTeaoZ&or6!Dlt4cVTGYjp$lijJeLhv# zF2C@B?st-MLT1{fjGj8;bYCnip!@q+Ud1<*Yw!}|^@Q+KdH$uZ_5=h)YPW2a~ z=lMHQP<;PiqcASDvb%bfhNm$CXweZQx4(Hh_tj6V1GRi$WR**{>TqIPT}w^j%ss- zJvQXPuvQ2B;hJL)s2itZ%VMZ&pDk!7CtUCs{b~=e|C>RnoA#$Hg(gvc2OcO)RRczSZ)S{@Bhcq@sCUnA5b-r|O6T_e@mbyLD~-aP zi-a)szXYcT-z%<&I;&n*UeA-{svM8Ln^x!U@W6$c$7Q-w&r&fc@$ds_y`A>r{zmex zb(kVd5^88|uWeCeKltlpADZx{7OMDM90lzM8L;Y^K+m0BP7v zbKXh`9O?Z58COKqXtR_; zJ1q?UKSA*1*ZyI@w4MHLe$!@Lenxv^werTdaKZMVwNJL$(nTIihtBK1@u2!#ll=fv z(nB@5XXXuHX78xFhy#;bk|t`NxSO@2$~8Z4i8=80MZcYWD|LBPr0scLUonCeX$cVL z%`h!^WMYm!?;ES~fW72F$=7#SL+Oh;ai7^cN54{-cuaV!0x}`<1EeHmQJiCx@y zd=}eN6ALgl+Epwuj$748c1+yrq47Nc5wAQnAk{RQkuMjk_x`P_@eS3d5}rm)x)L9o zlcVC37>_wnaN}+1dJ%B-4^ycxzOnx7LzP{wD{Ti2Q_p~=k=^z9O?pFB(oVk_JlDyh z@KBFM)>7DN=G6v=dQ1N@(A1x^h4WIqoaQ?(L@=k?Wz2$kw(HwRk7um)7R`HbKdFbm zTNsRcGbU$6tn2D#KC=3t?SPUiGJ#rTI7!$XeuiudKl9yr8RF17R5-j#328Y2nHIkK z-KF7`(?&AGTDz-Aej9FC^)F&LR`X%bRlumo8^@F}Q;56Z9}UDw#7Pj%L5(hG_s1R? zNQMsg57?0XtJRv2B4yGc<8S&)2Ujwt22Rv}A>7sx&zFw_Q!n)7s!0ezHI(?&WNjac zSh5-1nSJrb;^CKyY+uD{Wr}GNrya`lmO4Oz1V~aH-W}=0)5sIhG+xcjvU_tYl;mo1 zhlX=3mpjpPz%yqqu8NJ9J#pjTH_z7Iwt%7IX==DCRZ;fB(LhwUP3B^=j$1l}rE zs_XJ8|C4Jf>X%mF&pE%cfP7_3SI7&)8w6Qz(0scsSLh7A?wd=0<0?tL8O`#F2!PMR zg7hi%{F=H`N{efARmyAAv=i~Z4f67&Ye5B=PwgsEc|8GAam&)Nb9EBdt_(?5&$@br z7fVTNdx;#ySq>YQAN-DsuQ_T>E4D(_-Zb00g>}CBM3Gt22n14 zx3rx1!T+J?T>O$e|Nrj+O-RiE%{(+QK)`g0sA;PqhvFQ!hiz?Xy+e+Trv2@%;zx$NjkP$8}xr_v`g~KQDDL z&elM_Pg$pp1qAD3nq!n9E)B=njpznB>kJk3n&^$VY{lJh zuzwz9)?C@;md(o(7y3mLROF-PJ6{~SR-(Uh?93=Tu4pOM5VrF&+H8;ncYOJE+`jJd zso$UM%Sqnb(s}Gz|MY(kze_psM`lX@C;r4;fjz&)`{+Mhy<7L_+j~cU`{$2CDG!@- zO(-^vfRqb3+1(++Q|6tir={s{umAby-}nA|o%L}~%<+5E z*G@`aUE6iIf5WEl(8SmOSLMxWIq-kC5q|&B%e|2LNnQ6Jf5!a%>8F>icj=yinKk*( zS{lFq$6|SzTzPr@d6;oy!zSui55M`?Q*!3dm`_eNM_gOJMf4hz#_3}t0o@k~%ap|j zY1W|~g_WVTTcls}4<_8bM0!2W*;Un4b9M5E=0Aj8>Sg|!XOCED=#Oe| zA6#3uFRd4Q?p*t?FkrT7_E(Xor-=2%##n6X0Chj5|Mj(D0G&L=V6{bnXWKcW*~E6p zwJMPu-@-3Kw_*`}bO)Y2a*%;_Ktytx*>Pfryd{PqZ#VSiRj)ZQtjt9As$z>zS9dvw zxp4B9`ZC~S)}S;AXaBS#JlF_BdCKjFZy7nm9@J_RS=b5QABQG0k5A?zpK5Pz?OUe! zEX`oA;703>{3sQ)-TV=ysc$(rPk7bD1rs!R&H7qwZ_%@}=dOHzrtj~)QEm4heiW+n zd-&$s_dj;MJ+brTo=NlD6L{p)mHV#---@#NuSB2jcrr^xUoDFo!sRQ)hyU2MFG>9StK>VM^WoXda}9Rn#Q9BY z#p%YAXLp?N{r<_<-^*(*jIG{&`tM2F=P93tr2O6eur2t>xq?4m9I=lEjeeg|nI!+u z_>b71?(f~}arNy<(ftcb>aM`HN!zD}r)z(m^B8>o=g~ywI=|50<9=TLv-E7|y~p33 z%6|4f{l0Pg!iS$H{)3qNvZZ!(?Gm=>pmTS&S7|0qefgIE`OCvF&ZUWq? ziRC>_z0Fvc?c_=~Y+E*;-nbQB#stQQn~n39XG3SLYuXT6 zLq2a9G#Mu|(+iBoVS|TxcYf1}IK^sjBq7-(RM;A#w-(*S$$&Y^C28d)hB6|Ifdvox zL33g4{0mcu1}0{fBU5I?AzQ&yrhOckUx+=Y?A2RmpM@yc(*AUs(D45I&%T-eaD7)p zSds9&W}0z+L)-a@m6U}&Eqz?f^jGK39JeI!iBDCuQB4nEUF-#w8|7{nD^Gm&pOY7! z{&mRc7wUBKKOO#rzrKrYYl|)xVU6Nh!o%{#Z^!=fJ^t5=l^0#Newuuvx)vDs)p_kW z@ZYGV`7cfHKRB_V^2j{wbONNcr$SZt&7~+E+jB3^})Nw(#)O z+3&xhe4Zl{Y2FRI|9RhwH+~a;?O$2>?L^euWB1SgHlF)F?vLs(uOFb>W#B(szFf|V zZERVH3MEnT0%u+u-Bb`T9ZokkG8=TMu#2aExqbMU>chq86UDsOqhIf}PybVIKYa0i zkNsdi7rSrAN9T{+KVI|(|6uCEg-Awnuv;BL5x+Mw|FJGH$q79(VNP3ZCAbg8;@y?W zeZh{Sf}kbmqu8IuDd8ftuVTrNle4C5cd0UyV;n z`%$6t&H(*dNq!yrSY5AVZSw8onLgDxWzBDZllthU_1eD!OQ*FXO{`q;`ypOX$q?9Q z1mb``REH3oy&MyqGpKP=vj~hffd@G$x&w5NL8rXkm51_DVJI&DczZ4c#Vkq0Rv3te z5v^ZbAPitdlhRQK9EC|)*7*9uafLfLGabJ`k5m{ueBwy(DBk{O;69`#$e$enV>=hT zRC8P6=uUad%8BKq&W7Y(Xf;V~w9d6VloN(*n0-2;=K zJv`oW{y#7OXxh6j>0~U$@owLtq+d&}{TsD3RV)hV-+Wcz%y;h7VWyz)E0*2M zhQkftTzJ0n>!23?8}*t4)eG)<*QkToU(5&yFH_saF}m7mYgX=s_n`WPA4!ZUoV;}(V+7TSL(fcy|Lp$DPKY$J&mf3P zbJyiy>!9tKD1@TCjONl7jVNGx;6;tAyobHFZNDGd$MM_SWUGdkygGE~*Sg*Q_E3ka zT11anGk%_&C~wKRobA*Su7ma&5BANB(;ImIo=v^JOZ4?QyR7i-H-{TorXxSujorsf zdB(r8ranEWNf`ycT-<+r=Ye$n+r;PZpPkxDduIDY_@ZYT`+>7(9@xJAAbkC-t;%-Zv+>2@+OIxX zKHITSbLvq|bXujk8t11ALM`xxP9BMvV}$MZ5~&t>fsRcGVcp+%{_yADe%AXo{@urm zFCR|ddil+#b6`eaTsmV!a8Pkaw8VtGw-KLlg9*TR;b_qB0lKe{xz|o`KkyS%MTtHC@RZMdvk;IF>%xf z8Z1mC4MZ6lMbR!ox^SD)9ez)NoI1iUia`(-6w&xqC5gByXd0=&I4POuGot)pE^M2gh4y$0Y`=o>tp>MclY$Aly;hE*3c-I&cs$l%NM-eJ&-G7zD{=Ki#g z#z(bjpu~4BggK9yTlr=7Er~WKcbad^MlNjB#^IfmxGpqGOQ?oV!`MCGgapV+dSg33 zIvE`i%!d{5!wB1t$7yFxl9C~lseaHao}z#JZ2}`5t7elG?ZGucbBeR`!Fr#;1cDqD z_~mQ6aQ>e0;pdSjA90S^OPs<2-G#_YiuRz~z^FJ}#qOc#APdyf3MMZ2at~V0P1L z`gez-@Av#Vc=^N6&0ldQjyAp>%p87w_gmH_Q+bTl9AGQREqXjI@>~k#dz1mRE6)pGX3t5q7qhtW1%}I?EI7K<@p_9c?BEo_OU-f}1^CPHxEAb!_*ES8c5O+pl*2NU^KH+hgy` z-VVPCNx6DAyy*tGk5Nr9Mw|C-K=e2iv&SjMI0~v4K=MSV_?-_8XV3LVwO=C$_v9Z| zpPTz(uO@j@|EQhB^!)=rV5a|$@tco-ynnNASAlKm_w1MNUfeW(`9;JW{{XB+VY%4Y z$Z&*@Zl=+hX4fTWe^PHUW3}n8?>_BV`|9Girf09;$NgUY)gSr)^c(KJ4gBXx$R7No z$E-~c#aG^aJo4j~FZLfQAX8W_<}G=`9abnSo3Sp~fU9=OZ=H;>WrNIZo5u_09=XxX zq;{2H_W9Dd02K!epAL!WF4xlIzSymA@)t57;LQ*VEI^CNIa|-pA7S`LBIo@X`i?%D+Nu#QU2P&<2}!zgQUVWvE!LEa3yj!w9KrK>uroG z{7x+L4t4=b=_S>BA1o_0Py5a=MZC=zBZHGNU3@{0Y{Iy@qZr0eZ6w*Zye&M}L{7*c zXHb#q!FDb@h?WM(JS$U4>S_YgX68ZWv?>bB^I1Pe-$uuDtXMMB-Zk&)k9u46T9xF3pd4#1D=YIHQ`(FLUosrjG8wr05l>Qc*qW;_`{rC-| zKEMS8xf`ahp|Og2FKN{1h?`|5!YUA#rI>s^7{W&L+I>zvIP~cIxxw9!e!P6Yf4cDS zyRUY{JdNwSf6MN7T#fkfN;lT{xOVr;^6h(*=_c7QTCHfI$)elBpyY5haZGZr!g!fzh0`p# zEPfO}4Q^F>Yy1Kr#zs#^6T+ZLEg557)P}#qJ##J^9P|AHEX4e19%v z&!_iJZ2wjGt4XC6Or+jt~)Q8!As3 zp+1p|1s;gzWO>YiMyDohcPzb!2eKu5`lt{So_BT`$n;*GtZ8~N5q#T^xGJ_NW0<1b z>MW`Qj3_~>=^dP8kxUJP<Tw`>LtoW{2DS_txV><)lO z%XM@l2S~&A2N`sQH^R@n)o#kdksQ(;ITl5=YyS67M1gm=7)3KT1vuCF#*RGTtT~yn z8?4`myO~&`6Ch%&(dkjt0ofbkbQpLB4XJZwm*)I?ao4vUZwJ5LB^r2tvf!V;v;Ozl z)ZJJA`A}q0*VL!XD}z;?20@{AkY*W{!zhUEK4WS;d?AW%sU>}X=HXP~;RV(I?r%9S zxH+ZIU;8rVy#IF_T7Dk4%dlU@hlF@C`4(ZiN?yymIZ6;`<1$Fbr)|N7!xgo@8=Y|K zq;q)^nf>6#Rm&8&_$5*r&{UA_j-!=wZN5XAdyJf(EQyv^G`hQjjm<4#gC^r0gyX~& zo+JJsUDrvJLG*H@2;ACHOXG$MBm z7-_-N{Vb?rXtIBwAzl!JifPt5r(*t;Vo`!KXi~Gp41r{dJlTH9*1~Ts{P@yMQHqIHVL$h*Pw%7MD{Pgy^^T5`kI=X5J zI8E|VM@L7rh}}w_*J86_I{i(HO^Al*lWx(|?zj&O9GAuBnI=A&)j|%cUZjYymGFlXlZ3 z8VbLW#}7YL(hD-D#0_lb*-G)uFvTZBdaONL>wST{G--7p;1mpwPFaS)2|N#qu=E9^ zV!SEbFkVHbl{v^-c1v6F*0u;CE~|}hmOzqMoAdWgeOUY~`&G$@|D5~i(5IjNIR5H& zvjgcE-Dk?(1eKIPAnVu((bP6nWi-#AsG$&Tj?t_@reRlG%(eM@0}of8#2)J!wcXL* zZa#W)-RGa)|NZUpzm|dJkqcjTwZ5DV9s)j@chcuqKTZ+}{J>aW_}FNCq0P5C(t`K8 zLnisVPM0VKdJU44s+Syba;IoS>Yg>Nm*p);?TvoAvdcT9IAZu>9#<_Cl(8f=K`n7? z3!1R3EE}b}j1rK9;M~?CxwQ?RRM@!VLLBznna;;COcO*k>UwJrP_Lx=Ak4%vXkZ+h zht%Ha6dEB5qfR2b>gLewH9YJg8!khk5wW@h_@!~4_B!DJy|w&KHT{y1hPSxY_d##L zW+%|*-i@XBz&Bwc1_YRFR0=eQa2Y? zQ$b4}C4M7PkzyqY5iy~Ltvq!D3lwJ%Vh&TJ7-L+!p70i!&(JF(HuJ>7Q^a8pFn$WD zog;@v=y*M|ZCHm*Vjp~GNzvvR98%RH|qCgQOI8qAl` z28)@Kt;=5r1sPY07>5rWDYQn4cK~v=_3P%pzHVrFH1^Q0Yyac_Lc`DomDt~3DzU)f z(FyJwiNV6$ce{(s)FL?7cF$WfPh4bN``lQfHtw|@zxtn)>(~4_(VJ^`ZV0*j@uzL) zJ2t_-YKc_eHwSjSe2}Jpez}+z$=!kW7G%_d$>b>@5_-qev?D9>OjN}x+9ha)&vsU3 zPMBI7Epz6X5qY?9J8eA(#d5(fU4@^@HmEaO0!do*Qk8kczX>~u? z3#Y?pBjf$D7)GXFz-X?f1Su1g1QnIxc;;f~%&K^%NSAwja^$QfmR_dgAD_wlN8;y=CPb~66zp{Pbo8Y z($)!s^1aG)+mAHjoZeM7qi21*HVCaz@8eFKC_Wi-DB$lLT&+w1b`bXqaeB}wl}+Pu z%Iv*EP8(P8vbH0D@I2RhzmCde<~RKqyY@`aW#qZZNRM!x$%ILH$@8*U4A2_hSG6 zPg3jjt_AN&d33;nmDRum3^&(tyGq?l;?2=XycWQbPBMCylS;c7E}+9Lp?Z6n}8+vV=#G0j3Y$uwck597o1tnBX2od%to=uY%az;pjf?E zxN4(0C1>ex%}h+u>ts@PtJteE*gUO*3Fwv@`c05zai+Z^&#&@LTwWz!AfUnB3(*T) zO}i;?k?a!jK(+*_L*00(spi$M(+?myR4Ni%0)5tyTN+%5bSDPiB|H$#10(F1$5%sX zorkxhQ{ykyG)5Cv_{7GiELRXMwv}JFG_Jw&xWl9Ty>!@^P;BFG0(Pe7H&5=L%l_i4 zRAtq@O$8n`j&X%If9jNYL+#Q6%z2xQ52=IjEO1i2E1<;!iv|JDMdls?ja| zTag6`GGzsyZ!VOwZ$UPLtH*xp^<#_#M7HkT9h4vCqXRwF*4zNS{P=jT#wIg^JmakcdobxEby_>p{Cn_XsczxUsUw+hF0f6e9Oj!j0+_ z*}R{R>TNv?Q1sI)bbPyv6H^5!c*lE1?SVnQ*81&`_5zvL4PU%mSlKEfMldXTBM)ts z#x%lr@_WCU4bQ2~VCUpqtYYy%=6?Ka6+<-?!>Y2^zfs}pzH&N?&TXP4aKv^Ti;3;x z;^gbiIQXBO`DlA$=dHPkao2;uLwW0D>h`342Bm!j~xntBFiUh z&3puVq^ymOE0!Mv$BemYKZm~=aIB0G7rC$}PgQDEW@mYi{~iyhn73!M8gc?uV1rdAo%$27)Fe|)NKn-C9FIqRQF&!Taw9Y1b* zeRpro?ENTQtDpKPi>ma2KdyjM2bID0Q0_tASiLry7kM+-oX&7vjmsKeCxD3B@+a>g z;MZ|=QJ2I;i)T}2Wb;KfAemvRf;BHjaV9gHMk~qm_tswWytkpw2!o?}1?m*fbOuKFr=CZZ( zdHBUDr=I2+=~i8PrN)hOM*GM^wr0XW0=FVlS>t{^@` zxEh$3j`V_E!X7sPR?`##!;ttXnv%ET*k)Ny`$nEVZPtJv?jkG&5x`AqOm=UxYDh0~ z0_OA5XHUBYx|?`&#ySw94LOpU+>{}$N`$J5oY@_&3IW3vYA zrPpIqng*iv#vZ_{b@HZA5?{q_)N7r?42`L*HkNRrm%E_N@?)dj3_SAY@H`AC&K6T0 z$&1Q+Zn{MyWZeSZp?6oYUu}a3$tU0#b=sU~M!{pPAdWqrfXJGVy(Xb6O}%8s0WuvM z)(%Np^>X-Gms8Iu8Kwc(?j%iP8ranM!XP$!0oD+9I!sok7Ll`^h;Ug?qJF@^>*8ZQ z1EQ85z>XSQk!w*9bpx%04Fu~Qp^IF0BqH(-8-CiOUR`bCDZ@L(fq5NY3cpXDgdVDV zS?A=EDbCXeA}S*ST_B0n9FD}$wk>b>lDXcm@43JOXw#ur8UfRcUeUL-aAfsffeA$~ zD|4NOsSWr=UeQt?auHhH!kt;hIdYeY$%%x~Le8mbKs!)Ar^iBUDtJg#c$pd?=pkyE zAd=Zy&Ny)u-V-E>s2sBR8CuSAHPSUj9}cL(!<&eT$3hQJjS?T96i3sd-O4P}1$wVl z9p$DtUKb@Gne?NDOSiFZerfTlva~6j(P&gMjVK~ciDT;aH!{^pvy2)>j&z&RzNDwZ zh24;XW(mL7ja8gA)}xW3LRnYQ36;TW&?8hd9^Ta#SHR2Uc_Vv<%el*pqDE%;jVmTZ zvbU21+G(CQ%T4f!$jDR>46OnL86GR}Ocpa1nYd(sullu=DS9HGCxiGoR+P{@#%gOT zTzLcfjZ|4Yx;)+mBh)YAL==lnJ95Lgv02DTr4!10*|As~@fL5IChC(1h$rF0HNmXo zRUYx1X;mK9d9IbKjV0oU(Ii=Q1S88VEGIm2J{$q-0}G^KMw3^JCfC2-L{@OoiJ%9H z-Bx*Gsh#IzW`N=NYAXSxDu0z?5G}T=Go;YOA}i3IpCu_r4ikUYGN-(5XoLI# zuWBMeQ{sdkt_&ef_^Z{EW7)S|Z%PhA!(^>t&V~b$HAY4;&V*?#bB_FS#qLL$A ztqV#`z1gk4ba!!(H)Y%$AajTWkIY3P;myf=_c#fm(D5ersaDja)?{ZUM0jj;ampUW zPI`DujPkiQtvrz~zE}71k^59!9>a2XYZ}t#Yp}?&UA)-iQZCO_xO%Ec-Y)BkWuyTf z1lpWOd@xQOL>_b@2h}o|2Cf5Wnom~yU1Cc}mrdEwg~n`e5*vKWoW_p9s2~f#fw0Zv zs#Ru5tLqyaxu9fna-#BJP=KYPEZx1BN+ftDTM%0JD1UVq3RPTWW1r=kQh0jn3O_7m z#^L~vZk{z<*krs6G(Nsv!Ys&G(}A&izA+>$QcRF!Yz$kOW~|d8At-lxGR*5`fw8gP zw0#|$NfFoKHD$W&R<{dOOuJ(LlC_c2-DfZ{_mIfw-QsomP)G&|5Fd>QRx&FBW9@M& zl~<~ZB+(`JMMOWyO3>s2>H>;OtYe^L~u_Y&hlL~Dwa$y;V_=VNhCB>~^>M@Ez zaD*3JZ;dD`#$Ja_#^8|0g0YUgX$V^%O2nZ0^u9QBWWaHX*_YLKK3|b^;Ao(b!jtxv6qOnYN9Qp-}P;lDWegk)0M8qur4U z7SK2hkTyPhT6(4Rz+VU6-2EaVFT*5z-UiTaQtqAAj#Hfk;oM%ofcYZDKnaSJ(OT=v z#Rh_AX6l8Mf%WBtF5Mndc8HTI{$1&v$sT_N|FmyvlV`bkZ!94K$AcY=R}kG^E3$)(s#8tg;|W+FHE)qUXfHJ^`o5dGVh=B6BKT5KJI72=PriyuqA29n^f+CaYqi&+ z1m?P;*O#R^>(Uj|E#A}!M`XMp+DT;CR?IdSBy=`QFwM%P_05b5ycTGxNT8o0K1-3( z@0o_WJx00)7?;u2v-pj`s28s|cnY(=)IDG(W-Wzrl(*5@SUpm{AR;(!l_sXgJC$N- zn|Dmfw-(i2a;xtdHUkmpEJ0G^Q2mmF@qSc%gG%t<k{ETI_!%2`>h z$T=gcm(Ro1Zx#l5I5O3a-AvtXW?4sm6EWVO)$Zq|bQZ3>K;8hjmD9qp0*PC8POZ=d zwJn{-zR6~m(wyT&=IltU-Ac|072?=qN%06zMuBU4akNiwO_&W8Ip&{MZJI|T&XiK# zG`6JcWp>2-W^zrlz~W7VhhPu-XVrU`U>!toRz*>au?6`w>0*klDxBGRsca()BrhSj z`CFdvS>?E#u~%0#bK|mMEN{_bYrrN3!Ek1c?>rsWPIS&B5og+n$w;X@%-g`yf(P>S zfc0SIBQPpyG!V8I#zJemg@ z=5SYks!&?YXC#}*pyhW6CjmyU2?{WdvS)Y}*5y4UaVF4Q1&u#V?ceHWF;-SXB=wwJ z^c&XP=`_S8j_`4-qSGr*T?!wSX_|}_b)PNSnO*7F)ft&Ur zdArxhD`jN2#Z<0B=D87o6%%G)alBSjAT?|xVjN}GFWrm<>T5Ej^Nk*PIi&$38bi=* zD96iDGj z;WZl!?w#{i8YQm#F3b1v$kwFzCW}ip)MYsu${`|EDsc3vjiL^=BBJw zV{CldKzKvOpi?d+#OH>!2OoMcC+LhPAhSV5L9!D3kO3LIlxGSov%Mn&*ZpJ0#g%PaAq;Vpk~C2`u=u zNsq2!S5V5P?@7p5Ik`Nz(uoLBA_#7rpTvMU8O0Qky=t8*Wm1S~sLDi^HO8~IX$DHU zMv2!!1$PO7Zsu8Lp&sZKP&s?%bW?#cBwWm?G#Z%M$d*XjysC1p^Z0}-i*0Kc{-$%~v@Ut?ru@brMZrY=*tsE(Ql^*Tz zF3afU*?g;%iZ+(l1+|vxnNmW0A4{tf0{BKHS5u#%*97}{wOHmh5V)0#5N=cgaTcd) ziJ%`$%fS^XT?ou@g$!*IQg?0)-w4cH&D!BFI9D%cB+%aIf6l?p1B&VO3~u>ACV3me zLm5ubTckOW`)FRPUN-$Ej;s9-ppp}U-Zqp}?kgS}GQ?-NLREFLI{z~0)q2ZSk6V8P`bab)KBDDf)NKe+unetq&uxIhJz`9){%FTIWs-Mzz#M{!%LRKQ zoE=A+%Nm1{0IRim;t|hTz$Q%L;SRwG*0;OGulQPw-+*HfpI@Aw;PChg46Kzi4C6R} zpV9YJK+)kfSCdCIdIvL=QKdF&ax=k&R&Qs^0)t*O8$lA@$OB{{oMMKiGP&dq{!wH* z?)Z3tlPp1y5S*q6NfKxJvZ`V^83l7@)Q&K0)>#uamvXfyC)XrQI6BH59*Kn|B>%5Qo&> zxN!I^4>dw;?;~+mZ)xCyidLxuJKoD>LF`C$pgm&Wa+vZw^E6=Xb*NbZy5aK$!6x1< zo1%7{tb(`7s2XoQ;;g~dYy;{Fl zSe0ZcQ_?^hD%it85G>-6($KT)Ti$2~8z@G`-foR)D(ASw}QB zvBdVu3~y}0H_tqtkyQ*Q@@R}SkkwfRxtf5>Lw!+jpy;jN)_q*UvH?fMdzlE0cXFjB zv`wU~e1+=p9ooJQYpoDF09DYJ`>5#0XzQ~W^i=+2Ty_MXR0TXK(N%r$Z^x962xr@+DO zN=IrelHXHZDW}zh1(m?P%q|y>ZbZ-+pjmL;6jT67sBFuv)Bq-XiXH{blQLY#8BPH` zkHYkznP?q3s=(%eOjCTjd-Om*pqM}2Qy~GffkQI2vyG>Sn>A86H{vv5ie=@_oS|)oCHL@2 zc4t7q$#O)l*=q3SMn=gwMydT0hX%IAG(&R|^(eYSBKWo8!TUpT$(enPIm6@ERA=Q! ziZL2tPnsVrz&p!kX%M8n#DK=t0pz1Iu4k8!UhvAX^q}c%cNknT<#?eHf}w#$a&RR6 zX_9-|+>~7b5$5awE#3*iH0?gcWlx5RWs4)D6D5xs!mEOCunTq;pBibA%aYAd*QKD6 zwH#hp896Y-ozz_p5%Em}SA=7@D1R(d>m3y~%etLOCgN+t{j4-$9KDB{jp*Gxb%g4! zKy#f*@U!Y%YNP?FTS*U3adC2U)wEltMe?vXqzFdKC(-e(f#@AN@Bu+?C5xcZmF&ag zq@mbcaRbNeW*xeU*eKWScLvq6r+Ks(i14&1u5ghN#wf+Bsb@?y#hY=?W`-<-hD*MJ zt_kBqMFUlA2EjZTQ7Z`29_q5sdD<18@mzH|`bICg8Zb9$vc|Fe%wtHgqRis1s>*Ld zqC#E412BlwBZpZ?R$v51aS(}46*~}S@t@PNR|4XEoimCU+29IaO`%deSnrDhMgqk> zv13>5wN&$m-cCz>TBI9vvz^-Z1p$sgxQT$B=p%#MGAC5XH>aU22a^7oHs)@03ssIH zEE*4@OYRL8f7kYO;oaV?{TlYk&_^#m6#TP&B!FgE84|aDm#O}@Gq&)nhW=NwE;&>X zZ-CK4iIio6Gpj@3T!c${=0U(o_ZupLlAZk1TB6kicIcM8cEy}t(K6P?yF(&nYDji! zbv(sEzHS@M5K9Nq-tgNe5ivvMizb!K$joX3a#~!VYH#oGZASo%sX$yoWf9yfnuFD% zp)u7@_T@>1AkyV@wLO=eof}WGtWqiWpd*QdG$sHQ)+OQasjj^AANGjT6K6jlXyHZ?+aERBr z*ssMKZ|%E*ONRGnm3w2osqEW+$`jyd{BmukK&=kh!#yqKS#$0DlIk)go1My127^H0 zZlfTk$))FQ#Dn(xF_k;g6yuY#DO{Q3K$~91>XB%DbO+hI@0;xa8vhb@Y9TP$R@6GX zt8-*e@AwY|CnA0wEM6WMlMlR@IWA!oH6>t!wLLTSbIWRm8L%2HUqo{Z6Gq!MSGdl2 z{bJxZSs%{*((~Kb;XfU{_j>rv{iU5JKZ9M6pEBA(GaEuvc5;p+o%_z?-yfw5E6>`F z9{eWye|5jLhekqX*Pjk-l4W^aSctmKE0#S5 zK;PUGTD8icAtr`btK*x>%a*#$Lbel$tnHAwI4ts-h&~QlduOgj;Up{o3>^c(3GTf5 zc_MlkoNI((Zvi$}9@5T%jl49)GBdQd8d%isM1@NTr>wd&*FMIM6FOqgD%oeiEcjU8 zO@@J=4qikLNn=5?(@IjkFJv0Pq{%WJV~N#xz%tv-_Aza%**2YHB2aLB9`s-%r9VBY zlm<6O)AVl#(yGhIenRocDr?YOpP7Z70+8=Az@}aurE?Bn7p155JlFDsegzcB!&I}yL#?>`L`ElUi@gg{n=Lif3FT)YZ^-uSM1eA2!){8zCJ&HHTZoA!TBVNhf1_eJ9h7OK3-!04p$<-SbV(R#)Sl&6a* zPS2>0w2|mOci4=ndG#se%JKOr!#1f40oir0xRj3Kpi*^079V%62wk}RR)YFrtLy z5NCKB@KVHp`GLTb-dhXugahE}mt6;7z+1o!+7D5Nu$0)|Xuw1X1>5f@X_YcDerBi; z!q=72`L~x zmcII0b+uxO9%+12<|dCY2Lw5^lHuCaX`*`}SgAG_IXFmYENn_Ecwfhv*+rJ68OGkv z-hj`$>r)-4WqW(>kItwbgOHW2|2tKCA%Cys?bVZqzu)!E)dux%fB&%Q@{i9~em{Qf zr`v~N7eCoDaq{r=?c1-HXb-S6N1p7u8@s2)_Q~LG(dx(X_s^$14PMi$K?uU6GuBT~ z8r;UoR>~i2nEKy;zM1>q7mwcm`FE^jU9bdo#+P}7qRaCuK?4;RK5Tk_SW>)?A~Bd- zRkEU(2bF_IP}Akoyywc58MK$YA$d&g+bXpcXvZq&eIK0RG96%>Gn^76B(ZkHkh(tF z<9Z0aIA|VWbIK@aqP*mkq0>?0!nw)B&J7j#Ug{C35;nkeAZ1`wE zb$ftL;--IF-t)7Z9=r$IJGI?14c*qc;8r9ob(rQozMMc?1rP99nG9)5q>qBHb>=i- z(evvtEUmKnHm=KLq8U04jOO=UmH-;PwvBuw@&e*2$w>}0_a3-1Xb-Ktj{l<6*z|B< z=-+#u|C@L<^XjJ$|NAN8;fB`d-*vp*(KpWd;)ht>u1$|${P)D49|(67c;BD)`e3>L z!}-rbJ7UI9znZ05KPjN2#vpX3ZCBJ;L1x9UMX(|N;iEs*|FhE@|M+g)W@|CN&Em00 z2{eDY5iP^8^v<8w|38NVe>Nn=()e3(z?|nZD&N(_55cM68wvC5K5S-^4cM+&@`w+O zF;!G+Kr@QZkLfGyx8BYo&_MU+jX$3&svT5uiVNhlOc}^MP*zKi>`92`M&ew^+*s^5 zJHE)-0qM`6qz>fSBn~_RF5F;GgJMl8Hx9oG6(qDU^Ig@a_a$IhZTLpCdP|)yjo9hB zH0aeV(boWIMU@pfUkwZt7a!=)EyxHb&F4FsCWU4$!l=pPr$OcUra})Cne69e7^_&p z(3?!zd}Rh(&on2{=pBHj7m7@|a;b`t($UJ3XO9P`T}VQbT)XgAu#?vcT-?T%q&q{C zqPJnCK{p%~W~Whzw9YL*E5|37fMSm~DHi$}0j3u3+ec+4cB=&%niGfblGwid)n+K z=s0ji^~S?sHVBWL{`1y|EK8O^ZS#( zcszLUd4FE-*L7XbD}Akb7#rTG`VpkAv_T5JG#k}T@;au10GeKd*A}KnGm->nyqZ)x z_Z{9mA;}5OMoiv88Fp&K;?knk@djF=+YuaSH2(Y~g+J_N;3K^us>mW2HRDG|M2mr$ zQpco;NplG-uq>utF9JOYmr+5wR6ozgCzpdjIlGHOr-t)&O<0ZqwjlQ@BMfI3DVV_K z0-tjRXVse`E;S68mhmboA_}BU+SPb{QzSHq3*;GXdFNRd_)S3r(ud3)11j8Qk$_ph zjR0j#yALq@wG(k$tCgg2`%s32rBIQ{i}etBu^3qzUg}7e4C)!KTxCAjJwzU|G6c1o z31=4L>yyn=3m+=C@u332#ui7ke`RxZsiW{W~8#{Y86Z_2>_j{SQu^{!;zTe=7FH3yb;zu+L{- zM~(kk^nUL*3EzGDc@#&2Mj213TTeaMde>{J+L3 zo5SlSHmXpd*?WWA2mScCpv?r+6Ioak*4zN3?U~_av(vZ1R{6Bz5aTe^&f*s+@`Z*) zC5dHLTv2RBNG&ekl0n#nC<&zC(LjaJMhJ=;* z@wSQ$asGONg~nlE!ZZe@p%{l)rcSUOYrX8(yiS>J)~~}1mZs6m!EiQ_o8ZRq88A>Z zE97I_iWW`{^fNJgL_ohc)1Dk+U^XJh{QNd$m1;Q#OE|lV5{sh_!~)e#>$4voKY>1XELE^5!4KYyNkerdPy zhTn%DzP!6wj!jrtz5zfLW*3KEKK~H16G(@B_&(q(mY}&aaTJSF7Qw#X!)C zP71t9vSa;cX0;^ZlUr!6i*H*n(o*GIoN`Ojbc&)|y_ z7YVQLf4P6G9j2K;*c-uLBy?ok)Nx&<`O5AHow zcrSQ1ZWNPL5y>oG#($gr`!I|^$*{Vnh9sRol5H$ z;Prx8ogGG808(rx+8lI`WKhFMWR9NO77g%8tZp|3w$V#V1PMV|Maq*G3b(Luo8|4z z&ts|mPM%@YZ$!Ds11Fk1{FCaZpUd2S9oe;JhiMb>fSQA zga=!laT3afh4dAdDTpLrylIC$IIlGxu{5C3mCl(+o0VndyQoG>UX9NjCO2{j~2luQW%Vz0KZueKBSAj}!41e%Sl1 z&)=s`2b5XPe)m&w_RRB3Myv-1mt3ZNpA0ebaYBP_s#6;eb(W8 zAHRRIKYsq~E`O|qHAVxUu;&Q!^XIlx*mrJGL|09mvu10+9opKr38*Q|k8N z%ZxOfdOBKaAz%p86&<|<&HcW-x{yvJTs265nYWWhg(xh{=A4in$ZARq%a`Q(lSwv4 zVorUBe$vaxY}px~tz}KyXnIiTOHpcg*v(4%3{qMqa6pXAjaCBcYb=Gfw8}1(1{4W{6?o1oKPS*ML*7SU)wCnX zBqm`RswtPMZ{n;qE%q7f3!YDPOcQ-|Wz`ag(fh|wz#*U=WDd@XiRYZlLB%TPE8(Yl z8S_FsYnMAEt1RixFu9I2(LIbcw#VG7L9k(B7CXx3a-AFE;4W{Ff6Vbq9dAnh4qtmc zc=+zd^4tIYe~87!qi0*M?EYgQX3uX;E5F!$*3$Fm)n87g9sMN5a9q-Lx{Y|D(c-dI zvN!tB+Q#@>;l`NxGGmO}n(}odq;aLR5nYkIbSIGGf!aj=y52=?;VP|iOqDj8GMk)Q z)Uj6It(mn(kdd3P^L@kH8{&dEu3Q+KG<$|{)jeqg98$h7Hli_#ar+V>rm=o8i%8Cs z9AGPOL3ljPM~YsP?n+wV_JggV)b{$bF03=K)Ug%@V^v={a$e{&PhqE$U~8EGGI7Mb z*=G@vZ_Qe;ft!MzNaJx32Y9e8Y$2Nx2(~Y8G{xtv8te3qc&XJ)s(*SU9>?L`Y;lAL zU9G3MDRSg20ph|g%50fgX#*UYM2xh~S#DayDLk7#mqQ1BLrWrKFXX6d>lxSPSH zJg#+53CPNYvkr$Z@~5kdRvUYAbro3WQf1Mc1_*cY%~H{B&8iF@JW$%VOx$iw<}NX= z+UwG|$qwhvMv=>5UWViOrLm~A?PMnRvN%qe8^v;*tdyk8v4$IX<8dmqLbL3jbf0h; zA6Qfo8#pNCta>nU4y74Sbpk5XYYs*!Rb-?>sjlowzMF%tx%M%`(4T1qr(hk_s+Byo z-Hx{KM|rE2%Tz(#<^-)5GH z$TQ;fT0QhRlQdYEYY~)9<4*3Wi%lXc+P0s`V8fx#S{^X@qr`%P=;kv{8luanVRYT8 z4*AGULU1i_LJE3h35t;Xw$RR}>$?-adr|*5W~Cw_H*c)uab7B>i895p zB!u#pn$qSdqZ|4r8cUbj#<*hrow7w}jczbQ- z5-F>4CMKrZ%6_bAKiPmUqSCRVHR`0>YNdW=%oUs8=|)8r@bV1RlE8w^-CBhjOq#Yx zySe~pR;L@{Q8-tIHfC;ha5FQklFP=i^J$E7{!s)+&|H-z;u@Na2A)*M@CCI|n&imE zdkKc-bu%v@SLW9)EGmfA4Q!{P0ynVRcK^haH675&}!!?V@sV z-&!4{k)4bC#%%s7zW71yj|qzKhy)-f3xw(4d)QJEi;e>Q@3nta^{-jc4O>`e{e}_qpbrJO`T7WL4p1TY;<9nEgUTYhX}wh4}TqH&OxQ}*H@sMU^9SYg|DQ=;sCo{ z_f!}HB-NCtN#3IFad*$*j`7Vt^dV>ISsWFE86!O|_NHswFws16eon}(a6UMdgnl$j zIm0svR^nXz)aEkBKC7;Dzsn7=IqEB$Vce+Dt@_K2tX;VajfD!$8~E((eIhbdx9mkr z*Rg;ksj(pmYeaQO1HA(g59RK`srW2^Zx#A(U|XW@^(&gBE&jw%*Qp~htJ`#+M>27Y zsDsDpUw(b&E6uMP`mSsIKTh@k{_T$EfB*GeSM%PGk`LcUbozdA=&x_TyEMQ2%fiZH z`|gLek@wT6_VZhQaY?N?G4hcj{XIsY{64)5bA z1=5|HV8WKKQO65#f&Rn3uqL!glwIf-f();KY&dodmv;a|O|!`lER|4`1rSFRMC!hy zdkJ{5{o@U2SLqo_mM9~E)yObCah(Qf3?|)bV!jDvRi+}YyVkinO-lolkZeq8W_YQ$ z#vLAA2wA80N&CPuMicQQ10bq2dFN=(<&-Yi%QHqQ{it9%cw`mpF#)A%!=U9fK-d{? z36k!$A(OeifdzQn)ngMRHcXKPFk6YnefYXWni|%|SY0T}8!0;om{KGFVz|;jIe-9< z^WUD8iL9~lSZo4^=sZ})qQ&ZL0)QkrXd#s%^VLH5sIZVsL*;X8(yd&^eFKuz>AO^B z73DG_?>7aQwvQ%uuaD_i=Ek@&v%HEN?@3Z76keaP4HNG4vDTfa_-5RPbR!HInszRu{h{ywB92kShN&Sfevh$2QlY zi3VsoWO9NTL)SO)1p>^fQKutizEwCx@+KT{B!cr?J_} zTbgt7yxFkd^V?{o+YCB7lUT}Ot&w6{;pk!dT7I)`-YFL&Gj*-HL6V7WQAq}dfm9Pc zz~nEJ6AQ88r@rPsZ7TGu`W-EGMkRu?UL>UveOCRKRljEkBJ54famNGs#Mt*+w1Tbs&dFO`W-oHszK z0ndLORwVbX&l?>WMO0}aBIWU-@)X;9)tc(Lj|o_hHX{H=vh$E|*ftU8 zO9{w;);LpVm09+ydE!8EqsW-5p<>EhS8mlqs&vz4Z*3^5y*MxnF4ftL%;6_#ccoK% zxBGjG7>ye;liZg;l(&(hnXG7!8Y};%9rPBba%*RgXl>DgVBMJ`GT70dE^-PZT1wlR zb<>Xq1P<<03|bUgz(6p)kE!l-(wo)mSk^#>JlB=}l3wY8UW6b<*@Qt5IxZ}VL5f9( zYOdf_N|w=nDO?oI9b(`WJi&ry#=S-sqSF^aRiiOf27`^HorNa3RW7qu`UAZZ3s+Pq zmch}Az2_`$hL-WjKaHDOG#!PNxq4VtP{oL?6jWTOj#ysjEd7nm)x{b6$whCwEr|Kk z`xI@{zkmI7|BbOrs@i{PGY@yNnfvVL->w`SSUcmD_UoT5z144zJ@}>%Ja&8s_l2EI zW@Y6h5wpQ9np=cF&eoiveBE?S+TtHa{@?xd^T24g;NoH9UT}Xi;HPColIeQzJ*lG< zG~-&V_0v}-fUeBklI+Cw-HC3tdh%5idF!LIyVMvsMpE@QI8Dr!Mad#dx(s4LKqanrh04_FkM zh_ST?{|ZX;^Kv4&5M#8q2!0*Ce4(n9KrCCkZ~~34K9LzTO;%^{Ccr$*5SVo?F_t>a z>xPzRH~H!e_rEq{3c_ zhY#d)O1&tC5>+k!{kgaQXH}zB1!}^at_)mTyGk}lc$#SikK)=qkuzttU1*`2KH0^N zL%bwbMn-ysFfZ4c(6VkQB5dK9Ep=G#Hor2&%99{Q!fZ%(m~}GQH_Bh1kR(@&o8&=7 zx`U=vYpjUGPdFY&d?{V1i*}Rs$)!WUK5#H644AB^8)Zz9&+LFTH7Ym_v7L)m@P#}w zwhVAYIrxl`Xwr%TY=VO93tKC&Ckr|Qj$*`ZVXWzvIc-?*z>J=S^xA67G{eLlBKlnn zeI=wZdxxCGt867!4p9yfrej4a~v>$%=vY3H8ypj1E7-$VNd} zSLgbHZIJWo-Jk-JO}8)&a>ku7+cUoonFTjWP+hE9j9sp%)pNYUH~PWssUJUHYg^qV9;Xq~qWU2Q+GMIAa*(UP?7iI!apn@|z;z@Ce&sGLx$@kZ zl>DDpF3oKz8Be@YI}9qtuE=;ekG-3k=bA=uk0h57W+nV4Tw;ix zOB@H+FOV*Sb~Din!C>(09l(o#+mhthh^138D`O7%EwC9#q7zrzd>(cp7IyxW)7-X3 z_JlauUtg5RVyz8X1!?%{iyY}1qio3ETs6shrBdH<22<$3EEsv5sm`~QyOa5vcKj~y z`cODI7qN?G2y^bfY4p;DhlR=Q)Tw0yd`dsc-Hs*HSNDZkBV{{iUilr2X>+i)paRL> zg_6!~k$JfZGbXG+}c^KA>F^oAxU_`2H!W?~-!4(gf!YdopX)ym_HI(N$IVW1J7zzfqR#)~f0 zW@NZn4T1W}@qqC&0m-4o*;@K9oc_;$YI$Gny?f=(_uoGK02FR)J2Zoflo#~@>5SHt zPQ>eCnJ^7{h3jJq>)g_Hf@eBRh!$B#5QDPpUqLY=;7Z3*e3+KYkIk=RG9B02Vot3A zMWmj6Q;Xl?*XltNCg!op{Nh~1P^3#{!cMHEJ_c8SCtX(6Ok|m+ojKhTUjkj5w7>51 z1(Eb7T)x1%pqf`5o$VF_F-dezL#}~PS#XS|QOVbNLl%#P#qg^EM8&lH*wD5U9#J-v za!LW?+@>5PublB%j4Y0eW+-@Ia&H8Sy#vveY|9&!p@l%$eW)M_h7PNuDtkHga3U3{ zqg0>wNg+vWv>DFD+e;xWHc5=4SjT!Rx0N$Ut>dFWZwl8A)Ll-hM)kmqDeAU_B3soM z(uL?a4-gX739aaLvhQ>pzN8J*4OM%Fjo$9;k5KUC1{l(0D@%2c4Bg6b0%xN4Fm)|( z`OIt@SW8#GQZ{;1?`Lu$E@nnWffU(G@=%k&PXvf@$Ji`DP&l@-O7*bOiQTolDpI?! z-qjmnoW-fNI~@x&Pr7Mk&V^!yTe=-jm%5kcdyGTex5$YdwHDyDr)V`{TW@y+L`ZOaKnsK_l)WvKL75YR{{MI z_n&vY+!{r^E1Gda#98ThtU9I|FL!$w?jRr0=oD44EO)Kz6CH}1q@qjBz7Ey`H0FGlYvAA*X95Mcqhx6qg=WTM|CcV^@xfr>X#_+!9IF}_$39V(m10bJH2SJI*^t>f=%-;_(^Z^ zx~0Q3oW6Q#{|~Ke-|$bUN9OyWMdsuuqnUntn4BaZQ8@H0xh5u6CyM%ZvBLripE(J-Osu$n9=eqAzp6{>ani! z2}j-uJQ5XcYAjQi^~U+(e4)MQVE3y=-vHx*NVN9i#P|B|PITv;)7&M}ShE8?;y|gb zx-Mw*Ogt|D-4$q{nCli0Dyq}jt%Cc7jjtwOY>RAm3C$qt6|{YUq;7DF zHO0%F#yal?eWdlDiqWh@F`S9na?j8cuvsA!Z`N%gh25e?XY0t=^*v^zS04_0X9pYB zJy49t9l>RgWSGci=|QpRrkjJCZXfNo6Wb;EiEFits)D_wueKOS0^J&(8!DqzU4kUG7GI(vB-o5yMo|8XlY>QF5h@d5}j2K|%?_#a%%$ zdLk&7g-9D~H4~+05!YIkP>ty>bg1OQ*K!IcC<=grb-YpqC@a1yoh_r z%g7Y%b4)|$*iWgKBDz9PiR@ex*+ek^sjyUDIl^`#m(AP67Us5Q{`uy`%isAQ2EMx3 z0siUSnYJswyRRtsI-@rxc*?7%!;&s^r5}jTv!n)avd3$WG%BTZ)P08aHLpx{5CcV% zcOjQ9Orq_(t`1h$uVWBXpw4 zvuZ{;*f_>viaNyVsZSp|b zqemcU9eYBaJLa*KWpq&Cl*quZi8(H?1tyzQW;JbPD1Fmt>`^O8rJ`hXLY-~Sj|7Il zg5{jjw^|3@ollTi>Z`eSZBTAaUMM;XS2VMO1Cp>(tpp}qHl?U7-m*2j*O85uVH?9J zX8q=VR6H9k8ml)9lHD+(!57L#%{PD;29B zebA)hf~zOb=K}!EV&FVi)+N98z*yQnah$30Lb<5@-ifdOd+OttY0H0nIQ2{X(b?yZ zb>4rs7jJNTUw7fxeFZ-Xi4>#^GY!s@)al{e9SrQex)2EiZ=730m$Otzf>6SopdM(2U z9K5#n#5$VHI+)2tti}f*!=~eiQGrhN6~Sxne#~N8k$ejknY|rZ?J_HzH9hSbrEWJX zeFy3VLn^buf1!c}qq-8x&ss$?U?U8-`8%Q3{wFQ+%7@_>YG8GAs%|8qFjEe;h;UPw z30%@|BnGC^ZPDXAV^_VoKv(&uLRrUnS~i8MV-7f#>Z(P&*{10gtECDgr+k58P2E{G z?TX9eR*xgwGqXxr(cG!3EGSBC$wYClQvB*ijOl~j58akMnT#-?f{14|Ll>$gDt~O5 z35bh~7e{DoNsTl?l*nnhP|ss@8V^j#u60Yx6ZM0b z$F$($yTs*bIbkA5ut?bJqwiJv8+0}i#RX12lRb66T)0SDJqq+E98F65v-tk|S6kJq zu-__UHFJ>~_Qagm#QNEp;5O6sC)ID(a*IjP5&hiU_#hg;-lCzWTAR8KI_D;Am$+k9 zb^8O5dhuB$=8ccLI*F|<8d+vckJP{lySAE#wROz@FDWDtlR3q+`vktMaj)&MTKzKbiecaJ}4+v779jiKPRaHDs8CEUAmc5#87}+sU~$8Vd(Gg9-F; z8m~)Lk$ao3BXvd+$KHT8S9=m)x{0%sIv7sLLkUj(VSX#!2$^7!F2cm<5n9uV(x9K2 z7H72dij#(MK(F37o3T@1!yE0|!gcX;n}GO9?_yXLLClNiA;d9ILY z?a~YAi`#AbS#QL0t2l$7_?+V=k3x7g6VZs0%L^KI5NtLTRNy=%1#%ACo%Jio0A6$_ zC3tn;@|MYY$#Z)~me!n)hot!cRnWxsaJAh@i|?3~e61leW%6hYH?kx8@X2kzM6JH? z`Fn)z^YSqyMdr#hI=}mzcx~w!ePu3S=Qoy9_POkH7na)FU4D%IOseLI_LWqR) z#HV^P#>QRpx=3nnddv1sCv!f~5a-cKMANtfExNKhdzMC39sCG2E(BZx-QnWlBqU6^ zjX`?68I6r2zu_u9BL7+Wuzz%Sp*Jl(%&d9s5z3`9somjcBWyFoeK?)fG*Er*$J^~y zjOs<$Y~m(R%llr-sP$;1vMH|H(VTK7u1`C`h2ATdV#G=mQBz7ab|;8P2U&#fz20^H zowqS0UI0t*tK6zMkY*tBEe$S+J=Ln|6%SH7f>{Snqq=813S1ZkAoz)6@Er^&+Eq}- zRKfi>w>6>-Dz^Q8Obn#mQ}!?zR*h=zgDscRc+vTT^;Sq2uNO~g!4WGg5krb1HB0>lTC3omp-_CBO4}Nw16{;9f z98SGckQCK;Q6>363;y`ip^N9qI7 zOwSs3EQqyyhY%Y7evn$>pQ5&@bF7Lb!aEFyU>SIbYFJ?tg)pc8eSh~dwdwDcEZ= z>*TDlP9tO!g|R0Ae22n|auR$8Gij01!Q1duO{p*Ic1$KwjJ1y{YlH!Y1B zAc=2!SrI*fvmqx801!IP*@AH#P!m}HkkNe$;Y^^$3p=9`N ziU8mzps~$9FyV~bM4`A&09(JdGMbNF#9C1dO1v<{a~_Vb+Y4D;H{FUt8|8vU5+*b# zrJtBlMtl)!CQ%~~_}MvXIz=l+SdiPDq*X8}rjT>Iaa}6rjb~4KA_ueKR$xTs2BQrb zeKcMi2rgpkrQ@GoInca#)d2q^yY+L)Hw&&MK(|s%@#*BXloxM!|2+=Wv+*{HPplL# zzk5@1YG3!=hcg$NBA4HN7O__J&B1Gj?g!j|fBNy=Pv6yFd;4#;`R?jR*Uz$TmzLLl z?O%EO9Oz*E#rE z=8vqdsYe2Cev@YSP)wNPRNhwW9UY6hF8QQDznO*#Y>QB2@?jd90vwyo-h$LM1{C0? zVmxfDZGCp-Hm&a6jFomLrkrsixGn$*rBrpfMjq^^3gl2AwF*G;;q@|9^|up(>d()x zs<`zP+^|&`dvwTfPlA;f0}V7PTWgo4%jNZWo|!{}5J#!Ca?uQ!wQB~vaTjE|a&imF zjMu@2915~zxo~Us030#ekQ$~bLlJalrJNlL-BC#7l}ni!!?}ZCSvKHv`f)2?<8qiX zJZtQ9TZ!|Cd?b5zikc={fBoV?%ZcTG6+gdxajS5N|I6+*;ek)v_P*E#{7r6=?*0DT z)Q3GE_$!w$U`{=9fBnV9ZQAqS`kdzbH2C;NJUyBD?7u(%apAyG!`KbVI*GM?jo7s_ zhi5lclT9!oW_Sw+B2Ccyg?tGqn;mkt1*EYYB^`*wQ?1HM%c~u>QsaVnZaA=ZY^9EzTFHgi3hox&)(L77gYU%iZjl}rVk>oK?9GsT ziSpl~j{(avYBg9V#2ZBvpm| zOEx9{UrD1pbx(3n!LnJ(t;N&3T-^Jo~lZuKew_=ln#VrlOa82OGL&OGKXk!cP9X2DHYV z)Sy`Nx#HDaFjjAsz$C*w=MhlZKQBJ)zxxS+3R3GGsY__R3F0ud+Y@lt!%!>?qKYr( z*B59DnlfzUCuli_mv^t2mw)&YsAOj37dC4%!y5r45SJl3rkisRlS3T(*&vP>M_!s@ z$CQ(e(rqEX8t9WJ92<>W3oC*LwSiiCf_1kMwHkrE+QhAKnI^~e$zar5Vo3oOS!rfL zwznx0P^kq(901nFB0UpBx7sLSZlKGu%t%_DNa0gcl@)yRLZFr+^g`N^LU`^6Xp{xe z${AEHX4(qxRhY^T(s-*I0~Fruka)lw>RRW=Bss&{3MosM`C_CdF*s5kq4_ls*#2&i zw87*^Ho7`EU4*G3zl8uc5P+8gTP)>D#Xy>tuJf|)wwsbM%*T(F%a5U)_|k2Kc`1}* zbe>oA^LX6XEuP!B%R^j0bozA2x9_6gSt90c9hx*I+%J9`zNmKbZ=$b+bIwMa z1b25VKP*o7%Q+HdYkj8Fmp)?FxM(_eiz{K6m0na0LQWPyDp3vDmE4f&@?=+^TUIIt z`T%)*N<>Ub>Xe9<^u`6U(VkoojN-4vdCtfJ9g1w@?4&Rt$x^f>0R=ng#-}d0A6pF^ z*d391ij~VnYx|~Uj*g-wR+a7h2XDWxLzx@!QjXb2GcuIMpoWtN5UUAX*;ZXrjVKH; zN2bWWX2AU(?p^wuO7rqP-gP-HbY-%l@C^<=DiiZ;WaC5F?5u76yg`H&@^qCzx^3KB*x=u;Lr!AfiZU9( z7J zmRJL9Z6F@h=w7Tb$-V8x`E-m~2OXzu#}aK#k5iW(K3|-Dws^xO_m}u1bE^+71qUkF>&5Gu*}9O% znZV2)FnII*%lE^zegPO5+S$Yi4$T*6r^1eeNUX3fb`Xd#&W2(ItC#1AUspgr5MeyXg!kZ_^Ygh>9i-dHUiS0pu0 zUX~*fLt0x$Z*8nY#!HxwNtbRmH1NTdPf*$RP<_2!4>_lg?CogOoC!-TLDq|~4>6DP zImS8{)-akccHBf*<=l>B%xyztVygjzrYtrNxB>d12n+cJv9veSaav+*K+B7!FVv={ zxa#4xfbM2*D@`jJ6DJtiTfgW!2@LB$e|xSi{f|FRnXW!CKex=SJkTD<`=l$fsPPZs z<3goRsYeLc!N1hM_F(aI-Iz#dU<{X?_ZaKw1K=m>VU-DCCC}z4HGmpbbbHKgo_vB~ z@GF{)i18!o7G8UqOB zJ7z5L@E_A_XPU0f=`iJ9a!8M~1}!jZDXIS)ef3lE4e9&;CVaM|&rML~+_9MTquZ{G zbJv!Q1eEB$R#z8^^kDUl#qD{-c@`Csn*LMcjj!)5j;>8y{rl=E-dIGKQBOUO-fQ4GLHA$iO1e(HeTP6g~=mG(}uylb`nF?pgFI z!Xb5YweHNwcDgtl(L(W;&=Rq83DU|%ZZ*{(>ps}%iz4}Pd(t2S87+cHDu9Sapz00m zt5W)}obuo>Wv<&afDU$s^q9-c{9VWVSdyv-xP&;E1qi|c>!iuiHF%wo$YDV?zHGnIKO;VX2%;d{KpF^xVwUf5eCqYN97!t+YN z)m!))YIrPTOA$vHM4sW!`zI#i;?!qhQ$fRlQ+4z*nPzKCo2E1G%0N9LZ!F)+JI=9+AiZhL-%x}0

    +kH#+&2XJr!D5 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 bdm)=9u!)-q^=iBPOxKHaolwD3J|g5zegS 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

    ep}R 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�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%0D%As(If;si8Fx~>M46*f@iK&tf%nfz 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�XoE^R7ouFCyzNSOlLlZ)z7SF=O(O5pSy+>N-Kva2_MTeL*R{} zVm#m!%;DlpFvu0*X)b=DoP0-a%%bLO?fDIy6uru=7R%!rnAx8;W(DkJ4mO)g6y#j#*bc5*1l<22Zqzycv&=h`<86f{KgSFHX{)TU$VF9j-gSi=c zoHTDopIRdyeP$C_gmdcVyms%8zHU*L*avVhWE`m&y^)LaVf1EQ$`G`fnd1y?Ie%Gf z$csECqUe0gJ(l}xF#{hgjCW|jn4vSK3b&6#=BQ220Wam2gcxBm+GKj5rEewNzR47A z&DiMo-C3e5rq6z-Ir-h};Y&gPVZ~0A2rMtLK2|irINMZHX!dj2dkdDx^Sn{B031G4n>+OCvn z6Bl@zc+-nNkH9AgZ1;#a!1osVqD{XM7GDc6oO{2etv%Fgchlj)A&^K>eu4`iY+j?i zH+8>EyMY#DYiwGlk0GkadD@~((6QH7tq_Dc=97g=HYCU^^1cqtx>^UB`&UX@e(HBbclg1lce6DD1QD$$J$tN6Fp*=|8WNUih z`$sLtZRYgh(X{4`ru()#RA}|&FUOQoI|BVDhsFTjgMjGtP?$JX$A!AB)?Bk@3K+Y1 z!|^qUOH*JNkOis?5_41&TzSoLDxSPKhOFoVpwc|n zn9EXkeeA>&@|->37w2yz2z7gTvY6TkJ3dJL!G(ygikhiUA2uuomK6I3qtu}zRGz&7 zJcbGTMke`o+GXggg%yzHYs!0rsBc)B;h~KX7UM`zF^`*jAuSzYHGknUd@>o*;264z z0mvLsagf!!H*Mk%Pz{FgSZ(9a#@-G|MhV*U4kqFTBXE41a!v1A_(TIFH>@ymy%af{ zm9Oz&?JtRzLOB=0F2~#oi>}~P zXjO#Y3eT_nq*`ro=^pCw-lwj{scP93Pr3vq?HDU3cMLS7+>0tLx0D-QG|C#41=gX) z?eUw_R$vb-L^k8B4KnzdYU@)mxmMXpLG5X2sTd9xXmqkY!Le%kn|;6}Eb_x09a`rl zp>{`6gbHwVssnvmCLatsp+gFd>}}aLIk{Hza+TK}3=w$p z;ld_5S0m(|@PA_2#_=Pw+Jk-xyG0o-rMSVDYn4KYcInu>dwL+;LGtwuwEbA=3$jez zW7LyTG)Zr`yXcxv%C@U=8NfAN)VGnSEdBBOj-6t7vQzd{gG@%m_{tK^8XDRTW6hrF z^+oX1TdI=)vSMjvazy(SE-*UG1$Va=*B)o;#6izn@O^v@)}5m_zo=KLw2GwSAY#ka zBA&s4IQ1#NE^}1u2e9*MwPu$-4r;w!Isop~z5tAb4dAR>BfpcX6f9vgQJ>VUkPQyH zU3zM?I+8%`5LFl6J~7+T=7#{@U}iS8OfZqtzh*nUdn$5Hqp*5;|MYh$T$*%DPtTyF zAqsWyOar5Z;~t#v%5SwUnwf{vNou2d0-o2{6K!VE_;G_(oUYmWySt+*0$bk!?)$tyPlmlzF`QS_L6NBg$$Y=}Mv+D)=F{D|T_TrE zZu&L8io8x2EGzW>o}um32r7$8(jZN1&FUezr5j(F4WO8aQJQ7A!8qGO2#Agj^g!9+ z6ji{AqmyjpUS(RkBoZlqK}X%lX)kXw8a7{^gX$ zjE5`_W9J`r7lpt+A|qoI9602xH<6Ow~9BGXeM>KLc+RfoMcz(+qG#sw<;)Yq_^ri0B= zetDJoq!3y|8Dw^SBDN41UkCWg+v=8~s}@Gbaw;6N=X%@O^dx2Je^w?uYmMs}58&fwsxKFU?k={xjhUO&uX z`}&w%dLdHk>b=)m_PVw&)J}G=l=~(G_3v&1 zHyiwThFNot3b4gfYbk0Be;sdIk;*1gsixLs;LhKk$z^0_^a8y~Rr6oX28{PB)jRA? zX;HbO&4y?YMRjS|3$2B&0xb^vP`Dzj&uiZ-Kg^|BP11^hu=o!rfH4T0%zh!omOLAx z`5l;+b-&YTE1i>cHiE3ogUQE9dDeK8t;Y$Fw;>?u#*z`asPAdoo7tdKf-WhFa>q&& zNM8hASVEsx731mEdjBn-WdnJXEckd;0X$K~^&Jr5V$LMT)1uu;n8C78dG9Eq)EF#> z*a_>A(X4_XMzG-N!qrBd$t6t?TfXF-54B{|XSGhVl;DV&7uJ%Ba<3b9$vzF$N!)O} zfsdk|W#pU|HaZeZkKG$>V)UlLVX~YUgfb9L`4A9UwbIhwKhKwFih>cxxZkH(mQN$! zHGKTxzMCdx;kBr#i5ISn-h;yY_as*9tO$>2XmbO)^EA6W{477%p6glo719_c{Z>>! zXbpZ}UlZ_Gn6i4f3mz`XalRRGM5m(aWAGT}{`R}B82-M<-Y1-e`8XLH(*VBxioG4W z1e4H$2&%YT2!S{-p1c-@l|kTD0HK3V6t<0Ou%e}Nx$B-;p4V6CE(>K))U~K_l^)XN z1@)csp0Oz&#bvA>wupI6WvElZyZB1PB7!|>O(}w&z*iR#P zk8EFzm-|-3qL+P0Q-q0f2m+{M9pet1q&UqM>f?Cz9OM};P#xj5@Kf5D-j7X{nIv*t+k@xjW}umHDF>mMsm#{6gt0sqS@tM zv0Ra89~mxkT!o9NYp$Zxfwi-wl)ECbqvo1uO}#3)5S0&-6{8952Dp}XVz$0l>iC26 z0ml~HZnh|EYFGC_9>$*IpRiP>zM-oltO*QjyTUu&2`S)Y14D+0uEVW~i_Ntq%#qoBWX&vc zSoxYM9LBppTTAKYvC*7FG{B?W5goEfdx#r zHR*^N+DaO2NOXWU6ZAyf)!(d>1J^w32CGy+rxR5Y)6K4s?N0B-6{J#AbzgrZAswGR z7T^y#iTzO6+tE>A8ei(=-}{Z3l0NevpEy&?{85CaQ!vCrwjz=bPThG%8c8XYH{YeQ zr8U_30;cm81TtAJnbHFV(9RT*HHFth)BJ9(cmF}+_ZjXWIKi_wT zF>p|J(q4kDV*@{2GNJL0cYhHbbVaG`Fh5$)17{MBkPAjQDDQcb)^iUP=}T?WfpTu4 z#$JqSh*-qGxM%Ai=VusQ#Bc~!U-`Exap-bp%LhEV14naRjI;19rSW1n2W>uw+g?wh zXzWq9DKj>}!J~KiSgAi*9VPiBsLksHxnH8 zAS``)ZmX@>s&o6ZJ2R(T4pRi-1-J=|d1X9WSQ)U8-u@a~%?9R?;-PRtaXQw{Tm*@H zp)KovIj|J+oh*xI;rBW7(-P|mf=0!oJpis$cxND%D~M_F*=p{!(j%GYPUu_+nBhy8 zQEch!_kb&teX!IP$SRt+{Uq{sN{!Df`DQ<4N*F5f1J(D8d--iAHnhr+Z(P!~`*$xR z?aRdIunP*Ux@YX0!xKsqykFDM`ur3Y&r;8|YC^F7nni>RMrs!Vl4B6yFR7P`>8cvc z%3SY{6zHZI&euv2;Yd1}pqVia1n3Avk(jqFYdry02pmQ!eU=dK5|x(#$~_;-{u&|F zZ^6!a-D;6i;8%!j3-AUKDV+(7J)Gh-efNLK&bFblEWux`3diBe);b=UVg~IsCj8MN zDpKL!8{X z5fN2Yul3k)1MDfm*0_PHvZ?CkMir;u-Bv^wC!Ps4f_?TcPkV|g)rzYNI$9ZOO{7g! z!FuWcRV&9dPN}fwt-x@&jq(Iri@xJ#7gwrA0G*kK@Muot{(fX+k-S2+!q}smby8OK zkgM&H_=FYV;wmaPuoF)r`0Xt3?2+pzuifefjp$P@+)f@hjaBvg7X|?|q(${{><6;0dycx| z#|I4`XI7H2?8#@@+@Z88tMA#_q|6SKW#-HCn4Hg|UKL(Up`?>VJ4Lc$Ep^`-7YoH`T*y^Bjs_e zet`?(ZDA`pw>C%Q+P&*P!2{|>BJI&#NrKZ4H8S)-Xp_lsL_R~`zz<4kiTGYrrRlsT z-R`MO(d||kTZyqye(Mj8M$+yP8?$|U5P`&2X+!LRhlaeV1ltB)X*ccGYpfl;2t5;0 zcw6T^dWuE()9TqXkSaTOKMhtcf0AW$N%bmm`!AwtNgE|OO)q~~AQtJh>TQ)#9mhn_EL;orHvqUyuf8;sJfDI54k`VhL1s{ zigCMyXYu*$!&2K#J3t;BLKEjGcyN&B}-xTXP1&u{qyC9dO9-X)v| zvrm$(KH9nZfjg4yx^z$T+3?z`|NlclwT&R~HIM8YFqt z2@XD&il}>$pHU+&D~5abI!B2%n{+Y!*^V`}{qHacp}%5+xh(XJq(gv#TnIVJ^cJ)M z)PG~CS=qpT)fE6ROJmZb0*+20#)5RoVICLd=XF3F(2?G6o>esiqQL~hX)|~6zGq0@ zO8YJLQ=wq?yxxfp5M1l$jOUeKIo#PtPL$O#jIl9PLZsc+-^kYwRJsgabQU@=6<2G0 z+ppJ*6mNEfUE^KE%}0JZA6OEq3$2<`G>f|`{ zZ?bF{eN%B#a7zz*Z_}+w_Oe~<{e9;2niL?g+_XAs3R6l!b(SUtIqoIzM5PV8`biHm zRU!O_nibj^BgxlWBHKK$ca`NhT%zq#<#(}JLVQ+}tPs@Td_Id>NQHz_`|b*aIrzO5 zUld_mK}~@5Ft0x%kO-8YqcR9cHKw35zaT+9hEN2}uIG8NZ!#)|kA+kB4%WOJUOJ%8 zv|0m5=aSwx4-r=-rN+9ro_IOwl*o(W+8uEK^xjMoS6KLK!X!l2yh4OA_~^yqOmH_I z!2Ge|Yw|>Eb!&zt%s~Wz){k#r`0nJl$}KvVr5V0;w;KVC=1z64{$06`3%4|$Dau_y zLK6DZZa6@Sssna#Y1ZqO8o!S;YF{azS){IfQ8Dg?vH_k5{3royt+?;0_-iWu#_Sx6 zyU&E*V^sBatRBhsedu=6(%Mp8W*%GIITCIMi7LRsMf{kon77qZNHpGygN*d4#w@#x zLT4}U%aR$e-Be)%|Mo-lAGS(c*$#FSPr|cl2q%C>Q3HMd`U6z#SnoJk3dCT=5}MM* zS+haqncKqXF6$Tnv4MvARaBw*<-mmH1%1$ZI;<|>rRE-=Tsw!vr}@)8%_wYB!Aufh z?3s!fLn|O7r_M*(Ckxl1SNqVy@2z0h-oqm-B0o$P_5XA)q-<9S;ad{rFV#+4V6A~i z&-qxmN*EvuSAKq>D#9>z!5$;T_8T=fJpHOV*N@DLnt{9S;jx$*MePg^+M-6A4fNus z60+4-EZ*zTjY&`P#+N-U%@Cu$iT16~%@rI?9T6KV8mWP&-B690e`U@k=zTxlD9JFJ z0fh&xyzRfuS&*dy{NRk7RX$vj4r3%qS0zVXR`7Gy4kY3gV}Xy-##yH+M~0V1se-Cokocx2aFWl7N-k`+T7Oo{iS{^c408)D?lY5&=`&x$ zV0?SxC4qPAuEcQlj81D}Vdc*mup4X8Kfdpk_GINutupSJ!6i#@nCjKg$WO&co=Ug# zRUAzoc+L8SvQ9baFH|t7gci@{K699wGi3SZqI__vp!4~lluu7kxu~5M8jrfEgVfm* zmlfg8lxn-;#`g_HN&Rc5D=0)cTQ^SlS@9?{P0&6X8;Yx$h7@4NjbmYSoQUl=2(?CS zn@{^RqwLQDxfiQPVY-O?ucP-GX21?MgSFM13}XRdJSF}87F!3P*OWJjF>V<`sGUvu zE0DU4az1rX^0L?iv5-CcvAAC!?{z**QvamSphJ811x z{!*)JaT1#V9jxj>hX!o|J*x;b=`?)f#?Plv6Y+HS1D;%rm@hYzR{ahz-vgH?{tR6{ z80#$R*c)ri^2e(=e9X`iqOUYAryDr=0*TeYbCa1a*vR@SbWWFG;h99U-IT0sK1j7x z#+I9oh`(BUlF60c^b55Wb@07B;JMtBmRar+#HUWqEGbjY=~_cvr=O1aTZ`x?;RDzC zR;((g^|&CLIAPBY%}Hw2a|MIv;+pOE`tIl9&yJx(Dx}PA7&+d8x!pt4q(zFpmt4{4 zg-Jv{N}WGV=M-g0a@vzsb598zW0yAnHJZTl3~;dYV;@k+Vs)*fmcOkzC0JxF9`+2& zw@Md6{U^W*Nm`+d|CRx=q!M~}q0V8E*IfLdSX!E1g8l6?$d4mnI?qM~BxIoPFD{IZ zmllSXYCpzh-D-)i zn!4|{HI-8;+Pgqumy{F-j8Ax32{YG;Cl_1GTft+ww-W9D77@z2xi)@fzWj)`05;?! zo_bw1J`m-tgp{Uhn*VPu2@FhI2#k9R&Fr94f6OVorq)7kVfy}-Bur|?GhT1XaaV9j z=~{Uu7y+O7JIC1)ywRyD73Hn5;l z8p3CekXXQIgOQ6>fh!6z+H8iI6)7DN@GX*&NI2TuTRJLs4@ZFM^X?u^Uwy$nqi{&< z!taS-{1+AH)s&c}h&WP0!8UBRx64t5F1V*N&LBXA$ve=UaopLU=nO?+M)sQ&hqFCr z_32(67$fGHT=?Eb!?Xw*n_AH?lLSd))J!HJGFZZ^GiwOoaxEy2I;>PRvrz6CF1|vG zAnJki%RzRS#6Rj!ty{F(1m;$=Cj3W@16rbv0`Vt-nH5|%EQOI_#)D@U;y13duLpW0 zOzZr+u144lfR7e72?5p=*$F6MF(g17{|q#2__NDJox~~ykCTO(Af4L1a?x`PTH)ga z%(}(TDkH4?r=tM-nIjf+4jp*6TAC2X$A;+G*43o8J==xD9jc-}P#A4NQ4H@oD{ERj zSk3N)kjo$cEsnS`G{*R&T!qaBbMit3VUflgT`u@%vVXO*EepYQecAoi@=5zlj&}qO z7kDV)#Jv2Exz2zra0ih>i*=drG%V;xM2$|=yqjlt$mz<010W!@5i>+V^O2Y(XU<5B zOs{T>i>~JEq&;;pmXb*Ce6jTg;IP+Qx+L|*W8iOFgXNA9oSl^A9IV?fqoM}*s4&85 zAdKM+>cD#lycp_%^XZujAP3PpY!#f*EtqJs}rf(G_?%X2(POabE#;4!A~;hHlW0|vlndJC+!Q6roaMmtHQq2*(g); zZ=I_9T>3CCm&O?Y1sE}Ccj(hVl8bhY4nz#IWs;pGV=Iw%<#& zMa!d37LAtOP-sr~Zi1K3D&9a1fHr1m(09Wch0$NhZ;tPtumC=~MnCVNsao$5f{;~RO-Apiq^%?fqi#^^zZRH#QXROCOVJ8D>J$(x9uQO zv=%mPm!Jfbn%qsZbG$Kf`qd&f5Q#lCvx3T zS$!6C{M@6VTugg#E~Trl7maw*32X8}xU=Y`RyVx90c3?V4ancGgY`ojc@+5FmuzOf za4iwaO^FH50~U;4K>g#*hL9>XImowXn-wXKVSKh<|6szrE|CR{3w&9DsRIC3K{sZY zNkR! zqgz+O3p{f$W-R~5>b5XOTPLWL-Ul*shY55uV=)^BYe-_Eo)a&nEtg42H<~W0UC!*m8X28hm>^tKcgYtaG}OlfLrQ<=Hd{8C zP{%ncxrXBPdQV=#^n9mI$9HZ1i|8Mi7osK;TxxaTHwwS+k9-0@ETA(ca(=HK>gN_MRh%P`#+!k2qiBs=b`q zawTWx7DShiwOG|<|3|uQ8Zy>;-4dT!&5T`XBf%MEhGyUVmiQ#JqL3mJ;RS4-^X|bf zK2B0v_@zqJLthdRzye)XsORcx>|yrZO5;;*`HS=kHF4|5sP-CN9Pp$l~bJC1A8R>4;?9HT!D&^VADV^#Zf7`x5Fo~r5KWHN(2FWBG zC%JkMncrQML+qdoQY8W7CpWt_ub*?C+j5%17eer~lo_&KAHxf_WA9Fx3xa*(cy%P& zVPpv)4E@W(Jzh^bP(yQ6f&L*${Kxc6HBqzIhbp;oOc!WG z=tS&g*S){ptf#z0u)|A2^RnHD)G>c9C#oMk&i-)-TdMnW=Z%WeQx~qrU@71YGBYf8 z#%6r|lC=AEC1}>B_ig3LzG-)$mKX9}J*_zz<(406#L}Xt^2IqT{^Ar(Q67`eAw$D* zC6Y}IgfJYyT08Q3+XEIng_la9orZR(y%`_54~k9)J&vyUH9yV0zgr+ZA=FUH^m5qD zA@rSqYA6OB$T?d2Dva02^3$k&Bnp+IAgmAiM?&|S>%%oJ)^WJ}BEK=MRTA;wx3()R zAvErpd%cgVt*rKf1N3t0CUnQXP;eR29r;}qtQ@&}fstbrR@nClmL5%nF#lKy;Z~v> zZ1xt%rJhIwf0^;i7$IqLCW9hETwfW-xyJlgJ1B~bl12*aw;p3`SFC!fni4E5gdYh9 zE)?m8J=NSQlz0CAiX@lq>43YRI5=~2R@00r#kX~cjBQL`fbx*KV7+65vMTqP+~fDu zQg6oE>gLyUgq$q6Hje~7M0)KUe0!-6k{n9&s%R@G3r*!v_j<%?Vv9>a<2;w~3}js} zPFx|JDje4DhVEaW%xx1Ow^5IJw&Z;j--Q<{7OO~#^BElLfz^OH_eOC#4bbbF%xeE_ z!0&}!m(tc^@*5A*5QmRN9@ewif!#P_BKun+^M&tTZK%k9Ewy{&#E4nxvt+z#2`ae% z7s@5N2y=&cx45ON*d3u7=tqaz?mrzq80l+X9XW%~KE57tM3XUqTxME+JTldUU;_5- zccRqJ7`A~O!9az-HTolFNLLAZX7`Nf@0WhhQC{ornY#g5Bed{_Uviaz1VA%~tr$vo zfSs_Hm5$>^6^aX^9Bq~y%&Gjojt)odvH4~xzzjqOfWBTkI@zgDi+Kb6QUFPANhb^9 zR}{eu&fg^*!;MSlCiCQ)>}4U&C8V2N%j0R$ch4HgOAqOn{}+ER(26Gnl;wMIQAzg_ z9fLG6rijM!cLmPN4FIY#Nw!FIQ~nGvpz{Pn4!S-uOB7`V$R(j%MWMdw*ifstfN^&- zC7~lld5xj{>Df8PnOQ{Qg^7yKPgGFDoty2{cZF2P{j^IGh;CGB&E`8Cjd3GVx`MAn z^{TTq=jCDNrBN2>iIIFh*HjTIcvm+8-x1oYK{xklh*J@WR#@n1=fVGD0BmSkJY-b| z6%(P~3ynMJ_9yG`?^Gcs(>)7=t8ukf_p;!7prv3u(p8!gyBOhYCOb}AwO+JSJxS{L@kVG}Jm}`pm9mb#NH3BfysOBP$+=Vr9Aea!6(c*|g z5abn>8cIdW7=M=5eg9w_L1Cz%%yAq(Zo7=LVv2QDv440K1Re|og+#U}7G{t|b(^Sb z90u?hqGP%z3Zfgr`G3ge9lh{Nny<|cW%jDx03G0rrM)EFIM8jrdl7LV@;-c1^Cp0a zk)yVrQO?Np4*Ru-zAQ-{4#9V@-7u{fTc@pU+WNaO(}%-a<&GpGCuW7FlVcaf8PE^d z@KDdPT*Wp_4`6S#_$JE-c5IZX@r?;x*DhdpbAL62r93ti!k^Lx=d}9?rZvF7?nobL zb;Lra3*~wKlLw+fIrKNkBFOG}B9a|rFnB$4PLUXsG8zlZK)#<`P-C}(?9pvWU$BC8r{{1~^MjeSkl4dIfE^TDECw@uPSn9U|)sbMUAT8N9t!kf^#Tyg2f#15^% zxlGh$oOSllC#YF}JgW)sPCk)C>(Wx>VoF zJ5q)cQ&;^{3M*1w{_A!63V$`^*DeWLC9X`&rf2O^Tr(Wg^@Z`c&AD(0O+ZJ)r>b+g z>Fe)rj#U+6uD2b#DX4lnD>av@M-EL0Q38|dD|-leJNXwIKOy*!C%IX>!P#M~gYj54 zy_u#?$h!g7)gOz;PQm=4fo+Q+GKB!HcVhpolgf{>SgVNLS)#q%U&aG#+6BR7a6~L{ z(e1?Yy2L@nA7-wqKZr&|jb}V))X-72sxBAFDDS{Yn(-y( zwe}IpIKRGL7$r9LyH?Gb61Xas?1X*8&$dzU=Gwa$Ay~MypCr}1M!#)M1%XA}g!m$lhpAMccuDAR-Zk>iKUKOk z0nYO5s(MWZ#s(TG=mUPw;c_w=&GlqG<{K4O{C)a?WS)ME^FP6Z`&}OsJ?ClQN1Q-K z^I6(6blB4zyhFdXSY+Q(O^oza%sNEvEsZF8+Q#_kY&rnnPt|#!JsMDw4v{ zKeBa5{pqx%8@sH(iw{cGhM{^V*0$?|om7r;j8Jm9UM7S;F#*J8-d8+ct+htuPBa-fLg<~OD(W<1uyJ_TaX6*o&Q%qyW(vTi{M?SH?%iImdt&?%fCneLJY2+lHLG{0#E9Oow>JGr@&+&dZ0Wc#$A-Pt(jWjzejC7|^CdGc3f#hia^WQ4%H569+4R zEXvql#0pc{a=tVd|7PxColh(nxNwk{Dkdt+9U1wNDw)%HLIUIm4G$oyG+|ro zd|_-LS*S$Sl~;3SX@D1co!D)WkqbLo{+%u>&w%PH7FVO2RV5hXq-b>St;hT0KV`Pmqpji7-4K7PgWXg;3poE==mP|TTAW=dH9kaB& zlUZNihJifM>gU&l-izaFTd_I3e8lYQ$Erji{4 z`}Dt73JWQ_PY$1pUCSSYv}Csq9CRf@QF=vY7uGl^_WdDFLTLDMiyziT&OB`9E<6wm z;*fVjbSOg*=h{L!M|x4KJ|W~KLlgk^LG+|q^${5fRL!xyRhjfFY`9sHgOn(~2Oo)< zK&yM0KLZt?@)0e9=Htx_eS$P7{24VJ;C^oDjtQV8GGc>gg#IOp@U&K&PIT)cy|+pJVb~kS=wIb=_#H}q;& zyi+V4>ly$xRF<0gZh_kAhVE1Bfk}X5oF;Ihh|zu793Y$YVqRJ|-s0A~0YwB6cy=R(TldHPZZ8^Gw^B$*8CJk6R%^cB^ z6LZz{te;Yd%3gp8-rL(8g;!tzfN+QY{>hQK-SCOtMQvSaW287hwIOU6lB+p!h|bbf6o)hj zWVZF_rT-SBNlr;QwnwJbC)mR_rxbBJ@qlMZ(~s`xK|avH+;ebTTPw7L?(8MYe=LVm zinMiv%@|%X$UHI=A9`bVbFwtX-t+KJEy7b zXJ%Mq%jCYe7eZ>+a$CD20q)<_)CVJSM<=5 z>Q|^wuAV^p7QENyNY|gXHPPs)zHwNpgi4Z3t%Fjz`st05`H4^i%QzqcYzO8aTNJpr zI5Cuit``G$hBQKe+MY_l*FL##1-~O`N^}{%`n_8NTY8617(|WfNh+0puR;KSO~+af zVQLT6UNY)ZIxDm>lf}2SjSebpEx!zKiUxfl9*K?whom>@XGfup8?dH*VwFf63<;}y z9|5)1$Jn-Z3D|be*JnunMu`5^s-tnI3;}G|t1kcT0Zc$q=?^jm7-af*rlh%koVLkB zx9eb!^Q!ZalFLKn-mw8-hfXNpe=F^VdNC8}DO`6Cqh~U9)9u+Z0+Cvj?D z>Byg>Hzq0V^85*c=&alX$@JT{ms&SaHd_(oj+}O zzUe}4m`tv!ble2&gBr74at42nH&%YPN!MH`yi`c9{iubC$yC)GnS9Pd#$V(=Jj+&c z&a4$Qo7N|4`Rmd}rDk`WX&nHM9uti1pyT6gUj<6+ zni5823&d>^)R{|k?^?=pe%->jU+L7ZBW_<0;@gabA0{=0M3ArZ6WzEG<(eiz7w>(9 z^DcbN>v2ki|Nj?wq<+2EW3VYtt?_QiE9e@8>}*aE_TQ12JFY*3MXoViPkAY5KVqL6?u}+ zPB;R`6~H@O7(E7wAU{fyP$_1L7Kie74V1nP^E9yPC_CkhSHcqG(O@4zh4QTZ$u~~r z0?ersfyK57oERM*5G4%!+2nAyHEDjbtDi>z&)xD6$TGYD@49(?PtmeJgf>Mi>9qev zC%sx%ewuV3xhXJNUmy2H_S{BhfHHGKMuUb-7q; zXU77?ggsp87!ep^R>TOb6E>b=*HC3&tmCBSOD=kLUu_*g=`InSbd~H9;wd9|K32-` z0yX)g6577u=TVz|RI)vueQ3w)xSK~f2=%MYno!PiYML#?e~Q4)mTr4Ui2fPnP??9( zb}HPfyxfxN@T;ziLwSs4umgjgm7$CD+(>mhAn5Gvp3}wo8AyeavwgxE7oN2F9V$7j zARydbZc$ZQ?Iz#0P#AIQ&lgh|W|m2MJ=SuXsf|BNMmjGj-0DGUcICwz6*W_#QPuTls?Ti1mPUv@*-q~%9THky z!1_P%DT<9TgMX5vtrmmoYFxJ?0e#wGan2utF#aqqvoeo4d+K`xnX^p6C7i!P+%%3n z9edO*L*q=sd3Q28xNDm~~j^WIFiL96cb`bF8_ksnV}R3@S9_@XX(S2jiI2}G`C z0fUuD@fn4V>UDUfU?|>x80dMEO5lTaFM8gtZFtpGpr5t58{i~von-?WLQ%!6f{be; z^y+E1#TYwRxQ(->Da|e`cHUkhU}1%SjsZr$)4aO_rVci#$NVbM<64_N&S5}DL>0rr z(lQcbmTWy?S$|3L(&0iWD{%d2=$5s){_OvQGw^r2%r`~zqnP-M(?2~Fa_N9ylVEaC z>}Ll$3?ek)U}gbN3NH{H+rh_wou9!8w@ z^#3;o9AI2PgdHj!D&ketj8Pp@!V@7F~&m(#hoBH zI%nEGv_FCuO+f>ndt#4`c)Ic73noN#$XzqP>KSYpO@ue(>40nk%&I_W_zlm2^4%r4ur#iVB zAziuaqmnlv6JN~1*eTPyvb^9VB!|8aFfDjY*gcOX}8aBe(bX7#^!+HaN{QOY2>#aXqTpqQW2dL8vJmKc%`qYEU ziZS{zY7BDgMjENm+UV%4B@QFb96UOI^o80`;jevm=ylx$ta3L1hFF8B$ z0&x-2tobt3K(bVAo{Mp=Ys@c)p8hF!e_w99Prn98Qy?`>nF>o{Er8C7c|;@B9(X4Q z8bIIywcg6G9Q}+!X_8bymwFs-D+4#>Q1KZ2s#uk|9if%E7>{(+Ed%?Yl-9=OBGEP7 z-2!3_rV~!5zg308I_#8G5$D==WOAjihl6#wCU&MB*eh5jEkapup2Bk`wn+F1% zfI&)pL);K`*y`uWp-H>=2BEV)+^PXndTcv%a@2+PK z;yV@6G>j;oofSnRI)KJ+f;o{qmWmtL3$D*2_bvhp9&UnpO4fNZ_tln+Uk0`k!Jf5B z#!@pag|wIUAs$u=ut&Le?y(@zZ|=^gg+}qLO&)yl*A3UY691csFz721$O7_X;8+cW zXPSE-eUQtR*RLg#!SjBX-D7r>vVv65T0N(bwnJBOg`ccZhECb&KGSW9G5D$t{MQ|^ zxTKh$kcAr{9bSEhfSc=KHD;}A+9oSQn<@|d=}_v=n+gDfZM~2tPCBW809C{ZugQVd zE7F_ouoN$~yhw8JGSk}AQ_x^o3(&_jdcpwN|0O^0*i9@&2xNAVyLy!l&79wN$+FkO!MneSIVadj}CFca2)c+=5hT4fTW zwyCs`GRgg4{Qs}{lAa2B7#==;g=zg|pf{Z8n(QZQvWjJ1JO83CM6w}!Oi6_w&I1q( z-X8<3;OyfQ1D77=!JlPw-@5cwGFbfZAYy*i9!|-Hi{{(N5(O-Hg{D2J1`q^lecUQ7QK&iZv91rCB@dkzJO4D-pvWk7A^0-qI-N&Y4-9T{qJwiZ2Kc) zm*_vJSx;56SV@aJsj2~>GzDhz6Cm-bdp2pG`XuQ>mJB`R_E>dH8<^LsI;h~qo?L zh-E*0vM*0BO7a>f-U?OIkZMU&xvT@a&^<^|4!9fhIcq}RuF_d*Dm5RFcDWgMi@jG# z5ukHC>Sm|Qsf+4>!vBqJ?2oc({fSIp*Me=Ed&N?6q`B~)=#_A9{O}Pl@;ZCvuf*ekq>(&!H(AZ<6n00g40`8`TA1fzkj^W-{&Wsm(hf_3joh zgAey|H?4cRN_pJSVLoXpgkim^HyT}gG1=G>T&eZ$&a*>q0EBdVT!k+v5r?ed+GN$W zya>MeX);J%0vFO`)sSHq2-jKt^PoPyzpiWPtXPGAAgs4_{QZ>uI9$(znr&KuNXmbfNd75 zxWNXoSwm)@TNlU8s_Z8+wZbd0>FG@_50l_{gm(hfDt!otey6BI8YLUu8Abyf*|I++ zp$nx?AROO_n**)!wWH9+AcBL?k@hpRhhT@D4cmd5VbN|$(S7e^J9VKR$4`^i1@zXizF5Xy>b&&6Ds&cYCiaJYUpEv=;|ksT1~m5 z^ZCFwJ#R8ltfO_7m!FBIX;xOi*PB9|EZ9+3(QTJ&s?z-4AU#VbYFP{21S@|y%- zap1@5;-!HqM+$D{5VSxb4$tHPNofBL!<#5AqON+7;tWX2GNbjV>uE7cw>2NZ6MV`; zqDm1stlN`u0Q0|;c*1Vi#JrX6Y*o6QR%hQK)W6;x5URz@hVJDF=mT1Znx69M&&ji_ zcvfElSHTRRFt;pIP`M{JBX!3U6s=1&{VnD6B4kHU2lL3j;m*eO`k;p5{PIpC5yZfk zc)v1Tcpr>bOSP{gs;QRC=8Y__tvxXH*JMSKUTG{bm2J-zn{1!Xj;WiS5gwEQAFErW z;{!bkET%i2%`gyFxgMV}`2muA!-<~v`>|-Sjezb6S%m!PSgkvRyF-EkXbXftdPUO_ zQshfdcD<+ODn)Xu%~=;4HS9D$p)_AAuBgF>RS?`en@x^HVmcRI;fV6 zOe_E=+gY5U;4E40|9+l!60w1=boTsgivnZboP{6U;2PdY+u2#;cA1@L5izv`v^QnZ zKlO0`6#Tz1W}#$?D6iFSBtmxvO}07>HQ#>y2<-R(Q6#;CAqOAaN_Ru!VT)%K(M11zw_tzxQ?bw6~ zC{+xCBBR}7DRMUE=9InWxt+#%%Mw=6<}o|wHoPw%=xg8ntxWrPeMY-H0KjEZ<~>=!=3&H=d$&CHuvl(+Z#6Q ztBa-FFQ%$M66q=Nw415DX0v&<=5)-qzu}MYAUsa;`m|$sl2%|Z?fK$(iU}QMBMvtt zSdLl9J#~$m_;$@nq!v-pGodiO+-Vt}i(&$)!qZY4ZN?Gkfl)dW5F15~(SHABPRoa;CROylp2A?2{txP}bF=v3Cgc*HZslhN5Mv;Y#s#vI_N)46 z-+jQ*BpcO~+1?oR>N% z2g6o8sd59DWDo4a3fP@f!%AX%_D2<0f7neYt{npa`F>^@f`QAW+%n-g(0&EyXq*;Q zeQ4-cRfU^slEp=ulmaw&2SuQkKsad6@B3xHn>t&3-}M(*7&JIY-wDJb^63u+$?0L# ztQwC2atkIleN%`bFXV6}?6Aih5v0#aB^VFMU>71u(b`zE;)NVVE2+;uamY0th?|PE z{vnUx*@Ko|+QUIn?&-HNp^VP}0vL7{WXHeXu}fY3=g=gt^1BpK(%nLvnvrv-GLi3xu|5$`y2#JM+H7{y zA3ESGa)NB=0mmlI#QcVKQW3H!q$ewxGEpy8>tO{^5wQmbyZa?I)t>BLMWw7ZyK4Zo5TiG^to(G!a1|Rp`ih*p-)I%NAh_-KI{S9>c+-H7 zc2>F3U6GqHPu9)%;U=Q5e?o?)*8d}tfyw=AH!)h;X8sm+h(b2*b6=8_UFPkZz-} zZ~@t6x>P{rDttK*In7=~2tI-M{Y=>!B#J3*cSjV|1%ceX!A`YI1!@Ak?^E87`Lsfe z7on_SRQ-ef_LbFdCY9W5YQpj(_y=?+-n{Ik9S{LMDsb67WN$D9kkcM2pNGe z_ZQD3rb0l%OR-ZCTY62yBf) z6Te6#LqjI6HAV>CLZJBD%>w^U=66_J$=@Q5WOSr+VhOOehHTc8)KOLHqV-?PKrHGX zA9H}&VGW^H4p&5)+}t{N^L)>_lm8k}mSSCfbyC&aK%cAV&ZFEj_^7zDs+cU6sJ!%G z*l}1|#?4xVGOd((RcDS$S==b`PNcYP0&JGL2o2r`qDz#!A#R2|DYN!k;y{y@h{75w z`0$>GRM{y;)(z3PG!58o>l$(hMO(Z0n*@+G5l_T#-%KAbgFZpa|5MX>w6SaA24HG1tUSz~={jVZ+3~%)ASI zFSGNQgz*x-l)9egfrZ0-hT~Ai`*8DnaBm^I(m=b@1V+stcN%&;7};labvB%~cPIY7 z83=>U>D#JC=zy+qZF{q@M#Z~;cHFeV>0~JxEo9lfq-G;4w?3Jxo1^wSIs#+ul$4d2 zv85YzQ%`h~BI{E)*U|s$8j~@wvLJ~~^4o7(I_za`i(oj#WiP|MYEs&v17h1@rU9MJ6m;nJ%v>zk!#Y8 z*}t%@m~ejKM>p-_TK4T@?>{eoY zbcT4Q9TRT1t+;)og!BYc*^&5C^NisebOJL|AvU3urb@*TJxv7ab1@IXOT@o^O8*9E z0DR!h!-0QnM5?=L3)pbXndf3X8CHIz_-T`lBI2B~^XdczA1H8kybx_cg}n(935cQ+ zbh1g*HMplJS8uxLEJ5et_nxQ&q?jIFogJTnDUgn^@#jgNNZOta)fXU@i@~KQ;fCIsF{6`Nf zTHx&(La9wXc2hk!`A05qi-O&Ky*A4pTO7G35$~zP)24~~{~MKr88Oi$z&{*>dKhgi zGZyAGA>D4oFASCZL*l?C1W&&!b4m1z`s9G5)K4}yl5%mzUc<^7V{y=EVbxePm{mvF zOPpo@taXVSoYY}@wUcKdO%T_Jp^R`!1X)OeZbxi-xfzMMVl4m31%-g2NBuX(*@sfO zNXsHK`Wwnv*&k19V2OW)w{upsrbih)pzD|9N`tM1=?%-5Tbtp_dU`xJgP4|vX|NTg z+q})KiDIhymzf~ClF`SX9?4LHV`ygj)qO>IG|vheLlXdSiJStkHACBCmVgh`&wSRa zdbpOj!7uWqN5{Z#o7mNlVI#KkC^{eq4f*SMuLYH=B!>r@x7!mdX}FI6C(zO1x8AMJ zbG4ZHT5o&U3^R&Cq36ggT`z2eiUQ`_p60U9orkzV&RmbQBJal3vQ#l%1AA_3o$;3% zA|1KUqw}HrCCpreOR&EVf5cqqRQMf;@G(csGzdOnQ2aRC$jSDHzu8VNE$=WN%7d$~ za)rmL#=mJL!_Nqc?26a&%=wZIMs&RaXRqW`VwF2V+d*+PJ*?u9{2U zv@2;=r?XXW55foO&j&i-aR`nc)fHhomfxa`qi=#`q>K}s&+zuLU@31XB4!@!MJf;h zk-1G^qXEO`nHbOvqnQNwZTpR>Pp&>RN`NF;VtaN2{=!-Ul&z%oD9)4HDu>2YXN+v` z{S>oK4z1pvwmId)jpBZ|TUiCv$vVf9WZFOv{oX5dEKqoii~@*>q5VBTH$)2C2A{G> z^ggO~L-EG4XEP8OIwVp=j0Xs)=|k1!P9z`0|2$0_t&ktzvYd@)g3@6d*fgj|6ryb* zJa_C3F9dmgw?UnXDXAcB_=(G{%@Vb^+dgOe&<-!^|LG`l&HTxYWjvff&P8?8?T@ky zLCC0k09r<(jpP5*l%VY~5P)#klXN9)q7*Xy@)4EzT%SRfk)|Um;hR=&BV;+qrs*tX z=Rv7T19V#K+(Cog9lK39)C7Jxs2;7r$YCR3o2Fwb0~@v>m8I(t|0EAq%ig;4RhBO* zm|6FVp!alX%&(S3s$giEMdHI{afD}g5Gz>r%EQE`@4k0C<>}#1iaY(IO4q=phThzG z%JKb|!AOnAKEyM|`(oVqnL)JjvvEnf2B&;laR-_dK|dtgsKw7}hcd)i_6AwiSETlh zQ54TJ(NEIj1s~!}2WGx=wVU8#((XzR8iEMF1N^6zdY9R^u!o9_3acnRZGPUTV0eFV z0v@7K@(c4h;IR?2HyI8nH-!#Z*(B^GW7RWxU8W zGh>OuzKfBH6%=8vS^O0oRCTiFX`EACxeh*PtNY*%2F=U8*Ynq4${We317kk+6- zM1^g&d*ZnU5WnZe&{(2x(`_`@R0~)4NJv-XqExtNMQ)T5Qty3uc;tC~mp@d1k8Q~g z)deRsY85NjEw>98(onzb#l41e{I2G9!gZUQVL6eE5btPGUa3%&?^>>HZTPa2@H++m zhBuuw@sZQd3TVm3)>#t}hNPlbPXoIcYx0`IPS|d{GD@9tZW_v}cio&SKulOW#1|yG zis#rnQtCURV53`*3vK=-s=2V*y-VFuYm-$+-pEMq=hOy_p|&NcFBOJM+#jG*#B9uLOdK{!0#MVCodudbGHXJGrkRAhnCPptZtuu0K)jXtlv>FRRwzxPr9tOYbBM2F*6gN{|35!8RARY0B zPU6hVnxVNmWubR8q>)H^XVhBNyA!^Hvd&+wK>3C2BdBse9(b}Wg%P=!$}|6D&B&sf zFidIJn6CE*dyZAgfapE|xHSf7@2B}*5LjPP4O>d_=O)6s5dzQ$?z04KCa!TBWX zDr+nTxI{P3EFd7g+xtW2r@etgBR9n;2Zy^b)ULt}0&z;$c^F{HiX0(O65i8dOvOWH z9Yx08%AaMcF8ljtZz=ItaT&2{o2t@z94&R?`b>F?tyxX1sx%wA5zZm@h}2Vp@LqFd8IUHvG^ zE(3=QtQ0}kwiZCI6Rxy{<0eEP1TE4?lUFsP2Tm7$=P!3z?qJ3y4J#ECIi`Z^-|S@Q zy}(ZuL=Lh_#=Ip~_@&9G#&l&TvhIuJdhRT0uL_cK>Zv;Eo@#z##;oTJ)HMER9I7`o zj&gjrTN`)#Uyejf!|6lMLGP&7)|Pva?bTwtGNzFku)wA1pc_Gr??jQV85m@0ma-UN z7nXRDK{UWD20P8RS7CX^RXr<5#4F2PqK2P(RS($R8rf!tu-nW#p82 z5zxq!n~Mn(>|Oi*?V13YEgZtW!GRjsAoju34X~7qjb2F*jf(y2L(wd1K$I6U+%skF znAJKnIISP$4ui=;4lEB7i^SPVSefI5N}$wFS2jJWTUAGREFepjroNTQ5Fl8Q!GOSQ z_x`8%3lqzrG7_14=yGW^b*@LKC8JauO0$L=a@QL3W{sjKJ49BtqYyHwuux=MpV4Ia zWGL@ut)uE2#VcMf0%+4v>kn$x15%i9(##k-M~cbbW58NG6SWMac|Y)ht&PP{iO{e? zxki6A0QeayanUV=yq{*cn2XX*VKvLl{nW@a-kb*l#kwBqacr-&EnMJi-$RJ2GBG#+R=e+R6OO7E8LO0o_k(*qlH4FX3|ft0 z+fDUrzbxVZ$jnadN+b`~gHz#wTEHSURqzv16cAfh!+=)+3aI)5@Du!&;WGycs)%R0 zq2A;=b_JfTEnzEtaE!t-jgXT_s+BWa@m&R02O0FDRvQc8PYuc6JWbYIBqc#Gy12LD zV0T>5aPbvCqn0;tu$p}c7bq5uxN)V7Df4%;>G)hh0{{j?KuF@%6oc`M4Qp1UMl3c7 zxweVKE7iQ|US8&wR}{#*hv$k%r$jgdHkQHK_Q2?ZiUxumi6%NETa4B6Jp2Hj zl-B$Zo*XLUYgt|9_2#LUTWVKllK_ED@7-p2&ihKusN-BRf!(!4%S}R^ZQOU`4Nc|B>IYi3^@c4uT+enwYn-$TIv{(rO^;x z*w7*r@Ffpg%Bp*A>5&na2z^{|^@!zXEIxRi_(@-u4Or`Cp?5Sys z0aJk)IJUg5ZERX8)*{ZSi=~Ln{Tu*+Nq0sZAm`&4n2FxRyj6$$Gn%JZzUrVuxpHUR zZn>w@s|Gdj1{?Rkni~+r_J$>C`=R2Nq7ybJ>UWukDaiMBhX=67VL1Qn$h%26_erk= zIqddhr0P(JoCW&%G_Zz2<=<4(q*!60gzMZ-02DZUC}KE!E-;#hl66!7&XPr^E&>Sj zE3G4C;`z?)t8n6T%&_|SHI*RlupqmX`;SQU*AaHSEQhHbYAQDjF_vqhJLtSRak}SB zBfq>eZVp8;<0ZER(PwHRBmRib*J}7W;@(uc>_SzXgAr&Mm5Wt>d#4-r}bt&{lv7mCZf>y z6-_e28@6_PM-4RETGQc0Q^l*-NMcq6)#T)EJ9AK}qAs&}u=%L=_EYf|)LYiRG|nSV z?@jnQIpbN*9omt7LHMNOxbF=gog`Ht$+$iRSEndSx5NWUimz?2blV?tW4dIdQ6%Fn z(!0(7Kk*_cGXM%%S8tJq_RDx=_q&@R1fWQ(<5*qaGIEeESrNsxdKz*shwINc)CD*Y=Flse{2n!EurYm^f|&L zm5X7~w9^U2jxH`O24_0$Do^n@VrQh=g)w9FnRcVji!0li7mmJ#77SsLHUeY91G}NK zU9BcbFlYx9%eWURC~p~?_}=(fP1Dj_MedB2}Dwj*AF zzYLDW8xc@BgLQ~?M4o+Sn3<6$>7g!zDPa{Wk$)nRszC@Q~+6216g=l67 zA~uEYBj>MWxcy$6u_yNu?S1aYZsw$luzwteU>V`Mx!D@!)til4W*x#YEgZ}jODe_E zz?BYV8G%nrb5^yvL6|LCPYS5kRQY(3btG{G2sE^Aj?^QMUlx0~fNM+5rZZY-c+clY z5}uPby1qMuaP+Fe&==h?XgD&#f@vWshpk}yr9TE%w{eM2u79<*g0)9GGbZQ23%@Ex z`uJW28tcH$6g3GeP7z4R zydV?2nU08Ojq@DDx+W)|zE~7#H7*&Lbo*&!5uC?+Z^GbWOC?CMTr8E5A4fn-tGUy_ zJ*a!5qSRE$KX)HVwibjI>1v3WzbXAtq+)|3Zbi$=j$5W!aN|$P47L$PI~eX_Ez5Jk zfYwPqX;Rrdx)|Lw1v_2%kGg`$Vs>RAyY@HA{mwAEl5vAxc%Aa;aoUI>G0*2RR6SPE zanyZ364@ZZtZDhA)MIX%!jDxa50>IANU34chJT-9tRN*I3}TNpra@OoO}1P${ehjS z`5OMbzZ#dXVj8+EE`N0x)0dqD9#DQLxXxwC43i+C^dV9;atV8B&#rW&a*?TT*ySOQ zrvAU_ro^+e;|Zl*j56QMI-JOi5q5Hrb#a*X#e={J5CDD@Xu-3ltMp{l@M!BHv4t}Q z56m_FqlQ`OwcyCp!_N5Gn5H_yNyd|m%-VITUs#|GejW6^EU!??$Qg)3G?zHaglzvB z--XqG!Bbfen>k{3!B@J`8WZ@M8-ZtuY<2n(Z<0-e;Gi7rH;F^OK)v&Ak0`n)m~y|q#A9r+ClS)pH?LFn_n7q z#?meC_c7F&12}V7WGsuW(2}7Jt~=SHq@i$(6SpKW6G^^|EfoW;Tgq~|b#1do3m4Kh z3XmOg>YyncyJGVcJ)MWMjuv!e=}seND)_7W7epX1h-4{Nhz@QM)O(an(iI(Ree(@m zyJN9QJ?-9kf}@`}^nMD1v9 z5iR5|{Q9u9f%WC?do?Bw69|zJuq8G82k>e?+2fDc+vn_=oQfUO{vvoNPEdTFzfYB( zuC&MKO6V0(8Px3@>=M?qa)`+v@V{sAUufrk3ge&OJ_DLL;aprtwLoE;Wv zldOe!bE9I*97(l?1r{cpGIB9=mCw>v_E3QYsDSMKTdG9_c{a*Nj5BR1yF*!3>+`jB z`BvOUAmV%yipah3qAW9Y3)gB{N?Liv8nX~Jmyz}t4)guoG-%|;^cK2awK1}e+}T%r zUN`RR>O0oliT+1vjPKqxLN&mDNeT`fZEiUATQ`3QpPp*$t~iqt3OpgZTn);erwq|X z+1oP%(4e>!i%;ILw6DZ56Ti)mxU?{&Pu`h6?^89|JjKE{`8`h-#e+cBp)IidJX4iI z)EFq*?!y^JS-zm0-VRuWxW2Soq*!?r3@i=P9Qq+kMC-t^DGu@)l$-1b3+$G9t?O74 zimYauygJH92p<-i!-9|A!m^FGZPd6AK=LmQ<~_C=5SXy+S8v}3M&Q8|`$eWT3k?iK zej~T$({rPbx%VK#&6V%at?TDoU!RzPOx6L57EJX*5RSnA^gLz{ItVS1{%Ji|NsHhl z1u@ca4%aP3!xm8OPdlm)GpMnhDPW~cxCA$IB73I0kbi&GMEz26JPqtWzr||T-)8C{ z2-^;c51vcuQrxq)@tYw(eJvUqRbKOVVf=xd8q0Bmb1$5rXgS`%dH=UyVPAaJaO9hJjKPo1s@G$C}Ana z?eZIQeHp9uZF^{!3tlT91@hqY!?5gT^BS~=R5F&*&sCvuv%jdcwlr0mzyJen&Gf`A z^(m}fidVwhUcbWU-XE+dc3ozdFQK&TnrR`BKpXA>-VBtd*N2^%=bEq-aGAKJ}l1G`-?q&TEPF7%R^Ja0Ibt6EvKXpl07?BOSfMQTFp5B@#;9yB0K~M9H*yuZC zY#aYEJ<>f%p~k&{hW63}q#w4=KK1Bi@=ASa6>ZYD^Q)byE0>6(=M0}bd^2h=9DPKi z_=<0H(434#?DpWa*UF)~c~-itU|gP%&Sp&4~&;Jaj8}E|hV;a)Bi>$b5X(2|WQdFMQioIY*vl{MRMSpME^D zHvx8+pFZKjA!719vN(0r*7nX;Yd7DP91<^xO-H=;?Pq=@{kDo1Z~C6cEtd{OQPQwq zgoK`+Ph{`xY}Bw}8dpedEj}7;k$x*VRdNQ*2RfxsG7IHYIXZi!&CuFEmqH94TFQEyqgW(1&yOY3J;+sjVySCDsxl;QBV$$T7g zNE!i<4_zm4y?6T<(0<{A81b92C(~$HkgQ@3@}SSLl++8c$bx_~f}rVswPAp$auSZP z5msA9`}ak?38S36)J5%)mT5Q==(VhH2S;4?4;zV*I`H8L%yV9){si7IkQWrh8qC8& zC<>z(!4}v(dW4#ML@-p;i%&x~6I>xYeyvt;LnD{>1O{8`)1 zQv<(mhfY~;(AZ`sm+2h6B-MlfV0v}{Ze(8-Go{It;LX;5LjFmpd_3Qli5*>kWzhqC z>xW(!f&;k&4@t3`Wyt+KSF1&7zlN>C74B&V?KIx6pTg=Rc~?xV2#b^Kxb07?0D5}U zmWiV^M(6Wibok)1aqOQC%oY4OLeC)JbaLAW2$?sen!P_k;6?&mv1xt!^M-* zsH1}ZU{_?sCTM7-4w*|k80ZoNkwZ`Txvx@(o+}6=3r(g-x1|WIt^ugL%Cf!boM8_b z2m5-RGh4Aya1V=zYw|^NOBP=g7S}gc!}}vmU=CDR=^Z~M(8e?OnTcgW5-bPXOU62P z>x3TQLzG*W8cqsv1t#-WKq~ejizJQ9ize>)psSfmGU+I^9agduC(zXs7CS; za>!?HqR0@^|Z-S)g(CcPe{n&*32;@1Qg6C)rw*%7k`|F0a0x zi0AovwfzE>Flj2{191x+JD2-ED`t?BY|?Qfj4v6a7e_lm`pR8^heT{$y1R= zxR4rpQdq8wBcsQ(MS$%q%~nO?J-0;S^C^bzW7-jMZK{ML6V~E)>IWCCyn(|#FTx1X zN2xBaL%0g2zOkdmx)`PG;@bKVWMH*fv#hyop&F~*g2mHN5YKk|#=KDZ13j9H8f&hp zOYhPC5$dM^e<_24?Y0(9?865j48Kyc-&p)Tv-}gVa(~ym!a0RhE?L%QQ{?Vm3xBk$ zDxYw=EE<1GsP8cYw7Kdg|1!eqJ?oJk6BR@ybBdnw%rnGIBwFXvQMT|xqnjb+>A@Jrqy-dAlzRrwXSzp=69DZKY`=02 ztIRBUz=BYxz-^@7%|*gkn1T(5ln}2;D()t3G5Q|`^Qe#x|xo5Pbn)`oNGG;KEa60}6oaXXYR8T{(zh!MLPlhk>qGO_UoXd?)B~ zK&D&W4HL3`vbd?$vre=bA0HMQn-(=L|LF)~fdj)Cnynt(y5*6ue_4;0CRwkYP0}S7 zXxZjEC+Bo^!ZwN+aBC6b_I=sr*htFiZuuVy8*syd;XA8eXq^jHctIsVx{45-;<93k z`aYF6T?+Z}83C=;*28aa#)zn}-?2mJ`_aI>BS2R?$q%#_5w7krw=pRNTb+)_;A&+o zB_o>1e(+zfGo_p2&d|Uh-SYEM%hq905HoZ6#qnfRqQyfQRBlGU9S+1!FP;?@k z7%j8~QH^ohm9=HPwvgg{_tBW2X^fi?lKA>WkGb4PPl3Lpoio@8>@&*EFmu zWsBnq26=~9a2qLeUVyY@U9?;)&Up{J{yExjiD%!9gZfIqG^MxF(a5RBIkN8p8g1GZ z5e?U%54dNj3QIac(3HaO)D6fwx@5p#f)|eGgVT*^@IA$5y^(@~q>$C^aU48fN(5~d zKE)7d8*$e`MZZE&u?+p(cwySmo_r8itfm*5hLic~%uXCEl8hf0+vfNt7;J~uIai@f z29wzdyccPgSKw2ELT8vxAG^97Om)Be1GHud%%mWx2Gn!T zaaM#?V}Te^e7MSRF5X(>cOfX)|bHdsy zw( zaiB4FJ)ysIYz)Dt!eq%CX0hffkl9b~=-FN+eSVE&ITsTzL*Ae`iwF z*Jlt|n2n^a#m#a3(y{!x@_Gm}Cg90`hXk*;;?~>SENR#cL3vdJFIBVHRicS*@$dZr zmZhPav11#j2uIGfGJLuZB^GC}?Hd5)s?Q3V3TWZ-o(unE24R|DG zo?m|l(6Ydfpy>q`fN$XxT+S>!UVFpo1S9DebIXG)6$ z&}AQ}mN&%T`tTdPErmdSyp zK~WR~8k1ilULa99o~RJi5sR7AmCp37Cp$G7fXLa$IM@{fa9-V2q>bnV|au!0wu)^2&NuUc>lN<*kmqa`|0hvgBxvRGwVxG z8I25WWNvky+IVzpUa^ba%6viS*1RnOWoR^OQN#0ayL%G8O*f`7_uYyf9(`5S%z$5= z21a5mSJT^rey95xJnteJF}mk4X+Yn+Wi}q7&4#X(bOC3ZOosK1(i~%qJSFWXtOX%p<`n$Lx<-{?@!mY;ofX#lBBv zLC}OodWMi&>qoJMFwIU8Q-86BY)d>BL~yCSoMCJ({Q%oh_%R1hsq~95-gy=yuWJHP z)3!9pAH80X-LMQ$ht^8Yp$zskn*USPDbOAlco^-aeJ{*dM(hh+rb*IC13n>kaFqot znw;aW_r}FIKlrXNT?W-WSMw>t%dFmD+E&gw{(klsNbMbWR!I&H7~<49{CFDiDKSz% zaQKG1jpiDrH=$Jh1Bg?n=@2DfC+oqQ*gp2>o~n-7jL&%FT;}>SEX^204lI2iIGD^Z z;4NIG324Y>TP%kLIM5(3ek5paztt?#E#;b2$y|0q9+*A|r83!;dkV+Pk~f&(3%MY1 zEY7PIVJ~VeIT9h2-mw8(diFuFR5*4TgJ~u9p5319qc+Gg|1#IVMkoZ1@e`V1UQ`&X zv#?(^ikX(&-m5~v%pfrsDPpw3x?!AWsSpf~G=7oyRnAYYI~XvOxP&3T{E;53BfvS( ze-x4I&MYyrbchXMr4{c#@yGR!c$TM-v-rwVXDbKly4NBKRF_*eZWa=8a~wQ$Y7KAN zECElDWef3|@fVpL;Lc~jq&i1V8@{fohl@4Wr`qs<{~yeAlNjJ6a(~1>NhASR<4LR=%_6@5DAT5T-4xGv&eb~P#CALLD zb_H|7XZ9hmvi zPc~2S`%`h=IE%aFH(&_2>!-Z*q&{OTUD2tjw;CU4qyo5Sn7CTSA%EvUzy=?V?}+sU z5QSh$5~S{3HGGWAL|9=GRs&CZoTAP_5unC5Y_h{YzS4$Nt-==f_Q{*O@8NQS(pOF2 zheaFcu!bFGekuvp7YI&a`yUxd^E$Q{SO*zJG&-T6Qmvi;Y@HDygc6sConxUxm*D;O zJzvw9r>pPeXM{jAZ`8d7`ki?$*YN0anJMs?!mKAl8?Ab*GzOuQaqP0?-rhV#g;nc+ zP9xaDeYr9a~G*9f-G_)%1WCVzp1z<=_sQw$|Oa41cw`7R+~fS z+n|Og^S<)K*DP+5pcGx);wB)l+S7#7C^c51u2F$|d3e=X-?As_u>!Cs5G*S3UEv>{ zderNQh@)HC;|?SzAOZu$H-yi@Ivl2jB)4zp?;&;DkWj*0V^o7xBajJGadnL*qiMuy z%9#*6+%7E?(0XT4vFqxttlRLBUt1tUmygO<$l%^VIEU-aYM%tC*`(-)F^WrR&^LX> zjk#RrtqpSAO4NOO*Qs7~cg9e*RJYwPFlh{q6P6L@Zh;4z!u~6fR-)zeozqAM!GQDe zFWiHc9G^7-wU!i_y&}ruGyogi1e04_r-(9`uorOQe4wk5zp0CDj!A$7bUu4&+Ms0( zQ~hDgbrTM@T7D#v>8CZ+i#L-yWbuu56Kt!S-ITN`ydYHVR%Yv`pes%2E>ZX z!A#$NSNy*N~fINliP4M0Z}VTb9#5DX@evye`}_wr=x^KGqi*z}|g_bS{T zqdy{ISq${q8`Hle+Q3ECMn->av2`n^Si>WlR4GwxU##8lCdub&$gNUMqsgxL z)HykkQJ{Fp<4DFfVdwSqWaRyGp;hnvS)$FQnN7z5GX2q|zdEI@sH8kwqU8PET49Bz zQ+9IdU@=Y@h6GF3>;Rz`W`gT0REz~2OUO!1YjWi%l(&9n>c!XnDHMQ zf07GG<05yT+y$9`H1VALL(3EH6v$*K9%f70_t=AqyIDV+OYqn!pV4!;rr@6}8ty1C zBNxgXd+=pSR20z;?Fw0FO!Xg9J5|F3Hnvr>nV)!Nxf~>Qt=U|*L?+fm05x+8R1N!p zvHjj{`Yw1G6^;m39;ACf9#jDo4tZ!ozTm#?_Wwvqepc7%G;gJtJbz3r#N*XyHa zT)lI#fsVL`=(^67=V~_pEpwY#4c;xuMr7VPBKom`+~W9ToXfK|GB6`{`d@>+_quS< ziCNk}w!g9@VywLvs(Tkk>RoaV4{kGSCoC(m<#;UPcCyp{>y^pY zY9#qc8VQN(bF{b0+whj$*5|^dH!(r=a@5lMQ+Uw_zK+H~CT-Ahc{&gI09U@jGbwU4 z5t4}ptfQp`Hfc8G3U!6OtMON4LY=Cb8=+XTpM2Zc=uT=F^4G%&l8(oATwPGz^}&Uf*iKOkZrTPB_1NP>V-VL=#!Mzj0txcR-@ zy(^|s=%yZPGG)7pUps1hsEVI)V%jZutsY~{4THz;~D9v0tBV=hKV(|QTp zdonZXZSc-Kg>PN!Rt*_7CISzFp8R;m4e*2NMIKRa8y!tal5ImNJJZylHm8Y#I~>V9 zJ~zX*526fn;p!<0fRBMfr?t7{$ZxKZ5(23Q<_T`Eh|=t8J7OiV;4QiLgG|xGff`Zs z1CEbNHdwoqX|bg!;Q5+jUObkS4xNAs+2#d&e8pNH1KYW@3|>3jRe*;bJ}-sX(QgKm zh`HPs!1Qn%e1MptzTh(B&+rMW#loHW(S%mVAk8zv)$KC%xD8uYLE%omA z#k+2Jap&rWgH3OVLe>7iOxmU=%P#Bb_TweYsg0+Du7zGIq`48F4O~&X21%A%QS5c8 zt4+^J5!GML6%XMo3N2@orQo{V-?~dKypPBcNAPSVJOO?iEdvR37QK;~Kt!;?vI%tP z>Wx(JL;%axRn_$wq^TunNtmUI@w(xG>=|+# z_#|(_F!f{=+p{q8_SydR*lnE6?*Pye+KKNFl~7PvO%t?n821mg*Bdq8i%aPFs;DJb zJqr|z&nFlf3bt-%yqtVojc<8#!h>dLHK`dMkOENctz7YzGhAw32G}S z25Y>|YS|LVPnQC8O++V6&kmP{X~=5gZzzA~{=9zVJJ?912hNxQnj+~|x3xt+L=z-! zUj5V!O?xX{vgOI#90#Hjp5Se&@BX}aAD^OXw|mcYh3z+wR8BO&`g6dyb1@*5@NmF# zB4dD8I1;wEqou86zyO16zruBvtN(EL@|uP7##o5mz39F<$)zHiwy02>$N%@uJ#t7x zD!|?sO|$XewkYD|-@H5D;E2;*1RK?^gIF-YuCgEV4QLRhR*W=M;y|CcDIy^?BE_7u|?E)rYvrhjj9e_o<40KhZMV;AuRuA2OT9 z!(Vxs{z&qL&Niz1IDsQ$Z_l>1-$y)YeVw5ExM)M#>X$t3M|LMJ_D|aJ)Os%>y+}n1 zsu_^e<84S*?h}~+wPkS!rQF@$k@3{32ZB{7_vqs(;`eGTWJQmXgiQ2SI)(`{7rU`W+<5U~|gbifJt0&4eu}|fyk|xto zc{JFz6cKC5pxzcc?h*SIUPs-)DwcLx6~W^N0RqazH_f#P2Yc-Eq`ya1&5yh*h@hw3 zi(nr(mpCd+r`I7bvrFASt3__O?~UzW=Eq0K*^~ z8KCb|hp9Z{Q{j=oYtK{?wK{G0>Lz}Hc-17LtN5LL6D5GnGtcTgvwZW!m^d-Jwg=Sf zUqDuoeiPtkt1W)C<~d>F+aEVsy9!W{dYaqN7)yJGof+DHnF%mxcezQk%i{3TMSe2LaBqBYjxtpH_sqzU)5qWn92-0L_4z)eD7gt`G?C9+5%)9xx%RIaAVF%bXI zVbjQz-?foCUk@`j(Ah4JRK}VYr|pk@iF~(b3NlV@+sVAWQ(y#PEGhF2G<)5RJA@p4kG$dz``?%Da$kbM#6 zt=lH;57Hg&%1EQXAZj`P$Qr;Q(uG4!U|G(nZIfO#Q!ZRE4U=bU^3K3Ai0I zA>wc&Vt1XI@vMUC_NTe&-Y4oVw$fNsa;HJHU`)Cv9QOeNi^3XY}PCQ?`V!=k(%9{Q_cawq6TL z*{uW*c%%2)v}5(%tx%lxq_JLx<~wAxhRu~e289@{77}|k=aIv;O;pyR7rAVGkl5Nx zxx)1wZ0=UKuM6abdMEpG*y+J9;)yt=@krg4x7%-x$52XRubBAp72SU#+XnPO_B{YO z0=J&cJI*lVvz69!HDJ7Ki`^= zi`oZY1lMNk}*5IsL25={*IUVMUgmWS5``dyrV(qE_N!p7QPQG88S!u z@OM2ZiC8W?kBqVoxY}Z@$Z92o#oSz*X!$oc;UG0z!y8n*1`ivC)qlQFNkOs0 zysK^YLX?e79BJEQhFl_667vSf+hWfJxOgV9v)>WK>j=_;!jG4ZUmp8wF2AF!;kP)h zP97U?XN+=VWN&F-N4FSHY6r}RCY2iT_)R#Vr0qhTbL(WNbz z0T)~A>cPQrpPsfx9w)!_^{cw6EBg-y1crIRisgJBW;th zsyR>S=2{Vz?xYhbc_DyPx7ZHeqPz!for}NBfIMiF+ zQpR5+v(ZnMC?YXSGrnfThDZ*=ZR^==?p`(o(1sN2Yy@7fx=kT^mY zWHI)5t4aD$l{d~6owe)~tf}dljqz6~X3v2C8;DiI7&F;4E`aG1BDroBqb5@ba)X>g zE$EED76vqmbp*Mz-`b)3cz=~32HVOD>?B$tjeuGK!9dq~OF+jWi5>w}FgjbIbu9~d&qWSa6jj4=uYu)zQ~NJFkZ=nX zrB~o=DY}BXcB!|}92CTO62m*>Jg+1x6@b9>kCn&SV%iRJ)!XXc+8kHHpA$m3kQAR8 zX$JKP<3Dx|9tWYkn`5M6{)~NHtrrgsV`wF(*8OwIwwN2Ln{5L54WVCCKemL~0^*0h zN`#b3fs`E9nNai~IZ+eZg!6%Y<3FW};xhSP#d1sHk&0y0SDXs>Rl&z~NxJNDMQibP znjTE#r*oSZ7}s}lXeuALajPG9u?K*H-Vqp!nQ?QH>21`96(eq*6l}r+h_spSnE$tt znp%ryi_7RaFsAtO9B)QO=vrfR_wf{67~Fg9x!yY1?jtu?X<*E#OwWnq(2TP*>7a4v z6(vGE)z*U?`mJXEJ^)j+b3+-8NLOm?O;B zF&~dtNiN2|0TnnRS|+R5TTwH#IJel8IQH^?nWB9!r}ul1JkmEM=7b$l;*tq8gomxF z@*#$hx^o51b3vo?UNTFqj+|ZyBK3(}6)YuA9bgl=Em<}istfKPY5Kp6BEVn#=%biE zs#lc-t z6RfZp-R)&WJ>_xDXV;hIcCAl!d{2dNaSXyMxngo4wPjkR(!PCwI^@N{-yaueVw`w^ z?SUDxihgcJj;Tbnt*YRXzQUksGud|c!g{@^plq{3EuBm$EaMg5w5B?sR+6QfVy*>@ zYtRs3RjFS9=Ng-r3Pv-25HH8-`rvb`N}Nz*Dw#V@m_!`*LimF>x)OUic9U0Mrp}Gj ziSLBNei)393h!1+>f+C|yav=X_-Xc*EDU$|Q*gXT!#?Ed?afz#`ohZj(?+lj@q8n1 zDxVqfaeCMhNX@F=x605N=2GPCOMjvN5VBwb`tX3WVr33#@`}kayvLia0MHdULSt#> zhc3-j-@C#?Ml9b01WJV(6J9_QGg;S?8ULFNQ=oEoA5T!WEgufS(D2efLcjxh#)DVo zNu8=y7tsp7X&=FsojW;2KZdtJ+nB-^)5MuQB}VQO8Am0j`_EB<Rsav)cofVVQ z!yo6A{>yXc@vQ#j({5ijv!Bmd5lsE;uzWdtx_3W~P@XIMmyO`y7y};EmbT7A=Oe2m zBD5juEjs=YMO%xF%OxxNkro}r)8I+O%Ir|V_rY-T!JT6p74&pGXlK+#`RX^}yipWX zD9Puc=g6!5y**g!BhOGMlwHT~**SkI%Nc@9^$9HEv2@My@m8Ic6wjl_$`yQC};i*apw!=TOzHP)mVMTk?r)`PVYk^&L$g95v5cUa!A;CiPuw0g^<_N-hYuy` zvzVoMr;o=Xy)yc>kPJ-lmH5YV&x@>0$P(%S5}LH;`KS|EXX0rU@4ci{%p}s zl2RWG*+uQAC%vYav%s#tMw~{8SVy(#^c3{ai}pDFKBKh5xrJ4(IYQm`-che|Lq^w$ zCA`rd050Bu$nu;G8}<^0kVd(_{TZD@AZl9W2OH+c%xk?FOK1b*3-(xN)2Kq)I*0bl zo83zB9EErJU1eGIGt#dafFuVdHMa4dC-%)TN3c;c0Zb@1HHS`Pyj;LZ<&wQ4hk*10 zhsbsBTc3Q77&Uyc&O0ONZ`o3t<=j27XmLaw`ZQhF5`1?(E+Za zo^K1fc~wx+F6sg|=6zYGD68|kz=Q|uRRr)6V<(Wo1$8#k&LbO{^4L4yD2)ioGfNa+ zNNztjAV>@-?Hv9ZkwP-Z3PeD4dmMG~mztin~XA>tR$geN#_p$7UyMt@VQRtDyVb%bJK?q?nu zEx9g}puBF6b#(}C4E5!^q%nxJczQ^ml9ibbr;B!evP1~(So8(KOHJ%5&1BWRnTax- zOIV8I8sSg899>CR(HlvkG_^{#t8^^*80!vE?m_uWN}0;amwJQL(I4RN8D#kOV*zEW zN3!6$xg+_p(0%CEtG2-GAHWOct#@4RZbPv<W9;xZk~=TQh7H zLC_>B-@^ocY0$;rXon{$8%nBQVlwo&d7~n-Ql>|hhLepNOabo}g&`GMM<-4}E;Z22 zb*Mo&DlR*=a*HIf0UH@h_sL4Tt$ z^?o?zK9fD@7Fq!GQRb0uPqB7c=M6GL+TN>-27v>ThS7tAL6Fv|Pr<4K{S8$hoTH4d zz8yQl2gEr5Sm%bR3y}o}Ew7zj)PJM-z8bPZ2`9KT1`dq!QTW;5OjBhlsP}5kY|32# zD-6Gy+X2vGt9db@|C#qx`LTGyaccI8DLtmJNrzr%p>yJ_@BiBF%HhQun!elh(h+l& z`sW2GESVK#f>0ggt2G(iRStzhU^09B3HZ{EaUX@2b08S-@Z`5;vxK&!`Q^SsJ;0Z{ zbQ_iCLQTVp-H1~ckPbNG%-ttE^{k|ry%0+3%aTBLm7?Cu@h(ZtHVLla404z4kwCec z9%l)^w#n_}bAY0#`Fowd(jLmkR?%X+Q5K0rUq|Ir?ej92Q`l)2;4>&qmn6;~bJxBl zgW>#keJ0gorpod}39B4h%~dy_`Rv%B^Czl-bce8F#pn&dxPv?Ce`n2Nrf`0k--9&Z z5|0WB`4haF$-t8avn$(c_0Yf1b=)537*(Jp>BWp}trwCE!A#B4VM**5<(C{{vmj9I z>|^xcE+5OD6aG;k3LjrQOJio}RYOT&h#K$g8$!;8n>8U{avGNfqtd;(y8U#u>GXXY zQ>Uy>EAg41hb03TIJyO4{9|kymy;ZQ!*IU#lq0>~e>!~&KMQo+qg=j82XPga!d+ptS&dEpQ=kp4CoSa4ry;+wb}kP<;YLEs zD%#g!N^oW&`*mzw_JcBCzMLzK`5DTG0oj(C^j@F4eo*@8)Z*c ztacf{8Zw+USXL6=^bqZnY-*HtrM*`YLk z7I1v{ebz~s8XV*uombVYx$dUrOBeV%-wrJ&)6q<_W8ScEKRUjYAV_XtqJRjS2RkwY z+!$?j?AG8gCd48P1X>96(M{qh#Qe%3PGt_Zq5YnrNfO((H^4_^SZ$H2CmPqXH_J87 zB>}&@p>IzcnhpnoBZy}2E}oWipP=~l@*DuRJI|v%=PPSo#`HZ);-}fRo&|UGHH>Dm zp_e0^gRX%d!O?tAnXlBVM?67LIs}EA%hhVbw&k9!jQ9hQVL2bxEi5lV_ZX@2WW(rF ziVkEa52KbkC^>ccMT@lL{^ERdP8%Sp!&+L#n7K1IvF|j<&R*ShFt6D}6?kDxR;^!U zIen4o4)d5#KX0^|U(N}{nL&8}^)@E(meMDR%N$IDV1yj~wiy|0G}Wx(N(*C<_rrw? z{8C~s=y6+3plN=|wHIdpSmexj5UrvL&kP-lrW7N-p}HE)J+^4ppc*85J>%rGnvC!Q zCx_KytqnBUD30~og^+11g@B_bAGaON?VFFl$buT^5oh)hY7%&a)cwS|`Tjm9syE4` zt?&q%*8_6u$rJotoG1<=NdIj+>55a6-=>#I0mzkHGwu=t<_Dc3j>P?E>b=nV*Bd{b z=xtEhJS@WtFy&=%qfK4+34>~E-$ITK;%6}ZHEsS=tRIv)U}Uph)m)nP=f0G0lqdP; zvDm`wh>|v;2KcK< zFrLG9=4_tm;pRq)({gv*;5axLzI!Kn8>@mM>iB0iw;rzZMzMd$g#adK^{WQ1KfM)? z^`o;`zUJ558@M7^ zPB-ce(A5_(F9s{Ki(b5ZZ1-Z@2M>9?jgc2k0`I{p{RPaG<*6~f;-5i2xS!-IyvChP z-kBCU=GYKWJ8FTjcfAFve={vi>HLEur_>&m9!5Y4nMxtfU-aj%BjbJ?Y1;P>4sZ;7 zXHgx`4Y?6Nw}->cyuifXzF|HBNQ3(tuDm>)R0#<+TqPQf#yuF5HEE@zO5)c?ZuW_B zo8l+g^D?;S7gt0!Ql}IJ$JTs`C_N{JK|{kL)}&yKh}kf?Z$QYMnBL-)5tYT*SL{k*I*hlH=$k9mxA>hbp3k}WQ%Lr zx7T}PpGSRbgOB&P(L*j9X5afi*VVxn{VbjaFlKXJzxlXR%iKx6ZNNZ?+zV_1Yve)p zq0+qiu_Ujs6TuIwskLdw=raCKu@0>gby9~QThC;TF(p@xUohLR8l{Zvx%@~0$W?1) z%ULy~Nr9N^?M)#g&W}pW{q1Q?ZC*rzXoVWel)$NHG&N-eVh`bwh+ZZcF6-L|1(?TK zh74m>=7dMTcT*icGzARpMt)6j6tT)|@O$qbvub*4+e=!XQ=-$FWXElnAY|)eC}Dp# z3mOHig61?y2H63cSu(B0sGZn&uPnAG^^_Par4Ksr{ldNGyK9_Z?r;$Tz%bT&r$OvD z`W9o}uN`nyS$!~XI+c>w+rPBs8A}CmlMes*8;Y&PZLkI~FI*PfDKZ6ppig_9yrm{8k> z?x)Y6mUZPq7{%%rHEQI_%Db@-7?nmX`eULhkO~xt_iVTXk|!Z@(!r~em2t|JOuOj;8B3ydQ_Qtnf&n+!u^9nWs0r5+a)dGD@;TCE0d6@_G z>Ua3*_HC^ovk@JR;UX;#ibvj-QO$iwsQfT{#wjSn?xzIFVKuAu0AwEI%p)x1p}NN> zx0wgi8Qf3+*E7T{@#>%CU{w=h;KFsncf}cITVQtw&}FPi>5^vbpOl#Zc)UCwMQzw= zJ!kI>mV3vP{$4@`bty?G#DAc?xI~Y49o!@e?P#9$pqm5qocj#H3MGvVC*ZB{z}hq} zLZb{$os;Viuv03gAFDI4ya8B${UQLOjAjhX=&OX|s6e*NOp?&q!*96mvjJ_(7f{X`-LYE@g8iuPg-t;s16vqY= zb5>Oty1)Il8K7EDYx+Va?zCyeQq#@J5p&90aEJt<;A6eG`}ijn;5&Xyuj}?5aa0!o zXXPq(b6U$YXu)glp!$0_J^;5)iwUmr{elhrNK2MjP#W3m)ha>6!{XxF7Amv@R?p^% zc56M|^=3I9SW~1uu>PH$Er#3z2j)y*7V|cI6wmG}R+jY2)6V;6)WW)&N`pA-EdNd! za?P5f-cyI_I2v+-)DQzA_z+Ujw9i1>6HJ&r)Sj7efIgLtZIw%ie2G+W)!nhcJ3(=CD;p(E6DlddbtWAC#GLHNTL&O`|$jS*+@r;rui&F4#G+D zwr8)~NJ$xi|CS!TNQUBgsL*2#VbQ>ZhD;E9yUPP=A*%m1KxDrwc8|te#Q5vd0g5vp z+i+-%5o?HD_L1I zBdwjDu;+?TvliMSFtQyVjZu5%m{pbx>5<^W_DMEh2zV|HwvI*pDL|mVg01YHb4{C5 zMl;z>P+BPgQm7?XvhI$;i;7#Dt6ENK{LggsRpN1Y6E>cMUkY;KGiYMqtV=1rpR5e3!iM?Cn5?%d!div?j!*m@0WW=3>^>U9`?iE6xa=-SXm7`{M;XT!ZCOSNsoRlkmI(*-ecG4h(8Ot3ju9XS(|Gt@Ev%w3NO^Sj#V)@w{0z_+|-tYSVN}+_Y%eN?q z*lw9=Y!(cXu@gz$RZs4mN)swmEa{UdX7J8ktvbE6aYz_gVUoCVe0f+;i5JyzWL+lp zR(JHAH>^zGh5oRa;M``qh^J9mt?VOUOiL3D9d8sjv5L84sAk{5{ObKz{p zj5~z|+*V4dEC}Rd4o;YJJsv}7Zlu$G0}PVLbOJS^v$mC+J2qCQ=z1tlIEE`(w(ME} zSfK$DUs>ml8@;+-f*Cc?xiRS9@Eaz0O47sp?9`V9R)A|JKN@;LIdaRWT?ThT0hDz? z1{-JOMhykkRG4n1E%HZz$3{{BX0Mz#oiOY0_x*{b2w4mE_OhZTn zqWhc7cb%BsJUn-0?8R&r=i&w#shu)<_HXv~CDd^ivV>8p98pq#=pR$w5n6R!q9gwy z{GQ3!9IH0@Ct~_|vK^Y8*Yh!xHX9yE0+q-5)hS9WcG>h!(^tQxZ~df6OX1Ca33#E5 zw#MX@d)7Jk>dWR{UA4cv&ib~8Z7Q4Jt)4IS+eIt!wxdafAi(c!!-738P8dk#rHJP@ z7#6xH^NH(oak&{L;3xziW^D=}Qa zlbvNh20F)XX$G8@XVlKRRiK93s**Na(QWxP%*PLmf$g6G^@*g7Ts(VgO3%9G-`}hY zdLpQ>Hn0&|lF9cmykQYvd?_xw#tpJcDGp%f`?cx(- zm4>IfIhgPbd5S}kOm%Oe0l7gk9YFcT5O1A5BB04f^n>@W%7O>(B;_Sp?a>ItfQUZz zfBBSkp5FmF(E@@Pb5TMC#0-tk&CDo?y=rP?cTC2BRg=l*uQcmVIA^U{z~6Alnop}7 zP3C%9#RR#~%7HQl8jSp#u2ab3Pp(R8VX1H-ci~!JxIuWM%uzVJVTt0!e7zHyl^Wj! z)fP1*if9#W!!$>B$Obby1g)O;(B3`QD+>-M31md&dMI0?*w!1JNKfeu%$PH{D(KYv z+q0fD@$v73%AwLRiLPXVA~ic6KGo|Q8ScVdI!r>eVZQlu$h|_abFKBY8h3ln$GO+* zc}}>=Q}M9xBe`KqHUC`LgehBxXLn0NArXCv3u?w0Q5cp&_>|A#CuunW)KeLwtUpjV9;igfx#gKz7Aex?z>B|gMB+Hp$j0^ zcehXYOr^EC2vGbnQ`w2Yx4$w_2Rg%#<8tFE1VotoG3f? z`i8W91A1BZN&yKTx^Wg~bP3j69$6^9yNAeOc~@CAwp?@p7T0j6mjg*{@IXjCr>$ZI z{^@6pj>VeanfS)VF6hjxQ=a5(VSRA4J15C>WFEH?cJHteTYiy)b*)Jvth>w7dqwLA zv88bV8=sAJ9&Z=-v^8mXc;c%YJ=4_YP19tnm&_t|nW-Y+$SBHU8EZRMI!ES}^M6Yd zKkyJoew6YmahWFX5vBJijoR&}@Qq$B+f94f+yr8MB_878j$>mn9RAH7r`9rX4)==t zgORdL;1F`$n-X_Zbt<|~a;ebQ>lKt;d9HsVL95GRv zEKDvtu2}Q?IrHZz+Z$Wwt) zuu@k~+S>9Xp?=u%Ba+#bG}xdRT&8N!l$`kL3#D1NFwwI*uf5Sf2^c~mmG z@!WHJy!#CBS+MG0opSL3|2yOK*qP@-xIyW_U;_X{Ao)k9hN=dt5<}yl=AkX~Y^qWO#-m^HoK`hH_B=txHHz1t)Rf}>Z zb`y3DQg!LqL*h3`p@+PXFF9GFE(j7yz@hOFD8iR*%`%UVI@f=E_T~^3rDA;0!>Eyp z*xd*dKaTSXa;Yy%=HC32j>fI<1^RN}*$XN6ME9LM`}86RXgwqkazb}nyCu*#V}MXI z;jlg1+3Ex2Bn|AB@$hK#GIly3(P%6*mq7>*yktlpJ2`xVR+V&^qoF*jK-Aw5TrTd7 znbNsA6|Q;>_|Zt)hTXUOhwVj-(K9jJp-4j4Opi+REx4{qmu&%ZS}3tSN$r{r!A3J^ z4wu-D!y5@g=wGL!S3h#zOir_s^5XDn#*w(_!kEr|&gl`4?7Nb83JM!#3yfXiJ}e@z zrjcUgLIP*s^JN2dav6QEJ8 zvJx-!ld^Wp1k_@T8WUQV+os>UUyN9u;7RaG{Cb_d^5g zYTM85)&NlsML-i8rWxm}jvl-w1$hU@BM~1OCF=~k61$&ucv5)QrC6(ajDEYGhKu4C z&93w&-Y6SeoRz86XSO16_Ge&zKX=MjzgVm|==uySoT>6Utn>cy%A0gjs0edI03Grd65Nkr_d?lKE=xs4cg@oBsK1QylpzXe86XgiSw zZYxe9 z^>SNS&8YZxgImbNg3ly?>2lY{Osgh`hwj+t-MXcK6&hfhJ?R<>${w%miqvHsqZ#_x zMg$xRGbq<}Ld9!okgm33K;DJJlR^!Dx)lMOT1%bkb$}M<{Ld5hYZCP?nh`I=C!gI(F2X}zc$Z6L{*jf{G#R}S zx8gDT8D@>n*K-Z1jt*uFX1}FSya{qH)f*=$Cz?_)TqCwDq2;%-)B6C8TDecybtmAV zC9z7*crqFP5>M#>#`&2v!{tID*5C4OOd7A$;X<_PZKcg)sYT#uQ8C=y=~zwKfQ&qCkEunF=XvkN9`&dew*z^ zaj}?L13WCQbwPX18{XER>ej(zD+Y=2r_fZ@*Ac07u>abeyNuqp`Iu##oU6}LDg*?b zSa!Z^OpO3MjAwtbzBL4-+hg8D^a48zz7D0%5!#4&M2PIlvJKN(Wj0xx^Vh6&Y*3rm z+DYUWnDxHX_)stl$(`!s6rP}(kNk}+zh?n02<{Mg>c~c&|EclqqrNz0o|$82)qIP~ zqZd2n)blUO;i9AsP+cH3CTj-!^Btf2*S@e7(#(*1p8s74&&X)td#!K9>Jnhw85Myo zZ>$TEX@&8t`OE>q(>?9Tk=S}MQ(Ld~?+5=iO|*U5-Au1sUs#(`6$~l-)-=-^nWrpD ztI@{_>g~44OxrlbtJeYI0N`ojpP8*D|<-hdIzPp=o>G3scd1t5;N8ZJBk)}NZIVA zN1l44>w+$A0v2Gi<&bNQ@o~NF=V}DHb4i}hNC>IFlOS+=7&E7Mr^eF}1LZ)vtZ57x z&le_O^Ut(Ch(N~|K@`tA?2V`^ha6TD`7AIH_6N-C6JnhV1sT&BlZ4gls7uaTtRgb5OM zmaQ##u`r!FWTc$KvN|bJ-_-GgfbR-ELT*A*wCz=Wwpp0;>=bNR8TOkrN%o1jAVWp@ z!s^ed_;+FPUHCq3b4r28A_eMts zRoS?EnFT|772ps=PGkmTm1460T4wFbjsMR_m0OwK#NUf*onVW;F0Vr3zWk;^JN6DY za2P`F?HzZ78(@LAHL%QxjdgN$5O#ki{Yni)_0yDT#(BEJ&B+2QYB%|uck3hAQ;+!5 z)o52$;o^`7?GRWUI@+Lqz^DG66wF{vVeVZ^P1(8Hyso_u*3kW87$ecbpg++QA7O;P z0;gi)ql;(D`8H>IPEf;S1(IV0?uFt_{2xlNMwOuNMA_35O! zd~|jS)yFT+nbm#3vK$r;)Aw($HEgpKN|_+FDR%BzW=TaKor`L~x_oPf?BOG+{Uy-G zp}9d$`C`L8OYc1djwX&YWjY$LYu*Pxm{$;MOd4CT!J)0*l2g}RyDY3UGZV1@bE>5n zUP{b!WjRTk3izUrLC6Cqw4kD!s4fHAuY3Xyn{?4ETHa4XO2!g!ktG@){TKch5`w}R zV|Q!TliPe;Ih5jSGA7O`7)&3L-;xJjtvwn3RSoNC_!D&W2^#~*+}^VvKtBJcv5~?h z*4U~PNAn#HnoAbDq8>O|R+(iJYcgm}GE-&tsImZlWjB2sOIral_)C#s79mpkT}fF6^r?; z^5K5fa6;Nx!UMhdoC%;cS50JJ9wGag4UHRF1WZ`k?NLU&%QcSlPhpOn7JdKMiA0C( z<7;SId+cAQ>%63ct*_wx$hO|aOkNdqgz-3oWl8YXu@spL8%qEgC@_ttuy!xfb*v3` z+AHh_b>Zo>p(X>o1o64{dXZI4MBvSx|zG-QN1( za_Nq;J(ygswmiIAC`JmE-IM!;9tzL@d&!rC9JpxzimAja04YG$zxE6BbQuh*D3O~8 z+y)*BLYZNh{Tt?h6vbk`ktIR`@rh{uN~Antw60InFs ziOqwqyyoro|DypZ@yhL+NMf7c+n%!hckzON<{WE84_V zN**sxapgkf&LOrppzL|?heozDc&IfW@{-37o~pLO;G}SivgA>X!+@)Hwj#IGtmrU{{REn{{~XG z?5MiUJtk0|uWF=~k#fhF2O^l!Ccd|OA1@y2&~Dl(b{pY60Y=K{dw%AU!*AMryvQ~o`Aml16De;nL660yNEFSPoYrf26_h%CCYG89Xf)z*MRm6%;EIFp21 z(pFX$Q$hioYLC!iX;32P)x>W{8NKpRFdG00ZL3C(b=(EQxx$}Myo`>foe)n?lAD^r z2Ov{w+b@x1h$}(*S~;W5W(+ebTIY0aL1=}bo-jGcWq*02Ogs=~x(xW>1+>AZF<@2w z&l8N4vy@~2;2^p6%zD4UlrNdJm+Ph?En6-oNYSsKq3|v`RoX`at1B5!8DP>SWLA=- z-2A|AG88^@f75X@RF-&do!-ZCq$(fW=f3_anOu}Rmtd)yptMmoi`)ry&eBoKuKjw; z#efujW@%APvad&@suXON2ezOtu+0BO<Uq26ru*crE&aT^PdbLus7uNp)`xuY|?^ zL$GxMbE-szgaAuJvaU|G_w}ql6eiu{aG5o+n3EyzYoDx@Rz-1CQZo0zXF>;DyB6U0 z!->SA+Bc8>Of*r(Arc$VL~o-@>)Q0{b4T;pR-Igy2h)`93#|7aEgVPTzN>zPB1qifaf zJ&ZR*i|wRP%!L;Nw~&Q@Z=P`e=Br}&l8ACt;LAMd*^?`B2&h=ak_R$V5W+`xGSYW| z)=&D>CA}O$I5Vpjg^-uCthlm^4tjxT0G%O<>G=_u@8!|faB6eDxrIk|_*Jh}M}@4^ zO6YQwI8B?52bU2}0%Xi@9l32%_u*RWbH{mVAHXe87pjE-!f(IX_F08pv+l>RFY^EM zuohl!4N!C<0k!X-xJ)r7;+(Tyy!jG~=y!zw^J|Fs`^+7)5w_>OBw7*Cq_KZR@rJ)O zj1jDYLY&Qtuuy(1R5^a3e@ZwADOe9e!{eaOymv-! z#ti`Wwnd3kPP{S|7z~pgf7R8_HiQ@~fgRO|teL*umaxP#2d0&{ROfVY^IoB#$#!WL zw#0&Yxn5XUFGLM&+X-U3u*k_JR0Kb)fjV~)-$3b`ZCpETmO8_@)TAXK3o|AKlHwn0 z3USo_qD*|PJD^7*T$GwCY%ZO}`Db;RJwqtWk18^cug8JjkH?DvlCmxz&do93-1+EOzSH8zc_!Fb8HW^9#_y z)x_O*{d<8kg7gE)RVKKMKg5?p4xDe|vSns>s)%a3uET;K(hA7)F+c5~;zztjk$Qld zp{dC2<|`q@+BbXptJ%$f?wqNr&5)sq9i1-;rZ{Ty3A=d<=G&fqqn>dZj8f05r6_3+pJHa0 zENQm9vGbD4p`xSw&kR}1l`*31<#jezB=>(=^ia#lbi@oAx)E0YH*_Q~bxgvaJ*%l1 z!*5X@ki&$Q7E(tl=hNnD#npOJVzwDSN;WWE9`6@!wu!X3y8y{#|G0ne1Q^TG zzAKa{aNfiS=*!|K8a16DLoRdb3w+sT6Z$`^dDMGxrb3e4YFgoLu32|-r7tMxklA451NLFUJft(zPa6Ju|9wF6m7=n18js_*N@n_Al1-|n9&B=1PCUi zLD1ga!eM2A&p34xvdT0uDf%#sO=iOxMmfd~sU3D8`#qdHIvdPKyZFcMfePduaTfCW zp6q#t-1t=e^Gc-%NfcmjwzVDbBNaq&rXW@Pb)Rl#TXOQ{%Lum-aj6EGp+{Z$Z>@=n z!pr2P%c(tR#R?V#F=-J?6H7fJhl_|7T)^=K|7pTHW*lrDzaIs_YuctNOvsiEBi9%+ zq!ORz^b8aY+ff_#!9oT2wa%;O+ZMz>No?JsnzC&Ytt4z5p=MQd6u13PX78 z5T)7Z$k-KrBN*u8a(L7j6d`pI-Hw>D7n+JC0Eu_y;zcj0$wD@~eWo^{CfR-lJ~~0xATL*0o~C4$+M9YvW3v;_J5V|TEq9go-#Zc0)sM4ou@kloDLG@L z+mMGB!0Q|wzBpsly6Ux_`Dp{q(foWuVeNXynJB~y(&}<)PEf^$yS4Q(Zy85wkrPfd z58Gjz@ElCGf4s5dsSTZ+jws~CE5C`BY-yu$j%x#{2YHRoUL1EXPFMebXFMn1+hwHJ zw;~N+m6~|5a&T@}3dB-y%y3hAo4OzK@Ono2fAa7r~~2jTH|>wcUWOmR3{9CG!Zc(>ZyE zE{8$;c4sY6T92Os@=d<+l2K+`_Au+diABNhKI${1z2-u#AE}&cs zn48$;xG*KdScPM~vZEUaeM+8S{FB*!Rk{PB~m>5s!FW$E@h1kWIr`Che>Z!cKEac5DoqHD`%t^_sd7(5xtb_J&{nWiz>5Vxjk@#(lm&4lkkX4GWb6FUiXj&*)r7AyD> zpp)W+$t-KLnIrpcUB{L9L^X35@0_Vgo|vlJuV>WyxI$1BJdsl-SZQqkohb#wXrHIp+K<$9nwWkW z74CB?%@2}q__7BJ)d@sau?MOfB?MkX+v!zL+T5NGZd5iC17dh)V;=gFfFJn>LN-J1 z<{|B+?+d2Z!pke5R23kM=b{!MvwPznmfU@4m+U)9|K1rQs{v=5p$r)asLMm-`xTxf zXn$mYyD-9@oq)*a$gP7rv9$JOM^pgm}IVA^17|keWV4tx60bO`d_a| zAf{@)d2afA4W%>$eH5Wxw%$;|s_b0_3W4N<*LkN|Cqnr z)lzd#6wUE>xZD8UswI4yevgRX9I&)wI7oMxmJX8Gztt^6R*cP?Ho&X0fu$^pT8EzE zPd;~63JMwdZ@uOUVy=9Auuf`*2f$JUNiU(ffto?qpux!s3ZqcJR&hDAiUbp?7}(!f zmB$Q4^lz$;id4gZhST^mManIu1GKnjkT~&!2N80ENFdOVYRJlTT{==bYKGJZAast# z@p?KBx5;%H`>bOgHe|av&8T?0{9ttmWQgpP&UV*{Dp7m#(;s7wp000^U{RPuHx;2H zVEHoNR3?5;n(HSktLm>Mcrb+0EI3eIppOn=QmVgQ&Y<_4fygru5w(XP-XEiMB2Na1 zQEroGv-&e_#ya|21^Yk-Y8#tQ+X}VOe0$-E#z2n3TwCm=AC3P?8G(YJynMCKC&M}+ z1JLT4o}CMmnwd(4LR7Sz;LQ)BDV!N;8Bw6D^L4F-gpt^-fNk%BAdoW8lFxdDSyA5$ z2<#yGO`m684}m8jWGn|&Hd;IWc9S207X3cIbPJZ9k=8mR#gu=JDK*}nmrBo4cxuV_ zlDYVb8nTPghK41|iu%^GZvZi+>J?k5Utb3yIX1~z`m%=>ozY9k7510j|G`iQo-jCR zM{`?#LZbW>8_WR0rTQYdd#}$rs7Rj}uXvkk2Cx?GjPHWsXl)UXWwpW*sZ4B&d zI~)@6`w(K0OnQy_aNzGNV)?hrQ&HG3^4P&^@L?F=_9oOkS5=+?jRnyUx@yek<_?sF zHeW0S+Og!}XWo_WVi~M&FkG3(`|2a zRMD^1o=3Wkj{t|J0`!!%p6;{65?(C3O{plrn;CzE(O)9Ii1OeuZBn=zw*#aFpzJv( zCBx-s%~)QtD>b1?N1UqTC;9MbFFUR(kqJ>tep`;HO`wSveJerQoLo*|oUmyLNayyj zRR0{^Tuh*x+^R;y@$h?}m7<@SWp9!sIW7U{^!*-z;l9;t^+PDwU^^+%5mqz&Ntk`g z($s+vNzz7c5PQ)VEV=?Vc2XAA5Z90ow9rryMuDJ#!~m;$T@NZRd2M9zep+6R#E+rp zQ%`_hyp2S$TU$DaU2^L9w&zF@OoxCp!1{wr((guuvUUihfMKU-kGkeEJzfl%EvQ=r zmh0YUFO^&gQ&!O>++Hju5h%IimKNb04GFf+W?TI+wB8M_93%m%6a9g{+;jxAOz6~t z6K`V*0vCyZf)iE6PjdXqrg)&8=U}~l7o29|z+p{{s?(%}lTJRM;YA7bxomN@^(raz zh~-4@pNLJOyC2K7vByc@%wT7pJg8TS-p!!ZmP_^7V}I1~%pb*O?9j*WW{^UQ9ijp+ z1Q`U_e+V-L_MG$NVpafLdLUia&Ry;iGu}4LYKE{!6w5bKL#loVdsE{BE#=ZJbd(Yd zZFlXV-Pn-b>9-tvFLW=V^+~vl+TG??wj3{+XGP;8R_|ZW4!Dnt_aydBJ>M6O9{6g` z)*EXc3+ImGtjwjoG39q&LEV6nOZj2#XH@sm9^J$|h_QNGMz`9`!_7qlnd1E47j-!lT=uWm!?&E5bzR0mx z0JK-Jsvfo)7H^$IQCY$PqAY7U5U=m#W8sX{5&llvrYpp1OF~Gm;L|+KT{x+|;aN5> z2vRQ-Qv|ye|D`=Z;lg7hN+$uGkt(#-8CT`krS7QCjD_$uG0J#%y1kXm5ovAcNtH^Tbldz&Fg*c(D)659Huf!nK_V3t8d4#JEL$1p4g1YJ*qq5$ zs|DH?DD%(X=YaP(X%tV1g1s-4E?2Y=qY#5l%gP|+r(}TvswbH)p(MQ?Vrxkw)Lo!P zj$Eg~2H8GBJ}igrg=NzgBDIR=RE~Ks9XeQa#|R>QD#C76=g6*8ornt=*CbL0A)4t! zCC;Q4;>Q)I#FFRj<@_)r>z^0iC!D!uFs8FbqX{ti4O80S1ZdS5Z6i2fG|22v8Wuh@ z{UiOkysWtXKF*bpvT8*B>&l?8?=i_SZ7(C6mwnFb%P!N~V~~mw8ot{%BVk!UOqI9; zdHv0Y9F23E)W6;FJg=$QYL9uZP>!P{TXh1J8Mqa=kyBVmQ+++fy~5VbX}|7 z-wBdc^VhiP{W4aEoIZ0|jxZt9zh39$3uHM)Z&ZqzLNa-@!irgs4Bs>ejSgpa;30|q zdARwm>SH0oR#b)cXD4rOC+Z+c_{M^~vaJ7y)9Wj&pO|xYV|pZl?0L7McVEf7AC&!P zC(!Qbou}ccm5#@Fk9Z@9KrAjqQUM!(XAhPM4qRJgs0dFHg7R?r9dt}IIpjcs zXCCoTHH42&l~-J^yz;w*Fa?df%C5iW>zJiZo2M55`Z^*Nx^m$1IXHNFk5jJiEy5}~ z0N%%O4!J8>?|zt>Q_?2<|7BBJ22Wzkq9l_U35q<>PXr667#k*!TFlyyP5&J5F5r*} z#oZ69-&>P*fJ}`ePlq<0BEUkDb;9J4GHi2;csi(mC14ABadoXK7<+U0oMsXXXYB+0 zVa~-61$3_v!T#0JAJR(xl1{1s>GSudH@yRh2_BU0<~ME__$HT}09gZb(rj6JhTs&)qLe){f+WVI|zQ)G+r3?6uA}&>%Xu) zM)@Y>Q)h9F_^3S578iQi-4*5$B_HQidq=n=aGuFC9<6<@K zm^U1cYThFFc1@C_W*)u8D99AOx=hA38Vv+3;{k#8dSh45tDfL{v+m~eV8VeNEI0({ zUvb91TRo!+W=Np*f|B8`Yh&V0ze?70$%u6Uy*tXzW^?|PxukSSa3HeC_c01YesP+2 zFpheQ7XdXn?KSDHfnBT8fornM&g0fT+}AGqth7 z$>m5@mON&|a!X`A(wx00iYA=M#uY7?99 zFKp7C)mMXQc%L#jA?}(>=#-iJ#v4TS|yM&}GLudN55pC{NZAoqomHO1636?_~ z7Oa?M_x%4naVxUX2l{XnAr$;e7*abh?%>(^R9z=EYB+!4x2eH>$;HpNK&!R=Y77u~ zAsTjsiA4#>ZEeW4=X?dQ-l##=yk0LpO30|7Vjs**NhpAPb z@6g}@m0TLABuHn+6j53iH?v+(AlY3%mmwGxW+Le+L}ii}v$5 zWr?zten>BZdPVW8Mjy3PimV@txURGJ1!dwO*CN^Kw!8UJ#lBRyfXN#=0G^T@13|ro&x(cWH{Cky~`3hw(kyfJ9WUjHm z8Ss=I27hA`B_dXr%V74Ei5t4aN0E;Yzjei(zOg#aPGFdfiohc@(6wLqLT%OXEeb+4T<76@mZtia-{7UZuOa-8C1hl%v>QWI zxMV>RMOgARC|+J+&kZC!3z>dSxSFRvl$gL~d}9dFg4;7V;ej7ex&R0L<_~X|PNoJ( z4B+j6vT;Ei^0s63EH_AST%E09tOrck^Pn(V6M7om?UDcIFhjq3Xnmv8nj{&L)NdIK zaANhDQpexiy0}P)>kguWy|CRu2!2TqdjfcN)a7*`{qCji(6{d5papBoitPO%=-^SC7^ z`bp_#SBkyi)jCf=0)bPE%)=^AmZ;B5zIe=UQl{6+Vtg!XjpJ% zLn2&Xk%MK;H^96;Es*Wiz*oP|313WVVLJOf^a@<-50cLn}nt*u~+u!bVK1U@*07WIWhEh zB?X*cs5Tw4sG#YNy)2dIKlrHm`Wp%)RZ8p_Rj8rPK+^M$CX!&^;o^6pCg6aebsKbV zEqt&R@25#@BEK z+d3CuF+xINxUbDSglT4Mf<=MG}|q!X_N{q+ir z_&RovX@*NtNd=;m_#))v7(S{k4yfn>toYr^OB5luv+#ZgHxQi~OpJfGsn~`BOY9|r znk|FiOI(*(J>?1JEIgt$c`utOVtU*oaUI}@Mej}d=vS+6Be-A;J<`}NfB7QqEtXfg zEW{Uxgk0wREVD5Q8jORqw#_`eU~9 zgSMZJ@j$hiNZRq9k@k=PH^9`}k#LYvE&;(ev4Mw_np?lWa3}eMRb>U3fDsQe0`FFN zw|Hy~LESOgRlR0>5|Eyr%$fv{u-}s0dL#hizVy`nI(Xv9j_82z?3Qb^85K#*MpGW< z6ocCBl{)%mO%XZ5DXh0DU_%LQIoUZ!qTZ^Ed;lczZ? zt`F2lqFZ!cKf8$p(KsdR`oBXZ<$b~h0hZ~C(EmGgW$;wQ0oJ^?*Rh=I+TG0=&E!;&Bt6F43-H#ZtLLWH@G5|+XeUhTm>T>{;A_b&w((e*7z-Ood} zvTJ^Q$ydjMUVWDfbz{lBsIyk6Y88!%hW)u*?^!~+;!!mjvEFy&zf9{t#C0t6t^EAr z)zG?we*?iSY;py<{T%CylL;qB;gEs*JC)vi%)MZrYQtYE2~Jd&@&Y z-zVI_WE5UubTHE6hjlS3{(rE*=VHs4vEi=67a|LE4lQd=Ft4IWmtGH1W&6d*sy$DF zXuKb*?@Up$jiTO5(9WYTHPHF?2Dz~FcF3oSd_+9BCv-?5JZ!}6vFh>1$7J9ZTikd~ zB~>3ap3Oy)@LTMOAexp!s}5^9Hcgw*MCT8KPPe!7=Z(rW1UJ@l$$>`Vd08V7(4N`d zF7|Z+*_)e%twtUzk?L4a76!UtMatx2ys!b~W_owh+u2edJ#>uG&Kqi|ko*S+Cx{ZF z2utm+`nZuCB>mo_noXd27`Nsda?GR$jC%mQ=w#X5q4tUVX3?Y5vkaR0tqFUn0cB6U zHR|Owg!!MTVWP%dusK?+p{0~^;*|X$*w*Z#$~1&R4RLA~E2jGQ2o)G`LhGe7(t0MKbeu{e_)ptdwG6(q zQfsF;|H<;%;K!WD94uD%XZ{-5xC@(T<9(4 z_zLe|DhCo*&rS{e$E}lVc0-99FGWul%JJJ6dM${7_dUPKN0%d=cIXQ)j9KUSSKZ&M z0N8-nyH@_iUw!=WvrFT7VhTGrdKZ6Wb(3%NuCe;+L>9SDwM>1cjfJ9)RBz)oj5Dhp zJRD78d}Xb>;h()%yII7bKV-jc2En@M@*HOJ!ij5nWV-V;3i#^ChOiJ*Yc zGw4rtg+Rwmprw%S%K^M~+d<~jz=%qB6U#eV{2lZi<$ZkMm}JlQKr3t(GEL+yb9gFF zr!S(9!_T47V(dW|>e-#iYI<$)MTid-20uTv0zE4WiH>8tS4BzALLERJ5nhA}{2ovl zLNx0m$_@jX{?jS|0FmR-Zop6{XC+V|qe{w4gS&SqiKbKf;c1qNb%$NwnkZ?vQpA1( z&l7|>aVj3AH+y5=ob4>rlKM2`f(!#10Uunbjo|2Gvej6Y{HC>Lp-K^0aGwNuPaaRs zD|p%po@B-(E4}x1=06m3^p;1X3m8%mVmx=Gi21`1bBXz#QJNX;ycx+;GBA&TGe+bD zTsu%#s3&%GS86{X#)Zjb(iV;{bIW^=!AF0fJyoF7ef;xhD0KE6VJ^X^?!TeNGb|kV zBIeIOr@dqmU1rGlyN!*n69xSAU+(7Bv^|?Lcwu>E$bU7Q!}0x-3GFymj5iWkGDwJ6 zTvoSx0FQ{X<*M4s3=f94n|cg^H9xtvXo@VL(YeUiztv23`R{71^o5x?>?3l*iq1Ip z%3x?Pv(lj1)iK~N;{OPpDovhGxX(RrS-}f9>F=LHZbIk+7}9yO^xe` zdU1TNCGInhoO&TP69{3b)N6El3wJzSbX5$&U$IpQ)q<#JS@?h~D?rqzT})Vka+|bK z-P4li4V5|KUEO_stOJA*@)MZA6uAT)&=~HP@a_?k;&QQAJNJ6@uwnJasSsacZ1|&N zMXSkP$}wKhL3aGdicbuv`y3#487clAmu++S;kUaA73}Jhwnl9j8D;6R)!t?kPVrh# z4|NsNV#z9ul6*~_)8<_C+D^o$g1%pR4b(0>QNLr2sg^Dp#5Sw!RXl)V54uZtwIH&% zBaU(|Z;g3mmWz0SipfQ++yNc>T@T12Mpnq=G|9I{gEOc5hBT}F%MF_ zF-%0T=#2Fn8T7$$*^mCJTXm9@CdWM%@_q#&YCf}f1$`G_E2ryERKF-!)Wq~BZvoF| z?iIQvzI~O{+ojH;`~{o{5+1)D{X6*EK?m(f?O--T<701w$;3~CHQR&^ zp}LTRVIrb92Ma|1D~Ql2NpobvcYb4TN5|YMTaq1=*=KF46=!D@rb;`sx3{Cliw{k6 zSLX4>@POe5wJIfGh41-YX^Z5+;OLr~PWXW*W&%UZ=>O2%ERit3L2X|SBW(Uyk&wvK zW>e)8N-pZl+~rm<>FWi@||l3+MB*=z#(nUs#tn3fd#A0@+ZHY9{A68JXzL zWSkC5@7iQ+%0GgGv+LR)v+la#*6Ag1W$9 zq+^iDoOqeyq61MKqMy+%fw2=mB5^}Q1t&U-wyipEY$*inrle)Yy))sWOa*e+w^qmt zU+-)9O|Z+EG`ftm9YxRJJXa0&pm}g*7W@g0Wm)ZE1xWZC{`@@$B0by8R&_^^QPzeR zEGI0WDJ~gfghTklr?q&P-Kq;UlY4wqN0?~cu%X=q8C%5pC)ra|Vo0_fmKxp_Pw+=Z_mdeSsFiV*u1-`bt%lm zf7kBV8S;LT0&_2r1A)SkG04Npy6R<9a$#;XOshPO1zg3EbRCTWREwDtN|4s8>(OnUXWxQdKiE(M7*!B-fu);8&A-=$jNteHn zitC?>hrYi)0jG;NsC7G#jM=p*V|YQ@uf;)4WG!p7mgq+c7bG?}W@IcOg6t-{XH0$O zAUqxq6!!IvsqFUBFKXNh)_X_iNU#l*M6)xGP8#e0Lgoc`az*KzvgE$YROZ znb2h4I38C?ab>q}1(cfiStk52(;FlQ+vhOb?BrxmG5OX`Drd(Ns&Q^+*oaLxkGXKv zwQ`eWc&5xs``kPa`($n%*mh)IS{h^G=E@>KW}KXIj~Rb6ov7My^dQToW2ZeD_s^{onP)n)PxF1{O=!|0BS@I~04>z1IBKvf0HkVE<@A-}D z+n_B>wiy%MF6{rdPb|=CkIw<+0TeES-Of%TA}x0GL$g7;6PUN|tC*c`hO=G2d z7UPxfPKg>O{>yo);Gd_O#bMC}eEE{eP@sSQJwaRUV~Sm#!E^{> zP3W>wmt)jy{_Y%LQ!5y&i?3Dp_5`6;Gq@E2>s6E-gfN$7Yfu&?)k=2aYun9-ty*c} zb&8xxFqdx=y19!peUe>ARx9e>E$!qFAOHV!Ca1#rSGpD17`N%q97IX44x? zY6|69DB3vcYCq48oE0wCjC6Oi8$>37`T9nK1`R=jHl(H5vIhjvcv&>mru!I3QZs@D z2~NoPgP|$vmSDu^v5$iEk+2y@hJ2g@E3Sd0!+JRiJt8(yuv4DA$4C{g@`!ti`sC89 zT*{f2y$l~%l9LA*JQ`vbWjso?`IRuE1pfu1 z)^sQ(0(OUdLkLz)bSrC9gzMy;>+)J}c!^}QzVi*jXd)$MJP|tG-6zCK$i-BBzL68t z$6`WtMfe-tVu3l@D`72hJ7#up;l^xEYe1J(7vI77Di~N^2SnU`u^-qh(_q$WXmEHp zS4Mc{q?3urTP&{Gt+xaIcoW|qo|xReEjn{uc~!kB9}Y$09cl8lyHQUEei!Kd?x|tsUiEwKLeTi zGp`~f2yGske<48mM+!*X*W0L8*o8-37#perxJECvGYiD;djyl=VtG1|*B7@$aTr9> zO^SJJ88k4CN_{Pt2Q4D>1Vz!*>L*jF!miQod={RuRs`d{+*H{HM5BH98j;y1KckLq zmEg^vC88eLp;qQeU!SSRk^Okx0zf0V;BhbNBk;do%*s#4CeEwo&b`eXs5t3Fi^)#_?%NQN6`sMiRY{p{B&R;m>etB9ue zz2Ooqde|K9c=FZ1U7dOuPq&zkjKK=8Jgz@mZ9(Pk=TljIvOV!$F!w>g#meI2hX)Sf zUYF@Uv`ti~R@nY?JFv?f)eeq2Dl_AGpqB(&_%6#Ux?+ujzG1XR>^U)n6OZaXb>V*) zO&|q*&y7pO9VucRhr-a?Q` z{Ephksw)(yD75BKOF}vRC*g{(LDy;lURsp4-=o(^yM&9Gx4Pl^ZE`EHu;O6)yR7r7 z3(Gf#Noy8;Bu?35cYadn@<{ATfZrk{2ZnQrz3T;nNuoY0M!IB&L$-L3ZvLg((2;2B zR~z@rGhV+uVFFNQ+0gGQ-55vyLATZBO&(?4SM>0J#tH@$j5@jnOaVH9|?O11OChLP86iH*L6U)BZ1WYV&r=bwa zYo}<(9q|ea&PJCu3XldYG-Qgck|dR--F|QqX6OA7MkG+ws&R`bac(G-abt9>b)|y5 zI6idpHlT?-{M_M2Te#UOd(m`2sho*s7r<|Nf?wqs|Cf}KP2pl&n`BiP-T{N^9*7qyroje}DTPT=pUBa^O2^Ke1HQ>gD3+Syn=@ahIv0#LX+ z9FmY2Qh+2il?T?z^B0a@Fmj2fO5hR@$0N_;4yvSTyREn~bTZ{sE~vvE-6yZrvfU&U zQwOJPOk)B8+vv6L06cpl|0Zd4=-F%>f`(Z>b;wa*|aC$b!{op~(}dNsP9Pt!B6bOUqMp*biU1RS#be+cdsUiOJ@1EhWrFj7q*xMHV8 z3-fK#5m$`j_a0jxpB-VK-=tISv?=lrz+Ku+=HEk4QCLVFTv^_1V`>t-z6`Q z@rYSM(*)B2L@r#%CI-eyPxy_J*|0fmJyn1=*D57d6I^m07 zZckmi=^-i?Ckh})J0-ezY91SDu-!0^m%F3)5*0*_k_O?SB_sjx=&VH+6O(K=FZo2P zSKyg{IIE?&a-ZbMnR-s;kL--_s$|LzX{O?CcI5xo9yNE#fWAtl&sUn<-zAtS)PK?q z5HF4aVc0S;v3?=-Mm&ZOXPcS;EL>FI;?%s@+BHKrQ^mhi^zmT+I16l2t=Yu z;G!1SADh=F#6v+O_VE5yajn429SzzXLCmBL66(s@W;<>`HJh6mb;Ef>UxpJb+c+Rh zsnKYO-HirIR}JTbELT~&XrT^HpQL)# znbp(LlC$QI$ni$zr(#jbut1v=L^x@sy*Pep>|007;&nk|3Vf~)Ib3^huiZZ3<5WgM zXpT1M%_kP7z%OO#uy3X^?9rS6w8R+i`MP&ok1qA!H39J;&dY-hl^^5&B<>uDD z=^^Q0LeaXD2cMdhBz2CU2le>GreE_z>N9Fw#+nkFoQEOgg2o6`o>i{*_Xss^_*B1` z@AuEJbHbrYZjH?)7 z+{%;atIvE&pQ4kn9omTM(vIg4Q(kkdpv4p+^)+DEW+nnH3hOdt0n8#nq`&DdYWC+M z3xY+ID#s&m1=sjxzJ->|vOye@WeZTe&i?1GHHHXRX0?JsORf4*Xw)S1 zsV7!PWc6@_f9XnmD^q@T%iW1!-NPNEzo&UcJS;*vK6=KQ*(9z+I(l9nvfizkonU$< zHI0ki;QwI|uSWeg7&T&f+vgo8`A_`XU8x9gEzrEkbIwq%fA$7%&Oa)Av;ALjx*uoi zEg0(^t1C_Nq&UOSkA7HNRAWa+t<@Uu;G25VE~VT-@TO?^(~~DirJ0T|(7q$?X`Y+l znZ`u}$hN!FLr^gxJkg#SPO4I+ZI4o=@_XH@Fhv}tX7>kK*SB8>8_ge2lh@=lD>CMD z@f~CIva|Or%vN%O%*bFZ+p$de=I%=JA*)AcWCf~Ra|AHo851IMMAi0VH9)!c=cxc# zuSu&ylHeUWpoL2O`cE?5CR^oP4=HfYB9A|`x31wE4bXSm!ood4QnzigHMach!H)xN z#D6`&mig{8SZJi0(C;F-eibk&b@6I`jsC65#9szHU6SG)o=dhver0 zAySn@_s@@67k|+^ICvHwP<&L4&Nt7-Gyro8Bb@t;>pELnOL9KaM=p58OpX$Ior6k- zO-8nSW;Qk`P%SD zwjmQ_d#CI^<#pWLXsDm>9ms;5u0ZBrY&TaMNFs_+$p`^;TWMPyLAwzisDdwPt4d=6 z8=_yH*W{VDCcI)!$ zwpLjeFUakh6eqTeK$(A+8w5q|E&?)D|DS_g-1R_l)EAwaSZqqH5bH1s^LsU=(wH6g z&Oo%2Y8D117Q~N-ZuJ!P>UzJi>SEz3l#K~xrOa;-3v*ZVV6OWe-Zg09BcQ`O7%&V& z^fB@(ZAEmy%mgx9NHfx`>J7lj7z0Z8E0T8`gNRjcC;x^F8j%5C$j3z^cS$=^$h@iF zh@F%_wi&KZ!+i@?c_&-#eD1)5~h(rxKiGIWciY zrX%dK-HWovdmETiO~*kiI6F?0e0V~h*?$q#qd(qv_EHk1e-wHI%1P%INm#YVb4VuQ z?AA*qE32K6gE>Vsg4TvvLf>HXjJ5G}Clhy6T|C+j_%H(3L)}vo_K@iw)IHsDoMcNN z`83GUkr~qfV$$M<2po@3E(d8| zL^!WkRRrgX(LX&Cjp(c|9N(nG%bjVXdGJyqLW&akU|=GT!D&5AZLEl2_$CrF{0D{- z(`}{WoqVNXz;)Ly1HM5D2HNV=xK^9Af_Rp5pnwti|!A|SfQm!_J5 z)9nDugqehLS})(Sf!*LOhdrcRu8`pvw-}=DRg$6$4 zS78a;RZA9U>#j7^3BljEO|-*(6Ed%FM;7sa7|MbU8~ zJQwmj5Y&A#iezzD6rcb%PFb2G^&sXMRvAv|LOB>aLO|$;3K~htX*mK&N8lIkuT8yA zD|}X3DLn6l2RNg9%1M5nT#xHg7MIS@q3FMD0_Aubmc$<&JrDa@&q=;XccrO#*a=od zuYInnj({QBXd=3}7@+8)%>^hkbU=rpjp6?rlW8ngplM1Bc+z;RTZM+8h(kal+={#n zbZrDA)Q}b>M{;!X-K!bf^cp6u*+O1S@uL+KjJ^h?BHM=^OaBeyo~~;9I2!PY09e%O znq7GWvF}uqH+WhT(P>y9qH8B0ec8cOw?QgvkOQ+?k>~}yKna%M02#H{ucl|Na;Qd! z^v~o6o&XOG!* zBQ-puc4*T~jnY)0jq-|&NCj;{PVic{>!SN~6+d2@)SUtbV8J2Qr@&iOEU->y1KkQ_ z{Lc3t=b4Hm_ZiE;RtNYCi>@%S$cm;**L37MAvX1(>oO(ZcM*IP9@?OG*G0B{1M9Nf zztw3auJ!_qrn6W)hBK(QC~6s^!|L9HkK9@$7F$TkzK1&_@TP?mk`shE1j&vD!_lfq zlGps1;FU#4##xF`vo1g@Nl?hkQ$AeTAR%STc&l5_0>0fWwR3!N+IlmuUUL=K=$TwL z1ygEX?Ra3!3l^pyYec*~tTNCbHU|4}N!mnG7sPVN1xiBqsa=+seDt=cokG{zOTSyf zuTJHESzWKPj>~%me=)n2)wMaV&u=|FERiKxCxhSpRoa0tw%G^9h0Idcw1Y;2a>Cb#Bd6d3{0lP z_0a6GOjUlYh7ZEr4f?^_P`V22@+JY%zRjkHz@@I_Og-^mOVacxJdYY-pXt9JyUm&? zRF8wrU&zY^m9?|rqQ`xBRw^kW*3=vc4S5|YH9OWq81nDc{tVxn;itG3#F)e2RC);m zTBlTY%Q-aB@6zE1RsmN$l-QM><&nS$b5e$3G<`Oj>~?gb>jv?J__yiEFfx{&k7P$z z0+ZBgg-qJewA@ax1)xmWGTcfh=sN^=Z#0RqcKjR+#1`oSk-2lh?{m;qQlPv9j?QZC z;FS6fH*`LCsI2qWD2{O=FQce=SXXGy`b9Yxme`ZlY5iNceORQR2(G|ji23({R+det zI!U#L?*BZO$lV9O^PStFpN5Z2$;AVhuA z61-9kk`nx%7J-P%dOo!xOS61_!X8pQ%v&>uXMf$Fh1`t z5QS4F<|awbW~Qj^Uj1+5E)$MFKT~!n;pYCuv@C!LI`UsUr7V3{@B^XVNAggUXu_WIu>S zm2f*=S=G25Q~j>c7sA6*WiIX+U(HOjPC$_00nXw9n36rGpfz4&p)#L29;~v^QT1)R zt?&e8mN9y8HZ^_JPrU!8$^k<+Ze4JQ%}WiL-b^bSpC^>+{6irNKRXv|MhD&_{m++l z;+|xGMof3Ci-}tuUFB7>o*<5oGhvum9C)Bda7Ua&oOD%4aQ@o)?HEiG7V!hPPl3XW zpxxIOXo0Fc>NM>3Y{sB?8N=?ORK{y{pLS)|BsEWZYY47&| z`6RkBtf@TOZ5;tk{$!gSHJO=wG#uOchI_M=I~7%&sxy-|G1_>-@VMZ=JO8$32b){2 z3?8kSX@|4@13c4hp__Zqgy7v=0a7Z^LA;7%@`heNN#%LNDTph64l5URQyg2$hykp) zQegC3D+dYQwaj7MYRd8bvAX69@7+rNed()EkD{4I+<5#`{ACJtH+x*%e>E@9z!MPi z!m?4h`Z|$ljd)ztFIVK)&9tJJB`K4b3f{$-IUE5toOJ+zrW*rGvvzaRwzbcRYZ01Y z+PPq*wb%2XyAfy}IR~p)9hO3K-p*cnKsOSKGDyMAOgIFrQQ-}hn{8K6q8Yq8$L|-w zu+a}}Z!So7zY*v6B*$po^T z6PVU|lVCcyo{n(%GPeTdj7`^PXh~C1qltO(BCJ{`>uK0^c?O@Y%VN(4YJ^nb>4zyy z=5)*#RI8N`;oKz9?0zSiog^cvMRk=bHXQsO;7iibxSpM^d1=fzd~>Jv6}4@Y;Xmqv zNN`|v(sBrE0dwR@DS@5+9fh1SONPRb!><{YSXj}=)W`|#Su`8c%&KiCTf|2g{9Yj+ z!y9w;*aekaK3Q0VOD-+r;{+uG)Htd^C;NZLGyCzgrnjB4Co|@)O!a*>J&FQaNf= z6?uuVK`&x?P$O|=?#%zE0#>G+_@3dGs1Nk;>@rbkA3ET^;9dEUI;Pg12Is*XfK6}u?)3>)DO~F<$ zU*-|)cnFv_%^%`4S*ahCwEl(i)j^};vGR;x-lED~mS9JbP$ScK_;LvMESpI}g#VkN zByei~%4^3SspI&yt~>pWHVpiZg)51Pa6H+p;s_Ga-8ONr-OK=nS{*7(m)e87LgX0I zMoi9jW#ALAGzc4Wi(;a|*?!1T|Iw{vGr^YS-&4>t1u%J)psaZP6lxcKk2rakwT1bN z!vp}pWpCdz6xD_AbH>wYi;Juq#fxNpG~Bfet9$!*UEioCrtOb0xXv*PbG~nc5~?OS zSy#IQl~paT_Jj`Zg78HsyI+BkSqCEW8H7`icBb1iK?5mv?XmXcciFk}*|Ad|)7QEE zZYFZdkiRk+(mj=<>9`xeo!~5}Tbc&wNf%#h!l5O8N&W)(8SfVwVO_WF6)rP|P{V*P zG71t6?tB7&HUw?i20KUEiUw{?HoO7(!*eP$PL~cEFrozQ{>4u zlOfNH?gDlcfhmoS;%O%;X8-*A#H%Vj@-9euUa8FA@Cl9drF<$i^2rlk&c*YQgk8Xz znaAuEyTGkQDfDJy6670U&kP5g7JSZmgyJItyi;;J0X(w3A0{VTJFCAV@fUK%JQ>WJ z82w1TUY+n;GGxpNxgPPWMD@HwQx^x&?y7pt-k?#!(2ZC6F%F6651GOYhX9D|21A1Cb59iz>(7xB$Wj@v3jJIWl(RVY< zc>FImYK$Lp;?wV)-(&0rsZ$Z$G6s&!{1QvMZ0H|eWD~r- z;$W25k17W9j(6`E6lTo(OHKry4Jd2l;4XUwRdC_?)e5W*0$s0lW=M^O5=^^64Mok`t!S@GLN*AerA1 z{dkPS+bj#|P(ykt=Usv@=~m86m=c+cwj+2=YxY%EqCtlCkg5Lqa1rBS8FO0NXSo+& zAC71E{~)jZDjWtK8)<7>^AaQ?vN$D2J}`FV?yrc@MvB^9J%F206Q#0c)Ye37V>nOx zHC56lCd5uAUp%$3=?52_Kn^cyn?n1ZR9o>RO+5Wb_k_^VN6H+myxg?MKPBI!Fb%X6 zPrL{YMHbdFM$6!lsu7a-Prd@KJlHp%NH_yZc>G&CqU^QXuryoi2I^J0OvCU!uF$ME zqa?hbZzoLbql(_D0%-DqMrVP@0X5PO9}(|e%YfNI=k z<;zdK5c&Q%@+#Ir5`9h!9G9wLEo`L3ntoegZ-Kb$c@#neDVk^+(cvA9P?gial%WN2 zZG1dejPIPhq(Gm8lh~kSMsz-VoK1I@M6GL&(FKrheE*JS7%Bt3pE5O6T_Uv^jh3&9 zj~)Df`Yg%_f%NAR#;qh~YHEKe>16YQ;P7nDwEP?k*~StsyH4I#i+v{t?4@BZ$AQg`T=P|tsrgOm?-oX7iJ7hCt)c zFn+TcVIKkJYFWRmPD}r%v}O(T^Qx+`;Yfwi#om5rDw-Uch_6{l1Ol-_u3oIq%3kL` z2x%Q>?^(lc_&h&T>J1x$F)UEVbZIQhgT)a}(xP6AYC#wjkOHM2 z6A`s#J*ykMdmew&B@7i)KIN$8C9?#M!-DFwjAN6tL6U{CSWRw@rV(Wv6^QBtw0Yhd z-XKqmtu0JVqBv81=j5!d6JzqxLaLAugdQa&`pOYIXqKa4p?E;lx>}nRLdE%URqgoh za(=`Mmnotvh7(&VDxE`Z@o-={(x&a+uEC-OvY_1Zwe@}3!L=BJ0t)zP)gVAVb`Kq5b@ zFKw74QE_U>J<^CA@~7XW1X1n8=E07Sl)#ey^=CO?!)*ro7zqHo{QzTew*}vKep_ot~OO#qfOFHRWO7FEZ-C>|ckXyW=2XXvwXEF#`GOr&k@L()Lr1R|d za}p#m?v@48w-)d0B6_upMD{fG9?Tzt36G1)X7(&>qs&}mW!D@bHmhyE1IE>2Y8HikR#kPd?xD{g#nN zP3qN5Km%>q@%VgL0`n9WR_?pP=^b{ZlSe^M%Ulqr)H*rJ8a6W|-?&xQVvd~(=j^7% zJi&hH12plM#kRp-fD|zrFy+x8GbXdyrM2@|ZC`Y3o(^~Xwom@@!@BOE%uA8YuuV>3 zq%^07K84=3M~l38WkGZt1o9#_Zjvi9G9YGnKbvxQHnr)^dn;sKRz|xSXWa(?(PDfu z$Y!bRSOA+IGFpG!B~|vnhUw>p0knXR(iL635GmHYNOIW49EA_Yn49E2q_D55?j7b5 z64wk9%FKAqL5u=SaNw)^oJUm>(5~W&Izya0TKq?%mh)=GhApxv`&SY_QdbMoQKho8 zP?hqfphyoG#}pFXB54QmH!73wsZ2>YWkrXVF-5j%Z^f^i?F1ySI$A3o>odOiIApnK zio|wXvxl57EREG1kr0oMqQuV-r~xS)M6C`C6E)J#9{Sx+zB7xeLEgnxo5ma=9Db3# zY0XzE5OMirBxj|iM2{1{(Jl50fH}hQm81^!l&_dW-JSG0#rJ-TzDm=?&(}0aYFm9g z(2EqwoVY2D`FWE;-HrKV#Xjy%hprAzOL9(E5s{yBmO;`uETqINUz(*zkMC=E!N0-Q zZQg))!(z~`z`0}&Ri)LzvqJHx|Gm>^#tUo&H!v*6*Uhi(vTYgC1>ZgcSb!Wa-(9dw ziO3w16yn5xo4B)g1NF;myT=%mw8w{gWx{q^>KQ0oeY;$PkF=Yo78Ygp@j*XIyerxw zm_Uw`S$eeNTt*#r#y>L1g+5wN8yaSu%-FmgD{G}8k+m%r3D0KUJUU$}4r?VDxs~F$ zis79*lg3}_ycJt(%bQTT`R6XH!1{OQnQb@>>|T0X)`cyOh+9bUpZ;2A)<|A8#H;jy z4>x*D0Rld{6FUC&UzV34^~ToOgI6q5z*Bwj-e#QF-cw{HK_{N?+lGiSC{lqW-L){> zXCh8S{B&q;^1@~eYAT!<#vdv6Irg9m34FSl@ZapRO6;V3^BP5=zI8EqQ}E!al>9L$ zLnjN|b1Wx(#b{L9PP7)Y^ceV^9?B-%c@HARgTV5JKSryHJeHK;QE5) zbTVwN{oN4q!LZH(W>YWg^NSx7!aXQXln5tg-!8nrlRir{m1*FQHDf90fnZrUWD%zm;2 z$^Be(gr(*B{)Sx>hK;4LgB+L8RSfuu3+lnD(R@D6 zk&u!HX2*bABG9t-TF#aC#kjb6@D8+N?w`jBR7`@iPCE6%r-#3LjQOgj(I8071t)z$+yq)2ddoT=L7z9SQUH>eiiB59qE>nO_}9#7N?;*Lw&^u&J>e zuE zB-?O@S?LIBOXZvQP*P%(IbD9TTptF|C2X)YWsh*^cc3>xLLBRKf7VMJ5$>tYCz00~ zPiX47G8DK(j(TYCY(fVbniap(@CS!ti8bOxlrm6AiY(xYYLx+PcflX^@5fI#gRt}H z3y(^e_KsHkweivZFmCB1{+c}bb}7hsxz5$ABs;T-Gpw)t9WmX`db{+ z#dI*jf)+8AB?@&sz_a&E0*`&0rqPz2uKfNk1t;uYn1HRg3EAD6e5HJtZaH?kPPB8n z;hIs??`dj$!_tSR=pDl|YKfXm2^qcIg@)Re%5dG({hGRVmMKZ454RVlM?E3a>_6Pt z6_>A!G|DJENLaV`k9l*TXXEB%_(L(QCop}2Dl>qQGjb0|f-&^CRsYX4{!Uz_*4!s0BC$){cMFg3$0FRm=k} z0%*+jYs6V)0#_+X$X%HWph}a-#*jssB^Jtp5+HGK*|=GBRHyc*A-*cWSTYZa_g4m1 zl3uTrx9us6Ne!Vjv)=pVKVW%(MBmfXs&v7N{p;TLfq4xl$!1T$&5*!a_s_wt_KizV!vR{~qV zq`PeHp17H4@k~&ugfqx>VxdqHSOF&Jb3=kzt819|sSJD^d%w%$8!Vk}f^3!_#aQ-e z(2vrU;bO8Sckj7}T!&_g-Eoj}9s9$ESZO?@Ch)G5tdO$>X=BuLc1TUA#BkkL&+IT7 zYT4CfaYb=zMmZzPG{=hW1eetvmlH}bvMSMTpl{niN|ZZ4`C~s2#6WJ}&~`9II2E(? zVP0AL&@*gvB|5a)+7FckAwYwY^Nr?Ey=hN1d?WC-_2Fr&9vs7KWcMyCYgen5#@ zDik!3)y=+WX|ioAgd;yn!H27=r4@t|bRya>z3HEh=`L7=G?IDvNdp6bnpNkedBdXR z?F|_R6;8|&3uT-YZt-@x5J(3PTaskO!yZ7D06F{c1<8ZU5JQk3#8*R96xg!3-UXA1 z`RmVh6KISD9C|iyrDhug1Qb!o0HxEI0{$QmCUzpM0CBFh0*!GH3xEWmd=r9CrCM7F z+5krbXk2Z9aOi-|y@4+M_B_9#OefcZs|+`aiTGKkN&%bU?X#)p1^cq-)d!usD`2dG zf8kj{kIK~@jVlrUfMx)GunFJ=hB5AHJK%g_&6#OGzGaOHk#3V`v4q-$SVnDnP#lSB zAQYzvisZ0cyI65k7nc99wAFN4D+A)H8nj3>zK9llg0)@n<{i$j#FBLd|45k~3(#vM zMKLCW!q_ZtxKg8g)Ung8j~G_mn!vtS%N8Lmuu>iFH7;K}IxjynAuh|@pu+@CgH@$S z$AV7Hlb_?jQqMv;N$FTRNF8#=xPVsMKSXRP|adz#a=0aCiM_Tvn1at}Lhg&oB&P)8-EM8p# z{d1M~vSpwPO!kFc@?5ifMrz0VI!WufNwemD)TY*%M2r6cdmNBto8!Z(1LhJ5|KC~? zKktzxTb^_~eUR&H%Gl(jjpDjd3)YzU~#anBaS5XiP2T{D{zD__Kk$=)(!0hLQO zTv=Q#tiuJn4ALsxSgxE6+XGZ%&C5L@{9%++G6a9=ADZ{eDVRJ%7~#nOUSAQwEG}?N z89jElMP5e#1kTyIBK6Bz3oT@<5n@y^ya5xNZ-TZ-bLtoILLMyhd2DQA^&3NWe zDD(HP(%TORn%%N9u9pvAm0<zUslQ`^+v&Wzk|M0}g^L<4{a)T&8xHb{wjZX_TWx`(Xe-@kgfhVZ?h9c~Qsh7H zE)g3n-gk)a_u>vUux|5KL9u-2?cTjG!6wX8!*nou+IAkbt}()i>+h~W zI8|vJUMGr)5CbUA;L}}oqmgxpMU(!5{){6H!jU|h0dHEq z&e9T!v!`ap1pR=h!}~pZnT=)+(aBvEp4KVb)!T~)z}itucq5%Bo%l7+;+^ub5=$~~ z0-nKDn4Qs8ZO{T@Ac}7boUL(4xYK?rb~nKm9yQQLZd~!|pk_8){xt9h+1)9HGM8!0 zj@RwF}qm(U*v@3jO-AsuQ8GizYg;$Z6CGBSv0v%-{@XZmW?r>HsG1 z*m9k7Q$Vu7OWSToFm>|hf5R_b6_zXNPzgspt6vJDBSD}~e z;Z<-lzgHQp!iKSpH9GWfS_s#lo+f$TbmJWkxN(~}yqN(lJO56m9|v-$6GJE%NC2i1 z?EvhzEF2}G&3eo){O=;`pft7yJ~S{_3*Ha?2l0r`9X_VMC?z=`xvUSg+UYxnO-CS}%cdKk!=MV5iEHyZeM%to&M@qVWH2lc z@$<@z6)P)AeFir3k^eyWyC_=~6;2q=4gheDyu&M`l94Gr7_ zB7rZmaYP}g3WaJ)iwrPKaFG=_6ZR-J7>r(USxYb^5$p^G!Y3rTKL9tqKF6Y8?M>O2 zviU|f-#vCh5o;0*&r9F{5E;C0l~^M>gfmxLqplY=K09+QyaEG+yVU=NO9246S<^Xv zr%VsnW_b#SKsMbu3LPD_@LfRY%)x^3XLNk=yecH_{s>*OijP5idBU^<4@VWc95}R< z6<9959ihfH`-4c1`-n9ft-$?qvNoL+>hh8lH^U`xeR7xW*a&HNJ=n8Sn!ZW&}r3h9Q+)8EofSG zY+CU6d3f}2DjM(Fa0}^!2ZsbY`cxr8p!MbhR3xB zK-oM}Xgj}+&^jZ89i00uoLA!St~6Fb)7T(o9EL`R$BLL#gwyI}igr>StSKRe;GFdj zbjH+g-@ma4BUJ>lu%t27p~&s^F+j?1o`Eod&GjVBr@YyY=?!Q3S`sVhKbD-g|CU+W znag81p3af1FFH3GXpYr}VlP`I$R6X#Fz&(KM!DoPhIDnkAE?u*{H(&T*pUWyIbV49 zK4rDYLQzQG$I`z^%YnC9-Um$u0<(ZW0z_+lUnL*m?O8OCM4T3GiwBvfA!&ycpi?$X z6&kZEmv6BiCs=f->pQ(e^7UX~8vGrSVbAWjIRIt+khw>D8aVaV?4&ur!}ynfCGg|U zpg(JMcx_4})BYnNi|T|kiV4S05S1TCHeUd1BkD)|jNKa|9mEr3UQhb@uRP0bu3`81G_P;k0EgB)Pf3u@b*SDQjJFhP9brwASS! zIcI~b-wlxjvu7z*JY^wtDHPNm54YgHHI9p<&7=r4ebcwxwV8C6bS!<$)!*NaI7 zWwksx(?Jd}Si)|;h>x$tS%{*~Wu#u(YCdd#U1qi~x}&d#84p78b8$c&RL0i#A%jq% zqzPg*_D<9E;k3kfJ5D#n?J58`MAavnGrXxR(xXy^U=n>;2D_w)d02uj3dZ)XtR^nu z0+ch|6swe?5CEaEYOrGl`(0ovmieV4Dx7Ri zio)iEc#L91)1FUqz)17t3Dbe^KI2PtB!V4;-?b(L2jPuTQL!T-A=}VMK0*grc0%Ne z6chxaaq&nx4_`u5kPtFg?)JLqv9!-*{XU=D>$c8D#0^-5CM8=F|iQVnIYMqWLhJ<&H%SzSQ+j5O-gZ(b-s-2X!eyt% ztxBcmv1Frjs6;+}t?`8;8w}y{dF41tk&K7u5+lr^8I5rVu1_dX0$*QKVy3BQ+K-|T zo_`Tr6cyo8lFqbcHTDgSrjeG@XLT?0wWgC~Z zzUQsXeM!rxh18m;8bu)(COQQuDJfgCX z+D@gKBqtyb9IiR%o`L4i`VfLf-Nh^4UK?A&j3a~ei`0Wa2@a!)LnqF&O8-#=Q+Z@2 zJc)DM6wbD*MA|sa?ECkbp>9$zWntnO2PYiw86N~++VN0)Euj^@g(tn5sEbUiMn*%R zFU#dN_g;fDjGB36aR}tIJ}Ec;JjZkr{(JsPHreZ-6YJh7eXdb%4k6_ftOytKom3ML zYSjjhSe!bOBQ8ke@{UZm+~oFDDQK(`P-ZCfVdkJe;5(mNlvy6zYArd8j)>m>c(iXNC86gUqX0FDUc7GlqQMa&EPU>w+y zsGS?YG-H*FI%*gf=3nGFi=YOGcqS^o2B@uIDw!Wq;r(T-=kHdj`uBm0|1<#+9v&AK zBLSz8T(?yM2JkX+&BpKnL$OhC3R}u%=#nmkSTbN6m=VEpIQ#%gT&_$t;4+&Q2nH0x zZI07}+QQA>DCAF%M>9+R!KjuZ@(mo5|y2vPr8bkK`PCO$@1Vu{JwEqWbSVWU`1HOb)|-u83)f zm2#WUy?sj?9QMCL_*Q-ViltP&aoB^GELDKY$@tWy367nMVuOqpyo4lLbFprP&f~nNo-`?fANEiS{^|hg|Rc%b0*qWV#Z+)QOvP7#d zX;TRMX%@aCx{)iDZ>3#9=y|1-jem7^9WE_hl8&Tr31TNdw?WE|CG~TN`-Bjd@}OU; zhLHH?5$12mo(Z=3jy%lRpM9}Zo9Z)kKwW4Z7C$qGwb}7!+q!)gwf(_i_H04%f*9d= zn-CaYY^eA~j~L;_VTUTbUrPvOK`jdKq>jMuM6El7W)(>_N(Y5MsOgf0N#eB(xhdLc zGjtNI9DHGMxBsFdDOzbxN#d3gvMWrjsqvQCbxd)O0UR__f#OS{y1WOAB24ZuA6?jI=RFlEClR9`4fYH>KMY z4v9EwnXU}lwXgiyC6i}=5LnzG9C-^{AZp|e0>USQkABAn$ic&lS~cL&lhZo=#`q0S ziUDzf^9&L_Gp!UifR7$u%Svg3_f7Pc4-Hb)cLIAYDnqF(gh|eu=_dMn^{wGQ22?(d zk;jSndRp=McsGOZrNcy64`vl2^WTY3GPXVioawCHWf=6dA z906F$VW+vS$?BVuo>c*gr#l%4%6^Mk?#^zO)j#y> z9Y9SWOYg_2_*J(-kvEilxl1WYJMOlv{4uSU0iNWdxg0W|f}p*JLi_FkWWtwM)qSS= zZkaG*)m%S7FfG4^GVAG%`f1ZApy*r8I)gYqwwtY;!Xx+PowIwb z%u6XAoE7yXC%ML_fDN@xa`gnbq+fe~9Ce(gE9^|zsp?VJ`IqW99jr4!IHqS{Uq%n7 zlmXQ28eo3hR+qn%cH7j2R%4;sNN#WQq`l7%ZH@PxQulTZ6NJ8j*17YGl7HY*7vHm< zBcYA;SHw7{r^ISQWC4KlmH%Iy6+*sU5j3=HANO8IX{f$yqH^!#nGD(;HSstwWg&)^6wApVR-+Cq>%-wQ7J2FX;biPD~C;}WP_eIc~>UVyOWew{%= z(SiY>AOon9_8o~F!}y1VH1|9|r*ciSbvsajS&iY+@JyL7je^dq(?yixih$Jo2(ABs z&F#2#yg#mPP?tVf6T2;D?2Ue0a24V04rV7Q`7E$J!Fd>d8BsEkMN5Ie6nhajEqB1N z<}KB#+y-0@rKK)j!1{A^%%qpVC?U0w|MT6`JXv)*_pER9+$QyFp| zu*SKlBlHsW_bGlxj2`bPY^x#x+ zjzy-pAbfgX4rNKm01oYz>og;)LfBqSyfo5oXaFj33E(IhTpuuyYS-GDW{yS|*UB{u}e!(d1-RwGOA zCG^c`=NqUYE005A@1b6nmpl3+F|Yluvxk)*jz?jFH3g-lVsoCB&c4@}Af+~avaS90 zSD|rOwTC9H_mibLP3ADG%lgYR7n`lI?WnjM)7TKDw)$?+XfH_rc3NMS)>tj5uY-gn z!I;Ej3iq*KkRk?s8HvI3g@)lJrCkkyUYRIWW+zCL(7awd?UCt#n-O59qlT;l{V$xuB8o^b?iEcLQ7GI7qJR3LaNUOx4QqZ!q`k36nQV}*fNM0e{RPAMHz98& zbp{H4z?%+6sVFaoS65nn-TNY0;1p3NOu~D5aJr&Av0sk}MQ(HjXGH#k$86bh;XH?1?7<#JmEC;$&v})O5tJq>qix70r4TWVc62YN4qR&n_}$X0ySK;&eQkgCnd*Zg z@z;NBA?aP8re03IXl2#cmlmG5DzvM|MD9U5z02PK@0_h`$krOiGxzm08d`Vs)g z`eMv9PTu~pDHvV9B_>vB22a`q5qn z{|7|FUGoK#x?`p0BEM7bcHqGredivC6s3UkF8$R!62a|QH4 z=dpj3S*xmvi!XPrw<*6BVeU$-V>7s(GCMQAWuWAYf z7ddD%J=h(Sib8NPZ{AIKLcRT#+i)!^s#>nn%+#-UKyM}Slb-$Zmx}q5iNAklv$6)g zyPf-?9rdrjsob$6k735DoL7MF9R(|cQfPLj=De~>hZNBwtUn10h(+V@un~gwZfHVN z;_?sAFI42mFFO0-?DR6L#7`qv&>dzQXAK6Ecx7(EwZ`-I(jtmFw?12O!n%t9Gjqy+ zsWhhCWMWD;J=wcY0vXCv3jW0pv?cVySms623>bmr8L}tuBt9XdxPZ;Lqb2HeP2JRE zgf}x0_Fvb}h7b?d7Fw3$zSE;`nQZ&_rn-~+(LTVMTiqn@9nNKu^n{%R1`^~MJrFB8{k~@koOi|=%hoV-KnT{?m-kD*} zrUR*( z^8lrxYXdo-RS_NGOA?omb-76C%9`AZ^?()Ymow zH1;QlCKw`ANo0HJOmE?iZ`$xZ1b{Hp%tegcOLjN_favgx152p^NMHy7lJ|@iCdhfz z>+AIAK|~%zPKgw6f%T66lZraCTKNLoPR!$@DYBuhY}d9R3yT;Q>~OIIKCCYC;Q2T$ zd5h$EBsQpJk&-ke*IfVMiRG(%keeS7XOjC8DMMuc=y{! z^4t^+c<>wbm#&N7EdQilwg;U%n5e_#lkU^lzwc(%()+imACxf(P!Yi*mo^re^S_iB zB`Ay))OaZGg&pl{0)ZDq^ljG@dnvVDBgC%))fHIZo53o35;9Yy`t&ZIzs8BSxE0dF zJv3tNRUtKZ=v)to;brjO@LeYDztwC$?Yy`=91Yl%Uga3+$C9UROv?j5(q2Xg#iVOI z5+=-<1Qi1T35J>9?J@+nc}~4vA0Z-ha}1x`=J{DjzBtk$?5WB{6T5} zY3}23Q*E@Sd1V>gR614HXP#%z*2G$dOR*{4T%uR(9Lu4S29W~%lEQdHJy1{?X+uDI zeHpDHSnt>)LhNaq# zLQp{#Rc#G8!hw-S-;4FER+j+*o)Kt}`Lt`GHQ_h@(H?cYzu+Pj@Lgr=jdBi|fzff?M4}0(%btZ=T17Y1?DW1B0YQ2?l5Kt^^-THdHWXNe=al0Z zYdo#Z(L|0~&9et`mj7#Jmm>&sDHbx&X>=K%QA(E9macy%+DB=$c7SKZf^th+Z6fH-B2@y-b@~@QgA$Kpb5tJi}>XbSQRQe@4mK-Bqn$tKhRzUVC-Qu5{YBx^!?O6~FK2dwCNRD-(z98ZSOnpC2c{pj4M_l1bsqZ0;g9>ixZlD(S5TBI&ZERr794ff(96u$5-C0A=Pm^C=wO6eBcz!JR{#^V&T@qsDX$N7I+x z``<5#JY$(;OfYuj6!Sy)rYSPR5uHL>?0T=x(Y)yyEgRw#+9D#)KGk{5gT2(xlpz-Q z{o<&yTET}n#I5#(!$9NyPpqLFjl;Q|w_P2YI}P;+}-+d+os$9azh5H)&fhyKhU zrrcAA@2UHhK5faqh-D`=lZ>7ZNj{wYvP-SkWgr!s_WxjQ9-ub&y%&`J%Qdd=dPuu3 zqw&cz0hf!dw4VjLga0OKI8;-rWi`FidtdK!*2wfMFeIP{eanf=rf=lpSKOG3FceF( z>ZP;zh2KP${i&;_(^`E3(s+$)lBR97`#0Vhoj&$+wd$!wy76=JS+Dl_0j(44tJKyC z#|Qn9k?cfw>L<^x07Dc+kKd8yEn8W4!1y+NZnQKw%WKj-FrO^GZ}2QzsU05L$$zu&-A z)<~Gol$)E$=<9*S##Kc@a?pS{3B;zN9fXA2F*8Z}0x!0s(G<=5Dr}{f(0k9R6F#mu z5_o(*flXsqp@0c&w7|M7g?@`9J~!#f`r0I?&uPVA_(q9Z+OkmvvU6TVWc3(YGU&t4 z2NO2?tQ>!$@vdw7nyZlzedgfPtulIcF%V%!5NEo;5X?YFaIX8{7NL6}Jvagbu~iCP zq1pfRKpFL}WT*x+@0RTd+7xX7%+&?s;sVPaDZB3D60MnaFH|>mZF+Ao{`W8GDY?uT z&yk zo|l1QP4pDk%dar^;`^O<@pU~xT)doAjT;)HHGMkk%Yhrsi(Hzc+yB0^L}})OtEx-6 zXpmQ9Y7MhH$q(>K?cs=5z1X-0V- zeqI3AqJE<*hKFhOj^rCTBU<56kM17AkLhw0Fp@bvDlxK~b_2Fc4@X#Z2IDb~|(`8y$$nqRCDhLIH7=wrqL5yES>)839s zfVY<{5H!05b^-#VXy@!{kQ6Xlg@`Hh{W736b`qKr))RcKPi4c%IHe^dt>E_kC;(}} zR;?LW*AXBMb4SaBD9m*(6VuIoieMiz8C)bC?nn~ml^;7rk`w?2JqYAS)Uk@GH^y#Z zKj(q=Cu$CT;w?$Ow;*NdRIMe?DQ5>zxWLhPd(Pr|vG6ysR3~wuwU#)br6{l=mY1eE zuz2B`{F0-YJH3^+^e0<5(mIs{n~Yv1iYw(lWod2(a9ZtyY@H5UYQ&U+u4+=bFwv!~ zzfgU6aD|b+5A8p~ydf=oPzm(i`M-^^sM5fQbeFtM?-sM*VTW)R0rGE9#(vGyOh0s! zk5rC=H=+Mb*2J)`t%WVGLNOpGu*iO`f5Kv!nUttBxvh6>q7H~lA^bOel1c%V$Y{I3 zwV-zxf*ty$L1M)C{%^@$ojyPZFrRM4kT_ZXGs=~4`Qnrzl3wa>1G9x)+-qz~JwC_N zv0h%D8YG8I8`Afq}~L_8kE>dp6L?b4=*NUG@8o}#pMQ%!90(n1sUf4KagmUiddYGC4HdsNSzYyqTEJ2^8{L$hSqnfx|Q<9cFLj zkp|Ko>rXC`-I;-e<_zj^lmMM)Uy1!RP-Ze{T-_IB+ukZ|3H!63->)NX?`ph7=Y$@I z&SgS{zs3Xnz%a!rAA_l5;IiEebbdVT`=%PZ?HKtJba|*YzH$lARvf%He@oSf370%M z{^SI-W_q-t&fzL|`iu}`LU9i72aF>Gx{(jL{5aZnYs>Z3O50_XK4Tk9lQdu24U(ji z_rKMUIGNJuOtG`JYz$-@4|}NqTPCgzoKbcYmAO{CEASkw0(*Gf{8yoJ1$X~opP?E? z96F;hJ^YuA|N zh=3q3izdL*(4y*sI{3*!t*ScOI(k5!q^h-#!J$i4eg(Bm#SQ$Jyfr;ddo<|xnrHb8c@6I&SYWpkAa z`acKdHP$%lO01McN6#`>Qovqa^!?^%+yKuDpG&|)Q*ZU4mNqhF9^$AX(M>vo>+kdk zmuk$23c(y`CULe5McJFkFRRQy^;~QU@)Fhg?qWp5*8WRwFAUy7!$P~i_Oa=FWIX7e zp^z;Pf&kAbbA*ub|Dse23KjO!f+Ru+GxMK|Y~YDtWkm1KAX&RcbYr70B;zIy{;DQp zp-+YhbQKZb*=$%J$CmB0x`YGTzUCdkVxjgVuB?8ANx8qLrjuiSCeqNkPoLU>q7;Q6 zWE<<01#3Bn*Di%?R;jrX{Z^B)@r?97rslP#mP*8e9v#BF)TGDx+tq zDI#C3$xvW4Oo8SfDos??^Q*ctz`f6CtO3~ydxQ?4ixA1Kiagpa3yw3z$1p9#!P$fc z@T;PCnrBmm_bdH%=;H*|>wnij1%?TR)r83R`X`;IHDMF>Pf|?8Uj?e;PFh+s$fJi- z=L(y*q1u%rjZ(Jw$kvz-Q|OJ-xwi9eC{>pG%gMxYGuH`*Z1;2O{AC>FXO#*!LJm36 z61@K%mSToj1HRt7p+ktn<|Goju(`tMV+jdVgky#*Ju*=74EeSTUTp1D&48vEiurKl$`Xa|yQ7F|tT;j1P+=6)%X8$0mdd_& z%zW|ctXqD%+4HHIXYy$307CG3TA1oibVJk}rV(7d0z!HJtZ!`%Wx%t^mJQ(%_rv86 z9DWr%SsZo$756JC=zaK=z!fU=9zgHnhF2dmJA=XRY>uM~q>Ep0ve8jHYcfgnoN3il zY~%|!c0tjNqu^&QN}?L~hy8vT(30b6tMqLVvkr$L_eTX%eg!K1Ob*BH_kd6c!jcUA zZApsIm8;nvf1)L9-}C>(GF`Z!+2PHMVMIax&YWog`=ArwX39@tD&;b4I32Uy^~+jS zO-vR&W&SkAVRZTy+vkEJ(Vz<;Tw>@1VF>prIOh$bOl0F*7^WYg4LT%z?iCA&!mgrm8 zs(2j+JwqLnJI&K}Buvg?;KCdpOTUd3jY)W1<;^pKCmHEsNGIzfOb;oAr44$nGuEphT_YnewZLqQ4#}##oEnmWzg13hdRAoJ_k;h^7w01M;A9 zlj^v&T~y}pKYlTC4ulz5XF%I!(uaMlu$m6>npPJXyT$hL3x2tHp)n#z5|vVO4lhQ| zRay80`)O1TQe#2dszCx-4t*a+_~Wno=phQgC>@?Wo+VAM#_@MlQA06y@fZa=UkTgg z1!9|qouLz^AE%AP4k4gyoltbNQ{RY-`K^oY-RkFvgQAMvXF*W|z6LK{%A2SLToiwS z+RhJcTkYcu@D2kd4ZR=03$+2%8k;lWO!-n_r-M&$P%hPZ$!!jQ1|ROEif>Q+7cd^i$FSa^0|X>g!~snFx(`+WK{WFl_$vk9~3u@1Y{!rMTO3Roh)1s-yz zcf%g9h@}$)rg2njV5T4a=@jUf!@mM7f4CG*#9x`+9^R^8a~mpvL53UfxQ9f_Mk3-} z_zT?=Ku>T~-+EX`!m= zSRHw#GRoxzb!yGPVJGF)|NRdhh?;4(YH7XpQO4eq1=8PX8y^d<1F$!?>zw&{`Pu-O zDqRF1Zb{6OeNA-JE<<}H3qk{#7FJ|Gm1?e4$`376hqlh$a5@18JCej<31HCVE$0&oea2nq((J34o5(A7c;2OB}V zxzXM!ulg$5OqxDLz1*f`p(R23((fv!RsuW=$p0Oq9h}#O78b<~ljT@`BXr@ql%i+@ zqi+UQ+oBW-R=Xjld^Id9maa9nOjFhPEzr_~r8>7lW>%mpPn2c#0MEf2I0ogrb8KLA0;?s8APW0a!9u_ni_CD$~0(k{$? zVbY{g^G(}ZO@U#gB?lJ_I$m-3^m>)NNCg>rHZRc4PEdIe&Q98Bc7u$g6#P0&ZnAyS zYh?pbP{P6%n&nWS4~l03W&<^n8J1wxWxf)P3z1silQD9A8>7e!`i_lu{3?J_U6?L~EbPZkI=q?vEv0iq4+)1AC=pYu> z(SYUIS@j+cY&BB8_I`3X$*3L@0yQg%bXpkLr8TX2s=7pRwj<&3J_yAS9I~7pS;8qu zjdvZ{c2D1(B%D;QYT%-73J21+E9t{U_z%*Kl##y#|G$&>$0AIJZO0%8P6oK5gn8Jn zL2~0xyH>7POwN9ipW>wJGC2lgFpcud<6(o2r&|RUI`(k^<=C>6rebDtH08xX@NVf* zn0{pzs*QXt#?C5*T76D7la>SbpCxR#{&m-~TqQ z$On_C1A3Qy3yL}L$Rmw69#aR@U18=aSr84_&5B7IAIHnJe|yQXV?aJt-lU;(G+v_A z&dgl^hpvuASxJ6x#z8&Vf#akH$Ur+~7qzi&MjXcW4h}Tc_5Bx@hl)pZml3CMqQxD(T(81yt{$A;-y_Y=YD!&savab*hb=I3CyDi=+9; zbll{+FB@8OX4Cq4_<@~!Z6Ny3m_)-f#NC2E4R{(-Q@|(X(hGZvgHnWUng(vC^`bC? ziRpW^4q`YXnQ`DI8Xj!2cQ1}HuEEH6yUvU&QQtxRB!QN#PX5ox9#Frp6Az7Z%oP$w zE<3ZwJ-F9jP=%)dOpK>JLo!b2o(Lz`uw(iHlOH3GO7=N99P>DGTks7a?sB+OdY=o0 zO%H~R^6Fc+?!;^gEBMzAn3%GITXgP%%O&U(zI;zOG%3JlKOAuK;8WA}H6uu|4j#h# z{`JvGqM+i0NWoJu=nY4`tr^cJG`(o!tmsYdc2g+RPOrkMC@jJ~F^OUqs|SU(4ujiC z8yvB53yl2K|Jg;rt9EfC*Cj$#WzmU1_-JAZfRE&?G<7s3^0B*Jni}u9J9O#$*YD5~ zazGKP(Qh`pkqxxRn)aZb;P2fcAFL7zV%moo8L0`Kau!H>dfq00mIDPB0aY?H9{ znUFpTVC{S?q^$g4nX~ZA>C4RaiBP0c%LQrtJAl@i7T`KDuclY**?AxMT|XOx?4p1Q z;U_%A%tV&cau5r%XAK_kXLE=wv%#!SIpWI|?utNeUvn+2;5P)8CTT z@Dyh*KHtDigdCly)`m(RJ*fSyNpF5o%olL&lAfVmb!WjbSBMO+ zTXP(DZV%K?4H>V(^2U5Crebp&nnnXLE7>>iCD($o5^GXC&LGU;g)d0Wwl9JStvB_9 zbr-QSh1mVJ`cmBML?rv(Swl-QS{eUVq(ih1Q+hK0EiI_SC5P2bSjbiOTgCliVOVhs?@q?`B|woU{@-7&lK8{V zYG7O1lmP_Hejia7qaS;PE(e>iN;#eJpHB0-i(+qw`Y2r?M(n3ltJqOG0|)}OkKtNT z9Lmyw(2M*d4&u&1^Mnm|*a}VR1$LrFq$op+VRpVL8z&K`7aX?lhFs0dh0R#jrZ~6f zevzXBUT>jt50J$!y&PbiOuc*d*0YCBTpbTD2d2^)zhFx${N-U{@0Zr=mQBppX%L2`xd2K+Nh$) z{2fy(8vL|}Zau;AH}6Hdh;}hgS7SW2V@+U!X2QZ{iF|*rBpsWw_qoVPj7>JQ0=%8< z5So3xwUZCrZ<)Ww+%^!dlzd+h@I?P}xsGsRHIsGCkTcY09X-T%KTWr7{*mpeQj99J z9dnxbR+QvyIlnHYTd*7bp1ac$VM49QFCH9IJtrQD&!uS(%A4Zdd;uni*n2Hp!{l?G z^}AF|K3;8ovo{$O3E9aC_vUv7qMkYH%oLUTYlLE3s+Gat$csSk%%s^*G=)>%ZyOR!U|D~K7PTeavDcEI=e;kPM~d;3TCu(7 z3iNM$CX_Jjy2vU;-{k95K;%CmQ`Nv-O6}^BQ|OI$IwB5Al})a9W3!{DGvdfjy9BbH z{>Xvz#r<;Yu&0 zjExmP5B|L7Ss?Rq|DyUE1l_C;@lV4j^~wk48LF0aHfKzV;bZgobLjMp&V-TgsR5eI z^`z@PRodPmSQvZ&uD^9K_dh(0;KKaJK4F;MuTZ4_iLj62dXyx`X%er|ZmjQMa-FdV zen(;P`Al`uf3doXA<4=a=lc6CQ(dhUz8dj~m<|Jabf?}R{P>(D2GacqSw8p#QC+zu z?2m73@ZX|Zq#H>C;`8z+Fx_0xBm(0MKg;MDAGvVi|IkEv^%h7>5;RYZ9j9e)AD6JB z(nSn!;+sxVW%8h~^P-*G?ri8o5@#v!(x4oNWe9Wr3Sf2$JdF>&%P!9UaxLe?pGAR% z5naBPjMX>ot{LTn-4D%hdC?Ux=qEf2`_gea5fa9a&>T2gfVk)w48JC z52sy!>Mq;KX!YfA>mq95(h?+mux>=EoAr^xT|BkM(|j#-KyI8}+%xdm<^P4Sw7w%Sbb&{fCSMwR@qpj{{W9AF4FK3VA`+`Tzn-$yau2+> z%WB&O9@2%%J5@ukc=xj5eqR3IjgS6f{@a3($hW%m*GG7dA@!wOIon3oWSFdUY}9ke z-n9tZ_n?B`_y~xtqQI`}&G21BehRO@G?b=|XW<6HrH?Yt&AZ~=^5M;R zwahb7nt-Owx|GAgOELa{@h>1 zDocGl<&h-s;xU=RzAj!uO;VO=76I#Mcv<1Iv=-^PC+xF3;!jMUbbU z8p{jcu0YZ-=pCV4Hi^2~*#A1(jY&9UNvw?K&3jEc?w4od^ zS_S1rjBPOK4||M0?w(>eL&NUTOmMUJ#%NPHl~KrLNKxuXvt_`%kv4CLX=)qtGmmNwqXj4#XDld#$H~SXD^J)tj$0jC zt+slU&ibDex3<#e1CXHpl$(S#0>6EQ3Wp31o1?X14Eq}NT>et{q_c!Lr!NyCzkqpz zZqEH-r(*#OpUUGS;psFt?R5SxN+(xv>4DGg#2)3^e#^W<9LF2vw*_WW|QG;AjJj z^+*XrEe|)wkE=RpC1`x|$OEDR$=sBSN*kK|B5|Ns&g=|vPult)t}^j zKh*seO!yAO7UGsJug5s*ze{DfSu+e)B0HK)rmR{h@7NJpJc_93Ze197}{ zx*W@Rg^D%5Mb*Msub%Si7Caxwi3l7oX*m6f2Q!x~3uD3~D-r&hxq&)jd#h?^ZEJA= zp)0$gj!C4oMH^=32=X9DqV9)l)~J7ISj%6?M@I^jn~oj@iyKox9{=7-jA^?~lheVU zQpWdYOKdB!cPw!z8*C!M<)Tn)mlWo=74#R<6M%yp1f4lI|V5(rrk2a>>AU16r0Qf|T183Y#r{Bl!3WM; zxiLH0<3I!%KNg_I?D{^3{X8_d81Ut5oIN^5bD}}XgjJ8Buslzg zd0DL&i}mS6zso%rjhF@Gs0WM%+igrpwWsx#RV0&~;<ds0~MejzT@mgpXA!43_=)U+3JE5c{Vd+(J~-`D^+^CE%y{ zkhZAOh=au%aB{0)&TbN2ipgvq11A-=NPT^}T&Fp0N_bg%KaH0(x?>a(GTl`3&3bl4FoW44u(rrYdB}n6ig_fb%?_g@v#Rujb`BR* zBGU4nhMR2*=`}6;-qdixBp`AygLl+V*jd8KigSz0Zb7AIvV1pXa}($bA8jTgPoOag z8cw;`K)S7iu@>_D=jQixO*06K!}jIGk3m1roYXuVBPWlH0wBN8cs@7fR7T8iyp#$Z z>8S`P{95?>0vC$bfX;7Hfm4%!)<1KM9=_zsVxuv64yJ-yheci_Y$T>A&vqQQb^B^w zDIq*Aa|#T66->-AfPtVYbyV*{8mTcSy_6NEeuai*$88FUEL zv8B9u*fc1LD9X#yuEpAV1N}rCUNXJ?$(DK*q+H_rD~XUjl1Xn@0}1BF9`9$XiDnKL z2p0^<$3Ye{7zB6i<0s&#VM56>=S7N2ou|0GPIv@rjtR!X#y^lIV!zP3vSI&tinbST~v zxTLUi?DE+kstu&+wKrJsyf4y{fe zVFCD@(L1~`jv7Ff#X1LxZAhxj6}p!n`ST(Ik#Or-0taqki>PmK)E`jK{l{Oi#(`kG z3@a5GUu`m51i~0LN^*j!auiA@N}M@}nYUzWur>VU)raE3_M(kM3EVLG%r@qhJE-~@ z?UAm{PF7$co)9N(mQ=~}y?#%Pn(p@91uo;A6MeRE#my`NkJ1V;45vOCB`e9B4`zk# zXL@qaINd>x6zex32slk5LY+i0-MRM7Akdn^fdS=Ji%|isBS5YFu_cLlj7AmJur;j8 z2?|sn6oP>clwTH;A+1r%qONHbSaZ#L<_*e~ltYU7W_^4WO#v&GKXO~j25yH^pF$A- z#K;Qw^gt!aWHulw8{#8yIUi?3RVnN9J%j*-o34=%e^p?k(9(14V+Wm0O8P)FSr%oe z{(a&fX->Zay43ld357RPlN5!5V8{Uh8%xa<_+6SM*bJKMF2Eb-jhWdKs4d-y4>s3W zK+a29*3f4E(gGFAJt@6^ldw_zEO?W;rwFuA=fGI*q2xE9>RTBA8&N(S_ID?Q`V_rd zZ|H5I56J;>yI8WWrXGzVIt7+QMYWVNsL<1iP9(2mhV?ukTh?@Y*(MKxfUp9oy&$M= zXfg2PDD?*t+&8q0TMh}u*64;K!zzGz)_)Y2&qnY1#Zp!AyYH0ua&2LkzkrV4?GE!V`mi zX%+=VUvwhn69R@S8rNx&R`oI|ApHV>>XwInY(Mn%mBPKVkOIazehG z9W^?Tvi|mjEE04{=NrP-;Vegt;?q( zEU#DUjiTfUkT7EF(`^0faRda}F zbcm~WM=a;iYCS^8JvrkQ>Pnp`#L37o$3}l_heSJUyFC7{**0Px9SS8AsM?857?lo% zhmHV0prdHlVjsX#!~>9LLKC*$mTgsZOSL6tB@~v@_@&qesi6MO_cD-2^~BJLQg2oT zZeq2N^D$33!)K${G zx^@xyRv^t_nBAd^2~(UR;*WP4zYZ_@N7yzB^gYAwCTtW+sQU>4iD!(ej_7RK z<>#HfKtSzHL5wKTc3%@13GU}t*+bpfCxK`wJe1S6y&5YHMKGq}Xn~s+8pZY$d-`QM zEY6pI>$!j52n}r8L-^{9B{S~1tA9V%5S1VTx{+l>L8JRK%)Au(3b0ql9RC{E3*9zI zq4lp^SN9{sT%i&6I?hS)q9QbCGSWYt3?e`}D3xy0&gAi1M!?+^ZYKZRYK`Ua2d(Jp z9BaFZxN)}G0xi$$hrVA+1N|joxuPuB_%@I)w|~>|dgBQ<-DtVJIu`Hp@#agj-r+bP zK-x!_m1=L~0K4V=2U|WU}k-@`Uo#45K!`VUXd*pi@_pK zXiuLn&CQ@g#1%KkM672<8Vi0%OVoSQRFp_aP+fkm8Ye=khNjC()jw8P3!C^n$VlzQ zpSK7|mWkyob`3*^VxCvse?OH`LA43(M_8-<^!U^N*f1tN%=b;Njw{$KSk3BVaN^t1 zee`xABqp7EWXq*iWrxz+?;Ac{wY*3{)G_opKXSdGH(g5@20fwsB+7KLO3pncl9!!y zHvapr!*syE#TM=Def3>(IwM`49JfuUnq^ztf@4Z(keJ()Ow2B=k?Yxi7;2eIg$efI zqQoZ&2%^aOa9I5D?l93mf&geb!m>Pzkd&sdm51GqRh_~Lm;>*ehJYA6 zQvwFTK3SdL2JJA?Iqm9LC)#X@MpI25Z((f3Zg$X?FqoUG%<|K3|JeMK^J$f03?jik zff)Vo9?K*+nI-NNZnv=a2SJCf<=Py-FwqY;sQgKN;4rdK)* z2E4b8EY3nD_NEylQ}`M4f?pH>_h)paTkY%B4xb7m`fjb1*mlg#ylAsroe8QB(0CN9 zn;M5Rr)x;c3GbzOxE?*xpxN1Cqc!hL`zd@nK9!ZW8jzYd8y*RRA;#%u@ z|IQpBoQv4{m`beDz?MXIq$|BWrnL6@)oC2%9S9nRW`XKz@2&CaSu0rkIY2Xi6QaZE za`z}n`;b^Kqw-5ob8Ct1r*20U3`Vi?jj$LR>^SS=s@w1^8@V3I30=O>N*(9f-P!qc zA@+SvzHG6JVNVf&HH`+s;D!1qyX-?@>!_w2Xio8%1&lJ{AWblD9Oq@e>K6RTJpOAn zmx}V0{}&=C@@}ITFEUzSs%txp<`p($!$2d;eRm30Mn1F@(Llt++I6P>-K8p^=bC;G zFOfO2B=nL;7IqUpSc$~14V9PB>`|+B)K4<#a>TW~52-#pEKM({R#K(0^o>~kkBi=e z@^b5M z`l*b<-67kwnh__%1?-;KIY1=Owad?W@ek?{dNBs$zRRD>l%zrOtl-TJ5IB6c2lKTl zs=22XlN#`I|5e?buVE|trp}?W*1%m(bNaF$Jm#eM`i9?+_p`~8D?9&mJWlnNyk$<- zyci#12Y7|e4;J@S1<~Q`1gs?s+d_N9o=nprC!)*=pdywge zbmw|{EdfdrYX~BYjw<>Yye7D_=N&+FkxzVMO65hp@^ZEiUmz#gKCLbw0Y`@;$ea({ z;HDhc&Tg&`;ZzygQ|jxvLzi(*Ip8eQM>{O9?k)?N0H~X2u=jbjZ?(A&u3uNx4v=s3 zldv9SLpr<$EobhBub*vID}$THae(2~fIDl0RXm((Inb7VmdfWLl$Mg3b)4gw=Bkf3 z%l++@`KWftc^8- zaz3)DK)+vv!g6L8eRVAnX=~UIRsg|Uf@{t6QDi&!&FwmM54HvLW91t~LrXp1pZK~>=v zy(C+CMvO`vm#t~))Qjw?R~hk$AoniB@OG4fl(1WKG?CQVZ4EbR2lYJQnJcl>Qp6Y+kT(Zqn11xd{1jiQeZ_Uv2&v_PXNSVSuuD2t_~_p z15=r_!z_JOSx~V!lp{?m8sx0n=!1GUd*B5Om|xgHX*`RyrWSmnf!F1?O<2Ey^0If( z10$zF!~RJnGrq+?1Kvv*i5`Vd9EtN)Z9(@&T~_kABaAomt*xG8Yp67}BVV{Jj%KC# zmUfSN>JI=Gq(`hCMJJ=k8717rQWT;`p+j}0$$>OMw)R+OLo@9qY7w2VbQ4_Q8nQo1 ztM5fIq7osH7u-~i!;9cZPE1#9jcu))1D;e9OwBPC#$!3P3AurT2mbA1*W()(r+z_r zz4U?=n>`QpXdy1K`k{L!<|4)wK+ZgvO!QM}>7S_}51v=c)NmM4P`?V!f$+bENbvb2 z_F#j9;~HV4C$bFHJvrn1qW%wgeUsk{eeYNQqp@e8h(fdEO9G&;1yz%4j3n&-epES%RUy z^YtP8CqjOf^lx4#R!=YxLHeu9TcS(5BD57N6n!jWVD%#b^|5`#CP|r=kzz;UYVl*C zev{f8ym8abdndWIh{43;=eTx7CjD$F02c1`DbG+IC zL5pT<3mMWF*iaDJPjI1|5FE&dSR<(A7`MFtY#WbD7;{BbW$&o#TNum=>TQS8Yh%Nw zc+6YRI{tRg7`ylqv~*s=R8j^vzRvKm$5pW@g)e1NVd%SV-CVfdgyMY;0FwVOX}VR_!bhv1%c;$f^b=*h1;{2)^W9)Ts)&CDh@J2b zL2QX072?4;!@{)rU=_gD9w&GO98o(Ev>2B_e(UdZ4q|%vTJpieUC<^KIumilgy}0iCZ5Xn^0l{&qGo-n$R^BHu)1SCFQD4~ zFHW&PeJO_5_)}0k6~y>kpb3*a*z0h-ksg>{7zjxLM_uN?WJYmB{Qn>k=zZ=Z_MQlp z289voIc+zwj+H4@Hw6OQKij;`dZIil9$ifOH01I!*@GbvYIf^j&Y}xLjEb}t`?DXC z09qG97(?jB?c-P)wypG|OBvtUi8>KnVn7&_By(mu40}IG-sHGi{eh<|2M()>*+>`apQC8eyR{+ zPozA>lb!ij5wB3BXJl|@f@pa4L~J|-Mt0PvPEZ+qT#lfzO1FxKX5}A?)TY!3N1OnG zv6pam4q>}nRK!~jIaJ(OSR8NJX`0<1;O-D;GRqeo1hv(JM^t4x38IWqjT4MRs^91T zP@_iXqN!&sT?0`5yew)Q7RdR4w#w&3E!$7x-?*YYX3NNwGmO$n`QflhyqUq-OW?42 z&IjPYB{ERiq-~D9F=jq26>$u_moj|Wfml;Ha6@-79&xuhpS1~NrX?)%9n_#9+^NmR z)ap3@d^S4}ssGd1R%OpHPJ zZnu$8`M6*7-5C^scOK$NRyU}&`);e;#YmL?uluvy^71TLlyAJdTjgfFhetRgSvKw| zYdPM?&w^>S#}d_6jI+d$y=(P;mFs=&*FzHT6#!V@4TdDoX{%vAm4_<Ae+_M;Dsi zE;OAFHLc_#yNCO;@Gz>ms4-fnYPw`MTsNyWt@pZ& z2E))A&OT5;qfVUB`OvaS6qnIbh0z}EUSgme_{VlKO9oWD?MJ7NhQg{)3LP?HQoQ2z zcH~x#p$NG+Vwp|6KzE2C;!G04M&hoqLPkKGI8760{0zK6ml1604Wj1+HY(qObJ`|r zbtRSY4M)a=&Oe{XuVRqjG3DSi{;xUipVMQ?K!ZWQqNe@jq^2eZTWJ+Nyw~LZzAEG`O1~+5IVh4UC+>lkxVL1-r>i+?tQd5CqQ!u_1(_VR z@ldIMhBWOlk_T;rR`6}t5j#~_34C3{1BN@REbFwI`kWANG362R0FW7v-nxiBG+AWy zy+I2H5EXK>-?5RoIoLYbKy@!?1yO0!4EzOla-KIpv+oryu^Q3n`XSN|atJ}X`Ge|(IM`_>)L%`fR&>%4BPe-mt&{t`AP zjQnBwf)g3gkMfhWb)T@Jg@=O!X$eC3z1Ze9WVd-6LP#8Ps3g1RT4`Jz5di1 zz}r(QB>R6fK)+nf`S z!@h!L#MKin3;TR;(uW$cA|0hCV;;t9#RQazzr~iw5Zm-MWo-f!OK0FG@7oUwP};ko zHASF5hFa=ZLOg)9Zp-k*1nQX)znvo0O7sUIpe1->iv*+&;S>>y6l@0ojP2B%BmyQP zk`#nd-MeRI&fccSq5l+iV5&=Lb+J zHg?~gs)Wgr8ACw$d?2Oho@LS{AknjG(9&lXJSd);{%w(G2t0gu&uqFfPoW6c_}t9i zslJCRGmSEH{Z=xfO-QR_@n_Uv0Wq!^;cyN zJJnhH2vF+^yWJPBtSW0rh96nSOge|+F30A~cV&aO3$MMN5hJOvFsGu3lYWxV2- z$$4|8IcuUq=hu~K$RWURgbyoWgXY*XX+iGU%-mNJTSX520D%abzhszzZ{TLtmSO-w zK)%13Q^zC}n_uXJ3)^Z9ETV*`hub|Mmeh>Av)*!(22wpDk6~Rdj_DbL8?As&Fsi&8eU}z$c`b`&os>P z>pPX!{p$Gw+Nzi#WWf_^A7doVN*gN=PhbS{2WxC+QBpbJ)H?N{qr~eW0?}fZoAXV$ z@uY}Mg0W!81{$VqMLc;vMBXW7weWqe6yase?3SQS%Rr$erhxflh`o=geIxzY0x?ny zj=xAarfP0>f%E6)Gegjq19jlDiwJ`Ft2J<8@$Go274vqOpwZGz;6OrtwLkE&^acyogOWlG%6EloQ1+?pz}{= zUngP+@$Wkx7*TP{w2`19bQdJWjwYF%mEVBq*bosv>~|XXXKhVGfnAa_y122pAC{U- z$7t^=&Zgn65Uz$Wz27ogz<~Xv+7io;&5J%rHP9u=m0eItIH9ishf5w#wS7fa-!&&# zreO*uzFvLHIAx+?^BM~mRajGL5+;IxLUc;{b+Bf2Au!hb@{m2#3W7`Mpe={d2+vxt z+?el*2$-IPMV~8I*%%jJhVs|Y(qCVo@fQtvC-zK#%lr0Sp*<9UTgFspuU=?Tqi3D& zR^=Y?;#3g}Cs~pG>E$P8dITbO+5_4O(|)}V5-B2K52wo{#b_nSJ4P@aWdNFsi!gGe z4Ft62lOu;YLmLW^&FTfRTtyyc7POsyviUpDkQ(^M0|tWM!=gm$EM!>1{AT!?1QdH4 zfItp%>NxdWiKa-FRgKK3&J)fg{jM=&ZD*T;uyq?bT5P!JJ_P}yymg`h3K^#Yig!1v zU+0FVBWq~W0sA$&`aB>Kp9QEK5yx2_N9LD9NE{==_#8CIcp1CbKi7{4zS)woc0A)j``cm6YH>3Yy6>LVeVCZdxC4Pykt@@FF6xB`+`5ev3X zDV%+S=1Eq}OvcW2&#ANc_JC}Ax04br(@Vyn`)kJfr7I-CnwSbAXel}s(Es!CE}ma~ z1v2?z#IP{%D>l!dj8>o&2JG*8sY-Z{Bl89UuHA@a&J5@2 zM9|(jx5FGV*FzffgbbW{t7a=Q@Hv1seg{mgvj4tFM3M8Ih zC(_ex2Fh5IQwL|!?=k+w$~;!04zIaS(3Ar$HkhAavK@3!iX3Mid@%ye$)84apVTv; z^nZ=XHcJD5yu~I*p;f>=D4&W%t@}V8BYP0KZ8j^J%q+nHtewx?>!*)kD|Kucg!&fF zel*<&tG-zAI6gt|H(9z=f^LRBw3xRxDN=f|xfSab)N5ID9D^H|m>L=o-8|?U!h=WZwrKfMi zuVK~x!%<-wffE=2o5zDa76jsN0jFa@uFj7zEhdE(?z0L`IeW}y2Dl2#%e(k6F_ACG zBCAdbN37%?4lvs(?7-$6r9aVBJq;}Ccd{DFzF54-@iVxOqziyN`YE9;_XY5FN%Zt0 z9@yVJ!k4Z8f;`fD-$E5N#~^&JeGNqImRCx z$sN@T!(}7^pjvJofEK3ZJY#>I0Nv<%LjgKE`3(Qa0o_(E71?7fP9of(sr6m19Qqb6 zYUXXE&5M1e@sw?`8(1?mLEWm`$}3+Q-`3}yav0X?+c>^`R_)f%#uvnn;;?0zDV{~s zmWv}g3p$~acAry9d=Tz6*0$qzmA7W_<(Mf_fQ)SSBG#Mjx6}(b$`I8RA$1{dlWUkw z`a?fqaDe5PLSmEXiS+Q4&H-jwGFdQ)ruSCa8&9X z$!Sc#zwKhv7Jkz0w2Q$6ztLX5?js7V{BRVya{(TnIYAx9QV&gxm*g;-pxmI>8a?J9 z*!9O0YVx{6>>TzPJDHv;GbVzEB47Kc>&z^?rQ%IqH*0`hHVvW|F4cXgwO3G_YEheg zY=#CE4hs9y>*wL6qblkEzR{-$1=-n2OJIbq+d)NSA7^zaIve*Eaz=~^DAX6x+Ce*W zCMxMm3vhcIO$97R!g_Gi{caFp6?&XoiPUO_xf_`9bTC>qIMbRH`Ky8Kk9M(GorAh7 zy$2}x4duM7RiJ?Wr{}Wdslz7DFeW`Ntc)8~8J0ISuY3ju6t@m-c8uSz<_{~vpSUuz znGq01waWicKJ9_?vdU!a4~_#nt(!7U>JBFe^%#|{1z7%pPzM<$N0)x9J4lm2&Hu&Duhy9f1K-XpAF)dak?TwL>cC z>JlrKCyBOOB`8+_DwPp7A^Ud`?6LhtF$BuH3ic>&LWtBQSxNJCyNZ6zXr?6q#xjm~ zkAF0hMIvIQuODfw{gwr?Rnw&)>}X;4j|xJngi0wMy>hz^)G!aL(iVo^RUm*!Pzq>6 zE^Ki@SqfSSP|*+E99FBPDzf`$vj?R$6A0RS`OIn4w*Yej3lqypkac1?Rkr!7iPSS` z2S*}Z<_^&9vM=rz0hQ*al&LQ;iA`)cD!x|!0+MU8_`0hMTgfW_+G2s;jOEVPqJw`$ z*mqN|b?`(`>>X;GW_^mVgh*7To$m6whUo7GxX7Y6 z=%_k1dmT?EyQebLFkH_u-I4zUoCLew(7x%-dnN zJDRP$OrALGtwx%l^I9EO%Ti2o*%~kQdLbI>dQdC5RyDdImORQ)mUoq zwS2v@l%E)MN^=zE75EvhpyM&ZFjg;REdW2FzAoz|M3(2J>0jmntwN#jJS#~jXrVks zs6#l=7C0gn;LTuBzl}KO+ePhV{YyBJ!Od?Y!|>n2%sjl~Nyr?*;y>)VJpfws|BV{n zf&aqt3>K1fCH@ouKw{7wg58HHTum&dM}ISPEr#DeH0GSrV*`{bu)dQYt__xc@$7aL zap%g)*(x8;u0Dfn*^maO(c1YGM-tB#g4!h5qY)&*1d8r_AW5aNXDhVYY`U}z$?`?q8XcIAqZD)Z{XKAhz1%_g~aKLF5iuBco3)Tu|Nd|u;d~A zEhA{$1md{iMxJ4{J8zW+6FyLexX@gvjYC3|B#R*$3@nv_)vm`vXO?ju zwd7{mk5s4)QzuU#LXChfi6YIsn46@Jw}A$#>m*VIermUV_pE7u*A_@Cnow3k^)$fG zOktuHy;as$%zJ7T+8@NGULZ%8jKdB9y*E%-oCYFrdc~4b;OG2S$+DHwYos1v(_8M= z(F0gK-re0!|36CZ$Ar^|-2=lU9uQ{!QSXTAd)6;#;V0tCd~#}iWGcwUBkXu2!OOkJ z#dD_9n9Z=+otM!itQpKep6h?EX?aTwlzgV;-+8j0Zi!3Z3;HIkQwVNL40 zWdr00#H3am14h>64E`R(ac_3SS>qc^F&ff1c9`5a&B+%Imb?B?21@NoGZGCwDg&r3 zpMtY#WAS=QeW7i0#VWdib8(fBS^;N~zn{%Vys81-b63sdfeKue7*0D7vW$b>|-WuMD2mO=n~ za;pb1GTp+3y#j9Tag~Rk0=6Wb>s_B4j7Qv+(}XB}TyQWJs(B~v?5u#rO+^=FAG=Bc zSx|9PtVI})i8kyaMPTxKS{{Qzyp6R-izf?$!81Su$Vg=;JuPr=Xp&``8YXV(vrrqHy7>DEbw{r>w@N5s^qkOr2degP3VtGA>Lnc;S?Ted{`6)u74 zi&P;{5+ubsUMu+vgbY>Hm_3BlfmZ|3nRlr*l_@a87Y4y+q2ypOh52gRGR!8heo>QX zsG@)om@vn~u<5>29s*~U#9Qgt%p_12cLvJ?#yX=pKvsKj6|3sNS zsdE^X?t;r!w|rB;M9pImVfR=Scm*|Djljd_xWij6%(s-&whiJU#;xb$(3cgMD8y0+@Nr7=wA_3Fam@bxoQS zUd%lM?z1Ug8Gm2Riwdd3L4B}q3o9+l=_~nOA6ZR{E|8hd9sNL3y#MBa567D$qr%aP z{>|L>^mN%Yi*$sJ;j@U83(EJVa?n#oU%1V-Amo(ks<4ylXxfLnq6SZhF%nBIR*S% z@I#YX0-3g4aeuLPxGCDNu*q@0B%Cg)p$&#Yoc(Zt!bgdM>HY&P-mhlj z!As%0BGn;VPh_Ex%ZZ(>dP~M&k&x{(77V7{`J&sp24@p9HKs$>xB!)k$Qz!Lr;|JhX_?BeH!$}n< ztpCk}+(`}o;n8vX>f{O0%0LCRrxH>?TdW@?vDDW&j)}B@{$HsBnl>G2z%s_+SrhRfcHG${*GIhusy_GZv%fma9cE_~Ml)871ZZJh(4;i%N7!=x#sDlrTH88# z@%z7#NDV(Ztd+seX=?;Wg6o+=(t;cS8UPdH{3C)L(zY8t&kH7;>32AfR&&uzw_j^V} zjZzq4qcg|b2P!kVGK)2!94KVK^J*`$%Qbe<6c=g<|g5( zn?uwYuHF&;0>azQgK9Nr1$KQ4VAdDYB4c<~C=&0LK0$)grf}%A)m?{pe1e@G=(6oC z!^qDSzsQ9e!iwQic~JeIFnFW%aybvx6tn7qq1?gRFlc3J;X6top;IMUJHHMOKMx78p8fGdyxM|Ap~ zTPJS?kjQti9b_yFdc1Z5QrtIwFGHglH^vfyG;IWlgLKMHV(rKVYD4oA$d41@o4F}v zmrBu1kEUT(K6(FUM>sS+&B=(_~i+r7S9 zOFaJRcpngxWE$j2i_EBp0fxI9|Cd@Ddymvg+AT+v8c`g`W=Q&u+TPX)FE6FAvQ5375@F zn^UAk`j=!IU{9u8nNC zSm8N}QePf<+wTDr?HV^Yl`G7AwiZjms0dkq(a_S1@M9FtTbSK>ci3fMBVCk!O|)go z;)PU&EaJZicX*8e8rnwg@$KWdc}tNu!ibI=3~}7yVbc_Y`FlHIWFJ~rY1u)yujN9` zC3a}KDwC`Cbjpw7Y3x+N?A`rD+pK*=^A>KE6ipxk$5`dL^R+$?0#SoKls#yt0{uSbgo(f-9c? zm(_trKo^FTqfaSbk9`nna{^V?G^az^H)7N6a=uD{WMe=J1C{je!uZkqzH6LESQfs7 z1#gyWlr@IY08WWj{HtpXJGj=c^_eg?Tl!E=I@aGIn{tPG!DEPEYzbb}`2~@4Q*#39 zLf9DFSxB(@2v5)epJ#0nl4KG5=n}Ct09m6=qH<4wNXIL7OCaGHU_fGwC7iB3i=n`{ z4!8kD6VHkJsIZ|yHPM*00X6+mo10VMg#jTBin~irRw~6bj9qBD9mK4}evpEtTzwvW z%>4er*Mx{yg)p(%{|e9_L{_H191AHk1I$XT)-?H-;Hv36?u;Ss2hRxRPY(v6b+!<+ zPy3!gD=gO6X`{1(JE5Afok#2K-3dGb!6=(k;yds0#E}GyU%RZtO%6549>gjUYG>x7 zWx=_iP7q2x7=k8R&^aEK4p1V^(g@A%)I3!-i(texw!Td52AB)zeSssA^=etMXmLWvtzxOFr`Oo}uZ5Ev?ZZnc5u zrXN8!6zgZI@3T~wh#;1#M;t;tQ;CC!wdu!@L1m@1kgq`D#|*!QXbnp>25j*^8cY4t z+)S9g>pk`(7ac+xTGr|~2w}l^2Z&&88m?Olk<7^(GF+0Wc~(P_ zJD?7}lzA8mBDhS9O5xkjN#-nB{<&X(c1HTtr3sWh0w-jh4e&tC?xcJKp2O-d4Ojc$ zNo_e4qrHeKrlz`bIc)1ad}4oNN>(aLjbMNoB@5fBA|V>g-EH^Amzr#8A02dC)9y!u zt~oNtaIEg-!DZv6XW{&(JVqKC;<`sk-_98^y*jr;i#hIFx~U}7rvBoFq)eZJFi6FH zT$e4h!*|@xkCzK9P!;?xKPit>&$SbcORZc%6(%AEP39(iUhXsA8PMS^uPa>p4%uLz z0x}~JMcu7@5a$~C>VE++qG%Bb8v8QU&3>yy^J=O3Eq{aqiMJ|lByTH zm}AM3R1|vMTX#m9grj0d6ZzL#sb*uMl*oG5j@}ZbazYw9U@yXqOB4)6lS#42VpnX_ zG$`rPDuiN*P3^2+X-`yBkytE&a_Q1rKF@gD4S51iimcmk6>#zNsfPzAnU&!^kO}H+ ze+|SX`Q%>yG+2Fslw&nO3#U>c&{Kly=D^A}gaN4L|H+z!)X}P&VW{U$w^`8=4*Rk4 zM!;LI3TFC`;T8PJU-pS?)E{NU-d`?)T1F~RJ8=vtXlCziQhi>&kSRj@&@)beRk84L zJSK;Os(kUKLqMSOQDqr^LNO{eP~o06&)TlgQ+iQp-!Wi~9k)81SWqJEZZeG^@er zT~Tu=|EMwDiMR7cq-vn5K`}#%IiJBUasJS;NY%b}mXq-9DDc^35Ez3NlS`k?qwFSnmxsurbSMgQJMe(#FR$E-2ebW3$*N+h z$VWmB^YZZ%6SGv(g?$IrmBXH!9o7IQf4nyy+?xXa1~%K}KFJ^Ak(>2bvcA(ZkXZ}6p>cGp zN)bXe@7M?@JGwfk(-Le<&8^?r(!nkEAL-&DJfZX2bhIEkPm9G4Of=(`X z)C1zZVQ%&bNn^VKt7qv!M=Y@UcBiFafW3)I5ge9iKN0QdJX#{AA}u(6 zl)?``P$tj7>U{M=U&t;_x$?3V;(xm=*4n4dBbV+Ig7?fez`x!!Rxb1@y4-~7&x zDwWI?YvOn~Q=10izqjv&$AVCu924|oQ*KUQu%xP1RbWETtbTAH@AOY#%KwRsO)1%} z$k5o0aoKTrpwn4itt|D+5FB~aK8iBT_9GXvlT5yGbN2C3n^VZeI)C_7f*=Ge@&Fjj zrc5ZTlGVn{ory#xY?jkU51K>z?+azzr-7VUpJrtI8uS;bN1y_mgyZP3do-i-6kO?O zpM5V-@oyqfXfY2!cNf-oiE8+G2=KCX<&W7%2!XQVVdc3VDESD;Y9D?;p=cgb`79`c zKs;Whb7RG+{(u?=g`w0UwEw;A@DzJ+44s<@-JA*i7V&<8^2iZxcPjafPArk1u4wh; z8M#EmEUKz(CR%8@Yka^ zll4bzO}+2tBGE7YgL|m$2Z*geq>})mnw;qz(K8`&$%L1^CL3iFqiFJ!7MHEz6e~Ki zq@q~z>a#E>ijDctXAD$d$=UGaNRA1J^+UpMccOxdCbmET*-vh|MmDlM7h%U7n%H9b z_Lg`TwevTNfhl2;s)AbbPi}SY%aQW7inT`Z11=CUr-UPZ)hNE|Xo(&^ zr<5z6=@ApwwlaTBWFUw~x^k)zImVTs?FIcN1Mc}lRa{08`%0Q_(C1eFpR`lwP4js@ z_*3DS#WMyO@%LyOZN6&){AjRG@!_Hr_DFlI^*Wr?J31p>;4H3q2?ELLY_KEiap&+T zcY%!UX}Xh^8w4G`qgda5?&@|}-Z+EljSDed=vjQJ=2ZeaB(vG?7|7$e|Em_9KR^Qv ze`zw9*|XM7$22p6i9y~2u}XYcXe$=U#GIHfs|W?26`_%x!o~TIqeu9cK%h*h6i*b_ zk)44va!~%gh3&SEE4Ep)9n-0!6;N}g%E5oHD?U*iu|!D6wHy#Pvv!!ZjCT?19aMJG z_@kcxF#+n6BMY@xpjtUaC@%Pi3`kllDUIvoX4LBECvTm-$LUi%o9*_!|Khu)P?#)+Ujt=Rg@>-_-Ok zNVQ*0B>8-F*BMAz;bF1vn$A1FXa9CKK-=B^djGj5wJX*b>(|Ql;kC5mpzs~p9IQSk zHM#JVZ4BC4p zP{H)~AfxHS!gV%zO86$7XVg*`#kbLHsr%tU$i4oX{-7x*fY{|1XohqbfmVk`o-UFpzt(fh#6z>a_basl?If<^dU* zD234%d5(3AB*+bzrsA*G>)k!(&8J-73G`=YoPD(~6%f4bW$letHXZWl2T}E1Nil1Q zV~sH~R^PmPjC)g5Gv0kIDjVqHMo8%LTzQ78`)y|WOF|R}P`&pie4cSLuClRNG0tKP z(hO5eq^%^{tNKH?fRZ$+ZLW%w8v$~6(`t)1LMzt{#V1V2pL_zw`!3UaXKv$o{AL{m zJ1;iYL~xiI9EIHJURn$N22=+IH1@v+zc&zb^94bb@!gWh)l`QrBy8^m=+c`i#-cQB zgWm9G6u4a5uhY-oj{e1dM+&`SOCNnG$Q2%x@oZh+tuAR+ne;2ITxZ57tyrtgJo%VCQdBLG!3<(`Y==90o zwy;=cCv>T1M6%Bevy@;vcFC?CR&s+6^K{AnZGEMZbk#xYX1QjKopgf(GL+IML&zVP zWnW>?7o%@iO?r%e6mt?%h=K`Npi@^IpjK_!Qht4{fRTMIX@${xanaV#p1`{|m6$^% zl2(r@EolJ{)l0a9x;gtTCGbEt!slE5PJr1KLoOBKjgeqwT~VbmMS6{Rv>S@YB)&v7 zP*hr`syOttb7$3{+ucS5Qps_9!QO8N<3|2796RY_lmI3{af^ZASfcNiB*Cv6)j`ct zB^+N3sX=XQRbRMFlgGWW6*_IYA0t<&(hNl z>0cZOgPe$wA^!GI{uF`FO553Rxz-4qDG1+c?TPrQGp6(9VrmT#vBXeb-APpoQn3RhT!@nGmn}z% za*7sd_tg*5|0*aY%nrNw9e<9cHM&L%E_}%+m0t?@a(V5iehxA36 z-a=8{#b^he5rAbZ-Jlm3SUG)&B4qQ4BRAN1#huLLe@zJZXnxeu#(Q8}lZ|kV7sn4- zyGU<}E-p(a9(7090y5w-UlqR9sbnHCx;)YhsLwT6YKANZWa+5e21}NOF_9A-DGfUX z50>U=V-PDhCX)GUT=?FwD)qS@63RIGCfC_yX$_76#judaj4vfW8t|aRd1KekdG)pW zA^vH%M)qfw&T-n+(Y39%Q=?5T$KWu5;DH9wJ&etrFW79Crf;Tdu@``!e^_|_NHTuI z2AneG2-(IwBIh#0x(m?}`AVu(XY}8HsD%eW?j?FYLZ_Ob%;rsGR1+PP;V3v7EA_1a zZ55L#Chc|1s0GtKiJ%;Eatm!pooyEa^FOwD;169(RCjPiCvgOpy>fY0>?I~V4pqd} z9LD!tO$hOt@)(qic`!kcet9duBDG-3huz~@`0=0|o$i?xg;_wB1}!-#HY~LrcIdaN zWq)9ET)h+j^QCDLYg~R&vegA>I2hyGLN!ij^!HA?;EaV0f^28WJ$>aX1k`3rf*0m> z0Uh9gq`z-;l@au)Z(Ox_;!orbaUk{NXI@GqUZ*YBFj7wltM4u3P|$0U*;e*LPAs|n9NXo{&l4*=L9?x>A;!jb0T+L=O- zrI1)d=^jaEJDU}Na!!-Qg+I{PVjaSVrC~fpdp9J-t(fu6)LjsYKk=3po2+_9FywnT zkLG>=)QM&{=O)kbOlnxu>>VB#g^ZMEhsZcT3!!bOKe$lS^*SGHr0Z2>Y+EquQU+I$ zd=9sLu>MnekOb`m8b((8*WuvhGfdI$BoDFjqe($%Jh4oePmJ!;+^5%2QywQ4LfGvP z6#h9(sWT~r^$aA0)Qe3-o?C657-um@*Zg1{-N$v{qSu!|c!*^6J<9%wKFX|1YcNp) zc|jN+@71o7{w^N?sX+qI%Ejz?*_dOEkMcj?8#EbP?5fN2k+TYSOG814(c+DOCJ&mo zH&1%sa=f;xo@EwNjR_Kwk!9H!(0s%)6{Q2`;T$Mff6X8)w!*>3tu?0aF^MVf+rLF9 z^AKlj$w^_k@vwc1Vxqz;h6SAW8(h&P{gB!s)+-@3A?g~qS|*C@3wJb^g;*$j2v`(0 zkeYL=1hEPyg;#d=IM1;g=A$e&PvpPHCH^T$$gty;Mbj^|<09YgW_pai3_Pd&&K7w= z6Aw*rdffk0HH+L|LgK_CV;zfo4uwq7fJ*i}S@)2+2nVQLnu-09Eh7;fx=0Hj{t26? zTVhm2#*((H-T+*Woc`y<&4#Htcl~=JLqF*U{J~t;b^{{HfFLKauEu25L$23cd1&;ad3r_ z^@0RZnAzsumYj4p6>Y=R?Y;JNs|>UdQDRN{a`Bc*5^j1aJmiYA40p?p{%34=Z7=+* zfL2}4ngeK4imflX(Bq~BwfTq8Jl}Y(7>V#jQLOzE!$+svDd5Rj6-9ffeR0;Kol|Y? z`euaM%5FAPkr(A0Qp`iw?UqSXHfst6SYhO1%yRg)71f;S?0!bwK*NjcfH+UpWd)Dj zV}REHP8ty{MVLBUgr=;vkm(Os>g|>vExF#J;tu@Gz^cj41<&7s6~!cXeH{RMj>tlx z;T*lUQJ}x7>6L&ycc zPY=QP;d+`>#MA^6%fGkccw(#LT>w#zK3hbRsx4a{jdv|8`kj5j;|3%dEB`iIE`zsZ zS%F(>B!B#{_Rt)6gnXP-Ir>Ta({C8!%t`M0o9d}A+_xYe=sL)f(^RHZBc=E>vRq?o zZG+)9f`pu!mc$R(p;T!e=cGZAf{L=QHoO$JT_nf<=7ub_P=f4=OjGFW1(LI}kH22g z5~l8;iz4rLhs%^;NpL;-Wt9M|PyFvjZW(k6OTuZccD#;qOdOngQ^pX4*nC6CE01fA zEh{l2@@G#TOs9JZ5QbFM`D>eQG~0NNvi0 zljirdDPSn!aCk8W`^%>(iFA-3r-M~^Boq>e;)DF@T`6fd0&J6*(cP9NHACY#3Se_G z%cO@M%xk|h|1#21BF;cEl&>8whKjl*C-uXy_ zc29Ou)j+G4AcZ6jV`PSa1uht88z`o#5xO=rSfbCM-q4Z-yDQ9jC|Pg!?Sb4N1BHmT z75DT%gx!v438{E&D4hZHuFigS{}SNAH@Yr@q0N7gpLM}}hz~y@ya#woox&t9>Ymna z4D>c(h?c-URQdfH+wT8;&AzpFuTq9v2xwH1ok2o>nkJGZXYiJx8EYk*!Hepb^00>- zM16OVvV4F&DN|Bv=ilk|mQ8@N7I88X3=wUtiK~^Vi3tQv4!Qt2=LNik;|jkkz22pl zUybdiNYFl+Owt!?g7BJN%JYxUT0e;Lz@Ww1-A;+?1;ts7Hp+~F1Xe_KYvGB#yw8l{ zdI8ruf*(i!`#k$igDr!`y98GWRqVYJ!@s`$K~yf(2a&SSzLfchmq)XAf0pc5pJs4G z=A6oEJ(F!f!6EFLMWV}TU3<-p9rLlWqheK6^e-Y|%mZBR4hWJ-z^`)&Y6L79Ee`>e zqYy2CUGla8l_2B5auIA$3@nx-du()?AN_+fT5-XQ$}G~c?;TUlS$(xhh(5DCIN};p z(8Q_^fsmI@24s3q?SQ=%zlOzYo1L48tf*tdJ03&$S$jo@(iQ$Y@ocNQ3P`1yBWRo0 zysiqaO3baUIWc1fjw`>P(iN8BJa*Fm!9Xhy9DCs5_;^(5@QAi>XNVOjEz`yQq8@I!RH;)|K3pH1%JmRg}jw@qqk0^&#j3XnZOe z%;(cB)C3%x%`Y$PqpEF$z3BJpoo;5nrk3i+ljX9K^#6YbFHv%AvA=YxOr5oc|L zEGJ-fwqn|OsHUZc76<#=5|DC~Id{t~+%P%mBZC(daFVS{V?c*^S*{TVmd}ynPLA_%#^gs+pxRY`|>Kq+H0PKLkL9JD2x#*+Srz+YG zEi_qH7rN`(sJobpG&RY8tuJAB0h+UWl_t603DN;J%&#(GS}+vrY#)TN3^z7?58w`B z&m_fe{=+4zE}JccS#knUNm}Ml4s{RqAOw+{SC!#Q8+l9hD>+*N#Ki@WNL%Mz+253lkurn7^in` zkWTCfsa40>mf8@YotBN9$T|~%kM}@{`#AFP_NxXCM&JEiBbe--iBz#J1rQeUsx9_D zit98!4OMMJOWG9vf+}zY>Sx6vm$8`oMo(@9TQb{0wSr{{Eu`X+m#0ifXOgY%(%{ienN@9s5RW^^q-7!^Cj|DiyqxQ%{i{%U6U7ivkEU13#o@ zEx=u4S!H+EX+EvNP#PFVj3#fNJ=Q)?<3tP*ZH3?@kJOp<*W>`0&^cxs~p(Xg{3r8oqrH&|zNohf2+4&Ns?IfH?K%r=qEjBMWLQbcUAS#>xHf^l6 z7NE4wUWLIINu3oG|5FB}%PCTUnWQR#BsCZS(hZ33%7J-n3`qjBhB+VrGTZf;Ffhc= zt0d>l!y9jf#ri5(xY8US0+9&B*u+iS+*Z)2dJ5Mc#1fv)LzvZriW!7PY7|UkBpRin-vyBlUauBmu^R*M7HQ z?c6nX<4ai%B%|-8TAw5_n6n67P$!6XwyR`~ROdegI5_s7?jIE0??`Aj3r(7@ipCD~t^SZmTI$7!&56 zFZh-0WIz8u%)Ho2cSU&1hcvw1E?1;=Cff>3IN@)L)#soK@9$t8KX@CC?!uXWG7U zb=-Umj5aCx>+T}-I0e4w4we+^k}F-HBh@GSrek1j7s!N zS{{G6wM28^%tnExBesWv;K{OLgDTK1#4=h!F0 zkf^|;SBjlf4Y+fVCbVFzK+pX?o{y&m^OVwuP8i&a4ln>wSy`!%q`?HSYy5MXLl!*_W62WjqP%605MP+J?Q!oQ9%%R`@b4xUGV5?AVC+`+YNE@y~e zxl~D?*#)SkV>)P(f>8`t%;fq;HEJLQ{Fsj$k%gqIHGaph3O^lb2Pq_OfKrYD&-Pq0 zF4FCUS|I3+WWlNK$g8=MV}^gVeBw1!Zt$E7y2u(q3WV+zD_J;U=%!x2FgmBPYSrz` zUSaw1S^Vl@DzKS`%~ig!Jf@$2l5f;$|1 zI(4$b>fr+^t@C?eZyK`2HLXO)zy1#|Pieo>{X%o%hRWc7y83ih70=UF)=pz`Y3YIY zgzT`PUc?q?O-=z=YC>18#bN8LXUkWdxjK{?)`Kn&R#O;l+52pYV#vE&;p=B~VMefHJ z0V96GuJ>*2O$N+7Xf5}-0U3gNEA)=^B+ialpf10_-FzF+e@Vo>@NiN8)Do zJ})x~huok9dz}Y6H=w1Qjy;ID2sJDj{L6rY3+T?z&~<%R!p$?rZyqVDz@9XUEzOVu z-vPf`9R+vku~L`=erU1e7dpODuF7y&4)Q+Zdy+a_Y`wmsaDJ_tui}3L3}clK5SGkc z+Z$A6*-wV9Z%hl5W2aP<3=ET-uW;|&nZO=a%WsK9mzT)DZ)!PAnV+>^BDYOcwqCSk@B%p}rORj>t<}Z#~68l&VKgCUWO$To=lOtIU~C)2njYhf$YR?Mv91 za+PLCnhA*agm`5~A2t^w5lxh?07Du|9VReoA|#SG?ETu(X@zmE4u2m1-QUx?SQ9k3 zp35KTojey3ud7TxJ3HR&UuGU_%_?`WLGf96(^I*fbNP?_G_)nBBEv3lgIHHDvo=3| zdQH=R7?LjpddNX7X?xBa7%}#! z8r-DF#vtfX6N=)Cp1_J6j@=#&hBmI~j>Xh%=kYAQ1Z6erH*f)%b+Zn5%Do=^7&E9G zonW+}j_^&FMBkX$SZvuwrhC}B4S(O8c9_zJPDXE|LgCjVt?5uTxzVbmI3OU`#qRF@m{#aEcpFsuq@_ zH$t3YGP*FE7}#*iCZ@S`BC&}rVp#qBjhqJO$c?R6&opnA+c{r34E_q}@7XmOED}Hr zU#ksK)I_}IX;gJ- zYak2p$LA_0M;t_3e0ngo|0Xc!F`#1zIRbPizPA+ZigWn~P*kBnCWx{@(^ic3>j(@8 zwZyIq)3^2A3rUsjRhy9&5Jq87!g07=C_3pD;_pDVf($SY&ECmaSjeRCF6MH0)W}vb zJXh=5tH^sszjkisFeBfcp!f0PzPAc6tNMch;S! zPuv=ZZ}{Q8X0o|Y&Coxu*(%a?R}buBERH>Xleyn-1Q05h2WnYZNpK9w$a(rf^0U~e z51zY5hHDxN|2*ES8q13A0fx*!iKrZFYn8{)I!Z>fpC4I0N75UGM7n+)@6Ea*DCUHD zAU_rD1U4t{a5)s`%qvg8EUq53x`Wo7$DHtEQ}`{Ai$OVo+}VTH)*;}||3ChPBYYUK z_zx7;XBISq$fG#Rp&aQ<8y%=hLKG9&)DHi8AGpem?H$JIqtS{>Ty&dIA6$^f#7Vp; z-jjKhUDUz|c{X|UGd{q=S1LN+ue4GAtomCykOej1Co&2c zCqI!k0>-w+z93Et`^!lv(0b5o1YTQ)kt?%+VkviLp`JO zU5MSvpSF=sBV-@B%zKFe(#@uvT3M+_2=wHzxny^L_*%L;A1HqHxuTReQ|}h`o=F|CT6MQ_aN%bG-8@f{Y;xEOJ5Y+w zSUo@ixj*gM>P0CKCb|Wl>8Iji=#xR?p4MH;-Kol-R_w6s`Q{T_)Po{l0`e14_tX=A zj2J#h(=r3p!eDZ~NaQDLk+(xsC4IE*R1`9@y!~p~quiJ~rpT>Lva6PoE#3IhjU$CW zcTFFfLjh!B4ks&~Y+(tYJuG!I&hidLbryASHz=14O+zKyE^q5@5ibqM1|}Qm)Lwxj zkJicUycRpaI1dt@)Shs-QnH|MNpU3xGS|D@i_-%0R!JFGX7eG<44 zQgv=TLmU=@qNq5Km;}K(j;eei*q=Hb$I4d^ z@WA$AEvbKZjpO;aq}JbWyu-{k(6u7oo(PXc&j*GS;G#R^N^X`%$&!dZl}ySCc#t3q zBYt%)t-Z@>)V)U9#s)mWSHwtQ?BL=`xV>2Q?6++r!l^V0xqr@iF_u5`j~$c1F|z4H zwgOtMZGx+BjqAJel_s+B32bKN4XxC;gR4atk zs+ELp!D7*axkFjvB?&WVme*&!TUK}94ifW@GXxX{2xLQF2pY;5ZRZ{7eRX;E(to#wdUBpJI_Uv8}<(y=^Zf0XY4? zA;M1PkFywvzgO1TIkfGsX~1RQ>L7BeOWUwT^2ejdl=vy`Z}pUT_>es<@-G75b&jE% zI(2#OP4)Ei76V6Nse0IKHyU+41q)E@O0jAP#vr-L393XTh91z&2fl;W3T`a0s&1W; zzt(tBCSUwHL-Kb{3jrAq#*l55T~eO;x4!@tUScXcWEUnz4?SYG73p1=g65_?uz~XqCX3S}N-qL4?7f)P&Y$Jm zFh5z8qX~<2+vM0&ozrm)OPuiHJ2Z_uN{&sTmEDYEK;3wO!a0LB_#)=c^lZYanlIT; z`F8?zSCaS))~xyCgpUj6T(l{kQF)Bk?W<&)`$Tef_lwWIU_0 zia#TP;6uIEhNdQBC9vmhdVRf4y{7j0s%qjWEAFPDB`1@V;y<8V9gF(H-}naI+{*c6 zK(#`D=#NJ^QcH8|s3JckmK)$TSpLn?)|8Ji z6VdM)IV=9iJgFO6(sF5+D#1RghHUKCUs1;cQ2?Ht^7EZeL7t}+4;nD}v*uzs zw_#~`Mb!%4?cyiTw6&UFW9@1$9HZ>~N#yqwDqQ4ZXbBaDhDG^bxocz=azDl(PxG@|n&54{*>mp6Ho0_P zDycZk*RB5&yi)~xo`#30fyy2*AG1V|d@&uhT7>U;WFcM>&A~%Fi*Lv;?RvdW7Q;bR zepJ=SI%a^yN94ul4u6fj-O;Hr{gVj|#6R)=wJ^#m0~l4e^B_9pac2}D017S=(UUJG z56Vf2WwnNKL&~seA(28RMaD1mr{!H0YKS@jFS|J|b0=cUon{D>8#iTcN2m_TyV>u< z(WgfcvM3Kr$n@!=p)96@vEG3FhB8Lqo);qlzonQ^^juXOQR(Vk^y2#{fVbCLaj~2k zAAF9Gi#sTXkY1M~kFlvxMkWcRQo2jpxcSQ9I+GdYogJTF&>cSdy|_nAj~?O|lH84Z z#B9hBMLp%q$O7h4EmNGfRll68eo1uW*@$Oc53U#tNjptuIZ^;01^9GmlzKywB*Z}m zT3vHY0iow$pf5N`TWR*vgoODvBFV*Oo8#@q+F|d&wE@p5>v6p7=3vD_5{re$q7Vls zNM0HnK~ZG9Fe{6_1WL^6)DXF^=7u+aZntf~08sqdn+?DODJ`ZT=>TU8U#wA&mXqfY zm*GZ&Q+KM4si>e81PtGM2Svz;#euVQv?QL<)tL-!m)U0#7L2#$< zyvBKtm&(02PW#d;E_^rfC`kvSrs>ydc~nsi&`XtE<(Co1gAUEhW!zP{h;Z!)e!8t1 zs^;LRL{#AJo^Oe6f{G&L6T2ijSnFRnKn4?F^F)?EQ21+XQ6`PST9iL~J3mS5X+BZ~ z?@v2QhCrn%26bShsn*YZ>y#&r-&1RTHu@gIExx&)Uo6}{ndl*`8Ufyq$;`+jwe!g0 z9}d6LuRiuqhe#9JISq!;OlDO$5th$`qgqup(C={EBYZ_@l|bwfO6gICY==Lr;a6E_ z@da>hEwX!AD@>5u3l3c0=)hl5LB9pAhCjsyGhZTNE|n)VP-i~GBUe>;$qZ1YQs3+Oj0Ic}Z@b-qrsef!sq9%}fD z<9%DiGmxcfOI^v#z?ci*;uGQry!PG|*_FUkG|hVqme`Bu-!^0U#@CQE^J(jni#b{|$oAO>j`W+%l@S*JWuFk5NPdF@jbtC4hz*QeG57MCXOA>{hCnF2z_Oi)Ef zcRbf9yHpw{p@mG?Zd!l5^4sC~)?F>q58L2lHhNsQN4i zvs~PcW`A{$&@a|VJ~V3h)#)%!bif*|#5td&Z2mDdXluhT#XWaiCKveBHTZ7WYz7_A zx}1q|3Gy6OLjK?;e4ZcL3GmQ$BzfbWu1s`x#XBaTr^mRK7JuUZL=8OE!&`C>LT&%TG-GvExZqmU-$ceUPEb&|_1?RSi^xK5~Wtd8q1%bF< z0Ly0B(^Q_5OCu-%=sqc8gaB5mL$J8{Q!Y*Zrlq>fk2m*=lDC5-sw2O~~f=`oa$$oW&N9#e@HAj0Bv2chLa^Y@U3b!Bq`vw~4$&30Yia5$> zdp6u?XPn+ej0QgB)NoPuhaN~q8se0{*sRkVLM6D70nv22eBF$RJKn9{!jP{-ZIA&f zj88b#^Lc~Q=GC59PN+iJPq`6N=rUX#TM)%Fvjg-nelA4?B_8)Eey;6@fLmVi?a6iq zU_LXP_Rai5ZiFBxpll=+jdHi4D$4_N1u!<59GJ1c$9<(Cmh`!Wk#AZ5UgbV;WH78N z-IK8X&?F(yE^}_s(*q>MRD>xgSb5YNT!Ai?o$M=Zn_?Gv)7plfq?yEX2Eei7eT5axT#EYudUYp z`j*@F&udLElpNajUys;$3%!PQs|SI$vBcyLy4U)nMrj&nsL9=d$GZNbwz6W}&vW4` zK{n^tX0ghGyzF}yRgQRRk-0JV7S$dUFS#vxX{gxg{U@cvk)Y{Y4kma=@0)3EXT8>Dj_zhWYoNeo3F zjpj(z@MveNw$gbS;jM-tGjzB4@6M!XzbhrBzuNm5`S)sI{0CqKrBk#~o@Yllm;sz; zNl%;5Z=RqS;EiN}NVyd*_V|cS+$6`_qJQqluw4=ZSv9#Mg^b!-IllL2syHD*@YIXv z&>_`1#5*K|RoSg2;9PvHI>+K}ngY@{!g1vmOVV|$KTcGLz{QkhFrAvNm3h;s0a~}pKtzVxgY=U=Hub~`4d&!7O zz@qyOODB)y1d>o#sJfd42}Sn~>=>FMycV2S4Qs1hXbBWcCj2#xoV8hB)JY$i8o<0- z30q>Wd&VVlMBhDs_TPVtQKCCQBm%8Mw#`4cLC^RwjrG7ysJn`=iPMy-O> zexIe~y`$Y$XKn6}B&xgjXwYdnj?jj7yn~qQto?k-1>~ei`8)Z5nau&3B*52t=nNT7 z&c3?BBVb$ys9Zv&t{VcYH~+le4BfpOJ}mUU?1c5{`mJ^(*bz*TmI`{)O)#`i$rh1#m4RU$+tU6A{1?U?=k4&HnBavz_Z*iAzKyKmpmYE^)j0FfK% z3tsG{qLv&)cc{W>cQG1QA%x4TMpKg>w={jQD^AVrE6}c$TNL1IJhhsw7E&62rGh8A zVw=*We$+5TI}}&F$m6E%Ki`52-Zck|eNKx@ipEL^%*Yz9(LQ3A!b!DZY{MdtBXhic zU!%UIHZF%ad8sneWS@np08kCejg;C?)1YTJW8oVw;EhS|hb}Bpux7r(mJm0POX$0~ z1>pk~+4u@y$4~a*a*!#RO!bEFb0MXz8_%Apnd9iW^ zUCe0h;PK$%5(vql1G{q$NmW~EgF555T}Xc2LP);^^$Z8kCx>$RTW3f>r##)V%o&CuK7C!7crjfaXw>J>tgW zJ^8b9N|LVq2(Qp#U-M5VuSmab>o_hKz?KvmgpfFZwjEiB(6_p1Y$Yv$xzaT7#wDw` zH3fj>r0tEcSm5xh$b^8Y)PuIVhfv6U6R$!V;=5skev)knp8z9&NQmu<)?+P68!`cz zEgb>_@PC&!ZJ;2%Q8zSNo5m;5j%ziPNPAUEgNEW{H<9O+N_zC8hTEiH!yd^)$O$XZt6thc$tMvoEm9=kieIL2NKmQ8LCv~HDM&wx zP464YL6z(w#Z%6k#FFr(I=FtLZdE%_Ce9a)qvCPerCoHuhZ>1T2jjP|uJo36?^nvvF5^zdSL3E9twQJvF|>4uEB@xz$j@Dwt)Y1mnjJl;AWsC zQ>EOKwJI(ZoW8>NxNT14KtZ&X2>Utlb8R5eL)aSaLLR8uDr?^hGqmHFU%@U#ZK1Y7 z&xuCW0B{1`w(ZLKXgFC(xU@wCG_%1uUod@#7Qb^|WRyf~ivSd|onQAsmqX~ytK9X{ zSqES(qnqFd%5R_yHw3b)X=o<|Sn@h>S^(rTgU_i)adBDHC;h(DQNVJ@Soa2jk&yN7 zYCWRVy|1=3uwEP4U;L#Yv0B~a$3c=E(Q(gIFMVDOD3YWI8|Kt>)JcLSdur=9%NjMFf_NXy)so&JG}q!W(Uh_=FLz)ouo#6i-1`UTXqr09x3nFYIt!8Cw`vi?!w zd_c6426afoUmULz0%`%|3FB3EjX2T3bfq2!K$bpyK%_bF6=UwOofkX{=#Kg0R*|A> zJ-Sr63`j^4D;_!8p81(uVB%vLl#>DsPijyV2xKnxjOUDD;jDF;t3lKd^>qOFY;PUr zvF{(y>@IZbut=_Qel$LLmoy0qd8OM3T=~HH@?cf4t5N3A6=+S{$4}ANp!-@n!}#sX z?u+)Y?A4L{`HsrMP7$5MY*Hz!CO4@))(*4SL$^+azX*JbHWG$WFk$>RdXre}3$|+haeV}y7 zj>Pteok*B$aYyikcM4b1yu}!xBUUKglgl>=8pAYhbD8I#x3^!0vH~tneriKWH%sHEVlj;v1&ipcu{zpyv8Mkxt~W_mpZGN7*dR17E?#zk237zW zTl?a!orAoJ*}@T)wX1?`F&mMaO>_pnotDD~sc8e6Hfzm_EAAEe3XSN^&#{%Lkj$LVM?T{34q zKx++eaPzz+5%}*dP#lJcYv%Bcy2ME7%XKeiTd!)*)tx9DR6pg59H^vb49@*r z>#P?9SdP~eGewjwhu_ZC#3Q7-?2B_%mANJ_6?~G5q&Ig3`<6k8jn-w{u<3?$6E_m6 zgRAE+w-F=ZI5^=5lBc;fwMGY5M?_iU$~^EnB(A2JQ&*&!4CKsy<79?o(-uyvG)F#< z=}xdpxBSU& zO5@J-&8gL*h`FM4?2*u(S@d+Hx9`mgmFS~8e$;QABBg}FdD4S%oQmYibatYhMLJ(W z%=@er+b1z~E+nNSaW$`$%K8W7g8UR@WVZfP8`Ue9ZRkPsL4q~hRC4>%4=4)FHEmi5 z7cUUn7ab&?Gkw;96^iSJC_NncV(GKOg3ZT*F#nx+Ii#dEd+R}nf^2;K6n0$#@r^rU z*J(>tEQ^Rji-&SWZ@myKp}ptR2vj`*OYbSPlqp2qf{L%d7F< zHYcq!#Z*=mA}Gk0M(fzF7DEwI1o6#)oTwk2u&zS&|0~xtP)*G*2i}4m z_5joor?9OLn0lWGi+q=XhLw2*3;xR9LX!Re@+Yo-pwj~_GF#yMZYgsDbxsxL*1F;^ zp7B&3A4GrQsWRyL5(VolmzZ= zg19Tn_hNGXhWUPW<-KbmmnY%{xca$6mn7_qB2TnNqE6&f$owMfp<=?RIWV|a@weg`9|m-iGcO%m-mCGvJV<2Bx9`1b5_=ci@CSI>GwOHYykio6 zLPX1*^O*Yc^?P3_$XI%Yi6a|`3t2Mjf6lzQB$6*JJM3T)Hu0E4F*cs5!iKlLSw}O2 zC}=%u{eUiD5mb@|Z3U-IWdjnMV__ARa7*ILHQcAEH_FcREm6W3{VAeg16Ioc7x2ly z5K5gh@O3-UdoIn2b?7Wd;=i*IhkliEe;ZF2`+P`Sn1YOdS)O)&}gJK(HBnIx-cYLnM^qU}$*RkfRo1T}kSESD`XK#bXKQh%G=PV9`0_XIB_SQd_j`U}i9ds+gUOFWq_2o`>I4TeIIdepG~c2NE4H zKiXehzQWkrW%0MR;5@hgZ7Hwc4LP{FU-9q>Y@TFG6~`i0v17hPJ?!ao1~K$qZT{}u ziPXLc#y@_p{rG&Gwq*-I#|NCdPm#u#04bRDi(5e5>Pj=|H{C&I&Q5;mYJ}jO_a+x0 z+;!}Vi0JD9y@+wY(9c9g3a(C{kIajfzm7Wx)l9c9z7!aP7%$HtAug?wyS2|WL4yK) zHw1GcHsdIh2AW!~NP0WgCOE3U&6mSaQCYHd_eBE1!r(OX=l7aI{I7Wf4^zDQ4VH3*I|7HaBH< zz9sl`S4b9T#R!t#r0UBl$}z5iL%;GZ-PHBYxSr3={Lk_}A@nyd_j613_CkXP;Wn zt?Hv*CuOI{eVsf($$bQA0o;2{gvlbZES2wB_YQE)rUtDD$769DyBR=}&2wbn$aC#* zMb2O9(wUBB?kesfY1IS(-{(dGhULjHWn_Uk$Tnzx>dtc_W>Qr8{nkU2;Ca&JHPr~L z<=N`cixW~?&nOrNM_6K5QD{@ojFOKZjLXJ)H>e81xq7}4f@G?e-x3RT6FuSKZ+Wp@ z+9Mv=`kDrt-x7JK&h>wOZc*nQp@2l~X@BG8kGpbXL;gW{?OGLvHY$(tE{!I7OU+b?c?7fG2t}cMZ5YQF8CU*rDdkq*yB1spT+0O4s;8HESeG*-2;#N5(x&iGE zLV>$H*nyc7Cnm)Z>znS4(KzKnzcxhJGkr(!-9#HHhaX+W6z)_rBs5VoNI+!h4Th2CzUf-Q zKBThT%&0?1oD8|&uOV7-iqgj=aX*jlI!uGQaYxTZ3_xT>sDLw^6GMkR;$rd1@h_u) z|6@Z~(p zsQ5vHgd&FsG8(}*ED|qD#1`ZR1C+D9eiR?avs&#*2LPBp=xxLv41nFNLQesFD(To? ze9tliA>?QPKm}ADK?da1v-rCgFTptZ+!M>QQJzW~ch9y%t=bFD5oZ%$d$}1Ms$Swa zmV+S|=do|M8g<~YP52(>g=nk7SXv*$4z6c_O1$^334>JX=}ZPCQ=#txr~C+1eNtBR zK6us4X-g$-I+!n5-rD<-J}7fS)BoTauuGmQOkpl`qaxKPiQ0V2Pbn~+@Hv* zE79ave8Hk_j6BRAlEd!`4Vxj6p>}NQ=MjT9FM*K|Uq$FZAOob|&mvE%b&np#Syrph zORih>;_ZoXppe)cB1-W>)E<)Bi%>hvc$r=4JEq6-Y6MLsF$6HylJGcQ7f`T8Qoa04 z>=I5}TOxk*4P(@Y2=v>4{CC~zr*SqXobm>kET|kbuOHx+QSYPo&>RyXYVYPLH3Mw^ zyd&|x9=(2Wik4D2F=aKozr+P@9~QS6U3O4Pe87>5(b*LJpWgFPXr(}7$ibcEewPrh zzOl~su|8;rZzipT5S2%A5R>`BS;n93*3|M0$k`G(d|I&?PIrkxSOfWBK2;pvt*mNz zLM;qP%{n{pU6{+xe|?))KXWAsHYrY?3mrnP?u_W}DtvP`{Cna0i{dxprlTSmHTlO8 z(%<28)5eI4D2s;h@W_bqr0Aw)d=+CW1jQ?^|0z`AHRFXno#9P6&2|wx@FIc-j+Awbaj!-kTM29JS!jm@J9oV&QxuHng{&Rn zoz}$p)10dZdO6bXzV3wOgMTFN9>L(lM=-{PIU^B{F{Z(*^h- zR95!HvAPPU=m}-=HX|d(fg_+#T*Q7x>(+%0-$P{9N!c>77I-o-aq);{r@|b` zXUl%I=(&GWNlfxR6H@COlLcQ_l-%bzRoR){dXD6oyy*+yJ>v#_b!=%)ieL(C zXML!AOVkz{Y?A@=fVZBZyFtUB8?#$Erhm~u$GPu<1Sa_$0#ZC(f72O)1CCAqlQZ62 zT>p4ex&x%Okz{{jymiH>^Jl8yODd9>JeHKWTKoRFQYGG=lryROfXTulKn?=mOE=I9 zf7KZdl`(0@b6h_y!Dyde`y$FoQD=Ch)g&Xq~iC zq2EY~;f(xb^H&-(MIqH4#l4XoGR!awnE56HJiX)*33+%5aFGH}j;FF2Q-LnPW=^5Q zRd|+XX?uCFt|fn!@rCvrH?hz<qHL|}Z7A*z{}-66VIFqLhKliYe`^#7Pc7ju&rGm#_QjQjoG z1=FwxKUt7~AT9SC!v4g{Gu$muQm17%J0WD+Fu_p|r^Yl)*F}G3Qm(p~Dhsedc7~pA z&LA_fWFh_!Zx*|(xslOd@~vepI`%qZKeHq9#?6jbz=C^Xcwy8PYe$e`(pqZmP0&L) zV`o0);HKrr7thAS4>ye6vEq`s;&Y5OL_*DPb?l;kFgS9djS(D{6r}?m%&wX`_CsV< zeWPB4-PaI%4xH3keFmnQyoA z1uH}~C4J!%b0;>z^JpofiEwt4{m<+eG#LUlu$dBCpN=$*6+OemqdpZ9ke_{;|6wKc zTD_(@2!d_i()%8Ahq7l&qi5d!_*|BZ19o)8!3RczlGZ@GL2j7h+FO^74ZkYLV0BKA z?hJmzy@o=~TE&BMf37!%7b^;VG*Ad*aM;+O4z=a`o+fRIk78s@4v80nXN52chHL$l z&;>`zzeDsKGp#={E>l{Xp5&KR!T(+RwZ>wwf~#TASrGla)c?vYCDRYB7cFWQO%H`k zk;i+u{l2e98;Jml{eep1bYXC;aYwrp4e5*!#zJ+DegD|==7arsXy*;)y(a9f!c{p{ zCnHM1B(m;WMta6#6@(7WAXPwjYdrSBqzp#=2D`y~krob0R6BX2HZ_18Dm>4-X2aSM z7-LWQ(d{D?)myMeUTXF4Ls|@RxSTCXQte!1^^O(#t}%Zi%;QmFZ?>&G$P&EGBHfFo zMsVU<+VVe-7aIer&3TZJ#Ud@?<4o1vcmKckk4M|uO_g&Tazxri%xqq0<@kcm_2!UU zbh6>Maqnie94_0(c&SM?Jjz|1sY)(NY9cW=6?Lslm!goVyJjjkQ1X(?(`F2?Zd>Z6 z(J_2evN7yt9zGCd$}@TCnMr3`K_#x0Hwc(~OF!dw#I+{FpZ~_r%_1FquiCE7FAojy zi&(3}rv!@vJsZIBDw(0|iCrTuHP2II@+I}i@9pg0D)%CdBTi1?Q7g16o1a^#c`FdA zuuQ%lyl{)5$3Ye)&8&`W{p-oR7vYKrIi}i`l0l#~34^f+7C9=(cGWndfgIvq4^=iJ zlPaJ~MQsz}#NqBe7>U263=UJeg!?C6-Ck|EaRa_ip1l_QXbV3s+%Mhyd8)E!% zOwjbuz}gk-p&|sKPJsEj3B3g=)i579%+pzTdY z)GCu0%l&KPDNv$h4AZ$6l_qe9IAsTHZ9FFeL_qU&hmYmxJm~46^g#cVgK-PCaFH9X z3p*#%2xIGIT&Rfp4K={MunpkObw5HK>X%h+G_vEdCw!L3eys`eMykYz>K5|J#U39u zANzcd%(n?DWFP!yj6I~gx8xc?1&utqTO^&{Y(P>8m#Y7D>xe)v%b)uB@{o48F`b8& zP*WRQGZUM;m4oG5krSZ2*G)GZ-}T7;5yoP$;{E22o}Us0YVj3O>)xAu>4$an?9kcF zw(djU+;=~tCn0h-N*J9!_7X7g<3=aH%}^o{J-$&i>PQg=PU#Kg^FUtUl*k~0-Y)=i zqb^w{yt3_;lK5kM_q+i4XX~-bm@kj8|JUbl5DXJipP5XhG5IeF!JKf(^?$F_PnrrQ z%hQTrK^qubTp~3n8NkFAPou|Jgfp8)Z210-cT=WgIScyTcOZ>MJ*HubXpNUf zD@Ao9ufBJU=)g8`WfSO>uVgs%U%Mse>H`ou`1VSzh1KhdM5T15c_Hve`Iewn7Pb4_ zBVk$e_6d$0<-*Z!3IXW&)v+i;`d&(s>m=Q!NVgn%JE~;sJx-Af+4Xf=HX*gZO^2a?Op=;3L+p3Y1H~_6 z(_orYOcFtFKzOb8bR6vtRGS|gT9uURSOltOX9qRmA83(2^Uv+`Sw+(J#3GqX!Ro;n z@vtXVjm#v;SV3huypSZlG=$P_%?u7k7~hz<^N(~>RYFain9@+++z*#?P2S$Ks&D=# z)EteCf` zfw+lDg^or9juxRrh1~-Cj#~zx1h^$AVD`^IZf^U=ZDg22-+7 z!TxJf32#@@D<6QRJHUWYHEAP!H77ay4#Z*A!UlRMVN+tpSW_o+1Tl zZ)@w=YYcT(H&G)p7B9B`z=CEhktXAI9X!!pDsJFLb#!h%dXiz9JwqN!W6E0S$LXi zoI!sjBN}Uv+ZP1lA+Cmumiz9szS`!n3_xb+M_aMPps6KDMzQB5H^To@3@OyMzAt~2 z<`C{Xm`5h`Ze`=X0!e*1DijnLgMG{J{m(TJH~{MFU|ZysUB$Xkbw{otU<3gSsGW< z1NO5k(oGQFrquw`^x^^5TinpRFO!pohFfIJRIkh1uD0%M0p(XHB%uQ8t6loL6zDr!985LCZ2^uBGF_}Ru?;=YSV`% z)Q;=~i%JuI-;@B0c|-c@#je?WWtu;8ytfGfRWDA#HXj#fxwcri=raqU&2to<82|%8 zXV)e*(rNcjk#3)3ANMl3_UYPsJfMJUdpw&ZBE^?96~FOd{iri!e_|HbyjM@~gr7Wu zTYV*cG!l=^7c-ti{@-cS*M2j!9Hw@TvkewMyb8p;d9Ml;%n>@vm;yX^ceNMyG66XO zjHm+*s{e|3==mN<$@e3-ax1zuDBd?Ly@zeqxia>9_iq4WrvSZ2m>Sc`tX<8KH8w7V zXV{LVXXN^e1!ePWMrqh0bfwy1OToByC~$rRh*61WS@-Jk^>)GM2MW}g(G4p*2rCNY z<~6gbSoB0;6oC7dsEe9v41Cl z#5rzOw!<|=iWVqT7s@{cjSDox{%|o1ErE$$kgt?7u3hd3HK=_2+8kJJ@tHj zg%T<*YLL+2g0uhr!RC~W#~n&86p7iA)D{dmJ=#x z6!=b~_P_srg|^zzF4aS{?4V0eY6-3HRfn3_*_9Jfe{!e97{d@UovQuZ7yT#35_Vfz zR(M7x{#OPvbE79Wy)PM#Y%3oPp&Qi#x87ZcT)I0P&?2PVeHGZgK5{VSy)+Gp9d(i< z0ow2Mtkn&mWzq0|{6*7{u)2Cf7y?rPI&p zr_8%1S+OJ6Bn`Mby>&x$sP$jo^a(Iiol{U#N)GHnRNgoWlvP5;NqS|d&%KJd6>*P$ z@$BNx+Ww3tN_=r z;M3#Jhf7#B5l65B3w#izl*n|&(3;?nw5?4}+TLXG4oetg2e<~1MPRK?%7qxZEn2pN z7G4pxs7f29BUm=D4vAF#{VyPT`fs}YVsf9uBe0@9a(&FygObpf5=g1CI$hkYpeKB* zRXKTI=74*eAWf^EKGTfRe#&R0)Ejxu*b#S4czbIF;8Yact(fE`09qV7O{}H=d?J79 z0Lu*2%vOT90HqtL7%adCEuSB+AkzR%K(fEbGn8A)(nD%{%r-AEaus$3T&bK|cbP&jnR78S1b9>h z|K=mC*c_bjOc)fYf^Ml`$-AvJ`zyYtc6e&cK+Z!0+xG5+E?enl*-c0dc~AW1ma8;FOA_ec zrjujbwry?l{uUC&Ls-|uIpv1-_~{)<6j=Nxzf&jRna8rvXGl^MI=kpuqN)S6ZBs|cq4VtVrUt_Ls=qx1!I7nyX z^u8r++b^T)5$03mLwmGl!qps=6!Zf1yk5De7d1dW@OArN+ZL6nN{GDR z({UP3#X;Li_gpD^R$s>5t60UMjY3VR&VHs)2!(EQo>G8+Soye2DXK<6d@!0pXV<=I~3U9|+h%tAtAsxF*X}$^% z_HB1He%MHQm)Z00RbUdN$+C3xyt|B@Z}%fIJ*W#>fW=}=Qm#S$z)+h_ol)KZ(A}?% zo}?sSksK89e&-~$fRCj-00mG0kM+O+3!cEPO#l>l1Qq}Q8DYrNfXm_@ibB6KRCD<* zAhS|`>F6xpqFLbW^e9pyn?ihCPCm#o1pI4uWOsL1q?_cpK*1w)lp1kt%6bV}$TL7x zCRoTay1;YruR@9PX4GpXQENCqmB|>R1-QyQGi65_m2?vk)HF*?-jv{jhlz98PVTs^ zls=NgCGNo+2xOf7)mzf??#&j3lgg0~Oo2d^-EJ$JH+sPL3~;oh>zO?7QaE0U28-O1 z7p~YS%k1%!ocX%&6|4VaT#~E4pbQfyL$@R}%Dss4BQd!+ zs_VS4=FV!O)OWQV)wY5J`Qjq$qJ;z&Aa_00`x)KJl(H}6@YeB!QoQd~GMv1}s6sQ9 z7A!`zK(3{bNSM|0*7wx5UB`Zli~_h6HK}_Ekx_lp12i7kPEo|EDqU1k?96hJaq(|6^nYZazt)fd*T5zQmSwi!q8fiy+?1Nmi=nr-{7gOmQW;%e--Vbc zl+_scN*y9zsujF(_iv#$XUV?_&aG(Q$TNa~aYu)7;i&LLkp-#0Y4hE(g#kCUt(!_$ z$Bd;N23Pl?MOgf7{*8Od8rHoWS2N|rKM^(xWG<3XKj3^BNTWep%ZA!-PS^F($D!E? zkT^oCd*p#i++6Kb1LYZUvUt?B?HFDl-%f^ zCBdJ`jNpzcNx3vHm2^W0EfJif$A1|y4XZB_yL^wj(V}0Y#Vd0O!c|aKElAg7mK>^& zD6tzD2+n?7jCVrJ@J?d5TK(l-g*4ZRhz(*4{ys2?OxEeck3f3L!d~bBTu+LvIfSD7 z0|aKcv?&Y?{Ok#DG&tZHvb;;jCzhS^0ej zDfXoR?D#U_AuVf(Ae8fzS7NN(c$Od(?0MY=Fk7p;YMP;QJar18&Z^p*w8w0@#lrRY z&}EK33P$0H`O6z_O+?-Ek=4L=)D1&tvqBj>+xXgh^DCA!J-;K~e-L=p;_4Fka)z(9 z65}9m6aQun9dDAs%*+JOQTR;ep@{-!AP%=Ojful2G;dxW5S3~@5E{-H9)-dXc2#hgSn&QKIGl1@zmzJ0%eTc^Re$v#z#0+Z41?(3cm2yj}tS^sVHYI^~~V-1Tm zekV_n$1(`;M2Ok)9g8I}T?5n~Y){q7ukFf$46B#I`NdmIF#Aoj659?QyBFVL{!U=o zFu*$CHK_AwZerS1dI6%$4T*}`boG$;8TH}S*(|k$+JJMzp;`0nCtr%H5kvi;QjDiv zY;XMf6Li{iFwE}KUVY%D$YNh+v2CHXtNlZg(^ZFNA@{LLMz-o5dE@0pW2k=*t*{Mh z%4W!2?7w_Sk9Av7{+e8{OTDHw5rII2#cJ-N;aH2wyV)`&lHZYye?{{z64!eWJZs1{ z0EYQg^nD@PA1!vzhAp5?j7Ja8WWMMz<)o`RQ2djf7WFoVLG+KQ+ufTc*Ac^V4i0M0 zwfh1J4Ri_dC@e}2JnGDk7mqT92HpnKuulZRxK-${wifs9^>ub!&QZCw*2q2NCs16G zQ+D-k?nA5@+5NRu=)&jRrx;5{QgGb^Q>`BP@MWxEOF~fW#CNjVSEg`usA++dDw843 zkCcoKu_2vv^*Wg#Ch>~+zkBpeYZ;CjX0XWO{gBCZyU?Cgw^=BE*)?vj%q|f;;z;@l zP58z><++~0$T)fg0z&7+&a)D$l$h+3vV#jc?jjGdQ+QP8Krw7~c8@nZ{^$Qm6=)Ni zc5X9ST@h7BF}MWerZ|>stSLV@R1|{ z?_v@asI0s+Bo||q1H~Gv?_(01oOp`%rU6o>cx;vT08xJ3vhtEQa$0sjchvjMAun8@ zAHnc1J{3I3o|FAAPUy~km~U!;G}6p`&`zT?yAlOqZyt&44Qw>}JVL9vi>q#9&I~=- zmEGP%|9LPZC9thj9*d2=QhRE8z?Q{$+im|reu$hFset*>oz?q)Y_5ig!kD05=-+J1 ziPasy5;EOEE;4)oLfSI~v5bFSp5yS`$-T{#P%cw_}pS5qa_54DuhL=AlQ zaW@OeCf;gphE*&#m!Sp63&B26cZr_Yp1T)tZ#|J0oaGr{;V(wOy64=*+j6{(8gN}C zz3eW(mfBX(!exmgoD(yPP@pQT2SVr!tcWd)KzwfIelgG4D!FVxVIm3{NGEPJH$=Ts zgCEb84%B>yl@dzPd6oSFcHKeoPSowP3@@bU|Et7L9R_Qo}~qGMae_Vy7_3D z+KhxGV`Gq8DT)_}ZUz>MH`F^L=R0|#elb(BRdXM!L6-p7uL~T5w}qwiel==YZf|l z^;<%L8$2bC#XP$}WpfPMtvyMl<6mmVS-Vy=fCldv7FhLnMN?7dW-;Lt$XO^7b*#dsf5q%OULHq`I&lYCgQeESmS8>Zp$6gA#^9u@X5? zVm+}gW|3{PtsTy9X1QD;HP9j9oqlrgdmHCYezL#Tbmk??DxrCP8?dA$rnrFs+PNVq z1h;(z#d5l*A>Uzh%ElcCKwUq|i!qg@y4|d9H-sby%tl|r(i9Aw@uDu#k8oLGC&&&a zpL~cj1yio8aXRwRwd%U#bu&kOFA2kQ)}~i6-_z2*Rwa0JXEKE4+TJDc4HTIHNV$Qz%jOk zr5~9Hc-Gu!aE^H>F%Vp8;F;q_ojCL8@23T`+5la^4b_IlO>8k{)*nEth;Q&NnAUk- zCz8_)$I`#ncT8b)My1oftC24Hi%#{6+U%bFzRo9+#`(jo95*3b51$=l- z2d5Hs6(FR0&V?rq6fqv^NjT^RgZtgF6Jz>%zFq_5qO}iqetlX`XDFMDKwBzY6l`dc z=t8O%9J3Vw-112{urTdi_aG9jvx;r&>f;7BDW>-W#?ZZLm?;PVyGqS1_z7yi#ru@6p1#3Nx(z75 z8+VTn?1D8x9BQto;UzyK+wMhsj#uM2j@E`N42KI}h?bVLNw%Cxs{+W;M90 zOLzrF5@RD~@3kTyxB_@|0fHk4`bB`DfOV>)WTNf~(BesoklT-d8F`Y(UKXZ~i_WI* z!=-o$h5iyvLN12u@&zOQ)#JgN>5+^VQq zGcwziLzu)&FZ0t1C^|R@WS5Uy!S<_Vvo&fDq#t4l_e)dASPiym(nj3F!O`n7m@{|W z!n=VqCIY~b%+S%RwG@t}Gk1O3NF&`A$}PRxyx7?YUV&Z7arJ%>4%lRN;qcYfTrzY? zNr5z`8~jzADA9O?vy3BDX)i5TbuMzmdy;2r7$uI}0sT(zhc(O4tf#+KQ^pDyg%IZ! za>qb<1!NDzOJ+NS14;RfT_+j!T(5(s{8e-Pq6<-sMB>_P=y|b({YNvXOcBx`clYkR zVl`7mO~B?LS;KDwcY&mW+V=&_Q(q$0s0YZ|jr)cfO@|_3iudZ%7Q_Tybf%JCZD0_) zq1w=2(r0@GNaXAg5;Toi97kF%7HxN9AhM-Um?2WConphj!rv-ikO~aI9;Pdu7Qt}2 zo-VSDrwP-)b)hQFe%r(s=&%yU8-poe z-B~|rIM_i8%P!9L07S{;>Q;`W~J4GjZ)k0t<6%HS(x~hG?G@C`E5gQ&8&R2 zMH~nv=0lRYY!6$tc6qonr0_`XvG8k_w~s{llm=dP;m}GS7^17G7Gt}Ez_u2$Ba+EM zftz7eq)c@F{Ei`Hxv%ui%9zpx5fpi@@C(A@uyiooqzUW-FRxtf&Jd!jFD|GIbnuFf zRvwx8%59;tqlnEPm=&(f=AF~y&(N{S<7(&~i>!=PyIyr#(n`fAxy&-3jd@UDSadwj zUr=XAu50vi-_iO|o&;puf^a3HsWvQhITvf4XJMHkA);_a-o~Y8kPaZ3@GE+z-^L%| z=Q-dmEESb4adR$@t5w8Uo;gR{vEM;S3F0Kj0b~0OvbY98V!>$qYwi;e4!o^Kr!Ihs z)z(bzqwMqdD8vKh-x(V#{CzU1`JjfFc3f!T!ZM?7D`uJVK9=8Sl#c~;v~U~<7=lN( z#N@?XYrSMQtTmSTPHWNaqshEkX?$}#?HbB?HX!^eXHP}yZ|r=d&3bI}m#g{7YRO~0 z&2VcqBgoeBgfv1`LVQIdcmS4uQ3iCT$p&M|#G|77u%Qfr)p?^$ywKwg&8>X935{bS z9fJAZ+n2u5j+=D{=uC({vS2VBTKa1Ug(K2OlaQ3Z`?xBqdGAGHfXSSmPH9Xeh+0J< zkrYEelk{L#K1*k&l=+0KF!g^LHgDCFPnHee3T~-@fC2i049W9+7%%_#QHp~pw}pB7 zHYuj-Gz9Gp)R^o`g;ag4@cvdibOCDPH;-UxJ|bSxzmojLB8aXj9CyT%SV%i1H_wC3dKKI zFlkdsy)}*(Srn0Eipi&{J3YdXXvHU=?JPQ0yUvqMbSYm4w9v(tMMl=!#(0z10hr0G zA-~5N;+*k{B*&`4&4i^G<4m9mnmE>|babE&c6}gtj=3&I`FvyFr2eQ{Gb@6@fBGAX z44*GloWl>ASVO?`e@$#tbPoHuq7b%D$x-~{*Nn_F1~m3qdZpx$kp*lkjJQ#I*VcMI z=;@W;#ou<7ZDVv^8#iy~Hd3yhfx88`NTu}0ngnoPwE2?QI?fZubkoeRqTIqP-<$P#rV} zcLy9I)8Py&vMU`Ec-KT7C#Qm;-06V2kp=JdZ!&X>mETQ4&9H4!=qo3fwK@G0vbmu* z=_oN$iV|#|zn7w~H*geQY4d$V>N7_fipk(GhXj=0;)C5yT}rC{S$N?xi*`*>!PT^0 z^X44~&EF&U=mcX9Rg7Qi9Z6wM4LvqxUd$Xw#~`ZB-jLmoom3b9VM?ZN3*?R>DCy#+ z#Cr6+hjcOAi8^4oC)rl%w426Xyx=IgW%XLiLhydgXEn^ra-*+qZOyDpq<%9Xooq6D))z zRz6C7s<~nTZBFnmfj4RR*%?YLx`^gC3L0ATQ{3O^cslgNGDhu}*i&PB1wmYmEuimH zr5!$Ra86s6dT-+Qed4o(Cl$=Y(U&(6Yk}?8LAm3Hi3x>(QqZ3;nJPVG)A0H*knb8v zVq2HavxDp9Ed~R|2ICsz5u|Dx@%>WefMtn1=^FO8`Cvqg-^=c@>K~I~?tM*%(N5n= zM7|fDF1G)WzX4?64kPvP_xcv*^4L5xGou?bsNZg z;<&Z08F@Ynxo7g03XU)#2V7&Xr;a!#s2MDlRue%GGYBq=FUmUMg+*RS(J*Gt8TnHe zp~YMtLq7tFfTn6CuAu5XQvxtlZ9Ylct76XX-avGszCLbu%%${IFFg6E#?;ccAfLSS z&tNZ#s>>+^7eu;3j#X4omz#XW0BVLSGr{JOX&#udy|)NNy`qekYCZPBS}YVeQ*otf zAAfCXTz1bf|>ZfH<%PGBeN)8@*l?WR^tCy$Q@-P zeWUmgjT)im1KtWWQzcfFJU!cYbM?T8N7E?wR`_i)Vy8%j->8mpCW8OHj?sy9E$^;# zXkcfu3xaQZ-E5FCMrEK4dO6RZ=v9^@GF4WLJFb>s*|iv!kOKNX=S!0ea#T|DM7IO* zRCJBue z^vsNGca$$VSB)B~zi|O{{?8RY1>Y=|nyqQIS%cRP^lI@3;^$RAfm8wBp9hm>asn)| z$hOFlyg+&)1P~(fY;MpMI&Ap^f+c$+djJcrAYXiV2AAs+{%~LqLje6S8Yln< z)BwHcn2m%J9&7?{zvarifnS}PZ_y&1^&Fg}eW97^wO@#IUnnJ;2WHk1nZ?biDaMFO zydh8T$npfY2Mt0VxTQqU;qzs67{N}hB{ijgt}>FLlCbO3X~WssDc<{sUqfY z_DTYYM9$n7A(Qf}uC1*SOw2nchog(EjVlJpm@S$bT>|H6LfbW=j{V#N+;#coQiO1}Y>FPqib}yK+2Hu2B4Y;Pb7nh ztHSIb`rBZ9Nn~{_{(}WOij?wfzKN$zS@O?oe@Ws#Z+E|lQKevj^FuJR&}dA)V}wYD z9$EFSCy@i_pM+qWRz)*UKd!Tw@}Jr%O5yxHqg!8g%!Oj#d&V1f;2X%*$av3!uSInY zh^5)#0~IKx6|y*E`(~A`u7QNSAnBX| zD_$(ez5;+S;q=k-00NP9YjxgKLv))IaQ4iu&`H`7!oyH^)}ux7J0(|DG+LXmOAuzC zb=*M|>;aa&0ig3?_aqf0@sJ@Y%i zA|)a#^xYW;06R~01PRBhH0zm{$?&~(>qc2MBx3RKttvRn40F)4z;vNO%#_a(kZB!# zF;WzX$FH5MeE(V*S?p;z`5xT54ECY3sSQ*3XR@WBgT_w_3P{ddq=ck)T8^t41d)cW zOwj{Mmh$FJV$OS2*b%a*2V)C-ffhEYE?0?QG#Nin4f8U6J*^t z#-MCx8hLtB3WGCfR0MU8Cof{AUBHjWH_gR{Ehjz-B`Bt2 zJ5^=CytbxCJFBqQtkLMMpA%rIuDZX2l7(^dgXu!1}Q_HEzHvYvfMsGa9iGnlVsj+_IDT0oghN#6{bN`91@1wlBY2i^6z?^Y%YS|>j2~Wzz(Q=(%B!L0c`RvinOTFll zQ~9N3XI0pBIHx?+v;Iv^?Rk3@eY{@bXk_*w%uM^+#3vS|nd)8xdICw)r5m$__$_I{ zwxr9Ul*umny3&$GU8$(tp7FzJI*rdg=Sm(QmibSEZysu##6Dowy-sHci6}dg1`W2M z)_Lx-%N<^yEbvGpVMWIaT|&;#O$iu2xikw60Ejg9H_3ofce9z^s?QsA4rLqh_^sy@ zmTLiH4lH=^Rul9|3oRph6hr`&fz?WfIW0x`DsY1x+1WbE0O|+mP3u-E6K0OeMCUk= zTgjj|=}%lOF~~!EA4H9myXYxav!A|zH`z}f`0_?u+Pio*#`w7Vuo5wo&in92Setl@ z2iZ?i=^*kPPXX(pFWZ-b1TF1hn}&WY2ml=vlPXgf)cDwsB3>W}M%x;>aiDsZt=+OUxhQ=$L|M@B8yO9WuV*kHe0G~#IEQ}52NFsfqO8$p zKSSpVwC9wQhf;T3H0hR_Abi)}_yo-q-t9zSU`zt5T5>TcS#88LHXM6WSTp0z|JvR? zFCK>GX4FQ8x@)6?#KycxZtcv_ST7;+%6*N1IW$~PRDY1W>1@9T9cAgw1*(%%xnmCP z#OHh)w7S=|1QJTZ1xoCYf&N-4El2g{Tk5tgn8ptcJZ9PC$qhRoCg4I~o5Y||_EN1E zQflN0RLA}JK?`#YWD5s6Eq;nBkAPX}8Eqtp!ghWEJlV3fpN1@-s~J+PEE}g+o&N)( z*SCiisz-+cx5061yX7A$zXH5a^<5^XT;Zn#3Piw%OEKqV(2xvItr8{mbUezO7JXkq z<@4}9Y_m9Q6CYx+fGAw+8o{QJu8;FN*k5{9QNLlj4}E?ei?QHHx6{UnjvBKrTF`@RB=oV9UAF-fjSwar4L+m za|qzZHJcEqEXQyfzgd6Oj z)8D>qfeuNYLTuSWHnE*rREPISEcRtcp~rBm^|kBDI7z*|+8LDSQ7XC5&RR2%s8p1W zYf-6%a4v1PeF|=bJHQ4L`-W-YjEn3GzHGk08f2zn+4Zp(z8&{K;Ct^FxNmxD{#*cXg`x69-TEUulBjBJ7ig_`qwv7K}Rg2qv_ zaTVpOCKYNoBjc)RM;W%A>uCC5EnJB{sWT0q(iGOEKvf{;&(o#T*a2I8pG$LT3PKcv zAf`XIVD)5x@f7!=l6cup_Pldjz4h9i)~MkVk3v-4gs1-yCsU^fq)^H7k??S`sImQj`F+tBYm_?cK&VrnNljOMG%9OQxQ&|=$_P8E&>Pw2v+d?)@uBsgv7S7ENp+{!T44W|tf_4+Dfv zYYP(IB)&d$20_b;-X3B+SGc!YU)Q6WX~hU4>5LIGb<^tI?H39WT;9xS?rU> zRr*^ppB}^o=DgEGXG%t58QjmdyeN{_{sqi2RG$O+&32XgJLBzS=2sU97ssL$0OyU> zljy1tL&##caB$b*H_ypa$muN*tQ?kuhnA<*EFBm9ueo{eK*{u%0BK1x<;ENkvlECV zA+$srlv>{2S-xXPxbj`^YUBgR2on43f}Sdj+E&JcyIcR)RaG=oO=s#QJ0sl|4mIHL zH^&#)LMn#OK@uZynTE}#U`1HYAtMt^g{p0hL-x~(lud1UU8Z_nNzB&EAv^}_2#DLW zh5<~`%jICu2x$a8RNghh^+OpYh=DN)^YVBJWQh1eSZA(Tr+i(k5Qt~*=^I#t)aX#V z5Lqz{&7{OT~blcC2DN09?^2v2{8gV2CQ+&V$Ij`55TbnvGK^Od&xkwOZ zy{{EAp?yw zsenaLlm}{qPigdLfMV(*EreUlhblURE|#ucPy8S;Q;!du$z(*@h>Ps@xfCAs>HS#U ziRt*4vSWP!zcbH1yDL4NvJt$qzPq`YJUl6Khq6KsH7?_CNms^atJY5Mdd-h;F$PF~ znqrzWbFd2kd&TbOusBHT9|}BQ9fG_dkI=SHfLz}O4hGCzEO3G7%xIXazLM@YAZ$`~ zK>mX2OQr6;P)dA;?b#gg2KoZt(bvWgLNC=vWTX}K&}6Q(KTR#A!aRq;7cFw1-6kg} z41Q~a6=u@Cu(NnMj$>Eea;*X_D*-3#`boez6TLAiL-A#+w{>Nv0xr42*VM-ddOt-y z_(AQXNz~;+SrK~$2@~Go%hD1C9%Vb(5KIr@K2M-W>w9)2LY;U959c)OJ# zQxt1dAVMA|0H9QU@0=|(fh?_s(cK{~j>5uC6jv< zrF98CT$I>pn|QtNdSU3d6RFREUH@divOwOnpBY{O^Ql>!AhV2+ATZfa-V)?E!=wNE z)bPG-$qu@!7kGdJ!weAFQs{rWw8t}zcb1IC&a&*@i9aiMs7-IZ`3v^LNMYG$y_;sx{uE&Ej)w;VCw=QtcG^R#O?V@RhwWPrNttp%3FKMGc!PW>(d zdB9d(8WNQse;1IJo|BW>=x*?-NuwA^h=y!T#0is18%q_3l~POds8GrD{+CONQLGyC z#BXa$c+qo3HVi!aIaGNrI(&M<03+I3zAvF-Wye50ir+OcGH=;MM~+X&zuvICVIAKcz_Rvn|f zq+64nF{sV}r&Em!hI1)--EUL1Wq;TXFC7DAD7%eyg3D^%k9GDbGDm`Sk>}^y?(wGp zV_)UurI7><+0)9rd--lozajKzjOMtF*L*K~h6Q!dy&~;}Ft@!c?J`E0AZWa+d?B0c z`m^+%E=3r{KP&H4(r`EQ@jfd;Q8)Mw5XVaBS0ERMz}nPY7OVu12xtBLPT#%bN)CFI z*~A|vIQb>pQIUwvW6^iHkeK0HKO^Cgs6Rq4~6Y zbr`GS1*}xt@*aNxAwbNqnpkX|LwVU8!C3EB9;ZlKt5G1mNxUpqJq$%&m4b{Xpp!FB z&m;-}eTz_`S-Hdb9Q-{+!9BZd*?{5jlayawJdh2aLGgJZ|D}^!_p@BLZb&0b&M;Zi zNC@QnD`+7x@EOmVxZQuNFZ?8dWM?YeP*!DPQH9gT!aJB_W|OnSHGz45Y(;d1ViWx) zLjW_}F0BRQF&StL&0R9FWBieqFLCDYAH?O*3veD?G~btZ*`r#Sn_*GdSSz$K{21Dm zagZ%>*}7AqB8z&7%HEF{;Zy`R={_vOW4ZdDGzGi)f=3oWXTJ4(4Z40(Srjeb>M_VROWC%&w(e%00@V8x2X}d z)j{W)b}R3dXsHXp#M-7s9_-7@OOOOlW&GEdue%btdP<1o@p#H7O;*dv2;wl+(@10y z1qIa;|J+V-EdN?82UgjvXx9YJIMYeqGtpCK*qLMa(D>r<@*c0|0A-366v!G1LoCF% za&ul800+_(=Gz$!Fjopcc7xiD6bbc`39UFW9U&hST% zHxpqmI60?ErcKeS?p)`8^i61+K08#s1pnvsVsUb~n)HngrbQKzW-QhTIIvR}J+Tw9 zU9zGCyYl7QqCmMGiBYKPeSJdV@km`R!GYeGGkeott4TD#vxdPczq3=p*#TV}usc%R)})4_O3S6fb@G&YnTv8Evuk3@z=O0fsE=iS36>9?~*8sP}0aMdyt(Z`gxw zgl5&PDa%+fOTPlIIOJ&=4$`2346;MUe8XNDlKLq~!R2u%_q%Sdz45y~X`omOA&^qg zBA3d=MIO5ooSnZ{FH}8_WfB@`E%@gOxox&vpV7h^co-xk8 z;d0GVR}8}O#M!*mU9SboW0hUWz*~@mAtQWCV#-y301#TE_N|y8FmRWq*;s49Ht0Y1 zS5`3ERZRkkwXNX@qWQG#J`ooXPUNIj0K_B6n}cBdMr=|XYJnE_f?MYxHzw<~_!CL) zjQ?foG$YeMk#iiC9`iQr;gxGNx)W3=C0w8xD%TYz6Mq5EBv>(BM!p)Hj!WJQ)824S z3LZy@7a#x-Db0g(weSoH9dwLBI6dSNkWDfY>rLl`NaPkcWuA;m8_*G$?8|Iyz-2_j z0C+_y>%=T#hRO~50M!bLVyl1WVA7%@ovk86B7Lpf3kZz$-&6$hfdr>}2r3$Px*smJ zx^(&_E}w~?SNPPb4&b8$BghA`40Rj!VCyizG-J@vdCVHBn@WhbS$|fB0HBDlEt;s1a=I0Strlv{swy1;Q5cN(C zb%b+{{}}qTU=8jPqPxEFH^8CHMmk0?eA2wqMh{FY5U$^s35+SCDk#3 zE+r6;^dC;^GmDYaR4V?;&09$VJvz3o4A5gXM}1!_CLlnj4AOA1YTYm`9I3Lf<#zB} zU8(7Zx-8n$T#Dch7J@NymX?9*1G}wmVio&9TsR$`YyxFoYzP6v<|~n6F_l6c*Qo1F zLKhmVhWvtKU0l)_2w6H&z^i#!S`EtdP&fg9WyVPc;0d4JGpp>@!p8?<1q)54mPWi0 z7wTN%`}&vjSH~54w@=PCGH#i**UA21qX@50?poEYR4psV6vxza?lR!k2shi7{+_es zwCt9l+hx7E$ASDu5xy%`i1qc@#m5^UUJcr2ClqF5vy2E+N`EmobVfw_q?E)DOcI;o zUE-GaZ14%syHF3!0!K$Lxt241M@aN8l_39v6gDErrqy5b%Z~4egHV6HVcED zy!TNlw%9AA>yCWbpw7ru;|iW9f`MNe;>12@XOu>bYqB;9R91DsEDoCD=}`2K!8due*OYD)NxUALKF?XmK&SzS`ja_86f+)??9~0r=!xY zjZJ@G-*WMJULn7>e<%my!20`g2L|4}LUSkZCiWB<>XXtUVmOYxG%Ea;{)?|08`u=# z)iF%tGIZVj^I}cjXHN3}mVOzRiGMWOkS-JXe*ie+)U~+P;T(R;R}UHvuL0%)*ka_+*TnCbe*aA0V0Lt+u$A`)L8N0XjtX zql&jhZur%e>=Fa^_6J02gj9Ckcn^`#Um*P~n_8WqW78T5g)*K$rT832%VVB`-#JzN zad1P(6EZy8kY+lP0&ZP{0pHhIBh5zq9-Y8Q1K$Vq6LyGz+hR+Bibqr2 zsJc(5QF_fhc%1LCX9jK! zDVP6?PL9mgeclB>Drg6C_Fbw@$muIEpSne9_rtM4E? zAdtAR;1n_5z1)ewY$IyaQNd#03I(8hQTWvtWU(0M7nzgp@>4Uc`ditLE3zZLok1dW z^q0du9Xp&8y(Ah@&95KHydLMw~vek^d2~n$Ot;1dkUps z1YCy1cQRc z4sNL^ixM)Usf6_aNdwpr>uTm`w4*hnYIOQk<;(Lo77J+xWvPMNNl3t=CG@&tDfMk@J~k#Ud04f&jK_FXEhdyZ zBvIo2lgXX5n@4*knZUGlK#7ffBFr&yU^95Jmgz42yGl zz3HIi%%PcBLQ;|Vrmda=ig02$JrOW{*jdZjw3xT1D?+2RYP(ft#43)L<^vH8WXL!}<0zn>cIkOln4LNA~gvX=B4NMjpQ!o7&h zCJK0py37J22CQ#b$JB&(!fdCUzL-(ue@qmIWTdqtF@%SwazPHFta#6?7SYXQlSTIT zxF5xi2JUc?eV?3gWqjXNXT1B9QnxYiShT)jMKn$gskj? zFb;d>0-;MmNL9S$Na0ij=~%#}ejT5J#lnz{-ZIaH=)YHb^+}y|Y4qUF)DssUkkWN` zXCB^1>z8|n5w^=X3zN)=u{`Ptn6>+OrBM22l>F7~d|RH}iJKQ70>zyb5$KG%r=r>b z`%Nfs0hO^@Ay$sPBWXYjD)l$!B+`(dUl5mB+;ZtKN?vsH!^uX1Jl5IF%}y#!iK zG056P{{>|M>RB%zyZ|sCu(dKA5qI^3G_}Z-(S5kv2`qwI@6GBEG|bPy8{Nw_;ZBqj zdgZE~byi@pZ_fk|f*M6Wn=hW#t@_M~V5SYTcBGYQc= zpXdY8L{AoaiWrvLf;;lozXcfoY$8Krx)P2?M37V{`I6B->u3<7M4*YWs4U+!q;t*J zHP6T{9?;C=DTCB_+|MYgpp|<3j`R#gFcG}dK%3KLvJjr>$vpfXl;6q5%j!O-4%$%} z6vB2$EQvcoI-}TIKCzx{X4XZZB_~uWHfndYGL{d{!45hG=Afx`C_J~*pjy{tNu#y%PY0Dq!ntW?p1BwgsnS^C4?Rfzi!YcGg$h=FK;A_2riStZPMk$?LPm< z`E+IEhU^~1>(>s@H4j;6B!Pbh(3(|tnR9~hc48tkcwAvGfjM=#YC(Y9d_HO}udOYj z`ySGuqOB4oK*`}*uZa&;M^`(BcIILWO0g84bGn$6{imI|tMO!IN=vVFZ7MH|Gs6SA z>kbr=tT`K5$J7v2yLaO+#QC&+fR-4qnLSILY}Ce5W*X7FOSb^DsJ z{lJ-VGP`$rq#H}Q$EzPuXLF=Sln;EZ3C4aNd8FICvPkis3~bz&NJwWW#%{F*M+r(7 z$u;7wRI{5||9bCeIVw^t+gV!mNzQStA-5*E?8Ih)USPl96sq0{`<(81AL4Y2vcW$e zWy3Eyn<0l3Fr1f6#j3z1z-k`ScE1fQVe|t1YVT4iCV~Yt)s0s@MC&bm#bdZ+10zwQDeUgUE%uq13=ZV%4$+$y9hC;yx ze<9ykh*#DKO5X7{HTA`K1e(y$1^2Oe+{aPxMO9ci@P3(vQdkLuTmMP#m-eiQOF7Ey zH2nQ29&R9j2+g^sMl}*rb?fH0S@E*I1YC9k`lz10z!_;@`u<~&OUeS^grt?yQ#F@n zoj-)`2E1O$m_dlNjDMdr48t@YpwopVb0m#l;OAw55Io+ArSNOHh1f>*(5oF7JA0fNr0do36bT0^Z?N znEJO{^+aJpbDl~C2C37V=@O<(k=E9K)XWhrApiQt8U;K|0M( z5suYetq_R=U-4jFyTU}4{yUL{75tvAR?Xw(>CsRLn^UG}kV?I_Y)L3c`WrRJh}m+S z$}n;mTeCPHV*H$gJW%2ZQLH%<@uyPG4+1+ohf^~HhEcCOSkO+^yxCJ-j}->ghExq)*S1;hQT8iwc?6{$T`IS-}v zF{Z@#0xx2^uv_~Qe`Fvl!3S)U7HAP42482it>^iS<0dIcU`t%@hJ7KP7;P3eSgPy5E$7{IroSy5L^49AnG>%E z861VTo52W|Hs;%;Df+(#$Z4^c&=dfd3?^4L5^*DITsf%QI@D;zV4PM;Cu7te(vshy zN`lj{od!w!5KHV4YEhHALBT&~(6`SC0_js{8@Sob9n7B{zaOoQy}4QATZ0JnyU7_z ziWfG#SGX^w;d7V@sXP0${|@>8^^@fXf_P;bH)k_-GHwt&9NF`7pRB==ZUioH4>X!ae8;6 z8*!nZV-+$hcq?@jcEp3d{4LaD1FFLnHGt!5KDI_4TQc|60|3ab%jmFB1~I!{7GGJ! zyfIX#A5w2PG0eeF9Mo4*{~T_Xef&bfNo+b$KIj(otQ7%mqTFdK^Mib$k3$YXY2J&F zp#*f41Cyvy>Ws}TGRaMi!(6ND+X`q<1UV1ZWJ_%>We27mt9I>%tG#rqBpn z2%$e0tQt$TNE-FGlt?6`z&HB`NmUn!H-*1Ivw+MHeXfVVHPK0ODf>vjrR9xn+fp98 zHe@0O>Ah(@BIPfXgMa%(3W~G@r4T=8)+aSrv0}auGt{7)xwTqU_#_UfRx))tYDb2Q zwb;#(mA&A!pfGEg^U94GJy`ub!#PANeJXHqySa4 z8-?`o?#@Z;?Wbb~f1H^QWvW2t!QP!T4jA6yhWz#IG4&-+dM$<3cV>0jxeVXJR|51D zB>hO^I~G?qqTu1tcb&j9Ji|7&pHuo}Mf2b>U&rZa>2b?hoMAOljTNBo1KutgI5`Ck zqi$d$zyne8Os!g+VZ7@ZfHvkOQdneb8>S#6Jy>%=1F5;P9C!~2SMbWbigkb*zsFUJ zG>Er1)gr`W&fF%9GNJ%<8ufezz#rV)x7GalMNaF3Ojlz#h!0lZGzutVyC_uKW2PD8 z$+A+ho?Klz4+1!Yg4einv!H684t?YQH2Yt3`n&o_r~zhAo6$CLSl1J6eVH^d*53)R zrwn4w{tK}^s0Vr@_Fo6o-)wH$*DsuO&pQcr6RzCQvJy2_p;d3g8fQb-izde3r6w6 zX*)aQX^Fn(^~pi%0s28c#q&GG*}66G{>Y>AoYtyz;g8g@yMuQ=h~&0W$|by< z+L(W)>qfZ$MK1>A8+PSQTqeTyd=~T#*K*mz5YOEvv1^0>Fc0cO~*?8P+JTiIrWyTo2PAt3Hz{M2}Eo0#6 zIqFCOc?XN)*JPkA3CMNw9oPco3H2ELHW zlsFc1QDGbopAom9e|vryD>Ug>6(T2p)KMk9Yl zj}-=sg(|~#`p;j&@%Cn6+Pb{p|NlJTo+?xbW@J@B@zE@#MGN@A{vBMRgUpG^^8yoq zxqrKy0g~R=t7#^x1Zx(w)gN_&kw{bET7e5K*2f#|5UzI$HSarU2zN`(#q^>Km3$KHD{Bd64keoM|0deYYnj=T_p4fu1v3a9$&4LOlVTyl zW9w8~;65VfpYRwZHfd|D zd2peHR8gQ_RTjj|cn}_3ev!K{|1OY(L|)?#Hu0}`N51!nZbpUir5cW~7K`^!)abrc zf1SV!CO~X$US;2ChFF2H8UTBkSV25eZ0%T1wvtYwv{Myl65j0d$j=rfTwT&SiTCwE z8*P8G{DcT!E)4z7sDD(OC7;q^kjm=wC8FFemcL^$d6&Wnl@@lBW2_6|hm)0X>7{bk zvj-Ao|L6LE(D!)3wbL_gk$oKzm^6m@S|QzA)mv~B;kQ(a(Gu7Mx{Gz$q*Dl;^A-rtb^N)SDCkY4}0&D0kiGz4Iy0L7|HdStrGn;2ag1 zmM-Yu7BN%3I{mIls*ZMMxXIYmn2Ssz7nqGF^qS{)JCwy)xSAF#Frp*ZO3ukmz(j!&(WfC!1ptBeI39Z69 z#uR4MCF_L}HBAA?^-K7JBU+6X&VfshVs-Pe!ji7%S|k&RzW?OWR8NFKMhiwcP9>nP zPiLfVz`E-3z$3V~ymA0xoZvsN(fJBuiy7^F;pv)liSA(VvmDqTIin3+Ze(ktm+`v{ zv~N{&rAWc$4^q&@Vkj=K@5cQ7sNhdjO4SsYnEI-)&E+Wfnb-pY@0EfcAb3%Epcggh zZ60GV7V0Acnvn_i{p{;&ALKJ(=5W?(uUHy6{s;YMqVfiESxT5FeoHNa z!DYQTdaUTSMks0yiEtka70SXEE<>ouq1Xi9u7b>YM_xJ{A)Xbz>Sv~`<(>BkU2ONe zt=I{dWh(JaX6}te@3yW=+=L-ZjrX=_dk=Xonn4EP3V9eeTZbXJ>|qd+3w5fUsMm5= zD9Og1uHS@3nk`G9uNzaNxnu3796V8iDO_Kp6>e#bXhQnBg6$U!A)s`O;`lO-)vw)`nf@f_JE5qUla1O#BBdq9Ds&MReMVYRw$ zVTTPv?=>9vpF7_dV8ob+8&6PqVKbEVQS7k9F-Bqx&Nd*%8rJGLZBPK(lA0%+C&Zq0 zH-VHWrIlo-{Y)X?r`PjRiodzG47@FeGqf9xqx)4a95^Q!5YrS?s_cOVSkzmKt#9Ps z1ic1$!rrdKYmKrk=$ZwPiwwtlk>UtM?xD$Q{7nh=5nW0RLGpLwk}J!l*bv5yyLJ?O z5;W|pM@}kg{nIb(zc;z|S`e)*#3PEhy%Ll>LL&Go(cT8-@o=PK& zsQI$q2b<*~aV0G0b|xJnk=(Kn40O1GH4g*#WR$}`&tytja%>)@`%+LBU}yip@cfX} zOO9PtTNy&6g!ZZ+D^%$)$Nv+j-ks%sO=H%o4m^Z}SyiA!(NP)|X@wmo0euaCQm!E? zH*!XzntQ>17wg}$(e(wUSlBDW(kL7@RnKqeINtGMA?HJdvzTQNjWc!SY-tj?M{SH0y)7-M}9n@Se z7Sh2@I>ON}P2hja zmYfX#m3uzs&PS$ArNDYRg=}W5=vdj!OApZ4Z9@Lg>56}fWkE5*d;}-#D`QiZ2S5fU zAUAt@R>%7K$63K8mic1j4)dqlc#N510Z^i%(V?Yj@BN< z*ef=5)Rc;6hefF`Z|(oCH#MX2JIqi^O=lpNO#sXNvV)e|@@0Nx97ZNyQCf|8gNR6v zi_|92W>dq2#14V|T4q>}@x$zV1MPyEW=NIia7qQ`gZY8ZG#_-o5KhMwK&m%90{R?7 zhS_>R;`&>Nv^^GUO}{s#rTwB45%AnQ1<{dKeYSuYoq5QYtQ6e z14lPOn+f&`k?QcU8y(OM#mv;}riQfTFBRmU4e10Z!^#{E_((M(Bg~o$L$64VeW)=M zF;y3^9G)AzMuHH72GvT?xa+J2=HB(ktwOZL?1_@SFwd64I7dT5)lh=Bg;av*%E~>* zC%)X9*H}jjF}n;B>{%^XtqxEk`TBq_K6j~l2?>b~95N4)dj^Rqkw;rQ107Wymvx*fQ0lO0(I0;d`zeR(tr+Q8VMPR0tpp~9ZAg0!pUAvOG^!L z_5bthbQD|-UL)Ly@A`kf=Ku99wxyMm1$g%g93~d_j!+~dWFyeVafR9=+OI*I*!)J%>sPZb1-?MehHev&%+85P@c?uFzbr2E~ z`Q-neWBP=Igdd26R5f7X?CA3EH;^8JzdguZs1|7PnD1~-AIOksQ$C_UV2>3bmxxzD z({?r9d1vo|7FL$(_3h0s?~#@bzS~k zYu+aedjq-sXj{TG{PJe*a&pO6?&q)d%dP8<#+~!EJ($+}cfVLKOXg;H4n1vrOHO5W zWo~Z^j@E7qq;Cm&x6FKRZ@;e4UN?-%Z2R7x;VoUC(`09DN#WlfZTMc4+(^m&y7^lN zExJAWJ$L--y5Y5N;BZ~D?^%u!<<;%&&50M=eo5P_zr!&`(&e|efr__({cdk}T+cCX zuWxrbd~t7gZr3K(T7B1UkJf1yvgU5b#$VjNU%P&Fd*kVAdh48Wdm}}8MSH#Dp>5VQ z`|IzoOGV_y5^Tffr2RZNyB)US{^>#Zer>wy$sV42Pw5$rr}xsykb4|HP%TtG%69%L1Aj{Bl_-fMz zK2r=!4B}o;bu;ScHvymGUeIVanfZV%;tB!necY)6A-P@{eI1U+<-)6t za{hh<_Dtf(M~%ngeLPWX#hP}zr3KT@pGl9F6Qs494O2EV#%>cdOC=dy7J5f=8X!6J zEyS!mypOo{wNp+?Y>E1fw*(f~-TR&z9Q&Y-!w+Ti&hsC#=8mgKOto`1cQnHShfXcA z5?~CdpFXOrniq_k@SC7A5v%eGa!9ngAAN!+(FTa7JuM`vfES$oD`Yfc3P~i2N-@0Z$%FV@iexb?XM#7R?g)aHa;t_p>YWm>4 zPgC`Ei3iaY?y%Pp8`lgUr@s{qb`%&Py*$D z*_g=NtNaVNt^$g~O^7RVDpE5cM9LU+THjp%t&%zOyM;7z{Gkrg5Cmu8j#m_Dop$eu z=$dcg=}N?@ob9Guymr%DP^WJ_)k#rk;YRTvR|b9g&MGTHfOfK(>Dknh+Wp0pges>G zURhHq=DN1rvUO*8SOLMJf@y&(9S55N)Ae7?Q6cYTSs6V@tL-a~eEz(^8AKKEX-<7- zu(#bsjs9z@wDKbI5P$W^Z^w+TM}J{ATbiG%>r7z*tjynn1DM-jkuCZp9ZADgy-(_+ zllD7A9pKMWI@i(%s_hxT&z`P&qPP)-z-}BLnk8>QV)jS|%8#U{2T3(Ccl&stHS%Of zC?9ne4_(Eew(M^dX{M_kBUhL|7{zAyXF*=$V9Z~ZND+58)V{c$m8LkGPp(e-hNZ?X z8lLqf)?4-=+(1HJ3Qd#l$CA5ywT6jJ8E0V=FLS2}dbo=8CX#ZE=u%v@DbA3F?^b0N zzgE%~wqJk3_Fk}lT9Ps(A#KJ%_eKFFZjlk?I6Y$gv--0U>1h}}Cj8H%mgo=TXeM9; zup-O=oHfIg50WJwc|;yEVfDCh#^&`}hWtY)>FI%L=1vK|EqVPJl0sboTHaB#R;%7_ zNmq^7xNAI5sHl)C1|nYs4khraGN3vhrS&gA$5NAaw5NmA6Bkm25T=12Fyh=iaR0=W zUMEcUq)jsjS#m|bjxiEjO~l5v&$im!@#FW-uHO7381*8u3iCaPfSB{#Z*5^e#86y*2Kv8K9^XyVJih}h;aJ1V84|}M)cD1EMfF28UcHy zf)qn?s#GV=b4;jn@OhsqF&sI$Hr*V~71w*YuQq8m7WEG}wP*haP&G>%5?6nWIFiL5 z$-YD^MHA-X+o-oIeJQ^bc@{-p+232Mx{_)c1nZNzZAA3#q@Z17=VOMkK4%s*II<*k zeD51y-$c0K+(Y_Z<_nkd)F_sz?&z-8mXaJVl$QQXyro{`i=fkFdh(YQT30=)QAOP_51PGW01<`EvY|yPw+*(BRxNYoxbN(qur}1TJqY>%-Ox8 ztijEw+h<`vk)%iO9p;?Ap|6Ou zyHwR$n~k@nlOnwr66ICg<%mDWi{>aRT~IAV^Lo2|iYTX+B|RVd3gcTF_X5<{oH>Ij zC}SY@`O`(Q_Kd?*cBN2FpWhI}q#YGakugS22DhZ;?Ht@utGEoBL*Xk=PXago?LBk# zW*72jDdDz}eDJ@|kY4I?aRE>fzNE@@T)bILoE6~zzbVYN)y@))ylT?6iJFh0gcE?B zs*ntHHp5pX*lPY-YivHU*hDEBq}{$-uY!r;8C_AHCxFkWx~dH1?Q7RdS}8#1P~%Xi6NzrJGn)BDqp87T*>#pek7{_;?{wP5 zNhC_g{_Pp6J)|T#2D-Hrt`IoA^U2Fj`Vtb|3zgDnkj1SAji{Z#trF(L|v{o?>`?k zv(Aw}V^3i0ld1n9{h8?@=i%5c^Leax21Uv5u$!M{>s4Z}s`Fx3D=%-3(+`Ry(!1@% z9BMS{3^{8)jhjX`LQ)|r^&2lzgFmQoFNsZLLE=|_<|nUHqcRyVIZ64qXf{f;OndZv z*8GK5_y{n8{Lbeaz4&SynQm=v>NHa~qs*wyFaL%YnCf17$Ip^HcoC1rEv(M^4l$_J za^Xb2R7b1x*Pf#VMGZpXsq30dnW7@%^Pj$_lvs9i`5heSw48f*5J#hGK2&F%d_seV zT)Ex=e^#Y(9=zIb%`Ti0!o$1UNnneXrs7`cS#&D7s;`aC`-m77RuHEAbR)q#Bag0v z^P!5#hs@XVZ>_>=QBqR9@)qGdulH6TXsX+_aubA~>#j?ahY)>(n|)4)FC9z&=||pQ zW@=&zI9UkkHe-9E%J=zAg-o^3fn+X#PXp~vLtd=nt44EncQu>RKeYD|55`rpGZ^8q zyEBc)T2JHIb`WuXzvgaH@+1hXlTRzL&hS1948#!8>&T6tsaweXTP?UV{8ZO+@w+{i zeHWg|JAHDq+IE8x%Afl#cL;q;YbT@#rm4Ixh~8o@k=s9wc|a$+_oen zmjFJf?jnL|?jpP8=b}aGRp_Lovc@XrAWnz=k*DS-7EVe#XCp<}KMs(Tbu7_}hgt@> z9_(M*;zP7cV7tE*(KUTWPxi7^g$PELa=OmXN#%joHh2WC(f=mMuO6EhW}v{?xxniZ z_YKt{jF2cL-1KR^PvV=9H{F_Sx|>CIS|nO$w{9IVn&S7hiJNDM>maMt(iXM@du8*l zxcV}%{^oA*bKj*WZ6(*>ui+pXd22IF?+V8A-I%%+bX=b^!Gs5vjz@ST)FUa@*0b4g z9JlGFtGA7N=!OYnyluOq)5=F>l&Gs$Z!#(#YEm_Y<8IXuBQ;M&_V2R)Nhi2`>O0ezjH*<;KsdpQUe2JYZ^IXH)GA$;}T%>xBU~$zYY`~ z8TFt!XvhrZE#C`T@ywk%*?CYT{RHsC*`I6Ur!wZ(lBAwB6sBYFd{uncW#_v@N}Mty zd2Iba^Syn-=721xFNg2o9=;Dqf+cZj}=5(&u4J)f6H^ht+~xn?JQ!uoxTV27T!WI&~Dc1ezn) z_Q;`${SnC|rqgeGUkpN_^iPgZO;NpmO^jN4EgrdxME6PWH(%1c-hDXZB>Qj*)rn3< z?y7?t$JB~tU5kS1=7}XoKlCDxY3j}CZmOj#uKDi(i$Uz31GnFd*AY=w0e|{aARkKd zg|GrFdxkqTq}7}x3LOpGxrG-sltn;ri&3Tdn zhsjAAo*ojeS5=~d zZaZg}2-j`$iUzCnZD$@bCwan|{DB&w>OHvwwRL*j8Gn)|1>uskCirUX*&W@U9n- zNZR56-6Lpl^aO+K|@T+9;)yfpZBh_v7MC=x^#6fE)i3T%Z; z#Kc-!!2BMe<|d07Rhu6Z;gfQ*X>{;XoJiGX*_9hMCiS68RNAsca$uA8G{d|j39Ob# zG0mdwaM1Ro)?)DaM{R&WRL}BYl{?-DQ#5{NfDM|_pOolSFy(*krejt>)V7>^dO09c zi!@cJ*6wt9@b~qq;1M6+HtS~INbdaAC0WXOJgqJFK5{L$oRrW+3@+viV%pG0_4C^o zS$Hb;b;|0caBPt;B3Z&0DfIo)ib0^;=>njXTHnb-*(v*z_R(Wc_b6zQnA?FvolnY|)#sXlQN{x^~L3Ki2{yZ2r?2ifhXZzza;c9xf1X~+D~wvEPO4l}*? zGBX|d?}nX?Lp#lT>5;uA)en0=I6n64iL0|{W&k)>R(Wgd=)i*)`eDLd;@f;5q&ex} zK3SGhS5L$!3CaeaTJgQOnC|_12hERqioyk~OF@VV!2s7vm(C`+JsM^-2U1lAgM;4I!FM=Ks(NOTNjr zSK|QW#y#u3ST|P8^GzyTRtzV~!7#k{$+)FI*sj`;rIzJWFA8<{HoRzAxEAvms=^-h zax!m?G-UH-t5(=_a|iPw>z4CPnMs^i35!WWY2S72OXQG@bV&RCV!Ny(c~2UtcQHiE zp!QX}%MoutDLiW`4Z4bjN_9Q+Pz(d11Z4CZCI_yX>~zTe9M}|PVtEUonPa$-EwsA8 zzq^cL@AxnG2D4Yx=5nna&9ksRrJmfHH=K% z>)Rzi9*Yc`hc}}0xnWqX`oAml>3_4z|JS4A)1vw*)U_&Wa<5RBhH6x%7gO|PI-cs6 zwc;@o-xvQc55>|%TYSfotTfyoJhw~H-$lw4*Cm+nA4V|_4GLdtkYr@u%W;QFuFepb z>Wm7t+O@T|sSU>)t4vW&%5z<%yf{4RsKKkxc$$rY9;XhK;i5 za!Fp}L1rGf4Vfjr_nEJH*~loMIG(B6R95&pSjSDkzMWWJa@#Ry8~$Qp%Z*K=Te*$r zU3TwL;y{N=!iwKt`7pK;O^9I`l&^cO@_3Z9*?fS`4S^V#f%Rl5+r$m~62di?(pSXQ z!A=so4IQ1>mLk`>X4Yl~j>N}PZ~bipCtGKhI*6+iE7II=D5op6SwyC1CegZb3AvKS zHAEz>9bJWc2Md=c0>t0BgjbvuY5a**|Jp-i;vpn*5ig>b4f&aEb1KzDW&y1A2!fizMwWAgdb$-PJQFDVJ_zY zBnc2^1qFe#E)-1<{>GtgQHH}M)PAO-D#BzZ4Xd3wjEcy*Lb7K3Q7On=Qpf|t=T`*f!!#Hwo^?L?PQhS~PnDDea{W~?$98Kk6n+P*d6=9~^Ybghv|Ca-U| zZ8C?ae~wOxADw89vqQJz?JHwPH`MObM<}V1l&#L$Ut&>)IfObLT_L9xz&s9z@vVze zgXAU;cX&THHzl@IF-|_hIzdvcWkqF@;d}hD=%u5JuvmF-1N=sCCk>N-yLji)6rOWbm42{B=Opois}+5TTmdNqx13X*i1`P3<7Z0WBfd`i0-@u%k{Yl zzdhT`wnV?pR4PhWzfYCFuGCRGfOt>0w$WhD=6Jf}H%^nRFWm~eaO21!uizqG5P39g zs}=UBQ69ih*;$)pUYP^orx03c5NU2rbz-Kzsy(O@XLP9)LCNR;5&L>RRl15*5$9Ll z=l92ugbqXh75qiAg24k#- z)#=_0Lr0qRXvT&IRYma~n{JJ+d?;U?h@~O=BQM=pg?N8?=x9)73I@X%5wwe)V^ecH zUEx9d+{%`N7|{YG<5PQVde2ji-j&h=HP7u8`mQuh(+>@C$*CqRQ0KB%!9P)>TTC~v zBb#2BJH+yex2VEu2zoCLxPkrz7*EX)_Sol6m31&q^OD2XW|GWr~fQ7Gt6=|n%-%O_J@55;ms|HogZ}1mwLv8`mIr z^hFi^j{ewOvQMaxL0InkGWEV#Mt4!`Arm$PpFF5lyWHBK>q9RO8Qf-u()lOs2KOt^ zYn-Po{qJ{vX}P-W@ua9k_jFC~L;JNjXyOu=jST!fI_xRhgdc;N(X=DdQeFE3_xUv>x_xw# z>1fd8J{@nPna4vK5sBmEZzZ6dbtOHVrGpz{phk#WeZ5%1X_H|1>GV~(eL343Kt?K+ zwgb((eEC${n==-y-EDYLXzRax?eP`vBPbb<<7&+EIz!ueG~HfG`#~3{oZ4y$k1M5C zt#ql&Ke=sr*Urg^>%B@&;b%KN`?w-uJZ+ShCDitO;hQEU z4L(YJf(sGM)?xQw^}Q>~4bRYFU*v4o9V|QQ@XWt-Vvm+^*YXo<5;&FQS-l!OsEjpx z7@0|DWYjXH>o&?~jjrT2`GI$S%Ra{|SJp+7SqYPol9lG`>IX?IO8Fif=Zn987%eT` zh)BCM6lb_sqXdh;5g-xW2-4KqPz|TjO`|ghAb5En8S&i9aKq*< zDj*I4(gdt zfx@@p#r^2}N;(F|)YgdS(wj~1&+OBDu6@49V-9kN`PjT)c+LsGXwuM=*AlOoc|Cpp zoY=yCewiArNJ^YL*>nG}uk?vlZ&IQm{wUDa6X;cbq3`Lm^F}iIkXOcJ+m^?>vJxhK zKRH%y&_q5eP=2ITytz@^UhA3v#P(tg-?Lw_#h>vqhEK=rBWk!sxjid*ijjG01WrLR z@Ji%qfi`vma|2=}q68V(mY!2=?^b6YR{`=I9L+rn%E+c!sYDg^CH*aH32CmuDIzVJ zQzYv{qnF9awMYD&L^v8&Tklr@XO4oeK9f-(bP^^Ur}R+ft@z2r4$Yo)!+VRws@3B* zDhVZ)eckW0QUkqCX5!t0+dP|5U!U=9ecG!E5OcJ1ne@TM5>lx~5DAGW$j%=r;Jku= zJfaMu*_4YI{*V`s!nbZu2TjjS*+gtS2lUJa1{>N+=T>;ELPYBC0*q=Ph zIj2)Sp>IAO#{!epQguD{oZYob37VSDs--T$E`lbkIHnql)3{vq9Xj=#i}W{nF_*#V zB|K=;JCJT*h=a>OeK@^P!NhD6cgeGPuM;zB^F`}8mL2_TJk5z{cRz%iR&!OoTrpmWGMC?*7Jc*dd-O?-szU;Tc`eqNb)?sPV%sM)j9*68FyVg{QhgUvz}f*=5z%{!IwcVN zEOgc2wtncKH-Wy+VkX=KmEpUcgEjPT*LTsQGVDx5wS69IDcU3f6t;2~`1x9#@WsjR zM`$5+tG{jIJ6SWIFP;oQB?@g!*oF_7=F?YUKy1d1$iXU^MP(x2u)``~6`}!^GbAD; zNuSgwzmN`p5vM;-DCf3deOP z1TZncx)GIVo2mF^#$$Gw-!Jd^l%$!{on)(=M#Vwe!Url-ug= ztBMGS_a3$X)szGnX{8kXmogQ?CoN38)BfBVT^TLcOETm>-cKhFLB*8i^O0)SKwWG0 zYB>x}R8cXS$YFkCUZC6kg=S634|SsYPO3PlEo?9gJMpVR6W7}x!-ANxKjoLTPgTaQ z^e-l@-;SBw*(Tn$kd`aa!;p6AzEi#`G2@=jOhbw$o({mjjGMQh{3X5BRm6NWv5u(e z&M$&k^oX#^JdyJcEK={R5Ur27N^# zD&5Im(^nc6p-a4=yXif35Rvb<`EFRWaY68F_0anV^J@+&_uUutS{0_5jP+9O*+SRT zG?e$?mj&JJokDx2p|2_`1Kt$dlhvm?32(2Vf42*%IYNlAgGXOyaj@3vi{Un2!9NOpr?AMq+TP38?teDdi6{3Z6ZxKM zeA4P3R)3-Eh>eT6Ow)~aePD-E$SUr6!QXoSjB4oA#A@rI?NvpH#fXo-_ZTONF$2^0 zj9X9{&>4=FjE^oW^c3T-fA!Q!fO_z>?ZHg7Cj}XX#_oLdy;TTOhog=-k=g$#Nhf8! zeD_o1kc=$5A=6!}g_z~~_O}Uw?#T$O8f&rh&vHy23z`$GzUhWZjHKingzy_k6qchygg%_drfmnbH@AxiGN61bT&M9nY1_hdvilcqrbcm zk1m%$u8D5rj^JT8S(whPDV>RZeMo3s-!*&N9PXLcm&hQKx2tMWu^a;t!xw}H&6+2A zH;v2|F=7tT1@19zCNatC&rk7_OF+Kmih?i|<-yUZ=km-{lILsK;>sEEBUmiAaX~>? zXO?``<u(v%4(K0w!{X(HkU_a@shI6yB5L`eKlI1EH^8;OW$6U6f~nW`>QE=-2tRtX^%tqVy*rv9V;{ZP{wNhEUzA&-c(@q>?MG8|?3L zLA;K=c6n?`YEsK{v}3oYT%usPYBITvOc8sEGNZkfbp9HL^)l91))_kR*Dn+4yjQQj z>Uc##(GmpPNqbPkvjVzOhvvOM?*`xZlX)Nw{K(xEoub|xLOdSAK9$c{2CX#u5t;|? z@+ISw3-F0@0znh*z!nX8TaD<`F<&d6=8W(x;%)C0nrBZ4&x}VcdWo+H)v%Y`TC^tW zo?)UK!;I&|vhE~ldRjx>Yn$VF1UbVlORKvuOT=o8$AIh@N!LsmL%Ya97 z@9pNJ*G1}hv01>-1BX|~ho|!Cb@qI+u-7r?g`8@ueu`cv2emy`Cz#nTQ8B^koo50{ zSS__PCpgXy=Dd@wusngCS?RrM!7)?}86siQ|9YTx-Ggx#K3GxtK9+7F*Sx+lcu^^U zEDdUQBV?Znc)g=cJr0zK9B>Eb|B;nfHMsn|N1^j?cmn zMeiMw6u~3QP5y8olht9TC17Xc+w$3U3>CMx)1xyyWB(VX2Ba+ zQusV9czBQEar?<4&a?A0&~buegz~T_AD=U-wrPHQv-&r)=(-a4VCu-_Izb&&p5f;d z{wf}bAi1@#ttx@^ddE`xFF&n<8g=6D-P5N=D+uQrh#TWbDeHMlkS2O9g;w<+M0s}B z>wc?-^rRyNNm#}v)mSz{o_;Q_RN%WZaI`>g0^ADXmfEH|aASKSxUR-6dpq%nw<%fu(uG@-bo&vHLZgBChSDL3KH0}eBWCtN!B z2)IAb$tQ)mea-jwe)c)`JqZOtWTjKSZKb{%<{$b4zpc$bR@C)*OJr9ahP*^189b*d zJ+nOIJyXV(!%jkr96Z!`Hkf)GE#WAE+tRQ8Gi8AR-IWmkd=$1;XLu*2 zWQ^zoS7)Dqp=WkdKdyY}8{38dLKR3xqlfoXrF#(9O=`{XB1}@V?(?y^ttNGLOwk(4 zOM9_TMKt3)Js+na2WhOknjadq6ieg;VYJVizl>mtmi;WUeUM*qu{m4kk;clzm_ha6 zBD?9k5feqa&B;d@(?NCFywhOfIyF@#&lub1CP{yl$0HfJRsx??KjPZyLpJkz#uezI z)>h9e?b=$34P-^Y%YDpL&e@cwluuxh!tulV=;knB)&ZFMMv>9cadD$r>D?ma;zF6> zJtAuNp^*Zw1(2ZA9(POQFvHo|o>3=+-Q~YvnI@6&9NgKW{v|5F{v%uWF95Ma9VbQ4 z4DUN}WNN9v{Z_SYl>bnzN5YeevaB}-1hAq39n&WcZi5QIGT8W7-5Ou}Q@PlRGr+>0 z`RtZ9WZ!GY>u>*k313PR)7cB!mZA20L^)7Vn{uCQ6=>vD?9fZ4r(dF$T-w-A2uL0W zH)~Iif6s~#M4<=7Z+Tb4x_K5^4t@tEnN5=a!3^d(y`cX|)s65J!UEF=$zqBI=Gwo0 zBlc_9uj%R#RuD~3O>Pbh_lJ^ z&+1Xz;+1|TVX5J&Yg)Im!(&rQGi!j?(krCdT@MSxBM({3N2 zVxntvbbmBEf{Uw1rbYKsa_SXA6WxoEuo4im$bSzixQolOfuP`(7qRq_;nr6K&v%35 zBtc2q^CJ!uBtIXOZps@Gd?|C0=mvEfWE*XfXNiQ1niy3SwaZrKU(H6>X4()zLU{0S8sl z+MSR2+|%u=EwcdaYe3_?nSt2cdrGML7%>&d&VWe|=?q^i%XXJ1baW)J@j>K5EJPew zxt7Q(;c1h>74}9b>dnru@T$hrTA!idU@sl5nUSw_!T!n~q9?a>G)|XKCPQ8Ko4FK% zt{02rj{U^OlrqWV=*~zal#f0f-3ksCMA=_tU>bE1K9Dn2FsA`^(bQKoE{JG zlrfPB8a$H(4oi@E4OIX0wjx$#?`08nMy;?j?9QuQN0ZuysMY(>%<>!4E;PVWw#ZH9 zu;2%kh2J(Zmni7L*Fnh{dGAccT5_{9+p%x|db)i#Q?WG5K`?{Y=OWlYTl3cKpHySN z!@K1DEUreuqVYLb3@;_t5vk-1N5)UYLjXGdx;psSOUPrtc()VOs8ZhDoCu?e=J;<9 zclvaZYa=WV+h{$`IxJET)&$1h#ZDR}&uIhh| z<7W-yaVxMO{{p`1fd#^<#@*vQ@uiy^&qQelftN}9;P(4)06o2%1by;vx;4t&etW-G za-;_4wwPgFJ8}TO&1v+&O2oauZ_7P@zl|C9UM_L$3UJlx!^|B_I%V!3#OV-s;veCv z#GA%&iNzw(bWy50VMI(;_KH*-+B_8e{2=|)UO#CI%7#o!3_Hu?CzKgNZ3*qHZf%+s zlmPEkV?TV8z|2XN)&Cf4_-lHWi%<}KaLP&pPf1vvVZPzV9P{cvpdWXh39R?M>39@4 zDLKiq(V`6h-QT~^2yQfidP&?qrD#Ff$w4=E3SlcnWY2kUuGF`mVDV~gPe|s4GFj%$ zJ#x+Au`H1ScXI(e{Qp63kcW#KHotD+IGmPSrh6X}Q%;_P;#Xv^k=71*tw`gTar*{L z&~9w128`OQsd&ZiJg%HJi51Z=ZA}e!Pli{FGsa4>-?yN?gPG$sQtVuv3MWBbzg4&9 zzdu3QqNN%*5 zAoZoUe9KhHhBUwf6qTp2g57zpp0ILHIdom3@gkSFNh}(cTpJH|(wHn7Y7ovAphQCn zrw4j(4nAXDs%#uJTEf?#Y-L=@lgVgv_&lsdmT**B^J5;)7REcN>bqyM{Xs^`ow=$u z{S#(UTXr^4-;SJYvw{D}r|BMSI>`+`bh*)QATej|#Ok}00*c!}jcCLP7|eg961eXo z?y)ZBSFSHR>%rg%;`)2+OL zNkN>aMTu5IWLHCuJG}llQ>Q+H$&WfkqX`g~q<&`Qdm5Dr7Y$7!sSwT%Q0Pxe-K)&H zNAS#dkGy&&o!{rN-P;>Xa|iDHNq&Y^=Gx4nitllw2^%max$z6w%xlN z2^n{q4Kzkq^*^fi-REgTu(sOB*ef$l1Qk8e{15R>5qT2=?+14)EtZ!u-^l+jE6vM& zF^n=xoNUt^<*MJ2YM-=K*ZSWA90m>r0LVQ=4xOx@6$C-1owH>QL(pHf;LpHxYL#Kz z#SIp28}4zoa|K)Qf$0GsW!i9%6!cGFt z@5g^x0;f$7^ZjKpL`>VAOt#h{HeiUh^!{9d+Sb3Z6}ETIha!&G)8&XP1h2_dgR&+h zPo5}kkANq74NOo7Zu4IR{I9XlfjFn1ZY9!=;HF#hBu8~>+yzb@f-M|aU9pJB0*v1X zK`Z6-zW@qYq%4*&>9T^!o*(jmxDC$UERK~w=#`kP~5_5B4O?Xxbc-#!?Ah8HHUC~BQYMiNw``0L!)Z? z;TcBUo<4azKI%b!_fHbBna*-zx&sACbJMX)Y4BH{Yq38G;MP+9)+X@iNdGT^_%8+m zA~`)!0;awyO8$CQkT}sTw6XE^8o*ox9W@7P%ua9l zpPsPIIKcK0erNjyNpzJ@uM2EV3U_thaQB6a$*|}_-XDUkIkL;hadc#6X#OX>i$m~T zagh*N!Gmb_Wcjfd=IbE(cqfRSSRzmhy_I?}rdC6yeo!JcyU(Lg-QC!)^K~1`60AZK z`9Zc`u>l48Fyu`!_79_AJt}wOyl-qbd$N!G%#UQ>?hh7QSX&?bgB1i)q?#MK?_86o zRIUPpTszfM&^rinqe1M4qn^eAk(_JaLqj<(%7hEnfsq>kGuS#%8JL`T8z__3iY3~4 za@q;cGP4vo8;Rn@S z>C?cKrKI~GRk4jJC|-SkO6=<)eKUjk-J*h!EU%xK{>f~D)40x&Y>!${;@hp$EId%g z08(#T|6=^o7v(e@s2hn0Lg+4r`HeOl9BkZ$Sy0^$KK;F?zc*Z5oXx+?{(n|nDyj2v zHda7`@YP^&0(O09?VlVH>GJ=A!~NIx`Lg9l>u>OeUOg|$4dE4-0B(o%n}g?Txs6@u z;%Y+sd>{y}-|Sh2@Z4w*(}TcK5VV9_A~!Le^f8&;cQ=~tw>BPG6 z^%JLXKzYenc&ZV23+C1>?|mVDMBOnsidY@B!^6>!f7uGMo(`V*Cw(&Zm}b5!WO&zR zm+EmLaFYl6FUSMjOmw}Ai^I$H&wVh2RB8Pb3vhnTTne0{LuBm~+m0&wH1bkHQH z1}0y3ZzZIp1EENe0^v@ZYCk-Zo+0Y%G}x)dgR?W>YbFGHa{Qn|EcQOTdYY&Pz*U1A zv*BcLfzNHjmc@n>K0WCQ4W(L*GSX{rnL>EShjt{WX#Qd-Tv>U$fyI;Pu*So7m*8z? zmG@R)* z;KjHNuuy{#v8@9DO`3R5+uMiOPX)hqB>y+kuW{Ia7Ix6%z<1eSN+{XKGQk-?%lb$x zS~vfB)7#LX4Lk$uY4MfbAUs{yHD}pXm<*pYY1Wy@9hi_R0dy|3$%r-~U&E`!eb@d_ z?<55nur#*W0&$gC?wK>hKHm)IXiddQEIOhbPD(#e!()YWjj$|3H2y*KKXjjVPK{y@ z2We~41(oKTSjR+(hx>~R+2js>yQWw*%VfHY7O%3E-HH?q9)oNaQTB$!1?xCXK`)(I zAGq9M{i?SgmY5;&?I5tS>Sg3i(3d@fh`He1;1Sq5qAb;cAzoMjRgKQo9_C{t}YD2IMxSk*a>oq1QWG(OOVnq+>><%M zMcJsJy3oj`q09V+WZY5ul!5QA(;lBab|o7_D1RVk)NBdvE7w1Ln@OtT&~~}fX_=5W zn15i*w~TF>z(6XI*rjXQ7wTW9K$(1xz^H4~-fCBdy2E#t-+b%~+SvCTMFzs1hgp!M zGG1l%F+N8;G>eB%lbzZfmXz*v1rR{pJU73vPKcABiF(P|3Ffp}YMA)OfOxa9TE}9m z38opbzx&Tmfh!I;;$i-aB3*X6RrkSygzmQ}#4YyYu~?s_r}Co@yk2^#mO`?dBI)_WWc=j#`9Y(~g4VCM{@7!^WL0{L@?Hv*d(JV6;B%GFs)!IC zArP0p+H}>F@Ry4rz1TA0H>cUxbO_*|(*;)PS60JS^S?}p!H$*^Q5NnXkR{~7^MRz( zdsSOU^pOMwHfOm?mZw(1`|8tnBbpcX=?*3lqx-aje6sj}!O8cb{{$VZQ3KyMh{se` z3}lqmN{DF)YrES8yx63C*KH_ntr5vdt6vJr&xXRUu%lqf+XiZ11pR{o+XJ=$1+AE; zjP5IA)i;}NBy!jkd7jXr-YJ+&aLH4gXuc{OL>PJBn2Eye%V(hL1@J2?LhqZ{jP=_; z1hu$Y#8K$?Jfgb%_@TaL9GTeAHYjQTbf!*#S*C&y0HsM;(9C-+z1mK~amawL7dnA$ zC@O?IK;Q|IL>7ki!z~q4iiF*y9^$U&CK5vOQWiBj!;wnB!3pfjN1m~FYx#VOGSV`H z^&@^J@S=HM)rP$X$O%!}SG^NJuEd`G?dVZpMJply9!*m!&X<8R68TXx!nt0!m>&ZcI!ApWZEFL1SzIX zWPgaKAfigfyX2XPYV*H2{t!a647`zl6)^6lgorrxz?w<;5QE{D51 z`~I=d15GiFj!$g0v1m{GaxGY;bs8{ZxIar=NrbqrJ!1%T#~%sNOGO2QIZTbD4_KnN zFl)a@WsbyE&8jgwBgb|Z`@@DFE5=Cx$i4|Va_`O}qXz!mP}v58WLJ%V?~aRBF(3Uu z0$TGz z95w>rb{|w%uVcVK+AMwZ%}y@EtvO0eniL}56oZaTrJPZj8|K#jqH`JQNJyUAU|K?3 zlY|yU4jSIa)`|MAuU7e+ArJ-Pd;U7TO6tHC4>@+9s~G!R$41+$KU2RgX!qtHE$nur zoz$;>d??8TiznEIw)SeqiZVdTS;B{t=C7EPY;Is^i>_= zzqHJxIwo`zw-4JJ9Ia0GyxM67?o`QDpFl1UfTuzM$92=pR?ODft{=qCsj%0Xp}pHt zikMxhZWgIJk-RJiBU55-tnroA6cF4_JSE2&jAIAS+3Z5{(D-}y*PKsR zx3%&e$HR^g+w5rxGOxCM&}50fH$hV-cF?Jd6#{o&-P=p~$jTK@Y!hM{!Z-WQF`fL` z-m!sjmAF#{L6RVX#Ur!82XS{dDj}5g*nMQdkYhj3IGxmX> zr63qXJl*)4sV!BpQ4J`PRSRr>h|-aZ&PwsSQzihxq=QH}87jHb7d*YEr-F>GmEW}W zX(`be_A^UpF~XHqbKS&FNa*D!KHzEx8`UL*o~p2534M8;j2_R`?V~X;G$$uk+DC8A z_r>GcL%g+1e)cH2rorvz2ZV&u!Q)l!xPd~Aja@z2NH(H2o-b2dALvzyXXL35M=r24 z7i1v4?LyMgE<0k?pb*Gd@+ZeC=aE0i_i=3uqP`K`exZi;{R>$}zVMzZHOD)9(tA=r za{_t%CkC={X+&$PE*YwmHyvj^(ir(wy--ELUWS_jx~f+OVML(H27m`qZva_)fi*ja zm-*c;d7_QSovV__Ik1#-hqhJyG@R~t?mk_J%@@X}oO3J7Z5fu@P?VWmOH!N@=_;S5 zD0K6EdQZn)DgO5ugHz&AN}?Yc)r_YN>NlbP8@#6K?x7G zxGhl#{Mur<6U%+El!H@>S@|gjUnVKlND}g@%v~DRzp^T&9iaR1=r8>z%lTmP&rF$o z;`=D%_oP;*kl&gQxOfZF=?xKcZt3u)k@t*BGadg>KC^Fl^Gu6b5tHOa`EeNI7w`7o z0pu(PQlvK*>wZ|z=Lp1FK-2>)wMjMa=<-d|D-2JBp`m^PNTp?*VmDMG6S6OU$yCp` z+j0+6)8qk8o?vB_`|9{CU|39YQ zGAgd7ZQ2HcySqCCcXxLW4#7zX?(XjH?h-t>dvHi_cX!u!lk0xI_5Gg3EY_Zx?mnxI zsy@p34{>Uld2y#IH}wS;cv>9jH~sCMz!d2Bw^0ah0_fLNJHOz|i(qu*uk@5=h~R#_ zgvPw`AlltLeia!B@if@b+$DUyS1S{*VW1eLy0ZZO@ z3l4Cm|0LCXSm0pX^3Q{_3Jv~7PgCYQ%n_f~H1lWt5~zcY&nJG;xVF#@7qRFK1F_fy7uM zAmEwu`g85UUsYw#s1-&`v$5?LVoUc0&tA+NO`FYj%l@(rU<@T3GbR|-uYT2jkBQe< z4Q#-qrv|AS*nra~^;I`yz~pHa?IOP@0%U*=b69?))<9dOvRJ`81N0C2d) z*#^ImzSFOR2aSghSrv;9TNG_#I=@B+p#2qm)dgy;I&LmxLkk0c=g(Z8ZbK3!EpYfJ zgO@ca&Q}3rU27~5fY&p!8U>tJFN!)8KNPbw9w2EHXr*_%$>EJy^4;9xx$ZcNso`e=T6t!+=(b*9R3%fXU!InFC`a7iuLy%IqN7dD{d#mRZY$cT z!(CKg{`AUpY8C~nG<_=eh0+TLi=YX=125;u!Od2xz^wPInBIFpA;tdPV;ZzJDBZ0V z9O$GNDsd{IArwS9209E)_*dGxKe48c=g(zm7lClF%;RsoklJ9MhnZbu2OY_m2I}!P zP10wkn+dkP&{jPq=5ZQ8%-^!31A7T-@wKQ2R;CgdJm83(q}wbIM|?^Jc{yPL$NdE2 zkPp<_T-jl`&@&lvEy(E$vwry|aa|Ri7xQV#S%Jb!MYvJ|qb>(z8v`!{4&sb&z{^9? zp@;F_gJM~-PBam`(vjx=Zckm*(Rj*^qIn&tUir|4l_o?}(oWbn`wcfZ!+67bog!WO zo219jZup+b3s&TZh%-BA@9rd3(O78g5V^Rz8F|_7g6$c){zxuu=0O1A)2vD8Z-F|V z?UJNFtW=N-M`5E`A#mhmz`I)q^kkTeeTTu55w&t&x(T-e9WT{X}Nu8tu>x2fYg^hP=c(Cim*i_)0qzjFwrf(q>n6 zz$qIpy|T7L@YI(El(CF{nFQ3F045e|h$U*rCSO*}D*Akh@UM5b*R?@>jC6|R|F`>K-TW#E7VRIQ+F-;^Dwit7*|BFZ6OlPdlC?fdNaUdmNJ)o z4&-lFocG*Ig8>hDD#8PPAsr%-@@YYF3AWhR`fe5u%d7geV$&$S&Kq0qPeh9AGok5g z9D1=KvM?PG>GiP?Ds(oWrwaT|nU$=CrXpLH1CB??M!YFXia6Sdjshm7bo|mA&r7988{ILR-oR&ADA!Kf zZvVxe9`s(Y`iC;&8j3H%tnY~um;y`c1^CDO51z>oi zIr&5J1hI~!tNjd8oCn6JGRMs>g`gGQ0}7kmc*+8ubcv!M*^H7~ixw{^AWiK>Kb%4n z4K2KzP@xQ36=XDP-Zvv7pS2pvcLzjXzLw36bvIu7r)^KbQ))R}CAIz-jkuNq?O`Tv zKa9G$C#&zQSA-jr*b_U+(K{*W#TAK+ce@4?gO^~IykBC%baP2)(%uWzhmM(>ew@k; zrIoXs`_D7^C$%?0!>)!L0NawaxlwWsH6#78c6>~o=o;1B^+wU!)PkL_q- zQM{iXHh0U9%7)lc2@ju$VdwB&oeB;5lIH1BgzxQpGhlDh3KcjyvZSLeo0ns4FK|(5 zxDRafg@w znlt|E5EhV|Eo$Y1SQJ&11(@rBkCiE_Fc=HGNy{ZsGEp0#V7sPTKQw^Ip&(#891neo ztv{j9c0o6k2Gr0{5-jHgyWd6%A67iz>fgy0j>W;a&{7c4pI@V33`4p>nQZA~`1lD& zB?ENg3h>(n;>H5&qGK_Tn?U&!FcSeb)x4~gYY`|dfEgX~^<>kf!%e58zB0G4lPeO# z`rE_oXJ>&49WB_fbm?#%JjqBgyT(hdA^5R?B_^ZeUqs>Msra)Z$7GlMY3$U%Z_}Dx zfS!<%Z_a)IPZ4q&#Op93(8x6h=iqsHq}>`wJ*Re%HI0!jyM|JXNsF_VQx#X@>!KWK zCy~MMK?=CGf%I=&`!zQ5Oae#}a=Mq9{4?{ODOe;)1mB*A{b!ws5v3N(Hhx3d7Fetc@vYT$Wz&M8C8Iq|g2cUVX=&~@T+UluX+lniU@5`r{p z^L)q|jkxe6{^Xn`AJ^4d**wM{Db0sAu(J9Am34 zVZt)6R1OzGvi26t6hHbFzQK;rk3EN8GumRk2@=u36f9@rvl!BxdWh3}XzxnAG(guL z#23{5l1M~USd{jjZ>f7!>9>jx)6Diw6VNuFDv9u{c-K2JM<|#L=IGOBzzwKg&i1OO>GjgWJ&^4{DS;#$ z&2^S@AJB9yVGANRmLe?2Ccq_DIhkUiK+6I9j5zLj$wTu{uE4u- z4Dh;+%a3*5J@S5Wk=XG1ilwvkFFzniD_5{~4mj36(;|o^_I-$Rj-g~i2o2e?H!20s zwbha@!^1YgKvLHoSr;w>5WnJSJw6mA-+~ryMf{e#KvAXO2${+# znogAJ=YA;TcgE&7gq}Fw2ZMExd_H9**`$A|M$3;07xsME@U`uk$fvGTaL)6l*T4P% z=(scB!llMI2T3cPfQVtKr3CAlg@G7Mn5c>KddBk{%uED_4AAS(hY3%@Uo;#4{S;z zZok85@zPd+O16cLMWnuX$0mbDJ&Bz%oKr^Dq98felrMv(zjQH zrurk-(35rL{)G1T9BWTme_Lj|Ki*@DzNvkTOle?1#(!MR%$%z6G}mmHt2g41f?o%sv!knwR>D z`8SuU9`9BlGFJ%X<%<9~({7Df#W_x6KH{6#nO#T_13K6mxHVu9%dcnc>xIH(m8!OW zg-$T1ic9Qkyl&q5X{QAonsbl@+QgNI%A%esSoj#J9#k*=o&UvtCN^-wWrexk!U!YZsGgEtcf^r?HC%r`6=uJRY=;9#;gwkB zp=@KR3=xkeBj4m>h8yqEp#U==%h~HhqKfx(mcD+FlOZft>Ky&DOQ(qide$ znzi%rz&Ss=?hszxHZhX*HYAK-+3LrxtcKs0>F)uknZVyj^EO0AnvS_z2~w-oR#WDM zMC*EIrVVs!Nb=NX3Jl|{9NLhBBIo&j|FI+a<8a}f%(;{A`P40O0uVU{!HvsR{V@>S z5q|?2rw?hD^c%=mZfUDflJLJ?+%ko=T_DV-B&%p~p0HW;=dyD8rDig`0LKLQ7b3aZEhb~I8;I<4&KLt}k+8o{rV5L47y<~@O) zQYj_$0|I3M>hS{M>kK!{@uCzYg*#HCF9kK`8bnV$)}pHJ(JIw)S^C{!M&rMT@4l}> zBNSoURDTaVAzq{BK#%WFLoa@ubwpdqjGcTB7y~h?9MBbKSC|AG;kA1h!u% z`F1dXG8`8T7*Jw}t=XQ?3#k>8$+Y_@5ZwP@=_s**2+`?L_ewkPf%~$6**ma{B_SCW zQE#U_fyes>1-7=h<~RawkN5}J1wbk2iQ|AN%Zn~v3uG{Q;Ay-z2gzu8slljib#A24 zvapRLJOD61oj+{YllO^SN|W{{8L1o@U-96h3YDCG_kn>W)=Jh&f#i03X&9-o=BWh)@pVTN zdnQqPOWq=!q1744KJh-9-kBnX-;?8)a$kjPIjI!B>+4md1rGU6wS~q)>ROV@+AYJA zU2u4q#NB;E;3F1+I>0jA{&$$4wJw{OvQH{1eataLL_H5^JqhN(x?jDTP6E#da>38` zRvWZuBDv{+CtO1$_iSMdh6bd8w&F@)Zb;G6u@rS}@!d8F;+lVt^-tfXJtJt4fk*h? zoufP99M=A_y~^Jv=f8ogf(Cbkx()^{iUyDlTIDHMz=y#d`Vjn?|3y3*9N0;Bt3i7T z0^WdecOSe43ul3yW+$}?AA!7G)syf4y6-lh{)a*&Ck}Rglbifd?$%Wxf%!1`qAIN)3+W?|n|x6x$qF38 z#-1*qN1p**8=%|&23~vDKMy#-`_eq1-!Xea*?f}p);$A11PVRnSWL;eg~04AUysRA zgNEkxO=Cs?(CWbTBOQ5A?MIbW^MBw08fLqkYH$_y&-4{*^V{w=a+vc^H8^sne`)Ua zS8>L~`~`6b(4X*xH9-S(WA~cx*-R39bQ^xJp5tzNc?=kX({e918SaA$@nF$ss3Z)y zVpu0+5>FzJ6E-v$qg>4tzJ+26BhHx*1{k&kYdi>Jj68jY&&bqzYV*$KsF9-mgn2Yj zC)NdXxS#QrDed<>sMBuZLO&vUMzp?{KpR$qu8{=sZ%wp$bAd5L@+OM~l{E}}a?lAJ z(62mpTsc5*z(@KBy=n6bGXJEVUZ`K?1~(Kq!U3MgMlcoXDplsktBR1zAL0kF8mAD$ zYo%gGXl{>R^ki+}c@*Ch-;ej8>?4?GIH+5)ED;O>97pKq-ellJ3q%~PS)oh;-%Ri0 zO@ipxPvC%8fRBP@egQ)tq{R}JdHK5IevQ?G7=`ovi#y)$HXDf=?{#8b$;`smc3UCEB9`I7b zLL72nN$Q&6qmO*Rd5gA{fFF&C?3)sPldhQ&l($6oVN3&Qx3pnpvX(o2i>UjSD}j$K zWDtb@0MYy>ml)-RL2PC-P`F8n^Oz}nl1tOTK!w`EEa!q%>p*#8AVEztvqs#22UJ^t zq2B#_8XxcY+<%Py(Yf|NOb*yo;+KnVyE*BHsWM9}KzH6~rAi$8??F{G-L*sTV&EMS zt9&trB9KzqWGhb8;>-LYGQaf3W{FIUx6qQu|7;QZx?afXi=v%=eA-?(htpiG5#0mp zBWYHNz2*PNx-ef;q~dC7Co2^pH?&FTtjZc|4A-yQeaA}VEnP{xMH>hsL5Lz7MUMIM zXKoD49A$HCCMZVIuASTW^E2@fEOG`JzzOB(ngAIRnmY7fM)x5p zItZ++^^W^SPH!{IdLdv_UP#u&l@*|&9tRZ(()%8^p8dudLjS@q7up=rF1Qxjtbx=l z@|>doos?8h#n)uz`M_|DkH%!idmTK(!Wu)Lg7Y3GV&28xA@{DqhgwcvYJ6{BbCn;C zRnqE6nm~rU*IIfGDksKo3t2;;}CcSYA=Z;8=+j9aY0t>ZPP|mVSq7^pYz@ zis5ZOdOJYcFvs9M>~}_fi5whOjGlFuDu@OuJqCc@rZGg)PQ*v}vXw*XbIr#gtQvH~ za%}Wf9RZc}L3F&~<_nbz?0`Xvd`%O)=#<4W45ovUW%0pe(xPpQBO6ERuBFErR1YC7 zpcM7m?!g5}=aw#7ix#!I>OUU*{)94=i5J+!Q*qUG`Lhl6L<L6N*vP5AmUDk{d2?ET(D6*3a_YD^3KC30KMy!4k`E|>_# zUv_U-+v^E6a9+ID&ZNYYtriQ!ufsvXUsEmhT7FX%-rIc!!NM!0`HDbdO!GSlLm`$XXJ%12J79uB5!~-G(e+|X+v(mc z^@1Tb-BXnRXVR@?r4;^uxhc?4zJI+9#5HkJS|B5=5R@>k^pX4cJPi1a#PCz$(;)&$ zu5?HRG^)IN@5hsVwp_T7f47gY3aj}qdd|@1!I$!*EiWulp@XHI9rgM$z8yz!idcTD zv+Fj4(D#L)R|{>wrCix}-etFw?so^^PyOe!ASAs7qQ*Fg8{?ch+ZR=xeEU?_>rPJ= zR!G@vRAeN#er*S4-okl}@0IqY98{qg2aGXhi=pWIAYp`f%g>eDSrx%r^-FNmqU8!E zZwFG%?UU-TgPUGv&OlrksM$6NwCD?n=Er*0`=@uY{uR7uS{uFPYrIUB1bE*rIW$|R z{7y2_nt?Y7HijIVXMtQ9>5$xwW7Lf4roD}<77LvT0G&K)qX6;;DZb#cWGfIAXl}eT zS>KGi)JqSTC>U9yWQ3RS~etj9O6WAO7Sn*{DCGo zf`6m_gEjaSVY+vt40;$EVvL-HI+t>Sa|0xzqu?C*D-&4yqNpMoE5 zkE)CVUgaEDz`K$RQdP0w>~dJE3O#V#_R8^R6Zz{W`oppQkv+8AAn5Z28TJ>|F(@jB zRNk0L&d(0nbz&v2?S^`Lc!$1)gu>J#H$HjK^TraPh zj5Y4Bn+x?%o*4D6-7|bk2)`^~Gc{riVU%$CW@uMo$KYI{19_rZe6}_3&kkI$6EA`4 zVfmqq^>A{7RF|^4cb9@2%2!LN{y}G7y5crxV6nJcocw4!*rvmnMOpb+1p#NdWgIKu zJ!OLAH|N}A{oxOvvj^uW9?DNPoESUI=cV?1(=|blQXmDZnWo?ao~PP9o6`S$ym(Au zws?D60msANJ+sN3GYjLP^dP%mObiuKgGEb&8QQU*N@MnNPt%3AtY4HjSYiDp+4gv~ z5_0Eop0-$NHL2dA7KXUpjbB+Yt02I|6DL>?PQQ=V|1dwdc2`*@8 zHR9RxE(g+yTemTy%(C(gTG`YH*d*k;2!`m;mH`s)IKvJAnZZZzGFD4dzb7z*;(Vus zk*OBT1{teh&OK3uVf9Fyuf{?=of!LN!WOXOGPtF|jXS9`{Zdz3ygVxHlMUruBH1|Y z6Qu2c8vYMe3x^c;15$dC;#ky&Q=ZbO6wq*uz5X3wE#AOni|3+Ev%xk-rfX6DLxj0i zA$)|r zt-92jhn0smYH^_5@DEZ?So%%H!ZL7>2m{Hu-B}(QbkebRDg6NIzXkY-@w7FUJ45NT@oK|H$0W2 zx6(73-{TudS`!akdo|12;}2A`akie-#<1~29RrH*YaEgd_Ahm*C!WGOK zk?Yzkm{#v3R#}xd(nu<@Vfnf$HGxQXHJs8?o;GT$#RGlJ|8Ox}kJ2PyuK%?6q9)s! zGgv)=Q#M&7u@E)o-oy?%cwf@P?b@ccV8xi6BbDHB9Yx*Bicd^?<64%ZzRSruIb5#i z4%N!i$+J$Z{MR6BlCjc=E1lsNNUk>8^t9M^jM?o^>g5-?iljAk#gvLi=Eg9`2jQ)* zrYqdgzm~0Ci7#O-aUGtHWxPILuJdND3Riwwz}@BrkWivB$iFxlujD^X(bQ%4U5dFjx)>iT+pmD`88%!8J- zU?bkBOb@*hX`%JGKrZY(wQ)SCuoC6B%b zEU8bsFO0V7NIF>Dn%#_amry1*T-?;J<|lCpz%cVcF#}jBSMg91u&ja}ztZYmi*~z# z3fd*dU8uoIdd~~&>R1GC@Wfp`BBn0{a*&#n+Y<#2b$Fo`!(Kcz$t1YI30-jLjz`EH z(s3rt^na5%HsX^$0DK_1nCUW<8Zd>CchGk*dMROaE$5rJs?e`5I1f8t`A97;+U<{h z=tJ1IqCDwfPxRh@&e)&R>)oKwp#`HsJ)fbwJ8W9qlGB$$V3*yU0qCX3(~9sB0>*|9 zIhC5O9*jJi6@e@`D$$Jb7ZypLz{Zs(&uJVM8Kuf37#asCt>bkA!ysY2^qeX6oaFe= z7n^_N{YM_BPwfc|>4f(R$1%R7Q1K9uK^p%_RWVS6J;O9+HXVgZ>kg^#gAHAsx*Hqc zZ)*T@2t@GD4uT>N6|#UzscQ0>@Q&-I0)_;qk9ak0&nP*e^Oj`I{=0JwPMC{Mt3K^A zocJK$F_teMBzmslo5I-RNLSC#0VnvCv@|?h462Nk^X%S43ihAbIy8Ca&h%7YJLXJ| zmSYDA_A)F1!m%1OvLZ+OgTIbmK0_-O!K1F*E$(PXTur)VgLv&RHviJ zcLR;0^XSsVvcm8)%*xmUER|h4HBluS1?@=2{aVxh)q49&=3-fB%`WS3#!H9n#N+ON zb@j8+$PLjsin~@lV^DFuJ?wCQbO{&UbvKf=Dv`THiYm9Ou3v`LE-^)OQhS(T<+TW7 zgmVv_`@l!%$gQweVj5FIQ86JJH6hcWi~g7IF~kxzV6V76KUDr`O7;I9r%AlsBTs31 z`tu21iBS&>MyzRJpc=D%3MDa@_FXn>C_mUTpXRkP(_4~q(31mP{viUi1qGp^Ha@KA zrN=lLWbIv>QCY|hm7JvD;{cB0Mk|%|v6`Vbu8VpL!7^=?XGe*Ez;Y zAO`27lzvq%{>G0QjHaO-d+1yFTa~bKlez+}DBw0yUy}s~W8La(`1P`s2b-yAPxs@u z3)EWxJExS{*X|UT8c9NEloK+9%k=TE30M(NcdsC19%OvuSqeR5!x8IdND#6XyFU#P z;M^&<-PoXdGyw%5RDrnAy`WsR4|US-`9dm?7+hC>_#@9UoP`Dqa*GkWA?!v^($Sz$ z2WBJmbzci&TG-8|H=4VYfZp!cp<>aXvYXJAh_BgjV=BkQe?joC*TtP_ygP!>$I$<1 z3&pKox`~qxN1iz^!bc`sy!?UEotYb0$w>UWvCtqyOOpuwYGnmu{e_{TQf4)0LI~yZ z*3qa9Arg8`e;zxrzLrrHK#Q(S_(~v5givKfKBjl=!uzwt0?@OMo*8MN5_pJJ5&e1K zoCg^US8!mTx`bxWSB;qkMTrnJ%&F5hUvjKn-|G$ilcP8P4iME!yPGht1;w-T^oK+S z(f21B+~5gY8?4S+(vy2%`WERivC5KI+$zF!8tz|`sg{ml_+E;rD<+4)a_7Blv5}go zR{WB+Y9I{sp7=8=o`n;;MEwB$+-0`&x?&J$?sc|n zxCUJ~SCwg4V@H${od>ntR#c3d&Bh|4j2N9{LsJQr3gV4f?KXogFi< z^N3KL-*raC<~y;Ft+LM)Po&tOhxL6($*WtzhKI%FYjEq37c8tgzC0Se`2XDlpIM2-5=^C! z9yIjPY({8!r3hI-tWJnu2LpiH5+<{cy+{|oGi4CbnP=>IQw+#jb!HL5nw?m}Sy>x^ zhbT=;f%Jk&`s!_yJY)Z^(TaTUR_i(dPD*6Q83UFCOlJMOIUnlJzkDKK_k4(q0;}|b z)~M4KeHLVbw#lkg`pCI*iI96DNs~312o3pzF&oZB31dXQIFnG2wEHvnM+FlJJRHMm zD@RGb)6&|~3oTf>KZ4G!X*WneZ;cbr?i|($!3LhnQ2wc{*_jj90)70YQGuK^au;qX zggq-sf*;H|-!baU$i*a!StP{a0MdU06fU`*GFLeqj z1}BUy?q%oaqMHBwS93yQdwZ*8y=5x&Y*>#{lPp)1%^EPK9?6WfQI~M9BMWQ$5eI*Hj1Xh?TQo^U3$T!~^A`@+j&wU_WU=PQY@ z>GGJRm02LeU`etr`}~j_@ZHp!jXM6A){EyRt~S_L7}Vbfa>zM)DN+mjXko3f3IY67 zB7f`A^c48r>i~5k@l%3Hw=7RP7!s64VDCPpar{Iis6LYi=%Tqj=RrJ872#>4#OBJ@ z3`kF(#q*-cckwmh?k86GCfaFp9L;Xwe_pv_%p-a~XY6!Ic0oIZzTwl{&3?mic=CI2 zYQNd$T7O*)-V2gmoJe0xy~vuG;X$0QRNK5L!hX+>-q}|{Y^+(i;oOL9p8pZnIkBN1 z>}80C5G>i70MR2&iG&V$rWOw7HYbNHrp7lSJVb(V`--rK5K&P9)F$c1Yq_Ox7YQ+r z0|MLHK7Qe_IS^rKv~=apC?xJ5X8zUf0t2L;I3ce7LInyffXP773F{;2N&&YEmEVV2 zb6t*=#i;7NbCXR@^y_B%BV-`YehZ4%Yq$4LNy0(i?K6-8{XEh%no&BdLie=z!+c@S zFxp%^c9ww-15>EgGbB#fo!rgaD$czOHE9-;rMGX(|4rx9{7qj(#n_zh?GNt+J3$;+ zmFR$hb8hgPF~35#`eC7DeWtDcaTLeyxRn9=P4j8ZbkEw}<9~iS5Y)D{fQNttiZ z;ESM`(eCMP?csUz!E^98-T#EDnaYe7(YRl|H6i@6X+sV~-=05$=l4DI?R%;LQ6)}A zQQlfPj~?#%D^#!w+hWenZT!f<@OLEv=8nS;YKpgapybBEA%~eAlEZWMs)nk%TJ4h4 zcSdZ-ykEZ+Gs||RQGN`stw#*)Hiu3@Ua6g;MM2F33A4+?4lgp?C6)o{>qzHXEP>0L zn!Gb~JSvE361(=JVO;BX{OB{G*F7$*IRdk>R*WlyIo{~VB1L%G{ztJGv4qrFc_Z2{ zk)DK1x3D5;s!v3Jn)!{%9$#vC`?PfjDZpNSFFC0ahgRJPf5-J$^0%eVFGsJ*gNF4x zt?s6wz6glWFeAwA=z3#_;iV|=b2;aWzq5fzR>{8}FEK$i=&6}4wr~!`m8K6j6v8j- z&+8{XeQAP^%f6$$?4&EDJwKU1h_&eNAK##*uv^Lec1xOy62{^%)x!4&%*|A6%MS+X zq(OTk+A%hu?5Ua*Cd`oR2gUx-*v2$X|6c7;`HW5P{+d0jA|>@3GZ9&wDuN2)nMGjw zL!nZ^jB?YH=n0$f)IS<}vFtHA%d*sx&=n8QDC2~UF;JmFa$bo@>VHv1S?eRxFOY<_ zS1mvAAh`-IfbZE;kE9c>K zInpJFw0)(3XG26?kUwnfrHLvZ9*9B!q^QPRQouSmG*i^xE0f^QFcK6>0Tx#l?Lqa} zPu!{G5a*3%@DDKDnq(9cTBoqEP99Xt0f{^O0i}ia(2q|EhEOM!H{U^?>E$->9i~7@XR^gc%<2$sGcHPUImM?C0vKh3@kMIF?_)-)C%X)yMbw?!z^Azl5 z=(Lrv4IbhU9)ix5cXWV<{N8)Kg6dC-t@$hiQWJ(Wg-dt=pYhaF4?vbp#|X8{AV^xV z{k#3QQUi_`?P`YDQp+?e;SsFne}~_GpMcG-PAg4EQ;WFm7?zao=9(VeK5);>?BR5( zi&L*;UjH$@j1;|!pLF=^lSTQx^a8vP7C(Jes}9y3#kiWp04ycE_jGqZ2tPSv+|rVj zlI;uii_u1lDNuYsVs?E{ zl}>wpC{agOYXrmVi1u@Th%4#&AKs6%dUOVh3Ty(AwOyi729ZaxHJCx zJlnH5qS*F^(x8Z}>P@K$1kxQ5DEEQ7_>2&EWv!`8rvH-D=04X$*90xmZyLU~+JFUJQuzzPk$< z(kj+n12s8}3m{Sw#4CN#W&i9;-8zJbV84PvG&q=-A<9swnThpNvB-=%tqIh zdjk?BTO*m@9523%r#HI~2vWjQt)}Bh5WHCOe4fj?@%WS37=VSJIkMd>C`A8VSXU-Oc5((7J`6U6<;j{ zefOV_<+u*Nu#--J^9bFdFq|YXpbSucWwpztxK; z_PvbFb7b~T(M?+@KV~p5*-LyVezWTuE zc)srss8*p#O~5!)W@;_%@Z>5cxfv1#vyU@8>aQry-+@NKZ=&HQ!l=h_yZovnIOqz(EU)z@)m&~fOylucLzyl%$c z35IlKWP{Xb?hzi7JmUrB(YNHfS`+c`re+*$PAr+a?LYUk#qsB4G>aML%bhP_;m1oHtl&6rcIj}888f=`8Yx(}QF|UI6ttgWL zEf7n#f1p}*co$1IJ%GssK(~d)gNmDt8Er7&ec>3ULtBk5jU%tMGIPtcv2P53@0CFriWpqMi`hCVeeT*LSB*AZJ&(;; zb4`b9VBzQZ0*y+`N;y8uOI^gd*^gNyCyPx?bU}_!+LWn(Q2pQlw zXq+MQ@(31{G%MAK%V{7IT!1|uI#nl{L?s_$|G6Q&AEhc9_KG5|PSUXgm!mb|5sswr zPeKNBNUs3Ds9V+J!GFof>NmUwSu*Hf@s83UpR=08q0Py-Zr)k}^|lk5pNP4N1lR5D zrcc_HS=WAoSsv2kU6PM!ctCu$r%I|?xPVU7@>~cKBKDVDW=AP8&?Wq@x8;;9%|`&$ zgr=w`rrat>pl9S?F%)ek$10M@KYKpepC!+}%*^|hy1bk|*;}eCbe1Mne6L{q*Tmye z1==vBoQ#As5rYKi?$ewaEA1556Ks(iUE#NZ*)sHQ0x9Yad=tYT7&AX>wtiuM7fajO z<5N`b; zy(t_4ihN^H@~Z}=0~L}ko0;F1&Wz6ot~TaNJsiLm+35(x(*C#9WsuiKcZcUXfsyR9WeRv3C)`@K#2F943x^X=OMRzp zw(BJlK1S2_7rt&Z4g=*9@wGOb4(rRBH;>?O@Ue&gv@W4_l?;;aOZ|ONW@nd;3XwOl z=JBi8!pFoSqXMTP&uwjlya+A>AXMn7g*#~D&-x32Ii>(4|G_#mh{$cZLbWNXnckh# zuzg349OLNc1x1%=>O+^(5n-!pWv}8eAC@Y(y&78~edE*H%D`Psh59jkg$4@t2fLq# zVVhzsw{}#)0of#!C5Clyi}Yr^mn&Fugi9EgCCs2h!0`u=(a6zsRT`-ePQ%b9=eg*1 z;V#ZdNOKO|3^hljxMcS}J{DCdJbE0e1;>?$X)g14Aja1Ej_^ldFD*p{d%)4}(o(Wz zJ|@vN`O>*i2)mZ#7LoMx6IWoJZ+$CJ@^O2s5zN2|cR+*5F4|j_=c6Ns5M#s`(pcm3 z`HG_eAGw^D@#9LqW{^tblRXqpsmxhpM2*F>=PyBWDfZS^jM=~CkQw$gPe_NgD}R#1 z2xc{5p1W29H;S70E7-59$xv#FsT~cPOZWc@(VpJQyL=*Xqw~(8gJp80?$1$X^cH7e`tkV6DR)THMlY6j1fe| zTt?tomV``A%Q{TXNjGfb7)FvQH1rP`{YCZU4E@1REP94RiRO{N% zsXNYu$)CYp-1mQqIHq6F7)H4Ujkd9DFPd<)u!DcLc=jABZ12$B*56jFvt3QG#94S< zCy;5|I7r=!we$a04@o;KxZLm4R*xtp6t4Fy!2lKkp%|`pB^AS z*hgc6`ZdXq8LO$Y@TVwB(l>fWJ|7W!rfN2ibqJGCJv+>xqzTCR0sfkt|?R(CN%?C9gR5%c z&B)7`>#L|i>8;wU+5*23tMhMm&Y-|#6I%3gGhuI96l$({)XkEvIJTN2dg4M92fCY- z+a>MtEW;)hG_X|iyHGW#Ii9TqrA-@XTXYA{4f9H&S^sq66GdgJOiGGM{PJ7=X%nnX zhy4(x6790H4YwQ8pG;z4drKT=H@8q+Qzf?}Y-ExB5CXVM$^rPVpDBt1ddI=k6=6E$ zMII(Zm@1_!V}z4}Qr_JqdHX9OM(h!Wy_oY4TudYktI;y@y?%9bkaw5h z+T3{VrN8?Z@h}gpm&1PhBSk~`{4z5sdHv+u>hwF*s${s)FDaStu?f<)8^;QT9 z+%Pe^(|I%{-|SC2Ro!N_bLC>2e~r|_eEtITWfqpG(!T0Mo{Z3)|EE+Gh@1Y>;es#oQnWdl zjy!sSdC~9e;!}6L!I9j5RanaI^kyEby`Y9gZ`-gD06x)fpQLPj^k`39;!h9pa%fTM zZUuNzJ(WB*)-TcrkD>cz+nBosUR1EVKAS6%pEQ-%EvkL8WtVh$*x4CK5_f;zfJDe{lpyUZRy^&NmqnePH2`IE%D7}GhFwF`#B#(k#X25p#Sy}hWP z7al1MNP4g?rW#ieWHIw@G(H1A2%qh%Ormx#@$~B-HugyVTDz29{bhst^ctOMwxkMk z{3#34Ls+7bU<4%lk9~`@h+~hD7Dz8wv_rCaG1kE6UwdUo=X7mQn`h6wOJ)tWpNh2~ z6ZnwO@9^Tni4+R7|Ge)wAVTh^6t_M!@kZ0u(hdK7G~Fk=pKPX>6trWaK~_IjhPLf^D~Y>-ON512xX1 zR%zQ9niVG0oP=STGrzP4YRt=U^6>qF2ZY26jP6WEw;J~AZZuF}7h-`1RQFocHWWAc zeCGdU%;KS#rYWJT9br*eQ*xvlu-1UXUUNfJ-&h-X}#@WDlHU;YTRM2l7YQ8OYL1%L11%^w`6}4Pt zNGZ`{i}rINE6ziO$blh-Oj!t>BXQUODBC>VPvJh6t350AO6}a^L^ySzhKO{hZ6x{z zE7YVi{=nxE`2d<>Q;t>HlCL2ZmPSbk`HP?*q?*I#DB-fjGv8Oz==-;#ySF`D%b-_# z_>|ac&=*hG7P@XIrY!ghyNu3u}g1IrT_F3vC%}7{!)thIK5}v_n;dECFYB1 zM|YP0a4*?1nM%J|(`m{0&ss9HhZ*AGR4$(G<$@7p5;r68~dk%dSQ>mm*6%ak16E~I(<@3A_CT&e2&d% z|B}enut>KMm+7H(vmBZuu>~(*DdDcfMZZ6W8Ze+uaxIgEtCM!3ZAP6%?Li%P1e&v= zH-|k7uYO#>3dAZU`2d>m(dSAHK!x!`0KI({;P0WWrf)j2uzeNR=}r2@+Kt-cn@qsI zW5)M*lYW*h-0_cCs+EH}029_kcaV`IH5|-f_M#*m8s#v5MfX=ywUPZLZ zFb?-7=|;=#qEm2hxSv)7k3nL;L~;=sAELwGLqNhA{Z*=?aV=A|Ixq#5iPQR1q87utmW^l1MYIqu#**GdKlQ_1YQ}1%P zlXHqMhjgGjBL3d&U3JTOLdc=xWG5Eqdgt;-2p$6s`CtSqq>hmzsK9*&ZdA z|5i<6x#fbwkH}An!9Y@2A&j>V$AuP9w!ElBKyc176u`xhSPA&3tf3?o{_k=V1)wDz z=t}~r*Nd=L$vB(G`Igy?~jgY zs?ZwaklhNz1y7a1p-zxt%#K5IMq9WQ{~_(X$q$b#Cc-<|FSTvN!6_K6jqJ!?ktfal z@yu64Ipcwf%nl|v#;;#%=b#oQetklLayA7SD%%Bz#5_CpH7LHTRx+=CVOzq8^62Hv ziFja7jcB|Bk)%vPzTqq63RD(z(r$(Pt>Ku#?@a>c^7h=-!D%9T(^VqjJ;~7sYOp|5 z0v4XX$#9t5H6Y|A5`Se-m`U6l*{@^m30&nV@!hQmTkZ-}Pr!=-P`d~Ku8zn9{$C)b2DB34NjS5%#9(#Kl zSXln4&!FBF4J1X85qdmdJN(fHQz3Q;+vcNtTkE{>SFeoM|B_gz+n=F24eO!EhT2%M z^ZfNB%xE$Gn+Nyp+Flc#P+~6DtmYvVg{2gw_9foBC`;!c4UhW)<|yq(JfE^zB@1K2 zR_b%l-~K4%w9J?GBlUGX#NKidRz~yaAP-dwpl{o^(W;$d0s4!jqp%c8*nRb~`b`?8 zYsVpTq*Bg6j~O9W{PhkA)EcS{9AQVJZGobXn++C5!{rC_4ebXMYqn471O|a$#9Pi< zMlWO!ioDy3XwT4GmO`i24l7GyD(UJs=|8zkZYh}8QXaE)P<&30u;-RH)^y*%-Y*Rz zog?=!VTltn{NMmT>Rc7%^MVcO89~e_zbX1UGg1yrWjkbMhJHQ+<7~5Hpk4Y()a~{)KOwu&3D@>cqIvgob(Qfl4KPYe`ik*}B=nk~x1*gAA zzf^Vje*h6d?!LoMGXRDc>|VH%-KJhM&^F`FUTk(mwgu=XpFJG!oDj4j!eYKWv>9GN zRD4|Io;!)u$3H! zwXyIEFwYI_%KX=+LB{>Kr<>qZ4y-MiC2Dr(#Y*{mdGnYJI7@OI#jv-AIi=)r;4yih zZ8rW_g(f2PVQwZ!GIBjpCMu5?;JMW%BwbSKEUO~PeYE|QIa{4yTBfd^?H|s|z@=}s za{El@2YLw&tU)$@k~8{4;#2ObrUx>+LY6uNOg2P28ZENN$$o`4`i+6whIFhotRnp% zXn@vMz<}pwU8Bo7=n`mQG`3Ep3bq5DlfXv3CnXp=hD~8`__D|^-%$#zL2xn0jYjB# z47Q*+{ouj{%F}NEzgDeNnNV~$Qz$h)U(qV4oRW9#Mh)iwHrrncCXn!c*z3({Q8odP zRT4&eu2m{(?>3`k%i5tD%<_q8dHXgS!{qWD>|$z~AtJ*a#3&1WtX7Kw-2UYX#`kJZhgyk=s5cb1R^AMwk7T&63f@1c`FQ9EP?@E?DQ^l}z-u)CQqqr;>Ko%Vvb5!E^S}PlZcVXk zp5%_J%pI_*(q_WM1&A-kY@i4OmfM&IUyI+ThzDV~f@kT;EGCMdL!Z*`+AE+-*N*qk z84vFmuL?>#-0s`HLiX{B@TI&ded01_1X^K)Ie!0_bC)tSDxLeK z;73CiCkw4f8g#7a;T~XbLkZW$U}|F=(_tYqN_d^Gmz&?WIJlVRkpx>6yEelzlG?<> z3VpesZfC9}NH4(D6F+9=krU`tR2NiR+%GQvJw9m42_cgAtsC4a1Y0Z-Gkuni-G4Y? zk8EL7S9)gECqKBXHB(#|Vyt7QP)bYRpwr$8b{LG6J2Co)!`ykxqfy?JAX_m@cv9XJ zw4@el8>Qh(O>`%mxS%Dv#xEG=`&nUGh7PAh1>{*_)bfQ@mc zY@|J?q_9rGRb8v%tt2yY%{wPCPM~0!uppX(3syWj)+WzQ=E+LI$NUJJ7G7o3?uM4` zPSXEio$;JeosT#BHa{nNr9Z-EX1OIyvm`*6S&whhd}?f^flB zE{3V)mq7F+jc6>GB+Y*q_gO!UqRN2fQ8$9Gdr7rSTES<0&C2yCwhh5x*;|t?HrOoB zwwx98um}Pq;P`w=pOvVNrzBgmJ+VjXM*w`lP|`^z{(*k z9|p8)`osztMs99!W-t;jp-p%0_tSL|X?RS-2DMmPhF`nS4ZxTMPgNz;mgz8H7e4*V z*0zN$^;dD(xo>St=mBXHf`N_R|)_1&*}m0tu9(TcjF& zA&1`UoUIPO4{s^TmDy`CdrKA;>8%1&&ARp!!FZMzZeEWhr6ElHw?Lo_it{r>U_6$r zMq=T=Zdqwi%;JG9#BZT?<#)|_1B=ekZDu+&$iA!W*q*(`1NjwTf#o6sL^?KkNK+-- z)u;oR0*ZHnPUw_`)4RJ=1`+S*VQVGv8qo6*?-k)QQhh*)LKG-(+;kH?UfMi*%zmOZ zA(6I8>M})!J2fsOOZIw%ex0C4FgdzP+;wCrdLp@+z<-)xTG|H!UZ-v0GXXWs=!7Gq z{>Dd$I35jqyxce-Ek^4K_qFp&GHt|_I8vvsCXq&rjhCYppSVTNCF1^J zC#CeEtfWMqFDV+N9L(r&gD=c zeN0|)$MzAJL1FZwX?q_z7v@YdAj&rNnnTJ@WS&BlPf>wO6~#KIY^2QTBoy!hD*i)! z&L|Ib-dD-5$*+n3a$8$n=Aof_GLN}K##-PIl0K($1K1$8G~J)A;d-`9bnvx^r8ESd5>arZ z112{VvQjK*7f`xQ+y0|%%7YHJ54&4pFPslE1Mb!HS3j~L&8u4n9ed#r`0XF(q}m_2 zjT5xhbXacdc))-phfM?9=)*_hKdbBqk7ClbIb8BdNp=d;cK+N{{RuzG;;uNMfD?qO zB!vE<1qSo@5AiMuK&l;G>TuafnY*1U9)Rl(5@iq?0IIKUB1F)ZwY6s@ZxhY2uO6j2 zzC_`<)d*aNHrsk>1a>ic08>+yR_at=9#2Y_z?PgrpOz~DEt^Vdiq+{oD3q~K8+_o zWdqyw=5%bdF_A%dzU(iAsnCTN zLG4#UZ?P^?rr0YKyFseSeqlfKtSF&Mdu+QF+DBUw+Cg{lwUTT~{W;6%=khbG!(+Lj z<%(zX_&)lGzslW<%>2M~zb8;k2aA|NHg!N|X4&i8hTRi~7fd#A%{=e0n$5q1rXhtG zhuAg6y&VD4R$)&OC#cz4jm|7fwkLe(8k3{@|cnLD^ppBmd6$8j+3sInLP z=0SEzs|E@W9+^rT(Wp<9OJPv41Tme{^q8z!WL(m(2nte~Qmm2HE+@=;A1tFx6B-P3 zYygI*#;Ie_+*KRKDt%@e83$$b2<&$%UR+*hs()^0+nM&xB&yE9rNuok+Nkc`-CfHr%}9cLdqp7th~U1*20@k z)9JLG`qYhTw4n5A)g1VZKx!Q#dn@42+5j8tvPi|F52l6l7>wIV{a zW=-%WR8_QVj% zGV|0DQV^=}u`U<_sAlG`YMqLfV>in*AW?`RCM@PL24)|(TFj@bZ3Td+DVdn3HPRJ$UZ7+ zKRj~c>A`WA`^8&fZzG-;j8}yi#a0sCa50nO$q{7C8mW{PTSJzFJp{B>5e#Obi;zNC zVh9$RSeYVh2P85Y_Wf#fRxDCmrFqdl2j%<{{r^+qf4yP)zkM)v)mdhfHdi4Gj=_?fmH{WH`@@CTWHzMxt&eCnO3Ud}+!;s+bR=Q=ATrHPp|;&4SQ z5;^s))2ikXw72q)#CoR(v^$ZNS7{HPGT`bo&`BJo-))=h?Msw(b(oj)Tpq`KX>oJ9J+**7< zbTj{*;6G1rH>kc`xh?)n5q`=>ZHgwPkI;8vfayTh&K4z#j;tpdrXsp4CP15{?|af; zqO36-V#dM4U6D5vD~-_^&|CoKxYC-v9}vkAhM_rIBo^z49_ znxhx&!Tsmmz`g2VcES;%Oo3ZXs@3wqT8G(iy?gqvkUstpER7NYi3g?gLS)^G%&w{r z2Y)QLiOMcXHXz3i;TBFZ{~m?)K-Q~+yCI%lk5DsumflPe14`sS;sNOiapUQ#!IhWN zEUCMHisQ;F$MRk6A!mjGClmljeA=5sO(wB%Ns(1)ja_jlM#}g S>Z5mvo_x*N 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 m}FKd*D_trr509Dhu2m`r-tQOLUvpN9*w&TuNSb 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

      8B+Dz& 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

      jSFjWwEb>kKNTtb7WcQmN%ZuDMSl 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 literal 0 HcmV?d00001 diff --git a/images/mysql_monitorin_powershell.webp b/images/mysql_monitorin_powershell.webp new file mode 100644 index 0000000000000000000000000000000000000000..8b48514992434d0eb6a1ee132d8bd94e6a794487 GIT binary patch literal 46842 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 literal 0 HcmV?d00001 diff --git a/images/og/java-wildfly.png b/images/og/java-wildfly.png new file mode 100644 index 0000000000000000000000000000000000000000..79e41e88d0501a57dbe22ccf6cfd84824c0b1fda GIT binary patch literal 91291 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


      Bb2jgaZ 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

      9xnx_4$U#`Qe)hxJ(RMhQAw3h%M*PWF{1P3;YF? z0WM|B8ZwK=O<6;@M&a*0lNCgv)1v|5WC?>5F5=-u0jP+W;jm}7Yg_sMib`Zl9`vC$Dp~CO@NsyF7EwCy z2Ia7~KsQufo)uF5AO00=IyYOy1@Qt!cg`uHRkpgDNcv!M+V@#}EV<@h_k!tME%E$} zJQ5Fd68^@iSRwbk1>=MQ@92X}YNMjcL;{lppg;oXA_~Rp5F2_5vDNPYW)1$+etRJO zl({Jwq6HWLNxzDK^W}Y4jv4UkCQ+#12@K{#Ip+MObAO9Q?&7gcz#CI|)u;{wH`hoB zm;vA@3&=I!wwS(!jM|ZPM_lzkKNL;)ANebh)9U0wI<-;MKMJp^8Q(A=0^|T=0wIAS zG2wqRVHt>YDQiNwQFwimut0|)C&d=F=BjV-Q1rg@IiCM;Qb7PPMgx)*KcD4D#5o{U z+j@p>1(K_<A@dt~1}mh?1KF5N%z$$s z&ec?VOh8(L*g!7C{ue-Nnnj=$P@O9QvN1!LfmI8ML^a4kRI@@u9X|7Olw>0WR6Z0& zT-PQx0NMd;!?vH4GXz7i)b6kISZ@k%512sAaEB_j59Cy1AD#QEC@lodP_M4};;L`_ zKMD=Z_%@Ffpzs=a5&;W@{n*0S5G9M?UKPG$Ha*MQ|2b{st#6yB$Tff#JjOoCPzD@C z=N8k@Z}V0Kbbv^V@83?Offm9y`N%h^WN_=%FLhMG>HUZi}gs z!ovfNz4=1cDlvBUm&wSgW6wV^>4~Y0D@(7k?^1*;)!bjK?5;kKyZ-K)Imz=JfCQQl zJT|XK_~wti2*2&J=zhlb$&;~yM4Kl!1h-aRb$FLu6teX}}Uq>EG6V zbxEy6>=x+x(6Vk)bDP~=-#V18PRYN$lH!wY`ct7V`gpo+!GwEllVjAx2YIBjw2IEe zlN9sJE&G&rFf)}oPiJi})BJuBr2v~{Ba>V2Wc_lMx5Y|NNPu$1d;E9Ribj?TCvN+; zLc;eVlMN66Zc%vuIY~*AIJd-+2b?4)L_13IX9<>@j4--cd2HrtXrIDIL0&j?a&)_| z{dPxX%UVASnl_qJrvSI_FCVnMA52CZ73+&WA)FdtCedY9y-~8veQ;eY)jD45yxb?f zos-MOU(R3A!T#i*__DrJ;YhfA+wO#u2lVy&V6##!KL8_Qnl0R8isVD zbva=j@_{@s9dFiEi01E^dG@RmK~;$~D7{hY`tjna$`a-6YO7=S?-&_*s~@o^pmu(n z{g~R^Ja3yo{otdI3=_kn3U&O3ClC2jXa308=e~SDBKL`S6Z$4@C*Gst*1K;5&$Zk> zTQrMLCgjV#vA5hr*)@6`-i@CwNwUmS zUs`3_tWFDX%DpqIikN!4lc)ywu{moh3@zeVzb6;}a;f$?_>)*~wM_ogYTq~Kxhi;m zc$Vt@%TSiW;nvda{zRMGQ?#3JHAy2$P+^@+?_$|wYeGw=sNyVl&l_8B`k!r!fepDF z@&{jde6;M->6hkP(IJU@oGh z1YC-I+F3o-hCxtO_Dw}#Dl?c+)_K$(xvd4!5FR!K7n~q7hAVLL8<5IA6G1`Yfl=z{Uw+1c1Nz>RlnG{ z;b$=`Gs-)b3WAE%5>Hak6Tyxr&F%} zvku&XyH2bsz}*9}8h?2)j;h-gaqaoiG{h)*`blDOWLGy?w;Ml(wJ7T-SAVG>xE@OE~TMI4S zooSC8Q|iz3?mgW*M|!<-=BCP3%9|@)E*H&OW#dPGeR7m?7ct#TG%J=*!(jaT&-)FR z8VF}EEv7;H1!D$#uVyd3eU+VGbmhvOsTf>uZD#9FidILQ$`f))ON<7gqqM9p&FPX; zY5VG>spRY2a!)zss2#K~cfYlxYn9ffraF3`>iGP+My=?|?%66`>bX0iQEC-q({lQ%s?WQ*l8$)lhNMAMk{PZ8*vq|`co#^Tuobqw#qIJ;5DIMKj ziraUd>oom}{+wRfLU)hmt_Pq=BIo(W2e6kZyw4%xEc{S&sAdb0MchS7dy4Ro5o{O8 zHBEMjhZM<}N)N%YXy97LalXoy1ulrmm-uhR=j2%hcAFL-So&q@_~nHkEXNh{w*psi zZ{^x{9afo!G;jFEOS+hxV*#-gjD6(*hnG&y-d1BFRD9lPyk+TL_v{!NexP~smwNKL zW&LUA*^?340`-cnJzd&u6_cvFEb`8(x=TFN%YwcxApJtuVYX`uE4TGnu1TUdnuD#>HkLh|^Du6IU1TYg0khOmH^v;@Ue z74F{tMzdd#an`&k)N%VH=IWP#C*xY7%aW9COaCSggP2 zth1X7J?O{z@@+!?1(%Y;0%pP;sRxfc=uKAi!G&T5TOTUT5wci7yQw3ci+%aWpU)|J ze6TXBcQn~H^UXeV*iqZK|6Tg=*dosOp4*~#Ouh{6v^ThDe=xGKyaN@nmHbN4j!!ou zr%hg*sBqwd)^=3pf9LvhDG~LK6QV&Ig@6($yq_KBNk1@XACZ`qnxV8&fr@Y48QY8@ zK|PXE5eC6x&b_2FS6Y&1G{v3~$hl{lzhw6-UUi)K@q7L$MkZ7f9MkIN}o=v;bts`2@9hRI-I*QYV8kCVlj z4Pv8-+|cQ_nhRSTMaYn@?oF+U1U&@--&4g&AA-2Pa@fb?vaeiuf1M;=_-4H7CpA&3 z1(~xscta2wc!u1Db-y4@DsdLL!oj3FOVU@P@K^>`N<5$IRd{%T}P^VNyO<3dgWJ*(dB%akCAf#M4fTg6_ep9(Ego<6YL)z_ zl9c6(Y=%>Jw!%O6e;cL6eQZV0y~z46=R0h^L^3JX9m*>RjpNijC2IJ7hH#3q#NkFS z=3=uO7LMo_=Ch)8hBGBH-qW+4H|V9iMxtNom8^s#g=tKohOwmpU-- z+;d-cXnw05{WV(Qn1>}|r~d?0i7ztnVe#|kcZeusTJx+etqa$BOx*ge`o9$mZ zy-@H~_R3GusozTqUnF%6kPRsb_lx0U!&Cmhx+G{vTF5oO3ZXW$abM5BwA}KKBG+s| zt-!&}B>k&rqL`I{9B}i&LEuG>(WT>a0SUe-a@qwa!kg5}d7;?^yl*HO({+Y6){*#7 zPyiB{chGO6NeaFe(CX+N7vXVNwrUf(l;p_rz1QY;JN8Xd?yhU%)?-0>#i5%87>F!XBZgt3uYYqSrf^e#c+xZ3Mr&2!G6}yt z{v2MV+F()0Kf6@_*_8&z)N}WH?^*8tHcP~2FFtcTy=M9StDp8`IfgUOcLgCIibzd8 zzdgLt?hHoT^wT~xRJIF2^TlGj0z~v~I?iteuJ=@QjFA8wW-PIYa?=tL+*cjgDu@sv zU@+QlIo?*kcvM=8v!i@u-0V$TpadSljp2;cFJySzj%?~x%KDLK{On|_;xKM$}!PFvh7|5?$ACiZLb5+MHX>C;1)W!W($D- zI}W(!u7jBgi^%PTld+SfPc0b=x5C>(m_aw;76BJ4^X{JD>^QkO{c$<@!WT$Wbw$3{ zT37EZ0d>7KXH^_}f#Ytrmu1{_))iM2X0%pd^ZVPM8uL`Lw|ZtVZh~0eRJqXW z%qk5OoKsqJZUX5;7}(?#9sWef0%bJ}$oUAkP7wkELWi+f)cqc_5P~6Mb3o!6G(dW_ z4(_3XtGkVn(!wuM4<)^go9ed=QnHvqOSW~#uQ!BwBjG2v7cLj&W?LJlR?8RbG+Dug z=BK7RuBs`s!)C zAVgE5R&+`(|Il2iMH}KS#klbc_F}2tEi4bTsP=_>fqSG!R%?>?$4gExG*^BfF%ngm ztGs$&K-PjVA*)<~K306&yuo6mU|F=U4L_!wp_%F%w=xCX5xhh}Zw5I$lPskkVTY zEuSuT_%ttfy;kXU@Z9No&eU8Q>17yI5~SUz0{2mi9e*gYlm2^CDA(`69b`_fa&-_( zwx9K&ds4E1>DGr+;=W!$8YY`h9`r*VA*bC0N+_eC6t1j58a&bt~TSv?0x zKQRLifjH9J5DeO;DEuZH7v!nCebdB^k#JXaJgR-uA=bL?qmc2nb3o>EX?W}z|8ut% z3~k*%?miNIa=CjfAo6=9n>PHrdF8R>;_0CJOyO3CDnqjG_L1kAK8s`Lq)x)ke>DDF zU3Ty8KcaAOt2*HN8{e+P&Hxqei^gqj*v-L(sqEVgtskB~Xia=5HYTb#BKD^qJgY7V z=hKL9Xc7T=k`dixN+SXH14oe`6WFrzdk5f#H*%joG{zpH+TBo71pJpkp`=oG4_dVV z_06;Nsde3Zu?HHB9!ZUFhl=W(T4l<7oY|3jW5Zf+GW9ey#bx-jr-J&9RF`SVN_syW z{`SOb4X7r9FDAeKU;^qs5atpy7-ANc8ZAb=%jGcJvh7Jdt>#>`-V>5|!+*JFT9uz8+7bzL&nc zDb^q=YrXNVM>&DKRQT(fC23|ar2(@2fDcb3t1pDFSPQ?co#N(h;;gPFoY%bCL#qh} z^dn(#oS*g(1DGI#RENSxmE(z6*w29>X)rxdBryY~C?=pm_nc5pAiHTPPAyhb3H-i1 zMssXg_;_8~2n}e~b=iw!k*aRzADq&@yOgl-VX^LY-1M4}Mb}6Np6b@aDsC+-C!jbL zKik?@JlFyW4;nk)fnM&(d3w??0@wW`=!*?)(zW#Ij$rYF7xo4*b0^1ozIN zmliNaBE<_XtqJ@XO*W#JpMwM48TnwbA9j`O5q*O3 z!j9qFL`Fc?uz1@$_g9rEhz2qM-=b`k(fm+$K-6pyQ&FGkoAlr;7-5h)*bD0D{b+Tn z@}ts;LYJQKsqFRc%Yw@MjkA5R#H(^UMQs(VZm-*iFjn6_^?#Nua;~k9-C6DFt6n~- z(5xX;q|tQ~b?XYjLpa>j`{77^ i}-yO@l_i`&bqGO*3+-oSTH8>(iPIDvX&6PY| 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 ay0ClYDZT5BmBxISW?gN4tpZJ(;Qs*lR2L%v literal 0 HcmV?d00001 diff --git a/images/owner.PNG b/images/owner.PNG new file mode 100644 index 0000000000000000000000000000000000000000..bc9401ff4066a57d7955e5008acae424bc5b798c GIT binary patch literal 2857 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 F0068IkQ@L2 literal 0 HcmV?d00001 diff --git a/images/powershell.webp b/images/powershell.webp new file mode 100644 index 0000000000000000000000000000000000000000..d4a2d0831d7d52ed63747ff23fa88375a43387b2 GIT binary patch literal 58902 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 literal 0 HcmV?d00001 diff --git a/images/rabbitmq.png b/images/rabbitmq.png new file mode 100644 index 0000000000000000000000000000000000000000..a7ed1a2d7e97ec6a6f1714f1826e3793e29a7ddb GIT binary patch literal 79710 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 literal 0 HcmV?d00001 diff --git a/images/sipmann.com.png b/images/sipmann.com.png new file mode 100644 index 0000000000000000000000000000000000000000..d44e334f4c0f91dfda1bb90feaef7ffdef28777b GIT binary patch literal 62875 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 z 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%0D13d5F7v7V>!VLjI6?o19V%AfUxYY|M_lEKQ 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 TlbZ0gad9mA7Fr8sNB;i-mF1M} literal 0 HcmV?d00001 diff --git a/images/sql-pool.png b/images/sql-pool.png new file mode 100644 index 0000000000000000000000000000000000000000..3143c6959372ff287c1240548081b7cda513efc0 GIT binary patch literal 24140 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 KK@Q?_=>GvN5QfqK literal 0 HcmV?d00001 diff --git a/images/zabbix_cache_filling.png b/images/zabbix_cache_filling.png new file mode 100644 index 0000000000000000000000000000000000000000..92bbda7c8dacafa32b42b199476c27fb7b143be8 GIT binary patch literal 11946 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 literal 0 HcmV?d00001 diff --git a/images/zabbix_low_memory.png b/images/zabbix_low_memory.png new file mode 100644 index 0000000000000000000000000000000000000000..0fef154dc81058845509f63d390e48b03508bbe4 GIT binary patch literal 101319 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�ZoE8yd|rFG{Q|@xggo_#lf24Q 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 G_P+oe-=IVQ literal 0 HcmV?d00001 diff --git a/images/zabbix_low_memory_solved.png b/images/zabbix_low_memory_solved.png new file mode 100644 index 0000000000000000000000000000000000000000..f76ee7420f6d9bc76d2e2a83e979807b541ec473 GIT binary patch literal 9456 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 literal 0 HcmV?d00001 diff --git a/images/zabbix_pooler.png b/images/zabbix_pooler.png new file mode 100644 index 0000000000000000000000000000000000000000..3667b031695b3c3b4443a7fd83572e3f022f9232 GIT binary patch literal 13179 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 RdHTb#6`!j;gFH10{y&JO11|so literal 0 HcmV?d00001 diff --git a/images/zabbix_pooler_3.png b/images/zabbix_pooler_3.png new file mode 100644 index 0000000000000000000000000000000000000000..1869efb1591be914a4a23990c94fba16c7d99045 GIT binary patch literal 75523 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 Z12xu?;^of-@ISy@s!Cdl6$&vh+GW6R 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 + + + + + + + Sipmann + + + + + + + + + + + + + + + + +

      + +
      +
      +
      +
      +
      + +
      + +
      + +
      +
      +
      +

      Apache Nifi JSON to SQL Replacing underscore

      +
      + +
      +
      + +
      +

      Recently I was doing some ETL with Apache NiFi. But after a few minutes of drawing my flow, I saw that the component ConvertJSONToSQL was replacing the underscore ('_') from the field name in the where condition (I was preparing an Update SQL). That was weird because, at the set …

      +
      + + + +
      +
      +
      +
      + +
      +
      + + + + + + + +
      +

      So, you use Entity Framework Core, and you usually code your selects like the following, maybe you are getting too much data.

      +
      var products = Products
      +    .Where(p => p.UnitsInStock > 0)
      +    .OrderBy(p => p.ProductName)
      +    .ToList()
      +
      + +

      Running the query above, on my table, you'll get the following output, take a look …

      +
      + + + +
      +
      +
      +
      +
      + + + + + +
      +

      Zabbix Running on Low Memory Mode

      +
      + +
      +
      + +
      +

      Hey folks, another Zabbix post today. This one it's about increasing the Zabbix Server Cache. It's pretty common (if you have the default settings only) get a warning about your Zabbix value cache running on low memory mode at your dashboard or logs.

      +

      Zabbix Dashboard warning about the memory problem +Zabbix Dashboard cache graph 70% used

      +

      To solve, go back to your Zabbix …

      +
      + + + +
      +
      +
      +
      +
      + + + + + + + +
      +

      I've been migration some bash scripts that I have to PowerShell, and it's time to migrate a script that monitors the replication of a MySQL database. The credit for the original script goes to Paweł. It's a simple script where I seek a few tags/fields that we get from …

      +
      + + + +
      +
      +
      +
      +
      +
      +

      Microsoft Against Covid

      +
      + +
      +
      + +
      +

      Has your job been affected by covid? Well, last week I've posted on Grepora about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by …

      +
      + + + +
      +
      +
      +
      +
      + + + + + +
      +

      The power of PowerShell

      +
      + +
      +
      + +
      +

      As a long time Linux user, I've automated a few things with bash scripts and stayed away from PowerShell... I've moved to a Windows environment a few years ago and still, haven gave a shot to PS. But why not? I've made a few scripts to automate some tasks at …

      +
      + + + +
      +
      +
      +
      +
      + + + + + +
      +

      Top Level Statement in C# 9

      +
      + +
      +
      + +
      +

      Hey folks, I'm coming along to tell you a few things about the new feature of C# 9. Every time you want to start a new project, you always have the same Main File, with the same structure. At the next version of C# (version 9), we'll have a new …

      +
      + + + +
      +
      +
      +
      +
      + + 1 + 2 + 3 + » + +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/index.html.gz b/index.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..3e5460667e8b5977d7cd506791156574b864bc74 GIT binary patch literal 5946 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 literal 0 HcmV?d00001 diff --git a/index2.html b/index2.html new file mode 100644 index 000000000..f937a5682 --- /dev/null +++ b/index2.html @@ -0,0 +1,582 @@ + + + + + + + + Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Zabbix poller processes more than 75%

      +
      + +
      +
      + +
      +

      Hey folks, this is the third post about tweaking the Zabbix configurations. All changes that I've suggested here were based on a Zabbix Server with 50+ hosts. Another thing that can happen to your server, it's the poller get overwhelmed by the amount of servers that need to be polled …

      +
      + + + +
      +
      +
      +
      +
      + + + + + + + +
      +

      Sometimes you get your self in need to monitor a website's health or it's content for changes. Of course, there's plenty of options out there, but for the sake of curiosity, let's code our own to see what we can do. First things first. Everything you'll see here, you can …

      +
      + + + +
      +
      +
      +
      +
      + + + + + + + +
      +

      Hey folks, if you want to achieve some certification this year, keep an eye open for vouchers. A few months ago, Oracle released a set of free courses with certifications. Now it's Microsoft time. Microsoft is updating they're certifications and we have a voucher of 80% discount using the coupon …

      +
      + + + +
      +
      +
      +
      +
      +
      +

      Zabbix ICMP pinger processes more than 75%

      +
      + +
      +
      + +
      +

      So your monitoring sytems have grown and your zabbix started loggin "Zabbix icmp pinger processes more than 75% busy" at the dashboard.

      +

      Dashboard do zabbix avisando sobre o erro

      +

      All you have to do is open your config file (/etc/zabbix/zabbix_server.conf) and find the a tag named StartPingers. It'll be commented by default. Uncomment it …

      +
      + + + +
      +
      +
      +
      +
      +
      +

      Zabbix Server Out of Memory

      +
      + +
      +
      + +
      +

      Do you have a crashing Zabbix Server and looking through the log /var/log/zabbix/zabbix_server.log you see the following out of memory message?

      +
      __mem_malloc: skipped 0 asked 24 skip_min 18446744073709551615 skip_max 0
      +[file:dbconfig.c,line:94] __zbx_mem_realloc(): out of memory (requested 16 bytes)
      +[file:dbconfig.c,line …

      +
      + + + +
      +
      +
      +
      +
      +
      +

      Flutter + firebase auth crashing

      +
      + +
      +
      + +
      +

      Hey Folks, recently I've started learning Flutter and right after a TODO List, I tried a Firebase integration. But as soon as I started setting the dependencies, my app stopped opening... just a crash. After a few logs digging, I've found the following log.

      +
      AndroidRuntime: FATAL EXCEPTION: main
      +AndroidRuntime: Process …

      +
      + + + +
      +
      +
      +
      +
      + + +
      +

      Your customer urge you to drop a user from the MsSQL Server database, but you stuck with the following related error:

      +
      Error: 15138 The database principal owns a schema in the database, and cannot be dropped.
      +
      + +

      That means that the user owns one or more shcemas of your database. If …

      +
      + + + +
      +
      +
      +
      +
      + + + + + +
      +

      Limiting Connection Resources on SQL Server

      +
      + +
      +
      + +
      +

      Have you ever suffered from a slow SQLServer database? Someone love to run that heavy query in the database? Resource Governor to the rescue. You can set a few rules on how users (connections actually) will use the server/database resources based on a few things.

      +

      First things first, if …

      +
      + + + +
      +
      +
      +
      +
      +
      +

      Using git hooks to easy your life

      +
      + +
      +
      + +
      +

      Hey folks, it's been a time since my last post. In the meantime, I moved to another state, changed job, and started learning new kinds of stuff. Today I would like to share one thing that I usually do with my small git projects. Git has many cool features, git …

      +
      + + + +
      +
      +
      +
      + +
      +
      + « + + 1 + 2 + 3 + » + +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/index2.html.gz b/index2.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..8544103b0df36e27ac48c2a9dc37818dd2e8cd48 GIT binary patch literal 6178 zcmV+-7~SU|iwFP!000021MOYwcH6d={vAIBs!nVB)YR3EZN*lPlQ?a<;y6v*o_4yr zv>+0a5R(K0fR@#By4HD`d5QTqk1|g(djljzQj{&FiKEGKF1ADf8~Xz6{oz93=!>W4 zPcD9abxOuM@Ov9a_>1^7939tKSnF-T6Gpw>27y0E0n?PYV=5KX$F-j>o;e4#d{RgQ zc3ivSY!V5nYs3|yW+7yqa8HkqJ$A)i=9n)#goj*n>O0D%K09vJn*~y1ts{rMi}}@Y z?HA{#6X%HtBC7eoXF0l@9W!sl(vq5MpY`7GD4=0@)UaPS<`@h_$Ta^0sEIH~>_1$= z{ra_xG>-;C*If}b;_n|mJ=y>D&a10II8u?fS8ri%U0B0 zRXHBe5xc$OhRLTIxkvRV9HoTGk8Z!o6$#T`uV-~Q6t5jps zsl%_-6gkdwd7|kE4XzqcH@{-0z#Qp$3aRWv(5I@8gc$jZMqC*M0F7^lG~oX9_%(Fg z37sw?S&}A#pMrWdLKS2-cCM8wRLW1Pb7)BYsphV-EvAZ~7b*vc4w-hx%Tq!kR${~O zjPgKu)1B&9ik|(t(fG)Ec>4u*+*KU zqS>`}Jmv~%8djHt;JY4Gl>|+c%6eQyK84x`zHl!e71AQ=p~I4;d76C>AG%J9!FA-$Er(q^Md4*S|30s zWwOtMQAxQ2>Ryhdh(phb1UPGBoW15(j~3;UEMion0h5mlb6VxP;)=;)p2pvDxv19E z9b@!Gro3>h`gIAo$?H1C(Xxi-~jHB{bIJ5j^}8{=>hB^h~RVT!}>oe#~+i>XVLx zo}EJ5k|eTOO~2rwXT-OSG<`~;Ua-a6SZO|-W`t7i{vI%oQ?eECFct0a5E}A!N%Sv+ z=^O5`0hOf$(|t0NCn$z|!2`rRG%VS*Xj^Em!xsKsnE%hJW|;5{PLr|Fgzqim_@r`- z&HzK9&+kH1mzQNhP=Cf0&PdW}g)q5BmG-Iju+#4B-zZd)butE^a)UH?qSIU0Epaif zsy%TCsRCMV%WJX4rZEAekwlQAhQ-JmM;Jqh>r(|GuAufb%6j}Nm##&W4{agMC!&_% z7n;;s4*LNGx44@tW6BL;twmTY>VR1SERrO`r!lDB@xi$>^9}o?gW+WM&Ges?X$FB^ z0Dk1|B@*oe-U_$2AEj`|(k-!K*x@NBLrR7enE{w`)ZjhxbvRJbqcax9M-5xPqBu=) zOzlRAYQ678z>XTUqzrni9&%Q>1?;h~QR}gA)kpj!z-U)VBWXY@Nrx@i zvcT=ls++k&`~v=u$r>>Y5g=9))!S_deHgx*kMivc8()$$3l1Ihoz@RRp!n)h-WwRW z+$8|&w>DGkZ274}Fo-s{A1#PlXl^5e6~~sT>;Va6M_DZFFnuEBau$ACyC#a2rI`_u zVp8iB`}tf|Ft9x&s?{#{pEUmE@|u1&;|f0+Pgm96=Or@ssmN+A+U^|pQZ${B}i6+U zu-k0HKd0G&p8()5#xZHO$q%tVC72Hf`T<+OWuuDCTd(*(QtWXya3C1fx)sWbo|04c+yV8U$(16w3HNXmQUfB*eo zM-5OD{I6DFRj*#y%H}(Ga8S{~tL&6{@PQ5q{D(o-kjB0?pRZNzQ}xb@V4el8#J$gA zxCLLB$Do&TXa+a)`t;-}IXi!SO8)1+ZGTSUuI=E_4a%+VBU$nn4k$b@(+iGsbG}ML z?Picf1u*=(-DEeW+W~z<^NO2Om&BM?o4MZQt@tI3rQgM>uc07LVc_hUW1l%32O)gO znLMs7L$KESnX?H=m1hlstly%6+l@sQ8DfDgD;@(kHW-#3kL3rAnTt{1q7D}b7!(MJ z_Dp6+9e@>j?4W;h=pQjCco>JSb)1Esca{|e=lBm>n3%%WIi6r)@+>V}yWKO*W(6{+ zG6$OwHO-5W!YIRVepLv9ywQ^_nPaPtw7$6cy=#RBUAOCCDy3RnW7kT${+7*VYu zEO`T?C1glpfH!eG3H1ID2HaVwPK*!MNNf-BAMD|SE#Rqv11V-7!h-~y)XDh}p2t!# zL_GjVAYTN^)l&oo!c6HaVqg!Z?hpt=h5(`mMK2j=9>f{t4$kYNH5ONbh6qd9Vqx4wzb3r0^*<0_y$sK}| z)eXBWN?D2WJzRMoxMG!P3;>$+DC&;-%5j-QE7)a1=b(w^adGTa?3uRbJ%!@f{j%bu zP~3LXgXUKxC31(*rNGHLp_fmk`S&ciE{LXic+qNiJH?5Xn33k;+9I0VL<=99xIUo( zO8_TOcgz`1ln4~RU;r~EGi6lnkW0oQ0#2Dt0c7Ch2jY<{5xW2saH50^!S8{u)MG{H zNbHbvNzsQ$<})+fLIGBoNsplfcwym>vL-H63dCNDi3Lw*+?7I!A@B*htmnQ1UvUJ6 zNv4FRo3g~aGAlm-eZ~}IqbaM%K)ywhSf#T{@I4Zr57hZoUHcyP+#&3FKO-*-eO9J^ z4}U)P3I}(C$cdm)tTvJQ{K?rXVvF6n*0Dt1^@ziJPJ8d7^{{GYVUL{A>3U8q*qMac zsDh}eW`VMC3XtW*?pZLotkD5_LX(6L>WdLJzSOAL7H%;V8N>=SN6kzEC{T?D0@`xj z^f=@Qcd<}kAJ?9yX~Yw0z4VGJ;6(s57ywa0n3MvLuyn!oBmmcD?OQgQExSc9C66mI z2sMms05yOV1a1Q#jC^(lhYUINwyh(a!00uYb`zp0ZM#ZR$IM3!lWE(iXvpD*Sx_OG zj?9ivk60>iP-CwQPbw)>C(kubZVXuJpX`cE5>@Nur!aXA*yD3sdij`c<38Zu{UXeg z_FQo#=60(00sdnLcboq&P%r;aPZJ6HD5WZn8aHbbj3lRb;%Rf+2ny4y~B zzk07id!IaG0~u4fmhtl z9V8?{%T$Kb@mL&&@4lEIQDH4=TL=773S#lMHtOc2%J!9lbt1`n#@(bH)-uxX1Cc(u zGvRiLy5v!WK{W4|f?BVclp$1IRwTD~({v=z51{{)v$PI&cOUNW?l$*3`_03>z1G9l zUa=6pURdo$Awkr7za9J=1X!ic)NgFC9bhr8wMzo#|z`+p3sjl|#&QRH&Yt?eXh zx1{5_j7dJp-o}r@Kl+=_WQ_YVTmyu7#l5W+WO~$Qa*_9yN4rp4@Yh> z+=?({F|~X6@zLPN(1&KtWFKer`a>=m?vd-$7`~-ZuGk5m*#hJnlIF&j6~(FT-{8+GUvO~^YEe0S0W?jPx{bzPUUoza<>`#*okLhdyqcTLaFlYP3)^(3v zH8L}yH4Jhwot)4invRl-^QY(J1y_29JSSRmGn4-;wI_#B^vG_&tdqy!h^Zn<;KoV? z*;7sw)9FM#47XwQ4}IR{3^)&_ghml$6b5(T%m6mDdfmK{k|L}+IZ3#|MFv1eig+BS zLPk4Q!z^Qa8qJljz`kko?tJv*>W+Fky?xkI`Eyha8e2Re@ z=l5mzeWGT;C4omiMM`Oo(g?Sk4vdRKW)5TKy;kR-G8IT(jM<{3RMbW3k>mh4BI+;7 zfQ@!h8eNo-Ht~wo%UX|zi^}Px1u1K8XCaTFwzQ}5vlRJ^gz(pCJLw&0c7@FA0X`3$RvUMV&hJubwaH05!g-E$oL<5eE(DDXLyd}u zLnZ+snivFO27n`Kx)h1NCHUeD26tcB9Un3dZTufIdNn2QVkW2f294d0l9oyhNWR0@ zWkY<^MVKtmc-$C}z^}=BD7b~x&H~BUxAqirSd{jm_2s?VsJ_HoqI_xZ3ieE7-iY=^wWl>-MDIGe5FVWZ)rp9G$jUEGfL3FQ zTRTIRKjY###7h%BamS{aF9KeTH#3bTlHx7&e^n>nVbg)JyE#VF1vCn=lj>OF+Ro@R z+D7?-``vvkyu(ODO)sn;mj$%h%u9*T7yIGG{-MS3rie?__*llnVrbRuk#gTAf|- zDOCU7Mb`j}95~Hgr`5S=bt=}9S{-r{N$w*UIao6=@_d+WTMaigK`&>}#w;$H6EYdX z5_WCQU-oMsuJyDW7TN~X!|$YJHk*t9*x+e*cGn4h;2O7nJhz8z4a|bUF!o7zyH3s} zj<@lpQ}doGWLF|AyvJ%l5DCR(c5KB6*suq3S;Rsn$r)hTj+0ds0DgZQ4~*=I9&BHC z@vwCl$~2OfT~$NVQRAvr>tS`-#u_|Eg!&>Jfi%gxwWy69;0Iq!;X&jx^Zp5PoHhP; zF$17$P#zx3AtuQFXLBCMr|>}c=<6;I=2+FjOP|ZJ0^$Gn$gFJL3PhHiZaR1NYGMaG z{`orTLgj{E>wWFhcd>X>jXn}WbKRwOqw?nK?X~94hP{bA$~2|n^0g!$qSs!jn&s(t z68fD=`W3WmmBqi76}ql$7qgRX7qkPFoDZEI*xE@x`7~0dJJJv$lx9h{B;133lb$M_ z0b7&UHK*TJw6kI>%bzmWt`VY4_eu5{z}0TyWMK0VK*X#<_>vytjHj|!4QGygUOpz6H1kJh z*KRoDI4N;k>`VBc+L!o~u9;L?yp5p3ahu~AHs(eSvoAjXMAD?2i&v8;*)O`D5=p$p z0R{`J%9NH{OR3({E4rdUKR}VSl*Q*^e7&MDFR;v7N)t@gJAXxK&ZcjEe6g0&giNm} zOa0~P#afCIi3yWx4AE^xiC$sBH&}2j<&t>FL$IPuuT7z~lxJ?edRduf>(y&1mlncT zD~fc1WtNfVs1f6pcIghzj{pSiYf5+nkp93>ut@o}`39X%=?@17mp5bnEK1|bagiM7 zrj$K0vg}1FocZi<7~|JTO2E!@yq7mwg@41e7gHaSlrpzVr6*icpX=!&zMtT_q}{M; z`8L~DQyPTgfL)Ow_BD?{(YZU|2oFKRFrCW5cdtD$F$Bas+F&-yG(rw0teLMMWQ7NI1Ba31_b9G-u%*C_C`a{lqPuVw&*zhJhd@m;U zykm{`EX9G@UrsE&E z2M7m@TB`Xu>Kf5FIj4_n{ee$Ih!N({Cv%8XTHf`-`SNxSLp842jbu{S_+fLxlRY!) zaXckwjGT}sR+jR8IS-rBbv_m*H;A=c`^D$AUS@(s-O1$I4YMJIJ9B0qheGJZHvko` zhf3!zJMEGg7f!q3q{$L@8;*tT;sD%F8OAr;_ZE%cIKLTj_Y%C(W*6 z|GFy~py^Y)(6+T{Mcdq-zcOz`>!=1OyIE4iW@Tn;!(*al%qla0c_Ddg(^`0w9Ot-# z2%H=ZErk|1mHRE(%-znqNxJsC_4S+E_GSVUE*ye6QpBx+EPrx$ee z5<=rlA-^?$pQoYf5p<7G<3d{<5F3;FF&je1+8WUvqDor)b9*cIBx{((_IMh4^KJ48 z-eiCc^MP%%z8FxSm;?9mpuepV`~)et$%6L$AZ^GM9ScLHRU8lj#{n(NdS)aFJ?dK+ zQ+($<{>N^+efDbiNh{Z-GP>}I08WMR@1%~M`~{tYhdG{qlynNnowZY}W^4POSsvTa z!F3s{fDZq}>?YSH7;?vK<$DTkc5557IZLzW0%2dubBitc!HnUJ`CgsBc-i;9LF}9K z>{<7z{oUMJajk1zl6qeIVp(0tQEexe(cHxixn2Rz1xmRjbE`L`qyaCNgcn~Yl&fyM z&NA+hngS{(3UdE8*BWn*uRDwLSH!smxo?g*S()F>r|h1~3gzd3OQS))V|I-{S%}%l z_tDv(O>GPlMSP@6HKHwb&0L|5fnv$f)qnm3wx7i9cWvw~8 z>9XW}`H*a7Ox6u7tS3_y;P}9&nvu(9mCs&SjBMiln-#7t6J)ML4NKHYZiz5ovDGTJ z+^$r!osU`Ky4t)hU0*0Rr_9BSRmr!!HWDUsE%vB^ce0ufIM(X@A4;@*)A4`+00Lw4 AYXATM literal 0 HcmV?d00001 diff --git a/index3.html b/index3.html new file mode 100644 index 000000000..31c73e4a7 --- /dev/null +++ b/index3.html @@ -0,0 +1,526 @@ + + + + + + + + Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      + + + + + + + +
      +

      This is the first part of a microservices development series. The service will consist of the bellow architecture, where we will expose an image optimizer service that will forward the request to a RabbitMQ queue and answer with the bytecode of the optimized image. It shouldn't be a long series …

      +
      + + + +
      +
      +
      +
      +
      +
      +

      Connecting to a database through SSH

      +
      + +
      +
      + +
      +

      If someday, for some reason, you need to establish a connection with a database which is behind a firewall and you only have SSH access on that server (and you don't want to use a CLI) you can do an SSH tunnel. It's pretty simple, bellow has a sample of …

      +
      + + + +
      +
      +
      +
      +
      +
      +

      Now posting on Grepora

      +
      + +
      +
      + +
      +

      A few weeks ago I started posting at Grepora blog. If you like or are looking for some Oracle related stuff, Grepora it's a good place to go and spend a time reading :). From time to time I'll be posting there, it doesn't mean that this blog will be closed …

      +
      + + + +
      +
      +
      +
      +
      + + + + + + + +
      +

      Since Parcel JS arrived, I've been using it a lot as an awesome alternative for WebPack. Webpack isn't bad but IMO it's too complex for the job and parcel do the same (at least the basic) with almost zero configuration. But if you need to create many apps (like a …

      +
      + + + +
      +
      +
      +
      +
      + + + + + + + +
      +

      Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some "Could not open connection" at my …

      +
      + + + +
      +
      +
      +
      + +
      +
      + + + + + +
      +

      Change display settings on linux with Disper

      +
      + +
      +
      + +
      +

      From time to time, I change the Linux distro on my laptop or just do a fresh install on it. And once in a while, have random problems with external displays. It can be something really "simple" like don't detecting the external monitor or something crazy like the image below …

      +
      + + + +
      +
      +
      +
      +
      +
      +

      Java - Files.readAllBytes throws OutOfMemory

      +
      + +
      +
      + +
      +

      When you need to interact with files, there's the possibility to read all bytes from the file with Files.readAllBytes. But be aware of the kinds of files your application will deal with because the Java API files have a limit for the buffer that is defined as Integer.MAX_VALUE …

      +
      + + + +
      +
      +
      +
      +
      + « + + 1 + 2 + 3 + +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/index3.html.gz b/index3.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..c32e04ef8be1edd46f06f5ea7f588e7478a90f5d GIT binary patch literal 5534 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 + + + + + + + Limiting Connection Resources on SQL Server - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Limiting Connection Resources on SQL Server

      +
      + +
      +
      + +
      +

      Have you ever suffered from a slow SQLServer database? Someone love to run that heavy query in the database? Resource Governor to the rescue. You can set a few rules on how users (connections actually) will use the server/database resources based on a few things.

      +

      First things first, if you don't have DAC enabled, enable it now. Dealing with resource governor can lock you out of the database and leave you without action (almost... you can start the server with -c -m -f).

      +

      Now to understand how Resource Governor works, we have a few keywords resource pool, workload group e Classifier Function.

      +

      Pool Sample

      +

      Resource Pool

      +

      First, we have the Resource Pool, with is the bigger resource group that we have the ability to manage. With it, we can set a few things like: MIN_CPU_PERCENT, MAX_CPU_PERCENT, MIN_MEMORY_PERCENT, MAX_MEMORY_PERCENT, MIN_IOPS_PER_VOLUME, and MAX_IOPS_PER_VOLUME.

      +

      Be aware that the MAX_CPU_PERCENT will just "works" when there is another connection with a higher priority, otherwise it will use what is available. Let's create a pool.

      +
      CREATE RESOURCE POOL [SpreadSheet]
      +WITH (
      +    MIN_CPU_PERCENT=0,
      +    MAX_CPU_PERCENT=20,
      +    MIN_MEMORY_PERCENT=0,
      +    MAX_MEMORY_PERCENT=20
      +);
      +
      + +

      ## Workload Group

      +

      Then we have a workload group that "works" inside a pool, so you can have another granularity on how you can split your resources. Again, we have a few options: IMPORTANCE, REQUEST_MAX_CPU_TIME_SEC, REQUEST_MAX_MEMORY_GRANT_PERCENT, GROUP_MAX_REQUESTS.

      +

      The IMPORTANCE set guesses what... the importance of that workload inside the pool, you can set LOW, MEDIUM, HIGH. GROUP_MAX_REQUESTS sets how many requests can run at the same time inside that workload (0 will set as NO LIMIT)

      +
      CREATE WORKLOAD GROUP [DepartmentA] 
      +WITH (
      +    GROUP_MAX_REQUESTS=2,
      +    IMPORTANCE=LOW,
      +    REQUEST_MAX_CPU_TIME_SEC=10, -- Time running/using CPU
      +    REQUEST_MAX_MEMORY_GRANT_PERCENT=15
      +) USING [SpreadSheet]; -- pool name here
      +
      + +

      Classifier Function

      +

      This is where everything begins... This is the entry point where you should set the group name. It's a function that will run for every new connection so be aware that if your function runs lots of queries or some heavy stuff... that time will be added to the connection handshake. If the function returns NULL or a group name that doesn't exist, the 'default' group will be used... Yes, there is a default workload group where everything runs where there's no classifier.

      +
      CREATE FUNCTION fnClassWorkloadGovernor() 
      +RETURNS SYSNAME WITH SCHEMABINDING 
      +AS 
      +BEGIN 
      +    IF APP_NAME() LIKE '%Excel%'
      +        RETURN 'DepartmentA'
      +
      +    IF HOST_NAME() LIKE '%THAT_MACHINE_OR_APP_SERVER%'
      +        RETURN 'LowPriority'
      +
      +    RETURN NULL
      +END
      +GO
      +
      +ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION=dbo.fnClassWorkloadGovernor);
      +ALTER RESOURCE GOVERNOR RECONFIGURE;
      +
      + +

      There you go... now you have a fully working resource governor, but look out that If you want to delete that classifier function, first you have to remove it from the resource governor (look the SCHEMABINDING at the create up there).

      +

      To disable Resource Governor

      +
      ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION=null)
      +ALTER RESOURCE GOVERNOR RECONFIGURE
      +
      +ALTER RESOURCE GOVERNOR DISABLE
      +GO
      +

      +
      + + +
      +
      +

      Translations:

      +
        +
      +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/limiting-connection-resources-sql-server.html.gz b/limiting-connection-resources-sql-server.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..8901207b19b4abf6b4723685b694ea358c6853bb GIT binary patch literal 5851 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 literal 0 HcmV?d00001 diff --git a/linux-external-display-with-disper.html b/linux-external-display-with-disper.html new file mode 100644 index 000000000..6cc73bcef --- /dev/null +++ b/linux-external-display-with-disper.html @@ -0,0 +1,420 @@ + + + + + + + + Change display settings on linux with Disper - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Change display settings on linux with Disper

      +
      + +
      +
      + +
      +

      From time to time, I change the Linux distro on my laptop or just do a fresh install on it. And once in a while, have random problems with external displays. It can be something really "simple" like don't detecting the external monitor or something crazy like the image below.

      +Display bug +

      As you can see at the image, the mint detected the display but mirrored it in a crazy way that works but doesn't at the same time. If you try anything and doesn't get working, or just wanna skip the whole job of configuring complexes text files, give a try to Disper. Download the latest version. +Extract it on any folder, and make install it (on the extracted folder).

      +
      make install
      +
      +

      After that, you can start using it... There are a few options that will serve you well.

      +
      disper -e #extend your display
      +
      +
      disper -c #clone your display
      +
      +
      disper -s #only your external display
      +
      +

      +
      + + +
      +
      +

      Translations:

      +
        +
      +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/linux-external-display-with-disper.html.gz b/linux-external-display-with-disper.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..fb1c3c084409594ad53988855231111784196979 GIT binary patch literal 4341 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 literal 0 HcmV?d00001 diff --git a/microservices_nodejs_express_rabbitmq_part_1.html b/microservices_nodejs_express_rabbitmq_part_1.html new file mode 100644 index 000000000..02954de6b --- /dev/null +++ b/microservices_nodejs_express_rabbitmq_part_1.html @@ -0,0 +1,548 @@ + + + + + + + + Microservices with NodeJS, Express.js and RabbitMQ Part 1 - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      + + +
      +

      This is the first part of a microservices development series. The service will consist of the bellow architecture, where we will expose an image optimizer service that will forward the request to a RabbitMQ queue and answer with the bytecode of the optimized image. It shouldn't be a long series so let's see what we can do.

      +Service architecture +

      Let's get our environment working. First, we'll need to install the libraries that we'll use.

      +

      Create a dir and initialize the nodejs application inside it (npm init) and then let's install the deps.

      +
        +
      • amqplib - AMQP lib to interact with rabbitmq
      • +
      • express - Do our basic rest API
      • +
      • express-fileupload - easy file upload parser
      • +
      • imagemin and imagemin-pngquant - our image compacter
      • +
      +
      npm install --save express amqplib express-fileupload imagemin imagemin-pngquant
      +
      +

      Now let's write the entry points for our service, we'll have two basic entry points. The path / that will have a welcome message, the second path will be /upload and this is the one that will handle the image and produce a job for our workers.

      +
      const express = require('express');
      +const fileUpload = require('express-fileupload');
      +
      +//Instantiate the app and set the fileupload parser to manage files
      +const app = express();
      +app.use(fileUpload());
      +
      +//Our index entry point
      +app.get('/', (req, res) => res.send('Hello From ImageCompacter service'));
      +
      +//The path that will handle the image file and throw them to the queue
      +app.post('/upload', (req, res) => {
      +    //With express-fileupload we can grab the files like this
      +    let img = req.files.image; //"image" is the name of the input
      +
      +    res.send('Not ready yet');
      +});
      +
      +//Finally start the app with the given port number
      +app.listen(4000, () => console.log('Example app listening on port 4000!'));
      +
      +

      Let's check if it works, run the service with node.

      +
      node index.js
      +Example app listening on port 4000!
      +
      +

      Open the browser and check if it prints our hello message when accessing localhost:4000. Works? Greate. Now let's work with the image and see how we do it. To optimize our image, we'll use the library imagemin and imagemin-pngquant, it will be that simple for now, we'll work with rabbitmq latter.

      +
      const imagemin = require('imagemin');
      +const imageminPngquant = require('imagemin-pngquant');
      +//...
      +
      +//The path that will handle the image file and throw them to the queue
      +app.post('/upload', (req, res) => {
      +    let img = req.files.image; //"image" is the name of the input
      +
      +            imagemin.buffer(img.data, {
      +        plugins: [imageminPngquant()]
      +    })
      +    .then(out => {
      +        res.write(out,'binary');
      +        res.end(null, 'binary');
      +    });
      +});
      +
      +    //...
      +
      +

      Use Postman to test the request. To see if it will work, make a request to http://localhost:4000/upload with a formdata with a file. Select the "send and Download" instead of "Send" and you should have an image after that. Bellow an image of how your postman should be.

      +Postman +

      That's it for today, next week we'll change our code to use RabbitMQ.

      +

      +
      + + +
      +
      +

      Translations:

      +
        +
      +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/microservices_nodejs_express_rabbitmq_part_1.html.gz b/microservices_nodejs_express_rabbitmq_part_1.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..104d0b6014518bcf779c6bff70fb7364f94ff3e9 GIT binary patch literal 5832 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 S)r0z<&-^d3pKC#kW&i;G-6Ki> literal 0 HcmV?d00001 diff --git a/microservices_nodejs_express_rabbitmq_part_2.html b/microservices_nodejs_express_rabbitmq_part_2.html new file mode 100644 index 000000000..5549fa8e9 --- /dev/null +++ b/microservices_nodejs_express_rabbitmq_part_2.html @@ -0,0 +1,579 @@ + + + + + + + + Microservices with NodeJS, Express.js and RabbitMQ Part 2 - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      + + +
      +

      If you haven't read the part 1 go ahead and read it... It can be useful :). Or if for some reason you want to start now, you can grab the project where we stopped here and get along. On this part, we'll implement the RabbitMQ queue and see how we can get the best of our app and server with that.

      +

      Before we began coding, let's understand why we are going to use RabbitMQ if what we have now works? If you check again, you'll see how long it takes to answer the request with the optimized image. It takes a few seconds, so imagine an online service with thousands of request to optimize images (like TinyPNG) how long is it gonna take to answer every request? How much of your server is it gonna take? With only one service running, probably the server will crash.

      +

      With a queue, we can schedule the requests so we can use the amount of memory and processor that our server has, without taking more than we can. It's better to take a few seconds to answer the request then throw some error to the user. Want more? With RabbitMQ we can see how the queue is doing and we can add more consumers (workers) to it and get things done quicker and distribute the job.

      +

      First of all, we need an up and running Rabbit server, for the sake of simplicity, I'll use a Docker container with it inside.

      +
      docker run -d --name rabbit -p 5672:5672 -p 8080:15672 rabbitmq:3-management
      +
      +

      You can see that we're running the rabbitmq:3-management image, which provides us a web interface to see how things are going. After that, if you look at our code you'll see that all the job is made at the '/upload' route, and that's what we'll change.

      +

      First, we need to understand what we need from RabbitMQ. We need something that, we send an image to a queue and get an optimized image back from that. There is a name for that, is RPC (remote procedure call) and there are two ways of doing this with rabbit. Both the ways you can see on their tutorial page. We'll use the approach that uses a global channel whose id is randomly generated (you'll use the name 'amq.rabbitmq.reply-to' but the rabbit will do the job).

      +

      Let's start importing the library, defining a few variables and defining a init function that will establish a connection with the rabbit server and create our RPC queue. The RPC queue it's where we'll receive the answer from the consumer (our worker).

      +
      //import the library
      +const amqplib = require('amqplib');
      +
      +//queue channel
      +let channel = null;
      +//queue name
      +const QUEUE = 'optimizeimg';
      +
      +//...
      +
      +function init() {
      +    return require('amqplib').connect('amqp://localhost')
      +        .then(conn => conn.createChannel())
      +        .then(ch => {
      +            channel = ch;
      +
      +            //this queue is a "Direct reply-to" read more at the docs
      +            //When some msg comes in, we "emit" a message to the proper "correlationId" listener
      +            ch.consume('amq.rabbitmq.reply-to', msg => eventEmitter.emit(msg.properties.correlationId, msg.content), {noAck: true});
      +        });
      +}
      +
      +//Random id generator
      +function randomid() {
      +    return new Date().getTime().toString() + Math.random().toString() + Math.random().toString();
      +}
      +
      +app.post('/upload', (req, res) => {
      +    let img = req.files.image;
      +
      +    let id = randomid();
      +
      +    //Event listener that will fire when the proper randomid is provided
      +    eventEmitter.once(id, msg => {
      +        res.write(msg, 'binary');
      +        res.end(null, 'binary');
      +    });
      +
      +    //Checks if the queue exists, and create it if needed.
      +    channel.assertQueue(QUEUE)
      +        //Sent the buffered img to the queue with the ID and the responseQueue
      +        .then(() => channel.sendToQueue(QUEUE, img.data, {correlationId:id, replyTo: 'amq.rabbitmq.reply-to'}));
      +
      +});
      +
      +//Finally start the app with the given port number
      +//now we initialize the rabbitmq connection before start the server
      +init()
      +    .then(() => app.listen(4000, () => console.log('Example app listening on port 4000!')))
      +    .catch(err=>console.error(err));
      +
      +

      Ok, now we have our server code rewritten so let's see our worker code. Create a file named 'worker.js' and let's see how it's gonna be. It's really simple. You initialize a connection with RabbitMQ too, create a channel, check if the queue exists and start watching for incoming messages. When an image arrives, we do the job with it and send back to the "replyTo" queue the optimized image for the proper sender (correlationId). In the end, we do an acknowledge of the message so it get's out from the queue.

      +
      const imagemin = require('imagemin');
      +const imageminPngquant = require('imagemin-pngquant');
      +
      +let channel = null;
      +const QUEUE = 'imgqueue';
      +
      +require('amqplib').connect('amqp://localhost')
      +.then(conn =>conn.createChannel())
      +.then(ch => {
      +    ch.assertQueue(QUEUE)
      +    .then(() => {
      +        //Watch incomming messages
      +        ch.consume(QUEUE, msg => {
      +            imagemin.buffer(msg.content, {
      +                plugins: [imageminPngquant()]
      +            })
      +            .then(out => {
      +                //Send back to the sender (replyTo) queue and give the correlationId back
      +                //so we can emit the event.
      +                ch.sendToQueue(msg.properties.replyTo, out, {
      +                    correlationId: msg.properties.correlationId
      +                });
      +
      +                //Acknowledge the job done with the message.
      +                ch.ack(msg);
      +            });
      +        });
      +    });
      +});
      +
      +

      The key points here are. Open just one connection to the hole server. You CAN create one channel for every request that you receive, but it can take some time if you have a really big cluster of RabbitMQ. It was a quick tutorial, but I hope that it was able to clear a few questions that you might have when working with rabbit and express.

      +

      +
      + + +
      +
      +

      Translations:

      +
        +
      +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/microservices_nodejs_express_rabbitmq_part_2.html.gz b/microservices_nodejs_express_rabbitmq_part_2.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..3c82ad9f0d4f169aad2623573f5d398b50d465d2 GIT binary patch literal 7048 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 literal 0 HcmV?d00001 diff --git a/microsoft-against-covid.html b/microsoft-against-covid.html new file mode 100644 index 000000000..6839de1b5 --- /dev/null +++ b/microsoft-against-covid.html @@ -0,0 +1,510 @@ + + + + + + + + Microsoft Against Covid - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Microsoft Against Covid

      +
      + +
      +
      + +
      +

      Has your job been affected by covid? Well, last week I've posted on Grepora about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by covid pandemic.

      +

      To see more details about if you were eligible, access https://docs.microsoft.com/en-us/learn/certifications/skillingoffer.

      +
      + + +
      +
      +

      Translations:

      + +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/microsoft-against-covid.html.gz b/microsoft-against-covid.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..881176bcad05caf4894f98d3a789ca800a18a827 GIT binary patch literal 4507 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 literal 0 HcmV?d00001 diff --git a/monitoring-mysql-replication-with-powershell.html b/monitoring-mysql-replication-with-powershell.html new file mode 100644 index 000000000..3fd365af1 --- /dev/null +++ b/monitoring-mysql-replication-with-powershell.html @@ -0,0 +1,575 @@ + + + + + + + + Monitoring MySQL Replication Status with PowerShell - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      + + +
      +

      I've been migration some bash scripts that I have to PowerShell, and it's time to migrate a script that monitors the replication of a MySQL database. The credit for the original script goes to Paweł. It's a simple script where I seek a few tags/fields that we get from SHOW SLAVE STATUS\G command, the fields are. Slave_IO_Running, Slave_SQL_Running, and Seconds_Behind_Master. I still need to figure out the proper way to store/read variables like usernames and passwords, if you have any tips, feel free to even make a pull request (here) at the git where I'll store some scripts.

      +
      <#
      +   Variables definition
      +#>
      +$MaxSeconds = 120  # Max seconds behind master allowed
      +$MysqlUser  = 'root'
      +$MysqlPass  = ''
      +
      +$MailTo     = 'mauricio@sipmann.com'
      +$MailFrom   = 'mauricio@sipmann.com'
      +
      +
      +$data = $(mysql -u $MysqlUser -p"$MysqlPass" -e 'SHOW SLAVE STATUS \G')
      +
      +#Debug data
      +#$data = Get-Content 'c:\temp\sampleresult.txt'
      +
      +<# Parse the data #>
      +$IORunning   = (($data | Where-Object { $_ -match 'Slave_IO_Running:' }) -split '\s+')[2]
      +$SQLRunning  = (($data | Where-Object { $_ -match 'Slave_SQL_Running:' }) -split '\s+')[2]
      +$LastErrNo   = (($data | Where-Object { $_ -match 'Last_Errno' }) -split '\s+')[2]
      +$SecondsBh   = [int](($data | Where-Object { $_ -match 'Seconds_Behind_Master' }) -split '\s+')[2]
      +
      +If ($IORunning -Eq 'No' -Or $SQLRunning -Eq 'No' -Or $SecondsBh -gt $MaxSeconds) {
      +    $MailBody = '<h1>Problema na replicação</h1><br>'
      +
      +    $MailBody += '    IO Running: ' + ($IORunning)  + '<br>'
      +    $MailBody += '   SQL Running: ' + ($SQLRunning) + '<br>'
      +    $MailBody += 'Seconds Behind: ' + ($SecondsBh) + '<br>'
      +    $MailBody += '   Last Err No: ' + ($LastErrNo) + '<br>'
      +
      +    <# Send e-mail, maybe some telegram message here too #>
      +    Send-MailMessage -To $MailTo -From $MailFrom  -Subject 'Problemas na replicação' -bodyAsHtml $MailBody -Credential (Get-Credential) -SmtpServer 'smtp.office365.com' -Port 587 -UseSsl
      +} Else {
      +    Write-Host "Up and running"
      +}
      +

      +
      + + +
      +
      +

      Translations:

      + +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/monitoring-mysql-replication-with-powershell.html.gz b/monitoring-mysql-replication-with-powershell.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..1ba05752b918d40bc0e1bcf4949504210e01a1c7 GIT binary patch literal 5596 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 + + + + + + + Monitoring MySQL restarts with PowerShell - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Monitoring MySQL restarts with PowerShell

      +
      + +
      +
      + +
      +

      Hey folks, it's time for another PowerShell script. If you haven't seen the other ones, check the links below.

      + +

      Well, this one it's a pretty simple script, but again, if your customer doesn't have a Zabbix server or doesn't allow you to setup one to do the monitoring, a set of scripts can be handy. We start executing some basic query SHOW GLOBAL STATUS LIKE 'Uptime', with that we'll get exactly what we're looking for.

      +

      If for some reason, the command fails (watch for the "global" variable called $lastExitCode), we send an e-mail telling you about that connection problem.

      +

      And then, we get to the part where we parse the value, this one is pretty similar to the parse we did on the first post about using PowerShell to monitor MySQL. But we basically look for the Value line, split it by space and then parse the second position to an integer. And then all we have to do is check if the uptime is lower than our threshold, if it is we send an e-mail.

      +
      $MailFrom = 'maurio[at]sipmann.com'
      +$MailTo   = 'mauricio[at]sipmann.com'
      +$MysqlHost = '127.0.0.1'
      +$MysqlUser = 'root'
      +$MysqlPass = '123'
      +
      +
      +$data = $(mysql -h $MysqlHost -u $MysqlUser -p"$MysqlPass" -e "SHOW GLOBAL STATUS LIKE 'Uptime' \G")
      +
      +<# Unable to execute the sql Command #>
      +if ($lastExitCode -eq 1) {
      +    Send-MailMessage -To $MailTo -From $MailFrom  -Subject 'Connection problem' -bodyAsHtml "Connection problem on host ${MysqlHost}" -Credential Get-Credential -SmtpServer 'smtp.office365.com' -Port 587 -UseSsl
      +    exit
      +}
      +
      +$UpTime   = [int](($data | Where-Object { $_ -match 'Value:' }) -split '\s+')[2]
      +
      +<# If the uptime is lower then 20 minutes #>
      +if ($UpTime -lt 1200) {
      +    Send-MailMessage -To $MailTo -From $MailFrom -Subject "MySQL Restarted" -bodyAsHtml "MySQL host ${MysqlHost} restarted less than 20 minutes ago" -Credential Get-Credential -SmtpServer 'smtp.office365.com' -Port 587 -UseSsl
      +}
      +
      + +

      This script (and the other ones I use) is available at my GitHub here. Keep in mind that the ones on the GitHub repo, are a little different from here.

      +
      + + +
      +
      +

      Translations:

      + +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/monitoring-mysql-restarts-with-powershell.html.gz b/monitoring-mysql-restarts-with-powershell.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..6122c067ec1003d0afb09cdd021e9f341dd7b92e GIT binary patch literal 5471 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 literal 0 HcmV?d00001 diff --git a/monitoring-website-heath-with-azure-functions.html b/monitoring-website-heath-with-azure-functions.html new file mode 100644 index 000000000..90528ec73 --- /dev/null +++ b/monitoring-website-heath-with-azure-functions.html @@ -0,0 +1,618 @@ + + + + + + + + Monitoring a Website heath with Azure Functions - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      + + +
      +

      Sometimes you get your self in need to monitor a website's health or it's content for changes. Of course, there's plenty of options out there, but for the sake of curiosity, let's code our own to see what we can do. First things first. Everything you'll see here, you can achieve with the free tier of azure.

      +

      The main idea of our app will be to monitor website health (status code). To create a new Azure Function Project, follow the steps below.

      +

      Steps to create a azure function project

      +

      After creating the project, you'll have a few files. Open your main file and start coding. The main file will have a function called Run and you can code your request method. I've created an async method to make the request and log the output at the console. The full code you can see below.

      +
      using System;
      +using System.Linq;
      +using System.Net.Http;
      +using System.Threading.Tasks;
      +using Microsoft.Azure.WebJobs;
      +using Microsoft.Azure.WebJobs.Host;
      +using Microsoft.Extensions.Logging;
      +
      +namespace Sipmann.CheckMySite
      +{
      +    public static class HttpCheck
      +    {
      +
      +        private static async Task GetTask(string url, ILogger log)
      +        {
      +            var request = new HttpRequestMessage(HttpMethod.Get, url);
      +
      +            var client = new HttpClient();
      +            var response = await client.SendAsync(request);
      +
      +            if (response.IsSuccessStatusCode)
      +            {
      +                log.LogInformation($"URL ${url} esta OK");
      +            }
      +            else
      +            {
      +                log.LogInformation($"URL ${url} não esta OK");
      +            }
      +        }
      +
      +        [FunctionName("HttpCheck")]
      +        public static void Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, ILogger log)
      +        {
      +            var urls = new[]{"https://www.sipmann.com", "https://www.canezecanez.com.br"};
      +
      +            // Start every request and wait for them all to complete
      +            Task.WaitAll(urls.Select(url => GetTask(url, log)).ToArray());
      +            log.LogInformation($"Finalizou a fila");
      +        }
      +    }
      +}
      +
      + +

      Now you can enhance the function and maybe send some alerts like a Telegram message when one of your sites went down.

      +
      + + +
      +
      +

      Translations:

      + +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/monitoring-website-heath-with-azure-functions.html.gz b/monitoring-website-heath-with-azure-functions.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..60c2d990713f885da49ce11eac8039e028a93edc GIT binary patch literal 5689 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 + + + + + + + Changing a MySQL user password across multiple application instances without downtime - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      + + +
      +

      Do you need to change the password of a MySQL user that it's being used in an application, and can't allow a single downtime? Well, MySQL 8.0.14 came with a feature called Dual Password Support, with it you can change the password keeping the previous password as a kind of backup. That way you still can log in using the old password or can start using the new one. With that, the password change workflow it's the following.

      +

      1) Change password keeping the old one;

      +

      2) Deploy the new config to your app/cluster;

      +

      3) Discard the old password.

      +

      To change the password and keep the old one, you have the following command.

      +
      ALTER USER 'appuser'@'localhost' IDENTIFIED BY 'new_password' RETAIN CURRENT PASSWORD;
      +
      + +

      To discard the old one, run the following.

      +
      ALTER USER 'appuser'@'localhost' DISCARD OLD PASSWORD;
      +
      + +

      And you are done. Hope you find it as useful as I :)

      +
      + + +
      +
      +

      Translations:

      + +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mysql-dual-password-functionality.html.gz b/mysql-dual-password-functionality.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..7e97c3f8db804464818b33206637a9b75ce3fec8 GIT binary patch literal 4832 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 GQvd+F7%_YR literal 0 HcmV?d00001 diff --git a/now_posting_on_grepora.html b/now_posting_on_grepora.html new file mode 100644 index 000000000..e764b2dd8 --- /dev/null +++ b/now_posting_on_grepora.html @@ -0,0 +1,406 @@ + + + + + + + + Now posting on Grepora - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Now posting on Grepora

      +
      + +
      +
      + +
      +

      A few weeks ago I started posting at Grepora blog. If you like or are looking for some Oracle related stuff, Grepora it's a good place to go and spend a time reading :). From time to time I'll be posting there, it doesn't mean that this blog will be closed or anything like that, but probably this one will be more focused on Front-end stuff, a few tricks with linux and a lil less with Java.

      +

      +
      + + +
      +
      +

      Translations:

      +
        +
      +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/now_posting_on_grepora.html.gz b/now_posting_on_grepora.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..cb0ff2bb583ef35eedf1a3c435b015957d56ed45 GIT binary patch literal 4010 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 + + + + + + + About - Sipmann + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pages/about.html.gz b/pages/about.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..093491dd7d90f553b948d31d9509c4a9b07cf0d8 GIT binary patch literal 3040 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 literal 0 HcmV?d00001 diff --git a/pages/cartao-pt.html b/pages/cartao-pt.html new file mode 100644 index 000000000..bad8233de --- /dev/null +++ b/pages/cartao-pt.html @@ -0,0 +1,480 @@ + + + + + + + + cartao - Sipmann + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +

      cartao

      + +
      + + +
      +
      + +
      +
      +
      +
      +

      Consultoria Cloud

      +

      + Projetos de implantação e acompanhamento de sua cloud. Otimize seus custos de infraestrutura levando o seu DR para a nuvem da forma mais transparente. +

      +

      Mais Detalhes

      +
      +
      +
      +
      +
      +
      + +
      +
      +
      +
      +

      Gestão De Banco

      +

      + Gerenciamento, manutenção e acompanhamento do seu banco de dados SQL Server. Com foco na segurança e velocidade de resposta em consultas. +

      +

      Mais Detalhes

      +
      +
      +
      +
      +
      +
      + +
      +
      +
      +
      +

      Power BI

      +

      + Dashboards analíticos para análise e tomadas de decisões do seu negócio. Baixe um dashboard e analise o faturamento do seu ERP Protheus. +

      +

      Mais Detalhes

      +
      +
      +
      +
      +
      +
      + +
      +
      +
      +
      +

      Monitoramento

      +

      + Monitoramento de sua infraestrutura, aplicações e bancos de dados. Fornecendo relatórios detalhados desde avisos, erros até o uptime de serviços críticos. +

      +

      Mais Detalhes

      +
      +
      +
      +
      +
      +
      + +
      +
      +

      Consultoria cloud

      +
      +
      +

      +
      +
      + +
      +
      +

      Meus Serviços

      +
      +
      +

      Has your job been affected by covid? Well, last week I've posted on Grepora about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by …

      +
      + + +
      +

      + View comments +

      +
      +
      +
      +
      + + +
      +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pages/cartao-pt.html.gz b/pages/cartao-pt.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..e5bec234ba21933ea04d5e82e58ffc1cc4312727 GIT binary patch literal 4675 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 F005Ej0yF>s literal 0 HcmV?d00001 diff --git a/pt/apache-nifi-json-to-sql-replacing-underscore.html b/pt/apache-nifi-json-to-sql-replacing-underscore.html new file mode 100644 index 000000000..877ec0883 --- /dev/null +++ b/pt/apache-nifi-json-to-sql-replacing-underscore.html @@ -0,0 +1,411 @@ + + + + + + + + Apache Nifi JSON to SQL removendo underline - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Apache Nifi JSON to SQL removendo underline

      +
      + +
      +
      + +
      +

      Recentemente eu estava desenvolvendo alguns processos de ETL com o Apache NiFi. Mas após alguns minutos desenhando o meu fluxo, eu vi um comportamento estranho do componente ConvertJSONToSQL, que estava substituindo os underline ('_') do nome de um campo utilizado na condição da SQL (eu estava preparando um UPDATE). Aquilo estava estranho, uma vez que na definição do SET da SQL, o nome do campo permanecia inalterado. Depois de algumas pesquisas, achei uma doc que a propriedade (veja abaixo) Translate Field Names era a responsável por este comportamento estranho.

      +

      Apache NiFi JSONToSQL config

      +

      Antes de definir a propriedade como FALSE, esteja ciente que as propriedades do seu JSON devem ser exatamente iguais aos nomes dos campos da sua tabela.

      +
      + + +
      +
      +

      Traduções:

      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/apache-nifi-json-to-sql-replacing-underscore.html.gz b/pt/apache-nifi-json-to-sql-replacing-underscore.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..829b4bc2fecaf8f5303d304808ced0d176bf1f0f GIT binary patch literal 4287 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 + + + + + + + Sipmann - Archives + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + + + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/archives.html.gz b/pt/archives.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..1014c94a3fece9887baa540a40ada852ec913c26 GIT binary patch literal 3928 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 literal 0 HcmV?d00001 diff --git a/pt/author/mauricio-camargo-sipmann.html b/pt/author/mauricio-camargo-sipmann.html new file mode 100644 index 000000000..6718d00b6 --- /dev/null +++ b/pt/author/mauricio-camargo-sipmann.html @@ -0,0 +1,603 @@ + + + + + + + + Sipmann - Articles by Maurício Camargo Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      + +
      +
      +
      +

      Apache Nifi JSON to SQL removendo underline

      +
      + +
      +
      + +
      +

      Recentemente eu estava desenvolvendo alguns processos de ETL com o Apache NiFi. Mas após alguns minutos desenhando o meu fluxo, eu vi um comportamento estranho do componente ConvertJSONToSQL, que estava substituindo os underline ('_') do nome de um campo utilizado na condição da SQL (eu estava preparando um UPDATE). Aquilo …

      +
      + + + +
      +
      +
      +
      + +
      +
      + + + + + + + +
      +

      Então, você utiliza Entity Framework Core e geralmente faz o seu selecto da seguinte forma, talvez você está retornando muitos dados.

      +
      var products = Products
      +    .Where(p => p.UnitsInStock > 0)
      +    .OrderBy(p => p.ProductName)
      +    .ToList()
      +
      + +

      Rodando a query acima, em uma base de testes você obtem o seguinte resultado, veja quantas …

      +
      + + + +
      +
      +
      +
      +
      + + + + + +
      +

      Zabbix Running on Low Memory Mode

      +
      + +
      +
      + +
      +

      Olá pessoal! Trago hoje outro post sobre Zabbix. Este é sobre aumentar o cache do seu Zabbix Server. É perfeitamente comum (se você roda com as configurações padrões) receber avisos sobre Zabbix value cache running on low memory mode no seu dashboard ou arquivos de log.

      +

      Zabbix Dashboard alertando sobre problemas de memória +Zabbix Dashboard cache gráfico com 70% utilizado

      +

      Para resolver, abra o …

      +
      + + + +
      +
      +
      +
      +
      + + + + + + + +
      +

      Tenho migrado alguns scripts bash que tenho para PowerShell, e chegou a vez de migrar um script de monitoramento de replicação do MySQL. Fica como crédito o script original do Paweł. É um script bem simples onde eu verifico algumas tags resultantes do SHOW SLAVE STATUS\G, são elas. Slave_IO_Running …

      +
      + + + +
      +
      +
      +
      +
      +
      +

      Microsoft Contra Covid

      +
      + +
      +
      + +
      +

      Você teve seu trabalho afetado pela pandemia do covid? Bom, na última semana eu postei no Grepora sobre um Voucher para certificação gratuita que a Microsoft estava distribuindo durante o evento Microsoft Ignite. Depois disto, eu fiquei sabendo que eles também estão entregando grandes discontos para quem teve o seu …

      +
      + + + +
      +
      +
      +
      +
      + + + + + +
      +

      O poder do PowerShell

      +
      + +
      +
      + +
      +

      Como um usuário linux por muito tempo, eu automatizei algumas tarefas com scripts bash e fiquei longe do PowerShell... Voltei a utilizar Windows alguns anos atrás e ainda assim, não dei uma chance ao PS. Mas porque não? Eu fiz alguns scripts para automatizar algumas tarefas em um servidor Protheus …

      +
      + + + +
      +
      +
      +
      +
      + + + + + +
      +

      Top Level Statement no C# 9

      +
      + +
      +
      + +
      +

      Olá pessoal, venho hoje falar sobre uma novidade que estará disponível na versão 9 do C#. Toda vez que você deseja criar um novo projeto, você sempre tem o mesmo arquivo Main, com a mesma estrutura. Na próxima versão do C# (versão 9), nós teremos uma nova funcionalidade chamada Top …

      +
      + + + +
      +
      +
      +
      +
      + + 1 + 2 + 3 + » + +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/author/mauricio-camargo-sipmann.html.gz b/pt/author/mauricio-camargo-sipmann.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..df1d0c10af7c82e8b2c5da05e1e02d4e311fa2b7 GIT binary patch literal 6226 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 literal 0 HcmV?d00001 diff --git a/pt/author/mauricio-camargo-sipmann2.html b/pt/author/mauricio-camargo-sipmann2.html new file mode 100644 index 000000000..c9dd6bda5 --- /dev/null +++ b/pt/author/mauricio-camargo-sipmann2.html @@ -0,0 +1,574 @@ + + + + + + + + Sipmann - Articles by Maurício Camargo Sipmann + + + + + + + + + + + + + + + + +

      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Zabbix poller processes more than 75%

      +
      + +
      +
      + +
      +

      Este é o terceiro post sobre configurações para o Zabbix. Todas as alterações que eu sugiro nestes posts, são baseadas em um servidor com 50+ hosts. Outro problema que pode ocorrer em seu servidor, é o poller de informações ficar sobrecarregado pela quantidade de servidores que ele precisa pegar carga …

      +
      + + + +
      +
      +
      +
      +
      + + + + + + + +
      +

      Algumas vezes você se depara com a necessidade de monitorar a disponibilidade de um website ou mudanças em seu conteúdo. É claro que temos diversas opções disponíveis no mercado, mas para fins de curiosidade, vamos programar o nosso próprio e ver o que podemos fazer. Primeiramente, tudo que você ver …

      +
      + + + +
      +
      +
      +
      +
      +
      +

      Zabbix ICMP pinger processes more than 75%

      +
      + +
      +
      + +
      +

      Então o seu systema de monitoramento creasceu e o seu Zabbix começou a printar "Zabbix icmp pinger processes more than 75% busy" no seu dashboard.

      +

      Dashboard do zabbix avisando sobre o erro

      +

      Tudo que você tem a fazer é abrir o seu arquivo de configuração (/etc/zabbix/zabbix_server.conf) e localizar a tag chamada StartPingers. Ela deve …

      +
      + + + +
      +
      +
      +
      +
      +
      +

      Zabbix Server Out of Memory

      +
      + +
      +
      + +
      +

      Você tem um servidor Zabbix crashando e observando o arquivo de log /var/log/zabbix/zabbix_server.log você localiza a seguinte mensagem referênciando falta de memória?

      +
      __mem_malloc: skipped 0 asked 24 skip_min 18446744073709551615 skip_max 0
      +[file:dbconfig.c,line:94] __zbx_mem_realloc(): out of memory (requested 16 bytes)
      +[file:dbconfig.c …

      +
      + + + +
      +
      +
      +
      +
      +
      +

      Removendo um usuário de uma base SQL Server

      +
      + +
      +
      + +
      +

      O seu cliente lhe pede com urgência para dropar um usuário da sua base MsSQL Server, mas você trava com o seguinte aviso de erro:

      +
      Error: 15138 The database principal owns a schema in the database, and cannot be dropped.
      +
      + +

      Se você não possui (ou no momento não consegue acesso …

      +
      + + + +
      +
      +
      +
      + +
      +
      +
      +

      Menu dinâmico com as apps do django

      +
      + +
      +
      + +
      +

      Digamos que sua empresa trabalha com Django desenvolvendo aplicações cujas apps são plugaveis e reutilizáveis. Por que não se aproveitar de um certo padrão de desenvolvimento para desenvolver menus que se modificam de acordo com as apps que estão no projeto? Como o objetivo aqui não é desenvolver uma app …

      +
      + + + +
      +
      +
      +
      +
      +
      +

      Scripts de inicialização no raspberry pi

      +
      + +
      +
      + +
      +

      Instalei essa semana o gitea no meu raspberry pi B + e queria iniciar ele no boot... Não sou profundo conhecedor de linux, então, logo não sabia como fazer isto da melhor forma. +As versões atuais do Raspbian utilizam o systemd para gerenciar os serviços e confesso que nunca havia utilizado …

      +
      + + + +
      +
      +
      +
      +
      +
      +

      Cool Tools

      +
      + +
      +
      + +
      +

      Com o passar do tempo você vai "encontrando" - e às vezes até mesmo desenvolvendo - algumas ferramentas que tornam o seu dia a dia como desenvolvedor mais fácil. Abaixo seguem algumas das minhas ferramentas que costumo usar. Ressalto que essa lista será (provavelmente) atualizada com o passar do tempo.

      +

      +
      + + + +
      +
      +
      +
      +
      +
      +

      Desenvolvendo apps para o FirefoxOS (Parte 1)

      +
      + +
      +
      + +
      +

      Requisitos mínimos?

      +

      Para seguir este tutorial você precisará do Nodejs. Utilizaremos ele para automatizar algumas tarefas, como a criação do nosso projeto e até mesmo o empacotamento da app. Estas automatizações se darão pela utilização de algumas aplicações como o Yeoman e o Grunt .

      +

      Também será necessário o emulador do …

      +
      + + + +
      +
      +
      +
      +
      + « + + 1 + 2 + 3 + » + +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/author/mauricio-camargo-sipmann2.html.gz b/pt/author/mauricio-camargo-sipmann2.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..a9e00f7b060086951f03b7d202297a3833f2633f GIT binary patch literal 6471 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 + + + + + + + Sipmann - Articles by Maurício Camargo Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Editando o Admin do Django

      +
      + +
      +
      + +
      +

      Este artigo foi re-postado no grupo PythonClub. Vamos falar um pouco sobre como customizar o admin do Django. Primeiramente porque? A resposta é bem simples, quero mostrar algo para o usuário sem que ele precise entrar nas apps e fazer alguma consulta para então tomar alguma ação. Alguns exêmplos para …

      +
      + + + +
      +
      +
      +
      +
      + « + + 1 + 2 + 3 + +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/author/mauricio-camargo-sipmann3.html.gz b/pt/author/mauricio-camargo-sipmann3.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..62bac83ca8d30f0955c09830aaab86a0c04d4831 GIT binary patch literal 3775 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 py7YzAY(<&t8Eca7>e|SeD0%GA!<(J + + + + + + + Sipmann - Authors + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/authors.html.gz b/pt/authors.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..516225fe086eb38a97f2fa29bc6c4b9b806b8a71 GIT binary patch literal 3148 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 + + + + + + + Bloqueando um usuário do SQL Server baseado em uma tabela de horários - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      + + +
      +

      Ok, algum tempo atrás, eu postei sobre como você pode impor limites às conexões do SQL Server utilizando o Resource Governor. Mas, e se você não pode utilizar ele? Você sempre pode bloquear logins usando uma trigger, mas eu não gosto da ideia de ter um select rodando a cada login. Então, eu cheguei a esta solução, utilizando uma stored procedure, uma tabela e o Agent.

      +

      A ideia principal é armazenar o horário em que um usuário deve ser bloqueado pelo Agent. Abaixo você pode ver a criação da tabela:

      +
      CREATE TABLE dbo.HorariosBloqueio (
      +    Id INT NOT NULL,
      +    LoginName NVARCHAR(100) NOT NULL,
      +    HrInicio TIME NOT NULL, /* horário de inicio do bloqueio */
      +    HrTermino TIME NOT NULL, /*horário de termino */
      +    Bloqueado INT DEFAULT 0, /* 0 = desbloqueado, 1 = bloqueado */
      +    PRIMARY KEY (Id)
      +);
      +GO
      +
      +/* regra para Não bloquear o usuário SA */
      +ALTER TABLE dbo.HorariosBloqueio
      +    ADD CONSTRAINT chk_users CHECK (LoginName not in ('sa'));
      +
      +ALTER TABLE dbo.HorariosBloqueio
      +    ADD CONSTRAINT chk_hora_final_maior CHECK (HrTermino > HrInicio);
      +
      +ALTER TABLE dbo.HorariosBloqueio
      +    ADD CONSTRAINT chk_status_bloqueio CHECK (Bloqueado in (0, 1));
      +
      +CREATE SEQUENCE dbo.seq_HorariosBloqueio START WITH 1 INCREMENT BY 1;
      +GO
      +
      + +

      Depois de criar a tabela, vamos verificar a procedure que vai fazer todo o trabalho de habilitar/desabilitar os usuários. Fique ciente que, nesta procedure, eu defini o nome do banco onde a tabela está armazenada. Você pode substituir o nome DBATOOLS pelo o nome da sua base.

      +
      IF OBJECT_ID('dbo.sp_ValidarLogin') IS NULL
      +  EXEC ('CREATE PROCEDURE dbo.sp_ValidarLogin AS RETURN 0;');
      +GO
      +
      +CREATE OR ALTER PROC dbo.sp_ValidarLogin
      +AS BEGIN
      +    DECLARE @LoginName AS NVARCHAR(100);
      +    DECLARE @Momento AS TIME;
      +    SET @Momento = CAST(GETDATE() AS TIME);
      +
      +    /* Bloqueia os que ainda não estiverem bloqueados de acordo com a hora atual */
      +    DECLARE block_cursor CURSOR
      +        FOR SELECT LoginName FROM [DBATOOLS].[dbo].[HorariosBloqueio] WHERE Bloqueado = 0 AND HrInicio <= @Momento AND HrTermino >= @Momento
      +    OPEN block_cursor;
      +
      +    FETCH NEXT FROM block_cursor INTO @LoginName
      +
      +    WHILE @@FETCH_STATUS = 0
      +    BEGIN
      +        exec ('ALTER LOGIN ' + @LoginName + ' DISABLE;');
      +
      +        print 'Bloqued usuario ' + @LoginName;
      +
      +        FETCH NEXT FROM block_cursor INTO @LoginName
      +    END;
      +
      +    CLOSE block_cursor;
      +    DEALLOCATE block_cursor;
      +
      +    UPDATE [DBATOOLS].[dbo].[HorariosBloqueio] SET Bloqueado = 1 WHERE HrInicio <= @Momento AND HrTermino >= @Momento
      +
      +
      +    /* Libera quem estava bloqueado */
      +    DECLARE unblock_cursor CURSOR
      +        FOR SELECT LoginName FROM [DBATOOLS].[dbo].[HorariosBloqueio] WHERE Bloqueado = 1 AND (HrInicio > @Momento OR HrTermino < @Momento)
      +    OPEN unblock_cursor ;
      +
      +    FETCH NEXT FROM unblock_cursor  INTO @LoginName
      +
      +    WHILE @@FETCH_STATUS = 0
      +    BEGIN
      +        exec ('ALTER LOGIN ' + @LoginName +' ENABLE;');
      +
      +        print 'Unbloqued usuario ' + @LoginName;
      +
      +        FETCH NEXT FROM unblock_cursor  INTO @LoginName
      +    END;
      +
      +    CLOSE unblock_cursor;
      +    DEALLOCATE unblock_cursor;
      +
      +    UPDATE [DBATOOLS].[dbo].[HorariosBloqueio] SET Bloqueado = 0 WHERE Bloqueado = 1 AND (HrInicio > @Momento OR HrTermino < @Momento)
      +END;
      +
      + +

      Certo, então agora tudo que temos que fazer é definir o job no Agent para rodar a procedure de minuto em minuto. Novamente, a ideia principal é chamar a procedure quando um usuário deve ser bloqueado e quando deve ser desbloqueado.

      +
          -- Vai bloquear o usuário protheus das 10 AM até 15 PM
      +    INSERT INTO dbo.HorariosBloqueio (Id, LoginName, HrInicio, HrTermino) VALUES (NEXT VALUE FOR seq_HorariosBloqueio, 'protheus', '10:00:00', '15:00:00');
      +

      +
      + + +
      +
      +

      Traduções:

      + +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/blocking-user-on-sql-server-based-on-schedule.html.gz b/pt/blocking-user-on-sql-server-based-on-schedule.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..3b601f3dcbf799d6abf135369db8041f8dd33c54 GIT binary patch literal 6083 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 + + + + + + + Sipmann - Categories + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/categories.html.gz b/pt/categories.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..64625f695094acdbd1ef90082cd8ac0433ef74e1 GIT binary patch literal 3224 zcmV;J3}^EniwFP!000021I-%Sa@#ic+5QTY-LB-;6m@axM3&UrxwV~KYq#5-OvVF| z5QP{d7yz`awE38web^7_kL>|KQY1yWO5${ECng9S9Gv?(1TgyI!SnlP|9N-xLGZ|*P0?tLC5SkWmX zCA^f3Nf45JrlN|G$tg`D9LLB-_pu@&7nI16XUBHesEv3`6nzJ%d0fK$51&)kxe|$@ z$&{;(&m%AW;oAqthyOl)dARJJ|9JVEI!L;|zSKf0VNC>2h)~P1!^5GZik$0pN|-b9 zoC(@6NiCBy{DMq18V7mnq7I1k1x;$SpD-RGJmslEu+kE#IgLXJ0{2-OKofx?2;)fv z&uS;98+_=y{99q9g58BUEi=nKp6w^w>9M zOb`Y`Oc4=dty&}7f-`h{_WUV&1UPGSm}yci8If~Bz`-nGo|==0c)pb0V$gv{u9Fh+ zC75IxYRyXz)~1)lOjtv`jv;4%22z!skn@lcoKR_G064yz;fS*3_-AnE1zv7KS>q;w zzZ?e+!V-Xuww>C7QnGA07sr?_74^-c%?N{7x`1>>lt14dlSX1WHUzIQPkFH1FW%<8 zQoCPj4@&KWQu_}2y?D_-T6nG%)DStjsP>V>K(-`;&I<7NyG0Y%uqbk++<^F87{eN( z7=qYQ(@c;=ZEiqi!Z55pW!%3ws*EK#(D7l2?se`YSJklyi;%)nUHI*F>!XG*N#Btn z>J93Hpd8}P2@U58hC2uSyLS$I2mO0hs09~+I~4?90B!o=f zP(!y{(jPR9B;zQ&@cDkTo(v&e5Ut-EIWavh`J3E~@tj+ZLfN*DL zNAogceBoXV5l$69g3kBwAO0n1VyqsZGL24IN=g8o#lY3^9fNHNlvq&X7c>qG`_@SF zUJUDkF5aY4(b=*1O|Mnmg1OFm`gbGz`zABYXojFkNNnea*BoHsl zAS2IK&buR>Ly*s~gcMg1d!A(jdRZD*JSnHP7?%gNl;ELNYBi_*07Fs*4MJ-UqIVetcVgbOPr5pttlo_O>LV7>R)K2=TLRU?Y*PC+_89T zq!@B&PRR_T8P>!=nKJU|1pPCf%H-%NiPMp1=Qm8pc^%_i%aJqrfk$NI;hHe;^|St> z!XvTgOi28pXi-(!e_cj8lSEY(89|M9nHh-(R+4|eXv>1Iw_1D^3iS)bKO!7t3=vAK zEUWkXkot7`?jDuxOB-JXStN&nj-56RLZbNUs2mMU#XLk%-M3qL`E2RwKr%>Ldq*3x zmR7gn!LnoLGVTIZ-y~@x&(QS+O;8XENOZk>%c%Lp$Up~1Z zdSjw8tes~M&u&O{312|go)eZ+{6cq}>JGcY;FDKasyUBy?B?Z$XfKmpqWF^q4eHY$ zL=ZS~1dh-rBVR75#5I5eTU9!zND8iJL)xHWwx@*!#gO5rpc@iQmuArQixB5* z48cW0$ufw^Y*2=mYZn_b4-6A^ym=VKAldmrC5>faw6q|+KMT$7%&8P3N=>U`bm*K!}V*0NSAe70xHOuDTs zeT<@RwT|kg-u7G-CE;yltyE)f&6TM|w_(Uur+G#CIjTfK^j?DA%T_mBCsr}P&=2&p z=_5B+EpD$%FXAy(P^-qFYmyZZC>0h;x(ll2?%EgHdb+X*a2#-y&qdHSX$*l~d|a^n z5EcyGL5dj+NofvCW@+qe{bEMdauexig8PPUj3kNY7zG5S5lUtH=YIs{D=s97;AIgj z8W9v=gw5IJpa1*wzx?yCgcIz~i5t@yb>B#?jn}ox0T=SMveGyJ#rV9~QdzIa4G#1S zaG;+~pFcy2o4_GR1m>gJHaPSl)#qWt__?7Kf}9IXtm2)kPu&C42Q&sL+sMTU<8M=9 zv{X~gDhMKt4MP{GDUC2v+MA6w=UfYh2my^O@&G&P@kS|(2Bi+5OaMh0>sAL zoW}_ww7#kbAQ?Ug1}PRq_pmTK5IM6$+Z{L5=?uZ?(&@Ff^8r*^Y)wQyHX|QSBak>1 z9erPefZ`0DG`}3>lH_F9<>oaQZ68YFoKq7G*0en~py)Wi!%~3R8!VP^dmyI|@67f{cDJUgtxGJ>d5GVlv3>mU2YU6o zdcLXqJ4q_%?N_aHNz}3L^E6hieboBp*uC35?04@D+K(P{*?IvgV< zQql+j>V@HU%WAlV#wDsC&0FOrf-A1Ke!oMl($%9D8rpXo>sx#18`NsNkL1BhZ)5|B zS`@M@3GkIn4Dw`ohQnu&8dm~&)qTB=Lv|8yk61n90qM{f3K4ZeX5d)u5bq;dlj8fm zcB!W@%&I*;jDvNXybt(|VeVL)WqgVm(pMS5$wSl*;V*Exhc?*rPHxBzj-^wj6&xUe zzyX$JBeO;d9`zl3W;}LJ{&mprKYejT2Lq~79H*6Pw)~V%y_*ka|(bi z>{Kt)-uu0Pv4#$z%V-5;_+En>s1_)4AH`&W9)QiZ_duGfG01B(8fsrEQ>!g`XGQSt zx>uKP6|&$PT^eVey>cJtdvlC>rJNzkBd@s;f;(J<&VC8d+&BfO7f?zArqYnPy9y(D z!Yd8w>zx_q4fi?=*nQ+kKy)l&!mBldygtS5Z-#G3bsM0sPdde%*SnQ_91Zd>)h?cg z9urUqd|PB^H@jswU0rHvbk~#Rk3qY1?4!-10rP_&e?_{CM*2&aLCHg)M)Or=rEKUV zyndzU7Ob*TVbH}*j#~VsGt@4K?3l{1lWkx??1QjsK5kk~VSD2=)YA7$8lqdl$l44? z&v0sy2@xjAhb?TW{h*cYF3lF#vC6Xa8JA>Dn41Y};%|FtWJHuKcI4?hN2X!!_5UA^ KLh7mKF8}~quP8_W literal 0 HcmV?d00001 diff --git a/pt/category/azure.html b/pt/category/azure.html new file mode 100644 index 000000000..21f8aa51e --- /dev/null +++ b/pt/category/azure.html @@ -0,0 +1,336 @@ + + + + + + + + Sipmann - Azure category + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Microsoft Contra Covid

      +
      + +
      +
      + +
      +

      Você teve seu trabalho afetado pela pandemia do covid? Bom, na última semana eu postei no Grepora sobre um Voucher para certificação gratuita que a Microsoft estava distribuindo durante o evento Microsoft Ignite. Depois disto, eu fiquei sabendo que eles também estão entregando grandes discontos para quem teve o seu …

      +
      + + + +
      +
      +
      +
      +
      + + + + + + + +
      +

      Algumas vezes você se depara com a necessidade de monitorar a disponibilidade de um website ou mudanças em seu conteúdo. É claro que temos diversas opções disponíveis no mercado, mas para fins de curiosidade, vamos programar o nosso próprio e ver o que podemos fazer. Primeiramente, tudo que você ver …

      +
      + + + +
      +
      +
      +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/category/azure.html.gz b/pt/category/azure.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..8aac8bc88c4dc0dde05113260eabb176564397ec GIT binary patch literal 3759 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 literal 0 HcmV?d00001 diff --git a/pt/category/firefoxos.html b/pt/category/firefoxos.html new file mode 100644 index 000000000..a89fd2e0b --- /dev/null +++ b/pt/category/firefoxos.html @@ -0,0 +1,304 @@ + + + + + + + + Sipmann - FirefoxOS category + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Desenvolvendo apps para o FirefoxOS (Parte 1)

      +
      + +
      +
      + +
      +

      Requisitos mínimos?

      +

      Para seguir este tutorial você precisará do Nodejs. Utilizaremos ele para automatizar algumas tarefas, como a criação do nosso projeto e até mesmo o empacotamento da app. Estas automatizações se darão pela utilização de algumas aplicações como o Yeoman e o Grunt .

      +

      Também será necessário o emulador do …

      +
      + + + +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/category/firefoxos.html.gz b/pt/category/firefoxos.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..16d8e795ff939f6ba82d22c7a33e5433dc824531 GIT binary patch literal 3438 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 Q|2x5d0JB}v6<#m^0QDiT(EtDd literal 0 HcmV?d00001 diff --git a/pt/category/java.html b/pt/category/java.html new file mode 100644 index 000000000..320bacaed --- /dev/null +++ b/pt/category/java.html @@ -0,0 +1,307 @@ + + + + + + + + Sipmann - Java category + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/category/java.html.gz b/pt/category/java.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..a93cc4d45037c6448cb7b587df1c45e1512ba6ba GIT binary patch literal 3462 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 literal 0 HcmV?d00001 diff --git a/pt/category/linux.html b/pt/category/linux.html new file mode 100644 index 000000000..5ad7d2788 --- /dev/null +++ b/pt/category/linux.html @@ -0,0 +1,402 @@ + + + + + + + + Sipmann - Linux category + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      + + + + + +
      +

      Zabbix Running on Low Memory Mode

      +
      + +
      +
      + +
      +

      Olá pessoal! Trago hoje outro post sobre Zabbix. Este é sobre aumentar o cache do seu Zabbix Server. É perfeitamente comum (se você roda com as configurações padrões) receber avisos sobre Zabbix value cache running on low memory mode no seu dashboard ou arquivos de log.

      +

      Zabbix Dashboard alertando sobre problemas de memória +Zabbix Dashboard cache gráfico com 70% utilizado

      +

      Para resolver, abra o …

      +
      + + + +
      +
      +
      +
      +
      +
      +

      Zabbix poller processes more than 75%

      +
      + +
      +
      + +
      +

      Este é o terceiro post sobre configurações para o Zabbix. Todas as alterações que eu sugiro nestes posts, são baseadas em um servidor com 50+ hosts. Outro problema que pode ocorrer em seu servidor, é o poller de informações ficar sobrecarregado pela quantidade de servidores que ele precisa pegar carga …

      +
      + + + +
      +
      +
      +
      +
      +
      +

      Zabbix ICMP pinger processes more than 75%

      +
      + +
      +
      + +
      +

      Então o seu systema de monitoramento creasceu e o seu Zabbix começou a printar "Zabbix icmp pinger processes more than 75% busy" no seu dashboard.

      +

      Dashboard do zabbix avisando sobre o erro

      +

      Tudo que você tem a fazer é abrir o seu arquivo de configuração (/etc/zabbix/zabbix_server.conf) e localizar a tag chamada StartPingers. Ela deve …

      +
      + + + +
      +
      +
      +
      +
      +
      +

      Zabbix Server Out of Memory

      +
      + +
      +
      + +
      +

      Você tem um servidor Zabbix crashando e observando o arquivo de log /var/log/zabbix/zabbix_server.log você localiza a seguinte mensagem referênciando falta de memória?

      +
      __mem_malloc: skipped 0 asked 24 skip_min 18446744073709551615 skip_max 0
      +[file:dbconfig.c,line:94] __zbx_mem_realloc(): out of memory (requested 16 bytes)
      +[file:dbconfig.c …

      +
      + + + +
      +
      +
      +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/category/linux.html.gz b/pt/category/linux.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..1604992ff73578fe60d7ce52a299617b04ded680 GIT binary patch literal 4389 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 literal 0 HcmV?d00001 diff --git a/pt/category/mysql.html b/pt/category/mysql.html new file mode 100644 index 000000000..92df7c3a7 --- /dev/null +++ b/pt/category/mysql.html @@ -0,0 +1,307 @@ + + + + + + + + Sipmann - MySQL category + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/category/mysql.html.gz b/pt/category/mysql.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..ccb99ef787b43c7fd73e0cee7c38c13e0342ee4c GIT binary patch literal 3415 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 literal 0 HcmV?d00001 diff --git a/pt/category/net.html b/pt/category/net.html new file mode 100644 index 000000000..c6bfd2f98 --- /dev/null +++ b/pt/category/net.html @@ -0,0 +1,348 @@ + + + + + + + + Sipmann - .NET category + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      + + + + + + + +
      +

      Então, você utiliza Entity Framework Core e geralmente faz o seu selecto da seguinte forma, talvez você está retornando muitos dados.

      +
      var products = Products
      +    .Where(p => p.UnitsInStock > 0)
      +    .OrderBy(p => p.ProductName)
      +    .ToList()
      +
      + +

      Rodando a query acima, em uma base de testes você obtem o seguinte resultado, veja quantas …

      +
      + + + +
      +
      +
      +
      +
      + + + + + +
      +

      Top Level Statement no C# 9

      +
      + +
      +
      + +
      +

      Olá pessoal, venho hoje falar sobre uma novidade que estará disponível na versão 9 do C#. Toda vez que você deseja criar um novo projeto, você sempre tem o mesmo arquivo Main, com a mesma estrutura. Na próxima versão do C# (versão 9), nós teremos uma nova funcionalidade chamada Top …

      +
      + + + +
      +
      +
      +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/category/net.html.gz b/pt/category/net.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..49f6b5d19eebcc4ab10e7fa6e47d6964edeb397b GIT binary patch literal 3837 zcmVTc- zVln#YvsX{g|MdD9S!iEO_D1+Y1P$h6E7aCx5AHDPP4)=<8~IFA;x1^Um>yf-oPTaV zwu(am_1V~3a<&R(q%GpgK(hcqSKQN!vB#F&Ww!ZpKzP74r@~e)6>Qw=bW5ZbT8B1! z6Z7TR`lJ2Lsr^*?A=P{;Sb;8QW9H3ShN-z0Y;wj!p9TT3N$1OF=ftI&&1JM6Imz(e z7Q?;_nC5SRx(o`$|I3wJbgrXN^KdG4$CbVl|L&8|PLKX{`qk08d+~hvM|~J}|L_&+ zsX#T1WXK}D9$RugR9v$QoTorJ<i|{KpMKTs~wzcgs=mRvNfk!;5>69v_DwCAiLIu{z(S#63q5zIIRYS*F ztyUeCpc+rZw=j>K!)ALs^$>%_`!iPaqdM%h* zFa|M}Fy`n5^O@r+<*WuB_{eNhV7>qouIFfZ<-pv0$qd34>1_&`_%qO|>dd8_3r0h( zj1GXtr!(qvu^xX75xt`8CXy9tLij7GXA!CZ*jU@DOsJGdr?Y85#aeUMOj=LS3zQ8+ zXH2_`+fza!iNuEC4dtoy)(82wMXzw(FI*1_*N27cN92e63;sjp*@>ct#L854KokYG z6^r;R2YmrI68(JRA%L<$)=HG8pNF*F;IdJ@U|X-8vXMq8^Xc zkQ^2TDJZowg&<|o1^4F_i+7a2`XYCqZ$pEUN%A|%5~+E zMP(T0Hw7rFHFXyl-a|6u*UUTljZ=co&CuU71y zrMVC`T~aP66zN*J4<2+DFt@<@f#8D&4^WnwkSqIoNNB9(3EX@Kzwi^1iSc@XN-a7S zF)ILcRs$RJI|bj0NSJ_{xZr_j#7~?wyGvnSu*GGpG@q?=LK%0z^_j;hY5P3LL_0nP zN8Yc9{?K2aagR-DR2eYglbbwkZ^%d7$7YBI6}y&g3+_7W;r~YXcXe)<@(f9nvB1>v zwn==EvW?E5xx$=3gz_F;RRux)8B^Hvh^}jdDL7RYQ~lYXKRDVcR0_IUK*zE}nqNex zH?UjbVo^7Hnh-Jt^xU4;W6h>91;j}!$jC{W=e-fu5aJ4|pv0Bbo>f_oFAL*ZhQ-nr z(BdF!2|m!IiRCa3D5S;10*=9(##+mujB0~fd_+kH;c5Y@w*@43X1-xe+E`9D-%R{u zOfx9#5*kVFULny7=(>XT{z=yEBy=mR7xK@G1&%dg!ClFcvaxS&BdtlOOOuSCM_Z;&;((WA z>lgGaNPC;fH>nW6K>lNqMT{dtilc@PT4uTF~D zz;w(*0^NPPm9@_aKOHCrVQc@Sp=zPIjSPu62~KSUq>VeulC&KrCNeHJ<)?ROs#sN; z4WUS`tVub}x2A#>?=exmel>ow`d5H8akk+KuS}+^@%LsA-eG^m1atL;3Yp7i+`X7_ zCOmbq;(BqxX3*}j4ldF2^#Ux5B`oG2q@BZ#e?`!L~4&V2z?iu$J~s{$fpNHQ?X=k zQ{qhN_kV^3sg|(9M@#xK*HQtVCsk+UgwP)pM93RsumtpQlaUH(07gkZT$yH@ z6t7{HCeFTr&QU!N&NM7|n(Oa!Fu4utL3(la4M$(xu(YXVsb;|)5k*rx>dEg_#04I#%=8h&z$jhNiT zXv9=3Gz1?+Kf6RqupWS{`_KRWD+Z$p$eXHR-cK~9*X`EAe_YdA)MclAFlIqjT`fSRe(~)2DS3JN{EYnL?@5JAmjX%2 z3wLO}zGURXAK73D-|TqW_HMXZ3m)dHB;`{fZnovl@vXS2Q&*Ihf_%|)OWQv5xOx+- z3k_(vr;7Xfc5=_=xGMt4EE-!klQVq^AiV!`#HC7XunGKTQ`~4L(qx0iZgA^1aFev= zmD`Kx-`~N*I^{y()0GRQp=&}FUbt#OqwwOm9De6ABrgz>oMn(0dQTsc<6opRPq_ky z4ZruSDgQuv+%b4BTIueQ-9K(JFl3J4?B{&?=uC(jYjwgS(29^(gD;rA6f_;p~y=V>o}qv z@+CeyeE+v=2#cH-!wG5UtnD9=;Qike5RaG-U3@AV7(NbME(0nOG2I3ADR7^3?C5-^ zzsTB}|A;o@14ZWlw-3Ky`*5SpZreEQBJ>~8G88sh8^TSck1Ddg!$Eo_XsC?#X#lB2 zv(yTNd$5Mg9&qHv+6)fOMr_q-phYP+D8((%NFsJXmwcX{SfP*O( zI|}uAg7@m|z6y3pm-LP@{T@*6t2lxO@%0_$d4V|hRUm(@-iSL2^m2Xn)rIFG7i1$@AEv2|?wLM3i+XysrVmyE z-o!M*4M}l$g-4~_@DN4>$( z;{m<~unydEM22+EsMk+V?!&m3zEF|WV>9YpDu;S%x=w&Pm*#L`GWli$X|J?f_k{r^ zr`ekTrG2K1@nokFk3gDbX!?di*;-2)k&8KfL&nL+k3W*{zAv8=#rvHwR*Uv`tqaBU zsq4x((5(Z~`sUPr+&$`d9}nz)>-+s3csio))oYL!U$WW)ZR2J%s)e-oYmTxalXD6z zdeV(C|99MoK`D49Of_h?646@w+ox*hw1a8@+*U;qtyzlWSD$Ua(!!`d`w!kZ*@2@)1|6m5mljznt)hI)u5iN z&*>ZwKx`E9UHAKK8mbdQcm(=O>9GzEpuyEo*bD-zJ*NjmRkZkSzg@VKJ7(D*p9S8w zPd)|u#xWlxJ}cyu3W6_$L6FZ$dk%j=%6-z{&kr(3t_dtGm5Jhj2qX^htRyodQHZEd zp`H7}e)8>MzyI>};nQ9rq;k4&MaYUn_p|C?kiVd7$S~vWTWL@Lbnd4(O?&@`942ve zNL|J%pu=|vZlGFV$O96v75NN&w!IJ9+>Ak8oAEiuQjuHqZ)KE71> z$>mM>Sid!gQLnW%Bw6M)=jv%kMsw?+0BGLZ1E|-q+6GF6A@c?xjAR9`FoZA3rIZ`q zj>};Wh^2tgsRD%Wwj6SIi9KkBuPJp6(7TIHj`RIq=`?(e{tLZ} + + + + + + + Sipmann - PowerShell category + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      + + + + + + + +
      +

      Tenho migrado alguns scripts bash que tenho para PowerShell, e chegou a vez de migrar um script de monitoramento de replicação do MySQL. Fica como crédito o script original do Paweł. É um script bem simples onde eu verifico algumas tags resultantes do SHOW SLAVE STATUS\G, são elas. Slave_IO_Running …

      +
      + + + +
      +
      +
      +
      +
      + + + + + +
      +

      O poder do PowerShell

      +
      + +
      +
      + +
      +

      Como um usuário linux por muito tempo, eu automatizei algumas tarefas com scripts bash e fiquei longe do PowerShell... Voltei a utilizar Windows alguns anos atrás e ainda assim, não dei uma chance ao PS. Mas porque não? Eu fiz alguns scripts para automatizar algumas tarefas em um servidor Protheus …

      +
      + + + +
      +
      +
      +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/category/powershell.html.gz b/pt/category/powershell.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..68aca06d65b7ebed9b3ccb1a7b3398f823e87034 GIT binary patch literal 3971 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 literal 0 HcmV?d00001 diff --git a/pt/category/python.html b/pt/category/python.html new file mode 100644 index 000000000..5a79163fb --- /dev/null +++ b/pt/category/python.html @@ -0,0 +1,331 @@ + + + + + + + + Sipmann - Python category + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Menu dinâmico com as apps do django

      +
      + +
      +
      + +
      +

      Digamos que sua empresa trabalha com Django desenvolvendo aplicações cujas apps são plugaveis e reutilizáveis. Por que não se aproveitar de um certo padrão de desenvolvimento para desenvolver menus que se modificam de acordo com as apps que estão no projeto? Como o objetivo aqui não é desenvolver uma app …

      +
      + + + +
      +
      +
      +
      +
      +
      +

      Editando o Admin do Django

      +
      + +
      +
      + +
      +

      Este artigo foi re-postado no grupo PythonClub. Vamos falar um pouco sobre como customizar o admin do Django. Primeiramente porque? A resposta é bem simples, quero mostrar algo para o usuário sem que ele precise entrar nas apps e fazer alguma consulta para então tomar alguma ação. Alguns exêmplos para …

      +
      + + + +
      +
      +
      +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/category/python.html.gz b/pt/category/python.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..ed486a885d3c972881eb77360ddeeeb0905ad6ad GIT binary patch literal 3694 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 + + + + + + + Sipmann - Shell category + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Scripts de inicialização no raspberry pi

      +
      + +
      +
      + +
      +

      Instalei essa semana o gitea no meu raspberry pi B + e queria iniciar ele no boot... Não sou profundo conhecedor de linux, então, logo não sabia como fazer isto da melhor forma. +As versões atuais do Raspbian utilizam o systemd para gerenciar os serviços e confesso que nunca havia utilizado …

      +
      + + + +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/category/shell.html.gz b/pt/category/shell.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..49c79001b312c8d5249ff7d0a1e1eaadbf66ae45 GIT binary patch literal 3396 zcmV-K4ZHFmiwFP!000021I-)la@)r7xAhbkxGAYb0QezCGDR|xKjOIK&qzs=@pv>x z;0T^|z`?kKC_3>>U!~KT<_Y?%|LQmClXUk0kN^nMQj)fkMG?U5?(O&P9nQl~9z4H) z`s0g-WTrzg-WlQ-5i|-$R;;b@4m@GhAMX(O8HP+#;>~EHm>yZ*oqlZ}TIHdLhHPYA za5j%+qAlXdNV5n)=iJw`kQXXIu%kgtz(a2aC?x3b2dRT7ID|r?K9;iJg)J6Pso7KiA*(tnHEIPcoZm5 zx+hW}E(sWe2^og~O=#p3pK3aximBQpRkl!pO>%5PNE1;4N298N>(1wMM`fr+spx5& zG|?CEr z8pncr#=Be```nBrOu&%PEQu(Z*64OA896?E{*-(TG;4eqG^H1UsTpGsWEo?wp0SX* zo>K0-@4#1KlM?eKn0OJO<&_I_^9yDW)<~~YD8!$FR+SS-83;yWu8aC^go|&|npdTq4h)$XIW>=?#L^6pD z!z;=Y=`Z${ce8Hkx>vgHm#+6q*LTQI%NzVb<=L5{2E-~$5^$KR z1OK|6`lyjh@po)My8Zef7>C(2#)FxLVQ0U0c;}$I-@99dn#;tuCkdnHz#D$q5Kj#t z^Mu9)1U{&Ocv8q@KyLT@{p!F3KpBj5<4dBX;6AzSd0rEYolu{rYC!hOf|Qi%Odv>E za>m1;rrZhj&Vxjzk#ENmvbHhKozAC6o1hXFGpf;m`Q=8)Ou3%CU`Z9m{j3B>xHK2SrWce83RSw1 z?yXzS4CWR%KM=fi>lVr~6>@H04hT)PJc5Vs;RC-h85^$$sNA9xk+KqiGw<7&-zoT3 zLgEb6#08IhBYx(j#ZwCNf-T;pO7rPrNvPoNtC0Del6J_WLbSVg!I5`sqTdb|C){Tf zn$!kN_$*DH_c!Dd9%45{qncf-wgq>ccJbdv`1eh2nDY!tld;Iu@wQ2PiL#B(pu57H zKY;R{oYw_G{TWl(K|&V|!jznK2@_Bz;RpSVM>>sDct#QF~EkeST3I*D@}bwuqJoQA_ZJCe18| zaX=w0?w4>3-XzspMpaZB%n~9>J_uJcP`xc6xifQzF==BtS>2iVDVSzZ*d;WQ+&f32 zXV7&;?cJlI-O1?ISTXGIf|DsFQ;N($n=*9ynEWxCsQBn9i_)Q+;WwbuqK~n*N@R_{ zks%wpw5ANY9qS_<9*bOS%%ba(B~@d8yp6QRv93%qgdXi8cM=!8q*%Y8XF=LqO}h|jKQ`El_tckM~S9oPIU6a4BOJwZR0Ge5}Hy%#LOE=%*Bw3RT?H^P+?m{H zj}gedxJVTB>=A(5QHM)wY_8BAXrqv&6+4l8jX9SP_VS_2C~(5vo(l!NVl^7TM%9BB|!+XCZ0;?99e$p&*a?L)YBFswAN# zF#15|r2>s57yQF7aK(_-DX3ARj3i1U4?>7u09!d(nCaht`TNiX#lxrBC{0OYqwB8c zkMOV|e>7QsY2S&C2z(%jr!*DXTwf~d{~G)a4a2gEe%x+b$Fog? zn3ff{rmh6*sUQ@a#IC+LoetxW%?7K+*EN)t8-0xo*>Rm6)0S&x8j-tJzbo_Rb8Kj#k(yuYpjkXcw27K!TmH)a@y?jDW z4B|}{O-m`RTWwDf=PCjX-4qW@g-0iB-xk@QZwFp0VGrTfDk0 zuezjd@WCrDZhx~$f3+zm>B0_~O~G2zDPvc+WLcd}n}R?%WHh5{d_Ru^Sc&7JQ;)2( ziJ%d9`4C^=sl;31dw#TzpRLZ7d(m_AT?yk!<}?JM0*{rX3-XkaV{$)}rM_$YMJK*2 z2Xy`(t=B!MKDWk86Xfd7*OFTndzGEz)#X%5y?GzJ@{*)jllOZyGj7~G#x>y;_WSEe zNzb_kri@abo@}s6c2*&h`1%BxjilM}OK{(?zBiiFvtiXw6NXPjkiR)O&4#Y_UZP|!Ofu~kJ>S4q~E!F@I|kGx8J?f?H?TW@ubTl@~ROT(|}RGmmf}naX&vZ zl$A9z>b_Af_0?pN0Xc8X`?GBF)jrHlW&7)q0VT)9VVBBwO~H7!b%$^H%xW$_gj2QF z1x?6VK;M#4_Vx46}`>=D+>m2s&UhDPl z7CfC$@B9VGiw6nUK-<$a@=z_Lz1#4%7MTnvu;@!K#qBP~OBnP64+X=!b}JLDwY&b} zIG_%y0dQM2MYI}$GaHVGPEytg0Op0^b}O@Ri;PNKLHCgvH%_FMxKs5dX_d|>wa6g5 z&vJchmwZlIjR%)pnCXpbU=dZJ%9?;!$ok-TLwH2`ne>^% zBj^+LJvN2FY6o?vwX{zH!W3na>J2p@QIpgw3f4^G_sU=;wB4o}Z zU(Ov2@+Wiw8D_NpC=UvNUiv9c)874Q36nWGq%LC>(BXRoH&87w<>KS&!=S@k8N%{zffd&acA9`pUd-z0}r#6q(l?9ifg)0&A}X zXpW`=)C*X&0;STBIphi>MZqf#;W^Np@`eMTOV~YPDIj#L0O8e|LvAmzdz;}KO5FzN z?L}va^LnRp;G;qRrQXGL$s+~^nK6=YHSd(ebancrF + + + + + + + Sipmann - SQL Server category + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Removendo um usuário de uma base SQL Server

      +
      + +
      +
      + +
      +

      O seu cliente lhe pede com urgência para dropar um usuário da sua base MsSQL Server, mas você trava com o seguinte aviso de erro:

      +
      Error: 15138 The database principal owns a schema in the database, and cannot be dropped.
      +
      + +

      Se você não possui (ou no momento não consegue acesso …

      +
      + + + +
      +
      +
      +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/category/sql-server.html.gz b/pt/category/sql-server.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..ce025bbe8eae51595efaa8406e706c4ade7d3b36 GIT binary patch literal 3807 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 VEcGUXzR<4?{|_w$Mt4R$006_ZH#PtO literal 0 HcmV?d00001 diff --git a/pt/category/tools.html b/pt/category/tools.html new file mode 100644 index 000000000..bd07b0e56 --- /dev/null +++ b/pt/category/tools.html @@ -0,0 +1,333 @@ + + + + + + + + Sipmann - Tools category + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Apache Nifi JSON to SQL removendo underline

      +
      + +
      +
      + +
      +

      Recentemente eu estava desenvolvendo alguns processos de ETL com o Apache NiFi. Mas após alguns minutos desenhando o meu fluxo, eu vi um comportamento estranho do componente ConvertJSONToSQL, que estava substituindo os underline ('_') do nome de um campo utilizado na condição da SQL (eu estava preparando um UPDATE). Aquilo …

      +
      + + + +
      +
      +
      +
      +
      +
      +

      Cool Tools

      +
      + +
      +
      + +
      +

      Com o passar do tempo você vai "encontrando" - e às vezes até mesmo desenvolvendo - algumas ferramentas que tornam o seu dia a dia como desenvolvedor mais fácil. Abaixo seguem algumas das minhas ferramentas que costumo usar. Ressalto que essa lista será (provavelmente) atualizada com o passar do tempo.

      +

      +
      + + + +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/category/tools.html.gz b/pt/category/tools.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..9aeb4fcdee6273312b2efe55807c12a75cc1a805 GIT binary patch literal 3716 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 literal 0 HcmV?d00001 diff --git a/pt/cool-tools.html b/pt/cool-tools.html new file mode 100644 index 000000000..a25d1d362 --- /dev/null +++ b/pt/cool-tools.html @@ -0,0 +1,456 @@ + + + + + + + + Cool Tools - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Cool Tools

      +
      + +
      +
      + +
      +

      Com o passar do tempo você vai "encontrando" - e às vezes até mesmo desenvolvendo - algumas ferramentas que tornam o seu dia a dia como desenvolvedor mais fácil. Abaixo seguem algumas das minhas ferramentas que costumo usar. Ressalto que essa lista será (provavelmente) atualizada com o passar do tempo.

      +
      +

      https://www.gitkraken.com

      +

      Eu gosto muito de usar git, mas às vezes fico cansado de ter que usar só linha de comando, e achei no GitKreaken uma interface muito legal de se usar.

      +
      +
      +

      http://paletton.com

      +

      Toda vez que você vai fazer um novo sistema/site, ou até mesmo trocar o layout de algum já existente, você acaba tendo que montar uma paleta de cores para se utilizar em todo o template.

      +
      +
      +

      https://icomoon.io/app/#/select

      +

      Querendo usar ícones como fontes? Vá aí e gere apenas os arquivos que você vai realmente utilizar e economize alguns kbs.

      +
      +
      +

      https://syncthing.net/

      +

      Se você procura algum meio de sincronizar seus arquivos entre vários pcs e por algum motivo não quer usar um Google Drive ou DropBox, fica aqui a indicação deste cara.

      +
      +
      +

      http://sqitch.org/

      +

      Gerenciamento de versões de um banco de dados pode ser bem complicado e trabalhoso... Manter diversos ambientes (desenvolvimento, homologação, produção) vai dar um trabalho se não utilizar alguma ferramenta. Porque não usar o melhor de gerenciamento de versão (git) e uma ferramenta que se adequa ao que você precisa? sqitch é o cara nessas horas.

      +
      +
      +

      http://www.setupmyproject.com/

      +

      Preparação de projetos java, com frameworks, bibliotecas, nomenclatura, etc... Rende uma economia de tempo grandiosa e já vem tudo pronto :).

      +
      +
      +

      https://www.pexels.com/

      +

      Bom site para imagens free stock. Excelente local para conseguir imagens de alta qualidade.

      +
      +
      +

      https://heml.io/

      +

      "HEML is an open source markup language for building responsive email." Melhor descrição impossível.

      +
      +
      +

      https://www.mockapi.io/

      +

      Desenvolva mocks para testar seu front-end. Eles geram inclusive uma carga de dados para ser utilizado nos seus testes.

      +
      +
      +

      https://undraw.co

      +

      Needing some cool and free ilustrations? Take a look at it.

      +
      +
      +

      https://www.audiotool.com/app/

      +

      Ferramenta para criar sons, musicas e afins

      +
      +
      +

      https://app.cloudskew.com/

      +

      Desenhar projetos de cloud e afins

      +
      +
      +

      https://lottiefiles.com/

      +

      Veja por si mesmo

      +
      +

      +
      + + +
      +
      +

      Traduções:

      +
        +
      +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/cool-tools.html.gz b/pt/cool-tools.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..dca88061afc494a211174cd8083c48c6ec694fc1 GIT binary patch literal 5155 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 R2mAk;`ad+hURHZb007VZAfEsL literal 0 HcmV?d00001 diff --git a/pt/desenvolvendo-app-firefoxos.html b/pt/desenvolvendo-app-firefoxos.html new file mode 100644 index 000000000..f8958e9d4 --- /dev/null +++ b/pt/desenvolvendo-app-firefoxos.html @@ -0,0 +1,445 @@ + + + + + + + + Desenvolvendo apps para o FirefoxOS (Parte 1) - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Desenvolvendo apps para o FirefoxOS (Parte 1)

      +
      + +
      +
      + +
      +

      Requisitos mínimos?

      +

      Para seguir este tutorial você precisará do Nodejs. Utilizaremos ele para automatizar algumas tarefas, como a criação do nosso projeto e até mesmo o empacotamento da app. Estas automatizações se darão pela utilização de algumas aplicações como o Yeoman e o Grunt .

      +

      Também será necessário o emulador do FirefoxOS, ele roda através do seu navegador Firefox. Para instalá-lo basta ir no menu Ferramentas > Desenvolvedor web > App Manager, nesta tela basta tentar iniciar o emulador, se não possuir um já instalado, você será solicitado a fazê-lo. Neste tutorial irei utilizar a versão 1.4.

      +

      Preparando o ambiente

      +

      Tendo o Node instalado, vamos instalar o yeoman e o gerador de app para Firefox OS. Atenção para o parâmetro '-g' no processo de instalação, com ele os seus pacotes serão instalados globalmente, e não só para a pasta em que esta o prompt.

      +
      npm install -g yo
      +npm install -g generator-firefoxos-app
      +
      + +

      Com ambos os pacotes acima instalados, vamos dar início a criação da app. No seu diretório de projetos ou onde desejar criar a app chama o generator instalado.

      +
      yo firefoxos-app
      +
      + +

      Uma vez chamado esse generator, o mesmo irá fazer alguns questionamentos, o primeiro é claro será o nome da sua aplicação, seguido da descrição e o nome do desenvolvedor.

      +

      Após a execução do generator, você já terá uma estrutura para desenvolvimento pronta, inclusive com um html inicial, com todas as dependências já instaladas. Vale ressaltar agora algumas tarefas disponíveis no Gruntfile.

      +
        +
      • Default: Irá gerar o pacote de distribuição
      • +
      • Test: Até a presente versão do generator (0.1.3) este processo irá simplesmente rodar o validador jsHint
      • +
      • Server: Irá disponibilizar na porta 9001 um simples servidor para testar a sua app
      • +
      +

      Vamos testar a nossa app. Para tal, rode o comando grunt server e acesse no seu navegador localhost:9001 e devemos ver a seguinte app. Caso nenhuma página seja exibida, revise os passos ateriores e verifique se nenhum erro ocorreu.

      +

      App inicial

      +

      Vale ressaltar que a sua app toda estará dentro de uma pasta também chamada app. Nela você encontrará os seus arquivos .html, .js, .css e demais. Antes de começarmos a codificar a nossa app, vamos ver como se instala a mesma.

      +

      Instalando a app

      +

      Para fins de teste, não é necessário rodar o comando grunt, sendo que ele irá testar o JS e compactar tudo em um arquivo .zip, basta apontar a instalação para a pasta app dentro do seu projeto. "Mas como eu faço isto?".

      +

      Indo novamente na App Manager, clicando na lateral esquerda, onde indica "Aplicativos", teremos então disponível no inferior da tela duas opções, vamos nos ater a utilizar a primeira (Adicionar aplicativo hospedado).

      +

      Clicando nesta opção vamos navegar até a pasta da app e clicar selecionada. Pronto.

      +

      Simples de se instalar, não acha? O Resultado final deve ser semelhante ao abaixo.

      +

      App inicial

      +

      Acessando uma API

      +

      Quando vamos programar algo mais complexo, geralmente vamos utilizar algo como, câmera, rede, lista de contatos, armazenamento e outras possibilidades. Para utilizarmos essas APIs, precisamos - assim como no desenvolvimento para android - especificar para o usuário no momento de instalação. Estes dados de acesso ficam no arquivo manifes.webapp, se você ainda não deu uma olhada neste arquivo, é nele que fica armazenado dados da app, como nome, descrição, versão, localização de ícones e é claro as permissões que a mesma requer.

      +

      As permissões ficam na propriedade permissions, na forma de "chave" : True. Algumas das apis são:

      +
        +
      • câmera
      • +
      • contacts
      • +
      • desktop-notification
      • +
      • storage
      • +
      +

      Cada permissão vai mudar o tipo de app que você esta desenvolvendo, mas aí eu sugiro ler mais na MDN aqui. Esse é o básico para iniciar no desenvolvimento de app para FirefoxOS. Na parte dois, vou começar a passar um pouco de código.

      +
      + + +
      +
      +

      Traduções:

      +
        +
      +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/desenvolvendo-app-firefoxos.html.gz b/pt/desenvolvendo-app-firefoxos.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..0a2e055e53f4d0df995aaf3cc308785f5e4f178e GIT binary patch literal 5940 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 WcR;Vj^9TNYdjAXVL5k&HPXGXMETaYh literal 0 HcmV?d00001 diff --git a/pt/drafts/azure-data-fundamentals-certification-80-discount-en.html b/pt/drafts/azure-data-fundamentals-certification-80-discount-en.html new file mode 100644 index 000000000..8cde221e7 --- /dev/null +++ b/pt/drafts/azure-data-fundamentals-certification-80-discount-en.html @@ -0,0 +1,511 @@ + + + + + + + + Azure Data Fundamentals certification with 80% discount - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      + + +
      +

      Hey folks, if you want to achieve some certification this year, keep an eye open for vouchers. A few months ago, Oracle released a set of free courses with certifications. Now it's Microsoft time. Microsoft is updating they're certifications and we have a voucher of 80% discount using the coupon DP900Norfolk at the checkout of the beta certification DP-900.

      +

      Be aware that this certification is in beta and the result won't be instantly available as the regular ones. Access the following link and schedule your exam. https://docs.microsoft.com/pt-br/learn/certifications/exams/dp-900.

      +

      Update: There is a 80% voucher also for https://docs.microsoft.com/en-us/learn/certifications/azure-ai-fundamentals. Voucher: AI900Saratoga

      +
      + + +
      +
      +

      Traduções:

      +
        +
      +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/drafts/azure-data-fundamentals-certification-80-discount-en.html.gz b/pt/drafts/azure-data-fundamentals-certification-80-discount-en.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..318e37cb3f72fe6037295354f1181cad57dc1769 GIT binary patch literal 4660 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 literal 0 HcmV?d00001 diff --git a/pt/drafts/cloud-not-open-connection-java-mysql-hibernate-en.html b/pt/drafts/cloud-not-open-connection-java-mysql-hibernate-en.html new file mode 100644 index 000000000..b142556bb --- /dev/null +++ b/pt/drafts/cloud-not-open-connection-java-mysql-hibernate-en.html @@ -0,0 +1,474 @@ + + + + + + + + Could not open connection with MySQL and Hibernate - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      + + +
      +

      Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some "Could not open connection" at my face, but why? I've tried to connect to it manually and got the same problem.

      +

      After some research, I found that the true error should be java.sql.SQLException: null, message from server: "Host '172.17.0.4' is not allowed to connect to this MySQL server" but it wasn't showing to me...

      +

      After all, be aware that with the docker image MySQL:5.7.21 (latest version right now) the root user isn't allowed to remote connect to the database (it's alright, security reasons) and if you still want to do remote connections to it with root there are a few things you can do.

      +
        +
      1. Create a user or allow root to access from other IPs.
      2. +
      +
      #No access to user root on any other IP
      +SELECT User, Host FROM mysql.user;
      ++---------------+-----------+
      +| User          | Host      |
      ++---------------+-----------+
      +| healthchecker | localhost |
      +| root          | localhost |
      ++---------------+-----------+
      +2 rows in set (0.01 sec)
      +
      +CREATE USER 'newuser'@'%' IDENTIFIED BY 'password'; #% mean any IP
      +GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%';   #*.* mean database.table ;)
      +
      +
        +
      1. Use MariaDB instead, witch come (at least on the version 10.2.13) with root allowed to do remote connections and will work like MySQL :)
      2. +
      +

      I changed to MariaDB as it work without creating user or any changes on the Java code or the docker run command.

      +

      +
      + + +
      +
      +

      Traduções:

      +
        +
      +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/drafts/cloud-not-open-connection-java-mysql-hibernate-en.html.gz b/pt/drafts/cloud-not-open-connection-java-mysql-hibernate-en.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..5e65c5eb698c45d34a31e5d64348e883e06a63f7 GIT binary patch literal 5208 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 S3Voqpg82W_bQEY5Q2+oJC*ke@ literal 0 HcmV?d00001 diff --git a/pt/drafts/cloud-not-open-connection-java-mysql-hibernate.html b/pt/drafts/cloud-not-open-connection-java-mysql-hibernate.html new file mode 100644 index 000000000..e36a82056 --- /dev/null +++ b/pt/drafts/cloud-not-open-connection-java-mysql-hibernate.html @@ -0,0 +1,474 @@ + + + + + + + + Could not open connection com MySQL e Hibernate - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      + + +
      +

      Last day I decided to deploy a MySQL Docker image to work with my Java application. I've been using PostgreSQL instead and have no problems at all, but after I moved to MySQL, the app didn't connect anymore with the database and throw some "Could not open connection" at my face, but why? I've tried to connect to it manually and got the same problem.

      +

      After some research, I found that the true error should be java.sql.SQLException: null, message from server: "Host '172.17.0.4' is not allowed to connect to this MySQL server" but it wasn't showing to me...

      +

      After all, be aware that with the docker image MySQL:5.7.21 (latest version right now) the root user isn't allowed to remote connect to the database (it's alright, security reasons) and if you still want to do remote connections to it with root there are a few things you can do.

      +
        +
      1. Create a user or allow root to access from other IPs.
      2. +
      +
      #No access to user root on any other IP
      +SELECT User, Host FROM mysql.user;
      ++---------------+-----------+
      +| User          | Host      |
      ++---------------+-----------+
      +| healthchecker | localhost |
      +| root          | localhost |
      ++---------------+-----------+
      +2 rows in set (0.01 sec)
      +
      +CREATE USER 'newuser'@'%' IDENTIFIED BY 'password'; #% mean any IP
      +GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%';   #*.* mean database.table ;)
      +
      +
        +
      1. Use MariaDB instead, witch come (at least on the version 10.2.13) with root allowed to do remote connections and will work like MySQL :)
      2. +
      +

      I changed to MariaDB as it work without creating user or any changes on the Java code or the docker run command.

      +

      +
      + + +
      +
      +

      Traduções:

      +
        +
      +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/drafts/cloud-not-open-connection-java-mysql-hibernate.html.gz b/pt/drafts/cloud-not-open-connection-java-mysql-hibernate.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..ebfd91c7df249fa01e469887fa42ea788b8d3c20 GIT binary patch literal 5205 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 + + + + + + + Connecting to a database through SSH - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Connecting to a database through SSH

      +
      + +
      +
      + +
      +

      If someday, for some reason, you need to establish a connection with a database which is behind a firewall and you only have SSH access on that server (and you don't want to use a CLI) you can do an SSH tunnel. It's pretty simple, bellow has a sample of how to allow connections to a remote Firebird database.

      +
      ssh -L 3051:192.168.1.9:3050 username@192.168.1.9
      +
      +

      The -L parameter tells to SSH do a local port forwarding on local port 3051 to remote port 3050. You can use it to a connection with many services, not just databases.

      +

      You can do the reverse kind of tunnel, forward connections from the host to your local machine, you just have to change the parameter form "-L" to "-R" and the port order is inverted, first come the port where the server will listen and after your localhost port. This remote port forwarding must be enabled on the server. Look for GatewayPorts at the ssh config file.

      +
      ssh -R 3050:localhost:3050 username@192.168.1.9
      +
      +

      Why whould you need something like that?? Let's say you want to share a localhost site/database with a friend, but your internet connection don't allow you to expose any port but you have access to a remote server witch can do that. Problem solved ;).

      +

      +
      + + +
      +
      +

      Traduções:

      +
        +
      +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/drafts/connecting_to_database_through_ssh-en.html.gz b/pt/drafts/connecting_to_database_through_ssh-en.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..1aa568f7f412caebe7fdefc10854db4dec669f76 GIT binary patch literal 4495 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 literal 0 HcmV?d00001 diff --git a/pt/drafts/flutter_with_firebase_auth_crashing-en.html b/pt/drafts/flutter_with_firebase_auth_crashing-en.html new file mode 100644 index 000000000..234239776 --- /dev/null +++ b/pt/drafts/flutter_with_firebase_auth_crashing-en.html @@ -0,0 +1,433 @@ + + + + + + + + Flutter + firebase auth crashing - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Flutter + firebase auth crashing

      +
      + +
      +
      + +
      +

      Hey Folks, recently I've started learning Flutter and right after a TODO List, I tried a Firebase integration. But as soon as I started setting the dependencies, my app stopped opening... just a crash. After a few logs digging, I've found the following log.

      +
      AndroidRuntime: FATAL EXCEPTION: main
      +AndroidRuntime: Process: com.example.diadocasal, PID: 13672
      +AndroidRuntime: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/util/ArrayMap;
      +AndroidRuntime:     at com.google.android.gms.internal.measurement.zzca.<clinit>(Unknown Source:60)
      +AndroidRuntime:     at com.google.android.gms.internal.measurement.zzcm.zzr(Unknown Source:7)
      +AndroidRuntime:     at com.google.android.gms.measurement.internal.zzfj.<init>(Unknown Source:23)
      +
      + +

      Notice the "NoClassDefFound" of an ArrayMap. To solve that I did the following changes to the files:

      +
      //build.gradle file
      + ext.kotlin_version = '1.3.20'
      +[...]
      + dependencies {
      +        classpath 'com.android.tools.build:gradle:3.3.0' // gradle version
      +
      + +
      ;gradle.properties file
      +org.gradle.jvmargs=-Xmx1536M ;mine have just this line at first
      +android.useAndroidX=true ; uses androidX instead of the default support library
      +android.enableJetifier=true ; uses jetpack libraries
      +android.enableR8=true ; the new code shriker
      +
      + +

      After that, voilà, app up and running.

      +
      + + +
      +
      +

      Traduções:

      +
        +
      +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/drafts/flutter_with_firebase_auth_crashing-en.html.gz b/pt/drafts/flutter_with_firebase_auth_crashing-en.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..605189e1d58e2671eabf5e8e67164f6d0cad40a0 GIT binary patch literal 4702 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 + + + + + + + Limiting Connection Resources on SQL Server - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Limiting Connection Resources on SQL Server

      +
      + +
      +
      + +
      +

      Have you ever suffered from a slow SQLServer database? Someone love to run that heavy query in the database? Resource Governor to the rescue. You can set a few rules on how users (connections actually) will use the server/database resources based on a few things.

      +

      First things first, if you don't have DAC enabled, enable it now. Dealing with resource governor can lock you out of the database and leave you without action (almost... you can start the server with -c -m -f).

      +

      Now to understand how Resource Governor works, we have a few keywords resource pool, workload group e Classifier Function.

      +

      Pool Sample

      +

      Resource Pool

      +

      First, we have the Resource Pool, with is the bigger resource group that we have the ability to manage. With it, we can set a few things like: MIN_CPU_PERCENT, MAX_CPU_PERCENT, MIN_MEMORY_PERCENT, MAX_MEMORY_PERCENT, MIN_IOPS_PER_VOLUME, and MAX_IOPS_PER_VOLUME.

      +

      Be aware that the MAX_CPU_PERCENT will just "works" when there is another connection with a higher priority, otherwise it will use what is available. Let's create a pool.

      +
      CREATE RESOURCE POOL [SpreadSheet]
      +WITH (
      +    MIN_CPU_PERCENT=0,
      +    MAX_CPU_PERCENT=20,
      +    MIN_MEMORY_PERCENT=0,
      +    MAX_MEMORY_PERCENT=20
      +);
      +
      + +

      ## Workload Group

      +

      Then we have a workload group that "works" inside a pool, so you can have another granularity on how you can split your resources. Again, we have a few options: IMPORTANCE, REQUEST_MAX_CPU_TIME_SEC, REQUEST_MAX_MEMORY_GRANT_PERCENT, GROUP_MAX_REQUESTS.

      +

      The IMPORTANCE set guesses what... the importance of that workload inside the pool, you can set LOW, MEDIUM, HIGH. GROUP_MAX_REQUESTS sets how many requests can run at the same time inside that workload (0 will set as NO LIMIT)

      +
      CREATE WORKLOAD GROUP [DepartmentA] 
      +WITH (
      +    GROUP_MAX_REQUESTS=2,
      +    IMPORTANCE=LOW,
      +    REQUEST_MAX_CPU_TIME_SEC=10, -- Time running/using CPU
      +    REQUEST_MAX_MEMORY_GRANT_PERCENT=15
      +) USING [SpreadSheet]; -- pool name here
      +
      + +

      Classifier Function

      +

      This is where everything begins... This is the entry point where you should set the group name. It's a function that will run for every new connection so be aware that if your function runs lots of queries or some heavy stuff... that time will be added to the connection handshake. If the function returns NULL or a group name that doesn't exist, the 'default' group will be used... Yes, there is a default workload group where everything runs where there's no classifier.

      +
      CREATE FUNCTION fnClassWorkloadGovernor() 
      +RETURNS SYSNAME WITH SCHEMABINDING 
      +AS 
      +BEGIN 
      +    IF APP_NAME() LIKE '%Excel%'
      +        RETURN 'DepartmentA'
      +
      +    IF HOST_NAME() LIKE '%THAT_MACHINE_OR_APP_SERVER%'
      +        RETURN 'LowPriority'
      +
      +    RETURN NULL
      +END
      +GO
      +
      +ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION=dbo.fnClassWorkloadGovernor);
      +ALTER RESOURCE GOVERNOR RECONFIGURE;
      +
      + +

      There you go... now you have a fully working resource governor, but look out that If you want to delete that classifier function, first you have to remove it from the resource governor (look the SCHEMABINDING at the create up there).

      +

      To disable Resource Governor

      +
      ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION=null)
      +ALTER RESOURCE GOVERNOR RECONFIGURE
      +
      +ALTER RESOURCE GOVERNOR DISABLE
      +GO
      +

      +
      + + +
      +
      +

      Traduções:

      +
        +
      +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/drafts/limiting-connection-resources-sql-server-en.html.gz b/pt/drafts/limiting-connection-resources-sql-server-en.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..aaf272edbe8a787b41f4752fa399561560e7707d GIT binary patch literal 5904 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 literal 0 HcmV?d00001 diff --git a/pt/drafts/linux-external-display-with-disper-en.html b/pt/drafts/linux-external-display-with-disper-en.html new file mode 100644 index 000000000..277570c22 --- /dev/null +++ b/pt/drafts/linux-external-display-with-disper-en.html @@ -0,0 +1,420 @@ + + + + + + + + Change display settings on linux with Disper - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Change display settings on linux with Disper

      +
      + +
      +
      + +
      +

      From time to time, I change the Linux distro on my laptop or just do a fresh install on it. And once in a while, have random problems with external displays. It can be something really "simple" like don't detecting the external monitor or something crazy like the image below.

      +Display bug +

      As you can see at the image, the mint detected the display but mirrored it in a crazy way that works but doesn't at the same time. If you try anything and doesn't get working, or just wanna skip the whole job of configuring complexes text files, give a try to Disper. Download the latest version. +Extract it on any folder, and make install it (on the extracted folder).

      +
      make install
      +
      +

      After that, you can start using it... There are a few options that will serve you well.

      +
      disper -e #extend your display
      +
      +
      disper -c #clone your display
      +
      +
      disper -s #only your external display
      +
      +

      +
      + + +
      +
      +

      Traduções:

      +
        +
      +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/drafts/linux-external-display-with-disper-en.html.gz b/pt/drafts/linux-external-display-with-disper-en.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..1b043e31a5349675b9c5d28f41875aada21bb7cc GIT binary patch literal 4393 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 literal 0 HcmV?d00001 diff --git a/pt/drafts/microservices_nodejs_express_rabbitmq_part_1-en.html b/pt/drafts/microservices_nodejs_express_rabbitmq_part_1-en.html new file mode 100644 index 000000000..051889a23 --- /dev/null +++ b/pt/drafts/microservices_nodejs_express_rabbitmq_part_1-en.html @@ -0,0 +1,476 @@ + + + + + + + + Microservices with NodeJS, Express.js and RabbitMQ Part 1 - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      + + +
      +

      This is the first part of a microservices development series. The service will consist of the bellow architecture, where we will expose an image optimizer service that will forward the request to a RabbitMQ queue and answer with the bytecode of the optimized image. It shouldn't be a long series so let's see what we can do.

      +Service architecture +

      Let's get our environment working. First, we'll need to install the libraries that we'll use.

      +

      Create a dir and initialize the nodejs application inside it (npm init) and then let's install the deps.

      +
        +
      • amqplib - AMQP lib to interact with rabbitmq
      • +
      • express - Do our basic rest API
      • +
      • express-fileupload - easy file upload parser
      • +
      • imagemin and imagemin-pngquant - our image compacter
      • +
      +
      npm install --save express amqplib express-fileupload imagemin imagemin-pngquant
      +
      +

      Now let's write the entry points for our service, we'll have two basic entry points. The path / that will have a welcome message, the second path will be /upload and this is the one that will handle the image and produce a job for our workers.

      +
      const express = require('express');
      +const fileUpload = require('express-fileupload');
      +
      +//Instantiate the app and set the fileupload parser to manage files
      +const app = express();
      +app.use(fileUpload());
      +
      +//Our index entry point
      +app.get('/', (req, res) => res.send('Hello From ImageCompacter service'));
      +
      +//The path that will handle the image file and throw them to the queue
      +app.post('/upload', (req, res) => {
      +    //With express-fileupload we can grab the files like this
      +    let img = req.files.image; //"image" is the name of the input
      +
      +    res.send('Not ready yet');
      +});
      +
      +//Finally start the app with the given port number
      +app.listen(4000, () => console.log('Example app listening on port 4000!'));
      +
      +

      Let's check if it works, run the service with node.

      +
      node index.js
      +Example app listening on port 4000!
      +
      +

      Open the browser and check if it prints our hello message when accessing localhost:4000. Works? Greate. Now let's work with the image and see how we do it. To optimize our image, we'll use the library imagemin and imagemin-pngquant, it will be that simple for now, we'll work with rabbitmq latter.

      +
      const imagemin = require('imagemin');
      +const imageminPngquant = require('imagemin-pngquant');
      +//...
      +
      +//The path that will handle the image file and throw them to the queue
      +app.post('/upload', (req, res) => {
      +    let img = req.files.image; //"image" is the name of the input
      +
      +            imagemin.buffer(img.data, {
      +        plugins: [imageminPngquant()]
      +    })
      +    .then(out => {
      +        res.write(out,'binary');
      +        res.end(null, 'binary');
      +    });
      +});
      +
      +    //...
      +
      +

      Use Postman to test the request. To see if it will work, make a request to http://localhost:4000/upload with a formdata with a file. Select the "send and Download" instead of "Send" and you should have an image after that. Bellow an image of how your postman should be.

      +Postman +

      That's it for today, next week we'll change our code to use RabbitMQ.

      +

      +
      + + +
      +
      +

      Traduções:

      +
        +
      +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/drafts/microservices_nodejs_express_rabbitmq_part_1-en.html.gz b/pt/drafts/microservices_nodejs_express_rabbitmq_part_1-en.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..35030b992800dbb9c2e39baa4df26b8f8bd06012 GIT binary patch literal 5573 zcmV;$6*}r4iwFP!000021MNK9a@#nT&+%8F)jMr_+7udkC!O7z#EB&W=iuCMF1YaEnqxHbpdK zhpkJ_Cb39Vi+CbZEP}2R?yK>k&n~&g9Q|dB@Q5o;14nu^V29myr-W*(RP3<#DZe~y z{oVQX$ayTnm?}O9SOG6*hs+MQ#B|@?U2a{yN)tI~zKKuD(i#)xG6DDQ* zToM}jB0B@SuH_#EQoQ zq1v7Z-Snq>PmXr~ar9<)+BtiE`FFJwcmDPUWm>=*Cn9EvnjW^qXisv*&TyOpW=m14 zPa1&KG%ofBPPiAa*)Rc*E=a-xXbKcdBC4SKIAKGhqynSZ8uX$p|-PWQgk*?}K&9TLgB z3f0dN_ykJw?G$PRRdiGUGfHomcJ&}7t62#$GpUt;tUazsBo9GTptTzTIdL?4pVCOJ z1dXC3hRh~|3j{`iB6Cr*b!uvsn9r{6Se?xvYp%{>)olYanN3(Xd94Q=GUiK{20@!D z5w@>j+7ooZzB89jl4*cB)bkiJ_J<%}*&Yco3K)&K)G`1Z4~I15 z!SwJK(Ab1dn^0D`0b30O^;?8W=&Zd=tt54q(i2>@$#4u ziQ!liJi|N?{&Xwtx~i6H&huY&|hRA7BBR0sZcJJnXrm*l^*J<{z}8$mhD88bc_D`;--Y~R1T+uhlIQ0_GmiSG;&MlXOi z{N=!Ws_8OGXq@%H2jwoF2t=|+zU}pT<%R)tWzf=%uZR=@_sO@O=hgLb66*6*?vb4$ zBL$(h2QW!la>m0^MYsd%U5pZuM!pjZNZYh>?sopN-_$E%F{26YE z+`krjQKhIi#_7FBhWv{8`+s#yy>m5mI%V#%Pcx%4PMgeg8PY40t?v0D5T=Gc<V62B&nel!U}jl+@Bj>X zv%>nf;q-+2Y(SGrgPuOQ%54!tzTqL3JP;Z8=X%ey2Ie~K;@`&pAL`7|(hN?Mu}G(0 z8`|+D($O-55(<6(9`R{%QDp?>r&ZyM5<0D6reIXroZ24twtKq^nX+9cV<=e`aPviE zdJVZ1D#mrATZfPdpzC%0E^Ahe4j`_LAP24~k=G6|h7d2H5<*-_>{*oc`DLM9iMSZr zB3f)jDZwvPsnHzH0}5_&rvRhj2B}gaDuX(pmJmT~BYYZz=$!zZJJa8APC6J)X5aMu z$%tkU*hS<)PIG}s&mjMbHa7RObjRSWkfO=q86`tXh7^f`H08kMeezv2kn#RY7NrNS zfv*9lSsv3`$Wg2RlL*;?ODn>li=nQ`@L1%w`Yc)%Eh#Je`ZTiDk5y@q1IW=Xt&zB3 zC0VtMmIZEaHu%gH;ur9L3~EYkh>&90sJ^`op%24%XTNA)XneM39vph;JB=TNK=GIT zqBqdl^B#fPd1F0Gr42o82nO-`=6*xeLUn5%3_AvA|}}iLqiXk+9Y^DWOqB8j9J_(^wINcMh$+_9~Ld$DFCHKJ0z{ZY_pU-u~s)D64t`7hVqjE~{39*l2 z+;B){P}ypf5m9w%3NYZ1W(Ih;Yv8FI+D&njqcExSN(DR*(9%DUF^#|p>0d^cMqZ91 z=_Sqt!&)Yo8V+*u=17C_^%%z4fWlwFgf?oKB$!B}QoyE?DWt<7WQns>b7PG&v#v3c zq9(!$wg_SzNlZa8#voj435B_@!71PhKt3#6zTMKpOPH3CZxHCtF!wAX!(WEZ*wxJA zVJcZ1BJu;nkkJHoj}zgiI2Fmc805U+1cF+|8sf6L(OrP zcG2n|HUgq=384u9_-se_2&izn_0u!iVUH_{c08RC-77-_~qCu z^XCCN*L{w2D*_K^O&=Vawi5|%)&$XfQW+nB&IeK_v?pwnHXD0EH~i- z>NIQ!aUx>}ogm((jX?r@LnFK1nf)I$HE8@J6R+9znA6~In8VeiF*czdL3)=vV+k4H z1=C@_5$lED>IbaZ`9flTqlmStB@_e1(m>i^8-VI1Y=rpT`&6iX4Q)PVSrKmEXEhFw z;xu=t^Md=*ZsCN~TQRAV-0g4~w0{GY&OlFeMP>6O~8!yapWcODIcl&6Y%I zIKU+R_8dU~r8BPNEiagmxB5GsPG{xWf5Q-fIf@9_%8ZH8jnw`0ieh1>RbYgJM>m93 z05bl~l5wC~#hBXI8#C{M@FCWsn9|EFlBAKXDY9h^&^#8gE9Uz80D(?T+UIg@F(YM_ zmNfd!9ObWLW+)s$V8Z-TpKB>F5+}M0!!l*8qo}QwaNz~&PtSv|IJ&8j^eKihM4&x0 zs(#oezo9f9k{@+--zJ5k4;p6EVOA&MqQ)3{feZGb+E!50iF}1*R^4vRmJkZ-3sX|6 zk5^sJftvT+Z1qEqZ~=(in!_J+k8rhTOKaYij5-}KO9{Hri^L=&cgA(LazFyAfTGV^ z0cJFR*>Wix^|RD~8S>*?3x5V{xe?reM-wO7?e@QO%>SP`=D)MS<+H(jH{lxBwKV;M zbU4hjs-+ETrjn%x@~NV$8g$8KYT1s1bi|`tt$}&$H6ebxP@VJcaz3AX*J#c<=Uvp= zC?Z^fUsV$#Ri8c`Z>!GGE7UjVpvf-kJ>>u@hh(~3K)FpOSFEKjyjDL-gJ31wzcG^w zs;@mMQW=r~ zt8Q9a;VsywJj6BXupH8<(1X_d4n_bxS+k@O`WU2_g0SofQ0wUYD zwUpq0mCf;4kUAJA#c5}b+!waV?Lm|l;r?MuB{Y(O-mR2#ha`6TrwR4bkN^7kKTLv0 zhX>^zxL;S^wl6*b12%(aX71WU9d^PXo!0*KiQ}5H+JXQ5xy(;8%}$23e$agF3+KB5i~n$2kqSoMtD>{9M}4R`YCldU%Z2ROS_&(fJ!2=pI`O4ZvJu&{Wd78C4h@pY9Q@FoXIjmKIdMSK9K}-oY#N zuRv##sU9PqjjFfVUJuS8I8}y5@P!ln+gMW^h>@5F#e0keSlJ#W^b+!%#Mp=a=G5?kqEUA5_Exp2C4FOMeia&NmT_UG80T?f??(d7B`D+R=FVxB zM=d#kYx-us@|te>CB|#|WwrZ~-DXFw7WcPT6K7&-3|-Y^c)?L)X)ifsr;dB}Q$S;> zkK2PKhv4m;M5|Y4$@$fY{PeSK+|x(6tEW)$+-B*Ja`EtVA`m*FmwaSzsndj0C!lzM zl=*|HZggxa#F=b09?i}Vn%jh4pLh>aR=m?-^LWif74KvFnaWvaUpyKXJ!oymE#IoEx&Ls4Fcpg_9rVX@ zh<_GCLk?ZVm5?hk^~}J%KKWW1I|om@B2Pa9$k)maBy#E1iu}Aln6H(ga4O#iD>C$Q zdh+JQ*UC`D)Qar1Up+njTDghE1hP)t;a-ucV+1@wz^|6IDO3p2s%&YXua%{nDC(=$ z5%>nY6AzJpRj%H=ASW8|Yh_Id5v&?*PZ4GrhU|3)n~{EwEHPnt#}Mzht6Rd(CM7<^> z*Eq;4z(IaKdHo7^Jdl}$grXP<`&JGEaa47Z8+L?@*2U7OVhMWbyJj0oD z#)gZO^H_wy1RL@Que?couRt2X?+7;s^>$sVc))+xjGKj3@+_et!@a^!_K`RCje~UR zgv_Df{)R)wmUoRs|5SH37!Zey8mu~)*uc^PWhNth?cUiSpb>-(y;-QY2QzrjkLKac z4Rz^WZoBqHZ`w7RZ9~1+_$Zx{my8^NE;KLIOXBxB@l`QG+Sg`mcX!Lr@$N1yxoz`n z(dtR*qWJ9NPzcq0?Y;C)1S?mkw_QKW0ux31@h(djN(x4UdYNANs z+Y%U_deoce30@ekUU|0oz!{`8VfZ8%*%u|8nx^GmLr|r21d}cuEVP{!s5IE>i2PBv ztWG14I7r%fSDk_4G@U%U4N^0db;Q1~Z51a`Fg{~)_S-j(lkZjGIRc0Jju&wKwlR-7 zF-WA>d9ZtLyZ4~iz1!{W-tXayt)`Jzo{=#ffj{21@1lZs-|lzW1Gd=eo=cbdaxk?! zJ?Hv$8FuNBIF2D{Ml{m)qwY$MvUgkM-R3vhaPLenkJxu^m9=$A6LL19@5!P0_0NBj zx9`gDJ;CSgIF;j#x9ew;sUy!5X{6S-$oj8G&i&5rcIST2*XVgC<&M=Rt)md^puWXL1>%_6d7FHUYwKv3cZ|&jVn72T^*v`gA{!(4AGq8k4fcE|Gvu0y zrB57bAV6Yngc{F`NMS}jgfint=h1IF+uJXXcOG{OQ!2*`p9q<7NGv98oa8U)6g`P^=4zPFYIyh2lD>#OEuNZxmgv?L%plDMBdXON3S>{fICno!r!dvVao zVd_sV6y;yYU0j#^XfG<;y_>b-G@ZTds&=|Qnm+e83fn$t7B!fkJpY^7z{g5AfRu+p zj^?S-NVe(GXz@s|O}ElWxk2Y|c&hkcJ|r7Ck!_tBw(SB2_&#u}y0}@dbK8wzWF6l- zRpZ@qM&=+|2+^u|Cc*;ARvXw*yVA&Jm1c?8v=wFP1wyhpVKx(1$KUeO_^?*B*aH{e TMW#RK7kmFNM6vq2=vx2)irK7Y literal 0 HcmV?d00001 diff --git a/pt/drafts/microservices_nodejs_express_rabbitmq_part_2-en.html b/pt/drafts/microservices_nodejs_express_rabbitmq_part_2-en.html new file mode 100644 index 000000000..3a0354617 --- /dev/null +++ b/pt/drafts/microservices_nodejs_express_rabbitmq_part_2-en.html @@ -0,0 +1,507 @@ + + + + + + + + Microservices with NodeJS, Express.js and RabbitMQ Part 2 - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      + + +
      +

      If you haven't read the part 1 go ahead and read it... It can be useful :). Or if for some reason you want to start now, you can grab the project where we stopped here and get along. On this part, we'll implement the RabbitMQ queue and see how we can get the best of our app and server with that.

      +

      Before we began coding, let's understand why we are going to use RabbitMQ if what we have now works? If you check again, you'll see how long it takes to answer the request with the optimized image. It takes a few seconds, so imagine an online service with thousands of request to optimize images (like TinyPNG) how long is it gonna take to answer every request? How much of your server is it gonna take? With only one service running, probably the server will crash.

      +

      With a queue, we can schedule the requests so we can use the amount of memory and processor that our server has, without taking more than we can. It's better to take a few seconds to answer the request then throw some error to the user. Want more? With RabbitMQ we can see how the queue is doing and we can add more consumers (workers) to it and get things done quicker and distribute the job.

      +

      First of all, we need an up and running Rabbit server, for the sake of simplicity, I'll use a Docker container with it inside.

      +
      docker run -d --name rabbit -p 5672:5672 -p 8080:15672 rabbitmq:3-management
      +
      +

      You can see that we're running the rabbitmq:3-management image, which provides us a web interface to see how things are going. After that, if you look at our code you'll see that all the job is made at the '/upload' route, and that's what we'll change.

      +

      First, we need to understand what we need from RabbitMQ. We need something that, we send an image to a queue and get an optimized image back from that. There is a name for that, is RPC (remote procedure call) and there are two ways of doing this with rabbit. Both the ways you can see on their tutorial page. We'll use the approach that uses a global channel whose id is randomly generated (you'll use the name 'amq.rabbitmq.reply-to' but the rabbit will do the job).

      +

      Let's start importing the library, defining a few variables and defining a init function that will establish a connection with the rabbit server and create our RPC queue. The RPC queue it's where we'll receive the answer from the consumer (our worker).

      +
      //import the library
      +const amqplib = require('amqplib');
      +
      +//queue channel
      +let channel = null;
      +//queue name
      +const QUEUE = 'optimizeimg';
      +
      +//...
      +
      +function init() {
      +    return require('amqplib').connect('amqp://localhost')
      +        .then(conn => conn.createChannel())
      +        .then(ch => {
      +            channel = ch;
      +
      +            //this queue is a "Direct reply-to" read more at the docs
      +            //When some msg comes in, we "emit" a message to the proper "correlationId" listener
      +            ch.consume('amq.rabbitmq.reply-to', msg => eventEmitter.emit(msg.properties.correlationId, msg.content), {noAck: true});
      +        });
      +}
      +
      +//Random id generator
      +function randomid() {
      +    return new Date().getTime().toString() + Math.random().toString() + Math.random().toString();
      +}
      +
      +app.post('/upload', (req, res) => {
      +    let img = req.files.image;
      +
      +    let id = randomid();
      +
      +    //Event listener that will fire when the proper randomid is provided
      +    eventEmitter.once(id, msg => {
      +        res.write(msg, 'binary');
      +        res.end(null, 'binary');
      +    });
      +
      +    //Checks if the queue exists, and create it if needed.
      +    channel.assertQueue(QUEUE)
      +        //Sent the buffered img to the queue with the ID and the responseQueue
      +        .then(() => channel.sendToQueue(QUEUE, img.data, {correlationId:id, replyTo: 'amq.rabbitmq.reply-to'}));
      +
      +});
      +
      +//Finally start the app with the given port number
      +//now we initialize the rabbitmq connection before start the server
      +init()
      +    .then(() => app.listen(4000, () => console.log('Example app listening on port 4000!')))
      +    .catch(err=>console.error(err));
      +
      +

      Ok, now we have our server code rewritten so let's see our worker code. Create a file named 'worker.js' and let's see how it's gonna be. It's really simple. You initialize a connection with RabbitMQ too, create a channel, check if the queue exists and start watching for incoming messages. When an image arrives, we do the job with it and send back to the "replyTo" queue the optimized image for the proper sender (correlationId). In the end, we do an acknowledge of the message so it get's out from the queue.

      +
      const imagemin = require('imagemin');
      +const imageminPngquant = require('imagemin-pngquant');
      +
      +let channel = null;
      +const QUEUE = 'imgqueue';
      +
      +require('amqplib').connect('amqp://localhost')
      +.then(conn =>conn.createChannel())
      +.then(ch => {
      +    ch.assertQueue(QUEUE)
      +    .then(() => {
      +        //Watch incomming messages
      +        ch.consume(QUEUE, msg => {
      +            imagemin.buffer(msg.content, {
      +                plugins: [imageminPngquant()]
      +            })
      +            .then(out => {
      +                //Send back to the sender (replyTo) queue and give the correlationId back
      +                //so we can emit the event.
      +                ch.sendToQueue(msg.properties.replyTo, out, {
      +                    correlationId: msg.properties.correlationId
      +                });
      +
      +                //Acknowledge the job done with the message.
      +                ch.ack(msg);
      +            });
      +        });
      +    });
      +});
      +
      +

      The key points here are. Open just one connection to the hole server. You CAN create one channel for every request that you receive, but it can take some time if you have a really big cluster of RabbitMQ. It was a quick tutorial, but I hope that it was able to clear a few questions that you might have when working with rabbit and express.

      +

      +
      + + +
      +
      +

      Traduções:

      +
        +
      +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/drafts/microservices_nodejs_express_rabbitmq_part_2-en.html.gz b/pt/drafts/microservices_nodejs_express_rabbitmq_part_2-en.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..244f69c5a7a79e647fc6a33a0e780625f5e03225 GIT binary patch literal 6784 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 literal 0 HcmV?d00001 diff --git a/pt/drafts/my-azure-data-fundamentals-certification.html b/pt/drafts/my-azure-data-fundamentals-certification.html new file mode 100644 index 000000000..d5729a643 --- /dev/null +++ b/pt/drafts/my-azure-data-fundamentals-certification.html @@ -0,0 +1,528 @@ + + + + + + + + My Experience with Azure Data Fundamentals certification - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      + + +
      +

      E aí pessoal, tudo bom?

      +

      Bom, este ano tem sido um pouco estranho, não é? E para tentar ajudar como possível, algumas empresas tem oferido vouchers e descontos em ferramentas, cursos, certificações e afins... Bom aproveitei uma demanda e uni com a oportunidade e resolvi iniciar algumas certificações. Mais no início do ano consegui a certificação de Oracle Cloud Infrastructure Foundations e agora tirei a Azure Data Fundamentas (DP-900). Fiz a prova no dia 20/12/2020 e bom, passei. Vou deixar aqui um resuminho de o que caiu (dentro do permitido) e como se preparar.

      +

      Azure Data Fundamentals Certification Badge

      +

      A prova da DP-900 visa validar conhecimentos básicos sobre os serviços que envolvem dados e como os mesmos são tratados na Azure. Assim como ela, existem outras próvas que são consideradas de iniciação nas certificações, entre elas a mais conhecida a AZ-900 que valida os conhecimentos gerais sobre Cloud e como adiministrar (de forma básica) uma cloud na Azure.

      +

      Por serem avalizações de iniciação, elas não são pré-requisito para nenhuma outra certificação, mas são legais para ter uma base de como funcionam as certificações em si. A prova em sí, é relativamente fácil, principalmente para quem já trabalha de alguma forma com dados na Azure. Se você não trabalha ativamente ainda, não se preocupe, pois, como falei, a prova é bem simples e visa dar uma inicialização em quem está buscando entrar na carreira.

      +

      Se você não tem vivência (ou mesmo se você tiver, mas quer reforçar o conhecimento) existem algumas formas de aprender o conteúdo da prova. Eu pessoalmente só utilizei o learning path que a Microsoft libera gratuitamente na sua plataforma e o mesmo foi suficiente para passar, mas existem cursos preparatórios na Udemy e até mesmo alguns livros na Amazon (não localizei sobre a DP-900 especificamente, mas existem outros que possuem abordagem aproximada). Abaixo deixo alguns links para você seguir e ler mais sobre a prova.

      +

      Detalhes sobre a certificação e learning path (mais a baixo na página)

      +

      Detalhamento sobre a certifição

      +

      Distribuição da prova

      +
          Skills measured
      +    The content of this exam will be updated on January 27, 2021. Please download the exam skills outline below to see what will be changing.
      +    Describe core data concepts (15-20%)
      +    Describe how to work with relational data on Azure (25-30%)
      +    Describe how to work with non-relational data on Azure (25-30%)
      +    Describe an analytics workload on Azure (25-30%)
      +
      + +

      Bom, dito o básico sobre a certificação, vamos a alguns detalhes da prova. Mas antes ATENÇÃO!!!! Iste é o meu ponto de vista sobre a prova, a sua pode ser diferente em alguns aspectos e o que pareceu difícil para mim, pode ser extremamente fácil para você. Então ressalto que procure seguir o learning path que vai conseguir. Fiz a prova on-line (é claro) e foram 49 questões. Os tópicos estavam bem balanceados de acordo com a distribuição citada acima e na verdade, até estranhei a simplicidade com a qual as questões foram tratadas.

      +

      Os tópicos que mais caíram no meu caso (lembrando, muda de caso para caso) foram questões voltadas aos diferentes tipos de serviços voltados a dados que a Azure oferece focando desde processos de extração, transformação e carga de dados utilizando diferentes serviços. Caíram poucas questões sobre base de dados em si (seja os tipos, manutenção e funções) e o pouco que caiu, quem possui um conhecimento inicial em base de dados consegue se virar tranquilamente.

      +

      Bom, acho que é isto. Se você está pensando em fazer esta prova, só posso reforçar... Estude o learning path que deve ser o suficiente, mas se você conseguir alguma experiência ela será bem vinda.

      +
      + + +
      +
      +

      Traduções:

      + +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/drafts/my-azure-data-fundamentals-certification.html.gz b/pt/drafts/my-azure-data-fundamentals-certification.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..b19f461ce9c3f015dd1538476dda7d66173d03bc GIT binary patch literal 6229 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 literal 0 HcmV?d00001 diff --git a/pt/drafts/now_posting_on_grepora-en.html b/pt/drafts/now_posting_on_grepora-en.html new file mode 100644 index 000000000..48af4c5f4 --- /dev/null +++ b/pt/drafts/now_posting_on_grepora-en.html @@ -0,0 +1,406 @@ + + + + + + + + Now posting on Grepora - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Now posting on Grepora

      +
      + +
      +
      + +
      +

      A few weeks ago I started posting at Grepora blog. If you like or are looking for some Oracle related stuff, Grepora it's a good place to go and spend a time reading :). From time to time I'll be posting there, it doesn't mean that this blog will be closed or anything like that, but probably this one will be more focused on Front-end stuff, a few tricks with linux and a lil less with Java.

      +

      +
      + + +
      +
      +

      Traduções:

      +
        +
      +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/drafts/now_posting_on_grepora-en.html.gz b/pt/drafts/now_posting_on_grepora-en.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..23289a6a3fd380d8143ac53b031118b4e52eaa53 GIT binary patch literal 4061 zcmV<34BP7x+*5B|T?x;Q|C`$x%{0)E5!No;`bRdv3cr`0T5b zCue_o{glj97#waK;0Fn4Ktys8%Ev34FZ1-LZ&EjW;BsZO*-G5J+mHl%%O;e zY|^>pY#xh5b%-M(#UcQmb63qKF1zFov-Fp3!XvIY4J_%R)MC;R{#bIw&T$%n&^LPky!3KXM~DdLhU^}Ov84_CjtKib=e6^SndEEQ0P5hdUop%H+`41Q9gc!)Tt zi@3*IJ@PCOVfGe)_2&zXDG11vl@zNPOBn1`MO?vTq#+au8I52F*ikbsH7{h&vzbmH zB#`-^zy70L)&G~@_2fs^+Hjms11@LGJ;&t@L6TvA@W|?qtlr{c?LLZbm(bPEdmC5W~CRm z!K^}NJ5t*7Q4c-}u^7Y~F!90-064zz zXvl-b*0_n`r=V_!Pzk`=4b+2^ltI3nMI#z4zfmOai~Y)2OkH$nW3tzK5MNct zFbZ;5st2UL*P4P)y#U(q z!-D6x$ihm6O5IBTTkVf?3j!g zLhVgqld|NThki}CQ|es!iAW>Y0+-J-Wk|2GtbI(ZIh$T^Flh)^7QLiA zppcR`;=OmTH-ohUTptkLyLS(H@d7couEqp1FtHCW-@||S7n4J6^#GM?bQ+}00O-v} z7CLtdwv~`L1J(P2N3Lc+Gt%NMg>^v}?@|cF-l9ZQQ1@lXTu#Ym$fJU_y*)7Gts3k1 z!^J6g*_0-=0lj@nmFL9_`HY8H`p~GR*Q##8T)hGQZH0f|WQIA-;4~SFbat|-9bY0X zEi)*k(C3edOOuN_BPc(u3d>LEqJbI1sER!`^hU$c?pmgD(D@9in>F10Dl+{Dxiu^y=T*jcH(aey%d5;-a%#8t#zL|K<#8skdDW@wA3Ifzn% z4^(NUIot;n+~STgN6(w4N@DViK!P~uVIQ6vV^lmnX|lHWyB8SfvnC_S*V`3=)) zk;in_a@0Be8j}12o7RLu*U$P$hQ}hibI78bq9s*je>{!s9LB1$$N}VNm${MHU?oMl zjg|#&Z@Ku=72+50e+;TwZHSO!BJfAqZa&bp?@|yVrVdwN{4NwaI5z1l z%h9ubf4tKl_xtb_enJ|43PmuKsmC;NX1Z?0?p(-fWZ5QNhEY}Wm+NXIK7@bQYBnsl zyAHD~au@;Mh(%mb-`%;Mv@)@vhrMlx`xg5Z-COBZbl3JNy4UJaAP3O`h5>|hV40ERjkp^|!HQzw8kS$&~c02bzxi3OG^RiTz#tlt{!2SH4EJN-xh3R~$z37$d zK%t3NiS;iggtR9Tzq4%s>aH?CJw_vOk~EyYMo(2qS z5t#bs$A$$FiM2k7LAOBR~YqJYs)a%IQ zsxJ`YWcm)Aer;)-zIKP*k2S>*cg5;dJS;Qj${rLPmlQIXOyBy^-t~3|yY9n1Z~D+3 zxl`xC&R*Z$*&RLHqYfRh{ugpGc+_7-o>c|tk013{26ZCdGUm`Y_b-M(8wL5k(G-gl zjdglFNqia=XSBDfO)cq9R_2}1NV|-Uosv0&)BNBEXs*o4_xwr~P+c|)M@yuwF1ntQ zt*Ojp-V-W{v{C*P&{*p31n4~k-(V$L7&=!gJ4t1+s0YWo;;k11P}NmyITFuw39zry8`T$ zDT=z&Is)H-R|p{T-;}FwUXoKi@vgF_ga~dLZO?Gdbr{N8az#e^OJs=&!y_5I5}UZq+vc>D`(hfz$738XsZ|PtK1nNe*w6H;I)jecGxXKVN_W18tL+g23#%LNIy%2qv@tZvS>z$%SalMRHh&PmO$}Y zav@m=U*?f+y}Oi9-KhHT&kuhWzYI$>rp}C65%;)-eK0UyD^m`h8KAP#$OXkXqDa&m zGIEWByaF8L52q)u@azDYNmvNxgKTRY*gE=Un9%!N(+W<`0w$LJ&YDumT>TDcbkm@f zi^qZZK4n@^r5&bh}~;L3B{ zIp@qg33cYsCy2VLo00> zv95bkIagmkdP1o7TLP6UB)MFz(Xgh*))Q`QvRvafL_NwYux21i3-$Q4MJw4&&Pd?p z5+F7b`n)y4v)lUVbB+(3L5jzx@Fwu{dnISt(DiO@teoG%rc0-5ZRZA5X4smDe6B}s zP9u;wO?r6X&p>h6Rp#h6NG(t{5&JS9t2qh7_%f5rzkOy|<(Z626}6~qIRV%Au^no~ zAdyjjZ};JFv^N?&7>srwjqo1uB66xbGNwNG<6(Yv7slQETqnyD^{D+$+SHZPMSjll zPTwxdTaU!DGLn`=BW=$$C^;&w0+(Q`he>!wq}wC;73He7E@?u}efm9_WFJ5MMBcou zUK7Ljy*QP#%{Se1$<&eKh%{2&ZPNYj$a>V@9rhoMtYP=<)|z=Lq0R-K_2BPRt$=P8 zSqjxnTES$Vo-(G{Izo9L@0r+-!DklxWU~e$_XzbJA_R)@{Q|?_>js zC<JpvY|!u{rq)Y<6=Cq`4e}xaM&m_mW91TJpUm z!N1-S@ygj^c@k9wJY%SKP}FdRp@iKg9SMkzBp$e~807j8yWI}o5b9c>*9V<)PV))9 zDSsn(v2F64;jJP@^0S)_bDJ*j1~+ck$BP&4rg7|pX3>E8s~3OFZU|we8$im#AV+gl zWu<)RvA=$$lMJk~QfbiTh1i<^$!)hzBVD|v+u+?w zMpkBYa7L%*nFtFcyV=4SwKrNh>(X4~R=X)neX(psnC*l$@ppY`yx*u>?17C}xAlYm PedzxJ775B + + + + + + + businesscard - Sipmann + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/drafts/pages/businesscard-en.html.gz b/pt/drafts/pages/businesscard-en.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..9b20e3559b2b86472553fdcb1f94ab33761e23bd GIT binary patch literal 3090 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 + + + + + + + Services - Sipmann + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/drafts/pages/services-en.html.gz b/pt/drafts/pages/services-en.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..4781f8e19c07e3c90b36dfa3b32c1bf32141bd3b GIT binary patch literal 3090 zcmV+t4DItDiwFP!000021I-%ScH1`c+5QTY-LB-;Bz1A>SeBI9xwSpH)^4{wIXONM z2~mhaf&oCwN}G?_vk&_r{jnVYq(oAbYjvAl+lhI>%wX;_066^Y(aVSDzr1>kW-4am z-J!l9hLdRIq{7-uK{AXs5({2_{`c zF(^m+FgLv-24Ri#I)y^~Dd<*u5$6#jIHl6)0BAgz;+V3<=m&84IbLicS(7G(zZ{1S z!V-W3LDQvJ#e`C_d^#5=m@U9%%%sf(!$i73bV^h(yFDdM#7b-!UQwR#aIwF9nsrO} zz0!TZbbnB~zlVNZKIk8u8zf6L=>j#z;CxxA2o7G`hg5k zw_hIw;}Ca7Xf#tW>>c#(-#hFc^p2`fb1p)6A_%?&-t@(VcxnKd3!D}Z`b8Ba;Eam_ z`n=!oR|h5lN?@d$UL(mF4bkU85H!KK0*5q{19VUpq@+}D0zpc|1&yPcawj;rj0De; z&`micNMoFPoiC0zK?#x)th531+l`P`xdFc-q6*`GS%Sh!;b5l2dw{0&nuNz+`W5J< z89JS+bj97u>1=LB>r%$}+LpNia_3}nNx`KlV=lhJlwqi0jdXW*ycx{R^!z|@XJ<#t zGG%=3UJnq?6hDTSAK^dzOVQYPJwW9aov@6Q0K9qM)ma{cZwZuIP!kt4361#HNsG4_ z<^@~4%cP>y#gb6L-8V4_DMsy>CWUB6N8reNHPJth7iTmi6D(>2CVZAA&#OQBjK;cG zz)8)nRojBQPP_VdBmBoEH_Um4q)AAEa1x@nNqj=OMrY7_=$t=5Ar_Z)LA3siDcnfl zMT0OUrz&EqH|_WOhc^n9gU)Br9NZwy|3s&Mz;2C;S<~!!LMRl_4Z2~MY&MN4Abws! zhQ94BcZa%$pnzcsC9b0OqRNK!sx+>6S}tt~E)Qxg!9|)^din2Cm<)YfQwF{n>km3S zlK9S;B-@fjRb&5g8|jQwRheW6J=#_7BtCda(c^2+g0#1qe3c6I1LQv<9Aq33TCBXP z_j*wJbouTam;FmSUkG1(&Px(>*X%tS-%pkl=G?T#fU!sbE2Pgk-l@1fwK@ zPB@5$BPVBM>2o@g%d^e8#Rx!&g=?29%QYGZ*&VM})-nqgub8LiUg`LpK)p($p`VtW zqNK%~+ZtlYS2oBk^Nd@lpr79{oJte>I04%#;tK5&j?u<4PcKbj1_#EU>UxEow6b5_ zl7ee&@NF99i&HEphBP!GjFE7%FoQruk%$YrTJNp<$!1>A<~C!c3E`ngi@MLz52n;rmm>ARgODo~A?Jo1l4IN=RpcTpeEcC3#I9M3 zd8;jcLoznR|R_q{qdGEeGe#iRUBB=W!GEE z^GxI1Re|D#e9yKN==tL8^|QMwP(sv};&?9}pWjt!Qa*>J%?t{}mO{PKh-Vt{&Wg5B zGoEZKmO;9!BK;Xd-Dw*^ZqOTaQ2Do&>h&{pW)SbHXo_>TZM8kuIJXgK=x6%mCGSW- zMVBauUhwD*H}x0yiB-z4^acH3-jTnqTfDt3{g@|IL9d!bt|?Z)pj22W3F{#>bL$zh zp_G6u`E_|GNFZA379hZ$xtB&FHWoo0zy#9&6%ViW72EzorXw(}zazg{X02=7~vzITB;wEtj5`+6_u?-Eqlm2OhFmY~pg(T;K z5UYIWPOv1Qc?Ud(8QUnuDdX=mVysj%%_<2ZO%1~2EqEg!H= zU9OP%9)7QTSbeYepl~H^+sjS6Czbt{)$NpXwRsP&vO$~c)$R9cX56@Or8ik_vDa9y z@(R2em@-Ozezw6X_M9}~dg~ULO}IHU5JYHuRd;D~dXNk+RkRcuL^l@)gLdKk-=uZ5Le%YVS3i6lo?S3@nB`$n^QE7YG6k_G3o$Q@dqF zYwfKcT1D8?Y5?3;O%bg|U~9t>QX(Ub0AOAiZnvz3TWD0`3d+1SZYsFqdh7QAYL&i^ zXrY09wz$8kcFhly&CJ6Ef zwIlcoQtqJ*{=8E-azkM0QfULO!OjwPA2|{Tok&1 + + + + + + + Serviços - Sipmann + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/drafts/pages/servicos.html.gz b/pt/drafts/pages/servicos.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..1563f1b8589c8f45d0b0ee2ab7b34f0afa6f7271 GIT binary patch literal 3091 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 + + + + + + + Java - Files.readAllBytes throws OutOfMemory - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Java - Files.readAllBytes throws OutOfMemory

      +
      + +
      +
      + +
      +

      When you need to interact with files, there's the possibility to read all bytes from the file with Files.readAllBytes. But be aware of the kinds of files your application will deal with because the Java API files have a limit for the buffer that is defined as Integer.MAX_VALUE as you can see above or at the OpenJDK sources.

      +
      public static byte[] readAllBytes(Path path) throws IOException {
      +    try (FileChannel fc = FileChannel.open(path)) {
      +        long size = fc.size();
      +        if (size > (long)Integer.MAX_VALUE)
      +            throw new OutOfMemoryError("Required array size too large");
      +
      +        byte[] arr = new byte[(int)size];
      +        ByteBuffer bb = ByteBuffer.wrap(arr);
      +        while (bb.hasRemaining()) {
      +            if (fc.read(bb) < 0) {
      +                // truncated
      +                break;
      +            }
      +        }
      +
      +        int nread = bb.position();
      +        return (nread == size) ? arr : Arrays.copyOf(arr, nread);
      +    }
      +}
      +
      +

      With that in mind, check if isn't better read chunks of bytes e work with that slice in exchange of loading the whole file into the memory ;). Above a simple example of how you can read chunks of bytes from the file.

      +
      byte[] buffer = new byte[1024];
      +FileInputStream in = new FileInputStream(file);
      +int rc = in.read(buffer);
      +while (rc != -1)
      +{
      +    //crazy stuff here with buffer
      +    rc = in.read(buffer);
      +}
      +
      +

      +
      + + +
      +
      +

      Traduções:

      +
        +
      +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/drafts/reading-files-java-readAllBytes-outofmemory-en.html.gz b/pt/drafts/reading-files-java-readAllBytes-outofmemory-en.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..c88bcf611e7f38dea2d4a0e200f4b6fbbbc6ee2a GIT binary patch literal 5102 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 + + + + + + + Scaffolding a React app with Parcel and Yeoman - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      + + +
      +

      Since Parcel JS arrived, I've been using it a lot as an awesome alternative for WebPack. Webpack isn't bad but IMO it's too complex for the job and parcel do the same (at least the basic) with almost zero configuration. But if you need to create many apps (like a react app) over and over again, it get's a lil boring following the basic steps.

      +
      npm init -y
      +npm install --save react
      +npm install --save react-dom
      +npm install --save-dev parcel-bundler
      +npm install --save-dev babel-preset-env
      +npm install --save-dev babel-preset-react
      +
      +#create .babelrc file
      +#create html, css, jsx files
      +
      +parcel index.html
      +
      +

      It's not a hard job, a simple shell script do the job, but what if you need some IFs when creating the app, or even change a few things at the package.json? A shell script still does the job, but come on... There is a better way. Yeoman is here for you. I've already talked about it on another post (Portuguese post).

      +

      Straight to the point, I've released a Yeoman generator to get the things a lil quicker. The name is generator-parcel-react and it still lacks a few things that I will deal with soon. It's pretty simple to use it.

      +
      #First time only
      +npm install -g yo
      +npm install -g generator-parcel-react
      +
      +#every time you create a new app
      +yo parcel-react
      +
      +

      And that's it. Right now you can scaffold and app with React, SASS and React Router. Hope you like it and feel free to ask new features.

      +

      +
      + + +
      +
      +

      Traduções:

      +
        +
      +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/drafts/scaffolding_react_app_with_parcel_yeoman-en.html.gz b/pt/drafts/scaffolding_react_app_with_parcel_yeoman-en.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..2459eeec445335ed2def97fbd10ff3740464ad9b GIT binary patch literal 4954 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 + + + + + + + Scheduling blog posts with Powershell and Pelican - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Scheduling blog posts with Powershell and Pelican

      +
      + +
      +
      + +
      +

      Hy folks, first time posting here on dev.to :). Recently I've been migrating some of my scripts from bash to PowerShell and I thought that would be a good time to code an automation script to publish posts on my personal blog. I host my blog with Github Pages and I use Pelican as a static site generator. The main problem I have with this toolkit, is the lack of scheduling posts. For those who are new to Pelican, the post system is similar to dev.to, we write the posts using Markdown and we have a Status tag to tell when the post is a draft or not.

      +

      The main idea of my script is, run through the Markdown files an check those who have Draft as status. Once I found any post, I start getting some info like the Date and the Slug. The Date part is a little tricky because we need to find the line, split the text and then parse it to do date comparisons. If the post date is lower then the current timespan I replace the Status: Draft tag and save the file. After that all we have to do is commit to git and let it go.

      +
      $postsPath = "E:\projetos\sipmann.github.io\content\";
      +$files = Get-ChildItem $postsPath -File -Filter *.md
      +
      +<# Get the current datetime so we can compare with the psot date #>
      +$now = Get-Date
      +
      +<# Set the current location, with this we can work with the git commands #>
      +Set-Location $postsPath
      +
      +foreach($file in $files) {
      +
      +    <# Get's only posts with draft status #>
      +    $isDraft = Get-Content ($postsPath + $file) | Where-Object { $_ -ccontains "Status: Draft" }
      +
      +    if ($isDraft) {
      +
      +        <# First we find the line with the date, then we get only the datetime and then parse it #>
      +        $pubDate = [datetime]::parseexact(((Get-Content ($postsPath + $file) | Where-Object { $_ -Match "^Date:*" }) -split '\s+', 2)[1], 'yyyy-MM-dd HH:mm', $null)
      +
      +        <# TODO: Maybe call google and bing api to submit a new url #>
      +        $slug = ((Get-Content ($postsPath + $file) | Where-Object { $_ -Match "^Slug:*" }) -split '\s+', 2)[1]
      +
      +        if ($now -ge $pubDate) {
      +
      +            <# Sets the content without the Draft status #>
      +            ((Get-Content ($postsPath + $file)) -replace 'Status: Draft', '') | Set-Content ($postsPath + $file)
      +
      +            git add .
      +            git commit -m ("New scheduled post: " + $file)
      +            git push origin master
      +        }
      +    }
      +}
      +
      + +

      Hope you find the script useful, and if you are interested in the other scripts I'm making with PowerShell, take a look at my github repo, still lacks many of my scripts, but it's there where I'll keep them updated. See ya.

      +
      + + +
      +
      +

      Traduções:

      +
        +
      +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/drafts/schedule-blog-post-with-powershell-and-pelican-en.html.gz b/pt/drafts/schedule-blog-post-with-powershell-and-pelican-en.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..42c37c48829891fd549de43087ff368b28c505ce GIT binary patch literal 5611 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 + + + + + + + Using git hooks to easy your life - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Using git hooks to easy your life

      +
      + +
      +
      + +
      +

      Hey folks, it's been a time since my last post. In the meantime, I moved to another state, changed job, and started learning new kinds of stuff. Today I would like to share one thing that I usually do with my small git projects. Git has many cool features, git hooks were one of them. I'll talk about the pre-commit hook today.

      +

      Let's say that, for some reason, you don't have a CI tool/server running after every commit and you want to enforce that every developer runs the tests before every commit? Git pre-commit to the rescue. You can code the hooks with shell, ruby, python, and I could be wrong, but even PHP would work. pre-commit is a client-side hook (we have server side too) and he's located inside the .git/hooks folder. Let's jump to the code... Create a file called 'pre-commit' inside that folder with the following code.

      +
      #!/bin/bash
      +npm test # assuming you're using it inside a nodeJS project
      +
      +

      Don't forget to make the script executable!! Now break your test and try to commit. That's easy but can save you from breaking the tests at the main CI/Travis/Codeship/etc and being notified by email :). Why not even validate the lint of your project or check if the coverage doesn't fall? Does your team/company have a patter for commit messages? No problem, there is a hook called commit-msg that you can use to validate your message.

      +

      +
      + + +
      +
      +

      Traduções:

      +
        +
      +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/drafts/using_git_hooks_easy_your_life-en.html.gz b/pt/drafts/using_git_hooks_easy_your_life-en.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..7d8027a0b18d4894693baa3254a777ec080976f3 GIT binary patch literal 5152 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 O(*Fm?UzIbQQ~&_jJ;+%A literal 0 HcmV?d00001 diff --git a/pt/editando-o-admin-do-django.html b/pt/editando-o-admin-do-django.html new file mode 100644 index 000000000..2cb905e28 --- /dev/null +++ b/pt/editando-o-admin-do-django.html @@ -0,0 +1,574 @@ + + + + + + + + Editando o Admin do Django - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Editando o Admin do Django

      +
      + +
      +
      + +
      +

      Este artigo foi re-postado no grupo PythonClub. Vamos falar um pouco sobre como customizar o admin do Django. Primeiramente porque? A resposta é bem simples, quero mostrar algo para o usuário sem que ele precise entrar nas apps e fazer alguma consulta para então tomar alguma ação. Alguns exêmplos para isto seriam:

      +
      +
        +
      • Exibir as vendas do mês em forma de gráfico por região do país
      • +
      • Exibir os últimos comentários adicionados
      • +
      • Exibir log dos ultimos usuários cadastrados
      • +
      +
      +

      O que faremos aqui será exibir os últimos comentários ainda não liberados de um sistema de blog. Vale lembrar que aqui não discutiremos sobre os primeiros passos da aplicação. Para seguirmos adiante, vamos assumir que já temos um projeto básico com uma estrutura simples, abaixo a estrutura inicial do nosso projeto.

      +
      ../blog/
      +├── core
      +│   ├── __init__.py
      +│   ├── admin.py
      +│   ├── models.py
      +│   ├── tests.py
      +│   └── views.py
      +├── blog
      +│   ├── __init__.py
      +│   ├── settings.py
      +│   ├── urls.py
      +│   └── wsgi.py
      +└── manage.py
      +
      +

      Para iniciarmos, precisamos da nossa tabela de comentários, vamos usar a mais simples e básica o possível.

      + ++++ + + + + + + + + + + + + + + + + + + + +
      CampoTipo
      nomeVarchar(30)
      textoText
      liberadoBoolean
      dataDate
      +

      Vamos seguir adiante e alterar a página inicial do admin para listar os últimos comentários de um simples sistema de blog. Para comerçar a editar o admin, precisamos inicialmente copiar o template que desejamos para a pasta uma pasta admin dentro ta pasta de templates do nosso projeto. Isto porque o Admin, não passa de uma app como outra qualquer, portanto o sistema de herança vai funcionar aqui, carregamento prioritariamente o seu template. Você pode conseguir o template que desejar (no nosso caso o index.html) dentro do projeto do Django mesmo, no meu caso "C:\Django-1.6.3\django\contrib\admin\templates\admin".

      +
      ../blog/
      +├── templates
      +│   ├── admin
      +│   │   └── index.html
      +├── core
      +
      +

      Tire um tempo e brinque um pouco com este template e veja o que acontece se você alterar algumas coisa. Para adicionarmos a nossa listagem, vamos adicionar um painel lateral, para tal vamos adicionar o código abaixo antes do fechamento da ultima tag div. Nele podemos ver uma chamada para uma template_tag, portanto precisamos carrega-la no topo do template.

      +
      {% load comentarios_tag %}
      +...
      +...
      +...
      +<div class="module" id="ultimos-comentarios">
      +    <h2>Ultimos Comentários</h2>
      +    <h3>Liberar</h3>
      +            {% comentarios_n_liberados %}
      +</div>
      +
      +

      Esta template trata-se da responsável por fazer a consulta na base de dados e renderizar a nossa lista, portanto ela é uma 'inclusion tag'. Se você não esta familiarizado com 'template tags', talvez queira dar uma olhada na documentação do django.

      +

      Vamos então criar nossa template tag 'comentarios_n_liberados'. Primeiro devemos criar uma pasta chamada templatetags, dentro da nossa app core. Dentro ta pasta vamos inicializar um pacote python e criar o arquivo comentarios_tag.py. Nele precisamos declarar nosso metodo que deve se chamar 'comentarios_n_liberados' e nele fazer uma simples consulta ao banco buscando os comentários não liberados e por fim registrar a tag apontando para o template que será renderizado. Abaixo o código mais explicado.

      +
      +
      Recomendações
      + Livro Pense em Python na Amazon + Livro Curso Intensivo de Python na Amazon +
      from django import template
      +from core import models
      +
      +#Carrega o registro de template tags
      +register = template.Library()
      +
      +#Registra o metodo a seguir como uma inclusion_tag indicando o template a ser renderizad
      +@register.inclusion_tag('comentarios_n_liberados.html')
      +def comentarios_n_liberados():
      +    comentarios = models.comentario.objects.filter(liberado=False).order_by('data')[0:5]
      +    return { 'comentarios' : comentarios }
      +
      +

      Abaixo o html do nosso template a ser renderizado, este deve estar dentro da pasta templates da nossa app core.

      +
      {% if not comentarios %}
      +    <p>Nenhum comentário novo</p>
      +{% else %}
      +    <ul>
      +            {% for c in comentarios %}
      +            <li class="addlink">
      +                    <a href="{{ c.id }}">{{ c.texto|truncatechars:30 }}</a>
      +            </li>
      +            {% endfor %}
      +    </ul>
      +{% endif %}
      +
      +

      Com tudo isto feito, basta subir o seu servidor e ver o resultado final, que pode ser visto na imagem abaixo.

      +Resultado final +

      Lembrando que aqui apenas mostrei como modificar o index do admin, para apenas listar dados do banco, mas você pode ir muito mais além. Abaixo fica a estrutura de diretórios final e um link para download do projeto funcionando.

      +
      ../blog/
      +├── core
      +│   ├── templates
      +│   │   └── comentarios_n_liberados.html
      +│   ├── templatetag
      +│   │   └── comentarios_tag.py
      +│   ├── __init__.py
      +│   ├── admin.py
      +│   ├── models.py
      +│   ├── tests.py
      +│   └── views.py
      +├── blog
      +│   ├── __init__.py
      +│   ├── settings.py
      +│   ├── urls.py
      +│   └── wsgi.py
      +├── templates
      +│   ├── admin
      +│   │   └── index.html
      +└── manage.py
      +
      +

      Espero que tenham gostado, criticas/sugestões são bem-vindas. Fontes do Projeto

      +

      +
      + + +
      +
      +

      Traduções:

      +
        +
      +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/editando-o-admin-do-django.html.gz b/pt/editando-o-admin-do-django.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..cd97b909e7aa5e3ef7a6bea551b88cab7f625ebe GIT binary patch literal 7052 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

      t&$4h8B*GdtxB02#=vDI!RVT-4VfH&jAMe z&B=@B_=pV>gHKN2>m42=7+7ffG(^xkCtShE89+p4?+m<}X3=keBVM?yqvC<>y^ciu z8f-x{nGvLmZg|v0=vOVW_YkIDpf47E8VZ%LAzwdJzA*7H%Gp>7+frw^a?ZqfnQ)Hr z42vbk($&wYK$;xkaTOPjLFm5kFqo?d+GXN(@sGBnLF;k7d=9!gF2O$Fb*y^^cDgUZ#urYV^7# zG1fkug+-PX9$71U`4F@jkRql&JE@V%!X+d+RubToP~|7BVt8N-A|BvvLBpQJ&()pk zrqv#UyZM;PhhV9pRU!E`wXBaLpg0PectT8o;Pea0?#Dni0a=CY)3~iECX^xAj#?{s^2d!4;bZ~vf&&kN68v$!ICJ^_2&jb8+Y zb}Qch(QzWRw$AY!pc>8NU6FHov@k9`GQ-d)Wk@4#UsG3hl)NyUc3a$Z!o4IakHjw@ z7o|1h0Xv)U*KDBw_`@IAs~?N6PvY-QKT^}JSDR-_gh!_7MQ*sc!#2M=G7j4N-S$Dx z=x+YFy<}V%aPtCphVXpaLf5S%N?}{u6+8HdGteH`ySE6}}!$!u10$^sw}MpKazIhTdd- z{axGo&29E8wpsaFbPHxWR~0BCD^#8nuvTI=s0Z^?K6wtVF=NQ9_K%A&RMUs$;fBvW zOEjemfk^m3jA3DIP52H|B`&_(-pc*5SQ96GeB@e-I*GR=NilC}owdCYw;BFV80g~i z)&!4Ao~vzEqtCYzMXp#_=qfei0Ej*ws4X)Bg%x!l(u}W-2fy9zcAvf6J?`X|R0>omGQG}B`@qkrh8V2!^<_5wv;LkI;4GfSVIAzBZXVD z8;i$bmbuuS`u-KJuBP{Lr?XK!9aG-^$@4!KyR=&DYXJg*+#=q)*~l-`?8)KE<@#X$ z#M;Vj`=DA>Kz{h-dxl{&!%WwPkVim_W`>2C;-&|a +Sipmannhttps://www.sipmann.com/pt/2020-12-21T13:30:00-03:00Monitorando restarts do MySQL com PowerShell2020-12-21T13:30:00-03:002020-12-21T13:30:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-21:/pt/monitoring-mysql-restarts-with-powershell.html

      <p>Bom, chegou a hora para mais um script PowerShell. Se você ainda não viu os outros, de uma olhada no link abaixo.</p> +<ul> +<li><a href="https://www.sipmann.com/pt/monitoring-mysql-replication-with-powershell.html">Monitorando status de replicação do MySQL com PowerShell</a></li> +</ul> +<p>Este aqui é um script bem simples, mas novamente, se seu cliente não possui um servidor Zabbix ou não permite …</p><p>Bom, chegou a hora para mais um script PowerShell. Se você ainda não viu os outros, de uma olhada no link abaixo.</p> +<ul> +<li><a href="https://www.sipmann.com/pt/monitoring-mysql-replication-with-powershell.html">Monitorando status de replicação do MySQL com PowerShell</a></li> +</ul> +<p>Este aqui é um script bem simples, mas novamente, se seu cliente não possui um servidor Zabbix ou não permite que você configure um para realizar este monitoramento, um conjunto de scripts pode ser bem útil. Primeiramente nós executamos uma query báscia <code>SHOW GLOBAL STATUS LIKE 'Uptime'</code>, com ela nós conseguimos capturar exatamente o que nós estamos procurando.</p> +<p>Se por alguma razão o comando falhar (verificamos atravez da variábel global <code>$lastExitCode</code>), nós mandamos um e-mail lhe avisando sobre o problema ocorrido.</p> +<p>E então, nós chegamos à parte onde fazemos o parse do valor obtido, esta parte é bem similar ao parse que codificamos no primeiro post sobre monitoramento utilizando PowerShell. Nós basicamentes procuramos pela linha contendo <code>Value</code>, separamos por espaço e então parseamos a segunda posição em um inteiro. Então tudo que precisamos fazer é verificar se o valor parseado é menor que o nosso threshold, se for menor, nós mandamos um e-mail.</p> +<div class="highlight"><pre><span></span><code><span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;maurio[at]sipmann.com&#39;</span> +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio[at]sipmann.com&#39;</span> +<span class="nv">$MysqlHost</span> <span class="p">=</span> <span class="s1">&#39;127.0.0.1&#39;</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;123&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-h</span> <span class="nv">$MysqlHost</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s2">&quot;SHOW GLOBAL STATUS LIKE &#39;Uptime&#39; \G&quot;</span><span class="p">)</span> + +<span class="cm">&lt;# Unable to execute the sql Command #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$lastExitCode</span> <span class="o">-eq</span> <span class="n">1</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Connection problem&#39;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;Connection problem on host ${MysqlHost}&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> + <span class="n">exit</span> +<span class="p">}</span> + +<span class="nv">$UpTime</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Value:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="cm">&lt;# If the uptime is lower then 20 minutes #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$UpTime</span> <span class="o">-lt</span> <span class="n">1200</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s2">&quot;MySQL Restarted&quot;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;MySQL host ${MysqlHost} restarted less than 20 minutes ago&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> +</code></pre></div> + +<p>Este script (e os outros que eu utilizo) estão disponíveis no meu GitHub <a href="https://github.com/sipmann/PowerShellScripts">aqui</a>. Tenha em mente que os scripts localizados no GitHub, são um pouco diferentes do que exibido aqui. Espero que tenha achado útil.</p>Trocando a senha de um usuário do MySQL sem downtime da aplicação2020-12-09T13:40:00-03:002020-12-09T13:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-09:/pt/mysql-dual-password-functionality.html<p>Você deseja trocar a senha de um usuário do MySQL que está sendo utilizado por uma aplicação e não sofrer nenhum downtime? Bom, a versão 8.0.14 do MySQL foi liberada com uma feature chamada <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, com esta feature você pode alterar a senha de um usuário …</p><p>Você deseja trocar a senha de um usuário do MySQL que está sendo utilizado por uma aplicação e não sofrer nenhum downtime? Bom, a versão 8.0.14 do MySQL foi liberada com uma feature chamada <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, com esta feature você pode alterar a senha de um usuário mantendo a anterior ainda funcionando como uma forma de "backup". Desta forma, você ainda conseguirá autenticar com o usuário utilizando tanto a nova senha, quanto a anterior. Com isto, o seu processo de troca de senha fica algo como:</p> +<p>1) Troque a senha mantendo a anterior;</p> +<p>2) Faça o Deploy da nova configuração na sua aplicação/cluster;</p> +<p>3) Descarte a senha anterior.</p> +<p>Para alterar a senha mantendo a anterior, você deve rodar o seguinte comando:</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">IDENTIFIED</span> <span class="k">BY</span> <span class="s1">&#39;new_password&#39;</span> <span class="n">RETAIN</span> <span class="n">CURRENT</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>Para descartar a senha antiga, rode o seguinte:</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">DISCARD</span> <span class="n">OLD</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>E pronto. Espero que isto lhe ajude a evitar downtimes e dores de cabeça :)</p>Apache Nifi JSON to SQL removendo underline2020-12-02T14:00:00-03:002020-12-02T14:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-02:/pt/apache-nifi-json-to-sql-replacing-underscore.html<p>Recentemente eu estava desenvolvendo alguns processos de ETL com o Apache NiFi. Mas após alguns minutos desenhando o meu fluxo, eu vi um comportamento estranho do componente ConvertJSONToSQL, que estava substituindo os underline ('_') do nome de um campo utilizado na condição da SQL (eu estava preparando um UPDATE). Aquilo …</p><p>Recentemente eu estava desenvolvendo alguns processos de ETL com o Apache NiFi. Mas após alguns minutos desenhando o meu fluxo, eu vi um comportamento estranho do componente ConvertJSONToSQL, que estava substituindo os underline ('_') do nome de um campo utilizado na condição da SQL (eu estava preparando um UPDATE). Aquilo estava estranho, uma vez que na definição do SET da SQL, o nome do campo permanecia inalterado. Depois de algumas pesquisas, achei uma doc que a propriedade (veja abaixo) <code>Translate Field Names</code> era a responsável por este comportamento estranho.</p> +<p><img alt="Apache NiFi JSONToSQL config" src="/images/apache_nifi_jsontosql.png"></p> +<p>Antes de definir a propriedade como <strong>FALSE</strong>, esteja ciente que as propriedades do seu JSON devem ser exatamente iguais aos nomes dos campos da sua tabela.</p>Bloqueando um usuário do SQL Server baseado em uma tabela de horários2020-11-14T07:00:00-03:002020-11-14T07:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-11-14:/pt/blocking-user-on-sql-server-based-on-schedule.html<p>Ok, algum tempo atrás, eu postei sobre como você pode impor limites às conexões do SQL Server utilizando o <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. Mas, e se você não pode utilizar ele? Você sempre pode bloquear logins usando uma trigger, mas eu não gosto da ideia de ter um select rodando a cada …</p><p>Ok, algum tempo atrás, eu postei sobre como você pode impor limites às conexões do SQL Server utilizando o <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. Mas, e se você não pode utilizar ele? Você sempre pode bloquear logins usando uma trigger, mas eu não gosto da ideia de ter um select rodando a cada login. Então, eu cheguei a esta solução, utilizando uma stored procedure, uma tabela e o Agent.</p> +<p>A ideia principal é armazenar o horário em que um usuário deve ser bloqueado pelo Agent. Abaixo você pode ver a criação da tabela:</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">Id</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/* horário de inicio do bloqueio */</span><span class="w"></span> +<span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/*horário de termino */</span><span class="w"></span> +<span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="k">DEFAULT</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="cm">/* 0 = desbloqueado, 1 = bloqueado */</span><span class="w"></span> +<span class="w"> </span><span class="k">PRIMARY</span><span class="w"> </span><span class="k">KEY</span><span class="w"> </span><span class="p">(</span><span class="n">Id</span><span class="p">)</span><span class="w"></span> +<span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="cm">/* regra para Não bloquear o usuário SA */</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_users</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">LoginName</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;sa&#39;</span><span class="p">));</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_hora_final_maior</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="n">HrInicio</span><span class="p">);</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_status_bloqueio</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">Bloqueado</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">));</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="k">SEQUENCE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">seq_HorariosBloqueio</span><span class="w"> </span><span class="k">START</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">INCREMENT</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>Depois de criar a tabela, vamos verificar a procedure que vai fazer todo o trabalho de habilitar/desabilitar os usuários. Fique ciente que, nesta procedure, eu defini o nome do banco onde a tabela está armazenada. Você pode substituir o nome <code>DBATOOLS</code> pelo o nome da sua base.</p> +<div class="highlight"><pre><span></span><code><span class="k">IF</span><span class="w"> </span><span class="nf">OBJECT_ID</span><span class="p">(</span><span class="s1">&#39;dbo.sp_ValidarLogin&#39;</span><span class="p">)</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="k">NULL</span><span class="w"></span> +<span class="w"> </span><span class="k">EXEC</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;CREATE PROCEDURE dbo.sp_ValidarLogin AS RETURN 0;&#39;</span><span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="k">ALTER</span><span class="w"> </span><span class="k">PROC</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">sp_ValidarLogin</span><span class="w"></span> +<span class="k">AS</span><span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">);</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nf">CAST</span><span class="p">(</span><span class="nf">GETDATE</span><span class="p">()</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="cm">/* Bloqueia os que ainda não estiverem bloqueados de acordo com a hora atual */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">&#39; DISABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Bloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> + + +<span class="w"> </span><span class="cm">/* Libera quem estava bloqueado */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="s1">&#39; ENABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Unbloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="k">END</span><span class="p">;</span><span class="w"></span> +</code></pre></div> + +<p>Certo, então agora tudo que temos que fazer é definir o job no Agent para rodar a procedure de minuto em minuto. Novamente, a ideia principal é chamar a procedure quando um usuário deve ser bloqueado e quando deve ser desbloqueado.</p> +<div class="highlight"><pre><span></span><code><span class="err"> -- Vai bloquear o usuário protheus das 10 AM até 15 PM</span> +<span class="err"> INSERT INTO dbo.HorariosBloqueio (Id, LoginName, HrInicio, HrTermino) VALUES (NEXT VALUE FOR seq_HorariosBloqueio, &#39;protheus&#39;, &#39;10:00:00&#39;, &#39;15:00:00&#39;);</span> +</code></pre></div>Como definir as colunas no select utilizando Entity Framework2020-10-28T19:00:00-03:002020-10-28T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-28:/pt/select_specific_fields_with_efcore.html<p>Então, você utiliza Entity Framework Core e geralmente faz o seu selecto da seguinte forma, talvez você está retornando muitos dados.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Rodando a query acima, em uma base de testes você obtem o seguinte resultado, veja quantas …</p><p>Então, você utiliza Entity Framework Core e geralmente faz o seu selecto da seguinte forma, talvez você está retornando muitos dados.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Rodando a query acima, em uma base de testes você obtem o seguinte resultado, veja quantas colunas estão retornando da sua base de dados.</p> +<p><img alt="Print com todas as colunas" src="/images/ef_core_allcolumns.png"></p> +<p>No meu caso, eu só pretendo ter de volta as colunas Title, PublishedData e uma pequena descrição. Então para selecionar apenas estes campos, nós temos algumas opções. Na primeira, nós vamos definir os campos e retornar um objeto do tipo Dynamic. A segunda forma, é dar ao .NET o objeto a ser retornado, pode ser por exêmplo um DTO.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + + <span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="k">new</span> <span class="p">{</span><span class="n">p</span><span class="p">.</span><span class="n">ProductID</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitPrice</span><span class="p">})</span> + <span class="c1">//.Select(p =&gt; new ProductDTO {p.ProductID, p.ProductName, p.UnitsInStock, p.UnitPrice})</span> + + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p><img alt="Print com menos colunas e também menor quantidade de dados" src="/images/ef_core_less_columns.png"></p>Zabbix Running on Low Memory Mode2020-10-20T19:00:00-03:002020-10-20T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-20:/pt/zabbix-running-on-low-memory-mode.html<p>Olá pessoal! Trago hoje outro post sobre Zabbix. Este é sobre aumentar o cache do seu Zabbix Server. É perfeitamente comum (se você roda com as configurações padrões) receber avisos sobre <code>Zabbix value cache running on low memory mode</code> no seu dashboard ou arquivos de log.</p> +<p><img alt="Zabbix Dashboard alertando sobre problemas de memória" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache gráfico com 70% utilizado" src="/images/zabbix_cache_filling.png"></p> +<p>Para resolver, abra o …</p><p>Olá pessoal! Trago hoje outro post sobre Zabbix. Este é sobre aumentar o cache do seu Zabbix Server. É perfeitamente comum (se você roda com as configurações padrões) receber avisos sobre <code>Zabbix value cache running on low memory mode</code> no seu dashboard ou arquivos de log.</p> +<p><img alt="Zabbix Dashboard alertando sobre problemas de memória" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache gráfico com 70% utilizado" src="/images/zabbix_cache_filling.png"></p> +<p>Para resolver, abra o seu arquivo de configuração (<code>zabbix_server.conf</code>) e procure pela tag <em>CacheSize</em>. Descomente a linha e defina um valor maior que 8M (8M é o valor padrão). No meu caso, nós configuramos um cache de 100M. Depois da troca, reinicie o serviço para que o mesmo tome efeito.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: CacheSize</span> +<span class="c1"># Size of configuration cache, in bytes.</span> +<span class="c1"># Shared memory size for storing host, item and trigger data.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 128K-64G</span> +<span class="c1"># Default:</span> +<span class="na">CacheSize</span><span class="o">=</span><span class="s">100M #Descomente esta linha</span> +</code></pre></div> + +<p><img alt="Zabbix Dashboard resolved memory problem" src="/images/zabbix_low_memory_solved.png"></p> +<p>Até breve.</p>Monitorando status de replicação do MySQL com PowerShell2020-10-14T19:00:00-03:002020-10-14T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-14:/pt/monitoring-mysql-replication-with-powershell.html<p>Tenho migrado alguns scripts bash que tenho para PowerShell, e chegou a vez de migrar um script de monitoramento de replicação do MySQL. Fica como crédito o script original do <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. É um script bem simples onde eu verifico algumas tags resultantes do <code>SHOW SLAVE STATUS\G</code>, são elas. <code>Slave_IO_Running …</code></p><p>Tenho migrado alguns scripts bash que tenho para PowerShell, e chegou a vez de migrar um script de monitoramento de replicação do MySQL. Fica como crédito o script original do <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. É um script bem simples onde eu verifico algumas tags resultantes do <code>SHOW SLAVE STATUS\G</code>, são elas. <code>Slave_IO_Running</code>, <code>Slave_SQL_Running</code> e <code>Seconds_Behind_Master</code>. Ainda preciso verificar formas mais corretas de armazenar/carregar as variáveis como usuários e senha, se tiver alguma dica, fique à vontade para inclusive fazer um pull request (<a href="https://github.com/sipmann/PowerShellScripts">aqui</a>) no repositório onde vou armazenar alguns dos meus scripts.</p> +<div class="highlight"><pre><span></span><code><span class="cm">&lt;#</span> +<span class="cm"> Variables definition</span> +<span class="cm">#&gt;</span> +<span class="nv">$MaxSeconds</span> <span class="p">=</span> <span class="n">120</span> <span class="c"># Max seconds behind master allowed</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;&#39;</span> + +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> +<span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s1">&#39;SHOW SLAVE STATUS \G&#39;</span><span class="p">)</span> + +<span class="c">#Debug data</span> +<span class="c">#$data = Get-Content &#39;c:\temp\sampleresult.txt&#39;</span> + +<span class="cm">&lt;# Parse the data #&gt;</span> +<span class="nv">$IORunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_IO_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SQLRunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_SQL_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$LastErrNo</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Last_Errno&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SecondsBh</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Seconds_Behind_Master&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="k">If</span> <span class="p">(</span><span class="nv">$IORunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SQLRunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SecondsBh</span> <span class="o">-gt</span> <span class="nv">$MaxSeconds</span><span class="p">)</span> <span class="p">{</span> + <span class="nv">$MailBody</span> <span class="p">=</span> <span class="s1">&#39;&lt;h1&gt;Problema na replicação&lt;/h1&gt;&lt;br&gt;&#39;</span> + + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; IO Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$IORunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; SQL Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SQLRunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39;Seconds Behind: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SecondsBh</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; Last Err No: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$LastErrNo</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + + <span class="cm">&lt;# Send e-mail, maybe some telegram message here too #&gt;</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Problemas na replicação&#39;</span> <span class="n">-bodyAsHtml</span> <span class="nv">$MailBody</span> <span class="n">-Credential</span> <span class="p">(</span><span class="nb">Get-Credential</span><span class="p">)</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> <span class="k">Else</span> <span class="p">{</span> + <span class="nb">Write-Host</span> <span class="s2">&quot;Up and running&quot;</span> +<span class="p">}</span> +</code></pre></div>Microsoft Contra Covid2020-10-03T19:00:00-03:002020-10-03T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-03:/pt/microsoft-against-covid.html<p>Você teve seu trabalho afetado pela pandemia do covid? Bom, na última semana eu postei no <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> sobre um Voucher para certificação gratuita que a Microsoft estava distribuindo durante o evento Microsoft Ignite. Depois disto, eu fiquei sabendo que eles também estão entregando grandes discontos para quem teve o seu …</p><p>Você teve seu trabalho afetado pela pandemia do covid? Bom, na última semana eu postei no <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> sobre um Voucher para certificação gratuita que a Microsoft estava distribuindo durante o evento Microsoft Ignite. Depois disto, eu fiquei sabendo que eles também estão entregando grandes discontos para quem teve o seu trabalho afetado pela pandemia do covid. </p> +<p>Para saber se você pode receber este desconto, acesse <a href="https://docs.microsoft.com/en-us/learn/certifications/skillingoffer">https://docs.microsoft.com/en-us/learn/certifications/skillingoffer</a>.</p>O poder do PowerShell2020-09-21T19:00:00-03:002020-09-21T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-09-21:/pt/the-power-of-powershell.html<p>Como um usuário linux por muito tempo, eu automatizei algumas tarefas com scripts bash e fiquei longe do PowerShell... Voltei a utilizar Windows alguns anos atrás e ainda assim, não dei uma chance ao PS. Mas porque não? Eu fiz alguns scripts para automatizar algumas tarefas em um servidor Protheus …</p><p>Como um usuário linux por muito tempo, eu automatizei algumas tarefas com scripts bash e fiquei longe do PowerShell... Voltei a utilizar Windows alguns anos atrás e ainda assim, não dei uma chance ao PS. Mas porque não? Eu fiz alguns scripts para automatizar algumas tarefas em um servidor Protheus.</p> +<p>Eu acabei achando os scripts PS de fácil leitura e entendimento. Abaixo, nós temos um script para remover arquivos filtrando pela sua extensão (ou sem extensão alguma no caso do script em questão).</p> +<div class="highlight"><pre><span></span><code><span class="nb">Get-ChildItem</span> <span class="s2">&quot;C:\TOTVS\protheus_data\system&quot;</span> <span class="o">-File</span> <span class="n">-Filter</span> <span class="p">*.</span> <span class="p">|</span> <span class="nb">Move-Item</span> <span class="n">-Force</span> <span class="n">-Destination</span> <span class="p">{</span> + <span class="cm">&lt;# Diretório ao qual os arquivos vão ser movidos. Você pode utilizar formatos de data para nomear os diretórios #&gt;</span> + <span class="cm">&lt;# LastWriteTime é a propriedade do arquivo corrent #&gt;</span> + <span class="nv">$dir</span> <span class="p">=</span> <span class="s2">&quot;C:\bad_files\{0:yyyy\\MM\\dd}&quot;</span> <span class="o">-f</span> <span class="nv">$_</span><span class="p">.</span><span class="n">LastWriteTime</span> + <span class="nv">$null</span> <span class="p">=</span> <span class="n">mkdir</span> <span class="nv">$dir</span> <span class="n">-Force</span> + <span class="s2">&quot;$dir\</span><span class="p">$(</span><span class="nv">$_</span><span class="p">.</span><span class="n">Name</span><span class="p">)</span><span class="s2">&quot;</span> +<span class="p">}</span> +</code></pre></div> + +<p>Você já precisou remover arquivos baseado no conteúdo de outro arquivo? Abaixo um script onde eu leio um arquivo que contem os nomes de arquivos que eu desejo remover. </p> +<div class="highlight"><pre><span></span><code><span class="k">foreach</span><span class="p">(</span><span class="nv">$line</span> <span class="k">in</span> <span class="nb">Get-Content</span> <span class="p">.\</span><span class="n">Desktop</span><span class="p">\</span><span class="n">bad_files</span><span class="p">.</span><span class="n">txt</span><span class="p">)</span> <span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="nb">Test-Path</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">))</span> <span class="p">{</span> + <span class="nb">Remove-Item</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">)</span> + <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> + <span class="nb">echo </span><span class="nv">$line</span> <span class="p">+</span> <span class="s1">&#39; - File not found&#39;</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>E um script bonus para parar e iniciar serviços (se você gerencia um servidor Protheus, você sabe o porque eu faço isto).</p> +<div class="highlight"><pre><span></span><code><span class="nv">$servicesNames</span> <span class="p">=</span> <span class="s1">&#39;app_main&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker1&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker2&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker3&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker4&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker5&#39;</span> + +<span class="nb">Write-host</span> <span class="s2">&quot;Parando Serviços&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Parando: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nv">$SrvPID</span> <span class="p">=</span> <span class="p">(</span><span class="nb">get-wmiobject</span> <span class="n">win32_service</span> <span class="p">|</span> <span class="nb">where </span><span class="p">{</span> <span class="nv">$_</span><span class="p">.</span><span class="n">name</span> <span class="o">-eq</span> <span class="nv">$srv</span><span class="p">}).</span><span class="n">processID</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PID: &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> + + <span class="cm">&lt;# Força a parada caso o serviço esteja travado #&gt;</span> + <span class="nb">Stop-Process</span> <span class="nv">$ServicePID</span> <span class="n">-Force</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PDI &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> <span class="p">+</span> <span class="s2">&quot; parado&quot;</span> +<span class="p">}</span> + + +<span class="nb">Write-host</span> <span class="s2">&quot;Inicializando Serviços&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Inicializando: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nb">Start-Service</span> <span class="nv">$srv</span> +<span class="p">}</span> +</code></pre></div> + +<p>Você tem algum script de automação? Compartilhe conosco :)</p>Top Level Statement no C# 92020-07-29T19:00:00-03:002020-07-29T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-29:/pt/top_level_statement_csharp_9.html<p>Olá pessoal, venho hoje falar sobre uma novidade que estará disponível na versão 9 do C#. Toda vez que você deseja criar um novo projeto, você sempre tem o mesmo arquivo Main, com a mesma estrutura. Na próxima versão do C# (versão 9), nós teremos uma nova funcionalidade chamada <code>Top …</code></p><p>Olá pessoal, venho hoje falar sobre uma novidade que estará disponível na versão 9 do C#. Toda vez que você deseja criar um novo projeto, você sempre tem o mesmo arquivo Main, com a mesma estrutura. Na próxima versão do C# (versão 9), nós teremos uma nova funcionalidade chamada <code>Top Level Statement</code>. Com isto, poderemos programar a nossa aplicação sem toda aquela estrutura de <code>namespace/class/public void static main</code>. Veja o código abaixo.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="s">&quot;Hello World!&quot;</span><span class="p">);</span> +</code></pre></div> + +<p>Parece muito simples, não é? Com isto, você pode brincar com seu código e até mesmo programar uma pequena WEB API. Para começar a brincar com estas novas <em>features</em>, primeiramente faça o download do preview do <a href="https://dotnet.microsoft.com/download/dotnet/5.0">.net 5 SDK</a> e modifique o seu arquivo <code>.csproj</code> para apontar o framework para <code>.net5.0</code> e a versão de preview da linguagem. Abaixo como uma aplicação de console deve ficar.</p> +<div class="highlight"><pre><span></span><code><span class="nt">&lt;Project</span> <span class="na">Sdk=</span><span class="s">&quot;Microsoft.NET.Sdk&quot;</span><span class="nt">&gt;</span> + <span class="nt">&lt;PropertyGroup&gt;</span> + <span class="nt">&lt;OutputType&gt;</span>Exe<span class="nt">&lt;/OutputType&gt;</span> + <span class="nt">&lt;TargetFramework&gt;</span>net5.0<span class="nt">&lt;/TargetFramework&gt;</span> + <span class="nt">&lt;LangVersion&gt;</span>preview<span class="nt">&lt;/LangVersion&gt;</span> + <span class="nt">&lt;/PropertyGroup&gt;</span> +<span class="nt">&lt;/Project&gt;</span> +</code></pre></div> + +<p>E assim você está pronto para brincar com as novas funcionalidades que estão disponíveis na versão preview. Vamos programar uma aplicação simples que faz uma requisição na API da NASA e printe a Imagem do Dia no console. Não é nenhum código mirabolante, é simplesmente para exemplificar o quão simples uma simples chamada de API pode ser. Feito isto, porque não salvar a imagem como um arquivo? Ou então enviar essa imagem via telegram?</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Text.Json</span><span class="p">;</span> + +<span class="kt">var</span> <span class="n">API</span> <span class="p">=</span> <span class="s">&quot;https://api.nasa.gov/planetary/apod?hd=true&amp;api_key=DEMO_KEY&quot;</span><span class="p">;</span> +<span class="kt">var</span> <span class="n">cli</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + +<span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">cli</span><span class="p">.</span><span class="n">GetAsync</span><span class="p">(</span><span class="n">API</span><span class="p">);</span> +<span class="kt">var</span> <span class="n">data</span> <span class="p">=</span> <span class="n">JsonSerializer</span><span class="p">.</span><span class="n">Deserialize</span><span class="p">&lt;</span><span class="n">NasaApi</span><span class="p">&gt;(</span><span class="k">await</span> <span class="n">response</span><span class="p">.</span><span class="n">Content</span><span class="p">.</span><span class="n">ReadAsStringAsync</span><span class="p">());</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">Url</span><span class="p">);</span> +</code></pre></div> + +<p>Por hoje é isso. Fique de olho nas novas features que o C# 9 vai nos trazer. Já temos várias disponíveis hoje para testar, esta é apenas uma delas.</p>Zabbix poller processes more than 75%2020-07-02T19:00:00-03:002020-07-02T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-02:/pt/zabbix-poller-processes-more-than-75.html<p>Este é o terceiro post sobre configurações para o Zabbix. Todas as alterações que eu sugiro nestes posts, são baseadas em um servidor com 50+ hosts. Outro problema que pode ocorrer em seu servidor, é o poller de informações ficar sobrecarregado pela quantidade de servidores que ele precisa pegar carga …</p><p>Este é o terceiro post sobre configurações para o Zabbix. Todas as alterações que eu sugiro nestes posts, são baseadas em um servidor com 50+ hosts. Outro problema que pode ocorrer em seu servidor, é o poller de informações ficar sobrecarregado pela quantidade de servidores que ele precisa pegar carga de informações juntamente com os servidores que não respondem a requisição. Abaixo duas imagens onde você pode ver o log e um gráfico onde aparecem os percentuais de uso dos poller. </p> +<p><img alt="Dashboard log sobre o processo do poller" src="/images/zabbix_pooler.png"></p> +<p><img alt="Gráfico mostrando o percentual de utilização de cada coletor" src="/images/zabbix_pooler_3.png"></p> +<p>Para resolver o problema acima, vamos voltar ao arquivo de configuração <code>zabbix_server.conf</code> e localizar duas variáveis, <code>StartPollers</code> e <code>StartPollersUnreachable</code>. Aumente o valor delas conforme necessário. Não existe um número mágico, você deve verificar o que melhor funciona para você. Mas tenha em mente que <code>StartPollersUnreachable</code> é responsável por aqueles hosts que não respondem ou não são localizados e irão segurar a thread do poller por mais tempo, causando uma fila e um maior processamento/tempo de atualização.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPollers</span> +<span class="c1"># Number of pre-forked instances of pollers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollers</span><span class="o">=</span><span class="s">20</span> + +<span class="c1">#...</span> + +<span class="c1">### Option: StartPollersUnreachable</span> +<span class="c1"># Number of pre-forked instances of pollers for unreachable hosts (including IPMI and Java).</span> +<span class="c1"># At least one poller for unreachable hosts must be running if regular, IPMI or Java pollers</span> +<span class="c1"># are started.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollersUnreachable</span><span class="o">=</span><span class="s">5</span> +</code></pre></div> + +<p>Depois da alteração, reinicie o serviço e espere alguns momentos e veja o seu dashboard novamente. Abaixo o efeito que a troca teve em um dos servidores que acompanho.</p> +<p><img alt="Gráfico mostrando os novos percentuais de utilização dos processos após as alterações" src="/images/zabbix_pooler_4.png"></p>Monitorando a disponibilidade de um Website com Azure Functions2020-06-22T19:00:00-03:002020-06-22T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-06-22:/pt/monitoring-website-heath-with-azure-functions.html<p>Algumas vezes você se depara com a necessidade de monitorar a disponibilidade de um website ou mudanças em seu conteúdo. É claro que temos diversas opções disponíveis no mercado, mas para fins de curiosidade, vamos programar o nosso próprio e ver o que podemos fazer. Primeiramente, tudo que você ver …</p><p>Algumas vezes você se depara com a necessidade de monitorar a disponibilidade de um website ou mudanças em seu conteúdo. É claro que temos diversas opções disponíveis no mercado, mas para fins de curiosidade, vamos programar o nosso próprio e ver o que podemos fazer. Primeiramente, tudo que você ver aqui, você pode utilizar o <a href="https://azure.microsoft.com/free/">tier gratuito</a> da Azure.</p> +<p>A ideia principal da nossa aplicação vai ser monitorar a disponibilidade do website (status code). Para criar um projeto de Azure Function, siga os passos abaixo.</p> +<p><img alt="Passos para criar um projeto Azure Functions" src="/images/azure_functions.gif"></p> +<p>Depois de criar o projeto, você vai ter alguns arquivos. Abra o arquivo principal (<code>HttpCheck.cs</code> no meu caso) e começe a programar. O arquivo principal terá uma função chamada <code>Run</code> e você pode progamar nela o seu request. Eu criei um método <code>async</code> para fazer as requisições e printar a saída diretamente no console. O código completo pode ser visto abaixo.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Linq</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Threading.Tasks</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs.Host</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Extensions.Logging</span><span class="p">;</span> + +<span class="k">namespace</span> <span class="nn">Sipmann.CheckMySite</span> +<span class="p">{</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">class</span> <span class="nc">HttpCheck</span> + <span class="p">{</span> + + <span class="k">private</span> <span class="k">static</span> <span class="k">async</span> <span class="n">Task</span> <span class="nf">GetTask</span><span class="p">(</span><span class="kt">string</span> <span class="n">url</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="kt">var</span> <span class="n">request</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpRequestMessage</span><span class="p">(</span><span class="n">HttpMethod</span><span class="p">.</span><span class="n">Get</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span> + + <span class="kt">var</span> <span class="n">client</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + <span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">client</span><span class="p">.</span><span class="n">SendAsync</span><span class="p">(</span><span class="n">request</span><span class="p">);</span> + + <span class="k">if</span> <span class="p">(</span><span class="n">response</span><span class="p">.</span><span class="n">IsSuccessStatusCode</span><span class="p">)</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="k">else</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} não esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> + +<span class="na"> [FunctionName(&quot;HttpCheck&quot;)]</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">void</span> <span class="nf">Run</span><span class="p">([</span><span class="n">TimerTrigger</span><span class="p">(</span><span class="s">&quot;0 */5 * * * *&quot;</span><span class="p">)]</span><span class="n">TimerInfo</span> <span class="n">myTimer</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="c1">// URL a verificar a saúde</span> + <span class="kt">var</span> <span class="n">urls</span> <span class="p">=</span> <span class="k">new</span><span class="p">[]{</span><span class="s">&quot;https://www.sipmann.com&quot;</span><span class="p">,</span> <span class="s">&quot;https://www.canezecanez.com.br&quot;</span><span class="p">};</span> + + <span class="c1">// Starta cada request e aguarda todos de uma vez só</span> + <span class="n">Task</span><span class="p">.</span><span class="n">WaitAll</span><span class="p">(</span><span class="n">urls</span><span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">url</span> <span class="p">=&gt;</span> <span class="n">GetTask</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">log</span><span class="p">)).</span><span class="n">ToArray</span><span class="p">());</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;Finalizou a fila&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>Agora você pode melhorar a função e talvez enviar alguns alertas. Como por exêmplo mensagens no Telegram quando um dos sites ficar off (status code 404).</p>Zabbix ICMP pinger processes more than 75%2020-05-25T16:00:00-03:002020-05-25T16:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-05-25:/pt/zabbix-icmp-pinger-processes-more-than-75.html<p>Então o seu systema de monitoramento creasceu e o seu Zabbix começou a printar "<em>Zabbix icmp pinger processes more than 75% busy</em>" no seu dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>Tudo que você tem a fazer é abrir o seu arquivo de configuração (<code>/etc/zabbix/zabbix_server.conf</code>) e localizar a tag chamada <code>StartPingers</code>. Ela deve …</p><p>Então o seu systema de monitoramento creasceu e o seu Zabbix começou a printar "<em>Zabbix icmp pinger processes more than 75% busy</em>" no seu dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>Tudo que você tem a fazer é abrir o seu arquivo de configuração (<code>/etc/zabbix/zabbix_server.conf</code>) e localizar a tag chamada <code>StartPingers</code>. Ela deve estar comentáda por padrão. Descomente a lina e define o seu valor para algo como 3 or 4. Deve resolver seu problema, ao menos até um próximo crescimento do seu monitoramento.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPingers</span> +<span class="c1"># Number of pre-forked instances of ICMP pingers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="nv">StartPingers</span><span class="o">=</span><span class="m">4</span> +</code></pre></div>Zabbix Server Out of Memory2020-02-27T19:00:00-03:002020-02-27T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-02-27:/pt/zabbix-server-out-of-memory-crash.html<p>Você tem um servidor Zabbix crashando e observando o arquivo de log <code>/var/log/zabbix/zabbix_server.log</code> você localiza a seguinte mensagem referênciando falta de memória?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c …</code></pre></div><p>Você tem um servidor Zabbix crashando e observando o arquivo de log <code>/var/log/zabbix/zabbix_server.log</code> você localiza a seguinte mensagem referênciando falta de memória?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: please increase CacheSize configuration parameter +</code></pre></div> + +<p>Apesar da simples solução para o erro, isso acaba sendo um problema comum em servidores que tem uma certa quantidade de itens sendo monitorados (servidores, switches, firewalls, bancos, etc...). Para resolver o problema, vá até o ser arquivo <code>zabbix_server.conf</code> e procure pela propriedade <code>CacheSize</code> e sete o seu valor para uma quantidade maior. O seu valor default deve ser algo como 8M. Em clientes que tenham algo como 4 servidores, 7 firewalls/appliances, e algumas outras coisas (bancos, apps), 32M deve resolver o problema, mas você pode setar até algo como 8G (ressalto que mais memória nem sempre é melhor).</p> +<p>Até breve.</p>Removendo um usuário de uma base SQL Server2019-09-06T07:00:00-03:002020-10-21T18:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-09-06:/pt/removing-user-from-sql-server-database.html<p>O seu cliente lhe pede com urgência para <em>dropar</em> um usuário da sua base MsSQL Server, mas você trava com o seguinte aviso de erro:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>Se você não possui (ou no momento não consegue acesso …</p><p>O seu cliente lhe pede com urgência para <em>dropar</em> um usuário da sua base MsSQL Server, mas você trava com o seguinte aviso de erro:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>Se você não possui (ou no momento não consegue acesso) ao SSMS (SQL Server Management Studio) para verificar quais schemas ou objetos o usuário é "dono", a seguinte SQL vai resolver o problema.</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">schemas</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">principal_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="p">,</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">xtype</span><span class="w"> </span><span class="n">Tipo</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">sysobjects</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">uid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> +</code></pre></div> + +<p>Assim que você tiver os objetos/schemas que o usuário é dono, você pode alterar os mesmos com a seguinte SQL (exemplo de troca de schema):</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datareader</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"> </span><span class="c1">-- username do novo dono</span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datawriter</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>Então, você pode dropar o usuário <code>DROP USER [username]</code>.</p>Resolvendo java.net.SocketException: Protocol family unavailable em Java + Docker + WildFly2018-03-04T17:40:00-03:002018-03-04T17:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-04:/pt/socketException-protocol-family-unavailable-java-docker-wildfly.html<p>Nos últimos dias eu estou brincando com o <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> e decidi fazer o deploy de uma aplicação simples com Docker. Deveria funcionar bem, ao menos é o que pensava. Construí um container com o seguinte Dockerfile e ao invés de obter uma aplicação web, tudo que eu obtive foi …</p><p>Nos últimos dias eu estou brincando com o <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> e decidi fazer o deploy de uma aplicação simples com Docker. Deveria funcionar bem, ao menos é o que pensava. Construí um container com o seguinte Dockerfile e ao invés de obter uma aplicação web, tudo que eu obtive foi o erro <cite>java.net.SocketException: Protocol family unavailable</cite>.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">CMD</span> <span class="p">[</span><span class="s2">&quot;java&quot;</span><span class="p">,</span><span class="s2">&quot;-jar&quot;</span><span class="p">,</span><span class="s2">&quot;/opt/issues.jar&quot;</span><span class="p">]</span> +</pre></div> +<p>Por alguma razão, WildFly e Java, ambos decidiram utilizar um protocolo IPv6 na interface de rede no Docker invés da v4, então tudo que você tem que fazer é falar ao Java que deve dar preferência em utilizar o IPv4 com a seguinte configuração no seu arquivo pom.xml dentro da tag do plugin WildFly.</p> +<div class="highlight"><pre><span></span><span class="nt">&lt;plugin&gt;</span> + <span class="nt">&lt;groupId&gt;</span>org.wildfly.swarm<span class="nt">&lt;/groupId&gt;</span> + <span class="nt">&lt;artifactId&gt;</span>wildfly-swarm-plugin<span class="nt">&lt;/artifactId&gt;</span> + <span class="nt">&lt;version&gt;</span>2018.2.0<span class="nt">&lt;/version&gt;</span> + + <span class="c">&lt;!-- ADICIONE ISTO --&gt;</span> + <span class="nt">&lt;configuration&gt;</span> + <span class="nt">&lt;mainClass&gt;</span>org.wildfly.swarm.examples.netflix.ribbon.frontend.Main<span class="nt">&lt;/mainClass&gt;</span> + <span class="nt">&lt;properties&gt;</span> + <span class="nt">&lt;java.net.preferIPv4Stack&gt;</span>true<span class="nt">&lt;/java.net.preferIPv4Stack&gt;</span> + <span class="nt">&lt;/properties&gt;</span> + <span class="nt">&lt;/configuration&gt;</span> +</pre></div> +<p>Outra forma de solucionar o problema, é adicionando a mesma propriedade ao comando de run no seu Dockerfile. Então, fica a seu critério onde adicionar. Abaixo a solução utilizando o Dockerfile.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> +<span class="k">ENV</span> <span class="nv">JAVA_OPTS</span><span class="o">=</span><span class="s2">&quot;-Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true&quot;</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">ENTRYPOINT</span> <span class="nb">exec</span> java <span class="nv">$JAVA_OPTS</span> -jar /opt/issues.jar +</pre></div> +Menu dinâmico com as apps do django2018-01-21T21:17:00-02:002018-01-21T21:17:00-02:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-01-21:/pt/menu-dinamico-com-apps-do-django.html<p>Digamos que sua empresa trabalha com Django desenvolvendo aplicações cujas apps são plugaveis e reutilizáveis. Por que não se aproveitar de um certo padrão de desenvolvimento para desenvolver menus que se modificam de acordo com as apps que estão no projeto? Como o objetivo aqui não é desenvolver uma app …</p><p>Digamos que sua empresa trabalha com Django desenvolvendo aplicações cujas apps são plugaveis e reutilizáveis. Por que não se aproveitar de um certo padrão de desenvolvimento para desenvolver menus que se modificam de acordo com as apps que estão no projeto? Como o objetivo aqui não é desenvolver uma app em si, vamos utilizar um projeto com algumas de modelo. Se desejar estudar mais sobre desenvolvimento Django, a documentação é muito boa, mas também temos blogs e sites excelentes sobre o assunto.</p> +<p>Para conseguirmos atingir esse objetivo, vamos utilizar a api <a class="reference external" href="https://docs.djangoproject.com/en/2.0/ref/settings/#installed-apps">Django.apps</a> que está disponível a partir da versão 1.7. +Com esta api, vamos percorrer as apps e se possível, criar um link para uma URL base de cada uma delas. Para começo, baixe os fontes do <a class="reference external" href="https://github.com/sipmann/menusapp-django/releases/tag/v1">projeto aqui</a>, rode o pip install do projeto e no fim, sua estrutura de pastas deve ficar como abaixo.</p> +<div class="highlight"><pre><span></span>../menusapp/ +├── comentarios +│ ├── templates +│ │ └── comentarios +│ │ └── listagem.html +│ ├── __init__.py +│ ├── admin.py +│ ├── apps.py +│ ├── models.py +│ ├── tests.py +│ ├── urls.py +│ └── views.py +├── core +│ ├── templates +│ │ └── core +│ │ └── base.html +│ │ └── listagem.html +│ ├── __init__.py +│ ├── admin.py +│ ├── apps.py +│ ├── models.py +│ ├── tests.py +│ ├── urls.py +│ └── views.py +├── menusapp +│ ├── __init__.py +│ ├── settings.py +│ ├── urls.py +│ └── wsgi.py +└── manage.py +</pre></div> +<p>Rode o projeto e veja como é o seu funcionamento. É na app core que temos a base do nosso HTML, então será nele que iremos trabalhar. Quando se trata de algo que será renderizado no template base, eu gosto muito de utilizar 'template tags' para facilitar. +Neste <a class="reference external" href="http://www.sipmann.com/editando-o-admin-do-django.html">link</a> tem mais um exemplo de utilização de 'template tag' caso esteja interessado.</p> +<p>Vamos então criar uma pasta chamada template_tag e dentro dela a nossa tag. Vamos chamá-la de menus_tag.py. Abaixo vamos ver um pouco da nossa tag. +O código é bem simples e auto explicativo, importamos as bibliotecas necessárias e realizamos o &#64;register da tag com o nome do template que será renderizado. +E por ultimo, retornamos uma tupla de dados para o template.</p> +<div class="livros"> + <div class="recomendacoes">Recomendações</div> + <a rel="noopener" href="https://www.amazon.com.br/gp/product/8575225081/ref=as_li_ss_il?ie=UTF8&linkCode=li2&tag=sipmann-20&linkId=c17fa3ac84e734741a3761e874d7d286" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=8575225081&Format=_SL160_&ID=AsinImage&MarketPlace=BR&ServiceVersion=20070822&WS=1&tag=sipmann-20" ></a><img src="https://ir-br.amazon-adsystem.com/e/ir?t=sipmann-20&l=li2&o=33&a=8575225081" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> + <a rel="noopener" href="https://www.amazon.com.br/gp/product/B074ZTLKHB/ref=as_li_ss_il?ie=UTF8&linkCode=li2&tag=sipmann-20&linkId=e2f37c07da2dc4111ae47854b205d01a" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B074ZTLKHB&Format=_SL160_&ID=AsinImage&MarketPlace=BR&ServiceVersion=20070822&WS=1&tag=sipmann-20" ></a><img src="https://ir-br.amazon-adsystem.com/e/ir?t=sipmann-20&l=li2&o=33&a=B074ZTLKHB" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> +</div><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">django</span> <span class="kn">import</span> <span class="n">template</span> +<span class="kn">from</span> <span class="nn">django.apps</span> <span class="kn">import</span> <span class="n">apps</span> + +<span class="c1">#Carrega o registro de template tags</span> +<span class="n">register</span> <span class="o">=</span> <span class="n">template</span><span class="o">.</span><span class="n">Library</span><span class="p">()</span> + +<span class="c1">#Registra o metodo a seguir como uma inclusion_tag indicando o template a ser renderizado</span> +<span class="nd">@register</span><span class="o">.</span><span class="n">inclusion_tag</span><span class="p">(</span><span class="s1">&#39;menus_por_app.html&#39;</span><span class="p">)</span> +<span class="k">def</span> <span class="nf">menus_por_app</span><span class="p">():</span> + <span class="n">lst</span> <span class="o">=</span> <span class="n">apps</span><span class="o">.</span><span class="n">get_app_configs</span><span class="p">()</span> + <span class="k">return</span> <span class="p">{</span> <span class="s1">&#39;lst_apps&#39;</span> <span class="p">:</span> <span class="n">lst</span> <span class="p">}</span> +</pre></div> +<p>O template está abaixo e é simplesmente um for percorrendo as apps e gerando uma lista com os seus menus. As outras propriedades você pode ver direto na <a class="reference external" href="https://docs.djangoproject.com/en/2.0/ref/applications/#django.apps.AppConfig">documentação</a>. +Algumas ressalvas para o que foi feito por questões de praticidade para uso posterior, utilizei um with para concatenar e gerar a url e criei um apelido para a url para validar a existência da mesma. Fora isto, nada de novo.</p> +<div class="highlight"><pre><span></span>{% if not lst_apps %} + <span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;</span>Nenhuma app<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span> + {% else %} + <span class="p">&lt;</span><span class="nt">ul</span><span class="p">&gt;</span> + {% for app in lst_apps %} + {% with app.name|add:&quot;:listagem&quot; as link %} + {% url link as the_url %} + {% if the_url %} + <span class="p">&lt;</span><span class="nt">li</span><span class="p">&gt;</span> + <span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;{% url link %}&quot;</span><span class="p">&gt;</span>{{ app.verbose_name|truncatechars:30 }}<span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span> + <span class="p">&lt;/</span><span class="nt">li</span><span class="p">&gt;</span> + {% endif %} + {% endwith %} + {% endfor %} + <span class="p">&lt;/</span><span class="nt">ul</span><span class="p">&gt;</span> + {% endif %} +</pre></div> +<img alt="Resultado final" src="/images/menu_apps.png" /> +<p>No final, o resultado obtido deve ser semelhante ao acima. Repare que está listando as duas aplicações. E acima de tudo, repare que só serão exibidos os links cuja app tenha um namespace de mesmo nome e uma url de nome <cite>listagem</cite>. +A estrutura final pode ser vista abaixo. Atente-se aos nomes tanto das pastas quanto dos arquivos, pois qualquer diferença pode causar o não funcionamento.</p> +<div class="highlight"><pre><span></span>../menusapp/ +├── comentarios +│ ├── templates +│ │ └── comentarios +│ │ └── listagem.html +│ ├── __init__.py +│ ├── admin.py +│ ├── apps.py +│ ├── models.py +│ ├── tests.py +│ ├── urls.py +│ └── views.py +├── core +│ ├── templates +│ │ └── core +│ │ │ └── base.html +│ │ │ └── listagem.html +│ │ └── menus_por_app.html +│ ├── templatetags +│ │ ├── __init__.py +│ │ └── menus_tag.py +│ ├── __init__.py +│ ├── admin.py +│ ├── apps.py +│ ├── models.py +│ ├── tests.py +│ ├── urls.py +│ └── views.py +├── menusapp +│ ├── __init__.py +│ ├── settings.py +│ ├── urls.py +│ └── wsgi.py +└── manage.py +</pre></div> +<p>Espero que tenham gostado, críticas e sugestões são bem-vindas. <a class="reference external" href="https://github.com/sipmann/menusapp-django/releases/tag/v2">Fontes do Projeto</a></p> +Scripts de inicialização no raspberry pi2017-10-08T18:00:00-03:002017-10-08T18:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2017-10-08:/pt/script-de-inicializacao-raspberry.html<p>Instalei essa semana o <a class="reference external" href="https://gitea.io">gitea</a> no meu raspberry pi B + e queria iniciar ele no boot... Não sou profundo conhecedor de linux, então, logo não sabia como fazer isto da melhor forma. +As versões atuais do Raspbian utilizam o <cite>systemd</cite> para gerenciar os serviços e confesso que nunca havia utilizado …</p><p>Instalei essa semana o <a class="reference external" href="https://gitea.io">gitea</a> no meu raspberry pi B + e queria iniciar ele no boot... Não sou profundo conhecedor de linux, então, logo não sabia como fazer isto da melhor forma. +As versões atuais do Raspbian utilizam o <cite>systemd</cite> para gerenciar os serviços e confesso que nunca havia utilizado o systemctl para nada.</p> +<p>Vamos começa criando um arquivo de serviço dentro da pasta <cite>/etc/systemd/system</cite>, vale ressaltar que a pasta <cite>system</cite> deve (em teoria) ser reservada para pacotes do sistema. +Vamos criar o arquivo com o nome <cite>gitea.service</cite> dentro da pasta antes mencionada. Abaixo podemos ver como ficou o arquivo e um detalhamento após ele.</p> +<div class="highlight"><pre><span></span><span class="o">[</span>Unit<span class="o">]</span> +<span class="nv">Description</span><span class="o">=</span>Gitea Service +<span class="nv">After</span><span class="o">=</span>network.target + +<span class="o">[</span>Service<span class="o">]</span> +<span class="nv">Type</span><span class="o">=</span>simple +<span class="nv">User</span><span class="o">=</span>root +<span class="nv">WorkingDirectory</span><span class="o">=</span>/root/ +<span class="nv">ExecStart</span><span class="o">=</span>/root/gitea web +<span class="nv">Restart</span><span class="o">=</span>on-abort +</pre></div> +<p>A composição do arquivo é bem simples, mas vamos a alguns detalhes. <cite>Type</cite> possui várias opções (simple, forking, oneshot), utilizamos <cite>simple</cite> uma vez que o nosso processo executara, permanecerá rodando e não executa um fork de processo. +Fork como acabo de comentar, deve ser utilizado caso o processo que for executando disparar mais processos. User irá definir o usuário do processo. <cite>WorkingDirectory</cite> definira onde o processo terá a sua base de execução, como o gitea esta localizada na pasta root, +aponto para lá. O ExecStart é bem simples e direto, deve chamar a execução do processo passando parametros caso seja necessário. O <cite>Restart</cite> é o que nos garantirá que o serviço permanecerá rodando caso haja algum imprevisto (exceto o fato de um usuário chamar o stop).</p> +<p>Salve o arquivo e vamos rodar um refresh para o SO perceber o novo serviço. Assim rodamos <cite>systemctl daemon-reload</cite>. Sempre que alterarmos um serviço ou criarmos um novo, este comando deve ser executado, caso contrário o próprio systemctl pode lhe alertar da necessidade. +Após reacarregar os serviços, vamos habilitar o serviço que criamos rodando <cite>systemctl enable gitea</cite>, feito isto temos alguns comandos uteis.</p> +<ul class="simple"> +<li>systemctl start gitea</li> +<li>systemctl stop gitea</li> +<li>systemctl status gitea</li> +</ul> +<p>O comando de status pode ser visto como exemplo abaixo.</p> +<div class="highlight"><pre><span></span>● gitea.service - Gitea Service + Loaded: loaded <span class="o">(</span>/etc/systemd/system/gitea.service<span class="p">;</span> enabled<span class="p">;</span> vendor preset: enabled<span class="o">)</span> + Active: active <span class="o">(</span>running<span class="o">)</span> since Wed <span class="m">2017</span>-10-04 <span class="m">00</span>:37:34 UTC<span class="p">;</span> 52min ago +Main PID: <span class="m">1087</span> <span class="o">(</span>gitea<span class="o">)</span> + CGroup: /system.slice/gitea.service + └─1087 /root/gitea web + +Oct <span class="m">04</span> <span class="m">00</span>:38:31 gitserver gitea<span class="o">[</span><span class="m">1087</span><span class="o">]</span>: <span class="o">[</span>Macaron<span class="o">]</span> <span class="m">2017</span>-10-04 <span class="m">00</span>:38:31: Completed /explore/users <span class="m">200</span> OK in <span class="m">80</span>.106173ms +Oct <span class="m">04</span> <span class="m">00</span>:38:31 gitserver gitea<span class="o">[</span><span class="m">1087</span><span class="o">]</span>: <span class="o">[</span>Macaron<span class="o">]</span> <span class="m">2017</span>-10-04 <span class="m">00</span>:38:31: Started GET /img/favicon.png <span class="k">for</span> <span class="m">192</span>.168.1.4 +Oct <span class="m">04</span> <span class="m">00</span>:38:31 gitserver gitea<span class="o">[</span><span class="m">1087</span><span class="o">]</span>: <span class="o">[</span>Macaron<span class="o">]</span> <span class="o">[</span>Static<span class="o">]</span> Serving /img/favicon.png +</pre></div> +<p>Após estes processos, você pode reiniciar seu raspberry que o gitea irá subir e funcionar. Ressalto que, preste atenção tanto no <cite>WorkingDirectory</cite> quanto no <cite>ExecStart</cite>, no caso do gitea, ele utiliza o workingdir e a forma de start para saber onde irá largar os arquivos por padrão, então ou você configura ele com caminhos absolutos ou cuidar na forma de start (ao menos é o que consegui pegar até agora).</p> +Cool Tools2017-09-17T14:00:00-03:002017-09-17T14:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2017-09-17:/pt/cool-tools.html<p>Com o passar do tempo você vai &quot;encontrando&quot; - e às vezes até mesmo desenvolvendo - algumas ferramentas que tornam o seu dia a dia como desenvolvedor mais fácil. Abaixo seguem algumas das minhas ferramentas que costumo usar. Ressalto que essa lista será (provavelmente) atualizada com o passar do tempo.</p> +<div class="section" id="https-www-gitkraken-com"> +<h2><a class="reference external" href="https://www.gitkraken.com">https://www …</a></h2></div><p>Com o passar do tempo você vai &quot;encontrando&quot; - e às vezes até mesmo desenvolvendo - algumas ferramentas que tornam o seu dia a dia como desenvolvedor mais fácil. Abaixo seguem algumas das minhas ferramentas que costumo usar. Ressalto que essa lista será (provavelmente) atualizada com o passar do tempo.</p> +<div class="section" id="https-www-gitkraken-com"> +<h2><a class="reference external" href="https://www.gitkraken.com">https://www.gitkraken.com</a></h2> +<p>Eu gosto muito de usar git, mas às vezes fico cansado de ter que usar só linha de comando, e achei no GitKreaken uma interface muito legal de se usar.</p> +</div> +<div class="section" id="http-paletton-com"> +<h2><a class="reference external" href="http://paletton.com">http://paletton.com</a></h2> +<p>Toda vez que você vai fazer um novo sistema/site, ou até mesmo trocar o layout de algum já existente, você acaba tendo que montar uma paleta de cores para se utilizar em todo o template.</p> +</div> +<div class="section" id="https-icomoon-io-app-select"> +<h2><a class="reference external" href="https://icomoon.io/app/#/select">https://icomoon.io/app/#/select</a></h2> +<p>Querendo usar ícones como fontes? Vá aí e gere apenas os arquivos que você vai realmente utilizar e economize alguns kbs.</p> +</div> +<div class="section" id="https-syncthing-net"> +<h2><a class="reference external" href="https://syncthing.net/">https://syncthing.net/</a></h2> +<p>Se você procura algum meio de sincronizar seus arquivos entre vários pcs e por algum motivo não quer usar um Google Drive ou DropBox, fica aqui a indicação deste cara.</p> +</div> +<div class="section" id="http-sqitch-org"> +<h2><a class="reference external" href="http://sqitch.org/">http://sqitch.org/</a></h2> +<p>Gerenciamento de versões de um banco de dados pode ser bem complicado e trabalhoso... Manter diversos ambientes (desenvolvimento, homologação, produção) vai dar um trabalho se não utilizar alguma ferramenta. Porque não usar o melhor de gerenciamento de versão (git) e uma ferramenta que se adequa ao que você precisa? sqitch é o cara nessas horas.</p> +</div> +<div class="section" id="http-www-setupmyproject-com"> +<h2><a class="reference external" href="http://www.setupmyproject.com/">http://www.setupmyproject.com/</a></h2> +<p>Preparação de projetos java, com frameworks, bibliotecas, nomenclatura, etc... Rende uma economia de tempo grandiosa e já vem tudo pronto :).</p> +</div> +<div class="section" id="https-www-pexels-com"> +<h2><a class="reference external" href="https://www.pexels.com/">https://www.pexels.com/</a></h2> +<p>Bom site para imagens free stock. Excelente local para conseguir imagens de alta qualidade.</p> +</div> +<div class="section" id="https-heml-io"> +<h2><a class="reference external" href="https://heml.io/">https://heml.io/</a></h2> +<p>&quot;HEML is an open source markup language for building responsive email.&quot; Melhor descrição impossível.</p> +</div> +<div class="section" id="https-www-mockapi-io"> +<h2><a class="reference external" href="https://www.mockapi.io/">https://www.mockapi.io/</a></h2> +<p>Desenvolva mocks para testar seu front-end. Eles geram inclusive uma carga de dados para ser utilizado nos seus testes.</p> +</div> +<div class="section" id="https-undraw-co"> +<h2><a class="reference external" href="https://undraw.co">https://undraw.co</a></h2> +<p>Needing some cool and free ilustrations? Take a look at it.</p> +</div> +<div class="section" id="https-www-audiotool-com-app"> +<h2><a class="reference external" href="https://www.audiotool.com/app/">https://www.audiotool.com/app/</a></h2> +<p>Ferramenta para criar sons, musicas e afins</p> +</div> +<div class="section" id="https-app-cloudskew-com"> +<h2><a class="reference external" href="https://app.cloudskew.com/">https://app.cloudskew.com/</a></h2> +<p>Desenhar projetos de cloud e afins</p> +</div> +<div class="section" id="https-lottiefiles-com"> +<h2><a class="reference external" href="https://lottiefiles.com/">https://lottiefiles.com/</a></h2> +<p>Veja por si mesmo</p> +</div> +Desenvolvendo apps para o FirefoxOS (Parte 1)2014-09-02T19:00:00-03:002014-09-02T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2014-09-02:/pt/desenvolvendo-app-firefoxos.html<h3>Requisitos mínimos?</h3> +<p>Para seguir este tutorial você precisará do <a href="http://nodejs.org/">Nodejs</a>. Utilizaremos ele para automatizar algumas tarefas, como a criação do nosso projeto e até mesmo o empacotamento da app. Estas automatizações se darão pela utilização de algumas aplicações como o <a href="http://yeoman.io/">Yeoman</a> e o <a href="http://gruntjs.com/">Grunt</a> .</p> +<p>Também será necessário o emulador do …</p><h3>Requisitos mínimos?</h3> +<p>Para seguir este tutorial você precisará do <a href="http://nodejs.org/">Nodejs</a>. Utilizaremos ele para automatizar algumas tarefas, como a criação do nosso projeto e até mesmo o empacotamento da app. Estas automatizações se darão pela utilização de algumas aplicações como o <a href="http://yeoman.io/">Yeoman</a> e o <a href="http://gruntjs.com/">Grunt</a> .</p> +<p>Também será necessário o emulador do <a href="https://www.mozilla.org/pt-BR/firefox/os/">FirefoxOS</a>, ele roda através do seu navegador Firefox. Para instalá-lo basta ir no menu <code>Ferramentas &gt; Desenvolvedor web &gt; App Manager</code>, nesta tela basta tentar iniciar o emulador, se não possuir um já instalado, você será solicitado a fazê-lo. Neste tutorial irei utilizar a versão 1.4.</p> +<h3>Preparando o ambiente</h3> +<p>Tendo o Node instalado, vamos instalar o yeoman e o gerador de app para Firefox OS. Atenção para o parâmetro '-g' no processo de instalação, com ele os seus pacotes serão instalados globalmente, e não só para a pasta em que esta o prompt.</p> +<div class="highlight"><pre><span></span><code><span class="err">npm install -g yo</span> +<span class="err">npm install -g generator-firefoxos-app</span> +</code></pre></div> + +<p>Com ambos os pacotes acima instalados, vamos dar início a criação da app. No seu diretório de projetos ou onde desejar criar a app chama o generator instalado.</p> +<div class="highlight"><pre><span></span><code><span class="err">yo firefoxos-app</span> +</code></pre></div> + +<p>Uma vez chamado esse generator, o mesmo irá fazer alguns questionamentos, o primeiro é claro será o nome da sua aplicação, seguido da descrição e o nome do desenvolvedor.</p> +<p>Após a execução do generator, você já terá uma estrutura para desenvolvimento pronta, inclusive com um html inicial, com todas as dependências já instaladas. Vale ressaltar agora algumas tarefas disponíveis no Gruntfile.</p> +<ul> +<li>Default: Irá gerar o pacote de distribuição</li> +<li>Test: Até a presente versão do generator (0.1.3) este processo irá simplesmente rodar o validador jsHint</li> +<li>Server: Irá disponibilizar na porta 9001 um simples servidor para testar a sua app</li> +</ul> +<p>Vamos testar a nossa app. Para tal, rode o comando <code>grunt server</code> e acesse no seu navegador <code>localhost:9001</code> e devemos ver a seguinte app. Caso nenhuma página seja exibida, revise os passos ateriores e verifique se nenhum erro ocorreu.</p> +<p><img alt="App inicial" src="/images/app_inicial.png"></p> +<p>Vale ressaltar que a sua app toda estará dentro de uma pasta também chamada <code>app</code>. Nela você encontrará os seus arquivos .html, .js, .css e demais. Antes de começarmos a codificar a nossa app, vamos ver como se instala a mesma.</p> +<h3>Instalando a app</h3> +<p>Para fins de teste, não é necessário rodar o comando <code>grunt</code>, sendo que ele irá testar o JS e compactar tudo em um arquivo .zip, basta apontar a instalação para a pasta <code>app</code> dentro do seu projeto. "Mas como eu faço isto?".</p> +<p>Indo novamente na <code>App Manager</code>, clicando na lateral esquerda, onde indica "Aplicativos", teremos então disponível no inferior da tela duas opções, vamos nos ater a utilizar a primeira (<code>Adicionar aplicativo hospedado</code>).</p> +<p>Clicando nesta opção vamos navegar até a pasta da app e clicar selecionada. Pronto.</p> +<p>Simples de se instalar, não acha? O Resultado final deve ser semelhante ao abaixo.</p> +<p><img alt="App inicial" src="/images/app_visual_1.png"></p> +<h3>Acessando uma API</h3> +<p>Quando vamos programar algo mais complexo, geralmente vamos utilizar algo como, câmera, rede, lista de contatos, armazenamento e outras possibilidades. Para utilizarmos essas APIs, precisamos - assim como no desenvolvimento para android - especificar para o usuário no momento de instalação. Estes dados de acesso ficam no arquivo <code>manifes.webapp</code>, se você ainda não deu uma olhada neste arquivo, é nele que fica armazenado dados da app, como nome, descrição, versão, localização de ícones e é claro as permissões que a mesma requer.</p> +<p>As permissões ficam na propriedade permissions, na forma de <code>"chave" : True</code>. Algumas das apis são:</p> +<ul> +<li>câmera</li> +<li>contacts</li> +<li>desktop-notification</li> +<li>storage</li> +</ul> +<p>Cada permissão vai mudar o tipo de app que você esta desenvolvendo, mas aí eu sugiro ler mais na MDN <a href="https://developer.mozilla.org/en-US/Apps/Build/App_permissions">aqui</a>. Esse é o básico para iniciar no desenvolvimento de app para FirefoxOS. Na parte dois, vou começar a passar um pouco de código.</p>Editando o Admin do Django2014-05-15T18:00:00-03:002014-05-15T18:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2014-05-15:/pt/editando-o-admin-do-django.html<p>Este artigo foi re-postado no grupo <a class="reference external" href="http://pythonclub.com.br/editando-o-admin-do-django.html">PythonClub</a>. Vamos falar um pouco sobre como customizar o admin do Django. Primeiramente porque? A resposta é bem simples, quero mostrar algo para o usuário sem que ele precise entrar nas apps e fazer alguma consulta para então tomar alguma ação. Alguns exêmplos para …</p><p>Este artigo foi re-postado no grupo <a class="reference external" href="http://pythonclub.com.br/editando-o-admin-do-django.html">PythonClub</a>. Vamos falar um pouco sobre como customizar o admin do Django. Primeiramente porque? A resposta é bem simples, quero mostrar algo para o usuário sem que ele precise entrar nas apps e fazer alguma consulta para então tomar alguma ação. Alguns exêmplos para isto seriam:</p> +<blockquote> +<ul class="simple"> +<li>Exibir as vendas do mês em forma de gráfico por região do país</li> +<li>Exibir os últimos comentários adicionados</li> +<li>Exibir log dos ultimos usuários cadastrados</li> +</ul> +</blockquote> +<p>O que faremos aqui será exibir os últimos comentários ainda não liberados de um sistema de blog. Vale lembrar que aqui não discutiremos sobre os primeiros passos da aplicação. Para seguirmos adiante, vamos assumir que já temos um projeto básico com uma estrutura simples, abaixo a estrutura inicial do nosso projeto.</p> +<div class="highlight"><pre><span></span>../blog/ +├── core +│ ├── __init__.py +│ ├── admin.py +│ ├── models.py +│ ├── tests.py +│ └── views.py +├── blog +│ ├── __init__.py +│ ├── settings.py +│ ├── urls.py +│ └── wsgi.py +└── manage.py +</pre></div> +<p>Para iniciarmos, precisamos da nossa tabela de comentários, vamos usar a mais simples e básica o possível.</p> +<table border="1" class="docutils"> +<colgroup> +<col width="50%" /> +<col width="50%" /> +</colgroup> +<thead valign="bottom"> +<tr><th class="head">Campo</th> +<th class="head">Tipo</th> +</tr> +</thead> +<tbody valign="top"> +<tr><td>nome</td> +<td>Varchar(30)</td> +</tr> +<tr><td>texto</td> +<td>Text</td> +</tr> +<tr><td>liberado</td> +<td>Boolean</td> +</tr> +<tr><td>data</td> +<td>Date</td> +</tr> +</tbody> +</table> +<p>Vamos seguir adiante e alterar a página inicial do admin para listar os últimos comentários de um simples sistema de blog. Para comerçar a editar o admin, precisamos inicialmente copiar o template que desejamos para a pasta uma pasta <cite>admin</cite> dentro ta pasta de templates do nosso projeto. Isto porque o Admin, não passa de uma app como outra qualquer, portanto o sistema de herança vai funcionar aqui, carregamento prioritariamente o seu template. Você pode conseguir o template que desejar (no nosso caso o index.html) dentro do projeto do Django mesmo, no meu caso &quot;C:\Django-1.6.3\django\contrib\admin\templates\admin&quot;.</p> +<div class="highlight"><pre><span></span>../blog/ +├── templates +│ ├── admin +│ │ └── index.html +├── core +</pre></div> +<p>Tire um tempo e brinque um pouco com este template e veja o que acontece se você alterar algumas coisa. Para adicionarmos a nossa listagem, vamos adicionar um painel lateral, para tal vamos adicionar o código abaixo antes do fechamento da ultima tag div. Nele podemos ver uma chamada para uma template_tag, portanto precisamos carrega-la no topo do template.</p> +<div class="highlight"><pre><span></span>{% load comentarios_tag %} +... +... +... +<span class="p">&lt;</span><span class="nt">div</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;module&quot;</span> <span class="na">id</span><span class="o">=</span><span class="s">&quot;ultimos-comentarios&quot;</span><span class="p">&gt;</span> + <span class="p">&lt;</span><span class="nt">h2</span><span class="p">&gt;</span>Ultimos Comentários<span class="p">&lt;/</span><span class="nt">h2</span><span class="p">&gt;</span> + <span class="p">&lt;</span><span class="nt">h3</span><span class="p">&gt;</span>Liberar<span class="p">&lt;/</span><span class="nt">h3</span><span class="p">&gt;</span> + {% comentarios_n_liberados %} +<span class="p">&lt;/</span><span class="nt">div</span><span class="p">&gt;</span> +</pre></div> +<p>Esta template trata-se da responsável por fazer a consulta na base de dados e renderizar a nossa lista, portanto ela é uma 'inclusion tag'. Se você não esta familiarizado com 'template tags', talvez queira dar uma olhada na <a class="reference external" href="https://docs.djangoproject.com/en/dev/howto/custom-template-tags/">documentação do django</a>.</p> +<p>Vamos então criar nossa template tag 'comentarios_n_liberados'. Primeiro devemos criar uma pasta chamada templatetags, dentro da nossa app core. Dentro ta pasta vamos inicializar um pacote python e criar o arquivo comentarios_tag.py. Nele precisamos declarar nosso metodo que deve se chamar 'comentarios_n_liberados' e nele fazer uma simples consulta ao banco buscando os comentários não liberados e por fim registrar a tag apontando para o template que será renderizado. Abaixo o código mais explicado.</p> +<div class="livros"> + <div class="recomendacoes">Recomendações</div> + <a rel="noopener nofollow" href="https://www.amazon.com.br/gp/product/8575225081/ref=as_li_ss_il?ie=UTF8&linkCode=li2&tag=sipmann-20&linkId=c17fa3ac84e734741a3761e874d7d286" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=8575225081&Format=_SL160_&ID=AsinImage&MarketPlace=BR&ServiceVersion=20070822&WS=1&tag=sipmann-20" ></a><img src="https://ir-br.amazon-adsystem.com/e/ir?t=sipmann-20&l=li2&o=33&a=8575225081" alt="Livro Pense em Python na Amazon" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> + <a rel="noopener nofollow" href="https://www.amazon.com.br/gp/product/B074ZTLKHB/ref=as_li_ss_il?ie=UTF8&linkCode=li2&tag=sipmann-20&linkId=e2f37c07da2dc4111ae47854b205d01a" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B074ZTLKHB&Format=_SL160_&ID=AsinImage&MarketPlace=BR&ServiceVersion=20070822&WS=1&tag=sipmann-20" ></a><img src="https://ir-br.amazon-adsystem.com/e/ir?t=sipmann-20&l=li2&o=33&a=B074ZTLKHB" alt="Livro Curso Intensivo de Python na Amazon" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> +</div><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">django</span> <span class="kn">import</span> <span class="n">template</span> +<span class="kn">from</span> <span class="nn">core</span> <span class="kn">import</span> <span class="n">models</span> + +<span class="c1">#Carrega o registro de template tags</span> +<span class="n">register</span> <span class="o">=</span> <span class="n">template</span><span class="o">.</span><span class="n">Library</span><span class="p">()</span> + +<span class="c1">#Registra o metodo a seguir como uma inclusion_tag indicando o template a ser renderizad</span> +<span class="nd">@register</span><span class="o">.</span><span class="n">inclusion_tag</span><span class="p">(</span><span class="s1">&#39;comentarios_n_liberados.html&#39;</span><span class="p">)</span> +<span class="k">def</span> <span class="nf">comentarios_n_liberados</span><span class="p">():</span> + <span class="n">comentarios</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">comentario</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">liberado</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">&#39;data&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">:</span><span class="mi">5</span><span class="p">]</span> + <span class="k">return</span> <span class="p">{</span> <span class="s1">&#39;comentarios&#39;</span> <span class="p">:</span> <span class="n">comentarios</span> <span class="p">}</span> +</pre></div> +<p>Abaixo o html do nosso template a ser renderizado, este deve estar dentro da pasta templates da nossa app core.</p> +<div class="highlight"><pre><span></span>{% if not comentarios %} + <span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;</span>Nenhum comentário novo<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span> +{% else %} + <span class="p">&lt;</span><span class="nt">ul</span><span class="p">&gt;</span> + {% for c in comentarios %} + <span class="p">&lt;</span><span class="nt">li</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;addlink&quot;</span><span class="p">&gt;</span> + <span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;{{ c.id }}&quot;</span><span class="p">&gt;</span>{{ c.texto|truncatechars:30 }}<span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span> + <span class="p">&lt;/</span><span class="nt">li</span><span class="p">&gt;</span> + {% endfor %} + <span class="p">&lt;/</span><span class="nt">ul</span><span class="p">&gt;</span> +{% endif %} +</pre></div> +<p>Com tudo isto feito, basta subir o seu servidor e ver o resultado final, que pode ser visto na imagem abaixo.</p> +<img alt="Resultado final" src="images/admin_modificado.png" /> +<p>Lembrando que aqui apenas mostrei como modificar o index do admin, para apenas listar dados do banco, mas você pode ir muito mais além. Abaixo fica a estrutura de diretórios final e um link para download do projeto funcionando.</p> +<div class="highlight"><pre><span></span>../blog/ +├── core +│ ├── templates +│ │ └── comentarios_n_liberados.html +│ ├── templatetag +│ │ └── comentarios_tag.py +│ ├── __init__.py +│ ├── admin.py +│ ├── models.py +│ ├── tests.py +│ └── views.py +├── blog +│ ├── __init__.py +│ ├── settings.py +│ ├── urls.py +│ └── wsgi.py +├── templates +│ ├── admin +│ │ └── index.html +└── manage.py +</pre></div> +<p>Espero que tenham gostado, criticas/sugestões são bem-vindas. <a class="reference external" href="https://github.com/sipmann/editando-django-admin">Fontes do Projeto</a></p> + \ No newline at end of file diff --git a/pt/feeds/all-pt.atom.xml.gz b/pt/feeds/all-pt.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..4579b6cd7e0917390a84a52bb31a1577c7945ae7 GIT binary patch literal 25516 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 literal 0 HcmV?d00001 diff --git a/pt/feeds/all.atom.xml b/pt/feeds/all.atom.xml new file mode 100644 index 000000000..811483e5d --- /dev/null +++ b/pt/feeds/all.atom.xml @@ -0,0 +1,1298 @@ + +Sipmannhttps://www.sipmann.com/pt/2020-12-21T13:30:00-03:00Monitorando restarts do MySQL com PowerShell2020-12-21T13:30:00-03:002020-12-21T13:30:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-21:/pt/monitoring-mysql-restarts-with-powershell.html<p>Bom, chegou a hora para mais um script PowerShell. Se você ainda não viu os outros, de uma olhada no link abaixo.</p> +<ul> +<li><a href="https://www.sipmann.com/pt/monitoring-mysql-replication-with-powershell.html">Monitorando status de replicação do MySQL com PowerShell</a></li> +</ul> +<p>Este aqui é um script bem simples, mas novamente, se seu cliente não possui um servidor Zabbix ou não permite …</p><p>Bom, chegou a hora para mais um script PowerShell. Se você ainda não viu os outros, de uma olhada no link abaixo.</p> +<ul> +<li><a href="https://www.sipmann.com/pt/monitoring-mysql-replication-with-powershell.html">Monitorando status de replicação do MySQL com PowerShell</a></li> +</ul> +<p>Este aqui é um script bem simples, mas novamente, se seu cliente não possui um servidor Zabbix ou não permite que você configure um para realizar este monitoramento, um conjunto de scripts pode ser bem útil. Primeiramente nós executamos uma query báscia <code>SHOW GLOBAL STATUS LIKE 'Uptime'</code>, com ela nós conseguimos capturar exatamente o que nós estamos procurando.</p> +<p>Se por alguma razão o comando falhar (verificamos atravez da variábel global <code>$lastExitCode</code>), nós mandamos um e-mail lhe avisando sobre o problema ocorrido.</p> +<p>E então, nós chegamos à parte onde fazemos o parse do valor obtido, esta parte é bem similar ao parse que codificamos no primeiro post sobre monitoramento utilizando PowerShell. Nós basicamentes procuramos pela linha contendo <code>Value</code>, separamos por espaço e então parseamos a segunda posição em um inteiro. Então tudo que precisamos fazer é verificar se o valor parseado é menor que o nosso threshold, se for menor, nós mandamos um e-mail.</p> +<div class="highlight"><pre><span></span><code><span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;maurio[at]sipmann.com&#39;</span> +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio[at]sipmann.com&#39;</span> +<span class="nv">$MysqlHost</span> <span class="p">=</span> <span class="s1">&#39;127.0.0.1&#39;</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;123&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-h</span> <span class="nv">$MysqlHost</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s2">&quot;SHOW GLOBAL STATUS LIKE &#39;Uptime&#39; \G&quot;</span><span class="p">)</span> + +<span class="cm">&lt;# Unable to execute the sql Command #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$lastExitCode</span> <span class="o">-eq</span> <span class="n">1</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Connection problem&#39;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;Connection problem on host ${MysqlHost}&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> + <span class="n">exit</span> +<span class="p">}</span> + +<span class="nv">$UpTime</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Value:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="cm">&lt;# If the uptime is lower then 20 minutes #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$UpTime</span> <span class="o">-lt</span> <span class="n">1200</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s2">&quot;MySQL Restarted&quot;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;MySQL host ${MysqlHost} restarted less than 20 minutes ago&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> +</code></pre></div> + +<p>Este script (e os outros que eu utilizo) estão disponíveis no meu GitHub <a href="https://github.com/sipmann/PowerShellScripts">aqui</a>. Tenha em mente que os scripts localizados no GitHub, são um pouco diferentes do que exibido aqui. Espero que tenha achado útil.</p>Monitoring MySQL restarts with PowerShell2020-12-21T13:30:00-03:002020-12-21T13:30:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-21:/en/monitoring-mysql-restarts-with-powershell.html<p>Hey folks, it's time for another PowerShell script. If you haven't seen the other ones, check the links below.</p> +<ul> +<li><a href="https://www.sipmann.com/en/monitoring-mysql-replication-with-powershell.html">Monitoring MySQL replication with PowerShell</a></li> +</ul> +<p>Well, this one it's a pretty simple script, but again, if your customer doesn't have a Zabbix server or doesn't allow you to setup one to …</p><p>Hey folks, it's time for another PowerShell script. If you haven't seen the other ones, check the links below.</p> +<ul> +<li><a href="https://www.sipmann.com/en/monitoring-mysql-replication-with-powershell.html">Monitoring MySQL replication with PowerShell</a></li> +</ul> +<p>Well, this one it's a pretty simple script, but again, if your customer doesn't have a Zabbix server or doesn't allow you to setup one to do the monitoring, a set of scripts can be handy. We start executing some basic query <code>SHOW GLOBAL STATUS LIKE 'Uptime'</code>, with that we'll get exactly what we're looking for.</p> +<p>If for some reason, the command fails (watch for the "global" variable called <code>$lastExitCode</code>), we send an e-mail telling you about that connection problem.</p> +<p>And then, we get to the part where we parse the value, this one is pretty similar to the parse we did on the first post about using PowerShell to monitor MySQL. But we basically look for the Value line, split it by space and then parse the second position to an integer. And then all we have to do is check if the uptime is lower than our threshold, if it is we send an e-mail.</p> +<div class="highlight"><pre><span></span><code><span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;maurio[at]sipmann.com&#39;</span> +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio[at]sipmann.com&#39;</span> +<span class="nv">$MysqlHost</span> <span class="p">=</span> <span class="s1">&#39;127.0.0.1&#39;</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;123&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-h</span> <span class="nv">$MysqlHost</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s2">&quot;SHOW GLOBAL STATUS LIKE &#39;Uptime&#39; \G&quot;</span><span class="p">)</span> + +<span class="cm">&lt;# Unable to execute the sql Command #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$lastExitCode</span> <span class="o">-eq</span> <span class="n">1</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Connection problem&#39;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;Connection problem on host ${MysqlHost}&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> + <span class="n">exit</span> +<span class="p">}</span> + +<span class="nv">$UpTime</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Value:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="cm">&lt;# If the uptime is lower then 20 minutes #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$UpTime</span> <span class="o">-lt</span> <span class="n">1200</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s2">&quot;MySQL Restarted&quot;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;MySQL host ${MysqlHost} restarted less than 20 minutes ago&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> +</code></pre></div> + +<p>This script (and the other ones I use) is available at my GitHub <a href="https://github.com/sipmann/PowerShellScripts">here</a>. Keep in mind that the ones on the GitHub repo, are a little different from here.</p>Trocando a senha de um usuário do MySQL sem downtime da aplicação2020-12-09T13:40:00-03:002020-12-09T13:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-09:/pt/mysql-dual-password-functionality.html<p>Você deseja trocar a senha de um usuário do MySQL que está sendo utilizado por uma aplicação e não sofrer nenhum downtime? Bom, a versão 8.0.14 do MySQL foi liberada com uma feature chamada <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, com esta feature você pode alterar a senha de um usuário …</p><p>Você deseja trocar a senha de um usuário do MySQL que está sendo utilizado por uma aplicação e não sofrer nenhum downtime? Bom, a versão 8.0.14 do MySQL foi liberada com uma feature chamada <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, com esta feature você pode alterar a senha de um usuário mantendo a anterior ainda funcionando como uma forma de "backup". Desta forma, você ainda conseguirá autenticar com o usuário utilizando tanto a nova senha, quanto a anterior. Com isto, o seu processo de troca de senha fica algo como:</p> +<p>1) Troque a senha mantendo a anterior;</p> +<p>2) Faça o Deploy da nova configuração na sua aplicação/cluster;</p> +<p>3) Descarte a senha anterior.</p> +<p>Para alterar a senha mantendo a anterior, você deve rodar o seguinte comando:</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">IDENTIFIED</span> <span class="k">BY</span> <span class="s1">&#39;new_password&#39;</span> <span class="n">RETAIN</span> <span class="n">CURRENT</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>Para descartar a senha antiga, rode o seguinte:</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">DISCARD</span> <span class="n">OLD</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>E pronto. Espero que isto lhe ajude a evitar downtimes e dores de cabeça :)</p>Changing a MySQL user password across multiple application instances without downtime2020-12-09T13:40:00-03:002020-12-09T13:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-09:/en/mysql-dual-password-functionality.html<p>Do you need to change the password of a MySQL user that it's being used in an application, and can't allow a single downtime? Well, MySQL 8.0.14 came with a feature called <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, with it you can change the password keeping the previous password as a …</p><p>Do you need to change the password of a MySQL user that it's being used in an application, and can't allow a single downtime? Well, MySQL 8.0.14 came with a feature called <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, with it you can change the password keeping the previous password as a kind of backup. That way you still can log in using the old password or can start using the new one. With that, the password change workflow it's the following.</p> +<p>1) Change password keeping the old one;</p> +<p>2) Deploy the new config to your app/cluster;</p> +<p>3) Discard the old password.</p> +<p>To change the password and keep the old one, you have the following command.</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">IDENTIFIED</span> <span class="k">BY</span> <span class="s1">&#39;new_password&#39;</span> <span class="n">RETAIN</span> <span class="n">CURRENT</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>To discard the old one, run the following.</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">DISCARD</span> <span class="n">OLD</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>And you are done. Hope you find it as useful as I :)</p>Apache Nifi JSON to SQL removendo underline2020-12-02T14:00:00-03:002020-12-02T14:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-02:/pt/apache-nifi-json-to-sql-replacing-underscore.html<p>Recentemente eu estava desenvolvendo alguns processos de ETL com o Apache NiFi. Mas após alguns minutos desenhando o meu fluxo, eu vi um comportamento estranho do componente ConvertJSONToSQL, que estava substituindo os underline ('_') do nome de um campo utilizado na condição da SQL (eu estava preparando um UPDATE). Aquilo …</p><p>Recentemente eu estava desenvolvendo alguns processos de ETL com o Apache NiFi. Mas após alguns minutos desenhando o meu fluxo, eu vi um comportamento estranho do componente ConvertJSONToSQL, que estava substituindo os underline ('_') do nome de um campo utilizado na condição da SQL (eu estava preparando um UPDATE). Aquilo estava estranho, uma vez que na definição do SET da SQL, o nome do campo permanecia inalterado. Depois de algumas pesquisas, achei uma doc que a propriedade (veja abaixo) <code>Translate Field Names</code> era a responsável por este comportamento estranho.</p> +<p><img alt="Apache NiFi JSONToSQL config" src="/images/apache_nifi_jsontosql.png"></p> +<p>Antes de definir a propriedade como <strong>FALSE</strong>, esteja ciente que as propriedades do seu JSON devem ser exatamente iguais aos nomes dos campos da sua tabela.</p>Apache Nifi JSON to SQL Replacing underscore2020-12-02T14:00:00-03:002020-12-02T14:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-02:/en/apache-nifi-json-to-sql-replacing-underscore.html<p>Recently I was doing some ETL with Apache NiFi. But after a few minutes of drawing my flow, I saw that the component ConvertJSONToSQL was replacing the underscore ('_') from the field name in the where condition (I was preparing an Update SQL). That was weird because, at the set …</p><p>Recently I was doing some ETL with Apache NiFi. But after a few minutes of drawing my flow, I saw that the component ConvertJSONToSQL was replacing the underscore ('_') from the field name in the where condition (I was preparing an Update SQL). That was weird because, at the set statement, the field name was kept intact. After some research, I found that the property (see bellow) <code>Translate Field Names</code> was responsible for that weird replacement.</p> +<p><img alt="Apache NiFi JSONToSQL config" src="/images/apache_nifi_jsontosql.png"></p> +<p>Before setting it to <strong>FALSE</strong>, be aware that the properties on your JSON data must match exactly the name of your fields.</p>Bloqueando um usuário do SQL Server baseado em uma tabela de horários2020-11-14T07:00:00-03:002020-11-14T07:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-11-14:/pt/blocking-user-on-sql-server-based-on-schedule.html<p>Ok, algum tempo atrás, eu postei sobre como você pode impor limites às conexões do SQL Server utilizando o <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. Mas, e se você não pode utilizar ele? Você sempre pode bloquear logins usando uma trigger, mas eu não gosto da ideia de ter um select rodando a cada …</p><p>Ok, algum tempo atrás, eu postei sobre como você pode impor limites às conexões do SQL Server utilizando o <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. Mas, e se você não pode utilizar ele? Você sempre pode bloquear logins usando uma trigger, mas eu não gosto da ideia de ter um select rodando a cada login. Então, eu cheguei a esta solução, utilizando uma stored procedure, uma tabela e o Agent.</p> +<p>A ideia principal é armazenar o horário em que um usuário deve ser bloqueado pelo Agent. Abaixo você pode ver a criação da tabela:</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">Id</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/* horário de inicio do bloqueio */</span><span class="w"></span> +<span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/*horário de termino */</span><span class="w"></span> +<span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="k">DEFAULT</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="cm">/* 0 = desbloqueado, 1 = bloqueado */</span><span class="w"></span> +<span class="w"> </span><span class="k">PRIMARY</span><span class="w"> </span><span class="k">KEY</span><span class="w"> </span><span class="p">(</span><span class="n">Id</span><span class="p">)</span><span class="w"></span> +<span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="cm">/* regra para Não bloquear o usuário SA */</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_users</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">LoginName</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;sa&#39;</span><span class="p">));</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_hora_final_maior</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="n">HrInicio</span><span class="p">);</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_status_bloqueio</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">Bloqueado</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">));</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="k">SEQUENCE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">seq_HorariosBloqueio</span><span class="w"> </span><span class="k">START</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">INCREMENT</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>Depois de criar a tabela, vamos verificar a procedure que vai fazer todo o trabalho de habilitar/desabilitar os usuários. Fique ciente que, nesta procedure, eu defini o nome do banco onde a tabela está armazenada. Você pode substituir o nome <code>DBATOOLS</code> pelo o nome da sua base.</p> +<div class="highlight"><pre><span></span><code><span class="k">IF</span><span class="w"> </span><span class="nf">OBJECT_ID</span><span class="p">(</span><span class="s1">&#39;dbo.sp_ValidarLogin&#39;</span><span class="p">)</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="k">NULL</span><span class="w"></span> +<span class="w"> </span><span class="k">EXEC</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;CREATE PROCEDURE dbo.sp_ValidarLogin AS RETURN 0;&#39;</span><span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="k">ALTER</span><span class="w"> </span><span class="k">PROC</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">sp_ValidarLogin</span><span class="w"></span> +<span class="k">AS</span><span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">);</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nf">CAST</span><span class="p">(</span><span class="nf">GETDATE</span><span class="p">()</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="cm">/* Bloqueia os que ainda não estiverem bloqueados de acordo com a hora atual */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">&#39; DISABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Bloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> + + +<span class="w"> </span><span class="cm">/* Libera quem estava bloqueado */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="s1">&#39; ENABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Unbloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="k">END</span><span class="p">;</span><span class="w"></span> +</code></pre></div> + +<p>Certo, então agora tudo que temos que fazer é definir o job no Agent para rodar a procedure de minuto em minuto. Novamente, a ideia principal é chamar a procedure quando um usuário deve ser bloqueado e quando deve ser desbloqueado.</p> +<div class="highlight"><pre><span></span><code><span class="err"> -- Vai bloquear o usuário protheus das 10 AM até 15 PM</span> +<span class="err"> INSERT INTO dbo.HorariosBloqueio (Id, LoginName, HrInicio, HrTermino) VALUES (NEXT VALUE FOR seq_HorariosBloqueio, &#39;protheus&#39;, &#39;10:00:00&#39;, &#39;15:00:00&#39;);</span> +</code></pre></div>Blocking a user on SQL Server based on a schedule2020-11-14T07:00:00-03:002020-11-14T07:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-11-14:/en/blocking-user-on-sql-server-based-on-schedule.html<p>Ok, some time ago, I've posted about how you can set limits to connections on SQL Server using the <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. But what if you can't use it? You always can block logins using a login trigger, but I don't like the idea of having selects running on every login …</p><p>Ok, some time ago, I've posted about how you can set limits to connections on SQL Server using the <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. But what if you can't use it? You always can block logins using a login trigger, but I don't like the idea of having selects running on every login. So I came across with a solution using a stored procedure, a table and the Agent.</p> +<p>The main idea is, store the time that a user must be blocked and using the Agent, disable or enable the user. Bellow you can see the table (the table is in Portuguese, but I have a few comment blocks to help you).</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">Id</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Startint block time */</span><span class="w"></span> +<span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Ending block time */</span><span class="w"></span> +<span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="k">DEFAULT</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="cm">/* 0 = unblocked, 1 = blocked */</span><span class="w"></span> +<span class="w"> </span><span class="k">PRIMARY</span><span class="w"> </span><span class="k">KEY</span><span class="w"> </span><span class="p">(</span><span class="n">Id</span><span class="p">)</span><span class="w"></span> +<span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="cm">/* Don&#39;t block the SA user, precautions, you know */</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_users</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">LoginName</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;sa&#39;</span><span class="p">));</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_hora_final_maior</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="n">HrInicio</span><span class="p">);</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_status_bloqueio</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">Bloqueado</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">));</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="k">SEQUENCE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">seq_HorariosBloqueio</span><span class="w"> </span><span class="k">START</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">INCREMENT</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>After creating the table, let's check the procedure that will handle the enabling/disabling the users. Be aware that on the procedure, I've set the database name where the table was stored, you can change it replacing the <code>DBATOOLS</code> text to the database name where you created the table.</p> +<div class="highlight"><pre><span></span><code><span class="k">IF</span><span class="w"> </span><span class="nf">OBJECT_ID</span><span class="p">(</span><span class="s1">&#39;dbo.sp_ValidarLogin&#39;</span><span class="p">)</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="k">NULL</span><span class="w"></span> +<span class="w"> </span><span class="k">EXEC</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;CREATE PROCEDURE dbo.sp_ValidarLogin AS RETURN 0;&#39;</span><span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="k">ALTER</span><span class="w"> </span><span class="k">PROC</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">sp_ValidarLogin</span><span class="w"></span> +<span class="k">AS</span><span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">);</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nf">CAST</span><span class="p">(</span><span class="nf">GETDATE</span><span class="p">()</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="cm">/* Block the ones that aren&#39;t blocked already and maches the time */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">&#39; DISABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Bloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> + + +<span class="w"> </span><span class="cm">/* Enable up who was blocked */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="s1">&#39; ENABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Unbloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="k">END</span><span class="p">;</span><span class="w"></span> +</code></pre></div> + +<p>Ok, so now all you have to do, is schedule a job to run that stored procedure from minute to minute. Again, the main idea is tell the procedure when a user must be blocked and when it'll be unblocked. </p> +<div class="highlight"><pre><span></span><code><span class="err"> -- Will block the user protheus from 10 AM till 15 PM</span> +<span class="err"> INSERT INTO dbo.HorariosBloqueio (Id, LoginName, HrInicio, HrTermino) VALUES (NEXT VALUE FOR seq_HorariosBloqueio, &#39;protheus&#39;, &#39;10:00:00&#39;, &#39;15:00:00&#39;);</span> +</code></pre></div>Como definir as colunas no select utilizando Entity Framework2020-10-28T19:00:00-03:002020-10-28T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-28:/pt/select_specific_fields_with_efcore.html<p>Então, você utiliza Entity Framework Core e geralmente faz o seu selecto da seguinte forma, talvez você está retornando muitos dados.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Rodando a query acima, em uma base de testes você obtem o seguinte resultado, veja quantas …</p><p>Então, você utiliza Entity Framework Core e geralmente faz o seu selecto da seguinte forma, talvez você está retornando muitos dados.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Rodando a query acima, em uma base de testes você obtem o seguinte resultado, veja quantas colunas estão retornando da sua base de dados.</p> +<p><img alt="Print com todas as colunas" src="/images/ef_core_allcolumns.png"></p> +<p>No meu caso, eu só pretendo ter de volta as colunas Title, PublishedData e uma pequena descrição. Então para selecionar apenas estes campos, nós temos algumas opções. Na primeira, nós vamos definir os campos e retornar um objeto do tipo Dynamic. A segunda forma, é dar ao .NET o objeto a ser retornado, pode ser por exêmplo um DTO.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + + <span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="k">new</span> <span class="p">{</span><span class="n">p</span><span class="p">.</span><span class="n">ProductID</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitPrice</span><span class="p">})</span> + <span class="c1">//.Select(p =&gt; new ProductDTO {p.ProductID, p.ProductName, p.UnitsInStock, p.UnitPrice})</span> + + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p><img alt="Print com menos colunas e também menor quantidade de dados" src="/images/ef_core_less_columns.png"></p>How to set columns on select using Entity Framework2020-10-28T19:00:00-03:002020-10-28T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-28:/en/select_specific_fields_with_efcore.html<p>So, you use Entity Framework Core, and you usually code your selects like the following, maybe you are getting too much data.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Running the query above, on my table, you'll get the following output, take a look …</p><p>So, you use Entity Framework Core, and you usually code your selects like the following, maybe you are getting too much data.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Running the query above, on my table, you'll get the following output, take a look at how many columns you are getting back from your database.</p> +<p><img alt="Screenshot with every single column" src="/images/ef_core_allcolumns.png"></p> +<p>In my case, I only care about the Title, PublishedData, and a small description. So to get back only these fields, we have a few options. In the first one, we'll set the fields and return them as a dynamic object, the second one, is to give the .NET a class to use. </p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + + <span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="k">new</span> <span class="p">{</span><span class="n">p</span><span class="p">.</span><span class="n">ProductID</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitPrice</span><span class="p">})</span> + <span class="c1">//.Select(p =&gt; new ProductDTO {p.ProductID, p.ProductName, p.UnitsInStock, p.UnitPrice})</span> + + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p><img alt="Screenshot with fewer columns and also fewer data size" src="/images/ef_core_less_columns.png"></p>Zabbix Running on Low Memory Mode2020-10-20T19:00:00-03:002020-10-20T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-20:/pt/zabbix-running-on-low-memory-mode.html<p>Olá pessoal! Trago hoje outro post sobre Zabbix. Este é sobre aumentar o cache do seu Zabbix Server. É perfeitamente comum (se você roda com as configurações padrões) receber avisos sobre <code>Zabbix value cache running on low memory mode</code> no seu dashboard ou arquivos de log.</p> +<p><img alt="Zabbix Dashboard alertando sobre problemas de memória" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache gráfico com 70% utilizado" src="/images/zabbix_cache_filling.png"></p> +<p>Para resolver, abra o …</p><p>Olá pessoal! Trago hoje outro post sobre Zabbix. Este é sobre aumentar o cache do seu Zabbix Server. É perfeitamente comum (se você roda com as configurações padrões) receber avisos sobre <code>Zabbix value cache running on low memory mode</code> no seu dashboard ou arquivos de log.</p> +<p><img alt="Zabbix Dashboard alertando sobre problemas de memória" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache gráfico com 70% utilizado" src="/images/zabbix_cache_filling.png"></p> +<p>Para resolver, abra o seu arquivo de configuração (<code>zabbix_server.conf</code>) e procure pela tag <em>CacheSize</em>. Descomente a linha e defina um valor maior que 8M (8M é o valor padrão). No meu caso, nós configuramos um cache de 100M. Depois da troca, reinicie o serviço para que o mesmo tome efeito.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: CacheSize</span> +<span class="c1"># Size of configuration cache, in bytes.</span> +<span class="c1"># Shared memory size for storing host, item and trigger data.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 128K-64G</span> +<span class="c1"># Default:</span> +<span class="na">CacheSize</span><span class="o">=</span><span class="s">100M #Descomente esta linha</span> +</code></pre></div> + +<p><img alt="Zabbix Dashboard resolved memory problem" src="/images/zabbix_low_memory_solved.png"></p> +<p>Até breve.</p>Zabbix Running on Low Memory Mode2020-10-20T19:00:00-03:002020-10-20T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-20:/en/zabbix-running-on-low-memory-mode.html<p>Hey folks, another Zabbix post today. This one it's about increasing the Zabbix Server Cache. It's pretty common (if you have the default settings only) get a warning about your <code>Zabbix value cache running on low memory mode</code> at your dashboard or logs.</p> +<p><img alt="Zabbix Dashboard warning about the memory problem" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache graph 70% used" src="/images/zabbix_cache_filling.png"></p> +<p>To solve, go back to your Zabbix …</p><p>Hey folks, another Zabbix post today. This one it's about increasing the Zabbix Server Cache. It's pretty common (if you have the default settings only) get a warning about your <code>Zabbix value cache running on low memory mode</code> at your dashboard or logs.</p> +<p><img alt="Zabbix Dashboard warning about the memory problem" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache graph 70% used" src="/images/zabbix_cache_filling.png"></p> +<p>To solve, go back to your Zabbix config file (<code>zabbix_server.conf</code>) and look for the tag <em>CacheSize</em>. Uncomment it and set to a value bigger than 8M (8M it's the default value). In my case, we set a cache of 100M. After the change, restart the service.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: CacheSize</span> +<span class="c1"># Size of configuration cache, in bytes.</span> +<span class="c1"># Shared memory size for storing host, item and trigger data.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 128K-64G</span> +<span class="c1"># Default:</span> +<span class="na">CacheSize</span><span class="o">=</span><span class="s">100M #uncomment this line</span> +</code></pre></div> + +<p><img alt="Zabbix Dashboard resolved memory problem" src="/images/zabbix_low_memory_solved.png"></p> +<p>See ya folks.</p>Monitorando status de replicação do MySQL com PowerShell2020-10-14T19:00:00-03:002020-10-14T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-14:/pt/monitoring-mysql-replication-with-powershell.html<p>Tenho migrado alguns scripts bash que tenho para PowerShell, e chegou a vez de migrar um script de monitoramento de replicação do MySQL. Fica como crédito o script original do <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. É um script bem simples onde eu verifico algumas tags resultantes do <code>SHOW SLAVE STATUS\G</code>, são elas. <code>Slave_IO_Running …</code></p><p>Tenho migrado alguns scripts bash que tenho para PowerShell, e chegou a vez de migrar um script de monitoramento de replicação do MySQL. Fica como crédito o script original do <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. É um script bem simples onde eu verifico algumas tags resultantes do <code>SHOW SLAVE STATUS\G</code>, são elas. <code>Slave_IO_Running</code>, <code>Slave_SQL_Running</code> e <code>Seconds_Behind_Master</code>. Ainda preciso verificar formas mais corretas de armazenar/carregar as variáveis como usuários e senha, se tiver alguma dica, fique à vontade para inclusive fazer um pull request (<a href="https://github.com/sipmann/PowerShellScripts">aqui</a>) no repositório onde vou armazenar alguns dos meus scripts.</p> +<div class="highlight"><pre><span></span><code><span class="cm">&lt;#</span> +<span class="cm"> Variables definition</span> +<span class="cm">#&gt;</span> +<span class="nv">$MaxSeconds</span> <span class="p">=</span> <span class="n">120</span> <span class="c"># Max seconds behind master allowed</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;&#39;</span> + +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> +<span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s1">&#39;SHOW SLAVE STATUS \G&#39;</span><span class="p">)</span> + +<span class="c">#Debug data</span> +<span class="c">#$data = Get-Content &#39;c:\temp\sampleresult.txt&#39;</span> + +<span class="cm">&lt;# Parse the data #&gt;</span> +<span class="nv">$IORunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_IO_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SQLRunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_SQL_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$LastErrNo</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Last_Errno&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SecondsBh</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Seconds_Behind_Master&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="k">If</span> <span class="p">(</span><span class="nv">$IORunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SQLRunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SecondsBh</span> <span class="o">-gt</span> <span class="nv">$MaxSeconds</span><span class="p">)</span> <span class="p">{</span> + <span class="nv">$MailBody</span> <span class="p">=</span> <span class="s1">&#39;&lt;h1&gt;Problema na replicação&lt;/h1&gt;&lt;br&gt;&#39;</span> + + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; IO Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$IORunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; SQL Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SQLRunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39;Seconds Behind: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SecondsBh</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; Last Err No: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$LastErrNo</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + + <span class="cm">&lt;# Send e-mail, maybe some telegram message here too #&gt;</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Problemas na replicação&#39;</span> <span class="n">-bodyAsHtml</span> <span class="nv">$MailBody</span> <span class="n">-Credential</span> <span class="p">(</span><span class="nb">Get-Credential</span><span class="p">)</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> <span class="k">Else</span> <span class="p">{</span> + <span class="nb">Write-Host</span> <span class="s2">&quot;Up and running&quot;</span> +<span class="p">}</span> +</code></pre></div>Monitoring MySQL Replication Status with PowerShell2020-10-14T19:00:00-03:002020-10-14T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-14:/en/monitoring-mysql-replication-with-powershell.html<p>I've been migration some bash scripts that I have to PowerShell, and it's time to migrate a script that monitors the replication of a MySQL database. The credit for the original script goes to <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. It's a simple script where I seek a few tags/fields that we get from …</p><p>I've been migration some bash scripts that I have to PowerShell, and it's time to migrate a script that monitors the replication of a MySQL database. The credit for the original script goes to <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. It's a simple script where I seek a few tags/fields that we get from <code>SHOW SLAVE STATUS\G</code> command, the fields are. <code>Slave_IO_Running</code>, <code>Slave_SQL_Running</code>, and <code>Seconds_Behind_Master</code>. I still need to figure out the proper way to store/read variables like usernames and passwords, if you have any tips, feel free to even make a pull request (<a href="https://github.com/sipmann/PowerShellScripts">here</a>) at the git where I'll store some scripts.</p> +<div class="highlight"><pre><span></span><code><span class="cm">&lt;#</span> +<span class="cm"> Variables definition</span> +<span class="cm">#&gt;</span> +<span class="nv">$MaxSeconds</span> <span class="p">=</span> <span class="n">120</span> <span class="c"># Max seconds behind master allowed</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;&#39;</span> + +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> +<span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s1">&#39;SHOW SLAVE STATUS \G&#39;</span><span class="p">)</span> + +<span class="c">#Debug data</span> +<span class="c">#$data = Get-Content &#39;c:\temp\sampleresult.txt&#39;</span> + +<span class="cm">&lt;# Parse the data #&gt;</span> +<span class="nv">$IORunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_IO_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SQLRunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_SQL_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$LastErrNo</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Last_Errno&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SecondsBh</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Seconds_Behind_Master&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="k">If</span> <span class="p">(</span><span class="nv">$IORunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SQLRunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SecondsBh</span> <span class="o">-gt</span> <span class="nv">$MaxSeconds</span><span class="p">)</span> <span class="p">{</span> + <span class="nv">$MailBody</span> <span class="p">=</span> <span class="s1">&#39;&lt;h1&gt;Problema na replicação&lt;/h1&gt;&lt;br&gt;&#39;</span> + + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; IO Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$IORunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; SQL Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SQLRunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39;Seconds Behind: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SecondsBh</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; Last Err No: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$LastErrNo</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + + <span class="cm">&lt;# Send e-mail, maybe some telegram message here too #&gt;</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Problemas na replicação&#39;</span> <span class="n">-bodyAsHtml</span> <span class="nv">$MailBody</span> <span class="n">-Credential</span> <span class="p">(</span><span class="nb">Get-Credential</span><span class="p">)</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> <span class="k">Else</span> <span class="p">{</span> + <span class="nb">Write-Host</span> <span class="s2">&quot;Up and running&quot;</span> +<span class="p">}</span> +</code></pre></div>Microsoft Contra Covid2020-10-03T19:00:00-03:002020-10-03T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-03:/pt/microsoft-against-covid.html<p>Você teve seu trabalho afetado pela pandemia do covid? Bom, na última semana eu postei no <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> sobre um Voucher para certificação gratuita que a Microsoft estava distribuindo durante o evento Microsoft Ignite. Depois disto, eu fiquei sabendo que eles também estão entregando grandes discontos para quem teve o seu …</p><p>Você teve seu trabalho afetado pela pandemia do covid? Bom, na última semana eu postei no <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> sobre um Voucher para certificação gratuita que a Microsoft estava distribuindo durante o evento Microsoft Ignite. Depois disto, eu fiquei sabendo que eles também estão entregando grandes discontos para quem teve o seu trabalho afetado pela pandemia do covid. </p> +<p>Para saber se você pode receber este desconto, acesse <a href="https://docs.microsoft.com/en-us/learn/certifications/skillingoffer">https://docs.microsoft.com/en-us/learn/certifications/skillingoffer</a>.</p>Microsoft Against Covid2020-10-03T19:00:00-03:002020-10-03T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-03:/en/microsoft-against-covid.html<p>Has your job been affected by covid? Well, last week I've posted on <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by …</p><p>Has your job been affected by covid? Well, last week I've posted on <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by covid pandemic. </p> +<p>To see more details about if you were eligible, access <a href="https://docs.microsoft.com/en-us/learn/certifications/skillingoffer">https://docs.microsoft.com/en-us/learn/certifications/skillingoffer</a>.</p>O poder do PowerShell2020-09-21T19:00:00-03:002020-09-21T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-09-21:/pt/the-power-of-powershell.html<p>Como um usuário linux por muito tempo, eu automatizei algumas tarefas com scripts bash e fiquei longe do PowerShell... Voltei a utilizar Windows alguns anos atrás e ainda assim, não dei uma chance ao PS. Mas porque não? Eu fiz alguns scripts para automatizar algumas tarefas em um servidor Protheus …</p><p>Como um usuário linux por muito tempo, eu automatizei algumas tarefas com scripts bash e fiquei longe do PowerShell... Voltei a utilizar Windows alguns anos atrás e ainda assim, não dei uma chance ao PS. Mas porque não? Eu fiz alguns scripts para automatizar algumas tarefas em um servidor Protheus.</p> +<p>Eu acabei achando os scripts PS de fácil leitura e entendimento. Abaixo, nós temos um script para remover arquivos filtrando pela sua extensão (ou sem extensão alguma no caso do script em questão).</p> +<div class="highlight"><pre><span></span><code><span class="nb">Get-ChildItem</span> <span class="s2">&quot;C:\TOTVS\protheus_data\system&quot;</span> <span class="o">-File</span> <span class="n">-Filter</span> <span class="p">*.</span> <span class="p">|</span> <span class="nb">Move-Item</span> <span class="n">-Force</span> <span class="n">-Destination</span> <span class="p">{</span> + <span class="cm">&lt;# Diretório ao qual os arquivos vão ser movidos. Você pode utilizar formatos de data para nomear os diretórios #&gt;</span> + <span class="cm">&lt;# LastWriteTime é a propriedade do arquivo corrent #&gt;</span> + <span class="nv">$dir</span> <span class="p">=</span> <span class="s2">&quot;C:\bad_files\{0:yyyy\\MM\\dd}&quot;</span> <span class="o">-f</span> <span class="nv">$_</span><span class="p">.</span><span class="n">LastWriteTime</span> + <span class="nv">$null</span> <span class="p">=</span> <span class="n">mkdir</span> <span class="nv">$dir</span> <span class="n">-Force</span> + <span class="s2">&quot;$dir\</span><span class="p">$(</span><span class="nv">$_</span><span class="p">.</span><span class="n">Name</span><span class="p">)</span><span class="s2">&quot;</span> +<span class="p">}</span> +</code></pre></div> + +<p>Você já precisou remover arquivos baseado no conteúdo de outro arquivo? Abaixo um script onde eu leio um arquivo que contem os nomes de arquivos que eu desejo remover. </p> +<div class="highlight"><pre><span></span><code><span class="k">foreach</span><span class="p">(</span><span class="nv">$line</span> <span class="k">in</span> <span class="nb">Get-Content</span> <span class="p">.\</span><span class="n">Desktop</span><span class="p">\</span><span class="n">bad_files</span><span class="p">.</span><span class="n">txt</span><span class="p">)</span> <span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="nb">Test-Path</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">))</span> <span class="p">{</span> + <span class="nb">Remove-Item</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">)</span> + <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> + <span class="nb">echo </span><span class="nv">$line</span> <span class="p">+</span> <span class="s1">&#39; - File not found&#39;</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>E um script bonus para parar e iniciar serviços (se você gerencia um servidor Protheus, você sabe o porque eu faço isto).</p> +<div class="highlight"><pre><span></span><code><span class="nv">$servicesNames</span> <span class="p">=</span> <span class="s1">&#39;app_main&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker1&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker2&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker3&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker4&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker5&#39;</span> + +<span class="nb">Write-host</span> <span class="s2">&quot;Parando Serviços&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Parando: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nv">$SrvPID</span> <span class="p">=</span> <span class="p">(</span><span class="nb">get-wmiobject</span> <span class="n">win32_service</span> <span class="p">|</span> <span class="nb">where </span><span class="p">{</span> <span class="nv">$_</span><span class="p">.</span><span class="n">name</span> <span class="o">-eq</span> <span class="nv">$srv</span><span class="p">}).</span><span class="n">processID</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PID: &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> + + <span class="cm">&lt;# Força a parada caso o serviço esteja travado #&gt;</span> + <span class="nb">Stop-Process</span> <span class="nv">$ServicePID</span> <span class="n">-Force</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PDI &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> <span class="p">+</span> <span class="s2">&quot; parado&quot;</span> +<span class="p">}</span> + + +<span class="nb">Write-host</span> <span class="s2">&quot;Inicializando Serviços&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Inicializando: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nb">Start-Service</span> <span class="nv">$srv</span> +<span class="p">}</span> +</code></pre></div> + +<p>Você tem algum script de automação? Compartilhe conosco :)</p>The power of PowerShell2020-09-21T19:00:00-03:002020-09-21T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-09-21:/en/the-power-of-powershell.html<p>As a long time Linux user, I've automated a few things with bash scripts and stayed away from PowerShell... I've moved to a Windows environment a few years ago and still, haven gave a shot to PS. But why not? I've made a few scripts to automate some tasks at …</p><p>As a long time Linux user, I've automated a few things with bash scripts and stayed away from PowerShell... I've moved to a Windows environment a few years ago and still, haven gave a shot to PS. But why not? I've made a few scripts to automate some tasks at a Protheus server.</p> +<p>I found the PS scripts being easy to read and understand. Bellow, we have a script to remove files filtering their extension (or no extension at all like the following script). </p> +<div class="highlight"><pre><span></span><code><span class="nb">Get-ChildItem</span> <span class="s2">&quot;C:\TOTVS\protheus_data\system&quot;</span> <span class="o">-File</span> <span class="n">-Filter</span> <span class="p">*.</span> <span class="p">|</span> <span class="nb">Move-Item</span> <span class="n">-Force</span> <span class="n">-Destination</span> <span class="p">{</span> + <span class="cm">&lt;# Diretory where the files will be moved. You can use Date formats to help name it #&gt;</span> + <span class="cm">&lt;# LastWriteTime proprtie from the current file #&gt;</span> + <span class="nv">$dir</span> <span class="p">=</span> <span class="s2">&quot;C:\bad_files\{0:yyyy\\MM\\dd}&quot;</span> <span class="o">-f</span> <span class="nv">$_</span><span class="p">.</span><span class="n">LastWriteTime</span> + <span class="nv">$null</span> <span class="p">=</span> <span class="n">mkdir</span> <span class="nv">$dir</span> <span class="n">-Force</span> + <span class="s2">&quot;$dir\</span><span class="p">$(</span><span class="nv">$_</span><span class="p">.</span><span class="n">Name</span><span class="p">)</span><span class="s2">&quot;</span> +<span class="p">}</span> +</code></pre></div> + +<p>Have you ever been in the need to remove files based on other file content? Bello a script where I read a file that has the names of files that I want to remove. </p> +<div class="highlight"><pre><span></span><code><span class="k">foreach</span><span class="p">(</span><span class="nv">$line</span> <span class="k">in</span> <span class="nb">Get-Content</span> <span class="p">.\</span><span class="n">Desktop</span><span class="p">\</span><span class="n">bad_files</span><span class="p">.</span><span class="n">txt</span><span class="p">)</span> <span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="nb">Test-Path</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">))</span> <span class="p">{</span> + <span class="nb">Remove-Item</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">)</span> + <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> + <span class="nb">echo </span><span class="nv">$line</span> <span class="p">+</span> <span class="s1">&#39; - File not found&#39;</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>And a bonus script to stop/start services (if you handle some Protheus Server, you know why I do that).</p> +<div class="highlight"><pre><span></span><code><span class="nv">$servicesNames</span> <span class="p">=</span> <span class="s1">&#39;app_main&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker1&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker2&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker3&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker4&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker5&#39;</span> + +<span class="nb">Write-host</span> <span class="s2">&quot;Stoping Services&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Stopping: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nv">$SrvPID</span> <span class="p">=</span> <span class="p">(</span><span class="nb">get-wmiobject</span> <span class="n">win32_service</span> <span class="p">|</span> <span class="nb">where </span><span class="p">{</span> <span class="nv">$_</span><span class="p">.</span><span class="n">name</span> <span class="o">-eq</span> <span class="nv">$srv</span><span class="p">}).</span><span class="n">processID</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PID: &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> + + <span class="cm">&lt;# Force if the proccess is stucked #&gt;</span> + <span class="nb">Stop-Process</span> <span class="nv">$SrvPID</span> <span class="n">-Force</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PDI &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> <span class="p">+</span> <span class="s2">&quot; stopped&quot;</span> +<span class="p">}</span> + + +<span class="nb">Write-host</span> <span class="s2">&quot;Starting Services&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Starting: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nb">Start-Service</span> <span class="nv">$srv</span> +<span class="p">}</span> +</code></pre></div> + +<p>Do you have any automated script? Share with us :)</p>Top Level Statement no C# 92020-07-29T19:00:00-03:002020-07-29T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-29:/pt/top_level_statement_csharp_9.html<p>Olá pessoal, venho hoje falar sobre uma novidade que estará disponível na versão 9 do C#. Toda vez que você deseja criar um novo projeto, você sempre tem o mesmo arquivo Main, com a mesma estrutura. Na próxima versão do C# (versão 9), nós teremos uma nova funcionalidade chamada <code>Top …</code></p><p>Olá pessoal, venho hoje falar sobre uma novidade que estará disponível na versão 9 do C#. Toda vez que você deseja criar um novo projeto, você sempre tem o mesmo arquivo Main, com a mesma estrutura. Na próxima versão do C# (versão 9), nós teremos uma nova funcionalidade chamada <code>Top Level Statement</code>. Com isto, poderemos programar a nossa aplicação sem toda aquela estrutura de <code>namespace/class/public void static main</code>. Veja o código abaixo.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="s">&quot;Hello World!&quot;</span><span class="p">);</span> +</code></pre></div> + +<p>Parece muito simples, não é? Com isto, você pode brincar com seu código e até mesmo programar uma pequena WEB API. Para começar a brincar com estas novas <em>features</em>, primeiramente faça o download do preview do <a href="https://dotnet.microsoft.com/download/dotnet/5.0">.net 5 SDK</a> e modifique o seu arquivo <code>.csproj</code> para apontar o framework para <code>.net5.0</code> e a versão de preview da linguagem. Abaixo como uma aplicação de console deve ficar.</p> +<div class="highlight"><pre><span></span><code><span class="nt">&lt;Project</span> <span class="na">Sdk=</span><span class="s">&quot;Microsoft.NET.Sdk&quot;</span><span class="nt">&gt;</span> + <span class="nt">&lt;PropertyGroup&gt;</span> + <span class="nt">&lt;OutputType&gt;</span>Exe<span class="nt">&lt;/OutputType&gt;</span> + <span class="nt">&lt;TargetFramework&gt;</span>net5.0<span class="nt">&lt;/TargetFramework&gt;</span> + <span class="nt">&lt;LangVersion&gt;</span>preview<span class="nt">&lt;/LangVersion&gt;</span> + <span class="nt">&lt;/PropertyGroup&gt;</span> +<span class="nt">&lt;/Project&gt;</span> +</code></pre></div> + +<p>E assim você está pronto para brincar com as novas funcionalidades que estão disponíveis na versão preview. Vamos programar uma aplicação simples que faz uma requisição na API da NASA e printe a Imagem do Dia no console. Não é nenhum código mirabolante, é simplesmente para exemplificar o quão simples uma simples chamada de API pode ser. Feito isto, porque não salvar a imagem como um arquivo? Ou então enviar essa imagem via telegram?</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Text.Json</span><span class="p">;</span> + +<span class="kt">var</span> <span class="n">API</span> <span class="p">=</span> <span class="s">&quot;https://api.nasa.gov/planetary/apod?hd=true&amp;api_key=DEMO_KEY&quot;</span><span class="p">;</span> +<span class="kt">var</span> <span class="n">cli</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + +<span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">cli</span><span class="p">.</span><span class="n">GetAsync</span><span class="p">(</span><span class="n">API</span><span class="p">);</span> +<span class="kt">var</span> <span class="n">data</span> <span class="p">=</span> <span class="n">JsonSerializer</span><span class="p">.</span><span class="n">Deserialize</span><span class="p">&lt;</span><span class="n">NasaApi</span><span class="p">&gt;(</span><span class="k">await</span> <span class="n">response</span><span class="p">.</span><span class="n">Content</span><span class="p">.</span><span class="n">ReadAsStringAsync</span><span class="p">());</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">Url</span><span class="p">);</span> +</code></pre></div> + +<p>Por hoje é isso. Fique de olho nas novas features que o C# 9 vai nos trazer. Já temos várias disponíveis hoje para testar, esta é apenas uma delas.</p>Top Level Statement in C# 92020-07-29T19:00:00-03:002020-07-29T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-29:/en/top_level_statement_csharp_9.html<p>Hey folks, I'm coming along to tell you a few things about the new feature of C# 9. Every time you want to start a new project, you always have the same Main File, with the same structure. At the next version of C# (version 9), we'll have a new …</p><p>Hey folks, I'm coming along to tell you a few things about the new feature of C# 9. Every time you want to start a new project, you always have the same Main File, with the same structure. At the next version of C# (version 9), we'll have a new feature called <code>Top Level Statement</code>. With that, we'll be able to code our app without any namespace/class/public void static main structure. Take a look at the code below.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="s">&quot;Hello World!&quot;</span><span class="p">);</span> +</code></pre></div> + +<p>It looks pretty simple, but with this, you can play around with your code, and even code a simple/tiny Web API. To start playing with the new features, firstly download the <a href="https://dotnet.microsoft.com/download/dotnet/5.0">.net 5 SDK</a> and change your <code>.csproj</code> file to target the .net 5 and language preview like bellow.</p> +<div class="highlight"><pre><span></span><code><span class="nt">&lt;Project</span> <span class="na">Sdk=</span><span class="s">&quot;Microsoft.NET.Sdk&quot;</span><span class="nt">&gt;</span> + <span class="nt">&lt;PropertyGroup&gt;</span> + <span class="nt">&lt;OutputType&gt;</span>Exe<span class="nt">&lt;/OutputType&gt;</span> + <span class="nt">&lt;TargetFramework&gt;</span>net5.0<span class="nt">&lt;/TargetFramework&gt;</span> + <span class="nt">&lt;LangVersion&gt;</span>preview<span class="nt">&lt;/LangVersion&gt;</span> + <span class="nt">&lt;/PropertyGroup&gt;</span> +<span class="nt">&lt;/Project&gt;</span> +</code></pre></div> + +<p>And you're ready to play with the awesome features available in the preview. Let's code a way to get the image of the day from NASA API and print the Picture of the Day. No awesome code here, it's really a way to show how simple a simple call could be. After here, why not save the image in a file? Maybe send the file over telegram?</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Text.Json</span><span class="p">;</span> + +<span class="kt">var</span> <span class="n">API</span> <span class="p">=</span> <span class="s">&quot;https://api.nasa.gov/planetary/apod?hd=true&amp;api_key=DEMO_KEY&quot;</span><span class="p">;</span> +<span class="kt">var</span> <span class="n">cli</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + +<span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">cli</span><span class="p">.</span><span class="n">GetAsync</span><span class="p">(</span><span class="n">API</span><span class="p">);</span> +<span class="kt">var</span> <span class="n">data</span> <span class="p">=</span> <span class="n">JsonSerializer</span><span class="p">.</span><span class="n">Deserialize</span><span class="p">&lt;</span><span class="n">NasaApi</span><span class="p">&gt;(</span><span class="k">await</span> <span class="n">response</span><span class="p">.</span><span class="n">Content</span><span class="p">.</span><span class="n">ReadAsStringAsync</span><span class="p">());</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">Url</span><span class="p">);</span> +</code></pre></div> + +<p>That's it for today folks. Keep an eye open for the awesome features C# 9 will bring to us, there's plenty more features already available.</p>Zabbix poller processes more than 75%2020-07-02T19:00:00-03:002020-07-02T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-02:/pt/zabbix-poller-processes-more-than-75.html<p>Este é o terceiro post sobre configurações para o Zabbix. Todas as alterações que eu sugiro nestes posts, são baseadas em um servidor com 50+ hosts. Outro problema que pode ocorrer em seu servidor, é o poller de informações ficar sobrecarregado pela quantidade de servidores que ele precisa pegar carga …</p><p>Este é o terceiro post sobre configurações para o Zabbix. Todas as alterações que eu sugiro nestes posts, são baseadas em um servidor com 50+ hosts. Outro problema que pode ocorrer em seu servidor, é o poller de informações ficar sobrecarregado pela quantidade de servidores que ele precisa pegar carga de informações juntamente com os servidores que não respondem a requisição. Abaixo duas imagens onde você pode ver o log e um gráfico onde aparecem os percentuais de uso dos poller. </p> +<p><img alt="Dashboard log sobre o processo do poller" src="/images/zabbix_pooler.png"></p> +<p><img alt="Gráfico mostrando o percentual de utilização de cada coletor" src="/images/zabbix_pooler_3.png"></p> +<p>Para resolver o problema acima, vamos voltar ao arquivo de configuração <code>zabbix_server.conf</code> e localizar duas variáveis, <code>StartPollers</code> e <code>StartPollersUnreachable</code>. Aumente o valor delas conforme necessário. Não existe um número mágico, você deve verificar o que melhor funciona para você. Mas tenha em mente que <code>StartPollersUnreachable</code> é responsável por aqueles hosts que não respondem ou não são localizados e irão segurar a thread do poller por mais tempo, causando uma fila e um maior processamento/tempo de atualização.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPollers</span> +<span class="c1"># Number of pre-forked instances of pollers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollers</span><span class="o">=</span><span class="s">20</span> + +<span class="c1">#...</span> + +<span class="c1">### Option: StartPollersUnreachable</span> +<span class="c1"># Number of pre-forked instances of pollers for unreachable hosts (including IPMI and Java).</span> +<span class="c1"># At least one poller for unreachable hosts must be running if regular, IPMI or Java pollers</span> +<span class="c1"># are started.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollersUnreachable</span><span class="o">=</span><span class="s">5</span> +</code></pre></div> + +<p>Depois da alteração, reinicie o serviço e espere alguns momentos e veja o seu dashboard novamente. Abaixo o efeito que a troca teve em um dos servidores que acompanho.</p> +<p><img alt="Gráfico mostrando os novos percentuais de utilização dos processos após as alterações" src="/images/zabbix_pooler_4.png"></p>Zabbix poller processes more than 75%2020-07-02T19:00:00-03:002020-07-02T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-02:/en/zabbix-poller-processes-more-than-75.html<p>Hey folks, this is the third post about tweaking the Zabbix configurations. All changes that I've suggested here were based on a Zabbix Server with 50+ hosts. Another thing that can happen to your server, it's the poller get overwhelmed by the amount of servers that need to be polled …</p><p>Hey folks, this is the third post about tweaking the Zabbix configurations. All changes that I've suggested here were based on a Zabbix Server with 50+ hosts. Another thing that can happen to your server, it's the poller get overwhelmed by the amount of servers that need to be polled plus the ones that are not responding. Bellow two images where you can see the log and the graphic where you can see the usage percent. </p> +<p><img alt="Dashboard log about the poller processes" src="/images/zabbix_pooler.png"></p> +<p><img alt="Graph showing the utilization percent of each collector" src="/images/zabbix_pooler_3.png"></p> +<p>To solve, let's go back to the <code>zabbix_server.conf</code> file and find two variables, <code>StartPollers</code> and <code>StartPollersUnreachable</code>. Increase them as needed. There's no magic number, you must see what works for you. But keep in mind that the <code>StartPollersUnreachable</code> is responsible for that host that can't be "reached" (of course) and will hold your poller more time.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPollers</span> +<span class="c1"># Number of pre-forked instances of pollers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollers</span><span class="o">=</span><span class="s">20</span> + +<span class="c1">#...</span> + +<span class="c1">### Option: StartPollersUnreachable</span> +<span class="c1"># Number of pre-forked instances of pollers for unreachable hosts (including IPMI and Java).</span> +<span class="c1"># At least one poller for unreachable hosts must be running if regular, IPMI or Java pollers</span> +<span class="c1"># are started.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollersUnreachable</span><span class="o">=</span><span class="s">5</span> +</code></pre></div> + +<p>After the change, restart the server and wait a few moments and take a look again at your dashboard. Bellow the effect that I've got.</p> +<p><img alt="Graph showing the new utilization percent of the processes after the changes" src="/images/zabbix_pooler_4.png"></p>Monitorando a disponibilidade de um Website com Azure Functions2020-06-22T19:00:00-03:002020-06-22T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-06-22:/pt/monitoring-website-heath-with-azure-functions.html<p>Algumas vezes você se depara com a necessidade de monitorar a disponibilidade de um website ou mudanças em seu conteúdo. É claro que temos diversas opções disponíveis no mercado, mas para fins de curiosidade, vamos programar o nosso próprio e ver o que podemos fazer. Primeiramente, tudo que você ver …</p><p>Algumas vezes você se depara com a necessidade de monitorar a disponibilidade de um website ou mudanças em seu conteúdo. É claro que temos diversas opções disponíveis no mercado, mas para fins de curiosidade, vamos programar o nosso próprio e ver o que podemos fazer. Primeiramente, tudo que você ver aqui, você pode utilizar o <a href="https://azure.microsoft.com/free/">tier gratuito</a> da Azure.</p> +<p>A ideia principal da nossa aplicação vai ser monitorar a disponibilidade do website (status code). Para criar um projeto de Azure Function, siga os passos abaixo.</p> +<p><img alt="Passos para criar um projeto Azure Functions" src="/images/azure_functions.gif"></p> +<p>Depois de criar o projeto, você vai ter alguns arquivos. Abra o arquivo principal (<code>HttpCheck.cs</code> no meu caso) e começe a programar. O arquivo principal terá uma função chamada <code>Run</code> e você pode progamar nela o seu request. Eu criei um método <code>async</code> para fazer as requisições e printar a saída diretamente no console. O código completo pode ser visto abaixo.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Linq</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Threading.Tasks</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs.Host</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Extensions.Logging</span><span class="p">;</span> + +<span class="k">namespace</span> <span class="nn">Sipmann.CheckMySite</span> +<span class="p">{</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">class</span> <span class="nc">HttpCheck</span> + <span class="p">{</span> + + <span class="k">private</span> <span class="k">static</span> <span class="k">async</span> <span class="n">Task</span> <span class="nf">GetTask</span><span class="p">(</span><span class="kt">string</span> <span class="n">url</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="kt">var</span> <span class="n">request</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpRequestMessage</span><span class="p">(</span><span class="n">HttpMethod</span><span class="p">.</span><span class="n">Get</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span> + + <span class="kt">var</span> <span class="n">client</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + <span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">client</span><span class="p">.</span><span class="n">SendAsync</span><span class="p">(</span><span class="n">request</span><span class="p">);</span> + + <span class="k">if</span> <span class="p">(</span><span class="n">response</span><span class="p">.</span><span class="n">IsSuccessStatusCode</span><span class="p">)</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="k">else</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} não esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> + +<span class="na"> [FunctionName(&quot;HttpCheck&quot;)]</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">void</span> <span class="nf">Run</span><span class="p">([</span><span class="n">TimerTrigger</span><span class="p">(</span><span class="s">&quot;0 */5 * * * *&quot;</span><span class="p">)]</span><span class="n">TimerInfo</span> <span class="n">myTimer</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="c1">// URL a verificar a saúde</span> + <span class="kt">var</span> <span class="n">urls</span> <span class="p">=</span> <span class="k">new</span><span class="p">[]{</span><span class="s">&quot;https://www.sipmann.com&quot;</span><span class="p">,</span> <span class="s">&quot;https://www.canezecanez.com.br&quot;</span><span class="p">};</span> + + <span class="c1">// Starta cada request e aguarda todos de uma vez só</span> + <span class="n">Task</span><span class="p">.</span><span class="n">WaitAll</span><span class="p">(</span><span class="n">urls</span><span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">url</span> <span class="p">=&gt;</span> <span class="n">GetTask</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">log</span><span class="p">)).</span><span class="n">ToArray</span><span class="p">());</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;Finalizou a fila&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>Agora você pode melhorar a função e talvez enviar alguns alertas. Como por exêmplo mensagens no Telegram quando um dos sites ficar off (status code 404).</p>Monitoring a Website heath with Azure Functions2020-06-22T19:00:00-03:002020-06-22T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-06-22:/en/monitoring-website-heath-with-azure-functions.html<p>Sometimes you get your self in need to monitor a website's health or it's content for changes. Of course, there's plenty of options out there, but for the sake of curiosity, let's code our own to see what we can do. First things first. Everything you'll see here, you can …</p><p>Sometimes you get your self in need to monitor a website's health or it's content for changes. Of course, there's plenty of options out there, but for the sake of curiosity, let's code our own to see what we can do. First things first. Everything you'll see here, you can achieve with the <a href="https://azure.microsoft.com/free/">free tier</a> of azure.</p> +<p>The main idea of our app will be to monitor website health (status code). To create a new Azure Function Project, follow the steps below.</p> +<p><img alt="Steps to create a azure function project" src="/images/azure_functions.gif"></p> +<p>After creating the project, you'll have a few files. Open your main file and start coding. The main file will have a function called <code>Run</code> and you can code your request method. I've created an <code>async</code> method to make the request and log the output at the console. The full code you can see below.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Linq</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Threading.Tasks</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs.Host</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Extensions.Logging</span><span class="p">;</span> + +<span class="k">namespace</span> <span class="nn">Sipmann.CheckMySite</span> +<span class="p">{</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">class</span> <span class="nc">HttpCheck</span> + <span class="p">{</span> + + <span class="k">private</span> <span class="k">static</span> <span class="k">async</span> <span class="n">Task</span> <span class="nf">GetTask</span><span class="p">(</span><span class="kt">string</span> <span class="n">url</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="kt">var</span> <span class="n">request</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpRequestMessage</span><span class="p">(</span><span class="n">HttpMethod</span><span class="p">.</span><span class="n">Get</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span> + + <span class="kt">var</span> <span class="n">client</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + <span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">client</span><span class="p">.</span><span class="n">SendAsync</span><span class="p">(</span><span class="n">request</span><span class="p">);</span> + + <span class="k">if</span> <span class="p">(</span><span class="n">response</span><span class="p">.</span><span class="n">IsSuccessStatusCode</span><span class="p">)</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="k">else</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} não esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> + +<span class="na"> [FunctionName(&quot;HttpCheck&quot;)]</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">void</span> <span class="nf">Run</span><span class="p">([</span><span class="n">TimerTrigger</span><span class="p">(</span><span class="s">&quot;0 */5 * * * *&quot;</span><span class="p">)]</span><span class="n">TimerInfo</span> <span class="n">myTimer</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="kt">var</span> <span class="n">urls</span> <span class="p">=</span> <span class="k">new</span><span class="p">[]{</span><span class="s">&quot;https://www.sipmann.com&quot;</span><span class="p">,</span> <span class="s">&quot;https://www.canezecanez.com.br&quot;</span><span class="p">};</span> + + <span class="c1">// Start every request and wait for them all to complete</span> + <span class="n">Task</span><span class="p">.</span><span class="n">WaitAll</span><span class="p">(</span><span class="n">urls</span><span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">url</span> <span class="p">=&gt;</span> <span class="n">GetTask</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">log</span><span class="p">)).</span><span class="n">ToArray</span><span class="p">());</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;Finalizou a fila&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>Now you can enhance the function and maybe send some alerts like a Telegram message when one of your sites went down.</p>Zabbix ICMP pinger processes more than 75%2020-05-25T16:00:00-03:002020-05-25T16:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-05-25:/pt/zabbix-icmp-pinger-processes-more-than-75.html<p>Então o seu systema de monitoramento creasceu e o seu Zabbix começou a printar "<em>Zabbix icmp pinger processes more than 75% busy</em>" no seu dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>Tudo que você tem a fazer é abrir o seu arquivo de configuração (<code>/etc/zabbix/zabbix_server.conf</code>) e localizar a tag chamada <code>StartPingers</code>. Ela deve …</p><p>Então o seu systema de monitoramento creasceu e o seu Zabbix começou a printar "<em>Zabbix icmp pinger processes more than 75% busy</em>" no seu dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>Tudo que você tem a fazer é abrir o seu arquivo de configuração (<code>/etc/zabbix/zabbix_server.conf</code>) e localizar a tag chamada <code>StartPingers</code>. Ela deve estar comentáda por padrão. Descomente a lina e define o seu valor para algo como 3 or 4. Deve resolver seu problema, ao menos até um próximo crescimento do seu monitoramento.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPingers</span> +<span class="c1"># Number of pre-forked instances of ICMP pingers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="nv">StartPingers</span><span class="o">=</span><span class="m">4</span> +</code></pre></div>Zabbix ICMP pinger processes more than 75%2020-05-25T16:00:00-03:002020-05-25T16:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-05-25:/en/zabbix-icmp-pinger-processes-more-than-75.html<p>So your monitoring sytems have grown and your zabbix started loggin "Zabbix icmp pinger processes more than 75% busy" at the dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>All you have to do is open your config file (<code>/etc/zabbix/zabbix_server.conf</code>) and find the a tag named <code>StartPingers</code>. It'll be commented by default. Uncomment it …</p><p>So your monitoring sytems have grown and your zabbix started loggin "Zabbix icmp pinger processes more than 75% busy" at the dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>All you have to do is open your config file (<code>/etc/zabbix/zabbix_server.conf</code>) and find the a tag named <code>StartPingers</code>. It'll be commented by default. Uncomment it and set it's value to something like 3 or 4. It should solve your problem.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPingers</span> +<span class="c1"># Number of pre-forked instances of ICMP pingers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="nv">StartPingers</span><span class="o">=</span><span class="m">4</span> +</code></pre></div> + +<h2>How many Pingers do I need?</h2> +<p>Well, there is no exact answer to this. If you set it too high, you'll be wasting resources. The best way to solve, it's increasing them as soon as you notice the percentage growing.</p>Zabbix Server Out of Memory2020-02-27T19:00:00-03:002020-02-27T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-02-27:/pt/zabbix-server-out-of-memory-crash.html<p>Você tem um servidor Zabbix crashando e observando o arquivo de log <code>/var/log/zabbix/zabbix_server.log</code> você localiza a seguinte mensagem referênciando falta de memória?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c …</code></pre></div><p>Você tem um servidor Zabbix crashando e observando o arquivo de log <code>/var/log/zabbix/zabbix_server.log</code> você localiza a seguinte mensagem referênciando falta de memória?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: please increase CacheSize configuration parameter +</code></pre></div> + +<p>Apesar da simples solução para o erro, isso acaba sendo um problema comum em servidores que tem uma certa quantidade de itens sendo monitorados (servidores, switches, firewalls, bancos, etc...). Para resolver o problema, vá até o ser arquivo <code>zabbix_server.conf</code> e procure pela propriedade <code>CacheSize</code> e sete o seu valor para uma quantidade maior. O seu valor default deve ser algo como 8M. Em clientes que tenham algo como 4 servidores, 7 firewalls/appliances, e algumas outras coisas (bancos, apps), 32M deve resolver o problema, mas você pode setar até algo como 8G (ressalto que mais memória nem sempre é melhor).</p> +<p>Até breve.</p>Zabbix Server Out of Memory2020-02-27T19:00:00-03:002020-02-27T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-02-27:/en/zabbix-server-out-of-memory-crash.html<p>Do you have a crashing Zabbix Server and looking through the log <code>/var/log/zabbix/zabbix_server.log</code> you see the following out of memory message?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c,line …</code></pre></div><p>Do you have a crashing Zabbix Server and looking through the log <code>/var/log/zabbix/zabbix_server.log</code> you see the following out of memory message?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: please increase CacheSize configuration parameter +</code></pre></div> + +<p>Besides the clear solution to the error, that's a common issue on servers that have a few monitoring items on it (servers, switches, firewalls, databases, etc...). To solve, go to your zabbix_server.conf and look for the CacheSize property and set it to a higher value. Its default should be 8M. At a customer that has somewhere between 4 servers, 7 firewalls/appliances, and a few other things, a 32M did the job, but you can set up to 8G.</p> +<p>See ya folks.</p>Removendo um usuário de uma base SQL Server2019-09-06T07:00:00-03:002020-10-21T18:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-09-06:/pt/removing-user-from-sql-server-database.html<p>O seu cliente lhe pede com urgência para <em>dropar</em> um usuário da sua base MsSQL Server, mas você trava com o seguinte aviso de erro:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>Se você não possui (ou no momento não consegue acesso …</p><p>O seu cliente lhe pede com urgência para <em>dropar</em> um usuário da sua base MsSQL Server, mas você trava com o seguinte aviso de erro:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>Se você não possui (ou no momento não consegue acesso) ao SSMS (SQL Server Management Studio) para verificar quais schemas ou objetos o usuário é "dono", a seguinte SQL vai resolver o problema.</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">schemas</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">principal_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="p">,</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">xtype</span><span class="w"> </span><span class="n">Tipo</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">sysobjects</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">uid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> +</code></pre></div> + +<p>Assim que você tiver os objetos/schemas que o usuário é dono, você pode alterar os mesmos com a seguinte SQL (exemplo de troca de schema):</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datareader</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"> </span><span class="c1">-- username do novo dono</span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datawriter</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>Então, você pode dropar o usuário <code>DROP USER [username]</code>.</p>Removing a user from SQL Server database who owns a schema2019-09-06T07:00:00-03:002020-10-21T18:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-09-06:/en/removing-user-from-sql-server-database.html<p>Your customer urge you to drop a user from the MsSQL Server database, but you stuck with the following related error:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>That means that the user owns one or more shcemas of your database. If …</p><p>Your customer urge you to drop a user from the MsSQL Server database, but you stuck with the following related error:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>That means that the user owns one or more shcemas of your database. If you don't have access to the SSMS to see which schema or objects the user owns, the following SQL should do the job.</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">schemas</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">principal_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="p">,</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">xtype</span><span class="w"> </span><span class="n">Tipo</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">sysobjects</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">uid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> +</code></pre></div> + +<p>Once you have the objects/schemas owned by the user, you can change them with the following SQL (schema change sample):</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datareader</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"> </span><span class="c1">-- new owner username</span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datawriter</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>Then you're ready to drop the user <code>DROP USER [username]</code></p> +<h2>How to list all the schemas and it's owners?</h2> +<p>Here's a script to list schemas and it's owners.</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +<span class="k">SELECT</span><span class="w"></span> +<span class="w"> </span><span class="nf">schema_name</span><span class="p">(</span><span class="nf">schema_id</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">schemaname</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="nf">user_name</span><span class="p">(</span><span class="n">schm</span><span class="p">.</span><span class="n">principal_id</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">username</span><span class="p">,</span><span class="w"> </span><span class="o">*</span><span class="w"></span> +<span class="k">FROM</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">schemas</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">schm</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div>Resolvendo java.net.SocketException: Protocol family unavailable em Java + Docker + WildFly2018-03-04T17:40:00-03:002018-03-04T17:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-04:/pt/socketException-protocol-family-unavailable-java-docker-wildfly.html<p>Nos últimos dias eu estou brincando com o <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> e decidi fazer o deploy de uma aplicação simples com Docker. Deveria funcionar bem, ao menos é o que pensava. Construí um container com o seguinte Dockerfile e ao invés de obter uma aplicação web, tudo que eu obtive foi …</p><p>Nos últimos dias eu estou brincando com o <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> e decidi fazer o deploy de uma aplicação simples com Docker. Deveria funcionar bem, ao menos é o que pensava. Construí um container com o seguinte Dockerfile e ao invés de obter uma aplicação web, tudo que eu obtive foi o erro <cite>java.net.SocketException: Protocol family unavailable</cite>.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">CMD</span> <span class="p">[</span><span class="s2">&quot;java&quot;</span><span class="p">,</span><span class="s2">&quot;-jar&quot;</span><span class="p">,</span><span class="s2">&quot;/opt/issues.jar&quot;</span><span class="p">]</span> +</pre></div> +<p>Por alguma razão, WildFly e Java, ambos decidiram utilizar um protocolo IPv6 na interface de rede no Docker invés da v4, então tudo que você tem que fazer é falar ao Java que deve dar preferência em utilizar o IPv4 com a seguinte configuração no seu arquivo pom.xml dentro da tag do plugin WildFly.</p> +<div class="highlight"><pre><span></span><span class="nt">&lt;plugin&gt;</span> + <span class="nt">&lt;groupId&gt;</span>org.wildfly.swarm<span class="nt">&lt;/groupId&gt;</span> + <span class="nt">&lt;artifactId&gt;</span>wildfly-swarm-plugin<span class="nt">&lt;/artifactId&gt;</span> + <span class="nt">&lt;version&gt;</span>2018.2.0<span class="nt">&lt;/version&gt;</span> + + <span class="c">&lt;!-- ADICIONE ISTO --&gt;</span> + <span class="nt">&lt;configuration&gt;</span> + <span class="nt">&lt;mainClass&gt;</span>org.wildfly.swarm.examples.netflix.ribbon.frontend.Main<span class="nt">&lt;/mainClass&gt;</span> + <span class="nt">&lt;properties&gt;</span> + <span class="nt">&lt;java.net.preferIPv4Stack&gt;</span>true<span class="nt">&lt;/java.net.preferIPv4Stack&gt;</span> + <span class="nt">&lt;/properties&gt;</span> + <span class="nt">&lt;/configuration&gt;</span> +</pre></div> +<p>Outra forma de solucionar o problema, é adicionando a mesma propriedade ao comando de run no seu Dockerfile. Então, fica a seu critério onde adicionar. Abaixo a solução utilizando o Dockerfile.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> +<span class="k">ENV</span> <span class="nv">JAVA_OPTS</span><span class="o">=</span><span class="s2">&quot;-Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true&quot;</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">ENTRYPOINT</span> <span class="nb">exec</span> java <span class="nv">$JAVA_OPTS</span> -jar /opt/issues.jar +</pre></div> +Solving java.net.SocketException: Protocol family unavailable on a Java + Docker + WildFly2018-03-04T17:40:00-03:002018-03-04T17:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-04:/en/socketException-protocol-family-unavailable-java-docker-wildfly.html<p>On the last days I've been playing with <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> and I decided to deploy a simple app with Docker. Should work fine, at least that was what I thought. Built a container with the following Dockerfile and instead of a working web app, all that I got was the …</p><p>On the last days I've been playing with <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> and I decided to deploy a simple app with Docker. Should work fine, at least that was what I thought. Built a container with the following Dockerfile and instead of a working web app, all that I got was the error <cite>java.net.SocketException: Protocol family unavailable</cite>.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">CMD</span> <span class="p">[</span><span class="s2">&quot;java&quot;</span><span class="p">,</span><span class="s2">&quot;-jar&quot;</span><span class="p">,</span><span class="s2">&quot;/opt/issues.jar&quot;</span><span class="p">]</span> +</pre></div> +<p>For some reason, WildFly and Java decided to use the IPv6 network interface from Docker instead the v4, so all you have to do is tell Java to prefer IPv4 instead with the following configuration option in your pom.xml file inside your WildFly plugin.</p> +<div class="highlight"><pre><span></span><span class="nt">&lt;plugin&gt;</span> + <span class="nt">&lt;groupId&gt;</span>org.wildfly.swarm<span class="nt">&lt;/groupId&gt;</span> + <span class="nt">&lt;artifactId&gt;</span>wildfly-swarm-plugin<span class="nt">&lt;/artifactId&gt;</span> + <span class="nt">&lt;version&gt;</span>2018.2.0<span class="nt">&lt;/version&gt;</span> + + <span class="c">&lt;!-- ADD THIS --&gt;</span> + <span class="nt">&lt;configuration&gt;</span> + <span class="nt">&lt;mainClass&gt;</span>org.wildfly.swarm.examples.netflix.ribbon.frontend.Main<span class="nt">&lt;/mainClass&gt;</span> + <span class="nt">&lt;properties&gt;</span> + <span class="nt">&lt;java.net.preferIPv4Stack&gt;</span>true<span class="nt">&lt;/java.net.preferIPv4Stack&gt;</span> + <span class="nt">&lt;/properties&gt;</span> + <span class="nt">&lt;/configuration&gt;</span> +</pre></div> +<p>Another way to solve is adding the same properties to the run command at the Dockerfile, so you choose where you'll add it. Bellow the Dockerfile solution.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> +<span class="k">ENV</span> <span class="nv">JAVA_OPTS</span><span class="o">=</span><span class="s2">&quot;-Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true&quot;</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">ENTRYPOINT</span> <span class="nb">exec</span> java <span class="nv">$JAVA_OPTS</span> -jar /opt/issues.jar +</pre></div> +Menu dinâmico com as apps do django2018-01-21T21:17:00-02:002018-01-21T21:17:00-02:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-01-21:/pt/menu-dinamico-com-apps-do-django.html<p>Digamos que sua empresa trabalha com Django desenvolvendo aplicações cujas apps são plugaveis e reutilizáveis. Por que não se aproveitar de um certo padrão de desenvolvimento para desenvolver menus que se modificam de acordo com as apps que estão no projeto? Como o objetivo aqui não é desenvolver uma app …</p><p>Digamos que sua empresa trabalha com Django desenvolvendo aplicações cujas apps são plugaveis e reutilizáveis. Por que não se aproveitar de um certo padrão de desenvolvimento para desenvolver menus que se modificam de acordo com as apps que estão no projeto? Como o objetivo aqui não é desenvolver uma app em si, vamos utilizar um projeto com algumas de modelo. Se desejar estudar mais sobre desenvolvimento Django, a documentação é muito boa, mas também temos blogs e sites excelentes sobre o assunto.</p> +<p>Para conseguirmos atingir esse objetivo, vamos utilizar a api <a class="reference external" href="https://docs.djangoproject.com/en/2.0/ref/settings/#installed-apps">Django.apps</a> que está disponível a partir da versão 1.7. +Com esta api, vamos percorrer as apps e se possível, criar um link para uma URL base de cada uma delas. Para começo, baixe os fontes do <a class="reference external" href="https://github.com/sipmann/menusapp-django/releases/tag/v1">projeto aqui</a>, rode o pip install do projeto e no fim, sua estrutura de pastas deve ficar como abaixo.</p> +<div class="highlight"><pre><span></span>../menusapp/ +├── comentarios +│ ├── templates +│ │ └── comentarios +│ │ └── listagem.html +│ ├── __init__.py +│ ├── admin.py +│ ├── apps.py +│ ├── models.py +│ ├── tests.py +│ ├── urls.py +│ └── views.py +├── core +│ ├── templates +│ │ └── core +│ │ └── base.html +│ │ └── listagem.html +│ ├── __init__.py +│ ├── admin.py +│ ├── apps.py +│ ├── models.py +│ ├── tests.py +│ ├── urls.py +│ └── views.py +├── menusapp +│ ├── __init__.py +│ ├── settings.py +│ ├── urls.py +│ └── wsgi.py +└── manage.py +</pre></div> +<p>Rode o projeto e veja como é o seu funcionamento. É na app core que temos a base do nosso HTML, então será nele que iremos trabalhar. Quando se trata de algo que será renderizado no template base, eu gosto muito de utilizar 'template tags' para facilitar. +Neste <a class="reference external" href="http://www.sipmann.com/editando-o-admin-do-django.html">link</a> tem mais um exemplo de utilização de 'template tag' caso esteja interessado.</p> +<p>Vamos então criar uma pasta chamada template_tag e dentro dela a nossa tag. Vamos chamá-la de menus_tag.py. Abaixo vamos ver um pouco da nossa tag. +O código é bem simples e auto explicativo, importamos as bibliotecas necessárias e realizamos o &#64;register da tag com o nome do template que será renderizado. +E por ultimo, retornamos uma tupla de dados para o template.</p> +<div class="livros"> + <div class="recomendacoes">Recomendações</div> + <a rel="noopener" href="https://www.amazon.com.br/gp/product/8575225081/ref=as_li_ss_il?ie=UTF8&linkCode=li2&tag=sipmann-20&linkId=c17fa3ac84e734741a3761e874d7d286" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=8575225081&Format=_SL160_&ID=AsinImage&MarketPlace=BR&ServiceVersion=20070822&WS=1&tag=sipmann-20" ></a><img src="https://ir-br.amazon-adsystem.com/e/ir?t=sipmann-20&l=li2&o=33&a=8575225081" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> + <a rel="noopener" href="https://www.amazon.com.br/gp/product/B074ZTLKHB/ref=as_li_ss_il?ie=UTF8&linkCode=li2&tag=sipmann-20&linkId=e2f37c07da2dc4111ae47854b205d01a" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B074ZTLKHB&Format=_SL160_&ID=AsinImage&MarketPlace=BR&ServiceVersion=20070822&WS=1&tag=sipmann-20" ></a><img src="https://ir-br.amazon-adsystem.com/e/ir?t=sipmann-20&l=li2&o=33&a=B074ZTLKHB" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> +</div><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">django</span> <span class="kn">import</span> <span class="n">template</span> +<span class="kn">from</span> <span class="nn">django.apps</span> <span class="kn">import</span> <span class="n">apps</span> + +<span class="c1">#Carrega o registro de template tags</span> +<span class="n">register</span> <span class="o">=</span> <span class="n">template</span><span class="o">.</span><span class="n">Library</span><span class="p">()</span> + +<span class="c1">#Registra o metodo a seguir como uma inclusion_tag indicando o template a ser renderizado</span> +<span class="nd">@register</span><span class="o">.</span><span class="n">inclusion_tag</span><span class="p">(</span><span class="s1">&#39;menus_por_app.html&#39;</span><span class="p">)</span> +<span class="k">def</span> <span class="nf">menus_por_app</span><span class="p">():</span> + <span class="n">lst</span> <span class="o">=</span> <span class="n">apps</span><span class="o">.</span><span class="n">get_app_configs</span><span class="p">()</span> + <span class="k">return</span> <span class="p">{</span> <span class="s1">&#39;lst_apps&#39;</span> <span class="p">:</span> <span class="n">lst</span> <span class="p">}</span> +</pre></div> +<p>O template está abaixo e é simplesmente um for percorrendo as apps e gerando uma lista com os seus menus. As outras propriedades você pode ver direto na <a class="reference external" href="https://docs.djangoproject.com/en/2.0/ref/applications/#django.apps.AppConfig">documentação</a>. +Algumas ressalvas para o que foi feito por questões de praticidade para uso posterior, utilizei um with para concatenar e gerar a url e criei um apelido para a url para validar a existência da mesma. Fora isto, nada de novo.</p> +<div class="highlight"><pre><span></span>{% if not lst_apps %} + <span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;</span>Nenhuma app<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span> + {% else %} + <span class="p">&lt;</span><span class="nt">ul</span><span class="p">&gt;</span> + {% for app in lst_apps %} + {% with app.name|add:&quot;:listagem&quot; as link %} + {% url link as the_url %} + {% if the_url %} + <span class="p">&lt;</span><span class="nt">li</span><span class="p">&gt;</span> + <span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;{% url link %}&quot;</span><span class="p">&gt;</span>{{ app.verbose_name|truncatechars:30 }}<span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span> + <span class="p">&lt;/</span><span class="nt">li</span><span class="p">&gt;</span> + {% endif %} + {% endwith %} + {% endfor %} + <span class="p">&lt;/</span><span class="nt">ul</span><span class="p">&gt;</span> + {% endif %} +</pre></div> +<img alt="Resultado final" src="/images/menu_apps.png" /> +<p>No final, o resultado obtido deve ser semelhante ao acima. Repare que está listando as duas aplicações. E acima de tudo, repare que só serão exibidos os links cuja app tenha um namespace de mesmo nome e uma url de nome <cite>listagem</cite>. +A estrutura final pode ser vista abaixo. Atente-se aos nomes tanto das pastas quanto dos arquivos, pois qualquer diferença pode causar o não funcionamento.</p> +<div class="highlight"><pre><span></span>../menusapp/ +├── comentarios +│ ├── templates +│ │ └── comentarios +│ │ └── listagem.html +│ ├── __init__.py +│ ├── admin.py +│ ├── apps.py +│ ├── models.py +│ ├── tests.py +│ ├── urls.py +│ └── views.py +├── core +│ ├── templates +│ │ └── core +│ │ │ └── base.html +│ │ │ └── listagem.html +│ │ └── menus_por_app.html +│ ├── templatetags +│ │ ├── __init__.py +│ │ └── menus_tag.py +│ ├── __init__.py +│ ├── admin.py +│ ├── apps.py +│ ├── models.py +│ ├── tests.py +│ ├── urls.py +│ └── views.py +├── menusapp +│ ├── __init__.py +│ ├── settings.py +│ ├── urls.py +│ └── wsgi.py +└── manage.py +</pre></div> +<p>Espero que tenham gostado, críticas e sugestões são bem-vindas. <a class="reference external" href="https://github.com/sipmann/menusapp-django/releases/tag/v2">Fontes do Projeto</a></p> +Scripts de inicialização no raspberry pi2017-10-08T18:00:00-03:002017-10-08T18:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2017-10-08:/pt/script-de-inicializacao-raspberry.html<p>Instalei essa semana o <a class="reference external" href="https://gitea.io">gitea</a> no meu raspberry pi B + e queria iniciar ele no boot... Não sou profundo conhecedor de linux, então, logo não sabia como fazer isto da melhor forma. +As versões atuais do Raspbian utilizam o <cite>systemd</cite> para gerenciar os serviços e confesso que nunca havia utilizado …</p><p>Instalei essa semana o <a class="reference external" href="https://gitea.io">gitea</a> no meu raspberry pi B + e queria iniciar ele no boot... Não sou profundo conhecedor de linux, então, logo não sabia como fazer isto da melhor forma. +As versões atuais do Raspbian utilizam o <cite>systemd</cite> para gerenciar os serviços e confesso que nunca havia utilizado o systemctl para nada.</p> +<p>Vamos começa criando um arquivo de serviço dentro da pasta <cite>/etc/systemd/system</cite>, vale ressaltar que a pasta <cite>system</cite> deve (em teoria) ser reservada para pacotes do sistema. +Vamos criar o arquivo com o nome <cite>gitea.service</cite> dentro da pasta antes mencionada. Abaixo podemos ver como ficou o arquivo e um detalhamento após ele.</p> +<div class="highlight"><pre><span></span><span class="o">[</span>Unit<span class="o">]</span> +<span class="nv">Description</span><span class="o">=</span>Gitea Service +<span class="nv">After</span><span class="o">=</span>network.target + +<span class="o">[</span>Service<span class="o">]</span> +<span class="nv">Type</span><span class="o">=</span>simple +<span class="nv">User</span><span class="o">=</span>root +<span class="nv">WorkingDirectory</span><span class="o">=</span>/root/ +<span class="nv">ExecStart</span><span class="o">=</span>/root/gitea web +<span class="nv">Restart</span><span class="o">=</span>on-abort +</pre></div> +<p>A composição do arquivo é bem simples, mas vamos a alguns detalhes. <cite>Type</cite> possui várias opções (simple, forking, oneshot), utilizamos <cite>simple</cite> uma vez que o nosso processo executara, permanecerá rodando e não executa um fork de processo. +Fork como acabo de comentar, deve ser utilizado caso o processo que for executando disparar mais processos. User irá definir o usuário do processo. <cite>WorkingDirectory</cite> definira onde o processo terá a sua base de execução, como o gitea esta localizada na pasta root, +aponto para lá. O ExecStart é bem simples e direto, deve chamar a execução do processo passando parametros caso seja necessário. O <cite>Restart</cite> é o que nos garantirá que o serviço permanecerá rodando caso haja algum imprevisto (exceto o fato de um usuário chamar o stop).</p> +<p>Salve o arquivo e vamos rodar um refresh para o SO perceber o novo serviço. Assim rodamos <cite>systemctl daemon-reload</cite>. Sempre que alterarmos um serviço ou criarmos um novo, este comando deve ser executado, caso contrário o próprio systemctl pode lhe alertar da necessidade. +Após reacarregar os serviços, vamos habilitar o serviço que criamos rodando <cite>systemctl enable gitea</cite>, feito isto temos alguns comandos uteis.</p> +<ul class="simple"> +<li>systemctl start gitea</li> +<li>systemctl stop gitea</li> +<li>systemctl status gitea</li> +</ul> +<p>O comando de status pode ser visto como exemplo abaixo.</p> +<div class="highlight"><pre><span></span>● gitea.service - Gitea Service + Loaded: loaded <span class="o">(</span>/etc/systemd/system/gitea.service<span class="p">;</span> enabled<span class="p">;</span> vendor preset: enabled<span class="o">)</span> + Active: active <span class="o">(</span>running<span class="o">)</span> since Wed <span class="m">2017</span>-10-04 <span class="m">00</span>:37:34 UTC<span class="p">;</span> 52min ago +Main PID: <span class="m">1087</span> <span class="o">(</span>gitea<span class="o">)</span> + CGroup: /system.slice/gitea.service + └─1087 /root/gitea web + +Oct <span class="m">04</span> <span class="m">00</span>:38:31 gitserver gitea<span class="o">[</span><span class="m">1087</span><span class="o">]</span>: <span class="o">[</span>Macaron<span class="o">]</span> <span class="m">2017</span>-10-04 <span class="m">00</span>:38:31: Completed /explore/users <span class="m">200</span> OK in <span class="m">80</span>.106173ms +Oct <span class="m">04</span> <span class="m">00</span>:38:31 gitserver gitea<span class="o">[</span><span class="m">1087</span><span class="o">]</span>: <span class="o">[</span>Macaron<span class="o">]</span> <span class="m">2017</span>-10-04 <span class="m">00</span>:38:31: Started GET /img/favicon.png <span class="k">for</span> <span class="m">192</span>.168.1.4 +Oct <span class="m">04</span> <span class="m">00</span>:38:31 gitserver gitea<span class="o">[</span><span class="m">1087</span><span class="o">]</span>: <span class="o">[</span>Macaron<span class="o">]</span> <span class="o">[</span>Static<span class="o">]</span> Serving /img/favicon.png +</pre></div> +<p>Após estes processos, você pode reiniciar seu raspberry que o gitea irá subir e funcionar. Ressalto que, preste atenção tanto no <cite>WorkingDirectory</cite> quanto no <cite>ExecStart</cite>, no caso do gitea, ele utiliza o workingdir e a forma de start para saber onde irá largar os arquivos por padrão, então ou você configura ele com caminhos absolutos ou cuidar na forma de start (ao menos é o que consegui pegar até agora).</p> +Cool Tools2017-09-17T14:00:00-03:002017-09-17T14:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2017-09-17:/pt/cool-tools.html<p>Com o passar do tempo você vai &quot;encontrando&quot; - e às vezes até mesmo desenvolvendo - algumas ferramentas que tornam o seu dia a dia como desenvolvedor mais fácil. Abaixo seguem algumas das minhas ferramentas que costumo usar. Ressalto que essa lista será (provavelmente) atualizada com o passar do tempo.</p> +<div class="section" id="https-www-gitkraken-com"> +<h2><a class="reference external" href="https://www.gitkraken.com">https://www …</a></h2></div><p>Com o passar do tempo você vai &quot;encontrando&quot; - e às vezes até mesmo desenvolvendo - algumas ferramentas que tornam o seu dia a dia como desenvolvedor mais fácil. Abaixo seguem algumas das minhas ferramentas que costumo usar. Ressalto que essa lista será (provavelmente) atualizada com o passar do tempo.</p> +<div class="section" id="https-www-gitkraken-com"> +<h2><a class="reference external" href="https://www.gitkraken.com">https://www.gitkraken.com</a></h2> +<p>Eu gosto muito de usar git, mas às vezes fico cansado de ter que usar só linha de comando, e achei no GitKreaken uma interface muito legal de se usar.</p> +</div> +<div class="section" id="http-paletton-com"> +<h2><a class="reference external" href="http://paletton.com">http://paletton.com</a></h2> +<p>Toda vez que você vai fazer um novo sistema/site, ou até mesmo trocar o layout de algum já existente, você acaba tendo que montar uma paleta de cores para se utilizar em todo o template.</p> +</div> +<div class="section" id="https-icomoon-io-app-select"> +<h2><a class="reference external" href="https://icomoon.io/app/#/select">https://icomoon.io/app/#/select</a></h2> +<p>Querendo usar ícones como fontes? Vá aí e gere apenas os arquivos que você vai realmente utilizar e economize alguns kbs.</p> +</div> +<div class="section" id="https-syncthing-net"> +<h2><a class="reference external" href="https://syncthing.net/">https://syncthing.net/</a></h2> +<p>Se você procura algum meio de sincronizar seus arquivos entre vários pcs e por algum motivo não quer usar um Google Drive ou DropBox, fica aqui a indicação deste cara.</p> +</div> +<div class="section" id="http-sqitch-org"> +<h2><a class="reference external" href="http://sqitch.org/">http://sqitch.org/</a></h2> +<p>Gerenciamento de versões de um banco de dados pode ser bem complicado e trabalhoso... Manter diversos ambientes (desenvolvimento, homologação, produção) vai dar um trabalho se não utilizar alguma ferramenta. Porque não usar o melhor de gerenciamento de versão (git) e uma ferramenta que se adequa ao que você precisa? sqitch é o cara nessas horas.</p> +</div> +<div class="section" id="http-www-setupmyproject-com"> +<h2><a class="reference external" href="http://www.setupmyproject.com/">http://www.setupmyproject.com/</a></h2> +<p>Preparação de projetos java, com frameworks, bibliotecas, nomenclatura, etc... Rende uma economia de tempo grandiosa e já vem tudo pronto :).</p> +</div> +<div class="section" id="https-www-pexels-com"> +<h2><a class="reference external" href="https://www.pexels.com/">https://www.pexels.com/</a></h2> +<p>Bom site para imagens free stock. Excelente local para conseguir imagens de alta qualidade.</p> +</div> +<div class="section" id="https-heml-io"> +<h2><a class="reference external" href="https://heml.io/">https://heml.io/</a></h2> +<p>&quot;HEML is an open source markup language for building responsive email.&quot; Melhor descrição impossível.</p> +</div> +<div class="section" id="https-www-mockapi-io"> +<h2><a class="reference external" href="https://www.mockapi.io/">https://www.mockapi.io/</a></h2> +<p>Desenvolva mocks para testar seu front-end. Eles geram inclusive uma carga de dados para ser utilizado nos seus testes.</p> +</div> +<div class="section" id="https-undraw-co"> +<h2><a class="reference external" href="https://undraw.co">https://undraw.co</a></h2> +<p>Needing some cool and free ilustrations? Take a look at it.</p> +</div> +<div class="section" id="https-www-audiotool-com-app"> +<h2><a class="reference external" href="https://www.audiotool.com/app/">https://www.audiotool.com/app/</a></h2> +<p>Ferramenta para criar sons, musicas e afins</p> +</div> +<div class="section" id="https-app-cloudskew-com"> +<h2><a class="reference external" href="https://app.cloudskew.com/">https://app.cloudskew.com/</a></h2> +<p>Desenhar projetos de cloud e afins</p> +</div> +<div class="section" id="https-lottiefiles-com"> +<h2><a class="reference external" href="https://lottiefiles.com/">https://lottiefiles.com/</a></h2> +<p>Veja por si mesmo</p> +</div> +Desenvolvendo apps para o FirefoxOS (Parte 1)2014-09-02T19:00:00-03:002014-09-02T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2014-09-02:/pt/desenvolvendo-app-firefoxos.html<h3>Requisitos mínimos?</h3> +<p>Para seguir este tutorial você precisará do <a href="http://nodejs.org/">Nodejs</a>. Utilizaremos ele para automatizar algumas tarefas, como a criação do nosso projeto e até mesmo o empacotamento da app. Estas automatizações se darão pela utilização de algumas aplicações como o <a href="http://yeoman.io/">Yeoman</a> e o <a href="http://gruntjs.com/">Grunt</a> .</p> +<p>Também será necessário o emulador do …</p><h3>Requisitos mínimos?</h3> +<p>Para seguir este tutorial você precisará do <a href="http://nodejs.org/">Nodejs</a>. Utilizaremos ele para automatizar algumas tarefas, como a criação do nosso projeto e até mesmo o empacotamento da app. Estas automatizações se darão pela utilização de algumas aplicações como o <a href="http://yeoman.io/">Yeoman</a> e o <a href="http://gruntjs.com/">Grunt</a> .</p> +<p>Também será necessário o emulador do <a href="https://www.mozilla.org/pt-BR/firefox/os/">FirefoxOS</a>, ele roda através do seu navegador Firefox. Para instalá-lo basta ir no menu <code>Ferramentas &gt; Desenvolvedor web &gt; App Manager</code>, nesta tela basta tentar iniciar o emulador, se não possuir um já instalado, você será solicitado a fazê-lo. Neste tutorial irei utilizar a versão 1.4.</p> +<h3>Preparando o ambiente</h3> +<p>Tendo o Node instalado, vamos instalar o yeoman e o gerador de app para Firefox OS. Atenção para o parâmetro '-g' no processo de instalação, com ele os seus pacotes serão instalados globalmente, e não só para a pasta em que esta o prompt.</p> +<div class="highlight"><pre><span></span><code><span class="err">npm install -g yo</span> +<span class="err">npm install -g generator-firefoxos-app</span> +</code></pre></div> + +<p>Com ambos os pacotes acima instalados, vamos dar início a criação da app. No seu diretório de projetos ou onde desejar criar a app chama o generator instalado.</p> +<div class="highlight"><pre><span></span><code><span class="err">yo firefoxos-app</span> +</code></pre></div> + +<p>Uma vez chamado esse generator, o mesmo irá fazer alguns questionamentos, o primeiro é claro será o nome da sua aplicação, seguido da descrição e o nome do desenvolvedor.</p> +<p>Após a execução do generator, você já terá uma estrutura para desenvolvimento pronta, inclusive com um html inicial, com todas as dependências já instaladas. Vale ressaltar agora algumas tarefas disponíveis no Gruntfile.</p> +<ul> +<li>Default: Irá gerar o pacote de distribuição</li> +<li>Test: Até a presente versão do generator (0.1.3) este processo irá simplesmente rodar o validador jsHint</li> +<li>Server: Irá disponibilizar na porta 9001 um simples servidor para testar a sua app</li> +</ul> +<p>Vamos testar a nossa app. Para tal, rode o comando <code>grunt server</code> e acesse no seu navegador <code>localhost:9001</code> e devemos ver a seguinte app. Caso nenhuma página seja exibida, revise os passos ateriores e verifique se nenhum erro ocorreu.</p> +<p><img alt="App inicial" src="/images/app_inicial.png"></p> +<p>Vale ressaltar que a sua app toda estará dentro de uma pasta também chamada <code>app</code>. Nela você encontrará os seus arquivos .html, .js, .css e demais. Antes de começarmos a codificar a nossa app, vamos ver como se instala a mesma.</p> +<h3>Instalando a app</h3> +<p>Para fins de teste, não é necessário rodar o comando <code>grunt</code>, sendo que ele irá testar o JS e compactar tudo em um arquivo .zip, basta apontar a instalação para a pasta <code>app</code> dentro do seu projeto. "Mas como eu faço isto?".</p> +<p>Indo novamente na <code>App Manager</code>, clicando na lateral esquerda, onde indica "Aplicativos", teremos então disponível no inferior da tela duas opções, vamos nos ater a utilizar a primeira (<code>Adicionar aplicativo hospedado</code>).</p> +<p>Clicando nesta opção vamos navegar até a pasta da app e clicar selecionada. Pronto.</p> +<p>Simples de se instalar, não acha? O Resultado final deve ser semelhante ao abaixo.</p> +<p><img alt="App inicial" src="/images/app_visual_1.png"></p> +<h3>Acessando uma API</h3> +<p>Quando vamos programar algo mais complexo, geralmente vamos utilizar algo como, câmera, rede, lista de contatos, armazenamento e outras possibilidades. Para utilizarmos essas APIs, precisamos - assim como no desenvolvimento para android - especificar para o usuário no momento de instalação. Estes dados de acesso ficam no arquivo <code>manifes.webapp</code>, se você ainda não deu uma olhada neste arquivo, é nele que fica armazenado dados da app, como nome, descrição, versão, localização de ícones e é claro as permissões que a mesma requer.</p> +<p>As permissões ficam na propriedade permissions, na forma de <code>"chave" : True</code>. Algumas das apis são:</p> +<ul> +<li>câmera</li> +<li>contacts</li> +<li>desktop-notification</li> +<li>storage</li> +</ul> +<p>Cada permissão vai mudar o tipo de app que você esta desenvolvendo, mas aí eu sugiro ler mais na MDN <a href="https://developer.mozilla.org/en-US/Apps/Build/App_permissions">aqui</a>. Esse é o básico para iniciar no desenvolvimento de app para FirefoxOS. Na parte dois, vou começar a passar um pouco de código.</p>Editando o Admin do Django2014-05-15T18:00:00-03:002014-05-15T18:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2014-05-15:/pt/editando-o-admin-do-django.html<p>Este artigo foi re-postado no grupo <a class="reference external" href="http://pythonclub.com.br/editando-o-admin-do-django.html">PythonClub</a>. Vamos falar um pouco sobre como customizar o admin do Django. Primeiramente porque? A resposta é bem simples, quero mostrar algo para o usuário sem que ele precise entrar nas apps e fazer alguma consulta para então tomar alguma ação. Alguns exêmplos para …</p><p>Este artigo foi re-postado no grupo <a class="reference external" href="http://pythonclub.com.br/editando-o-admin-do-django.html">PythonClub</a>. Vamos falar um pouco sobre como customizar o admin do Django. Primeiramente porque? A resposta é bem simples, quero mostrar algo para o usuário sem que ele precise entrar nas apps e fazer alguma consulta para então tomar alguma ação. Alguns exêmplos para isto seriam:</p> +<blockquote> +<ul class="simple"> +<li>Exibir as vendas do mês em forma de gráfico por região do país</li> +<li>Exibir os últimos comentários adicionados</li> +<li>Exibir log dos ultimos usuários cadastrados</li> +</ul> +</blockquote> +<p>O que faremos aqui será exibir os últimos comentários ainda não liberados de um sistema de blog. Vale lembrar que aqui não discutiremos sobre os primeiros passos da aplicação. Para seguirmos adiante, vamos assumir que já temos um projeto básico com uma estrutura simples, abaixo a estrutura inicial do nosso projeto.</p> +<div class="highlight"><pre><span></span>../blog/ +├── core +│ ├── __init__.py +│ ├── admin.py +│ ├── models.py +│ ├── tests.py +│ └── views.py +├── blog +│ ├── __init__.py +│ ├── settings.py +│ ├── urls.py +│ └── wsgi.py +└── manage.py +</pre></div> +<p>Para iniciarmos, precisamos da nossa tabela de comentários, vamos usar a mais simples e básica o possível.</p> +<table border="1" class="docutils"> +<colgroup> +<col width="50%" /> +<col width="50%" /> +</colgroup> +<thead valign="bottom"> +<tr><th class="head">Campo</th> +<th class="head">Tipo</th> +</tr> +</thead> +<tbody valign="top"> +<tr><td>nome</td> +<td>Varchar(30)</td> +</tr> +<tr><td>texto</td> +<td>Text</td> +</tr> +<tr><td>liberado</td> +<td>Boolean</td> +</tr> +<tr><td>data</td> +<td>Date</td> +</tr> +</tbody> +</table> +<p>Vamos seguir adiante e alterar a página inicial do admin para listar os últimos comentários de um simples sistema de blog. Para comerçar a editar o admin, precisamos inicialmente copiar o template que desejamos para a pasta uma pasta <cite>admin</cite> dentro ta pasta de templates do nosso projeto. Isto porque o Admin, não passa de uma app como outra qualquer, portanto o sistema de herança vai funcionar aqui, carregamento prioritariamente o seu template. Você pode conseguir o template que desejar (no nosso caso o index.html) dentro do projeto do Django mesmo, no meu caso &quot;C:\Django-1.6.3\django\contrib\admin\templates\admin&quot;.</p> +<div class="highlight"><pre><span></span>../blog/ +├── templates +│ ├── admin +│ │ └── index.html +├── core +</pre></div> +<p>Tire um tempo e brinque um pouco com este template e veja o que acontece se você alterar algumas coisa. Para adicionarmos a nossa listagem, vamos adicionar um painel lateral, para tal vamos adicionar o código abaixo antes do fechamento da ultima tag div. Nele podemos ver uma chamada para uma template_tag, portanto precisamos carrega-la no topo do template.</p> +<div class="highlight"><pre><span></span>{% load comentarios_tag %} +... +... +... +<span class="p">&lt;</span><span class="nt">div</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;module&quot;</span> <span class="na">id</span><span class="o">=</span><span class="s">&quot;ultimos-comentarios&quot;</span><span class="p">&gt;</span> + <span class="p">&lt;</span><span class="nt">h2</span><span class="p">&gt;</span>Ultimos Comentários<span class="p">&lt;/</span><span class="nt">h2</span><span class="p">&gt;</span> + <span class="p">&lt;</span><span class="nt">h3</span><span class="p">&gt;</span>Liberar<span class="p">&lt;/</span><span class="nt">h3</span><span class="p">&gt;</span> + {% comentarios_n_liberados %} +<span class="p">&lt;/</span><span class="nt">div</span><span class="p">&gt;</span> +</pre></div> +<p>Esta template trata-se da responsável por fazer a consulta na base de dados e renderizar a nossa lista, portanto ela é uma 'inclusion tag'. Se você não esta familiarizado com 'template tags', talvez queira dar uma olhada na <a class="reference external" href="https://docs.djangoproject.com/en/dev/howto/custom-template-tags/">documentação do django</a>.</p> +<p>Vamos então criar nossa template tag 'comentarios_n_liberados'. Primeiro devemos criar uma pasta chamada templatetags, dentro da nossa app core. Dentro ta pasta vamos inicializar um pacote python e criar o arquivo comentarios_tag.py. Nele precisamos declarar nosso metodo que deve se chamar 'comentarios_n_liberados' e nele fazer uma simples consulta ao banco buscando os comentários não liberados e por fim registrar a tag apontando para o template que será renderizado. Abaixo o código mais explicado.</p> +<div class="livros"> + <div class="recomendacoes">Recomendações</div> + <a rel="noopener nofollow" href="https://www.amazon.com.br/gp/product/8575225081/ref=as_li_ss_il?ie=UTF8&linkCode=li2&tag=sipmann-20&linkId=c17fa3ac84e734741a3761e874d7d286" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=8575225081&Format=_SL160_&ID=AsinImage&MarketPlace=BR&ServiceVersion=20070822&WS=1&tag=sipmann-20" ></a><img src="https://ir-br.amazon-adsystem.com/e/ir?t=sipmann-20&l=li2&o=33&a=8575225081" alt="Livro Pense em Python na Amazon" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> + <a rel="noopener nofollow" href="https://www.amazon.com.br/gp/product/B074ZTLKHB/ref=as_li_ss_il?ie=UTF8&linkCode=li2&tag=sipmann-20&linkId=e2f37c07da2dc4111ae47854b205d01a" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B074ZTLKHB&Format=_SL160_&ID=AsinImage&MarketPlace=BR&ServiceVersion=20070822&WS=1&tag=sipmann-20" ></a><img src="https://ir-br.amazon-adsystem.com/e/ir?t=sipmann-20&l=li2&o=33&a=B074ZTLKHB" alt="Livro Curso Intensivo de Python na Amazon" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> +</div><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">django</span> <span class="kn">import</span> <span class="n">template</span> +<span class="kn">from</span> <span class="nn">core</span> <span class="kn">import</span> <span class="n">models</span> + +<span class="c1">#Carrega o registro de template tags</span> +<span class="n">register</span> <span class="o">=</span> <span class="n">template</span><span class="o">.</span><span class="n">Library</span><span class="p">()</span> + +<span class="c1">#Registra o metodo a seguir como uma inclusion_tag indicando o template a ser renderizad</span> +<span class="nd">@register</span><span class="o">.</span><span class="n">inclusion_tag</span><span class="p">(</span><span class="s1">&#39;comentarios_n_liberados.html&#39;</span><span class="p">)</span> +<span class="k">def</span> <span class="nf">comentarios_n_liberados</span><span class="p">():</span> + <span class="n">comentarios</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">comentario</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">liberado</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">&#39;data&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">:</span><span class="mi">5</span><span class="p">]</span> + <span class="k">return</span> <span class="p">{</span> <span class="s1">&#39;comentarios&#39;</span> <span class="p">:</span> <span class="n">comentarios</span> <span class="p">}</span> +</pre></div> +<p>Abaixo o html do nosso template a ser renderizado, este deve estar dentro da pasta templates da nossa app core.</p> +<div class="highlight"><pre><span></span>{% if not comentarios %} + <span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;</span>Nenhum comentário novo<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span> +{% else %} + <span class="p">&lt;</span><span class="nt">ul</span><span class="p">&gt;</span> + {% for c in comentarios %} + <span class="p">&lt;</span><span class="nt">li</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;addlink&quot;</span><span class="p">&gt;</span> + <span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;{{ c.id }}&quot;</span><span class="p">&gt;</span>{{ c.texto|truncatechars:30 }}<span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span> + <span class="p">&lt;/</span><span class="nt">li</span><span class="p">&gt;</span> + {% endfor %} + <span class="p">&lt;/</span><span class="nt">ul</span><span class="p">&gt;</span> +{% endif %} +</pre></div> +<p>Com tudo isto feito, basta subir o seu servidor e ver o resultado final, que pode ser visto na imagem abaixo.</p> +<img alt="Resultado final" src="images/admin_modificado.png" /> +<p>Lembrando que aqui apenas mostrei como modificar o index do admin, para apenas listar dados do banco, mas você pode ir muito mais além. Abaixo fica a estrutura de diretórios final e um link para download do projeto funcionando.</p> +<div class="highlight"><pre><span></span>../blog/ +├── core +│ ├── templates +│ │ └── comentarios_n_liberados.html +│ ├── templatetag +│ │ └── comentarios_tag.py +│ ├── __init__.py +│ ├── admin.py +│ ├── models.py +│ ├── tests.py +│ └── views.py +├── blog +│ ├── __init__.py +│ ├── settings.py +│ ├── urls.py +│ └── wsgi.py +├── templates +│ ├── admin +│ │ └── index.html +└── manage.py +</pre></div> +<p>Espero que tenham gostado, criticas/sugestões são bem-vindas. <a class="reference external" href="https://github.com/sipmann/editando-django-admin">Fontes do Projeto</a></p> + \ No newline at end of file diff --git a/pt/feeds/all.atom.xml.gz b/pt/feeds/all.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..91aaf5cb4e06eafbc22249fa201d1b4d27183e89 GIT binary patch literal 33181 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

      pk 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 QA^)G>IBSRd97z@i0NK=bIsgCw literal 0 HcmV?d00001 diff --git a/pt/feeds/azure.atom.xml b/pt/feeds/azure.atom.xml new file mode 100644 index 000000000..68e83ebf9 --- /dev/null +++ b/pt/feeds/azure.atom.xml @@ -0,0 +1,51 @@ + +Sipmann - Azurehttps://www.sipmann.com/pt/2020-10-03T19:00:00-03:00Microsoft Contra Covid2020-10-03T19:00:00-03:002020-10-03T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-03:/pt/microsoft-against-covid.html

      <p>Você teve seu trabalho afetado pela pandemia do covid? Bom, na última semana eu postei no <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> sobre um Voucher para certificação gratuita que a Microsoft estava distribuindo durante o evento Microsoft Ignite. Depois disto, eu fiquei sabendo que eles também estão entregando grandes discontos para quem teve o seu …</p><p>Você teve seu trabalho afetado pela pandemia do covid? Bom, na última semana eu postei no <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> sobre um Voucher para certificação gratuita que a Microsoft estava distribuindo durante o evento Microsoft Ignite. Depois disto, eu fiquei sabendo que eles também estão entregando grandes discontos para quem teve o seu trabalho afetado pela pandemia do covid. </p> +<p>Para saber se você pode receber este desconto, acesse <a href="https://docs.microsoft.com/en-us/learn/certifications/skillingoffer">https://docs.microsoft.com/en-us/learn/certifications/skillingoffer</a>.</p>Monitorando a disponibilidade de um Website com Azure Functions2020-06-22T19:00:00-03:002020-06-22T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-06-22:/pt/monitoring-website-heath-with-azure-functions.html<p>Algumas vezes você se depara com a necessidade de monitorar a disponibilidade de um website ou mudanças em seu conteúdo. É claro que temos diversas opções disponíveis no mercado, mas para fins de curiosidade, vamos programar o nosso próprio e ver o que podemos fazer. Primeiramente, tudo que você ver …</p><p>Algumas vezes você se depara com a necessidade de monitorar a disponibilidade de um website ou mudanças em seu conteúdo. É claro que temos diversas opções disponíveis no mercado, mas para fins de curiosidade, vamos programar o nosso próprio e ver o que podemos fazer. Primeiramente, tudo que você ver aqui, você pode utilizar o <a href="https://azure.microsoft.com/free/">tier gratuito</a> da Azure.</p> +<p>A ideia principal da nossa aplicação vai ser monitorar a disponibilidade do website (status code). Para criar um projeto de Azure Function, siga os passos abaixo.</p> +<p><img alt="Passos para criar um projeto Azure Functions" src="/images/azure_functions.gif"></p> +<p>Depois de criar o projeto, você vai ter alguns arquivos. Abra o arquivo principal (<code>HttpCheck.cs</code> no meu caso) e começe a programar. O arquivo principal terá uma função chamada <code>Run</code> e você pode progamar nela o seu request. Eu criei um método <code>async</code> para fazer as requisições e printar a saída diretamente no console. O código completo pode ser visto abaixo.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Linq</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Threading.Tasks</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs.Host</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Extensions.Logging</span><span class="p">;</span> + +<span class="k">namespace</span> <span class="nn">Sipmann.CheckMySite</span> +<span class="p">{</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">class</span> <span class="nc">HttpCheck</span> + <span class="p">{</span> + + <span class="k">private</span> <span class="k">static</span> <span class="k">async</span> <span class="n">Task</span> <span class="nf">GetTask</span><span class="p">(</span><span class="kt">string</span> <span class="n">url</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="kt">var</span> <span class="n">request</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpRequestMessage</span><span class="p">(</span><span class="n">HttpMethod</span><span class="p">.</span><span class="n">Get</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span> + + <span class="kt">var</span> <span class="n">client</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + <span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">client</span><span class="p">.</span><span class="n">SendAsync</span><span class="p">(</span><span class="n">request</span><span class="p">);</span> + + <span class="k">if</span> <span class="p">(</span><span class="n">response</span><span class="p">.</span><span class="n">IsSuccessStatusCode</span><span class="p">)</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="k">else</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} não esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> + +<span class="na"> [FunctionName(&quot;HttpCheck&quot;)]</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">void</span> <span class="nf">Run</span><span class="p">([</span><span class="n">TimerTrigger</span><span class="p">(</span><span class="s">&quot;0 */5 * * * *&quot;</span><span class="p">)]</span><span class="n">TimerInfo</span> <span class="n">myTimer</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="c1">// URL a verificar a saúde</span> + <span class="kt">var</span> <span class="n">urls</span> <span class="p">=</span> <span class="k">new</span><span class="p">[]{</span><span class="s">&quot;https://www.sipmann.com&quot;</span><span class="p">,</span> <span class="s">&quot;https://www.canezecanez.com.br&quot;</span><span class="p">};</span> + + <span class="c1">// Starta cada request e aguarda todos de uma vez só</span> + <span class="n">Task</span><span class="p">.</span><span class="n">WaitAll</span><span class="p">(</span><span class="n">urls</span><span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">url</span> <span class="p">=&gt;</span> <span class="n">GetTask</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">log</span><span class="p">)).</span><span class="n">ToArray</span><span class="p">());</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;Finalizou a fila&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>Agora você pode melhorar a função e talvez enviar alguns alertas. Como por exêmplo mensagens no Telegram quando um dos sites ficar off (status code 404).</p> \ No newline at end of file diff --git a/pt/feeds/azure.atom.xml.gz b/pt/feeds/azure.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..f5741f03fcfd57fa991d6d256a0c19153108c416 GIT binary patch literal 2278 zcmVpU#mG}TjG&#$Yh zyQh2Sd6B~qjg?yMwRWOT3s5CGl`7k7Rj%LuZR^hdjcy+?1tL{;uQhP4+>PVY)6?km z^GKU4zSZe`86P-ZwD!ABx*Ye9WLXHMpbZD-mBDTthP$~`ConMB4{Yq1j}7EeqKmk6 zaSIIQdo7VWG)g!mwlU9aG@n(qv0$;0Ae|yod(6;c-kHZQOx-mWPR%J@^)BRhW zTb=e!r``Gdc;~C#PKW-|clzwcHA&Z2y|IL2S$k%T1XQtz@{U+(4WCt`Y^=C@M30ok$Ibq7Ww2 zFvdbR_RqUiV-R<(z%-#M$C!?Ri z;Sj-M1?2Re$OjrkADu`wl$Z-Bg-WrI0%*Wu`+grkMm9_lI?pov?o^0$EnbB_fN zfYm*NP!;e)pd*C|JQEh9SEIjc$c%86bON4L2m+>9L+iwlY?Ia**{h@?E7Qsd3{kVi=^1k%E5uni(XON5JJm+HhulSugxqH0$*&QTZ@&xOp!_C)5CG&9}r zqw#^;0H0~lqgkwvAx>DQRGMkdVrYuJmam$ez3cHcC=O@USxPy<$UId%E?)CBOcRQ< z@i6e%D`}u7bD4^i!@+3&5qp-PM$s)o{fBQVm3XhLTI_-}@?!fmFl`S|xIz0=(uXhd z?S9RBwG!C*b^F$>#wBnu_4_P=UgGY0PH0dV5Av)kgr(l^oECCeUX}wGQV>N>fI?nV zlgN(s5a!CjkJSTRK~bebjb4!i$_bndJk&>TQyszRuaM-zgjD0O(40xQ2_Qr7!t z$Sovc^m>SttSBiLXcEdH+rV0TCHvG4u;8RJQU^7+VJMhgX*A_1vYs-L($-SyF{3vn z(E)P13qdyL6DIGAb2Je=GO|EP^9b?8%2nfR7`(&N)+$vWUA>O0#j{Fo&*uHgkq6Gb zoJC1Kbo}$#xo;3d?RAn^jw`92slcfS87f*-f(}5YNQH`wQHd-?&g5*P08!?X0zDK| zJc<3%py^4(Zc^EHm8B@9xJ91uATW}qQCP{Fe?}_XG-W<>ZiAJX0AFg!$rh-z%IA8a z-uy)t8Bh}3Yds3&1qmCha z$#Gn1H4vDDq4*B9jo_e1n(2CA#@RQSIeUrue@9_H9AI)1CDzNY9|XV>=!Ml=;EN89 zUU8>1L1qNsFJMo~jQ&Q>AaqwML^2r=ImLKZ@Z(C&%bROPScV6`;?^d#Jq8KM)lsSjmtIIGQa^rUed?+_?zOcN_m)Rhve{K@;(qR47QWG~p!t5`# zAvICW?Zk7bEETc2IdG9sDNlKHM%`U;iTx~P=?UjmxUm_z(S50&eK6q<(M1gR52nB| zWmdsQK+&>`6k+FYRy zx2QClU^B#w+g6{NADkUgfm?2KQ02uu5zx3_M#x}-H%bgox- zp*xeL_nxS#)_7y4M-GiOvk{Z1a5$nUtlCOyIMe{cab>2}~ z+?f61R7kg`-`5A^5vugyQi@)G#VpDIn?RFu0BR~)yOJ;!Sf-*+lctmZbAu9Rx^20pJY9x zP0Y=yA=5s7GPL!ynI7+N8#2@~ZPb6)Cs5ZQ4cxk~>w#Q}9lhVpvC=i1|D5fDUH2}2`% zCT+u&5`*O&?C4E%gj{iuuzp?qky`SDJl{}ndKU8OVmpKR~GkxJz9Tvx#Nx4GCzU)Q*&Yed+XD4xAn zif1mO;#3Z&tzo#e&9o7-cXS2jgYmWOQ+J;&+Yw>%05^26aKO8J8>o02m2< A)Bpeg literal 0 HcmV?d00001 diff --git a/pt/feeds/firefoxos.atom.xml b/pt/feeds/firefoxos.atom.xml new file mode 100644 index 000000000..accdef647 --- /dev/null +++ b/pt/feeds/firefoxos.atom.xml @@ -0,0 +1,42 @@ + +Sipmann - FirefoxOShttps://www.sipmann.com/pt/2014-09-02T19:00:00-03:00Desenvolvendo apps para o FirefoxOS (Parte 1)2014-09-02T19:00:00-03:002014-09-02T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2014-09-02:/pt/desenvolvendo-app-firefoxos.html<h3>Requisitos mínimos?</h3> +<p>Para seguir este tutorial você precisará do <a href="http://nodejs.org/">Nodejs</a>. Utilizaremos ele para automatizar algumas tarefas, como a criação do nosso projeto e até mesmo o empacotamento da app. Estas automatizações se darão pela utilização de algumas aplicações como o <a href="http://yeoman.io/">Yeoman</a> e o <a href="http://gruntjs.com/">Grunt</a> .</p> +<p>Também será necessário o emulador do …</p><h3>Requisitos mínimos?</h3> +<p>Para seguir este tutorial você precisará do <a href="http://nodejs.org/">Nodejs</a>. Utilizaremos ele para automatizar algumas tarefas, como a criação do nosso projeto e até mesmo o empacotamento da app. Estas automatizações se darão pela utilização de algumas aplicações como o <a href="http://yeoman.io/">Yeoman</a> e o <a href="http://gruntjs.com/">Grunt</a> .</p> +<p>Também será necessário o emulador do <a href="https://www.mozilla.org/pt-BR/firefox/os/">FirefoxOS</a>, ele roda através do seu navegador Firefox. Para instalá-lo basta ir no menu <code>Ferramentas &gt; Desenvolvedor web &gt; App Manager</code>, nesta tela basta tentar iniciar o emulador, se não possuir um já instalado, você será solicitado a fazê-lo. Neste tutorial irei utilizar a versão 1.4.</p> +<h3>Preparando o ambiente</h3> +<p>Tendo o Node instalado, vamos instalar o yeoman e o gerador de app para Firefox OS. Atenção para o parâmetro '-g' no processo de instalação, com ele os seus pacotes serão instalados globalmente, e não só para a pasta em que esta o prompt.</p> +<div class="highlight"><pre><span></span><code><span class="err">npm install -g yo</span> +<span class="err">npm install -g generator-firefoxos-app</span> +</code></pre></div> + +<p>Com ambos os pacotes acima instalados, vamos dar início a criação da app. No seu diretório de projetos ou onde desejar criar a app chama o generator instalado.</p> +<div class="highlight"><pre><span></span><code><span class="err">yo firefoxos-app</span> +</code></pre></div> + +<p>Uma vez chamado esse generator, o mesmo irá fazer alguns questionamentos, o primeiro é claro será o nome da sua aplicação, seguido da descrição e o nome do desenvolvedor.</p> +<p>Após a execução do generator, você já terá uma estrutura para desenvolvimento pronta, inclusive com um html inicial, com todas as dependências já instaladas. Vale ressaltar agora algumas tarefas disponíveis no Gruntfile.</p> +<ul> +<li>Default: Irá gerar o pacote de distribuição</li> +<li>Test: Até a presente versão do generator (0.1.3) este processo irá simplesmente rodar o validador jsHint</li> +<li>Server: Irá disponibilizar na porta 9001 um simples servidor para testar a sua app</li> +</ul> +<p>Vamos testar a nossa app. Para tal, rode o comando <code>grunt server</code> e acesse no seu navegador <code>localhost:9001</code> e devemos ver a seguinte app. Caso nenhuma página seja exibida, revise os passos ateriores e verifique se nenhum erro ocorreu.</p> +<p><img alt="App inicial" src="/images/app_inicial.png"></p> +<p>Vale ressaltar que a sua app toda estará dentro de uma pasta também chamada <code>app</code>. Nela você encontrará os seus arquivos .html, .js, .css e demais. Antes de começarmos a codificar a nossa app, vamos ver como se instala a mesma.</p> +<h3>Instalando a app</h3> +<p>Para fins de teste, não é necessário rodar o comando <code>grunt</code>, sendo que ele irá testar o JS e compactar tudo em um arquivo .zip, basta apontar a instalação para a pasta <code>app</code> dentro do seu projeto. "Mas como eu faço isto?".</p> +<p>Indo novamente na <code>App Manager</code>, clicando na lateral esquerda, onde indica "Aplicativos", teremos então disponível no inferior da tela duas opções, vamos nos ater a utilizar a primeira (<code>Adicionar aplicativo hospedado</code>).</p> +<p>Clicando nesta opção vamos navegar até a pasta da app e clicar selecionada. Pronto.</p> +<p>Simples de se instalar, não acha? O Resultado final deve ser semelhante ao abaixo.</p> +<p><img alt="App inicial" src="/images/app_visual_1.png"></p> +<h3>Acessando uma API</h3> +<p>Quando vamos programar algo mais complexo, geralmente vamos utilizar algo como, câmera, rede, lista de contatos, armazenamento e outras possibilidades. Para utilizarmos essas APIs, precisamos - assim como no desenvolvimento para android - especificar para o usuário no momento de instalação. Estes dados de acesso ficam no arquivo <code>manifes.webapp</code>, se você ainda não deu uma olhada neste arquivo, é nele que fica armazenado dados da app, como nome, descrição, versão, localização de ícones e é claro as permissões que a mesma requer.</p> +<p>As permissões ficam na propriedade permissions, na forma de <code>"chave" : True</code>. Algumas das apis são:</p> +<ul> +<li>câmera</li> +<li>contacts</li> +<li>desktop-notification</li> +<li>storage</li> +</ul> +<p>Cada permissão vai mudar o tipo de app que você esta desenvolvendo, mas aí eu sugiro ler mais na MDN <a href="https://developer.mozilla.org/en-US/Apps/Build/App_permissions">aqui</a>. Esse é o básico para iniciar no desenvolvimento de app para FirefoxOS. Na parte dois, vou começar a passar um pouco de código.</p> \ No newline at end of file diff --git a/pt/feeds/firefoxos.atom.xml.gz b/pt/feeds/firefoxos.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..956d078c76f85c9948413d474affb89679b99c43 GIT binary patch literal 2597 zcmV+=3flD_iwFP!000021MOMejuXihzUL`QzF=9&?)Jb&3WLXJ7B*QT@e>AC$`vYi zm)kYlUDaDvZ5XcdDkM@?AaRBA1b&k|NxpNc+HM=evPqPyl^CY&uAlSsecw4%GrRk$ zsl{43udO*7on+IIP^Pe@Hr3gv3(LvxM|bDfW=o|?fuY8qjaDJFr+NPJ<;(2lt<1VA zzd4=$Ep8O>)whg!`qblXT{#6a&rogK|a&g{5hchyJdzVgbfZM{~ev_iJ6 z7p-(s*j=>5jVICtB~HHnm2oSFYfrHDWEX~2*oNRpT-$C@Yrp!um%Bl~DkicEE9>Sn zBO5h;C_A@#UuY}t$ws=$iUgNg&hKY=KOCVCvN}C*bG+N}^h;chDfC@~&8|eaY86Eg zp_pHs7e(RQ=RxuY>iX*}ONpvHmW-&ExB9^xV?Z6H1g5IX6bUl;JV)M3v3zQL~3g!Lgjngp(T`f!N zC|Ljc>pynWiMR}w`K+)eAVj~R<~P(FLCxWYy(TyIwXSQ)>1xB|+oydk%B_!PY=wSj z%9yj}EQK{Vx!%0>w1-!nFmkOb-Zah21S3itgudRqnbcM+B%THEWi0Y#IyMfKT=90w zInEjaeqA>09ddnFhG^xNYO#BD-nQbQG_q2T4eZw$BN((zpp3>Hi5>u#HoDOGy$jHo z5MVg}z!V|BYs4ku8Lh^UaYBC#v$p_(4w6cuSjyL%cW^5ckM{Wj|8l+}blz5~b1?WIj=BV}kEzAH+S=$vRojKE zDZ>gliedMg4@m^@i&CW;@l&S+XOOpT+He@OQm;i(OHYlSu2waE0wb2gICr3@kuOzdhsRsN6H%7^yk0|#<=%AlwB6Ulc7d9VAJCNR_tJt6u*5C{3T`sW_ z%_le$h>8{3BF0woaku;bJzG~+{0{^CydlEAjvj(*K)u?zITkim8clit2~e?U8Be(N z0cVt0dimYO#C3Jm>|ID^a)v&B_Y`F002(kT3~psv?nFv z;<(hcI&{3Nw~w`^$NQMy)!|e;AP-3e9g7=rhJcQhgVT#HMwnNN69;QNLr_kkkjS5; z4#<;wZ3TT8Q*mROon*JZj=j@XFBv9YH*F2n@MNl~8FIQdbz&OYX(BPksNH`WCcEQ3~ir1P(Ct%5*Hjw@a)F+3~^N9UaB%1H(tC zwTyCP_V@gBS6xt%;<-}P#2R$E$|Ek0c*UK9HYLUguz++6(%0|OkmO63VKaC zpv{sANCl5u_OgRFwvDH)9x^5|Rmfpuoyw~eH}+hB5mbg{s22gc5p+^Ol2`mRs$NN!KMY?;{mTBg5(RbaWc}jgQyLXncTRNT5RvqpKY4JJ zk$>)ZNQ@iMS~*@EkH_co&Hj9=YM53yw#8qM@eWYN{wW*!JB@RB$i(;-|G;!HX1|52db# zS~| +Sipmann - Javahttps://www.sipmann.com/pt/2018-03-04T17:40:00-03:00Resolvendo java.net.SocketException: Protocol family unavailable em Java + Docker + WildFly2018-03-04T17:40:00-03:002018-03-04T17:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-04:/pt/socketException-protocol-family-unavailable-java-docker-wildfly.html<p>Nos últimos dias eu estou brincando com o <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> e decidi fazer o deploy de uma aplicação simples com Docker. Deveria funcionar bem, ao menos é o que pensava. Construí um container com o seguinte Dockerfile e ao invés de obter uma aplicação web, tudo que eu obtive foi …</p><p>Nos últimos dias eu estou brincando com o <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> e decidi fazer o deploy de uma aplicação simples com Docker. Deveria funcionar bem, ao menos é o que pensava. Construí um container com o seguinte Dockerfile e ao invés de obter uma aplicação web, tudo que eu obtive foi o erro <cite>java.net.SocketException: Protocol family unavailable</cite>.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">CMD</span> <span class="p">[</span><span class="s2">&quot;java&quot;</span><span class="p">,</span><span class="s2">&quot;-jar&quot;</span><span class="p">,</span><span class="s2">&quot;/opt/issues.jar&quot;</span><span class="p">]</span> +</pre></div> +<p>Por alguma razão, WildFly e Java, ambos decidiram utilizar um protocolo IPv6 na interface de rede no Docker invés da v4, então tudo que você tem que fazer é falar ao Java que deve dar preferência em utilizar o IPv4 com a seguinte configuração no seu arquivo pom.xml dentro da tag do plugin WildFly.</p> +<div class="highlight"><pre><span></span><span class="nt">&lt;plugin&gt;</span> + <span class="nt">&lt;groupId&gt;</span>org.wildfly.swarm<span class="nt">&lt;/groupId&gt;</span> + <span class="nt">&lt;artifactId&gt;</span>wildfly-swarm-plugin<span class="nt">&lt;/artifactId&gt;</span> + <span class="nt">&lt;version&gt;</span>2018.2.0<span class="nt">&lt;/version&gt;</span> + + <span class="c">&lt;!-- ADICIONE ISTO --&gt;</span> + <span class="nt">&lt;configuration&gt;</span> + <span class="nt">&lt;mainClass&gt;</span>org.wildfly.swarm.examples.netflix.ribbon.frontend.Main<span class="nt">&lt;/mainClass&gt;</span> + <span class="nt">&lt;properties&gt;</span> + <span class="nt">&lt;java.net.preferIPv4Stack&gt;</span>true<span class="nt">&lt;/java.net.preferIPv4Stack&gt;</span> + <span class="nt">&lt;/properties&gt;</span> + <span class="nt">&lt;/configuration&gt;</span> +</pre></div> +<p>Outra forma de solucionar o problema, é adicionando a mesma propriedade ao comando de run no seu Dockerfile. Então, fica a seu critério onde adicionar. Abaixo a solução utilizando o Dockerfile.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> +<span class="k">ENV</span> <span class="nv">JAVA_OPTS</span><span class="o">=</span><span class="s2">&quot;-Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true&quot;</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">ENTRYPOINT</span> <span class="nb">exec</span> java <span class="nv">$JAVA_OPTS</span> -jar /opt/issues.jar +</pre></div> + \ No newline at end of file diff --git a/pt/feeds/java.atom.xml.gz b/pt/feeds/java.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..c7ceac6becbbf34cc5dd593f0ce925c09b92f10d GIT binary patch literal 1461 zcmV;m1xorKiwFP!000021MOJbZrer>efL*Pg(5E%NyTwnL!lHHwgWhTEx|I<21QY< z$fdL~xy$TDmpt`f3bb&5{6JszC;gJnE=kLBB}!@=6ag9_GRd7iGdtHqhA(DW3KJ?7 z6TH)S>bDv|c_d=SN1cYziFe$1(LD$gN@GA#t~!me)_FS!rqiiEedY@}3JzPXuY(gU zvPL)5OsBLvV0lJ32M=D62?>MZX_zv83u8%>0!5WDs*v_0kp;O98X#%fX^>P?$%&?j z8rYpX?YEYy;4NzP30mZ%(IuXuX|jZ3aks{VFu?WD;1MA+RMwt=&_L9kdusdFNu+hj}a4aN-`ox0?M=t1GgRq zl{f}dlTrJTE1FA`~xNde)2%u6HUW}Ng_Sk=`F*>hR2>vqS2lg^%lPW@EHX5h+UpvRUfJ<6ks+{oZI(T?v zuPcOGxAWz7?{Y;99?Pjlb(pq52fvMPy<-o5S9Tp7tcO4C_1~<*Yiw>*2TUnLmH!rl z8HoJh{U)gM@B6*MdF_!3Q{lLE+}h2$%d`5k=T7X0dZmX&2uPMce`iGDs^wkn-U7e5 zA3pYL`6=-q#bYm3Kd$<{$lqmR2AIM33oftwLIO!gw$vnfk5$&JcmUR~^Qw-96rU0Oh|e z5F;r}ei5(5K)UT$d_z?uqXsLe1KZUgA~nPG&>LV@2AfwpV2fE>Aa}K_d~;cgVcDI3 z=(o0+QipM{(U52bf+Ikgl!wqci>UBLhpE$W!C$CR_>h*61wH6B}+u4&xoo&kZ zjx82gyM7YKk}5@&li9$HK2J7$esy#Grr*1`y4ez$p%bSw8m$UicWsK}m+J!w-nuhy zEaEUIUw84nmuNZ?_PYd?S*Kyinf+{2J>FlS +Sipmann - Linuxhttps://www.sipmann.com/pt/2020-10-20T19:00:00-03:00Zabbix Running on Low Memory Mode2020-10-20T19:00:00-03:002020-10-20T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-20:/pt/zabbix-running-on-low-memory-mode.html<p>Olá pessoal! Trago hoje outro post sobre Zabbix. Este é sobre aumentar o cache do seu Zabbix Server. É perfeitamente comum (se você roda com as configurações padrões) receber avisos sobre <code>Zabbix value cache running on low memory mode</code> no seu dashboard ou arquivos de log.</p> +<p><img alt="Zabbix Dashboard alertando sobre problemas de memória" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache gráfico com 70% utilizado" src="/images/zabbix_cache_filling.png"></p> +<p>Para resolver, abra o …</p><p>Olá pessoal! Trago hoje outro post sobre Zabbix. Este é sobre aumentar o cache do seu Zabbix Server. É perfeitamente comum (se você roda com as configurações padrões) receber avisos sobre <code>Zabbix value cache running on low memory mode</code> no seu dashboard ou arquivos de log.</p> +<p><img alt="Zabbix Dashboard alertando sobre problemas de memória" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache gráfico com 70% utilizado" src="/images/zabbix_cache_filling.png"></p> +<p>Para resolver, abra o seu arquivo de configuração (<code>zabbix_server.conf</code>) e procure pela tag <em>CacheSize</em>. Descomente a linha e defina um valor maior que 8M (8M é o valor padrão). No meu caso, nós configuramos um cache de 100M. Depois da troca, reinicie o serviço para que o mesmo tome efeito.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: CacheSize</span> +<span class="c1"># Size of configuration cache, in bytes.</span> +<span class="c1"># Shared memory size for storing host, item and trigger data.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 128K-64G</span> +<span class="c1"># Default:</span> +<span class="na">CacheSize</span><span class="o">=</span><span class="s">100M #Descomente esta linha</span> +</code></pre></div> + +<p><img alt="Zabbix Dashboard resolved memory problem" src="/images/zabbix_low_memory_solved.png"></p> +<p>Até breve.</p>Zabbix poller processes more than 75%2020-07-02T19:00:00-03:002020-07-02T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-02:/pt/zabbix-poller-processes-more-than-75.html<p>Este é o terceiro post sobre configurações para o Zabbix. Todas as alterações que eu sugiro nestes posts, são baseadas em um servidor com 50+ hosts. Outro problema que pode ocorrer em seu servidor, é o poller de informações ficar sobrecarregado pela quantidade de servidores que ele precisa pegar carga …</p><p>Este é o terceiro post sobre configurações para o Zabbix. Todas as alterações que eu sugiro nestes posts, são baseadas em um servidor com 50+ hosts. Outro problema que pode ocorrer em seu servidor, é o poller de informações ficar sobrecarregado pela quantidade de servidores que ele precisa pegar carga de informações juntamente com os servidores que não respondem a requisição. Abaixo duas imagens onde você pode ver o log e um gráfico onde aparecem os percentuais de uso dos poller. </p> +<p><img alt="Dashboard log sobre o processo do poller" src="/images/zabbix_pooler.png"></p> +<p><img alt="Gráfico mostrando o percentual de utilização de cada coletor" src="/images/zabbix_pooler_3.png"></p> +<p>Para resolver o problema acima, vamos voltar ao arquivo de configuração <code>zabbix_server.conf</code> e localizar duas variáveis, <code>StartPollers</code> e <code>StartPollersUnreachable</code>. Aumente o valor delas conforme necessário. Não existe um número mágico, você deve verificar o que melhor funciona para você. Mas tenha em mente que <code>StartPollersUnreachable</code> é responsável por aqueles hosts que não respondem ou não são localizados e irão segurar a thread do poller por mais tempo, causando uma fila e um maior processamento/tempo de atualização.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPollers</span> +<span class="c1"># Number of pre-forked instances of pollers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollers</span><span class="o">=</span><span class="s">20</span> + +<span class="c1">#...</span> + +<span class="c1">### Option: StartPollersUnreachable</span> +<span class="c1"># Number of pre-forked instances of pollers for unreachable hosts (including IPMI and Java).</span> +<span class="c1"># At least one poller for unreachable hosts must be running if regular, IPMI or Java pollers</span> +<span class="c1"># are started.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollersUnreachable</span><span class="o">=</span><span class="s">5</span> +</code></pre></div> + +<p>Depois da alteração, reinicie o serviço e espere alguns momentos e veja o seu dashboard novamente. Abaixo o efeito que a troca teve em um dos servidores que acompanho.</p> +<p><img alt="Gráfico mostrando os novos percentuais de utilização dos processos após as alterações" src="/images/zabbix_pooler_4.png"></p>Zabbix ICMP pinger processes more than 75%2020-05-25T16:00:00-03:002020-05-25T16:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-05-25:/pt/zabbix-icmp-pinger-processes-more-than-75.html<p>Então o seu systema de monitoramento creasceu e o seu Zabbix começou a printar "<em>Zabbix icmp pinger processes more than 75% busy</em>" no seu dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>Tudo que você tem a fazer é abrir o seu arquivo de configuração (<code>/etc/zabbix/zabbix_server.conf</code>) e localizar a tag chamada <code>StartPingers</code>. Ela deve …</p><p>Então o seu systema de monitoramento creasceu e o seu Zabbix começou a printar "<em>Zabbix icmp pinger processes more than 75% busy</em>" no seu dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>Tudo que você tem a fazer é abrir o seu arquivo de configuração (<code>/etc/zabbix/zabbix_server.conf</code>) e localizar a tag chamada <code>StartPingers</code>. Ela deve estar comentáda por padrão. Descomente a lina e define o seu valor para algo como 3 or 4. Deve resolver seu problema, ao menos até um próximo crescimento do seu monitoramento.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPingers</span> +<span class="c1"># Number of pre-forked instances of ICMP pingers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="nv">StartPingers</span><span class="o">=</span><span class="m">4</span> +</code></pre></div>Zabbix Server Out of Memory2020-02-27T19:00:00-03:002020-02-27T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-02-27:/pt/zabbix-server-out-of-memory-crash.html<p>Você tem um servidor Zabbix crashando e observando o arquivo de log <code>/var/log/zabbix/zabbix_server.log</code> você localiza a seguinte mensagem referênciando falta de memória?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c …</code></pre></div><p>Você tem um servidor Zabbix crashando e observando o arquivo de log <code>/var/log/zabbix/zabbix_server.log</code> você localiza a seguinte mensagem referênciando falta de memória?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: please increase CacheSize configuration parameter +</code></pre></div> + +<p>Apesar da simples solução para o erro, isso acaba sendo um problema comum em servidores que tem uma certa quantidade de itens sendo monitorados (servidores, switches, firewalls, bancos, etc...). Para resolver o problema, vá até o ser arquivo <code>zabbix_server.conf</code> e procure pela propriedade <code>CacheSize</code> e sete o seu valor para uma quantidade maior. O seu valor default deve ser algo como 8M. Em clientes que tenham algo como 4 servidores, 7 firewalls/appliances, e algumas outras coisas (bancos, apps), 32M deve resolver o problema, mas você pode setar até algo como 8G (ressalto que mais memória nem sempre é melhor).</p> +<p>Até breve.</p> \ No newline at end of file diff --git a/pt/feeds/linux.atom.xml.gz b/pt/feeds/linux.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..d51d9f63d2f3426c613bb8b7cc4277ff9529a8bf GIT binary patch literal 2954 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 A-v9sr literal 0 HcmV?d00001 diff --git a/pt/feeds/mauricio-camargo-sipmann.atom.xml b/pt/feeds/mauricio-camargo-sipmann.atom.xml new file mode 100644 index 000000000..183dab218 --- /dev/null +++ b/pt/feeds/mauricio-camargo-sipmann.atom.xml @@ -0,0 +1,829 @@ + +Sipmann - Maurício Camargo Sipmannhttps://www.sipmann.com/pt/2020-12-21T13:30:00-03:00Monitorando restarts do MySQL com PowerShell2020-12-21T13:30:00-03:002020-12-21T13:30:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-21:/pt/monitoring-mysql-restarts-with-powershell.html<p>Bom, chegou a hora para mais um script PowerShell. Se você ainda não viu os outros, de uma olhada no link abaixo.</p> +<ul> +<li><a href="https://www.sipmann.com/pt/monitoring-mysql-replication-with-powershell.html">Monitorando status de replicação do MySQL com PowerShell</a></li> +</ul> +<p>Este aqui é um script bem simples, mas novamente, se seu cliente não possui um servidor Zabbix ou não permite …</p><p>Bom, chegou a hora para mais um script PowerShell. Se você ainda não viu os outros, de uma olhada no link abaixo.</p> +<ul> +<li><a href="https://www.sipmann.com/pt/monitoring-mysql-replication-with-powershell.html">Monitorando status de replicação do MySQL com PowerShell</a></li> +</ul> +<p>Este aqui é um script bem simples, mas novamente, se seu cliente não possui um servidor Zabbix ou não permite que você configure um para realizar este monitoramento, um conjunto de scripts pode ser bem útil. Primeiramente nós executamos uma query báscia <code>SHOW GLOBAL STATUS LIKE 'Uptime'</code>, com ela nós conseguimos capturar exatamente o que nós estamos procurando.</p> +<p>Se por alguma razão o comando falhar (verificamos atravez da variábel global <code>$lastExitCode</code>), nós mandamos um e-mail lhe avisando sobre o problema ocorrido.</p> +<p>E então, nós chegamos à parte onde fazemos o parse do valor obtido, esta parte é bem similar ao parse que codificamos no primeiro post sobre monitoramento utilizando PowerShell. Nós basicamentes procuramos pela linha contendo <code>Value</code>, separamos por espaço e então parseamos a segunda posição em um inteiro. Então tudo que precisamos fazer é verificar se o valor parseado é menor que o nosso threshold, se for menor, nós mandamos um e-mail.</p> +<div class="highlight"><pre><span></span><code><span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;maurio[at]sipmann.com&#39;</span> +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio[at]sipmann.com&#39;</span> +<span class="nv">$MysqlHost</span> <span class="p">=</span> <span class="s1">&#39;127.0.0.1&#39;</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;123&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-h</span> <span class="nv">$MysqlHost</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s2">&quot;SHOW GLOBAL STATUS LIKE &#39;Uptime&#39; \G&quot;</span><span class="p">)</span> + +<span class="cm">&lt;# Unable to execute the sql Command #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$lastExitCode</span> <span class="o">-eq</span> <span class="n">1</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Connection problem&#39;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;Connection problem on host ${MysqlHost}&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> + <span class="n">exit</span> +<span class="p">}</span> + +<span class="nv">$UpTime</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Value:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="cm">&lt;# If the uptime is lower then 20 minutes #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$UpTime</span> <span class="o">-lt</span> <span class="n">1200</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s2">&quot;MySQL Restarted&quot;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;MySQL host ${MysqlHost} restarted less than 20 minutes ago&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> +</code></pre></div> + +<p>Este script (e os outros que eu utilizo) estão disponíveis no meu GitHub <a href="https://github.com/sipmann/PowerShellScripts">aqui</a>. Tenha em mente que os scripts localizados no GitHub, são um pouco diferentes do que exibido aqui. Espero que tenha achado útil.</p>Trocando a senha de um usuário do MySQL sem downtime da aplicação2020-12-09T13:40:00-03:002020-12-09T13:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-09:/pt/mysql-dual-password-functionality.html<p>Você deseja trocar a senha de um usuário do MySQL que está sendo utilizado por uma aplicação e não sofrer nenhum downtime? Bom, a versão 8.0.14 do MySQL foi liberada com uma feature chamada <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, com esta feature você pode alterar a senha de um usuário …</p><p>Você deseja trocar a senha de um usuário do MySQL que está sendo utilizado por uma aplicação e não sofrer nenhum downtime? Bom, a versão 8.0.14 do MySQL foi liberada com uma feature chamada <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, com esta feature você pode alterar a senha de um usuário mantendo a anterior ainda funcionando como uma forma de "backup". Desta forma, você ainda conseguirá autenticar com o usuário utilizando tanto a nova senha, quanto a anterior. Com isto, o seu processo de troca de senha fica algo como:</p> +<p>1) Troque a senha mantendo a anterior;</p> +<p>2) Faça o Deploy da nova configuração na sua aplicação/cluster;</p> +<p>3) Descarte a senha anterior.</p> +<p>Para alterar a senha mantendo a anterior, você deve rodar o seguinte comando:</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">IDENTIFIED</span> <span class="k">BY</span> <span class="s1">&#39;new_password&#39;</span> <span class="n">RETAIN</span> <span class="n">CURRENT</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>Para descartar a senha antiga, rode o seguinte:</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">DISCARD</span> <span class="n">OLD</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>E pronto. Espero que isto lhe ajude a evitar downtimes e dores de cabeça :)</p>Apache Nifi JSON to SQL removendo underline2020-12-02T14:00:00-03:002020-12-02T14:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-02:/pt/apache-nifi-json-to-sql-replacing-underscore.html<p>Recentemente eu estava desenvolvendo alguns processos de ETL com o Apache NiFi. Mas após alguns minutos desenhando o meu fluxo, eu vi um comportamento estranho do componente ConvertJSONToSQL, que estava substituindo os underline ('_') do nome de um campo utilizado na condição da SQL (eu estava preparando um UPDATE). Aquilo …</p><p>Recentemente eu estava desenvolvendo alguns processos de ETL com o Apache NiFi. Mas após alguns minutos desenhando o meu fluxo, eu vi um comportamento estranho do componente ConvertJSONToSQL, que estava substituindo os underline ('_') do nome de um campo utilizado na condição da SQL (eu estava preparando um UPDATE). Aquilo estava estranho, uma vez que na definição do SET da SQL, o nome do campo permanecia inalterado. Depois de algumas pesquisas, achei uma doc que a propriedade (veja abaixo) <code>Translate Field Names</code> era a responsável por este comportamento estranho.</p> +<p><img alt="Apache NiFi JSONToSQL config" src="/images/apache_nifi_jsontosql.png"></p> +<p>Antes de definir a propriedade como <strong>FALSE</strong>, esteja ciente que as propriedades do seu JSON devem ser exatamente iguais aos nomes dos campos da sua tabela.</p>Bloqueando um usuário do SQL Server baseado em uma tabela de horários2020-11-14T07:00:00-03:002020-11-14T07:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-11-14:/pt/blocking-user-on-sql-server-based-on-schedule.html<p>Ok, algum tempo atrás, eu postei sobre como você pode impor limites às conexões do SQL Server utilizando o <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. Mas, e se você não pode utilizar ele? Você sempre pode bloquear logins usando uma trigger, mas eu não gosto da ideia de ter um select rodando a cada …</p><p>Ok, algum tempo atrás, eu postei sobre como você pode impor limites às conexões do SQL Server utilizando o <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. Mas, e se você não pode utilizar ele? Você sempre pode bloquear logins usando uma trigger, mas eu não gosto da ideia de ter um select rodando a cada login. Então, eu cheguei a esta solução, utilizando uma stored procedure, uma tabela e o Agent.</p> +<p>A ideia principal é armazenar o horário em que um usuário deve ser bloqueado pelo Agent. Abaixo você pode ver a criação da tabela:</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">Id</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/* horário de inicio do bloqueio */</span><span class="w"></span> +<span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/*horário de termino */</span><span class="w"></span> +<span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="k">DEFAULT</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="cm">/* 0 = desbloqueado, 1 = bloqueado */</span><span class="w"></span> +<span class="w"> </span><span class="k">PRIMARY</span><span class="w"> </span><span class="k">KEY</span><span class="w"> </span><span class="p">(</span><span class="n">Id</span><span class="p">)</span><span class="w"></span> +<span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="cm">/* regra para Não bloquear o usuário SA */</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_users</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">LoginName</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;sa&#39;</span><span class="p">));</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_hora_final_maior</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="n">HrInicio</span><span class="p">);</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_status_bloqueio</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">Bloqueado</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">));</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="k">SEQUENCE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">seq_HorariosBloqueio</span><span class="w"> </span><span class="k">START</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">INCREMENT</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>Depois de criar a tabela, vamos verificar a procedure que vai fazer todo o trabalho de habilitar/desabilitar os usuários. Fique ciente que, nesta procedure, eu defini o nome do banco onde a tabela está armazenada. Você pode substituir o nome <code>DBATOOLS</code> pelo o nome da sua base.</p> +<div class="highlight"><pre><span></span><code><span class="k">IF</span><span class="w"> </span><span class="nf">OBJECT_ID</span><span class="p">(</span><span class="s1">&#39;dbo.sp_ValidarLogin&#39;</span><span class="p">)</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="k">NULL</span><span class="w"></span> +<span class="w"> </span><span class="k">EXEC</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;CREATE PROCEDURE dbo.sp_ValidarLogin AS RETURN 0;&#39;</span><span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="k">ALTER</span><span class="w"> </span><span class="k">PROC</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">sp_ValidarLogin</span><span class="w"></span> +<span class="k">AS</span><span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">);</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nf">CAST</span><span class="p">(</span><span class="nf">GETDATE</span><span class="p">()</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="cm">/* Bloqueia os que ainda não estiverem bloqueados de acordo com a hora atual */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">&#39; DISABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Bloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> + + +<span class="w"> </span><span class="cm">/* Libera quem estava bloqueado */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="s1">&#39; ENABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Unbloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="k">END</span><span class="p">;</span><span class="w"></span> +</code></pre></div> + +<p>Certo, então agora tudo que temos que fazer é definir o job no Agent para rodar a procedure de minuto em minuto. Novamente, a ideia principal é chamar a procedure quando um usuário deve ser bloqueado e quando deve ser desbloqueado.</p> +<div class="highlight"><pre><span></span><code><span class="err"> -- Vai bloquear o usuário protheus das 10 AM até 15 PM</span> +<span class="err"> INSERT INTO dbo.HorariosBloqueio (Id, LoginName, HrInicio, HrTermino) VALUES (NEXT VALUE FOR seq_HorariosBloqueio, &#39;protheus&#39;, &#39;10:00:00&#39;, &#39;15:00:00&#39;);</span> +</code></pre></div>Como definir as colunas no select utilizando Entity Framework2020-10-28T19:00:00-03:002020-10-28T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-28:/pt/select_specific_fields_with_efcore.html<p>Então, você utiliza Entity Framework Core e geralmente faz o seu selecto da seguinte forma, talvez você está retornando muitos dados.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Rodando a query acima, em uma base de testes você obtem o seguinte resultado, veja quantas …</p><p>Então, você utiliza Entity Framework Core e geralmente faz o seu selecto da seguinte forma, talvez você está retornando muitos dados.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Rodando a query acima, em uma base de testes você obtem o seguinte resultado, veja quantas colunas estão retornando da sua base de dados.</p> +<p><img alt="Print com todas as colunas" src="/images/ef_core_allcolumns.png"></p> +<p>No meu caso, eu só pretendo ter de volta as colunas Title, PublishedData e uma pequena descrição. Então para selecionar apenas estes campos, nós temos algumas opções. Na primeira, nós vamos definir os campos e retornar um objeto do tipo Dynamic. A segunda forma, é dar ao .NET o objeto a ser retornado, pode ser por exêmplo um DTO.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + + <span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="k">new</span> <span class="p">{</span><span class="n">p</span><span class="p">.</span><span class="n">ProductID</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitPrice</span><span class="p">})</span> + <span class="c1">//.Select(p =&gt; new ProductDTO {p.ProductID, p.ProductName, p.UnitsInStock, p.UnitPrice})</span> + + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p><img alt="Print com menos colunas e também menor quantidade de dados" src="/images/ef_core_less_columns.png"></p>Zabbix Running on Low Memory Mode2020-10-20T19:00:00-03:002020-10-20T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-20:/pt/zabbix-running-on-low-memory-mode.html<p>Olá pessoal! Trago hoje outro post sobre Zabbix. Este é sobre aumentar o cache do seu Zabbix Server. É perfeitamente comum (se você roda com as configurações padrões) receber avisos sobre <code>Zabbix value cache running on low memory mode</code> no seu dashboard ou arquivos de log.</p> +<p><img alt="Zabbix Dashboard alertando sobre problemas de memória" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache gráfico com 70% utilizado" src="/images/zabbix_cache_filling.png"></p> +<p>Para resolver, abra o …</p><p>Olá pessoal! Trago hoje outro post sobre Zabbix. Este é sobre aumentar o cache do seu Zabbix Server. É perfeitamente comum (se você roda com as configurações padrões) receber avisos sobre <code>Zabbix value cache running on low memory mode</code> no seu dashboard ou arquivos de log.</p> +<p><img alt="Zabbix Dashboard alertando sobre problemas de memória" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache gráfico com 70% utilizado" src="/images/zabbix_cache_filling.png"></p> +<p>Para resolver, abra o seu arquivo de configuração (<code>zabbix_server.conf</code>) e procure pela tag <em>CacheSize</em>. Descomente a linha e defina um valor maior que 8M (8M é o valor padrão). No meu caso, nós configuramos um cache de 100M. Depois da troca, reinicie o serviço para que o mesmo tome efeito.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: CacheSize</span> +<span class="c1"># Size of configuration cache, in bytes.</span> +<span class="c1"># Shared memory size for storing host, item and trigger data.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 128K-64G</span> +<span class="c1"># Default:</span> +<span class="na">CacheSize</span><span class="o">=</span><span class="s">100M #Descomente esta linha</span> +</code></pre></div> + +<p><img alt="Zabbix Dashboard resolved memory problem" src="/images/zabbix_low_memory_solved.png"></p> +<p>Até breve.</p>Monitorando status de replicação do MySQL com PowerShell2020-10-14T19:00:00-03:002020-10-14T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-14:/pt/monitoring-mysql-replication-with-powershell.html<p>Tenho migrado alguns scripts bash que tenho para PowerShell, e chegou a vez de migrar um script de monitoramento de replicação do MySQL. Fica como crédito o script original do <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. É um script bem simples onde eu verifico algumas tags resultantes do <code>SHOW SLAVE STATUS\G</code>, são elas. <code>Slave_IO_Running …</code></p><p>Tenho migrado alguns scripts bash que tenho para PowerShell, e chegou a vez de migrar um script de monitoramento de replicação do MySQL. Fica como crédito o script original do <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. É um script bem simples onde eu verifico algumas tags resultantes do <code>SHOW SLAVE STATUS\G</code>, são elas. <code>Slave_IO_Running</code>, <code>Slave_SQL_Running</code> e <code>Seconds_Behind_Master</code>. Ainda preciso verificar formas mais corretas de armazenar/carregar as variáveis como usuários e senha, se tiver alguma dica, fique à vontade para inclusive fazer um pull request (<a href="https://github.com/sipmann/PowerShellScripts">aqui</a>) no repositório onde vou armazenar alguns dos meus scripts.</p> +<div class="highlight"><pre><span></span><code><span class="cm">&lt;#</span> +<span class="cm"> Variables definition</span> +<span class="cm">#&gt;</span> +<span class="nv">$MaxSeconds</span> <span class="p">=</span> <span class="n">120</span> <span class="c"># Max seconds behind master allowed</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;&#39;</span> + +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> +<span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s1">&#39;SHOW SLAVE STATUS \G&#39;</span><span class="p">)</span> + +<span class="c">#Debug data</span> +<span class="c">#$data = Get-Content &#39;c:\temp\sampleresult.txt&#39;</span> + +<span class="cm">&lt;# Parse the data #&gt;</span> +<span class="nv">$IORunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_IO_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SQLRunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_SQL_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$LastErrNo</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Last_Errno&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SecondsBh</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Seconds_Behind_Master&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="k">If</span> <span class="p">(</span><span class="nv">$IORunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SQLRunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SecondsBh</span> <span class="o">-gt</span> <span class="nv">$MaxSeconds</span><span class="p">)</span> <span class="p">{</span> + <span class="nv">$MailBody</span> <span class="p">=</span> <span class="s1">&#39;&lt;h1&gt;Problema na replicação&lt;/h1&gt;&lt;br&gt;&#39;</span> + + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; IO Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$IORunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; SQL Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SQLRunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39;Seconds Behind: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SecondsBh</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; Last Err No: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$LastErrNo</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + + <span class="cm">&lt;# Send e-mail, maybe some telegram message here too #&gt;</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Problemas na replicação&#39;</span> <span class="n">-bodyAsHtml</span> <span class="nv">$MailBody</span> <span class="n">-Credential</span> <span class="p">(</span><span class="nb">Get-Credential</span><span class="p">)</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> <span class="k">Else</span> <span class="p">{</span> + <span class="nb">Write-Host</span> <span class="s2">&quot;Up and running&quot;</span> +<span class="p">}</span> +</code></pre></div>Microsoft Contra Covid2020-10-03T19:00:00-03:002020-10-03T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-03:/pt/microsoft-against-covid.html<p>Você teve seu trabalho afetado pela pandemia do covid? Bom, na última semana eu postei no <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> sobre um Voucher para certificação gratuita que a Microsoft estava distribuindo durante o evento Microsoft Ignite. Depois disto, eu fiquei sabendo que eles também estão entregando grandes discontos para quem teve o seu …</p><p>Você teve seu trabalho afetado pela pandemia do covid? Bom, na última semana eu postei no <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> sobre um Voucher para certificação gratuita que a Microsoft estava distribuindo durante o evento Microsoft Ignite. Depois disto, eu fiquei sabendo que eles também estão entregando grandes discontos para quem teve o seu trabalho afetado pela pandemia do covid. </p> +<p>Para saber se você pode receber este desconto, acesse <a href="https://docs.microsoft.com/en-us/learn/certifications/skillingoffer">https://docs.microsoft.com/en-us/learn/certifications/skillingoffer</a>.</p>O poder do PowerShell2020-09-21T19:00:00-03:002020-09-21T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-09-21:/pt/the-power-of-powershell.html<p>Como um usuário linux por muito tempo, eu automatizei algumas tarefas com scripts bash e fiquei longe do PowerShell... Voltei a utilizar Windows alguns anos atrás e ainda assim, não dei uma chance ao PS. Mas porque não? Eu fiz alguns scripts para automatizar algumas tarefas em um servidor Protheus …</p><p>Como um usuário linux por muito tempo, eu automatizei algumas tarefas com scripts bash e fiquei longe do PowerShell... Voltei a utilizar Windows alguns anos atrás e ainda assim, não dei uma chance ao PS. Mas porque não? Eu fiz alguns scripts para automatizar algumas tarefas em um servidor Protheus.</p> +<p>Eu acabei achando os scripts PS de fácil leitura e entendimento. Abaixo, nós temos um script para remover arquivos filtrando pela sua extensão (ou sem extensão alguma no caso do script em questão).</p> +<div class="highlight"><pre><span></span><code><span class="nb">Get-ChildItem</span> <span class="s2">&quot;C:\TOTVS\protheus_data\system&quot;</span> <span class="o">-File</span> <span class="n">-Filter</span> <span class="p">*.</span> <span class="p">|</span> <span class="nb">Move-Item</span> <span class="n">-Force</span> <span class="n">-Destination</span> <span class="p">{</span> + <span class="cm">&lt;# Diretório ao qual os arquivos vão ser movidos. Você pode utilizar formatos de data para nomear os diretórios #&gt;</span> + <span class="cm">&lt;# LastWriteTime é a propriedade do arquivo corrent #&gt;</span> + <span class="nv">$dir</span> <span class="p">=</span> <span class="s2">&quot;C:\bad_files\{0:yyyy\\MM\\dd}&quot;</span> <span class="o">-f</span> <span class="nv">$_</span><span class="p">.</span><span class="n">LastWriteTime</span> + <span class="nv">$null</span> <span class="p">=</span> <span class="n">mkdir</span> <span class="nv">$dir</span> <span class="n">-Force</span> + <span class="s2">&quot;$dir\</span><span class="p">$(</span><span class="nv">$_</span><span class="p">.</span><span class="n">Name</span><span class="p">)</span><span class="s2">&quot;</span> +<span class="p">}</span> +</code></pre></div> + +<p>Você já precisou remover arquivos baseado no conteúdo de outro arquivo? Abaixo um script onde eu leio um arquivo que contem os nomes de arquivos que eu desejo remover. </p> +<div class="highlight"><pre><span></span><code><span class="k">foreach</span><span class="p">(</span><span class="nv">$line</span> <span class="k">in</span> <span class="nb">Get-Content</span> <span class="p">.\</span><span class="n">Desktop</span><span class="p">\</span><span class="n">bad_files</span><span class="p">.</span><span class="n">txt</span><span class="p">)</span> <span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="nb">Test-Path</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">))</span> <span class="p">{</span> + <span class="nb">Remove-Item</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">)</span> + <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> + <span class="nb">echo </span><span class="nv">$line</span> <span class="p">+</span> <span class="s1">&#39; - File not found&#39;</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>E um script bonus para parar e iniciar serviços (se você gerencia um servidor Protheus, você sabe o porque eu faço isto).</p> +<div class="highlight"><pre><span></span><code><span class="nv">$servicesNames</span> <span class="p">=</span> <span class="s1">&#39;app_main&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker1&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker2&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker3&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker4&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker5&#39;</span> + +<span class="nb">Write-host</span> <span class="s2">&quot;Parando Serviços&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Parando: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nv">$SrvPID</span> <span class="p">=</span> <span class="p">(</span><span class="nb">get-wmiobject</span> <span class="n">win32_service</span> <span class="p">|</span> <span class="nb">where </span><span class="p">{</span> <span class="nv">$_</span><span class="p">.</span><span class="n">name</span> <span class="o">-eq</span> <span class="nv">$srv</span><span class="p">}).</span><span class="n">processID</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PID: &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> + + <span class="cm">&lt;# Força a parada caso o serviço esteja travado #&gt;</span> + <span class="nb">Stop-Process</span> <span class="nv">$ServicePID</span> <span class="n">-Force</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PDI &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> <span class="p">+</span> <span class="s2">&quot; parado&quot;</span> +<span class="p">}</span> + + +<span class="nb">Write-host</span> <span class="s2">&quot;Inicializando Serviços&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Inicializando: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nb">Start-Service</span> <span class="nv">$srv</span> +<span class="p">}</span> +</code></pre></div> + +<p>Você tem algum script de automação? Compartilhe conosco :)</p>Top Level Statement no C# 92020-07-29T19:00:00-03:002020-07-29T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-29:/pt/top_level_statement_csharp_9.html<p>Olá pessoal, venho hoje falar sobre uma novidade que estará disponível na versão 9 do C#. Toda vez que você deseja criar um novo projeto, você sempre tem o mesmo arquivo Main, com a mesma estrutura. Na próxima versão do C# (versão 9), nós teremos uma nova funcionalidade chamada <code>Top …</code></p><p>Olá pessoal, venho hoje falar sobre uma novidade que estará disponível na versão 9 do C#. Toda vez que você deseja criar um novo projeto, você sempre tem o mesmo arquivo Main, com a mesma estrutura. Na próxima versão do C# (versão 9), nós teremos uma nova funcionalidade chamada <code>Top Level Statement</code>. Com isto, poderemos programar a nossa aplicação sem toda aquela estrutura de <code>namespace/class/public void static main</code>. Veja o código abaixo.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="s">&quot;Hello World!&quot;</span><span class="p">);</span> +</code></pre></div> + +<p>Parece muito simples, não é? Com isto, você pode brincar com seu código e até mesmo programar uma pequena WEB API. Para começar a brincar com estas novas <em>features</em>, primeiramente faça o download do preview do <a href="https://dotnet.microsoft.com/download/dotnet/5.0">.net 5 SDK</a> e modifique o seu arquivo <code>.csproj</code> para apontar o framework para <code>.net5.0</code> e a versão de preview da linguagem. Abaixo como uma aplicação de console deve ficar.</p> +<div class="highlight"><pre><span></span><code><span class="nt">&lt;Project</span> <span class="na">Sdk=</span><span class="s">&quot;Microsoft.NET.Sdk&quot;</span><span class="nt">&gt;</span> + <span class="nt">&lt;PropertyGroup&gt;</span> + <span class="nt">&lt;OutputType&gt;</span>Exe<span class="nt">&lt;/OutputType&gt;</span> + <span class="nt">&lt;TargetFramework&gt;</span>net5.0<span class="nt">&lt;/TargetFramework&gt;</span> + <span class="nt">&lt;LangVersion&gt;</span>preview<span class="nt">&lt;/LangVersion&gt;</span> + <span class="nt">&lt;/PropertyGroup&gt;</span> +<span class="nt">&lt;/Project&gt;</span> +</code></pre></div> + +<p>E assim você está pronto para brincar com as novas funcionalidades que estão disponíveis na versão preview. Vamos programar uma aplicação simples que faz uma requisição na API da NASA e printe a Imagem do Dia no console. Não é nenhum código mirabolante, é simplesmente para exemplificar o quão simples uma simples chamada de API pode ser. Feito isto, porque não salvar a imagem como um arquivo? Ou então enviar essa imagem via telegram?</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Text.Json</span><span class="p">;</span> + +<span class="kt">var</span> <span class="n">API</span> <span class="p">=</span> <span class="s">&quot;https://api.nasa.gov/planetary/apod?hd=true&amp;api_key=DEMO_KEY&quot;</span><span class="p">;</span> +<span class="kt">var</span> <span class="n">cli</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + +<span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">cli</span><span class="p">.</span><span class="n">GetAsync</span><span class="p">(</span><span class="n">API</span><span class="p">);</span> +<span class="kt">var</span> <span class="n">data</span> <span class="p">=</span> <span class="n">JsonSerializer</span><span class="p">.</span><span class="n">Deserialize</span><span class="p">&lt;</span><span class="n">NasaApi</span><span class="p">&gt;(</span><span class="k">await</span> <span class="n">response</span><span class="p">.</span><span class="n">Content</span><span class="p">.</span><span class="n">ReadAsStringAsync</span><span class="p">());</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">Url</span><span class="p">);</span> +</code></pre></div> + +<p>Por hoje é isso. Fique de olho nas novas features que o C# 9 vai nos trazer. Já temos várias disponíveis hoje para testar, esta é apenas uma delas.</p>Zabbix poller processes more than 75%2020-07-02T19:00:00-03:002020-07-02T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-02:/pt/zabbix-poller-processes-more-than-75.html<p>Este é o terceiro post sobre configurações para o Zabbix. Todas as alterações que eu sugiro nestes posts, são baseadas em um servidor com 50+ hosts. Outro problema que pode ocorrer em seu servidor, é o poller de informações ficar sobrecarregado pela quantidade de servidores que ele precisa pegar carga …</p><p>Este é o terceiro post sobre configurações para o Zabbix. Todas as alterações que eu sugiro nestes posts, são baseadas em um servidor com 50+ hosts. Outro problema que pode ocorrer em seu servidor, é o poller de informações ficar sobrecarregado pela quantidade de servidores que ele precisa pegar carga de informações juntamente com os servidores que não respondem a requisição. Abaixo duas imagens onde você pode ver o log e um gráfico onde aparecem os percentuais de uso dos poller. </p> +<p><img alt="Dashboard log sobre o processo do poller" src="/images/zabbix_pooler.png"></p> +<p><img alt="Gráfico mostrando o percentual de utilização de cada coletor" src="/images/zabbix_pooler_3.png"></p> +<p>Para resolver o problema acima, vamos voltar ao arquivo de configuração <code>zabbix_server.conf</code> e localizar duas variáveis, <code>StartPollers</code> e <code>StartPollersUnreachable</code>. Aumente o valor delas conforme necessário. Não existe um número mágico, você deve verificar o que melhor funciona para você. Mas tenha em mente que <code>StartPollersUnreachable</code> é responsável por aqueles hosts que não respondem ou não são localizados e irão segurar a thread do poller por mais tempo, causando uma fila e um maior processamento/tempo de atualização.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPollers</span> +<span class="c1"># Number of pre-forked instances of pollers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollers</span><span class="o">=</span><span class="s">20</span> + +<span class="c1">#...</span> + +<span class="c1">### Option: StartPollersUnreachable</span> +<span class="c1"># Number of pre-forked instances of pollers for unreachable hosts (including IPMI and Java).</span> +<span class="c1"># At least one poller for unreachable hosts must be running if regular, IPMI or Java pollers</span> +<span class="c1"># are started.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="na">StartPollersUnreachable</span><span class="o">=</span><span class="s">5</span> +</code></pre></div> + +<p>Depois da alteração, reinicie o serviço e espere alguns momentos e veja o seu dashboard novamente. Abaixo o efeito que a troca teve em um dos servidores que acompanho.</p> +<p><img alt="Gráfico mostrando os novos percentuais de utilização dos processos após as alterações" src="/images/zabbix_pooler_4.png"></p>Monitorando a disponibilidade de um Website com Azure Functions2020-06-22T19:00:00-03:002020-06-22T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-06-22:/pt/monitoring-website-heath-with-azure-functions.html<p>Algumas vezes você se depara com a necessidade de monitorar a disponibilidade de um website ou mudanças em seu conteúdo. É claro que temos diversas opções disponíveis no mercado, mas para fins de curiosidade, vamos programar o nosso próprio e ver o que podemos fazer. Primeiramente, tudo que você ver …</p><p>Algumas vezes você se depara com a necessidade de monitorar a disponibilidade de um website ou mudanças em seu conteúdo. É claro que temos diversas opções disponíveis no mercado, mas para fins de curiosidade, vamos programar o nosso próprio e ver o que podemos fazer. Primeiramente, tudo que você ver aqui, você pode utilizar o <a href="https://azure.microsoft.com/free/">tier gratuito</a> da Azure.</p> +<p>A ideia principal da nossa aplicação vai ser monitorar a disponibilidade do website (status code). Para criar um projeto de Azure Function, siga os passos abaixo.</p> +<p><img alt="Passos para criar um projeto Azure Functions" src="/images/azure_functions.gif"></p> +<p>Depois de criar o projeto, você vai ter alguns arquivos. Abra o arquivo principal (<code>HttpCheck.cs</code> no meu caso) e começe a programar. O arquivo principal terá uma função chamada <code>Run</code> e você pode progamar nela o seu request. Eu criei um método <code>async</code> para fazer as requisições e printar a saída diretamente no console. O código completo pode ser visto abaixo.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Linq</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Threading.Tasks</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Azure.WebJobs.Host</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">Microsoft.Extensions.Logging</span><span class="p">;</span> + +<span class="k">namespace</span> <span class="nn">Sipmann.CheckMySite</span> +<span class="p">{</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">class</span> <span class="nc">HttpCheck</span> + <span class="p">{</span> + + <span class="k">private</span> <span class="k">static</span> <span class="k">async</span> <span class="n">Task</span> <span class="nf">GetTask</span><span class="p">(</span><span class="kt">string</span> <span class="n">url</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="kt">var</span> <span class="n">request</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpRequestMessage</span><span class="p">(</span><span class="n">HttpMethod</span><span class="p">.</span><span class="n">Get</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span> + + <span class="kt">var</span> <span class="n">client</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + <span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">client</span><span class="p">.</span><span class="n">SendAsync</span><span class="p">(</span><span class="n">request</span><span class="p">);</span> + + <span class="k">if</span> <span class="p">(</span><span class="n">response</span><span class="p">.</span><span class="n">IsSuccessStatusCode</span><span class="p">)</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="k">else</span> + <span class="p">{</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;URL ${url} não esta OK&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> + +<span class="na"> [FunctionName(&quot;HttpCheck&quot;)]</span> + <span class="k">public</span> <span class="k">static</span> <span class="k">void</span> <span class="nf">Run</span><span class="p">([</span><span class="n">TimerTrigger</span><span class="p">(</span><span class="s">&quot;0 */5 * * * *&quot;</span><span class="p">)]</span><span class="n">TimerInfo</span> <span class="n">myTimer</span><span class="p">,</span> <span class="n">ILogger</span> <span class="n">log</span><span class="p">)</span> + <span class="p">{</span> + <span class="c1">// URL a verificar a saúde</span> + <span class="kt">var</span> <span class="n">urls</span> <span class="p">=</span> <span class="k">new</span><span class="p">[]{</span><span class="s">&quot;https://www.sipmann.com&quot;</span><span class="p">,</span> <span class="s">&quot;https://www.canezecanez.com.br&quot;</span><span class="p">};</span> + + <span class="c1">// Starta cada request e aguarda todos de uma vez só</span> + <span class="n">Task</span><span class="p">.</span><span class="n">WaitAll</span><span class="p">(</span><span class="n">urls</span><span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">url</span> <span class="p">=&gt;</span> <span class="n">GetTask</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">log</span><span class="p">)).</span><span class="n">ToArray</span><span class="p">());</span> + <span class="n">log</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">&quot;Finalizou a fila&quot;</span><span class="p">);</span> + <span class="p">}</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>Agora você pode melhorar a função e talvez enviar alguns alertas. Como por exêmplo mensagens no Telegram quando um dos sites ficar off (status code 404).</p>Zabbix ICMP pinger processes more than 75%2020-05-25T16:00:00-03:002020-05-25T16:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-05-25:/pt/zabbix-icmp-pinger-processes-more-than-75.html<p>Então o seu systema de monitoramento creasceu e o seu Zabbix começou a printar "<em>Zabbix icmp pinger processes more than 75% busy</em>" no seu dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>Tudo que você tem a fazer é abrir o seu arquivo de configuração (<code>/etc/zabbix/zabbix_server.conf</code>) e localizar a tag chamada <code>StartPingers</code>. Ela deve …</p><p>Então o seu systema de monitoramento creasceu e o seu Zabbix começou a printar "<em>Zabbix icmp pinger processes more than 75% busy</em>" no seu dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>Tudo que você tem a fazer é abrir o seu arquivo de configuração (<code>/etc/zabbix/zabbix_server.conf</code>) e localizar a tag chamada <code>StartPingers</code>. Ela deve estar comentáda por padrão. Descomente a lina e define o seu valor para algo como 3 or 4. Deve resolver seu problema, ao menos até um próximo crescimento do seu monitoramento.</p> +<div class="highlight"><pre><span></span><code><span class="c1">### Option: StartPingers</span> +<span class="c1"># Number of pre-forked instances of ICMP pingers.</span> +<span class="c1">#</span> +<span class="c1"># Mandatory: no</span> +<span class="c1"># Range: 0-1000</span> +<span class="c1"># Default:</span> +<span class="nv">StartPingers</span><span class="o">=</span><span class="m">4</span> +</code></pre></div>Zabbix Server Out of Memory2020-02-27T19:00:00-03:002020-02-27T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-02-27:/pt/zabbix-server-out-of-memory-crash.html<p>Você tem um servidor Zabbix crashando e observando o arquivo de log <code>/var/log/zabbix/zabbix_server.log</code> você localiza a seguinte mensagem referênciando falta de memória?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c …</code></pre></div><p>Você tem um servidor Zabbix crashando e observando o arquivo de log <code>/var/log/zabbix/zabbix_server.log</code> você localiza a seguinte mensagem referênciando falta de memória?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: please increase CacheSize configuration parameter +</code></pre></div> + +<p>Apesar da simples solução para o erro, isso acaba sendo um problema comum em servidores que tem uma certa quantidade de itens sendo monitorados (servidores, switches, firewalls, bancos, etc...). Para resolver o problema, vá até o ser arquivo <code>zabbix_server.conf</code> e procure pela propriedade <code>CacheSize</code> e sete o seu valor para uma quantidade maior. O seu valor default deve ser algo como 8M. Em clientes que tenham algo como 4 servidores, 7 firewalls/appliances, e algumas outras coisas (bancos, apps), 32M deve resolver o problema, mas você pode setar até algo como 8G (ressalto que mais memória nem sempre é melhor).</p> +<p>Até breve.</p>Removendo um usuário de uma base SQL Server2019-09-06T07:00:00-03:002020-10-21T18:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-09-06:/pt/removing-user-from-sql-server-database.html<p>O seu cliente lhe pede com urgência para <em>dropar</em> um usuário da sua base MsSQL Server, mas você trava com o seguinte aviso de erro:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>Se você não possui (ou no momento não consegue acesso …</p><p>O seu cliente lhe pede com urgência para <em>dropar</em> um usuário da sua base MsSQL Server, mas você trava com o seguinte aviso de erro:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>Se você não possui (ou no momento não consegue acesso) ao SSMS (SQL Server Management Studio) para verificar quais schemas ou objetos o usuário é "dono", a seguinte SQL vai resolver o problema.</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">schemas</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">principal_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="p">,</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">xtype</span><span class="w"> </span><span class="n">Tipo</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">sysobjects</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">uid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> +</code></pre></div> + +<p>Assim que você tiver os objetos/schemas que o usuário é dono, você pode alterar os mesmos com a seguinte SQL (exemplo de troca de schema):</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datareader</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"> </span><span class="c1">-- username do novo dono</span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datawriter</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>Então, você pode dropar o usuário <code>DROP USER [username]</code>.</p>Resolvendo java.net.SocketException: Protocol family unavailable em Java + Docker + WildFly2018-03-04T17:40:00-03:002018-03-04T17:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-03-04:/pt/socketException-protocol-family-unavailable-java-docker-wildfly.html<p>Nos últimos dias eu estou brincando com o <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> e decidi fazer o deploy de uma aplicação simples com Docker. Deveria funcionar bem, ao menos é o que pensava. Construí um container com o seguinte Dockerfile e ao invés de obter uma aplicação web, tudo que eu obtive foi …</p><p>Nos últimos dias eu estou brincando com o <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> e decidi fazer o deploy de uma aplicação simples com Docker. Deveria funcionar bem, ao menos é o que pensava. Construí um container com o seguinte Dockerfile e ao invés de obter uma aplicação web, tudo que eu obtive foi o erro <cite>java.net.SocketException: Protocol family unavailable</cite>.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">CMD</span> <span class="p">[</span><span class="s2">&quot;java&quot;</span><span class="p">,</span><span class="s2">&quot;-jar&quot;</span><span class="p">,</span><span class="s2">&quot;/opt/issues.jar&quot;</span><span class="p">]</span> +</pre></div> +<p>Por alguma razão, WildFly e Java, ambos decidiram utilizar um protocolo IPv6 na interface de rede no Docker invés da v4, então tudo que você tem que fazer é falar ao Java que deve dar preferência em utilizar o IPv4 com a seguinte configuração no seu arquivo pom.xml dentro da tag do plugin WildFly.</p> +<div class="highlight"><pre><span></span><span class="nt">&lt;plugin&gt;</span> + <span class="nt">&lt;groupId&gt;</span>org.wildfly.swarm<span class="nt">&lt;/groupId&gt;</span> + <span class="nt">&lt;artifactId&gt;</span>wildfly-swarm-plugin<span class="nt">&lt;/artifactId&gt;</span> + <span class="nt">&lt;version&gt;</span>2018.2.0<span class="nt">&lt;/version&gt;</span> + + <span class="c">&lt;!-- ADICIONE ISTO --&gt;</span> + <span class="nt">&lt;configuration&gt;</span> + <span class="nt">&lt;mainClass&gt;</span>org.wildfly.swarm.examples.netflix.ribbon.frontend.Main<span class="nt">&lt;/mainClass&gt;</span> + <span class="nt">&lt;properties&gt;</span> + <span class="nt">&lt;java.net.preferIPv4Stack&gt;</span>true<span class="nt">&lt;/java.net.preferIPv4Stack&gt;</span> + <span class="nt">&lt;/properties&gt;</span> + <span class="nt">&lt;/configuration&gt;</span> +</pre></div> +<p>Outra forma de solucionar o problema, é adicionando a mesma propriedade ao comando de run no seu Dockerfile. Então, fica a seu critério onde adicionar. Abaixo a solução utilizando o Dockerfile.</p> +<div class="highlight"><pre><span></span><span class="k">FROM</span> <span class="s">java:openjdk-8-jdk</span> +<span class="k">ENV</span> <span class="nv">JAVA_OPTS</span><span class="o">=</span><span class="s2">&quot;-Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true&quot;</span> + +<span class="k">COPY</span> target/issues.jar /opt/issues.jar + +<span class="k">EXPOSE</span><span class="s"> 8080</span> + +<span class="k">ENTRYPOINT</span> <span class="nb">exec</span> java <span class="nv">$JAVA_OPTS</span> -jar /opt/issues.jar +</pre></div> +Menu dinâmico com as apps do django2018-01-21T21:17:00-02:002018-01-21T21:17:00-02:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-01-21:/pt/menu-dinamico-com-apps-do-django.html<p>Digamos que sua empresa trabalha com Django desenvolvendo aplicações cujas apps são plugaveis e reutilizáveis. Por que não se aproveitar de um certo padrão de desenvolvimento para desenvolver menus que se modificam de acordo com as apps que estão no projeto? Como o objetivo aqui não é desenvolver uma app …</p><p>Digamos que sua empresa trabalha com Django desenvolvendo aplicações cujas apps são plugaveis e reutilizáveis. Por que não se aproveitar de um certo padrão de desenvolvimento para desenvolver menus que se modificam de acordo com as apps que estão no projeto? Como o objetivo aqui não é desenvolver uma app em si, vamos utilizar um projeto com algumas de modelo. Se desejar estudar mais sobre desenvolvimento Django, a documentação é muito boa, mas também temos blogs e sites excelentes sobre o assunto.</p> +<p>Para conseguirmos atingir esse objetivo, vamos utilizar a api <a class="reference external" href="https://docs.djangoproject.com/en/2.0/ref/settings/#installed-apps">Django.apps</a> que está disponível a partir da versão 1.7. +Com esta api, vamos percorrer as apps e se possível, criar um link para uma URL base de cada uma delas. Para começo, baixe os fontes do <a class="reference external" href="https://github.com/sipmann/menusapp-django/releases/tag/v1">projeto aqui</a>, rode o pip install do projeto e no fim, sua estrutura de pastas deve ficar como abaixo.</p> +<div class="highlight"><pre><span></span>../menusapp/ +├── comentarios +│ ├── templates +│ │ └── comentarios +│ │ └── listagem.html +│ ├── __init__.py +│ ├── admin.py +│ ├── apps.py +│ ├── models.py +│ ├── tests.py +│ ├── urls.py +│ └── views.py +├── core +│ ├── templates +│ │ └── core +│ │ └── base.html +│ │ └── listagem.html +│ ├── __init__.py +│ ├── admin.py +│ ├── apps.py +│ ├── models.py +│ ├── tests.py +│ ├── urls.py +│ └── views.py +├── menusapp +│ ├── __init__.py +│ ├── settings.py +│ ├── urls.py +│ └── wsgi.py +└── manage.py +</pre></div> +<p>Rode o projeto e veja como é o seu funcionamento. É na app core que temos a base do nosso HTML, então será nele que iremos trabalhar. Quando se trata de algo que será renderizado no template base, eu gosto muito de utilizar 'template tags' para facilitar. +Neste <a class="reference external" href="http://www.sipmann.com/editando-o-admin-do-django.html">link</a> tem mais um exemplo de utilização de 'template tag' caso esteja interessado.</p> +<p>Vamos então criar uma pasta chamada template_tag e dentro dela a nossa tag. Vamos chamá-la de menus_tag.py. Abaixo vamos ver um pouco da nossa tag. +O código é bem simples e auto explicativo, importamos as bibliotecas necessárias e realizamos o &#64;register da tag com o nome do template que será renderizado. +E por ultimo, retornamos uma tupla de dados para o template.</p> +<div class="livros"> + <div class="recomendacoes">Recomendações</div> + <a rel="noopener" href="https://www.amazon.com.br/gp/product/8575225081/ref=as_li_ss_il?ie=UTF8&linkCode=li2&tag=sipmann-20&linkId=c17fa3ac84e734741a3761e874d7d286" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=8575225081&Format=_SL160_&ID=AsinImage&MarketPlace=BR&ServiceVersion=20070822&WS=1&tag=sipmann-20" ></a><img src="https://ir-br.amazon-adsystem.com/e/ir?t=sipmann-20&l=li2&o=33&a=8575225081" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> + <a rel="noopener" href="https://www.amazon.com.br/gp/product/B074ZTLKHB/ref=as_li_ss_il?ie=UTF8&linkCode=li2&tag=sipmann-20&linkId=e2f37c07da2dc4111ae47854b205d01a" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B074ZTLKHB&Format=_SL160_&ID=AsinImage&MarketPlace=BR&ServiceVersion=20070822&WS=1&tag=sipmann-20" ></a><img src="https://ir-br.amazon-adsystem.com/e/ir?t=sipmann-20&l=li2&o=33&a=B074ZTLKHB" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> +</div><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">django</span> <span class="kn">import</span> <span class="n">template</span> +<span class="kn">from</span> <span class="nn">django.apps</span> <span class="kn">import</span> <span class="n">apps</span> + +<span class="c1">#Carrega o registro de template tags</span> +<span class="n">register</span> <span class="o">=</span> <span class="n">template</span><span class="o">.</span><span class="n">Library</span><span class="p">()</span> + +<span class="c1">#Registra o metodo a seguir como uma inclusion_tag indicando o template a ser renderizado</span> +<span class="nd">@register</span><span class="o">.</span><span class="n">inclusion_tag</span><span class="p">(</span><span class="s1">&#39;menus_por_app.html&#39;</span><span class="p">)</span> +<span class="k">def</span> <span class="nf">menus_por_app</span><span class="p">():</span> + <span class="n">lst</span> <span class="o">=</span> <span class="n">apps</span><span class="o">.</span><span class="n">get_app_configs</span><span class="p">()</span> + <span class="k">return</span> <span class="p">{</span> <span class="s1">&#39;lst_apps&#39;</span> <span class="p">:</span> <span class="n">lst</span> <span class="p">}</span> +</pre></div> +<p>O template está abaixo e é simplesmente um for percorrendo as apps e gerando uma lista com os seus menus. As outras propriedades você pode ver direto na <a class="reference external" href="https://docs.djangoproject.com/en/2.0/ref/applications/#django.apps.AppConfig">documentação</a>. +Algumas ressalvas para o que foi feito por questões de praticidade para uso posterior, utilizei um with para concatenar e gerar a url e criei um apelido para a url para validar a existência da mesma. Fora isto, nada de novo.</p> +<div class="highlight"><pre><span></span>{% if not lst_apps %} + <span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;</span>Nenhuma app<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span> + {% else %} + <span class="p">&lt;</span><span class="nt">ul</span><span class="p">&gt;</span> + {% for app in lst_apps %} + {% with app.name|add:&quot;:listagem&quot; as link %} + {% url link as the_url %} + {% if the_url %} + <span class="p">&lt;</span><span class="nt">li</span><span class="p">&gt;</span> + <span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;{% url link %}&quot;</span><span class="p">&gt;</span>{{ app.verbose_name|truncatechars:30 }}<span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span> + <span class="p">&lt;/</span><span class="nt">li</span><span class="p">&gt;</span> + {% endif %} + {% endwith %} + {% endfor %} + <span class="p">&lt;/</span><span class="nt">ul</span><span class="p">&gt;</span> + {% endif %} +</pre></div> +<img alt="Resultado final" src="/images/menu_apps.png" /> +<p>No final, o resultado obtido deve ser semelhante ao acima. Repare que está listando as duas aplicações. E acima de tudo, repare que só serão exibidos os links cuja app tenha um namespace de mesmo nome e uma url de nome <cite>listagem</cite>. +A estrutura final pode ser vista abaixo. Atente-se aos nomes tanto das pastas quanto dos arquivos, pois qualquer diferença pode causar o não funcionamento.</p> +<div class="highlight"><pre><span></span>../menusapp/ +├── comentarios +│ ├── templates +│ │ └── comentarios +│ │ └── listagem.html +│ ├── __init__.py +│ ├── admin.py +│ ├── apps.py +│ ├── models.py +│ ├── tests.py +│ ├── urls.py +│ └── views.py +├── core +│ ├── templates +│ │ └── core +│ │ │ └── base.html +│ │ │ └── listagem.html +│ │ └── menus_por_app.html +│ ├── templatetags +│ │ ├── __init__.py +│ │ └── menus_tag.py +│ ├── __init__.py +│ ├── admin.py +│ ├── apps.py +│ ├── models.py +│ ├── tests.py +│ ├── urls.py +│ └── views.py +├── menusapp +│ ├── __init__.py +│ ├── settings.py +│ ├── urls.py +│ └── wsgi.py +└── manage.py +</pre></div> +<p>Espero que tenham gostado, críticas e sugestões são bem-vindas. <a class="reference external" href="https://github.com/sipmann/menusapp-django/releases/tag/v2">Fontes do Projeto</a></p> +Scripts de inicialização no raspberry pi2017-10-08T18:00:00-03:002017-10-08T18:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2017-10-08:/pt/script-de-inicializacao-raspberry.html<p>Instalei essa semana o <a class="reference external" href="https://gitea.io">gitea</a> no meu raspberry pi B + e queria iniciar ele no boot... Não sou profundo conhecedor de linux, então, logo não sabia como fazer isto da melhor forma. +As versões atuais do Raspbian utilizam o <cite>systemd</cite> para gerenciar os serviços e confesso que nunca havia utilizado …</p><p>Instalei essa semana o <a class="reference external" href="https://gitea.io">gitea</a> no meu raspberry pi B + e queria iniciar ele no boot... Não sou profundo conhecedor de linux, então, logo não sabia como fazer isto da melhor forma. +As versões atuais do Raspbian utilizam o <cite>systemd</cite> para gerenciar os serviços e confesso que nunca havia utilizado o systemctl para nada.</p> +<p>Vamos começa criando um arquivo de serviço dentro da pasta <cite>/etc/systemd/system</cite>, vale ressaltar que a pasta <cite>system</cite> deve (em teoria) ser reservada para pacotes do sistema. +Vamos criar o arquivo com o nome <cite>gitea.service</cite> dentro da pasta antes mencionada. Abaixo podemos ver como ficou o arquivo e um detalhamento após ele.</p> +<div class="highlight"><pre><span></span><span class="o">[</span>Unit<span class="o">]</span> +<span class="nv">Description</span><span class="o">=</span>Gitea Service +<span class="nv">After</span><span class="o">=</span>network.target + +<span class="o">[</span>Service<span class="o">]</span> +<span class="nv">Type</span><span class="o">=</span>simple +<span class="nv">User</span><span class="o">=</span>root +<span class="nv">WorkingDirectory</span><span class="o">=</span>/root/ +<span class="nv">ExecStart</span><span class="o">=</span>/root/gitea web +<span class="nv">Restart</span><span class="o">=</span>on-abort +</pre></div> +<p>A composição do arquivo é bem simples, mas vamos a alguns detalhes. <cite>Type</cite> possui várias opções (simple, forking, oneshot), utilizamos <cite>simple</cite> uma vez que o nosso processo executara, permanecerá rodando e não executa um fork de processo. +Fork como acabo de comentar, deve ser utilizado caso o processo que for executando disparar mais processos. User irá definir o usuário do processo. <cite>WorkingDirectory</cite> definira onde o processo terá a sua base de execução, como o gitea esta localizada na pasta root, +aponto para lá. O ExecStart é bem simples e direto, deve chamar a execução do processo passando parametros caso seja necessário. O <cite>Restart</cite> é o que nos garantirá que o serviço permanecerá rodando caso haja algum imprevisto (exceto o fato de um usuário chamar o stop).</p> +<p>Salve o arquivo e vamos rodar um refresh para o SO perceber o novo serviço. Assim rodamos <cite>systemctl daemon-reload</cite>. Sempre que alterarmos um serviço ou criarmos um novo, este comando deve ser executado, caso contrário o próprio systemctl pode lhe alertar da necessidade. +Após reacarregar os serviços, vamos habilitar o serviço que criamos rodando <cite>systemctl enable gitea</cite>, feito isto temos alguns comandos uteis.</p> +<ul class="simple"> +<li>systemctl start gitea</li> +<li>systemctl stop gitea</li> +<li>systemctl status gitea</li> +</ul> +<p>O comando de status pode ser visto como exemplo abaixo.</p> +<div class="highlight"><pre><span></span>● gitea.service - Gitea Service + Loaded: loaded <span class="o">(</span>/etc/systemd/system/gitea.service<span class="p">;</span> enabled<span class="p">;</span> vendor preset: enabled<span class="o">)</span> + Active: active <span class="o">(</span>running<span class="o">)</span> since Wed <span class="m">2017</span>-10-04 <span class="m">00</span>:37:34 UTC<span class="p">;</span> 52min ago +Main PID: <span class="m">1087</span> <span class="o">(</span>gitea<span class="o">)</span> + CGroup: /system.slice/gitea.service + └─1087 /root/gitea web + +Oct <span class="m">04</span> <span class="m">00</span>:38:31 gitserver gitea<span class="o">[</span><span class="m">1087</span><span class="o">]</span>: <span class="o">[</span>Macaron<span class="o">]</span> <span class="m">2017</span>-10-04 <span class="m">00</span>:38:31: Completed /explore/users <span class="m">200</span> OK in <span class="m">80</span>.106173ms +Oct <span class="m">04</span> <span class="m">00</span>:38:31 gitserver gitea<span class="o">[</span><span class="m">1087</span><span class="o">]</span>: <span class="o">[</span>Macaron<span class="o">]</span> <span class="m">2017</span>-10-04 <span class="m">00</span>:38:31: Started GET /img/favicon.png <span class="k">for</span> <span class="m">192</span>.168.1.4 +Oct <span class="m">04</span> <span class="m">00</span>:38:31 gitserver gitea<span class="o">[</span><span class="m">1087</span><span class="o">]</span>: <span class="o">[</span>Macaron<span class="o">]</span> <span class="o">[</span>Static<span class="o">]</span> Serving /img/favicon.png +</pre></div> +<p>Após estes processos, você pode reiniciar seu raspberry que o gitea irá subir e funcionar. Ressalto que, preste atenção tanto no <cite>WorkingDirectory</cite> quanto no <cite>ExecStart</cite>, no caso do gitea, ele utiliza o workingdir e a forma de start para saber onde irá largar os arquivos por padrão, então ou você configura ele com caminhos absolutos ou cuidar na forma de start (ao menos é o que consegui pegar até agora).</p> +Cool Tools2017-09-17T14:00:00-03:002017-09-17T14:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2017-09-17:/pt/cool-tools.html<p>Com o passar do tempo você vai &quot;encontrando&quot; - e às vezes até mesmo desenvolvendo - algumas ferramentas que tornam o seu dia a dia como desenvolvedor mais fácil. Abaixo seguem algumas das minhas ferramentas que costumo usar. Ressalto que essa lista será (provavelmente) atualizada com o passar do tempo.</p> +<div class="section" id="https-www-gitkraken-com"> +<h2><a class="reference external" href="https://www.gitkraken.com">https://www …</a></h2></div><p>Com o passar do tempo você vai &quot;encontrando&quot; - e às vezes até mesmo desenvolvendo - algumas ferramentas que tornam o seu dia a dia como desenvolvedor mais fácil. Abaixo seguem algumas das minhas ferramentas que costumo usar. Ressalto que essa lista será (provavelmente) atualizada com o passar do tempo.</p> +<div class="section" id="https-www-gitkraken-com"> +<h2><a class="reference external" href="https://www.gitkraken.com">https://www.gitkraken.com</a></h2> +<p>Eu gosto muito de usar git, mas às vezes fico cansado de ter que usar só linha de comando, e achei no GitKreaken uma interface muito legal de se usar.</p> +</div> +<div class="section" id="http-paletton-com"> +<h2><a class="reference external" href="http://paletton.com">http://paletton.com</a></h2> +<p>Toda vez que você vai fazer um novo sistema/site, ou até mesmo trocar o layout de algum já existente, você acaba tendo que montar uma paleta de cores para se utilizar em todo o template.</p> +</div> +<div class="section" id="https-icomoon-io-app-select"> +<h2><a class="reference external" href="https://icomoon.io/app/#/select">https://icomoon.io/app/#/select</a></h2> +<p>Querendo usar ícones como fontes? Vá aí e gere apenas os arquivos que você vai realmente utilizar e economize alguns kbs.</p> +</div> +<div class="section" id="https-syncthing-net"> +<h2><a class="reference external" href="https://syncthing.net/">https://syncthing.net/</a></h2> +<p>Se você procura algum meio de sincronizar seus arquivos entre vários pcs e por algum motivo não quer usar um Google Drive ou DropBox, fica aqui a indicação deste cara.</p> +</div> +<div class="section" id="http-sqitch-org"> +<h2><a class="reference external" href="http://sqitch.org/">http://sqitch.org/</a></h2> +<p>Gerenciamento de versões de um banco de dados pode ser bem complicado e trabalhoso... Manter diversos ambientes (desenvolvimento, homologação, produção) vai dar um trabalho se não utilizar alguma ferramenta. Porque não usar o melhor de gerenciamento de versão (git) e uma ferramenta que se adequa ao que você precisa? sqitch é o cara nessas horas.</p> +</div> +<div class="section" id="http-www-setupmyproject-com"> +<h2><a class="reference external" href="http://www.setupmyproject.com/">http://www.setupmyproject.com/</a></h2> +<p>Preparação de projetos java, com frameworks, bibliotecas, nomenclatura, etc... Rende uma economia de tempo grandiosa e já vem tudo pronto :).</p> +</div> +<div class="section" id="https-www-pexels-com"> +<h2><a class="reference external" href="https://www.pexels.com/">https://www.pexels.com/</a></h2> +<p>Bom site para imagens free stock. Excelente local para conseguir imagens de alta qualidade.</p> +</div> +<div class="section" id="https-heml-io"> +<h2><a class="reference external" href="https://heml.io/">https://heml.io/</a></h2> +<p>&quot;HEML is an open source markup language for building responsive email.&quot; Melhor descrição impossível.</p> +</div> +<div class="section" id="https-www-mockapi-io"> +<h2><a class="reference external" href="https://www.mockapi.io/">https://www.mockapi.io/</a></h2> +<p>Desenvolva mocks para testar seu front-end. Eles geram inclusive uma carga de dados para ser utilizado nos seus testes.</p> +</div> +<div class="section" id="https-undraw-co"> +<h2><a class="reference external" href="https://undraw.co">https://undraw.co</a></h2> +<p>Needing some cool and free ilustrations? Take a look at it.</p> +</div> +<div class="section" id="https-www-audiotool-com-app"> +<h2><a class="reference external" href="https://www.audiotool.com/app/">https://www.audiotool.com/app/</a></h2> +<p>Ferramenta para criar sons, musicas e afins</p> +</div> +<div class="section" id="https-app-cloudskew-com"> +<h2><a class="reference external" href="https://app.cloudskew.com/">https://app.cloudskew.com/</a></h2> +<p>Desenhar projetos de cloud e afins</p> +</div> +<div class="section" id="https-lottiefiles-com"> +<h2><a class="reference external" href="https://lottiefiles.com/">https://lottiefiles.com/</a></h2> +<p>Veja por si mesmo</p> +</div> +Desenvolvendo apps para o FirefoxOS (Parte 1)2014-09-02T19:00:00-03:002014-09-02T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2014-09-02:/pt/desenvolvendo-app-firefoxos.html<h3>Requisitos mínimos?</h3> +<p>Para seguir este tutorial você precisará do <a href="http://nodejs.org/">Nodejs</a>. Utilizaremos ele para automatizar algumas tarefas, como a criação do nosso projeto e até mesmo o empacotamento da app. Estas automatizações se darão pela utilização de algumas aplicações como o <a href="http://yeoman.io/">Yeoman</a> e o <a href="http://gruntjs.com/">Grunt</a> .</p> +<p>Também será necessário o emulador do …</p><h3>Requisitos mínimos?</h3> +<p>Para seguir este tutorial você precisará do <a href="http://nodejs.org/">Nodejs</a>. Utilizaremos ele para automatizar algumas tarefas, como a criação do nosso projeto e até mesmo o empacotamento da app. Estas automatizações se darão pela utilização de algumas aplicações como o <a href="http://yeoman.io/">Yeoman</a> e o <a href="http://gruntjs.com/">Grunt</a> .</p> +<p>Também será necessário o emulador do <a href="https://www.mozilla.org/pt-BR/firefox/os/">FirefoxOS</a>, ele roda através do seu navegador Firefox. Para instalá-lo basta ir no menu <code>Ferramentas &gt; Desenvolvedor web &gt; App Manager</code>, nesta tela basta tentar iniciar o emulador, se não possuir um já instalado, você será solicitado a fazê-lo. Neste tutorial irei utilizar a versão 1.4.</p> +<h3>Preparando o ambiente</h3> +<p>Tendo o Node instalado, vamos instalar o yeoman e o gerador de app para Firefox OS. Atenção para o parâmetro '-g' no processo de instalação, com ele os seus pacotes serão instalados globalmente, e não só para a pasta em que esta o prompt.</p> +<div class="highlight"><pre><span></span><code><span class="err">npm install -g yo</span> +<span class="err">npm install -g generator-firefoxos-app</span> +</code></pre></div> + +<p>Com ambos os pacotes acima instalados, vamos dar início a criação da app. No seu diretório de projetos ou onde desejar criar a app chama o generator instalado.</p> +<div class="highlight"><pre><span></span><code><span class="err">yo firefoxos-app</span> +</code></pre></div> + +<p>Uma vez chamado esse generator, o mesmo irá fazer alguns questionamentos, o primeiro é claro será o nome da sua aplicação, seguido da descrição e o nome do desenvolvedor.</p> +<p>Após a execução do generator, você já terá uma estrutura para desenvolvimento pronta, inclusive com um html inicial, com todas as dependências já instaladas. Vale ressaltar agora algumas tarefas disponíveis no Gruntfile.</p> +<ul> +<li>Default: Irá gerar o pacote de distribuição</li> +<li>Test: Até a presente versão do generator (0.1.3) este processo irá simplesmente rodar o validador jsHint</li> +<li>Server: Irá disponibilizar na porta 9001 um simples servidor para testar a sua app</li> +</ul> +<p>Vamos testar a nossa app. Para tal, rode o comando <code>grunt server</code> e acesse no seu navegador <code>localhost:9001</code> e devemos ver a seguinte app. Caso nenhuma página seja exibida, revise os passos ateriores e verifique se nenhum erro ocorreu.</p> +<p><img alt="App inicial" src="/images/app_inicial.png"></p> +<p>Vale ressaltar que a sua app toda estará dentro de uma pasta também chamada <code>app</code>. Nela você encontrará os seus arquivos .html, .js, .css e demais. Antes de começarmos a codificar a nossa app, vamos ver como se instala a mesma.</p> +<h3>Instalando a app</h3> +<p>Para fins de teste, não é necessário rodar o comando <code>grunt</code>, sendo que ele irá testar o JS e compactar tudo em um arquivo .zip, basta apontar a instalação para a pasta <code>app</code> dentro do seu projeto. "Mas como eu faço isto?".</p> +<p>Indo novamente na <code>App Manager</code>, clicando na lateral esquerda, onde indica "Aplicativos", teremos então disponível no inferior da tela duas opções, vamos nos ater a utilizar a primeira (<code>Adicionar aplicativo hospedado</code>).</p> +<p>Clicando nesta opção vamos navegar até a pasta da app e clicar selecionada. Pronto.</p> +<p>Simples de se instalar, não acha? O Resultado final deve ser semelhante ao abaixo.</p> +<p><img alt="App inicial" src="/images/app_visual_1.png"></p> +<h3>Acessando uma API</h3> +<p>Quando vamos programar algo mais complexo, geralmente vamos utilizar algo como, câmera, rede, lista de contatos, armazenamento e outras possibilidades. Para utilizarmos essas APIs, precisamos - assim como no desenvolvimento para android - especificar para o usuário no momento de instalação. Estes dados de acesso ficam no arquivo <code>manifes.webapp</code>, se você ainda não deu uma olhada neste arquivo, é nele que fica armazenado dados da app, como nome, descrição, versão, localização de ícones e é claro as permissões que a mesma requer.</p> +<p>As permissões ficam na propriedade permissions, na forma de <code>"chave" : True</code>. Algumas das apis são:</p> +<ul> +<li>câmera</li> +<li>contacts</li> +<li>desktop-notification</li> +<li>storage</li> +</ul> +<p>Cada permissão vai mudar o tipo de app que você esta desenvolvendo, mas aí eu sugiro ler mais na MDN <a href="https://developer.mozilla.org/en-US/Apps/Build/App_permissions">aqui</a>. Esse é o básico para iniciar no desenvolvimento de app para FirefoxOS. Na parte dois, vou começar a passar um pouco de código.</p>Editando o Admin do Django2014-05-15T18:00:00-03:002014-05-15T18:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2014-05-15:/pt/editando-o-admin-do-django.html<p>Este artigo foi re-postado no grupo <a class="reference external" href="http://pythonclub.com.br/editando-o-admin-do-django.html">PythonClub</a>. Vamos falar um pouco sobre como customizar o admin do Django. Primeiramente porque? A resposta é bem simples, quero mostrar algo para o usuário sem que ele precise entrar nas apps e fazer alguma consulta para então tomar alguma ação. Alguns exêmplos para …</p><p>Este artigo foi re-postado no grupo <a class="reference external" href="http://pythonclub.com.br/editando-o-admin-do-django.html">PythonClub</a>. Vamos falar um pouco sobre como customizar o admin do Django. Primeiramente porque? A resposta é bem simples, quero mostrar algo para o usuário sem que ele precise entrar nas apps e fazer alguma consulta para então tomar alguma ação. Alguns exêmplos para isto seriam:</p> +<blockquote> +<ul class="simple"> +<li>Exibir as vendas do mês em forma de gráfico por região do país</li> +<li>Exibir os últimos comentários adicionados</li> +<li>Exibir log dos ultimos usuários cadastrados</li> +</ul> +</blockquote> +<p>O que faremos aqui será exibir os últimos comentários ainda não liberados de um sistema de blog. Vale lembrar que aqui não discutiremos sobre os primeiros passos da aplicação. Para seguirmos adiante, vamos assumir que já temos um projeto básico com uma estrutura simples, abaixo a estrutura inicial do nosso projeto.</p> +<div class="highlight"><pre><span></span>../blog/ +├── core +│ ├── __init__.py +│ ├── admin.py +│ ├── models.py +│ ├── tests.py +│ └── views.py +├── blog +│ ├── __init__.py +│ ├── settings.py +│ ├── urls.py +│ └── wsgi.py +└── manage.py +</pre></div> +<p>Para iniciarmos, precisamos da nossa tabela de comentários, vamos usar a mais simples e básica o possível.</p> +<table border="1" class="docutils"> +<colgroup> +<col width="50%" /> +<col width="50%" /> +</colgroup> +<thead valign="bottom"> +<tr><th class="head">Campo</th> +<th class="head">Tipo</th> +</tr> +</thead> +<tbody valign="top"> +<tr><td>nome</td> +<td>Varchar(30)</td> +</tr> +<tr><td>texto</td> +<td>Text</td> +</tr> +<tr><td>liberado</td> +<td>Boolean</td> +</tr> +<tr><td>data</td> +<td>Date</td> +</tr> +</tbody> +</table> +<p>Vamos seguir adiante e alterar a página inicial do admin para listar os últimos comentários de um simples sistema de blog. Para comerçar a editar o admin, precisamos inicialmente copiar o template que desejamos para a pasta uma pasta <cite>admin</cite> dentro ta pasta de templates do nosso projeto. Isto porque o Admin, não passa de uma app como outra qualquer, portanto o sistema de herança vai funcionar aqui, carregamento prioritariamente o seu template. Você pode conseguir o template que desejar (no nosso caso o index.html) dentro do projeto do Django mesmo, no meu caso &quot;C:\Django-1.6.3\django\contrib\admin\templates\admin&quot;.</p> +<div class="highlight"><pre><span></span>../blog/ +├── templates +│ ├── admin +│ │ └── index.html +├── core +</pre></div> +<p>Tire um tempo e brinque um pouco com este template e veja o que acontece se você alterar algumas coisa. Para adicionarmos a nossa listagem, vamos adicionar um painel lateral, para tal vamos adicionar o código abaixo antes do fechamento da ultima tag div. Nele podemos ver uma chamada para uma template_tag, portanto precisamos carrega-la no topo do template.</p> +<div class="highlight"><pre><span></span>{% load comentarios_tag %} +... +... +... +<span class="p">&lt;</span><span class="nt">div</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;module&quot;</span> <span class="na">id</span><span class="o">=</span><span class="s">&quot;ultimos-comentarios&quot;</span><span class="p">&gt;</span> + <span class="p">&lt;</span><span class="nt">h2</span><span class="p">&gt;</span>Ultimos Comentários<span class="p">&lt;/</span><span class="nt">h2</span><span class="p">&gt;</span> + <span class="p">&lt;</span><span class="nt">h3</span><span class="p">&gt;</span>Liberar<span class="p">&lt;/</span><span class="nt">h3</span><span class="p">&gt;</span> + {% comentarios_n_liberados %} +<span class="p">&lt;/</span><span class="nt">div</span><span class="p">&gt;</span> +</pre></div> +<p>Esta template trata-se da responsável por fazer a consulta na base de dados e renderizar a nossa lista, portanto ela é uma 'inclusion tag'. Se você não esta familiarizado com 'template tags', talvez queira dar uma olhada na <a class="reference external" href="https://docs.djangoproject.com/en/dev/howto/custom-template-tags/">documentação do django</a>.</p> +<p>Vamos então criar nossa template tag 'comentarios_n_liberados'. Primeiro devemos criar uma pasta chamada templatetags, dentro da nossa app core. Dentro ta pasta vamos inicializar um pacote python e criar o arquivo comentarios_tag.py. Nele precisamos declarar nosso metodo que deve se chamar 'comentarios_n_liberados' e nele fazer uma simples consulta ao banco buscando os comentários não liberados e por fim registrar a tag apontando para o template que será renderizado. Abaixo o código mais explicado.</p> +<div class="livros"> + <div class="recomendacoes">Recomendações</div> + <a rel="noopener nofollow" href="https://www.amazon.com.br/gp/product/8575225081/ref=as_li_ss_il?ie=UTF8&linkCode=li2&tag=sipmann-20&linkId=c17fa3ac84e734741a3761e874d7d286" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=8575225081&Format=_SL160_&ID=AsinImage&MarketPlace=BR&ServiceVersion=20070822&WS=1&tag=sipmann-20" ></a><img src="https://ir-br.amazon-adsystem.com/e/ir?t=sipmann-20&l=li2&o=33&a=8575225081" alt="Livro Pense em Python na Amazon" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> + <a rel="noopener nofollow" href="https://www.amazon.com.br/gp/product/B074ZTLKHB/ref=as_li_ss_il?ie=UTF8&linkCode=li2&tag=sipmann-20&linkId=e2f37c07da2dc4111ae47854b205d01a" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B074ZTLKHB&Format=_SL160_&ID=AsinImage&MarketPlace=BR&ServiceVersion=20070822&WS=1&tag=sipmann-20" ></a><img src="https://ir-br.amazon-adsystem.com/e/ir?t=sipmann-20&l=li2&o=33&a=B074ZTLKHB" alt="Livro Curso Intensivo de Python na Amazon" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> +</div><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">django</span> <span class="kn">import</span> <span class="n">template</span> +<span class="kn">from</span> <span class="nn">core</span> <span class="kn">import</span> <span class="n">models</span> + +<span class="c1">#Carrega o registro de template tags</span> +<span class="n">register</span> <span class="o">=</span> <span class="n">template</span><span class="o">.</span><span class="n">Library</span><span class="p">()</span> + +<span class="c1">#Registra o metodo a seguir como uma inclusion_tag indicando o template a ser renderizad</span> +<span class="nd">@register</span><span class="o">.</span><span class="n">inclusion_tag</span><span class="p">(</span><span class="s1">&#39;comentarios_n_liberados.html&#39;</span><span class="p">)</span> +<span class="k">def</span> <span class="nf">comentarios_n_liberados</span><span class="p">():</span> + <span class="n">comentarios</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">comentario</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">liberado</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">&#39;data&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">:</span><span class="mi">5</span><span class="p">]</span> + <span class="k">return</span> <span class="p">{</span> <span class="s1">&#39;comentarios&#39;</span> <span class="p">:</span> <span class="n">comentarios</span> <span class="p">}</span> +</pre></div> +<p>Abaixo o html do nosso template a ser renderizado, este deve estar dentro da pasta templates da nossa app core.</p> +<div class="highlight"><pre><span></span>{% if not comentarios %} + <span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;</span>Nenhum comentário novo<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span> +{% else %} + <span class="p">&lt;</span><span class="nt">ul</span><span class="p">&gt;</span> + {% for c in comentarios %} + <span class="p">&lt;</span><span class="nt">li</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;addlink&quot;</span><span class="p">&gt;</span> + <span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;{{ c.id }}&quot;</span><span class="p">&gt;</span>{{ c.texto|truncatechars:30 }}<span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span> + <span class="p">&lt;/</span><span class="nt">li</span><span class="p">&gt;</span> + {% endfor %} + <span class="p">&lt;/</span><span class="nt">ul</span><span class="p">&gt;</span> +{% endif %} +</pre></div> +<p>Com tudo isto feito, basta subir o seu servidor e ver o resultado final, que pode ser visto na imagem abaixo.</p> +<img alt="Resultado final" src="images/admin_modificado.png" /> +<p>Lembrando que aqui apenas mostrei como modificar o index do admin, para apenas listar dados do banco, mas você pode ir muito mais além. Abaixo fica a estrutura de diretórios final e um link para download do projeto funcionando.</p> +<div class="highlight"><pre><span></span>../blog/ +├── core +│ ├── templates +│ │ └── comentarios_n_liberados.html +│ ├── templatetag +│ │ └── comentarios_tag.py +│ ├── __init__.py +│ ├── admin.py +│ ├── models.py +│ ├── tests.py +│ └── views.py +├── blog +│ ├── __init__.py +│ ├── settings.py +│ ├── urls.py +│ └── wsgi.py +├── templates +│ ├── admin +│ │ └── index.html +└── manage.py +</pre></div> +<p>Espero que tenham gostado, criticas/sugestões são bem-vindas. <a class="reference external" href="https://github.com/sipmann/editando-django-admin">Fontes do Projeto</a></p> + \ No newline at end of file diff --git a/pt/feeds/mauricio-camargo-sipmann.atom.xml.gz b/pt/feeds/mauricio-camargo-sipmann.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..767d0fae343c6289c96715eaf8f46633c61ab942 GIT binary patch literal 25526 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 +Sipmann - Maurício Camargo Sipmannhttps://www.sipmann.com/pt/Mon, 21 Dec 2020 13:30:00 -0300Monitorando restarts do MySQL com PowerShellhttps://www.sipmann.com/pt/monitoring-mysql-restarts-with-powershell.html<p>Bom, chegou a hora para mais um script PowerShell. Se você ainda não viu os outros, de uma olhada no link abaixo.</p> +<ul> +<li><a href="https://www.sipmann.com/pt/monitoring-mysql-replication-with-powershell.html">Monitorando status de replicação do MySQL com PowerShell</a></li> +</ul> +<p>Este aqui é um script bem simples, mas novamente, se seu cliente não possui um servidor Zabbix ou não permite …</p>Maurício Camargo SipmannMon, 21 Dec 2020 13:30:00 -0300tag:www.sipmann.com,2020-12-21:/pt/monitoring-mysql-restarts-with-powershell.htmlPowerShellMySQLMySQL RestartPowershell monitoringTrocando a senha de um usuário do MySQL sem downtime da aplicaçãohttps://www.sipmann.com/pt/mysql-dual-password-functionality.html<p>Você deseja trocar a senha de um usuário do MySQL que está sendo utilizado por uma aplicação e não sofrer nenhum downtime? Bom, a versão 8.0.14 do MySQL foi liberada com uma feature chamada <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, com esta feature você pode alterar a senha de um usuário …</p>Maurício Camargo SipmannWed, 09 Dec 2020 13:40:00 -0300tag:www.sipmann.com,2020-12-09:/pt/mysql-dual-password-functionality.htmlMySQLMySQLMySQL Dual PasswordApache Nifi JSON to SQL removendo underlinehttps://www.sipmann.com/pt/apache-nifi-json-to-sql-replacing-underscore.html<p>Recentemente eu estava desenvolvendo alguns processos de ETL com o Apache NiFi. Mas após alguns minutos desenhando o meu fluxo, eu vi um comportamento estranho do componente ConvertJSONToSQL, que estava substituindo os underline ('_') do nome de um campo utilizado na condição da SQL (eu estava preparando um UPDATE). Aquilo …</p>Maurício Camargo SipmannWed, 02 Dec 2020 14:00:00 -0300tag:www.sipmann.com,2020-12-02:/pt/apache-nifi-json-to-sql-replacing-underscore.htmlToolsApache NifiConvertJSONToSQLremovendo underlineBloqueando um usuário do SQL Server baseado em uma tabela de horárioshttps://www.sipmann.com/pt/blocking-user-on-sql-server-based-on-schedule.html<p>Ok, algum tempo atrás, eu postei sobre como você pode impor limites às conexões do SQL Server utilizando o <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. Mas, e se você não pode utilizar ele? Você sempre pode bloquear logins usando uma trigger, mas eu não gosto da ideia de ter um select rodando a cada …</p>Maurício Camargo SipmannSat, 14 Nov 2020 07:00:00 -0300tag:www.sipmann.com,2020-11-14:/pt/blocking-user-on-sql-server-based-on-schedule.htmlSQL ServerSQLServerUserTime Schedule blockingComo definir as colunas no select utilizando Entity Frameworkhttps://www.sipmann.com/pt/select_specific_fields_with_efcore.html<p>Então, você utiliza Entity Framework Core e geralmente faz o seu selecto da seguinte forma, talvez você está retornando muitos dados.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Rodando a query acima, em uma base de testes você obtem o seguinte resultado, veja quantas …</p>Maurício Camargo SipmannWed, 28 Oct 2020 19:00:00 -0300tag:www.sipmann.com,2020-10-28:/pt/select_specific_fields_with_efcore.html.NETDotNetDotNet CoreEntity FrameworkEF CoreSpecify columnsZabbix Running on Low Memory Modehttps://www.sipmann.com/pt/zabbix-running-on-low-memory-mode.html<p>Olá pessoal! Trago hoje outro post sobre Zabbix. Este é sobre aumentar o cache do seu Zabbix Server. É perfeitamente comum (se você roda com as configurações padrões) receber avisos sobre <code>Zabbix value cache running on low memory mode</code> no seu dashboard ou arquivos de log.</p> +<p><img alt="Zabbix Dashboard alertando sobre problemas de memória" src="/images/zabbix_low_memory_mode.png"> +<img alt="Zabbix Dashboard cache gráfico com 70% utilizado" src="/images/zabbix_cache_filling.png"></p> +<p>Para resolver, abra o …</p>Maurício Camargo SipmannTue, 20 Oct 2020 19:00:00 -0300tag:www.sipmann.com,2020-10-20:/pt/zabbix-running-on-low-memory-mode.htmlLinuxZabbixShellLow memoryCacheMonitorando status de replicação do MySQL com PowerShellhttps://www.sipmann.com/pt/monitoring-mysql-replication-with-powershell.html<p>Tenho migrado alguns scripts bash que tenho para PowerShell, e chegou a vez de migrar um script de monitoramento de replicação do MySQL. Fica como crédito o script original do <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. É um script bem simples onde eu verifico algumas tags resultantes do <code>SHOW SLAVE STATUS\G</code>, são elas. <code>Slave_IO_Running …</code></p>Maurício Camargo SipmannWed, 14 Oct 2020 19:00:00 -0300tag:www.sipmann.com,2020-10-14:/pt/monitoring-mysql-replication-with-powershell.htmlPowerShellMySQLMySQL ReplicationPowerShellPowershell mailMicrosoft Contra Covidhttps://www.sipmann.com/pt/microsoft-against-covid.html<p>Você teve seu trabalho afetado pela pandemia do covid? Bom, na última semana eu postei no <a href="https://grepora.com/2020/09/17/microsoft-ignite-certification-voucher/">Grepora</a> sobre um Voucher para certificação gratuita que a Microsoft estava distribuindo durante o evento Microsoft Ignite. Depois disto, eu fiquei sabendo que eles também estão entregando grandes discontos para quem teve o seu …</p>Maurício Camargo SipmannSat, 03 Oct 2020 19:00:00 -0300tag:www.sipmann.com,2020-10-03:/pt/microsoft-against-covid.htmlAzureAzureCertificationMicrosoftO poder do PowerShellhttps://www.sipmann.com/pt/the-power-of-powershell.html<p>Como um usuário linux por muito tempo, eu automatizei algumas tarefas com scripts bash e fiquei longe do PowerShell... Voltei a utilizar Windows alguns anos atrás e ainda assim, não dei uma chance ao PS. Mas porque não? Eu fiz alguns scripts para automatizar algumas tarefas em um servidor Protheus …</p>Maurício Camargo SipmannMon, 21 Sep 2020 19:00:00 -0300tag:www.sipmann.com,2020-09-21:/pt/the-power-of-powershell.htmlPowerShellAzurePowerShellScriptGetChild-ItemRemove-ItemStop-ProccessTop Level Statement no C# 9https://www.sipmann.com/pt/top_level_statement_csharp_9.html<p>Olá pessoal, venho hoje falar sobre uma novidade que estará disponível na versão 9 do C#. Toda vez que você deseja criar um novo projeto, você sempre tem o mesmo arquivo Main, com a mesma estrutura. Na próxima versão do C# (versão 9), nós teremos uma nova funcionalidade chamada <code>Top …</code></p>Maurício Camargo SipmannWed, 29 Jul 2020 19:00:00 -0300tag:www.sipmann.com,2020-07-29:/pt/top_level_statement_csharp_9.html.NETC#Dotnet CoreDotNet.netZabbix poller processes more than 75%https://www.sipmann.com/pt/zabbix-poller-processes-more-than-75.html<p>Este é o terceiro post sobre configurações para o Zabbix. Todas as alterações que eu sugiro nestes posts, são baseadas em um servidor com 50+ hosts. Outro problema que pode ocorrer em seu servidor, é o poller de informações ficar sobrecarregado pela quantidade de servidores que ele precisa pegar carga …</p>Maurício Camargo SipmannThu, 02 Jul 2020 19:00:00 -0300tag:www.sipmann.com,2020-07-02:/pt/zabbix-poller-processes-more-than-75.htmlLinuxZabbixShellZabbix PollerPoller proccessMonitorando a disponibilidade de um Website com Azure Functionshttps://www.sipmann.com/pt/monitoring-website-heath-with-azure-functions.html<p>Algumas vezes você se depara com a necessidade de monitorar a disponibilidade de um website ou mudanças em seu conteúdo. É claro que temos diversas opções disponíveis no mercado, mas para fins de curiosidade, vamos programar o nosso próprio e ver o que podemos fazer. Primeiramente, tudo que você ver …</p>Maurício Camargo SipmannMon, 22 Jun 2020 19:00:00 -0300tag:www.sipmann.com,2020-06-22:/pt/monitoring-website-heath-with-azure-functions.htmlAzureAzureAzure DevopsC#Dotnet CoreDotNetMonitor WebsiteZabbix ICMP pinger processes more than 75%https://www.sipmann.com/pt/zabbix-icmp-pinger-processes-more-than-75.html<p>Então o seu systema de monitoramento creasceu e o seu Zabbix começou a printar "<em>Zabbix icmp pinger processes more than 75% busy</em>" no seu dashboard.</p> +<p><img alt="Dashboard do zabbix avisando sobre o erro" src="/images/zabbix_pinger01.png"></p> +<p>Tudo que você tem a fazer é abrir o seu arquivo de configuração (<code>/etc/zabbix/zabbix_server.conf</code>) e localizar a tag chamada <code>StartPingers</code>. Ela deve …</p>Maurício Camargo SipmannMon, 25 May 2020 16:00:00 -0300tag:www.sipmann.com,2020-05-25:/pt/zabbix-icmp-pinger-processes-more-than-75.htmlLinuxZabbixicmp pingericmp pinger more than 75Zabbix ServerZabbix Server Out of Memoryhttps://www.sipmann.com/pt/zabbix-server-out-of-memory-crash.html<p>Você tem um servidor Zabbix crashando e observando o arquivo de log <code>/var/log/zabbix/zabbix_server.log</code> você localiza a seguinte mensagem referênciando falta de memória?</p> +<div class="highlight"><pre><span></span><code>__mem_malloc: skipped <span class="m">0</span> asked <span class="m">24</span> skip_min <span class="m">18446744073709551615</span> skip_max <span class="m">0</span> +<span class="o">[</span>file:dbconfig.c,line:94<span class="o">]</span> __zbx_mem_realloc<span class="o">()</span>: out of memory <span class="o">(</span>requested <span class="m">16</span> bytes<span class="o">)</span> +<span class="o">[</span>file:dbconfig.c …</code></pre></div>Maurício Camargo SipmannThu, 27 Feb 2020 19:00:00 -0300tag:www.sipmann.com,2020-02-27:/pt/zabbix-server-out-of-memory-crash.htmlLinuxZabbixShellOut of memoryCrashRemovendo um usuário de uma base SQL Serverhttps://www.sipmann.com/pt/removing-user-from-sql-server-database.html<p>O seu cliente lhe pede com urgência para <em>dropar</em> um usuário da sua base MsSQL Server, mas você trava com o seguinte aviso de erro:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>Se você não possui (ou no momento não consegue acesso …</p>Maurício Camargo SipmannFri, 06 Sep 2019 07:00:00 -0300tag:www.sipmann.com,2019-09-06:/pt/removing-user-from-sql-server-database.htmlSQL ServerSQLServerUserThe database principal owns a schemaResolvendo java.net.SocketException: Protocol family unavailable em Java + Docker + WildFlyhttps://www.sipmann.com/pt/socketException-protocol-family-unavailable-java-docker-wildfly.html<p>Nos últimos dias eu estou brincando com o <a class="reference external" href="http://wildfly-swarm.io/">WildFly Swarm</a> e decidi fazer o deploy de uma aplicação simples com Docker. Deveria funcionar bem, ao menos é o que pensava. Construí um container com o seguinte Dockerfile e ao invés de obter uma aplicação web, tudo que eu obtive foi …</p>Maurício Camargo SipmannSun, 04 Mar 2018 17:40:00 -0300tag:www.sipmann.com,2018-03-04:/pt/socketException-protocol-family-unavailable-java-docker-wildfly.htmlJavaJavaWildFlyDockerjava.net.SocketExceptionProtocol family unavailableMenu dinâmico com as apps do djangohttps://www.sipmann.com/pt/menu-dinamico-com-apps-do-django.html<p>Digamos que sua empresa trabalha com Django desenvolvendo aplicações cujas apps são plugaveis e reutilizáveis. Por que não se aproveitar de um certo padrão de desenvolvimento para desenvolver menus que se modificam de acordo com as apps que estão no projeto? Como o objetivo aqui não é desenvolver uma app …</p>Maurício Camargo SipmannSun, 21 Jan 2018 21:17:00 -0200tag:www.sipmann.com,2018-01-21:/pt/menu-dinamico-com-apps-do-django.htmlPythonpythondjangoScripts de inicialização no raspberry pihttps://www.sipmann.com/pt/script-de-inicializacao-raspberry.html<p>Instalei essa semana o <a class="reference external" href="https://gitea.io">gitea</a> no meu raspberry pi B + e queria iniciar ele no boot... Não sou profundo conhecedor de linux, então, logo não sabia como fazer isto da melhor forma. +As versões atuais do Raspbian utilizam o <cite>systemd</cite> para gerenciar os serviços e confesso que nunca havia utilizado …</p>Maurício Camargo SipmannSun, 08 Oct 2017 18:00:00 -0300tag:www.sipmann.com,2017-10-08:/pt/script-de-inicializacao-raspberry.htmlShellShellraspberryCool Toolshttps://www.sipmann.com/pt/cool-tools.html<p>Com o passar do tempo você vai &quot;encontrando&quot; - e às vezes até mesmo desenvolvendo - algumas ferramentas que tornam o seu dia a dia como desenvolvedor mais fácil. Abaixo seguem algumas das minhas ferramentas que costumo usar. Ressalto que essa lista será (provavelmente) atualizada com o passar do tempo.</p> +<div class="section" id="https-www-gitkraken-com"> +<h2><a class="reference external" href="https://www.gitkraken.com">https://www …</a></h2></div>Maurício Camargo SipmannSun, 17 Sep 2017 14:00:00 -0300tag:www.sipmann.com,2017-09-17:/pt/cool-tools.htmlToolsToolsDesenvolvendo apps para o FirefoxOS (Parte 1)https://www.sipmann.com/pt/desenvolvendo-app-firefoxos.html<h3>Requisitos mínimos?</h3> +<p>Para seguir este tutorial você precisará do <a href="http://nodejs.org/">Nodejs</a>. Utilizaremos ele para automatizar algumas tarefas, como a criação do nosso projeto e até mesmo o empacotamento da app. Estas automatizações se darão pela utilização de algumas aplicações como o <a href="http://yeoman.io/">Yeoman</a> e o <a href="http://gruntjs.com/">Grunt</a> .</p> +<p>Também será necessário o emulador do …</p>Maurício Camargo SipmannTue, 02 Sep 2014 19:00:00 -0300tag:www.sipmann.com,2014-09-02:/pt/desenvolvendo-app-firefoxos.htmlFirefoxOSFirefoxOSHtmlYeomanEditando o Admin do Djangohttps://www.sipmann.com/pt/editando-o-admin-do-django.html<p>Este artigo foi re-postado no grupo <a class="reference external" href="http://pythonclub.com.br/editando-o-admin-do-django.html">PythonClub</a>. Vamos falar um pouco sobre como customizar o admin do Django. Primeiramente porque? A resposta é bem simples, quero mostrar algo para o usuário sem que ele precise entrar nas apps e fazer alguma consulta para então tomar alguma ação. Alguns exêmplos para …</p>Maurício Camargo SipmannThu, 15 May 2014 18:00:00 -0300tag:www.sipmann.com,2014-05-15:/pt/editando-o-admin-do-django.htmlPythonpythondjangodjango-admin \ No newline at end of file diff --git a/pt/feeds/mauricio-camargo-sipmann.rss.xml.gz b/pt/feeds/mauricio-camargo-sipmann.rss.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..84a585619dd2750d319dcafe758b725100e17b77 GIT binary patch literal 5889 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 literal 0 HcmV?d00001 diff --git a/pt/feeds/mysql.atom.xml b/pt/feeds/mysql.atom.xml new file mode 100644 index 000000000..9d0ecd0fd --- /dev/null +++ b/pt/feeds/mysql.atom.xml @@ -0,0 +1,14 @@ + +Sipmann - MySQLhttps://www.sipmann.com/pt/2020-12-09T13:40:00-03:00Trocando a senha de um usuário do MySQL sem downtime da aplicação2020-12-09T13:40:00-03:002020-12-09T13:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-09:/pt/mysql-dual-password-functionality.html<p>Você deseja trocar a senha de um usuário do MySQL que está sendo utilizado por uma aplicação e não sofrer nenhum downtime? Bom, a versão 8.0.14 do MySQL foi liberada com uma feature chamada <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, com esta feature você pode alterar a senha de um usuário …</p><p>Você deseja trocar a senha de um usuário do MySQL que está sendo utilizado por uma aplicação e não sofrer nenhum downtime? Bom, a versão 8.0.14 do MySQL foi liberada com uma feature chamada <a href="https://dev.mysql.com/doc/refman/8.0/en/password-management.html#dual-passwords">Dual Password Support</a>, com esta feature você pode alterar a senha de um usuário mantendo a anterior ainda funcionando como uma forma de "backup". Desta forma, você ainda conseguirá autenticar com o usuário utilizando tanto a nova senha, quanto a anterior. Com isto, o seu processo de troca de senha fica algo como:</p> +<p>1) Troque a senha mantendo a anterior;</p> +<p>2) Faça o Deploy da nova configuração na sua aplicação/cluster;</p> +<p>3) Descarte a senha anterior.</p> +<p>Para alterar a senha mantendo a anterior, você deve rodar o seguinte comando:</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">IDENTIFIED</span> <span class="k">BY</span> <span class="s1">&#39;new_password&#39;</span> <span class="n">RETAIN</span> <span class="n">CURRENT</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>Para descartar a senha antiga, rode o seguinte:</p> +<div class="highlight"><pre><span></span><code><span class="k">ALTER</span> <span class="n">USER</span> <span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">DISCARD</span> <span class="n">OLD</span> <span class="n">PASSWORD</span><span class="p">;</span> +</code></pre></div> + +<p>E pronto. Espero que isto lhe ajude a evitar downtimes e dores de cabeça :)</p> \ No newline at end of file diff --git a/pt/feeds/mysql.atom.xml.gz b/pt/feeds/mysql.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..dc27d70e8452979919e30df4dd850d6018bf0c21 GIT binary patch literal 1120 zcmV-m1fTmKiwFP!000021MOGcZre5#zVA~IDo`LmEXqj>w6@|bja?u>+GcjTVOIk! z(J~u~Wcg#yyV|Q112$m5p2BakC)pt-MYijv$$$a9=tW|h{CIx8^N~DGPk$*nT2O76 z6em$PP9j7_CUYi=lgQaw=XrEGc$Cg4%@II_If>@hsvgG6ma%Dd7m_ST1gk2jnl+RjQEFatvLyBQNbt(t{`QRuyN;=)6PV(Zqd)#}P z^pd2L9K-(W{S0ZQJ`lDtN!AhVDR!jJ@ z6qc0~u78&gq%!c($sOSxMT}WWop)wVWESd8IJ2vGZg2V7L%4EN&dmI7 z3R=*E2qVtUr5>b$lyvZ#IKBQm0~XFnNpvAmt)Uc$^%OU7sEZ{Ev*B?C&W}Ri6{Yqe@ zq=qe96-5*Y|6$}zQ;h^zc5V4j(Mw1UJo-cGVb9|v?mlgO%_KvdO{pdz6d)p)pHX6+ zrYM^OnK19OAvCk79g3Vcf&%#nhYAmzZ><1JE63f1suD->&xW>Q#)>08yl%Bq2T zORKxik6;R*Oh8ut6#7Hx7r}w7QkS|6HliuXZk&o@G^{-Pg~Qr$WdI6qXyKTKO2MT7 z88Tm9AFONxsH^9_Sct#}BIKfu_7I9)Pd3rT=o}0%W91>3G1MUivZ2OEA6Af%A5_WC zz#}kFR2lSIeLlKXVD|vQeeX5ZFtmq~{=S_@2j~@uj6fJes<>SFCm_TQna^0^bS*&v zmfe;ramJki(|he6A9zlID%-|%oBh5GS45Lf>bxh5raYicinPoD?HPm;0l+iltFTK_ z&K4-+AU@DGE9M;jY*1xzuW2(hiil>6H@`ravIT0a-2^LVm)E25)*iGA6an~d@+F+< zR&kM1^&cO<=o6)!q5AgwCy{M#mSOLAcVc!OaL^i`OJn!D_)H=f!_k}Ti&qz;;oazp zpO-&9ENMZPKR36>gTfk*uFo#s+y{C7Zajt*?gPC#n@oOuJ09Lis|wKVAcOSqrgZRz z)-Z@NpmxqcULBi_QvlLu1zaQAUxlsMzlr>R7WwdEa(*@*-Us^ja`<&gY2;rNcywYk zGKy*$8V>*9AU=m1`MvY6DxwSKh1PTu1{#fAYWRfJj7+J27Et mOLch?g-*k_^3D8zMWC%lVH=O@UpV1+*Wh1jJ9ThS4gdh>ToEY% literal 0 HcmV?d00001 diff --git a/pt/feeds/net.atom.xml b/pt/feeds/net.atom.xml new file mode 100644 index 000000000..36541ed3b --- /dev/null +++ b/pt/feeds/net.atom.xml @@ -0,0 +1,59 @@ + +Sipmann - .NEThttps://www.sipmann.com/pt/2020-10-28T19:00:00-03:00Como definir as colunas no select utilizando Entity Framework2020-10-28T19:00:00-03:002020-10-28T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-28:/pt/select_specific_fields_with_efcore.html<p>Então, você utiliza Entity Framework Core e geralmente faz o seu selecto da seguinte forma, talvez você está retornando muitos dados.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Rodando a query acima, em uma base de testes você obtem o seguinte resultado, veja quantas …</p><p>Então, você utiliza Entity Framework Core e geralmente faz o seu selecto da seguinte forma, talvez você está retornando muitos dados.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p>Rodando a query acima, em uma base de testes você obtem o seguinte resultado, veja quantas colunas estão retornando da sua base de dados.</p> +<p><img alt="Print com todas as colunas" src="/images/ef_core_allcolumns.png"></p> +<p>No meu caso, eu só pretendo ter de volta as colunas Title, PublishedData e uma pequena descrição. Então para selecionar apenas estes campos, nós temos algumas opções. Na primeira, nós vamos definir os campos e retornar um objeto do tipo Dynamic. A segunda forma, é dar ao .NET o objeto a ser retornado, pode ser por exêmplo um DTO.</p> +<div class="highlight"><pre><span></span><code><span class="kt">var</span> <span class="n">products</span> <span class="p">=</span> <span class="n">Products</span> + + <span class="p">.</span><span class="n">Select</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="k">new</span> <span class="p">{</span><span class="n">p</span><span class="p">.</span><span class="n">ProductID</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitPrice</span><span class="p">})</span> + <span class="c1">//.Select(p =&gt; new ProductDTO {p.ProductID, p.ProductName, p.UnitsInStock, p.UnitPrice})</span> + + <span class="p">.</span><span class="n">Where</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">UnitsInStock</span> <span class="p">&gt;</span> <span class="m">0</span><span class="p">)</span> + <span class="p">.</span><span class="n">OrderBy</span><span class="p">(</span><span class="n">p</span> <span class="p">=&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">ProductName</span><span class="p">)</span> + <span class="p">.</span><span class="n">ToList</span><span class="p">()</span> +</code></pre></div> + +<p><img alt="Print com menos colunas e também menor quantidade de dados" src="/images/ef_core_less_columns.png"></p>Top Level Statement no C# 92020-07-29T19:00:00-03:002020-07-29T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-07-29:/pt/top_level_statement_csharp_9.html<p>Olá pessoal, venho hoje falar sobre uma novidade que estará disponível na versão 9 do C#. Toda vez que você deseja criar um novo projeto, você sempre tem o mesmo arquivo Main, com a mesma estrutura. Na próxima versão do C# (versão 9), nós teremos uma nova funcionalidade chamada <code>Top …</code></p><p>Olá pessoal, venho hoje falar sobre uma novidade que estará disponível na versão 9 do C#. Toda vez que você deseja criar um novo projeto, você sempre tem o mesmo arquivo Main, com a mesma estrutura. Na próxima versão do C# (versão 9), nós teremos uma nova funcionalidade chamada <code>Top Level Statement</code>. Com isto, poderemos programar a nossa aplicação sem toda aquela estrutura de <code>namespace/class/public void static main</code>. Veja o código abaixo.</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="s">&quot;Hello World!&quot;</span><span class="p">);</span> +</code></pre></div> + +<p>Parece muito simples, não é? Com isto, você pode brincar com seu código e até mesmo programar uma pequena WEB API. Para começar a brincar com estas novas <em>features</em>, primeiramente faça o download do preview do <a href="https://dotnet.microsoft.com/download/dotnet/5.0">.net 5 SDK</a> e modifique o seu arquivo <code>.csproj</code> para apontar o framework para <code>.net5.0</code> e a versão de preview da linguagem. Abaixo como uma aplicação de console deve ficar.</p> +<div class="highlight"><pre><span></span><code><span class="nt">&lt;Project</span> <span class="na">Sdk=</span><span class="s">&quot;Microsoft.NET.Sdk&quot;</span><span class="nt">&gt;</span> + <span class="nt">&lt;PropertyGroup&gt;</span> + <span class="nt">&lt;OutputType&gt;</span>Exe<span class="nt">&lt;/OutputType&gt;</span> + <span class="nt">&lt;TargetFramework&gt;</span>net5.0<span class="nt">&lt;/TargetFramework&gt;</span> + <span class="nt">&lt;LangVersion&gt;</span>preview<span class="nt">&lt;/LangVersion&gt;</span> + <span class="nt">&lt;/PropertyGroup&gt;</span> +<span class="nt">&lt;/Project&gt;</span> +</code></pre></div> + +<p>E assim você está pronto para brincar com as novas funcionalidades que estão disponíveis na versão preview. Vamos programar uma aplicação simples que faz uma requisição na API da NASA e printe a Imagem do Dia no console. Não é nenhum código mirabolante, é simplesmente para exemplificar o quão simples uma simples chamada de API pode ser. Feito isto, porque não salvar a imagem como um arquivo? Ou então enviar essa imagem via telegram?</p> +<div class="highlight"><pre><span></span><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span> +<span class="k">using</span> <span class="nn">System.Text.Json</span><span class="p">;</span> + +<span class="kt">var</span> <span class="n">API</span> <span class="p">=</span> <span class="s">&quot;https://api.nasa.gov/planetary/apod?hd=true&amp;api_key=DEMO_KEY&quot;</span><span class="p">;</span> +<span class="kt">var</span> <span class="n">cli</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span> + +<span class="kt">var</span> <span class="n">response</span> <span class="p">=</span> <span class="k">await</span> <span class="n">cli</span><span class="p">.</span><span class="n">GetAsync</span><span class="p">(</span><span class="n">API</span><span class="p">);</span> +<span class="kt">var</span> <span class="n">data</span> <span class="p">=</span> <span class="n">JsonSerializer</span><span class="p">.</span><span class="n">Deserialize</span><span class="p">&lt;</span><span class="n">NasaApi</span><span class="p">&gt;(</span><span class="k">await</span> <span class="n">response</span><span class="p">.</span><span class="n">Content</span><span class="p">.</span><span class="n">ReadAsStringAsync</span><span class="p">());</span> + +<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">Url</span><span class="p">);</span> +</code></pre></div> + +<p>Por hoje é isso. Fique de olho nas novas features que o C# 9 vai nos trazer. Já temos várias disponíveis hoje para testar, esta é apenas uma delas.</p> \ No newline at end of file diff --git a/pt/feeds/net.atom.xml.gz b/pt/feeds/net.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..7ea3ecdce10b52ce7f07b41117072d1248de1371 GIT binary patch literal 2520 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 literal 0 HcmV?d00001 diff --git a/pt/feeds/powershell.atom.xml b/pt/feeds/powershell.atom.xml new file mode 100644 index 000000000..3ae913d80 --- /dev/null +++ b/pt/feeds/powershell.atom.xml @@ -0,0 +1,124 @@ + +Sipmann - PowerShellhttps://www.sipmann.com/pt/2020-12-21T13:30:00-03:00Monitorando restarts do MySQL com PowerShell2020-12-21T13:30:00-03:002020-12-21T13:30:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-21:/pt/monitoring-mysql-restarts-with-powershell.html<p>Bom, chegou a hora para mais um script PowerShell. Se você ainda não viu os outros, de uma olhada no link abaixo.</p> +<ul> +<li><a href="https://www.sipmann.com/pt/monitoring-mysql-replication-with-powershell.html">Monitorando status de replicação do MySQL com PowerShell</a></li> +</ul> +<p>Este aqui é um script bem simples, mas novamente, se seu cliente não possui um servidor Zabbix ou não permite …</p><p>Bom, chegou a hora para mais um script PowerShell. Se você ainda não viu os outros, de uma olhada no link abaixo.</p> +<ul> +<li><a href="https://www.sipmann.com/pt/monitoring-mysql-replication-with-powershell.html">Monitorando status de replicação do MySQL com PowerShell</a></li> +</ul> +<p>Este aqui é um script bem simples, mas novamente, se seu cliente não possui um servidor Zabbix ou não permite que você configure um para realizar este monitoramento, um conjunto de scripts pode ser bem útil. Primeiramente nós executamos uma query báscia <code>SHOW GLOBAL STATUS LIKE 'Uptime'</code>, com ela nós conseguimos capturar exatamente o que nós estamos procurando.</p> +<p>Se por alguma razão o comando falhar (verificamos atravez da variábel global <code>$lastExitCode</code>), nós mandamos um e-mail lhe avisando sobre o problema ocorrido.</p> +<p>E então, nós chegamos à parte onde fazemos o parse do valor obtido, esta parte é bem similar ao parse que codificamos no primeiro post sobre monitoramento utilizando PowerShell. Nós basicamentes procuramos pela linha contendo <code>Value</code>, separamos por espaço e então parseamos a segunda posição em um inteiro. Então tudo que precisamos fazer é verificar se o valor parseado é menor que o nosso threshold, se for menor, nós mandamos um e-mail.</p> +<div class="highlight"><pre><span></span><code><span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;maurio[at]sipmann.com&#39;</span> +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio[at]sipmann.com&#39;</span> +<span class="nv">$MysqlHost</span> <span class="p">=</span> <span class="s1">&#39;127.0.0.1&#39;</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;123&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-h</span> <span class="nv">$MysqlHost</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s2">&quot;SHOW GLOBAL STATUS LIKE &#39;Uptime&#39; \G&quot;</span><span class="p">)</span> + +<span class="cm">&lt;# Unable to execute the sql Command #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$lastExitCode</span> <span class="o">-eq</span> <span class="n">1</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Connection problem&#39;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;Connection problem on host ${MysqlHost}&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> + <span class="n">exit</span> +<span class="p">}</span> + +<span class="nv">$UpTime</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Value:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="cm">&lt;# If the uptime is lower then 20 minutes #&gt;</span> +<span class="k">if</span> <span class="p">(</span><span class="nv">$UpTime</span> <span class="o">-lt</span> <span class="n">1200</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s2">&quot;MySQL Restarted&quot;</span> <span class="n">-bodyAsHtml</span> <span class="s2">&quot;MySQL host ${MysqlHost} restarted less than 20 minutes ago&quot;</span> <span class="n">-Credential</span> <span class="nb">Get-Credential</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> +</code></pre></div> + +<p>Este script (e os outros que eu utilizo) estão disponíveis no meu GitHub <a href="https://github.com/sipmann/PowerShellScripts">aqui</a>. Tenha em mente que os scripts localizados no GitHub, são um pouco diferentes do que exibido aqui. Espero que tenha achado útil.</p>Monitorando status de replicação do MySQL com PowerShell2020-10-14T19:00:00-03:002020-10-14T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-10-14:/pt/monitoring-mysql-replication-with-powershell.html<p>Tenho migrado alguns scripts bash que tenho para PowerShell, e chegou a vez de migrar um script de monitoramento de replicação do MySQL. Fica como crédito o script original do <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. É um script bem simples onde eu verifico algumas tags resultantes do <code>SHOW SLAVE STATUS\G</code>, são elas. <code>Slave_IO_Running …</code></p><p>Tenho migrado alguns scripts bash que tenho para PowerShell, e chegou a vez de migrar um script de monitoramento de replicação do MySQL. Fica como crédito o script original do <a href="https://handyman.dulare.com/mysql-replication-status-alerts-with-bash-script/">Paweł</a>. É um script bem simples onde eu verifico algumas tags resultantes do <code>SHOW SLAVE STATUS\G</code>, são elas. <code>Slave_IO_Running</code>, <code>Slave_SQL_Running</code> e <code>Seconds_Behind_Master</code>. Ainda preciso verificar formas mais corretas de armazenar/carregar as variáveis como usuários e senha, se tiver alguma dica, fique à vontade para inclusive fazer um pull request (<a href="https://github.com/sipmann/PowerShellScripts">aqui</a>) no repositório onde vou armazenar alguns dos meus scripts.</p> +<div class="highlight"><pre><span></span><code><span class="cm">&lt;#</span> +<span class="cm"> Variables definition</span> +<span class="cm">#&gt;</span> +<span class="nv">$MaxSeconds</span> <span class="p">=</span> <span class="n">120</span> <span class="c"># Max seconds behind master allowed</span> +<span class="nv">$MysqlUser</span> <span class="p">=</span> <span class="s1">&#39;root&#39;</span> +<span class="nv">$MysqlPass</span> <span class="p">=</span> <span class="s1">&#39;&#39;</span> + +<span class="nv">$MailTo</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> +<span class="nv">$MailFrom</span> <span class="p">=</span> <span class="s1">&#39;mauricio@sipmann.com&#39;</span> + + +<span class="nv">$data</span> <span class="p">=</span> <span class="p">$(</span><span class="n">mysql</span> <span class="n">-u</span> <span class="nv">$MysqlUser</span> <span class="n">-p</span><span class="s2">&quot;$MysqlPass&quot;</span> <span class="n">-e</span> <span class="s1">&#39;SHOW SLAVE STATUS \G&#39;</span><span class="p">)</span> + +<span class="c">#Debug data</span> +<span class="c">#$data = Get-Content &#39;c:\temp\sampleresult.txt&#39;</span> + +<span class="cm">&lt;# Parse the data #&gt;</span> +<span class="nv">$IORunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_IO_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SQLRunning</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Slave_SQL_Running:&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$LastErrNo</span> <span class="p">=</span> <span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Last_Errno&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> +<span class="nv">$SecondsBh</span> <span class="p">=</span> <span class="no">[int]</span><span class="p">((</span><span class="nv">$data</span> <span class="p">|</span> <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span> <span class="o">-match</span> <span class="s1">&#39;Seconds_Behind_Master&#39;</span> <span class="p">})</span> <span class="n">-split</span> <span class="s1">&#39;\s+&#39;</span><span class="p">)[</span><span class="n">2</span><span class="p">]</span> + +<span class="k">If</span> <span class="p">(</span><span class="nv">$IORunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SQLRunning</span> <span class="o">-Eq</span> <span class="s1">&#39;No&#39;</span> <span class="o">-Or</span> <span class="nv">$SecondsBh</span> <span class="o">-gt</span> <span class="nv">$MaxSeconds</span><span class="p">)</span> <span class="p">{</span> + <span class="nv">$MailBody</span> <span class="p">=</span> <span class="s1">&#39;&lt;h1&gt;Problema na replicação&lt;/h1&gt;&lt;br&gt;&#39;</span> + + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; IO Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$IORunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; SQL Running: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SQLRunning</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39;Seconds Behind: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$SecondsBh</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + <span class="nv">$MailBody</span> <span class="p">+=</span> <span class="s1">&#39; Last Err No: &#39;</span> <span class="p">+</span> <span class="p">(</span><span class="nv">$LastErrNo</span><span class="p">)</span> <span class="p">+</span> <span class="s1">&#39;&lt;br&gt;&#39;</span> + + <span class="cm">&lt;# Send e-mail, maybe some telegram message here too #&gt;</span> + <span class="nb">Send-MailMessage</span> <span class="n">-To</span> <span class="nv">$MailTo</span> <span class="n">-From</span> <span class="nv">$MailFrom</span> <span class="n">-Subject</span> <span class="s1">&#39;Problemas na replicação&#39;</span> <span class="n">-bodyAsHtml</span> <span class="nv">$MailBody</span> <span class="n">-Credential</span> <span class="p">(</span><span class="nb">Get-Credential</span><span class="p">)</span> <span class="n">-SmtpServer</span> <span class="s1">&#39;smtp.office365.com&#39;</span> <span class="n">-Port</span> <span class="n">587</span> <span class="n">-UseSsl</span> +<span class="p">}</span> <span class="k">Else</span> <span class="p">{</span> + <span class="nb">Write-Host</span> <span class="s2">&quot;Up and running&quot;</span> +<span class="p">}</span> +</code></pre></div>O poder do PowerShell2020-09-21T19:00:00-03:002020-09-21T19:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-09-21:/pt/the-power-of-powershell.html<p>Como um usuário linux por muito tempo, eu automatizei algumas tarefas com scripts bash e fiquei longe do PowerShell... Voltei a utilizar Windows alguns anos atrás e ainda assim, não dei uma chance ao PS. Mas porque não? Eu fiz alguns scripts para automatizar algumas tarefas em um servidor Protheus …</p><p>Como um usuário linux por muito tempo, eu automatizei algumas tarefas com scripts bash e fiquei longe do PowerShell... Voltei a utilizar Windows alguns anos atrás e ainda assim, não dei uma chance ao PS. Mas porque não? Eu fiz alguns scripts para automatizar algumas tarefas em um servidor Protheus.</p> +<p>Eu acabei achando os scripts PS de fácil leitura e entendimento. Abaixo, nós temos um script para remover arquivos filtrando pela sua extensão (ou sem extensão alguma no caso do script em questão).</p> +<div class="highlight"><pre><span></span><code><span class="nb">Get-ChildItem</span> <span class="s2">&quot;C:\TOTVS\protheus_data\system&quot;</span> <span class="o">-File</span> <span class="n">-Filter</span> <span class="p">*.</span> <span class="p">|</span> <span class="nb">Move-Item</span> <span class="n">-Force</span> <span class="n">-Destination</span> <span class="p">{</span> + <span class="cm">&lt;# Diretório ao qual os arquivos vão ser movidos. Você pode utilizar formatos de data para nomear os diretórios #&gt;</span> + <span class="cm">&lt;# LastWriteTime é a propriedade do arquivo corrent #&gt;</span> + <span class="nv">$dir</span> <span class="p">=</span> <span class="s2">&quot;C:\bad_files\{0:yyyy\\MM\\dd}&quot;</span> <span class="o">-f</span> <span class="nv">$_</span><span class="p">.</span><span class="n">LastWriteTime</span> + <span class="nv">$null</span> <span class="p">=</span> <span class="n">mkdir</span> <span class="nv">$dir</span> <span class="n">-Force</span> + <span class="s2">&quot;$dir\</span><span class="p">$(</span><span class="nv">$_</span><span class="p">.</span><span class="n">Name</span><span class="p">)</span><span class="s2">&quot;</span> +<span class="p">}</span> +</code></pre></div> + +<p>Você já precisou remover arquivos baseado no conteúdo de outro arquivo? Abaixo um script onde eu leio um arquivo que contem os nomes de arquivos que eu desejo remover. </p> +<div class="highlight"><pre><span></span><code><span class="k">foreach</span><span class="p">(</span><span class="nv">$line</span> <span class="k">in</span> <span class="nb">Get-Content</span> <span class="p">.\</span><span class="n">Desktop</span><span class="p">\</span><span class="n">bad_files</span><span class="p">.</span><span class="n">txt</span><span class="p">)</span> <span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="nb">Test-Path</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">))</span> <span class="p">{</span> + <span class="nb">Remove-Item</span><span class="p">(</span><span class="s1">&#39;\\x.y.z.a\c$\TOTVS\protheus_data\xmls\&#39;</span><span class="p">+</span><span class="nv">$line</span><span class="p">+</span><span class="s1">&#39;.xml&#39;</span><span class="p">)</span> + <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> + <span class="nb">echo </span><span class="nv">$line</span> <span class="p">+</span> <span class="s1">&#39; - File not found&#39;</span> + <span class="p">}</span> +<span class="p">}</span> +</code></pre></div> + +<p>E um script bonus para parar e iniciar serviços (se você gerencia um servidor Protheus, você sabe o porque eu faço isto).</p> +<div class="highlight"><pre><span></span><code><span class="nv">$servicesNames</span> <span class="p">=</span> <span class="s1">&#39;app_main&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker1&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker2&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker3&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker4&#39;</span><span class="p">,</span> + <span class="s1">&#39;app_worker5&#39;</span> + +<span class="nb">Write-host</span> <span class="s2">&quot;Parando Serviços&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Parando: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nv">$SrvPID</span> <span class="p">=</span> <span class="p">(</span><span class="nb">get-wmiobject</span> <span class="n">win32_service</span> <span class="p">|</span> <span class="nb">where </span><span class="p">{</span> <span class="nv">$_</span><span class="p">.</span><span class="n">name</span> <span class="o">-eq</span> <span class="nv">$srv</span><span class="p">}).</span><span class="n">processID</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PID: &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> + + <span class="cm">&lt;# Força a parada caso o serviço esteja travado #&gt;</span> + <span class="nb">Stop-Process</span> <span class="nv">$ServicePID</span> <span class="n">-Force</span> + <span class="nb">Write-host</span> <span class="s2">&quot;PDI &quot;</span> <span class="p">+</span> <span class="nv">$SrvPID</span> <span class="p">+</span> <span class="s2">&quot; parado&quot;</span> +<span class="p">}</span> + + +<span class="nb">Write-host</span> <span class="s2">&quot;Inicializando Serviços&quot;</span> +<span class="nb">Write-host</span> <span class="s2">&quot;--------------------------&quot;</span> + +<span class="k">foreach</span> <span class="p">(</span><span class="nv">$srv</span> <span class="k">in</span> <span class="nv">$servicesNames</span><span class="p">)</span> <span class="p">{</span> + <span class="nb">Write-host</span> <span class="s2">&quot;Inicializando: &quot;</span> <span class="p">+</span> <span class="nv">$srv</span> + <span class="nb">Start-Service</span> <span class="nv">$srv</span> +<span class="p">}</span> +</code></pre></div> + +<p>Você tem algum script de automação? Compartilhe conosco :)</p> \ No newline at end of file diff --git a/pt/feeds/powershell.atom.xml.gz b/pt/feeds/powershell.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..e73d1dd4f2163289bcd9c8b82b22ee976b384ddd GIT binary patch literal 4153 zcmV-95XSExiwFP!000021MMB#ZW}lDJzqh%K{wf2k}vJHbscAT^eV{hf8z*dDp z%}^4Pnc;-w$d_(`#lG!dG$^n|7wA*p`YP;??3e6014{jQ}skxi*;>{NEX~%qk(2JqME_nHGI?QeS}xlVq9C{+EohBRbd0^tcnG#!Gzr3 zn*zvg4Zhz^VjqC;_qH~+HY%H2m95Rw&F!7-jh&5+%EmVQ+^uCpc2&|$w^|!~WRaGa z8GepL#I=w#@&y2-G?iKr_Md6l$IL4Bn+g1RaVa1To~LP0BAs z71yqr#c$!qB3poC6ks1r7 zU=Eys$u9SWB!8pLCcgkYrz4mQISl{bKmI+yDhj5d_};E3V6sTBNdNmK{hK7C2@t!* z+lfR1SV~Gp1Aav%VF*=QJXk;#tc<@fX+ZA%syUGTMDmbv`z8YT ziz4iTd5NZ>P=?$91!$ON@2&DUC5R2MvkVbZe|r2CdGhS|!TvK+KixllQ76w1|8hY7 z@FLbQ>mLjjv%%{I@hqTr5r9vzcEWKLkH$KYxR(p6Q%Ho_y@f|vU}7n}#L#%0*~}+k z;23a8gEm4f=@p_<;Hri#S`^q;k~`ou@D^|d&PcVSU3Nu)o4Zu<-rFV%NIMWs8jNi8 zc0iRrxZwIBJ{aEB-E|8iu90GlunLG-K!Of%OP4Fll%gqdQ?Q3-z)*-hAtf)^$^ket z8o*B{M?p4|_r6EsBX%O7WQ$%gd@ArEa2hPrr2(KofbI6-Wkg*10&r}~r#t{G(Ci&V zGP+F}Mj`~!aD-u0odQ0>UnBv}0p7!X4Qr6+2y2rnoC;~!r66H2SrdY8b8AHkxJr3gn}B;%uFGx*;0 zL2A=NM#K1v54J!5A_NDBi?6BvW=Mzkza5$D)->==#pt?Zf#7-91`v(VQ;>ukK;Y)q zr_~MkZ*v})UVtLM0hpu^dLD32;L(ksXuANKTZQm|vrZQPiXC+O&V3WRQmMZFoVan_r%Pv&BVOr z!j?0*GNt&0+fq2INQv>rg=U+j(O9sHZ$}YAa#VlRT(izyn%8xM3+{ zgbJpdZAzyb-lBQyN%Ix+bUEetP(%^D1Sg}+uguq#MT<6tf4Q%o!Xc`p3{EZ#9w{6% z!C$=nZC`hNS5gx^l*|X$j?-DH)Uw1Arrlpju^j5S4u`H;DsUXp3f`-V7Wjs2`%j+~ zdl5zJo(Sor$v^q*Q>XbriPu%&AUtL`0}U`;^H^#8ZieQ|IQvC>iVAiSK3in<&e!0k zf8(H3?zpKvR|nwlPJH%Nhe=jBc973JrBygNrjWG>^M>U^!2WoH-%T5E>ci14vZ-QGaNke?%F2)c|^qi|$M7^K8 zjGG`~2xFdb{WNKkyuf~&>rT=%G5s|3QX51H>oy#1wt?aFK?uG|P8miB!Jo8IU=wOn z{Q!0#JQMZyZKToyuuc?0h=FmDcnE3>47Q0srm;S7fSMdW<6>2EpkgNN7uu{wy^e|R znSl6kt|d*e?Cp9~v$nuI8}?U;QzG0e!<>=BvZPaS#EPkN9+hGg`OTAHaX zOxTu7j9fo`J0ox7oWX^^AD?c1zO&(!!Ob0gqZwRWac3?ZI3#gVAVA!BTOyBQaw8hZ zLzAjbpOJ-43=Jr_PS_v^Xwn?aP9%r2SN?c#zlc4m7lZ&g1DsAPs~CUImrv_b>cPkZAQD|V5Z(HJN6oc;Ho!#bn)ul#JB z&60qkO5^$>%?*J`qiuy|E(tWv6vaehtNv{Neyo7_KU9hs)a3Q%}_#Ud)fh``e}<^@%n2sL)zkUCLG@2%uuaWQuc z_R?g!G>7@KT&oYutdkZ;M(ll0y1>p9<~Q8PBQHo4j84;RXr>deVv@mV@I3D<(0#az zP64o!P+a$Z0hlcVbdmqFy=D@GE(AC+eNkFkVs8B8Io;VyN5g^YCC~)}%}BZy2Z057 zaeCMB$T~RhT%^plfE-Hys5v7F>RCt$EDqddRtG^wR>z78ZCDKtl1Wba#sY%%Z@ z<;TjUTo;^l{qyxw!a0HSrNj5zOfdegbAe;ToUqbauFo~vI4ekKwbCQjOxk3E=taW~ zdysp?gfUXjt`C*B)6gu88;YWbVm*+mzR<2hJQ24%F=ad$x-`p{RQ89*!@kFLg>4n2 zcW2!(KXDbWcj8y@mh%~Q#jnfY*P+A8iea4?_8C@SNcmi>6zp;t77>32n2*GYQJpla zJ#{_ktn&Krs|wBy0j-#On!9ZC@P`Y`!xwnW1!O*WQx1>MUA0v@|FLvq$|Aq%eFr;V zDHY7x)~*@-+z8hV*FOwJHy#N8@&;<9vqNELGdl#HWVcNsIug^*M%D&Hvqw!i@+9X- zx~ScKRC0T`?%^@X{7+I!^?h{H8o-Hr<^!&X&NE5%4k=~w+V7fD1zPVKg8qA>RH_Gw z^(o#VrE(ShicrHMg(n&UCmQlxygNeWpJ(4gLgi9wB6^DDi0REdyt{kZWJHM&)9C?g zONwPkrc9CGS%GLFiUO>ws|)4mn0Y2D*EL!A4Tf?eTC!}>Nq%OQHqIqOtMbSE`Ruvx zAW&?v<;!15u32UF#k`4>*o&CpO)#0dBl&5u1(td)v3Rjxy)(OjarUyqb&epb4i%2a zrmcY_BbU)j7BA`!v!!_z(VDwXapQB-JI1k2F@N+;)+w45cV=zZp(OF4DGLhwl|gu| zKe;e>^uq*;!Z5>$?FSM9aETC@1 zd9wZkl6(bDt2kF#O%IK1Plw)HELO68OhAr!xNiGu_>7y57G8%&9>XRGC-o{hqNcxq zZ8!0QxK9oe0OV@C)Xr2h_4h;N#C~kUfqqX9uyBCqM9tU0WrgE1IL>dP0jTk46L*8a zz*dJU$xrH70oUri^{`V17(sfk_dMc~r6rOSuR_oOg`>~KUF1z{6a?H2f~HU} zU>hRSK&Y=7OkJrKrk2zcpBRyd;QRz%;^Y1zs?4!z0$4nA8pjK7z+oE}EOHgG==%fZOU;P^o1OX<2TGFQl7BjyyD}e+FuSsm8Y(JD2dM(KtG4G<^TNlJd}+Cjphe zjjBWbWd!Z+h>VgTSXkv~_evN@N6h88%p>>fnbvo8 zk@IT9fr-K9z1AXj*s{xPeT};y5ySe-=Yb|$_dri=ctLaf8(NhS-q;# zhIc#H@4E;C)hJUL@X>r6JUUJuMzxI>!?BBLUJzkD9i(W}bn3L>3h)M6rtKtGdYMP@l+p%Dk16!> zZlb>)jpMVBg5@tEOY5__A#a&;Azw4OxwMtGmbTLN(pLI-X)Ar=e64IaGtw!a89AXg zURKZK)%6f^-GwWKe~KWu@;gDUo$CPs(ZEu~W)LvYi^W4-vIPlH4%Z*P(G+aX)3N2D_p!AacJEBtS$Y@nOHd! zQ~2YZx)hlLqf%GuF2=fW`Wp<(V}#r!r-#}E*~Gl5(z}nnt?^%$;P|gxcp?(Y6J+P^ z0=uW}UnP<)qNK?7i literal 0 HcmV?d00001 diff --git a/pt/feeds/python.atom.xml b/pt/feeds/python.atom.xml new file mode 100644 index 000000000..ee453ba29 --- /dev/null +++ b/pt/feeds/python.atom.xml @@ -0,0 +1,238 @@ + +Sipmann - Pythonhttps://www.sipmann.com/pt/2018-01-21T21:17:00-02:00Menu dinâmico com as apps do django2018-01-21T21:17:00-02:002018-01-21T21:17:00-02:00Maurício Camargo Sipmanntag:www.sipmann.com,2018-01-21:/pt/menu-dinamico-com-apps-do-django.html<p>Digamos que sua empresa trabalha com Django desenvolvendo aplicações cujas apps são plugaveis e reutilizáveis. Por que não se aproveitar de um certo padrão de desenvolvimento para desenvolver menus que se modificam de acordo com as apps que estão no projeto? Como o objetivo aqui não é desenvolver uma app …</p><p>Digamos que sua empresa trabalha com Django desenvolvendo aplicações cujas apps são plugaveis e reutilizáveis. Por que não se aproveitar de um certo padrão de desenvolvimento para desenvolver menus que se modificam de acordo com as apps que estão no projeto? Como o objetivo aqui não é desenvolver uma app em si, vamos utilizar um projeto com algumas de modelo. Se desejar estudar mais sobre desenvolvimento Django, a documentação é muito boa, mas também temos blogs e sites excelentes sobre o assunto.</p> +<p>Para conseguirmos atingir esse objetivo, vamos utilizar a api <a class="reference external" href="https://docs.djangoproject.com/en/2.0/ref/settings/#installed-apps">Django.apps</a> que está disponível a partir da versão 1.7. +Com esta api, vamos percorrer as apps e se possível, criar um link para uma URL base de cada uma delas. Para começo, baixe os fontes do <a class="reference external" href="https://github.com/sipmann/menusapp-django/releases/tag/v1">projeto aqui</a>, rode o pip install do projeto e no fim, sua estrutura de pastas deve ficar como abaixo.</p> +<div class="highlight"><pre><span></span>../menusapp/ +├── comentarios +│ ├── templates +│ │ └── comentarios +│ │ └── listagem.html +│ ├── __init__.py +│ ├── admin.py +│ ├── apps.py +│ ├── models.py +│ ├── tests.py +│ ├── urls.py +│ └── views.py +├── core +│ ├── templates +│ │ └── core +│ │ └── base.html +│ │ └── listagem.html +│ ├── __init__.py +│ ├── admin.py +│ ├── apps.py +│ ├── models.py +│ ├── tests.py +│ ├── urls.py +│ └── views.py +├── menusapp +│ ├── __init__.py +│ ├── settings.py +│ ├── urls.py +│ └── wsgi.py +└── manage.py +</pre></div> +<p>Rode o projeto e veja como é o seu funcionamento. É na app core que temos a base do nosso HTML, então será nele que iremos trabalhar. Quando se trata de algo que será renderizado no template base, eu gosto muito de utilizar 'template tags' para facilitar. +Neste <a class="reference external" href="http://www.sipmann.com/editando-o-admin-do-django.html">link</a> tem mais um exemplo de utilização de 'template tag' caso esteja interessado.</p> +<p>Vamos então criar uma pasta chamada template_tag e dentro dela a nossa tag. Vamos chamá-la de menus_tag.py. Abaixo vamos ver um pouco da nossa tag. +O código é bem simples e auto explicativo, importamos as bibliotecas necessárias e realizamos o &#64;register da tag com o nome do template que será renderizado. +E por ultimo, retornamos uma tupla de dados para o template.</p> +<div class="livros"> + <div class="recomendacoes">Recomendações</div> + <a rel="noopener" href="https://www.amazon.com.br/gp/product/8575225081/ref=as_li_ss_il?ie=UTF8&linkCode=li2&tag=sipmann-20&linkId=c17fa3ac84e734741a3761e874d7d286" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=8575225081&Format=_SL160_&ID=AsinImage&MarketPlace=BR&ServiceVersion=20070822&WS=1&tag=sipmann-20" ></a><img src="https://ir-br.amazon-adsystem.com/e/ir?t=sipmann-20&l=li2&o=33&a=8575225081" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> + <a rel="noopener" href="https://www.amazon.com.br/gp/product/B074ZTLKHB/ref=as_li_ss_il?ie=UTF8&linkCode=li2&tag=sipmann-20&linkId=e2f37c07da2dc4111ae47854b205d01a" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B074ZTLKHB&Format=_SL160_&ID=AsinImage&MarketPlace=BR&ServiceVersion=20070822&WS=1&tag=sipmann-20" ></a><img src="https://ir-br.amazon-adsystem.com/e/ir?t=sipmann-20&l=li2&o=33&a=B074ZTLKHB" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> +</div><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">django</span> <span class="kn">import</span> <span class="n">template</span> +<span class="kn">from</span> <span class="nn">django.apps</span> <span class="kn">import</span> <span class="n">apps</span> + +<span class="c1">#Carrega o registro de template tags</span> +<span class="n">register</span> <span class="o">=</span> <span class="n">template</span><span class="o">.</span><span class="n">Library</span><span class="p">()</span> + +<span class="c1">#Registra o metodo a seguir como uma inclusion_tag indicando o template a ser renderizado</span> +<span class="nd">@register</span><span class="o">.</span><span class="n">inclusion_tag</span><span class="p">(</span><span class="s1">&#39;menus_por_app.html&#39;</span><span class="p">)</span> +<span class="k">def</span> <span class="nf">menus_por_app</span><span class="p">():</span> + <span class="n">lst</span> <span class="o">=</span> <span class="n">apps</span><span class="o">.</span><span class="n">get_app_configs</span><span class="p">()</span> + <span class="k">return</span> <span class="p">{</span> <span class="s1">&#39;lst_apps&#39;</span> <span class="p">:</span> <span class="n">lst</span> <span class="p">}</span> +</pre></div> +<p>O template está abaixo e é simplesmente um for percorrendo as apps e gerando uma lista com os seus menus. As outras propriedades você pode ver direto na <a class="reference external" href="https://docs.djangoproject.com/en/2.0/ref/applications/#django.apps.AppConfig">documentação</a>. +Algumas ressalvas para o que foi feito por questões de praticidade para uso posterior, utilizei um with para concatenar e gerar a url e criei um apelido para a url para validar a existência da mesma. Fora isto, nada de novo.</p> +<div class="highlight"><pre><span></span>{% if not lst_apps %} + <span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;</span>Nenhuma app<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span> + {% else %} + <span class="p">&lt;</span><span class="nt">ul</span><span class="p">&gt;</span> + {% for app in lst_apps %} + {% with app.name|add:&quot;:listagem&quot; as link %} + {% url link as the_url %} + {% if the_url %} + <span class="p">&lt;</span><span class="nt">li</span><span class="p">&gt;</span> + <span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;{% url link %}&quot;</span><span class="p">&gt;</span>{{ app.verbose_name|truncatechars:30 }}<span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span> + <span class="p">&lt;/</span><span class="nt">li</span><span class="p">&gt;</span> + {% endif %} + {% endwith %} + {% endfor %} + <span class="p">&lt;/</span><span class="nt">ul</span><span class="p">&gt;</span> + {% endif %} +</pre></div> +<img alt="Resultado final" src="/images/menu_apps.png" /> +<p>No final, o resultado obtido deve ser semelhante ao acima. Repare que está listando as duas aplicações. E acima de tudo, repare que só serão exibidos os links cuja app tenha um namespace de mesmo nome e uma url de nome <cite>listagem</cite>. +A estrutura final pode ser vista abaixo. Atente-se aos nomes tanto das pastas quanto dos arquivos, pois qualquer diferença pode causar o não funcionamento.</p> +<div class="highlight"><pre><span></span>../menusapp/ +├── comentarios +│ ├── templates +│ │ └── comentarios +│ │ └── listagem.html +│ ├── __init__.py +│ ├── admin.py +│ ├── apps.py +│ ├── models.py +│ ├── tests.py +│ ├── urls.py +│ └── views.py +├── core +│ ├── templates +│ │ └── core +│ │ │ └── base.html +│ │ │ └── listagem.html +│ │ └── menus_por_app.html +│ ├── templatetags +│ │ ├── __init__.py +│ │ └── menus_tag.py +│ ├── __init__.py +│ ├── admin.py +│ ├── apps.py +│ ├── models.py +│ ├── tests.py +│ ├── urls.py +│ └── views.py +├── menusapp +│ ├── __init__.py +│ ├── settings.py +│ ├── urls.py +│ └── wsgi.py +└── manage.py +</pre></div> +<p>Espero que tenham gostado, críticas e sugestões são bem-vindas. <a class="reference external" href="https://github.com/sipmann/menusapp-django/releases/tag/v2">Fontes do Projeto</a></p> +Editando o Admin do Django2014-05-15T18:00:00-03:002014-05-15T18:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2014-05-15:/pt/editando-o-admin-do-django.html<p>Este artigo foi re-postado no grupo <a class="reference external" href="http://pythonclub.com.br/editando-o-admin-do-django.html">PythonClub</a>. Vamos falar um pouco sobre como customizar o admin do Django. Primeiramente porque? A resposta é bem simples, quero mostrar algo para o usuário sem que ele precise entrar nas apps e fazer alguma consulta para então tomar alguma ação. Alguns exêmplos para …</p><p>Este artigo foi re-postado no grupo <a class="reference external" href="http://pythonclub.com.br/editando-o-admin-do-django.html">PythonClub</a>. Vamos falar um pouco sobre como customizar o admin do Django. Primeiramente porque? A resposta é bem simples, quero mostrar algo para o usuário sem que ele precise entrar nas apps e fazer alguma consulta para então tomar alguma ação. Alguns exêmplos para isto seriam:</p> +<blockquote> +<ul class="simple"> +<li>Exibir as vendas do mês em forma de gráfico por região do país</li> +<li>Exibir os últimos comentários adicionados</li> +<li>Exibir log dos ultimos usuários cadastrados</li> +</ul> +</blockquote> +<p>O que faremos aqui será exibir os últimos comentários ainda não liberados de um sistema de blog. Vale lembrar que aqui não discutiremos sobre os primeiros passos da aplicação. Para seguirmos adiante, vamos assumir que já temos um projeto básico com uma estrutura simples, abaixo a estrutura inicial do nosso projeto.</p> +<div class="highlight"><pre><span></span>../blog/ +├── core +│ ├── __init__.py +│ ├── admin.py +│ ├── models.py +│ ├── tests.py +│ └── views.py +├── blog +│ ├── __init__.py +│ ├── settings.py +│ ├── urls.py +│ └── wsgi.py +└── manage.py +</pre></div> +<p>Para iniciarmos, precisamos da nossa tabela de comentários, vamos usar a mais simples e básica o possível.</p> +<table border="1" class="docutils"> +<colgroup> +<col width="50%" /> +<col width="50%" /> +</colgroup> +<thead valign="bottom"> +<tr><th class="head">Campo</th> +<th class="head">Tipo</th> +</tr> +</thead> +<tbody valign="top"> +<tr><td>nome</td> +<td>Varchar(30)</td> +</tr> +<tr><td>texto</td> +<td>Text</td> +</tr> +<tr><td>liberado</td> +<td>Boolean</td> +</tr> +<tr><td>data</td> +<td>Date</td> +</tr> +</tbody> +</table> +<p>Vamos seguir adiante e alterar a página inicial do admin para listar os últimos comentários de um simples sistema de blog. Para comerçar a editar o admin, precisamos inicialmente copiar o template que desejamos para a pasta uma pasta <cite>admin</cite> dentro ta pasta de templates do nosso projeto. Isto porque o Admin, não passa de uma app como outra qualquer, portanto o sistema de herança vai funcionar aqui, carregamento prioritariamente o seu template. Você pode conseguir o template que desejar (no nosso caso o index.html) dentro do projeto do Django mesmo, no meu caso &quot;C:\Django-1.6.3\django\contrib\admin\templates\admin&quot;.</p> +<div class="highlight"><pre><span></span>../blog/ +├── templates +│ ├── admin +│ │ └── index.html +├── core +</pre></div> +<p>Tire um tempo e brinque um pouco com este template e veja o que acontece se você alterar algumas coisa. Para adicionarmos a nossa listagem, vamos adicionar um painel lateral, para tal vamos adicionar o código abaixo antes do fechamento da ultima tag div. Nele podemos ver uma chamada para uma template_tag, portanto precisamos carrega-la no topo do template.</p> +<div class="highlight"><pre><span></span>{% load comentarios_tag %} +... +... +... +<span class="p">&lt;</span><span class="nt">div</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;module&quot;</span> <span class="na">id</span><span class="o">=</span><span class="s">&quot;ultimos-comentarios&quot;</span><span class="p">&gt;</span> + <span class="p">&lt;</span><span class="nt">h2</span><span class="p">&gt;</span>Ultimos Comentários<span class="p">&lt;/</span><span class="nt">h2</span><span class="p">&gt;</span> + <span class="p">&lt;</span><span class="nt">h3</span><span class="p">&gt;</span>Liberar<span class="p">&lt;/</span><span class="nt">h3</span><span class="p">&gt;</span> + {% comentarios_n_liberados %} +<span class="p">&lt;/</span><span class="nt">div</span><span class="p">&gt;</span> +</pre></div> +<p>Esta template trata-se da responsável por fazer a consulta na base de dados e renderizar a nossa lista, portanto ela é uma 'inclusion tag'. Se você não esta familiarizado com 'template tags', talvez queira dar uma olhada na <a class="reference external" href="https://docs.djangoproject.com/en/dev/howto/custom-template-tags/">documentação do django</a>.</p> +<p>Vamos então criar nossa template tag 'comentarios_n_liberados'. Primeiro devemos criar uma pasta chamada templatetags, dentro da nossa app core. Dentro ta pasta vamos inicializar um pacote python e criar o arquivo comentarios_tag.py. Nele precisamos declarar nosso metodo que deve se chamar 'comentarios_n_liberados' e nele fazer uma simples consulta ao banco buscando os comentários não liberados e por fim registrar a tag apontando para o template que será renderizado. Abaixo o código mais explicado.</p> +<div class="livros"> + <div class="recomendacoes">Recomendações</div> + <a rel="noopener nofollow" href="https://www.amazon.com.br/gp/product/8575225081/ref=as_li_ss_il?ie=UTF8&linkCode=li2&tag=sipmann-20&linkId=c17fa3ac84e734741a3761e874d7d286" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=8575225081&Format=_SL160_&ID=AsinImage&MarketPlace=BR&ServiceVersion=20070822&WS=1&tag=sipmann-20" ></a><img src="https://ir-br.amazon-adsystem.com/e/ir?t=sipmann-20&l=li2&o=33&a=8575225081" alt="Livro Pense em Python na Amazon" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> + <a rel="noopener nofollow" href="https://www.amazon.com.br/gp/product/B074ZTLKHB/ref=as_li_ss_il?ie=UTF8&linkCode=li2&tag=sipmann-20&linkId=e2f37c07da2dc4111ae47854b205d01a" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B074ZTLKHB&Format=_SL160_&ID=AsinImage&MarketPlace=BR&ServiceVersion=20070822&WS=1&tag=sipmann-20" ></a><img src="https://ir-br.amazon-adsystem.com/e/ir?t=sipmann-20&l=li2&o=33&a=B074ZTLKHB" alt="Livro Curso Intensivo de Python na Amazon" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> +</div><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">django</span> <span class="kn">import</span> <span class="n">template</span> +<span class="kn">from</span> <span class="nn">core</span> <span class="kn">import</span> <span class="n">models</span> + +<span class="c1">#Carrega o registro de template tags</span> +<span class="n">register</span> <span class="o">=</span> <span class="n">template</span><span class="o">.</span><span class="n">Library</span><span class="p">()</span> + +<span class="c1">#Registra o metodo a seguir como uma inclusion_tag indicando o template a ser renderizad</span> +<span class="nd">@register</span><span class="o">.</span><span class="n">inclusion_tag</span><span class="p">(</span><span class="s1">&#39;comentarios_n_liberados.html&#39;</span><span class="p">)</span> +<span class="k">def</span> <span class="nf">comentarios_n_liberados</span><span class="p">():</span> + <span class="n">comentarios</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">comentario</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">liberado</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">&#39;data&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">:</span><span class="mi">5</span><span class="p">]</span> + <span class="k">return</span> <span class="p">{</span> <span class="s1">&#39;comentarios&#39;</span> <span class="p">:</span> <span class="n">comentarios</span> <span class="p">}</span> +</pre></div> +<p>Abaixo o html do nosso template a ser renderizado, este deve estar dentro da pasta templates da nossa app core.</p> +<div class="highlight"><pre><span></span>{% if not comentarios %} + <span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;</span>Nenhum comentário novo<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span> +{% else %} + <span class="p">&lt;</span><span class="nt">ul</span><span class="p">&gt;</span> + {% for c in comentarios %} + <span class="p">&lt;</span><span class="nt">li</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;addlink&quot;</span><span class="p">&gt;</span> + <span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;{{ c.id }}&quot;</span><span class="p">&gt;</span>{{ c.texto|truncatechars:30 }}<span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span> + <span class="p">&lt;/</span><span class="nt">li</span><span class="p">&gt;</span> + {% endfor %} + <span class="p">&lt;/</span><span class="nt">ul</span><span class="p">&gt;</span> +{% endif %} +</pre></div> +<p>Com tudo isto feito, basta subir o seu servidor e ver o resultado final, que pode ser visto na imagem abaixo.</p> +<img alt="Resultado final" src="images/admin_modificado.png" /> +<p>Lembrando que aqui apenas mostrei como modificar o index do admin, para apenas listar dados do banco, mas você pode ir muito mais além. Abaixo fica a estrutura de diretórios final e um link para download do projeto funcionando.</p> +<div class="highlight"><pre><span></span>../blog/ +├── core +│ ├── templates +│ │ └── comentarios_n_liberados.html +│ ├── templatetag +│ │ └── comentarios_tag.py +│ ├── __init__.py +│ ├── admin.py +│ ├── models.py +│ ├── tests.py +│ └── views.py +├── blog +│ ├── __init__.py +│ ├── settings.py +│ ├── urls.py +│ └── wsgi.py +├── templates +│ ├── admin +│ │ └── index.html +└── manage.py +</pre></div> +<p>Espero que tenham gostado, criticas/sugestões são bem-vindas. <a class="reference external" href="https://github.com/sipmann/editando-django-admin">Fontes do Projeto</a></p> + \ No newline at end of file diff --git a/pt/feeds/python.atom.xml.gz b/pt/feeds/python.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..e3259fe5729fc39b97f40d88bfc37c82caf192ff GIT binary patch literal 5176 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 literal 0 HcmV?d00001 diff --git a/pt/feeds/shell.atom.xml b/pt/feeds/shell.atom.xml new file mode 100644 index 000000000..4b672936a --- /dev/null +++ b/pt/feeds/shell.atom.xml @@ -0,0 +1,41 @@ + +Sipmann - Shellhttps://www.sipmann.com/pt/2017-10-08T18:00:00-03:00Scripts de inicialização no raspberry pi2017-10-08T18:00:00-03:002017-10-08T18:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2017-10-08:/pt/script-de-inicializacao-raspberry.html<p>Instalei essa semana o <a class="reference external" href="https://gitea.io">gitea</a> no meu raspberry pi B + e queria iniciar ele no boot... Não sou profundo conhecedor de linux, então, logo não sabia como fazer isto da melhor forma. +As versões atuais do Raspbian utilizam o <cite>systemd</cite> para gerenciar os serviços e confesso que nunca havia utilizado …</p><p>Instalei essa semana o <a class="reference external" href="https://gitea.io">gitea</a> no meu raspberry pi B + e queria iniciar ele no boot... Não sou profundo conhecedor de linux, então, logo não sabia como fazer isto da melhor forma. +As versões atuais do Raspbian utilizam o <cite>systemd</cite> para gerenciar os serviços e confesso que nunca havia utilizado o systemctl para nada.</p> +<p>Vamos começa criando um arquivo de serviço dentro da pasta <cite>/etc/systemd/system</cite>, vale ressaltar que a pasta <cite>system</cite> deve (em teoria) ser reservada para pacotes do sistema. +Vamos criar o arquivo com o nome <cite>gitea.service</cite> dentro da pasta antes mencionada. Abaixo podemos ver como ficou o arquivo e um detalhamento após ele.</p> +<div class="highlight"><pre><span></span><span class="o">[</span>Unit<span class="o">]</span> +<span class="nv">Description</span><span class="o">=</span>Gitea Service +<span class="nv">After</span><span class="o">=</span>network.target + +<span class="o">[</span>Service<span class="o">]</span> +<span class="nv">Type</span><span class="o">=</span>simple +<span class="nv">User</span><span class="o">=</span>root +<span class="nv">WorkingDirectory</span><span class="o">=</span>/root/ +<span class="nv">ExecStart</span><span class="o">=</span>/root/gitea web +<span class="nv">Restart</span><span class="o">=</span>on-abort +</pre></div> +<p>A composição do arquivo é bem simples, mas vamos a alguns detalhes. <cite>Type</cite> possui várias opções (simple, forking, oneshot), utilizamos <cite>simple</cite> uma vez que o nosso processo executara, permanecerá rodando e não executa um fork de processo. +Fork como acabo de comentar, deve ser utilizado caso o processo que for executando disparar mais processos. User irá definir o usuário do processo. <cite>WorkingDirectory</cite> definira onde o processo terá a sua base de execução, como o gitea esta localizada na pasta root, +aponto para lá. O ExecStart é bem simples e direto, deve chamar a execução do processo passando parametros caso seja necessário. O <cite>Restart</cite> é o que nos garantirá que o serviço permanecerá rodando caso haja algum imprevisto (exceto o fato de um usuário chamar o stop).</p> +<p>Salve o arquivo e vamos rodar um refresh para o SO perceber o novo serviço. Assim rodamos <cite>systemctl daemon-reload</cite>. Sempre que alterarmos um serviço ou criarmos um novo, este comando deve ser executado, caso contrário o próprio systemctl pode lhe alertar da necessidade. +Após reacarregar os serviços, vamos habilitar o serviço que criamos rodando <cite>systemctl enable gitea</cite>, feito isto temos alguns comandos uteis.</p> +<ul class="simple"> +<li>systemctl start gitea</li> +<li>systemctl stop gitea</li> +<li>systemctl status gitea</li> +</ul> +<p>O comando de status pode ser visto como exemplo abaixo.</p> +<div class="highlight"><pre><span></span>● gitea.service - Gitea Service + Loaded: loaded <span class="o">(</span>/etc/systemd/system/gitea.service<span class="p">;</span> enabled<span class="p">;</span> vendor preset: enabled<span class="o">)</span> + Active: active <span class="o">(</span>running<span class="o">)</span> since Wed <span class="m">2017</span>-10-04 <span class="m">00</span>:37:34 UTC<span class="p">;</span> 52min ago +Main PID: <span class="m">1087</span> <span class="o">(</span>gitea<span class="o">)</span> + CGroup: /system.slice/gitea.service + └─1087 /root/gitea web + +Oct <span class="m">04</span> <span class="m">00</span>:38:31 gitserver gitea<span class="o">[</span><span class="m">1087</span><span class="o">]</span>: <span class="o">[</span>Macaron<span class="o">]</span> <span class="m">2017</span>-10-04 <span class="m">00</span>:38:31: Completed /explore/users <span class="m">200</span> OK in <span class="m">80</span>.106173ms +Oct <span class="m">04</span> <span class="m">00</span>:38:31 gitserver gitea<span class="o">[</span><span class="m">1087</span><span class="o">]</span>: <span class="o">[</span>Macaron<span class="o">]</span> <span class="m">2017</span>-10-04 <span class="m">00</span>:38:31: Started GET /img/favicon.png <span class="k">for</span> <span class="m">192</span>.168.1.4 +Oct <span class="m">04</span> <span class="m">00</span>:38:31 gitserver gitea<span class="o">[</span><span class="m">1087</span><span class="o">]</span>: <span class="o">[</span>Macaron<span class="o">]</span> <span class="o">[</span>Static<span class="o">]</span> Serving /img/favicon.png +</pre></div> +<p>Após estes processos, você pode reiniciar seu raspberry que o gitea irá subir e funcionar. Ressalto que, preste atenção tanto no <cite>WorkingDirectory</cite> quanto no <cite>ExecStart</cite>, no caso do gitea, ele utiliza o workingdir e a forma de start para saber onde irá largar os arquivos por padrão, então ou você configura ele com caminhos absolutos ou cuidar na forma de start (ao menos é o que consegui pegar até agora).</p> + \ No newline at end of file diff --git a/pt/feeds/shell.atom.xml.gz b/pt/feeds/shell.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..ce5840bc1ee6ff010186114b8e65b7c4e8de698e GIT binary patch literal 2211 zcmV;U2we9ciwFP!000021MOMOZX3xFzVj&xJS=2{oFOgmTH#V$DE7u!B#r{h-aRaG zXwDSLUe9!oyL%|fr+tH54CHJCh>->Mw8#_iP5dNV)jc!hP^3Z$36g^aNgQ%|>gTKK zs;`>kudeb8mT0Wh>a;tI23<%NoPDmOo5gvd)i$%SB&EL^71me zJdU)P#}5aC&*L+v^X_Eqq|0z}A&Xon1%0?!V3v*J@bNg4>NPA3&Vm?Q$+2O1l;}Jz zT-*hN*=bi~4vi8HNo>qd9`rn$YGcc4BSAJrWOgOcVm4dLlIi3Y8^$r+AD2Z+`qRn7 z!SHc^IOq>fUJg%2g8}{a2gme(9M?<6wwzX8#_LN|&RjRBBt{m_LW&@jOr*%#kP}49IZ_$9XPD3iljEpdbnKrqII%n1wfYray zf^emfl%N`3u$fXQD4k?f^9qfGykd9kwRM=M-oN@YD1;F(_aLz&+7gmxDOVrp3fb%# z!K>L{P^C%)EX0ybtW=QJk3asyOY||}edI$n8PlVV9Q+i!|Kr$^(Oz!ivLH-}R7C4= zcA9{FD{>M_&f)3g>UELx$v)aG?WNj68<=^O&Z#X9Qu zMdKya!#mq*WnN@^{eNZe;l81Iw@=`AgbUHhr_x~Jw7I^s@R+5?`^0~Jg~#e)`CrqgXg^<}Eg?6FcgI?1> zNMEa5`X}1r%UnkZ$$B?zDaNkQ6#n(iZvJLbw5gk<)+lwz=o03S_!L7rR6ei2v+Kx z^-4mLHvvetFvS`5cCO^5Eg3o=p2n&cEITuOqn>+7L`_tRn}#_L1u>UWz*Jad&%BX7 z8+yTK4IxoE8Hpz(p6aIDWUKbT$=vIRLUVoh%_&>GkKi1d4YHL?1bRxAI$fccESQp$ z9c$g2uCf~IQDfmbQg5;WV~anK9muOZK&*5Vmdy>+ph31&WP-%ZNuqKd?~p!C_urW< zUh6{q5Vk-LTpLdf+7j0O(HlFcp-QQs=B@fPnrYFdWD&J0_AIa#p4x8e~)v-?~Rb-_0FjBKIM#J0GU&pfD1=?^-IB*8yrqEL0zzFG)$h- zI?6H?DH8egB*GwVM`LilMH+h*a0_CxnREg6+HCfS?XHn!LwCc2N=%8utqJ*>+s#l? zh<(_dCqPv}tUM<`97?+#_cGw5q=1wNts(sdOXb$)HEY-!KD~YGu-D~4AYbWFR zMilEOeONf2A>n;-pwN;ll(e1@{zp08$G`m*S|k8f<;gCSL$&iIYnlQRm^;gFG~)Qq&9% zQ9u=$C)4kCV3+&leCpA9!XJS=+Ov8vXssO`KOP-Ff>$q}9E8*74|AzN%ys9vpo>3$ z^K`UF&v0W$ z8;+tZA8s`h7?DSvtbPh)$6$TBYFlTpVN?i3-p>xUoYJI5Q(hU)$V>z;!qJ~+oIT(C zi5d%sD$F-D20H)c%i&|(n{wAP?Nf*~M^)9dl2(TH{0VV2q>}ZQL09VS7U5X8B74L= z{fuFSpDlQ3^j>DdR9w57QJ51Fu@R~9<6<~W=E)#n$VazwUXmnM&F7GbpccPi0aL59 z($N*q5vAl2N8PaENbu=5&uPujMlvnVOG&d2+aes@A)w%s-oDk-8|C)#0 l{Iu)873A-q>d)`7qDh4Is<`^f&3_R%`4yqeE0y6K005_7R>1%O literal 0 HcmV?d00001 diff --git a/pt/feeds/sql-server.atom.xml b/pt/feeds/sql-server.atom.xml new file mode 100644 index 000000000..038f6adfc --- /dev/null +++ b/pt/feeds/sql-server.atom.xml @@ -0,0 +1,118 @@ + +Sipmann - SQL Serverhttps://www.sipmann.com/pt/2020-11-14T07:00:00-03:00Bloqueando um usuário do SQL Server baseado em uma tabela de horários2020-11-14T07:00:00-03:002020-11-14T07:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-11-14:/pt/blocking-user-on-sql-server-based-on-schedule.html<p>Ok, algum tempo atrás, eu postei sobre como você pode impor limites às conexões do SQL Server utilizando o <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. Mas, e se você não pode utilizar ele? Você sempre pode bloquear logins usando uma trigger, mas eu não gosto da ideia de ter um select rodando a cada …</p><p>Ok, algum tempo atrás, eu postei sobre como você pode impor limites às conexões do SQL Server utilizando o <a href="https://www.sipmann.com/limiting-connection-resources-sql-server.html#.X6Cz8IhKhPY">Resource Governor</a>. Mas, e se você não pode utilizar ele? Você sempre pode bloquear logins usando uma trigger, mas eu não gosto da ideia de ter um select rodando a cada login. Então, eu cheguei a esta solução, utilizando uma stored procedure, uma tabela e o Agent.</p> +<p>A ideia principal é armazenar o horário em que um usuário deve ser bloqueado pelo Agent. Abaixo você pode ver a criação da tabela:</p> +<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"> </span><span class="p">(</span><span class="w"></span> +<span class="w"> </span><span class="n">Id</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"></span> +<span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/* horário de inicio do bloqueio */</span><span class="w"></span> +<span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="nc">TIME</span><span class="w"> </span><span class="ow">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="cm">/*horário de termino */</span><span class="w"></span> +<span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="nc">INT</span><span class="w"> </span><span class="k">DEFAULT</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="cm">/* 0 = desbloqueado, 1 = bloqueado */</span><span class="w"></span> +<span class="w"> </span><span class="k">PRIMARY</span><span class="w"> </span><span class="k">KEY</span><span class="w"> </span><span class="p">(</span><span class="n">Id</span><span class="p">)</span><span class="w"></span> +<span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="cm">/* regra para Não bloquear o usuário SA */</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_users</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">LoginName</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;sa&#39;</span><span class="p">));</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_hora_final_maior</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="n">HrInicio</span><span class="p">);</span><span class="w"></span> + +<span class="k">ALTER</span><span class="w"> </span><span class="nc">TABLE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">HorariosBloqueio</span><span class="w"></span> +<span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="n">chk_status_bloqueio</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="p">(</span><span class="n">Bloqueado</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">));</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="k">SEQUENCE</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">seq_HorariosBloqueio</span><span class="w"> </span><span class="k">START</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">INCREMENT</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>Depois de criar a tabela, vamos verificar a procedure que vai fazer todo o trabalho de habilitar/desabilitar os usuários. Fique ciente que, nesta procedure, eu defini o nome do banco onde a tabela está armazenada. Você pode substituir o nome <code>DBATOOLS</code> pelo o nome da sua base.</p> +<div class="highlight"><pre><span></span><code><span class="k">IF</span><span class="w"> </span><span class="nf">OBJECT_ID</span><span class="p">(</span><span class="s1">&#39;dbo.sp_ValidarLogin&#39;</span><span class="p">)</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="k">NULL</span><span class="w"></span> +<span class="w"> </span><span class="k">EXEC</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;CREATE PROCEDURE dbo.sp_ValidarLogin AS RETURN 0;&#39;</span><span class="p">);</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">CREATE</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="k">ALTER</span><span class="w"> </span><span class="k">PROC</span><span class="w"> </span><span class="n">dbo</span><span class="p">.</span><span class="n">sp_ValidarLogin</span><span class="w"></span> +<span class="k">AS</span><span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">NVARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">);</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nf">CAST</span><span class="p">(</span><span class="nf">GETDATE</span><span class="p">()</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nc">TIME</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="cm">/* Bloqueia os que ainda não estiverem bloqueados de acordo com a hora atual */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">&#39; DISABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Bloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">block_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">block_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"></span> + + +<span class="w"> </span><span class="cm">/* Libera quem estava bloqueado */</span><span class="w"></span> +<span class="w"> </span><span class="k">DECLARE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="nc">CURSOR</span><span class="w"></span> +<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">LoginName</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> + +<span class="w"> </span><span class="k">WHILE</span><span class="w"> </span><span class="nb">@@FETCH_STATUS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"></span> +<span class="w"> </span><span class="k">BEGIN</span><span class="w"></span> +<span class="w"> </span><span class="k">exec</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;ALTER LOGIN &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"> </span><span class="o">+</span><span class="s1">&#39; ENABLE;&#39;</span><span class="p">);</span><span class="w"></span> + +<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s1">&#39;Unbloqued usuario &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">@LoginName</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">FETCH</span><span class="w"> </span><span class="k">NEXT</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="nv">@LoginName</span><span class="w"></span> +<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">CLOSE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> +<span class="w"> </span><span class="k">DEALLOCATE</span><span class="w"> </span><span class="n">unblock_cursor</span><span class="p">;</span><span class="w"></span> + +<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="o">[</span><span class="n">DBATOOLS</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="p">.</span><span class="o">[</span><span class="n">HorariosBloqueio</span><span class="o">]</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Bloqueado</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">AND</span><span class="w"> </span><span class="p">(</span><span class="n">HrInicio</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="n">HrTermino</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">@Momento</span><span class="p">)</span><span class="w"></span> +<span class="k">END</span><span class="p">;</span><span class="w"></span> +</code></pre></div> + +<p>Certo, então agora tudo que temos que fazer é definir o job no Agent para rodar a procedure de minuto em minuto. Novamente, a ideia principal é chamar a procedure quando um usuário deve ser bloqueado e quando deve ser desbloqueado.</p> +<div class="highlight"><pre><span></span><code><span class="err"> -- Vai bloquear o usuário protheus das 10 AM até 15 PM</span> +<span class="err"> INSERT INTO dbo.HorariosBloqueio (Id, LoginName, HrInicio, HrTermino) VALUES (NEXT VALUE FOR seq_HorariosBloqueio, &#39;protheus&#39;, &#39;10:00:00&#39;, &#39;15:00:00&#39;);</span> +</code></pre></div>Removendo um usuário de uma base SQL Server2019-09-06T07:00:00-03:002020-10-21T18:40:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2019-09-06:/pt/removing-user-from-sql-server-database.html<p>O seu cliente lhe pede com urgência para <em>dropar</em> um usuário da sua base MsSQL Server, mas você trava com o seguinte aviso de erro:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>Se você não possui (ou no momento não consegue acesso …</p><p>O seu cliente lhe pede com urgência para <em>dropar</em> um usuário da sua base MsSQL Server, mas você trava com o seguinte aviso de erro:</p> +<div class="highlight"><pre><span></span><code><span class="n">Error</span><span class="o">:</span> <span class="mi">15138</span> <span class="n">The</span> <span class="n">database</span> <span class="n">principal</span> <span class="n">owns</span> <span class="n">a</span> <span class="n">schema</span> <span class="k">in</span> <span class="n">the</span> <span class="n">database</span><span class="o">,</span> <span class="n">and</span> <span class="n">cannot</span> <span class="n">be</span> <span class="n">dropped</span><span class="o">.</span> +</code></pre></div> + +<p>Se você não possui (ou no momento não consegue acesso) ao SSMS (SQL Server Management Studio) para verificar quais schemas ou objetos o usuário é "dono", a seguinte SQL vai resolver o problema.</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">schemas</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">principal_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> + +<span class="k">select</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Objeto</span><span class="p">,</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Owner</span><span class="p">,</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">xtype</span><span class="w"> </span><span class="n">Tipo</span><span class="w"></span> +<span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">sysobjects</span><span class="w"> </span><span class="n">so</span><span class="w"></span> +<span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">sysusers</span><span class="w"> </span><span class="n">su</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">so</span><span class="p">.</span><span class="n">uid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">uid</span><span class="w"></span> +<span class="k">where</span><span class="w"> </span><span class="n">su</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;username&#39;</span><span class="w"></span> +</code></pre></div> + +<p>Assim que você tiver os objetos/schemas que o usuário é dono, você pode alterar os mesmos com a seguinte SQL (exemplo de troca de schema):</p> +<div class="highlight"><pre><span></span><code><span class="k">USE</span><span class="w"> </span><span class="o">[</span><span class="n">DATABASENAME</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datareader</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"> </span><span class="c1">-- username do novo dono</span> +<span class="k">ALTER</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="o">::[</span><span class="n">db_datawriter</span><span class="o">]</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">[</span><span class="n">dbo</span><span class="o">]</span><span class="w"></span> +<span class="k">GO</span><span class="w"></span> +</code></pre></div> + +<p>Então, você pode dropar o usuário <code>DROP USER [username]</code>.</p> \ No newline at end of file diff --git a/pt/feeds/sql-server.atom.xml.gz b/pt/feeds/sql-server.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..5b8fb5873f3760a4ab801a248c909ea05a7abd10 GIT binary patch literal 3279 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 N{STfg5H1~+002j*aijnM literal 0 HcmV?d00001 diff --git a/pt/feeds/tools.atom.xml b/pt/feeds/tools.atom.xml new file mode 100644 index 000000000..73f719c01 --- /dev/null +++ b/pt/feeds/tools.atom.xml @@ -0,0 +1,59 @@ + +Sipmann - Toolshttps://www.sipmann.com/pt/2020-12-02T14:00:00-03:00Apache Nifi JSON to SQL removendo underline2020-12-02T14:00:00-03:002020-12-02T14:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2020-12-02:/pt/apache-nifi-json-to-sql-replacing-underscore.html<p>Recentemente eu estava desenvolvendo alguns processos de ETL com o Apache NiFi. Mas após alguns minutos desenhando o meu fluxo, eu vi um comportamento estranho do componente ConvertJSONToSQL, que estava substituindo os underline ('_') do nome de um campo utilizado na condição da SQL (eu estava preparando um UPDATE). Aquilo …</p><p>Recentemente eu estava desenvolvendo alguns processos de ETL com o Apache NiFi. Mas após alguns minutos desenhando o meu fluxo, eu vi um comportamento estranho do componente ConvertJSONToSQL, que estava substituindo os underline ('_') do nome de um campo utilizado na condição da SQL (eu estava preparando um UPDATE). Aquilo estava estranho, uma vez que na definição do SET da SQL, o nome do campo permanecia inalterado. Depois de algumas pesquisas, achei uma doc que a propriedade (veja abaixo) <code>Translate Field Names</code> era a responsável por este comportamento estranho.</p> +<p><img alt="Apache NiFi JSONToSQL config" src="/images/apache_nifi_jsontosql.png"></p> +<p>Antes de definir a propriedade como <strong>FALSE</strong>, esteja ciente que as propriedades do seu JSON devem ser exatamente iguais aos nomes dos campos da sua tabela.</p>Cool Tools2017-09-17T14:00:00-03:002017-09-17T14:00:00-03:00Maurício Camargo Sipmanntag:www.sipmann.com,2017-09-17:/pt/cool-tools.html<p>Com o passar do tempo você vai &quot;encontrando&quot; - e às vezes até mesmo desenvolvendo - algumas ferramentas que tornam o seu dia a dia como desenvolvedor mais fácil. Abaixo seguem algumas das minhas ferramentas que costumo usar. Ressalto que essa lista será (provavelmente) atualizada com o passar do tempo.</p> +<div class="section" id="https-www-gitkraken-com"> +<h2><a class="reference external" href="https://www.gitkraken.com">https://www …</a></h2></div><p>Com o passar do tempo você vai &quot;encontrando&quot; - e às vezes até mesmo desenvolvendo - algumas ferramentas que tornam o seu dia a dia como desenvolvedor mais fácil. Abaixo seguem algumas das minhas ferramentas que costumo usar. Ressalto que essa lista será (provavelmente) atualizada com o passar do tempo.</p> +<div class="section" id="https-www-gitkraken-com"> +<h2><a class="reference external" href="https://www.gitkraken.com">https://www.gitkraken.com</a></h2> +<p>Eu gosto muito de usar git, mas às vezes fico cansado de ter que usar só linha de comando, e achei no GitKreaken uma interface muito legal de se usar.</p> +</div> +<div class="section" id="http-paletton-com"> +<h2><a class="reference external" href="http://paletton.com">http://paletton.com</a></h2> +<p>Toda vez que você vai fazer um novo sistema/site, ou até mesmo trocar o layout de algum já existente, você acaba tendo que montar uma paleta de cores para se utilizar em todo o template.</p> +</div> +<div class="section" id="https-icomoon-io-app-select"> +<h2><a class="reference external" href="https://icomoon.io/app/#/select">https://icomoon.io/app/#/select</a></h2> +<p>Querendo usar ícones como fontes? Vá aí e gere apenas os arquivos que você vai realmente utilizar e economize alguns kbs.</p> +</div> +<div class="section" id="https-syncthing-net"> +<h2><a class="reference external" href="https://syncthing.net/">https://syncthing.net/</a></h2> +<p>Se você procura algum meio de sincronizar seus arquivos entre vários pcs e por algum motivo não quer usar um Google Drive ou DropBox, fica aqui a indicação deste cara.</p> +</div> +<div class="section" id="http-sqitch-org"> +<h2><a class="reference external" href="http://sqitch.org/">http://sqitch.org/</a></h2> +<p>Gerenciamento de versões de um banco de dados pode ser bem complicado e trabalhoso... Manter diversos ambientes (desenvolvimento, homologação, produção) vai dar um trabalho se não utilizar alguma ferramenta. Porque não usar o melhor de gerenciamento de versão (git) e uma ferramenta que se adequa ao que você precisa? sqitch é o cara nessas horas.</p> +</div> +<div class="section" id="http-www-setupmyproject-com"> +<h2><a class="reference external" href="http://www.setupmyproject.com/">http://www.setupmyproject.com/</a></h2> +<p>Preparação de projetos java, com frameworks, bibliotecas, nomenclatura, etc... Rende uma economia de tempo grandiosa e já vem tudo pronto :).</p> +</div> +<div class="section" id="https-www-pexels-com"> +<h2><a class="reference external" href="https://www.pexels.com/">https://www.pexels.com/</a></h2> +<p>Bom site para imagens free stock. Excelente local para conseguir imagens de alta qualidade.</p> +</div> +<div class="section" id="https-heml-io"> +<h2><a class="reference external" href="https://heml.io/">https://heml.io/</a></h2> +<p>&quot;HEML is an open source markup language for building responsive email.&quot; Melhor descrição impossível.</p> +</div> +<div class="section" id="https-www-mockapi-io"> +<h2><a class="reference external" href="https://www.mockapi.io/">https://www.mockapi.io/</a></h2> +<p>Desenvolva mocks para testar seu front-end. Eles geram inclusive uma carga de dados para ser utilizado nos seus testes.</p> +</div> +<div class="section" id="https-undraw-co"> +<h2><a class="reference external" href="https://undraw.co">https://undraw.co</a></h2> +<p>Needing some cool and free ilustrations? Take a look at it.</p> +</div> +<div class="section" id="https-www-audiotool-com-app"> +<h2><a class="reference external" href="https://www.audiotool.com/app/">https://www.audiotool.com/app/</a></h2> +<p>Ferramenta para criar sons, musicas e afins</p> +</div> +<div class="section" id="https-app-cloudskew-com"> +<h2><a class="reference external" href="https://app.cloudskew.com/">https://app.cloudskew.com/</a></h2> +<p>Desenhar projetos de cloud e afins</p> +</div> +<div class="section" id="https-lottiefiles-com"> +<h2><a class="reference external" href="https://lottiefiles.com/">https://lottiefiles.com/</a></h2> +<p>Veja por si mesmo</p> +</div> + \ No newline at end of file diff --git a/pt/feeds/tools.atom.xml.gz b/pt/feeds/tools.atom.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..85acb91b9bdbf72112644c519ef2bd29e7b673bd GIT binary patch literal 2371 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 literal 0 HcmV?d00001 diff --git a/pt/index.html b/pt/index.html new file mode 100644 index 000000000..b406f84aa --- /dev/null +++ b/pt/index.html @@ -0,0 +1,603 @@ + + + + + + + + Sipmann + + + + + + + + + + + + + + + + + + +
      +
      +
      +
      +
      + +
      + +
      + +
      +
      +
      +

      Apache Nifi JSON to SQL removendo underline

      +
      + +
      +
      + +
      +

      Recentemente eu estava desenvolvendo alguns processos de ETL com o Apache NiFi. Mas após alguns minutos desenhando o meu fluxo, eu vi um comportamento estranho do componente ConvertJSONToSQL, que estava substituindo os underline ('_') do nome de um campo utilizado na condição da SQL (eu estava preparando um UPDATE). Aquilo …

      +
      + + + +
      +
      +
      +
      + +
      +
      + + + + + + + +
      +

      Então, você utiliza Entity Framework Core e geralmente faz o seu selecto da seguinte forma, talvez você está retornando muitos dados.

      +
      var products = Products
      +    .Where(p => p.UnitsInStock > 0)
      +    .OrderBy(p => p.ProductName)
      +    .ToList()
      +
      + +

      Rodando a query acima, em uma base de testes você obtem o seguinte resultado, veja quantas …

      +
      + + + +
      +
      +
      +
      +
      + + + + + +
      +

      Zabbix Running on Low Memory Mode

      +
      + +
      +
      + +
      +

      Olá pessoal! Trago hoje outro post sobre Zabbix. Este é sobre aumentar o cache do seu Zabbix Server. É perfeitamente comum (se você roda com as configurações padrões) receber avisos sobre Zabbix value cache running on low memory mode no seu dashboard ou arquivos de log.

      +

      Zabbix Dashboard alertando sobre problemas de memória +Zabbix Dashboard cache gráfico com 70% utilizado

      +

      Para resolver, abra o …

      +
      + + + +
      +
      +
      +
      +
      + + + + + + + +
      +

      Tenho migrado alguns scripts bash que tenho para PowerShell, e chegou a vez de migrar um script de monitoramento de replicação do MySQL. Fica como crédito o script original do Paweł. É um script bem simples onde eu verifico algumas tags resultantes do SHOW SLAVE STATUS\G, são elas. Slave_IO_Running …

      +
      + + + +
      +
      +
      +
      +
      +
      +

      Microsoft Contra Covid

      +
      + +
      +
      + +
      +

      Você teve seu trabalho afetado pela pandemia do covid? Bom, na última semana eu postei no Grepora sobre um Voucher para certificação gratuita que a Microsoft estava distribuindo durante o evento Microsoft Ignite. Depois disto, eu fiquei sabendo que eles também estão entregando grandes discontos para quem teve o seu …

      +
      + + + +
      +
      +
      +
      +
      + + + + + +
      +

      O poder do PowerShell

      +
      + +
      +
      + +
      +

      Como um usuário linux por muito tempo, eu automatizei algumas tarefas com scripts bash e fiquei longe do PowerShell... Voltei a utilizar Windows alguns anos atrás e ainda assim, não dei uma chance ao PS. Mas porque não? Eu fiz alguns scripts para automatizar algumas tarefas em um servidor Protheus …

      +
      + + + +
      +
      +
      +
      +
      + + + + + +
      +

      Top Level Statement no C# 9

      +
      + +
      +
      + +
      +

      Olá pessoal, venho hoje falar sobre uma novidade que estará disponível na versão 9 do C#. Toda vez que você deseja criar um novo projeto, você sempre tem o mesmo arquivo Main, com a mesma estrutura. Na próxima versão do C# (versão 9), nós teremos uma nova funcionalidade chamada Top …

      +
      + + + +
      +
      +
      +
      +
      + + 1 + 2 + 3 + » + +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/index.html.gz b/pt/index.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..5eb1443fc12b77b8efba4bdd0a0cdcfe691a1141 GIT binary patch literal 6188 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 + + + + + + + Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Zabbix poller processes more than 75%

      +
      + +
      +
      + +
      +

      Este é o terceiro post sobre configurações para o Zabbix. Todas as alterações que eu sugiro nestes posts, são baseadas em um servidor com 50+ hosts. Outro problema que pode ocorrer em seu servidor, é o poller de informações ficar sobrecarregado pela quantidade de servidores que ele precisa pegar carga …

      +
      + + + +
      +
      +
      +
      +
      + + + + + + + +
      +

      Algumas vezes você se depara com a necessidade de monitorar a disponibilidade de um website ou mudanças em seu conteúdo. É claro que temos diversas opções disponíveis no mercado, mas para fins de curiosidade, vamos programar o nosso próprio e ver o que podemos fazer. Primeiramente, tudo que você ver …

      +
      + + + +
      +
      +
      +
      +
      +
      +

      Zabbix ICMP pinger processes more than 75%

      +
      + +
      +
      + +
      +

      Então o seu systema de monitoramento creasceu e o seu Zabbix começou a printar "Zabbix icmp pinger processes more than 75% busy" no seu dashboard.

      +

      Dashboard do zabbix avisando sobre o erro

      +

      Tudo que você tem a fazer é abrir o seu arquivo de configuração (/etc/zabbix/zabbix_server.conf) e localizar a tag chamada StartPingers. Ela deve …

      +
      + + + +
      +
      +
      +
      +
      +
      +

      Zabbix Server Out of Memory

      +
      + +
      +
      + +
      +

      Você tem um servidor Zabbix crashando e observando o arquivo de log /var/log/zabbix/zabbix_server.log você localiza a seguinte mensagem referênciando falta de memória?

      +
      __mem_malloc: skipped 0 asked 24 skip_min 18446744073709551615 skip_max 0
      +[file:dbconfig.c,line:94] __zbx_mem_realloc(): out of memory (requested 16 bytes)
      +[file:dbconfig.c …

      +
      + + + +
      +
      +
      +
      +
      +
      +

      Removendo um usuário de uma base SQL Server

      +
      + +
      +
      + +
      +

      O seu cliente lhe pede com urgência para dropar um usuário da sua base MsSQL Server, mas você trava com o seguinte aviso de erro:

      +
      Error: 15138 The database principal owns a schema in the database, and cannot be dropped.
      +
      + +

      Se você não possui (ou no momento não consegue acesso …

      +
      + + + +
      +
      +
      +
      + +
      +
      +
      +

      Menu dinâmico com as apps do django

      +
      + +
      +
      + +
      +

      Digamos que sua empresa trabalha com Django desenvolvendo aplicações cujas apps são plugaveis e reutilizáveis. Por que não se aproveitar de um certo padrão de desenvolvimento para desenvolver menus que se modificam de acordo com as apps que estão no projeto? Como o objetivo aqui não é desenvolver uma app …

      +
      + + + +
      +
      +
      +
      +
      +
      +

      Scripts de inicialização no raspberry pi

      +
      + +
      +
      + +
      +

      Instalei essa semana o gitea no meu raspberry pi B + e queria iniciar ele no boot... Não sou profundo conhecedor de linux, então, logo não sabia como fazer isto da melhor forma. +As versões atuais do Raspbian utilizam o systemd para gerenciar os serviços e confesso que nunca havia utilizado …

      +
      + + + +
      +
      +
      +
      +
      +
      +

      Cool Tools

      +
      + +
      +
      + +
      +

      Com o passar do tempo você vai "encontrando" - e às vezes até mesmo desenvolvendo - algumas ferramentas que tornam o seu dia a dia como desenvolvedor mais fácil. Abaixo seguem algumas das minhas ferramentas que costumo usar. Ressalto que essa lista será (provavelmente) atualizada com o passar do tempo.

      +

      +
      + + + +
      +
      +
      +
      +
      +
      +

      Desenvolvendo apps para o FirefoxOS (Parte 1)

      +
      + +
      +
      + +
      +

      Requisitos mínimos?

      +

      Para seguir este tutorial você precisará do Nodejs. Utilizaremos ele para automatizar algumas tarefas, como a criação do nosso projeto e até mesmo o empacotamento da app. Estas automatizações se darão pela utilização de algumas aplicações como o Yeoman e o Grunt .

      +

      Também será necessário o emulador do …

      +
      + + + +
      +
      +
      +
      +
      + « + + 1 + 2 + 3 + » + +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/index2.html.gz b/pt/index2.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..e8fc1d1a37f733fc887f9f1808e67ccd107d8dc9 GIT binary patch literal 6429 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 + + + + + + + Sipmann + + + + + + + + + + + + + + + + + + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Editando o Admin do Django

      +
      + +
      +
      + +
      +

      Este artigo foi re-postado no grupo PythonClub. Vamos falar um pouco sobre como customizar o admin do Django. Primeiramente porque? A resposta é bem simples, quero mostrar algo para o usuário sem que ele precise entrar nas apps e fazer alguma consulta para então tomar alguma ação. Alguns exêmplos para …

      +
      + + + +
      +
      +
      +
      +
      + « + + 1 + 2 + 3 + +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/index3.html.gz b/pt/index3.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..40a7a8e2fdbbc2894fe7ae2747b28b489a00caa1 GIT binary patch literal 3733 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 literal 0 HcmV?d00001 diff --git a/pt/menu-dinamico-com-apps-do-django.html b/pt/menu-dinamico-com-apps-do-django.html new file mode 100644 index 000000000..5f44d2ad9 --- /dev/null +++ b/pt/menu-dinamico-com-apps-do-django.html @@ -0,0 +1,562 @@ + + + + + + + + Menu dinâmico com as apps do django - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Menu dinâmico com as apps do django

      +
      + +
      +
      + +
      +

      Digamos que sua empresa trabalha com Django desenvolvendo aplicações cujas apps são plugaveis e reutilizáveis. Por que não se aproveitar de um certo padrão de desenvolvimento para desenvolver menus que se modificam de acordo com as apps que estão no projeto? Como o objetivo aqui não é desenvolver uma app em si, vamos utilizar um projeto com algumas de modelo. Se desejar estudar mais sobre desenvolvimento Django, a documentação é muito boa, mas também temos blogs e sites excelentes sobre o assunto.

      +

      Para conseguirmos atingir esse objetivo, vamos utilizar a api Django.apps que está disponível a partir da versão 1.7. +Com esta api, vamos percorrer as apps e se possível, criar um link para uma URL base de cada uma delas. Para começo, baixe os fontes do projeto aqui, rode o pip install do projeto e no fim, sua estrutura de pastas deve ficar como abaixo.

      +
      ../menusapp/
      +├── comentarios
      +│   ├── templates
      +│   │   └── comentarios
      +│   │      └── listagem.html
      +│   ├── __init__.py
      +│   ├── admin.py
      +│   ├── apps.py
      +│   ├── models.py
      +│   ├── tests.py
      +│   ├── urls.py
      +│   └── views.py
      +├── core
      +│   ├── templates
      +│   │   └── core
      +│   │       └── base.html
      +│   │       └── listagem.html
      +│   ├── __init__.py
      +│   ├── admin.py
      +│   ├── apps.py
      +│   ├── models.py
      +│   ├── tests.py
      +│   ├── urls.py
      +│   └── views.py
      +├── menusapp
      +│   ├── __init__.py
      +│   ├── settings.py
      +│   ├── urls.py
      +│   └── wsgi.py
      +└── manage.py
      +
      +

      Rode o projeto e veja como é o seu funcionamento. É na app core que temos a base do nosso HTML, então será nele que iremos trabalhar. Quando se trata de algo que será renderizado no template base, eu gosto muito de utilizar 'template tags' para facilitar. +Neste link tem mais um exemplo de utilização de 'template tag' caso esteja interessado.

      +

      Vamos então criar uma pasta chamada template_tag e dentro dela a nossa tag. Vamos chamá-la de menus_tag.py. Abaixo vamos ver um pouco da nossa tag. +O código é bem simples e auto explicativo, importamos as bibliotecas necessárias e realizamos o @register da tag com o nome do template que será renderizado. +E por ultimo, retornamos uma tupla de dados para o template.

      +
      +
      Recomendações
      + + +
      from django import template
      +from django.apps import apps
      +
      +#Carrega o registro de template tags
      +register = template.Library()
      +
      +#Registra o metodo a seguir como uma inclusion_tag indicando o template a ser renderizado
      +@register.inclusion_tag('menus_por_app.html')
      +def menus_por_app():
      +    lst = apps.get_app_configs()
      +    return { 'lst_apps' : lst }
      +
      +

      O template está abaixo e é simplesmente um for percorrendo as apps e gerando uma lista com os seus menus. As outras propriedades você pode ver direto na documentação. +Algumas ressalvas para o que foi feito por questões de praticidade para uso posterior, utilizei um with para concatenar e gerar a url e criei um apelido para a url para validar a existência da mesma. Fora isto, nada de novo.

      +
      {% if not lst_apps %}
      +                    <p>Nenhuma app</p>
      +            {% else %}
      +                    <ul>
      +                            {% for app in lst_apps %}
      +                                    {% with app.name|add:":listagem" as link %}
      +                                            {% url link as the_url %}
      +                                                    {% if the_url %}
      +                                                    <li>
      +                                                            <a href="{% url link %}">{{ app.verbose_name|truncatechars:30 }}</a>
      +                                                    </li>
      +                                                    {% endif %}
      +                                    {% endwith %}
      +                            {% endfor %}
      +                    </ul>
      +            {% endif %}
      +
      +Resultado final +

      No final, o resultado obtido deve ser semelhante ao acima. Repare que está listando as duas aplicações. E acima de tudo, repare que só serão exibidos os links cuja app tenha um namespace de mesmo nome e uma url de nome listagem. +A estrutura final pode ser vista abaixo. Atente-se aos nomes tanto das pastas quanto dos arquivos, pois qualquer diferença pode causar o não funcionamento.

      +
      ../menusapp/
      +├── comentarios
      +│   ├── templates
      +│   │   └── comentarios
      +│   │      └── listagem.html
      +│   ├── __init__.py
      +│   ├── admin.py
      +│   ├── apps.py
      +│   ├── models.py
      +│   ├── tests.py
      +│   ├── urls.py
      +│   └── views.py
      +├── core
      +│   ├── templates
      +│   │   └── core
      +│   │   │   └── base.html
      +│   │   │   └── listagem.html
      +│   │   └── menus_por_app.html
      +│   ├── templatetags
      +│   │   ├── __init__.py
      +│   │   └── menus_tag.py
      +│   ├── __init__.py
      +│   ├── admin.py
      +│   ├── apps.py
      +│   ├── models.py
      +│   ├── tests.py
      +│   ├── urls.py
      +│   └── views.py
      +├── menusapp
      +│   ├── __init__.py
      +│   ├── settings.py
      +│   ├── urls.py
      +│   └── wsgi.py
      +└── manage.py
      +
      +

      Espero que tenham gostado, críticas e sugestões são bem-vindas. Fontes do Projeto

      +

      +
      + + +
      +
      +

      Traduções:

      +
        +
      +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/menu-dinamico-com-apps-do-django.html.gz b/pt/menu-dinamico-com-apps-do-django.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..30647e42e59941c53e0679d783f577d703a95feb GIT binary patch literal 6588 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 literal 0 HcmV?d00001 diff --git a/pt/microsoft-against-covid.html b/pt/microsoft-against-covid.html new file mode 100644 index 000000000..ce207e96f --- /dev/null +++ b/pt/microsoft-against-covid.html @@ -0,0 +1,482 @@ + + + + + + + + Microsoft Contra Covid - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Microsoft Contra Covid

      +
      + +
      +
      + +
      +

      Você teve seu trabalho afetado pela pandemia do covid? Bom, na última semana eu postei no Grepora sobre um Voucher para certificação gratuita que a Microsoft estava distribuindo durante o evento Microsoft Ignite. Depois disto, eu fiquei sabendo que eles também estão entregando grandes discontos para quem teve o seu trabalho afetado pela pandemia do covid.

      +

      Para saber se você pode receber este desconto, acesse https://docs.microsoft.com/en-us/learn/certifications/skillingoffer.

      +
      + + +
      +
      +

      Traduções:

      + +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/microsoft-against-covid.html.gz b/pt/microsoft-against-covid.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..ddcc453d81d3d846e2df82b9bd6eb84415797344 GIT binary patch literal 4486 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 literal 0 HcmV?d00001 diff --git a/pt/monitoring-mysql-replication-with-powershell.html b/pt/monitoring-mysql-replication-with-powershell.html new file mode 100644 index 000000000..e69d47c3d --- /dev/null +++ b/pt/monitoring-mysql-replication-with-powershell.html @@ -0,0 +1,547 @@ + + + + + + + + Monitorando status de replicação do MySQL com PowerShell - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      + + +
      +

      Tenho migrado alguns scripts bash que tenho para PowerShell, e chegou a vez de migrar um script de monitoramento de replicação do MySQL. Fica como crédito o script original do Paweł. É um script bem simples onde eu verifico algumas tags resultantes do SHOW SLAVE STATUS\G, são elas. Slave_IO_Running, Slave_SQL_Running e Seconds_Behind_Master. Ainda preciso verificar formas mais corretas de armazenar/carregar as variáveis como usuários e senha, se tiver alguma dica, fique à vontade para inclusive fazer um pull request (aqui) no repositório onde vou armazenar alguns dos meus scripts.

      +
      <#
      +   Variables definition
      +#>
      +$MaxSeconds = 120  # Max seconds behind master allowed
      +$MysqlUser  = 'root'
      +$MysqlPass  = ''
      +
      +$MailTo     = 'mauricio@sipmann.com'
      +$MailFrom   = 'mauricio@sipmann.com'
      +
      +
      +$data = $(mysql -u $MysqlUser -p"$MysqlPass" -e 'SHOW SLAVE STATUS \G')
      +
      +#Debug data
      +#$data = Get-Content 'c:\temp\sampleresult.txt'
      +
      +<# Parse the data #>
      +$IORunning   = (($data | Where-Object { $_ -match 'Slave_IO_Running:' }) -split '\s+')[2]
      +$SQLRunning  = (($data | Where-Object { $_ -match 'Slave_SQL_Running:' }) -split '\s+')[2]
      +$LastErrNo   = (($data | Where-Object { $_ -match 'Last_Errno' }) -split '\s+')[2]
      +$SecondsBh   = [int](($data | Where-Object { $_ -match 'Seconds_Behind_Master' }) -split '\s+')[2]
      +
      +If ($IORunning -Eq 'No' -Or $SQLRunning -Eq 'No' -Or $SecondsBh -gt $MaxSeconds) {
      +    $MailBody = '<h1>Problema na replicação</h1><br>'
      +
      +    $MailBody += '    IO Running: ' + ($IORunning)  + '<br>'
      +    $MailBody += '   SQL Running: ' + ($SQLRunning) + '<br>'
      +    $MailBody += 'Seconds Behind: ' + ($SecondsBh) + '<br>'
      +    $MailBody += '   Last Err No: ' + ($LastErrNo) + '<br>'
      +
      +    <# Send e-mail, maybe some telegram message here too #>
      +    Send-MailMessage -To $MailTo -From $MailFrom  -Subject 'Problemas na replicação' -bodyAsHtml $MailBody -Credential (Get-Credential) -SmtpServer 'smtp.office365.com' -Port 587 -UseSsl
      +} Else {
      +    Write-Host "Up and running"
      +}
      +

      +
      + + +
      +
      +

      Traduções:

      + +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/monitoring-mysql-replication-with-powershell.html.gz b/pt/monitoring-mysql-replication-with-powershell.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..29d25c1aca0c4c68e10a7ed539fcd9ea6f8d6629 GIT binary patch literal 5537 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 + + + + + + + Monitorando restarts do MySQL com PowerShell - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Monitorando restarts do MySQL com PowerShell

      +
      + +
      +
      + +
      +

      Bom, chegou a hora para mais um script PowerShell. Se você ainda não viu os outros, de uma olhada no link abaixo.

      + +

      Este aqui é um script bem simples, mas novamente, se seu cliente não possui um servidor Zabbix ou não permite que você configure um para realizar este monitoramento, um conjunto de scripts pode ser bem útil. Primeiramente nós executamos uma query báscia SHOW GLOBAL STATUS LIKE 'Uptime', com ela nós conseguimos capturar exatamente o que nós estamos procurando.

      +

      Se por alguma razão o comando falhar (verificamos atravez da variábel global $lastExitCode), nós mandamos um e-mail lhe avisando sobre o problema ocorrido.

      +

      E então, nós chegamos à parte onde fazemos o parse do valor obtido, esta parte é bem similar ao parse que codificamos no primeiro post sobre monitoramento utilizando PowerShell. Nós basicamentes procuramos pela linha contendo Value, separamos por espaço e então parseamos a segunda posição em um inteiro. Então tudo que precisamos fazer é verificar se o valor parseado é menor que o nosso threshold, se for menor, nós mandamos um e-mail.

      +
      $MailFrom = 'maurio[at]sipmann.com'
      +$MailTo   = 'mauricio[at]sipmann.com'
      +$MysqlHost = '127.0.0.1'
      +$MysqlUser = 'root'
      +$MysqlPass = '123'
      +
      +
      +$data = $(mysql -h $MysqlHost -u $MysqlUser -p"$MysqlPass" -e "SHOW GLOBAL STATUS LIKE 'Uptime' \G")
      +
      +<# Unable to execute the sql Command #>
      +if ($lastExitCode -eq 1) {
      +    Send-MailMessage -To $MailTo -From $MailFrom  -Subject 'Connection problem' -bodyAsHtml "Connection problem on host ${MysqlHost}" -Credential Get-Credential -SmtpServer 'smtp.office365.com' -Port 587 -UseSsl
      +    exit
      +}
      +
      +$UpTime   = [int](($data | Where-Object { $_ -match 'Value:' }) -split '\s+')[2]
      +
      +<# If the uptime is lower then 20 minutes #>
      +if ($UpTime -lt 1200) {
      +    Send-MailMessage -To $MailTo -From $MailFrom -Subject "MySQL Restarted" -bodyAsHtml "MySQL host ${MysqlHost} restarted less than 20 minutes ago" -Credential Get-Credential -SmtpServer 'smtp.office365.com' -Port 587 -UseSsl
      +}
      +
      + +

      Este script (e os outros que eu utilizo) estão disponíveis no meu GitHub aqui. Tenha em mente que os scripts localizados no GitHub, são um pouco diferentes do que exibido aqui. Espero que tenha achado útil.

      +
      + + +
      +
      +

      Traduções:

      + +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/monitoring-mysql-restarts-with-powershell.html.gz b/pt/monitoring-mysql-restarts-with-powershell.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..d7e299babfd9e47df4a15815adead2400dac21fb GIT binary patch literal 5508 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 + + + + + + + Monitorando a disponibilidade de um Website com Azure Functions - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      + + +
      +

      Algumas vezes você se depara com a necessidade de monitorar a disponibilidade de um website ou mudanças em seu conteúdo. É claro que temos diversas opções disponíveis no mercado, mas para fins de curiosidade, vamos programar o nosso próprio e ver o que podemos fazer. Primeiramente, tudo que você ver aqui, você pode utilizar o tier gratuito da Azure.

      +

      A ideia principal da nossa aplicação vai ser monitorar a disponibilidade do website (status code). Para criar um projeto de Azure Function, siga os passos abaixo.

      +

      Passos para criar um projeto Azure Functions

      +

      Depois de criar o projeto, você vai ter alguns arquivos. Abra o arquivo principal (HttpCheck.cs no meu caso) e começe a programar. O arquivo principal terá uma função chamada Run e você pode progamar nela o seu request. Eu criei um método async para fazer as requisições e printar a saída diretamente no console. O código completo pode ser visto abaixo.

      +
      using System;
      +using System.Linq;
      +using System.Net.Http;
      +using System.Threading.Tasks;
      +using Microsoft.Azure.WebJobs;
      +using Microsoft.Azure.WebJobs.Host;
      +using Microsoft.Extensions.Logging;
      +
      +namespace Sipmann.CheckMySite
      +{
      +    public static class HttpCheck
      +    {
      +
      +        private static async Task GetTask(string url, ILogger log)
      +        {
      +            var request = new HttpRequestMessage(HttpMethod.Get, url);
      +
      +            var client = new HttpClient();
      +            var response = await client.SendAsync(request);
      +
      +            if (response.IsSuccessStatusCode)
      +            {
      +                log.LogInformation($"URL ${url} esta OK");
      +            }
      +            else
      +            {
      +                log.LogInformation($"URL ${url} não esta OK");
      +            }
      +        }
      +
      +        [FunctionName("HttpCheck")]
      +        public static void Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, ILogger log)
      +        {
      +            // URL a verificar a saúde
      +            var urls = new[]{"https://www.sipmann.com", "https://www.canezecanez.com.br"};
      +
      +            // Starta cada request e aguarda todos de uma vez só
      +            Task.WaitAll(urls.Select(url => GetTask(url, log)).ToArray());
      +            log.LogInformation($"Finalizou a fila");
      +        }
      +    }
      +}
      +
      + +

      Agora você pode melhorar a função e talvez enviar alguns alertas. Como por exêmplo mensagens no Telegram quando um dos sites ficar off (status code 404).

      +
      + + +
      +
      +

      Traduções:

      + +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/monitoring-website-heath-with-azure-functions.html.gz b/pt/monitoring-website-heath-with-azure-functions.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..aeaf0ef6443503c021a5dc28b143d5281d77db19 GIT binary patch literal 5735 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 ZMDAc4-t(+K=>PT7{{q + + + + + + + Trocando a senha de um usuário do MySQL sem downtime da aplicação - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      + + +
      +

      Você deseja trocar a senha de um usuário do MySQL que está sendo utilizado por uma aplicação e não sofrer nenhum downtime? Bom, a versão 8.0.14 do MySQL foi liberada com uma feature chamada Dual Password Support, com esta feature você pode alterar a senha de um usuário mantendo a anterior ainda funcionando como uma forma de "backup". Desta forma, você ainda conseguirá autenticar com o usuário utilizando tanto a nova senha, quanto a anterior. Com isto, o seu processo de troca de senha fica algo como:

      +

      1) Troque a senha mantendo a anterior;

      +

      2) Faça o Deploy da nova configuração na sua aplicação/cluster;

      +

      3) Descarte a senha anterior.

      +

      Para alterar a senha mantendo a anterior, você deve rodar o seguinte comando:

      +
      ALTER USER 'appuser'@'localhost' IDENTIFIED BY 'new_password' RETAIN CURRENT PASSWORD;
      +
      + +

      Para descartar a senha antiga, rode o seguinte:

      +
      ALTER USER 'appuser'@'localhost' DISCARD OLD PASSWORD;
      +
      + +

      E pronto. Espero que isto lhe ajude a evitar downtimes e dores de cabeça :)

      +
      + + +
      +
      +

      Traduções:

      + +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/mysql-dual-password-functionality.html.gz b/pt/mysql-dual-password-functionality.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..c7ca5088d228cd078a1105b61c9bf751b1134752 GIT binary patch literal 4803 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 literal 0 HcmV?d00001 diff --git a/pt/pages/about-en.html b/pt/pages/about-en.html new file mode 100644 index 000000000..4037b0e20 --- /dev/null +++ b/pt/pages/about-en.html @@ -0,0 +1,304 @@ + + + + + + + + About - Sipmann + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/pages/about-en.html.gz b/pt/pages/about-en.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..95feb801f7862a1639261394232a2c170500c122 GIT binary patch literal 3073 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 P`TF)h3I}RWjVk~E99HG7 literal 0 HcmV?d00001 diff --git a/pt/pages/cartao.html b/pt/pages/cartao.html new file mode 100644 index 000000000..b25d392aa --- /dev/null +++ b/pt/pages/cartao.html @@ -0,0 +1,480 @@ + + + + + + + + cartao - Sipmann + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +

      cartao

      + +
      + + +
      +
      + +
      +
      +
      +
      +

      Consultoria Cloud

      +

      + Projetos de implantação e acompanhamento de sua cloud. Otimize seus custos de infraestrutura levando o seu DR para a nuvem da forma mais transparente. +

      +

      Mais Detalhes

      +
      +
      +
      +
      +
      +
      + +
      +
      +
      +
      +

      Gestão De Banco

      +

      + Gerenciamento, manutenção e acompanhamento do seu banco de dados SQL Server. Com foco na segurança e velocidade de resposta em consultas. +

      +

      Mais Detalhes

      +
      +
      +
      +
      +
      +
      + +
      +
      +
      +
      +

      Power BI

      +

      + Dashboards analíticos para análise e tomadas de decisões do seu negócio. Baixe um dashboard e analise o faturamento do seu ERP Protheus. +

      +

      Mais Detalhes

      +
      +
      +
      +
      +
      +
      + +
      +
      +
      +
      +

      Monitoramento

      +

      + Monitoramento de sua infraestrutura, aplicações e bancos de dados. Fornecendo relatórios detalhados desde avisos, erros até o uptime de serviços críticos. +

      +

      Mais Detalhes

      +
      +
      +
      +
      +
      +
      + +
      +
      +

      Consultoria cloud

      +
      +
      +

      +
      +
      + +
      +
      +

      Meus Serviços

      +
      +
      +

      Has your job been affected by covid? Well, last week I've posted on Grepora about a Free Certification Voucher that Microsoft was giving away at the Microsoft Ignite event. After that, I found that they were also giving a huge discount to people who have had their job affected by …

      +
      + + +
      +

      + View comments +

      +
      +
      +
      +
      + + +
      +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/pages/cartao.html.gz b/pt/pages/cartao.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..7e9348502684338f69a5403aaaec37878bd53ad7 GIT binary patch literal 4696 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 aMnw5Cn}@gZ%!B!@F8>Q#vu_sVMF0R_|MyG) literal 0 HcmV?d00001 diff --git a/pt/removing-user-from-sql-server-database.html b/pt/removing-user-from-sql-server-database.html new file mode 100644 index 000000000..ab0f69d69 --- /dev/null +++ b/pt/removing-user-from-sql-server-database.html @@ -0,0 +1,481 @@ + + + + + + + + Removendo um usuário de uma base SQL Server - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Removendo um usuário de uma base SQL Server

      +
      + +
      Modificado: 21 October 2020 +
      +
      + +
      +

      O seu cliente lhe pede com urgência para dropar um usuário da sua base MsSQL Server, mas você trava com o seguinte aviso de erro:

      +
      Error: 15138 The database principal owns a schema in the database, and cannot be dropped.
      +
      + +

      Se você não possui (ou no momento não consegue acesso) ao SSMS (SQL Server Management Studio) para verificar quais schemas ou objetos o usuário é "dono", a seguinte SQL vai resolver o problema.

      +
      USE [DATABASENAME]
      +GO
      +
      +select so.name Objeto, su.name Owner
      +from sys.schemas so
      +inner join sysusers su on so.principal_id = su.uid
      +where su.name = 'username'
      +
      +select so.name Objeto, su.name Owner, so.xtype Tipo
      +from sys.sysobjects so
      +inner join sysusers su on so.uid = su.uid
      +where su.name = 'username'
      +
      + +

      Assim que você tiver os objetos/schemas que o usuário é dono, você pode alterar os mesmos com a seguinte SQL (exemplo de troca de schema):

      +
      USE [DATABASENAME]
      +GO
      +ALTER AUTHORIZATION ON SCHEMA::[db_datareader] TO [dbo] -- username do novo dono
      +ALTER AUTHORIZATION ON SCHEMA::[db_datawriter] TO [dbo]
      +GO
      +
      + +

      Então, você pode dropar o usuário DROP USER [username].

      +
      + + +
      +
      +

      Traduções:

      + +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/removing-user-from-sql-server-database.html.gz b/pt/removing-user-from-sql-server-database.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..50fdf3159c8a1762837a93c095d0551041e1d550 GIT binary patch literal 4993 zcmV-{6MpO;iwFP!000021MNKRa@#nPzvHLCFt=-a$JD12$Fi*%C2=y@isMY|%n#B_9l~wB%&MWFLXD62KT>t zdi><{FRu^DB=Wuf+CF{|j|SrdD~zoE8a!dt?XMB|v+uKr5@$lCV$p&1_Vk(k$jUbb z)Mp3Q1!vPx$jBm&2qG2$=#;zBeCV-UznmQ~cg#}Eh({jlzhS<(V1X-0?2}lc<9q0*l!x_wFQ2B5wM8=416nkmAY(!%(G7k?d6t?O$o73sEq0Hc#oiJ)j z6ebVGcC47RM^gB<`UpzX(z9I}QIu!{%_h~tHKViOx?vlQCJR;^xlX=XsX1A#VjKm7 zEc6;nFW2Yoimx{c4Znx}Cn;7p@H@;#{N$mM)MaVMTh>nYR1+<%Cy;UnBoK6@?rz5H~aCk^PBBp^N zG*KmXSZ8aVz%Z8UP)E-iVD8f~yMY7IaH^Sm)ChxdD!;_jUhBd~jJc{wJ+DC{=;0Dv z4Z#Qkq6kBeJ36p6vF%&kR(9Rmg=SHS3{H=a$TR4(M2ALG(ad9DcPxu7%?L!tnvPP< zX}19%g)p%I6VApy$V4?^Y<|Hs!a~=JJ*4c9K%}ZM7Gmr%8giv&0DXKnqCWR#2X8=0 zQ#z~bvcydY{|f3_gem~mzN8$xl=70{Y#LB+2DYUKt?tkblntGZSmaD@-V=6WIMxKu zdmajRww3*wv~%A(x$oWF_wC&G2jrLR2mV3f*+x)3Vx^+mB8mdp3cXtf{%I}yN=v;& z>@tD`!x2&&Ru3Fp!1k&zK@ufgm#fgDF!~VY)A?SZEu^jsk+es48xO+EVjIRk4nwuz zzjmwKs`*mLQpcOEA z#{F?gxI^lkkEMtM*A4~bomx2$TEE+?gOV&{G(rU?Uuz+aa2<@HMVRIva!@pis58Oo z-6JD@$=tm^Gz-v~8d|L)cj>pe(HSRB7P<84rCDM0h&^S)a}FlWJ)`r7IND$(fBi&+k!G40yu+$q?W zB%uM-^MVJiX5ScT`jo=Bpo-YWH33u6$ z%2I=#KAFmsg%|mT`?yS_K}oMg-GaG}+W22B{HH22OlStD$yh)j$s!xt@kwQCnb|s| zg3-8Co|hRx`Ds+*|SdnCeqXbWh*5v2qls8XXj zoCg%#;&u*4;|=2|5{USVjxY~Z}L9*eK1tv-VqDp{ieaMK&NRQV=d*# z>i-~ow%?>BVbJAR*JOCGRJQsoShZVHRQC00q}30j!XW#Qqg^CM(gZ6>7vX4G;P&Q& z&s`z@0RIQMInjm)DOM8II~@pp7`|J3dHX`+OCYo0&_&;A{2&C1-|gkSfzFtF1lH#p z>uLII=xIPO2-i3FYN8gZTk~MpF*uboAj#U17n64AIgwI14?pc~9mUGr%sY}|nr>Xw zK)}={-Y!w?PC6OWxR-;`^J`8Ge$yVVe&9?WSnM;u z@51tyg6QFEQALmf#EFWI)LcnsQ{_T$#Y7TvGu^R(F~>2-0qF%-TEk3A(c5o^5VLaR zXUQ6<3Gxb%TSx=YnE7yon>2)Tw+XA?OP-TLgU_vg`$4<=sInEhJe{z* zrgRF_wP#xlbpW{YP}fH58q7XLW$U@s=RqA_bYn)!lH01KF>vde9B?Ees%stAlLAHt zMp#2hBY6(FjnRKo8%7eDz@krBVsHU&z(MY&Voo+h4C@=>3tW~6(*zR(?GTL6VM>Wj zLIpWFIXWR5xr2ivSfq~`Vv&<5b~%9Q*L0|yy+2rG z)4B2EFtA)9lEGpS2NSq|1Zx+cHh%R~07H0ta#$rq2uGwwxbLc-gG!zbP6v+%Cx@>F zM~5}2?`ww2)Kwzx`SCRf3mA%d%!yXv2&amuY6$0cR7Su((iO)z)(Wo~XKPi0N2VdI$<64sH)IXgt$?n>;Tvb%6ZS{YDzq`AKCWeFQAHVt3JLgkBhu&2Me2F_B zD-LqXLvbf#z)WEV&1vlS2E3Xaf2Ym zRShm`wi2`u%NX>5GL^ad23+x%7Cjs6lKG*h7ygkH4#h8Kkj>t2E1xogE(}@G85GJ$ zR>WNy;pE8=hew0DO_yGsY~A4*ZaYZ53A>_j>qt30z9q%GLvb4?|1wQ!QK-9MGojj#TG^>3!Yb;E-qMC?`U zfO~v?`tTW5pe!J^IavSWkkk%}&jmZ;?A zQj!cr#B|9;l+`|gG+yIxAl9P}U{hD*rBskkK`KkmWOU6;CMpr+1%(W|`WbNQ#$GD1 z$DV-LO&3m9L|$Tu3+=>6A5e{vc_O5SS4GJgi6s?Fx@xMT-pq5q{h$h`vH25j z>wA67b{Sbc%`(xxvtC5Zf5}x;Y}KXJJz_12y9mb<>_boQ=~}&a z1tTb*zGtHjlG^L7GC*1zVD;JyZ7ET=B>ly~u|BzX%eJyG2%eE*_0$*T#FR?*$U7@N z&ef!!0ljC2-ZNxD*G0Zxz{XR$*J&v%(rF4<+je`Kln(1EagUNp*cDNeTJ2s%(Z<|# z2p)*y4A`myN=>A`%DaU1Y0&}`#;+&jSdM9s-f*}ba_~=OPo5Zy8iMj9y+CCj>*anW zMX8aKdHrN#j0cI3Hfkd`Uz(Dhb8}8@V>p(&ir$|Ecj;f?w1NO5Cnrj9(C@8NxRhJf)QHZb2o2L zi*B=ICK-Ea5U9}Er>)N*we#yqZGxKFSjbs(?%AvSc*a9c^tZ)E_ZHY#CI748Y$da+ z;@!-}tb#6?gI{fWEv6V+Zsbb{&hjY_V7bAg+41PL3B6^VrF8v?4K>8pQk|NTcH@#4 zrb%w#d^Yjfjv`AIYHm*CGK8w!AiEh;8{jLlf*T;!ky5_T$#y3}=fjJ1}} z%=@9HSO@d!?DGo+=A|JyAB-2;92zEmDJRfML4K+<(E4=hMv2s~)MicEbVFs{360dt zI5$&_i#SQHj{(gEtn4z_+VWfzuYX+wa+3>RbGm9HKzS==Nj0ZR>d4c=&TjI}qoL9j z&0sn{xEEV$dFtJRtol4FFx8DcT_szt=cCds)`8~hQ>8%cfL`!%a+8@#PHhhtVIFgb zGu>z>X#;1SE%wIS z8mqM+`)H8#3d~#PA`v9(OMV|f$D0h_|$dBU775RCIICqsHe+D_}iVPjiAPU@7 zh5{C?$WG(c;ptuFCKOXh^Cl1=R%GfmBAy`Pon>tXDS5CeTN>%Evh+EMy3;x;?_AuR zt88_6S6PdM@K%ksr-*YChRpd(c7FH;vP8-78dvd5>vrCe{FFwhi?iel<^Wn!d(3hoLN~qokyZZap-^7<; ziG~ywXm-Fy+{SG-FkagzC&U9j-1Q1vP>dratK)8<`yj8N5Aw&8<5zeq4VjVi%_r;w z_oTiI6Q6TlyTHXQ9lU)R4owm9nF^VMcVf;)oO!M~!diV z=-6k}^s0kN5?CxyrX1tj*v^I?4Ipgn<0}!AbmsVu8!Y0ROTemm(P<_x1JkZq?~-Dz z-huTvo{=L)2A~VgOZgt|!&Z2ikC4fm2|Dea;&Uu-p#`^XK9=pC6z<~Azm9~6>Tebo zuAL`xwY!~?8f$OG;wH-tZcvw_d<51EL}{TOoz!T>y!|B*cp)8#4TOFbg2bzr<@={e zf8Y#aDj7cU#>rjuQ`2;_o8DzQ$1v&Q;ZoaKflAX`6_L+%%jz@&i9^}I>%j~ZXI_64 z+y<#>msP~ROxj9LB4>QYf*bDW`R?jks%#}Kkg*2`+;^hIW{tRqHb+|P)+Kp;Vd~o`JmrOkZe5?+cqT4iALI< zYfv&sUmui#EuK~35tQB@NnUGI)Yb)+t~8Z z1IH0@5Up>K^|u52QER8udepT$>+d(0;6;);=Xi*O?~Ggk-AJ<(vawlFFn~mkDUj$2 zC&q)}h9emy*vT>R#=2o`eRJ_u9Anx*F#zs*Nf7Imz($7$B$6?!1OW9y^TxW-@H#oj zQH8Gt)5;B{hy-r^en-}GZ+%)PJ@ec6`t?onEm^O86;u;O`k*REL{X@`Bw(&2Vo;A~ zr*!-ZLgQQ@?^^E{`%sM#rbiIH5-w}-01}btF&n|e+8EOh z7j5zhmM@}V-ZM7qi6Qj}z6TQ~`Iu~s;a}i#lhoMrz0{B^CKiTDBRJ^9*Ee*HXU0xp zMtuj%jOX^_KW%q9N3XY^v~yD`>leNeGUbq1OdB}KU(y+Pn1jVf$)o`2%uaEbjm=*& z7-Q(*y0lh6hMy2zL#=}%w@ARI5HETrqKjfx*nuF401FlDvXpg zJsvL~>DYi3M#>C2dx=iT|MC&p$cSv{%&?JcV1Vxfx2hL6>s4;M7LBaqt9>fGTgJ!& zhJ_eb$ukk=DYn|chT4@zHoG)8coSA$mX0SBTM%YFVO9LyTp9@xg|abx-IM;J-}n5# Lx6)cU|5*S4@AJUV literal 0 HcmV?d00001 diff --git a/pt/script-de-inicializacao-raspberry.html b/pt/script-de-inicializacao-raspberry.html new file mode 100644 index 000000000..db2ef9e06 --- /dev/null +++ b/pt/script-de-inicializacao-raspberry.html @@ -0,0 +1,543 @@ + + + + + + + + Scripts de inicialização no raspberry pi - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Scripts de inicialização no raspberry pi

      +
      + +
      +
      + +
      +

      Instalei essa semana o gitea no meu raspberry pi B + e queria iniciar ele no boot... Não sou profundo conhecedor de linux, então, logo não sabia como fazer isto da melhor forma. +As versões atuais do Raspbian utilizam o systemd para gerenciar os serviços e confesso que nunca havia utilizado o systemctl para nada.

      +

      Vamos começa criando um arquivo de serviço dentro da pasta /etc/systemd/system, vale ressaltar que a pasta system deve (em teoria) ser reservada para pacotes do sistema. +Vamos criar o arquivo com o nome gitea.service dentro da pasta antes mencionada. Abaixo podemos ver como ficou o arquivo e um detalhamento após ele.

      +
      [Unit]
      +Description=Gitea Service
      +After=network.target
      +
      +[Service]
      +Type=simple
      +User=root
      +WorkingDirectory=/root/
      +ExecStart=/root/gitea web
      +Restart=on-abort
      +
      +

      A composição do arquivo é bem simples, mas vamos a alguns detalhes. Type possui várias opções (simple, forking, oneshot), utilizamos simple uma vez que o nosso processo executara, permanecerá rodando e não executa um fork de processo. +Fork como acabo de comentar, deve ser utilizado caso o processo que for executando disparar mais processos. User irá definir o usuário do processo. WorkingDirectory definira onde o processo terá a sua base de execução, como o gitea esta localizada na pasta root, +aponto para lá. O ExecStart é bem simples e direto, deve chamar a execução do processo passando parametros caso seja necessário. O Restart é o que nos garantirá que o serviço permanecerá rodando caso haja algum imprevisto (exceto o fato de um usuário chamar o stop).

      +

      Salve o arquivo e vamos rodar um refresh para o SO perceber o novo serviço. Assim rodamos systemctl daemon-reload. Sempre que alterarmos um serviço ou criarmos um novo, este comando deve ser executado, caso contrário o próprio systemctl pode lhe alertar da necessidade. +Após reacarregar os serviços, vamos habilitar o serviço que criamos rodando systemctl enable gitea, feito isto temos alguns comandos uteis.

      +
        +
      • systemctl start gitea
      • +
      • systemctl stop gitea
      • +
      • systemctl status gitea
      • +
      +

      O comando de status pode ser visto como exemplo abaixo.

      +
      ● gitea.service - Gitea Service
      +  Loaded: loaded (/etc/systemd/system/gitea.service; enabled; vendor preset: enabled)
      +  Active: active (running) since Wed 2017-10-04 00:37:34 UTC; 52min ago
      +Main PID: 1087 (gitea)
      +  CGroup: /system.slice/gitea.service
      +          └─1087 /root/gitea web
      +
      +Oct 04 00:38:31 gitserver gitea[1087]: [Macaron] 2017-10-04 00:38:31: Completed /explore/users 200 OK in 80.106173ms
      +Oct 04 00:38:31 gitserver gitea[1087]: [Macaron] 2017-10-04 00:38:31: Started GET /img/favicon.png for 192.168.1.4
      +Oct 04 00:38:31 gitserver gitea[1087]: [Macaron] [Static] Serving /img/favicon.png
      +
      +

      Após estes processos, você pode reiniciar seu raspberry que o gitea irá subir e funcionar. Ressalto que, preste atenção tanto no WorkingDirectory quanto no ExecStart, no caso do gitea, ele utiliza o workingdir e a forma de start para saber onde irá largar os arquivos por padrão, então ou você configura ele com caminhos absolutos ou cuidar na forma de start (ao menos é o que consegui pegar até agora).

      +

      +
      + + +
      +
      +

      Traduções:

      +
        +
      +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/script-de-inicializacao-raspberry.html.gz b/pt/script-de-inicializacao-raspberry.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..817366c981e514de5061deca2ae2af9973def560 GIT binary patch literal 5966 zcmV-U7qRFciwFP!000021MNK9a@$6h&(>FTn9WL>5Cku>CD9TS`4W$3ZOe(|$;`S^ zswU7R+Xm4vx+ z>2vFIPG1i`dvJXJ^smn!l8KrIgN+0HAOQ`>hmA-z1{?5(QGc*O;OAh<6eZq-#*(SS z#*5Q$oV`ZAD5O(%*qCv49*I~rh$lkDLI6GIzM35RY{ot2=r2veL#{Xt9O==39d=sn z0;-8pk;C33e0JFQi}T{hxi6*>ReTt*9A3^2nLlP}O~qBf1}9$3BPEH?uniB|;BV>W zFPHxzNGM25Wi(`QJSPz+4msh`l!oDfYwB(+aWfSmQ-DBm5$0O{Cr|L8brDC3M?;}n zo|wAHAMZRk+WqU%x4ZN9+2h$?)K1j?^S3C(9M&in5sTIQup!2M$rU@pc5;|4MU4Te zsifvn9-hXEdjVTC6Y%ggiCF+efnsq;6@X7-HZp3xaC|nRNubQj!v>04_Feb<{JbSi zjFxl)S~DmV*CdQ>=>5L;+3jX^DgTB>>G*49nI8VWd*ILKlA7}QraWX0O2iJFKw z*Wgo{#Fzi$aY63WDUHX1EHt)cJw7u;6piO`C>0nzCrnC8B!k+N2r>q1peTnaONw@S zk92Js773HkgHBIpK#9c!$bbF& zf7YA9C((YeXvs>;kCI`)<%IcXiWfW->9#w&PN(g(_sCU9B=brdI+?H_u->hmQXKaNZB8ONM&m*#5iCy;!?{1aC|kQQy$C@ zzXK(m(|H}r5;qb271VDKDgjt~h;pElGO*1#;2nZF7?5tX8lfLb2at}K@+RwJLL`P` zP4EKqQ26s^_HEM1J$G}@z1;Io?)f(PG5dl)C_Kjqs!tlJsG8t;fNbyye3XH|+sGbi z35#ME7$-duYs2b;^9$MCs+u5)QeB_RD4@{#5c<>WyM?ld`aTcGeX`%W9bFX5Fm`fi zstx}-?Q*H+OY*m@PddGFAt;AA6UN6A1;wqM?%wU)&Q5o~2z4%E-xcgtupvKk!*3CjVr&U+3z zcM7%@lgNPTe!)Xuvu}(veGA#-7+*3CTCP>pX!c!-QMm>rYz|B1QNIv-25&wy@K2l z6_cvgtwTr!(D6Echt;b_2N2grkOS8Y#WxNxh7d2H5<*-->}izs`7BqiM3fJ0ABhWIn8TCdIl+1xV3#ZO?M355-FM-o>DTRkX$1%kft2Cd_ev=9LnhKQx+x%uBl&9 zou+wAV5 zxua!)+gmigaE15<{2zlcur@?Uv20ZDb|Lg(_-^0L+ZP(2h0KCO4}GWcgAgdbxSRI| zI%Dn=7}jrXrs=bxrv1;<01axf@>=W7Prkyd3dpQ{0zZTTsllE}+4QKi&_sU6Ua4;NX=KSH)A?euR zIfJpOPJ>~{dYyTj^6?H>GveElQ|35;itJtcrVJ;cRH!6_>d=H@BO*+9)_78i|yenPq4)X9#G^(Q+HK!0ptr#uc^{q4hNKGI1P zPXz{9NPXHma3hGY(csT?3W$IScKHi119CzMBvZ&}5TVj44MquKG;qRk>xkmmsQDau=DQIVq|)ZpgS+vJcZaxF!o=_Y?KuL7@4~Yh6<(=y$St<{`8M4m7fsAMf9ou~1-xLz8{H1;W z0#dkg*$=jCqfije8iNOm8N(X9hxYv=JzaQW1hb6jXawEx3KStzFqnMZQkV&;jg2}M zY$NM)aSD0S6>Uq%P=gA(U&t%Tj=>8oSNtA0fr$Tr#|->qJih{oi&)%cG!HMBcLD-Y zYt=V%wvYlWBl?cXHPDFAp^$I`Kd!bYpb1EVHc5oxIs`WzU;a#D;cLIejAyoB z*d37o^kFHA*2XvZM)zOH28Pzjbkp#eE(f3y5j_cvoM9laE)UJGxj`d=K1(~<;PU4dIVPC_mkb32?E{TUSc!QP zTp9v87H#L*!)BzG6e6E8@VC;)RkBw=2SX?=6l~OpA~Sg-0chU_IjA}YETPhJHD;1U zs7kBQElubvW71OsJj86KqxBZM@PG}1AzW!&fbvX3mMy>!>GO6LGf!wRV+Fr&x(v1# zBLc`(AZSgDC?T0VM!GzPc@~=VY(X%tg@8fXgHGt#3daK?R#vqiTc;JZfrKSbZf^xS_=valegILj~cxEM}&{L9714HG{L4> zj6vN`HOPG!kU+wtgI>&_d&Myumy(vI71ji@r+_OX-jrl8}U^?-*X72FozyBL4Bs#<)#rRIh6R;-c_er2XNjacw zrEzIFvvZ3%RK8-=7~HiLt&;rO@)-4VS4&svJ( zBn-iU)*%A_g~N*P%REmT12X{9P$LaM7Hj!2R#Y#R`;TIgM15kl(~<#brKqFa2<+FNe){#Nzhk?koN{cy zKyaDkol5$Ove@hQI%sg%9GGz>#V@Nem!b&j62d;IL-rIM45YR-6+cYF$W@=n*g7(0(V-K9RCZ9G?xJO((+cPeW$bAo61iTuadaVHbCBw9-b1HPsi>E zhO-coa8bEf`*mXgX;@v;o&9bm@H>00PHX4?yS(#bEC?;!tF5Nv0En|J-{oc_BDOfOxxH14OxKB;Uv|$ z8z$eH8=USpd5z5hF^dX048i2=OsJ}0b+s(hEfEHf+x(` z5{@ZkxJ1Pk#n~;)eX~Rua7s3Y(O0B%EUKUc0!~cRL>2#(Chit9xd)RtS88{y?o7e_ z?S8s{)o|oH0|#aT`PDgjs^Q2}fHU*Hm-FnWD;7BnWH8&barnSsW6}< z10@Jb5R~lR{^ElvF+R`{iE_j!m4yc#e^Mml#Q4hNL=iEvvM4rg%)ss$(eqRlJAMNH z%U80n9+qEYY<#U3IxbYBuSv%pD!61zTOuAengvL`i?rW(3|Z0>$h3>4dP{1bG?s0s z2*+*hhXKPGgGT>l!LrNipINI%cF$_F43MtQHu{~VvXrPR&1)GgZW--=1k+wZjB8G~ z8|6LeGMmc!=)KHD(eD0 ze8jI^)$WGvS1fHW)Jt&f2(7eP1(d3>ejjbA*1KgZv5a3$$T7sFFx|cVamc}+N=&#C zQbSOlq{pb}Xj6w=1La3%v$4^&L{*vZLa3g-5u?AcKtj1qv0LD=MTNxJNs>a zXSa7}AF`w#YkwsVJA3WACd|q#v;r_SAbLsEKvV#{+gSa5qrR~D(VRs0Dkrhp`@g@V zSR(+f<14O9-ojthY%^WgQM7lRcK7`p#d=jgIf_q?;s!a2-c^pGDnEOF_i$BKxQ=gF zkD`y~5xP!y_dPwrT2()Jgijvf13khI72ALh?7k)(E-!}8ro`^NO2@?UHHTLVb>s$C zWaY?ep{si_bZIY6ro+_Udc!@=2D+rp|N+(_aL?V;iS5tWHtsb>PkFMRON{?^392(k41d%BM`sl?!7vG z*0-`MrcKAo_9NR4_q+9_DM{b6p@wL#)T22Y zWL)o3hsZUY5C8A!5U!C2RAm6!fxgnl$WpCh>|di&P1L_4-d{JgmTITMsLL2vN7BaX zzW8~hDb^voIzjx6!tct!n-955Wgd;JC&~%5QjqT|&9gpfS}R@pKyB6}M{6qcMrfp7 z#<`wi9K?w|FbgynYUzlyu{xW~oWlZZt>Z4Qgsj-oF708Oba#8tJ_R(A`d9}jehSXP ziM2HJszi1KC);JO3;X)0KzVyKjs4!hw>~;>qvI(1-)5 zxDfK1OnqbO9iQA(#$JJAx+YJ5f+{za9erltn*2P$IyaS}>0G`EuF25T`N_9WZYo0| zQ`cmt_3Yv4P30yM=a8f=MtN&9^&BfMhuWLO+8h$<@Vad2N;j3I_fgc1))DvyI|Y1Q zuD*R@=Y4M~Yf6aVy3zI&>#W0&-56{$(%&LWj2WI~E$)^1IC)|bbGmUtpPc=8+2Z=T zbf+TZ3UbwO?C4!l=is3mU%vwy{UoU6;$9%$BrH8$nODui3F;#}c;*Pygy*0X z_GYcki7-bp{e`*>a3-P@K5~F8mmzrYNh3ePYW> zP9kS~#^mg`&m1RPsqv|z4)q-`;QAsvk2(=Zq}Sfxz0>XO_d2&bz1_VYUZ6G)y<(4y z=otKQ*WP&s<-T3*F?pgcbze!B`f@n8iyyD_wJdh(kvNVaX+bp7_DF-0qx2573~YIc z30IEv^oYINt*EUTjmg=Vz9EO^<8OZ>FMlZBuY>PfQ6eW>FE`I5Q%9aBl2C0n$>xhA zXRp26ZSVD*?&c5ME9$A3darQ-2rs)`0^Lfp6tcBlv8azkjwz7n3opUt+m;tINU-f< z?$)MZZF771KB6&gp%|d{cKib39+pVIL&2#pJYylnrl zj6=2}=pLbZhTC*`2#JWg$41bxw#KwcWJ!wewzqO`mgmH^Jw6QmWt+T@2RzU)ZyB2n z#E=FAukeLVJ|zc8bkxZU30T7()lwrL_Vwe23r~ zY7-RMBq2K|55Q)(wn3VUGIOv4`%<1-wB%d4jT*n(!tv7L;$lJE`sZ9xX{D%QuR{jg zBn=6OjwG(QZY=MRSruZN_3#y;t_FH_(Ag+%m?!%nu&_nP3`CaHJbR%EKT>^HiZFTXb){x}{?SR%j_R= + + + + + + + Como definir as colunas no select utilizando Entity Framework - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      + + +
      +

      Então, você utiliza Entity Framework Core e geralmente faz o seu selecto da seguinte forma, talvez você está retornando muitos dados.

      +
      var products = Products
      +    .Where(p => p.UnitsInStock > 0)
      +    .OrderBy(p => p.ProductName)
      +    .ToList()
      +
      + +

      Rodando a query acima, em uma base de testes você obtem o seguinte resultado, veja quantas colunas estão retornando da sua base de dados.

      +

      Print com todas as colunas

      +

      No meu caso, eu só pretendo ter de volta as colunas Title, PublishedData e uma pequena descrição. Então para selecionar apenas estes campos, nós temos algumas opções. Na primeira, nós vamos definir os campos e retornar um objeto do tipo Dynamic. A segunda forma, é dar ao .NET o objeto a ser retornado, pode ser por exêmplo um DTO.

      +
      var products = Products
      +
      +    .Select(p => new {p.ProductID, p.ProductName, p.UnitsInStock, p.UnitPrice})
      +    //.Select(p => new ProductDTO {p.ProductID, p.ProductName, p.UnitsInStock, p.UnitPrice})
      +
      +    .Where(p => p.UnitsInStock > 0)
      +    .OrderBy(p => p.ProductName)
      +    .ToList()
      +
      + +

      Print com menos colunas e também menor quantidade de dados

      +
      + + +
      +
      +

      Traduções:

      + +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/select_specific_fields_with_efcore.html.gz b/pt/select_specific_fields_with_efcore.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..74b62c492469ce7d253fab38bf7613a7d3bc361f GIT binary patch literal 4938 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 IfjU(H07KGVEC2ui literal 0 HcmV?d00001 diff --git a/pt/sitemap.xml b/pt/sitemap.xml new file mode 100644 index 000000000..d15937b9b --- /dev/null +++ b/pt/sitemap.xml @@ -0,0 +1,650 @@ + + + + +https://www.sipmann.com/pt/ +2024-02-14T00:32:49-00:00 +daily +0.4 + + + +https://www.sipmann.com/pt/tags.html +2024-02-14T00:32:49-00:00 +daily +0.4 + + + +https://www.sipmann.com/pt/categories.html +2024-02-14T00:32:49-00:00 +daily +0.4 + + + +https://www.sipmann.com/pt/authors.html +2024-02-14T00:32:49-00:00 +daily +0.4 + + + +https://www.sipmann.com/pt/archives.html +2024-02-14T00:32:49-00:00 +daily +0.4 + + + +https://www.sipmann.com/pt/monitoring-mysql-restarts-with-powershell.html +2020-12-21T13:30:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/pt/mysql-dual-password-functionality.html +2020-12-09T13:40:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/pt/apache-nifi-json-to-sql-replacing-underscore.html +2020-12-02T14:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/pt/blocking-user-on-sql-server-based-on-schedule.html +2020-11-14T07:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/pt/select_specific_fields_with_efcore.html +2020-10-28T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/pt/zabbix-running-on-low-memory-mode.html +2020-10-20T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/pt/monitoring-mysql-replication-with-powershell.html +2020-10-14T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/pt/microsoft-against-covid.html +2020-10-03T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/pt/the-power-of-powershell.html +2020-09-21T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/pt/top_level_statement_csharp_9.html +2020-07-29T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/pt/zabbix-poller-processes-more-than-75.html +2020-07-02T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/pt/monitoring-website-heath-with-azure-functions.html +2020-06-22T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/pt/zabbix-icmp-pinger-processes-more-than-75.html +2020-05-25T16:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/pt/zabbix-server-out-of-memory-crash.html +2020-02-27T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/pt/removing-user-from-sql-server-database.html +2020-10-21T18:40:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/pt/socketException-protocol-family-unavailable-java-docker-wildfly.html +2018-03-04T17:40:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/pt/menu-dinamico-com-apps-do-django.html +2018-01-21T21:17:00-02:00 +monthly +0.8 + + + +https://www.sipmann.com/pt/script-de-inicializacao-raspberry.html +2017-10-08T18:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/pt/cool-tools.html +2017-09-17T14:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/pt/desenvolvendo-app-firefoxos.html +2014-09-02T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/pt/editando-o-admin-do-django.html +2014-05-15T18:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/pt/category/azure.html +2020-10-03T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/category/firefoxos.html +2014-09-02T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/category/java.html +2018-03-04T17:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/category/linux.html +2020-10-20T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/category/mysql.html +2020-12-09T13:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/category/net.html +2020-10-28T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/category/powershell.html +2020-12-21T13:30:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/category/python.html +2018-01-21T21:17:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/category/shell.html +2017-10-08T18:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/category/sql-server.html +2020-11-14T07:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/category/tools.html +2020-12-02T14:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/mysql.html +2020-12-21T13:30:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/mysql-restart.html +2020-12-21T13:30:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/powershell-monitoring.html +2020-12-21T13:30:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/mysql-dual-password.html +2020-12-09T13:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/apache-nifi.html +2020-12-02T14:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/convertjsontosql.html +2020-12-02T14:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/removendo-underline.html +2020-12-02T14:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/sqlserver.html +2020-11-14T07:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/user.html +2020-11-14T07:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/time-schedule-blocking.html +2020-11-14T07:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/dotnet.html +2020-10-28T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/dotnet-core.html +2020-10-28T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/entity-framework.html +2020-10-28T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/ef-core.html +2020-10-28T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/specify-columns.html +2020-10-28T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/zabbix.html +2020-10-20T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/shell.html +2020-10-20T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/low-memory.html +2020-10-20T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/cache.html +2020-10-20T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/mysql-replication.html +2020-10-14T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/powershell.html +2020-10-14T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/powershell-mail.html +2020-10-14T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/azure.html +2020-10-03T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/certification.html +2020-10-03T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/microsoft.html +2020-10-03T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/script.html +2020-09-21T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/getchild-item.html +2020-09-21T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/remove-item.html +2020-09-21T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/stop-proccess.html +2020-09-21T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/c.html +2020-07-29T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/net.html +2020-07-29T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/zabbix-poller.html +2020-07-02T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/poller-proccess.html +2020-07-02T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/azure-devops.html +2020-06-22T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/monitor-website.html +2020-06-22T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/icmp-pinger.html +2020-05-25T16:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/icmp-pinger-more-than-75.html +2020-05-25T16:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/zabbix-server.html +2020-05-25T16:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/out-of-memory.html +2020-02-27T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/crash.html +2020-02-27T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/the-database-principal-owns-a-schema.html +2020-10-21T18:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/java.html +2018-03-04T17:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/wildfly.html +2018-03-04T17:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/docker.html +2018-03-04T17:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/javanetsocketexception.html +2018-03-04T17:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/protocol-family-unavailable.html +2018-03-04T17:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/python.html +2018-01-21T21:17:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/django.html +2018-01-21T21:17:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/raspberry.html +2017-10-08T18:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/tools.html +2017-09-17T14:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/firefoxos.html +2014-09-02T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/html.html +2014-09-02T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/yeoman.html +2014-09-02T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/tag/django-admin.html +2014-05-15T18:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/pt/author/mauricio-camargo-sipmann.html +2020-12-21T13:30:00-03:06 +daily +0.4 + + + diff --git a/pt/sitemap.xml.gz b/pt/sitemap.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..5a90148358b10b0928f30a34556be2486a945dd2 GIT binary patch literal 1435 zcmV;M1!VdkiwFP!000021J#_%a^olzhWCDol=sKF#ED~<+r66I%xbcjoeLvm(T#ux zS4na_9%sk<=dVBirWLCRaA_TpluajC zer4O6e=15``=&RKTkh~r+O{9km9xpq%_N;I?*^2;T+dFnz!!VmLGPMwCaqYMEEL`N zC++o7T@xv1RMm-g$vW``uo$tfR>dYy^EsqBWb@}VUESxa`4aFVO|jrhk;$4?MDAH> z*pE#?xHzwqH+Lp$ZMZVroj2)hzD};cP1Z?^^g%L5_I6geT8tMFdjZ?ylWgpuq;Zup zqo*{q;)l^!X00T5_@vxJeYQUY7=}}XaTbo;RiM=o=b?%T@t%$pvK;d4IlEuodj*i* zzpn$|=Bhp=Pya(ni(fQEfF{-+l_{WXB=vI}5%__<3eu%lFb}GLXo9mJNM3UIW|ah| zplcE>2=z_W$O4;#D#QB4iBl?D~F!@qxTnJqJbV!RT(#JC1KVp-ANL%l^K`qX6Y zAXx-fW0_#oZLMY$TZe8-&O~9ievE8cd80v6$e*6GWnc+E$!^C_U>YfXvtaEDb%dJL z%A5g7ZYW5@EBMV^r3LS@mjTmN>U&gpF`OD@Rq252iOT3wantMH4GfS z4;Bx-B78&`(eOR8olo$gVgyHRJ9Np<2DMxQw(U{#2zfr5CgHT!pi$Fj+T{WAhv)2Z z97vgeS1I}Nq#`VBU)BCTe+UVC&8`RS+yx}= z%XxmkY5ExAkmv)`SNIWj<-8mgM8NwxeZlKKL^SpM%c;i5gPW&*bCMCkn4?PKOy>NN zi&HnVhfyH6J09)As67(G42?xVjddGE)bOl+D=7j@$7^;yMuW?tTLj>Ra^uf_UqNB; z8DAJ$CLKNrr6D!LVDUW$53fVW#c#zJeI(yh0`n=2yVrGxB5VHkUtUZbJ>#r8DF-xMm$Uj11&`s!GS zJJ(gg4oVNRTm_0=-PY~JKNbP;8-Lg!BUo_S&wJQ{&K0-z7e~YUi_dP5!!A%%8|(xO zv>{rttK$!6VlFAyM1VR<3k15amkn|PhLI70Kg45x#(EfP8`pa!BLMX+kLg)w24xpB zXawLrcGVc@V{nVK9eJQvHry)nQ?A%RQDd+rHVkJhK1a{$2_wKfGljPz0PO~TXDA+I pBYq6@744)Zjp39lprj@S*)PR{`EHW#pC)W3{{o~<6_;f}007bizvKV_ literal 0 HcmV?d00001 diff --git a/pt/socketException-protocol-family-unavailable-java-docker-wildfly.html b/pt/socketException-protocol-family-unavailable-java-docker-wildfly.html new file mode 100644 index 000000000..b08f76d27 --- /dev/null +++ b/pt/socketException-protocol-family-unavailable-java-docker-wildfly.html @@ -0,0 +1,446 @@ + + + + + + + + Resolvendo java.net.SocketException: Protocol family unavailable em Java + Docker + WildFly - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      + + +
      +

      Nos últimos dias eu estou brincando com o WildFly Swarm e decidi fazer o deploy de uma aplicação simples com Docker. Deveria funcionar bem, ao menos é o que pensava. Construí um container com o seguinte Dockerfile e ao invés de obter uma aplicação web, tudo que eu obtive foi o erro java.net.SocketException: Protocol family unavailable.

      +
      FROM java:openjdk-8-jdk
      +
      +COPY target/issues.jar /opt/issues.jar
      +
      +EXPOSE 8080
      +
      +CMD ["java","-jar","/opt/issues.jar"]
      +
      +

      Por alguma razão, WildFly e Java, ambos decidiram utilizar um protocolo IPv6 na interface de rede no Docker invés da v4, então tudo que você tem que fazer é falar ao Java que deve dar preferência em utilizar o IPv4 com a seguinte configuração no seu arquivo pom.xml dentro da tag do plugin WildFly.

      +
      <plugin>
      +        <groupId>org.wildfly.swarm</groupId>
      +        <artifactId>wildfly-swarm-plugin</artifactId>
      +        <version>2018.2.0</version>
      +
      +        <!-- ADICIONE ISTO -->
      +        <configuration>
      +          <mainClass>org.wildfly.swarm.examples.netflix.ribbon.frontend.Main</mainClass>
      +          <properties>
      +                <java.net.preferIPv4Stack>true</java.net.preferIPv4Stack>
      +          </properties>
      +        </configuration>
      +
      +

      Outra forma de solucionar o problema, é adicionando a mesma propriedade ao comando de run no seu Dockerfile. Então, fica a seu critério onde adicionar. Abaixo a solução utilizando o Dockerfile.

      +
      FROM java:openjdk-8-jdk
      +ENV JAVA_OPTS="-Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true"
      +
      +COPY target/issues.jar /opt/issues.jar
      +
      +EXPOSE 8080
      +
      +ENTRYPOINT exec java $JAVA_OPTS -jar /opt/issues.jar
      +
      +

      +
      + + +
      +
      +

      Traduções:

      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/socketException-protocol-family-unavailable-java-docker-wildfly.html.gz b/pt/socketException-protocol-family-unavailable-java-docker-wildfly.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..ca04939cd43bfa06b0378320e5f31ddc95e50b52 GIT binary patch literal 4842 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 Q{ZCi@KT^fGGRjH-09r|C3jhEB literal 0 HcmV?d00001 diff --git a/pt/tag/apache-nifi.html b/pt/tag/apache-nifi.html new file mode 100644 index 000000000..0698c36ee --- /dev/null +++ b/pt/tag/apache-nifi.html @@ -0,0 +1,296 @@ + + + + + + + + Apache Nifi - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Apache Nifi

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/apache-nifi.html.gz b/pt/tag/apache-nifi.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..c1cba1e260577fffec5a58fa52b5245766c98a73 GIT binary patch literal 2907 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 F0095ek$V6D literal 0 HcmV?d00001 diff --git a/pt/tag/arraymap.html b/pt/tag/arraymap.html new file mode 100644 index 000000000..44094c158 --- /dev/null +++ b/pt/tag/arraymap.html @@ -0,0 +1,286 @@ + + + + + + + + ArrayMap - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      ArrayMap

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/arraymap.html.gz b/pt/tag/arraymap.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..4a9f3b5080118bd301b9acd5f185d9919026906e GIT binary patch literal 2819 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 VU3C+y2l~5?{{ePriFx}d000U-Y?uH5 literal 0 HcmV?d00001 diff --git a/pt/tag/azure-certification.html b/pt/tag/azure-certification.html new file mode 100644 index 000000000..c52b8e672 --- /dev/null +++ b/pt/tag/azure-certification.html @@ -0,0 +1,286 @@ + + + + + + + + Azure Certification - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Azure Certification

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/azure-certification.html.gz b/pt/tag/azure-certification.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..b35e51a2cfd55dbb170bade67806209ddf2171ba GIT binary patch literal 2825 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 + + + + + + + Azure Devops - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/azure-devops.html.gz b/pt/tag/azure-devops.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..f9ffaf2f2133d567d1960c9a54d9740295f594a2 GIT binary patch literal 2915 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 N{U37oo$~oA008j(ptk@3 literal 0 HcmV?d00001 diff --git a/pt/tag/azure-fundamentals.html b/pt/tag/azure-fundamentals.html new file mode 100644 index 000000000..fe1deb771 --- /dev/null +++ b/pt/tag/azure-fundamentals.html @@ -0,0 +1,286 @@ + + + + + + + + Azure Fundamentals - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Azure Fundamentals

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/azure-fundamentals.html.gz b/pt/tag/azure-fundamentals.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..f686e825da606204a0e1e8b4659949f5e36e24ff GIT binary patch literal 2824 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 + + + + + + + Azure - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/azure.html.gz b/pt/tag/azure.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..d145ec3f5ac7f9705f53851baa7ed2629cd59332 GIT binary patch literal 2998 zcmV;n3rX}JiwFP!000021I-$1bK5rZv;8Yj_Ii?AlhnhhV_8z`Je!-iNow~snT!V{ zAqp`_Fa&5>Y4hK20gw_&QHqrFb!;c*1G|fT?*hc|t0%7>U;g>}DVoZNjrWJ@f*6j& zk(Eemybo^(4#xWkeufc|82MA23L;0=ub0p4hgNwg#t|7=H0Qn zbQF*q>JwW(93mQ1Ninm9j~N+tolb?+RLaCAA2NC~vi`7tJ+mM4D8Z6?jFjk7G9p1p z3QS2QBjdA=SxS(NE@%?rI3Bv@_5KQ@5s!(aAAu^5OGN+WbIP3CG?6s%xO99Tx!F(O zKRG-8^X$#>ymR&9<_~$4bbfoI^i!gmq&y+1oR2IX4g{6tO3hQEoO5K2(HbN(YkX)lA?J*UDIpMBhA~%8Nkm*<2zSou?8rHBzD?_37V+k z22>;r!|Wd8{`F~PEWv@w4+C`KJVwdpq9q<5@ zz(_Z_MS?RLps#)3Z-TK?9MDV*&{0{Cl2RQHf|R6JGzx3V^{{^(raX%SJK>PEwQ(MF zzBye7m6C*DsSKFku7xzp_4y4+t1#}jB`7Q<_NOYm2WUcXNpSkDTY+Afq0^~KSKKX~ zE`{)51g%OL;agL`2gru%bWOpfDPuOi!IWVr&W&{U_M9oq&D8uraBpu<$uePlX5S7F z&LlsDm!IH2{7cYSdp$tq7WG(0N&wERZ>#){!M9SB7*HJ-G!C@*#z~8}80H0Ayw8NB zllg*B!QGD$2`EPGh{lCzCnw;@2Q|^Zj^-CMARbO@13G*bCePa%^c9U%6NKZMU8}YQ zcb#UU;3`vuaSl98kPJF4bwa%caQaOJBY18a^LMRl_^}9irtT&A=AZ}hkhOTLv_lK&6 zAfI6YC9b0OqRIyJrZg^jQZ8*VE)Oa#!9|(WSWd+OhO~H8!qIqMCMA!ns5Y1-QYiT# z+)Y9CHiP6&^plE7Ta}aLla8N)X#$0vLnBH3Yen=5x~{l=a9XrGhHi}&%?>R%nP4=* ziWz8AhAthWf5)CkPR~i44PArZfR2kk#@Z;6HU5c5Wa#3WGVo@s&vbYscC9gqcO{Fe z#{PU8X^j(EnPdn(+D+~xE_g|?eo>wUX>U3CG8L)^$bTfYkak39vGS_k>p|&L<-2oQ z_AljpIpm@^^i}ROc@PT4H>c%npgZOPg6_WED%xkmj|0UZX&s!dsane1S_UJI!D)5o=N?j7ij1)NSI={09G?&^%ylTo8-7_;b4UYUEd5c zCZCuaSogq^@H4`_f*PlSIpFBELb^~$_f58lL-pk;0NeR~1T^$mP9YHC4_01lPqNro zrCNN}oQ4>5EF79VwIG2P9)+G9G6I5sS%iK!vq0*IklD+5R*?T+bTf1_))-d#Z7tC1 ziFZxhiM)L&Qbs?&V>l5yzHkhQ5_FcT{AwW@Ko%>So<&~Mg9DwM8}dvw%aqe%$`v*g z3L56SSU9B^YPtuGL;`QF2Z4wrA()T|Yi-h9l#tvrbS;C%yWFjqY;~lCsMCF%-(vy! z>!_mHFUmvU#`P)&^{dp;SsM!S_THU~Fn6^h8}}{dt*)0Fyjpwb{#swG`rtn;(1Zdg zzvW^_p`IDMR~PqHu=lXo+)<|g0Lpz8htW8@-BF&G3g^BG6wSp4wxdAj^NTkx@2fyD zkvodx{QUItzDiSXPqr3nO^b4$M4QVgk9QSIBi&b#zQj=X+D4EY)NVIa{#~Vd^AcTX z#QQ3m}CsrxHRu}Y(en;-ETio83yRJpI zSc7i%!W~%KaV7cr737_9b|>q=yIlW$NuYdjfOy&5j);xHQzjEawvUgplj4SC0)!)i z4ON{{^6X+Esdi@N$hz_vjv;pp)#n(I`b&I2h*$B=2BdIrdTu}_IAc=Br~bB$FjI#F zvN<{@=nVW=%TnJ1{JxXimeXYZRixKFuD(~hdbnW?y=e)(y6)Du6VB!OUCqjtcdl2v z->aE%?Z%s0X>YN6TTk^892=O@NwJa~f0?(@cXr^?P-|lHxgOb_M_|!Q9rc->fZ;TsG`#reZ@-eb)!_tyz#oKcYiq49o z3kxuFaKSKczQd?*HhPVmAE~HX>jtOjD#Rbq$Xx#Z8@+v3{j8Jhp4M#|(8EFIn^TKeuWh~r6qY_up z(;4F?DVJRB|NVekr4uJDG%(L5*S8MPcc|5P48?_+-irnnl`2G86A&x88pNadB@Tba z5m_qaZRg!84dEmZ9>;uQ z5IPfp@OH%^H<#GM_3#a)ZVmM2qO-txw_o{u-=P0e@8Y`XIRS%A3CcI{_se0rJj>7+ zu8-y~f_7=|U%5pC zPB^y7U + + + + + + + C# - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/c.html.gz b/pt/tag/c.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..ac270186fe228d4bb10ef302612b3e90f73534f8 GIT binary patch literal 2970 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 + + + + + + + Cache - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Cache

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/cache.html.gz b/pt/tag/cache.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..ed5c2b87b5e87aaf7700423ac267b27e8d96b17d GIT binary patch literal 2895 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 + + + + + + + Certification - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Certification

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/certification.html.gz b/pt/tag/certification.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..cd93a715107b83d60a45a98ee0343bc80b8378cd GIT binary patch literal 2884 zcmV-K3%m3miwFP!000021I-$1bK5rZv;8Yj=6aG_lhnhhV_8z`IFI%wZj##RwUfzs zAQGYwg9Jl>mX$XD{T2X8krbs!nOw(qVm`3D*!L~~4!?Qw^8D)0S5MJQhHSh)R2Rf> z6pXA`TH}3qL$E*INANQYiNwg8;Y1KQvff-hvmaUIp$La$WZhCSk9i_3 zfaI8xN=C-#B$0GVJ%HvBve6}tLmWjz*9`BkFdXuTNcvI3mx%w%qyuozi97zirKwVJ0yIpfG0qcuo! z5trfTWTMDe$X(U8PlT7yxW@Zq#sh>WJe3G$S|B;2Q6NC)9!q_=MPLiUcpL&W!jX@B zEb#;jB5IRV*-{E@l4Bi0ny?bMvZ)xj?tDIXghACxRgSh!6V2jP71)GFLmZH;=5{rx za7%BUI0|ywXvk=EgJubtZlp3L#1}4R%)t^U+=U>yGULd?am+Grbk*4RdMqIfhL|Kt zgq3NvZVSoK+11Mn^bBa$_|RxVE*KFrLLkNrW3HT$khq=@?!527CAUe5`4UXL2$bc8 z3v<(3q7ha|uTsdxpMq9}6L20df@3PQ4uHmwQyfyZ82ttjJ;#f6Bx};d@RwuXLRbK> zwzgH9PzaVyXX6O7g`}RIw3(nE2^)w`iS%aMQ&L2X#G2tHvV_)Tm0XlIW#&^}R5GMhJsXFl6?bJuLT!MZi1Jv!;2f;YR zo)H?%Bn&%8y+;p^yGOl~D%6}OzCB3@z5(9U#fErl0GTH^&LPx`Du~A!PX_2gzu&J8 zOaPR?NH@Mif-~x)2cG9O!Pp7*X(|Tjs4PfHsm=s~lqAwqd%6xPAu+*H88EwD3u%<=@mrEqVchRZP*_Ur%~W^~(3IX0|MWYz0$rG))2T|A z-z}XE3aQ5kT9q=ycczXHkPX%8hJs5|#%z3xDZ@~t8|m)tIWw4>sriB6-rk;)Wy<*6 zz8fH%N`4A2Kf!+E8s(y$oPZ-A)I@&}E-tB0COD}L=W4kTt)49mG$XuX0lA()h%D|hkKGWfm$hF2K z+LbJ-8vFBYq&1FZWs)KEXt$Y@xZoxE`bBvbq`l?j%T%ZyApeoXLfR3b#mcIBuLq@1 zmG91J*}s(YWspU2=&Rgm@*ot7Z%@nFKzGao1l@hRmAB7^9|wv-+&Va2Q?-=2wG2ia zgVPuRS>vu`F>QyAiJZ%2`RN|%Dpr?fNhslSYg~=al8G*5w$wDQi@3 zc3V?;JrLLEUu5MhccFfE$8apPo^b?$BZ-};c(V}o!K?EkSopaf9Oz(e@VlzlmBS?A z3L6p!4YFMgoKOroenJ={{$!yCfrumlPbd-A+8``aN@iM}+n^CES1;qeM_PzF-Sg}o z3-IHkie|saAHfgnSq<`8slrVyBZ zKvN2!{Emwqg?eW2US8f;!QR8-V@H|(11R@Z99S}^cRR}SLgCz3fx?COz;+bqVsZKU z#eEehB63G@oL`?_-B)R1K8JPV3<|`KLcLOmmkROTinfq59_=cYM!K&eeTkv&wT&P* zsNGMf{JTo^`USewi1$@A$vNA#+FmJ~Z3HsyYu=ImKf1((sMVy}&6HocPpndYr7q|< z{f>OSZgG2C?z$$~VlDC|M*Cu8P11!O5*q{8(vvo#+i{s*?S8Lj#ANWgHKPa1sUSSu;0s$ zL1Em_Hk(Z0(xdKs;bLD*76!<9uXk$AUx90seqS=JNO7=pbe)z1F*f4S0~Uy_;7culizT1++a)BTs)q(mrT77f?(F7+CbVm#Wh?$4dxQ{HKhl zr*_MT);d@{q6n~~)Bw1xnj%__z{Z9nB$Jdh0)Tm8xZN@qZlO_$E9ftbapQzbuJ)pS zM6J?kcnb~8v&r?X1N1#=H6D?>Fw=X{z@k!xC~E>@B~ycVytu-_uQ()2g}m*&TcshK z7{VixzjB{AP7ZSDQ#fYTAD>44s!yH+eeIZg#%CFyV20G! zH4x+hY6tKaq&z@t{CO{TibHNL zv4`v78%o_8=*>l^zxlv=6P^ zqJi?0Uw#LNlryASZ&=140zH~1D>G$7kAuxKy)#vmv_`f~;Uz3d5>pCPbJZyG?Ak-DzgCY~11tfwC?=#syhX i=6c4O + + + + + + + ConvertJSONToSQL - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      ConvertJSONToSQL

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/convertjsontosql.html.gz b/pt/tag/convertjsontosql.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..2ae617275ccde78751a70e7148cd48d9e737578d GIT binary patch literal 2915 zcmV-p3!L;HiwFP!000021I-$1bK5rZv;8X&=32?EN$TOmu`DTdoJZ5ivvzvzWHKIz zgeb%y!4RNjrpv5edj8j&Cuk-^Hr^eoAH;AJ zjI3B%<6U?|us_~K@MjnjiIF$Mi6C-hy*qzuKd{PE5e~`7x}szr^F&(6vSrlW>UsB`IOSDk@ctj?!-RjVT>i6FjAsR$%yy? zDKI6KjEqltbVU;R+u7?^=ltyL3uL1+8izQFhOU9wUEw+85s~yWEWo1@{r`BJGUqyp zC5t;7$G}52vUo5MRFVs|PKk2P zku^qZkYpB@;pb$c$XLi-Rk%-tm(aMz`y<8!geN?e2v*9FoY5!{pmvX?J`53n>*`#HlYqif9r)Yr)MvF^f_^3g z)a}z)SM^2JxK_@1m4t-4e`_fGEZ<^K&Tg05RWsS z4A9+vzh9l004RZ(ZhVadXVgb`JiOC zFU-*CRHZ9MOQ%a9JQzW%Qik~2l=16QTFCpS!p@dI4Qm)ZRNT+8sl; z#)@W#7Mx5mnqtKav?)WEj?s_NM8wB0Nt6yW~{Gt zcqDSIF^RS%i>k){dK+ntV_8{b2tC?W?j$aFNwI%Xo&{-dx%e^_st3q_B(acoL};<{ zs^05C=~Lyqb6oZ><$O8hqB!(b?lgH23dIk{9; z70^OTbx3lgw*LtULA1!{NYhe%XtN0Qz&0=I5)a*!H5wux)=X26+BKFEdF?Cwt)Gt= zj)k@ejv&e;u@e=X7NS0cKv6LlL7^uHICb(@Ys3^gydIh z2doX*{N|3Fi;%hab6U7+v2Jy<)!@M=3TJn%FIIi<-xg>}0hC{Jv87N?4c_as+bY;c z*r{wO({F%sTg8FAmR@fu&kKcfTLlU;s03RI^fH5te_I8Lh}=>f=hc(*+bT`W=TMku zP$0Gx>WxA?Q;4@#v`o%;w5?bg>9&gWErz<)Hd0-pAPH3dZKZ;i@Ju7#R?#HqY};yk zu5fN5kZE6wj`aW0B_>2|J=M{t{LX!1mGT?)gMQcV$oK0OZ*I%)vU~Z~UCXza_nXZ+ zNi#bnHU`U0r-ay?{wnbc> z{{gcR*C)@3I&Y{S_2u*+K2n?z^@auc(cih5y4k^6ozH;ESvuM1J6mvRs5LS9OwVl3 zBd|D09Cb5Ez;K#R8hsB|3zALDzR2flNuuO@#^v&-JGPC6=Gs+%1z=;}_88T-<{q|V z&`7^?ba=nlKk9eyb^C`8`s%7Si@a(?#yB9@@8!3vFz@G=-loLqS@)xGu`ec>0dhX- z17NfG7}>UAY00$W?U@EeC&g{;0?gdi8ph4hvpS~MJG=ZAxoWK|oS=&Ue?lYk^Upu% z{fFvFzIyM(shG9jw=M*cC!WXCNVfJ->)na{pmW&kJm}lK)`z_fcrwA>Kb&2PA34z|=2_x#M-7=!J_Ev8`0_-R?0B)sIN_43Q>%xlRk~zvp@DfexxTfBenzdvn|Bvh z`Y0M$RH_hVO+c*VY7mdIa~!;e$f{O*U}oGBJ=9IPwem{u=Y!U`r9gidIP-~P%2I7 zue4yMD0rnQ^&wMEdCeD03)p>R2_SSL0O9?LLvAjy`|IHwO5Gah%|&N{^I^AgW7(kp zQt#rr=otZnK(m@3JMWgmba{Q-7_N`9=YG3%Vy)bwf%4<$e}F^E8B$F;YLs#9d>w*4` N^?w92n5Wk&000sIs1N`E literal 0 HcmV?d00001 diff --git a/pt/tag/crash.html b/pt/tag/crash.html new file mode 100644 index 000000000..d987e1c02 --- /dev/null +++ b/pt/tag/crash.html @@ -0,0 +1,296 @@ + + + + + + + + Crash - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Crash

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/crash.html.gz b/pt/tag/crash.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..92614f9ec86191145b9ba0a648215135121d1aaf GIT binary patch literal 2889 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 literal 0 HcmV?d00001 diff --git a/pt/tag/discount.html b/pt/tag/discount.html new file mode 100644 index 000000000..e43eb96ed --- /dev/null +++ b/pt/tag/discount.html @@ -0,0 +1,286 @@ + + + + + + + + Discount - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Discount

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/discount.html.gz b/pt/tag/discount.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..c48af3c8420978ff41d6db4bc200f49c90abfed4 GIT binary patch literal 2816 zcmV+b3;*;ViwFP!000021I-$1bK5rZv;8X&_Ii?AlhnhBV_8z_Je!+5Yq!@SR#8CuAYP4~y@12G&0 z6DyY1bRXUj>`(U*{ER~)G4d8T5kyX`pD&)<53TA{ghMj1t|?i@JdqaicqB;#piAn@ z#l$Dq)FZZjI7Bp}l452H4>L09JG~mIg_N;PKBx40V*P6Wd}cr4VT>i6F;byR$%Oa; zDKI6Kj7*WqFhpPm!gw44G{TXOd@S({ z3nChe)Y(!BY?EUXLYlA&xH6|0x$bhgbc8|GN>x6#NfYhj)fL!=M?)NtTdnPCP~leI zI&l;fw9%N+=n5?oGT%yNPKYmD%$S2EP`C*}a%IMeh2xk}PkWcE=Dyc+31KkBBuOHy zOsjQUN`}rZ-o8f9fo6jbjV5Hqh*%H;;bj@H2(wI5PcPa|(2s--MCU|$i`!FDM2y6m;T7c>_p`(DY0M;xijot1qqZM-;OzCZEc+U zy>Cx9K_w(6SSkbN!;O$exgNhJNgc-ht^$Rn#NI-M_Xy4D4e?LEb8FD08G60Cbj4`p zbP0q9BWPX95Z{;*K0-EBrz;9BO&PQCHKq(heQu?@x92QiZKl=-f_r;=N|rg}OZ#So za4PvJy!;CP;a`lV+Uo%-x9E(eqype9hqlV^7sX_K_g#_Z=AGvi(y@`#ivwA zI?qZ%1$RG$#HSc_LmCyLot%IpA2dY&Cd|&MPi8o2Oz7|_O`dl)=pGGKAB3ZZUF)_5 zcb)gu??(8qZEl$J3`vuaNZ0YMPJD^5wa%cgQaOJFuNE7}DZV1xMq}QYm>DV>+E$F!DW2~(bS<@eRNX9O1C|c~;LE2j_zDkAa0rDS7ETkO~TCBXP4+c>BRQc|m zR{cvkUk+IohoQ=yCJ#cP`1Z7#4RpsmLeSlJJ4O3!_;H{Z#GQlF4OL5-Tgza?F*vOe zkT>p17SndUA66X3dnfa*z)jJT={P z1B)V0_Jx9n`H10IXjX6pZY7DGC~ve7^}*&vi7355PmZ)Jw^*fald2OXTwz04(IDUR z%SLj?L-c`{g=WN$%d!cY{Bamrdi;nca(IqBC?X}cdpZuHq#5(17>I40x-;uwe zTimLdzpRm2n%N<-F$g`M6LNcnRCRz`yaxz}1RJW_g>rYYkW>d3a$;T17>>YM#_F_E zB;E?&^P_cqvp*N^^}zMX9H&fbgXpUtgqgZSOEdJEpfmKu$kN;*KY)#AH7@c)!$JSJ z{$6c*am%J@+n#BCqos#)&gJG!f9*sl*Q-4oG|aehU#hlNw>aEr#~8YadlP%%tlDl6QiW8#VupmDsx-e6>JA`TS8Bn=MXIp(|2QCe@ zHYQ)_ncaB=7H5g0Zm|d$PV-5lzk}6+WE-=u^0`L(tT>->x%}y#ZKJWdqSH6VHui0g zQGLVeVLJwm40|WX4+g`NVgG)Ac>HjvuJy9Wt4Cyv1A_fQeiH}tettn}s)L?&KM5E6 zVwM>o=aW7xG>cD>Z5x(WOe@}AXi#)k-0YQL=3dV*ZjLF{k*3}hcM z@~ZDktbumtY2+!jpzcA-(X?VRz`&x~X8yu3ALO%39uG0`s4B-*UH{2%p{2jrgY4@KR%26b)S3!^tEH|8J}f*h8a>{@PHr>P&a_TAmstt;Lm%7 zBew*WDwRfYKm-y8c$Ue`iYP?XBWNyO*pL5xG#I>ocl4xR38|7Uj1XGV$mdH(1^FwS zL57*EzsiFGpi4hh%XANZFJX+ML+a920Udr-;2Np}hCD8*s-f_ SV)a0O*YQ7+lb|*GC;$K}TT;;g literal 0 HcmV?d00001 diff --git a/pt/tag/disper.html b/pt/tag/disper.html new file mode 100644 index 000000000..561fe8eac --- /dev/null +++ b/pt/tag/disper.html @@ -0,0 +1,286 @@ + + + + + + + + disper - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      disper

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/disper.html.gz b/pt/tag/disper.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..6e40365729ed338dd906362ae0f54a0f8f3166fa GIT binary patch literal 2815 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 R2l{)C{{fDe*}wNF008q5ct!vK literal 0 HcmV?d00001 diff --git a/pt/tag/django-admin.html b/pt/tag/django-admin.html new file mode 100644 index 000000000..13488a5c7 --- /dev/null +++ b/pt/tag/django-admin.html @@ -0,0 +1,296 @@ + + + + + + + + django-admin - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      django-admin

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/django-admin.html.gz b/pt/tag/django-admin.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..86290659a6b2f826c5330382f83d46df65ef806e GIT binary patch literal 2885 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 literal 0 HcmV?d00001 diff --git a/pt/tag/django.html b/pt/tag/django.html new file mode 100644 index 000000000..c10396b04 --- /dev/null +++ b/pt/tag/django.html @@ -0,0 +1,306 @@ + + + + + + + + django - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + + + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/django.html.gz b/pt/tag/django.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..75f4ec1ed8b6c50a91102e52ae25bb3ac6c6e0bc GIT binary patch literal 2945 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 + + + + + + + Docker - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/docker.html.gz b/pt/tag/docker.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..c43fab7b660b16f095b246dac9207c71cc98d6eb GIT binary patch literal 2932 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 ef=Xa5hW9>?BED*yn#I<&+9 literal 0 HcmV?d00001 diff --git a/pt/tag/dotnet-core.html b/pt/tag/dotnet-core.html new file mode 100644 index 000000000..34a0478d3 --- /dev/null +++ b/pt/tag/dotnet-core.html @@ -0,0 +1,316 @@ + + + + + + + + DotNet Core - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/dotnet-core.html.gz b/pt/tag/dotnet-core.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..9fb07bb6ee47b7fe79d284dfa03cf0a3f44ec4d7 GIT binary patch literal 3057 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 literal 0 HcmV?d00001 diff --git a/pt/tag/dotnet.html b/pt/tag/dotnet.html new file mode 100644 index 000000000..6d507fa2a --- /dev/null +++ b/pt/tag/dotnet.html @@ -0,0 +1,316 @@ + + + + + + + + DotNet - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/dotnet.html.gz b/pt/tag/dotnet.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..cb5b00d5dabb855a177b03afcd675280d7ba3c64 GIT binary patch literal 3054 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 + + + + + + + EF Core - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + + + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/ef-core.html.gz b/pt/tag/ef-core.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..57d085efab3e28f1cb3c831354da948c15b69482 GIT binary patch literal 2923 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 VcGV%fzR_Q?{uc?3+~L(K002!mnSuZS literal 0 HcmV?d00001 diff --git a/pt/tag/entity-framework.html b/pt/tag/entity-framework.html new file mode 100644 index 000000000..5ebaaf830 --- /dev/null +++ b/pt/tag/entity-framework.html @@ -0,0 +1,296 @@ + + + + + + + + Entity Framework - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/entity-framework.html.gz b/pt/tag/entity-framework.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..cc668e0f34a77c6d1f1ebbcddca1f8b6aa2a603d GIT binary patch literal 2916 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 + + + + + + + expressjs - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      expressjs

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/expressjs.html.gz b/pt/tag/expressjs.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..9e4b7d472421f779dc27d420fb18cd45937d4d0e GIT binary patch literal 2820 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 Wj$L&Xs|WgP$NvDkkbkfJC;$M?jd`*F literal 0 HcmV?d00001 diff --git a/pt/tag/external-display.html b/pt/tag/external-display.html new file mode 100644 index 000000000..b82739ddb --- /dev/null +++ b/pt/tag/external-display.html @@ -0,0 +1,286 @@ + + + + + + + + external display - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      external display

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/external-display.html.gz b/pt/tag/external-display.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..a5c608571f77779d6cc1a66e1570963db92fbf88 GIT binary patch literal 2822 zcmV+h3;FaPiwFP!000021I-$1bK5rZv;8Yj_Ii?AlhnhhV_8z_Jeu|mYFpF{T2X8krbs^ncSU|HUf#=#lCj|aQw~V7mqIfdiew`WXPubWA%d= zj)I95OKZ9hZwU6M`w0GwLn1Nq7B~?^POR4#Kil`M>Qsb7GO?~HS;jn(7V>x`Nd%xv z>dVE%C)d;?wthH7G@_DXW(yB9GU+?L8mWbpu}$8m^m=0bX}>?y=N|Ap&y{#^Vs6 z5srN1V~J;25Ybqq&X!VOn;e@E(u7sOm088eb(hPfBMhoms`9l>nrIiVuD~`t8sdQ5 zYHe483b*psiKC#PjmC^dS7?!t`Bo}(LVV$3#vCkx!c7R0D>F_k9LJ1$+Phpe_k*5G z2!ko6y;Yf3>$a2(on5?mj(!H34L&rQkQpOlK?sDIVa$~a5)#)F!d(s>_$h2sVZH(r zXMwW3aA9qFO*Fz9>2(T)_;b*za01Q)MsQ4p)&bCXFvlTf+2nT!>Lt!Lk!(m4!@nH+ z7QzC6wY9CrfKoo{}PBB-RYCD9^Z`9hOgveq}tU zjE9x+QDuA&eJmf;AEi9oC~AbPLRE)IU|?I2gw9LwPy6K%H>gNRbhb}Co@mD!p$L-L zX&WYJqJf*I#u1t^?p>YM=3?xt{4hc%&b|1iJ{RI7ps-XA{`Py#SuK~KAIJ#xhs{Ya z4zU-61`7$(&e7ohz2pAT;G_<<O~#IZ5Nx&ufFR6YSGejL=b4kcv{B83ZXwE@>Dvlsm)TRgmyB^6i*I z*4Dl4DpRAXR8x8WTEvN|Wau4*G_Msvp8p z!>)DPg1gT9>hDJQPi=0P^9)IokVx0@u1#1#~Q1r1_ud^fT->xLCBUo+pGt0e!FU_sM3{=mO&A6=dw1 z{&|0_Y6$We7Et19YA>p+Pp>QUlE>B37UAlo(h~eAlN!sZIKYq=k19ACZcH5=%Td4!<5?{cAb<}px~hhb5*z7_%~~&td)a& z*x;$@t{YesdD1TwJ_mB`g{Tj(Dd7qm z!ixs^-XA9vLnfRN#)v=5^du0GB;W}p!rJJnW#HwJrZWJvE7crtY<#4JXwrR@kFfw# zAJsJbMJ9vYP&4)+>MM27+LFd{j9X-@T!hTUAJT+4>inp*N`05nQV-4)PQznriI36$ zpFnd8p!|l59fkVY;JrA%tAf3Q7JWyV{sky^RUFt@rZ+pv^GxB~Re{1xyk|QK^gKI% z_3W++6cM?jIL>cRF7B!{F<-*&Y5@geN1#D*vuhy?TbuHR4?rO>)k5t+p2m=QaYF_O<9p{~KLmLe!p1o%zYH+$Yv4zf?cy zcm0lhg>G@HX1-V>voy0qVq*|`J}2b%3aRP}^$!9?2BAspZ zogKI|)Y_PQs%LiR5m=lhj=IevU^vYujlKq}1<5vMpXGCn^jUE}<8t}aH@1z&=BiHL z9NXBpJx29StB36vG&1a+9RD~No(%i<`orVpKVN2h?f3t#x6gccO(wr3z8i1jI_N2JtYvz`<`gBrAoy>AhX2A)FY(Ba**ypExvv zc1u2lJ$*vD0X{^cp~X)J-O8KNG3);LB=XmN@)6M2j=5)imhl;8NPXx5K^~xP0RMuN z2WW#o?-h>R5?HEK8pQz-NF3l z9MrWr4OA>uxmBLLw_)VRAHU?3H+=O{!X6?^0HHGh2yfOLa(jtA+zj7R>NY@c zFFGa8+x^-tSBw5Dy^HIjrvwbLASgev-LHn}>dLP*Tpwn?`rXQ5uX2kP%8!5j0~}H= zkm_&M_g(~gG*8x6%BLO%+gEyFz-lX%4qe`JHS#Z=qi)HhqdP;V`1EW7$*-fgE}gct zy%7y{)a_eKb}I#0!>|;F)yPbUFhO=(*l@ek%4TnNi_7Y&E + + + + + + + Files.readAllBytes - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Files.readAllBytes

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/filesreadallbytes.html.gz b/pt/tag/filesreadallbytes.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..6ddb2583d326bcd382753ac9e66cad4ecd83a393 GIT binary patch literal 2827 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 literal 0 HcmV?d00001 diff --git a/pt/tag/firebase.html b/pt/tag/firebase.html new file mode 100644 index 000000000..d4983ea9f --- /dev/null +++ b/pt/tag/firebase.html @@ -0,0 +1,286 @@ + + + + + + + + firebase - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      firebase

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/firebase.html.gz b/pt/tag/firebase.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..c286a614b6bed6496bd70edaaae47d76e0e5c8ad GIT binary patch literal 2816 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 SV)a0O*YQ94FNVGQC;$L2IcyUE literal 0 HcmV?d00001 diff --git a/pt/tag/firefoxos.html b/pt/tag/firefoxos.html new file mode 100644 index 000000000..5f0b49f0b --- /dev/null +++ b/pt/tag/firefoxos.html @@ -0,0 +1,296 @@ + + + + + + + + FirefoxOS - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      FirefoxOS

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/firefoxos.html.gz b/pt/tag/firefoxos.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..f6dcb5d2e0745928733418bd3135e9c10a9ab6ef GIT binary patch literal 2892 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 literal 0 HcmV?d00001 diff --git a/pt/tag/flutter.html b/pt/tag/flutter.html new file mode 100644 index 000000000..566b43905 --- /dev/null +++ b/pt/tag/flutter.html @@ -0,0 +1,286 @@ + + + + + + + + flutter - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      flutter

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/flutter.html.gz b/pt/tag/flutter.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..9bbe3d959efba4198261e474a48e1c0cd18050af GIT binary patch literal 2817 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 + + + + + + + GetChild-Item - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      GetChild-Item

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/getchild-item.html.gz b/pt/tag/getchild-item.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..deaa985b023069b2d61e1d7cce75974b243ede29 GIT binary patch literal 2880 zcmV-G3%~RqiwFP!000021I-$1bK5rZv;8Yj_Ii>VlhnhhV_8z`IFIHg&)Vs=lgW4> z5~2`;1Vez9l{WwV763_+6s1U+T*r1|fyC}&-@5=b{O-}K^UFV9KSnbdvhn^xPnf%oAxLk4KV306M3> zoQ-^PLp@^aheJdoDk)~R@Gv8zuG6WInn@YkO3kD|Ch%pb8eGZ(s;t9 z7KHIQ1ZadK zANg3~2^K`u7OAqO6xbxkI)pS~C2(a^F>u}aeC`N?s+Fo7ZJj2X#j7f?36F+2AX}~N zYEa>p-a2s<DurD9DQHzV0p|fDIHp4D0BHO?#UW*j(QgpZbG%qbvL;Ooe>wIo zgarU=Yg@Gig<#ooHjXe`Nb2cDn+f`nuz~25NN=`1B}K$YtQlTXo^XG0SUka$udK|hfJ>h|lC zU>su42n}Wurk$hSgZszbquxmsYR(hio+Jcc18?fXhIncKnI|~TA=Ha1h{qXE2I%{K zzh9l004RZ(ZhVUbXVgdEd!E+>V<*_BsTiQ6vLGd;Iui&|l3dX+s3~`Xz3U+1Y2@26 zhperQbHDS$={l%{!~{!az-+h{(kR#CHzcXTxIdPlu$0)Fsqh}4DZM5B>5py&x-dhh zQVJOm#boch08LZ9J`ap1RZ%@fG zWqfYm4iHWyKZTc{;XnL~(O7#uKxG!4u#}VloO$0?`5l9AB`7waIxcABYw?Yf=5H~q z3%2->3Q4Dnf>6%gFCpccGd4%_|HvlnDGorlaNT)@wQHUiLkZKpt({xe*on@xvmSM^ruZ>2MJy@ z2vc&ZJf?cney@MLQK$@bK7)>BgEaq$PQSozjf+{+>RCd_70~s%ewVB_jV>T=RzZfY zX`c6os)itsVF4wsqV~MX`t+tWFL_)pZ4oX{DlNf>GO4kgiUSO3@u-BO@g}L1JgTDF zRCUE_Y$jne1J&CMk~`5)Dkg1JPL@wPesZP>6m|}cB=xQp(JSb>qV~aQ-tHK>HC8k` zH0NZB(G)9YpiLRNbd3HTO+RZoIVW@hz&U)kFq`G~DZ~&FTM9Cit1y*YHwu_{!1O*RyjH{yE#C)m0UVXU| z0hyz1;png#fd**~$%RkN0JaFQdr}7wR`W{g=M|I#<@Y{EuNBgTLTcu#9;)VLU5ufd zvPSJ@!$Q{LTUOv9OtJ2g<@YX`DDZ_V3w1u4UXjic`(p?qlYYcU#Z3MYN9ezUP z-&LwN&(VcOysM%~&e^Wj_EO<&Bamrd^N#fY(IqBCZ6?)Wru@czVwLi1^?`oV@5s07 z7Pq(Mu3M5XZ$-YwW?yZqNxHB@Vq-AJbV|tfrYh?TH~2LW4hc3?wR2~VZXv18jO56= znlK!J8xPe%u}HinzUN1)_~vLtxHmo5CsUjBLX4 z=PyTWc3#`-9#`M1^9J0oo!hjVTipWc;goZ^{=B7f7?SUmPBA3y##m5vUM7?1_c0zY)rnWo(s`D98 zIZG!SeP;(Q4YejFpX!<2c?1?GiK8wM2^dcENuzJUYEH6=+2`3@ElHG|&$wLn^qp;^ zp}8H^m-ROGZI4lXx$R*)295MPC&xea`X~MF{civGL0{ddE+VfQkueSk_IueSD9roW z-L$D&de;3QToR^f|3re2i?{u(V`a@%B`MqO<%`wE#0$s)liMLaa`c^>!`0 z?5$es1}Eq$z#q}beEj`4diTD1;I7^~aVlo*cdaWyL}`G)GFPD zx6r^mn_S;IK=)9q@q*lil|G0D7L_VQSrZT|nHt2y#U&12;*cyA@~-oKm4iPQyQpPDs!tmd2h+^{%Ta0zvjaHdmlt`3A79!>lb~le=Ds4$}_LNqQnkQ z0_(5@sJ{XQP_Lm214^YS{beec$qQa-N`2obqrB#eMg{C4vIG!16M*n;#UVGB*u(Yk z4W(`k^yZ>d;Jn|jTr4)|ztp?9E_zD9ATxrpv*i79m@aQw8^iVC;+fwr9YZU(XrTP) z+3( + + + + + + + git - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      git

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/git.html.gz b/pt/tag/git.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..d487de172e02e336ce17ee6bc789ac8915b396ab GIT binary patch literal 2814 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 Q{SC+e0B2nB8}TRr0R4DM + + + + + + + Grepora - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Grepora

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/grepora.html.gz b/pt/tag/grepora.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..0749f8d2e9a37306fc4d4a77f94707e6dbb21887 GIT binary patch literal 2817 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 TMXVm^Z#w=5Z61kF`6vJYx?5N) literal 0 HcmV?d00001 diff --git a/pt/tag/hooks.html b/pt/tag/hooks.html new file mode 100644 index 000000000..250f84380 --- /dev/null +++ b/pt/tag/hooks.html @@ -0,0 +1,286 @@ + + + + + + + + hooks - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      hooks

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/hooks.html.gz b/pt/tag/hooks.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..0265a8dc0b08942364fd6ff782909938ddc029d8 GIT binary patch literal 2815 zcmVSR#846{@ru$>{ff$a1 ziIqrex({y%_NV&@e#Q}z7r&l8tN}1T?b4ITx*01)@XZ8~wC0NoKBNe)oOo$(l z0#j1S$TZ~qN+27Z(<2`b5@TBkxe=g69(4M=jCRN)t7 zrpQ>xUDvWtgqPB!!TV#z1B7QhlL%H?A{o*+5TI+1Wj+iM*nlveL;#I&>?0pbJi~&B z#v*mLlmgr2*o2U!tOBlVDMqflSS%c2P_5lF7gII(b&FzRXVa@E}TdM+glrkEsYjFoA% zZcE9~*~Qz}=sD1A@S)L!Trwg;LLjybW3CKIL|jh@cQJI}qp(SZ`3g+343y=C3v1JB zq7l|euTv<*pMzF~6L20df)gsV4uHm^IgTh>PJV(&Uf|^>k_~AR_{*_xAuIq`Tia?Z zCAVF0x?c`)gNh_K()NkRQ|(wI6hjg_ZNmgjG;nBgSzRC|HbmH7kZt8OpP6G-{_29SPYtCx91pPurs6T8@f^mo)5*maO zrk$g~!~4hmqrpiXYQaRGh{qXEN9dd3a9E$10Vsi) zesY5ZXVgdEc%Ih=W2e}snHZs?svs4mIx`4Tl3vm%Xef7vy{jPQS?t>hhperQbHDfP z=_aU@Bm_%kzFXEC%@e#hWjDM}2ejtd(5T72WA#aj&Pf-OE}LelxN zBvf$sLqvRvQ8%J-A==3aIPyV5^lzf&IrYg5r;Q06KBdX?wg%m!k!pf)+^}oiw&1Sw zzWUt=|Fz8xbDkk-5)$h=-qndO6}HwHG*v3+kD$D#S4}~b{7TIM;38~WJx>UQ0{ULx?~~1@(FMfKE6CV2P4oU()ez({ zETF{I)Lv9spI%qyB~PlQEymSJr6u@KCN-8*aeyH$9#wEO-Yk=n$8}U2%n~V-d=f?> zsNQCf+=+ftF=?xEvU<|-Q!q`Suybf6sduG_UP9LucMndBcE`|du%g+a1t)Wi=2$TU zZOYiCQ}oYxCX&3867ZA~VQuu!GTQR+(qRuhN;RfRR{%QN1@&+#B+ssXGL4ekjJ}GRu~BL~IN~&*y~PULjQ-;1=%z!V$rSs&=8=oh&5PsfCU; z7kXxQ9)ZPK>ZmI$0*2Fk()jOSwIJEX?5ljPkv=QVXIw6Sx@X&HZ0_gub+L_o+hbH; zuX@-{KqJH6$?=21@MPG(-ya@79I89LW$e`>GQk1C{vf}GgLyx{9W~WK&$^$4i+wR$ z8X)JBJ}ESdPmygKmR3wF-d<=>bXHvJm0;#l&oFMzDAjqU-W286jdg2X;}l&6_%oWA zk3arEA3oNPeARm=$wb)w(76;uo_QY6V%a%FouAL_hrQ!L@8QrMbUq$z!ILTWuHJ#X z>YEa4pxt>EdrB>+d(d(&t(Xiju;_CyQ@1^iml7ze&lpip-Hs8hbFh9y9$-hQ0dPAF zMRZz$jSVMArWt7k0Q16hw__~aL6ZtsP{fUKlax!Y4tyS=PUSYXgGT1r62(-QK>>yH36}bt3ft+OA9^3xX$U8Q@QCFb?h}W`&~C}cu%}N+ zH^7HTG_?5jpj&xUI%eG;pT+*VPd)+q+A;Tx&oVy445@E-K#&Kh8^B+X@&Ik{=e@#_ zTLMd!N~1U+0*M1W%VcIn6e8*oG#4-I$NxSW3|_xGdeX0iR7n>`2rX#r^M#{={1sk8 zhMBCt%7X%+OFvc1bPs+nVT_|g>e5yL9e!2d8ma?^JVY^Bpr_!o-2>3(Y7Xk!oCYeE zs@y71-di!ezaG`qFIq7F`%j|0hFFD<^@BcHzLC}l6`5CGl3|CZfpu5`)L+5@sCTgU z14@-C{dFFgDGFX?N`2!cr@Y~-E+yOB3`O@!J4ttebv`~Kf@)vMO86wr+!d?Lp z=+Qh`TPdG<9Bg0dtpTg8R62Bdxz)(ObdI_ulaB5ToqXE@xewB+-nw+!()LC))KOP% zE!nLUWDUbo7*-=QA;JXNZDGUhPAi+e*)49UtGe_U7i3MDn;C19@AlfrnW%W|*j3lC RdZ54M_#d;LwUhNI003|WalQZm literal 0 HcmV?d00001 diff --git a/pt/tag/html.html b/pt/tag/html.html new file mode 100644 index 000000000..92db2b656 --- /dev/null +++ b/pt/tag/html.html @@ -0,0 +1,296 @@ + + + + + + + + Html - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + + +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/html.html.gz b/pt/tag/html.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..6bf555cefcc55ad2da37f82cdaf0bec947ee4dbc GIT binary patch literal 2891 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 literal 0 HcmV?d00001 diff --git a/pt/tag/icmp-pinger-more-than-75.html b/pt/tag/icmp-pinger-more-than-75.html new file mode 100644 index 000000000..757075803 --- /dev/null +++ b/pt/tag/icmp-pinger-more-than-75.html @@ -0,0 +1,296 @@ + + + + + + + + icmp pinger more than 75 - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      icmp pinger more than 75

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/icmp-pinger-more-than-75.html.gz b/pt/tag/icmp-pinger-more-than-75.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..bf4352f971b066642097a1566c4833b02cb5954b GIT binary patch literal 2912 zcmV-m3!n5KiwFP!000021I-$1bK5rZv;8Yj_Ii?AlhnhmV_8z_IFIHgZk*cfwU^0w zKoX)5g9Jl>mXtRC{T2Wzkrd@xxm?Fd8-c{`V&A&}IQ;7A>$9uhFP@>PjM#X0sD2Q` zaX7LPX^nT`4Z*>97r~!lL?lN36sLm7k@d^fbNi81o{DiqM%FDQvxKM8LOzcri2-y* z134W9|ajpGae;aQjd`mT}nnI z2uXn{sbpkK{U|{RjYE>6h^GX}DUQ+6A+pgWO(Gn}L)Sp=uJIo6m`M5&7UFSfoqzb8 zGH0G9k|rLPj?W`E`|r1SCnS}Nk;TJ-ppsmx zbxM?Tj;t}-fFu`58Gc4QMaDwzy5a*O{FEj&-k&fYBJA-@B3Nkw+5puEP`}Tz0EP(6 zLKsgXfJQhDP=F=&uppwgNR=(6z$Q61A!I2lfh+Thf$Pp@Ge;OytyJZ6n>5iZUR8lj zcr?Nxx!2mR1{H4Ut&_xIK^qMjjc?F2C6ha;Ob7{tiy3pU1Pb#ABv)n}SvW};^|g1o zYVJEdml6h3Op-Ll%CuUyOUcmb)$4Qg9B9_~&}c#~7!gxKAlwXNuAGvHxV{kXtna{2 zVUrT`C75IpD$5HO)~2^aBdn2Lr%;GL0j&xrC$XLc^(qY3HE#=_|lPM1P>FoM>ljPTr)^Z~M=I^9rkY08+5Z!u*U>UAUCogHTiYcsVz z5Zu|>QL;=JpV{*P!kOeJ@bVM<5C0`-ti2wfa*KK_BP9T5*0)uD$KYEjN(`uu3mOMn zeB-3WTMX-hE#7BB(#c{;sNn90hy)a)c0}VswBuuNhDJQPfc!^^9)IokXYC8woZJhu(i&h&r&&m0OdWssSBd? zr%hppDPA-PQ*x>zrh1cpuYYu>P&w#q3LVQG()=wt{R?($Tuhr*&l5tSfUe&Sx@5Cy zbOCYm3Nmy}AH6$NH3az#3n+0FwHH-3ptq%Y$&+$vi*b2UX$gLmNsZ-H9AHR`2PGVh z=VemzxQc3nSt5m!Pr_&ls<#;=ccPzEOxmiPte$lI6igE+>>L_N>fb1$*U)vv?Y)zt z-7$1)tY~&a=sjLSseN*cbYs1h2oo&ayHN%^8i72-)ua2?`#Ha98!a zNsdyhz5a477;>MxhtGe+o=4}l65KX|L;KEsB49geD;3yE1@_UQqYf&p=C#$I|7b$! z<=Oc~p}{4giY~utX1^ZX=4D;lp_{QrBjm%HS?ZCy!Ac^pe}&KW^AW>|(AK~)M4BXa zsshwPG=MNDs^&5<^yENCcY~u=-LxE6DOcE#X=s=qgW!~6C<-27j0E07PXZB1LY`70 ztc_8-%t5&W=wt|;Te;jBcR$cV)ajn(V=Tbi4=S4dEUyJ`t*1dqfTfnex+A0C--&Y( z7B2pnrNnq@v2Jz4)!@LV3TJntFIIi{hmv>0f~I zP{n~gb~fKqo>vOzp$Zf�R#eKM!!daKP@O=F)L-HILA;J{&Rm3h z+j9dl!5Nd2IE89jxbM30X0UAX~neS?S%$Kr^RjU63pDy8ph4hvpS~MySn@qxoWLjoTBRxe?TMi^XH%F?Yrtp zzIyK@nV7cUwyp({r@qg#Shn_2>z7meQRk@FdDORit#^BO;K>yGHy0qU`X*)#v^~jU zU#SJP_ZqGn6q6wa76a~Q>JrcKQv!X#Ge*=?yJbXc?XBN@gxFDP0Nhqh5v@jGW5W@W zX+|0Wz`QWsZW#-=(5S=}bRovLP_86bCsvP9t8~fULId+`a(!zLeTQ0&H}5X2^jt+OZ#(bSX$U8Q@QCG4JRlB@p8EO$_TC>$7~|-Wy0le5ho2OOW1v62_SST0O9SLL*89t_cy~gl)4SjcNd){&b!^pjb(%WOTCNh zq89`VG9@TKa^5Y6>FWBnF+JIG7S~~Rd&a#$&=>)ZxOgg$Vbn<-{ITIz19lGjvT@Up4tp5cb KTFL3(DgXdj|FQW1 literal 0 HcmV?d00001 diff --git a/pt/tag/icmp-pinger.html b/pt/tag/icmp-pinger.html new file mode 100644 index 000000000..46e2ae0b1 --- /dev/null +++ b/pt/tag/icmp-pinger.html @@ -0,0 +1,296 @@ + + + + + + + + icmp pinger - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      icmp pinger

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/icmp-pinger.html.gz b/pt/tag/icmp-pinger.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..9041f0e83576ced464be0a38ce2c2c34f5aaac89 GIT binary patch literal 2909 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 H#VP;*i5;x6 literal 0 HcmV?d00001 diff --git a/pt/tag/imagemin-pngquant.html b/pt/tag/imagemin-pngquant.html new file mode 100644 index 000000000..2abeee7a0 --- /dev/null +++ b/pt/tag/imagemin-pngquant.html @@ -0,0 +1,286 @@ + + + + + + + + imagemin-pngquant - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      imagemin-pngquant

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/imagemin-pngquant.html.gz b/pt/tag/imagemin-pngquant.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..2cd6061bdd4e23aad3ec40d8af881bfaf651defd GIT binary patch literal 2825 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 bBWI%Gv13 + + + + + + + imagemin - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      imagemin

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/imagemin.html.gz b/pt/tag/imagemin.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..45f4a07220451a8ee1b8b35bcc4af12257f86998 GIT binary patch literal 2816 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 literal 0 HcmV?d00001 diff --git a/pt/tag/java.html b/pt/tag/java.html new file mode 100644 index 000000000..43646182e --- /dev/null +++ b/pt/tag/java.html @@ -0,0 +1,296 @@ + + + + + + + + Java - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/java.html.gz b/pt/tag/java.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..3c773cbb6f5e1a39d030c65808a3e249309b942d GIT binary patch literal 2931 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 + + + + + + + java.net.SocketException - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/javanetsocketexception.html.gz b/pt/tag/javanetsocketexception.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..fa20e58325bbbf136e60a50840f57d1e1d6853e0 GIT binary patch literal 2933 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 flYF<=M#e(>MQb?yHF5zy6VZ7To(TOpT{ literal 0 HcmV?d00001 diff --git a/pt/tag/linux.html b/pt/tag/linux.html new file mode 100644 index 000000000..d34438ebf --- /dev/null +++ b/pt/tag/linux.html @@ -0,0 +1,286 @@ + + + + + + + + Linux - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Linux

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/linux.html.gz b/pt/tag/linux.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..7f8e827bfa4084a71d2ed57f3bb5d69a71566ebb GIT binary patch literal 2814 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 Q^tT-U1KU! + + + + + + + Low memory - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Low memory

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/low-memory.html.gz b/pt/tag/low-memory.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..3c055beea40c5ca7fc4ddcce43b178da241cc3ba GIT binary patch literal 2894 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 literal 0 HcmV?d00001 diff --git a/pt/tag/microservices.html b/pt/tag/microservices.html new file mode 100644 index 000000000..aa0ba0bae --- /dev/null +++ b/pt/tag/microservices.html @@ -0,0 +1,286 @@ + + + + + + + + microservices - Sipmann + + + + + + + + + + + + + + + + + + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      microservices

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/microservices.html.gz b/pt/tag/microservices.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..4677786b292858658f1d8d980f45384774ba494d GIT binary patch literal 2820 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 + + + + + + + Microsoft - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Microsoft

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/microsoft.html.gz b/pt/tag/microsoft.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..68b250866687964840273f145215e537f3d239f1 GIT binary patch literal 2879 zcmV-F3&8XriwFP!000021I-$1bK5rZv;8Yj_Ii?AlhnhhV_8z`Jeu|mf1G{{T2X8krbs$nO?_sVm`3D*!L~~jz4?$>gn}wub-oZ4B7N>tS*S* zD41BWw5EsfhG2hsh~Q@&5{Z$wz=xW}RBPuCow(u|`lfKidky=O@+vGz^?pzF=x~kMkViz)-+?lZDun;#amt+gB$hOuap`zG zbkpy@es*#C+r^vHtatOn-LLW_?)~yc>8L_APIycbnN2Jnj0BbBM$J>9oO5JN(FP=$ z#Z~wvnJF?Ba@RHO6X7K^Zt(tu@c`i&PbGqxG9(u?3IyoeW2q0f2<$)@k3)b)IP#H? zC7xkHL}QXVTS|d#a%@6K6IKCN_7o%6T`rf7FsNFo%E>lqqFubY0^9Ithy$|I+^z-{ zZsn~LM?pawjTwz@(IO%9tyJcO_`=1EIamUP`w%2oW}H|!jv4i|ce!fpD?OGF2187e zB*MzHTDPTS=;Hd-CHf9%Hu%tJLS~GJ1tAb$hA~$zNJv~y2zNPj;8NJ6!h8iL&H`n5 z;lkYXj%b86((4oo@#mmb;RKuqjNq6GtplL(%^Zi6Ws{#EnwL1+M6w}G41YQHErbOC zYinDL358(!bT*DK%Ov&mr0oR#NZ3GhPNcWkosuGAB-RYCD9^Z`9hXmwe&v2pxgS>U zPb&A1&>!W4`ccZWjiN@#DpYlh1O~PRN$9);|9Dv5;szB-?xpP$k0;u(Mks@&u_+wK2604om2&>DAk!kkdowvhCxHQGwj_42~Q*6jyYs) zZJbBFFU~hXB_t+TDg)-X8zGHyJ$^@$I*j{e1qw@vy@d+z5t`F`;-7!%)}Tu>^m=va zio2E5B@iBrpmixjd~a&_2-#4bZYj7lWz5ERm@*6nx|Qz1fwO?QnVKI69vmDfS>}u{ z?fVhJspRMI@+16*e=(YBuLr2yqBE9~3V^d5+A6anj-~hIzpj z?^7Y^JSzzm+%6aiH^P5xbHkixNScI1x{h~s;!A|Bbq0-<%K0NG@5yab5T!qD3Oh(})*?*B zsfw5y%!h;F=~kg~(B%R;mMzl!BRc&Hb{kwQ+GfuaLZN`Z*Z2EmvuShzaq|i?c1`1a zI94?Tc?=6EaW%CURo16>m2t`AYH5pbbx>&uF3P0Faw-lmq{Wj8j>em%Qu3&dYJ*uq zg^~}#-2zl^Gf3`4KdG3sRXJHb>G&y_CQ#TpG?LW2RYY%~>x#NZ=S90?=r&l z^4&YH`j>LP9I`A9LzO#C9)v>i#d$Rw=#F`Wpu6vOiuT#?<3KTpJ4fdms+KahmcfW) za9SfEZ`_qErtQ!%QE<5`Km8M3#hTKr2qk=JP3v*KHWjRP&yeU3^jdezU>mXyycL`3 zPN%-j9F>M@hU;Q59nV%vR|o}A7rd zvK^c}EJU<%0E`L=EZ;@sK2(7s zBKH)>`SJPnLzO1xOIR~5pg`;?)N6%!r4S#iXqjB_XkW23(nA&LQw;T>Z3MYN?R-Mz z-&d+PFVU4oe5j&H&e^`z_FCcWB9Lici;ndF(IqBCtt8b>ru>`x#5(2I>VkgK@5tZR zE$(j1eb*#AtVKS>XrFAXS(@1)u`zHxpA)jXt*Q#cEshO@LxK%e?cKSjTS%%MBRR2d zW(-H*$78ikED~>p@A=U>zS$TN?%lxk$sDIlYG2W3ZU{4Vc$sGClAsIFsg|X=H}N&B z_^TnC@750br}g)0w*j}T=e8~9*4KdgcFwunyxUUSip%wC4+jl1Zrl)1tG*p}m6~Zs zE~x~jv{EmxHdw`+h(%m&(gCv(*W1I1+8b!@$K~{F@gcU;7kXrW9)ZPK;;7?80*2Fk(&+DCwIJEX?8|(tkt8b4XIw6S`pmY` z*qn{(qk0?rw#TSG+V-#=gGPqEv(v8!!?R)kQGa;)c&N@(v&gGQWQ+rX{Xu>N3gdo$ zGHnW%9(CUf7yDwC86fAq-la8@PmygKmR3wF-d<=>bWt3smSE;U)i7@Mht*!PUa#dx zy>)Bd;RM|T_yd}l%b$Oux9{rP?drV~r()54+qn@$UU(i)BiT7dou4o4$Gy`*@A1$c zblx3p!Go0T-M$8S)t4%3pxt>Ic}gv)d(?6!pqLCWu;_CyRVQtZmk_A<&lyoq-Hs8h zbF_Xu5nxBD0dPAFMRZz$jSVMACMjtJ0Q16dw__~aL6Zts&|eti#tD~P?L~cqI+c^~ z4jP$flj}Q2=quD|Jsx*qruU+SMWqT+)da*!t_JZWyT-wfI3z2DyzRYPry-me!XuJD za-TR*dPyRmkU0caH^9e8G_?5fs9SkcI%eG;pGW?>Pd)|u+A$A|&oVy445=?`AjkvM z4d5?Gd4x9j^FiUrErF#b)qBfL7sSeXDo%@1-?DMdsB9l-S`( zU>#Qg^#@P@^%|C?K&djMKc#|^qTp4A)YnEi zegTJ+3#3|aSjHd%J(?$LGvz~1g6%WCGGMitN{22F7907O&QZ5y($Srvldq^C_d#0K ztEx_0+TMtUI_kKyCA*b^tYKIR!)jzEM3^A^O>DT`Yi6@-+~MnhsxCdo1zA((X2#m& d+g%$u6BUmgyXpvB-{`MQ{|9`t1yFS=001#@i3R`w literal 0 HcmV?d00001 diff --git a/pt/tag/monitor-website.html b/pt/tag/monitor-website.html new file mode 100644 index 000000000..c1de8af12 --- /dev/null +++ b/pt/tag/monitor-website.html @@ -0,0 +1,296 @@ + + + + + + + + Monitor Website - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/monitor-website.html.gz b/pt/tag/monitor-website.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..53a4e918028d2bc2e2b5197d5db6d692c9582474 GIT binary patch literal 2912 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 K!@;iqDgXc|ak^sw literal 0 HcmV?d00001 diff --git a/pt/tag/mysql-dual-password.html b/pt/tag/mysql-dual-password.html new file mode 100644 index 000000000..eff2bac1b --- /dev/null +++ b/pt/tag/mysql-dual-password.html @@ -0,0 +1,296 @@ + + + + + + + + MySQL Dual Password - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/mysql-dual-password.html.gz b/pt/tag/mysql-dual-password.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..041136699008d3435ff0264132f58a13d62c6aec GIT binary patch literal 2935 zcmV--3yAa|iwFP!000021I-%ka@#iYxBV0-d#&WwB=zCcu`DTdKAQF>Y24cFwUfzs zAQB=Gg9Jl>mf1EBb8|oLLHc6107!|XDAmg3I!@XMBz713y$gWjPoBPda{24|GZe~* zP4~y@2QeH66DyI{bRXUj>`(U*{250?V&sK56+}*~pDw?#A6nI^7)NAc-B7Yfcq%RA z@mP`=Ko``P;lw95)FZZjI7Bq2l452H4>L09JG~mIP|Cz6?=pHbv3{|CI z7^%>uWJ3Ial$erAMy4vSQ@Ai^akb230Fnx!Wd9 zw2N0)U>hEda6s;~wyQyfTY2jwaZu7mV@Bg^6sBapmCBqDU$~et2TP!E8-e7?j1vnd z38S9&E?3QcspnF{V2VkS##otF>vky_I=g)J5`6RqA#+AVNC-rlVa$~wiHPe7 z;Vy;_{FFASFkgX5@<3T$xUe?8AsS(g^g4x7{5fbi}pxn&XJFeDWj2 z^#bRcNH(NN;9rh?3t<7k+S*oQK_OVNoQ-45a!EbCXgfha7B&!_6X}I_r=*A&i8aG3 z$}{fghs&q1Ul|W7<6&idR2e@&zb_xuAEi9oC~AbPQdNgYU|?I2l+Ksn@AsEO+@K=K zt+ajO@l-q32*r@ZPTMd+6AfISiiBZUea5(VeOjAKu&?sN2%R_&lH2-Rgwue+Qa$+F z?=@$&T!Q{aMyNk*PJ(fW9TFOZ5~iJ_!NUi~{iDH29ZDr^dzKP>4ZNuz8{(-2WRc>e zgitT)ARcEt9idN$!(n}52A~9H`pGR4oKYWr>UmxpjGbbiW@3bns)AIM>dYWWNqR-2 zprPCu_O64JXR&W59J01H&V$}(r<!h;dCE@gyoO*J1O8>-Va1(&9b+4u%ihM`oq(%sv0 zLRg!r^?~5t-ky?W&iKN<9U+`aehM$&!~gJKf~MN*0jjX*jAf((;4Fr=%I_F_D@BO` z)p0>%UyE;?w0w(UU9iR5Oh`J zb;aF-)3V($bQ`Q_c4*1T9HTi_%s`tmcIgy-9?wK_`jW)i*fsbq=(y}-tgRAR({Fi1 z#x8Cs18>Lriw=*(t~Dj`u4GZ&*nizdTGK?<78yg2c2hWs3tm$0UzBG-+FLEYN`>kH z@*hbpq#Y4jtfHz922lD``R<)o{YyDt0l6#=LzO#C9)v>i*=aQ!=#F`Wpu6vO%J$jt z<3KS;ItQm4s+KahmcfW)a9SgvXxx=7rtQ!%QF6H|Km8+J#hTKr2&H^sP3v*KwiN7p zPmt&j^saZyWE-*$ycL^jq*LE!j+TaMhHE&Oj%RI~SO^MG986cdVyVVj#lGuO8LL3S zLmBC+bhn96>9W^fuEjy&Zg+6^C>QUT?Srs@WQ4WnS?sBN5A|B+jyjgG+SgQnE>rG7 z-Q&P$sfJ|D95fV8$p^Kv?>G5lb2oD2E8^P1&FS{qsM(U7%*9o0m=b z$8N@2%~A{-hH8fK2D^!(7?ut=EJh3`LfZ$&5O$K-sftz$Q6FNWETPLN(UT(`>MdSd z_t|QYrCeb{+Mz*lCW2Fnp+d|EW5l23dJ>3867ZA~VQmcIWkM=kLT5&3zm48>Mpf$YEi1$@A$vNA#+FmN0y9i|3*Rmu1e{_i{QF~E!7Aik-pIE1Su71#u z`W^Xr-QwMC`Qdw+kG_Zb5MzI^k!M+MN5sZp$N8L)yW6;`XxtJIKsX}UP}NaUM2Ll? zI;)Zs>uSbu4E{e>2h<|-y*lT>E&IT2+rag`qaMyVmz&RdYKMS@UhUzaVaAO|5o))1 zhx4pvx{?bjfhn!jmlqqXV(#K%u8s$R*_i8t=~SIXG*1ExdbW6%;gqO1EGSL}FU{25 z&fS`P22_UGY^(3=z@?$q#^iH7vpbK#;w*L4#U%m5X+CNEF<320wlVvnm}?}7it`zl zE1o{FZ8SEwvic(d8~e7$sJ>M9u$_QLhP{*HuLi@DVgEsYc>HjvZgTV3t4Cyl1A_fQ zarp}KesL#m3Z9;I-wGG|VwM{q=dC^;Hj7V@Z5x(WOe@}=YfyAnUgj>r%vG*o+?-6S zQ*6D@D=wMq*1Ewdx(e_+G%-Ja{DEG-sUP&K_fC?Du=~1mC5SxpJf6j}bBH=Wo!Jk2 z$AjL(p*`rlIoN_HQ|w)zgS_f%nKjUESus%epyf6~F&SWB(dS;K?)V%pCD186V?;f5 zJ4Uq5!TQBWfE}dN)@8235bjB#{GUD_(3!}khYLv_HAhbSfs z^b~xydjQ&8%|Tt8(?G>im0RV>dn< z?t`?dcVnHlw7n4xb<{;`OLkidvW8(P46Biu5MhGswy@!Lr + + + + + + + MySQL Replication - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      + +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/mysql-replication.html.gz b/pt/tag/mysql-replication.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..56009bcd068ad0d62d3174390e7ff4be4d12a133 GIT binary patch literal 2915 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 N{tqg5IO_K*006intD*n^ literal 0 HcmV?d00001 diff --git a/pt/tag/mysql-restart.html b/pt/tag/mysql-restart.html new file mode 100644 index 000000000..30865cdbf --- /dev/null +++ b/pt/tag/mysql-restart.html @@ -0,0 +1,296 @@ + + + + + + + + MySQL Restart - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      MySQL Restart

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/mysql-restart.html.gz b/pt/tag/mysql-restart.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..60686c734311e479d56c86b65a5c780eda2bc840 GIT binary patch literal 2897 zcmV-X3$FAZiwFP!000021I-$1bK5rZv;8Yj_FBoUN$TO$u`H=|9!+}_H)-wm+R0=* z5D8I;L4qMb%WRwfehYx4NQzRWT(4t0u|Q&XvF}{~8h`Ta)zj9P)@r`a4kPQHA)wJWiQ&pTv^J zGcFyEhi>}aSI;g^f4lhcH0#}bfA_0AiF?2NsPt5!8Yes^iOePz4@QDYa--I%P|i8B zrf36_%;GBilFSqt3%Tps_KENk8aH@#`%=#( zguxV(B#E#xt=4TR8M?TBb&0+OnhicQnvfYIVnGPRm|@J73lb976T)2%9r!40QenOV z6K8?4yl`P{dPg+E8tHWkh4^#Os&E3%14eL6h1LPk_`qA$F%oNrSCnVm&yLHdMZYp0 zRK~-~_@pv^g#IWW)Q?i0Z4@;^R-vk6BrvcoNJ8f&_=m%Ch#OQSxtF$2Jf3LB8lec1 z*m)Z!Xrh7ZQxP)^tIrtsZqI9TG4@q{7@;%gQG8#Y3vm)qSgHrV{a$lc%O&XVWQ6*| z<|G)0*b72~g@kG6WbpXWY5!z!R)<>h#J6V&!MDJh`miCMT0oWwjtdC&q7LG5#*-2H zbT}N=CuRUjV5T46Bf%N<(Wjp0wZYg4_Gv0c=%gx0MXAmVf|MjTGz=Qbonh}bNO&6g zcFZAbYvVlXeRjSHDj_k!QW-EGZiF<-_4pl0>M-sX6(}qv_7*C-bQ_0WaYMQ1D}6#!>Bv{in`;9Cib4XBO_8u?m$ zLpW;KwQgH**Lh$4ZiN5P=7u@XkTeO2bRF;N#Fq$L>kOJJmGehX-jmy=AWDDQ6n2o{ ztVNiLQx!2am=6cT)2%|~pvwhxEL)`cM|AoZ>^8Vqw5^^eghBy*ukZKCX4B{b;^q}( z?3(8JaI9(w@)#CS;%aIys;p1%D)W-Z)zTK>>ZH;Vd?=F|%c(fPkQPrWI2v!3O39-- zstsld6-qt{qXnqmW{}*8eo`@Mt8%h>((zL;O`x!IXe6n3tBBq}*A;b-&Wm=(&~31y z*`Wm|bByL#F#~PN*rikSc{CI8`6Y?cv1{;K&~eenSX(8srr+_9j9uJN2HuYK7abmn zTx&|AeaWJ_vH!Y_w5GAFEi#54?Jjo`7rdm{zbMaww6|J(l?v4Z^4&YH`j>LP9I`A9LzO#C9)v>i*?Bb^=#F`Wpu6vOiuT#?<3KTpJ4fdms+Kah zmcfW)a9SfEZ`_qErtQ!%QE<5`Km8M3#hTKr2qk=JP3v*KwiN7m&yeU3^nQ2CWE-*$ zycL^jq*LE!j!Hu{!*wy3j%W4lD})263??f6P%5xit9M-_WfdrRC}La{?Kb8s{q_3G zwFt-^Z3jn(O*fT10bo1K#CrzKkCs?~VdVmPrzKRe1%dsPI+C#3*H%B5h7c4#jtUwG z#zv2@8hWj0T`5}a0yJaVyll!lc2m}BhJ4sCOfz6N*h%DNuW+?tK4Lf)+8#K90F%T{ zR9sq!`r!RVu`J_3PmXj@xAJFDT8aD@#Ch6efR2Tmx4S}+4;5r3BHNgyIg0Jb8+ z+8C^5>d9R|=Rj!Ks#VT-`H2>yN%v_!#sd8Pq^8-A@>}rNX7+=;SLp<-Es1=0H_k=K zT>N{Q5aX-Gy7hfliwj>UoWqU2SogtyTA(=vP=3$Fo>sK?5s`a}lSyn<^R5S`RF~%#~AmcjXFy+J0vy+yUpi>>~7PlVsT3V z0O62eLsdsX9uXFj>J&;&teY9b5%~L99X*T0Tj6_tw2p5MTZDTzaD6hzDU;f#^gSNJ zOkIek8M-9s0zEadG|xM}>c#if(9TbQ2mRCfdv$_=TlRh1wtee+MLnEzE;pax)Qg#e3+c9Wl*gHG@YA`$-_8;|!r;mr~ zjy8+DdPK%JAlM(|*Qzk@=eOOa!0B1{op7-)W|;wU-szKHv-lL*wqa?-wBqfB21OUe zHEjuIE@=(p=FC~0PwRbMetlfG)*VjJO@QB{iTU{RPxR(({Rm&Zcj8nmx^Fr+g2)Tc z<7p&2$Efr3h5fj9I_Nzf+Jny9qb+zc!QSm_kXL;JW(~AEPa{vM1$B>F?im!50R|R* z?xpJX&hZigoxyWP)Kj-(MC%-_UwH)BQEC9(PD2r$R$ybp36e=lS^>bkFx~AK3wO|@ z!WHx(#<+39C0A!wU!zXtcD;i}=Go->&Jp?&by~07U0CUzXkk&QLR2*Yv68DnJjt$c z@BC?vKwSf88ga z0)6e62gYX^pJ9g7w{;-M1Jn)RFGzWWHu&>F;m9q4rAnny91wxT0iIWI zFYG7(IT;KtU!OefS3;_!3nPS<6dH}Cqk{Y;&LG1~)?ej80nnwNs%5%If0QuB(IItd ztAGwaC~ytc0Ye_6h%C`F@Y(JWXmd3Ob!|=q6-!lal_wvp7(QH&>gpF~nE&NFQC=&p z!pHhX-xSm4d8cSPH{xWF|zIAp0$BxZP`I vv%TEm8wXWgdW;LQrp(QZwaK@;HgYB^9y@l`wYnbYZ?FCr+!IJ`%_;x@?rf3~ literal 0 HcmV?d00001 diff --git a/pt/tag/mysql.html b/pt/tag/mysql.html new file mode 100644 index 000000000..1dadbd90a --- /dev/null +++ b/pt/tag/mysql.html @@ -0,0 +1,316 @@ + + + + + + + + MySQL - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/mysql.html.gz b/pt/tag/mysql.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..30a706a947ffcf5b44b84b1f8790f841715e347d GIT binary patch literal 3019 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 + + + + + + + .net - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      .net

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/net.html.gz b/pt/tag/net.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..1e44a739b98e6faf489863f98da0432c74f18083 GIT binary patch literal 2888 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 literal 0 HcmV?d00001 diff --git a/pt/tag/noclassdeffound.html b/pt/tag/noclassdeffound.html new file mode 100644 index 000000000..f4e03b1fe --- /dev/null +++ b/pt/tag/noclassdeffound.html @@ -0,0 +1,286 @@ + + + + + + + + NoClassDefFound - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      NoClassDefFound

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/noclassdeffound.html.gz b/pt/tag/noclassdeffound.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..57903cffb73df2c4591977bd787894d004f188ca GIT binary patch literal 2824 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 + + + + + + + node js - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      node js

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/node-js.html.gz b/pt/tag/node-js.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..4e935efea716376ea3afcfbd7a09e3df9c7bd9ac GIT binary patch literal 2819 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 + + + + + + + nodejs - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      nodejs

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/nodejs.html.gz b/pt/tag/nodejs.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..91c0a121870a9ca5f9324558635e21f2eb30fc84 GIT binary patch literal 2817 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 + + + + + + + Out of memory - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Out of memory

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/out-of-memory.html.gz b/pt/tag/out-of-memory.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..20db9ed7022dad87e98560154e9a78f4bcf3486b GIT binary patch literal 2890 zcmV-Q3$^qgiwFP!000021I-$1bK5rZv;8Yj_FBoUN$TO$u`H=|9!-0bG)e9D+RJ1- zAPG^3L4qMbOH7;pehYwRa0Up+;08L{c%SbZRd z<8Wdn(wZK^8-j!BA%dTAL?lN39H)ZFiS^6X_x3}pIu+xHOsrc<770(Kg?t`M5(DUh z268?L$Sw7WtsjmNjj5!V*}}(+O!`i*Mrtl)Vw3k7y`5OU*}q)ak9m|}Nj*j?bSasT zAS5NGq>_>8%S<9ZLlKF1nj;%s(j>xhJa*0W;ReGIkBOuofI5#W#Q)`U%A94INSb(D zIzErw?1yijT%7)X@%l9HUH^Fdn>r^Ng99dJe z1xe;f6@EcHMaDwzrnUnj{FEjQ-XAd@BJ6Qc1+0`KIj3TBj202<%Ua70-?`57X5f%9!78`323m*c=f zSOBoLw$)fr2v#g-;~2ACQeQ9HPB4gt4Mb-|`t#i>DI!K<&G4GC$AkQM^)&BS#)Hau zSQ(#G#t+aRs|WR?lxG`7jgVEU>KF+OYzvao*$VvQ;cAE*R3uqSJ0Lz!wPTG?3`y*~ z4HGoczzwKK7>3n7#{HY~+FXJIl^;gv%z2P3>vIuKLkdgv;J4pv&T6>?{Xj;jKWt8d zafm%9G@MJAc1{KlADs4224{7s1y2LpO9{RK-qeQ;@zescNO4j^s26n*pEI70(C5S9 zus-1dD1n)NvP6P28lca8-*1DlQykDtjL=C{kcv_r4}z4W*E9+n%Jr~+6Q(?i13Tf6 zwY6~`^u9RX29=V8V5tmP47WlW<@)@Vq;(kgs|pmB68m!%-Xk=lOA?%a<<_8AX6W_m z(v_pN)1?p|jG#>^BfKnlfhNTTB^-BHc>&;J}%~+Dxqv1P=}llq@sG z7xr?5a3=XVy!;6N;a`HL+Uo(Tu&Bo}QUP!lLtEu{48E13#DMC!pmCtZH%?l<#jq~e z;$0>ro#iV+C3oLNB%l~|BN~^Yot=RrA2me(JjyR=Ks=l_CUp3$OkT7%=rbCrW(da( zyVh+B?mFwM->vW;+uX3=8ImR;v99A?o%m8=Yn?%JrE>lV%6od#6h!Gyo5BuLoVN&5 zajG(=2D9N{czUN$1?XZ99m^fk{3AO33w9e^%-dEk5<;nfzTXe}WV>l}0db28GImY# zd^lD$1o;dLC~-BlmsK{Px0QLxlWJ*;adlE@2|kobjpbAvU`UH66&#J{Wm59Ej%tHh zB85^+!e|bvw;3dNqMuYu+NzwapLG0`OcN;V92!aL-zcKj&~?S#qw})eF?1WOXm)7H z$qb_zR?I+~GIr?{eHnWqIe$UoZ0s8R7Ia+pG1i?DS<@eQM8+;|C?Ue1a;m3hukaUjDw^S`SxnoZW1{48U4Hr}x{5WWSrbb6!kX6Od}Art@tz^kAL#w=9g}UyI`GzP zs*z58+c{bpsu`~H!F24^x33TmpfZ@K_`^zpwOYOFA{nbd!9yA2s%W<{U+J$mUv5M| z;b=QJ`UmWJbg3F%m0)0_YV(L6+8JAnkA&Tl&depEOF`Njkb{s<-Nn)oe{47KRaPqPyuH0Tvj&$s{ zxMAH1t5K73g$;RxhQ%QVPAP_z?-9mG;N^M}h)5FhloDZWjmcGpDJ-p19rR_@VrHEA zL<`ZR`?wfm0d9R#)9fd?C%9!Z$w7Ln6nyKBe7(E379!*>{*a}_xMsO-eLL0Su@?&G zaH}uYeej?zZ~0p-4m13Tz!xu-nO70!JXD9Xiq zwx>WZ^2^uH@2fyDk$Z~c{PgtdzDkqu1#BbdP$2dc>XkygREYOhv|P@4ysuaq>As5e zDTcb&HiFzx^oILN_4;|y6W&+RBv`;TAs!!V$rSs&@9m z@hv3PnUb7X*B-+$xb;{aB#YEvBTp_WLb^i;yicIKdrx4=MlJNdw19FZgWehhcnLQ_Vbw9VO^nDdpKyAaqE$R z+63-!?$pdeazQ09rIq^Pa*I{WomtG)F&;1*bA5oEs*{7}iCsa@7Vk5h67`0K#R=Y( zncD4qtjT9cxjU-WV zKI3x5(`UAg#^&}^U*_95uzg1L<+qRR1T-@2ot=I&7@iIL5BkH?heLJan#X=UA`=`E z91My}QkV~lyK7U&^sM_%xHu4AZh)M3`W)9RK1H@|SXwi!czdQn(M5Ubx&kv-u7+`Q zf~-!P_4ci}46a-27N_Vs#P89>eEj(*dh@n^Ag|s#NhapqH=S!i>|pSACyl1GGEKVqd8Rb&pzZ4HT0h1{MSEXX-A_@lyf~ zz*9!lQ@3M8>l|%fV1(FFY5?3$LlK=;U}M7xl4(X-0l>U4-R&3)chIE56|@`1xJk+- zS4UIdqE6+myn{yO+2s1p5&9Z+S})LDSm~W;VNt0Z%CB(v6OPDQA#Zwb zH)#kbf$)gsPdp$FjiDmTM`Q+p)eZ465)CbWJnB~7tQ@oMk5A)Z(W1(aq&z}f{Q01CXK+3KGt{o+u=t2O( zn+=D&yTl%Ehi@r$TcGbQIxC#Fhqa5x7X4Rx7uQA42pD8eP;s_=SPj$lEo^JJKFWU# zx|L&T~NtY`EQPWwVRi;rjzs oUHXg*vZ2iFjJ3(PyEY0YDjqv_)g`$e= + + + + + + + outOfMemory - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      outOfMemory

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/outofmemory.html.gz b/pt/tag/outofmemory.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..10bd99c4fae9c9423e275ecc3cc033e2eba0cc07 GIT binary patch literal 2821 zcmV+g3;OgQiwFP!000021I-$1bK5rZv;8X&=6aG_lhnhhV_8z_JlmVNNou#(PA21l zNQgoV5)1)aX50MtTL2_QQj}tKdUv)H3nX?I``!hh@q_1Yo?ZU-_61tVkWKf;>H{$x z1rsZl)^s1<5bRI)5&VopA~Et7I1xlnte-Dm+K;X3RD?q^v2G|?#ypW0@^~ak1fWam z%f-YeH`F7xemF!lqLN}}3lB3g={vm|sfCoWO+KacW@7zn|9oaY<6(>?oiS3OOUZ=z z0Vyygm5fYzD&Ne{Nyw87+314CA&#Q4YbN*C*bR9^B>f#|^Qc1lA0DU7xlLk8;~AHZ z$3r*${@dqg$G@GuJI;DnKivE(kK*1h@06A*RO5ulB$3&~;=xEzNv_m770NkB))Z|( zl384ZUy_+3VTD?mw#l&xAx&5XTv=3%Tz9!#I>Ml8r7Abuq=|O%>I!VbqahB+oz`|W zsBkN9oj3{#+GxyZbd44XnQx^sC&U*nX3W77DBOl1xiaI#!g0)~r@hNnbKmH>gfN(5 zk|YsUrq#MFB|~SIZ_d$6pxNL4SVtqLdLJYWRJRA?OljVE&)QkG4Af_PryY!k_bG%@_;*tZZC z0IaQTH5L?t<;&SP!Yq^2(~Gtf^dn&d(K(Uc;_j3b5hJl?ctv@}{p_%OTJ$U9L1jFw zjE^egN9d38LH#J@*+x+#WEHA9L;?fbf+Tcaf`8sGhqysSl3Qu}#N&x}tPzSJiJi7# zf+iZcJ{2*;u=n)9>uryxezA-g{6A%+wV1JwOoS!PDZFdY)*o4 zh`k^*SV)+5js}k(9ruq0Cv~VLPkeip5PS{1sSg|CsRd-2;JAQLFX|v3XFM69hr{8p zJ~0DO0yF*i775O%j~;rS*9K!J*r%x&p`)rG6{R{e2vU+<(J*KzcZR*|AmM4`+cAf% zt&Q`j_tohpsD#7>OJ%@(xDnDQ*W))Nsl&KmSD>(z*juRZ9-%qCCI0ExZVkFLL$6nt zt{APHE`ji11g%RM;#*V2N63cibWOpfDPuOi!IWVr(XDj%_M8Q*&D8opaBpu<$uehr zY2S_zP9;Bum!IK3{EN|4dp$tq7M-z_Q~;di&{p{!gKs4$HlR8#Xyj}0jguB{F{}%= z_?QYw=UGXp;O@JS_!OgVNTWiulM`^{gNEo2!|a0kWQLQ*gbtt5kL{emGehX-jnO5AWDDQ6n2o{tVNiL zQx!2am=6cT^8Vqw5^^eghBy*ukZKCX4B{b;^q}(?3&hj zf2?W<@)#CS;%aIys;p0MD)W-Z)zTK>>ZH;Vd?=F|%c(fPkQR?BI2v!3O39--stsld z6-qt{qXnqmW{}*8eo`@Mt8%h>((zL;O`x!IXe6n3t%zPh*A;aSPK$QO&~31y*`Wm| zbByL#F#~PN*rikS&uAv%({mD~W7pufpyQ&Cv9?NNO~2kH@*hboq#Y4jth}lZ22lD` z`R<)o{YyDt4p|n5p~{^m4?>~%>a>~-bjLhG(A{@CMf+^{aiAE)orBX2RZE#$%V5MY zIIR(oH||On({|{XD7ajepZ<}qVohmQgc82Aru8^qTMG8OCrI=Mdbhh}vJF`W-il2% z(y4DVN2Q^f;kp=1$Fu6@6@md22CpmLP^zz1sqeZ($|_LsP(-*Y*=?+wHB;8gK|XBo z)b!L1EQ&ne7djs1BZgz4S-}x_mLztf9MVG62eTJdqI3j3Inv(TVwk#Fs(zGkg$D7U^&Je5>+lj=HlPeggENdsI*FbgV9n7&J<3=V`@2%(f^-7 za|)pRmWv&QdTH?9T-;Z|K0?zaR9p!ngaPF%>VJ1GY9R)hiF5bPq zuL4Cx?kJA)A>LcjGP&TOLLd}E$lt3agm=J z4*JLS_iEpZTQ*JG_Dt&=Ej^rbE;sM{YllL)UhUzaVaAPHQ?<3a!}&%tw&jvaU`i|X z{9=Pu%-u}H)o~Fp8*zP5nW#N#^JFNeXNylMPKbKLg8ZcD(oEg$9Hz-jo$2 zD!`x6#C-huCwl*(e(!&-S?dyvigD%_0;Vc(K-j~2ju~F zlo|lH(@;dG71-Etf@G4CRsb+BOm{oR!W}fJa0Nx&7&lJ1VhE2&{>Xje&Vwe5~*E`SPu_MySZV`l<{&JPEAB3ZVWf z4nVzyy&q7jOzAK6z)Vr_DpTrvFFEB6UwA2D50NE+(3t>)_iGNhy~G}FhHoi#8=$ur zof7B6e(i#*MgNuF#dXmu0tQ(Sl%Lq{SHpC5+t(VdPqQEVZso97xkU@*=Rf=c4k;H% z^|!EBKm>X;Pu5n-r=AAeS9)W>YAclvU0!iD@-LmEZpoyhJ3}Ymwm|NKw5qo*owl^S z5e;?J#al~uD+O7@uoQ;X$V`YZL3Uf%aJ$pWW^ZtHgYB^ X9y@l`Wvm|PZ#@17#Ix{{0Vx0gWUz8u literal 0 HcmV?d00001 diff --git a/pt/tag/parcel.html b/pt/tag/parcel.html new file mode 100644 index 000000000..56f9e5a0e --- /dev/null +++ b/pt/tag/parcel.html @@ -0,0 +1,286 @@ + + + + + + + + parcel - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      parcel

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/parcel.html.gz b/pt/tag/parcel.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..d1423534a86c4c756e934b5de516093c9b0dce3f GIT binary patch literal 2816 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 S)dT%K$NvC{EQhQ2C;$NUynD_7 literal 0 HcmV?d00001 diff --git a/pt/tag/poller-proccess.html b/pt/tag/poller-proccess.html new file mode 100644 index 000000000..354d88b74 --- /dev/null +++ b/pt/tag/poller-proccess.html @@ -0,0 +1,296 @@ + + + + + + + + Poller proccess - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Poller proccess

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/poller-proccess.html.gz b/pt/tag/poller-proccess.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..35eebbecfdc7e4237bb589079dec8952bf313950 GIT binary patch literal 2904 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 C;Dz}B literal 0 HcmV?d00001 diff --git a/pt/tag/powershell-mail.html b/pt/tag/powershell-mail.html new file mode 100644 index 000000000..73eaaa9ac --- /dev/null +++ b/pt/tag/powershell-mail.html @@ -0,0 +1,296 @@ + + + + + + + + Powershell mail - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      + +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/powershell-mail.html.gz b/pt/tag/powershell-mail.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..27fe21854c7ec942f116bef3f21854face589e12 GIT binary patch literal 2915 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 N{{h|Sn+fwO0089Um|Fk< literal 0 HcmV?d00001 diff --git a/pt/tag/powershell-monitoring.html b/pt/tag/powershell-monitoring.html new file mode 100644 index 000000000..aa92997ca --- /dev/null +++ b/pt/tag/powershell-monitoring.html @@ -0,0 +1,296 @@ + + + + + + + + Powershell monitoring - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Powershell monitoring

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/powershell-monitoring.html.gz b/pt/tag/powershell-monitoring.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..f5560963ce32caece6f1b7008c329b2a22c78e37 GIT binary patch literal 2896 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 literal 0 HcmV?d00001 diff --git a/pt/tag/powershell.html b/pt/tag/powershell.html new file mode 100644 index 000000000..61d6c33e3 --- /dev/null +++ b/pt/tag/powershell.html @@ -0,0 +1,306 @@ + + + + + + + + PowerShell - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/powershell.html.gz b/pt/tag/powershell.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..ec1241a6464e01a42558559f59965c9c173ac21f GIT binary patch literal 2949 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 literal 0 HcmV?d00001 diff --git a/pt/tag/pre-commit.html b/pt/tag/pre-commit.html new file mode 100644 index 000000000..93783b8b3 --- /dev/null +++ b/pt/tag/pre-commit.html @@ -0,0 +1,286 @@ + + + + + + + + pre-commit - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      pre-commit

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/pre-commit.html.gz b/pt/tag/pre-commit.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..28afe2ea51699ddfe4c176eb533c8d9b93ebb2f8 GIT binary patch literal 2818 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 UtL|d;K!5M}9{~ED!~ZA%0Mn9wfdBvi literal 0 HcmV?d00001 diff --git a/pt/tag/protocol-family-unavailable.html b/pt/tag/protocol-family-unavailable.html new file mode 100644 index 000000000..f0e3466fb --- /dev/null +++ b/pt/tag/protocol-family-unavailable.html @@ -0,0 +1,296 @@ + + + + + + + + Protocol family unavailable - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/protocol-family-unavailable.html.gz b/pt/tag/protocol-family-unavailable.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..1dd6da388928743ddf35cda93ec40591ac2757b0 GIT binary patch literal 2934 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 literal 0 HcmV?d00001 diff --git a/pt/tag/python.html b/pt/tag/python.html new file mode 100644 index 000000000..39297102e --- /dev/null +++ b/pt/tag/python.html @@ -0,0 +1,306 @@ + + + + + + + + python - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + + + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/python.html.gz b/pt/tag/python.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..abf06fdb6133ebdcea0affc984e7dd75aac6475d GIT binary patch literal 2948 zcmV-~3w!h*iwFP!000021I-%ka@#iYxBV0dbFJjoB=zCcu`DTdKHHn5Nou#(PA21l zNQio$j19a z^@A9Wf{_(VYrGF{2=>SO2>uL1A~Eu2I1xmStY0pk+YhbsRD?q^vTi7u$2^f1@^~ak z1fX;3%h|{$H`F7xemF!lqLN}}3lB3g>N=eYshO0qO+KXbW@Pe-(@~A}hA0DU7xlLk8;|Z6J z$3r*$;k&12$G@MwJQ%kK)d+ZrNiNkoCCWKR))=ip zl384apOc9qVv`VP7}@IRTbETM?)Ntt=4um zsBlYfoj3{#+GxmVbd6>SnQo*qCBzplX3W77DBOl1xiaI(!g0)~r@hNnbKmN@gfN(5 zk|YsUrq#M#NQTZXUcW-mfo6>ljV5Hqh?o%q!DSe8<&1>H^@MQeeFuIDo0OO@!Nggh zEH7MGo8AzOutIv3LLvSXv?`o{^MDZ?Q=xSLG#*WHNLe=e8A5rEvvnkE(!}sD$G(NI z0AOuxtG1vJEMLyX5oVdBo?f(>pdSevh)#+0X4_LzM2y6m;U(n>_p`&r)2v$>_e$e_ zX?#=~KR|yj9@HPDJliO0fUH7Qhe%*xTabiK7vLZF7eid5BFU|^ed6&%JJtY2ki<@# zFhLVFT%U@VVOV{_xOaV8nTxTn^1}d~I1l36>RgDEfWlH8_}lH&XSG~{{y_$)+pkZ8 zafm%5G?+=4c8+=v9~^g&dM8z=IZu3hk`R0iyr~}>;;8{-p5VBEP%o+=9%nomp!@xP zzdA7iPy#dE_!bGysE_V@p4S9pC)lT{7@(uFASImcE2&P@Nm;?(I15m3NJsx|L|Xo#@g!vD!1r_rKAMl%=@;=?-+b5L9qeVaX}+ri*KB?c#C0O zu*Fp>B%NjpLIrozrh3zUuYbHzs2p@YgN|i`G=GauKf!K|i&@j^c|s@@(Dk~0m#jC9E+B4RL58mB zn)ipQh9Hk&0VS@Y_M*!A^rkc~d0Z}S5iU5PGzm+(}&Ul4Ad&JPXp^a`9y+-dS46pF7-%h^D8%mW17eY;h(&xRidib32uI9*eD>Q37Ta)UbY zh04FHRBvCRbB%acMU$MfU90Vd!r4Y3)4moR>HnikOo-Y+s}o%Lh5N)RaJ>6wYRgU3=Xl#^d)Xw-?2y%`i^ANR=R7ZSrWL-`ejvxSs>RewW-V)#Qqg8x!k|o@mp6in-PMOqBt}jUuX6m*% z&A=bf8G2%5sUIeN*NJb-xh6ke?{$x>@73`TZrF%!+J~-gUiEOwxm>Dl5#iW8#V zupmEBy)aYT9aq-*45*x?la0Q!1DA$c6O%9W%H3WLoj|LW82S;tqTP zW^TX@ppp6c>o4@~ef54sy?5eN%-Zi-mx9PM&*Nz% zTZgFi%bESKbKL7Z?AyK8`-2U5GQr;U8<1ChSF{4!o~Dtf)PmXv4VO5I$p8b3KKD{} zHR^Z?fmY=iBkHN$GNQE(R_~Jn>?kz=ZmXt;NT}5 zlBGi4b>6Si5Kau?5y_vpPaGOS3o9R!DFjwKz=ufGwD|F$U3#-{%&I>=i~Loed;;{f zW9}KBWqg7eQlCOWkO!z8z`r2n0b1kFdxax61ePk5MsYv{5(jve$;^r;sy?S%>q+1H91zi{+G^fy6%pDcvFL4GLX0-Y$4+?-@_^Dc^eemZ3#yC2pE^QUi z;YS6op;}-76v9zk)-`8B%)&*nc4cJ(?#gE9Fy + + + + + + + rabbitmq - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      rabbitmq

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/rabbitmq.html.gz b/pt/tag/rabbitmq.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..70676bafa52761e83aa142c2421d8cece8e441be GIT binary patch literal 2818 zcmV+d3;pyTiwFP!000021I-$1bK5rZv;8X&_Ii?AlhnhBV_8z_Je!+5Yq!@SR#8Jf$8P4~y@12G(j z6DyI{bRXUj98C8S{EQuWI}?F z6qu4qMy4tDJSwBl$VTThiEtc`T{E-4#%si5BIy?(%;O5(fB2j-=O#@gO*}3gpGR)? zx6#NfYhj)fL!=MkHv7h7NobHmNXQfk~F3vb=C% zZF)^K!W!vy3WfMH(5i4k&O=6ULWR}=(0DY%5oOECPY}!tyxc^xAx#2*ISwp@1psSn zTa5*UVEJ-3jxk$G>gz?@2?nvSf#{4#e|~#PiinX|GrXeg@nCsaKF#};@t`suR>nt_ z@qP4r`JjH3@@%815wZ$Z9U_5&Z9!5xE5X0+mqXm3BFT-k1LE^kJJtxrki<^gFhLUy z+<=ONVOZT`+`l@l%_TTc`C)`kocqa5eJ;XjNMWfS{PugzSuK~KU&sjchs{Ya4zcHi zhI0wi&e7oE{p0@8;G_<<;AvocDZy93oBFUJo?1W_DNYIq^`Z{qbH>vV`eryB)+amw zB{0)ZZjj)N2Iw2#_uF9X6bCdDBXm?1q@q;EgCHg8C5^&{ay{%{g(=VCz)m=1ZEc+U zy>Cx9L8T-iSSkbN!;O$exjw%pX&uJ>t^$Rn#Qt1`_Xy4C4GB)ab8FD08G60Cbj4`p zbSZ=fBWPX92;Z0zK0-EBrz;9BO&PQCHKq(heQu?@x97}ZZKl=-f_r;=N|qVp3;Sk- za3=XFy!;CP;a`HL+Uo%-x2VT5QUP!lLtEu{48E13#DMC!pmCtZH%?l-#jq~e;!`Fh zoh?g31$RG0B%l~|BN`W?ot%IpA2dY&CR(1;fOt43ZnF&m?3Nwu`axH_q{1Ru(z#&RkSFr>w!3XaC}GAVgnN43E$kwVEQ zVKfKT+YFLB(N8KSZBSkro(uPp_e-4i7G1HIMVGTDZ#18>Eq8tK%x znWNHB&2XI$rem+%xk4m>w%}dG6-wRJ%JgmNXRHDR4@G#ZdfmpiSu zIHedephp-Zfw$C?Ktz&|r<4e5ql=aSmq(b6d}vdux!u_INDI-V`y?M@0j55xY4$If z40b`yn1^Vu)IV!W`pPkGk)?7GmM;F1rNmL^MWt2hyNi}OaHen?9#czrjQ;-wno$7d zH(cx})N_OP_WZ62_6b_^9cB6#pxjk)U_+VR>?qGGg>zR0ik9Lt+fks`%k%fI?y5jB zkvodxym@wUSEWh#0(Mn%C=fde^-dw4E5ti1+EUJWysKCm>8^_OR}6KhZ3MYNoee_e z-&Lyjuh6+hysM%~&e^Wj_Cn#@Mj+F^79Ht-qf1PQ+H0w^KKVEIiFL~F)Cc-WzaxJ` zx42a^e_115wzMN+V-R{aBjol9sp>bN#_F_E zr2Y!u58`!vvp*N^^}r3t3};MggXpUtgqgZS%a-UhL1*ZRk)^psegGTKYFy-phJ*fb z{k_`s;+9R*wmsAOMoSN8oXgFd{@RI9u2*|FXqa*1zEo|kZgIHLjBUA~5}49TeSN;c zD&}G)=IX2nn2otUrA*ZxwRtR*)3e3r45viBVPSqubYZ4$cL>wuGo*5!d0TyF2QCe@ zHYQ)_ncaB=7QNI_w^#%Wr}?Du-@$4@vW?kS`CKD?R-DhcT>f;=w$a#J(dipw8wa+} zsJ>zKv7LZMhP{*H2ZQ0suz$ZlJbpM-*Lus?uSaBpLxO`reiH}tL4HAMs)L?&KM5BH z!dn_3=aW7xG>cD>Z5x(WOe@}AXi#)k-0YQL=3dV*ZjLF{k*3}h8 z19{c=CDuT@vn=+NT2S|(lU|P*$HYqMo`PBUa^a{y0FqG(ZZrqg{W!*VkK9Dc)Yy8;Ts&0l|nxBKCaUcP6FW(%QrkA4vnGRl8<3e zpOS8f50PkS@#{gi@}_jmx<5XPgLR*L0`#?G?irtD+`|m1FL*$Zho~FEUy$+uZSd#4 z!jW47OO;BaI3NOv13b%QWJc;-FYL$vJ{k;OzdL%;uY^=d7e)vzXdLi`qk{Yu zUP6YMtiQ^G0-#GjRm*e_elKB+qeJS_RskJ;Rp1(`1BN_AFe`Hk zDwe9;Do@^9F}%MX)z$A>u;BYoqP&S%g^%@vK3u+$)(91uSKpIiho_-+SOL`E!vUyw zu=fK>l_~v=9+)W#US&#s=_RMU;oB}H>>;uQ5IPfp@L|m%x0l$%&G0RyZUgl8qEq60 z+^^kkwdlXnySOfTLBJq$g7OpF{c4!5uKHTT_3`p$(5)QyDz|8%{Pg87;E-~TRDTP5 z1w^1n^JQ(NeClzyeWkYsthQ3=(B=JBBmdGF>XuA8x-)e0Z42Z+NUM75(rHWE8_`fl z-MY18w^EQb3`=2Hjm(4y6J)oA4Yxb3Z1!fixTLP?(q~+dHDzvQtWCb#Ya?f(;;~~_ U-NfpF{;uPH0BJf + + + + + + + Random - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Random

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/random.html.gz b/pt/tag/random.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..5c7a88eeb376d5d33645d49d34c0871749a582bb GIT binary patch literal 2816 zcmV+b3;*;ViwFP!000021I-$1bK5rZv;8X&_Ii?AlhnhBV_8z_Je!+5Yq!@SR#8CuAYP4~y@12G&0 z6DyY1bRXUj>`(U*{ER~)G4d8T5kyX`pD&)<53TA{ghMj1t|?i@JdqaicqB;#piAn@ z#l$Dq)FZZjI7Bp}l452H4>L09JG~mIg_N;PKBx40V*P6Wd}cr4VT>i6F;byR$%Oa; zDKI6Kj7)#Rk~ z2T#wAe>;1Bob@hWUjHhO;@&Usm4Yf%y_IA+w--sP&f@AX_l7)&uqk_ao) zYTcHSp|gv(uhDa$+2BK?37Ih>7KA`>8OB_>AR%!*A>8HAfseu_73M22aTX}c3m4X= z*F+<%kzS`zh(8Cd3Mb$^UER)pJi?$Q=BVhy4Ig#Gt_LLM6Be7<9MR~^k?67=V^ef{*Wjw5mk1FH) z==btL{V3(xMo}YV6{a;c&V_)Tm5jt`1$2ax45GMhJrF!t&?=@$&T!MZfBh()@C&4(xUJx2A zBuqO;gNOHz`$vP5I@FRUzCB9_z5?FVhYj)60QA(kPX%8ih@g1#%z3zDZ@~mTj}oYISW{usr7;2-rk;)WzP80z8N8$ zN`4A2zrug`7o(~6dVtC;I%6rR065E`t@1kt-%3zyKy_Tu$k*Zw+fYmE*H?TY?0=FqSHTNx534tZS_1M6bk5jeZNmOn?@H9H?JUL*L2PMV^u?t z$FP7BS5tdYWqo>GnU_4SmbM62CzY1qLz&cAPQ?L+w0Km((Ri~|N*>iwZ7@ryQ1VF_ zEkN})gXB*1lZr`Om6O$zj-P^Q0)?GJBT2n0Mf4K7uBdx(TC_WcZi5xg4lOvDV>HK# z8E8|+E}f!(Ml%tgz9vyRb`5?DIxhMcYpX=o^hX|&v5OnZz}vC@q{AbTYfVYCD_K-G z_Mf+r)-;y2MaIyhUFS~Xf|nHg7v))y_Ew9pQlWZ){6`WCX-9+>E3fK<0hB&fzI&%t z|5DDELzcy1sB)*tgHR~GJ*{Q~-7$|4bobp((LNh~94H2H=iqch)l%lxG8l0TPHP0@ zjk}V?v>iGo3NBaWr+=iYSW}u6p@c83X+6%@mV&MB2@?H*-so6&!(6Nn$6;7cE46uy|1*N*~aZBkjm7HmO^r>Ou)u*br1S$anlW zp&0Vtj4($0S*9m}h$I0|C=u312Q9-bk1rkf(4|Zh& z?17pQ53ydUe%6-cm1Eo@N97`9F8-1x#8GEOrB&*Ci+bA$Kx{H_Z22^#YqW%?JO+*NU4JDJ|>D9iiPWhesKtJhsEWDnxp~W9I}ghBY7YkuGj80Ks;$*6jy9UHEtgaRQ(CF7&o@}b zT+2jUofHAH5!YvwiQ1z!4~24iw)mXlgs3+x$PbAw%+&3UV48deR4&rlR^QoyOGB-V z$rpNNcOHSoS>mWWECPnpeA4LeV6`CG#_X$nu8}?~&SzXMf4XPeXlyR%^nJ07ecNMH z->-VujzJ^C-pTQU!SH0*zuzAoKOCw{y)5$T5gFrvV1JO`!@<0tUyqvVpl97r!o|Lr zWd_Lkq>l>C;!|YXhNTtLinkXU6rC0KdL@{-)iaEnLrQg^sW(OWePi8P*Em6!0sf38 z=Hrh)(1(xpGhg-IiBqxYe&}2ZBF{XJr;+R&qR!7}_QT%sp!aZS4>}(Yw&2MGdspv3 zUiDpxHPG%njXb3m)IDf9m{v>%7+CbVm#XU?$4dy5)n|;Tr*6lH);U-|BM-2n)Bw1h zh9Wwxz{Z9XB$Jf10)Tm8y4x`p?x0D9D=6Z|xN*WIR|h_iP^WSo+d(7qY;t|)0DX@- zt#`C8tn^8=u&7ias+xdU$<-hpXBRklgF~`X$cNs?bsEBnAv_}ahWo^!5wu(KG3@CR z(hcw-5)CbWJ?K{6l#W^V$7hkh?vqb|zIMz#IU!^q&z?y{CTf% zg`=9tYc3dTYRHE0qpi-flJWFP)=q$)uw@Lnq(1K<Z&e1#syhZ=4Qs) + + + + + + + raspberry - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      raspberry

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/raspberry.html.gz b/pt/tag/raspberry.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..03bc957c5379c73d504f54c56454c8aab5f10666 GIT binary patch literal 2904 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 + + + + + + + react - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      react

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/react.html.gz b/pt/tag/react.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..a9c2608503c52edc02c27f0ee9f93587ad273e05 GIT binary patch literal 2816 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 + + + + + + + Remove-Item - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Remove-Item

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/remove-item.html.gz b/pt/tag/remove-item.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..a082be5424c8b8f544f60da819a3be7b0cff8c44 GIT binary patch literal 2879 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 literal 0 HcmV?d00001 diff --git a/pt/tag/removendo-underline.html b/pt/tag/removendo-underline.html new file mode 100644 index 000000000..006da7545 --- /dev/null +++ b/pt/tag/removendo-underline.html @@ -0,0 +1,296 @@ + + + + + + + + removendo underline - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      removendo underline

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/removendo-underline.html.gz b/pt/tag/removendo-underline.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..e899626fdb40c34e181484f0ef339eaf2f937947 GIT binary patch literal 2909 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 + + + + + + + Resource Governor - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Resource Governor

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/resource-governor.html.gz b/pt/tag/resource-governor.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..f75fb286c2f45a401e23fbb3a0f208dbe4113392 GIT binary patch literal 2827 zcmV+m3-t6KiwFP!000021I-$1bK5rZv;8Yj_Ii?AlhnhhV_8z_JeuYvX&!cZ?PM|@ zh=eG_Ai)rzWv0!4zXd>2BtMpRPFY~f)>CVi(@Bejq+w#mnoUQevw?YC$4BOb>7~$HKs!z5lKJ63OuST@DGnu=G-K) zr16YP$K#=!{_^AFv*SO`ULR+@%V*cW%cHpW+iRt(3e`B_F-c@Lv3M{NRFX@zPK9#L zku^mdkYpBD;g@8l$XLi-*SJrFm(aMu`$NV9gl9aJ2v*9FT+k>Gpm&d@J`54qgD@V4 z0F7|uBOgmV!-9y$B6YTu0^8)+gpekz0

      TMy|VDE*)V|wNjO{ZPG-$cy$G~;n5HW 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 literal 0 HcmV?d00001 diff --git a/pt/tag/script.html b/pt/tag/script.html new file mode 100644 index 000000000..87f025000 --- /dev/null +++ b/pt/tag/script.html @@ -0,0 +1,296 @@ + + + + + + + + Script - Sipmann + + + + + + + + + + + + + + + + +

      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Script

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/script.html.gz b/pt/tag/script.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..092e6ade3b4cf75f13a26ff3767fb5537408a28b GIT binary patch literal 2874 zcmV-A3&r#wiwFP!000021I-$1bK5rZv;8Yj_Ii?AlhnhhV_8z_Jeu|mf1G{{T2X8krbs!nO?_sVu8f&V&A&}H2&i0t0z~#zkY@mGGx=kvHCy^ zN5RC3r8PZ-Hw63BLj*tLkVuTY1x^H!6YH0&@9l?Hbt=LknOL`!EMuNX3wb<}Bm&SS z_2pvXlUwQ$TR$8l8c|6xvxSElne?4rjnqQQ*d`xRdONXxvwyj;pYSlolFk^Z(4}NT z{D2ggl1fIVmtI0+iEMO9;}A#D*fsAD*EkJ%L?rzK$nvN{^khc z{o&iE7pK2pygAK!*FWC=CQsttuWyusDpccy$0U*2#Nxq7P)V-UIu*(}N7fW=K$2Np zgv`VNfYhj)fL!=M?)Ntoz`|WsBkN9 zoj3{#+GxyZbb}TNnQx^sC&U*nX3W77DBOi0xiaI#!g0)~r@hNnbKmH>gfN(5k|YsU zrq#MFB|{fiuU?|>fo6jbjV5Hqh*%H;!DSe8<${F7^@MPjLkB(zn^c&uz{FXgEH7MG zo8A(Quts{FLLvSfv?`o{^MDZ?Q=xSLG#<@yNLe=d8A5r9vrQx$(!}tWW8Xqp0I;^U z)mTsnmM>@H2(wI5PcPa|(2s--MCU|$i`^+HB1U4(@QU(```K~%wCGpHgUWbV8J|?f z573|GgZfd*vyGxg$SPEIj06U@1xe_<1pjzg4snBuBzMyGiN_P|SR)ic5<73h1Whz> zeJWyxVf7i~-pzS!F2=sf4sK0-EBryB|`O&PQCEv5`Zb#A45aNsOpZKl=-f(Hi&N|rg}OZ#qw za4PvZy!;6N;a`lV+Uo%-x9E(eqype9hqlV^7sX_K_g#_Z=AGvi(y@`#rsr9 zI?qZ%1$WlV%6oFt6h!Gyo5BtfoV5s3ajGJw z2J_)yc)C@n9CW#Wj%AB9|AZ3fAm=qDAEwkjv9CmlZp(*z1ThencmH;U*rbX`&R=)7om4BZARnjKnjGRJ6+ z6*JJLj9ofK|BhxNK7UD~bnF`Z7Ia+nG1gXztmzLtBx4shl!3QneWJr7k!wv!v@cmy zH}j0%g|s6=i3Ej!TOkfWSMa9d2&Lv~MS552DXT!iLlNAnTDNgsX{^^@uDO2hVLNy@ z>_VV3T0&Ogb2EUw0c@Mpk%QH~lKOcCbwD}1&(Ujzbg7Wq`D(_fdD#?W?53<$yZNx8 z?`8mQP`}8_Sm8Rue8g}pw3=}Q0V9c>s5r9_^}(Bq;#c~&o*d~QZSl9dw^hR<;R+iP z1`YDl44hC5xqSx8BK|DXlR!k0fG3m)Yh&=0sU)|o&S}tqRjZcq+7m5AlkSszj0L#y zNlmk#<&NNn&1?pFtWw#nEs1$|@61KWT>M9x5aX1^y7hfii?3cNoWqU2SogtyTA(=v zP=3e7ogujsQmj%_2vb- z)QI<0G|4&Jx7uDQoLvMm?Q7AI{y)0Jgs5GlI>nTKbDvnJ{91jWpY=QP_jQZA+j8G6 z$)~p>pJTJnw$&`n?2y32Vv94zfN8rX| zbwVr>Z-wvq(K^046A|w1!1c)-r%Y;B(bsJVGj(s7X6PkB7wCzRrFkszEo}Cy5t|>> z4*I9{_v)Ylw`}LO?dI0EfOXdcDo^lb4V#R*YwSdbshU74xf4!)Xv22?K6*;e1# zgG)oLjmhVFW`7=m#aZI0n?nMI(|pqC?_jkc*~aXPe6EosD$ZwIE`R#Mw$a#Ji|Si? z8~e7$sJ_+qupNU&hP|`XZwJG(VgEsYc=~Xtu2Qqet4Cyv1A_fQe)|dYets!!>Xx2$ z-wPM}VwM>o=e<6lHH%M?Z5x(WOe@}=YfyAi+@_Xb<}TGRZjOf4F|yvS<+r?bYu(}m zT?hCBnwXEj{z7lx)lb^hdnZoCqWiXUEr`7EJf23fbBsE_T-XnLr-RpLcVVUXqJ>4J3Q^Sr#7eFP@i@D}!B03OD}}u6y<4XtoEX9*l0QK~b!Y^Q zpnOc`5Ln#+A0yGw;>V+Iq>;~; zjtcS@ID-r`S$~xW1wfa6s+Q><{aL~oM~BpxB{rZ z`vg$0p$h{_l_~u#Dwrt>US&#s(I}_9;TuLJ>@l(g5V{b6@OI51x0l%C&G0RyZUgl8 zqEq6$JFML(w&=goySOfTPQV}wg7UNE!)lnWu2);b^>Oy2->n=&E4OH&{Pf3P!6D@W zsm>dAF^E8q=E>Sh`PAcJ`%142SZ$@!q02kPM*gL9)Ge8GbZ6+~8!E_skXH4ks?(OX zH=?1Ay6J4mZlxe=7?#4Y8kq?ZCdhsZ8*cYn+3Xs3_+mg+mmcGStSNIdV{P*7u8o|D YipP#!b^EOc`rD=d11YjvFl{OT010Z0S^xk5 literal 0 HcmV?d00001 diff --git a/pt/tag/shell.html b/pt/tag/shell.html new file mode 100644 index 000000000..a6c13f218 --- /dev/null +++ b/pt/tag/shell.html @@ -0,0 +1,326 @@ + + + + + + + + Shell - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/shell.html.gz b/pt/tag/shell.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..4431ca67065367c72e49d24f9f9ac2ca95b99e09 GIT binary patch literal 3058 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 AEdT%j literal 0 HcmV?d00001 diff --git a/pt/tag/specify-columns.html b/pt/tag/specify-columns.html new file mode 100644 index 000000000..69d98509f --- /dev/null +++ b/pt/tag/specify-columns.html @@ -0,0 +1,296 @@ + + + + + + + + Specify columns - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/specify-columns.html.gz b/pt/tag/specify-columns.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..f7048aaba690895a65139eb0e3f26f8ac3047901 GIT binary patch literal 2924 zcmV-y3zPI8iwFP!000021I-$1bK5rZv;8Yj_FBoUN$TO$u`DTdp3P03wcBealkq?# zL?H$Vh5#+IZT|Z$0FojpO0{yij_t&JV0W?aT>u<^_4xIpi{IZoK?@nO>Hb(<5W`V0 zv0`aW_u&n}{&XL~&p0F!BX5BdLFB~x<>IM*->MEpI3yG6nv!MA6KNrjN0LMUx}?5b zOnh=pJ!0#JLqsDgDQ33tFe8(`)2oqMNEzGYV@j_l)^GMNXZ9l=##quBBNe)oOo$(l z0#j1S$n-oW9-U_Z#nLbm$VTTh4sjHXT?4Sc#&XCbBIzGMpGOt)|MECx&P@_a8qc_N zJRZ8~Pd_|9JO2Ib?Qzz-e183#Jc@h2zEzs4P>mBFlSF0{iw7e?CAn1dR4C^hSyQwD zNoH{seo1DEjD_5Fefvas35^@PKV&>Wc*awSV5SVo1&sm$TK8D$!z}`95XR#Wpb?II zeq|TO7V4ED95YmKIz?D_S$aR;?r6UZgR;qHfO`2#Iudcv0JR0JF+-h!D zg9^9u)`_E_ppC|iMptN&koi_Bb3%OKV#XXSfx=A)k}ES#EF8y-dfK~OHTJz8O9+D@ zCP@-uWm>J;h%&>ND;Fdrt|x@M96E3*Y*Jyq0uyI} zvb=C%ZhB2L!W!vy3WfM{(5i3(&I3kpOoi3~(0DM%A!XU*XNc(~&Nh*3NE5?fj(rPZ z0l?bYR%1dTSU#PNBg`^MJw0hVK|c~U5SSG~J0t!?0;J4pvj%v9C{ez59f7l!Z z;}Cm6Xt0nl>>Lg5-#hLf4NmG%OP=`lEFt&`cvBY};;98>nc%p9P%r8rkokEsLSGMu z!}`DsKnaZW;~OM6qdxlD^Sm|~JHb9p#Rwf$1*s_2nL&_}OmjdDGHO_Dl{`&|VJONqUO3hxn`(;MQSe&^PpOEdI( zb?J(`mD42<9*m%MDMNf?D)|W6P@S$QxHM(V#@CoK3}w2N?%tlWfVr8P9|-R4?I~I2 zj4$n*5yGkDr||L<{D*%rnrg2HsNAA6mXZp9vmDwgzhm&N1jPna#|4diExvKm;w^@G z!4@ASH7gW>U3p>ojW0y>s0()=Sj{Tp^0TrApV&l5tSfWFuF`((3ebOCYm3Nm(0 z`@BC^H3WGK3n+0lwHH;^r`MHn$>VBii*R*NX$daMq{eb84lty}qY943o263nsE%rb zSwe-955nC7RBtm#?nFPSn6yo3=0 zAa}J}xVj*Wc=A$cd8v0fr-b?9a!KXllFXsAC63yUu-Ye8KaY6GVI@0|LnIW1vy2TrIMM;$;;VH}t%g>@6*eRr8ss}6IH4Ho z!i+FR{8^?4frumlPbd-A#=tGpQ0@#mA42n1t$4=ckF*d?x{vaE4Bo#us%iGKJQzH; znF%2WR=NUfOH#kRL+2u7F8(7eoVS>_zUFH2=`)41ztI=#KKM@yG^YT{Z@Ab|sHX<+ z_4!>D>;o)Vc9iMgfO1#Gfn|1jv!gsO6wX~0D9pr1wxd8Vv-7tv?y5i$kvodxyn1qR zSEY&h64sgvC=fde^+q9{E5ti1S|%4f+Epx#bXP_C97Ek{8$oVRJEly-+x}5y-T!MMwJo=n@m6R-kGJRDR(;u}=Aox}cx+JM!ha#oOERe^|wQ zxz)?(nEA8KJ4-V=BsK;M&gX>O-nvy4b{sCD8k_OF_WN`f~7Q(CDn z&o@}boV`U{Z3hCg5!V~hiQ0c??)>HSZ1FM02~lrYknaRun4#P4vo-k)An4NBR^Qoy zOGB-V$!B_GcOHSoS>mXJN&<${eA4Jkuv(C8WA;Tp)<_Z+=QA#sKYeA}Xlzbl^+y3V z_HB<*eTeR1I|hvmdnd;~42CDe{=NS2`2J9x+-8wikH{DY1p9;huocGr{0!WbIz8%s z5H9w`EHgmP2fZI`CZ8hPHY}}}R=hpapy;ePye+}Z(XC_n?wYrVqD50&fIy2c5* z4Dd%ZF_*voLhs(!H}=(gCr-tp`>t~-h&=N=o<_2Bh&sQV+4p|MP9dDWLOYoOhE8hJ`BsC&?I`kASA$! zQUl<28j9$&0vj7nkW5n23IOJX;cmxRxPvAYuAn0^#*Gs$x!S#YfI5{k_YNAFXOrtY z2k3j$X+4N{VWtnFg+-+bQPl**O0EX+FuTCPD=3XCg}m#%U#B6Q7{VixueeVf8bR+U zACfr)RyV+hNHnzg>7ZMAQ#xkdAD=}2x=%g=`r0w~jL$MY!wji!cp%6F)D7S-NO^!Z z`14-j$Sr}TN~KX85P`%2o@Fw#A_@`p06L{-_QU@i4F)gY96jn+LaL+-cL*&hG!{!o z1^Ek{L57*EzsiFGpi4hh({vC1EMbhJL+a920Udr);2Np}hCD^S%Xewb3ktKl8nE-@$YYw@+#2#*jZz**fptl#D z66gJX?Etey|CQdwb!*q3;+ZwJ9v*&)dvU9E6qJ{F~=f5J=MkCd% z!@>s<=+Qh`n<*c97;K;EwE?TmR62BdgxScybdI_ulaB5ToqP=jxewB+UWaws()LC) z)KLekE!nLUWDUbo7*-=QA;JXNZDPaiPBWW@<}JQMsOr*VT#z+oZf2}azT0afXQJY< WV^l^)5>wf|AcJZp^DgXdLC5Pt# literal 0 HcmV?d00001 diff --git a/pt/tag/sqlserver.html b/pt/tag/sqlserver.html new file mode 100644 index 000000000..e2ba63803 --- /dev/null +++ b/pt/tag/sqlserver.html @@ -0,0 +1,306 @@ + + + + + + + + SQLServer - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/sqlserver.html.gz b/pt/tag/sqlserver.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..675e5560fca5d5f6a72415d60b3a8c4194e4aaad GIT binary patch literal 2980 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 a&P2&$hrYg2VIIt_<^Ka_uAU*qEC2v=t=3)u literal 0 HcmV?d00001 diff --git a/pt/tag/stop-proccess.html b/pt/tag/stop-proccess.html new file mode 100644 index 000000000..18e2925cb --- /dev/null +++ b/pt/tag/stop-proccess.html @@ -0,0 +1,296 @@ + + + + + + + + Stop-Proccess - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Stop-Proccess

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/stop-proccess.html.gz b/pt/tag/stop-proccess.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..9ba4d90dac3f3cefab3d7855e4f4c1403ec21184 GIT binary patch literal 2879 zcmV-F3&8XriwFP!000021I-$1bK5rZv;8X&_Ii>VlhnhhV_8z_Je!+5oZ9WRlgW4> z5~2`;1Vez9l{WwV763_+6s1U+UdMJ~fyC}&-@5=by!Z6&lgmHOpP`uy*?51bJ`lrE zFtTE4jrZXV!Txw3!Ot)x5+iSh6G7z2`t|a;{m?2;MK~lQ>xPnf%oAxLk4KV306M3> zoQ-^PLp@^aheJdoDk)~R@Gv8zuG6WInn@Yk!SG2_q%Cl#GZU zkQ`G|$;kLZ^4LC4xaScekc}>A9O5V%x@LNRh2fA#MAFYdoku0&|MECx&TSG)8c(=% zJRZ8~&p$prJO1PB-SMJx_44L-c@%ekd#ChNq8cYWCW%~(EFKI5mE=mTQ=*)4WR1}p zB)N#o@N+UzWGv*aYTGBmOK4o<{W0SK!V{iK1S>6&oY5!{pmUFl<2Ch4w&mCbS^zC)!cnOmkYY@f<~;H3NkZ^7@TNX&h^GdSd4l5{LcOShc%1QMfWGVZ z`_+jFfD)ML#& zRq684(&-Wi4@S_clp($~b$ozqs7}`uT$(aw;~PvFh9ccacW=*`!P-o%4+Qu2_LMAB z#^?6!0O3^fQ+W9W{=>f*jkVVURA$i$OGyd9nfGm#-!b@Bf?@-z-y8FVZgr1?j5`W1F-T+EtQ&k{nefUei|yJWp-bOCX*3Nmy} z^SnP)H3WGK3n+0FwdYmVr#Gc}=wQpGEyCqVr6u@KCN-8*aeyH$9+hx3-XxWhM^#iC z%n~Y;Y!XH@P`%9{xfA`QV$xRSWcj4yCuf>KVdv0DQtw(3y@IYQY9E~D?T(>aV@0z= zb55ohO|fDI+LWP7$LQbDM8v1BNt6yW~{GtcqDSI zF^P61i>k){dK+ntV_8{b2tC?O<|Hn7Nxpwko&{-dx%e^_st3q_B(acoL};DJkV5L@XyGY7PQ1Fn)xGLIB%$NG>)t4&~ zkU82Gjt-j)sV2c2|Cv^Z}HLs+8-aVhr7s zHEK5-*7RME!!_y`SvAW&sGp4(j)hh;jv#I%u@e<;7NR~lbzTDtH`kK`9jgs)S9Q8_ zlq6hXL*Af4cBp|9iXp{MKv~3}Ec7H0ktE;=CBj-8gGENkEUQx+^kL=VWt{g&3sI;0 zBpYLJ<=Ih1v)|;7;D+_22I;I+;H?e$d3*27L|C}^bD9w2l=-^V?NfuVo++IDwZ2&O z!GBtyDFsk|%f*gDJvVr7FYc;fA7SsYqfGw+l)EYp?3mNr9p!nYaPF!=;X-_3I|}rA zaq;feT@@%Iaz}BTH_tBbsx8$oVRho4aS zca`ehD|Dd|@2Y5$bGB=>y;L~c2xQvVyd(X8bcqR3n@M$;DgWj^u}b+|eV||TJM#B+ zi`(0B*DcA{w<6zSvv0Q5Bwg4cu`!rqIwfR#QSR~#O-}9qYd~-A++?$^3lPOM_)UKj$-4JH#`Z8Uh*94uRCq|a~>BNt) z=PyTWc3#`-9#`M1^9J0oo!hjVTipWc;goZ^{=B7f7?SUmPBA3y##itY}M7?1_c0zY)rnWo(s`D98 zIZG!SeP;(Q4YejFU+9_Lc?1?GiK8wM2^dcENu$4m)tqD#v#+wbT9PO^pK-bD>7H$) zp}8H^m-ROGZI4lXx$R*)295MPC&xeb`X~MFgKq!$VPD;-E+VfQkueSk_IueSD9roW z-L$D&de;3YToR^*OCse2i?{u(V`a@%BQ4qO<%`wE#0$s)liMLaa`c^>!`0 z?5$es1}Eq$z@N~_eEjtndjFw%;I7^~aVlo*_pK{IL}_FYL)K7 zTWDaOO|EYpp!=xRctP&MN*_f7i%J!utOd59u1M^C|L z+XtY{JMhUvpvp{g0x!1X_lV^^-o=zm?Vi<(XGsQDTQD zfpu5{)L(%DsB`GTfKq8nf0+tq@`6{IQr|bqD6jdVQ2~31ECGbh1R%U$amdXj_HaFX zL#bN>y}9TVI3M;a7mE%0FZC|2i(U{g$c&)uEP1~irpsH_#&CVSc;eH;J) literal 0 HcmV?d00001 diff --git a/pt/tag/the-database-principal-owns-a-schema.html b/pt/tag/the-database-principal-owns-a-schema.html new file mode 100644 index 000000000..b51d08ab3 --- /dev/null +++ b/pt/tag/the-database-principal-owns-a-schema.html @@ -0,0 +1,296 @@ + + + + + + + + The database principal owns a schema - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      The database principal owns a schema

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/the-database-principal-owns-a-schema.html.gz b/pt/tag/the-database-principal-owns-a-schema.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..847097aae7d77e4c3eff4c0890f0aa6e09376146 GIT binary patch literal 2919 zcmV-t3z+mDiwFP!000021I-%ka@#iYxBV0dd#&WwB=zCcu`H=|KHHn5No%*)PA21l zNQguX5-b5)R@*$xJ^9+SDV$;L1 z`alfF!Nf|WH9dqk1pCuN1V7`5NQ}G?r-I0d_2boZ`;k?hig83H)-5HAgs0L%9*-r7 z0dzrq8BTn1OFd%ihhs!zDk)~R@Gv8jzSFCb3Z+bJ@@qzKC)UsQj~Dh69wk`P86y?C zluU>pkOEUu$;k97B*@1S&#)jUNonlS1T(}Ju|OCJFC-C0HoBxqgyVSZ8mz-LIU*ht zNq>Vyd0biZA0DU7xl0pClNpze$0IlU=F6uSr@vf$f4b~le|!70JV|;#eXrD4p_-&T zA*ozWEFO#mmE>BjQ=y!5WKGcqB)Lqg@C!0iWGv*a8^I^SOKH;J{W0SK!ZV&p1S>6( z3~3w)Fonl5ABG4_L>NyZfJQj>OFfFlB6YTu0^8)+gpj4I0Bv)pf zSU5=-^|W`nYVHd?ml6h3Op-Ll%CuUyrDW*h>h&x19B4N9&}c#~84)2N5PF6&SAw$> z*Av2B3?29=Y*Jyq0+TEQWqIMk+Vqxagf-IZ6bkX@pjF`noCl2HgbJ+#pz+llN0com zKR}=_@NyH$hBOKM<=D3n767cRZ8a7Yg5}HEIL2%#sizlhC+Nq*2BLE!y>NF*iinX| zGrXcamil@k8```JjH3@@%815wZ$Z9V3B(Z9!5xFTp!_)rB;H(a{;HhuVQi5-QH}zpdJhgx< zQk)bJ>O~#Ix^vQ5ItWV4Ul)y|sxkG|8>Z4CQ&ufFRQ|!}BjL=C{kcv{B83ZXw zuW1xClsm)TO_1^|_U(j2*4D;(*!%Q+6I4nPf~7KGKHLatlV+@dp3mrdD!BVPB0j~a8_~EB?d%L3`KTfKC(-hf`ecUF z#)J-^(&Ty9gC5XG^+-5w*tKq3aMyWX{ceQ+(B_6Y&yX|;iFFcp1{TkFi$O%OPZ zkJFo`AWDDQ6n2o}Ws5Ksrz&D^8Uv+g8sLLZN`Z z*Z2EmvuShzaq|i?c1=%xI94?Tc?=6EaW%CURo17sm3hgNYH5pcby8^wK9os~-d6DaH)8cFKiD5BTU zb;aGI^P=4`bQ`Q_c4)!L9HTi_%s`tmcIgy-7SBX-{))ue*fsbq=(y-(tgRAR({Ff0 z#x8Cs18>LrlMau>t~Dj`zGP9|*ni$eTGK?<78yg2cAGni3tm#}UzBG-+FLEYN`>kH z@*hbpq#Y4jth}lZ22lD``R<)p{YyDt4p|n5p~{^m4?>~%^t_r4bjLhG(A{@CMf+^{ zaiAC^oul&&RZE#$%V5MYIIR(oH||On({|{XD7ajepZe^1Hpqt!t2BdngONmD z3Jdoe<|Bp^p^brK2s%mZRK===s1FfQ6woq8^yEkfdW+B2J+>NRDOcE#bZC&Dh~SiB zs1Gy381ZLIJqbi433y70ur>y8nT~S%>%0g}T($BU&p**ZH0eIc$5?=~pVTz_QBDia z+RTWM3oG4$wI#Xl?!&nVOBer^rMa&b>(=*PEiQbaa1J;6V%-P-Zh__$K=~aPdkXd3 z;Jv=QuY$dYjmw@g{S#2`t2nUT&hGY<=cU5AuL4C&r~-Qm^lAx7{=Nzn6S=22&UeqQ z?yEEjU%;L-gaWarP;V6Cr9!;7qAg{}<9)@_NcUBwk1^D}w$Z9X+*hjhF7O_SCOK#O zR@*Cuvx`8ceJwiD|3{aY615XmC!z8$?i1^j->460`}Mx}uj>|fx8?u1arx*C%g0#u zqb)kimUcvJ3`U#J3EADCRjuL{?+3yW!G@|1fjk^6B-OE$oLJX0hGTH{u{w(uskg%S z{CFMToW2P6cHsJCjx#2;L+Oh>gqgY_&6emDK^N$Wk)?S6@?|f%tHyPHBs}P!*59im z4cxNn+qUOh-ze(goO8MPNT+t*m+RFY4jN|Mce6-@d-aG+a6qs>$nRNU-p{YUO?A_=?t9^4U(A*U z$a$}ig3aPnWZQb;X>BJ95HTni#EJdbCw>>Q)cj~Di%-szzCXlM^Q?~b&?mUYTO^tqR*>paIx3A6>z7*S8%juEYMw0;K?U`MF|a61h} zbXtLp4JSyZ8EFLo^TKquV=UZ3lL}YRgc#!{DVJOwSbc>$mFxBn8kuL4>pMs23)E@7 zgLh%2_o9VGr3z8i1jI_N2Jv`#g@f;KL{)VRUunuIZ}=`#344qz0fa6DAiQ03$n7Qecr$!UsoMa(z37xU?+$Bs zmo56Q^e(Q8UJx)y2ra2OaXzeu>FOf4HC!JrzxBJ7!)oOgEtH>r`x7{%43X;3VXuP- z^k|-}t&~qa4z{oK+JMzoDjmAKy=>%PI!E1-Nk?~vPQLAe+y`k@Z@oHgX?r6Y>Zm)_ zmh4svvW8(P46Biu5MhGsx3J-Mua(W-a)+-VRCVbwF36fPH#62I-|pJTnW%W|*j4xJ RdZ54M`d>VaIhge-004g$pnL!T literal 0 HcmV?d00001 diff --git a/pt/tag/time-schedule-blocking.html b/pt/tag/time-schedule-blocking.html new file mode 100644 index 000000000..d6beece96 --- /dev/null +++ b/pt/tag/time-schedule-blocking.html @@ -0,0 +1,296 @@ + + + + + + + + Time Schedule blocking - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/time-schedule-blocking.html.gz b/pt/tag/time-schedule-blocking.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..1a13d3811027f2a35c9663c699e939dd2cb82666 GIT binary patch literal 2931 zcmV-(3ykz1iwFP!000021I-$1bK5rZv;8Yj=32>(N$TO$u`H=|9!-0bG->Vh+R0=* z5DAfpL4qMb%W9h+bHC;O*ew8(A}LC-GHJ(lVm`3D*!L~~j=y;F^6|y*ub!e%Mr^u2 zRu{x@989c4TGM@aL$E*HNANR_h{VVXaVm(MSg$X>w;x*7p%_PGVqH_RNO&qOv`WNfYhj z)fL!=M4SVtqLdLJYWPTRA?Oljc?~TqHH<&1wwm) zmzzj7q)Ff}$G(NI0AOuxt1+PvET7KCF=k6iJw0hVK|dBY5SQD=w`t~d(_zHMa7aQWK1!R%pq<~N_ z>L4CxJRPBX!{M+#FauBmBmLwC3C^gG?s=Zq24kn#r@AW;ksO=G8J9e%mbMsI2bGrKqD*Qmr{VxZT0E-Y zXuMe_C6DWfntz! z4o){zEoE*kgAvEzv_?SQxGPyq+o5Bk;Br-d`bWBoHKkb*O8LT?*5iC_Dp>lSAkiP_ zh3}TZHe?-mD>l`gPJNp>Dh<^P*KjZ$&o-=MAud3708w#_Qj@i!ecRbGR)Kcp|Pu0LlX^0T8Jjy z$N4=L5DrH*&3=+wgF82~B;?0R$6#$q__z1+T!f{I|H#tZjf;8f>#-K^K2tdR8-20v zga5QZa|)pRhKn7A`rhEZJin`gy@SQfjxzllQ0}TYumsO;c9iG2!nvygMN6m@I|}q- z33cGE3KSE$qd3k_PcQDOGznk8Iy8g=v7=D06ymu;ytAS$Wys@Q#nMQ3RisZb)Sb4` zs*BuJslUMbQTjB!u|WPbP-oSb zGlpXbhq2nh7OA(w_xyMr-|X24_j=&^WR5c?wae+_K!lk(SIw5_1wm)%v5}>@ZSqYo zxv55ezL7lWAJ^ZjjS$?jEZnv#TwhA++d1cQ^F~l@moV3>JsdR5xN)ySEgo;N;nmDu zazQ09rIq^Pe1lcYVO`AC{vj|MbG>t&s-24FR$)#L;wQr?QEym~ZyjEkq1$cDHTevv z471r*-`RmnL#>U;XL@9J9)ZPK>Zp@V0*2Fk()e?*T99mG_IWw2GcK1uePP>Z zY>sX9R|GcpZI4lX>h57X0gViMC&%9mh9|@RgZ}XN;ZPm*E@Q7AkqHhUg$?r4Ss3^8 zLvvIA^r-tzxY!r7r2%r@=?!Ev`4risoDd>t$bl z3SGC>HBQlGfZwBux%~APdh@n^5}@8YNhZSXo6e;m^33yi7R$~d>byR)ANGz1y@x}4 z(0O~X1y82fyLtuksxNBRK)drS_LN#s_n_stLNOU&VA1DZrVareFD1}8JY_^Zbvs71 z&cXW0Nq`-t2Egq!6wzq~Ha46fnP#LF0L%-+-Hx$v2TdwmL1i??O;Rqo+S2+Kbt;GS z9W*k}Cf9ck(0$ZtJ-K&brgx%+MWqT+)da*!t_JaFd4YqUa70!LdDDBlPD3~eghwoY z;y!U`47FQ6B6A3=Zh#MwXlU`nLAUazbj-RxK8^i#pL`7TwPWrXpJjZ88B!npK#&Kh z8^B+X@&Ik{=e@#_TLMd!N~1U+0*M1W%VcIn6e8+dXrG?hkN$Hs7`%9O^tfLMsgf?- zA+(^-ge)8tet*OK`|m_~I<*QP>pOkma3ie|Dl)G=JH-x9 z1M9E?sK3nus8_JM1xl46{goGt6a}v`q&|eoDR1}!s)Rj6mHdd$<|C zrPOVJ-d=P{oVWY66VDd?S9%xMMb8KrBqS)`lisg}>FW5mHC!JpfAqVR?QG>1EtH@9 z_$xT143X;KVKsyZ^k|-}&6E#43bxPm(ty=wDjm8!^K9f_I!E1-Nk?~vPQEaM+y`k@ zuLnA9X?r6Y>Zp_0mh4svvW8(P46Biu5MhGsHnHJ$r + + + + + + + Tools - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Tools

      +
      + +
      + +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/tools.html.gz b/pt/tag/tools.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..80691965f3b9555ae1a7818f8462fa58b4307789 GIT binary patch literal 2863 zcmV+~3()i*iwFP!000021I-$1bK5rZv;8Yj_Ii>VlhnhBV_8z`Je!+5Yq!@Hn{ff$a1 ziIqrex({y%_NV&@e#Q}z7r&l8tN}1T?Q%0{R)^GMNXZB+rC0NoKBNe)oOo$(l z0#j1S$n=79CXkKJX%gW$9=qoC{u-kZkBOw8fhvzHME~V+%AA`tku;fc>3BSHv!5P3 zIXnLS?A`IQclqM_H+huwetoC(Q=yuqJRzxEPAndb1eN4cty7_#b7W1?1|+#ms_+Xk zQ)DdUu4~yR!b@q=;QbNf0m3t$Ndzk`kql`Z2++01G9QKrY(N-KB7jCX_K}Yzo?$^m zW05*rN`Y;1Y(mIVRsmPG6eHJNEEbM1s9LGY!8U24UA(#i+wf?F19GdiT@5PS%3CLi zgMv01Ga6r^FeUS?ROW>E!o`d^SOSHc2qaf#oLD$X81=MwxoYm7o=XXXDJDr8V`W;c z+fp)gcJbyFdImHbd}uTwmyC#z5Qr_qm@7jP5!VyKT?`%gC~Q(;z5l6y{=b%;L1e^zq;DidT1EBH497mKbCqF|ZFYs~`$%Zru{N>oU5EcNet!*_H z6oTc;**L~*DXFIyZ71l*!Um#qBE9hTloSyov1WKhdB*+aVfhsHE8{_BJgkh5D&za; zkMcqNDCOBkQ6pp(syajh1KWb6bY6mg*)NBG?Y8T-c^wDEcWe$L)O;Dx!?Ql zbQ4rc5`v{NU_RUkX_V{nYm(Ms-0v$;SW4`LD!fN%PH%{R`n_9&F3r&E)uk&&E2m2# zJQzXiQbzd3)bA0pp*meraB0ezjju6f7>aW%-Mu|0gteJk9|-R4?I~I2j4$k)5yF|| zr||L%{D*%Dnrg2HsNAA6mXQj8vl!Yczhm&N6eR{!#|4djExvKm;w^@C!4@AgA?bWs z5-Pa+F(N+2s2kC^5bfjy9QmLj`nS>Yocd&j)5e4jpVH)cTZ6u#k!pf)+^}oiw&1Sw zzWUt=|E0|hbDkk-5)$h=-qndO6}HwHG*v3+kD$D#S4}~b{p+Pp>QUk|)*D7USxq(h__qlN!sZIKYq=k19ACZyjm3=GR#K|CqkQ(YsykIR3R14HAurG%KeWIp#gM{hgfZgJmU{q!RxLY%6LAt6GaBEBc z-N6eD+e;UJ&QfALu~@ghJ!)~#GljFi(HHAJ_)iNorvS=txY$vsX9n-h`CS$4BkV19 zl<7Z!a#zKH9dUNEqdYGa&RrEKT8d9>M}b}~&)>bgs{+MD?kJA)`su}8l_uc}*cOIR zAa)e$twKCkh<8@Br3`tzt5_Q8u8Qg501EH=*+HD%HD}=v*V-RnaQV?5(9* zZ)-OQWZKuFBmIALi78Q=MRiyy|K>iiPWi3+KtJnuD?@n0Yu5p1YxC(a$(LQkwP9jgOhk$Nk9&yUyf z%@K!iuLrJA<~U^$dc%VJr0v2?-R>N#$!9=in9a8O&JJ7}YHdtD*E75G z2rSN0M_mLGFr4O-#(xK^1<5vMU*>a-BvElb<8t}aH@1z&=9W`my4%>dJx28cT^tou>8*cY><0dhX- z^H#I?6xp_6X~neS?YRa;XT{}c31+TF4ddpdSDgy$ZCQS4TesFVPSIt6KcR{F`14Qn z{zLuXT)lUaOoZL{ol8OFndk8=mYqY?`Q^-h*gGEd9uDn6=flAkJegwe>Mh8tzHhPy z+MQ>yr__SF2Q8=jipc;2i$3=bmnvqrjFfUAZJI2BtG^ua}ZGRo0RDoM2WW#o?-h>R5?HEK z8pQz-NF3lrq|(x(f5}eH7(o&MJJYANBeCjkHFn$h`Wh5j#8$tiuYR{wfndy@lN;P^wJn zFGayjQSd5L>U%>u + + + + + + + User - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/user.html.gz b/pt/tag/user.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..686f12fb6d5dd0b35a9746a0dfde15efb138dd59 GIT binary patch literal 2977 zcmV;S3tsdeiwFP!000021I-$1bK5rZv;8Yj_FBoUN$TO$u`DTd9!-0bG->Vh+R0=* z5DAfpL4qMb%W9h+bHC;O*ew8(A}LC-(zN5GjYwj5vF}|x#-BZY@#x~WmrqbABR1V1 zs~^O0989c4TGM^_La;yGNAPDH5s8r(;#3ehv0hz#XWzG~LotrX#JZ+rk?>Sn$m6jj zF@P?pFT;sXuBk_C{c?zCOeMw479M6~(sz0_QlXTIP2OendSd-*zdExY@hHKP&KRlC zrDQ_;4*_5s!(azXMSoS7`prV&X!VOn;e@EvXoW8l_|x@br*|;BMhoms`9T*nrIiVuD~`t8sUK4YHnA9 z3b*prN#dZOjmC_|S13%$d@GeXA--@iV-A);;U)sfl^G`%P7+2v?Om=K`&y5sguxJ# zB#p5$t=4TR89KXo@f>{zG#h+qG$EIah>#EnEyI{ALlP0!6T)2#9r!71QenOVlPm*e zdEvs`^qOddHPY)83i0QlRpA7j2aMo^3ata6@nDW4%9fL#A&?h%xrt;$ngssk*tZZC z0IaQTH6|2-<@b;7x5hJl?ctv@}{pDf#7WOO8gUa); z@_bZzzK8xOU(_F^JliO0gsehUhe%*x8!{H1m*DUB%SYUxBFT-ked6&{JJtxrki<^g zFhLUyT%U@BVVHf!xOa708%waS^1}$7IQNp9`dEb1fWlNg_}lL_N3~pn{!T`yKWq+y zaflrf8iW#touk41d&m8w!ATuz!BgL!r37CAZ|cW}cxnMzq&O)c)Q38V#~DvY==0%l zSRa@HD1niFa)ShC)JLCtp4SFrr`V^N7@?!8AQh!LGYC?WUeYLND0havt03iB?Ar;4 ztgVf6ulL32Ca9Do1WRSW{Ba|sQLe|YNm_?-zp6lCDX|x-@E)N#y&?YTS8ffuG()df zm#%nPIb90j!3bKHGQu~ee27DHR*cMQIjqQrpexS+AG#Wzk`e8n&? z*y3#_B%LoyLIro?M0RK>2+mX@}yeYVq6_mT7n;CQe!z42N=@gQ3Xfi%`z!@Tt~IR zERjOV2jM9M)!Ph`JJD|{CT&$tR&P3f3Z@AZb`Fgs^{y1rOX#}d?!jr%?ijiaRx~@b z;AD=`94ls^O&Pm%ioT3zA~}6d;%w|1{1$Xv^fA^}iLB}OJR)NkH;xJUX)8s)Y6knWHvw`lIM+mz6Zl`FU4L=SPgQRnCx}j<*b88ul zI0mOR0`kUP$zs|L9TNqYtMb!7(p9V}&5BUU7uK{M=WA2JLiYrT{y;Btw+yx+>%d#F zsh)J|+ssjEsAjl^gXwstSFI2QpecB-xIwA6T8X|b?Tl5R;H3y{Rjb>0uC&$bAJ-f| z_pe*{w{AHB)XqRmo5!|z$5hv=vW!}P`uZDGEk9$#QJWA}`~2z;ta9IF1j-&qS%fl? z{qMgit7V|RKtsQ`I?b#KDMdjQ|l-t5x*{V zG*5X{)l#ui|B!NiR#eEEZiv=`B2ZD%U(vwW%~-3S=8p}}Z6>k}jx6$apa{WX{={%1 zw8P>U5|1Qys`8bEs1I48Xd=oyp$A7g*|o%NJ!-3ICglnn5-$z%T_K!O3^fvbhY^3a z)Pq1ol7Od_2y0^!D^qfAe_b1(k*!vL6a7b8h$h`f`7;)f5RPh^{iwhOXKhvms0Wn} z$=XujZtugn2um0Lo~6037W3BEpDiwYrf~K*`eNM&|7n5d6hQe67dr~|oxyu?epdy1 z3yZfMW%@Uu+*NTHjkB8_<$0!X?y5l15~{$C0zF?slE140#YFBXj`QP_i@PdK!WXda z4xvEoDAY@Zc&-rdtY}La@_1LVG}2ua>0=Car){+A5OEF>MrbMmA)o!r-#C>9&@=NstZNFaof4Xk*_O|>qi@U#LQMcWhcaZR}EzLf9 zN%k?m`_Vo-%a(RTYz%HWpA&L>m#z8@Zi#Oo91(1&>LAYp-U9ojfx1a>Ib%46a2~4@ z2a$R!e9w>9@y#BaaIXihPv$sdQiqH_zD1a+bMS15o)dJ29vNAh+g#uDlACJg$~XQ8 z{p0#~wQ+@8mbKefwd+e^{W#}bZr-@7?ds-wwTFX-88_}Nsm1RtHYl6fS1zaornFL@ zpKq{=Ib4mo+V2HsW3EpcQnlCA+}h3QL2P6=CF%p9>N`7d zX{fa^`BabW&LglmOC5C*O~7!PPa1y;Rtu7C%s$J<8cCw!e8%PSx6f=Fjml&x% zGQjW9#QgmECwl#+esZI}J4q(O?(5E_Ao9%fcoxgfA?mz3v+wtg2fh14d(e4vumw-1 z*t>cO@~ZnzYoOhE7JEu9sC&?Iyrh^6FtF%zFH?uMj+YW>e4a3(-ntzlTIXQ>q$|LV zQUl<28j9$&0vj7nkW4eu3IOJX;cmxRxPvAYuAs6T<0dJWTy4ocK%L5^iVhl?ca!To z2k2|mX}xLT!c1>P3yVq>qN)jqm0S(t;qn3pKjMh26!NXje&=~5n zd`RXHSls|0BGJ&|`-5)fOX-+(e|!@A>puAi=xfK^Gd|1s3^SxIX+e+&s2jk)Amstt z;Lm%7Bew*WDwRfYKm-y8c$Ue`iYP?X18D!A+7JJ8G#EU8dGx4X38|7UJR!88&}u9k z739zG5;DwW{Zk$k0A2d2nx=d3M+svb9a5LJ3h3~?0@qL-FytYM$pSqFpY0xiHdkX% z*XA@(u~g+&dGg+h;r;cfuHKho{?~6sd78KiAM0CvKy)Lm5h^mTKI_H~PXp_)0;uoO z0n|%aodc!HkiL}%BSpch45^E2IpqyE)=JnzWC^{wIhaQTDZt!&3Dw`igK_=jJ>A!Ufv z3ItYjh(M3#$=Xc$(8FN+OfL*rZKl$p%QNam{-tx&Etzz5XXxY$OUQkYR`q(O)0Vb3 zqM?pDId92sr66k + + + + + + + WildFly - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/wildfly.html.gz b/pt/tag/wildfly.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..dbc306325dc8ff4947e48a4b79d752d337f7cb6f GIT binary patch literal 2930 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 literal 0 HcmV?d00001 diff --git a/pt/tag/yeoman.html b/pt/tag/yeoman.html new file mode 100644 index 000000000..5c05791fb --- /dev/null +++ b/pt/tag/yeoman.html @@ -0,0 +1,296 @@ + + + + + + + + Yeoman - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      + +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/yeoman.html.gz b/pt/tag/yeoman.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..edbce716a2628a720451d111e22318b15d35ee79 GIT binary patch literal 2892 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 literal 0 HcmV?d00001 diff --git a/pt/tag/zabbix-poller.html b/pt/tag/zabbix-poller.html new file mode 100644 index 000000000..734733baf --- /dev/null +++ b/pt/tag/zabbix-poller.html @@ -0,0 +1,296 @@ + + + + + + + + Zabbix Poller - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Zabbix Poller

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/zabbix-poller.html.gz b/pt/tag/zabbix-poller.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..8861086a3aca06170c1643f31cbc82042bea2063 GIT binary patch literal 2902 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 A;{X5v literal 0 HcmV?d00001 diff --git a/pt/tag/zabbix-server.html b/pt/tag/zabbix-server.html new file mode 100644 index 000000000..55ae92406 --- /dev/null +++ b/pt/tag/zabbix-server.html @@ -0,0 +1,296 @@ + + + + + + + + Zabbix Server - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Zabbix Server

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/zabbix-server.html.gz b/pt/tag/zabbix-server.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..4828e03cd9cb119eaf9b598b1c288465177efeb1 GIT binary patch literal 2911 zcmV-l3!wBLiwFP!000021I-$1bK5rZv;8Yj_Ii?AlhnhmV_8z_IFIHgZk*cfwU^0w zKoX)5g9Jl>mXtRC{T2Wzkrd@xxm?F~Vu8f&V&A&}H2mu6>$9uhFP@>PjM#X0s6G(G zaX7LPX^nT`4Z*>97s1akA`&Biic>-4$ol2#x&6p0PsKPQBkPuuS;A9kA)m*R!~i;@ zft-#4a!Y+;>xX?rV=5_Tw(v0{qps7bkeW)F*yKY-Z%5W|_AjUQ8IKYysmDl(E+r!p zgrvZfR5CLD5B5AdN0%hMB`LDeB~2n6$3xdl@2)W%@t8>Z5vcRHMEoBFLq$r*DoHo$HskzsZB7^XnU>rxMj9w^ju09 zOfgB)7%S6i-7Y0Vr&q7f(Q}|#<3pnfxnM+034s_hjJa}3BI5c&xU;?kAB9ay%$H!2 zMW`$@T0D-O{*M z8uv@%gVOjA{jq#dKT3JFQPcogg{tPJLF(CFn;oK;3?Q z5{yIaDWTz1!nAYHdvtizJ?I@*p=LY{Y%eAF26$5+HpEi{$SlQ40ij-0L43}5IzV6d z`~B*K2cQIIy2%^~&S-$X_INzyR+j=VQr??2ZB30J4%)b z<1>3cKsb~91YUlE|L`wCW9{_-m0Q$f87Tocv%anJI|koMQDQ)KT+les;u|L|-eOo6 zZ1Fx5l1>&&LIrm}L?oaXwIdoAq8%TDBk$Ej|2kS+(tvn4txf3gS(-d=Z_rmXQq2&K zYj&;L7Tk5xRlghIKQ*~w&NC!ULSkLV+dA>3!qz&2=1S%K0hIUjrY?xmpEiXZrg+gH zOv$N=nCeaXz5daiLgk>dDReA%Nb|So^e@=0aWQRLJx>UQ0=j-T=#tH*(FMfKE6C6_ z&GYV1)ez(}ETF_y)LvBCfZmqoB~QwwEym?Zr6u@KCN-8*aeyH$9+Yr2o|j3<<0`5R zW{DI^J_(~KsNQCf+=+ftF=?xEvU<|-Q!q`Suybf6sehx0UPIRvxA#tpcE`}Iv7*_b z1t$}XCRi~8ZOYK4WAxA16UoUriL;?=@Eg!^(Z^VKN@R_Hk){>o(FFC$h505PG!R+(}&Ul4Ad&JPXp^YVlPnR1c8Y7M-o=^+Uh6Q*UPi>3uFkP zB_X5;Aw>us9e&fyem$bi%eu5fH)D-P$cHtv)Wdayl|)|j3P9t$||*FG=iF zMWuyk0KQ+8%4Ia@$$<{(2Jfu;W;vKruCO7!&@eyyz$wL02|U6W3A}}#1R|1zJf%cf z8$)%Ocyb5O84%jFa*Z=SexQY@(>=?_Sb(=5R5bfpUJKq@&wY^fN_~KJM;gDs6Xzl< zT>LRhiSg88-Rdr@!GTW|&hAEEtoq>JEzpDlD4%n&rBKfe-s{VUD%gA2qHHPCzX0W- ziUS+#Y`&#DuN2Nh6)0MW4{S?;&KH+&UOiNSVj{N`$NA~m)kBpg;WOA>PN6_-Db$5R zyi|w}R2nPAplt-XL7kC8<=M}H2pmTyw(V3B@e%A4QCz+Q6J3syHb&sm=)#(Lp*!A7D>093^ z>fwZQx%u>_aM?XjFYG7(KIrw%FAmPSrI1?Eg%LtC8V7vls33oZ7m#5_>#y>l0O+Nk zs%6@He=K2)qeJS_RskJ;Qs5e@1%}*5F`1#K;Ir*L(B^6m>e_^cDwfLJDo@^7F}%AT z)#WeEu;9D*VtJ*s3LonSeM>Nx)&LcmS6_Hyho_;nUjo!$r~;@9*t`Oz(v<#c7R(d{ zuQa8;y_8el@U^8S>^`yt5IPlr@OI51?=G?Xo8cQu-3I8pi_Q|~-EQTYvO)i)-o>vU?nlCFW zyH|Q`z$z;(9eR0DS + + + + + + + Zabbix - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tag/zabbix.html.gz b/pt/tag/zabbix.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..f59e436aa2fc7ca1ac4ddbd5e1aff05488a6e8f1 GIT binary patch literal 3022 zcmV;<3o-N`iwFP!000021JxR9bK5rZv;8Yj_FBoUDe7Uzu`H=|oHWf%oH(`HYcG@W zfFwjA1__1$Eh}yQ`z-)cA}LCh+_d9M+K41}7yI7DWAMe(*JoG1T|7e*8M4vtK>Z+w zqhM&o(i-i;7lQrKE`mRUkVuTY2~Gr&L+j_OAMD3gaVWwe8CtiLOk62VL}BquZq1Ss2MsSl3`j6fKVLx4s&@{x}v zcCjF$GD(>&rNBBlRw1MbD}XCwioWAar_+`&s9LGY!&YgcUc9mb>+ooZ1G3TFjs_J@ z;cF|7f}A!QFdE&UNkYbJsf-Eng@YMuVF?uOLXcdUacJQj_55CXwv7<1%=gv9ZLaHhQ${Ny$%FkgU)XMwW3 zaA0nFOEkg~>17JJ_+!wjXa$@HjNq6GtplL(-57_I&4xcgC{OWh70HS;G5pK1Zy_uI zSX2Bz97V z37V+j`c%XW!|X2O-pxsAEXKad4}EmpI*jkiVL=y)p7~?k@QigR~-c7 z5PL#sFp)6aI_N$=Jn9^DkIPU~p7^$#5PSo?sUI8SsRm@4;5dg+AIcyeXFTbnFMGXS zdB6ow0wbOH4hhbvkG}LguMWmeuuoIbM+Zeg3QBFc5TqozreRP~u8X~!AmM4`+cAf% zt&MZo{_12ER6=5cr7~dlxDwJR*WK$hIYFw zUH-Iix&*?55wt92i0@1R?;{(k(+vferi|J67E^|yI@i+O*=bE+Zl>l3f;&4qN|rI> zQ~R!ua4Pu;eEbCe!+$XvX|D&U%%Uz!NdcfW?b#~7WALp6#RgQz1&w?yzH!q0D~5T& z7VlFb>3B9LlymoeNPLP>Go(>2+VL?s@?J&sFT>d-^@)p<%76}^xyiG>27N(8)dk_G zV%M^5!Cl84^>-!wr#d&xc!s1&NTlm{QzyPe*ji`MRjHichw`4>R0UD`)26V41kY-O zDL7RgQ{8c|+dEn-R0cYoK*zF1ntw#6f5L8si%H$=SwhGa(D6EchpaY@E+9@;K?aWL zns*1Ph9Hk&0VS@a_Poma^tLcAd0Z@Q5iSlYEy0g6sj-}j0}N^Lpn#+C+*C>)l~HXl zOQ=w?L3o;g>TL$eo#;0eleQ`+i#HuVInx9RJBLP+dN+#bHFRB3bMGW?cMRPME1Dge zb27$gj1@D`rVJc9LSIL&h)>Q*lnxw&UxSYGKE_%rku~~}hh*U3iZbwetUu}SNaR=} z5^YNsm5u%9ZKO4dWoeQD^k}!4lQ`fd`T9k97Not!a?261EWWJT3d=GHP8 zaSTpv1Z0i7lEt(gIwo>17v-mOpsQF_ngyYRPpwfo&X=ZwrS35jovvQ!t{JRD)`7QR zQ$6X_x0<85p{n6J>5c|&wr+(u0A0bCf+Nf|S1Qt*Qcqa{3SRQyR@J(W>q29_{Bg?DmMK(KjatNI_3kS8-cksXEG2Y4dUJ>|TP!WJA#}H39TGm57fsXa6g*4xE(L z=9cWSl5MKxXGQW6SreBh&R+J!a4d9^!4Z@TN$f;b84FP#a(UkR&9l26?CTO$lWohn zwpbhzuCSq8(jeQ*!wJRE*|-Fv#&>6W5Qs<;@Pra!tt>tBLYi4xS9Dl@6ni$4vk$Zo zRk~-{GZv7<4@#Q7S26~-tk!a<;)TA}TGN(n?yZ>!GY5Z6lPnSE^OkoFYCQH-;q0#T z#j+3n(*lhtfbu&owiN0IgZKLKp$hgMmfTy)^lw0UsNyghrFUD(^HSkFRDr^o_`tRl z=zMnh=H){bC?ax8aaymQT|HE3Vm>8_m_UKpQm6}sc&QK{tY|Yi;nB8YX{3iL(tQl| zplt-XA?ppdmFmsQtS5Y^qDju#w$=7Z;cOz1X^zY~r6QcG|)E>V4%za{+@`d_A zKk0Ae^L2}x+w%Sk^6eJl>s@nue($xM-hLVVx!Jz|V)&km;Lk0<_Dk7Km$3JV^?S#- zn}Tx_8$%e6$AoMi;>9?_HTe(-hXfm{Iw@ue(n3;gvCE-#?J^ue`WvWoHIaA=e9w=T z@y$-MaBjPfPsTW9Ql}VwNdaM|ZhNEs9Gb2lNGxt$DzAI+>?0Bo&IVyiw+q1Z4 z8(`fo!1C6CejIZyS8q?3&Mq>&+P!YYj4O9g)n>s4+wj$DC8tyZQ(CF#mn*Ddt`J0A zooWEH5!dHwiP}%C9$;kjZ1Ew*5Pk541=)edl^NRXxS+~sK;BI%Z#HW0fRPa6aR5+1nSkjRxj2iN4!pW8d}|)pvnB zY{#IHUil}7^M~{2z0?I7%$`KjkfMCCy-5G&#KfB6f`W-#$ycZ7kg*!7q zt@rv^%S=8(wryBiFs*odu0hdheg|a^W^SMu#?676I(*a1{OoQ_*;=5=7r&A!&tb1h6S#mEj7l4!YaAi!u$?33Rj03sBhj)u5aw2Z&9Q6 zK9K`6y%#ksDpiQ0CLmTaHHas(D;&JSAz3KoZTsCa4bh4rJR&U3{~UC?=NAWOokB>>>B192QyTev+EPLO63-yR z43|G;K>^TnKULE-_kN$l7)OWHrL6)w{G`A&R09mTk0LTfPr+xKd!Wt57}T{f4OA=@ zxmBLLvtW34IjW1d0-68qdoe#VUxbhKy*>uLlU5()nOEQFz%8Bx)_ws{-xvj`3z8^G zg&}?S6h`ubR~S;)Gc(F7?q$wl_mL%l(5V1~w@VJWzQpdYhOa4gE1=gGojK0C-O@db z8vPe~7so-*2^eHTP<95fTMX01rIgxmeKLFDHw(uX$}MUrKYj5FIHa5)wPJ(SFCx&R zd9pN9HuNM|KhtXiR+?$<(DR!ZmHbP`s5xh{r8~n`wh)Kh2WeF=#v65MdnFobsQV!` z*=;V!5{9KPtV(7=gbA|U#D?3gW;VMG8(gO<>e6FekR@fVW~@%W&9#v+QSjJ-qwWmp Q2Yo01f2kqlxuY)t0PfSn>Hq)$ literal 0 HcmV?d00001 diff --git a/pt/tags.html b/pt/tags.html new file mode 100644 index 000000000..9018a2b80 --- /dev/null +++ b/pt/tags.html @@ -0,0 +1,355 @@ + + + + + + + + Sipmann - Tags + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + + + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/tags.html.gz b/pt/tags.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..7a026ea08add7e28e3f822493a0c397e87b37e51 GIT binary patch literal 3848 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 Kx-{7}KmY*YPiXi6 literal 0 HcmV?d00001 diff --git a/pt/the-power-of-powershell.html b/pt/the-power-of-powershell.html new file mode 100644 index 000000000..25d5b0b97 --- /dev/null +++ b/pt/the-power-of-powershell.html @@ -0,0 +1,567 @@ + + + + + + + + O poder do PowerShell - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      +
      +
      + +
      +
      +
      +

      O poder do PowerShell

      +
      + +
      +
      + +
      +

      Como um usuário linux por muito tempo, eu automatizei algumas tarefas com scripts bash e fiquei longe do PowerShell... Voltei a utilizar Windows alguns anos atrás e ainda assim, não dei uma chance ao PS. Mas porque não? Eu fiz alguns scripts para automatizar algumas tarefas em um servidor Protheus.

      +

      Eu acabei achando os scripts PS de fácil leitura e entendimento. Abaixo, nós temos um script para remover arquivos filtrando pela sua extensão (ou sem extensão alguma no caso do script em questão).

      +
      Get-ChildItem "C:\TOTVS\protheus_data\system" -File -Filter *. | Move-Item -Force -Destination { 
      +    <# Diretório ao qual os arquivos vão ser movidos. Você pode utilizar formatos de data para nomear os diretórios #>
      +    <# LastWriteTime é a propriedade do arquivo corrent #>
      +    $dir = "C:\bad_files\{0:yyyy\\MM\\dd}" -f $_.LastWriteTime
      +    $null = mkdir $dir -Force 
      +    "$dir\$($_.Name)"
      +}
      +
      + +

      Você já precisou remover arquivos baseado no conteúdo de outro arquivo? Abaixo um script onde eu leio um arquivo que contem os nomes de arquivos que eu desejo remover.

      +
      foreach($line in Get-Content .\Desktop\bad_files.txt) {
      +    if (Test-Path('\\x.y.z.a\c$\TOTVS\protheus_data\xmls\'+$line+'.xml')) {
      +        Remove-Item('\\x.y.z.a\c$\TOTVS\protheus_data\xmls\'+$line+'.xml')
      +    } else {
      +        echo $line + ' - File not found'
      +    }
      +}
      +
      + +

      E um script bonus para parar e iniciar serviços (se você gerencia um servidor Protheus, você sabe o porque eu faço isto).

      +
      $servicesNames = 'app_main',
      +    'app_worker1',
      +    'app_worker2',
      +    'app_worker3',
      +    'app_worker4',
      +    'app_worker5'
      +
      +Write-host "Parando Serviços"
      +Write-host "--------------------------"
      +
      +foreach ($srv in $servicesNames) {
      +    Write-host "Parando: " + $srv
      +    $SrvPID = (get-wmiobject win32_service | where { $_.name -eq $srv}).processID
      +    Write-host "PID: " + $SrvPID
      +
      +    <# Força a parada caso o serviço esteja travado #>
      +    Stop-Process $ServicePID -Force
      +    Write-host "PDI " + $SrvPID + " parado"
      +}
      +
      +
      +Write-host "Inicializando Serviços"
      +Write-host "--------------------------"
      +
      +foreach ($srv in $servicesNames) {
      +    Write-host "Inicializando: " + $srv
      +    Start-Service $srv
      +}
      +
      + +

      Você tem algum script de automação? Compartilhe conosco :)

      +
      + + +
      +
      +

      Traduções:

      + +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/the-power-of-powershell.html.gz b/pt/the-power-of-powershell.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..c7fd42f59ddd07334595d0457ba576743ed062c7 GIT binary patch literal 5603 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 literal 0 HcmV?d00001 diff --git a/pt/top_level_statement_csharp_9.html b/pt/top_level_statement_csharp_9.html new file mode 100644 index 000000000..fdb14ddff --- /dev/null +++ b/pt/top_level_statement_csharp_9.html @@ -0,0 +1,513 @@ + + + + + + + + Top Level Statement no C# 9 - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Top Level Statement no C# 9

      +
      + +
      +
      + +
      +

      Olá pessoal, venho hoje falar sobre uma novidade que estará disponível na versão 9 do C#. Toda vez que você deseja criar um novo projeto, você sempre tem o mesmo arquivo Main, com a mesma estrutura. Na próxima versão do C# (versão 9), nós teremos uma nova funcionalidade chamada Top Level Statement. Com isto, poderemos programar a nossa aplicação sem toda aquela estrutura de namespace/class/public void static main. Veja o código abaixo.

      +
      using System;
      +
      +Console.WriteLine("Hello World!");
      +
      + +

      Parece muito simples, não é? Com isto, você pode brincar com seu código e até mesmo programar uma pequena WEB API. Para começar a brincar com estas novas features, primeiramente faça o download do preview do .net 5 SDK e modifique o seu arquivo .csproj para apontar o framework para .net5.0 e a versão de preview da linguagem. Abaixo como uma aplicação de console deve ficar.

      +
      <Project Sdk="Microsoft.NET.Sdk">
      +  <PropertyGroup>
      +    <OutputType>Exe</OutputType>
      +    <TargetFramework>net5.0</TargetFramework>
      +    <LangVersion>preview</LangVersion>
      +  </PropertyGroup>
      +</Project>
      +
      + +

      E assim você está pronto para brincar com as novas funcionalidades que estão disponíveis na versão preview. Vamos programar uma aplicação simples que faz uma requisição na API da NASA e printe a Imagem do Dia no console. Não é nenhum código mirabolante, é simplesmente para exemplificar o quão simples uma simples chamada de API pode ser. Feito isto, porque não salvar a imagem como um arquivo? Ou então enviar essa imagem via telegram?

      +
      using System;
      +using System.Net.Http;
      +using System.Text.Json;
      +
      +var API = "https://api.nasa.gov/planetary/apod?hd=true&api_key=DEMO_KEY";
      +var cli = new HttpClient();
      +
      +var response = await cli.GetAsync(API);
      +var data = JsonSerializer.Deserialize<NasaApi>(await response.Content.ReadAsStringAsync());
      +
      +Console.WriteLine(data.Url);
      +
      + +

      Por hoje é isso. Fique de olho nas novas features que o C# 9 vai nos trazer. Já temos várias disponíveis hoje para testar, esta é apenas uma delas.

      +
      + + +
      +
      +

      Traduções:

      + +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/top_level_statement_csharp_9.html.gz b/pt/top_level_statement_csharp_9.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..84e593d7ccb4d7c3716cf3bfda7e94687a2a7a5e GIT binary patch literal 5499 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 x(#Y{D%@W_@q|4HBgk*EVtR}3CzvZQo5Rp6Vg + + + + + + + Zabbix ICMP pinger processes more than 75% - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Zabbix ICMP pinger processes more than 75%

      +
      + +
      +
      + +
      +

      Então o seu systema de monitoramento creasceu e o seu Zabbix começou a printar "Zabbix icmp pinger processes more than 75% busy" no seu dashboard.

      +

      Dashboard do zabbix avisando sobre o erro

      +

      Tudo que você tem a fazer é abrir o seu arquivo de configuração (/etc/zabbix/zabbix_server.conf) e localizar a tag chamada StartPingers. Ela deve estar comentáda por padrão. Descomente a lina e define o seu valor para algo como 3 or 4. Deve resolver seu problema, ao menos até um próximo crescimento do seu monitoramento.

      +
      ### Option: StartPingers
      +#       Number of pre-forked instances of ICMP pingers.
      +#
      +# Mandatory: no
      +# Range: 0-1000
      +# Default:
      +StartPingers=4
      +

      +
      + + +
      +
      +

      Traduções:

      + +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/zabbix-icmp-pinger-processes-more-than-75.html.gz b/pt/zabbix-icmp-pinger-processes-more-than-75.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..06ba73d5c30ed6d6d526a9d8b9eee5cd0bafa129 GIT binary patch literal 4724 zcmV-)5{vC0iwFP!000021MNI(bK5wQpW|PFVQyCTj;W^|$Fijv=P|R{isQ`KvyV%q zTo4IKh)IGWK+DRkf6Uf>*t)B_PgnN~^2e?lASIF__3$`TzN*P&B8q4<`i1TW(9rQ$ zFV3D{{Qd1qGFHCV-#W$*;?ZE#vqEL{x8Mz=Zo*{r&hKp zpg!wa*PKm45h;r}B2X*<&4hP--y`j&(|7_o?ik#LxlOcGy2 zjHodU$ie>C#3tuF^l1{%#k*=;l?lSy5g!8JRfYJAe7 zw7KJlwh^U06Qzx!v{97y!G0a>CRM`<0$8wWQMjBSGfovtY_DlTO6Lf+fEU)aU;YL=eeh zBBxR@pAwgWAYg)u2zmxe5GP_(Ism~E$V7<1CHwp@5fdbr2Z}~%3v#?_{taR|C4oWc zQaK(78oBjqssI1sfGpKx7!N!y$IQJ{JU97CyV-8q&3(JQPgWt3%qa-sH4oyO#Bo%1 zQ*^X27b=`hd6$e>?%FRW#Ep<7syS!TwHdz3R6K!kCDT)fvkGAD(-B)^K5IDH$h@kD z!6=n@;`vs3)gfc9Y*5duQw11qVA>OO>cDdtdfd^mrh#qW=(eIO)&6W2D9Fjh*(v!R za2Dv$-K3g&3@nY!+)Il#NNJ4j(zUy#NzVM>v0E1IFgpOm|p7y@(-Ye+VL# z^^p)GkI|4zEd#*u?U4H1oA!PJB~9qG3T1(t5dIa^wFs2}tX)AdmPqL(!`U>T-V}^T z4_c1U4J5c@He|{fua60l7>+f;bIb$bPIqVD#;weAJM-MhJnvj{!5^mVxmJqn`_U_M

      RgQ?5eKdv3P=UDa`u~FA5}p`EM!!n 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 + + + + + + + Zabbix poller processes more than 75% - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Zabbix poller processes more than 75%

      +
      + +
      +
      + +
      +

      Este é o terceiro post sobre configurações para o Zabbix. Todas as alterações que eu sugiro nestes posts, são baseadas em um servidor com 50+ hosts. Outro problema que pode ocorrer em seu servidor, é o poller de informações ficar sobrecarregado pela quantidade de servidores que ele precisa pegar carga de informações juntamente com os servidores que não respondem a requisição. Abaixo duas imagens onde você pode ver o log e um gráfico onde aparecem os percentuais de uso dos poller.

      +

      Dashboard log sobre o processo do poller

      +

      Gráfico mostrando o percentual de utilização de cada coletor

      +

      Para resolver o problema acima, vamos voltar ao arquivo de configuração zabbix_server.conf e localizar duas variáveis, StartPollers e StartPollersUnreachable. Aumente o valor delas conforme necessário. Não existe um número mágico, você deve verificar o que melhor funciona para você. Mas tenha em mente que StartPollersUnreachable é responsável por aqueles hosts que não respondem ou não são localizados e irão segurar a thread do poller por mais tempo, causando uma fila e um maior processamento/tempo de atualização.

      +
      ### Option: StartPollers
      +#       Number of pre-forked instances of pollers.
      +#
      +# Mandatory: no
      +# Range: 0-1000
      +# Default:
      +StartPollers=20
      +
      +#...
      +
      +### Option: StartPollersUnreachable
      +#       Number of pre-forked instances of pollers for unreachable hosts (including IPMI and Java).
      +#       At least one poller for unreachable hosts must be running if regular, IPMI or Java pollers
      +#       are started.
      +#
      +# Mandatory: no
      +# Range: 0-1000
      +# Default:
      +StartPollersUnreachable=5
      +
      + +

      Depois da alteração, reinicie o serviço e espere alguns momentos e veja o seu dashboard novamente. Abaixo o efeito que a troca teve em um dos servidores que acompanho.

      +

      Gráfico mostrando os novos percentuais de utilização dos processos após as alterações

      +
      + + +
      +
      +

      Traduções:

      + +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/zabbix-poller-processes-more-than-75.html.gz b/pt/zabbix-poller-processes-more-than-75.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..6e01d73f7cf0f9bbb64365dac9e5dd4c90860657 GIT binary patch literal 5342 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 literal 0 HcmV?d00001 diff --git a/pt/zabbix-running-on-low-memory-mode.html b/pt/zabbix-running-on-low-memory-mode.html new file mode 100644 index 000000000..daf04e5d2 --- /dev/null +++ b/pt/zabbix-running-on-low-memory-mode.html @@ -0,0 +1,554 @@ + + + + + + + + Zabbix Running on Low Memory Mode - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Zabbix Running on Low Memory Mode

      +
      + +
      +
      + +
      +

      Olá pessoal! Trago hoje outro post sobre Zabbix. Este é sobre aumentar o cache do seu Zabbix Server. É perfeitamente comum (se você roda com as configurações padrões) receber avisos sobre Zabbix value cache running on low memory mode no seu dashboard ou arquivos de log.

      +

      Zabbix Dashboard alertando sobre problemas de memória +Zabbix Dashboard cache gráfico com 70% utilizado

      +

      Para resolver, abra o seu arquivo de configuração (zabbix_server.conf) e procure pela tag CacheSize. Descomente a linha e defina um valor maior que 8M (8M é o valor padrão). No meu caso, nós configuramos um cache de 100M. Depois da troca, reinicie o serviço para que o mesmo tome efeito.

      +
      ### Option: CacheSize
      +#       Size of configuration cache, in bytes.
      +#       Shared memory size for storing host, item and trigger data.
      +#
      +# Mandatory: no
      +# Range: 128K-64G
      +# Default:
      +CacheSize=100M #Descomente esta linha
      +
      + +

      Zabbix Dashboard resolved memory problem

      +

      Até breve.

      +
      + + +
      +
      +

      Traduções:

      + +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/zabbix-running-on-low-memory-mode.html.gz b/pt/zabbix-running-on-low-memory-mode.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..3f28e22b9f115e3e797322c2654c20cfc8591a51 GIT binary patch literal 4998 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 literal 0 HcmV?d00001 diff --git a/pt/zabbix-server-out-of-memory-crash.html b/pt/zabbix-server-out-of-memory-crash.html new file mode 100644 index 000000000..7ce0d553e --- /dev/null +++ b/pt/zabbix-server-out-of-memory-crash.html @@ -0,0 +1,546 @@ + + + + + + + + Zabbix Server Out of Memory - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Zabbix Server Out of Memory

      +
      + +
      +
      + +
      +

      Você tem um servidor Zabbix crashando e observando o arquivo de log /var/log/zabbix/zabbix_server.log você localiza a seguinte mensagem referênciando falta de memória?

      +
      __mem_malloc: skipped 0 asked 24 skip_min 18446744073709551615 skip_max 0
      +[file:dbconfig.c,line:94] __zbx_mem_realloc(): out of memory (requested 16 bytes)
      +[file:dbconfig.c,line:94] __zbx_mem_realloc(): please increase CacheSize configuration parameter
      +
      + +

      Apesar da simples solução para o erro, isso acaba sendo um problema comum em servidores que tem uma certa quantidade de itens sendo monitorados (servidores, switches, firewalls, bancos, etc...). Para resolver o problema, vá até o ser arquivo zabbix_server.conf e procure pela propriedade CacheSize e sete o seu valor para uma quantidade maior. O seu valor default deve ser algo como 8M. Em clientes que tenham algo como 4 servidores, 7 firewalls/appliances, e algumas outras coisas (bancos, apps), 32M deve resolver o problema, mas você pode setar até algo como 8G (ressalto que mais memória nem sempre é melhor).

      +

      Até breve.

      +
      + + +
      +
      +

      Traduções:

      + +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pt/zabbix-server-out-of-memory-crash.html.gz b/pt/zabbix-server-out-of-memory-crash.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..cd671cd5a18349b1c3e00522a29035f5344a8c0b GIT binary patch literal 5000 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 z + + + + + + + Java - Files.readAllBytes throws OutOfMemory - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Java - Files.readAllBytes throws OutOfMemory

      +
      + +
      +
      + +
      +

      When you need to interact with files, there's the possibility to read all bytes from the file with Files.readAllBytes. But be aware of the kinds of files your application will deal with because the Java API files have a limit for the buffer that is defined as Integer.MAX_VALUE as you can see above or at the OpenJDK sources.

      +
      public static byte[] readAllBytes(Path path) throws IOException {
      +    try (FileChannel fc = FileChannel.open(path)) {
      +        long size = fc.size();
      +        if (size > (long)Integer.MAX_VALUE)
      +            throw new OutOfMemoryError("Required array size too large");
      +
      +        byte[] arr = new byte[(int)size];
      +        ByteBuffer bb = ByteBuffer.wrap(arr);
      +        while (bb.hasRemaining()) {
      +            if (fc.read(bb) < 0) {
      +                // truncated
      +                break;
      +            }
      +        }
      +
      +        int nread = bb.position();
      +        return (nread == size) ? arr : Arrays.copyOf(arr, nread);
      +    }
      +}
      +
      +

      With that in mind, check if isn't better read chunks of bytes e work with that slice in exchange of loading the whole file into the memory ;). Above a simple example of how you can read chunks of bytes from the file.

      +
      byte[] buffer = new byte[1024];
      +FileInputStream in = new FileInputStream(file);
      +int rc = in.read(buffer);
      +while (rc != -1)
      +{
      +    //crazy stuff here with buffer
      +    rc = in.read(buffer);
      +}
      +
      +

      +
      + + +
      +
      +

      Translations:

      +
        +
      +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/reading-files-java-readAllBytes-outofmemory.html.gz b/reading-files-java-readAllBytes-outofmemory.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..19531966e922e3db8e322d5f79b03f4810c1a78f GIT binary patch literal 5163 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 Zq(tO)dEvEZ>OtLZ{(nvL&EV}^0019D954U? literal 0 HcmV?d00001 diff --git a/removing-user-from-sql-server-database.html b/removing-user-from-sql-server-database.html new file mode 100644 index 000000000..9cfd7df58 --- /dev/null +++ b/removing-user-from-sql-server-database.html @@ -0,0 +1,519 @@ + + + + + + + + Removing a user from SQL Server database who owns a schema - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Removing a user from SQL Server database who owns a schema

      +
      + +
      Updated: 21 October 2020 +
      +
      + +
      +

      Your customer urge you to drop a user from the MsSQL Server database, but you stuck with the following related error:

      +
      Error: 15138 The database principal owns a schema in the database, and cannot be dropped.
      +
      + +

      That means that the user owns one or more shcemas of your database. If you don't have access to the SSMS to see which schema or objects the user owns, the following SQL should do the job.

      +
      USE [DATABASENAME]
      +GO
      +
      +select so.name Objeto, su.name Owner
      +from sys.schemas so
      +inner join sysusers su on so.principal_id = su.uid
      +where su.name = 'username'
      +
      +select so.name Objeto, su.name Owner, so.xtype Tipo
      +from sys.sysobjects so
      +inner join sysusers su on so.uid = su.uid
      +where su.name = 'username'
      +
      + +

      Once you have the objects/schemas owned by the user, you can change them with the following SQL (schema change sample):

      +
      USE [DATABASENAME]
      +GO
      +ALTER AUTHORIZATION ON SCHEMA::[db_datareader] TO [dbo] -- new owner username
      +ALTER AUTHORIZATION ON SCHEMA::[db_datawriter] TO [dbo]
      +GO
      +
      + +

      Then you're ready to drop the user DROP USER [username]

      +

      How to list all the schemas and it's owners?

      +

      Here's a script to list schemas and it's owners.

      +
      USE [DATABASENAME]
      +GO
      +SELECT
      +    schema_name(schema_id) AS schemaname,
      +    user_name(schm.principal_id) AS username, *
      +FROM sys.schemas AS schm
      +GO
      +

      +
      + + +
      +
      +

      Translations:

      + +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/removing-user-from-sql-server-database.html.gz b/removing-user-from-sql-server-database.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..60987710f59f249fcbf4f0ff36515d3e4c3e19d1 GIT binary patch literal 5110 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 Y + + + + + + + Scaffolding a React app with Parcel and Yeoman - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      + + +
      +

      Since Parcel JS arrived, I've been using it a lot as an awesome alternative for WebPack. Webpack isn't bad but IMO it's too complex for the job and parcel do the same (at least the basic) with almost zero configuration. But if you need to create many apps (like a react app) over and over again, it get's a lil boring following the basic steps.

      +
      npm init -y
      +npm install --save react
      +npm install --save react-dom
      +npm install --save-dev parcel-bundler
      +npm install --save-dev babel-preset-env
      +npm install --save-dev babel-preset-react
      +
      +#create .babelrc file
      +#create html, css, jsx files
      +
      +parcel index.html
      +
      +

      It's not a hard job, a simple shell script do the job, but what if you need some IFs when creating the app, or even change a few things at the package.json? A shell script still does the job, but come on... There is a better way. Yeoman is here for you. I've already talked about it on another post (Portuguese post).

      +

      Straight to the point, I've released a Yeoman generator to get the things a lil quicker. The name is generator-parcel-react and it still lacks a few things that I will deal with soon. It's pretty simple to use it.

      +
      #First time only
      +npm install -g yo
      +npm install -g generator-parcel-react
      +
      +#every time you create a new app
      +yo parcel-react
      +
      +

      And that's it. Right now you can scaffold and app with React, SASS and React Router. Hope you like it and feel free to ask new features.

      +

      +
      + + +
      +
      +

      Translations:

      +
        +
      +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/scaffolding_react_app_with_parcel_yeoman.html.gz b/scaffolding_react_app_with_parcel_yeoman.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..57a11d0de0cde19aab707a4209c05e0dc919d61b GIT binary patch literal 4998 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 QzlHAq0L%6B36)L&0OOIj_y7O^ literal 0 HcmV?d00001 diff --git a/select_specific_fields_with_efcore.html b/select_specific_fields_with_efcore.html new file mode 100644 index 000000000..647f3a475 --- /dev/null +++ b/select_specific_fields_with_efcore.html @@ -0,0 +1,505 @@ + + + + + + + + How to set columns on select using Entity Framework - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      + + +
      +

      So, you use Entity Framework Core, and you usually code your selects like the following, maybe you are getting too much data.

      +
      var products = Products
      +    .Where(p => p.UnitsInStock > 0)
      +    .OrderBy(p => p.ProductName)
      +    .ToList()
      +
      + +

      Running the query above, on my table, you'll get the following output, take a look at how many columns you are getting back from your database.

      +

      Screenshot with every single column

      +

      In my case, I only care about the Title, PublishedData, and a small description. So to get back only these fields, we have a few options. In the first one, we'll set the fields and return them as a dynamic object, the second one, is to give the .NET a class to use.

      +
      var products = Products
      +
      +    .Select(p => new {p.ProductID, p.ProductName, p.UnitsInStock, p.UnitPrice})
      +    //.Select(p => new ProductDTO {p.ProductID, p.ProductName, p.UnitsInStock, p.UnitPrice})
      +
      +    .Where(p => p.UnitsInStock > 0)
      +    .OrderBy(p => p.ProductName)
      +    .ToList()
      +
      + +

      Screenshot with fewer columns and also fewer data size

      +
      + + +
      +
      +

      Translations:

      + +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/select_specific_fields_with_efcore.html.gz b/select_specific_fields_with_efcore.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..1a6455360259e2b363380a53c03abf316dee0012 GIT binary patch literal 4845 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 TG(>;UZ|wXJ*k(BO!BYSLT<~G) literal 0 HcmV?d00001 diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 000000000..382c4f3fa --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,881 @@ + + + + +https://www.sipmann.com/ +2024-02-14T00:32:49-00:00 +daily +0.4 + + + +https://www.sipmann.com/tags.html +2024-02-14T00:32:49-00:00 +daily +0.4 + + + +https://www.sipmann.com/categories.html +2024-02-14T00:32:49-00:00 +daily +0.4 + + + +https://www.sipmann.com/authors.html +2024-02-14T00:32:49-00:00 +daily +0.4 + + + +https://www.sipmann.com/archives.html +2024-02-14T00:32:49-00:00 +daily +0.4 + + + +https://www.sipmann.com/monitoring-mysql-restarts-with-powershell.html +2020-12-21T13:30:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/mysql-dual-password-functionality.html +2020-12-09T13:40:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/apache-nifi-json-to-sql-replacing-underscore.html +2020-12-02T14:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/blocking-user-on-sql-server-based-on-schedule.html +2020-11-14T07:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/select_specific_fields_with_efcore.html +2020-10-28T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/zabbix-running-on-low-memory-mode.html +2020-10-20T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/monitoring-mysql-replication-with-powershell.html +2020-10-14T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/microsoft-against-covid.html +2020-10-03T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/the-power-of-powershell.html +2020-09-21T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/top_level_statement_csharp_9.html +2020-07-29T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/zabbix-poller-processes-more-than-75.html +2020-07-02T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/monitoring-website-heath-with-azure-functions.html +2020-06-22T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/azure-data-fundamentals-certification-80-discount.html +2020-06-09T12:30:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/zabbix-icmp-pinger-processes-more-than-75.html +2020-05-25T16:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/zabbix-server-out-of-memory-crash.html +2020-02-27T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/flutter_with_firebase_auth_crashing.html +2019-10-03T19:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/removing-user-from-sql-server-database.html +2020-10-21T18:40:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/limiting-connection-resources-sql-server.html +2019-08-12T12:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/using_git_hooks_easy_your_life.html +2019-07-30T20:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/microservices_nodejs_express_rabbitmq_part_2.html +2018-04-13T13:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/microservices_nodejs_express_rabbitmq_part_1.html +2018-04-04T11:25:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/connecting_to_database_through_ssh.html +2018-03-29T10:03:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/now_posting_on_grepora.html +2018-03-24T00:40:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/scaffolding_react_app_with_parcel_yeoman.html +2018-03-17T13:00:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/cloud-not-open-connection-java-mysql-hibernate.html +2018-03-09T12:35:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/socketException-protocol-family-unavailable-java-docker-wildfly.html +2018-03-04T17:40:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/linux-external-display-with-disper.html +2018-02-27T12:40:00-03:00 +monthly +0.8 + + + +https://www.sipmann.com/reading-files-java-readAllBytes-outofmemory.html +2018-02-17T13:00:00-02:00 +monthly +0.8 + + + +https://www.sipmann.com/category/azure.html +2020-10-03T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/category/flutter.html +2019-10-03T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/category/front-end.html +2018-04-13T13:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/category/java.html +2018-03-09T12:35:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/category/linux.html +2020-10-20T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/category/mysql.html +2020-12-09T13:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/category/net.html +2020-10-28T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/category/powershell.html +2020-12-21T13:30:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/category/random.html +2018-03-24T00:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/category/sql-server.html +2020-11-14T07:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/category/tools.html +2020-12-02T14:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/mysql.html +2020-12-21T13:30:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/mysql-restart.html +2020-12-21T13:30:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/powershell-monitoring.html +2020-12-21T13:30:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/mysql-dual-password.html +2020-12-09T13:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/apache-nifi.html +2020-12-02T14:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/convertjsontosql.html +2020-12-02T14:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/replacing-underscore.html +2020-12-02T14:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/sqlserver.html +2020-11-14T07:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/user.html +2020-11-14T07:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/time-schedule-blocking.html +2020-11-14T07:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/dotnet.html +2020-10-28T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/dotnet-core.html +2020-10-28T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/entity-framework.html +2020-10-28T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/ef-core.html +2020-10-28T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/specify-columns.html +2020-10-28T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/zabbix.html +2020-10-20T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/shell.html +2020-10-20T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/low-memory.html +2020-10-20T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/cache.html +2020-10-20T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/mysql-replication.html +2020-10-14T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/powershell.html +2020-10-14T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/powershell-mail.html +2020-10-14T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/azure.html +2020-10-03T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/certification.html +2020-10-03T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/microsoft.html +2020-10-03T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/script.html +2020-09-21T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/getchild-item.html +2020-09-21T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/remove-item.html +2020-09-21T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/stop-proccess.html +2020-09-21T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/c.html +2020-07-29T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/net.html +2020-07-29T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/zabbix-poller.html +2020-07-02T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/poller-proccess-more-than-75.html +2020-07-02T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/azure-devops.html +2020-06-22T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/monitor-website.html +2020-06-22T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/azure-fundamentals.html +2020-06-09T12:30:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/azure-certification.html +2020-06-09T12:30:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/discount.html +2020-06-09T12:30:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/icmp-pinger.html +2020-05-25T16:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/icmp-pinger-more-than-75.html +2020-05-25T16:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/zabbix-server.html +2020-05-25T16:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/out-of-memory.html +2020-02-27T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/crash.html +2020-02-27T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/flutter.html +2019-10-03T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/firebase.html +2019-10-03T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/arraymap.html +2019-10-03T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/noclassdeffound.html +2019-10-03T19:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/the-database-principal-owns-a-schema.html +2020-10-21T18:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/resource-governor.html +2019-08-12T12:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/git.html +2019-07-30T20:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/pre-commit.html +2019-07-30T20:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/hooks.html +2019-07-30T20:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/nodejs.html +2018-04-13T13:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/microservices.html +2018-04-13T13:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/rabbitmq.html +2018-04-13T13:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/expressjs.html +2018-04-13T13:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/imagemin.html +2018-04-13T13:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/imagemin-pngquant.html +2018-04-13T13:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/node-js.html +2018-04-13T13:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/openssh.html +2018-03-29T10:03:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/tunnel.html +2018-03-29T10:03:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/ssh-tunnel.html +2018-03-29T10:03:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/ssh.html +2018-03-29T10:03:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/through-firewall.html +2018-03-29T10:03:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/grepora.html +2018-03-24T00:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/random.html +2018-03-24T00:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/yeoman.html +2018-03-17T13:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/parcel.html +2018-03-17T13:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/react.html +2018-03-17T13:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/java.html +2018-03-09T12:35:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/hibernate.html +2018-03-09T12:35:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/wildfly.html +2018-03-04T17:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/docker.html +2018-03-04T17:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/javanetsocketexception.html +2018-03-04T17:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/protocol-family-unavailable.html +2018-03-04T17:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/linux.html +2018-02-27T12:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/external-display.html +2018-02-27T12:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/disper.html +2018-02-27T12:40:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/filesreadallbytes.html +2018-02-17T13:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/tag/outofmemory.html +2018-02-17T13:00:00-03:06 +daily +0.4 + + + +https://www.sipmann.com/author/mauricio-camargo-sipmann.html +2020-12-21T13:30:00-03:06 +daily +0.4 + + + diff --git a/sitemap.xml.gz b/sitemap.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..d21633ac559a11d9eb270fc4778b9ddaa8476edf GIT binary patch literal 1843 zcmV-32h8{%iwFP!000021J#^ObE7yAhVS_msodKJoDbXO$<%Ju-eymm!`>)a2+%}G zL=v%?U%xG|9j9hYg12fU-y96#X-TbqC3SoCbz6z+SEdbD^2<#;iEgf$q$=aG_;Se6hnF^{$)8tIk+7 zSt$DGo-~I?>xxJ@p{km$rtVw3hZtL_>@kUwTZj^fZ=a%QIZKwe3&0Oigg5SPxmwYZ z$b#jXy*y@wi*_|Vx^lIuHCLM3_A#2=uBL~-u2$2I=QCKA6lPM|N(9P>ozDtQt~-CQ=MyC>NQuDK#b0b-EZJe}H5WhO^d62yF6NE6R*v2K`hs zu=p}~xEr*<&HSPG>xQkJT8EMmbkojP$&UsN*@t8^V9GrtzD?<2Gh&G&&WIaFL>Qn< zTNeuYIcOe1#xW!}(hi#A)J5V`9PP#yr&SF#_Rl#3><*Hzz>7Iz@sI#3zd+dqEpb2TgZCWbzY*I!{ zo3>~~DtOKY*dJgPJtdKUF@%lGvBgt~GW0tdu&uEdOsbuW+v+8)aS56xr!1L6bPMs! zE!r-_l6cUP2nA}qOzyl{vUdg?R92;XPfl&ARa2CyIXSgD{#hrUup4IH_@&yUwKAOn zN~Q&_6qF{z%-yz&$C=1blIKdeE!4BeqbAWcQTt}%>Z>$j7w4I0K)!G_k(sJSi9cVc zAFelleG=je*D58~Je;(wJF2$o!+7hT_kW+Gdtk<94L>$GP`4c%I-}(kJER@JK1m^T>P*?dMdBMJ zj82H~fXbxB#~|0FVi*#hgXhgJqFMVCnHE_^Qw<&NhJo83B!;}2?HcvN#FhXc-!h6q zC#6nYg%0^sqSL6vCa-IQ%OQmd-x4}*@VmpEPaWsOgbsVi!V4YLP|a&QD$&jZWx*^h zxyZnkWrPmfrLM4xKs8p?U3!+w&k7xuj!LTZ064gO3Ip+7=I5vsPcKpQke}+t=lSWW zzCtQw>{Zp{@=tvPtA3+(pGg}!?jgJPkSjYXBi0-7Ck0Fx$Y&)Rd*D3EGai*t>=*U? zL}-68oIFks(hYLCj%_MvD-Cz5-Bynuw94s(~}9y%w{nzXJQJ#bE`D8ABUEYC3x zWTE4_3bK7JF)BtbDX)nDwUGu0^kw~{ss+3(9Q)b;C~*C#r5aZl;A2_N?Wp{JA8QCF zyi`?%Puf*igbvvk9)z6k__q7DE0zcyc3->^I_Iv~B>djz6)9N7<)v^!EsK|ioLp-K z1MHk1!tZ}q95S|w$cJKSq+}v=N^D5D7}DUoysvQsw^rE@5qy)LQ`_bxf`*=i?I_Qv zu=AmpyK=zLDZ3iR&>=&wx9JugXH`pj06nMf(Mx)wtI`ae(v3{XY+r-Q_BE)XQxBBL zhK@c|(e~?_S1${^_w~A=^PW*j>}6kCFypF+QSYr?_3-B_hP|Djj4y8f{iyv + + + + + + + Solving java.net.SocketException: Protocol family unavailable on a Java + Docker + WildFly - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      + + +
      +

      On the last days I've been playing with WildFly Swarm and I decided to deploy a simple app with Docker. Should work fine, at least that was what I thought. Built a container with the following Dockerfile and instead of a working web app, all that I got was the error java.net.SocketException: Protocol family unavailable.

      +
      FROM java:openjdk-8-jdk
      +
      +COPY target/issues.jar /opt/issues.jar
      +
      +EXPOSE 8080
      +
      +CMD ["java","-jar","/opt/issues.jar"]
      +
      +

      For some reason, WildFly and Java decided to use the IPv6 network interface from Docker instead the v4, so all you have to do is tell Java to prefer IPv4 instead with the following configuration option in your pom.xml file inside your WildFly plugin.

      +
      <plugin>
      +        <groupId>org.wildfly.swarm</groupId>
      +        <artifactId>wildfly-swarm-plugin</artifactId>
      +        <version>2018.2.0</version>
      +
      +        <!-- ADD THIS -->
      +        <configuration>
      +          <mainClass>org.wildfly.swarm.examples.netflix.ribbon.frontend.Main</mainClass>
      +          <properties>
      +                <java.net.preferIPv4Stack>true</java.net.preferIPv4Stack>
      +          </properties>
      +        </configuration>
      +
      +

      Another way to solve is adding the same properties to the run command at the Dockerfile, so you choose where you'll add it. Bellow the Dockerfile solution.

      +
      FROM java:openjdk-8-jdk
      +ENV JAVA_OPTS="-Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true"
      +
      +COPY target/issues.jar /opt/issues.jar
      +
      +EXPOSE 8080
      +
      +ENTRYPOINT exec java $JAVA_OPTS -jar /opt/issues.jar
      +
      +

      +
      + + +
      +
      +

      Translations:

      + +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/socketException-protocol-family-unavailable-java-docker-wildfly.html.gz b/socketException-protocol-family-unavailable-java-docker-wildfly.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..21058e1dfa80c56685b7e0ab75e6496e75540d00 GIT binary patch literal 4984 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 + + + + + + + Apache Nifi - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Apache Nifi

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/apache-nifi.html.gz b/tag/apache-nifi.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..4f0a4d2b9e0157b58d59a5956a0555bd56e917af GIT binary patch literal 2905 zcmV-f3#RlRiwFP!000021I-$1bK5rZv;8Yj_FBoUN$TO$u`D@to^25;P7M@!Ou7*5~E;_GeP9U`R)9vd*89A5*(9>b4AG_<(YI)z!OOl0A0{f z&L<(cq5*OB!#<)3l@v2q1elRY-|N*#&819T@>fo;Ce9!3Z>R1f9;aB+DI*qLN+u+X zNQo(_WaQ*D#lf7Qmvlyvi_T~o<0KjTW^#9p-Iymt(hoqJCl=}d1e`MOI!h%@r(Ajg zkNy0oA0D3`{(1WA;j(w}^VJ{nAnpDBtJ0E1HO+WRGP#^MJQ@iq$%R_SqFiv~oS+Rz za+%uj3o=z?9OSR-IwT^$FkQ=Ur%D=m?n(cMZn*PPXI3HpJIP=DB*1mh5Q zPG~fjFzp=-?%zA?9}JG_Pz#=g?ldF#5_nS|F2qv{$RfjO387xpK?2TrHbP$yhr{~B z6hH~g^wVo3IHMu@ItYR`7&pTq&BX{E*n(I}^`;P{B)gz-)KKme2bWRC^CWar4#`>@ z=U(rd<4sT*NePz9fW>elq)~3buSiyh@xQa6u#`~rRCtfjj9!!Q_&dJ_U74ZRt4mjo zR!)~ecrb$2rHt{lDc&RGLQ%S;;L?;a7hhq@FjVGNx;s1G9M)!PeIU5Av!i60F}`rG zM+oPVAH&O!@E`uA=tO%xKou69vYc1|-eTyg%#OjgGL#xn9TzkSwfM$K%eNTT1zWt& zg`~4(MX2QN$C!i^qi#%-QnaHZaOAy)=wHXnGa8a9&KeUsd@7R{Jq`Mb#;OCtNyDyn z+k(5!`s#Nh{KqyoEO>^bNl2p0cULFAOt@NS&{3(JKZ2^BT{Z<#`qQRxqYN)wgt45e zjH$tFI2az@C{zKum_ws-gEaq&PCvnJgNu3F>P12*70?g*VV`U^jV>U5Q9;JO>6mxN zs)nF|VF4wsruMSRhV;ssmprvgTY~LLr6u@KCN-8*aeyH$9#}XUZ<h5CUO>N_%;ZOYiEC+OQ`D$?T@B+19V!EZswWgp|*D3NpW6OYN*#|>rRPwK(4$|ssVlK9RE zNw!_&Q)E*KWK&rqJBA+Zs&En?yrkT=D9?hlw_0wM3e^MTKax2}J0i4LMO7aRp!BKo z-8;7ZOF3TwSrvz&%AF<;LZSHP*vbsq?cQ*WZPz=(}-tmU2rOd5mFya`T z)(9wCb|s5xJ9JExT&~Jb|3Fuhk)4Jj>rrIBd10djn-#`t6=9YNs6vAm=Tm9HO{9n#qy+o3uvtOU1 zHzh5!qSY=yGltE}ro3Z6XRT%^h7H3s!*zq5L{aogM;jI+hEt*KffEQXN!(0DrGsb) zzF(HgDjM|UNQZQbch-H=4yKGNY)CIODvmsGMln=^DPfF+)1{sSB9cTrqeM6xL$yjg zg$wAM2kn|&)|6kk6|7T!qn{w?;OUFCgSR*17ulbD_P*qEtozwko#sn7CN2iU&1Qt$ z-l(>2af|x{;h11URmVUP4-S&*oJmfciz&kiIQ&>0E{iN!;Rj)|j&BZ7gnu>gLo&lT zliI2DH66lC-E`(l^n##M^vKB4Jkj`}mtNa}U7Ya_`iJ%R>Wl)n?Coya+O6*g^>D_y z+JA4DGj2RaP&>d|oIW*^lUz{U-YccPINM+qbB~sAb+iY}CR`sXXX-qm zd5Txig8<2KM${V?6{mXVX6kmQWKBLJD(Ct1M&H?jOGB-V$!B_Idme$sY38X*M*@a3 zx5&wtV6`OK#_aQAu8|}x=QA!>JbmT5Xl!m&^}W7}LpNYlUxf$QO+h2W-qGO?gW=Jz zf3H70ygyX8u*)Q^aSHQcai48YE%mJbUidf^)1?9O-s`hnv-k;eUBl9f zX~o+!4T?_7i`WXxT*Dg1&8f0Ff!14|;)1wttt*_NiwOUPCg$Uxf6&`^^+S5~-b-^a z@4oF^2qI5|fai(q?4!so>Bwgb{dN4v;rF&PLRxU(h30P zh3Rg`Sh#~G7FW=S7~`fHmt37oJwP4n{=9=m=Go->&K~+6by_dgeOT$eXkk&QLfD#s zSSi#X9xl&u^b*HprI5G1ck48SmqK_X@+A+6M-%85uKVO8psyWs$M`JcQ_PV18V&?`gt`&@1u6H?27lfu9l0g2RH-zI10s+(z_Uzd zRzxA99zcWi%zgOZgTdg%>w`yqE2JvAFhXcSp_yNJD#)MXC1jY%`l})+0J`#1wM=*K z?+V5^I;1Xb70}^F1+JkwV90%xkOg`SKHJ>`ZLa2^uFYtqV#(%KdGgMR;obG9w!a#~ z!tYhHRYdkGe4HQkUBI<;MySlZ`dSlvJd2!t3s8Ss3ZPy?V+E9~DgC`Gm?;aMHKo3q zR8VgFPErN9j~oG1P6a@}UGv79>+Akz_?9}i0s7{OQ{lYZt=&YnDBo&ad>=g{U=3(h zi&N!YJ4RR6vaPZDaQSoCwGO0}Pqa{e{PXYNjdG4uiw>I|M4&+nWNoEl>S1*AO0Nu9 zZKcYatGmcX@})D>t(f$5Tj&-0E=YWkQ}y1f)0VS0qM?quA#F)*l^|;vj>2#nX$cV~ z$aV`GZns+5Y%Xu{g#ufb0po(KDRVPpZSvh-8wC@V$Bun#;T1RvPBp(+3X D=5dO% literal 0 HcmV?d00001 diff --git a/tag/arraymap.html b/tag/arraymap.html new file mode 100644 index 000000000..a73f07039 --- /dev/null +++ b/tag/arraymap.html @@ -0,0 +1,296 @@ + + + + + + + + ArrayMap - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      ArrayMap

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/arraymap.html.gz b/tag/arraymap.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..5494cc786ed88591025f767784600a66e061617c GIT binary patch literal 2893 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 literal 0 HcmV?d00001 diff --git a/tag/azure-certification.html b/tag/azure-certification.html new file mode 100644 index 000000000..556eed63d --- /dev/null +++ b/tag/azure-certification.html @@ -0,0 +1,296 @@ + + + + + + + + Azure Certification - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Azure Certification

      +
      + + +
      +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/azure-certification.html.gz b/tag/azure-certification.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..f8b2e08a6686ba0d116dc71aa5e5a7f9f51768c5 GIT binary patch literal 2905 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

      6|W-%Zo2T6Wm{AOa0qAS)~7Q;(vnS9)#0 zDl3)VT;5sMk}sX0cFClt+d?njhe6_loT~R?t)`s477ex3O=?4GD+O7>a1@49OG}6_ zK{i|1aJ$jUX0v&XFCN&s3>X(=MVadvYm)E!+Q^x(Ja*`-+jTwA-(dY8HQLz*(JBA{ DuCtc7 literal 0 HcmV?d00001 diff --git a/tag/azure-devops.html b/tag/azure-devops.html new file mode 100644 index 000000000..f5a43919e --- /dev/null +++ b/tag/azure-devops.html @@ -0,0 +1,296 @@ + + + + + + + + Azure Devops - Sipmann + + + + + + + + + + + + + + + + +

      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Azure Devops

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/azure-devops.html.gz b/tag/azure-devops.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..43bc4c97f54a77ac13250d8a8b0a10e4952ae008 GIT binary patch literal 2901 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 + + + + + + + Azure Fundamentals - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Azure Fundamentals

      +
      + + +
      +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/azure-fundamentals.html.gz b/tag/azure-fundamentals.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..7d17b81b0ddc4dd6fb96ac7c08c52f50cbcf33dd GIT binary patch literal 2904 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 C8=!~) literal 0 HcmV?d00001 diff --git a/tag/azure.html b/tag/azure.html new file mode 100644 index 000000000..ffb4e190f --- /dev/null +++ b/tag/azure.html @@ -0,0 +1,326 @@ + + + + + + + + Azure - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/azure.html.gz b/tag/azure.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..8c77622b3fa863737773131e035611361d6ed16a GIT binary patch literal 3045 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 literal 0 HcmV?d00001 diff --git a/tag/c.html b/tag/c.html new file mode 100644 index 000000000..ff922d48e --- /dev/null +++ b/tag/c.html @@ -0,0 +1,306 @@ + + + + + + + + C# - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/c.html.gz b/tag/c.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..1a43ada396880117ded604a0a69b33745f4b4a2e GIT binary patch literal 2956 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 Cl(M=2 literal 0 HcmV?d00001 diff --git a/tag/cache.html b/tag/cache.html new file mode 100644 index 000000000..1545727f0 --- /dev/null +++ b/tag/cache.html @@ -0,0 +1,296 @@ + + + + + + + + Cache - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Cache

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/cache.html.gz b/tag/cache.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..00598d231f9438c5cdeabe55b4c7e073a6837d4d GIT binary patch literal 2897 zcmV-X3$FAZiwFP!000021I-$1bK5rZv;8X&=32?EN$TO$u`D@toJVsLCu!pJ+RJ1- zAPG^hL4qMb%SxO7ehYx4NQ!c-Os``*u|Q&XvF}{~8sB^J`sD17H&4+_M(k*NtUeIK zaX7I^Y#nXG8-jzQZ3I8#h)9h58BPU}6YKriGy9=cor-ZpCe{@t^Mt3;LOzcri2-y@ z138-ns2*>f*HLtf<7>#&LB>fCjd0Zj-FP~H9T&IboiN~em^T^G9 z`RU2={vXG`?k{@hFRp%(U9Fngu>}ojSR$e(t z92SJpn9=wW%~CR5Phv_)AY9CtgC(F}MbaCKm|~KoF;*7U zDlKI~$7iok(KDdgU_zq_xnM-h2!W6?T)A>aBI5c&xbvX{AB8C@oL69yMW_reTv(f4 z5sk1ydX+*U`xNvkoRIU75u8w=6#z6IO>sooV)7OOc#aqANH(NN;4jC4g|Gl%ZD*^o zpb#uy&c-oj3rT%pJf@9c5DOcKPKoqqx2L3t7>PB*OUfP(7Q5xstX~-qD&t{gyjK}N zK!27G>PIQhHi{Y{t5DT05*XMPB&E|5{L6MZ#0@HvTuVD3K2Nn{jZh4^>#z+IG||8f zs7M%w)jh`j%fs4Sf&-NnM(DtKkX+a2BAkX4mg>Q8zt^1AatZpGj8K2roCM<#dq!wD zlQ8Y<4IVz&@9zx`>QHl@2DXL5O6JRPC?!{M+#;Q=Ut znSOGO1ZOlr_kG`QgRxT_&`gZbUR98aQXLP1l%(f03LDDxuzwk*Jc|Q6;gGDgaUS%( zJ6s2ql7wKX444nsLK@}z{EDP?825(?6qXX|oeJ*}n$l|$9RA?epi49KdUffF(bDNs z2oFZks+1AFHf4K+Y$!^X6kM7zX5%YN8HSqNN_T6^nZepjtq%mZwziZkQ^x1^^$6ii z@s^fyjffnC5Y4H}rx?qcoOh`Ii zl!OZIevU{$G3rJ%E<`&x07u?wh<-m>yrTi}aN3yA;ZvGC?`F_F8mZm~#|^vIZ42%? z?W^Cl@L$^8Fy|SPCLysd-(8*fQekVIK`*6p{s^jidf602=}()&4pY2n5vJl)MNAE* z!@+R>Mxk=h`3xGB8>IP1bov!`8(hrVR?ibcp@6>M5Bg-iX>UFA;Vf|nHA7Ufxx_Lj>nQ=xi*{6|s?X-9+>E3fK<0hB&fzI%sN z|5DDELzcy1sB)*tgHR~GJFI2{-7b$1H1*w1(K{P{94H1!XXkKD)l%lxG8l0TPHP0@ zExVG%v>iGo3NDxBr@yDGSW}uMp_I?9qk5dLECn0f10?zby}i9*vJF`W-jYo<(y4Df zN2Q^f;W`@}jXkqlg)jhB!HbF?l!~j>=-U#{SOp3mir7}gx{c{dU%mQr#n*EO`99Hf3m1RR(%d_XMeEzB7Nc_4h$Y3J3(RS04Tz0-(yQZC6k6B~+jrf_Z}jpAN*nF}GqdR|j>#Y|Ql$ajMP;nrCu3JzIRr za7xr07UpMkXJ+blXI@P{Ln>#PccbrYz@?$q#^iH7vpJ8zqL(`A3Xy=}%$;!jcd%NJ zY-9FiKG#SR73VW9mp|RJZ8SFbqxzQK#)0iKsxP*EY$u?RVeer7r@`=G*niL;?mrx= zJJm((*CR5)A;G~QzXpZ*Aite9XOMc`!%e{bNGQ_}Q z!2L|!wmE)Epb2=&hJjQxZo@lhWS&i~@9dx-QK$8a+=Z1cL<@^b6{4yMh?QIo;_>1P zhp%u%mJ0dM`?yL&I0=MDEMKY8OJnE^T&lNY~%H_91O%{Xjp5P=5Gm$jAhsmI~XE4?;gwUtV5E^iha z$(K%1w`9`MZK0Fzupse4PSv}tPFv1ii-tPtzOyB@m4d8bSPH{xq$Na{Ae$|0xZP-F vvyHsP*8{4$^cfdqMVadvYm@Kx+Q^xxc + + + + + + + Certification - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Certification

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/certification.html.gz b/tag/certification.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..a507f8aa9453118bebdb6bb7881a2818cfda4b16 GIT binary patch literal 2885 zcmV-L3%c|liwFP!000021I-$1bK5rZv;8Yj_Ii?AlhnhhV_9l9e|9{T2X8ffVIfonFUwVu8f&V&A&}H2&=Aj~7?Jzj}t|GG=G{WA%X; zPNIoJ66b6m-Vhv~?IZXZ$3$Wj%yA}&oH)N+J$D~F_EdsnGI17^EK{CI2L(KlBmvMR z4dr|ik_8Qjs~-*#O{k=pxgx-fO!{80Mrtl)>XP?4T}+(c++WV!3m&If(kUYrT}mb- zj7W(osbu8rf@G4;XaLYWK`wet(-3%5#Zer4^EMnnVJ09BZWl(Nr2pTdhcj~Kxz6S^A$#sh0Sw8lr) z_!0V}dQd+~d9G2^2sx#y4w1mXwjdduRp1}@t08Vsk>pmoAqjY<9czRV$X%yxn4pOU zZb(JSFswdhJh(Zn&80Y0X<>v;yhrJ6eJ;jXL}95O{PugzSuK~KAIJ#xhs{Ya4sqv% zMso?%-qGOkqvQV3;G_<<O~zS;EZP@^!ac&tWQh< zl)y|sy+wjE8lumGAZUYeGaS-fjL?xSh^16-3PDP;YZ^xlVa_5uxs76 z;I6a2`rQiuvCRz&o*`)xlIZf?)rl_?uGSg!R4V6>psHs#O+l3Yv?<&u!>blyET<}C zYA_oPhR1gbRe&z%(5T!Y%|D{kPq5qIV&1lTkq}A+^n-rbC)-V<3y5D-kg;!i=KZm% zAt+#2K#8lVy{xh!U0Cyyr*>&eusx}?1Ru(z#&RkSFr>vJ3rFKkb19+ot)aSLmRO+_ zlQ5ct>RkrOo#-bOlddW!>n9yQCDQ~7JBR*}1~-c6HS}9a_u#Z_cMRPIE1Dfzax%kc zh7~i=ri^`hhW?#QMS6Nkl6>qN{1$Xv_A$<#5;XV}s2(8yk<3Bb5uwE@s`_96rB9Xb z-l^?h%J~Y&syGZ)?lgH23dI+vb~e!M@(4jw-|dvWv*E{sVvu$YPPbGoWo|8l5y#-P zMnKWBD_Kn2p<|-ta$SDm$Pn=dzfzHqcp zIeJWkj0--4q8tI2LIS@F8hYx`!D(Mc{alu4=-i;83x(FsRx>uu%cc}#KWDAVErtzs zH^Xp?_C-<5N(UMiBZgCM@W1l$hdd+3C(A|aTc;LRJy$sUTOG0Pfd8m8GX^yX zGW2fpJU3VmQ=&|5IY|=kDpQH~AfQqQhoa-sW3ApiC9R-UlSmOs_vWahwJA}U&_#v6$oJs8}`ce&HrtT&46}lwo9CWH> zX`VlP4ZC_fT#FOgLI1e^UY#i5mL1z&8@A0|o*vFPm)lQNYR7GbUftoKVaBbSezmW= z$5~M`<;W$~O}kR+-xo-5wxI3wx}i;6S2D>HS! zGp#0{5tZ|NdZ+K~z@?$q#^ehN*iAtr!`{j9*Ms57u>Yt(JbpY>cc!Z(s7GXqBZ9+0 zam@+yVR4vb&KUKq|4#Tg6w{Rf^4{r_ShM&Ua$UpHnrX$`3k{0S%WKmL%v_op#?2Y9 zIxp56nc_OPZmk8*&~=30qlx+W^H22VZT(1Hz4y{w%)4(o*Mi9NAmDi-JBO(A%eniw zcRc7l9=e0h+k-psWQK#AS0JzYBFYA6ca|rC{$@z`pyk|OF&SZCG2}t6ZqvLVBT(?4 zF`}Nj9V1%jVDkzh!k$tC;C32{=(GYG8%~hSa?%O_=7s5Q$5^<7CKgxFUKr!18JAq0 zHhqIS)@^qOjm)#j^_>Is73#EJf%~x1JJG_TQiZTJ0kKl3K|EPq;phh(leI$L^xkgL z5MB!5k;or-NIWQ}B$H3b3<9eg;X@=ETKss>wcb>YS@*|hNx12g7eHS-=AQ9c#;2Ge z^`#jI@(6V!_zO}Vpe_EqS2}V_V5w4R6bD2gae!x;%&dq)M12Eo&kOg-e~$)(%U4Gi zeJi9Yx-dd$NufnwdMe0Y;uU0=$>ysfC;+o;9VuNK{a6`vy@3c!(SURL%uJzuEA{ zyX))WcKDV$w*~s{ic{gd-LKsnwkY3fTzntBAYhF-LB(0|z8$0MOVrj_eX{yK>{`dn z$|qVVKmGn!@J2aDs_}*`3?k5=1+unMG4&+6d!-)@SZ$@so2#3{M)IXI)UBBGbX({Z zyD3O~kW=-Js?(OUx1ynry3cG$ZIvJ!7>>el8fgg;Cdh6J8*X=6*=!l_as6-WGGJVg j4P|a;tWCcAYolPo^4PJj?zr_pe}nXY;vl8eQ7QlcJY$#r literal 0 HcmV?d00001 diff --git a/tag/convertjsontosql.html b/tag/convertjsontosql.html new file mode 100644 index 000000000..735521f6f --- /dev/null +++ b/tag/convertjsontosql.html @@ -0,0 +1,296 @@ + + + + + + + + ConvertJSONToSQL - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      ConvertJSONToSQL

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/convertjsontosql.html.gz b/tag/convertjsontosql.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..051398c98f2ec4f40502469350b232cfbf23a954 GIT binary patch literal 2914 zcmV-o3!U^IiwFP!000021I-$1bK5rZv;8Yj_FBoUN$TO$u`D@toHT7Guf}e#olM39 zkr0I#Bv=BpthV{@w*W{Aq$tPArn4Rp7)dylY zi6#z7oReL6LvVPqi{NJ*6NynU$C)5<;{1B?gZt32rxF~KiE~ZKBITKMP{0#O5&&J$ zP|hbIxuyYe^}{}*36&HxR|J@mN#E<$NX?~8UGis6uP4s$?yslr8IMye>68(RE+rEZ zMx?})R5EgM#*=H3$)C?(y}aP(zdT1SI;UxjlVt20h}|`wW1bL6|AGa0V$uIkz$x=? zvQ*M^%B2_Z*w26b?#b!lAE&<@E_;_hUH>i*(%x^sC{0>vf;J$@WopAO$W)PWkiV|*kcc3oX@mF2j7JDhc`gyGv_x`FlSqKt1D1y{L|_iW zcp3vV!byliEb$ZzA{vX-*-{E@lVcM?o-qqtnN^H@f3aA2!k{XpZdOCPY<2Cm;n5gJ z@*e>f)&fTIKgZwX&{Wpv=Iyw;R4Yak-_}#loSyov1WKhdCJ4(e)Tl( zTjPN>9$MoAYy1HHT|KBDr99UtYJ{9pRr^R_U|W!k&MNQ^yVVdks7P`n-H-%4(~dPl z3FNNhHcZe&12?21Wf)eUG9FwV*XB|jsRKJf|HgvCQsQ8)!h3{f^oE4T-}p7? z$_%|;UAl6#a=Hw{gAueYWsGl31s@?7iqaJYm!^!l_!?7&p**+J-P!Txur^cc1Hql0 z9VN?*@r8RcLO7TF7+!vW|L`wGC)(=)s<7yk<-`K;7DHEMb_~9iq11rtxS&a>#Wzk` zzQwRE*y4RIB%LiQLM38q8%N9Bkwgt|1w^l(~wMY)|k-YQ<=PIY|s}p zR&5YY8g{MQ7Tk5#SHBzKKeV}F!80UHLK0oRyE^e@!qqy1wo2vv5mfc;sws%lpEiXX zWq8>ljOA2iObuqk!SL`_p$gE&92%8dr1@8L`Vn>;T+G{6FA_qjfPT;q`((3ebOG^; z3NrRh+q^qgH3S6=3n+0lwU<>kq}SHG0RksiMwNj~-sehWG-`xxg|iJX%kc}&JWZYTqPR1cO_ zKGN)w#CJ|evh5-tBb!Pfo5~v5G4yEHg_HQ;CFQn7c^0I-)pDy;s2(8yk<3Bb5uwE@ zs`_96rB9Xb-m&dp%J~Y&syGZ)?lgH23dL8)b~e!M@(4jw-|dvWv*E{sVvu(BjyF^- zWo|8l5y#-PMnKWBD_Kn2p<|-ta#eo%2fB(irCAZm_`*4<$NAb)u-838qCe0(-CHKx zkagg#*i<8(`ZjY^8LAns^TEk@y0&qJhybm@oaGXg4r}H5uIuE?f`W%K%vIfP^=D}(JnkGGWRjYhhc@~CD|knDQvDx^BUbB%Z}<&vB;v86~C z3g<4;m=3jUI{zPyU`Ev5Qk`we&)f>uDZkNA5OnbL+1kOooAI;kPd<5H@+sE+WUEf| zr5h6$gW+Z~Lhf!bp zrzpa|9{3@d;hahBRQj$CVWzG-^Cfyg&?!1IvNVr1zU!qoc3>9=y@UQ?{k=M)YMM#3cb3+LBot2&l1!Q@D4{%&EzB(RJZp^sV~kqSjAkXC0w2F z0ka9$C(D^SPiP+H74#rLa-0$MhDF8E-i4XE+fiAQ&xp!-KE2ggJJv;mlQX@;O*7NwzWjyqIew3CsD6%N0*wxGox-YgK)@@8Zx67}fXT0d`Z+ z$gp>G_}yT5H0(d<4-X#>)m7{=3F;A<;)vjIP~4uvd{|s+o1;rT>%SL14#jk7fV}tm zfY&U3f?U_Iv|?KE_DqAK)ABa90yB59hH-PWtd61emZ!KSu3PIGXXrA*f1-)`_~#$= z_Fes?UcL9yT+F*~JC}mU(;(n^B0Kx2^XsYmuy;7?V?zLPeC?+EeEQUPD)g_%5WCU7+r;MnlZpVn$*;~Kah_I*B0JxooB08*|z}oSEc~!H8fU0$(qt% zzJi&u;8|1Z`$+}mwl5}CfcwZ1K;={b^xHLWyuH5eZ-#HFa~q&My1GXmCtR<$@)-nCS6AnHpud~? MKYiNd467;t0I3tIApigX literal 0 HcmV?d00001 diff --git a/tag/crash.html b/tag/crash.html new file mode 100644 index 000000000..bc1597aa6 --- /dev/null +++ b/tag/crash.html @@ -0,0 +1,296 @@ + + + + + + + + Crash - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Crash

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/crash.html.gz b/tag/crash.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..aa523a3f67b772d5da2ec67ab532e1afc9a9cc97 GIT binary patch literal 2893 zcmV-T3$pYdiwFP!000021I-%!chk1^=k~AA%-fP~wVjVbX_|B^g|WQ@gF)Hb9*5H- z+lnJ9TgH-`nvMVcT}ifMJ5Fghdpm8Rk*#~L?)SZtGX3iDi?j1TUOqt!8L^Yysro<+ z$KlK(v30TwZwL-fb`ktcBO)>K7dRC}&a5}*KiUti`c#Y~GPABIStdM{7V>#4NerM% z8py>gAXn5Uwtm=0G^UbbW(yxPG8;OB2C0RViA_Fa^lE1PZofIT&v=wzNj*ktbSasU zAS5NGq>_=7vlNR3ve9drL^zJ8u6ez?#%RQ2BI!q<%HtZ*fBBp;=Q>R!O*}3gpGR)? z(}TyShku;@dYBI`e!lu$9wdX`epULZQB6{wkW}U~i-!|ICAm=R)F>AmStn=%lFXAj z{E~QzjD_5FEeAySDNS0uKVm#Y*yEW*uu_iXg2tf$UHdExV2Hp5gz+Q-XoTYc1z2Ja z3nE&JG}%%L?2=;>LYA@`xU!{~xbAYfbc8`wO5Lo6ZrPgJ>%yZE4$0>ib~T)EYpw^ju09OfgB)7%Piv zl~yvL)AJY4(T_m0#e_x^GG|0A2!W6?T)A>VBI5c&xXZBvAEha3oY!EIJX8i3F04(j zh(=f=y-uN&eGd8*PRM!42u`Tb3IH14&v8UqK6?cLyu|q?k}YWx_{(u%AuIq`+u3R@ zC%M6fq`v7QaZ1|KkZgS+@d1MwX_4`^He+51jUfMj=L~H6D{0; ziiBZU-DBLpJZ{V-I8bR}f{vW~$#rus!f8lhsR8^B2klucm!KcX1P#aSNiYtv7leij z3DeHO=;8gt;lb#r3AN;DV0$USm%y9)upyp0K$a;^N(l9$3F33c(+Rpa9*>(79)J>< z879|Aa7F`k&-eW<7(2xQ&BO#9)CH+2)$t%mNqRw}u%%oN`@=lelq*1QVuSnX2alfrWVJWe{P~km6b9zmJ<8R#tbY+IYpebEBS~*<` z;lT)6momcFrfg4;4Mpjaf=g4zYF(?}3s{?}^?~5d&W@60&iK;4o*O4!bzIOm(Bc~>E#G2T7i{r96OzvJ zicrbj4-p9{M*WD!rD#V-;K+L|(eFk1YZ?#_r>zMcK9$LfZU%itBh~xhxMkO-ZNXjV zL-o56{!^D57Cb}JBqY}5yRQ>pDr~JY=%rN7pFmYlFWZ7B{b^I!VT$t(VQNlQ#?)v& z9*qxg6siDSE}&7lL7IO=r=MZB#l@m)^&%mZ3K;ssU`RHbMi&sbs323<^vb(aRYQ=^ zuz(WRPR9cwQzYkDI7Am?csu#UzXt zpn97@awqyp#iXsu$?8eRPsuca!p@<8r2eHMdI9}b+}}Gc+Z{u<#foN!mYmEnnq$Qb zv?)`Uo}h1HPbA0BNt{hxgWrLU%Ra`sQ6lT)CmxZhi(AUTpVdRnDxYcgNbFiCB;IzB z&yh_ekWFNR>=b&mtHMcK@RD-dqC5-I-fFp3DpU`U|43>f?TFA~6;*vSg3_nT_u#nh zU&{Fk$f`JuRqix-5DLZD$MtNW+vN#@roP`RduPLs1H~Ze?HzBZTFTs71|yEa>5PD) zWmmG8wnN86$>pm23=eb_YfG~tl=7u@(v0)9rC@`5gv4;9x3@P;b|LG)Td}D|I`wVl zs4`SLToT*?9flaB+=XOLQp60f%ktF0PCBoVmh*erC%&apSG-LG&W<2;n z3(=-~R*k`@4;q^NBHsj`Y-cveX|*bE-H?`V>8b_)xr;w$DKUOoF528cb-3%P!r9&E zh)oClN2QrFs6>#bx0B~bgLOA0O4Y`b#KE>Qm3Vhjs`s#y+ESo@1InG01vdZL^_Ids zQ#f~0nkW|^*p|{f&tL!g>`qD(6S<`<&M!~S@1!URU&6+B0o83wiC!wi*9!4Y%9X;t zo=02C^hzV$NqHcAiVko~nIMLW&hJjjB{^qeOOehM&TXVI9ctNh{y!SQl&DRkI<%C3 zb1T@S{7OGT(81H+)(+m@j9aH@& zL7(Upof%o$XA%!!r(X}=;*@qYJZ!#Krwq7b|8~>%ZGF$DhjY&5=2Mo&5nQ2Hdpv5H zapOUN+U4Ei{HUFPkU>hH(@bXhjYMe%=NKws?G)4=Wqo*TYSiHO4J(` z7Uy#3X6kn5Tx~u>Di@h|qwj3NrJ>fvJbh)`Xlm|6_07DE1KVd*UuOH*PCz5$!O`J^(fDXQygwWtJ{+ri)I9c^ z5t-nS;9yi-eZqWD+(?^qM?LGl7cLHjmm47Gy*`~ai=QCdHY}}}R=hpcpy;%`O0B@m zMXF)koC~WnWWB8^u6Uc)y22^C2=NCrGarBbh2Fkv94k zIeto@{6AqtJ@tD=wBFwOwM2*=r3S$5wG`3o1U5FDA(>{R69CK$)BT>Ya1YIDTtTy8 zjGLrfa&`9fJ?hnNz9)zu<_h z6!LcPZk>j35(tl2{=x&|&=@MRd_?9DSp5+1Bhk|0r@emdP34$Pe|!=L>ppn~^tEH| z7@uX_!wjh}(m;@hs2{>#ka7=g@aLVKo zFd997d2lwYg;YfsMhGn_H0(=91^F|aLx!2Hzbb+PpesLB%k=mDtYD0zL+a920Udr) z;2Nq2hTKOnS)#|_v;95L=4uY=+MI?emg?LpPu^KEyt^LN^)I)u;Jf#ty82m#kM)B- z&A*n`1eKXrUrb_$r=hi91JvJl0;rd;lLJb%DgDhUm?;ZhZAyK)sG!{St)dEWA6WvZ zoC<(`yXK8I*Vp~c@Evt-1N6-mr^0!++qg^YP=2j(ab5J3fHf8b6(`5L^%z}Utairg zqx|QfUpsVGKG8w>@z1}3H_8Q4Z8&Ub5P=5GmyMN*sYl_>E4?sajg=~Iu5J@s$(PPi zzhctSZJ|@_tswD1PSyLXURTcEh=zLVjyq#G+9;T)dF<3x_uhJ-zfJl-Z?AvFT`B+oa2Kng literal 0 HcmV?d00001 diff --git a/tag/discount.html b/tag/discount.html new file mode 100644 index 000000000..818d10807 --- /dev/null +++ b/tag/discount.html @@ -0,0 +1,296 @@ + + + + + + + + Discount - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/discount.html.gz b/tag/discount.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..9216673b05116cea401d98ed163447f997812a38 GIT binary patch literal 2903 zcmV-d3#jxTiwFP!000021I-$1chk7?bNefVx!j~nZRb%aO_Q?ax!l8>vUm4zI6aE3 zIBI3fSW45d%YVNk$#!JNDGi6ar!6$HH8Yy`jHC>2J$du^6l9|;ITjZ z?f#SF{XdW2?Jqi~FE0L&duiwQcS=PT)imQN$>d_>@Ms{YB&TW}i*nA9bA;9)$wg|z z&&gPkage{N=#YpYqiK!zM~p`ZkNHd@SZRUelqQh?bq8z~!VrNO2;*rC&>DRsRXnq{kMuL+OFI3nL)*w=8vw_bT^ z5*38ekkRBEO*1lCPhvtyD16MAhb5q2#vrh=-pIje%4ndS%2#uD^;||6OfgBa1S^Yb zm6kH01A~;##uyRsSf;hJM~#Dm!MzC0CoHINiYs^r-VjR z3De$Q@4>zO?q2Vp3N`0h=#Ddj&w)4f;X*t$fXp+T77*%16(rz{X9IM*-|tr^#sErS zrkh?O!5IzF?H~x6VB8FcbS4I9&lbc|syBupCD|#BqndKZI5>|os5qgUa!A(NIQKet z4%b0tBqdlX1LniEkVd%yzaUu^#{b2F!cyX3s=|AKCiIeohrjq0=+X?GPF1>Mv~;=* z!h;dCDrJl>P30aS7mCt31(&9bx%dK8hM_Ds(%stfrm!|s>jS~9tt}q1IY4+O z`60ag2LIt-ijK6`15|F&F`E$!z?=77mDw@)R)$gos^fwtp%&jbY4H}rx?qd5nUHj{ zCyV$_alQiyhN0FJy<6a99)_&`H4##wDbhfitpyrDt2Xsp^FoYd@EwJo^o zq^o|{!hdUW!<=VGnuH{}e7AMt%Y>_S2JMu}`2(ox*?ChcS4i`Z==3}6*0`89t)3@@LIK^N8+OTh)93=?=M`k=n|677sA>ob z7#2|CDrzsPY)CJxdC60|v?bV{R9b=$Wm01~6$cp7;+}=0@y0VLc~V7n!7Q;t$tPhn z1=YI@k~`5)Dkfc3PL@wPehQ`u6m|~%BMr_K(NpNRlJ?GF(e4-#;9!Y%Xh$NdX z@;$Pt1hT2DkR3vgc9A=Y4_;DiTa;%(+FLHSOoi$J@*l|@q#Y4jth}oCdQkdQ`R*Lr z{-vBRhb)UjU*%4d2cb~hIkdBZZkGoLn)-ID=$#Ee9u$MLwR5D0HL zqta0IaGmy!hU0R>3XuTXf_IiHl)9^w>Fd&;F$)SFittwTx`}VAwO)O>;_kVReb2}7 z*I7nfwaauT;2u~tDwsjNf=wHp({ z(GUWmsGDVI=*fYO?*><`I;tI68CTelYiN|8f8dN_C<|l47zxJzx0E@o(d^ z#iG^yR)Z^R7v5g$h*bytN2QrCC|r=%HcVKkXtZYa!4g>xgNi5KDv+fbTUix2N!-biT@A~%%9d;Rp}Mv9X1IqZ|CP~A3^ z=&eHhpb&4QTp3P69&aeqdyRA><$>@~$D$V-S0RWY^g$!uNVz2EOl&C9iNd*#G^Rr> zn$G`6BbX7j$5dyW@+Y@~Rm$)669gSR{j_%Q`eyuj`<0)uPx%pR|FD(EvxOTI7lR=u z6GEMHVdagD_deH>WGYzv%fP zncx|d+R5}C9>PprgU%M{6+y@7v5}>I+;P8?UfO}49{~5d`_=dA00TGd^{(3Lt?m!? zaKgDU&i#PdgzFRM zOr1B>kN9$WuJ|&;;Qa80Mfs86iJ7|I5n7$k2%=;*zS4I#;L=cQV)D73*_=mUah!ST zMv{Qx%oTI;GgvK1HZl7$pQ|Ma%lVAUU;74yD4a--#OU7 z-|HXryZ5^N{Re$@MY~9XYDA_uA~@{jx2iB7=DExqY3f=3O!zny4(wBqf#21UokEo}*A?r06;=EzwcPwOpEetTTC)&XJ=Wjt?^_74WbE%L|ozJT@gqK2iB=R*6iANLYALS!5fxv1W1z1cbIbTF<73Q_`i>3+d4$>#`~@j@&>DZ!QYq8>uS^xS>)-@RV%)!V(tT`QzYx-de}Q$TY+_f(L-#0$tUqt#b=Pylr4r)rt@ z&R->radb#s+A5&KZwg#PwZM?OC?Rvz-;nkWXmdFSb!|c;6-zd^%9FR23~#SSwf(&r z7T!G*<*m{(e4JnPMZu+X2B^rq`py%3Jd2!N3s8TR3ZUM?t`8_#Q~FC;FjEvfYf61@ zDW}}@g{2a37dZl`91DQ{wBn6d*VoAw*J4TmxwvDm+Xz?O!TL;w2CmJX}dGWhxdR5B~n;%4=K?`JMrF`m9boEMa3|M8Q z(wobR%3AWJ6Vxu5^mJS3<@+#5e2`Q1UaZxWv)7`bmbyM|NNuGcD;SQ#aB67@5hloH z3ma}XTG?ziukmdITbBXjf~+WWJ!4JsU0)kH6PCvgeRZX-2l~6J{{wo-_B^{P0034S BqX+;1 literal 0 HcmV?d00001 diff --git a/tag/disper.html b/tag/disper.html new file mode 100644 index 000000000..66fdea10a --- /dev/null +++ b/tag/disper.html @@ -0,0 +1,296 @@ + + + + + + + + disper - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      + +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/disper.html.gz b/tag/disper.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..dbbc9a908d2cdcc2ccf4f11d065bc69e26c9d388 GIT binary patch literal 2896 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 literal 0 HcmV?d00001 diff --git a/tag/docker.html b/tag/docker.html new file mode 100644 index 000000000..98d2dd892 --- /dev/null +++ b/tag/docker.html @@ -0,0 +1,296 @@ + + + + + + + + Docker - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/docker.html.gz b/tag/docker.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..8b892942edf7411d276f67b588f603a28c63f7af GIT binary patch literal 2932 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 literal 0 HcmV?d00001 diff --git a/tag/dotnet-core.html b/tag/dotnet-core.html new file mode 100644 index 000000000..aa52b1766 --- /dev/null +++ b/tag/dotnet-core.html @@ -0,0 +1,316 @@ + + + + + + + + DotNet Core - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/dotnet-core.html.gz b/tag/dotnet-core.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..8b930ba0a19de5ca523259d88317dcbcc038a5ee GIT binary patch literal 3042 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 literal 0 HcmV?d00001 diff --git a/tag/dotnet.html b/tag/dotnet.html new file mode 100644 index 000000000..8a2bcf70e --- /dev/null +++ b/tag/dotnet.html @@ -0,0 +1,316 @@ + + + + + + + + DotNet - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/dotnet.html.gz b/tag/dotnet.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..c7e078ed37a40f90fa19d1b6c1eb42de34cd3250 GIT binary patch literal 3038 zcmV<43nBC$iwFP!000021I-#~bKAD^v;8Yj=CzVrlhonVu`IcDobyebq_NXuG8qj- zLKI?JeMN>>?UbNinm9hZz}lolb?+Ov>0MA5(fcvi`K+9@{58jIpE>MoM%k84*7q zIi{qNk)uakz9bUa=#0i8j-sJ!zHhH^8uExp`U%MLs6_QY9;eK?N@7Xl373w?LpOc) z^P}Vazm9*~Uv$RLFaMN#ap(8nl!8iB(1wMM;KJ4)b(m;maVG2COjJAfZRN>tKo!O`sBn> zkP}8jMxzTfOUQIRi76qza4};JmVka0g22jpBMZkdqn>suSB?Fo#}dL|h)I$}SXor7 zw2%oMpT9aqPk?5P35_P?f)Ozz1Y*i?<;oceiR%gB&ifAh%1u$?yaW?30%dUF!rb(d zXoMBgs}yqCr=U;a1e^zq;Ft=n0HE>96o-^8MsFa3=XkM>WKEhF{^!`Y5EcNe?QGR1 z6oO^b**L;%A*m;f$21Z2BVhy4DUsgn_LLM6Be7<9NqNHk#cuI7>z1B-rRRR>d9U<* zAN^gts2`;~+bC*)tXx&QNMK-Fkc3VP@Xy=DBd$@A2~U)S}s99kpb%V>w{n%V$TQ- zW)g;-z21ZS``x|XK^1Dw6W^XB1YZDe>X!}i)BrM1aGXP^4^5RNB2C>Yl5*8?9)^X&|X=Pl2V-s1Sv_zGz@CWonY@GNO&6gcFZAJYvbJS ze1EtODj_k!QW-FNTnlNG>+wsHRAJm7OHf!!?9Eho573le5&!TF3m0e9Clj3126XroCePX#^c@XV^Mj+BU8}YQ zcb#_CpSAFxo7^zt8ImR;kuKkDo%j-AYn?$erE>lNs(Nx!7ewh#o5Btfyl4=nxf-X5wN zf;@%=l(>r8^D67p%hI^yak;cbxICz|1izF?jpbAvU`UI5B^-@6Nu}gb71ai_gbF1a zgr^y(-e!>8iGEWtX{&OweADrhGfkkdbLbzbccF-mq2G$yJBN9@W9Zgc(d^KilPN}1 zteAl|W$4l)^g}ce@!=_n(xGec8_;py$5_`&WF0-@AsM>3rVM^c^k|ovlepj|`LacM7Nou9bjwtzULgOG#6sE;p~cFodanniPnGY^ zVcEZw^JS1lapjy3Hwbo0B$^HYRx?s5*B`{PaAt;hLd=FaFguk zJVq}RE;`F`p(dh}d+6X!$ry4d)I0%5JKM2<-XF`Et?X>$PiaEzX&QN|s*9V1J}rnr zJNSnohcr2)$f09J4n4`qeT^c9Zps=1E_}dl;KJH9x7Rvi)dBxiX{HPs5-8W3$@9cu-A#!Swf{gOe^Z%qygMn? z2Ut*VDA0ca5lIq%;wc8_MFme0+WB0_)jUh;;Q$lVZKxIG14XFkQhXfm{W+x>({6>*(v2(W`53{W#@ZuHW>m?1*Q2wfnuA8Q1R1snzx^ zwsY%+K!OLVrIb?Y>Dd~qn1ktvtG#kyHsbn}CQ-X|^=IKprz) z*V-*3T5D(ZlrX@KQUl<&YKmwz0vj8SkW5n22mt1V;daYdxP?X~uAu2N#*Gs$x!ME# z1+_{SQd($W-c7D=?Vz7ftMQhK3p0HX4J;~Eh_WUiRx&k+hl_I@yo63k< z=@JL19l-w}z%&dJL#4} zs-O!`2-*r*IL#dusNiab|tL=$}_LN zCx9KE1lDc|P+va;sMoNf21=zNeUTAH@`6_yQg{6_%1xL23cy`t37~Q;0Q%jEH(p;~ zch|!=)VVd#*H@eZ=lyo&Xum=ErN+f|(NkC$$QeP|4*qsIMwj;-8e{e0;5t zXrTP)`R}IhRm&k*SRw)qnkOqWWkU~x>t}jpz$!Bp-dr5+*OD)tqISWgquW9!TjN6F zgPf|@xvi$0y%r6%)RlvV)K&3nax7}7B_Uty7U+qWJQ_l g8Eca7_S(ppD0%GARo77TgTCGUKeQ$72kk8Y07H$*_5c6? literal 0 HcmV?d00001 diff --git a/tag/ef-core.html b/tag/ef-core.html new file mode 100644 index 000000000..0359d835e --- /dev/null +++ b/tag/ef-core.html @@ -0,0 +1,296 @@ + + + + + + + + EF Core - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/ef-core.html.gz b/tag/ef-core.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..1c67bbe6a59903aa89a6a55d98f6a67d0116ed30 GIT binary patch literal 2920 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 + + + + + + + Entity Framework - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Entity Framework

      +
      + + +
      +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/entity-framework.html.gz b/tag/entity-framework.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..78722ad6527d96d290804a7b472f3ed37a369fba GIT binary patch literal 2914 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 M2O|M$Go>m307bFIm;e9( literal 0 HcmV?d00001 diff --git a/tag/expressjs.html b/tag/expressjs.html new file mode 100644 index 000000000..1d2edc6b8 --- /dev/null +++ b/tag/expressjs.html @@ -0,0 +1,306 @@ + + + + + + + + expressjs - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/expressjs.html.gz b/tag/expressjs.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..49c8ff4bfee2227e6d30412265c7481dca564d0b GIT binary patch literal 2947 zcmV-}3w-n+iwFP!000021I-%yciS}g=k~7<=7XeA+j(?!OOrzPV8B^nTMHkYot+-V zRvfjm*2o8^T5&Vo}qA&{PSV*EK&d=xHx(}V|P=aGJajq#@q+BQm1w2tC0nh~v z)qE0?YZ?&OyzC>IP(?9wWq=u(^u1n<)Lg05CGRqNJ#l_@e?D=a@HoYaP8q4trDQ_F zh!mKLDn^dUO)7|#mlC7Tjw)1B!BZmCa^mo4B&i}7dY%g9oFnHLZ9r1X zvj5nSq<&7)wS1#M`Ik34^QkHIO$hD zd1(?AgwdGMA|k=s zqDG~qOz7nNr&IJT&}=Ya(4<;2BIkraSXr)oH77Cg11bH*(1TxvDJq;-VA5rz4K96{ zn_d%xuts{FLLvJM^eMfF^N10gQfU+bG`^nUn6l;MH3abjFE^2FNCN@NI1U|zB>)>c zJBcO9WuQ_VulJs{nLj7TL5R60I zIib;9!LWBQc=+J3e=vAdhgxtEx>G^$74W8ixe!k+APa%h0z!YNg9My$F+!gXhr{~7 z6hH}#^wS$8Iin%^Gzfw=7+2tsW^#lMs)AIM>P;a?iMXI~)KKme2Un5cSrWP_hh%Mx z^PuVE(uf(keIL*F@A|{4Xj{SScLLb$E}^jNXv&=nKCFU7DfSt4mir zt(;Ckcrb$2rHt{7E!`vJLQ%S+;L?;a7hhw_Fx2H%x;s1G9Oh@DKi`=-7BYK;;&lvW!#!yv5MfnH_^~36xq;6BjfIjri6{i?0~w1zTKZ zQqkG6Bvf$sO-w?HQ8%VZA=;xy;K+Lo(LarsXEY>JEE)qQd`gq&9S!<~#=8H(NyDyn z+k(5!`ufjC`1fsYnDY!tlaR!e@2*LFLb^t0&`;@{KZ2?*u9|{q{TWlZk-*CqVJc2l z#MEFm91IU{6)Fc^%%M@aMVfy_rypRq!Nt67_BN|J2sTl^MuT=X%{tr9uM-|?7?ecVt6{-7QzR{21)M-tyT zCdsywe28qSfNZL2WXI5>UFS~XgO?P`7VTM(_EyuaQlWl<{6~a?j3Yvel~?t_07{=O z-@T)%e`)8-AG1(&Px(?2j(tSQZkkl+jFxE|+gQ^6wl5t99ZS>oO@*oJHZZ^fp5 zGO2GfN2Q^f;W{52kEg2@D}(~53qDqSp;TV2PTzHcj8&lErHF4`u-h1~^w#Si*Ze(q zvJW|VOasB8&(+I+d6DptT*`}F=nG(FN>%*sB8A@LV&Lf=2&a8+{c~ESg%(uJ(T_mz zhqHb3%u@7V<*)1FYeV?-6?zGT(V$(LW;olAZNmS*G}8a4G}8Y&8X5Z;YxUCnvEjGP zT(-fDW!@1KQ8>(>7*3^eSDZlZQN$HGWjTn3kQjsJ$thusgwv%N1R{z=Tu>sNjd`rh%DF$7f&jg2wE?gR;J^scr2C|NhIDXH z)9hagYjECXVStiQX_A~xUbmAZ+*YOn?_NrE2@BCJ1^NL{?xie@CfUuF!o1Kp_fnd8Dc`Xz zr8!-my?SvkrAdg|QWo#WXXp1)l$0-skaMVRTT1j&Bc5r*dnuQIW{1aH%JkYG-Aj2O zeDpT)_10AgVhEiX#Cs{1;+)AXMLO3wcag?+s72HHPc(vp=ry(^h>4w}dwk zjtRC@O^oO9?jWT%8P&wOm@=F|K#%pwf)v3DKM0d`e7k!l{p*1rk{QmJGC^a`Xc1=m zm^)jdQ-V&=6Dvz|JL{`ndQ(kY`3C=>e^~#nH>hyS+V!@j>-u`vJkB^*n>XlcySKSs z-Ql2N#*KSOdWCz3t;c5aRp6L<`J$D2dbYtT_7FAUdS4fqO}IHx5PCbQxrLk4bLG1X z3!=ZUDBsdOw?lW^B5m>+LHuOXTYYB>E-ke-CZC&;?Rf+ir^3@G&IAl+uMi|3gVlm$ z8?!I+u||@pIG=U7{OuFhMPqxMZZ37WICKL>%{_spppOl#hr8&Gso zoWhr2_6*)KZjTi7@q<~?<+lUs*1E<5T}1dDn%G}|{)yhat)I~7?_Qe8dG}4{LK1Zn z1UySrXCHNbK5-xR4hOx5LwC@5yLSto5;(Ye3G(VYO>3atS(XG^EvUQKa*U*zj4-em z@*vZPvtA$wv_8)m(Qn<36|J+kexem&PpbiNI}Js2T7j(%CrF8mv;u&6VYu6|7Ve-) zg)3;ZtZ`Gp71#T2U!zXt@a^ad@L{G)*}|e$g{*1wmrAQRAOeX4Jj-TgO%x*PYiIzU zyN~~SFc_S^Jb2Qtgj7ivo)B~!uvl4mI>=w(C1jY%`lmc70J`*3JxzD-j}pc@I;1XR z70}^(4Q`-1V90%xkOg`QKHJ>`ZLY?kuFYtqW2wrm_T-%v!@KKIUA-5@!Y?mnd1|-{ zALko$5OkxQ5h^mTIn%}-7m>4H0W??T0O}>IVu4a+$XvREk)q&LhV;F(oO0WRv=VS1 zITEOxNPvE`=8d=4*Zs}#Ep=`K^z9X=#Cf}0JBDsiex-5oee|4wHRc56yXL#q7+syo zx5nz@<@aH?vf-|MqJ{F)?|-rFuwH_|Vh#~#&;nJPDIaCNRqbR+rF z8S0iydZsP(@^vL7KFFzNZP{td*&ESNM<0*3q_$F!H4H~%IE}P~2$N*Hi7mHV&1@IX tceqVb)n&k7HM6G7&5X6lcXw^%OjJB}?CUEN=D}P>{vXY@BsiQb007zRv1$MS literal 0 HcmV?d00001 diff --git a/tag/external-display.html b/tag/external-display.html new file mode 100644 index 000000000..9b3ecd07b --- /dev/null +++ b/tag/external-display.html @@ -0,0 +1,296 @@ + + + + + + + + external display - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      external display

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/external-display.html.gz b/tag/external-display.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..d7adf65229a343cb18b51edaa3f3b62c9bc14d00 GIT binary patch literal 2898 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 wWwWKc#Wx6ST?UK`vZl<u= + + + + + + + Files.readAllBytes - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Files.readAllBytes

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/filesreadallbytes.html.gz b/tag/filesreadallbytes.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..58a242e0002f1f5228280aedd077fc0ac8961064 GIT binary patch literal 2909 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 + + + + + + + firebase - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      firebase

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/firebase.html.gz b/tag/firebase.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..83e66f92c0b7e27866cb4cfc7e3996222785f951 GIT binary patch literal 2887 zcmV-N3%K+jiwFP!000021I-$1bK5rZv;8Yj_FBoUN$TOmu`D@t9!-0bcidh(nT!V_ zAqqA~FaT&-ZS&u60gx0)QI3`Cb!;aVNbD~5y$e9&ub#YmeD?e6r)aKXcCtIxABf>3 znm8nJPIlo9!Qsg+f}e3r6h^@u3rW<(`Q_|K_kmNLN^ndj&J`t#lndpcfG3J10J@-| znomM6(n$skbpzeTWAq)|ifiRxN0F7`Gq7W;r z^(7mN)Y;MsY?EUXLMB)RT$@vle1EZ6c+#S3rEXS3yKHsswc*hiN96Mh`vy+>l~-Px zLi&umbe!7zEbVn>aX484Zk6`FieqGbadxDW-@>u(qgC zX(SDu0)WQD8ICDiPToQcFYs~`$%Zs3{N*@w5S9RJ?Cdla zl#=Dkxj4aWsc0ar$Fva)6X^oc8BxLf_LMXcE3sjCMS04@<$n1z?^niy%6M2AA5_No z(4Xal{?W>Ft)fQADO9zOBnGx65p-69f7&gFxIsmcYvqO{;KDf82qloaj@vLn6Aj#u z%9LSPead)nd0d-Iaj4V62pxI%((C$Mj73CYsUH0Hd(BxRm!yA?5$X?{lVBX;&Iyg? z3Z}h-!Gn8;{e!_#9csZv=uQQ}m%y9;a3P*rKo$b01%!T42MIXiVuZdP4u|!LDS#4~ z>8IC7az;b+br1w?Fs{HM&EyCjR0XLh)tf?)5^+xBsG-~`4lX0Xvm|s=4$0aW=U(rd z<4sV4qy#H%zAISScLLb$E}^j9!!Q_&dJ_U7DfSt4mjmR!%1% zJQzXiQpWh&R_+mUp(tHaaB0ezi?1+c7|L=h-JKn84r?>LJ`mj5+0nAh7+<*8BZM=> zkKyGf_z(Y5bYi?7pmK{&Sw<=V-eTzL%#Ojg1WGNai3^&9Mttj}#aj&Pf-NpGspxE3 z5-Pa+AtoWks2kIy5bfv)9C@!H`q%OD9SxzU5RC~FKBdX?h6a5_W8MDXq+!>(ZNXh< zef_%;{!^P9<~&2vBqTBAyK54kkgm}gv{O3gkD#iH%cdY&f5sGUB=E9Dn2J*sF*TSC z2gAb~g~~w}b7)j1Wt&a4~ONJx>UQ0{THe?32x=F$KiWE6CWl?egwe*ANsi zETP2J)LvBCkX}{h6;G?BEy2}EttI%-CbgE+aeyH$9#n7)-ZWE+Cv{X8%o1yqd=f@; zP`%3_xfAoGW75^-Wc6g?r(l{uVdv04(%@1PJ%@fP>FymD?T)3}V8yUQ3r=Pj&9G($ z+LW==5qtK3O^@RDNNqCE@J-fFp3D%1~<|A=sqaYSgb@~S=X6p6T?L^>NovP>|!wM}k=wyavqtS=uJA)0g_ zmt%14gPLZ)$VI_5n>h}$TczGRHzep=dTh@B(#L;ff>`G)7OiikT733Yrbpd;-Ed}~FpxjAW7)`S4Erofmaqgrv@lt+d zTT1g{`R>j0J1I><)RwY%FQ1;>Nl{Y1fGzMGs@s+lz1E2DG~%6lEG1zD}Bjon>tEv&VcsdY{3AR*?yXUU& zAf=Cv)WkWTGMs>KkM()66u}BV2$OYudnO|NtAQVq8P1q8{$p<55N7)FGFze-1f8PC zR+i==#eLZNS7SIowjJ~j>+kik18&*I-L#8a-};&1jB~a5*rj$Rm+RFX4jN|Mcru_j zd$%}HYUUvY4y-$Qt<)FqHdw`8jU`;4)&a8#H|NAcpAs|==5l(j{Fq@u^cxoC2X$w5 z>UIZTO+F)tvut{!?`*-PrPjveGc&V2kHF$oc={fZfZ^=LaPoJsT99mG_IWw2 zvo4oEedW4nY%fX8RlSQtH(=D4}80w4FWfIgQGQ|Yh50bQqP7Q-X4b!uJ`Uw{X@R^8b6jf|KS8c*Sz0lzd3$C+(P?qFT7ub|Rm-?N zDAtF{W_Od{`PQvMyFSfp%wE5@@xc?q18~fMznnz+%XQOkcTqfgsQY zJY_^bbvstH&ffYxMT9-A2Egq!6wzq~wlXq2>ybUduW3{?-Y*Q5?H!aTEzhoNF3l~&@Z$Bs z<9;QiO1dyYXhETGUwAsmpW`KDn92I9JSYIV^i#b|ckj;<#yUErE@KtY;U^7lpgLg4 zeUy*|dICP%-2-i|=Af?4XryDQ%B}X~ofX5o>rq|(whIftzmVl!&?ONT6~m0s8%# zH{M)d_cz10)VU4NH&>hz=fiI8a2u_BDt=gBGaTO8L~I=;oDPS+Lqlr8k$?i;d(6y0B z%ePpN_#mg6ZC0l(XKzG99ewH9lG;i^)-W86;WW|`B21F)7Pj1OwX)qu-r_p~Rb2** lOR}cS&5X6lcYAH*OjJB}?CXngGceyU{V#yT0`_q#007~xlQjSU literal 0 HcmV?d00001 diff --git a/tag/firefoxos.html b/tag/firefoxos.html new file mode 100644 index 000000000..5439c199c --- /dev/null +++ b/tag/firefoxos.html @@ -0,0 +1,286 @@ + + + + + + + + FirefoxOS - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      FirefoxOS

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/firefoxos.html.gz b/tag/firefoxos.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..7e2bd7ddaf853dfd44f7ff4967b9617b45e88d5b GIT binary patch literal 2824 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 a!Gz_pV_#jg>Vf_W + + + + + + + flutter - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      flutter

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/flutter.html.gz b/tag/flutter.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..1cba4bccda94b8abfc19889b909813973a71ca89 GIT binary patch literal 2889 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 + + + + + + + GetChild-Item - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      GetChild-Item

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/getchild-item.html.gz b/tag/getchild-item.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..2c254b640954a18c65cf20ad87df307509d14cf4 GIT binary patch literal 2883 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 literal 0 HcmV?d00001 diff --git a/tag/git.html b/tag/git.html new file mode 100644 index 000000000..cc534c66b --- /dev/null +++ b/tag/git.html @@ -0,0 +1,296 @@ + + + + + + + + git - Sipmann + + + + + + + + + + + + + + + + + + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      git

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/git.html.gz b/tag/git.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..1b180e323a58c9bb2c3ab3137d5a973d72240566 GIT binary patch literal 2894 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 + + + + + + + Grepora - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Grepora

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/grepora.html.gz b/tag/grepora.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..6298a59718b66e57c6af92dbde62374f0bae323c GIT binary patch literal 2881 zcmV-H3%>LpiwFP!000021I-$1bK5rZv;8X&_Ii>VlhnhhV_9)1{#kl0=9dl!JlcOJifboR%aCulBXcCtHGABf>3 znm8nJPIlo9!Qsg+f}e3rBu2p;XM)Iy^Xu7D_r7CKB{(J%=aP~|$}{PpfG3h90J@-| zoKHe>Ndw~QhkZm7Dk)~J2rwg)zSpafnoF6wfC@d18_MSHLOruCi3pbjqa{@Yv6P z{_*kY;UA~J94>q3&o6(M2WjuOUzCO{s%geklF8-7;n7G?NzT(M$-oG4;haTp7LBGSZRsmoF6XoQmxg;?S# z7DO}_sk5aN*e1s&ggj#wxU!}g`TkFMYr~^4j>y*+_BEXFtyf-} zL?vM~W;D4#^Nh?klb8__3Li7(VF~D0F$k=zH*s*9G8$;7^3~j3J(m#%Q%sU9!OEgq zrIk$R^z8LZ^b}||n9yiKE*TMXLLjINSH7H+nD~JZ{$l9CM`;R+a|Ft9C1MrRfHm)&ZJ8&o8@l5R)>$ZX27Mks;Yb=-ytnrPsL zRHO{U>Qlypi{si{ibItaM(D`9mtNK9Vw^=3mg>Q8zt^1AatZpGj8K2roCM<#cTQ+D zmoV)e4DR1M>>mt{>QD=wh3+&X_yTxSA1=gG3&D^s{f$c3VGLBXXdV=lhLlwqjKt#o&Gyg97R)cQbhXJ<#rGGlz$U}V zo%Pl4M))snZdmXPNt2L7m+!7le3@{y&Y+u8Ie!FIJ-cWMqV%Ut;YJx=wg_W6RT)!* z*>EsCyjG|JbTNlUcY#Loa{Gx)4ebX)Pj#Ujo z0mA}HTutp|l?~~oH7|K;m$n4klS)hQp-gHlr{VxZT0F3DG~P6qk|%Xk7t9hXlwuM_ zb5Om@Ah{F$q+-%lvr`v$)S9hZHKbFDLAnl0IVii?=Fo4ph%6ISB z_Aljp1!PqmhAMZOJP3v2`(ryB=yrL8psDY6%HG-V<3TY}xKb z@WnYKbP1s6JUNeyu%0?+aN1WZ82;pyBU5P zbT5h`RyxkG7%`j*tz(=(xJcq=D#{#0L-6IY^i|%iCr3I&TfD9AYj$vCTwz1Hpiyyz zfisFBvrh?QB%ChwBoL7#;u$5v*%*3NA}P$Oa~QN=cFi(Ad!U7A(tT8o!G{lOn*AnU z1RreXGRR_9U3acY#5Z)!g8!wDKj#@SE?F*G-!ip$>Z!un-ROvQ2mD8+nK7t6keRoW z=c&QEof2hgt4We@TbW9{TPf8?*gI`0(0>5sR>}g~{rqZ6VO}VlTPaPv6rb3Z(!5;0 z`{l*0lqMl^OIf^EPtI!Pu__0)IoE)Ly*QGHzXcY- zV~R`My0tEGhR!4W2~Et$Uw@(ZAL<9`>b;ldV%~k(Ur*ipy~9E8 z{?HwCKI~nCCo>#eya9RD7f;qeyR$qAlv+@CujRB~F&SZCG2}t6?$Ep-BT(+2FruEi z9V1$2Z~fvS!k$tC;C32{=(GYG8%~hSa?%O_=7s5Q$5^<7CKgxFTo~h~8JAq0H9bHb z>yEpFM&{Y%`pzD@i#n|r-#)DLQM9nAR3U6lK&%vM5D%AUIC_O+vQo(V-iLJ>!b>4M z68VaU#G?uHfbt=kL11+wypKdfi(mG-)|<*P>;Cv83DpwOT%JQd_G@Dei2Wc^hU6aZcMsamGH_h$uT934`ZwhHL*ivrhB9WdlRO2`5| z2A}Qjfi_ojP}gQOQn6%nt2}vU#qjQWRNG%)Vd346qPpB!g^%--KCi!$&Ipy6S6@A1 zk7tpyZvpCWGy&8b*tr2EYf67N3TDcJXHBWE4;7T#zBg0>?juJ4l~V!G@7KKX`ue)R z8NQ{?ZGgVM;#4>vc5AnVEy}kV7vD$E2v}oIP;pYcYscv7>a;ahA19aNdzDUdK`H + + + + + + + Hibernate - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/hibernate.html.gz b/tag/hibernate.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..590980aad32d915bd7128aad79fba2e430645ac6 GIT binary patch literal 2906 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 + + + + + + + hooks - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      hooks

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/hooks.html.gz b/tag/hooks.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..e938a4b9edc5e3b6440565c295a146723f88d6c1 GIT binary patch literal 2894 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 literal 0 HcmV?d00001 diff --git a/tag/html.html b/tag/html.html new file mode 100644 index 000000000..270b654be --- /dev/null +++ b/tag/html.html @@ -0,0 +1,286 @@ + + + + + + + + Html - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Html

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/html.html.gz b/tag/html.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..53dc5e8f97425d7fd991a1f22ef444c93139d178 GIT binary patch literal 2818 zcmV+d3;pyTiwFP!000021I-$1bK5rZv;8X&=32?EN$TO$u`D@t-nmKAv~havWHKIz zgeb%y!4RNjrOki81wc|DMLAZlcV|1XKw@{X?_B^I-+BDgqqE=NJVA3Avy2o6tn5&Vo}A~6c)I1@xpoOfqW-TRI`mEf36oJ&d;DbJ*X0-i{c0O*2- zay|*kB@KwHANCPVsHB*=BEXDH`d+U_YA$8!l219koH)O^?@rxEJWjEsQ${ShluSq% zkrGo<$;iobC4!6I(lo|NGWN~e-8DXAo)Aet15ut>H2)EB%Dk&Al{B4l=>c5}@jUz#sH0Q5~2`GJjH^D z#v*mLlmgr2*o2U0%mP=Y6eHhXEEb+Hs7k4u)zB_mU3+bKG{zD6`og}36TbDzOOvQ1 zjK+*67igZ5*=7SP8Vd@+ zisf9KV78Pr5XNKL2!@Gpf#{6LV19E-iinX|GrXca<>7L_dYbpG@xU4nt?_|1zK8y( z9@LLgo@*2}LQbiweIzijEl5UZ75JCkYKR+DB)O7qNCKW|#~Psoa@TPiCTOC88&Z)n z469EW4=#>tb14p0S{R`t?_PRUpNnx8QCO-6zx`fwR?8*mXEH+lVRI6UL)icq&{dfogKuRhHJ~~!XcB7ijgyvdF{}%=_?QbxXUmFE z$=#1J2`NV1m?ouYM@QhudkxX=#>=-fBvYIO^}$KQu65gjyUzOR zcO(3lHa9GIhNMYIqRV$zC%#O$T4&HoshmH8s-9gm1yTCbrf{PSFI$AMoT`ke!E87f z9$qU{0lJt&qjHTj{}Y{lh1~`h^S0HCgitD=AN0dM*=!nJK>VVDjD6E8?~YXsK>@=8 zN?c9tWt9!-r8O^kYL~VI+mlL5@S#jWOekJqv{*$|9}J-Msq)=Bw*5;v zUjbPahoQ=yCJ#cP_~zKo2D)7yA!zEmow9c}{CH3d($3!ThN`8^tz|Ic7@XD!C|Y(U zi)lM_Oq5)%%1{45SFxrvD?%AxI4AWuUt0?Hw?|0y2YPpV&14(04!jkcYNS)&W{xUD zHN$m2I2lj%W)-3UGzHI=8&rC$mFSz&&Y1-T4`pbpTHVI8Su@~qNME17Vq_wvs)=j$``O5oI`cnQld8s@vTCu6v_qme5ghan z>+jW$7Pst*uG}&N&9IgWsvBda)K_me zSjF7BBwQT?0ka9$N06D?gf`E73VN>il;e!3H!Ld7fX>X+&CXPsd`48x^Xav|vjvxi zS{swk^vw1=0*lkkQ&&_33}@~flfQ%2l4KjRFN?WG^0b`KxLomc$92)z+`s8tU>ApO zz^J}B4X~SnMuxqk!yg92qhbGEe|UI*sP62RNl=f-6h{PygW{SE=ELIl)0}bXS^uN( zaVVxs1LS?wCxK@16Xd#vr4`ePw`Up@otD>j6_~lSGmM)vNOfMRHw(peV%=JoI78XJ z7jHmb_5Fu6(C#cx0;Lwz-D^2_R!l}1SPXfPtJ@qe$OshGCyc14ZpVn$*;_vXkFclI z0JxooB08eyWz~?)_207)OWHrL6)w{Gz}$R0j;Xj}o##kHKfVd!WtL9MrWL zjZ`ez+$vArSuwo39@X|2DOmXZM^Rlftis3nQJ)-NNoR!0%&RZKu*b8=*|z}ocWVIZ z4eXDAk~O8jr2{i%!Lz2+7g-9*ZQo$20QZq2fXb-===W>hczu1{-wfYU=QcoJUvVm& z54*K{s}|*3jf?N2X9TPWHIgr#p>D;br`tlW*s(z3gPf{&EuFTUy%7y{ z)O}h@YO4fU!*CRa(@0B*FhRCk*l@em%4S=3gX?EomjUB~tSNIdV{P)?TpI-wmdB2L Ub;qg)`iqPI2B$puvdAa^00AgiY5)KL literal 0 HcmV?d00001 diff --git a/tag/icmp-pinger-more-than-75.html b/tag/icmp-pinger-more-than-75.html new file mode 100644 index 000000000..55ce08ace --- /dev/null +++ b/tag/icmp-pinger-more-than-75.html @@ -0,0 +1,296 @@ + + + + + + + + icmp pinger more than 75 - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      icmp pinger more than 75

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/icmp-pinger-more-than-75.html.gz b/tag/icmp-pinger-more-than-75.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..a10e9a65cb8f9e57e58cba6b82a3e235010e4b80 GIT binary patch literal 2913 zcmV-n3!d~JiwFP!000021I-$1bK5rZv;8Yj=5mr-lhnhGV_9~|;jDUT8?smDl#E+rEZ zgrvZfR5Ef*{U|{RjYE>6h^GX}8IIAxKC;nUnnXB`$F70gUg16BF_H8$EX3o=I{)xF zWzKb)NSb(DIzErw?B@qhP7Z!Qd3~_xT|B?~P3|SVUtcSgRj4K@Pe>{k6N`rr^P`99hR`4U$|WRropa6d4P-tBMbZ@Kc&Jcz?`zh_J^qiD0D#XaiIuK>a?;0vIAN z3t>Eo02<*qKmnH6!-9y$B6YTu0^8(RhmfVL0q$%r351IobFc*T>j(r^)|*&3Nf`CDQ@LvH z2R)Y(22)IuG{(xJTBW5-=;Zw68TtumHki<8LM|8)GeRKB3|Fq4k%+jy5bk{Fz(-+< z3g;D=WDzQZ3m4X=S41PMkY1%w$UX&q3Mb?|WCSNvXaxX`M^hY8wwSzun4aUsI+6`( z68Ot;U?D63SliiZEGPuam$Pw<*+NoZ7>{Wq7{tN`qEjOM+3hJQB1U4(@RG8}gT-$7 zH0xK!gUWbV8Shob`{f`8dAhqysSl51%P#OJAY ztPzSKcOA81f+iZc0Tl_uu)4>%e|c1!OK_ml!U!EY`^j~EF2ZR@VW}Sc_Iu4)EtjC5 z$q4m_%}Fp0v1f#aGYQkq-r(W>L4R*>ScjVPG_bvt;7j05eb^9BEg(!+zMoXtlAv_pCt5Qbz+EnrpvY{wlQgCU?n2oP6Wf;nIE8VRvX9jCCwLTEs z+S*dGOc|fs*CT{8$&cXW7x)kV5_GJ+9-wlIdMqOq0B1h5Rc6QFTPaEmsE!L72U>jN zq{Ukd>w+ylWW3S z>@dZP7GWw*Rm9X_IvflSZWJm9ozI|Axj~x0MWuV^u?t&#-_JS5tdYWdnLunU_4NmbMsICzY1qLz&cAPQ?L+w76Hn(Rf}a zC6DWR-zFa>%kc3{~zlc@PT4{iA9&(CzXFK~vxD6uqe~~pZl86f5x6iuWco@ZKQ_Yo%=+<7SvYq+e&`>VBb-P6IT1e>gPY25PE)k z_Nq`{NvNjC`|Z3pW7)iHiaK^P)@p%#*sw`6Y}c4b(*v~AT|XMBB63(=%|T8_ch_iCE`CYJ?QZRSA8ewBW}x*>tz(t~sU7cTys zrNp>tv1om()#AM;3TJz*Bi0@8Z2lz(w6Sf~6(KS9vJ(_hvO-rkJ=`_|+ew$ygcnrtj>tl7kEK+}o?+5WJzBxk? z?$y8z$P{NxYJbuu%cB zt!@SNaLTz{e@s(5!^`z*4+jl1u02Umo4;EeKsED{oKxM|E2W;jU1JqJ*`QkeAc5#itB|Ps1A)<_CM{X6kkaWlcUqDrcE@qwj3MrJ>fwQ6!SHa{-|r6(9uCz->>~E-5t-nS;9!v7ox*&OUum0zOFip;6fO>gw=h7?M}53& z7C%O|ZCF||t$2H;LD5NZ7h8gvn^?oRIapSQ(0aF%-x1fXb%j%O5#mp1Vm|)-6TSaX zKc`pkog@>p?)%P#Ao9fbc^1pgF6z8Hu^;vh2EB(vd(io?a|51Cv48mrk6Bh;x}p?A>8JeyqK*+D;`PV2q83oCsT zEi5Wkh^i(aR&q6n$BT0u{(>X2RLJ|@hgBNFNgzC8`3nz-Lt|(aS7UT}Gus-gj~CB_Zsjam`9urlC(nNcZ zuoQ;XNK1$?K{i|1aJ$jUW?y-W?-W#Z=`$|KiZa(T)+XQWwUIMX@z}AeF3$Bpe?#@Z L=kayVu_^!n#%-8- literal 0 HcmV?d00001 diff --git a/tag/icmp-pinger.html b/tag/icmp-pinger.html new file mode 100644 index 000000000..6434b3ed9 --- /dev/null +++ b/tag/icmp-pinger.html @@ -0,0 +1,296 @@ + + + + + + + + icmp pinger - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      icmp pinger

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/icmp-pinger.html.gz b/tag/icmp-pinger.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..1e3dd3f0f08c5f1afb8b5e61690eef59881cf00c GIT binary patch literal 2912 zcmV-m3!n5KiwFP!000021I-$1bK5rZv;8Yj_Ii?AlhnhmV_9x{KgvoDhjoIK#Oha^n1Q`JMa7v8Pg;kco3c$s*&qbWq4sNm2k^ z&`8cE5xJouarMJKqA8UWGgpL|kxAd{)kw{x%v|zrPH!g8Z|*N=?m15~ENQ@qMVFEZ ziDFV>N-7ySrD2kxjHWTkk&9l@EWv3y_RZw(8oLQkiKOp=Hcu_m{|Gr{-ff;qngv{X zAy54I_g_CbJNo_Xr=w->>iNxY@*wN|`jgUY{+RI?;egL2f|Zs?&OjRiG#;{f1VaRtAdF`TKqH(+ zD8dp4SP;=zq|TO7V4ED95av0vz?DVC$oChEg(nQEQtD-kiRa(h}&MtqvK;Hq)1``@h$R#6UMhFC!;mVgYk`O->!e0zM_$Wv;AsS(g^g4x7_9^I7croWOBRHc%D*$MGGsOvI%gN6W#tXdMM6w}G27ft@9E1e` zYdbrQ1%+V6axP9WTS^)V<1uXnqg1#+bV_76yFVpG#7L|eUQrHswA`p4`lL3O;Yg*05jyq`v)lSyg7cWdQa$+X_nNa>EbS_5dz!t<(suw_zlKhG$aYMNQ4zJ^!&(p}wI3#Or zoWtH1C!3&hk`XMG0gK^ANTb}4-;lfx<9}&EVJUGqQ{g>AQ+i9HlP~=mbY+HKuP$9V zS~*<~;lT)6momY(rg)E#3q|Rgf=g4zTzrEm!%&%9>F(@!GgzCc^?~5d&W@60%J{;) z9U(lI`~+TpfdB9>L#Nv70jjWQz~;mP@D@W?Wp)g{m7~mn>bRh3q{TN*TE4}wF4*Gj zTu3@yR)k9KzD-C(G3q8XEk!#%21nj&i2ix9d_^M?;Jh)R!>2NN(bJ&MXrekGoHp!Q zw=KBqw6A_Q!hdLU!-8i>nuMgfe0O!?%Z00T1|5~k`6H<6`E^qer9W*7H_q|0MHtJe z%9t8VhlAnKokA6$iy1U3cS!TM==3A(Hn^CztzIOAQUU$2AN9#*)93=?7Zqgen~r&R ztZE1f85U6DYHBa5Y(#IYdC4=ow58adR9b=$Wm01~6$cp7;(>*u@q)ROJguX;V3tIo z6q7KTf$Cib$(`sY6_c(iC#xqNKPA%y3Ok4Xk%rfb=oR!^X?O3WYYQ zXo?jx(58%idW!y;1|mDTAnAPU8~he@T=p@}of0{x-}8iwecVt6{-_=-t9+!{BdPD4 zl62ceK1Mc^KsJ*#vSaAcZVD&y!Ar_*i}EZ;d#mMEsZc#Y{v)}Av?D@`RaEuC07{=K z-@Oytzm)S8kX3OQs@!SvAQXx(PV8);+vO30roP)LduPLs2gM-k?44|=TFTs71|yEa zX^nuQWmmG8wnN86$>pm2^bd3uYf7^sl=FpiT95O!rC^(Tj6{E+H@SCAwjt}lTd}D| zI`wVls4`SDTxWyRabWLRAs9em@Y?c*N`19TecvVK%z}c4GQw5KZe!i*uGe3#d3@n! zA9M5fI0)#is|0n8pwO=KkOBZB z0{sh69;7Ucrt{k^g?XWH9;7tMQoLhZN^`M%_0x+7DNRb`ma=$1JiUC7qGWslyW$yC zw=E@lsSsZ�M!?4x4_SY$?;v8tFmG1L30%L2tIMLJ&jfl}3D!a!Jma*ixiRg>xTi zOov)Fo&S$UFehq9sZKQIU)&1TDgUgWAn4%fFKY+yZ^r+9Yx0R(l20-0CmS@FFWrQ= z7;HA35^{fg+G@ouo)3f*f(=#e{zWJ_NUGB%IdQH6hEwqMu{u%~dAPz4qjVkL9GeLL zX5dF;iswvff6|w82s3rRIbWg+g3i#nk)?T#@pUh|wPU(C*&Xzc>hIOb1a8^Z-LTfA=_ZYUU-mpt`eHO1*fs!7AqVEamDz51384 zK1$BjDMIt?uAt|NcXJFr4R2UnoaJ4bsr#LcHTjIGoXvwfeP;_U4Yf8VpXr(Hc?1@N z+*4PL1Po{Hj?=$_)skczvoDIdMv}0c&$wLi^qK3TvAIXpxA`uP+>lXy0UlyE1C0!O z$46fehR4JHVSjk^XsGU9muXm!$PC8>M}y+J6y~Gi7TcUv>RJD-@Np!9r2+EZ>JweF z_$hK-!_tar#oIFtiq6XG*9y#Bz8c2OS+Y8J*1MhJTDWel8=Rx77{5ak^YQ1O==GcW z(Y$)^Wpgp>zV2KJBG1B*&r{jiN1b2J+(*5mLGRJf9dzF8-GL`_9A3W!dDYih)tUR~a$(lo|lH(@;dG71-Et zf@D4?tpH$NnC^Crg*#|saRohyF)oxV$<>k6H>hLXns?C1JeyqK*+XBUPU}^=4=cSD zEi5Wk2wM{nD}@@wk3>U@ zANIP|o60fk{`fSF)_w9E=xfK^F+R(9fEiL>zJVZ*Q8$LaAmtv~;LkgyBew*WDwRfY zKm-y8c$Ue`iYP?XH_#hBb07cvU@*9Nd2rshLaL$*BZL+d`uK&Xg8T(uLWY^Fzbb+P zpesLB%XIhts9=nvL+a920Udr&;2Np}hTKOfS)eE2v)w(==4uY=+LXpBmTYd7C-1Bn z-d&Gs`wKBF`s%Hyu8UUT<9w@c0B)r-LS^RFmzmh(dFe(|pzp3Y70#R8+WljT@~y_j z_t7%~)|e4g94PPFF}k{pZH?8(%jZ$oI*V35(L(vj^IyRm`+%*~9o$#;Kk6iiqiJNDIGxgO~6q5c;x KWaulGDgXd+xv&BN literal 0 HcmV?d00001 diff --git a/tag/imagemin-pngquant.html b/tag/imagemin-pngquant.html new file mode 100644 index 000000000..a743c0aa9 --- /dev/null +++ b/tag/imagemin-pngquant.html @@ -0,0 +1,306 @@ + + + + + + + + imagemin-pngquant - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/imagemin-pngquant.html.gz b/tag/imagemin-pngquant.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..6e920d0d960241f952fc2f6bc3178cb6bbe3fd33 GIT binary patch literal 2956 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 CTB^DL literal 0 HcmV?d00001 diff --git a/tag/imagemin.html b/tag/imagemin.html new file mode 100644 index 000000000..d72db2c2d --- /dev/null +++ b/tag/imagemin.html @@ -0,0 +1,306 @@ + + + + + + + + imagemin - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/imagemin.html.gz b/tag/imagemin.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..0fe4cb91ff6fd650a4113ed682d68a9423925573 GIT binary patch literal 2946 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 literal 0 HcmV?d00001 diff --git a/tag/java.html b/tag/java.html new file mode 100644 index 000000000..7e72194ed --- /dev/null +++ b/tag/java.html @@ -0,0 +1,316 @@ + + + + + + + + Java - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/java.html.gz b/tag/java.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..49484ea1ebdcdb2d7117c541a79cf4c4ec9883a9 GIT binary patch literal 3069 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 Ls{V#zxh? + + + + + + + java.net.SocketException - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/javanetsocketexception.html.gz b/tag/javanetsocketexception.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..400bbada7b5bf4695b8bc3f14f6cae2bb115e4dd GIT binary patch literal 2931 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 literal 0 HcmV?d00001 diff --git a/tag/linux.html b/tag/linux.html new file mode 100644 index 000000000..dcd72a8e4 --- /dev/null +++ b/tag/linux.html @@ -0,0 +1,296 @@ + + + + + + + + Linux - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + + +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/linux.html.gz b/tag/linux.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..a7d8410061761683263dd704ac173ebe1a29e2b8 GIT binary patch literal 2895 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 literal 0 HcmV?d00001 diff --git a/tag/low-memory.html b/tag/low-memory.html new file mode 100644 index 000000000..33b3ae4a4 --- /dev/null +++ b/tag/low-memory.html @@ -0,0 +1,296 @@ + + + + + + + + Low memory - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Low memory

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/low-memory.html.gz b/tag/low-memory.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..c5c12762cd60501b951bf85583e94dcf228e54b1 GIT binary patch literal 2898 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 literal 0 HcmV?d00001 diff --git a/tag/microservices.html b/tag/microservices.html new file mode 100644 index 000000000..caa832722 --- /dev/null +++ b/tag/microservices.html @@ -0,0 +1,306 @@ + + + + + + + + microservices - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/microservices.html.gz b/tag/microservices.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..de34096132f4dbefccacee376570fa907bb20a1f GIT binary patch literal 2944 zcmV-`3xD(9c_=*FT`*h zPAn2zN89j);NWN*!Ou7%5+i?xQ$gg!`t|Io{lKaY#W*4p>xzpU0BK06M3E zoJ|69MSWuHmt90-Dk)~R@G&EkzSFCbnn{`1sr-`JA$ED-* z$jyHG{_*ktAIGov7rpc6SHH`>r1#rvrKbwjB;^T7A$L{V0TF&mlLqe(84nTmcqS3dv_Nu3<4}OkeU=6Ah`<(v@gxFhgyR4O zSYi(gA{vv_*-{E@lVcr1ma+=CvZ)xk?tDIXgh5qGU9X0A+3MPB!=n)n$)_iFHJorO zpPVEP3&Lp3XncugDVeS(F(o7rE@sTZ640+B5Lj7nV&NoV)Yness%q0xj~Fd}AzKxi4RTsb2VaeX1&`Otx1g()hWS74Gws0=P# zn44Y^jj%#`l|mu=6!a;akn@lcoKT?^05pD>;)t@vym^OkzENmb;CDNbWo{}PBB-RWsDSJFv?3Qn{e&u;kc^+1t z_bSi#(Vyju`ccZWjiN@#Dpa+L1O~PtThVC={&Bl}#0@HvTuVD3K2Nn{jZh4^>#z+I zG||8fs7M%w**(Vn%fs4Of&-NnM(Dt~pIq0+BAkX4rs~0;ey=&I1)4QwwZ_!4+izif!77La+0lLA70sDt>N@pOc~9u9}~ z0S`b4jP#RhBsil1`r7yXHW)j_0nNk+?NtS-DAn;GNJ)B5qp+b|5Bry4%Ck7I6AsB* z8|QxSo5OWbDM<*H%7FRfT1cZ@pI?!*4Tfx=Q^f2P8Fgr@YG1c%?bHR#d|y>^8WVwauOY&mR{8A=0mQ!(nAuaAza5SEmNy+0nstsm| z6iPk_Pcu-x%^*rsJnznm}Ra&_7cDQV~6eek<eq8bS z+|fSe=rtM7V;+zTaZawGb_sC~tawyL@6QwHKh6h^+KI5*=T<)_wN?I{${BhI1b;r= zMNbSx=R)Y(_(l^xd5vBHVKiu$rWw-aW1H~*FOBrSlt%jhL?dH2W367AKQ{cfna|d^ zvBQ$g=U9G8_M)XBi%`PAbiwT z@zusv2x17GYQ#G!m*kv@4MjRrIJc3;bf`ts`6U{`l&E#L+V_>8xfQHaexu(Y=-}gK9r&B_1@3d9l!7bqpgd>6t zRUPAbyjw`BjYc`K&OL@>2AJe!)sIuo<@!y!+7526S9>^U zm~rhsl3L;3V*9a~d?h%hTD~Zyo}8|+iaAJ)x!T(WW@D~T6;idG)ZE6+>Dl6ahEt-x zurS}&Ju^eM+a_)D8AAMI-i^Mq0hfka8&%tUzvW?jn z`B)=KRGiPaT>kczZKJU{Qr8zdY#i7=qxvp{kL?6BGVC4fe?J%=4Ey){!~F+Cbqv3V z{dzm_1#G_G3&nVoC_k4eV=Es z?Che>ugCU--u|HXU}z6I?{;p$lPUHuUxB>pZqo{Acbdh%QVZ(tv>YWVCPNG?2Helo z0j=Yw1X`abjHtJ6$B5S1Sv}PXv7^)gxSfU~I<3IQh7%;yjI;uPd11KQF&6HiNrfwD zw2X0+luNGm-F`rw$_0uJ8ku*K>pMH>9_qB-s&HYZ3(>-&QiZ5$0%9dsgLt?&!{JLD zk)=Z3_TH`15Dt`MKu|T-p)nL*`H)N@u(~1MMWUg_k2~GUm(nro{`drH^NLSC0{Yr9 zw~Ws+?qP=1JuC?F5OqWNAEewtYy5euaO9T2Ql-);4v0YF0M9a+SrLVZ`T-iiXZFMY z?hOVful64GDZvt5~2^8PXT;V5BH`l_7OEEvMXeDXj$DMV0_6 z#{!_=u6X0k^>ueWd`q2M1ATMFDRJIy*N&oFlwWCFTo*kfV2v3;`L6kPHAa``@~yG@ zaPd6oRyN#~Pqa{e{QNi54yz>yEanh_2F;hXnew5B;mtGsV!&!MmEK$)MmLf#ouY2Z zq@&wHCtp`W;)9&3*Or~OoV^web<`1gOKK|xS;4RrhSf+*h%iAmo7ix>(adJ?e2W_; qRbBcFRx>NgT+djWe7Dy|&P2sy$F90Ip&#_6 + + + + + + + Microsoft - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Microsoft

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/microsoft.html.gz b/tag/microsoft.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..8cd6874f8391e46581f922ed7e0a2bf1f813f467 GIT binary patch literal 2880 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 literal 0 HcmV?d00001 diff --git a/tag/monitor-website.html b/tag/monitor-website.html new file mode 100644 index 000000000..b93644ee5 --- /dev/null +++ b/tag/monitor-website.html @@ -0,0 +1,296 @@ + + + + + + + + Monitor Website - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Monitor Website

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/monitor-website.html.gz b/tag/monitor-website.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..05ce0e8cc647350858e703c6620721250b43dfcb GIT binary patch literal 2900 zcmV-a3#;@WiwFP!000021I-$1bK5rZv;8Yj_Ii?AlhnhBV_96XoQmx zg;?S#7DO}_sk5aN*e1s&ggj#wxU#Ak`TkFMYr~^4j>xAM_BEXF ztyf-}L?vM~W;D4(^Nh?klb8__3Li7(VF~EhF$k=zH*s*9G8$;7^3~jTdM+ajrkEsI zf|W(JN-LSr>G{uR=o!##Frm?eTrwi&gg|f^u6#KsG4TT-{Ke3NkJ1zt=N3%5jFiEJ z4{Osaq7l|euTv;xpMgGw7jYgjf>SEA0)WQD8ICDiPF_JMFYs~`$%Zs3{N*@w5EcNe z?d&ub6oM7Yxj4aWDQO^#$Fva)6X62U8Ii&K_LLM6Be7<9MS04@<$m=v?_1-6H6B{y z18aN_{Z&1vAEi9kC~Ab9QdRp%U|?I2jLs_XkGs_nH>gN*E!~g=JkyRfLJ8!q<2Fpt zL<2XZB4rp>pE4d?9@pkl9ICW1LPy@c^twJ5<1C`ER1bdpz2>ZzOVB^b2=#}}NiYs^ z=Y&Rc3De%e;K9Aa{=wj=4z=J}=uR_&FM&7p;X*vMfGjecmJsSi9VFn4XCw6Wa5$__ zOaYX@Oh3Iwf-@STuY(|HgK;w)(p-$tfh~xoRBsAFO0o+YM-Ampac~)BJWoP5<&dnk zaqjiLIo<@7k(6Mm3|I^|LK@`;{EB3C82?)f3QLKDxeD(Qn$c?#9)IiCper-2>-Fo4GW$jX%dp?^4-;mFB7iT8FW=D=Z~POXO~Sul>W3S+$h7#7GW%> zDr0Ie8xDqtHwsmNF6OG~+APgKqSH^X+u&l}wtA5eN(JZ@T8) zv8o{`U|2wjtEs)LvLU^)<|R+<(w1O*QfUc3lu3={R2*PPiw72t#+&9+@}!RHf>~mP zQcS{V4ytzH%jE3{J>)}_HjcQ_>+3Dtn!Iwk0icx zLXvG4`4rhy0@+m7$c~{$yDFT-2QMkNEy}YX?X8wur9$-p`Hy4{(vAo%R#DXl11No} zeD{uR|5DCZKvu z>D0HGqsmataGeiM#?$7$6#@d322++tR4S}h>)S4qGYbkH$|zT5yN!LT!(M;6=JkcE zeah8iBPBq(#ikb8LoDZDR``Se%roN7@+44+UwG;`!f9Vz{hU?ApkpZa`+J$JwvU%B*dFPa9XNd#IZ!r2(IRRSv9 zK<7Sa+w59reEmQR(WLvh8iUUt)HM59z6(Cv%z=>otbV|`A%Wl0l?(otzV=${1G>a@);Rj)|j&BZAgnu>gLo&lT zliIQLl^w!N-FoIrbVkrAdTeBAo^IUlrPp?F7w5f${$c&SI)GqKACsEA=CBXw#i?5V=_IiU=%$-`o)iED1n{a)=oT+n# z=80ZG&lMkX3{DMiSX7+wotvrKotQQGj37|*>5aa#1($|e8v^4{xnUbFZKa$UpH zifP5$a}A14%S+h`%v{MD#?1+{I*r!bp5n5&Zmlbvp^FHAKoj%v_uuI4yZV8>dheyV zn0McHE(DRMLBR7wcJ@){&8hpKcR1)h7`lVbyS*FmWQK#wmmshDqRSd+w=4{(yVr87 zpqPv>uo&_nS9f(@kU>o#PZ?29-Hs8hv$uZ15n)fM0dPAFMRZz$jSVMAW;tmE0Q16h zw__~aK@*EBXhw{2(~L{5&ZZusj&+ybK_l~Qa(!nHeTO=&7wkT)^j@^Es8k_rO+c&^ zY7mc>=Q#Qa$7H3Dx4n1kG=!HzcqH;C9ukix&@;+MWCnrNjqpAa4K04$>soIr$E^F~ z(e`G(Dwb?+l_&447~WlvYWr(4Ed1`h zs4kIK;p2R-?**=u5~D_e4>T&lOKOIeXnZMVZ(z6G-!dWtyD}sif&%%X9HGSsq*IP zUb2yV=?rx%COzF2dd1!g5+CGLz5nX8;e7Dy|!Gz_pV_)5%>w*4;>VE;?W8C(!DgXefbfee+ literal 0 HcmV?d00001 diff --git a/tag/mysql-dual-password.html b/tag/mysql-dual-password.html new file mode 100644 index 000000000..4d6abe369 --- /dev/null +++ b/tag/mysql-dual-password.html @@ -0,0 +1,296 @@ + + + + + + + + MySQL Dual Password - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/mysql-dual-password.html.gz b/tag/mysql-dual-password.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..43f78509bffa0e6bda8f422c0eba8b82e1247f06 GIT binary patch literal 2930 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 cx7S9&gypegU){Xxf&RMn|3X1 + + + + + + + MySQL Replication - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      MySQL Replication

      +
      + + +
      +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/mysql-replication.html.gz b/tag/mysql-replication.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..4ec9e4c1510b7f415432a5bac00e3d8e91fd492f GIT binary patch literal 2897 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 literal 0 HcmV?d00001 diff --git a/tag/mysql-restart.html b/tag/mysql-restart.html new file mode 100644 index 000000000..2bbafa4fc --- /dev/null +++ b/tag/mysql-restart.html @@ -0,0 +1,296 @@ + + + + + + + + MySQL Restart - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      MySQL Restart

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/mysql-restart.html.gz b/tag/mysql-restart.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..f55cc0ec6d4cea48477aa184982e13bb8b93813d GIT binary patch literal 2895 zcmV-V3$XMbiwFP!000021I-$1bK5rZv;8Yj=32?EN$TO$u`D@t9!+}_Cu!pJ+R0=* z5D8I;L4qMb%W9kdehYx4K#Fp#T(4t0u|Q&XvF}{~8h`cV<>T|;Up+;08MBk!vHCy^ zC(*_=7v*nv#o}<@9NSsOJqBk^+agvOEGrhaUaLf}T=^sFyCl>L41)MVPI!h%@ zr(AjgkNy0o@1L9={(kz);j(w}^VM(iAnpD7i_()tHO+WRGP#^MJQ@iq$%R_SqFiv~ zoS+Rza+%uj3o=z?9OSQSJ0v2=XxiZY5#tfUQ=Ur%D=m?n(9l`rQcCVn7cMZn*PPXI3Hk>aq5iNr z3C1DroX}`4VcI(wJh*?@KNuXXHLQ%S;;L?;a7hhq@Fx2K&x;s1G9M)!PeIU5Av!i60 zF}`rGM+oPVAH&N}@E`uA=tO%xKou69vYc1|-eTyg%#OjgGL#xn9TzkSwfM$K%eNTT z1zUW`g`~4(MX2QNhnR#Eqi#%-QnaHZaOAy)==b8~8yb=+&KeUsd@7R{T@Ct*#;OOx zNyDyn+k(5!`s#Nh{HHcIEO>^bNl2p0cULFAOt@NS&{L_LKZ2^BT{Z<#`qQRxqYN)w zgt45ejH$tFI2az@C{zKum_ws-gEaq$PCvtLgNu3F>P12*70?g*VV`U^jV>U5Q9;JO z>6v%Os)nF|VF4wsruMSRhV;ssmprvgTY~LLr6u@KCN-8*aeyH$9#}XUZ<h5CUO>N_%;ZOYiEC+M4GD$?UKlH_CG;J2XTvX60Yl*l>xiN|E@Drr&Anl=4Os`? zicK}rsc$n!m7$v9Iv<>jr}bScgafDyCM78E>`F|LYs8}n9wz5a5| z=L<*soTI}=n@XMmq#G~AM+Tjb7FU2(14xV#BeIKC2#_vC5fA3iaJtl!Ktz%V^h<=ZF-)tZ zQy5?8J80GH`eyw5Knu~N`?wl|rytZb`$ZlLp4!ZNknyY@z_}r5-_n5#{+B-fBhQHO z(sI%I_Nv8sPZiGYMn|kW;6EzOj6t1(EWVvQKN_sNDN&}jr6dWrm8rzLlTv+veb$x& z{Top3q%4dk`Sq50II5MjF$hmQCmXqY=!A+ES_` zP5C#sf_2KT^%DdgJpFC$;O))$zwb=GY)A4XcKu>|PV=Q36BmQYW-~%=Z%$jQxW(~- za7?hFs=dF61P4iVx+Evg#gyR$Tz#yLltmV-@PjZ}$2Z3&!oM2$A(`QvN$pPhat>jp z?ly7bm-e{$c&SI+?&NySke;b?ZApJ)ChaH=oSZj_nG) zy2C-kj2jOR)ZXtFXHLzuB*FPqW3QBY_GW`s%m}?{n%lVAU6;EHeE*hJARDGN8;?NBk)feCac2m&Euy=I${a|=B?BDMX4<8KG z-Rm+5>JgdZh~RKgT$jRpSlnWpvr0Yde-J(n#dK+aybtFo#jcO)PlNuE%yhC$p{0B zArEqOE9V6nfu`UoBkHN!F`{+$)~_-m>?t(>Zl|G$PAjmn;RMMnC#?WrUYPE7jDLIj7 z&)i4e`G(Dwb?+l_&447~WlvYWoW@Ed1_+sIH4v z;p6Zp6smef`WvWDR(45yKn5MhFBx3J-MtCh{R t@)lnsuyq+QF36fPH#62I-|e+gFkyM@*jIPudZ53F`d@0m5}lbU007YWlHmXV literal 0 HcmV?d00001 diff --git a/tag/mysql.html b/tag/mysql.html new file mode 100644 index 000000000..b6d2a8c1f --- /dev/null +++ b/tag/mysql.html @@ -0,0 +1,326 @@ + + + + + + + + MySQL - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/mysql.html.gz b/tag/mysql.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..bd7bd90f5f3a4a6ab2addda7c2668110d0dbcde0 GIT binary patch literal 3073 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 PKMnjJdoDFiL@)pVhqLYi literal 0 HcmV?d00001 diff --git a/tag/net.html b/tag/net.html new file mode 100644 index 000000000..e23b81cca --- /dev/null +++ b/tag/net.html @@ -0,0 +1,296 @@ + + + + + + + + .net - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      .net

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/net.html.gz b/tag/net.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..221b3d1077bc065088682c2e6a086ee99df73aee GIT binary patch literal 2892 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 literal 0 HcmV?d00001 diff --git a/tag/noclassdeffound.html b/tag/noclassdeffound.html new file mode 100644 index 000000000..0cad6561c --- /dev/null +++ b/tag/noclassdeffound.html @@ -0,0 +1,296 @@ + + + + + + + + NoClassDefFound - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      NoClassDefFound

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/noclassdeffound.html.gz b/tag/noclassdeffound.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..e47fb5ed6df8e148e4144c10b6aca1a77744819e GIT binary patch literal 2900 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 + + + + + + + node js - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/node-js.html.gz b/tag/node-js.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..2e708a00ca356d9ceb218e09ad85df71b38cb9a6 GIT binary patch literal 2948 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 literal 0 HcmV?d00001 diff --git a/tag/nodejs.html b/tag/nodejs.html new file mode 100644 index 000000000..bd98e8193 --- /dev/null +++ b/tag/nodejs.html @@ -0,0 +1,316 @@ + + + + + + + + nodejs - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/nodejs.html.gz b/tag/nodejs.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..53d793a36a387b7fd5e480ddcc29437e7f42e97c GIT binary patch literal 3011 zcmV;!3q156iwFP!000021I-#~ciT4dv;8YjcDs^WlhonVu`IcDj;8I4TPJqA+n1N8 z2a*tl7$g`1w5+!I?>hiUilivpYLl*=!z3{?n0p4t__Jp}KfV0z{5hJ-h@I??)i1_=7m%-q>0C+EUmuuMU^J=?~Zcl?O@h*H=nG6{<3zB#{H|~+E{`El@>`> zq2XM@uyZhY{OGWMFgU71EqEH(UP|y4@TPv*5Kk>2ixejXg!)hi@j2t^2z@>r4(kIR zfD#z#CpSoNMg#P@@B3{qc8UXx;;WR6s0Q)E=?J;@inFlLs4#}yR+lWVQ!}82ZB30J4%)r;|u#{ zgm5PLF?{?0|KM+ePPEqpRBlm^WuyY&EQYqq>==A2MTr5`aY5rii*KB?_=;g(u*JJf zNIF}VgbMDyjYvQ->P9p!L_0bHN8W3Q{&}>#paJo4+8EH`Q<^+)XV7OfQq2#J8+NVR z7Tk5#SARCbe`s^VoM%Xygv7dhcXi@Rg{^f4&6LXdBdF@>RZ|e9KWz#-O!2Zsn2J*s zF*TSC2gAc#g~~w}b7)j(%K=^gAgxR|%io+pGt0e!z8^vPz^=mO&A6=dw1W_fq4 zY6$Wf7Et19YA>p6K(8y~k|)*D7USxm(h~eqCN-8*aeyH$9#n8No|j3<<2tGhW{DI^ zJ_t{9P`%9{xfA`SV$xRSWc8-wr(l{uVdv04QvXU3okG7AclVBqcE`|du%g+a1t&9% zW>_%;ZOYiCC+Od?Cz9hc5@%!A;J2XTqK~m|mB>2zo=0Tt;)XKtoqDKP<&I{L#IAKh z;%z6ni)E{_m2_1#XDrrzP)9z4Os`?icR&T zQ{QHeN<%fnbv`&5d--w|;sA67Un-7JYOYqK?@K*n6)1Qqf?HMVHm)m;_4>y(XU{$C zE)S2WpK@q&)xuv)ji^&{14T=SDX`*E8NHt-(0EJ-j@o;$+UHh3XH{BgLFF9%1O$J) z*hkL|MF*DsswlqJgwI}~b0CZc?b0-3*?eph{{N+s{-@GN|3PU)_;@zsOo2|J#rNeD zR?t%=jZ%Y8*mOxaK;NZ}ixnMcBws5^2q+o7oNG#27r$w0e@6vlH)E}Vnm;x|x0%Z~ zM6$>`q9O|o^CyNAp(7T@kb5PuQi>D=VePfA~uHLn#~Bg zf8bU9AGf3^ARK|znyOiq=ZEb`s*Pefv8EowF(jq2IvovML5nYyZwEzuc4r|7AXrMV^fbuYQ8Cg1#!X3#&Ze^;A~xMlr)+wyyT&8{D3 zoXgFdthF8ZT(9_8HZ8S$u3Kppjwk=1Ant!=rAkYn-BKh~J}$`Ss_Y=*`>uDVzH4 zB$=3Z-*l#e$W!0vSu8vIsPoII{kV5H=sh0VgU;K%TkvFx{i}13S6xb51MSYT*jH*n z-MyBhK*eN;fyIFPnL1#1e5fswJZD6`bvs71&ffZ|WQZN52Egq!6wzq~Ha46fnP#LF z0L%-+-Hx$v2TdwmL9=L#o1|QFwRiXp>QpYkbkNAWn_S=7Ltmjz>#Z0UW_l-DSX8PI zRZT#wokM|r5F%YpWx6Kng{uW%pkD3A>K!#p~Vk--O88J zG3);L97^(F)he!Wc(~)TONgI{cu(HB<)-xsPJ9K+nKuyL+I`)fm*Z84Xn|Rk>B3yt86>cRi}B zciUL-)jLt1{I0^s`c@z2-AHSMip;C;C18iAp|xKD)YlyW>Ks<$K&djMFHXWpQSd55 z>TY39x$RP63Am3e0aQ)}K)+e@#@p-b{$}`=I=2D(_KH*Dyxpx`C1_E8rEzgx^n!pj z<^<(C|GU)~UEQl_jnya1AA)Y>&_MY_3*~1&{AxO1wTyxVDI(CI`LZ@sKJ+BKeWsrc zSZ$`#o6E}tjpR#bs9Q4W=(foYNRDZ zm>}CtY`EQOX0risj~hW%UHS}GWNXUY%vhUz_t!?wM8#vruDbT3AM|bV{{heP4JBPJ F003;O!&CqO literal 0 HcmV?d00001 diff --git a/tag/openssh.html b/tag/openssh.html new file mode 100644 index 000000000..dafa1b5e4 --- /dev/null +++ b/tag/openssh.html @@ -0,0 +1,296 @@ + + + + + + + + openssh - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      openssh

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/openssh.html.gz b/tag/openssh.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..479bba4b1b9d4c20bcf9b483d393965c30d2161a GIT binary patch literal 2894 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 literal 0 HcmV?d00001 diff --git a/tag/out-of-memory.html b/tag/out-of-memory.html new file mode 100644 index 000000000..4e0414a2c --- /dev/null +++ b/tag/out-of-memory.html @@ -0,0 +1,296 @@ + + + + + + + + Out of memory - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Out of memory

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/out-of-memory.html.gz b/tag/out-of-memory.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..bc21e00a1ec65d9bcce366de2ca36cd6cd7c4bff GIT binary patch literal 2892 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 + + + + + + + outOfMemory - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      outOfMemory

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/outofmemory.html.gz b/tag/outofmemory.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..b65f98a40ae2647afa8d1bae7185b2d24ace6750 GIT binary patch literal 2907 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 F001&tnmPag literal 0 HcmV?d00001 diff --git a/tag/parcel.html b/tag/parcel.html new file mode 100644 index 000000000..9e1f454f2 --- /dev/null +++ b/tag/parcel.html @@ -0,0 +1,296 @@ + + + + + + + + parcel - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + + +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/parcel.html.gz b/tag/parcel.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..c744bfe07e3bbd9a4483550fbd7773b4c3f3d420 GIT binary patch literal 2906 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 E0CvopdjJ3c literal 0 HcmV?d00001 diff --git a/tag/poller-proccess-more-than-75.html b/tag/poller-proccess-more-than-75.html new file mode 100644 index 000000000..77810ba05 --- /dev/null +++ b/tag/poller-proccess-more-than-75.html @@ -0,0 +1,296 @@ + + + + + + + + Poller proccess more than 75% - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Poller proccess more than 75%

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/poller-proccess-more-than-75.html.gz b/tag/poller-proccess-more-than-75.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..e117cec90473ba8b3733c616d52fef35fe096833 GIT binary patch literal 2910 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 Ig{LY20KXNo2LJ#7 literal 0 HcmV?d00001 diff --git a/tag/powershell-mail.html b/tag/powershell-mail.html new file mode 100644 index 000000000..508b6c499 --- /dev/null +++ b/tag/powershell-mail.html @@ -0,0 +1,296 @@ + + + + + + + + Powershell mail - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Powershell mail

      +
      + + +
      +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/powershell-mail.html.gz b/tag/powershell-mail.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..dd5ad398df2f16c661d599871fe2c6173854fec1 GIT binary patch literal 2900 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 literal 0 HcmV?d00001 diff --git a/tag/powershell-monitoring.html b/tag/powershell-monitoring.html new file mode 100644 index 000000000..6738868e1 --- /dev/null +++ b/tag/powershell-monitoring.html @@ -0,0 +1,296 @@ + + + + + + + + Powershell monitoring - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Powershell monitoring

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/powershell-monitoring.html.gz b/tag/powershell-monitoring.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..8f93e94b265e74e7eef8d3628049653a08f44f91 GIT binary patch literal 2894 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 literal 0 HcmV?d00001 diff --git a/tag/powershell.html b/tag/powershell.html new file mode 100644 index 000000000..c3a6b10f4 --- /dev/null +++ b/tag/powershell.html @@ -0,0 +1,306 @@ + + + + + + + + PowerShell - Sipmann + + + + + + + + + + + + + + + + + + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/powershell.html.gz b/tag/powershell.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..3d77c2baa2ff5d49f100b8005ffd54fae7f02280 GIT binary patch literal 2934 zcmV-+3yJg}iwFP!000021I-$1bK5rZv;8Yj_FBoUN$TO$u`D@t9!+x-w`uJ5+R0=* z5D8I;L4qMb%SxO7ehYx4K#Fp#Uan*3VUXBe?0Xjg$6q}C`N_o}ub!c~jM>TVSp7l_ zC(*^|SP;=zq|TO7V4ED95b}&!;L4z4bZDy?Kfrx!n;p&x)|g9(i$v;CK_Rl^g4x7_8I6?coF9jBRHi(D*$Lbn&FtT<>WO)@d7V5k!(nl!v7qH4#EO} zwVj>DfxZJOv=6!2Cu*O4c zd|-_qpg*ez^`n&M8byteQ>tno2@GrtlF?ZO{&BY&;szB-ZloKMfM?pVMks;Yb=-yt znrPsLRHO{U>QlyptK-^SibItaM(D_UklxhiVw^=3mg>Quey=&JsFw;+Okl>7l=*u7o+F;xahcp)>bYKf&Db<@okdo|@#!*ALQyg4H8PAi@O*tfM zZJYjA2;=#=He0`L|?S7mk#zLlZWfa(1qbp{QU%K0Ox>e*FO5T!qD3OCB|vPBrn zsmhod%!Y&E;jKaypo=*)Dz`}UkLdIh>^8WVx2;|zgi-W?bU&^G$aw-lmq{RaZN8?R%DS1*yb-^sL zLMbL;GzZnY43az1Pbwx|RZdn>KVZHw|ONPDa0R;f@uK>j0{gR~<;i&a$h!2n91 zD&M_h+rO0a6_8bN7^>W9@*ot7ua50(pxfmUf~LOPDSKzbj|asd?d%CbfB9!rkb5f740>48mz&Tm76>w9wh|{Fj&L^@;Pa9XNd!(rgtIXhRhhLgtWN6CkJ?4t1o43uqDl8jHHL^jsA=|Z zMJ9M*Gr2=rw;CPimdbQT=PdYN`uIbh5#y8PqV+vwi>sb0oZXF%Sa-mGRGJxsVhp8f zJ9&OESoc$+Ozpi%5^gI~iFYrhdIy`yEd}~FpxjGY7)|nPLjV{mk zQksOwEoJe3dUkOyMQL^rca~^F4{=}Q%5W0$cuSdHYovQAkLr2_$*#AqLaN0**NFF0 zF3C9)TZ(j{aPA_F=}^n2^Z(HZW<>3q)w!+w%&lOZ@@xGBK?hHttsT6(89&Po?0?;P z-R`nm2(#rD>MmQSzvF;^+wrFP(v69W!MA2JLhkN&w)t^OgaYB1U_(`hX%VsxlIpBa zPMpgr!wJOXSRL?-ELhlPF6caE%fRR2MsfBJjzj<)H|F2 zHuI;1z)(97rPQTV~M zO+F)t-+X$j?`*-Pq1MLab3L;?kHF$I^VG#J0mGS_{N!`6T9RyI_GK~GND`Lw8J8=b zzHnVMHn-aP+X@$lZosJi93jAN3K|*qjt;*Y43CEW2mRsU!=btfUnW64B2yd@91e=h zYnTsGO57_z7}d!_tar#oKcYicZVR@CwXag&W4r$-cS; z(7UqYlD=-OYn-9W2){=Y^Xsp_(3`jQixTzTOLH;rzUf>FB2R;W=ZWm>qt36V?!(^U zp!aa-4mxl5Zo!io4z6B-yz1McHPG%XPXb+ox_d3RIf}^$1B)RKa&<@Q1sQ?vp@>c^u(9C;$t)+W0AOC2?sklYJ7{8Y1-+6nZkln))zR4_ z)Um!{=%A5#Ho3mDhrUIf)(;zeSm~W;VNt0<*qVS?DbyeyFE4QP6OPGBA#Zwb*J%hZ zh44t^Pdp?ZO`xTfkI4)Is~h2cBpO=$xYxDbRE}Bq$7e~n?vqb|zIMzVymLH-giA;V18UllcPgP?>r4 z)iU;Y7CHMCp#EYFpk6^A29&HR{p}mflm*Y4QlEzvl-s@ws{r?rBY?`O0O&Vs-gtX` z-QNt~Qs*{6-(GPloVUBR+u#=ETaAnFqvr&y0gY*K@V#rt=;~^`HC7)lUxZ!j%v||I z3+1OTelzX3+C{*A3=wG10$E$Bn0g%DzS7SIthQ3+&DDKyBl*%9>Q+p8x-ImItsx{n z$f + + + + + + + pre-commit - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      pre-commit

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/pre-commit.html.gz b/tag/pre-commit.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..c7fc39d16c05d964d40a1894936396589d3cd3b9 GIT binary patch literal 2898 zcmV-Y3$64YiwFP!000021I-$1bK5rZv;8Yj_Ii?AlhnhhV_9mf1G{{T2X8ffVIfnO?`v!yvJ{*!L~~PCt9{)8mWZUp_@k8MCwfsrrQ& zPNJDZ66b6m-Vhv~?IZY^#zbNiEO91?oH?&AzH=Ws_EdsnGIOpeS*1La4hnc8NdllN z8p`D?B-b<`u6{T~G@+7W=86C_G8=k>2C1c#sY~AH^m^v}=Dt36AM-fHlFk{i=u$Ex zVMHoSNhKp^X-3?D$1#=2MXzWY<0P5-W^R9j+n6Ur(m#MSPb|v+3OHrnO_oZU&bjn} zpr3#L^^^1C-_L(OE(VuBT>mDI(!sAkD zwdpm{2pgm~DO9pAK%c^kIFA^?DHU1)K;xSQjwvfb8*?cRRa%&!6YoKK)0~TO7ExGg0Dp#q_NQ{NWdA-Cg}6=c-)+r z11N!+VS0lEXEa2g2SLyU<7POdxtO3MTM$dB-W-CIWS2CKTFRZ{;3~>^o`i17Az5qV zJQ#d&x(zBLDZx@1upDlMG|CP5HOZPV{+AXMmJ$a`72XrHpf@Bu{nBqh*JcMe$K!4~gw zA?c#1302&E8(%K=||XYak1=Ly-Wy|0*1jb9Fpy((FMdWE6CJ04fFm~ z)esagETF_S)LvEDkX~E!lBafQORznuv;@DDNsZ-H9AHR`M;4C8o99yUq>1W+Sz?7! zPQqvjs&^SAccPzEOuDL^te>T<>8eA!&m(Xt|{e#o0-7$1qtY~&<#mNGr z1y;;Jn=lH^n0;CG93N_5EJeI~#sHCW878E>G0j?@`7w1-Uz4>y(;Y%<3 zn3v}QfG#5{FPEHOiA#b-aar&@yJU1hJay{ebg!m5c|AGN zf!pDOO%Jp~CgTblk_e5;gAJTf4EcUe7$f1l(33z!l89%N2xn_R*6F3Rw9ahMl-ZTc zc=C}JqD}X4JqEWvYH0S8+!Nfgo#7z2S=HXTB|YEKTTA{6AODeOrFT|~HaAioPJ6C! z_P07>(*gfcX%-AB66EXMgVV8QksOw9cA%;e0p&&MM?PzHo!}$ZaYf!QX#%li1$*i z4EFat-chDsG}6742f|04cV6#Yg&>B|D~)(B<&vB;v7<;A3g<4;m=3jSI{zPyU`EvD zQ5{~&zqu7`QvO9hLD0d|-_{P^-He~O4cTq`@hL|9WaG{A!i|ZG!9I%xA$PZ(twP-4 zMmX>^~I|#Rxy`i30LQIz-+?x32~-Q2iiw+B|TTX z&v8c78y1yEbQfmoZbx2iJ|SL~`TSPj*?~(#t&7QLdS-VXfyH^|sT)KBhBH^f$=|_h zMY4<8=jB{0Nm$NjT&{fj%yrS!T#xEYdKZUoz^K004zQboM#h7a^8ZH^%Itp85axuXG6EgIQ%2NNzh^}29cjC z(9Gfr`VC{;G~<%1&$4`qrD;F`NGQGzm9- z@-fiYj=5)imhm}eNPSZSK^~!g1pkAS2WX2w?^TZ65m>5J8pQz-NF3lj8596r`>9%{fAD7wV;mh) zm$nM%@Ph)^P(3i@Axg*!JprHXAAmO3b5Pe7G*Yo-bE`agZ_V)jW>nkXxv=o7ccQ)p zT8EGGtv=Ylk{bs`(Z?CV1+u=Lv+!pBDD^88`cE540*r9x@aq)fhjDR(k1eJ%!`*w`3 z?^ruy^-=Ld*tgD|l}~g~e)7Yw;Ei&LR3{F58bqK$3uI%Za_UiZ`$|6jA=s9!Vb>9)`-w^xw(AgAgrRpF0W2NqKy4}j0GSSqwg3PC literal 0 HcmV?d00001 diff --git a/tag/protocol-family-unavailable.html b/tag/protocol-family-unavailable.html new file mode 100644 index 000000000..6cea4bd76 --- /dev/null +++ b/tag/protocol-family-unavailable.html @@ -0,0 +1,296 @@ + + + + + + + + Protocol family unavailable - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/protocol-family-unavailable.html.gz b/tag/protocol-family-unavailable.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..f89dfe3bf2ae890528413eae0f317f94e0012dff GIT binary patch literal 2934 zcmV-+3yJg}iwFP!000021I-#~bKAD^v;8Yj_Vr0_O;U$b$Fk(sIh!}R8oSqIG9HM8 zD8wMa5TInH&3}IjfTT!@Qmjndv2z$Cb{Bi^0^sObUI3yEmLCG@aiL{W%BS|6vT~c4p zCq7wFkJ$R*5YdQAikU4u%*dqg^lGH$QpPsFH*bjL`B>f0$@u;%Ye>_f^ zbCbl9##1gGkB4sh)Ax_gkN-IT`8excJzM-PkK*31KP#^Xg9(i$WX6b?69R!|xN_y3gv9lPaF;^|eif#u za9)9lvp^YKxUe=|5RI@#dYwWc`wa9coPhIy5gb#Y6#z7TFkv@&17W?y*(Q<=X=3=F zW8Xqp0I;^R)mTsnmM>@H2(wI5PZ*DBBj`uM2BI?}z4`4aDI!K<&G3ryl>6CX`84lW z#)HauSQ#Hx#`n;l<%9ZB%Cn84M#w5ub%+E8wgpM(tOWnGUk-7DiX=DE_KC+6?N}oe zLGC(j!vswT@AZ0t!p@;7`BToYis(`jL!K zf7qM^;}CmJXfT&B?Hmp6-#hLf4NmG%OP=`lG$HsJcvHV@h^H2iWrE`ZLcOSiK>p{+ z2z@;q4(k(B03|Tfk8hCRjQZ$n&-2<~>;(HX6(e+16{Mn6X9__|k}Dbp4dqU;cO4`= zjeI-ikgTKNvPoN$B_6Gqi#r}LbQ_;aO8uA=wFA~1@*}kCyfamKBdX?9tV9zL)8)C zsA1Q-ZNXh|)6cNm;9}mkdY%vp1@yhX-zS?*qYH?eSCFx5 zI_Ukesv*c@SU`!ZslBMOK3!DiC6BA64Z7IMq|y@nQYJN)Q*nSHEgn^HG~P6ol1Ft^ z8_W_alzb9Kb5Om_Ah{F$q+-%mR-zFa>%kc3{~zlc@PT4H>cHXpxfmUf~LOPDSBtaj|0UZ?i`$Ms9MV0 zS_UJI!D)?vyk%Fin6^X5M8V~%{Pd4>6>CbfB9!o@bykn_wWVO&dxAuNpf|l+Cfks8 z;H}tHBc1v-b5t6t8Lsoe*?78b4-3Ho3Iwoc9ryxu~xMj`^@* z*=GE2Fto_4XyLiTe8g}pv_WwM@hXX(s4%w>^&yyw+FOQ~o*d~M(cHJ~(_cnL-+^G#1vDN^r|K$obD){4q_4aqD8y`kt-D+s_rw{zgZvJK(=6&5S|u zgVL~@JWmYP-IOR%dtDOwyUJAH-ASo*e%wtUl^5@%ER06!&5pu6S2%Z4nlKX|*pAY? z$S!_y+QBF9zxki$xIG=I3 z{OK#(Mq_iwtG_g`v2S~f>dSc#+c9Wl*gHA?elR>4_V4wF$M=WoUO0=qdPK%JAlM(| zSGh3n=Qr%;997S{?}dwfG0hB+^Io4eo5jzNZ5x(WOe@}=YEX1uTn(3C=3>||ZqB*Y znYi9F>oZI(% z$AjMep*`rlJJ^CJ6YO2T26@$|H*28XSsHmtEvS3Ya<`$F3^1?=^(Iv}hK`pI=q(;I zqMo`PBUHezZ%2c{i`PdF`<0L? z>B0!1C57F<(osSF9A}VWChM>ApaAI7Pt`KrgFj0cVP2+QAC#L z5%_HP0JOQ9gSs}Ofr_Onx5|_ERt)d2M|JgM9p-=cUX)i^tMIXY)VC8i(i)*6^XiLM z?C>P84l98A`z?Ta4ckPZRGHFWg27Bt@G4X4W2u~S+gDO0;32XEP&pR>{dUb8x7XLh z&G0RCZUgl8ic{je+ppb?wkW^SxVSEQO28U(g7RbO{c4P^E{a=Y^+EQ`?^aHg@j5+cx`d9t=rKJ_5jzS1iLR$Hm`=JIy5k$mY4bxS54-4;6e#tjl5 z$K(UjcBN&?rd99TPesIhNUp9Mp{CI39{S5hTEN1HoMbXeBw~mrN_7+Ys%cr gSetye*GA4n#bd{=y2sZ8{mtzE0n9$yFheT<01!&FB>(^b literal 0 HcmV?d00001 diff --git a/tag/rabbitmq.html b/tag/rabbitmq.html new file mode 100644 index 000000000..fd0f579f0 --- /dev/null +++ b/tag/rabbitmq.html @@ -0,0 +1,306 @@ + + + + + + + + rabbitmq - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/rabbitmq.html.gz b/tag/rabbitmq.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..789fa365f4d0a79cf34033b8ffa2717750cb4649 GIT binary patch literal 2944 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 qs=D+UtY%h}xt_5$`EIX`oQaCZj$L(QLO + + + + + + + Random - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Random

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/random.html.gz b/tag/random.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..f7df9bb1946c305f41c4eec0f3ffd32e5b3991ac GIT binary patch literal 2881 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 + + + + + + + raspberry - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      raspberry

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/raspberry.html.gz b/tag/raspberry.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..4adc7d884014abfea9935a125a41b9df19804f1b GIT binary patch literal 2823 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 ZCTbo#_4P%o8JMpy{u|Nf18UMJ003UkhvfhO literal 0 HcmV?d00001 diff --git a/tag/react.html b/tag/react.html new file mode 100644 index 000000000..acd971e2d --- /dev/null +++ b/tag/react.html @@ -0,0 +1,296 @@ + + + + + + + + react - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + + +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/react.html.gz b/tag/react.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..707c6399a8ff508c96af855d25e2098810bd2174 GIT binary patch literal 2905 zcmV-f3#RlRiwFP!000021I-$1bK5rZv;8Yj=6aG_lhnhhV_9OOGnsRYMl;#^U(NO>k56!1in1V9%w zl=DeQu4q79{jiT{LM6q_6#-^s()W5bQgbO&mwe3W)x`PLeS7LY;&F;4oibw4rDQ_F zh?JO;N=8mHf&+tvsBV_%B2_Z*w26b z?(ym2Z>K*WE_)ZxuYQ#WY44Yxm3}O$X~t8M$>qf1(MV89F4Q^}<$@#U1Z_Z)%hZNn zkf|c$Ab(xUArV1F(+2Mk8IKU2@?0WVX^G^VCXoPL2P_X^h`Uo+3MPB!=o{d$d?!PHJtFRS6-S# zC1EsXG`U3cjLbHZm=O{RA2a4*3Fy}`2&}9(ad4V48fd5T)!eswE+Y)4m?T+(l|{8m zE1A&g`A;v=Q=r*kLZb<}WJJsffsis>`EpKT;s-+bi=hV}r70}VEtqr}DT50i)}~iP zBdn2Lr%=j11APiF;yhvmr&MSK0FCcwIHqhlc>@8wz{^b}8`7lkm*dbuSOBoLv(s2m z2v#iT;smp$q=7IV(?&2%gbPGxLjT$@XAsM5j+9eMZD>-t=bvxve{J^1bSnzLFiK|hfZ>JOWfU>xGk3616w zroDr~gZqd5gTYZ9YQeM6okF_41m4t#3-QzfvdC~+LZ}yYkbpCujnKW}a9E$10w{r* zetL}rXEa3jf*@#vaWfp!T#V3xEr_L5Zwf(5vI`nV4dqU8a2aJhPeM24kgTL+Zb?M5{%IPu) z4@S_slrg?GWqX8NC`y+UT$(cG;wwxUhML?;cW1|&!`e)(4+M91c9bkL#ux7O2;p4v zV|e)){=>f%ooKHIsKTOCmJvV2cmAkaV`J z2$kIZ5R;H%)QxFUigt7aj=a|p{a(C0qam5%tTCa(r!slb&7iMnta=}uH0)ZpEx7Bf zuYNbee{OTbf@esYge1CrcXi^+gsXK1y_CxNBdF@xWm6EPKWz#(%J8y97|W^3m>SH6 zgW=(gLKUEkIW#IaNb`^A^b71ZxR|%CUL=H40sWvK_Q__`=mO#w6=dw2UU_${Y6uD# z7Et19YA>s7NUyAU$y2+uCD@)+T7nN{Qe!z42N=@gfrX>-rn!_nsiV4JmRO+_lQ5ct z>RkrOo#-bOlddW!t0x^lCDQ~7JBR*}2A7KH1@v1_B>C7k_$}zT>|>l8C2~%Ff6jw zWvFJj&Ic#ssoAYU7=Wtah2;m8;%YVew#0L0LBT^A+p1W%F>UqL>o3=Qy>PHEIXG7K#VhMRX$Mip6*i<58Wl$!IHMRUz?3jX!s${^0uf0fo>3y4jUiekoWcQg zu7ftsu5HG*53~?Xx{s6(3vwzBK!CRX-53-$A|D78W_AQ;b;D71kPkBa+tCow_ zw^l74e5!DEH#%b70sm2HW(;Z+Wbp0ed1|okrbL?HG2=NETUnuN$LW$|7;Ilq&lqMeAEf()z(!AVhEjS#5*aM5!34|<1#-h-h#=)B*%0Z(Q)xO@%rsxPvvfp%wk5-7Ex z?q19NfnqYkz+%XQT;0lf0n`>ro-m@Gx*a20XK(!~Bf_3i1K@TVis-Zg8yilL%yQBS z0Op11ZpT=-gC-VN(1sY}rWu!9ol1R=I@Yau2aU|L$@QH*^eyVNUZwl6(g)GPqEdyh zH36|ws6jkjp5y2hj>$?P?|SdoX$TKWF(AC+A@OJe-J*O*W)N822=61&(BkL4uJxvJ z%(_25fs(xDlaGMDcFY~)vy4wML+Z;n5abc+M(`J;+(R4ud8c&bmcUY_(kKpyK;i(; zGMQNsg^2nd+M{Rg!~Y%(1}|S9JnCB^RndhJg2n<``Gu!~`~_Y@hMBCtDuM!_D?e4s zboYL*V2qe5yL9e!5e8ma?^+(!vnpvT~|-96CeY7Xk!j7BP!Y;Kh&@2nW!U5{$} z3o$JG_JgRdi&o*|{Ge|DuB9_VW#-kFnb_l5I+E)<+g7kRe<}*5kTcs0Q9>xZ@js_?r(-~sdF2kZ>~5M&imck{bP&rt;WUo(K7

      w?4wIaTkxI&C?7BO2 + + + + + + + Remove-Item - Sipmann + + + + + + + + + + + + + + + + +

      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Remove-Item

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/remove-item.html.gz b/tag/remove-item.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..03c284bd42ccf578d49d3b9ee20be0b7683d2f1e GIT binary patch literal 2881 zcmV-H3%>LpiwFP!000021I-$1bK5rZv;8X&=6aG_lhnhBV_9rn4Rp7)dylY zi6#z7oReL6LvVPqi{NJ*6NynU$C)5<;=Dim$$jA1QwfgA#JQwok@8GBDBy`C34ktW zDCd)qT+)EJ`e7f@gi4B;D+0{Or0?}=q~=nlF8Q3(%Zc-w`~K8@%;OYGI%UM7OUZbGYoCKfnA<9;Cfr-zY6vRMU*7B$LaD!=sU)lANn`EXoB(&I#Ip zB$ufTzaUdZ#zFqNu0tY%jHV6VA2A*wJmtAWu+kFAIZYw~8V^_=!VrNa2;*rC&)99Feat>}xpT zTd%w{iAus~%xH3f<{6o7CNU!<6h3Cm!xGT1Vh~taZ{pxIWi-%E<*T_L^jt<5OfgBa z1S^Ybl~yvL)3aAE(N93L!GuN=a>y-uN&eFpjzUc`CC2u`Wc3IG}pXE>&8Ie80Vyuiy%BpcGC@R#GzL0AB= zwzJb%PzY8m=i&sjrKEu{9@9oJOoR(WXG8|`n^RImjKrGZ73C=pm;2Szyl;&M)_7=* z53KP$^k?;;ew6ZDqo@&bN>%M6fq`v7GCHfkzwA~++@K=Km2^WA@Ju__2qloaj@vLn z6Aj#uij-kkead)naa@~Aaj4S52pxI%(yRJhjI)TsQa$+X_nNa>EnFjQ_m_g{8#7T!r@t&FB>gkH7b8(3Kf_y}ESe zXytSnga;#NUCJ0=nc_V{E)=B;3NB3XMzw0w(UU9iQc zTu3@wR)k9KevC;-G3v%NDMdRv0!Q9!h<-O-zM~D!>2NN(bJ$iG*%rDP8xQt z+ZNn))>pq9;lH%GVZk#bO+pe~zPmc{Wx~}ugN{n&{1H_3?4l`%(w{bk8)bOeB8=r! zWlRlb!@=Qi#T*)yYoz%{bov!`8(hrWRxc7lsepda5Bp@ZX>GO4kgiUSO3@xa2-c+*@;p43rYs+wUn zHj^-#gX&!d$(`sY6_c(iC#xqNKPA%y3Ok4Xkp>rv=sEOTNq6tKYYO zXoeLt(58%idV>C)OhtP9k|g=qH~1~+xa?z`YbA0{e&#V5`?#SD{8c?zR{2V^M-tyT zA<4Fje2r`>fov*kWXI5>T^3H_gO`-s7Ufxx_EyWSQlWZ){6{heX-9+>tElRO0hB&f zzI(^Ee<|lHAgkgqRJqgSK`0d89oyMJx6300O?|gh_RfYM4~jwB**o4)wUoKF3`QJ- z(;5Lq%dTWGZHJDDlFL>3=^yAS)|6&NDB}y~q#oyMOTjkx2#NkcZ*s4hY(v(8w_;O` zbn4s8QDvxRxXuSB?r>gQ}ukcLKlhF+_|JB8NHRx>iq%cc}#KWDAV zErtzsH-m74_C-<3O7|HSBZgCw^WOov)Fo&S$UFe7TSs17UT-`on;DZkZE5OnbL zx3z;eH{-Uuj+^W@zQtzWY^!O$bYtRTFvo00$jwb?0C!?ie%9rO?D@6~w%ZrQP2w_#h~<>}#!bGi9ErFPg>=+zw#8fM(M8B-@yMQOq@xgynq3<%*{} zu8YRz_EX=%yEt?MM)kFIfZY@{GVC24-X9E)hW&f};o*a!x-nfQK|LZ<91$E2ic3zI z4~x5JbHb=+{ZGQjp_ncWkoQTS!zy3lWKGqM^)q5|^#k~8Wb1sNH4FaAgva^pm?@!$ay~9E8 z!O$IaKJHzECo>#eyasvImr&L~yR$qAlv+@CujSNVF&SZCG2}t6?$W##nYS@*}MNx1HlkAc2+%pK#ij88E`>MJu4 zVP5lQ9>5z z3HWSx545?OgSs}Ok%}doTjj|+D~5O1quTx&3k!evB&tiERrokR>T~-m>5NdBdG!?} z_IMUK`xc=7W)ncYhCU1^SyTEuQZQ2%JZnmQji{j9_Whv>a347WsGJIb{;=ka*Votm z&G0RCZUgl76{o`axLdn5Y*D_|xcEMLM!*`-m=Q+p8x-ImI-4rA~ z$f + + + + + + + replacing underscore - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      replacing underscore

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/replacing-underscore.html.gz b/tag/replacing-underscore.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..30d9e8fe10463b191e602a409a502314fd0e8466 GIT binary patch literal 2908 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 GDgXcjXpIa2 literal 0 HcmV?d00001 diff --git a/tag/resource-governor.html b/tag/resource-governor.html new file mode 100644 index 000000000..8b4271bd2 --- /dev/null +++ b/tag/resource-governor.html @@ -0,0 +1,296 @@ + + + + + + + + Resource Governor - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Resource Governor

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/resource-governor.html.gz b/tag/resource-governor.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..f251d9a37dfae568534b9769618d075201250c70 GIT binary patch literal 2901 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 + + + + + + + Script - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Script

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/script.html.gz b/tag/script.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..e903b64fb136157216b5e2d6e45cb950569d7443 GIT binary patch literal 2876 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 aD44K3cI>OmZ9UN68T}vA_4La_DgXe?PmlHh literal 0 HcmV?d00001 diff --git a/tag/shell.html b/tag/shell.html new file mode 100644 index 000000000..7f7c2cee1 --- /dev/null +++ b/tag/shell.html @@ -0,0 +1,326 @@ + + + + + + + + Shell - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/shell.html.gz b/tag/shell.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..735d320c546ef3c3d73304383eeb497c938fb17d GIT binary patch literal 3051 zcmV2B{?dIkA zK_o;X1__1$Eh}yQ`wjq-A}Pw2vT2{4!z3{?n0p4t_>0HSA6@+M;t2|6#7=j|>K9@- z4ki|ftlCd)l8dAY zKPOW~#zO9@mVF|;lqL<{A2J>wJmr~0Fw+9bkj8-kU3)C^;Sqri2;)fv&}ojSRz5jN z92A7nn9=wOg(;b>Cov<$7cOSZ!4lAKA`nq zPesBo%syq@yE>_jCD>PKVT6vI!{nwu7U49YFjWu!^n1-wEtjAl$O!d^%|S2@u|q8^=u6M@+FP5wQ&x6 zU!AOjN=ZVnR0hl+*FqZQdi^m=vail?R1 zr4SyBpj9a&d}GS?2-#4St|+)PWz5Fcm@*7Cxs~qDjuXP%OwA7jcXoD^EHlRE_RR?4 zO!5=>_!0iW-vpg%uLr2yqEnWU3V<^o+A6bS@U0Xj22{rdjeRY?anj-|hIzpj?=m6j zY*7*_xcea@KErJBzh?`fCv1@we-La}6 z$YWSQiL0r-sIor2u8d2bR7+cotAk2Q@JpH0SWd+OhO~H4!O?irOiCWtQEf0wq)_rf zcnU%FHiP6&^qY!FTa}aLn~tA?X#$0vL;pyR%nPD`; ziWz8A#x6ZYU&m9CoSc(58@mR-1sxZCjCHF-*6B|?B4Zafl!5QmL&Yk0G1J5*NIrShgt7g0#1sZkY|7rs0r6B-m2tDI-bgl`Yb0E;p zYBNsF$2Q6S4sjFC7$i|xnR-OP${Hk1i7i7M+ee2RN^EGLk_J*VkfMQ(4!^pOQo~Y4 zl@6Xso6iaxdnp#-h9bYx1km$LB0kG)e6Iw}1OQzIR9=RhUx`bC#o}_ov-FbD*`2QZ zT45u=Mj9JQjuZi;2p~n^|B-dclpi29JKi_Wf0-g1?|Bz;iR>?b8#aLZLV+h#UjF8QPxf)ZrCG7#>h+soi z=e|4-T1cwxa5=FqrwqrC=*H>{Or+it-}B>De6!Ch-0OkslNrvK)X7BOCP0{}3mF;2 z7C~p|k&&gj@%mjaxv3`f{3vSBKdOIMTdBBZO@G^xesv!}Kh8Lp>$j3?=M1@C?ctzd z#Z}pumxHQz-n0%^7w&xL8oTiSt8$rNu=CVutIan=7wlVuG zA8RCuit`zl%iq4RZ8SC)KlJq@8~e7$sJ^k|VLJhh4132%-wlSx!~S7^c=TYXE{iN; zuO5*J4hZ%K`TY(U_w#Ev=5R%iy6=RGeKB1aAm^Pvf-;kzBHK1BEtyulJ=LJ-thg^y zf|=VQhH-QFr4GvUQa8WHQn%JMPSIt6-=m57_19nM&D;7}qWbP6nFzaYI+udTGtc8$ zEIa$C^ZLww&^sFR9t`b4=k4AtcrwM_)eDeU-Mm`??as2;Q))roy_N${#bkhiMW1__ zx<=r5DS?*o2_x#Q+cBbb_Eyhc1MDa@0B)zDh)yf8vEc;CG$XA5U|tyRc8rBPXj0({ z8c<_g=mI2H`;p(HPUV_U2aU|T$@QH*^eyVN-u-c5rgx%+MWqT+)da*!t_JaNae;$h za7300dDDBlN<%maghwoYQH>alp?#1K$qWLk8{mB;8e06g*R6ah9kcF_Phx-7Cm#WQ z?U*~pXBnSjhSY6A2=V}R1Na}L+(T>pd8csXmcUY_(kKpyK;i(;GMQNsg^2nd8sn$- z!~Yx%2Insh9`!3BRnmnggys|$adSrn`7^wL3^Q5%lm`Vsmwu|I>F)hm!Wc(~)TONg zI{c`>HB<)-xsPHpM~}g0yL+I`B3yt8C@cQvZ3H~5(U?K@GPZ!g2g z`avIA-bibNip;BTUtou)fwf-&)R#H|>IJOsfl_5iUk`lQdAnP?Fwvs?O5@_X=qUkfgaqZM3A@!8UEUsP zjn#*XpZ#v-AVT>>3+2Z@{|4SDL!_2wu*gLO8Z=MVX3B>i2Di`j+ + + + + + + + Specify columns - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Specify columns

      +
      + + +
      +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/specify-columns.html.gz b/tag/specify-columns.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..cb5ef432ed36ab032fe8918e735387e7af09c8e9 GIT binary patch literal 2918 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 Qpudy)Ka3sK9-}G%03srcTL1t6 literal 0 HcmV?d00001 diff --git a/tag/sqlserver.html b/tag/sqlserver.html new file mode 100644 index 000000000..1159b1e87 --- /dev/null +++ b/tag/sqlserver.html @@ -0,0 +1,316 @@ + + + + + + + + SQLServer - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/sqlserver.html.gz b/tag/sqlserver.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..d976d0d13f71814c83d2503188b066093c415d7b GIT binary patch literal 3014 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 IZAC5s04l!FYybcN literal 0 HcmV?d00001 diff --git a/tag/ssh-tunnel.html b/tag/ssh-tunnel.html new file mode 100644 index 000000000..61f6208f6 --- /dev/null +++ b/tag/ssh-tunnel.html @@ -0,0 +1,296 @@ + + + + + + + + ssh tunnel - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      ssh tunnel

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/ssh-tunnel.html.gz b/tag/ssh-tunnel.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..d5b73ae85ce53f866d17becbe3be4bf2b557bda5 GIT binary patch literal 2897 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 + + + + + + + ssh - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      ssh

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/ssh.html.gz b/tag/ssh.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..dc0e5c0fd29df70dcfae21d361418ba24fde0df5 GIT binary patch literal 2892 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 literal 0 HcmV?d00001 diff --git a/tag/stop-proccess.html b/tag/stop-proccess.html new file mode 100644 index 000000000..84520d9f6 --- /dev/null +++ b/tag/stop-proccess.html @@ -0,0 +1,296 @@ + + + + + + + + Stop-Proccess - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Stop-Proccess

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/stop-proccess.html.gz b/tag/stop-proccess.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..72bcfc320932e5f6a5baf387a833ae8fb5b912f1 GIT binary patch literal 2883 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 literal 0 HcmV?d00001 diff --git a/tag/the-database-principal-owns-a-schema.html b/tag/the-database-principal-owns-a-schema.html new file mode 100644 index 000000000..6f5989e28 --- /dev/null +++ b/tag/the-database-principal-owns-a-schema.html @@ -0,0 +1,296 @@ + + + + + + + + The database principal owns a schema - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      The database principal owns a schema

      +
      + + +
      +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/the-database-principal-owns-a-schema.html.gz b/tag/the-database-principal-owns-a-schema.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..06f202b2bf1aa4e526600f2b2bd24a76997474b4 GIT binary patch literal 2911 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 Jk3i!p001tvtMUK< literal 0 HcmV?d00001 diff --git a/tag/through-firewall.html b/tag/through-firewall.html new file mode 100644 index 000000000..2781cbce4 --- /dev/null +++ b/tag/through-firewall.html @@ -0,0 +1,296 @@ + + + + + + + + through firewall - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      through firewall

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/through-firewall.html.gz b/tag/through-firewall.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..672278547cdffac978dbacc75423ff6560640f8b GIT binary patch literal 2899 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 literal 0 HcmV?d00001 diff --git a/tag/time-schedule-blocking.html b/tag/time-schedule-blocking.html new file mode 100644 index 000000000..7717f3ec4 --- /dev/null +++ b/tag/time-schedule-blocking.html @@ -0,0 +1,296 @@ + + + + + + + + Time Schedule blocking - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Time Schedule blocking

      +
      + + +
      +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/time-schedule-blocking.html.gz b/tag/time-schedule-blocking.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..5387f1f4a4dbc00fed3584a24cb843b15b37e192 GIT binary patch literal 2908 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 GDgXe~bfLTe literal 0 HcmV?d00001 diff --git a/tag/tools.html b/tag/tools.html new file mode 100644 index 000000000..b12f0105a --- /dev/null +++ b/tag/tools.html @@ -0,0 +1,286 @@ + + + + + + + + Tools - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Tools

      +
      + +
      +
        +
      +
      +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/tools.html.gz b/tag/tools.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..a9dd0e0d46921a47f8f1b7e1c52e99e6ef0f087c GIT binary patch literal 2818 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 USC_1Mpuf8KZOV literal 0 HcmV?d00001 diff --git a/tag/tunnel.html b/tag/tunnel.html new file mode 100644 index 000000000..2081f19e8 --- /dev/null +++ b/tag/tunnel.html @@ -0,0 +1,296 @@ + + + + + + + + tunnel - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      tunnel

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/tunnel.html.gz b/tag/tunnel.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..38e3f47982cc2c724e089cb93b06b9de192a2ea2 GIT binary patch literal 2894 zcmV-U3$gSciwFP!000021I-$1bK5rZv;8Yj_Ii?AlhnhhV_9cnPt^xv zIE`iwNu9HOctdb_wvXUvnh=Rm5aV1BIdgu#{KkFk*i$J^$jrH+WSQ|?Iw;_&Bq@L{ zX(;1aNN#9AT>Wr}Xi6o;%oPDXm^k(M#>i&H0KIKV5hJl?cujfE!_{H^6c4TO$QqBW@sTxt zgnq9d)Q?i0YZNs>PNk|tBrvcoNKO|u_=o*^h+9-7xs`560-kHfnxGVN*J&3fXrhH1 zQjswXtIrt^u1_0t84guin4lByQFhy$OK=`hSZV;j!$Esi%O&VFibNN`3&^l1y7)R!F1VfZve33FCimL18Iz5UcQ>pas1p;pyjo1G+ZDV9=DV8m*l! zhwxwoZAzKoTT{0u$c3VGO~IupV=lhIlwl~!opks1ycpJIYJDKMx3{NcSunnIZzl*B zlAprM5AYxUW#~+MJwTNfowI^i0N!%!s?3hTw{nyjP#qUE4Yl~jNvpRQ)&*O{!UQcl7s z2GzR^k~`5)Dkfc3PS#I4ek!I36m|~%BMq(<(JSb;(*D6|)$SO&Emkx;wBlre(E=-G zpiPIrX_@jETtn!g&kEFhHM$%mu z`54(u0@+M9$WEb0yD6Q-2QR6%Ey}YX?X8zvr$Y4r`H$od(vAo%R$0|YBPe~Ud=E}- z|5DCZLe|A$ta7KxgHR|wJGHZcZkHzrn)-gP>YWWg9u$MDcW}C;YAJJT8H_jvr!xY| zmR-qW+72BP6_@MsGd$8&tS!x&P|lamSu@TzmVzDb2@=DR-rwFa*@dhFZ_TC}>D0HK zquNmIaE(W2(|NgFg*X6R!5hmFYRxr@^nIxp%z}c4D!5g(?&8{NtT$h7ID6?~AM|$n|`A7@V zru(!WgLfY_H2bH#6uh&YdwyUJAIJxHnE!KP|Qf&K+34^kFJ)8ckVVO}bn z2PsXm67SiL(!5$-{P^-gN|O?~qb%O{&o3XOC>dYE9yo^TwxdL^72<_Le2{YGu*K)e zjxznEkshQx5I*Y2^JeEN1TlmzG~$DlOLES{jv`$uocl;)I@GG^{C_lpIZ^vZb$%)T z;#ROp`6vAZK?hHNSvz=tGyV^|k)3xTf5w)7+J^IDZxL{JdkiLCGn5hfQ zVufB2bPg)lva}B>zJ%?+9meI+?Pz%1e6NlkaK}#Wu8rL0?oSUFoXhP;FO74#Qm^iK z)H37N(*d>LyT_qYI~B<#)y=$8>Z^+_Rx#IODOV?Uz--F(S#hq;3fhNrB|TTXFK|xO z8y1y^b(d!9eurOeJ|imQVt%LZ?7*d=*2UxtJ+nKHz~Vgj)LkM0!}K%;<{*RE=qOcadGGdjOrWi0J|AzWIQ-I{&F-v84n)~$H$My>T-3J z2F-}fa71u8D(^#KJ}j@P&0(aT_1_5}hhn}mK;AojWNQ{bL#}IBS~IP9d!a$md3C>9 zgPGe^!?-ytRtL*^gHzu7Hm!Aob95Eq_h@E5{`dpEdD}dDSMR;75OM!a?@ADP9t6Bd zW$zI6em-{}4~|EJ$76TYdwXyPp3HG@{Tk#|Usc%v?JtTnP-;Q_gN_RV#bktm#gGSu zx_0w|oIoS+oDucZ?-|j02b*^l5%!cC0JqmtM6VOr*l>nqUXV@zFfUB^d&a^&G_$yZ zw!;`V%emz06zVI~v#!N^XkwmCuJ0Y7FHo=ZuH1)}-iZztl`4d-35bA|)1ehoHC-4Xw4~6wFFh6HFYyX8%xv>j8596r`>9%{fAD(^V;mh)m$nM% z@Ph)^P(3i@Axg;-Jp-TZAAmO3b5Pe7G*Yo-bE`agZ_V)jW>nkXcwyle??incv<@HV zYkkCjE1e0dGOxa^#2(Kh=gr7UJ$TGOi+1-yl=1 zf%-L*o^A`ha+d{(4|1yBY4y5t_Et31Qx~5dsjU`d1H(}mPAe@T!UWlEVZ-fCE1Rw4 sJ-#Pk>oQ + + + + + + + User - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/user.html.gz b/tag/user.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..c32a0b8fd83389955b2a2d0b1261ea9ce48f679c GIT binary patch literal 2958 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 E04)ru2LJ#7 literal 0 HcmV?d00001 diff --git a/tag/wildfly.html b/tag/wildfly.html new file mode 100644 index 000000000..9dc693dff --- /dev/null +++ b/tag/wildfly.html @@ -0,0 +1,296 @@ + + + + + + + + WildFly - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/wildfly.html.gz b/tag/wildfly.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..372ceb0ac38d4791a98ed558c99a4ee0ce28644e GIT binary patch literal 2931 zcmV-(3ykz1iwFP!000021I-#~bKAD^v;8Yj_Vr0_O;U$b$Fk(sIh!|0o7V0%nT!V_ zAqp`_Fa#)BY4hLT0w5`nq8zK!cI+GmiQUECy8t-;?8y(0FMogi6wPJK&i2RZ7h*Vx zCJsrQvwe6&aCo+l;Ab2YiBT}enILlF{CxS$edyRz369CcSx~Y}c_tkc@I;aXK$kR> z^GQe+G$5{iI7Bp|l49nH05dY_d%YT|xs<6(-sf~Naei}uK6fAUIK`4q8L{Y6G9h6^ zN=!*5BWJ%-7CvJuRKPnAbRMU*7B$KO&!=sU)l3b~EEXoB(&KcT*Bv+{o zza&#d#zFq3o)99Fb2i>}xpTTd%w{ ziAus~%xH3r<{6o7Cov-=6h3Cm!xGSMVh~taZ{pxIWi-%E<*T``^jt<5OfgBa1S^Yb zl~yvL^UEJzp=Us|!GuN=a>a<469PeHxbo$k#KaGT@RvgmewC)MIJaQZRiq3qd{~<< zh(_2Ty-A^zeFpjzUc`CC2u`Wc3IH14%y3NEYVs3=@Di`Kk!(nl!v7qH4#EO}wVj>D zfy9^2@GrtlF?ZO{&Bw=;szB-ZloKMfM?pVMks;Yb=rmrnrPsL zRHO{U>Qlyp>(km?ibItaM(D(QklxhiVw^=3mg>Quey=&Jze)S;F<3*Bi(@HOzJez_1&Eg;JbrzM1XQ3nY)s zFw;+Okl>7l=<^^5+F;xahcp)>bYu%+Db<@okdo|*#!*ALQyg4J8PAi@O*tfMZJYPlpkPAiWnu1GH#$3F>lwqjKt#tSHyg97R)cQbhZ*Nb@GGlz{-i#2= zB|n9iAK@STP0^Y5dVne{I%PSr0KDbURhb=wZ)GSopgJyS5^C{{la_BWtP8eymkUW} ztBO#`-M29bDMsCxCZ%X6C*a5j4beZ3R~IxSQ=By>bof*zFZvnu8I4u$U}V zo%Pk9t?(b)+_2yok|rUEF5g|9_%h*Yok2IHa{dUadUo9uMCnhP!i_S#Y7xeAsxqbq zv*BQPe5+6e=yDE?$}Q6TD?0rIyA3YpZL1dvp;SOW=!bo>-88y@_(cU7`=(poAFCRI z0)_>YxSHC_DjU*;H7|K;m$n4klS)hQOPSPIPQ?L+w0LCUXuN4IB~R+8E|?`&D8(d< z=Ae3)L2@VhNyVhA%E|gk$4|*Lfx^zAf26^+B6duIxhPd=T?cFv+sCJ#y)N+1AkHvmQ_B{?2*KG&PcNB zBA+6gN+6rc8rd=QXp6#0eDIQT+oC)R(%yQxbt+U3kpD>LAnl0IVii?=Fo4ph%6IS7 z_Aljp1!PqmhAMZOJP3v2i&Hxr=yrL8psDY6%HG-V<3TYa5=nd{IlWoX4@YZaqkxqTv zIjRiR4A=SKY&{Bi- zpyMR+=}kcNZVvi%E;%T<=!o4ssagp49Sq%2A!J}}7S7npQwI`GJ3H#yB+lV#XCVD33

      aSIQv^2vF?EXsx&hOg$~NV zZt^@cSoc$+Ozmq)67DKfiFYrh()n>WfmB|+m$ERLE*o?CFM)lSI?ok?I_V}g?OP5@10ZhM;iHaG z7duxWh#_>L5$~m3l5-|@6zNjo+(jDGp_WbOKhX$gMD0n{nW+4mTfsWzpY#(19X$PQ z?cm+b_)l$c{-ur0UvZDW>=x5}<;KLtVENgMkh^<@Z5-SZKR`Gp*ibdQ&f=yJNp;F4 zC(hNB;RGUPtd6!t7Oe4uFxkX6$2Y=X4E&JHaL%OmN_|O)FjM!e`3k)v=o~#ZvNX?A zzV4+rc4jC}mkw zn%PY*soozbrM|k@Vij|XmvD8k2+Ss2A8BXmM5B3zSkQCD`y6LPytQ@9I89uRT9)AGQ|o4D$^d!q^vSYW{0zCSVQI~@;_bNxMd#%;a0O;Afeqv4Ok16Q z>pfF(Jzclf0%zzd!tc?<{QC1x^yY2-ia@>h(p=2DZ#q|k$nzlJc_KT9sPpr=`>=OB z=sg^|gU;K7TkvFtgX`BIull5B1GGEKlR&8jbq`wZF%**#1{R^-l|!esYKXQY5?3$LlK=;U}M7xl37k#0l>U4-R&3)chJP*3OX5M+_G?@Z&1g& zz3-rrc{aJea{!gB(|V=v!%FW&3yVq>!qx=DN}&evXmyFB?{Q4l3VG9eyGcWMDTGHN zzvm(GXaWtVd_-mtSltL8BGJ&|$Ahl*rgF@>KR!*uO`m)W^tEH|8J}f*iWyQL0YQ*Q zs2jomAmstt;?H}fBew*WDwRfYKm-y8c$Ue`iYP?XH_%}{cOU(FG#I>kee}3*g;Yfs zMhGn_>;{&e3i6kD1sP_t`KkyCfUf*hEz>>tqk=Jx4yj991$6jPforG^81fJ$WQm@D z&vp+$o9j8KYcm?DShBfQp1ikacz-jh?GJNU_|-d6U0bcg$N5&@MBGScgv!jTFIBO} zv&cEL0QI+80QDNSi9pGk(qDbSOj+=(DfMAgLAmXVs0#29IRdDh3xIyJ;f=S~*Te1b zEp=`S^z9X=!g;%2y9aGizSX$+K6*~T8gqh*W9fZ6M%S0Zt+D!O^&;$AC)&yw*3j_WzVIA&wg>007yQqPhS8 literal 0 HcmV?d00001 diff --git a/tag/yeoman.html b/tag/yeoman.html new file mode 100644 index 000000000..7460a2752 --- /dev/null +++ b/tag/yeoman.html @@ -0,0 +1,296 @@ + + + + + + + + yeoman - Sipmann + + + + + + + + + + + + + + + + +

      + +
      +
      +
      +
      +
      + +
      + + +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/yeoman.html.gz b/tag/yeoman.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..ca264b7f88890027bc2fa7ef4fcabfa07c5d33fa GIT binary patch literal 2905 zcmV-f3#RlRiwFP!000021I-$1bK5rZv;8Yj=6aG_lhnhhV_9OOGnsRYMl;#^U(NO>k56!1in1V9%w zl=DeQu4q79{jiT{LM6q_6#-^s()W5bQgbO&mwe3W)x`PLeS7LY;&F;4oibw4rDQ_F zh?JO;N=8nWgvU5RE;^$r43e>L-tVq)8uNrm`U%ML#G?AIfK%pOXQ`y=luIw*v7i6= z-Q&~4-%fu%T=p)WU;Qc%(%vsWD+O6p(~PGilgo+2qmiJJT&Q&{$^}Qx3EF@pm#GcE zAX7!gLH@d$Ln4BVrVZX7G9Dp3<+((#(h|uzO(Frx4p<(-5P=a0<7o`g2qz&5vBXm> zh-fTQXG*hFvemWMhDT!@kuNXoYdGOsue>yg zO2TN&XmW|>8JTS+F(V`tK4#3r640+>5Lj7n;@~u8G|*1vtGRFWTt*m7F-funD~oEC zRx+W}^PgU#r$Dp8ghmr`$%vQ}0x@N{^5vYw#1Dk<7efy|N>f;zTQKP|QU(`3tWB?o zMpz@gPN9^22Kp3U#CgOBPN~oe02<%Va7@{9@&+P!ftQ;|Hl#`6FUO&SumE6fXQ#2C z5Ug0v#R+ChNdsX#rj1~j2p5RXhz#bpr=*A&i8aG3%2OUL_p7IQ-x?3B@z5F{SmXQX z_v%6YDCN0EQ6uD(s@g{a1KWaRbXI|X-mQkXK}C{l>4qfWnRcuZN+5R~w_$=N8n_`9 zDZ{Y(l=0y5xHgyKP^EL+Zb?M5{%IPu) z4@S_slrg?Gb$f(dC`y+UT$(cG;wwxUhN9d`cW1|&!`e)(4+M91c9bkL#ux7O2;p4v zV|e)){=>f%ooKHIsKTOCmJvV2cmAkaV`J z2$kIZ5R;H%)QxFUigt7aj=a|p{a(C0qam5%tTCa(r!slb&Y-VotePL3H0)ZpEx7Bf zuYNbee{OTbf@esYge1CrcXi^+gsXK1&6LXdBdF@xWm6EPKWz#(%J8y97|W^3m>SH6 zgW=(gLKUEkIW#IaNb`^A^b71ZxR|%CUL=H40sWvK_Q__`=mO#w6=dw2W_fq4Y6uD# z7Et19YA>s7NUyAU$y2+uCD@)+T7nN{Qe!z42N=@gfrX>-rn!_nsiV4JmRO+_lQ5ct z>RkrOo#-bOlddW!t0x^lCDQ~7JBR*}2A7KH1@v1_B>C7k_$}zT>|>l8C2~%Ff6jw zWvFJj&Ic#sX|Y{}H~?M28_N+Y&DDzZZK>zXf`W%KxK*`o3y4jWJqfoWcQg zvV%U&E^fxT53~?Xx{s6(3vwzBK!CRY257M3005~^f>{~iO@YuehQ^QXMbJiE}Y!I01Jbt21Sh1uOg@OxE$uxry+v27X9p zIA>D3l)jxqn5hfSe2HEXbc!AsS(*nK-}TaKJFJVN-9i7b{$3qT;Fg`;O&h!Q-Jl-M zIG3A`W@_hlg28`+(@Bq6hXk^$sI{a=h zJR0`z_lJiMhU)TlnFRHSOmReTI4JH*VLmLbvCUznp7lQnABSSPG(g@5eWYs^KS8c* zSXwcyczdQn(P?@AT7j9{SHrkDOjZZadc#xP3)ii6g)?*!;g4uyKK}Rvy?b9jn^*6> zG#B&kyUv9m@-zr|p2*HV>byO5AM_3fy$3^g(0RXi1D?!qaQPbKRbORU1MSZ8Bv5KW z-My9z1jS^8fyIyqxw@9~0;nyLJYhsVbvs71&ffZ6Mua`32Egq!6wzq~Ha46fndPJv z0L%;1-Hx$v2Td%lpbas`O*1aJI+gk!b*yXi4jP$flj}Qs=v&ljy-W9Dr4OQoMWqU1 zYXV}WP=k25Jjc;19Fvto-u2$E(-0n%VnBGsL*mf{x<&br%pkD35#C3lp~cU8UF%Kd zn00@A0wsCPCm#WQ?U*~pXBnSjhSaxjAjl)sjo>dxxra9R^G@l=ErF#@(WJ|`3t;+3^Q4ORRjeF)hr!5Bw})TONgI{d7_HB<)-xsMXEK###^yL+I`)g08d8I4pd+1x5m-dQocyB^i{ zH)2@$?FUia7p=m_`9WU+TuWz!%FL^8GqK0B$l135^_Qdo>NV`~fRZ((zitIHWx=zi z)Hjj}%57gossQ(qBY?`O0O)sX-gt9;-QNt~Qs*{6-&}DjocFu63&bafls8mkYN&%>^D9Ibq!h4SO)znIQfHR!O_K?EAKK-N|&rXEH&uk@1v ztF2Udb9DvTNWOH2x)qb2ZVSC)*9D0Wa;n~Wb=q?FMl{q>7o#nytrBDn!%-McBP}7q z1lew3!|hfpo2}(7zDHo|GGJVgHDzvQtWCb#YolPo^4PJjF3a^me+Tt{XC!D_lPUlJ DfEbW( literal 0 HcmV?d00001 diff --git a/tag/zabbix-poller.html b/tag/zabbix-poller.html new file mode 100644 index 000000000..136a7d3c3 --- /dev/null +++ b/tag/zabbix-poller.html @@ -0,0 +1,296 @@ + + + + + + + + Zabbix Poller - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Zabbix Poller

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/zabbix-poller.html.gz b/tag/zabbix-poller.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..56cafe829406f91efdfbd279b474b0839459a955 GIT binary patch literal 2905 zcmV-f3#RlRiwFP!000021I-$1bK5rZv;8Yj_Ii?AlhnhmV_9mX$XD{T2X8ffVIfyO^C!OT;N;~Idgu#{KkFY*i$J^$jrH>WSQ|?Iw<6+Bq@L{ zX(Si3h+NZ;?(WXoNlu!>|j+&2dBvF+oSRAeK_S0D_d{Z)g&?lpEmiD$aS4MsCI- zS!?4Q4?a8F29=YHV5tmP4!1%Y<%ay48jD%>2e4UM$o2|3BEDqdxBgjN>>zInlk3%YfKr2+T2NZZ_iu6+Dxqv1o!s#lq_?` zm+s93;X?8=c=-YT!@mrjYp(~W(xL$?hy~y+$F9ok7ho~t91rFmCE@OsOtGuTM(r`Z3;Ke@v1`@ z%c-iE8qLR}@yV@1m7vQ7G%B}9^S9{qBkZ=gSahvkCWJ}>!*Cc4$#&D|0^*kyWa^uq zd4H;E2nrb%P~sYDuc~ZBudR8>GrP2<*q&5cf)8auNE7}DaAg`@F;LQ0-CQC%=g zqEO077%f2cE`#Jw^plE7SCy0Xla8N?X#$0vL;py_D@F7T^jm5F;H+wQ4BZwhnjKnk zGRJ6+6*JJLOnrKe{+R|MJ9|#jV(J_G4s=}gG0v?LIp^Q z@0^o#*F`=?Hj_X$lMS*{=+UlAC-K2cs%?w%EJ%Cn<<_ZCJwW~=xr4MLLW@;a_0b4Q zpDN#jGuywE^OcZwaTu%IY4RWxiqFpMY@pla34*4+->Z6O!;c5WAnP5RZK+zy+*$@B zj=|}SfU;#*vY56*$3(^Dy8H}}bQNn$vnG`DrE}hl^NpooqkD?PaHO}nw@h{+>%d#H zsYW{WZRe;qR6AT3qw{Id+_geDfXZOP@`qZ1jaq%zMG9s?!9x|}s%UpHZ}r!kFE@O? zbhM8-`g<)SG)PKD=+${h1Z+9ogy+PS3!J(q$DTTYaJtu2Kc$`w4OG)WiUv|N(8=*< z-5j^W*1T*BIQ0wGsrPc&vP3&Vw-`p0b*}QQaXDf*6WRbcg@}^G%~c>eh(_S3867!rA;cSi0I@gpo*J%zq zG`p-Bw?5KBwCO&o$Kc>c4bA>3M+FCMr#nb=R_S+c$<=rC+mip4kKY$LF&b9dqFBIZS zg?KOJ%3-t5lO1LHNh94$c_4h$;pg?vRS04Tz0`>JQZC6k6FZ7@sc`Nhjp>69gSR{blXo-OczvZAf zpTjf`=}Nu2<5A0uTaOCVmhTQHOzmtWmsI!jN~zCZZn28FD@(aLz5`}ct`ClLbz;yy zsVnKZ;$4Bkr{N8Y%aglHGj+F_LF7dk@*;tDzsV_Ya#lB-Tt>rEQM%OE^b`8|(_M^k7Jj)dqq*M*SH6f|Lhni$CvGj@%Jgs#F@q0TD5wM_ru z_Zr4HI;1Xb70}@a1+JlbV8}z1k|lZ!KHEP4ZLa5_uFYwzV#(%KdGg+x;r-31w!i+u zqA%Wx`f_L;KF-(ry#Gcz6I5kheRYXFp2yCi1*pFf1yC+9im_>MZa1^V`iQ{%keZ`?L^DBo&ad>=g}V2uSq zM!7($Cx_h)BG90PvawP*^)SADr5_Af zW2M@g>-)x5@}+asubK38Tj-S=El7NjQ}t%6*OjxkqM@F;1?@;}wICZ9j>2$SX$cV~ z$ZiW8Zg*PQ>?ZH)Eee=-m + + + + + + + Zabbix Server - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +

      Zabbix Server

      +
      + + +
      +
      +
      + +
      + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/zabbix-server.html.gz b/tag/zabbix-server.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..1b25c2e6f7739dafc037ec0ff4c9091cf4603226 GIT binary patch literal 2913 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 + + + + + + + Zabbix - Sipmann + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tag/zabbix.html.gz b/tag/zabbix.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..aaa22fc89ea49ccdc876e61935a05327b44d800d GIT binary patch literal 3027 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 V?5bNp`axf={~uCL0()#P003x=*#H0l literal 0 HcmV?d00001 diff --git a/tags.html b/tags.html new file mode 100644 index 000000000..388fabb31 --- /dev/null +++ b/tags.html @@ -0,0 +1,381 @@ + + + + + + + + Sipmann - Tags + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + + + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tags.html.gz b/tags.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..351568eea3a50afb3cfa2111723c177fdb1c5bfa GIT binary patch literal 4146 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 + + + + + + + The power of PowerShell - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      The power of PowerShell

      +
      + +
      +
      + +
      +

      As a long time Linux user, I've automated a few things with bash scripts and stayed away from PowerShell... I've moved to a Windows environment a few years ago and still, haven gave a shot to PS. But why not? I've made a few scripts to automate some tasks at a Protheus server.

      +

      I found the PS scripts being easy to read and understand. Bellow, we have a script to remove files filtering their extension (or no extension at all like the following script).

      +
      Get-ChildItem "C:\TOTVS\protheus_data\system" -File -Filter *. | Move-Item -Force -Destination { 
      +    <# Diretory where the files will be moved. You can use Date formats to help name it #>
      +    <# LastWriteTime proprtie from the current file #>
      +    $dir = "C:\bad_files\{0:yyyy\\MM\\dd}" -f $_.LastWriteTime
      +    $null = mkdir $dir -Force 
      +    "$dir\$($_.Name)"
      +}
      +
      + +

      Have you ever been in the need to remove files based on other file content? Bello a script where I read a file that has the names of files that I want to remove.

      +
      foreach($line in Get-Content .\Desktop\bad_files.txt) {
      +    if (Test-Path('\\x.y.z.a\c$\TOTVS\protheus_data\xmls\'+$line+'.xml')) {
      +        Remove-Item('\\x.y.z.a\c$\TOTVS\protheus_data\xmls\'+$line+'.xml')
      +    } else {
      +        echo $line + ' - File not found'
      +    }
      +}
      +
      + +

      And a bonus script to stop/start services (if you handle some Protheus Server, you know why I do that).

      +
      $servicesNames = 'app_main',
      +    'app_worker1',
      +    'app_worker2',
      +    'app_worker3',
      +    'app_worker4',
      +    'app_worker5'
      +
      +Write-host "Stoping Services"
      +Write-host "--------------------------"
      +
      +foreach ($srv in $servicesNames) {
      +    Write-host "Stopping: " + $srv
      +    $SrvPID = (get-wmiobject win32_service | where { $_.name -eq $srv}).processID
      +    Write-host "PID: " + $SrvPID
      +
      +    <# Force if the proccess is stucked #>
      +    Stop-Process $SrvPID -Force
      +    Write-host "PDI " + $SrvPID + " stopped"
      +}
      +
      +
      +Write-host "Starting Services"
      +Write-host "--------------------------"
      +
      +foreach ($srv in $servicesNames) {
      +    Write-host "Starting: " + $srv
      +    Start-Service $srv
      +}
      +
      + +

      Do you have any automated script? Share with us :)

      +
      + + +
      +
      +

      Translations:

      + +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/the-power-of-powershell.html.gz b/the-power-of-powershell.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..2a02bf976576957290e97d27d6d1280d4475de22 GIT binary patch literal 5598 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 smbmKKdyr7^WdN2^w%v;}^`>Q(6kLs;?gM514n zuv~BnsAAbs{LU`Eo&D(3j~Ys?7|NdgM>Nk|W&#hz>=YzGt^~%Z!1S`D7hbK{vNs?> za~6$3fCaSBS#2)g-Wz^WlsO9P0~>oSk>y(@xHw&x;1%j$4M?m+(igi0nz)*xa=a&3 zhtg;7qyg6%@J=%=Qoc# zB<-MQaCw@hEn1g0y0Q+8D~pCJV^5w9dR=ihw9#XgY^SM*#KN0BPJpS_4g=zDBhbyz ze-|AIY78o=JSK0kJsy>bXGk>UxD5!Ob&~hc_Ad4GYNIxhmfIC7m3rn}!%Zv6d_5xN z&M5>Ib8quVyW@-fxy>o=ujRgj`As!%-a-heUOhcHE1@}(=*9EK=z?*xT5#^F620WE zC%kDFX;2SFQ=uqory>s%xP>)tRrMc;)e)fiQ)MVHBU`CJ$4%1r3QO4IU;@dqI~9eLe~+*Es>14|Y%#Qe9@G7I8wgo^P$0!tnw caMxUO_+;baLz5-CUq4X)0qL4%L--B=0HbJseEvhVS<)EbXpZUFfux(W|Y6QLQVeMe4O<9})}4 zj%;TXP5bY4LRk|yS)Cok1rqO*^YQw`G?Qtj!q=0+0->2wq`P!6jK4?N6QGDi{;#nUdkD z*yrKJ@Zu7y0zQg!alYeCtTh&+ty@WjwDw7Dp!(C8Bu0rH z;|FXv#tMwW^ZvEbpQZ9rNew8mXcNPytzK9ttl_A3_#fFkNS!J?71xD3?$KXb0bDYL z;ZkwX@(PEVP=wfFzk>!VIlTr29?%h_l@q&)-0LTKk)h(2rC62Ifw0RzY1UAFsiUo& z0TZFMs8+^xLWrstZS0M9V7ppj8r)GGZSlPHMTs7+v}wCfb+n}mYw`k@y8Qr-ZLwEB zcxyU(QMM*f#euX;vVXMFzcIk2WgM#BqDz4H-U9T>Xy+NeqSm56?;5ybmU(G3iq!p) zcPs~2gt}2+(I2>QPzr<6Y=7E41PlMdExh*qdCP5qR+=B6rqiA7R(h~Z(YrEF06pC9 z4P~%%haWX-NT<_RKUOoLUwsfJrAO1%JxZ@>ONORkHr?lOUWEL;vGlRyg|=zrkkqjg zF5$`3$1K#}X{>w|)o(gghM}h?&*A_xctYhePJW|3r1;!(6Ni{{v;dbx`G$TA>&Q!d zCAsEG8r3d98CMy@tt;YkxW=y#?mSjrCitzvK^$S?IK$7a%i;(#upm0hka3903$`%m zeZ@V+G3Gw&*djI#a3Ac5I@%560NqzO=OPK)Ji)slRj*S;Z(rW?&zaK0By4X(S$4ADUA^Q&9Xxk&{jKeuQSfxu! z_WKKeLwsfb&QUZ5{%Za=ys)d)**lnVnOh-DoV-~j^Q zFCfQ%YWQw-1Qcf1gG>eOLnWjRc>oxU~g(vfOD9rs*d^ z7Rs&j+?`KVjt=?H%!&$4b(8qFw4kGwJ?WA4o`n+Rk_~OW0JRroB2xpsr;^OI(kQL{IIFd@GdH#8;SLj2k2l!N@n$v{2wrc4_LNC Pv#-h@c{W;v;|Kr%93tdO literal 0 HcmV?d00001 diff --git a/theme/css/pygments/colorful.css b/theme/css/pygments/colorful.css new file mode 100644 index 000000000..8c5ca1058 --- /dev/null +++ b/theme/css/pygments/colorful.css @@ -0,0 +1,62 @@ +.highlight pre .hll { background-color: #ffffcc } +.highlight pre, .highlighttable pre { background: #ffffff; } +.highlight pre .c { color: #888888 } /* Comment */ +.highlight pre .err { color: #FF0000; background-color: #FFAAAA } /* Error */ +.highlight pre .k { color: #008800; font-weight: bold } /* Keyword */ +.highlight pre .o { color: #333333 } /* Operator */ +.highlight pre .cm { color: #888888 } /* Comment.Multiline */ +.highlight pre .cp { color: #557799 } /* Comment.Preproc */ +.highlight pre .c1 { color: #888888 } /* Comment.Single */ +.highlight pre .cs { color: #cc0000; font-weight: bold } /* Comment.Special */ +.highlight pre .gd { color: #A00000 } /* Generic.Deleted */ +.highlight pre .ge { font-style: italic } /* Generic.Emph */ +.highlight pre .gr { color: #FF0000 } /* Generic.Error */ +.highlight pre .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight pre .gi { color: #00A000 } /* Generic.Inserted */ +.highlight pre .go { color: #888888 } /* Generic.Output */ +.highlight pre .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ +.highlight pre .gs { font-weight: bold } /* Generic.Strong */ +.highlight pre .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight pre .gt { color: #0044DD } /* Generic.Traceback */ +.highlight pre .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ +.highlight pre .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ +.highlight pre .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ +.highlight pre .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */ +.highlight pre .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ +.highlight pre .kt { color: #333399; font-weight: bold } /* Keyword.Type */ +.highlight pre .m { color: #6600EE; font-weight: bold } /* Literal.Number */ +.highlight pre .s { background-color: #fff0f0 } /* Literal.String */ +.highlight pre .na { color: #0000CC } /* Name.Attribute */ +.highlight pre .nb { color: #007020 } /* Name.Builtin */ +.highlight pre .nc { color: #BB0066; font-weight: bold } /* Name.Class */ +.highlight pre .no { color: #003366; font-weight: bold } /* Name.Constant */ +.highlight pre .nd { color: #555555; font-weight: bold } /* Name.Decorator */ +.highlight pre .ni { color: #880000; font-weight: bold } /* Name.Entity */ +.highlight pre .ne { color: #FF0000; font-weight: bold } /* Name.Exception */ +.highlight pre .nf { color: #0066BB; font-weight: bold } /* Name.Function */ +.highlight pre .nl { color: #997700; font-weight: bold } /* Name.Label */ +.highlight pre .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ +.highlight pre .nt { color: #007700 } /* Name.Tag */ +.highlight pre .nv { color: #996633 } /* Name.Variable */ +.highlight pre .ow { color: #000000; font-weight: bold } /* Operator.Word */ +.highlight pre .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight pre .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */ +.highlight pre .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */ +.highlight pre .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ +.highlight pre .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */ +.highlight pre .sb { background-color: #fff0f0 } /* Literal.String.Backtick */ +.highlight pre .sc { color: #0044DD } /* Literal.String.Char */ +.highlight pre .sd { color: #DD4422 } /* Literal.String.Doc */ +.highlight pre .s2 { background-color: #fff0f0 } /* Literal.String.Double */ +.highlight pre .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */ +.highlight pre .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */ +.highlight pre .si { background-color: #eeeeee } /* Literal.String.Interpol */ +.highlight pre .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */ +.highlight pre .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */ +.highlight pre .s1 { background-color: #fff0f0 } /* Literal.String.Single */ +.highlight pre .ss { color: #AA6600 } /* Literal.String.Symbol */ +.highlight pre .bp { color: #007020 } /* Name.Builtin.Pseudo */ +.highlight pre .vc { color: #336699 } /* Name.Variable.Class */ +.highlight pre .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */ +.highlight pre .vi { color: #3333BB } /* Name.Variable.Instance */ +.highlight pre .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ diff --git a/theme/css/pygments/colorful.css.gz b/theme/css/pygments/colorful.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..b1eb6c1ada348c43c5564eeeecba1d0236fc764d GIT binary patch literal 935 zcmV;Y16ceYiwFP!000021ErTyZ__Xk$KUxBk$6K8Lf5A4_S7~ln;2|j6FfVPn^<$~ z$acC_i0_V*Qn0ggx`3rUOzQt<-{t(jb6C*4VCGK;l_Wt}Fc$m>QiLCJDQcd*!-5HU z9=zU~g>mrnRp=<*27mw8C}pI@*o5EO?e^lCI0&)%>2ZfyyMmv=`!~T#lqKOhc=P_5 zgh*+LHk-(-3+Tj~&BCk$Z!M*e5beQYMbT{5u(pEhcaNm`(Rq*xmK_+M$o^5t45A2& za@MYcEcassL=OFfxPr}Me1zLlhs0)yHQCw9K0JZJE>%93Jy z$h{|De`poK6fp>wXBKYJ(4vF(BjH3+943SjO~9PzO_{Y@E4^prJfIpeie3G>tO`*4 zyoNeLU%}*sQ!%Dy{24gHE(yv^NNrYO&!05Uwx;g@Z_Mj!+2Rr@9MPZ$*Oj;Ivyv9E5DZrlg2YZPr!psAzTTr zG=d%LAsfz12xiE52NfJd^5MuYs3fW~af86h0iK=BW+#ESiqx3^X>$1Sz7kXDJGjsv zbjM)l^OL;$eFa8p+io03(R%GgT~lrRn}uKMG9{oJC~vcjwvh`l_3x=xjyjgIS{Ed(qeZrAv78AWmIO+(9CF{Bho5}nF9N$R;OJagJw zv-)A?o(OM?<<#-V-fq>>)?8D)2T=qVI(ku0m{h*&%ePL>;&{32r)_GEy)b6M=JV9BN$(MS7j{lCaeN%5TG2NoX**;>GuUJ27WJgz zIG2UrJp-N1O51f1-jgRCelN_G_J&<<|J7i^4HF2w7Nt9MOeQ_<++kjlCy+=x*-Da^ z60f)>Ic$fe?FHlUkl1f97`aM^I&8Q!zt$9P?FxGagAQX=AlUD1e@c?^cr*g_2|RhL z(cowjQF{tr5vS0a1tj}o;C^d`5!^UcG5GM8M3T&t3JTLmyFgk~c(M|pb*U%k!;D6r zM`6!lZ*<{l@)B?sAA1Y3znU8Z-b3|aa8muRGiATd7K_GwV8Xsk;WVbz3+9QQ!EcA1 zK`oAt&r-*}{lmmAxAa+dx|jVyequ{QLm*R>Cq<%lXJDyrNQqnVMFmX`1s$Dm_v z+1Tx(vx5N>h~R^-7Dw z(|AxaFL0XPo`qliWR&#Opmfvd7Ryr^XM3t@8rcm7vsqLAtO$k5&`|TB2fIf&l|mbW zTiIK3IBy1&6KgU|3KS_0N8XbhbYb&Gfkg}0R6l4a6NyUI;juh|?dm1o)o*+K>9O?ON)Qd(NX;tlTY^*RY z4H~Y9JteQDlakq)fF8b}J9l?J_ZGZnO*zpTB{dDC*9>7_Pm6|gkE3Wlca*k!rFTLK z*YZa7+8_RvFwCq`6ga3^H0XaD{|B|AQ1~vDcx~0ykj_!Hv5 zgWP+Ch3S3|YuYoxTYBkm`lJ5&`P32pB#PCKLhQZt-f9YO1lu=M_~LndxvaQe8{spo zO!$)7o9V4Y{@Te2!a0`&?e0A52DpJ0Dreo~x57Y*J5nyYAr=%(K*yaNEu7d9Xc#^Q zHSNZjW&}6Yq^0*i7I&C4{5h+mZXwNN>1k2zI>uyjb{0k67TtkfX-e?HqqA;d-GG9` zlNsBIYdGv0SJg$Tkf_7xm1oB6Fcv2BOh(m;3k5vdMn>;~?suz=|3`<`9zWV8tn(PJ zLR@s1w0mASOWMT|{bP2ScG6#S8RNf`maG%tww~9xCo+DJCxv%^AM1Yr8m+XGP7nY9 DBRjA% literal 0 HcmV?d00001 diff --git a/theme/css/pygments/emacs.css b/theme/css/pygments/emacs.css new file mode 100644 index 000000000..8a974f21d --- /dev/null +++ b/theme/css/pygments/emacs.css @@ -0,0 +1,62 @@ +.highlight pre .hll { background-color: #ffffcc } +.highlight pre, .highlighttable pre { background: #f8f8f8; } +.highlight pre .c { color: #008800; font-style: italic } /* Comment */ +.highlight pre .err { border: 1px solid #FF0000 } /* Error */ +.highlight pre .k { color: #AA22FF; font-weight: bold } /* Keyword */ +.highlight pre .o { color: #666666 } /* Operator */ +.highlight pre .cm { color: #008800; font-style: italic } /* Comment.Multiline */ +.highlight pre .cp { color: #008800 } /* Comment.Preproc */ +.highlight pre .c1 { color: #008800; font-style: italic } /* Comment.Single */ +.highlight pre .cs { color: #008800; font-weight: bold } /* Comment.Special */ +.highlight pre .gd { color: #A00000 } /* Generic.Deleted */ +.highlight pre .ge { font-style: italic } /* Generic.Emph */ +.highlight pre .gr { color: #FF0000 } /* Generic.Error */ +.highlight pre .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight pre .gi { color: #00A000 } /* Generic.Inserted */ +.highlight pre .go { color: #888888 } /* Generic.Output */ +.highlight pre .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ +.highlight pre .gs { font-weight: bold } /* Generic.Strong */ +.highlight pre .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight pre .gt { color: #0044DD } /* Generic.Traceback */ +.highlight pre .kc { color: #AA22FF; font-weight: bold } /* Keyword.Constant */ +.highlight pre .kd { color: #AA22FF; font-weight: bold } /* Keyword.Declaration */ +.highlight pre .kn { color: #AA22FF; font-weight: bold } /* Keyword.Namespace */ +.highlight pre .kp { color: #AA22FF } /* Keyword.Pseudo */ +.highlight pre .kr { color: #AA22FF; font-weight: bold } /* Keyword.Reserved */ +.highlight pre .kt { color: #00BB00; font-weight: bold } /* Keyword.Type */ +.highlight pre .m { color: #666666 } /* Literal.Number */ +.highlight pre .s { color: #BB4444 } /* Literal.String */ +.highlight pre .na { color: #BB4444 } /* Name.Attribute */ +.highlight pre .nb { color: #AA22FF } /* Name.Builtin */ +.highlight pre .nc { color: #0000FF } /* Name.Class */ +.highlight pre .no { color: #880000 } /* Name.Constant */ +.highlight pre .nd { color: #AA22FF } /* Name.Decorator */ +.highlight pre .ni { color: #999999; font-weight: bold } /* Name.Entity */ +.highlight pre .ne { color: #D2413A; font-weight: bold } /* Name.Exception */ +.highlight pre .nf { color: #00A000 } /* Name.Function */ +.highlight pre .nl { color: #A0A000 } /* Name.Label */ +.highlight pre .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ +.highlight pre .nt { color: #008000; font-weight: bold } /* Name.Tag */ +.highlight pre .nv { color: #B8860B } /* Name.Variable */ +.highlight pre .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ +.highlight pre .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight pre .mf { color: #666666 } /* Literal.Number.Float */ +.highlight pre .mh { color: #666666 } /* Literal.Number.Hex */ +.highlight pre .mi { color: #666666 } /* Literal.Number.Integer */ +.highlight pre .mo { color: #666666 } /* Literal.Number.Oct */ +.highlight pre .sb { color: #BB4444 } /* Literal.String.Backtick */ +.highlight pre .sc { color: #BB4444 } /* Literal.String.Char */ +.highlight pre .sd { color: #BB4444; font-style: italic } /* Literal.String.Doc */ +.highlight pre .s2 { color: #BB4444 } /* Literal.String.Double */ +.highlight pre .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */ +.highlight pre .sh { color: #BB4444 } /* Literal.String.Heredoc */ +.highlight pre .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */ +.highlight pre .sx { color: #008000 } /* Literal.String.Other */ +.highlight pre .sr { color: #BB6688 } /* Literal.String.Regex */ +.highlight pre .s1 { color: #BB4444 } /* Literal.String.Single */ +.highlight pre .ss { color: #B8860B } /* Literal.String.Symbol */ +.highlight pre .bp { color: #AA22FF } /* Name.Builtin.Pseudo */ +.highlight pre .vc { color: #B8860B } /* Name.Variable.Class */ +.highlight pre .vg { color: #B8860B } /* Name.Variable.Global */ +.highlight pre .vi { color: #B8860B } /* Name.Variable.Instance */ +.highlight pre .il { color: #666666 } /* Literal.Number.Integer.Long */ diff --git a/theme/css/pygments/emacs.css.gz b/theme/css/pygments/emacs.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..2a9bfcdc9ae0f0c42b70932c1dd413abd73b2843 GIT binary patch literal 859 zcmV-h1El;PiwFP!000021D%)OPunmM$KUr?MB)vN&~_Ed;Hf_WjZp;Ecy^p?V%4!D z+bON4{qJ*93Q2R$(i!nkso#&!cjxc9e!}8}+kfL_3OqmI-23f?gsx*Ha}ixo$)&pX z&Q^9&>izlR*A!p9&(DU097;@;P-uhV@1`O4d}_aX*rC@8f?n^&TS;LqwApdE_Lw1@ z*yl2;5KT}F7OueoIF&Yg9^Z9!a zZ%};c+JbqsXZ(QOo81MY$O`4ETzknP14RtJGfhuFzyCAmhH)kUC1wp`UHzmWQ<9?E z{(nUC!bHsRP_zrz%Q8}#0kk%8(UPu{9Q3m^OHi?@ zY+P-q5235E;-r=Vn*(R5U5y-vJpj;`a_GeJ8x_FVBEJtrwoSlA* zCneJir|Cm2-0Byjq$3A;^%&h^dC9}1C99@(y5Vp-t;?5+P$>Ki^$vQndH544v>~{Y zt)tU8rtT40sFZHu?u@OCfVzDzS2SaVeeWf;yGFHph;X4qKi}}QHRmn zh9{tmg-IM^P&ML00nfIP(Yv7g-E!mp&7rl!kB$kuG{mzIW*x?A%L`{iyEvkI%x>aN l`dcnT{CCoZbpqU%^BVU=#!vDj|Ka_y{uc~5rR+@*002m%ty%y8 literal 0 HcmV?d00001 diff --git a/theme/css/pygments/friendly.css b/theme/css/pygments/friendly.css new file mode 100644 index 000000000..3f52d3de6 --- /dev/null +++ b/theme/css/pygments/friendly.css @@ -0,0 +1,62 @@ +.highlight pre .hll { background-color: #ffffcc } +.highlight pre, .highlighttable pre { background: #f0f0f0; } +.highlight pre .c { color: #60a0b0; font-style: italic } /* Comment */ +.highlight pre .err { border: 1px solid #FF0000 } /* Error */ +.highlight pre .k { color: #007020; font-weight: bold } /* Keyword */ +.highlight pre .o { color: #666666 } /* Operator */ +.highlight pre .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */ +.highlight pre .cp { color: #007020 } /* Comment.Preproc */ +.highlight pre .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */ +.highlight pre .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */ +.highlight pre .gd { color: #A00000 } /* Generic.Deleted */ +.highlight pre .ge { font-style: italic } /* Generic.Emph */ +.highlight pre .gr { color: #FF0000 } /* Generic.Error */ +.highlight pre .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight pre .gi { color: #00A000 } /* Generic.Inserted */ +.highlight pre .go { color: #888888 } /* Generic.Output */ +.highlight pre .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ +.highlight pre .gs { font-weight: bold } /* Generic.Strong */ +.highlight pre .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight pre .gt { color: #0044DD } /* Generic.Traceback */ +.highlight pre .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ +.highlight pre .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ +.highlight pre .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ +.highlight pre .kp { color: #007020 } /* Keyword.Pseudo */ +.highlight pre .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ +.highlight pre .kt { color: #902000 } /* Keyword.Type */ +.highlight pre .m { color: #40a070 } /* Literal.Number */ +.highlight pre .s { color: #4070a0 } /* Literal.String */ +.highlight pre .na { color: #4070a0 } /* Name.Attribute */ +.highlight pre .nb { color: #007020 } /* Name.Builtin */ +.highlight pre .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ +.highlight pre .no { color: #60add5 } /* Name.Constant */ +.highlight pre .nd { color: #555555; font-weight: bold } /* Name.Decorator */ +.highlight pre .ni { color: #d55537; font-weight: bold } /* Name.Entity */ +.highlight pre .ne { color: #007020 } /* Name.Exception */ +.highlight pre .nf { color: #06287e } /* Name.Function */ +.highlight pre .nl { color: #002070; font-weight: bold } /* Name.Label */ +.highlight pre .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ +.highlight pre .nt { color: #062873; font-weight: bold } /* Name.Tag */ +.highlight pre .nv { color: #bb60d5 } /* Name.Variable */ +.highlight pre .ow { color: #007020; font-weight: bold } /* Operator.Word */ +.highlight pre .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight pre .mf { color: #40a070 } /* Literal.Number.Float */ +.highlight pre .mh { color: #40a070 } /* Literal.Number.Hex */ +.highlight pre .mi { color: #40a070 } /* Literal.Number.Integer */ +.highlight pre .mo { color: #40a070 } /* Literal.Number.Oct */ +.highlight pre .sb { color: #4070a0 } /* Literal.String.Backtick */ +.highlight pre .sc { color: #4070a0 } /* Literal.String.Char */ +.highlight pre .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ +.highlight pre .s2 { color: #4070a0 } /* Literal.String.Double */ +.highlight pre .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ +.highlight pre .sh { color: #4070a0 } /* Literal.String.Heredoc */ +.highlight pre .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ +.highlight pre .sx { color: #c65d09 } /* Literal.String.Other */ +.highlight pre .sr { color: #235388 } /* Literal.String.Regex */ +.highlight pre .s1 { color: #4070a0 } /* Literal.String.Single */ +.highlight pre .ss { color: #517918 } /* Literal.String.Symbol */ +.highlight pre .bp { color: #007020 } /* Name.Builtin.Pseudo */ +.highlight pre .vc { color: #bb60d5 } /* Name.Variable.Class */ +.highlight pre .vg { color: #bb60d5 } /* Name.Variable.Global */ +.highlight pre .vi { color: #bb60d5 } /* Name.Variable.Instance */ +.highlight pre .il { color: #40a070 } /* Literal.Number.Integer.Long */ diff --git a/theme/css/pygments/friendly.css.gz b/theme/css/pygments/friendly.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..8514d250ba7eb0ea44a66e661daad4e22b566a34 GIT binary patch literal 884 zcmV-)1B?70iwFP!000021D#jPZrd;ry!R^vpKRk<{L5TF_EE{C(LFk@-P?cW52f*{N|4}JwPq3@}ZrASVw~hp~6Ph@7o?Y2&sK_yF))BQEcCOlfs;6v*K_WFhe-A zy9TGn!Hvvw5GFW2-J=1esy(Gjz%q4;WuPTzNpN&~8`-tNkCl=NL%%ygMA0DXZi84r z_0pv!=E;WRJFFIV7mP)^sjSxqGATe2gYQi9!}AY+l-w}R1fYz?UNUv`vw}iNiefwe z5zUl|l;fdjgbr7hRmTo%0hAGr(WZ$*dlh}2?;QwGjD{oNU;sU%w34PTqb+`%7a0mx z&c?2={sMghOS9UcMA6W%ur1j=ki?c2rDHX^tGz%Tga+j+fveNudey;`(iA0n%TiZc zwBJjji+`r^tYlu`Y8U~KrqQmX(=yH)s%mOgJwG3f>hPH&6e|6q9zqW` zk?=+eZ3ymY@5$kOBcPmEuVGT4l;Uv8Cz69MY~CoL&ug~mXANZ{QK&jRmKU(9p5v;1 zcMtEvvPCFu4ub-~1Poei4V#=m zU}?hF%wAS+CGxjc<`CX;Nl?M(Sv!JzSfX&&4*nnvq_|1tvK_^Qq6z4@mC1$IwksNj zcScRyaol7C_t|6*@1II{I7j%PtGn$&8p+ZlQ4PMJ_9ePQI@Xlny+~*6!ny|qi6=8x zG8IA6zF3uvR3TA|(aXKj59OGc%+oF1hTlEwoo&a?9fB9DWb`uVPP^jxzelv&v3s4t zMF$UIy2@j`3USe*`!-BHbK1rd{jGPNw!+_W8ROqhbJmLBVco-VQ)K)gQwkqH2KYa_ KW-2*p5C8zrrLj%` literal 0 HcmV?d00001 diff --git a/theme/css/pygments/fruity.css b/theme/css/pygments/fruity.css new file mode 100644 index 000000000..ec1fc42fe --- /dev/null +++ b/theme/css/pygments/fruity.css @@ -0,0 +1,70 @@ +.highlight pre .hll { background-color: #333333 } +.highlight pre, .highlighttable pre { background: #111111; color: #ffffff } +.highlight pre .c { color: #008800; font-style: italic; background-color: #0f140f } /* Comment */ +.highlight pre .err { color: #ffffff } /* Error */ +.highlight pre .g { color: #ffffff } /* Generic */ +.highlight pre .k { color: #fb660a; font-weight: bold } /* Keyword */ +.highlight pre .l { color: #ffffff } /* Literal */ +.highlight pre .n { color: #ffffff } /* Name */ +.highlight pre .o { color: #ffffff } /* Operator */ +.highlight pre .x { color: #ffffff } /* Other */ +.highlight pre .p { color: #ffffff } /* Punctuation */ +.highlight pre .cm { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.Multiline */ +.highlight pre .cp { color: #ff0007; font-weight: bold; font-style: italic; background-color: #0f140f } /* Comment.Preproc */ +.highlight pre .c1 { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.Single */ +.highlight pre .cs { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.Special */ +.highlight pre .gd { color: #ffffff } /* Generic.Deleted */ +.highlight pre .ge { color: #ffffff } /* Generic.Emph */ +.highlight pre .gr { color: #ffffff } /* Generic.Error */ +.highlight pre .gh { color: #ffffff; font-weight: bold } /* Generic.Heading */ +.highlight pre .gi { color: #ffffff } /* Generic.Inserted */ +.highlight pre .go { color: #444444; background-color: #222222 } /* Generic.Output */ +.highlight pre .gp { color: #ffffff } /* Generic.Prompt */ +.highlight pre .gs { color: #ffffff } /* Generic.Strong */ +.highlight pre .gu { color: #ffffff; font-weight: bold } /* Generic.Subheading */ +.highlight pre .gt { color: #ffffff } /* Generic.Traceback */ +.highlight pre .kc { color: #fb660a; font-weight: bold } /* Keyword.Constant */ +.highlight pre .kd { color: #fb660a; font-weight: bold } /* Keyword.Declaration */ +.highlight pre .kn { color: #fb660a; font-weight: bold } /* Keyword.Namespace */ +.highlight pre .kp { color: #fb660a } /* Keyword.Pseudo */ +.highlight pre .kr { color: #fb660a; font-weight: bold } /* Keyword.Reserved */ +.highlight pre .kt { color: #cdcaa9; font-weight: bold } /* Keyword.Type */ +.highlight pre .ld { color: #ffffff } /* Literal.Date */ +.highlight pre .m { color: #0086f7; font-weight: bold } /* Literal.Number */ +.highlight pre .s { color: #0086d2 } /* Literal.String */ +.highlight pre .na { color: #ff0086; font-weight: bold } /* Name.Attribute */ +.highlight pre .nb { color: #ffffff } /* Name.Builtin */ +.highlight pre .nc { color: #ffffff } /* Name.Class */ +.highlight pre .no { color: #0086d2 } /* Name.Constant */ +.highlight pre .nd { color: #ffffff } /* Name.Decorator */ +.highlight pre .ni { color: #ffffff } /* Name.Entity */ +.highlight pre .ne { color: #ffffff } /* Name.Exception */ +.highlight pre .nf { color: #ff0086; font-weight: bold } /* Name.Function */ +.highlight pre .nl { color: #ffffff } /* Name.Label */ +.highlight pre .nn { color: #ffffff } /* Name.Namespace */ +.highlight pre .nx { color: #ffffff } /* Name.Other */ +.highlight pre .py { color: #ffffff } /* Name.Property */ +.highlight pre .nt { color: #fb660a; font-weight: bold } /* Name.Tag */ +.highlight pre .nv { color: #fb660a } /* Name.Variable */ +.highlight pre .ow { color: #ffffff } /* Operator.Word */ +.highlight pre .w { color: #888888 } /* Text.Whitespace */ +.highlight pre .mf { color: #0086f7; font-weight: bold } /* Literal.Number.Float */ +.highlight pre .mh { color: #0086f7; font-weight: bold } /* Literal.Number.Hex */ +.highlight pre .mi { color: #0086f7; font-weight: bold } /* Literal.Number.Integer */ +.highlight pre .mo { color: #0086f7; font-weight: bold } /* Literal.Number.Oct */ +.highlight pre .sb { color: #0086d2 } /* Literal.String.Backtick */ +.highlight pre .sc { color: #0086d2 } /* Literal.String.Char */ +.highlight pre .sd { color: #0086d2 } /* Literal.String.Doc */ +.highlight pre .s2 { color: #0086d2 } /* Literal.String.Double */ +.highlight pre .se { color: #0086d2 } /* Literal.String.Escape */ +.highlight pre .sh { color: #0086d2 } /* Literal.String.Heredoc */ +.highlight pre .si { color: #0086d2 } /* Literal.String.Interpol */ +.highlight pre .sx { color: #0086d2 } /* Literal.String.Other */ +.highlight pre .sr { color: #0086d2 } /* Literal.String.Regex */ +.highlight pre .s1 { color: #0086d2 } /* Literal.String.Single */ +.highlight pre .ss { color: #0086d2 } /* Literal.String.Symbol */ +.highlight pre .bp { color: #ffffff } /* Name.Builtin.Pseudo */ +.highlight pre .vc { color: #fb660a } /* Name.Variable.Class */ +.highlight pre .vg { color: #fb660a } /* Name.Variable.Global */ +.highlight pre .vi { color: #fb660a } /* Name.Variable.Instance */ +.highlight pre .il { color: #0086f7; font-weight: bold } /* Literal.Number.Integer.Long */ diff --git a/theme/css/pygments/fruity.css.gz b/theme/css/pygments/fruity.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..5535db0ed23a245438d415af4d1daede71cd67f9 GIT binary patch literal 837 zcmV-L1G@YliwFP!000021Fe@`PunmQhVS<)EbR`BkTO&{xEgKw&=^!ujcdm_O{_Y0 zWILtR#DAX~sMgZs#4T9rMWsBi&pA0?iE^Ih!u>2MHIOJ5g8U^3Wz$TnN~VWQ38l}- z*YEWqFJGb!;v4z@-_k@tEwirR*iL=U$x3TdpDisCF-NW*isN1{j?c+NNqcDQLckf} zmI}_!G5g|4=OlKTfPmJgkgM2YlO++;N=o>k%&!+BuWy=cfeOcLJ(nzbK#8K0NK3c6jfv9$m>tmJV4WYFy#*8&(unZU4 zo7v9IIqEBEEX60vG~Hcq08CKr?R-3YJ@foAk&)l`0g~yW8>rF12TP zYERc+9!nXeKU($1ixPE9q|FmD8c>UZ?$PL~exsk(X(bizluR0ie{@lCH~!FcldK8s3u+9CDUai?SVPIkwCO@u9Ll?V zNZy1FrR8>ka?r@l8I-yOK{k?&0wa+bUZS>?>x!1v7eO|#a%x(0PyNdS4xtQ$R zRH93vC|W2*zPIKz%uz+Yx8jYokm1QvsJ&J18S1%7g1TyS;ikOh_@p;1OrxJuys@WY z`~Y9-&2cDRdGgpmn8MI7icd(BhbdfxhScK*50hA?hb|S`zRWyK!`qFF4ik8A8H(n; z>4XXRznqK-R9F-V9)+X~7|;!?*o=iVME}5^WkLLvPznA;H{(G9H}&MlyCfGM?LX1& P+lR(KW`&o&yAl8ZI{CBn literal 0 HcmV?d00001 diff --git a/theme/css/pygments/manni.css b/theme/css/pygments/manni.css new file mode 100644 index 000000000..a5dbc2af7 --- /dev/null +++ b/theme/css/pygments/manni.css @@ -0,0 +1,62 @@ +.highlight pre .hll { background-color: #ffffcc } +.highlight pre, .highlighttable pre { background: #f0f3f3; } +.highlight pre .c { color: #0099FF; font-style: italic } /* Comment */ +.highlight pre .err { color: #AA0000; background-color: #FFAAAA } /* Error */ +.highlight pre .k { color: #006699; font-weight: bold } /* Keyword */ +.highlight pre .o { color: #555555 } /* Operator */ +.highlight pre .cm { color: #0099FF; font-style: italic } /* Comment.Multiline */ +.highlight pre .cp { color: #009999 } /* Comment.Preproc */ +.highlight pre .c1 { color: #0099FF; font-style: italic } /* Comment.Single */ +.highlight pre .cs { color: #0099FF; font-weight: bold; font-style: italic } /* Comment.Special */ +.highlight pre .gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */ +.highlight pre .ge { font-style: italic } /* Generic.Emph */ +.highlight pre .gr { color: #FF0000 } /* Generic.Error */ +.highlight pre .gh { color: #003300; font-weight: bold } /* Generic.Heading */ +.highlight pre .gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */ +.highlight pre .go { color: #AAAAAA } /* Generic.Output */ +.highlight pre .gp { color: #000099; font-weight: bold } /* Generic.Prompt */ +.highlight pre .gs { font-weight: bold } /* Generic.Strong */ +.highlight pre .gu { color: #003300; font-weight: bold } /* Generic.Subheading */ +.highlight pre .gt { color: #99CC66 } /* Generic.Traceback */ +.highlight pre .kc { color: #006699; font-weight: bold } /* Keyword.Constant */ +.highlight pre .kd { color: #006699; font-weight: bold } /* Keyword.Declaration */ +.highlight pre .kn { color: #006699; font-weight: bold } /* Keyword.Namespace */ +.highlight pre .kp { color: #006699 } /* Keyword.Pseudo */ +.highlight pre .kr { color: #006699; font-weight: bold } /* Keyword.Reserved */ +.highlight pre .kt { color: #007788; font-weight: bold } /* Keyword.Type */ +.highlight pre .m { color: #FF6600 } /* Literal.Number */ +.highlight pre .s { color: #CC3300 } /* Literal.String */ +.highlight pre .na { color: #330099 } /* Name.Attribute */ +.highlight pre .nb { color: #336666 } /* Name.Builtin */ +.highlight pre .nc { color: #00AA88; font-weight: bold } /* Name.Class */ +.highlight pre .no { color: #336600 } /* Name.Constant */ +.highlight pre .nd { color: #9999FF } /* Name.Decorator */ +.highlight pre .ni { color: #999999; font-weight: bold } /* Name.Entity */ +.highlight pre .ne { color: #CC0000; font-weight: bold } /* Name.Exception */ +.highlight pre .nf { color: #CC00FF } /* Name.Function */ +.highlight pre .nl { color: #9999FF } /* Name.Label */ +.highlight pre .nn { color: #00CCFF; font-weight: bold } /* Name.Namespace */ +.highlight pre .nt { color: #330099; font-weight: bold } /* Name.Tag */ +.highlight pre .nv { color: #003333 } /* Name.Variable */ +.highlight pre .ow { color: #000000; font-weight: bold } /* Operator.Word */ +.highlight pre .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight pre .mf { color: #FF6600 } /* Literal.Number.Float */ +.highlight pre .mh { color: #FF6600 } /* Literal.Number.Hex */ +.highlight pre .mi { color: #FF6600 } /* Literal.Number.Integer */ +.highlight pre .mo { color: #FF6600 } /* Literal.Number.Oct */ +.highlight pre .sb { color: #CC3300 } /* Literal.String.Backtick */ +.highlight pre .sc { color: #CC3300 } /* Literal.String.Char */ +.highlight pre .sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */ +.highlight pre .s2 { color: #CC3300 } /* Literal.String.Double */ +.highlight pre .se { color: #CC3300; font-weight: bold } /* Literal.String.Escape */ +.highlight pre .sh { color: #CC3300 } /* Literal.String.Heredoc */ +.highlight pre .si { color: #AA0000 } /* Literal.String.Interpol */ +.highlight pre .sx { color: #CC3300 } /* Literal.String.Other */ +.highlight pre .sr { color: #33AAAA } /* Literal.String.Regex */ +.highlight pre .s1 { color: #CC3300 } /* Literal.String.Single */ +.highlight pre .ss { color: #FFCC33 } /* Literal.String.Symbol */ +.highlight pre .bp { color: #336666 } /* Name.Builtin.Pseudo */ +.highlight pre .vc { color: #003333 } /* Name.Variable.Class */ +.highlight pre .vg { color: #003333 } /* Name.Variable.Global */ +.highlight pre .vi { color: #003333 } /* Name.Variable.Instance */ +.highlight pre .il { color: #FF6600 } /* Literal.Number.Integer.Long */ diff --git a/theme/css/pygments/manni.css.gz b/theme/css/pygments/manni.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..8358ce2bcb99152540cb92d1974063a80e0bb2a0 GIT binary patch literal 901 zcmV;01A6=)iwFP!000021D%&qPunmM$KUrUBJB;0P*$x_cq)Ma8lwo%cy^p?V&T}4 z?UYv2zWbb(h&Vlmbe4Fa>i_5S`R}`Hn6oVB_Rj>Rf*{N}5B>xRp|6>el}Hb%!8vOkdI*M<>$Nz>T95$FXq1KKTMxxI ziR9^)@e|f>Ql%J0wkSU~Yb%+TpoqbDrp5mG2!B=FFwO*^#Ii%2PF?kbf>KF}YLEXT znkObQj)$UsxOQF#>`($_gkxJ|DQ@04j_k6Iuy+OagX3})XvtX`e2t>oEZZHfL4aa3 zyaWyg&|A%FbNeD}^jAfhqvEzp<9K&tuO+kG$=!Hd``hEm26h7^wU>e77@nsnsxyV= zX*8-c!9r1K&_o?RoJSEj7c*POYYt*!FuVIPz%N}Q&f8}qB5jFO&ARr@FY zsY>#m+?y70I*p>q#FalQLZQAKv^LSbi&Gd$p$)++=WDt@?-D2{wuUh&P^8!&c~1(^ zr9C$aEO&se`awgLN>r-$kL3}ptCzT|UyZ{%IXON3l=r+Y(PI@(F_=u6*LBB??GQY? zuZjfFYS1pEQB-@ip8Kx5XM{*)ZIls3~&Q0 zRL+LUZ-s#juSkU)hL}_I06G~|(ZUPc6%E5Xqo%_cQBLrpn(pZRvuKBTi4V~F`>>EM zW#zG`247IS7VSWGMHGQodyE!iNz b?WQ^71(5N*3Q&0WKCJ%(1B~M9y$}EZ2s^y? literal 0 HcmV?d00001 diff --git a/theme/css/pygments/monokai.css b/theme/css/pygments/monokai.css new file mode 100644 index 000000000..0db9ceaca --- /dev/null +++ b/theme/css/pygments/monokai.css @@ -0,0 +1,60 @@ +.highlight pre .hll { background-color: #49483e } +.highlight pre, .highlighttable pre { background: #272822; color: #f8f8f2 } +.highlight pre .c { color: #75715e } /* Comment */ +.highlight pre .err { color: #960050; background-color: #1e0010 } /* Error */ +.highlight pre .k { color: #66d9ef } /* Keyword */ +.highlight pre .l { color: #ae81ff } /* Literal */ +.highlight pre .n { color: #f8f8f2 } /* Name */ +.highlight pre .o { color: #f92672 } /* Operator */ +.highlight pre .p { color: #f8f8f2 } /* Punctuation */ +.highlight pre .cm { color: #75715e } /* Comment.Multiline */ +.highlight pre .cp { color: #75715e } /* Comment.Preproc */ +.highlight pre .c1 { color: #75715e } /* Comment.Single */ +.highlight pre .cs { color: #75715e } /* Comment.Special */ +.highlight pre .ge { font-style: italic } /* Generic.Emph */ +.highlight pre .gs { font-weight: bold } /* Generic.Strong */ +.highlight pre .kc { color: #66d9ef } /* Keyword.Constant */ +.highlight pre .kd { color: #66d9ef } /* Keyword.Declaration */ +.highlight pre .kn { color: #f92672 } /* Keyword.Namespace */ +.highlight pre .kp { color: #66d9ef } /* Keyword.Pseudo */ +.highlight pre .kr { color: #66d9ef } /* Keyword.Reserved */ +.highlight pre .kt { color: #66d9ef } /* Keyword.Type */ +.highlight pre .ld { color: #e6db74 } /* Literal.Date */ +.highlight pre .m { color: #ae81ff } /* Literal.Number */ +.highlight pre .s { color: #e6db74 } /* Literal.String */ +.highlight pre .na { color: #a6e22e } /* Name.Attribute */ +.highlight pre .nb { color: #f8f8f2 } /* Name.Builtin */ +.highlight pre .nc { color: #a6e22e } /* Name.Class */ +.highlight pre .no { color: #66d9ef } /* Name.Constant */ +.highlight pre .nd { color: #a6e22e } /* Name.Decorator */ +.highlight pre .ni { color: #f8f8f2 } /* Name.Entity */ +.highlight pre .ne { color: #a6e22e } /* Name.Exception */ +.highlight pre .nf { color: #a6e22e } /* Name.Function */ +.highlight pre .nl { color: #f8f8f2 } /* Name.Label */ +.highlight pre .nn { color: #f8f8f2 } /* Name.Namespace */ +.highlight pre .nx { color: #a6e22e } /* Name.Other */ +.highlight pre .py { color: #f8f8f2 } /* Name.Property */ +.highlight pre .nt { color: #f92672 } /* Name.Tag */ +.highlight pre .nv { color: #f8f8f2 } /* Name.Variable */ +.highlight pre .ow { color: #f92672 } /* Operator.Word */ +.highlight pre .w { color: #f8f8f2 } /* Text.Whitespace */ +.highlight pre .mf { color: #ae81ff } /* Literal.Number.Float */ +.highlight pre .mh { color: #ae81ff } /* Literal.Number.Hex */ +.highlight pre .mi { color: #ae81ff } /* Literal.Number.Integer */ +.highlight pre .mo { color: #ae81ff } /* Literal.Number.Oct */ +.highlight pre .sb { color: #e6db74 } /* Literal.String.Backtick */ +.highlight pre .sc { color: #e6db74 } /* Literal.String.Char */ +.highlight pre .sd { color: #e6db74 } /* Literal.String.Doc */ +.highlight pre .s2 { color: #e6db74 } /* Literal.String.Double */ +.highlight pre .se { color: #ae81ff } /* Literal.String.Escape */ +.highlight pre .sh { color: #e6db74 } /* Literal.String.Heredoc */ +.highlight pre .si { color: #e6db74 } /* Literal.String.Interpol */ +.highlight pre .sx { color: #e6db74 } /* Literal.String.Other */ +.highlight pre .sr { color: #e6db74 } /* Literal.String.Regex */ +.highlight pre .s1 { color: #e6db74 } /* Literal.String.Single */ +.highlight pre .ss { color: #e6db74 } /* Literal.String.Symbol */ +.highlight pre .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */ +.highlight pre .vc { color: #f8f8f2 } /* Name.Variable.Class */ +.highlight pre .vg { color: #f8f8f2 } /* Name.Variable.Global */ +.highlight pre .vi { color: #f8f8f2 } /* Name.Variable.Instance */ +.highlight pre .il { color: #ae81ff } /* Literal.Number.Integer.Long */ diff --git a/theme/css/pygments/monokai.css.gz b/theme/css/pygments/monokai.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..17e0291493db65cc02b02fcfbca8b65ec3b17733 GIT binary patch literal 742 zcmVUJ3t?Ly?$@6H`Q8cOs!~X4F>5L7JJ|)Y*tFA7$RB- zg;9TTKpwdTO$CO?7IM6cE%HQ5z}Bnw`f)rM9@fvQCW6IJQaNJGYsqX)Emso5Sm}QP z@~ak>3og-(vZ{lgYpAqhDBJH~U%1Q!9@ccB6)=v!MYeV8LP>jS>_)(4#4Qz^?fE;9 zpgAMcvdU4|9N`sg|GkV7CDM=Vi`7bIsM(m`ZDgXPu@v`xk#@j0zy#IKhc2YUR7ZYm zMpIFS-gr@UM4ua|Q-z|s1APVqdI@N<6}AI@-Bjp?MfjKOhZNZJlMfH;Qt0zrP*225&vyE5_A7IIzlCVNpoNal+<5!4tIQ;rAO zV;%#`)EBUEuX5Hl$$f{MO3UpA<-iwmx@J(h(nT(O=?2J8?-9Nx;ZIJv z_U(0MbKI}h#uss}Rnu)8_i7!rWJkVI+~iANxZhOs-8g}@!&OH=ByWyhy>f(ng|#Jb zd6SsVODz{cg@D`&MNz+(d6>XGtWlhY;SbV6hCgtr!X#!4J%CAq3L3d?W-rTGfoiZY zjY&@Nnwp03H~5TU;!wPHc+Wt`9Uc^>hEco|nLKO{_n;wl9D|2RY`vf>h1M6d4%2X! z3!}pXo*O%&jyC-;0r%WzOrXN1Oz>Mss(^Os8D^F&q=>oO=Q0c8?}SS5@pZ|A1Ri#M Y7_V$x{8wcmkB4#gA6vXk6gv(8056YVRsaA1 literal 0 HcmV?d00001 diff --git a/theme/css/pygments/murphy.css b/theme/css/pygments/murphy.css new file mode 100644 index 000000000..085431a24 --- /dev/null +++ b/theme/css/pygments/murphy.css @@ -0,0 +1,62 @@ +.highlight pre .hll { background-color: #ffffcc } +.highlight pre, .highlighttable pre { background: #ffffff; } +.highlight pre .c { color: #666666; font-style: italic } /* Comment */ +.highlight pre .err { color: #FF0000; background-color: #FFAAAA } /* Error */ +.highlight pre .k { color: #228899; font-weight: bold } /* Keyword */ +.highlight pre .o { color: #333333 } /* Operator */ +.highlight pre .cm { color: #666666; font-style: italic } /* Comment.Multiline */ +.highlight pre .cp { color: #557799 } /* Comment.Preproc */ +.highlight pre .c1 { color: #666666; font-style: italic } /* Comment.Single */ +.highlight pre .cs { color: #cc0000; font-weight: bold; font-style: italic } /* Comment.Special */ +.highlight pre .gd { color: #A00000 } /* Generic.Deleted */ +.highlight pre .ge { font-style: italic } /* Generic.Emph */ +.highlight pre .gr { color: #FF0000 } /* Generic.Error */ +.highlight pre .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight pre .gi { color: #00A000 } /* Generic.Inserted */ +.highlight pre .go { color: #888888 } /* Generic.Output */ +.highlight pre .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ +.highlight pre .gs { font-weight: bold } /* Generic.Strong */ +.highlight pre .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight pre .gt { color: #0044DD } /* Generic.Traceback */ +.highlight pre .kc { color: #228899; font-weight: bold } /* Keyword.Constant */ +.highlight pre .kd { color: #228899; font-weight: bold } /* Keyword.Declaration */ +.highlight pre .kn { color: #228899; font-weight: bold } /* Keyword.Namespace */ +.highlight pre .kp { color: #0088ff; font-weight: bold } /* Keyword.Pseudo */ +.highlight pre .kr { color: #228899; font-weight: bold } /* Keyword.Reserved */ +.highlight pre .kt { color: #6666ff; font-weight: bold } /* Keyword.Type */ +.highlight pre .m { color: #6600EE; font-weight: bold } /* Literal.Number */ +.highlight pre .s { background-color: #e0e0ff } /* Literal.String */ +.highlight pre .na { color: #000077 } /* Name.Attribute */ +.highlight pre .nb { color: #007722 } /* Name.Builtin */ +.highlight pre .nc { color: #ee99ee; font-weight: bold } /* Name.Class */ +.highlight pre .no { color: #55eedd; font-weight: bold } /* Name.Constant */ +.highlight pre .nd { color: #555555; font-weight: bold } /* Name.Decorator */ +.highlight pre .ni { color: #880000 } /* Name.Entity */ +.highlight pre .ne { color: #FF0000; font-weight: bold } /* Name.Exception */ +.highlight pre .nf { color: #55eedd; font-weight: bold } /* Name.Function */ +.highlight pre .nl { color: #997700; font-weight: bold } /* Name.Label */ +.highlight pre .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ +.highlight pre .nt { color: #007700 } /* Name.Tag */ +.highlight pre .nv { color: #003366 } /* Name.Variable */ +.highlight pre .ow { color: #000000; font-weight: bold } /* Operator.Word */ +.highlight pre .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight pre .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */ +.highlight pre .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */ +.highlight pre .mi { color: #6666ff; font-weight: bold } /* Literal.Number.Integer */ +.highlight pre .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */ +.highlight pre .sb { background-color: #e0e0ff } /* Literal.String.Backtick */ +.highlight pre .sc { color: #8888FF } /* Literal.String.Char */ +.highlight pre .sd { color: #DD4422 } /* Literal.String.Doc */ +.highlight pre .s2 { background-color: #e0e0ff } /* Literal.String.Double */ +.highlight pre .se { color: #666666; font-weight: bold; background-color: #e0e0ff } /* Literal.String.Escape */ +.highlight pre .sh { background-color: #e0e0ff } /* Literal.String.Heredoc */ +.highlight pre .si { background-color: #eeeeee } /* Literal.String.Interpol */ +.highlight pre .sx { color: #ff8888; background-color: #e0e0ff } /* Literal.String.Other */ +.highlight pre .sr { color: #000000; background-color: #e0e0ff } /* Literal.String.Regex */ +.highlight pre .s1 { background-color: #e0e0ff } /* Literal.String.Single */ +.highlight pre .ss { color: #ffcc88 } /* Literal.String.Symbol */ +.highlight pre .bp { color: #007722 } /* Name.Builtin.Pseudo */ +.highlight pre .vc { color: #ccccff } /* Name.Variable.Class */ +.highlight pre .vg { color: #ff8844 } /* Name.Variable.Global */ +.highlight pre .vi { color: #aaaaff } /* Name.Variable.Instance */ +.highlight pre .il { color: #6666ff; font-weight: bold } /* Literal.Number.Integer.Long */ diff --git a/theme/css/pygments/murphy.css.gz b/theme/css/pygments/murphy.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..888896d9d6aee9297779a6fec21a54eebf1685ba GIT binary patch literal 933 zcmV;W16uqaiwFP!000021ErV2ZreBzhVOj}0lgJl)phJxPEKiTH^HV&&;;8vMU5mP z6e*CD6JxROUP_KpQXbk?mp~2y{C}Jo4u6i~k`*PlejK5*?B2|V_q(eFD)>d*~gCYjsnO4K=5r1pAVVns-iM2zVPG__E+*dy+sFkFs z_VXV^^Tjm#BEZ|9ZkuvlXSIY<0;f*lj!54Uo*18O1RVceNMDt6S0PZ%o~w zH?VN~jGj-k(fnu{4@y=wPSd-y2&*5Bl7SjDZW^bR^s!0H164I%RVS0h!k0fOLZS5= z)KBPOLy51Y(1ze{_nZyqEr4=jeTPYbBE@jzcT$0_ZQdxb_9~Vnt^XeZK4@q%iPF^Y z@P2@8^flh-&!*>WCq(zOsnJY*%N~uE%OL8G8SDK#{@zq6pl+b?#}`I0%5xuL`#;dF zg7hq9HrqMX`LPP>1fS$Ojf^)d(7d zaR)Y^&t}I$yCW%}Z?AAIWCY11JyPm}{vk}S5xr7B5xnu&p6KlC{M-@!Llo;KRBTv# z>0OxvW!MdH@z22I=d#jnZG}(pYT}=zy}!YyqH+?wZkJF`4Yl zwWnX;(Z}I zG4i}U+M$`>n=ryTaqapVu?r92wwpI_184mIT4Q|o_F3}_zZUAD Hn-Ks2;C|N^ literal 0 HcmV?d00001 diff --git a/theme/css/pygments/native.css b/theme/css/pygments/native.css new file mode 100644 index 000000000..03b9f830e --- /dev/null +++ b/theme/css/pygments/native.css @@ -0,0 +1 @@ +.highlight pre .hll{background-color:#404040}.highlight pre,.highlighttable pre{background:#202020;color:#d0d0d0}.highlight pre .c{color:#999999;font-style:italic}.highlight pre .err{color:#a61717;background-color:#e3d2d2}.highlight pre .g{color:#d0d0d0}.highlight pre .k{color:#6ab825;font-weight:bold}.highlight pre .l{color:#d0d0d0}.highlight pre .n{color:#d0d0d0}.highlight pre .o{color:#d0d0d0}.highlight pre .x{color:#d0d0d0}.highlight pre .p{color:#d0d0d0}.highlight pre .cm{color:#999999;font-style:italic}.highlight pre .cp{color:#cd2828;font-weight:bold}.highlight pre .c1{color:#999999;font-style:italic}.highlight pre .cs{color:#e50808;font-weight:bold;background-color:#520000}.highlight pre .gd{color:#d22323}.highlight pre .ge{color:#d0d0d0;font-style:italic}.highlight pre .gr{color:#d22323}.highlight pre .gh{color:#ffffff;font-weight:bold}.highlight pre .gi{color:#589819}.highlight pre .go{color:#cccccc}.highlight pre .gp{color:#aaaaaa}.highlight pre .gs{color:#d0d0d0;font-weight:bold}.highlight pre .gu{color:#ffffff;text-decoration:underline}.highlight pre .gt{color:#d22323}.highlight pre .kc{color:#6ab825;font-weight:bold}.highlight pre .kd{color:#6ab825;font-weight:bold}.highlight pre .kn{color:#6ab825;font-weight:bold}.highlight pre .kp{color:#6ab825}.highlight pre .kr{color:#6ab825;font-weight:bold}.highlight pre .kt{color:#6ab825;font-weight:bold}.highlight pre .ld{color:#d0d0d0}.highlight pre .m{color:#3677a9}.highlight pre .s{color:#ed9d13}.highlight pre .na{color:#bbbbbb}.highlight pre .nb{color:#24909d}.highlight pre .nc{color:#447fcf;text-decoration:underline}.highlight pre .no{color:#40ffff}.highlight pre .nd{color:#ffa500}.highlight pre .ni{color:#d0d0d0}.highlight pre .ne{color:#bbbbbb}.highlight pre .nf{color:#447fcf}.highlight pre .nl{color:#d0d0d0}.highlight pre .nn{color:#447fcf;text-decoration:underline}.highlight pre .nx{color:#d0d0d0}.highlight pre .py{color:#d0d0d0}.highlight pre .nt{color:#6ab825;font-weight:bold}.highlight pre .nv{color:#40ffff}.highlight pre .ow{color:#6ab825;font-weight:bold}.highlight pre .w{color:#666666}.highlight pre .mf{color:#3677a9}.highlight pre .mh{color:#3677a9}.highlight pre .mi{color:#3677a9}.highlight pre .mo{color:#3677a9}.highlight pre .sb{color:#ed9d13}.highlight pre .sc{color:#ed9d13}.highlight pre .sd{color:#ed9d13}.highlight pre .s2{color:#ed9d13}.highlight pre .se{color:#ed9d13}.highlight pre .sh{color:#ed9d13}.highlight pre .si{color:#ed9d13}.highlight pre .sx{color:#ffa500}.highlight pre .sr{color:#ed9d13}.highlight pre .s1{color:#ed9d13}.highlight pre .ss{color:#ed9d13}.highlight pre .bp{color:#24909d}.highlight pre .vc{color:#40ffff}.highlight pre .vg{color:#40ffff}.highlight pre .vi{color:#40ffff}.highlight pre .il{color:#3677a9} \ No newline at end of file diff --git a/theme/css/pygments/native.css.gz b/theme/css/pygments/native.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..6350f151f92d1b520665b8f160a473dcad9f8d5c GIT binary patch literal 464 zcmV;>0Wba^iwFP!000021D%xJZsITyg*Z#|gOvd%#W3>^Nul;JWed}yk58=b8S_f{lAPVLEtl_(~NQ*rUSZyVf zj7Yo7&%qq#{T**gmj4UpU5!B9I3tO`0EZUrJFtHS`$w=ZUZc}17N0`0l9f0KB8@*} zm?bJt%7h;BlUG&GG-X5+I)H$rB63+9Wovp9wSKer=s5F2S9Ykz19b~k^Mk|i@3JUmW zmmzv;NYJ)R*KT)3!D+4Bx<^(rrMb6!2Aatz(98hKs-&VJ+U51KtY}3{W!R;Vvt%qP z3dmd4@%%|kTaCu5LicO$!>0h8-1h$y0H^i`Iy}0h>ZP)%dO)MNc zvYkRT@!#j9t4P}8(zLV01ybL~=NzA}#D&NU>Hl0*8HnOS%IHr-346$mt`+~lwAAJ_ zdOP)pvFQ0t+*7=dUjBE4N@y`%!awbFI$je;G4nrN-f+^M=s7xg7oF*{1m&W42Wt{A zrXwQR=y-HI#w>Zln@k_|>Ifwu-KqZx`Dy<*Hyp>l~^Vz;qm9LSGknyg$@0TV=G zH|4w+_{B{qmix27UVs84SUdp<4$z0lo7`&+wr(!rG!l+T!TS31vMNwjyiq;y;k*ej zNepp9D-@}QBY%(*Y~}q%fz=wYufDZVbB#*Pa9i%c=j#m5*9W(judnj%=N0N!xl&S- zNf31{92g?wA9YCqE$(hl?=QI z=BR0IplSC6FNfKta`;7zXm?9QsUHI!?8Y12<|RC#M6omRN;$~!c3A42sW%Mu+|qqJZ2ZOl+6jEFTedg;tRVPk z;CrJd_!4i^|3Iz-HDjUoghxl54~3swM)28di@hzs1Oq$}7qPNwH$8e7y~%A;X|&ba zrw%?%DNR!xpEMVs_#0OQ_6TfY3Yk7d*>}Du(Nedgy@MY9Dzvt@R%h7`@Oeq`h|_9| zZDzw7I%C^Rj_@io%X^VKK3>j`zWzdLihs$@)-w_VT(t`jK2C((w^7H}|GudH0vt@n IxzG^+0G^DlP5=M^ literal 0 HcmV?d00001 diff --git a/theme/css/pygments/perldoc.css b/theme/css/pygments/perldoc.css new file mode 100644 index 000000000..1121f7366 --- /dev/null +++ b/theme/css/pygments/perldoc.css @@ -0,0 +1,59 @@ +.highlight pre .hll { background-color: #ffffcc } +.highlight pre, .highlighttable pre { background: #eeeedd; } +.highlight pre .c { color: #228B22 } /* Comment */ +.highlight pre .err { color: #a61717; background-color: #e3d2d2 } /* Error */ +.highlight pre .k { color: #8B008B; font-weight: bold } /* Keyword */ +.highlight pre .cm { color: #228B22 } /* Comment.Multiline */ +.highlight pre .cp { color: #1e889b } /* Comment.Preproc */ +.highlight pre .c1 { color: #228B22 } /* Comment.Single */ +.highlight pre .cs { color: #8B008B; font-weight: bold } /* Comment.Special */ +.highlight pre .gd { color: #aa0000 } /* Generic.Deleted */ +.highlight pre .ge { font-style: italic } /* Generic.Emph */ +.highlight pre .gr { color: #aa0000 } /* Generic.Error */ +.highlight pre .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight pre .gi { color: #00aa00 } /* Generic.Inserted */ +.highlight pre .go { color: #888888 } /* Generic.Output */ +.highlight pre .gp { color: #555555 } /* Generic.Prompt */ +.highlight pre .gs { font-weight: bold } /* Generic.Strong */ +.highlight pre .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight pre .gt { color: #aa0000 } /* Generic.Traceback */ +.highlight pre .kc { color: #8B008B; font-weight: bold } /* Keyword.Constant */ +.highlight pre .kd { color: #8B008B; font-weight: bold } /* Keyword.Declaration */ +.highlight pre .kn { color: #8B008B; font-weight: bold } /* Keyword.Namespace */ +.highlight pre .kp { color: #8B008B; font-weight: bold } /* Keyword.Pseudo */ +.highlight pre .kr { color: #8B008B; font-weight: bold } /* Keyword.Reserved */ +.highlight pre .kt { color: #a7a7a7; font-weight: bold } /* Keyword.Type */ +.highlight pre .m { color: #B452CD } /* Literal.Number */ +.highlight pre .s { color: #CD5555 } /* Literal.String */ +.highlight pre .na { color: #658b00 } /* Name.Attribute */ +.highlight pre .nb { color: #658b00 } /* Name.Builtin */ +.highlight pre .nc { color: #008b45; font-weight: bold } /* Name.Class */ +.highlight pre .no { color: #00688B } /* Name.Constant */ +.highlight pre .nd { color: #707a7c } /* Name.Decorator */ +.highlight pre .ne { color: #008b45; font-weight: bold } /* Name.Exception */ +.highlight pre .nf { color: #008b45 } /* Name.Function */ +.highlight pre .nn { color: #008b45; text-decoration: underline } /* Name.Namespace */ +.highlight pre .nt { color: #8B008B; font-weight: bold } /* Name.Tag */ +.highlight pre .nv { color: #00688B } /* Name.Variable */ +.highlight pre .ow { color: #8B008B } /* Operator.Word */ +.highlight pre .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight pre .mf { color: #B452CD } /* Literal.Number.Float */ +.highlight pre .mh { color: #B452CD } /* Literal.Number.Hex */ +.highlight pre .mi { color: #B452CD } /* Literal.Number.Integer */ +.highlight pre .mo { color: #B452CD } /* Literal.Number.Oct */ +.highlight pre .sb { color: #CD5555 } /* Literal.String.Backtick */ +.highlight pre .sc { color: #CD5555 } /* Literal.String.Char */ +.highlight pre .sd { color: #CD5555 } /* Literal.String.Doc */ +.highlight pre .s2 { color: #CD5555 } /* Literal.String.Double */ +.highlight pre .se { color: #CD5555 } /* Literal.String.Escape */ +.highlight pre .sh { color: #1c7e71; font-style: italic } /* Literal.String.Heredoc */ +.highlight pre .si { color: #CD5555 } /* Literal.String.Interpol */ +.highlight pre .sx { color: #cb6c20 } /* Literal.String.Other */ +.highlight pre .sr { color: #1c7e71 } /* Literal.String.Regex */ +.highlight pre .s1 { color: #CD5555 } /* Literal.String.Single */ +.highlight pre .ss { color: #CD5555 } /* Literal.String.Symbol */ +.highlight pre .bp { color: #658b00 } /* Name.Builtin.Pseudo */ +.highlight pre .vc { color: #00688B } /* Name.Variable.Class */ +.highlight pre .vg { color: #00688B } /* Name.Variable.Global */ +.highlight pre .vi { color: #00688B } /* Name.Variable.Instance */ +.highlight pre .il { color: #B452CD } /* Literal.Number.Integer.Long */ diff --git a/theme/css/pygments/perldoc.css.gz b/theme/css/pygments/perldoc.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..c2dd22883f690ca3fb554bda7763409601f9e7d0 GIT binary patch literal 831 zcmV-F1Hk+riwFP!000021C^KGPunmM$KUr?MA{n~q0MNU!PDCEOWObe8qbb%Bo>Yx z*-mLS@xRYW>2TI_ab5KRsh_X!&fhzmxMW4i?bk%Lf+#LIkN!j%q0fbqjmQtFVAm;p7yH7{2C7{-$@PlvJ47v!j(x2ZMBa8a+v24qu@C(Mgm^p0722!0JV+ z98;my?mXgO4L6K40VrKN^bpeYTh^y<71T;nlpTJs^F0#<$G6qtx&KqEfil7|xgvLu zg$(Rkvlk#hF&fW-g8{UDMQfREYi(8>P9kOqXSC0sRdtEN>Vu8FhhLNq*>dT?TY-(( zC6L^f6qRE=xi*wOdnGg|UkRjp8r|x{H;t(qv?B`FKcjB-(OV^}8b|e}@cxYNjgp>( z8#m^#`rS8Kxub;UgR^{4ghJcwXfxBjyE&dop$)-D&2zrL-W(_=iWnvZDk=7tye1Xs z+UAW4*82^P%3uszx()XYBNNl+5O9?k6*#2#>Fu zDg(67-9a~-zxT(6v<~<9Q4j|mkJ4=8$M#I(@5X{zW6*F#whNs$%-#s7MFj1Qku*CV zd27~b%{b8-RgyiWahgtDY=`rO>-@>U9vgK?>v3rui1##k$uNLdut|2-f6H z4c)24kDh0W3ufI~gAcYU@ndPb!JBsV6x4n3IhO==R8@uvT*4B?Sr~pL3>5ejsAQPL z4Mh{sS4bzyF1RrF17(d4!i#iF#8;|!igejb9O7JPJT^|hT1SZ2% z@6+!;)k{#2ds1UzfwlfnwM1XAdg*A;Y)q2@s&QjV&po5Iazh2~tVL0m>tR?H{ztvm zfeNcC!>f?h0r%F9C&Yq=3^xCzwJ3u43obMKACUzM61eJaKYZFTzSp#gf4)7C{{q!N J)7efB005_+nUDYg literal 0 HcmV?d00001 diff --git a/theme/css/pygments/solarizeddark.css b/theme/css/pygments/solarizeddark.css new file mode 100644 index 000000000..27e281f38 --- /dev/null +++ b/theme/css/pygments/solarizeddark.css @@ -0,0 +1,70 @@ +.highlight pre .hll { background-color: #ffffcc } +.highlight pre, .highlighttable pre { background: #002b36; color: #839496 } +.highlight pre .c { color: #586e75; font-style: italic } /* Comment */ +.highlight pre .err { color: #dc322f } /* Error */ +.highlight pre .g { color: #839496 } /* Generic */ +.highlight pre .k { color: #859900 } /* Keyword */ +.highlight pre .l { color: #839496 } /* Literal */ +.highlight pre .n { color: #93a1a1 } /* Name */ +.highlight pre .o { color: #839496 } /* Operator */ +.highlight pre .x { color: #839496 } /* Other */ +.highlight pre .p { color: #839496 } /* Punctuation */ +.highlight pre .cm { color: #586e75; font-style: italic } /* Comment.Multiline */ +.highlight pre .cp { color: #586e75; font-style: italic } /* Comment.Preproc */ +.highlight pre .c1 { color: #586e75; font-style: italic } /* Comment.Single */ +.highlight pre .cs { color: #586e75; font-style: italic } /* Comment.Special */ +.highlight pre .gd { color: #839496 } /* Generic.Deleted */ +.highlight pre .ge { color: #839496 } /* Generic.Emph */ +.highlight pre .gr { color: #839496 } /* Generic.Error */ +.highlight pre .gh { color: #839496 } /* Generic.Heading */ +.highlight pre .gi { color: #839496 } /* Generic.Inserted */ +.highlight pre .go { color: #839496 } /* Generic.Output */ +.highlight pre .gp { color: #839496 } /* Generic.Prompt */ +.highlight pre .gs { color: #839496 } /* Generic.Strong */ +.highlight pre .gu { color: #839496 } /* Generic.Subheading */ +.highlight pre .gt { color: #839496 } /* Generic.Traceback */ +.highlight pre .kc { color: #859900 } /* Keyword.Constant */ +.highlight pre .kd { color: #859900 } /* Keyword.Declaration */ +.highlight pre .kn { color: #cb4b16 } /* Keyword.Namespace */ +.highlight pre .kp { color: #cb4b16 } /* Keyword.Pseudo */ +.highlight pre .kr { color: #859900 } /* Keyword.Reserved */ +.highlight pre .kt { color: #859900 } /* Keyword.Type */ +.highlight pre .ld { color: #839496 } /* Literal.Date */ +.highlight pre .m { color: #2aa198 } /* Literal.Number */ +.highlight pre .s { color: #2aa198 } /* Literal.String */ +.highlight pre .na { color: #839496 } /* Name.Attribute */ +.highlight pre .nb { color: #268bd2 } /* Name.Builtin */ +.highlight pre .nc { color: #268bd2 } /* Name.Class */ +.highlight pre .no { color: #b58900 } /* Name.Constant */ +.highlight pre .nd { color: #cb4b16 } /* Name.Decorator */ +.highlight pre .ni { color: #cb4b16 } /* Name.Entity */ +.highlight pre .ne { color: #cb4b16 } /* Name.Exception */ +.highlight pre .nf { color: #268bd2 } /* Name.Function */ +.highlight pre .nl { color: #839496 } /* Name.Label */ +.highlight pre .nn { color: #b58900 } /* Name.Namespace */ +.highlight pre .nx { color: #839496 } /* Name.Other */ +.highlight pre .py { color: #268bd2 } /* Name.Property */ +.highlight pre .nt { color: #859900 } /* Name.Tag */ +.highlight pre .nv { color: #cb4b16 } /* Name.Variable */ +.highlight pre .ow { color: #859900 } /* Operator.Word */ +.highlight pre .w { color: #002b36 } /* Text.Whitespace */ +.highlight pre .mf { color: #2aa198 } /* Literal.Number.Float */ +.highlight pre .mh { color: #2aa198 } /* Literal.Number.Hex */ +.highlight pre .mi { color: #2aa198 } /* Literal.Number.Integer */ +.highlight pre .mo { color: #2aa198 } /* Literal.Number.Oct */ +.highlight pre .sb { color: #2aa198 } /* Literal.String.Backtick */ +.highlight pre .sc { color: #2aa198 } /* Literal.String.Char */ +.highlight pre .sd { color: #2aa198 } /* Literal.String.Doc */ +.highlight pre .s2 { color: #2aa198 } /* Literal.String.Double */ +.highlight pre .se { color: #cb4b16 } /* Literal.String.Escape */ +.highlight pre .sh { color: #2aa198 } /* Literal.String.Heredoc */ +.highlight pre .si { color: #cb4b16 } /* Literal.String.Interpol */ +.highlight pre .sx { color: #2aa198 } /* Literal.String.Other */ +.highlight pre .sr { color: #2aa198 } /* Literal.String.Regex */ +.highlight pre .s1 { color: #2aa198 } /* Literal.String.Single */ +.highlight pre .ss { color: #2aa198 } /* Literal.String.Symbol */ +.highlight pre .bp { color: #268bd2; font-weight: bold } /* Name.Builtin.Pseudo */ +.highlight pre .vc { color: #268bd2 } /* Name.Variable.Class */ +.highlight pre .vg { color: #268bd2 } /* Name.Variable.Global */ +.highlight pre .vi { color: #268bd2 } /* Name.Variable.Instance */ +.highlight pre .il { color: #2aa198 } /* Literal.Number.Integer.Long */ diff --git a/theme/css/pygments/solarizeddark.css.gz b/theme/css/pygments/solarizeddark.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..558ad4a7aaf21f8e222d3cb305428d2fb65ab3be GIT binary patch literal 825 zcmV-91IGLxiwFP!000021D%&oZyGTW#qa$TEAa7r$>+b=gCfMa6CL2_V=`slsR(urPDzlzMh^Z zGbQbzu`2;*3AaRWS447jkc?DWg0#uO(Vh%w-4M#yaj!SqLYG=AjUjmh*p;^iu0eu! zOCrd;iJT6Hoz52d4yzZXGYk=)RqnV2O$3I>1~NP*UDDkm_oM{u`^vM#L*-Vm_~w^B z#uk7Al?RyAlG&PAt|W%B^8NRl{-}lJf=hI_tonfBL_?(&dZ(=W0lg^SKhljGfg}s#qv~RDf1%9Y)RioLF zS1ss7tFppT(}F%(tvtJ}+t8X8fy1&b_*4@H>r6(2jD?dd9Vuxn!LxRrwZLOwf@p6h z%$otn=n3ui-}39AGnFeJrK=WtVxZ0xit3iaAHf-Hfg5aYTj1%cLJJmIxCNwRVo|Ue zojpRj!@*nbzAh;q)~1DYuJqVS5>K(~J4wG;2htiZSJLLH{Q=E-4fLYsF4R#!NEQM| zf*6Bh%@$}%doFSoI-aX_|Mig~ zbeVUA0zQAp(7^^Dr(A|s^bZ%S&=y_%x=F@!uD(~fA*Td4`66@~KZ)j>u@)P(UOda~ zX07zuGY2-o?QpyWr?9l?bKxGQ_fX4OR1lSYyOV9$fNjcp(y@iWx=BaZa1wN4?8a26*lSJ>v;VK&wdEB)(`*y Dp@@;9 literal 0 HcmV?d00001 diff --git a/theme/css/pygments/solarizedlight.css b/theme/css/pygments/solarizedlight.css new file mode 100644 index 000000000..9c0dc8ef5 --- /dev/null +++ b/theme/css/pygments/solarizedlight.css @@ -0,0 +1,70 @@ +.highlight pre .hll { background-color: #ffffcc } +.highlight pre, .highlighttable pre { background: #fdf6e3; color: #657b83 } +.highlight pre .c { color: #93a1a1; font-style: italic } /* Comment */ +.highlight pre .err { color: #dc322f } /* Error */ +.highlight pre .g { color: #657b83 } /* Generic */ +.highlight pre .k { color: #859900 } /* Keyword */ +.highlight pre .l { color: #657b83 } /* Literal */ +.highlight pre .n { color: #586e75 } /* Name */ +.highlight pre .o { color: #657b83 } /* Operator */ +.highlight pre .x { color: #657b83 } /* Other */ +.highlight pre .p { color: #657b83 } /* Punctuation */ +.highlight pre .cm { color: #93a1a1; font-style: italic } /* Comment.Multiline */ +.highlight pre .cp { color: #93a1a1; font-style: italic } /* Comment.Preproc */ +.highlight pre .c1 { color: #93a1a1; font-style: italic } /* Comment.Single */ +.highlight pre .cs { color: #93a1a1; font-style: italic } /* Comment.Special */ +.highlight pre .gd { color: #657b83 } /* Generic.Deleted */ +.highlight pre .ge { color: #657b83 } /* Generic.Emph */ +.highlight pre .gr { color: #657b83 } /* Generic.Error */ +.highlight pre .gh { color: #657b83 } /* Generic.Heading */ +.highlight pre .gi { color: #657b83 } /* Generic.Inserted */ +.highlight pre .go { color: #657b83 } /* Generic.Output */ +.highlight pre .gp { color: #657b83 } /* Generic.Prompt */ +.highlight pre .gs { color: #657b83 } /* Generic.Strong */ +.highlight pre .gu { color: #657b83 } /* Generic.Subheading */ +.highlight pre .gt { color: #657b83 } /* Generic.Traceback */ +.highlight pre .kc { color: #859900 } /* Keyword.Constant */ +.highlight pre .kd { color: #859900 } /* Keyword.Declaration */ +.highlight pre .kn { color: #cb4b16 } /* Keyword.Namespace */ +.highlight pre .kp { color: #cb4b16 } /* Keyword.Pseudo */ +.highlight pre .kr { color: #859900 } /* Keyword.Reserved */ +.highlight pre .kt { color: #859900 } /* Keyword.Type */ +.highlight pre .ld { color: #657b83 } /* Literal.Date */ +.highlight pre .m { color: #2aa198 } /* Literal.Number */ +.highlight pre .s { color: #2aa198 } /* Literal.String */ +.highlight pre .na { color: #657b83 } /* Name.Attribute */ +.highlight pre .nb { color: #268bd2 } /* Name.Builtin */ +.highlight pre .nc { color: #268bd2 } /* Name.Class */ +.highlight pre .no { color: #b58900 } /* Name.Constant */ +.highlight pre .nd { color: #cb4b16 } /* Name.Decorator */ +.highlight pre .ni { color: #cb4b16 } /* Name.Entity */ +.highlight pre .ne { color: #cb4b16 } /* Name.Exception */ +.highlight pre .nf { color: #268bd2 } /* Name.Function */ +.highlight pre .nl { color: #657b83 } /* Name.Label */ +.highlight pre .nn { color: #b58900 } /* Name.Namespace */ +.highlight pre .nx { color: #657b83 } /* Name.Other */ +.highlight pre .py { color: #268bd2 } /* Name.Property */ +.highlight pre .nt { color: #859900 } /* Name.Tag */ +.highlight pre .nv { color: #cb4b16 } /* Name.Variable */ +.highlight pre .ow { color: #859900 } /* Operator.Word */ +.highlight pre .w { color: #fdf6e3 } /* Text.Whitespace */ +.highlight pre .mf { color: #2aa198 } /* Literal.Number.Float */ +.highlight pre .mh { color: #2aa198 } /* Literal.Number.Hex */ +.highlight pre .mi { color: #2aa198 } /* Literal.Number.Integer */ +.highlight pre .mo { color: #2aa198 } /* Literal.Number.Oct */ +.highlight pre .sb { color: #2aa198 } /* Literal.String.Backtick */ +.highlight pre .sc { color: #2aa198 } /* Literal.String.Char */ +.highlight pre .sd { color: #2aa198 } /* Literal.String.Doc */ +.highlight pre .s2 { color: #2aa198 } /* Literal.String.Double */ +.highlight pre .se { color: #cb4b16 } /* Literal.String.Escape */ +.highlight pre .sh { color: #2aa198 } /* Literal.String.Heredoc */ +.highlight pre .si { color: #cb4b16 } /* Literal.String.Interpol */ +.highlight pre .sx { color: #2aa198 } /* Literal.String.Other */ +.highlight pre .sr { color: #2aa198 } /* Literal.String.Regex */ +.highlight pre .s1 { color: #2aa198 } /* Literal.String.Single */ +.highlight pre .ss { color: #2aa198 } /* Literal.String.Symbol */ +.highlight pre .bp { color: #268bd2; font-weight: bold } /* Name.Builtin.Pseudo */ +.highlight pre .vc { color: #268bd2 } /* Name.Variable.Class */ +.highlight pre .vg { color: #268bd2 } /* Name.Variable.Global */ +.highlight pre .vi { color: #268bd2 } /* Name.Variable.Instance */ +.highlight pre .il { color: #2aa198 } /* Literal.Number.Integer.Long */ diff --git a/theme/css/pygments/solarizedlight.css.gz b/theme/css/pygments/solarizedlight.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..4110033d9bfea78b822109e9fabe6bfe8ccdcbed GIT binary patch literal 825 zcmV-91IGLxiwFP!000021D%&&Z`v>v#ozZSBJHhO(*lD+`?Lc6qjfE6(fVvVm&C%c zBio^%Y2SSglr0_CPTER5RN{AhZ6BX|i8G#N!hLL1Xo%uWi0D^D30tOGl`=VIN+^9E zeO|af#-iV!;y1*X=->aAPyt(+x+g_zk^}aALpz{@iqkt=|4 z+ze?FwrM;80Txj2rO?1m^CCk*-2{3cRn|b>07=~8p)7A;Z>0h4+pB7TA4*%4Xm+GU z13J?xFL2Z}pifpS&u+^mw4_VGqN;`wMd=+%2aOIpgHEG9B@G;YL+v26id&UhV}JmSYsWcFtU7jN zJEhgM|30^+n@f(fqzmdrY2L@j$LGsY#?wr=k0pf$5@kY=pCqPinrckVSK_;d$#;LuZT&++^d@v&L;gqr+ZE&O4oL&Pl9v0`4D2#he%=ctZAI(j9aMYu=UCN@KLtV|7-~ zT5tmrw6g}0Og%}r)1zmnANzQR&{SX&8IU~C9I*G5 z_dbI@Tly(r=wsm)wYZDsfn^_U2B@H@2!iWAm6F+#TCOBUVtMY>bIym9$C)q?@;oNOyy0tLcdQoq;s=vHrzF02#ACB6e0SKR1HFH7#a85(Yq z)yxCYNKj)?nW~l5q>S_rsn3r4j0K&&g1LNA!LdT}%6Q^QucYO6f$IFW#8_=*S)=9* zicrqVNu4*Ym*YuD=}&Nz{^?*#c~4`&hq$^auD%?|d7U&ojxFkBuEn_7FW~AH8NPzO zQan3mbr$@fny+pX*a-XH+=9&v8@&ZaZlATerdXKUgJd12?x2Un-C{tmrpFcZ)%_m5 zWv&1Ok0qb%T7#l%p(vVadA2k27Un3C?@YXt7E(O6a<77ynz6qWg~<&2O1JLUG&@001W=zq9}V literal 0 HcmV?d00001 diff --git a/theme/css/pygments/trac.css b/theme/css/pygments/trac.css new file mode 100644 index 000000000..7f8d24d5f --- /dev/null +++ b/theme/css/pygments/trac.css @@ -0,0 +1,60 @@ +.highlight pre .hll { background-color: #ffffcc } +.highlight pre, .highlighttable pre { background: #ffffff; } +.highlight pre .c { color: #999988; font-style: italic } /* Comment */ +.highlight pre .err { color: #a61717; background-color: #e3d2d2 } /* Error */ +.highlight pre .k { font-weight: bold } /* Keyword */ +.highlight pre .o { font-weight: bold } /* Operator */ +.highlight pre .cm { color: #999988; font-style: italic } /* Comment.Multiline */ +.highlight pre .cp { color: #999999; font-weight: bold } /* Comment.Preproc */ +.highlight pre .c1 { color: #999988; font-style: italic } /* Comment.Single */ +.highlight pre .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */ +.highlight pre .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ +.highlight pre .ge { font-style: italic } /* Generic.Emph */ +.highlight pre .gr { color: #aa0000 } /* Generic.Error */ +.highlight pre .gh { color: #999999 } /* Generic.Heading */ +.highlight pre .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ +.highlight pre .go { color: #888888 } /* Generic.Output */ +.highlight pre .gp { color: #555555 } /* Generic.Prompt */ +.highlight pre .gs { font-weight: bold } /* Generic.Strong */ +.highlight pre .gu { color: #aaaaaa } /* Generic.Subheading */ +.highlight pre .gt { color: #aa0000 } /* Generic.Traceback */ +.highlight pre .kc { font-weight: bold } /* Keyword.Constant */ +.highlight pre .kd { font-weight: bold } /* Keyword.Declaration */ +.highlight pre .kn { font-weight: bold } /* Keyword.Namespace */ +.highlight pre .kp { font-weight: bold } /* Keyword.Pseudo */ +.highlight pre .kr { font-weight: bold } /* Keyword.Reserved */ +.highlight pre .kt { color: #445588; font-weight: bold } /* Keyword.Type */ +.highlight pre .m { color: #009999 } /* Literal.Number */ +.highlight pre .s { color: #bb8844 } /* Literal.String */ +.highlight pre .na { color: #008080 } /* Name.Attribute */ +.highlight pre .nb { color: #999999 } /* Name.Builtin */ +.highlight pre .nc { color: #445588; font-weight: bold } /* Name.Class */ +.highlight pre .no { color: #008080 } /* Name.Constant */ +.highlight pre .ni { color: #800080 } /* Name.Entity */ +.highlight pre .ne { color: #990000; font-weight: bold } /* Name.Exception */ +.highlight pre .nf { color: #990000; font-weight: bold } /* Name.Function */ +.highlight pre .nn { color: #555555 } /* Name.Namespace */ +.highlight pre .nt { color: #000080 } /* Name.Tag */ +.highlight pre .nv { color: #008080 } /* Name.Variable */ +.highlight pre .ow { font-weight: bold } /* Operator.Word */ +.highlight pre .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight pre .mf { color: #009999 } /* Literal.Number.Float */ +.highlight pre .mh { color: #009999 } /* Literal.Number.Hex */ +.highlight pre .mi { color: #009999 } /* Literal.Number.Integer */ +.highlight pre .mo { color: #009999 } /* Literal.Number.Oct */ +.highlight pre .sb { color: #bb8844 } /* Literal.String.Backtick */ +.highlight pre .sc { color: #bb8844 } /* Literal.String.Char */ +.highlight pre .sd { color: #bb8844 } /* Literal.String.Doc */ +.highlight pre .s2 { color: #bb8844 } /* Literal.String.Double */ +.highlight pre .se { color: #bb8844 } /* Literal.String.Escape */ +.highlight pre .sh { color: #bb8844 } /* Literal.String.Heredoc */ +.highlight pre .si { color: #bb8844 } /* Literal.String.Interpol */ +.highlight pre .sx { color: #bb8844 } /* Literal.String.Other */ +.highlight pre .sr { color: #808000 } /* Literal.String.Regex */ +.highlight pre .s1 { color: #bb8844 } /* Literal.String.Single */ +.highlight pre .ss { color: #bb8844 } /* Literal.String.Symbol */ +.highlight pre .bp { color: #999999 } /* Name.Builtin.Pseudo */ +.highlight pre .vc { color: #008080 } /* Name.Variable.Class */ +.highlight pre .vg { color: #008080 } /* Name.Variable.Global */ +.highlight pre .vi { color: #008080 } /* Name.Variable.Instance */ +.highlight pre .il { color: #009999 } /* Literal.Number.Integer.Long */ diff --git a/theme/css/pygments/trac.css.gz b/theme/css/pygments/trac.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..255ebdd4afaa50856ed22f92b3f63ce82e46ddbc GIT binary patch literal 800 zcmV+*1K<1~iwFP!000021D#h*Q`;~Qz4upmrZ=V-LPIg+R6_WewuFI9Im`0K)piQ~Rfz6V7cU$sn3aVGgxfakz+>A)MJ$ zqoadpD9aLri4Kn5(STANBJ!A$(9!DM?Yf-hU+c#6-^V z>~u(W0Vh;I8R6IwdDc1NxQziW>CDEO_67tfM&m2sU;usK95yeEq_x41%Bn!YjzCG1 z(-zRD#=Lk}Fc*0XB(vp4u`H|-S=Q9TrM(jxl&=)B!<)3>g2%O~YP41Jt~yWKaG?)M zmK6@w{ubMypNx{8TGY-9G_eJ((_%*{&7KFGC_Z$6Z=_1o0`YpjRmH)LDLnf#{pXC zWzFm`K%ZRD@S3$;Lr%0tndGkQcPUqNEhsrYc9A1tm|3AXa4x;Ju3fp0mJ}+V_{H>t zY}d7*UNYgauok(qhlJTOWTzSvf=g$ah5lOMEW4-HMj zIEDqm%_~;ZrLLr==|)S{4wXK;Zt9V%n|8YbcAXy~@`9pHbW~EV$EOwa^%AAs~ zhwVe&zGMU98+rfkXfB|Y=_`14zkSX~r^VW5LyKh0lif=z1k)6E_ z1dQoHYvnVND^q~~;Xp5lRe~4f>&3-NajiEsMj1@4+|XJBmmtA#h9R>)Qm~?1<0mX% zeH0iX0;}9`2Zjm^kpbkE)_}dQdhZ_{jYi%3ciOMu@Xap*YuvdCP(TNO`$jU?P{)b?R$Q6d%+y zFpi&RS!~D+DlMCU00(IKlz>!x8;W&H0jGpJD)_K+vuUj>RIGn}`gi0%7`!XhMlypL z>BO#p7CyzO93RNNU!;z`mKIDXCH;CoX`dl{*Erpv22$$JZ{yymTH|UqbT(nNM`u(Z zCry7_X|X*vc@@dB8|?P@crqE{PlhsBxi{){EN*t$SV`+B?$om)aKIfr0Vb#k+Qv+N zxH7C5@+&X2+J}$QdQ0f{7Men#sM&%(fUnFsUYRquW!FzjjRq`=c$df~)S+Mdia(%1+?w`>pXaH-e1p^(rLGmRQ#l@;?he#14Z)gtq)Djz8 z;`dc9VrY0IS;jE$+kXBDq}s*ECyLkoJXV9hsp0KRj16e70aNKFwCp)BJ-!Cwe1e6` zo-2P>gGsGllDr|i5Q?H#psvycu3&-UJPp5=4oduhYn3K($IuPfJjvs-bKe0S$Gf0q zX&U2-;x=2P@e_QAwTG#A6R154X$n)zDBhfGm8Nh728zHoc$&nj7K~P?zt}~ZM$j&- zNfUVR<%m|aJxCJ>|FN((QDIrr2k`g(6_)x|wQka>(#GCKX*=ylQ9EhRj&n(@ zIJR|m259R4K2yd9>$x!!4?%pscgdN9cdG4ldm2SHer-Q8djCe1^>`Mp8r$uQ$oRjyfo<43OF-D(>|X z!J(C;Ehj2JD${DZte>I|q!OC4?RJ2THR0TcjfNRhL1-m+{uT_Nl6*0^j>O#_uVDM> zERIUo$Mz0H9Xltvo90WjgCoyI>!III`ix11{c{ zSLM~teNh2W=nQ!+A9a{GYzTnq0hW><;Zymzr+u*iQTHi)mXdgUME(hN%WWQNSk zn0JC)e7?@}*Yqm#m$`hb=#AtdFJa-ONKCxTOSl7sI&m8+FXEGlm(G&w(XaC|?n4Lk jC@?SJ0a{p-0cBo5`tQN}%!JKQ?ViGK@M!{TDF^@n;+Og* literal 0 HcmV?d00001 diff --git a/theme/css/pygments/zenburn.css b/theme/css/pygments/zenburn.css new file mode 100644 index 000000000..f295cf2cd --- /dev/null +++ b/theme/css/pygments/zenburn.css @@ -0,0 +1,70 @@ +.highlight pre .hll { background-color: #2f2f2f } +.highlight pre, .highlighttable pre { background: #3f3f3f; color: #dcdccc } +.highlight pre .c { color: #7f9f7f } /* Comment */ +.highlight pre .err { color: #e37170; background-color: #3d3535 } /* Error */ +.highlight pre .g { color: #dcdccc } /* Generic */ +.highlight pre .k { color: #f0dfaf; font-weight: bold } /* Keyword */ +.highlight pre .l { color: #dcdccc } /* Literal */ +.highlight pre .n { color: #dcdccc } /* Name */ +.highlight pre .o { color: #dcdccc } /* Operator */ +.highlight pre .x { color: #dcdccc } /* Other */ +.highlight pre .p { color: #dcdccc } /* Punctuation */ +.highlight pre .cm { color: #6CA0A3 } /* Comment.Multiline */ +.highlight pre .cp { color: #94bff3 } /* Comment.Preproc */ +.highlight pre .c1 { color: #7f9f7f } /* Comment.Single */ +.highlight pre .cs { color: #7f9f7f } /* Comment.Special */ +.highlight pre .gd { color: #dcdccc } /* Generic.Deleted */ +.highlight pre .ge { color: #dcdccc } /* Generic.Emph */ +.highlight pre .gr { color: #dcdccc } /* Generic.Error */ +.highlight pre .gh { color: #dcdccc } /* Generic.Heading */ +.highlight pre .gi { color: #dcdccc } /* Generic.Inserted */ +.highlight pre .go { color: #dcdccc } /* Generic.Output */ +.highlight pre .gp { color: #dcdccc } /* Generic.Prompt */ +.highlight pre .gs { color: #dcdccc } /* Generic.Strong */ +.highlight pre .gu { color: #dcdccc } /* Generic.Subheading */ +.highlight pre .gt { color: #dcdccc } /* Generic.Traceback */ +.highlight pre .kc { color: #bfebbf } /* Keyword.Constant */ +.highlight pre .kd { color: #f0dfaf; font-weight: bold } /* Keyword.Declaration */ +.highlight pre .kn { color: #f0dfaf; font-weight: bold } /* Keyword.Namespace */ +.highlight pre .kp { color: #dcdccc; font-weight: bold } /* Keyword.Pseudo */ +.highlight pre .kr { color: #dcdccc; font-weight: bold } /* Keyword.Reserved */ +.highlight pre .kt { color: #7cb8bb } /* Keyword.Type */ +.highlight pre .ld { color: #dcdccc } /* Literal.Date */ +.highlight pre .m { color: #8cd0d3 } /* Literal.Number */ +.highlight pre .s { color: #cc9393 } /* Literal.String */ +.highlight pre .na { color: #dcdccc } /* Name.Attribute */ +.highlight pre .nb { color: #93e0e3 } /* Name.Builtin */ +.highlight pre .nc { color: #7cb8bb } /* Name.Class */ +.highlight pre .no { color: #dcdccc } /* Name.Constant */ +.highlight pre .nd { color: #efef8f } /* Name.Decorator */ +.highlight pre .ni { color: #dcdccc } /* Name.Entity */ +.highlight pre .ne { color: #ebed9f; font-weight: bold } /* Name.Exception */ +.highlight pre .nf { color: #8cd0d3 } /* Name.Function */ +.highlight pre .nl { color: #f0dfaf } /* Name.Label */ +.highlight pre .nn { color: #dcdccc } /* Name.Namespace */ +.highlight pre .nx { color: #dcdccc } /* Name.Other */ +.highlight pre .py { color: #dcdccc } /* Name.Property */ +.highlight pre .nt { color: #dcdccc } /* Name.Tag */ +.highlight pre .nv { color: #dfaf8f } /* Name.Variable */ +.highlight pre .ow { color: #f0dfaf; font-weight: bold } /* Operator.Word */ +.highlight pre .w { color: #dcdccc } /* Text.Whitespace */ +.highlight pre .mf { color: #dcdccc } /* Literal.Number.Float */ +.highlight pre .mh { color: #dcdccc } /* Literal.Number.Hex */ +.highlight pre .mi { color: #dcdccc } /* Literal.Number.Integer */ +.highlight pre .mo { color: #dcdccc } /* Literal.Number.Oct */ +.highlight pre .sb { color: #cc9393 } /* Literal.String.Backtick */ +.highlight pre .sc { color: #cc9393 } /* Literal.String.Char */ +.highlight pre .sd { color: #cc9393 } /* Literal.String.Doc */ +.highlight pre .s2 { color: #cc9393 } /* Literal.String.Double */ +.highlight pre .se { color: #cc9393 } /* Literal.String.Escape */ +.highlight pre .sh { color: #cc9393 } /* Literal.String.Heredoc */ +.highlight pre .si { color: #cc9393 } /* Literal.String.Interpol */ +.highlight pre .sx { color: #cc9393 } /* Literal.String.Other */ +.highlight pre .sr { color: #cc9393 } /* Literal.String.Regex */ +.highlight pre .s1 { color: #cc9393 } /* Literal.String.Single */ +.highlight pre .ss { color: #cc9393 } /* Literal.String.Symbol */ +.highlight pre .bp { color: #f0dfaf; font-weight: bold } /* Name.Builtin.Pseudo */ +.highlight pre .vc { color: #efef8f } /* Name.Variable.Class */ +.highlight pre .vg { color: #dcdccc } /* Name.Variable.Global */ +.highlight pre .vi { color: #dcdccc } /* Name.Variable.Instance */ +.highlight pre .il { color: #8cd0d3 } /* Literal.Number.Integer.Long */ diff --git a/theme/css/pygments/zenburn.css.gz b/theme/css/pygments/zenburn.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..a577412e6f33d93c79177d6a5fafa7d1ad01a233 GIT binary patch literal 851 zcmV-Z1FZZXiwFP!000021C^IwZ__Xo#ozf9k$6Ka>jAx;(4P<#OW%ethge@wgJH?NfmfD&F5pb)8dRX#tyWyoOyEh(72qGW4~Z_{3e^~ zrUB)$H^&DE7!yEHj8Dd+k5~Z(FHVcoC%u_5+F)u`ptXC;4e$jN7{M@P5g_G=m&6xZ zYUPd|Ve`;=Mz!QmDqms!s13(dWMttR;lL1yAu590k_NEnb>#WG*0133{aD2qR|5*P z5n$da<~rhpRv5;bfcr4L7+n;5C!c@oq!Usov@#a1I(bja@)D>%A3N#yT>f3C zO5)4fA+!Z1@WZQkzti$dkl+CIN(BS#tZ8c$G(%wYUep8R6%g(>3T4Frd#x;(Sgm>h zzUy4up~+CS1L)l7ro~Y^fPQyIN2=|H(2mwUo8<=Z2SXTa;tkEBFhFSul$LwRlTWp> zj^IhU;4e-x?@}g-iC*i4db#8#zHIA@LAK z%%{5_Y$99j`p5@@`+gZhepmJ^@q-w#oqw^(>oGkBchgw@GcqYYMqd2^RxbZp`|BIs z=cXKpnWwnOKTA!}ThY{M0#~p?agl~!D+d*R=8aC1xMOGmmL|ns{>e93C-5d~S(?VQ zCV2AlH2xAFSna!1yo=b;LYl(NGJ^LjTc;^pfdL*VL!?P;ykJ_5Mvh&jX+#smnlyoX zZ%5S8_9RUp{wKoPM1^%j@m-*8db)&twr4O}vcB%Oi@JEYh`j7u2HO2oPEk%;R d^|pcIVJBqLY_toT{O0dK{|AZYRVfk?005{~qu2ld literal 0 HcmV?d00001 diff --git a/theme/css/w3.css b/theme/css/w3.css new file mode 100644 index 000000000..c95485a4f --- /dev/null +++ b/theme/css/w3.css @@ -0,0 +1,231 @@ +/* W3.CSS 4.10 February 2018 by Jan Egil and Borge Refsnes */ +html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit} +/* Extract from normalize.css by Nicolas Gallagher and Jonathan Neal git.io/normalize */ +html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0} +article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block} +audio,canvas,progress,video{display:inline-block}progress{vertical-align:baseline} +audio:not([controls]){display:none;height:0}[hidden],template{display:none} +a{background-color:transparent;-webkit-text-decoration-skip:objects} +a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted} +dfn{font-style:italic}mark{background:#ff0;color:#000} +small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} +sub{bottom:-0.25em}sup{top:-0.5em}figure{margin:1em 40px}img{border-style:none}svg:not(:root){overflow:hidden} +code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0;overflow:visible} +button,input,select,textarea{font:inherit;margin:0}optgroup{font-weight:bold} +button,input{overflow:visible}button,select{text-transform:none} +button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button} +button::-moz-focus-inner, [type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner{border-style:none;padding:0} +button:-moz-focusring, [type=button]:-moz-focusring, [type=reset]:-moz-focusring, [type=submit]:-moz-focusring{outline:1px dotted ButtonText} +fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em} +legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto} +[type=checkbox],[type=radio]{padding:0} +[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto} +[type=search]{-webkit-appearance:textfield;outline-offset:-2px} +[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none} +::-webkit-input-placeholder{color:inherit;opacity:0.54} +::-webkit-file-upload-button{-webkit-appearance:button;font:inherit} +/* End extract */ +html,body{font-family:Verdana,sans-serif;font-size:15px;line-height:1.5}html{overflow-x:hidden} +h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px}.w3-serif{font-family:serif} +h1,h2,h3,h4,h5,h6{font-family:"Segoe UI",Arial,sans-serif;font-weight:400;margin:10px 0}.w3-wide{letter-spacing:4px} +hr{border:0;border-top:1px solid #eee;margin:20px 0} +.w3-image{max-width:100%;height:auto}img{vertical-align:middle}a{color:inherit} +.w3-table,.w3-table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.w3-table-all{border:1px solid #ccc} +.w3-bordered tr,.w3-table-all tr{border-bottom:1px solid #ddd}.w3-striped tbody tr:nth-child(even){background-color:#f1f1f1} +.w3-table-all tr:nth-child(odd){background-color:#fff}.w3-table-all tr:nth-child(even){background-color:#f1f1f1} +.w3-hoverable tbody tr:hover,.w3-ul.w3-hoverable li:hover{background-color:#ccc}.w3-centered tr th,.w3-centered tr td{text-align:center} +.w3-table td,.w3-table th,.w3-table-all td,.w3-table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top} +.w3-table th:first-child,.w3-table td:first-child,.w3-table-all th:first-child,.w3-table-all td:first-child{padding-left:16px} +.w3-btn,.w3-button{border:none;display:inline-block;padding:8px 16px;vertical-align:middle;overflow:hidden;text-decoration:none;color:inherit;background-color:inherit;text-align:center;cursor:pointer;white-space:nowrap} +.w3-btn:hover{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)} +.w3-btn,.w3-button{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none} +.w3-disabled,.w3-btn:disabled,.w3-button:disabled{cursor:not-allowed;opacity:0.3}.w3-disabled *,:disabled *{pointer-events:none} +.w3-btn.w3-disabled:hover,.w3-btn:disabled:hover{box-shadow:none} +.w3-badge,.w3-tag{background-color:#000;color:#fff;display:inline-block;padding-left:8px;padding-right:8px;text-align:center}.w3-badge{border-radius:50%} +.w3-ul{list-style-type:none;padding:0;margin:0}.w3-ul li{padding:8px 16px;border-bottom:1px solid #ddd}.w3-ul li:last-child{border-bottom:none} +.w3-tooltip,.w3-display-container{position:relative}.w3-tooltip .w3-text{display:none}.w3-tooltip:hover .w3-text{display:inline-block} +.w3-ripple:active{opacity:0.5}.w3-ripple{transition:opacity 0s} +.w3-input{padding:8px;display:block;border:none;border-bottom:1px solid #ccc;width:100%} +.w3-select{padding:9px 0;width:100%;border:none;border-bottom:1px solid #ccc} +.w3-dropdown-click,.w3-dropdown-hover{position:relative;display:inline-block;cursor:pointer} +.w3-dropdown-hover:hover .w3-dropdown-content{display:block} +.w3-dropdown-hover:first-child,.w3-dropdown-click:hover{background-color:#ccc;color:#000} +.w3-dropdown-hover:hover > .w3-button:first-child,.w3-dropdown-click:hover > .w3-button:first-child{background-color:#ccc;color:#000} +.w3-dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0;z-index:1} +.w3-check,.w3-radio{width:24px;height:24px;position:relative;top:6px} +.w3-sidebar{height:100%;width:200px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto} +.w3-bar-block .w3-dropdown-hover,.w3-bar-block .w3-dropdown-click{width:100%} +.w3-bar-block .w3-dropdown-hover .w3-dropdown-content,.w3-bar-block .w3-dropdown-click .w3-dropdown-content{min-width:100%} +.w3-bar-block .w3-dropdown-hover .w3-button,.w3-bar-block .w3-dropdown-click .w3-button{width:100%;text-align:left;padding:8px 16px} +.w3-main,#main{transition:margin-left .4s} +.w3-modal{z-index:3;display:none;padding-top:100px;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)} +.w3-modal-content{margin:auto;background-color:#fff;position:relative;padding:0;outline:0;width:600px} +.w3-bar{width:100%;overflow:hidden}.w3-center .w3-bar{display:inline-block;width:auto} +.w3-bar .w3-bar-item{padding:8px 16px;float:left;width:auto;border:none;display:block;outline:0} +.w3-bar .w3-dropdown-hover,.w3-bar .w3-dropdown-click{position:static;float:left} +.w3-bar .w3-button{white-space:normal} +.w3-bar-block .w3-bar-item{width:100%;display:block;padding:8px 16px;text-align:left;border:none;white-space:normal;float:none;outline:0} +.w3-bar-block.w3-center .w3-bar-item{text-align:center}.w3-block{display:block;width:100%} +.w3-responsive{display:block;overflow-x:auto} +.w3-container:after,.w3-container:before,.w3-panel:after,.w3-panel:before,.w3-row:after,.w3-row:before,.w3-row-padding:after,.w3-row-padding:before, +.w3-cell-row:before,.w3-cell-row:after,.w3-clear:after,.w3-clear:before,.w3-bar:before,.w3-bar:after{content:"";display:table;clear:both} +.w3-col,.w3-half,.w3-third,.w3-twothird,.w3-threequarter,.w3-quarter{float:left;width:100%} +.w3-col.s1{width:8.33333%}.w3-col.s2{width:16.66666%}.w3-col.s3{width:24.99999%}.w3-col.s4{width:33.33333%} +.w3-col.s5{width:41.66666%}.w3-col.s6{width:49.99999%}.w3-col.s7{width:58.33333%}.w3-col.s8{width:66.66666%} +.w3-col.s9{width:74.99999%}.w3-col.s10{width:83.33333%}.w3-col.s11{width:91.66666%}.w3-col.s12{width:99.99999%} +@media (min-width:601px){.w3-col.m1{width:8.33333%}.w3-col.m2{width:16.66666%}.w3-col.m3,.w3-quarter{width:24.99999%}.w3-col.m4,.w3-third{width:33.33333%} +.w3-col.m5{width:41.66666%}.w3-col.m6,.w3-half{width:49.99999%}.w3-col.m7{width:58.33333%}.w3-col.m8,.w3-twothird{width:66.66666%} +.w3-col.m9,.w3-threequarter{width:74.99999%}.w3-col.m10{width:83.33333%}.w3-col.m11{width:91.66666%}.w3-col.m12{width:99.99999%}} +@media (min-width:993px){.w3-col.l1{width:8.33333%}.w3-col.l2{width:16.66666%}.w3-col.l3{width:24.99999%}.w3-col.l4{width:33.33333%} +.w3-col.l5{width:41.66666%}.w3-col.l6{width:49.99999%}.w3-col.l7{width:58.33333%}.w3-col.l8{width:66.66666%} +.w3-col.l9{width:74.99999%}.w3-col.l10{width:83.33333%}.w3-col.l11{width:91.66666%}.w3-col.l12{width:99.99999%}} +.w3-content{max-width:980px;margin:auto}.w3-rest{overflow:hidden} +.w3-cell-row{display:table;width:100%}.w3-cell{display:table-cell} +.w3-cell-top{vertical-align:top}.w3-cell-middle{vertical-align:middle}.w3-cell-bottom{vertical-align:bottom} +.w3-hide{display:none!important}.w3-show-block,.w3-show{display:block!important}.w3-show-inline-block{display:inline-block!important} +@media (max-width:600px){.w3-modal-content{margin:0 10px;width:auto!important}.w3-modal{padding-top:30px} +.w3-dropdown-hover.w3-mobile .w3-dropdown-content,.w3-dropdown-click.w3-mobile .w3-dropdown-content{position:relative} +.w3-hide-small{display:none!important}.w3-mobile{display:block;width:100%!important}.w3-bar-item.w3-mobile,.w3-dropdown-hover.w3-mobile,.w3-dropdown-click.w3-mobile{text-align:center} +.w3-dropdown-hover.w3-mobile,.w3-dropdown-hover.w3-mobile .w3-btn,.w3-dropdown-hover.w3-mobile .w3-button,.w3-dropdown-click.w3-mobile,.w3-dropdown-click.w3-mobile .w3-btn,.w3-dropdown-click.w3-mobile .w3-button{width:100%}} +@media (max-width:768px){.w3-modal-content{width:500px}.w3-modal{padding-top:50px}} +@media (min-width:993px){.w3-modal-content{width:900px}.w3-hide-large{display:none!important}.w3-sidebar.w3-collapse{display:block!important}} +@media (max-width:992px) and (min-width:601px){.w3-hide-medium{display:none!important}} +@media (max-width:992px){.w3-sidebar.w3-collapse{display:none}.w3-main{margin-left:0!important;margin-right:0!important}} +.w3-top,.w3-bottom{position:fixed;width:100%;z-index:1}.w3-top{top:0}.w3-bottom{bottom:0} +.w3-overlay{position:fixed;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:2} +.w3-display-topleft{position:absolute;left:0;top:0}.w3-display-topright{position:absolute;right:0;top:0} +.w3-display-bottomleft{position:absolute;left:0;bottom:0}.w3-display-bottomright{position:absolute;right:0;bottom:0} +.w3-display-middle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)} +.w3-display-left{position:absolute;top:50%;left:0%;transform:translate(0%,-50%);-ms-transform:translate(-0%,-50%)} +.w3-display-right{position:absolute;top:50%;right:0%;transform:translate(0%,-50%);-ms-transform:translate(0%,-50%)} +.w3-display-topmiddle{position:absolute;left:50%;top:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} +.w3-display-bottommiddle{position:absolute;left:50%;bottom:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} +.w3-display-container:hover .w3-display-hover{display:block}.w3-display-container:hover span.w3-display-hover{display:inline-block}.w3-display-hover{display:none} +.w3-display-position{position:absolute} +.w3-circle{border-radius:50%} +.w3-round-small{border-radius:2px}.w3-round,.w3-round-medium{border-radius:4px}.w3-round-large{border-radius:8px}.w3-round-xlarge{border-radius:16px}.w3-round-xxlarge{border-radius:32px} +.w3-row-padding,.w3-row-padding>.w3-half,.w3-row-padding>.w3-third,.w3-row-padding>.w3-twothird,.w3-row-padding>.w3-threequarter,.w3-row-padding>.w3-quarter,.w3-row-padding>.w3-col{padding:0 8px} +.w3-container,.w3-panel{padding:0.01em 16px}.w3-panel{margin-top:16px;margin-bottom:16px} +.w3-code,.w3-codespan{font-family:Consolas,"courier new";font-size:16px} +.w3-code{width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word} +.w3-codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%} +.w3-card,.w3-card-2{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)} +.w3-card-4,.w3-hover-shadow:hover{box-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19)} +.w3-spin{animation:w3-spin 2s infinite linear}@keyframes w3-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}} +.w3-animate-fading{animation:fading 10s infinite}@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}} +.w3-animate-opacity{animation:opac 0.8s}@keyframes opac{from{opacity:0} to{opacity:1}} +.w3-animate-top{position:relative;animation:animatetop 0.4s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}} +.w3-animate-left{position:relative;animation:animateleft 0.4s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}} +.w3-animate-right{position:relative;animation:animateright 0.4s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}} +.w3-animate-bottom{position:relative;animation:animatebottom 0.4s}@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}} +.w3-animate-zoom {animation:animatezoom 0.6s}@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}} +.w3-animate-input{transition:width 0.4s ease-in-out}.w3-animate-input:focus{width:100%!important} +.w3-opacity,.w3-hover-opacity:hover{opacity:0.60}.w3-opacity-off,.w3-hover-opacity-off:hover{opacity:1} +.w3-opacity-max{opacity:0.25}.w3-opacity-min{opacity:0.75} +.w3-greyscale-max,.w3-grayscale-max,.w3-hover-greyscale:hover,.w3-hover-grayscale:hover{filter:grayscale(100%)} +.w3-greyscale,.w3-grayscale{filter:grayscale(75%)}.w3-greyscale-min,.w3-grayscale-min{filter:grayscale(50%)} +.w3-sepia{filter:sepia(75%)}.w3-sepia-max,.w3-hover-sepia:hover{filter:sepia(100%)}.w3-sepia-min{filter:sepia(50%)} +.w3-tiny{font-size:10px!important}.w3-small{font-size:12px!important}.w3-medium{font-size:15px!important}.w3-large{font-size:18px!important} +.w3-xlarge{font-size:24px!important}.w3-xxlarge{font-size:36px!important}.w3-xxxlarge{font-size:48px!important}.w3-jumbo{font-size:64px!important} +.w3-left-align{text-align:left!important}.w3-right-align{text-align:right!important}.w3-justify{text-align:justify!important}.w3-center{text-align:center!important} +.w3-border-0{border:0!important}.w3-border{border:1px solid #ccc!important} +.w3-border-top{border-top:1px solid #ccc!important}.w3-border-bottom{border-bottom:1px solid #ccc!important} +.w3-border-left{border-left:1px solid #ccc!important}.w3-border-right{border-right:1px solid #ccc!important} +.w3-topbar{border-top:6px solid #ccc!important}.w3-bottombar{border-bottom:6px solid #ccc!important} +.w3-leftbar{border-left:6px solid #ccc!important}.w3-rightbar{border-right:6px solid #ccc!important} +.w3-section,.w3-code{margin-top:16px!important;margin-bottom:16px!important} +.w3-margin{margin:16px!important}.w3-margin-top{margin-top:16px!important}.w3-margin-bottom{margin-bottom:16px!important} +.w3-margin-left{margin-left:16px!important}.w3-margin-right{margin-right:16px!important} +.w3-padding-small{padding:4px 8px!important}.w3-padding{padding:8px 16px!important}.w3-padding-large{padding:12px 24px!important} +.w3-padding-16{padding-top:16px!important;padding-bottom:16px!important}.w3-padding-24{padding-top:24px!important;padding-bottom:24px!important} +.w3-padding-32{padding-top:32px!important;padding-bottom:32px!important}.w3-padding-48{padding-top:48px!important;padding-bottom:48px!important} +.w3-padding-64{padding-top:64px!important;padding-bottom:64px!important} +.w3-left{float:left!important}.w3-right{float:right!important} +.w3-button:hover{color:#000!important;background-color:#ccc!important} +.w3-transparent,.w3-hover-none:hover{background-color:transparent!important} +.w3-hover-none:hover{box-shadow:none!important} +/* Colors */ +.w3-amber,.w3-hover-amber:hover{color:#000!important;background-color:#ffc107!important} +.w3-aqua,.w3-hover-aqua:hover{color:#000!important;background-color:#00ffff!important} +.w3-blue,.w3-hover-blue:hover{color:#fff!important;background-color:#2196F3!important} +.w3-light-blue,.w3-hover-light-blue:hover{color:#000!important;background-color:#87CEEB!important} +.w3-brown,.w3-hover-brown:hover{color:#fff!important;background-color:#795548!important} +.w3-cyan,.w3-hover-cyan:hover{color:#000!important;background-color:#00bcd4!important} +.w3-blue-grey,.w3-hover-blue-grey:hover,.w3-blue-gray,.w3-hover-blue-gray:hover{color:#fff!important;background-color:#607d8b!important} +.w3-green,.w3-hover-green:hover{color:#fff!important;background-color:#4CAF50!important} +.w3-light-green,.w3-hover-light-green:hover{color:#000!important;background-color:#8bc34a!important} +.w3-indigo,.w3-hover-indigo:hover{color:#fff!important;background-color:#3f51b5!important} +.w3-khaki,.w3-hover-khaki:hover{color:#000!important;background-color:#f0e68c!important} +.w3-lime,.w3-hover-lime:hover{color:#000!important;background-color:#cddc39!important} +.w3-orange,.w3-hover-orange:hover{color:#000!important;background-color:#ff9800!important} +.w3-deep-orange,.w3-hover-deep-orange:hover{color:#fff!important;background-color:#ff5722!important} +.w3-pink,.w3-hover-pink:hover{color:#fff!important;background-color:#e91e63!important} +.w3-purple,.w3-hover-purple:hover{color:#fff!important;background-color:#9c27b0!important} +.w3-deep-purple,.w3-hover-deep-purple:hover{color:#fff!important;background-color:#673ab7!important} +.w3-red,.w3-hover-red:hover{color:#fff!important;background-color:#f44336!important} +.w3-sand,.w3-hover-sand:hover{color:#000!important;background-color:#fdf5e6!important} +.w3-teal,.w3-hover-teal:hover{color:#fff!important;background-color:#009688!important} +.w3-yellow,.w3-hover-yellow:hover{color:#000!important;background-color:#ffeb3b!important} +.w3-white,.w3-hover-white:hover{color:#000!important;background-color:#fff!important} +.w3-black,.w3-hover-black:hover{color:#fff!important;background-color:#000!important} +.w3-grey,.w3-hover-grey:hover,.w3-gray,.w3-hover-gray:hover{color:#000!important;background-color:#9e9e9e!important} +.w3-light-grey,.w3-hover-light-grey:hover,.w3-light-gray,.w3-hover-light-gray:hover{color:#000!important;background-color:#f1f1f1!important} +.w3-dark-grey,.w3-hover-dark-grey:hover,.w3-dark-gray,.w3-hover-dark-gray:hover{color:#fff!important;background-color:#616161!important} +.w3-pale-red,.w3-hover-pale-red:hover{color:#000!important;background-color:#ffdddd!important} +.w3-pale-green,.w3-hover-pale-green:hover{color:#000!important;background-color:#ddffdd!important} +.w3-pale-yellow,.w3-hover-pale-yellow:hover{color:#000!important;background-color:#ffffcc!important} +.w3-pale-blue,.w3-hover-pale-blue:hover{color:#000!important;background-color:#ddffff!important} +.w3-text-amber,.w3-hover-text-amber:hover{color:#ffc107!important} +.w3-text-aqua,.w3-hover-text-aqua:hover{color:#00ffff!important} +.w3-text-blue,.w3-hover-text-blue:hover{color:#2196F3!important} +.w3-text-light-blue,.w3-hover-text-light-blue:hover{color:#87CEEB!important} +.w3-text-brown,.w3-hover-text-brown:hover{color:#795548!important} +.w3-text-cyan,.w3-hover-text-cyan:hover{color:#00bcd4!important} +.w3-text-blue-grey,.w3-hover-text-blue-grey:hover,.w3-text-blue-gray,.w3-hover-text-blue-gray:hover{color:#607d8b!important} +.w3-text-green,.w3-hover-text-green:hover{color:#4CAF50!important} +.w3-text-light-green,.w3-hover-text-light-green:hover{color:#8bc34a!important} +.w3-text-indigo,.w3-hover-text-indigo:hover{color:#3f51b5!important} +.w3-text-khaki,.w3-hover-text-khaki:hover{color:#b4aa50!important} +.w3-text-lime,.w3-hover-text-lime:hover{color:#cddc39!important} +.w3-text-orange,.w3-hover-text-orange:hover{color:#ff9800!important} +.w3-text-deep-orange,.w3-hover-text-deep-orange:hover{color:#ff5722!important} +.w3-text-pink,.w3-hover-text-pink:hover{color:#e91e63!important} +.w3-text-purple,.w3-hover-text-purple:hover{color:#9c27b0!important} +.w3-text-deep-purple,.w3-hover-text-deep-purple:hover{color:#673ab7!important} +.w3-text-red,.w3-hover-text-red:hover{color:#f44336!important} +.w3-text-sand,.w3-hover-text-sand:hover{color:#fdf5e6!important} +.w3-text-teal,.w3-hover-text-teal:hover{color:#009688!important} +.w3-text-yellow,.w3-hover-text-yellow:hover{color:#d2be0e!important} +.w3-text-white,.w3-hover-text-white:hover{color:#fff!important} +.w3-text-black,.w3-hover-text-black:hover{color:#000!important} +.w3-text-grey,.w3-hover-text-grey:hover,.w3-text-gray,.w3-hover-text-gray:hover{color:#757575!important} +.w3-text-light-grey,.w3-hover-text-light-grey:hover,.w3-text-light-gray,.w3-hover-text-light-gray:hover{color:#f1f1f1!important} +.w3-text-dark-grey,.w3-hover-text-dark-grey:hover,.w3-text-dark-gray,.w3-hover-text-dark-gray:hover{color:#3a3a3a!important} +.w3-border-amber,.w3-hover-border-amber:hover{border-color:#ffc107!important} +.w3-border-aqua,.w3-hover-border-aqua:hover{border-color:#00ffff!important} +.w3-border-blue,.w3-hover-border-blue:hover{border-color:#2196F3!important} +.w3-border-light-blue,.w3-hover-border-light-blue:hover{border-color:#87CEEB!important} +.w3-border-brown,.w3-hover-border-brown:hover{border-color:#795548!important} +.w3-border-cyan,.w3-hover-border-cyan:hover{border-color:#00bcd4!important} +.w3-border-blue-grey,.w3-hover-border-blue-grey:hover,.w3-border-blue-gray,.w3-hover-border-blue-gray:hover{border-color:#607d8b!important} +.w3-border-green,.w3-hover-border-green:hover{border-color:#4CAF50!important} +.w3-border-light-green,.w3-hover-border-light-green:hover{border-color:#8bc34a!important} +.w3-border-indigo,.w3-hover-border-indigo:hover{border-color:#3f51b5!important} +.w3-border-khaki,.w3-hover-border-khaki:hover{border-color:#f0e68c!important} +.w3-border-lime,.w3-hover-border-lime:hover{border-color:#cddc39!important} +.w3-border-orange,.w3-hover-border-orange:hover{border-color:#ff9800!important} +.w3-border-deep-orange,.w3-hover-border-deep-orange:hover{border-color:#ff5722!important} +.w3-border-pink,.w3-hover-border-pink:hover{border-color:#e91e63!important} +.w3-border-purple,.w3-hover-border-purple:hover{border-color:#9c27b0!important} +.w3-border-deep-purple,.w3-hover-border-deep-purple:hover{border-color:#673ab7!important} +.w3-border-red,.w3-hover-border-red:hover{border-color:#f44336!important} +.w3-border-sand,.w3-hover-border-sand:hover{border-color:#fdf5e6!important} +.w3-border-teal,.w3-hover-border-teal:hover{border-color:#009688!important} +.w3-border-yellow,.w3-hover-border-yellow:hover{border-color:#ffeb3b!important} +.w3-border-white,.w3-hover-border-white:hover{border-color:#fff!important} +.w3-border-black,.w3-hover-border-black:hover{border-color:#000!important} +.w3-border-grey,.w3-hover-border-grey:hover,.w3-border-gray,.w3-hover-border-gray:hover{border-color:#9e9e9e!important} +.w3-border-light-grey,.w3-hover-border-light-grey:hover,.w3-border-light-gray,.w3-hover-border-light-gray:hover{border-color:#f1f1f1!important} +.w3-border-dark-grey,.w3-hover-border-dark-grey:hover,.w3-border-dark-gray,.w3-hover-border-dark-gray:hover{border-color:#616161!important} +.w3-border-pale-red,.w3-hover-border-pale-red:hover{border-color:#ffe7e7!important}.w3-border-pale-green,.w3-hover-border-pale-green:hover{border-color:#e7ffe7!important} +.w3-border-pale-yellow,.w3-hover-border-pale-yellow:hover{border-color:#ffffcc!important}.w3-border-pale-blue,.w3-hover-border-pale-blue:hover{border-color:#e7ffff!important} \ No newline at end of file diff --git a/theme/css/w3.css.gz b/theme/css/w3.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..04f4b217f65f10df756ee5d25cdf442e3c207005 GIT binary patch literal 5189 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 literal 0 HcmV?d00001 diff --git a/top_level_statement_csharp_9.html b/top_level_statement_csharp_9.html new file mode 100644 index 000000000..273e2bbca --- /dev/null +++ b/top_level_statement_csharp_9.html @@ -0,0 +1,513 @@ + + + + + + + + Top Level Statement in C# 9 - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Top Level Statement in C# 9

      +
      + +
      +
      + +
      +

      Hey folks, I'm coming along to tell you a few things about the new feature of C# 9. Every time you want to start a new project, you always have the same Main File, with the same structure. At the next version of C# (version 9), we'll have a new feature called Top Level Statement. With that, we'll be able to code our app without any namespace/class/public void static main structure. Take a look at the code below.

      +
      using System;
      +
      +Console.WriteLine("Hello World!");
      +
      + +

      It looks pretty simple, but with this, you can play around with your code, and even code a simple/tiny Web API. To start playing with the new features, firstly download the .net 5 SDK and change your .csproj file to target the .net 5 and language preview like bellow.

      +
      <Project Sdk="Microsoft.NET.Sdk">
      +  <PropertyGroup>
      +    <OutputType>Exe</OutputType>
      +    <TargetFramework>net5.0</TargetFramework>
      +    <LangVersion>preview</LangVersion>
      +  </PropertyGroup>
      +</Project>
      +
      + +

      And you're ready to play with the awesome features available in the preview. Let's code a way to get the image of the day from NASA API and print the Picture of the Day. No awesome code here, it's really a way to show how simple a simple call could be. After here, why not save the image in a file? Maybe send the file over telegram?

      +
      using System;
      +using System.Net.Http;
      +using System.Text.Json;
      +
      +var API = "https://api.nasa.gov/planetary/apod?hd=true&api_key=DEMO_KEY";
      +var cli = new HttpClient();
      +
      +var response = await cli.GetAsync(API);
      +var data = JsonSerializer.Deserialize<NasaApi>(await response.Content.ReadAsStringAsync());
      +
      +Console.WriteLine(data.Url);
      +
      + +

      That's it for today folks. Keep an eye open for the awesome features C# 9 will bring to us, there's plenty more features already available.

      +
      + + +
      +
      +

      Translations:

      + +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/top_level_statement_csharp_9.html.gz b/top_level_statement_csharp_9.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..b2537e84b7ae8380620759f1e15356c31a2a6132 GIT binary patch literal 5289 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 literal 0 HcmV?d00001 diff --git a/using_git_hooks_easy_your_life.html b/using_git_hooks_easy_your_life.html new file mode 100644 index 000000000..54bd46ca2 --- /dev/null +++ b/using_git_hooks_easy_your_life.html @@ -0,0 +1,515 @@ + + + + + + + + Using git hooks to easy your life - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Using git hooks to easy your life

      +
      + +
      +
      + +
      +

      Hey folks, it's been a time since my last post. In the meantime, I moved to another state, changed job, and started learning new kinds of stuff. Today I would like to share one thing that I usually do with my small git projects. Git has many cool features, git hooks were one of them. I'll talk about the pre-commit hook today.

      +

      Let's say that, for some reason, you don't have a CI tool/server running after every commit and you want to enforce that every developer runs the tests before every commit? Git pre-commit to the rescue. You can code the hooks with shell, ruby, python, and I could be wrong, but even PHP would work. pre-commit is a client-side hook (we have server side too) and he's located inside the .git/hooks folder. Let's jump to the code... Create a file called 'pre-commit' inside that folder with the following code.

      +
      #!/bin/bash
      +npm test # assuming you're using it inside a nodeJS project
      +
      +

      Don't forget to make the script executable!! Now break your test and try to commit. That's easy but can save you from breaking the tests at the main CI/Travis/Codeship/etc and being notified by email :). Why not even validate the lint of your project or check if the coverage doesn't fall? Does your team/company have a patter for commit messages? No problem, there is a hook called commit-msg that you can use to validate your message.

      +

      +
      + + +
      +
      +

      Translations:

      +
        +
      +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/using_git_hooks_easy_your_life.html.gz b/using_git_hooks_easy_your_life.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..76b3366de1af40f9083369cb5432f88c00744343 GIT binary patch literal 5011 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 literal 0 HcmV?d00001 diff --git a/zabbix-icmp-pinger-processes-more-than-75.html b/zabbix-icmp-pinger-processes-more-than-75.html new file mode 100644 index 000000000..f130faf19 --- /dev/null +++ b/zabbix-icmp-pinger-processes-more-than-75.html @@ -0,0 +1,524 @@ + + + + + + + + Zabbix ICMP pinger processes more than 75% - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Zabbix ICMP pinger processes more than 75%

      +
      + +
      +
      + +
      +

      So your monitoring sytems have grown and your zabbix started loggin "Zabbix icmp pinger processes more than 75% busy" at the dashboard.

      +

      Dashboard do zabbix avisando sobre o erro

      +

      All you have to do is open your config file (/etc/zabbix/zabbix_server.conf) and find the a tag named StartPingers. It'll be commented by default. Uncomment it and set it's value to something like 3 or 4. It should solve your problem.

      +
      ### Option: StartPingers
      +#       Number of pre-forked instances of ICMP pingers.
      +#
      +# Mandatory: no
      +# Range: 0-1000
      +# Default:
      +StartPingers=4
      +
      + +

      How many Pingers do I need?

      +

      Well, there is no exact answer to this. If you set it too high, you'll be wasting resources. The best way to solve, it's increasing them as soon as you notice the percentage growing.

      +
      + + +
      +
      +

      Translations:

      + +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zabbix-icmp-pinger-processes-more-than-75.html.gz b/zabbix-icmp-pinger-processes-more-than-75.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..0ac3cd9bffc6adacca98eaa54dda19834c7faf59 GIT binary patch literal 4734 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 + + + + + + + Zabbix poller processes more than 75% - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Zabbix poller processes more than 75%

      +
      + +
      +
      + +
      +

      Hey folks, this is the third post about tweaking the Zabbix configurations. All changes that I've suggested here were based on a Zabbix Server with 50+ hosts. Another thing that can happen to your server, it's the poller get overwhelmed by the amount of servers that need to be polled plus the ones that are not responding. Bellow two images where you can see the log and the graphic where you can see the usage percent.

      +

      Dashboard log about the poller processes

      +

      Graph showing the utilization percent of each collector

      +

      To solve, let's go back to the zabbix_server.conf file and find two variables, StartPollers and StartPollersUnreachable. Increase them as needed. There's no magic number, you must see what works for you. But keep in mind that the StartPollersUnreachable is responsible for that host that can't be "reached" (of course) and will hold your poller more time.

      +
      ### Option: StartPollers
      +#       Number of pre-forked instances of pollers.
      +#
      +# Mandatory: no
      +# Range: 0-1000
      +# Default:
      +StartPollers=20
      +
      +#...
      +
      +### Option: StartPollersUnreachable
      +#       Number of pre-forked instances of pollers for unreachable hosts (including IPMI and Java).
      +#       At least one poller for unreachable hosts must be running if regular, IPMI or Java pollers
      +#       are started.
      +#
      +# Mandatory: no
      +# Range: 0-1000
      +# Default:
      +StartPollersUnreachable=5
      +
      + +

      After the change, restart the server and wait a few moments and take a look again at your dashboard. Bellow the effect that I've got.

      +

      Graph showing the new utilization percent of the processes after the changes

      +
      + + +
      +
      +

      Translations:

      + +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zabbix-poller-processes-more-than-75.html.gz b/zabbix-poller-processes-more-than-75.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..65f6c794f2f8d6ed072664b24b68207611a8428a GIT binary patch literal 5168 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 literal 0 HcmV?d00001 diff --git a/zabbix-running-on-low-memory-mode.html b/zabbix-running-on-low-memory-mode.html new file mode 100644 index 000000000..82c5a4d8d --- /dev/null +++ b/zabbix-running-on-low-memory-mode.html @@ -0,0 +1,554 @@ + + + + + + + + Zabbix Running on Low Memory Mode - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Zabbix Running on Low Memory Mode

      +
      + +
      +
      + +
      +

      Hey folks, another Zabbix post today. This one it's about increasing the Zabbix Server Cache. It's pretty common (if you have the default settings only) get a warning about your Zabbix value cache running on low memory mode at your dashboard or logs.

      +

      Zabbix Dashboard warning about the memory problem +Zabbix Dashboard cache graph 70% used

      +

      To solve, go back to your Zabbix config file (zabbix_server.conf) and look for the tag CacheSize. Uncomment it and set to a value bigger than 8M (8M it's the default value). In my case, we set a cache of 100M. After the change, restart the service.

      +
      ### Option: CacheSize
      +#       Size of configuration cache, in bytes.
      +#       Shared memory size for storing host, item and trigger data.
      +#
      +# Mandatory: no
      +# Range: 128K-64G
      +# Default:
      +CacheSize=100M #uncomment this line
      +
      + +

      Zabbix Dashboard resolved memory problem

      +

      See ya folks.

      +
      + + +
      +
      +

      Translations:

      + +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zabbix-running-on-low-memory-mode.html.gz b/zabbix-running-on-low-memory-mode.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..7e44f67e687488979fbfc83c19d135780aa81d7a GIT binary patch literal 4875 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 FIksFp>{}IpGuriW;Jc!{ z_obAtxhP)4%xaseVpMxqb_OT$s&D2ni@970iQJ`>43BdEnJ>AVU5wx8%vn}UO3y#p zNI~o_Rh&KytAp!;`R4|%mzmke%Lyf=W8l|eNw)5&R<>guj*8j)mP;6O;cy7 zcPf**x^Q`>G?u&G!%$JIQgU?x_?6P@(!`oisS9lu4U@o=6KJI%KUErMeNnVlIrN3v ztSNrhROY?VNWF}6o}$CUWpWb*XfE{9L1Aloxu~v_tbmzcAXx#Zw#4W3)kgpFX7ZA= zU?Mq%njQ=5C7)ax3UwY5Ovr;UV@67@YI8L^yP6$OQ;mIf#;$zWNS&0)pCZejZi@o! z?b93XB)9o!#Hs1h5lD^MqnTZ5;TUFV1NPf-Gj?MsS+pTPzv*80lcNaliZI{al&7@cz2xd6#Oe(h`a5*F zm%QZW8*4M8W+3;H8*e85a5v=Ue0KT!t9!|f&*X-@G+#fvx|ghk!4zs$tO+*c=nZyU zEGF&?UlH}~z}t|gx2n^<2~iYo}F#VpJzmlLxbMJj@MhCs*l z^cb`th~V?0$tLtGqV1Tv&?JPq!#a+AHIJe$m$N#$&+yc?I#i#~9ShuZO>huuMS&2+ zi(Sb>5Oi)~i*O$}^ev`Y#3T83F!k}y#Mj}GhBzBDeLm(UuBd?_n_5-iP8O;z_H9s; z6-2C#-BX2wyapWP@0S;^asLRpew*STa~xlX3+42RSb=A0d~+W8%n=pLR?mP)J9cZ? zc#*CUxydLT$rj4MaV1=s5KmO=GtP2<}hUAWqL?oj=?0} z=8QcbFP#vLkEl&TqSqjyBBvh1cVm2UK>X}LIErVc$4m;bZaije{WzEpM^%Su0kOxZ z#;Vdrl0pn3@vfviHijdY`j8{kQF(RtJ?(GV{$hW92~f0dx~=3ghl;~$^;4g;e-h8g zIU}d!O!HE{mG`I}-sW>*a!x)>edJ+JazwFDnHdrTvS zPh2OtnR=z0*1PFhrqcmei$_asX9FrVwkjf@tCr1a1QJJ46E6)iP@JNZ`*%TVin5B> zS4mqbNaT!9n_Tkk2h+^9Z}7s7No~_|xq7RMMa>W-(rX_cJnHrid!7AG@8EF{-y|~g zt)fSU)M3=_CNKYhc00+G`sS@_ZG99iYKze<*%bMx?k6WpiNrKDNpqr+w&x0zoTe`m z$-ox(op3uztr8?JIVo!EhDK!Q&_Bqr{`H^#koO;o7tQf`GmOP#`+Z{w(fQP}g4mah zUD9}WYCdisblZ=6X1DQSXGuR9QR^BvhVbQQ3!vL+T|%~ZDz@{HNQVN6c3{Q0gWJSQ zj*=z&x!VoRT4QJNV!lJ0Cl-`dXVR#AF-!|a`Y0+$L{W&mB*0e^F^DI#E9$(4)HoN& z`}T)L9HJS5d-(D-ZuLRM#v=KIjlr?D9lA?INs6C#wsTJw*SM8EKJ)EGn>Vg5U9qLaU(Gl($9i;ohg0O-t4ahUC$zcLtY=n%S;RzQZI z5L`huK#{w|XH)VNY<7DGq&aWXR}j&c^3hN_JQ%YqzwXwy~ChDvt(hUr0I#Xe54BvRv0O>=InhM zrQplQWIH3Wsmj7;vQzFiK&GFjuh62G-PW xG_qcgS>vTRd0AR+AlQO1>j|skZ+&SbL=;YR;hSI72ldv{{|6m$r*Xwp000OgSc3on literal 0 HcmV?d00001 diff --git a/zabbix-server-out-of-memory-crash.html b/zabbix-server-out-of-memory-crash.html new file mode 100644 index 000000000..0ed216e32 --- /dev/null +++ b/zabbix-server-out-of-memory-crash.html @@ -0,0 +1,546 @@ + + + + + + + + Zabbix Server Out of Memory - Sipmann + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +

      Zabbix Server Out of Memory

      +
      + +
      +
      + +
      +

      Do you have a crashing Zabbix Server and looking through the log /var/log/zabbix/zabbix_server.log you see the following out of memory message?

      +
      __mem_malloc: skipped 0 asked 24 skip_min 18446744073709551615 skip_max 0
      +[file:dbconfig.c,line:94] __zbx_mem_realloc(): out of memory (requested 16 bytes)
      +[file:dbconfig.c,line:94] __zbx_mem_realloc(): please increase CacheSize configuration parameter
      +
      + +

      Besides the clear solution to the error, that's a common issue on servers that have a few monitoring items on it (servers, switches, firewalls, databases, etc...). To solve, go to your zabbix_server.conf and look for the CacheSize property and set it to a higher value. Its default should be 8M. At a customer that has somewhere between 4 servers, 7 firewalls/appliances, and a few other things, a 32M did the job, but you can set up to 8G.

      +

      See ya folks.

      +
      + + +
      +
      +

      Translations:

      + +
      + +
      + +
      +
      + + + +
      + + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zabbix-server-out-of-memory-crash.html.gz b/zabbix-server-out-of-memory-crash.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..c9f2a11ba286021f0784db814e99ccdb27cb007c GIT binary patch literal 4845 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 literal 0 HcmV?d00001

      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 ~PcXAEy@`gjQH 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 z zWV&!>(bCrx?Wt)I(bze_nh1l02_mKQjlJOkN%jX70p=l|XCZ6G<+%n4Ynbqadi*fj zSTuGz-YB;00sZC(Ru+pFaON)Xf7G$0bX0JS;zA|&a+nIVaROmr1c(LQFz5Zu7~@=0 zwP4{Ns`!mtfpAyg|(nc_+CQ?auFhNnLFt8!m z_*t%JM3H}@oOM1oY(wVY9UOBg@x#>1k^BtcY^v7He=?n%cNkLop+WTUiSH}U( z7o=$&?ZVMX&;wlJvJff=7xH|HAiPH+A`>BuZe7eKmWtq}Z~ce!GDcQ*k9Eb#lNwAU zhKbP^6!}cVo5G2e;}r6_P8WO`fdae>G%CS2^Qmz1YWC9dn}gioJ38$#G;;RzJqk`v zUY5}B0r@Q{z~=5@D>{l*cJD5|-vdKog8!o}=pIV1Z$bMn6)1@H;g0U(Hto`FB{HsNKI{-!0*}&)=f0BIGRoDEHR^9_Vsd4gM@j=c7p&aP5hOIBj z#@QdDAqm4_)qUo@^9(kTvYxTx9RuZSOp&h5i3y?x#<0>7=8Tk%ieGj;cbb;EY?{8w zBGalV1P5<23HiudFYf}vJ~ld2A-~3sgRO}M{OS5ytmG-;Ide-ig0QN_$O15G_@u`dFDK zF5OQfp{z6ZFw}G#Xmm6yl}mMSv3lAUW`z)JRJ(ya-&UxLCzuNSbQ}k^% zqt7#iy=`jK#lr%_qNF~s(w6!H<;Rxc9f(ybR|r(0loA7FVS8qKJnaE-)nF9?8h>wN zdS$Hdky1P+jcacyMS~2M@eKz#2#8Iu%X?nkM=vE;ygF398Y~7jx60R?UQ#vuw&|fd{-d zY6h6lexZ6Qvh?#=j$<43-nR1~Mu~sa6 zk0JUMwutvF5}gfK>G-%}z|VmtTd|GRMCpn9WZlRiFDYu@w}B*JhohkQ+F+@(;H}Go z0O-^JN-yPQmTzbDxN8)6dm0%V(8UY#G^bs|(k))$0Os8_tr_2{e!m~Byy1P!>Y*sWtc4#$F!GRtY-o)$&i?Z}p3p_8V9Qaq5- zWczz}OVsj<_Q9>GB*-p3mnn)(C=6u>kZJ#R2sooLE!Dx)d{29&nW6d|j-(Fh?m^_( zLEV*~@DrZyx2Nxd@^l3}<#sVm*;)fh_VZP`+M2=?Sdl|#WjS5jQ z7g-lzg8wR^HFI^(g3c5$J21B=425TltpBwUFO^1jNTn&YyXWaFX_IS$%hxyhiq@vt zXIsnFKIywGOOB_{#ql+? zx8NkeGwOm(fFe5pV89U>o@~qfijr^VnDZaKVlI^8?SNpYy$mN576`%PABhArtnG}p zVN8KKUBS;gc+cb)gJeHZqPpF9C@4WTRx$kwdB>x{$FVU_7BtNKVHTw}+E)SsnyF-Z zkuNO6v=B9TM8J3OU!zlW%9vkAEVhThaJBTfz4^t=qf=b4h)p5=`L5)Le-qCjR{0JJ zuE2SY^5l_6RBEhOGR+64#d#?uKx?4L!r_2m8!8hEE1{o~$sxQW5=|t{VWb7SwzJp}p*MIBgAj1eksCy4A)QQ>laK zf6;>J4ZkN0XKj&90+5`3Y% zy(@ni!Pse}cHuqAn97=+tsVk2@C?|8HmrSttE*Wpl@*-)FI_#t7l`BW+72ybNg!4I z;D4KZx^d&9oiWHh&sDPcKmsWOhKZ8VEeF2v-+)qNMrx*dje;jX^5T4HvP3lqyN02> syaJ@S#3;4o;c1^#SVw$!oBn|fP!=}Hy*yS$HhHqa}HU``cd`5W?&qDhD_QAHaa<%||UIQ1%!odlGgoJDi zv~k=Z4v6*}piN@_?!N7fXgdKf2(;r6ZJWRC{QGJ<&gTDUoBto} zfBzTpLA4M>`v3g{v2uqXeySKCAtC1U|2bFx+lNX9TtdKF>r?_NUKi+a~|r9bhH&KWI^r9)dYCkvZia`4h@~RL#_2 ztF7Ushq|{O5QW=^d7Wr z8^5wM**)32yQ1UuyCRu8!oF=Yzq`9Ht8_O_x+U?k-5_?vMZ7 z-LBgO#@)@`9;YAP-R|A`TIPQK`FW*;++2oj)S7%y0OPR7Haa*vj5w&zP&?hn_vkG@r*&F7f%0+u&kdAO z>mT2WXM=5~Q_t3X>i;!rK)NKg!Ms;YlwqQLLc4ue&PF^Fu)$j4%ISb9mLE_kO(%J# zw&NEYIPjfPXi_lGqMEz$fB*>i7SEz)2WakJQ_Wqk0$LmO^1i7%_peWPj$G)z&shxq zf4>3Izqq?h3jC$30knwKDT&gWo!n)ud*wwlE;(e!D~U2XtwyO^nd5hfTIEtqu8V!6c}?Iv zhBgv5UcSfN2Rf;zWp=~^CfkBb8y@}73{QMfCtyc%1s8>n*zzY-C8s;MT02{zLBnU3 zScyT1IrG{{KMtg zyANE`wYg7@&M8QB7zE*j`!e#SXqr}{8MQ)Z*dSs}T1{{TxHDxgHr1NL9+@(8F2AvZ z$8TTXD5%!_Sf-hs+$tCOkYXltz!+pTkQvnkGhaBnY%vj_fwWY&kY|xpU-rVZs6Dv* z7JC~Pa>N}yvP}_l0T{*^4laiX~XvCpbdYMXQv)f{6yZWb>3C z8ZuCrO*XjD*u6wkq2}G)p3wVdxjI~4a6k7X4QhBT>q29j{)AAuRRMj+bxsnt&qi>%h_o5J`1jRazF9SOtS#`>WeuFPS&Lccjsi4-Md^U>GY;f|6kSj7M)| z_d*+QcM?wZTo2XKjl2G$21EOqZmMD%4@$s<3NV-Ntg<5o>84tlpHDBV<1VEp);NFg z&Yn&+*R$i1YdFWp3JehwN)KA?JlqnTY5Zc23Vtug#^gy>>rj2{`}-x%5UQYWYuY=* z{he+a^q%f?eaBD9Vcj8d!tfUd!&ZrQrq(HHmF0tRT<$KtMb z*`MQl&g{Z&}SL?7olWk25VWmB>A@$3}#7-^?)v)XgaGkANSmNL7PTFN1~?`P3LuosQE7R$gGK%Q!jEgBwYTsY8jU5$Z>NOpqq?3jj`zE;qQQ`*AQSsv z`THj$jOHIP?6F+BR;ER>PWQxgx3{%5pe=+i#`5b;Y6%iXb(pU?nxKGSCe|p~ap}LQ zI=Bu_>r|9pWNmtEahSv>ra_^~*WQT&YVLgwrIcH%Tplr6dt&X)cevLiHd0@7@mUy= z1gvdQpi`hd6(J6@txdb7yV9&CL6g`qiRlJ%(3EelPuvG=-ydyHe#d~Ug4JLEHes8v zT5Zi=H?`xO=cU&2c2ED2tyOWFjRe**t-8!C#xAWEu=d_e9@*Uww&FG9J`o4SvF+f> zpj8&Uk;8~%B#g_nhXt=RzRo$#7Bs%OaUl8i*`&q4K#=Rv(D`(DI9?f)ToZ@6oS>1q z*{EoBqmb-SqUI8046>P_y;%O0+yUO^!C|G zY%o$xeq>k ze4+kqcZH60G3Gt$AowtWctUs7a(28P2b8+CPQ`lwch|M3G3dMX*`+Nra8CHzOP;(U z$#h7xO+7FwTPGfjHQ>+Jh(RV-u&nX?J>h4K&WyrH4u;+{%?|ID7^xd~GZ&A}iY9mC z9^b`-B+_2}cbM}APV+lPt=k1>P!EXVcg<_a=M$9ZDLgNZ2p|2Yri>_cF zI_!LHU6dJp;ArpCZYP3yJ~SsenW9=@+BZ8L)5Ll8tQm!n*BD>nJc|%NbCyiz;LO3e z7tfZ&J2H>XIF!S*e1CzBl6O_LM8}!97~PXscJlDXtl~3ik3_D$ya?R|cJ|FRT3sog zr$*RC@x%T+M|!2l%?*Hx$Q5;#)6(r)(wv~c|4CtXtag`a71WYOUElr*)ZgZ6S)FW&DXEUzOqS3kz zZ_iO3z-1|+54gklqk4X=$ee=jP8^;}$X_S!1l!3f{9H*Vj zAvc|9W=JO}!`by^KZ zTy>u&Orx5?X<*gH&6jB*AJlo4#V51D39CN}Q#NQ&nGKnpr32cunkCz2JbQDrexemW z2ADu$*Ne?Q0`<)-ceuL-?ey&!3u^1DKM_TydRIOPbEFSnCZO?%Xt2Gzk0tUE#D3Jr zYYR7CV?`xR!Vzg3TFhBuq7nNjzKZLSD(FMj z8-=%4;q@q~Y2F1(Fy1%&YY(+F?Av(=BQEqdWGF(3zrxINGGNOmGQS6q4_264m;+B2 zLwn5FZPoa5Y^!8zg%73j0r)i3=`!NOD!pzt=kQRsDgRA}ix?Pp+3rxJ=icrNK3gNL z7yK~t0=MqoDR~nGHz;P5*=G5k2L)k>>UZWR%r-3M|EU$)9eJi_x%ABe%b^<|^v;07 zEPp}h_y=BbWdijy-5me$!dySYe!je3g-3QMG3hf;j~Tv3)UfibDy{*?a+HdGyo#}= zg*5&yQ3adjO1*bKY_5ECe)8FiV>r=4+OfW*Z*7P$N&b`yRqK3DAipC8&L@NoX}F4F zn!Czv`@3qBc^5k?tFE(&J4(=_f8?$EfrXRW!PQI|{+9zJXP-#6gc~YybuIF_#(zb13@0K^ zjWB)I=$m94YTKj5uD4ZUuT83be&^m9t0jS}L()1&(g0qgk+HBF+^<-8&E21g^(TK* zfahMGz{_rcpGHGy6z#20{c9-iHxrt6VB-2+2q!(UbUh=YAfCx_c3!PU6L>AR-F{#0}V1XMGP<6+elE4@HX^nrba<5E~*cB-n$2Y1I@*%^r@ zxZpiutRA@~>q1KXvWT@~=0iUDNVK}uMv}t(yr4M*tJ@HG;&hZ@X~`@}o_apHxT2+D z-ryb@<2vUaIo*`|)UaWPxqHm`{G@Pr`WI;+t{TUWZ=BH#%$Z9+b)M<~ueIbeJo;fT zt?u*wfJB6D7z2ia)yqL_;KjXp(}IHJ>Y6#@w&Kh;;uE0^cLS3wKM$3hnDileXvmC} zZQqL8@y(sPICxQ{`~?XjI9})wq%jrNlct?F6=z`Zeo=bYZSS{CMv^)!bz=Qc>%Bwb z)}S1hAE)2YK7kV&|6etzZiEBi>K&iGzP*p{;&qj)sT^cd9?)%)k1E}wJ85uCtynj- zDXDLtT5=9RE(@5aZO``7EZy+Te+60$VfP-o|6;m{jIIg%J&+3iP*y066=>Nz(xoY* z?krjCWYobUvZSdZ3Iw-UHQGM~@<>D2Dbh(y3xJq{amS%8!QH`OMtnHT&N8q>sf_*@ zmeFJ7KjND;^Kj&Qa@V-?GDMyOi1{l)L5?@Y5YNBzJakTL{NeuNMV_t?A6IglcwDJz z>en~ix*7tjev&bD$lsc%xW&fdYOjxVX5b4~cxAAnTxk-FI!kyD%U%;Z*qGJnE!w4( zuULvb9p!yMz4?_KWnrD*3X(GMZFHLZc*;LlvPbO znY*q6WG;%tVY!ZZp`8cCFN+Gxr%uGo-LKt%$N|8I7P{0HiUAr{Z{)x&E;aWgN#B4s zV2_(TzA#>IZ_63Z=glm1kZUM;TJ-bOoBC|9Re0UW7^hBGAPuxY@KqY??S&{s>`+Es zgANM7^AKth+eDh}LUQKhaeZ*Irc(kfyJckG&jx#({Jsd^R^>kn$AFd&{xz4gisNIZ zRj<_ABV2l<6|(^f>ZMbUJI3Ib|4O%>P7wC3#Xh>Y(}g6w@HJc3!pYw}$Ar;=s4e-Q z18?o#wHczJ_*Zwj1BdB@VcB<*zZT^~Rq=}M0jpgYM2Y2f!( zltD~2?tt(_>eHaG6f=LeTjUQ%R&vs`utQ2bGB72K@WQp}BbPfW|0q{zC7z(NbE%q) zUIuzVa!2NMiDLB#sk|_#(Siy6991eUxTR&O8B0)7wd5QE*b|3Si)?)$$0bLR@(~kG zw|&;zW%}8aKI-?4_L9=B=81&fn*6)OI<~$_gi%FB%lv+V+o6-Oah4WP|Hr8LDdNVp z<|o7iWL)f;oqUw1()HQ)l}63U{iu@FcC1mH*krw}P@gD5t7S4wvlx3Ew0-IISOS4D z8vtn=Ss$+PBp73gCCm=8Lox@FlbnmD18&@P&5DTOEBR+vgQE3F)5Yo?&R2(j-mD27 z^YibpZ552>FI-=dr(Pt`+3_48*Yn6r3s1)4VZJ1x3wzwSuydJ>uj= zgZS8j0WOd6!L%0b8B9Uf{Y`H=R_>(&#+vYleOxTtqfNQ|xoTB5Jv<@& z$a0b`hF{*#j>2|^&RF24=PKT^v zp;F(>J`%@3WCAh=j8cNuK)aptKL)qNm|5Qf(9Ai~%pO)-6wp&axqtG9XOqP{dTXWL zp7wcozjE)3WW1pLL&&u>w`+Q(o;y6x-u=~6!qCXrI89?ykH!wEk0+u-<`K>4{O%Z5 zYXR>nd>a@{fEc6)d`Tzw?LM0J|F zM$)EMi9kAqS|xI0LU%s2ra%J3Kio+StYpe>Gkq~Bacq<&*DH!TPjd619q=5kh zji@>=(fl2!@uim*?4FsS=vtb{11s3<2*uf##G5`2eM4Sp!^$RG=R7%z#BQp&rgjjSBh7N zv`&;#Z(CKJV*Hk{B6j8EDk5Il*95y28hv#tuif=h?}zuv zvQ#mo+Azx8n)=jCV@+pBHQxA2Ig*M$;3M|ULYhnsn-b2?f}Hm!;KWX&fK`Ge^2Iv= zeW^(RB0jF9V1{*jo&`sMh{>6BLf9$vYo~krkxdJ=zU2lTC>#IA(M}DfeacLL<(}n~ zI_&+^Iv^Dx{qL1=0mJY!PNxbAd}`0m?vIbnjQFrM3Qbu7HFF!2)5wW-BZjHzVNFRw z=azf38$ZeyXA&8(!RRY@HetS>p1PXUSwbODCIs!`;M~%h$WVOPF~7R)C{DZx&ivF7 zm(lx-vv0NhP~B^1m7zOb%k)E2d`cRK72;CSF7!KkY@7M^O;pQEbH_M7i8eK89bw<) zAx|GdMv>Hg=ZJgZT-_jh#8%Pdu4gei@CJW{h7d`0UaTbbPpY!XVXEIRBO;*@ z>wrhvE8?2T*8F)i1F~vT)A|Z~$q!GBFx2V(3{sT{<7%TGeZYU87b@&-B#tU8+P|Tc zM00xNUk#A{EiG}!9v?A7HDg`R%9OY36Uo1;medlgg>w1KTr>P?cLyoTx*B|{SJ5KZcAZLV!|o4#yyP&OSt^$w&|ADOyl-%xwGF)A{i*Hdy3d=c z8q?c7a{w98=A?~JS}`^Z@a%M;go`}M2HVUyAuTs_Eb`#i9^L24=WF;a)PZ%JjV5?3 zh$V}y)>l6QFh>8_p-;wIEK0(aTdRvI_5h6vW??*dk`CE9KFxA6Z1I>$u+b{uC5w#0 zaSpH&RLQ=U8Oheg3pG?H!mGVmD&w+AH2QS*y3(PN-4-At)yg|T=G}h$Y8|bai`E`C zd?<8{pTG3_iS!eeO~i9IXM3Nc?LMCAD5v|Nhf_&owT#c5TCZNd+#QetU)i&FHs*e> znpd1-ukR3FB7(1j@~ZOl!z`F3Si)dWgkn7}t(cLeJ+@L+a=O!+*R4##T#`HyM2-w- z%vJbG9qfSUVXNTAPVJ8<0|x(Yd=oJ>S3W@gVIRIiI}h1qBK`FY81lL3t3q$dorj?U zTx9Po1%^S5$1`l8Sw0f;%5*iJ!`>Z!6ETLcEAqtp-p~9qWMm=7X;1OMLb%E6P^B)WK+U%kewI2yw*SLJ-trBXl6h1>bM+yWuiMfaq`#G6SXES)) z4MS^1sbJpF8J0EVx?L9vbMGfVG)R)%>ULW5I|GG6m&5iNXr1h~`C4*IfKUQx=t#dY z#&mq86+|ah@0m&%0v$OSOh2O~##tcL5pn`GY&y@_o@&|jp|sJ$rge|nVzz@bQ93L< z_%w$RWOagk6OLEoze3kn^2Li!uzlhCTsM6YG@w8j%Q7T@BHJaeOCzy=Apyq%lg(0X zBkqF3twtG=mcgd2A;}?%CZaU17KhWkQu7Tm{eqk97ey(z;n@`|c*`e8NKzgff!0btpctOrBDg{<^xS^a6mV4Qpnk#ZPc1Do}tx!wr4odf10mVr!Q7y_H^%&>1XEZx4aW}$Q18-=}o7e=jPP}FyQ8hgEJPYC_R6V zV^DqwYu4lYgZBg0FSYTNLdh9Q{#-b&YOZCUmm_jIn)EUeIi)jsmOKJa6E%d*cP$m? zZlTq){w3CjC~=f0MHIZJS{FBE*&Ir3G=1(yf-VC+S;>rHI*+@HU0B3ypM8rtty6PM zL@=+V2D8qLx=-u}L`DfKsG1;w*P*rdAqDUq04pN<&QPZXL!O7N8QwJxAND0OG+4|= zfKVB~**jW8{&as6JFdXaLTnfniF?mgQkTHH5g!<31bStOXg6SDK_n~ir9o{*Lj~J5hF?Yrak?Mbo7%X<3(a6 zj|JPK`ioBVBwQuoG1uTZN!4(T=km5AhY<%w>28$H9C_hJ!44m+WZodt#YM(lrxWox z%;pw1Xb_MH(#M<@atbmgP4+blk!$4AbA0ZMp*NcKvS=g8EZK8FNTfMy(|)jkV{JBhWiCd}zma z?R_nQoa?`j@B{i@)N%7ZtD{Hrmbc6S>o^@E+T6RJeX>C;4Y+Eef)ahl9e=c>0F1O! zj`>5C2IiL$A=&MCVU4bWmhUYUii`il*;7a(8TmMuunnxj@8g9}wmoHlAiz=SV* zI`t1Eds<<*3)OE*)lq$MlSRZ?Kn;?#(eVTt%!2)?u%ctSI&O7fDS6{={O``++cvUF zWdSmbPOs7hD_YK?^yM{mJ=L|;ZuQ%ki6`5T66qY`wfTGx+7QkW`>sP0qm-%r=v@F-!$xX zRdt|ksRMaqhO@}dI{G*J(7Izp5_ahL%N!2YdZU6-lw!sUo^-@EHJeB)unGxie6Ura z@{o+k^f)bpJw)k1GVAhyzNAIkgC|3CwzkSV?rmXBO?SEFKNb7r>phY=-cc1hotS+; zOp)kE8JNie8@(KX^9lV{>_3A>?br8Rz47?HwLvmWGt1D|m&6ca|~Z<%-QaKIK~q!MB(ioL`I z8eczi7Ni+EgFl?D^`a!l(A-;yd9VgX>U7eTAU6ANOFB9G)w>^>N95$WO<5k=Z6vHW zcfUXgx+g2RW}?j@FvmG{SeTP#?}P#XM(Q8H%BvTCEK{YP?WBHbO_k1-necuan|(VT zCDyTu-uv-#9O3E0ovbAuFDYWyZgNXMQ5VbyE+KY>Put_x*$1lwe18RFKgFlm_3?^z z=`+nM&l~p_BKa<5)y*(NwD+|Msn@0NcFMu{&+RQ0t-;D-0=j%6g%-Mv2ZD#)W@Eav zr*!swoR~?D3UM1d*(kJ9q*J52ILfJ#s?e5wnQt##=_S zLx#sb&;)s5WJzb4Axq!VPP_-@<;9Nv*bTa=gn2;&t4O>k~^dP(APQuKm7B znWE(yXle(UGVTmzR%bi;;tdYlRh*xk3uN$*e-_e3pMGP_$*Q7~B@k?<9FliHRs+cg zomvlmzZ-f#K<%Qiojfx&7M zBGUNvyLvxaIOv-5fzNc*KE-TMzy@pCoS|lW#HEC1_dB%^qFU+Qd7%joz~-IpL=*_^ z&B`Ct3XP*;$P$Z?{hNXI4Ns;$*icpV`#Ac=eDlWUkR|0n@^pxmvQCPm0A9)I0-BoE zR9Fw-t3MFW-EJ>S$V)w4dKn!=RpA*(y5I{#2Km&CP0T?No8G&msY1t=TLKX%6@3lZ z>51661a`c03s=y?Jif#W&{LkxVa z_FzyvnZ?Gf@5;$IuryL2uKYOmnKmug-||3r5_?h_q#e-PNA%4Wcj(Suaf?H>G`x*? z1|2kXw{^0{dIq-Tx|<6lntYF$3Gri9aqpPdZt|$uX|RScMvnrBdh_?|3eg9wxxxkB z^$DPlJh#-H%?wiU2(IYu(jZ&pEggnyGCd3dP5BjvHB(YJvh65hA(98StwwR1_Q-Uk zpDm>hE7X9u$*Tlik&z=|8LNe3CClArY81uiqjr`);^2zhem6_UfS4TLenbj?C+SMOnat?nz4I9EYzr7~Q8*GDi){u#Nf!jl6P`2k;ca zZ0#2Rg(^Ud#*7@K$@C)bo6?>|&|&DD$3k3wJE*~)IYx73c|Y!%s8+m}*OOG_V9gCT z^CRQ7QpvnvjE)8KSCPyyayg1@nQnbZ$2b6dU{GgD^RoPLxw9nz31 zI13?ZP*+p-inV(IO8%oV5yiy48uYaGG52mivYGdD?jToncq5;TTYEY7{od=EubJuv zyUMi6DKttXVdMba9O`qAskTZ?PEJdkt;+9~z?YXQjPDUqyC01#%V`N1clwha85|ZE z2m5oH#PI)$Qjmsl>49qf1u;n6>K?OTz5Zs zN0!F_G1XvIeJU>bTDKE^4F}{(`Pt{_Wmh=IDIw{TkXD_UiEr7FLMRM~S>MyNZkn8CbY5DGZ0xfPj4l)&_ZvzcRnas2TgbzsMUyQ?+)#!pqDGjt;iaIaAN zSGM*T4N*^ZPnJ@h39pWbz2Xx>9MpuKVmQXzWCvvTs&DhjJeRc8bkj3!Sl#8dDW{z? z#P98whcsIK+D`#~}Ct2YYH{a@rrnR-$XkPYD z)Tjp?F;#f{Eeu|%$FTaZO85%=Iue*9!0ZkHR7`SfjTwmHKyY!5sPvdVDlYwENRme> z5>}$?|JLUT?cuR*A}DzEWgJ6Pg!MJyi@jiZDUKiCyguSEg9{5$>8E`V!IzSFaETRO zz80P7N?^}}VYM=z?@f{C-w8xPb3R9dTVVB5MhpXpvuc8DmPgmhI>_1vDq2P%oDh{X zhm&S3XjT)?K-x1e5|2~YIwsY)-s2=-j%3lJuR@ge z-uUiO^gdA)%*uGSPZ{N`sspI723lusjn0gc_4^{A3orLCb}WK)ZvYzS!?KRpwItGe zf-nX0^Em+!(m8>6w%s0Y*w|=L^TVjcIIx5|U>M}pu=J^rDhFc}jaC`9?4_p<7AAcI+Lh79lo#-F{>F+kJ!(I!E} zsEnwofBcq=zH&iUSN2p=0LNi}Glp0?=O=@_70l#9hR>xq?6CmlHCX$%wiV%(eODzk zne`$r(EH-22HG?@Vz1tpc22;AZm|iPx=jI^$ATSJ7k}N%TBc+G9tWXd;=3;@)|Q`} z-HChq$IJbjnX08(9)cOXxe&$v(O$6O@U#~D9sU(xj)XcTt7cBVIDTrJ6H?hZj;z0^ zryykFO>M}Dx3K3y>0Va^Ae7$So{FG~e| zS=bgjBa}(ZFvq>G(t`N8MZtMwDo3x6JGfdC=8O{Xs<6O+1HRg!1)@}qr`Kija}N(b zNO_mNJnE8KtiyisDd1-P6ALERE&dhNW384>7 zTWR7ei)b(|G<~0ESv&ZzW&-PdUj{xUPHJ9?T#OjwzxVsE=)X0QW?8}^wPaDn*-8pTw>CLL*o~e(zih z&%dYKkHGL^yzOWP^;@@K;j!;;#l!#TI55KEfWk%*mdS_Iy&3&lNY?*)0ebL#{7J@7 z?F*}5HDJ|~H^X++)Bbbo-?D!R5;&vnYnEy*xCs`hq%w^a;=z0Ul#OTFvHJ>*54p@; za>=Od#$>3A7PMrfNiMu>7=~w z&oYuLf`3}m{{Xb}K~~y>rKUdP6J`lKHYS4 zFPmCK)4*JvWWBA)Y5UdL4+x+8?NijwW(fE`v44AuY3|5VI3>Wi#!{bEa`}pq{!AN9 zwmNY6fey0YVqT_I(T+#A6A{yHtD)xDn!!i4eq3HSg0mTBq7W^GX z_0V3m#maJ)t-}AZ(t`Y#BPequDK@RqZU&uc4$0dM?f)Eb#29ffVWyYZv5PH7Q3z1l zdE4et1oc%9$+3g6T4maG^8k(u$Gd4a1BhV@{{~6x99hi{G8cWVI*sfh3S)fORrgH; z?yDEdPRD|L#fy(@M4Sa(-cS6rY}|Pn%!0cjj)-Y{Qz_QkB!-MJmOeREsPKW!?eP5z zeiRA(-fkykVOU+3I)p7TW$ILUXA~IGoA|_k-tm7Pm|5&Z^ciGWiFP1{wXHyU+@Q`= zAzM)dP3tW@&NNvXaJ4fU>G=NGMbRV3 zP#1}2$6<64bB66tovI4$WE4B{r+=hze%xg~fP_gX3H3Brf0i_N2DtIHbkm7>(+#Ic zLNf_I1t`L-@{w^Z!^kWXUT?nwK0nQnfX64vxGWcWalOH!zy4IrO;JBy(zK-74PZV^7KcD%d+Z&-yfBTW6P}|$J3LW zp#_}sEe*r=Bt%2ygbrgkQWVBtnr{Hn$0t$j)DnSO=)pXF;w&a(F5 zjbIs4T^U<-U&kE^Fn^JY&Xk7IilbnS^GfPv)Mcg)JJLYVplGx>B#sHwLq!aS&;7)I z#(mB8Ksy#G4OBInrsG%?7xDXd9*VbqKH2wq6%vQcr_ZVg_*FvAObEntUdttmi7gKp zrQZCr$!%e}>BRolM25k?>&o(F9KmJ~2-;wg#4A6gn>@uG)&e3)j#O(_w2@PYbK&fnRkpso;KGHapP)_Ky!8kI4xE0_b&p(IBI=Twb#!Lx_Z@P)@tEIKp~AIBDi z@XJWhu+5wWtu80yepJIYp`?8M?HP%mr_Ajv<~NHfBJzR(5{9R9iOv(c$8x>u!AWno z&$98i4si9S7o0DvC&SmqPu=nhp;)@2xG7&@1HZ*S^92NNH)VzzWBI z9+yVua*~S`*d%g26q1PD7*_u~k5s1eUvR*E<4`D9dAwnZKm7VdNq#7w;AHDz#K!I6 zi}n2GZgdHC;RAjk2yWc&TZZ!9>WnY|=1>&8j8`Tf%z=+smKsg^_GTzHm1{T4%B;U-4&|E|-j$@L{ez)+ZRO(*I8Tz}IxqV@ zMcB%&?9ZHl^=81!lic=typHcT+<__0t3%NP=n;X#ajN;p9hSOoL>f5Jd>>fXcCwJO z_)tP`rX2taHHl{b773(F^upgh!hR<7wKL`4O25J3_)*-+fCJm(cqOUq5XTH-%8~Px zT(WNcZQIw>q|?}8zLB0#4XCb?n}*hG`zp}L1+!KINd6E+rVKox*d{XuM6r%vjrXqO zk^X5a$XQNvhdl^Sne~A=W890a2+sC2oTQRts*&W3Lv?&M822da3Rv?mME|w58JDzZ zjtD@uCSOu(*~U2~Nj^GQV$7v*^xreZs#_t~W3qUitKwdwWcUP7vxsePaD0fa^EBkj zh3%p1zX$nai5rpJ4W*w&>1XCmGE_VVi@W0AYovEpO`!3J>75n=7nf9-a*^syOVZ?QGeT{VN<;9<@91P^X>t-jrEk>i%b3&Q{ zs88fv@Cs~5jp;}N3y?88C`MnKjyueg?*`5ejjxnH7o`Wy+qyrQ9HprA&*cb)afHU$ zl;omTBF+nH>ap08PB_V&G4kI}+LQAqZsg;L%pVXl>b8XrR2rYX%_38EgkP<8Stb?? z6&{-KuV7myGLlIqb?ce-hXph!Ql&f~H0~aAu-cQQ>GYcuFdzSnHvTP7iIHgcQ8qZa zf=@+boZkr_&EnCs6z2}dW#xNj3ItGhudUB)lM35pUv`jN=c?qowVnCIRS#g0zY5T*06zzzF)QI7gk{9C8fPfrAM^rC4m9}w8MHmHs z4gq1N56!F&7t8C6h0P~lt*7QTptIyZR3fEm-J#iCCLO-H&kCTpuYe=WTK7ktF#$p` zV1!rhMpI~NYP=;>z`Nb0^7sRvw|<(Xu-q1fl+t%Gm_?V~E~4RqX#FvbOT%k%3k`x%lu-oJGM87n($rOj3qAv2%#j9Pn1r(r|>KFB1t zk(e;vAfXo^5?L8HjyEwR?tS@Un<~mO zl+nzk+61c0G)CLLRNb7s<1O+r9n1Ye*fN$?N{D;s`Mn6j1!hmc zCTbwmO9-(`#ON%!kWjJYQ9!M)J1}tyf&pX&Ae_e| zy5(<4zQIv6H2$);!vJ_;mEjT(M+s7yH_v1Ngmp?G@KcIv79yGY%-px$>Rtn4;C8&< zXFoXceW)d_+4+gRJ`U|!f4&8qjBXQVEKiQ)wPdK<`g6u04}#H9{WMen9mCa0`-}YH z+nDv=qO(ThYv$BhT#(~>N&}$7Pn6;%0m!}$J@)9yCZ`$Dmk5(!dZekIK-Y%(z_0KCZGa zhKz8rb)&x-s8|1D3_=0>UA)Ptkv_D;M~*w-F2(-Zxe0&$d-|6J-TuPk#l6n-)5f)r zkE9q!$+R!)tBEYpNu$5CcC_UCD-a)wOlhr$TX73~uEZa1L5Z8`fbw)fCgrVXp;PqY zl354%7(1yrUo8g8i&=m7Hj}vIDp(}d1}8{#c2B2&Eo-Q}^Zv;C>ETGfftq8&=eF52 zr^FtTju8jLSjJxlp%EUt}tclgNR3NyWdPz+%n#2uVu-k_gpb7LIth=18?PwP| zO@tpKj@i=@W?k?2qREkbYk{Or?xNF_DhBPoez2eVk&Qcn#3s}<06jp$zm$LOol^$I z^ZgS;ks1l@O6-ptJ!u<0S+TQkC4>`V2pVmMzX?#wf$gTX1GKLPbJvZwilt}_K%i%;tXRUI-=v@?aQFCX4i3-DiQx8Y5AQ z94tkdNN>B5bag6@*)%ByGnWG>uqt^K4hwzVnuBR>#dcn*qka2Ko>?feuSUc9&VlTK z^pCtC-hj!$Ts&H_x|%D-+LSG)InQ(^0X1(_F^~Z0wurvwwP84Mm*jux2SBwKS#xlD zo8O<3C*FM0wI+p}2Ti?jgs&N-Wv-l+r zP$(WquT3MrH6L{K5u(>0CgIxFOcupa`I2-kL^ZYS}Hqv6o>tg*MvUjKBNl0 zct={hzy{_Y5G}2{{+qgVq|2rh2h#wIC1+i*S3fnvsQr>(q+QgVhq|UHpCUu;J|~m; zDL+*5MRwp1P8;FZ?f(~3*Bl*J+-;LIwrwYkZQE{~G)|Mowr$%s8{1YJPi)(GN&9{8 zz5iy-tXXT;+?IFLC1o&m!^XuPn(y;Br&1qtOLpCFs?hQ9+NsxfcS~p|l2vKDt@%5Z_BW5TVgfcdFgwgx0>@`} zXTW523WWAws&PsIz8z<&7cZLNpn4t1Hc6}k1C3W;D5DUF_J_6Y2Ckoe`u|6(9A*EL zIJL~axKWfD`+O95YAnb%-R+%#WXSioF)%MY$k!BG-=NEjAXLQfwB#o6puXJrhTO71 zn%!K!<>~QpRG5&Q#XP-NtCO#xz$3tvkDH2k<%!qL`yZnw{qRSN`ZQV~aDFcH{-dah z#IIX$!<7HSUjq$NS$iO_D)>LdVVqL@g7g57vyq>Yyjr1%>}4k$yjWQ{$!5Im)E zPXl2dE@Mheu%U4toBDvcWrAwQ> z3fp>+B&Aj_&Kh+e6EMaN*X6)Jb(0pfjESu#ptg8ptTOXuT}y%_>k=6vqy&!5=a`r0 zU>5N&3a< z(HL)7oaWH>F%Y{yovT)7gjtds`1=Y{lfT`p_@~6J#tIqRNkwXJN($%J7d; z&4c~`#w~w$aF!uKKWM2+eTLcMQk!PK53ZYv2fq^n4*Y+n^Oqb`7_m-3)B#m$q2#J~ zGg&LbirUFaO$vmD0CRaj$dNU~@LfiV8+GT4E6orVTcLfwp#OFzVG=-yAp``PA*(yz z9`s#V`ixR;#5fDnZZW20pa1N|#KE}PWViGW%K+L?{4ssJK|SER=6iIU8X%wnot6@) za$o~Sm)J*DpAMa?Rk(}vqL8odvI7zKAA4oyI?-zP(fC*Fu~;-d7s^glE=spp+n^Vc zce-`3z;Up_0Fk)RCE+H9^J_#aUDH)u`6yu0vwQEikwzgO@eQ zPFMcpU29BW`^={!fXL%dj;}-hlQBEv8h>^Su++KTWb=Zr{9MfsS0DGcg4)yYw)HiG zXbI2EyX-iLsNiP2ZdGPv32*BJL{>1A_~vS;hOou{`3^V8Bs|vS)UQM1?7FInJlsX` z?RT$Kr+Q(KQqz|r9|)Z=kZ`K7JJ2$=Z0szBa`bwS@|nE{Bx20b9^=5ZLCJ2Fpa4ht z5V2D+HGx3lao}M{{6CUb{RuU7T)!_vy6^;pq#j3cf@_1kA7*zE?X|>T8Ym~))QO)N zZYEjwLRxhc7$>O2KR}W#4aiGii;r3TM`bF8!uf#MiQ3J4v4p1-;FptTFq}_7_IcbZ zgIBg_&a?~$9E&o#g3RB3h+S7kA6|&g6!zJev2<}=7Lof_h(K){s_?WXcs5` zX{m%*Fa{mP42C5m1=`&@pd-atV@$HnRFV+Du9xD~tg z>(=ac(}g8=(vNk#kWu|)yb6(?W2{3v4EQd%2>cS~nAEd3{X6wg5K2aoQk!k%0lRdV z`t z6r>rT-SRdQC~(rFr3kPf&rH%lQIf992F1Z=A>0(YGu|GT!i&4cF}s|~XE3zFax<$1tfgkHcMFNpfIDYAk3#5yjs%mvI_!qbX{;AN}IkQV+3?O2bqq9xl zWY5Gq{A%3R0I3#iJh2pct<)j^_a6)KgujKsQ znf&A2A)x`m2Z*2EAA_W9N_yI3(URqUWgTF=?w7XyEaq;)NC1T?A9h&dR?B;y-7nl^ z!jlY9`G1n1ryW3nJ+I#d%f}?hv2}yo#Pg4cD<01OHwdz5y;Wz1Hos=cmB_4~px{V0 z%O1YA_Ht8k2;m0((p;?rh8+jp*)yHW=I?W+24fS-`sDa++_$3yg>kCft?yPI74+mgmLnzRN?_! z5|)?F<+K|3tW22&K^UM-8qNvg37Q|%O4oGjCkGHQ6!_5&CqiCg>Q891oKf{9txU^8 zh%lVuZAT5{K3DOmo33}#1>><$&eUXhwCC4IXv5&H5Jp>C>E6DAkx5QhcB@l=?Z$lT z!sF54n=~)}^`F|Vh6QO$mqK9by+y4lvlu+>1z@TqQqd#OSQz-;JGWxNRD9i;$C2vdvi!pveM` zgE$=qcxpMOpln<(kJMWODd&{-(#Fw}rPmPh(W$XkGRmR~JYD1??L<;&-U$BJ*5H1P zYrn=vo{4x3n`N{wGk9kgJd!bp67haO9LT9K66A8)a!NHz`wX0Qp0+N%^3mO(h$chg zmU24r(d)*gGyww6!?I85qR$Cuq%5GpNr2Z0%Y2wbP?OWGtcvkcDNXahXVqfE5_yxd zm%Uv8wbHrtKa-met)ZoL{VV$H6Z$!beNO3tI&~MN`sCgfxT&NvWx>87_ZLUN`-xO- z;=P<*)~Vi&1UE9@hoF&}VmZuGuP+@8Sh=jA*~Va9N$Rz$mwp4GK|g@$Yg)!nx;g6|8+rNaZ75Vkg^uvH zXODEd>JF&86te`98cN`oVd7yEDxFL-k)dRRe1)Izxa6XGD3jyfI94R(bXa+;^XifH zjg7#B)s-)qqkZ`aMqIIqv2(z-_LUk=B%$w*%Y~Z=0X`DOhu#I{()@t-08sl;Ml#8(+)Oyo5!yN&m-KYtZ}{5@x~tC$p-)-!ZeZViUJgx0bC)4287{5?Qw~!(Gm4m;wS)fzM}{1b9IYOAChaDR=VvB~ z76Y(439H*CwhsR2unI&cs7c@t}O^=k(Y1Gr55kCN0SE7K(??f$;+zA(&g3 zgoGLrb6or7`m8mZQ=UaeW$gey0rv;pL;HBTnDjw$9UKK4gM0M13eZa|oPv1UVtG>O zl)G%4fTy z8Tcd})7^ND4f&gdX)5+Q5-HF9m#dWfk1M3_o|fE#r^xNOCtsL>P~|Sn^Y<)K-({21jXoWuy*t ztBG^fX7CMTtsYvF0wd=7Sp3`(|9QChPU6(b^L*->FsaKhGYD!}rtF6X=LSCt60rM8 z?Gpb0`pzk78A25H$CFd4ptcK$F(nYdc7*6CCM_4)DL0Dx8?04>{P}bV;+G%Nw*ZG@ zto*5>&;=g$;AVSp15@@!jZoBma5E06J7OGm28GSR9rTgcal^t{jl`%=6+9uB>$Ad3 z!+-VRy~(~DnC(;JqRiPDnUmUj?B|%aM6KH9!LnxWN~>gfe?;3crENLack-jeR$P?U ztV}3w!^HbmEm8l$lrVPMm45#^8_?BH7jyrTfK?kxeuowEs!^3wL2va2)KB;;Mxyo= zYcw07-DIx?`P|vrp8S2Y8Bn zloR=a*Xge46NSkLa(BcA-|}lr)d-$?tb~=_qLiv-GIhH{4JLjO-dO-3;R?~Mt1SXf z2-j%YP~-YjQHvhuoKSL#qu^1;9}%7L0tLs>J`j+ETJc&5pqy?`H3JpqTowO7p6)0@k3>o@ z@mshvlsY}>C+f5H5mRq5okU1DL$W41m#^0|NONe~;xJ>Y645i}24di>eWa)bIz zC@1Yi*R+N}=Gn{;1SLjZeJi#Y>V_C44MSer2G?~HFSdDfynp64^%+i$1T@_5?i|$- z>#+8h%~jquDenzTB_yaT#B~sGVO03aAhqJOOI7qa_RuHc&-mBkNoUVWyju<2lkflb z(Yf|PYcQ}DS*dnXnsCv`5C<&tf&JNz3@t)os*hucwA`m;iGDDpu~tf|*>#jzW7MNi z%~v82UDc$;Nrg|96rsEswHvNFpB zV3n(v7);O_JsBvpagI%wvR^%Xy%{s*$#+2$+rE_N9gb?L;;r0J<85SjNAhoolG~>p zKQTTKqNyj{|8?JOI`dC>lQ7u%LuTrexm#BP5BnS)D^vS15H$Y2tP^Mc0Ab@#7m#Dm zNuOKwv_ApYUiHrd_OL!w52$yH9uU@F#J#l7Ko8Bu@nx8dNjU{TY|USfNs$AG=5>vu zN3@#^4qQGp@(0zv6qz;u6&|3Vx63F8Rbp19ty-DhcDIp2oqwspk}>{6b+-?|8W-{7 z#~wg^!Vy#l_ScTtYrbbOO6bvU7zLbTZ+p5A7=luBE;Z@z0}F6r(55TJ54fON#b*#s zAx_{oG#DaX%@(|cpbNs!n-2Qxw*;v@2%?QVeT7ZW(0FR|%3`aLp#Fk>G*Bnf1$DTe z{+%IpbOG3LH({|K9yL8m*ORXeBVOA;jBr#PWxBr;%2>X~9Hm|_*PTFY&`ju|5Lp~rJ!5ZU65Ct-TBIEN@dGHnSe;cA?LRgIy%y9MX ziHn}hEgbivd&2vP9;AIZ({y`PbEajy!EUUukgvT-2cN>@Vk>3{gy!8{9 zuYWHE)50Q}E>Md(G~>#3$Nd_!J0TML`8PM5(Kc(b8n1OiZNyVDbVkzsJj1ISpAd|K zO9O?T_t?Tb;Jur8fAMc zafpy#=*46-w~u9#V?Aa_pX5+A&`}__Fv>V%)Y_Au=!sEM&8`tP;KV!+f*{}hH}P5N zx&IjR`v3UckERm0Qh3|VPCHDIQEUdh^F}RE?9hJ?tfcOy8H^JR>i}QrgEkb7kisHe zexedr>Iatbtv4o9XmX;3nl!GeMd15-0lN>9X4>&-d%-+bbG2Gj545+qNd@MX-y`$l zLQSEPi?OY=M7Ye*CXJIabBrNOzjpT>Gl7?61>qKT0F)R$l5`{~`pfV6aS&6a&GFg5 zXmQ(iPM@#OghSAX=_I|EVcFV7{#)%-b*O*U>>XwXt^AE1Z@nF8V~-(_8DlGda6alv z;Mu-8woQugrh{WYtWZslF7TJ+8>dZvV|3M#sRM(->kA{UC)Mt(mb3qms7VJ>cho}1 zEA1b^s32DbjLL~@KM~$T9HyR^yiM%muE94rUg;o$EmUbQ_-Gd_G@q2BJ>TkD?}Sgp z%r>L6CmbgEg?LSDX+8?_abO`otNj4Qkmm4q{Pj)_Is%C1!p_^oVx~ZN*P&+iM@Sw051%)xaBtyy)A*$ zaRCi=AyS9|VQMA59}{mzJQ5rf0>QFCq*`B8#Ay8}=;h^OiS|bKkOd5cJsVR4ehJ-HGcNxjl?ft1@{``%)%1Kq z4pW~s#h^6jvf^HWzzxt85jhV^org){R^Zoa}38&|g=0^dnpNTZKUq)ya& zPRyHIC5%xsy@X^gE@!D`xuYdt1R6A7TRH&I32i2)*)vBM%E)x%8!I+79WEs4to|GF z7D)DsK`cx|~ zA2hD1(*1sh&UBx_g@Z zze~E+%;bXq^-TeX@chkfAgqa%&;S}?1|x@Zp^ezb<)XuFB!ry~n+fJibfH1Wr&8wL zdq1A?wc)@9|FeCBQBci$(Q}5f0J@wPWqx6f3>hTh*uPN#cuLMqM%}Hja6nB*HZVZ(=NT z+1Af|IZ~3rIUC2w=`&4x8<{O;T9co9r#3QnH>PACP-&7?uyPbvZmP^5hFz*92MlEN zOp#Ioj1CkTCI2hU0~-ERyh^76LE(5(5SI?|9|t>_g6z=FL_OJF?bx!0G zTt6T+=>4zIFMgmQX)nP{oj_L2vY9XWR^9fUud&4lA&RqD32l-@)nkd}wU6Tkr|m#& z*pa^l4}*KSsj)Bdz{~xg59Zmt50GX*P)PAn|3BWi*p8a-5S?Aet3yT^+|7i5XEv*B|%9POD)>YQDi z2%!bq{br;uj~pai5=7UI`BW0UmvfpXux0h4xWNqVJH@ictr4FykM*?0Oue~$STStG zR#{w4mk^J?IP#QOqujC~X4>K#Fg}RKnnlchD5_+kJ#YTPXyT zX^H)Iz7Ar8H|vqzPmz5j$eM-bbe@fb zTDCzWixLi#h;$cD9~IKvU+f)g*xp77z(eaiUQ1QK$2W`Qbf0V)%q%Y$f!NP7AFKO$V)$_?}VG%=r zij-a?*p_r*6sOfH_|#ltu1Ec?L>m}vaGW)%Hdw|;lSdw5OJ@<6P0B<`X=*yfrK@(fxrhH$JJ-9XF=X81pV&K<1@B9js1=l<&B$v zHzTX`zKH1^8`=xl|k&&1PoSh zmjX^V`>cc>7UlbPy{uK2>fd_{v=$JW%m6fw*Sm=#iX1t8=qp?(nTyt$Kix|Ed1)C1XCuivM^y{w-_{7$n%@88=-99LP@OKIu{^ z?iKaWE#e#)XazD3hq9kXc8YQOajr}?w3M5ACKI(JO~sEs2TUnXyD#)MX$V>voa){5 zG?x%YHyoUlucjxl@gKv?r;2%Xs+pr`DDk7L0w2Fp>s$+Wy8`puCdFQ;K#O}V@a<}u z1#NJ}UOmF6Ee5a=o08fQ1Ppa}A{RklJTytgJHrTEuxU?(%N)|M$ItfvkUBQtkvza8 zHI#{-DMhLQksEmjeg~nI5Jc5*x_PS%`Tm0Su=AaV*zBU+?%10)m~|`Cg9iFU=e=sy z?wnTV26Y}K2nFK#4Asqk)9jX%wge2b^zJMsE<7$(~3>K4=LPa7Jl|6*U@w%RVpde0K_OxntQry>z&EK+qBabtuc6jB&Q%p&K$9k3pn%2bcRohXAJU#wYgM8pOVK6Tm*(^9wzc zOEXHlC>wpnzvH+mha$r2BLt-G86?Gb-V&|ZSvW;wg*t1s>Qb-3hz{}`WBBlZqvq(p z$&EjbboEpXIKr-`rsCM3QKYY)XZ0qKu~ubiQRSLC(NcWxm^V6Fi5bM(OE(9r#;gVo zX#!*Qu^p<|&gKp{{-{+?8@d*EYS@u;Cei&TVNry?q`X9E`P>8~aS9CF<-fU~i?%07 zwSGNF(T?hD|S1yo5wX+hXo zMn%j4riw1Dn#kgf{B{JxevKKwYMuRMQ;|%RX6JPn!{tL(!U?xO+PYaNr243AMO^@o zXk=_JcU$bAU4jL7-Hjxz3Z%{v!iw$6>zARm%M4NMlGGONrL z=!WDF6b$eNO^8&e!vFj|`WV7`tmU`ohl-y`seTr*>V(@pvgF36RZp-A^g19=B29|} z)#&ZhNC`RA@6wq=c|qoRRIe2oUgG3~9&Dhp58=QqNO0w~aiN7TJ%&+0Yww!$iUO|4 zq(u1_qY{Korf1B^ukBbj9?92Z0(oFATvz)wKe~n0WM-qe zO93xA^>wI7II#34WHtPI7RN5y1gNPJAYUylp{%~ql~+gsvL^+QE^i$S+TbD}*K`*!6Y6W} zm0ib+u8eq!!HfiurG!4Gcg=$PvxI!$v(KCv$%sX*A!d2h=YexBL=bHLfqlwisy!bS zMkXW$eBe;WPMbXO@pfI$H`Ffs;D|uFeguOXT%l`&)tSpW zGVjYjBHSkdObJD;LJX&2e#IFoX>j`QCGgrJGH^_HUMprBDH$sHE9Hwmxuh35g1~ZX zC!p;>gCa=fMV5NwVwfiD%%>wiphgv-qX498pXARc;c$UPGztVPn9eV7Pn*fOm$xw! zI7<)`u4>$tH}NxJCbOB5NLR4^D?4N?qGt^VnLZJP?3eXb9Cc80w8`O?lN>oVW^*fU z^dt>Op`5w?ngl%W>$|#mC{ReQ#S_~EU4Px26_)e5A|Oc4b(U+G25lG@r5R{L2c%-H z2c7w-jtp6@BILDq`W3w^2wU;~Gxf7L$XB3CX?HGH$h*pQR`h_*BYag}msuri3qk=K zMek{@2$4Z|tNY;MSJ(UvceURl+q(v?_O44Zr!-9)(io(be(~wj{Qp zjwESIR)ZUb1*atN*mk(B`2JB_tWil9m;qFLWQxs-fwrNDft@=SK2kr=Rj=<{7x$Kf z1d!~%U6tm?1`;WwPY5K}fWd~4=NazFm=>H<-z3pLGZTo!8%rKNsOh3uk5F+-;4=YP zo)Eqc`tQS2PGuc?5-(XWq!ZAXrtf)?4M<0ZzR?dw-Na8PCNwoVt3H=rbd!DY@8!q5U)P z+=_aG`0LgL;oQz)od9&esTBF|+M1ntQ4Qe7Uuxxui6eJm<^q^=;zYPX>d&wtb> z#kRM%TGm^pL(YbE$kj=5gjuXslh_|g3{r&=`Jr1aog2AWV_ufDLtZ9N*FemwVDwbH$D z)BK6IOiw##V&sJ&@7~0*yaYtZ-ctvt!Z|(Xfm}`HVX0$;rixZ{2v1){bE8Oian)h& zCs%nU+o`i1Om1PTu3XR-;Ju#Hce=#8ARR;AaH;O*eqh-@`93(d-)wWNzXF2x0wtFw z)0R>$GG}MG;1?=XHZKY>-}9n&_LblpYgTXAHzJxBeuj2VZs-Pi>Z8B~iTB2X^+=K< zpn{*Ngn_uu%OHxV@Qer!5ux3_!tKF@mzRI3yV8!+a82ec6ri6-z1v&c$1NB({e^zf zXzs$9UO?DC%=oL@84Au~kR9ym4@7{#B8U_Oji4@qwnWgwMA?0a702axX|%G=J15E1 zWWRQ%A6z=(+>gLGopw9Fkmygf;-2U{6x8=uzR*Lc;IOhbt8TTz< zsUH?d(q-7{pFncxj$Iv~-87w1PxGklJ*NLha39*3!GeK<#L0U6ran*YL!2Q0R^Xf0 z{~Hcr*N%f!; z~&J;!pT zR(1@lsY3|qI*&?5TA`V&K}N{{4zitP$mxP)~e@YiJ=P#TSC# z&Af&rk1w^{eVW>XWFRl2%Z|!~A(c0R7TE5~em0bOWvDf|kkG!T)!kH-7yjXDCU`j= zU2k;J++<~a&gVRFch+D@N_p24#YV__JvDPhW=eJF=qY!6C2cIwyPOGZi!QnLYeHRTX=qhxEhOW`9eXQG-ysnImGyvK2;M# zh3b?1B-W?;o3-xUU$bMDC#QU4Bp``ZhEsw+GYd$2C{W0sRcv|^K4B4@ z{;P&wDt(N~G%qp7cfr9iNIzkr50GmRUr->B_>Wal+Ukh-8#sRLRm)EtaE^T2q|C5j zG@28~+*#DZeH-G*7$bphdIq+B&UBH4GslE4QJr?L8plAG#<-8An_CGx>@dVX#J;ZY z9@`|H$oVTC@C|u2p~(lGeY%pYOjjyMWlv95nX&%vR3t-MhMCz9XUY&Rfh6rJ_&gfI z>jM3tV=j%9d2oQ_{K19Q<`ezbK_M9;_g)$Jt3rv8$oZIDm^24fW4>^vkb<2zn!r9l zajKJ$O=_G%Lp!=ttoSGF@cNe&+(SM-#p^?yRNPp6kt!`mj*^!~1F7IoCW0(zqt&ZO z#2x+^rvg}cXMp@xB#r%XLrj<%$|u-UUj_oYpPM|Ep|`9=b*2zf@xo0>ajyr=AOA#7 zze8cw_9bQ6!=trt$^%vhbP@IJ4=W;kVHfkU7AN!b}vUkn4_qamj9u@zL!A=j`krR;Q{cm)ypNWe2 z$71k(AH;voNI9GU`0elcB9#LLFdQ5rCHZO4>*5Au zaDMqzMCW*Yy>_fDqshrc{E9wG{b$tWaIJKhUiAi%MrvuakVKmm#K4HV zFfetnJ_X01l0p1&b?k=Y3;CY4+&r zQltI$7055sl97F`@r&#F@2N^c-nFNCfyS$HS}@1mM~Z=tobYBjKYXnu8Qsa_ zkpMvb^{5R`AxV2>F?(ReMVl5b2w@!8$rvS2KM}a52^BI5fPgKFu9gEW{1#%^uEQ>D zCF5b-L$=8Dr|{ND)wyR?eyS=6L8jOqCJBrI$4R7kCeX_&$nV~7_2P(Fl(Kk?%-zYm zY6|2<59S7+$Sc6f&7(0Epm)*q8jzKQ2y{IW4NZpmC!VSr*XPJq9~c}j^!*0bC@`w= zpJ2#HsihvC0-%$cAdoS7JHaCView)RFbH}R4l@!&K91exRUXlb;Tr}I?1*;CsoIII zkT6u%rFEoKQk}2#Z?ef!ZzRm$mKc!K>vK?D$C^dOqU};NV)pmE8Gpwc(w34ARH3?u zdrb6*cGwYNSoXXv&SHbNP0O2o62M{-*wjmPTA(&k}Ra@~=I)Gw`b zVj+y2KqslYwmQ+$?BiCPBW+NeM!06fG#hEKb~>)*`J2WJ0PR~xX3;t#>jG^eTSt}{*%g7?m73-C0G_SFw1O@ zgcH(oY(JwLf#-hq7oV|d01!UrygsVHh3|1@u%(R14>AoO=VpXA4sYgcOG^-5V*Mw{d%Q5rHwl_I*AKk;kwak(62m|R9m%!zShOAA&aA3q6v*KSh zNFB)FG+B(iHZ&$Y-Z0%sZRH^J>1ob->TNPI@ukk_&W~xMaii+z1Jd}(i*pmgiF;U0 z%ojTy0T`P9vY|+8qq@U#96^ZoSu*&%4C8MtTVf4|U@XF~fj7fi$1?7i(^zpRUCTqObJ`A}L6O6}~jP{4C1)I5F{S^S(>q?BOP zWI3%25SKuuK4T$L3U*K?o^=-kvW<7n{{EQ_LNZ$}5N+}*#&_pbEEb3n<81xhz^GzP zeW(&zLM)Z7td(r0!xH(oSL3V1Z#+6%>DYi2h@Zn(D8L}UG5fjbw#mkGYRBa45sgBa zqL~M`h;Jr(IfBGTI0UhoLiIZM9DZ)Fhi0q0D2&txrJ`w)a$R&ga~7q?r#gjfhM2;W zU9x%|9}CMB96b)zf?|tBH{#1T;EQ{T$CLv?$r7DUGmb3ld8D%@L{>#ZdN7i~Zv+*srN^@=SY7qN_+{_{w_ zW}phglRYGMiHtczc(tXo=Wl^B$#zy(^jV`ah;)1EC&a^=6;-5A{FzPY=PuRII^;%v za&`a}DROlYm7_sZ$^Ku#nvoorxc}=anGTTb>w2@J`F5 ziPg#MmsENr;8gJq6z+m~Ij(y`;%GZ!-jH&cCU)G%YfwYu$@}*#MHwu@+y~@ub=|4pO#aZ2f-J zgHzA(uk?Gj)x%2&gy}qs(Sd}6$%kp2eNzbE=KVl;IY zR0$&`{-CAj@fMwW-&9v)@_MCrZaOHb*FKaOQ< zxSbJccn!J?G}5B9x`~h*P=vj&gf6NrXa|8}w;yzKCqqj%wE}dJQonmx!UD?b6Y%6M5wgs;q@IAuVOBucQQ~wQR3! z3;02(%DdS)iv*R0Z`RAnfVpW_puXl_H%Gkc&}s_rfels^;AT{2o4Cuh0-c!Oz*NEO zOwpj?aJCwlI-{p))*UoI%q@XpRprPdjLcAxm>8MxZB+JY6QoUx^$@87<+8I4yBpk( zL~LMtOB8E2r$AI)DW@ZJWQp|FTZFvK#1K~4SDwt35?IpIM=4{>m{b(#Z}E5PXQT1(ZptPkPfsQ- zz2CLB^T@;kNP@b1U5qOLD?FvhuB7mONkIa;=`R`1|F$4Oot@#pr4x`F_0B3fea9UX z!TCptsq{`~_OaR%Vp#aL4HK>hmdbXYsB~iNXirq^cMsu8NMXrt2S_uE$8dE!f*-aa zZE=fwGZ(*SekpsdX4~;e&4lU{+u%@GkrH?OU-+wXK@l@S+Ircpu7RqMaT(e;m4gG$Vj>#5+*J4Nr?0 zP(-sS8#5xO8QpsIQp5%Vk}d9m!4r;)Hf)fw-2R69%0_Pyn}m9{L$1LFIgRP9Bx)qy zg!4BcXdx5*xOCe>R$Pzi+Jem>zk4d>wd{2t0q-!ElWBX)IIiB$dx*Ep3Bj z*+gr^u^hEN0JY^LL&ny zWiL&eKZ9QkC;gEDF{+j|>5zRT+`FUbbINqVn6`jh*9X^ZhzSOj3Y*4|%us>mL^R{< zh2=e9LvFg02a5|XARu!LjwR5blL3gv}=iE2UG9BmVS(3OvG{rh)Jqv_O;6!~>6e!~<}; zbs0uQOP-oUXev2A_%FPEplUYjqxj1fk31i71B)MpcW-;x=7Fzvu*osiz%L%qEi~N_ zhJ82EXtEN~^?fRR0u+)oLY!LUo4RybcSUP073Ygsz$Z>TPqP}V=b1czw2jPD)y9c* z0;l@Owcr3rK(@c*_<0ozz)2vB&_l!&eapJvzh@7eq&gafr5F+a~SOnWK8c%0U=?Q_tLgcSYFxT8DMZ@8Ca zg+!^}r0F#Ipry2+uvcTF-XBBs=uoCOR!G8Bi91m?BhMoDAdWi%Oqo%eL!Si!p9iou z`7n#~U|y#_dS9v7S#ID4f1cZNOm_omIdjvAf$1Z^PHWUJ(r(Ze*JK1@fgac6Mf_E| zV8<_fxmE_^07Ot7)m}2j{cT`_sOi0zPZ#n))5jMF3qG&#A{XeHXSYbzK&>#M1zza+ z?I4^+%0?4b<_pYP7~93V-@_e;(|uS6QE0kLC^@TXt9+rlKPvkgY9#@HZUW{_+?ATs zSu6iue?PSb7LCYmndl-SE?A4V2akw7>bpco<64Gt@v#Xo6M%V)3xY6{7bQtH1WrL& z4m2qWjwjxql6!3uV7Ix>b-)inafOSKfD+Na3Itym+VW@49(z*vbf@h{wo@e=g*)mW z5lnIOGO^79cr72%zj^r|5HL-)`;JXdm@*XdNdeObST5SGgAa)KYb+ZFi3>s}a*-6K z&==KJ5S22DOW7AEA?Vwc0cMNtj+R!Z@qjx%#filcYZG-#N z2xU3F&cOjAC>ccc+8P7+tOBM~zt?!AG>bSEH!XoierucVG~^EII!c{(!_QjD>G84|^gWtbS&C9c9jfRuVG%chS4@FQYs(P|=@n2|^B~Zt@8%t_mRIor_TYzh&HK?O zfWvGAKek*@w@-6O_9s11Kj$}E>>s~1P_~qnWmQQ^=m)hmnP6fFzt01XSa5_`f!t;= z4`zm@xrUzT!%BHu9*py8YDm5;x#uWjpYOyMuKFcf@gXOb7`tED93_>FDkn1CazNmQ z=Oss@A;_)b$JvEpL-Hw_UsS-sIc4heVWWwy`q%%B6&Cz=xQX1}>&JzZ1gd2Nc^ASQ z;a7r(>OSt7+)@)^ynI9W@g~fDK{q#7{DKw8&+#fHfY)1y+CR+)S@*0po-FL%X5dt(OGO z_^9hSsG8g!`)e5n7$YnpKtTBzQkr^dKBrDbk3LwV4oZFdH|74=xVjRxAr{FkUu@8H zDGc%?3EJEQBzu&ZYte7w&YQfjh#~@le4h49JgO&KwB`_EZQaI^c;) zy2*WF_yLG00w6WXpI2`f_vg);glc&$aqX#f0AI(IctDO zi^cv(Au$rUHL_mE*x|XzlHBM3bB#M~y}4EMtP zI0rNv+A#DyydHF-0f)#w8L5iF4oK>E0`+PSx&bFADi|2PIT~QU>K5YCm}ot2quwC2 z(G2iIg6`G0!LBAhysdkaon>OXET?M}*Ks{$nFxCuHtuB~g6vL{OkA#4==01+u_E#g6SQ%$(1jbG02kguyCd z76$XUP;V6r$X~|+tu{SmYfu`NE<%#XkuUWdYLA)Z9=&HwF^c&k17-x6Ne_p_klQHs zumruW4#f)op7xmNEqDJi-%x@3^F2L(bV5SGZj&q*E#ubmMumSIgtZr_?kb=%8po9+ zFcfw5+x6eQB=+Ua8_6$Nd&y|BqMf+pOfp+ZVcojb9v4=IT1A1AROH`^wjG{6oEhkHP)tb!x_-Dn~zE-$11^+AQcMp z33+n@bH$8*VaIQt7K3JXM~#a6wve1b?Y~hT2A;y3!#hOMFNY-oocxvk0oP9;D{j*| ze^WKhn@TcQa?d7;m9@JA0H?*Cgb6Fs{}33KJYaOUS$8VVLkcWFVVIZt9Z6ed`Ydzo z2ebM%ZlZ1Arxf{ocsDsnEyRPyzj<4*^##@IMHMJ?d0~v%PpF_4uj1IAzm0O2>|r1@ z!RJR!PBevhLxAxQl1?%#dh=zy)#PMmWG2IzSjIPrBu!S8dGBL|PJvFxAiQd0N4SFh zwvAd;tR1~}tBDS6Vl|F^7Kk*Js2Oz1_AS6(AR$MZkkm1`rMQI<`A3cen&i!f5Rox6 zzd);j)cbAGNe}`_I}U6jcYL_E4)PjO@xodgZ($k#z+X;&u9gXnesz>*@2Voy&}EWY zxt)wizj=E;WWaO&%e^(UhjEo2I_@%g=G(G=Yy4-ZJQ>-MOENq0DUnmhWA1h?lLPdW z&uObkCVX4IQn++-4YbSZ@~#MHr}|6nTb({+PawUZ;cJB0{gPPTMfO#$tI8mmyM@!Z z!DQJ*d2r~O#wPqi+23OW*TYIRWcP_I8-Rv_zmW% zD{_+Duf*Yxf7mw+V8|10{njpKES1=S6Vy<|z3SAct!~(hO{dliai;GhEj>Tjafc4? z@h*+6;Nn=|bi_tI)W*a}FvF725a)}WA- zz~p^n1dUqot-(*1c&+kf5;yoIB}cDW`F4+#)wkh_<4rs2V73J+-aJmB6f^(VXY03S z15#dyPd>*zU~6hQvVQ3Mp0|^0w9Y$>tDeShs9G=^90reI7_}*Y0!`bIgDFo1i6+$`{FBxLKzukXem;`Gbvk^WPNQ=Jm#J;r~|_`0g{CgJ~OuaQXeDJEt?V z(f|S$uMb&>4GoDCy6t~&L@Oo|*=iG} z?p728;=!4TrgEM|zTy^K3^Yc*TXH}Zoj)i=R|3jd{JS;$?&Dg<1OkIxW}_2_)I|h? zHzph?g5E;I=F!wi78MNzh+rQ)3@n?z)boll^ z-$f0|x9PM&@XMdfzc0cFf_EiEFeqSarEpwoPWK25?M0whM-8n^@D`1TS)@I3>(jG$ z+BrKijuXLj(7V}(n3L9rhhY9&9jOCIGW0K@3YZ-yqMoX%VyfzFGSGkX@mown6DPgY z;%-ub>Chsx_@>2g`Ewe@+Zd^8c$qCz2z1o2spw)E*O-(mO3UmNEN;WNVa25KFujKl zZF)`>D{ZF`=`j5dOI?Cth5MhGCg(zt(@{XyHOhc>{Gnx}6^77*1(Oy29Y(j*-Cxvs zan`G%_?@cH91!bRW>dmfQPLnkpr%*7UkhMyn&F{fk}ojKY#_=Cf>r0`ULpS@cRV3I zF!l+RjiLW*@j5K+T7KcjF!wG;DL0mu1h zbLE1nINYcNEy!U&oj$DcC|&Ro5Nko30hsZ}deIVyEt(8CQsM}z_m*mv)gCbSnVEc| zY=a*#{Hv2p&%Q?cr!5Elu>lGMu>0yGm7iJ>R}Ro==4+HVmmsUilTNSZv6KG^yvhXe ztUUqxmCP_Y+&@W7O9;_o^*#)PC2nWuV8)2TP$=hq{j%taZ0R981ktLg9cIw|2fjZ8 zTtSU&G3|`e5R?CFYNaid?n%S(Z>PPj%qf(R!Se0MJ0V}T+=)e{!hhcMz$T?cYZ8E@ zp4g*gbkM7W%dA?vz+32r5_AR+!{7LjtIK2D@p`8M<&WXZ(IX(h|AYh1bUFAF`=bS# z>a+|ADc)n@O6UD`4QsA}fMv5j*I)~WMuJ~Ic6G2QQb)XSnY^MQWMk$^Q0mW%7(?K3 zEhiw*DaAS^IKIT;+ZQ>t2z`k5RFkQHt(m-KFfh()K~!eCp3w$8(lG7x;{m0_vS00j z1#nRhETV?IX*J@;dwq6VmWtE+fpo+6g>FagGoGN)vvam)+^pljt1s8`dPhLt&l=m9d%ULk(D1rm&0UDBJbrc_=eomu_HWQ!>OFg^`ZiImWQ^Tn;qGd^m2ED3(`lP{P1;t&W) zR9a!B>9O;a@Z&vndY()9_bQ9%RIj_s9bl2fYBO2#v;5}*^53LjzYq|q9bG!RLy_i} zoWyaZ-t3Vgv9GMYDT%+_33QF9jdd%(_6RD^ zE#-Y-QjAvt0V9`6%c&>#GYlX+k;{d|#eJJv5DZsWVyb}|^D4Y6Ctm>~y|1@wCPK|`R4c&1th65o3d z>Gg{6q-342BNnw~*+tXt!lOR`5H1J0aXKWiCs2I}8E?GM%B6cRCFKUQ==Qy-`UNd8 zv0uko7=Rj51qk^r1c!KdMZBYj7OcY8J9qdimD!z3LlAI*fbt6o2dJvvjzn}Wt+myh z%pP^7v7Vrm>$m7$=Q5OTIQxc|C72tN7m$idkq1@mn*0}k3U@<~QV#btEAfPEu8BjY zEdxE1M7pmBl2h8f;D5y&&U7aIY}11;D$vi}E!%v@nI+1vNblZd?nOa)l)bZnRhhz zB&YA-`XrKOmm2gnuSFFw0+AXYqdFP9UOl_K0)tziy}{7Ynl4VX&U3#fA=VY?KTZby zzGMigoD0Piy3!D~Z=_c)Tcbhi7OI-?GZJ{Lp)8d4w&})Lm(W337jnOCO|p^x;+i@= zxo4>vGU+TliZXwA<$sUpoBYoO@U!2gk3vxvGCD(u-Br-c?C-@!*cNIyrYyU|4DU@t z)=Xb;8F47qk=j)aG<$i(=xd^AUEZJQQ3PW(YcoKfQ4Ym!1F;qk2`;n3w=Rz+5kSj^ z{wlL?b#9_oSXh@nuJlxAxV6lc22?Dgt;59{#X3uF8gZ>QWti2r$W8mHII-%&Ls~ zMf_F9&K_wP(=5END zjHH!BxW!DKC?gMH@SR$bLTFv;q9vP9%7EHHi`fM|t(}75c>!P!$J~GyO+zi>(nIT} z1rhY-kOE4f9LEyn=5(@FXIs}K{=$no6QFtsgM(;S5;@1U>3y6OnbZb8*{3#7vAxZWy%pRhOfuYQTpoyY|FGXKyd?SX+9{eJdh=iO5M z>U%`pddQe{x)wsLr&^cc$|3(+QA0ovO3W%UcCo6yjCDnWc(}0V4nEkp`k{9$# zne{k7wUq#`)Bf3jWBSL4j*&fS9%hV2DAtHN%9aCD^8N&}=`>Dd3WknIS_mIliyAVV zSz&a7u%cC4*f+|Lc#~-{If<>>%6IQC6Tl`$#LOWeX2sBBRoc9Oh`K4H)hT-S_cWE#0G5Rz6sFxCXuHnTF9%fcb zf!9?vf>z?IQX!U&*E+jjq7`D^_$oQp9U z%ULS^zIO(2WAaQy%P&z>+K_1ZZbI^cm%8dUU#>8pGrYns*kIs&vMc{>uh})}1WNoK z)G5YoJit%d$mw;{+#HF3ck!CphX2K~BykIw>HoVxo5klmw?cnbaBd$GxBrBjhO9I) zlXc%gj24CKsdlmIm@7XVPYHXU7!7A_=^mYKo_@&~D=Gt35}0tB@5ajsDjUN2p=AWL zVqn(?qY~_Wgf37qIB0Ea-f4uW70=sgCwg(qgiCAXYp196V&q8Zxp_ezpLSlxL!}A+ zpZR@9l_M9%zamPYdFCo$da#$gk4glk(j#pVxrMh3vft-MT z;v(%nB&!(na^UM^tH1Z$&}|U8P&QCUu4?(dUpxG-L$CLHeFFbC5^XFBa3o~ugRtp; z=4M?LBBVcUd*md&6g$xv!XAb^^AADjli*5qa5r(De!L=!SK78LGN|;Sz&`L9wBx~9 z)j(?c!oiy#cO^?iiXhQ#irw7C9_TN~xblfnM6l%cNLjbf7Z*M*J2V*l{9CWZ(8*qx z&S5ip*wGO<0x`^jvE7Up)p#vI-I%Nr)8u218sum#Q9!OG7IY`v3EuRcKi=cEP8LRt`vrjn>ZY*RN|wJM_fZJmY}h z>%W{69n!I*t=E#v?i&?II!A>Wqn}g~f-~Pi4;6J|dkQpk?YbAbh$$*65Mu*tKn6pS zH?B99H?Ej@a=!SoN{m_WQhcXid>ZMwT?QUD;0a*+e?Y}m>MW0WnW)-EFMgXds}CKs z$0Q4EfKC9za!LYOyE42<%1}Y&VP&t90!iTeh%3j!jW>u+WrGf`pK1dDbZi!7pvc`Z zrMdB7RtI^D%K6K04Fu&kf2S4{^UAe6M%=%}E&&7pMzw`M93QF7s%u+fQnswqhc1%A z#y*~&PxN(=3ljG_=h}1dv)ykyQ!pxBF)+B%3}hc*6eT+~(XEc(bNIYEDlC`IM6AKa zOqqqloBEZK19ZmD$6-_15Zx+v_eiBhR)Hf!nn!qRee%tbpMl4?gRo16`H?gD#EP2G zpz^5I5dQ2Lj)#BU=tRVkD9}T5HOi%ayjz3{%V1=ZQ?Q^ZKAO4c4BABqd>}{uw?iHW2N#QpF;LmbRghLK##KI#psU7Qg zpq6o8Hj2C~Y52B8sCs{nU-QRh!UhHjb95oTWjNhKceT=wjJSPQ0@vR zT8!M5@Tv42l~|6LwIpk}gk(CZ`9K)2vs~xc;&7Qqgjx~{in=ht^SQcIsm+Z*CLZ3m zMdF-5P>`BD1ZvQZMfD{RL`)``1mw8Vy^w}_rPW#}I=u@p-El9~hFJ~Du<*xLr&v#v z67zU-Au#V+Wu2w5BLbjMYP|A|z`v&9>fUj4Q#?-*)Pe$%HpyknuK1hF<{jyK*{`qp z`ag+1z*aH!f8#PnNMIw+gNpsHvkVH*-F7NmG$l15zi5;hoWMtp%OVrl35}@}diO-% z)#7Cw>OAnI5=A5_Dt|_n01UwuDN8c}m`Jc$5&$-oZ-?>*s2vS!r6v(IZTc z&lO<&4UK{>wt9XMpkC-Z7dd27*UnRGkT>ITm_ZqV)HiLG^KpOjb`DIo{5Ufe#89Uf zpuXrpz=>udy6Uy_ODX)?iRTt!Rb6{qTc-V^No)n?mh`6zkF&M!aJSx18`T2h~Z7*5+TO1T&fLWW1LyqHx2P)>HC23os@{R;CVD7)x@SU-N zTL~db)PsmDSy(OcB$qQDbf8=eQt6tz{}nfLAa^)co*JVkVF}S2(R!#{GBuPUe8C%B z?>pVF-pu^Ofbv_Z_lg7GDfbg77C{cRH14!jbhd_qgnt8iFr z6n2`Ai=j`Q4nBLPa_REzz{Ji?YyLK!aaV;6Rf~EY(~lMq(X@$l)mD}sB&ZJY;cN^K z;2gGqv+HUL^YtPRLq{gB0gmx>3H&4B0|m5=#HT5lcR+h8BMYKH2)YYZe*T9L%3(3I z3-}~f+_&K1<$NYFT9I zRNiFK!kNcsLae;|5O%4v*Gc-$+8ubh1g%RXBoX$-InAP6`$m2URtARzasW25cLwW= za7rEo>ea&62wQEl*DFsw>|yk%Hes8Q*aXO}Pa@YM!lQbC2T(_scefaYTQ)4TgS=ge z%{EyO3d%x)UZT0eSFi~_nbZ?5dXq4I90D(7L`@os=_fQ2&a|j z4)%f&hRbO8jj=<=rleY|q8R8RgzqUVRgG`gt+#nN*TO4!mNRAo2a;Ir1R64tl>4R3xYqdxCmQIgD~Kip5%PU zDU+%HJj$82o+qJX1n@V!|HGQ(D-vhGql(j@W^+~Mmb)*cbjJx^A=H935d8!$GL3f$7lnNab4V$H(-xJ#*&PN+lsklC$0H*hn3i`3k z@dn*>SN6EatMxJ?5Y3Mx(2mo0~ zLTHZAy)X+Givm-aluQvY3sl~B`<-rp=_%Gape1*61{M1_2#dY#lHnUx#bUeR|3itC zqnw0lZe|R18z)Q^8bhM^RkR+>jeLbS`8`z%kwDkkEItp?8i4!VnU@xRJ;$3z5|9yw5~2>WO6q*Ma^FR>`vOP0pg^) zpr;y}`W&3MN?N&G#o&$&3+iDvwL*S>JpO9D2$P87j@wuypYNcmWS@FE7!# z`|hb^8&J&onghBAdI(N|+I zpE7v?Yz(t^{+`M+xy{^Ui<#F~^tgUyN_TXd^BSOCgndvkm>0dG=|2HWqeB2ilRho1 z;)2P+Kfhym{pEQ^e4HriISE{94Nd10)_;E{R^*>uZgf=;7lm{>?AL*?&XoU17x_a4 zs&F9)=%&gq*%__2ND#DFF-?co$Qb6CsEj^pDk0Q9AGj1*f|$KF|HcqcBAf?~e=Gm-ajtcTCWbKPps(%%eR!gejm|AE z0i=xGa)xVxo|`1sX-e|yS^~wg{1sRAR18`R?m}{#RKyT88|G=GG(*{n0@102poBqN zp|CQ~LL%Od0PX*KE2~ z(%i986Tvu@)NDAJaAHUi_1%qZw5pn?MUb46ZR~o_jxYIPt`LkCfq|JNlji|Y+;q4U zjkvk%mLwgA^YqnN5(fdzq65yl;ow*h)uf|_G=d?_^#DX0b2VUXL#tN&-&s(9r2m=7 z?BSec2B%!tdj4D!oRAY6Y$sMuAgX=;J_C#UY21&s03}y0>y*-zH|XP(wjh3k7?I z^fc-&sTIx9evDS(kZ|T6Ekn&F4jtg(@1XgRIjxY(fZ(r`)~7J zUI6u_7{+`vqIy@-P9myoT0sPYBx9<*G9eV^7Vrx}Mfov8-lR<~jm=`)%&F}H)PpE3 z1?zoe`5j$+JVA4s6SANmEybRc>5OOW#HcAu-l%w9_2TBSyKEaziw50mK@Y9Sa)C&> zn17imO6?X}ZOQ`Q{N^8b~Gz;h{(TN7&|KmwIrtc!gYhI8(6@RDA4G zU$8MtE&D#+v90?AeAJC9pqGyAgbN0`x-n5-?#}1!5;2K49>@u^=PA^a%6toF{jbz~ z+d1d3XWgCeH0zeoHU2T<;vcdh2UQ`{qfY9$cdVA3gHK`V5kY407oO-exGw z>wH{;g6+4+*;zZlQ2h#jr)ZhT-Mx>+I@B-W=m_bfPg^>~ba7eT`h6XzLlE^Xugm2f zj!MFK#a-y%sp;ut?WvdbLqo|h32#&?35f`KMq#w6N}3Iy_mXF@ zQUO9^pOL4&po9u}9dDhsn%iWa55ti|eI_&}4vRw+5QxVV8eDbriAJgohEs%wxl5l% zEIQoADN2WV58ipo5#~7#bv$z5g70pGxU~G`FK(0%`EcjF<<3cD7@~dz59;I*0xO6_ zO>H8pL}{xGyNKtFKNuLCe7{Fi3@@>7cwq5KIKssQ|u3minSonBoaHazZ*(%NIf^ z7GN!b?tvn!oSVL(F|f2dpM>u)7Y0V5FZ(hsJud#o`RTvzE%`a)dv`7cPNoyF_P79r zq563f1r8hrvLC^>zruHlz0?-@HHOWt++xN9Mzpe-B_1LJOku)?b z_}PnttV%1>?a`CS7I8AmwE@ct-qajH0Pv>viQ=u!H(18dX1tlekLl+k;G1umhuzEq4q)b#wh|;1 zbo?s?R7OU)LlM(Kl(l+1zW>~$A^tTw{&CD6KnH(UXA~=As_@HS=A3#(Xq*S;+bO8< ze>mqS6^52?p`%9@<^UOM@owDj0QtzIt&A13@_p6;gfu zW{GXs>LX6|1CC;md4Q5u@U;VC0z&Y54yH6FFhQQhp794f2+lI4Size@KiBJjhNI|? zCE+M$z~?Fqf1N}JWXOl!GJ??{r;j7*So>SIin0Ufb^F^ z)ROS-U9nrXx8KkJlaWYF@QZc^e^2FN?8F+>1D+7=Z;o?iHtN9PhSQFml*poI2r_IQ`UILy*E6z`g=Qs9TGo9Nohf(b@mSyAlX|W6vr5sh$z3EzR}Ie`=^`0UmO6E z{$PM$57k=S+UakdPG4f}j1p-1a`{d z;ZKUCfaDQyW+M=GiQc4@VQ999E8_6ouDE8UY-2#`qY}hf@#;c(P7FcnisKf>U?r*Q zXte>8E){MBJyO|z72i^U7Z7^DjC-iU*VIYN3m|dE^25pjZ>z^h}gT<_Wa-pwZFVMvXKBZXD z0|%fPx{`$9^649~hf;=ZQ78*M%jYi~)~z!xvT}9L0gh=>s;nGVk`T56pWSUA5YI~< z-=57Tz=-y&S)Kj~Oe)c0*gbTNTEpvj_AF9tLfg|{lv@H5Q7UchY5{|~KpFV)hAhLv zvRp})<^J~M9F{PrBOcQSB|I6C2;}C&$Zk=nX-tXXs5!)X-0Vv8-n_ia2&}#|LsG$o z9{xT;Q*$Oj(0jjTpNL8iBe9*pA=2^dHC6td=zlJn{RhGM)A97VRjJjSkH~!2!^05- z@!wr+ArPErDOkt68!DP2UzK73nH+Evq2O_GY^>XW4I@dFG8+l8yvZm70kqi?3Y0uu2vNA^oRIXQr!nG zO?S~Y!cAc$d<G9r_pGu$K6rk9h8Md4sVZz={o7jV3N$>l0^(aHqd&Az6*rL zK!zKRm(Wp(Wiu7{TM7^=PsD&ahSBYA(YC%_yZJN%>6y}{m&-xd32H#}@Qkd4r(u&P z!#j;|iKt_w%FrHE_>hNw*~#8yzl#`5rbZLkG;SFBp zpBFd}V1g=g;Ery$FtZ_BiPkdPfU54rP3N+9;Z@}cdiTKYkLlPaNie%DI1HFvhxcJd zas#maTGhZA&z#8BafM&F{a;9dfAelyCYs8~R&Xzr-RYvkX-5iS#wjKK_FGg_%P0r4 z;Cw1LIWZ?h7T}Ukrm;*9rVRL~eAR@ygp)9mAhSs*LATx_#cZdxc#`W=UCK)t^o%iH zgQZIMT1?Nph{fU>;G8h_;f%Bnjw-rnH5BB&M+C=dl!9;Jex|p7uZvaEWI$M&>sS!Z zZfc7KD}W8#jlK>^H{=x}-%6Ytays}d#pdB7bp!u|0(JR-Z{9>%TgCn!&W2+ijpWgc_Q%WU-T82;xu+F+#YJ zLN<;hu_RfNF3RS)4Wnd1U|}V3Jd_$@_ula}neW%Dig;$o`!Wr9>7c=@uTj#T>)I95 zOl8WJV+~G7vdPDP+}K2E5vYQmJt;cpN8FqQFOqk2ka2j3tz>zXW!vsh=_rwf*EtS> zL{!lP()&n_kG>QquTY9VItIi#3s+Dx6H3}Qr(N&0L>1BrMNi<-jG*t(A5~E;cV(hR ztGWk$d_dE09PcQ#LH^cLqLz}0M8cENmK=zFU+BT8Q+5FsX{nj2D0A~2#8f>|do4d* zei{2Dh{VdkrS;WD?s-8n&XslBhnu9zdaGRyTL}7jWyh*aoFa;i^s<-T%p7mto(5Zag(x{ghF91Db*N zFYok~Buh{{8M45Dv5y>*Os)p|)1tWuVR~6@P!cZc{c<2$kqAdV@{a9jXFU<$ed&WA z`EUo+<1pXNVpFSz4r^{=p6HMXZV(haHl2D#^r~t59$r(krpRRX^pLe3ypZ0$9dv+K zNEM_pgi4rRNd#WV>7R(^j;}k&6EOtqVZ848mr7cPOqYd7m6(gNUD$)LAs{Lx>G{hl z_-D(rV?V=F0t@`kA~apxTHBgyJS8%MGcIr$9-RJ?-wx>qqhjTDkLXq5(6;D~nY*nV z0GigzuzC9*qekKD8=&KB1y7e2w2p^xs%QrEKTd^SXn5-5ptLX!MqpOt<8n6}>#<4> zkaY!Y2JubpS{)fwkPvBORdXvG_aj|&E98II?Oq|=#r*ClCXv^#b=SEG95x>H0~wzs z=^g$pG%cSp?D{!{;3kfn!H&T@@MZ7TL?~odDizvG2EfP##m(8Xb z|L}uKYG&h&B_C4}C6<*}ig9i2^sWw@<;wX-@UHDL=GsTzS(f$cMH&IQ46q!4@2eGb z9wrMLN)Zsk?4lzNh2b&b0jMEp2-=14kJ!(}QFP^fxOb&)2Z)zsGE10t$c)vU?2yg!Jtj(vSmtLC?S`Ab3_y+4X| z24bo8l6q_|HkMZjkfK=``hN?@iFkM9} znJPWFOF#>s>}R;Tsw-tZpOLRFyza=|)e#dcA0Mr_I&jK0?`vAV}i1-5Nh1CokBm7^Y_ z@#(G2!TMJurxU=C{nbbU^y$&~-Db>VG_G_r6p2=QfWDSe3|4oU(MW2pw{Uk?UN^?0 za?;jagq#YA{&(d^N&R>+Y_X#>h0CuQJgm-AElUq~xSXNWFpphR(|;oCG1ZMX!?px` z4-d!|DaI_qN}k+&3z1(Tr{6g62Rj6@1KAQ-nwkiitg^KrPC`+|aM90$ z8VQeMOxWgpoo^zJ^+MT=)xaFw30Ic0t`8a)CL*%pGwtrkN>4`$=={u@mZ~%7hs;BHb<{Fz6-V@ecGMpSOgh5-SA$ ztU6aIfe;!R`W=G;1U<4^}TO6XBXPn;Gwm16%Z5I?h+rbpt0nMDDul|BWVpD0ip zS@Y;9i_fc`N-Y*~NPJ7$9On8>bWw-9PGQEtbP zs}YzZFto4GO<%~Vc%wFmTegnL%4OH%6W&2w?IF^&Q~6Ql*UtxwwXgkB68 z#wC)U8pU#`@&ghQ;zaxn;7fgPDJkq`i(XoAX0^xc$ESu0(rKtk-?^gCn(O8WtJ?|L zT7qwM4FZ3a(P6DGKQbnnQn6gQspi_jBqg!snb$$hwNDE2m|1xI4m=EweYZ-ibp^D@ z<99`hQWdGX9*X|cg+XwbjQM?^3>2i44}Mp5WBrg1=c2=kXW!;X=iTt!>Lsfawz{)4 zGy)2Zu&ZllLl#DPbQyq#S-jgM_eP#bZ@q#!IVe{ zPf|l})-xHr6H)--2xOsV#1t(x`w9&7=Z>vNS65^;^4!bSGrEb3J&>ese>2au^vCp) z%$Q24R?&sJR+Ox{(&%a?Io8|2+hk$6XeoVFU;r zy-%{Ipc9Vmk7^XR&*X^2@RXNrr z3T-fwxxOwt*T&d&#y2i*7Dt?&@iWOUFmqN2wQVztDWGpMU*S|@kKO&3G@2_LHVAFp z^0YAU^3Qqw8wLj?rT^^|OGlg6)YxMU$Q@rxR62%nj(>MD5~w;!3&_=gckn5_P`k7G^5*0=Q5k7nsDxo|EW z(<##2=mVw3)o@{F_tsvwutwp-U=5u)FCYZZ%kmdgP==il7;i#o>^m&lY_S1Pu6xu0 zsqyK{>egce*ZKJf5JmOq%U<*Oq&o3?8aD&$Z$%Z|mz|R-4QK1(V6wiI#kjv#5P_bg z)-YYWWvpK~3)JOyTu;sJd@0(*Zx_+-AbOJAlj_qrBof3?cGl*FS9E0svwBm9{y_`~ zzeeC1Pyf5&e7=j6RGy~|E)K7mDyr5Flt&{^N@{asXAVMO#2 z-KWohW*fXRr<6rrq=^ER_{BA8%ElhxZ7(C*Qm_Q8J5#BbRg=_E>>P|6W8%DcNC~;i zwZc6633=f;>y$*c2y$xQc^^S`sQKy{7(<=_|1uh!Pz2ek5RoQUjDR`^u}DOlVonv^ z>rO79)j>hBGS|RIZq|$oT`F!|GrYj4ghfFGu{g<*c~(uPJxiNbTcW^5yxzpRY1tjACZ~GIKC#V>N6jU5((urR%GF zZ4ZpbE@e>m%2H)xy3*%b=q;5G_p7V!ck?loAe%HC<|x&PVQ205wB343OZR{(;*!{s z;FNZ+3y?aORWyx<%Df$a_tjC4fs+%^!30o$o9cRXdWsd%8*A;_u#JKG?`o=(5I5YF zyyYH|`;|%LCZ>HIkgY#!Q;`c^AnC$&h{SGa1ESzxXb~V)O+x^Oc?$zvZ$*@Sg3`;qy{TOyVn7fz`US2Lx&nz!TS!6DLLV!wsuS_7{WS@UNd?A7I0ir;RKqLPa^qd z(JT*w*F5~E%ROhbDKqN8hY2*YmJ5-PK!(xA^dI)l2{g20ZJYr&^I zH4N+{SRh2ref6kzKK4rwLFBTnf()mL6t%oiekti$+|%@1U-wsLA>V`Pf(k&jv$r-{ zrkk)LEY-7T43IY5c(u&G1ubJS3uMsr-sk*07($@*q?!c`UGhY$qbEe4XIpo9v}p*yH5I6h;-I@y<1{Lugo z+fEln=bP;cir2-F^ za#*;erXqM9K9KE`B8AZ9!DNv7Vg7V&_0U4XBHoerWZt`o+a8^P9pzz^D|9Se9h%MP62vG!u)Sp;SyHNRF?oE!RPImm3tbBi4*zf&46~cRxG0|`N&U0%S zKJHDl(#+~u8X&=n=K+@dDw1k`!t~P7^s|e$sxZVok_Z_K@MFG-!3DnbGarI3Gj(I< zOa&=Q^HyF$j`457Tt2dQIx99|Cd@IAG;ArLb{ldFb(mG2S-#i?s?Hn#yL9T>1~FuAA-45{-UtdTU4_H2F3S^olPJNgdZ`s|#yMYdVFZi*v5>}~6#sfHYg^$X zO6c#L-+HB`(EB=X3=zcgKILL_O#qDx5{sI0hJgD?`wDUAXnx(32%XC{r!duIcQn zJkej+BSatW1a!QnuSr46`d2|EkXT>ZEYh$MCda@LWcu2WLVc;`uR$`z-TL4{)_rIcft@r56JFjw2} zq?rEGZI9^XAQ%Npa#VDIdrAw7c2x&)WfgG;_*U7W5r(!&A_r5x*0P)L(!Lq8!ogjG zxB`1i((l3uLIwID2`Bqoq6$~@E2ga|+;2WIST4e%Mn^hv*-{WgURUw3!~WM1*b&11 zZHyeOTcVv|oYH*WZ_NjvhIALZKMCP6g`yt0X?57(>@!%?MT= zvB4mliPqy8Y=k{Ve$>AHQ#hAQ5#SR{5v<@*_Q2KVu=I$K-M0RLgPz0r*>=hn@XS2rF?8AI*_Kp*dkor8i4R_o`h3aC{s*zH^@}^D-(KOKSH;!> zNb5R3G}+#g3*G?QlIeqZ)CztZ7JZ{2)G?Sm=)x#ZOVP&Cyp-k;4sia53G|ZN?ieRo zjA}IlWj8ItSMXxrm^(2=Ye|qSF#Z~Aqc(?-+PfY+1d!Mcu4ZT#%yMtxluiD%7 zxk!xRJTlimDtswsyzCTBM4sMEc)&VHC|hg&{kp$uj?W5Q6kQm&D+yv_7G0M)qwKuY zX-rpzCM--MxLlzmc{y`<@7lu=qItq8Lpe(zxa2$ixv%mTnqFF4RP<)cIz4;@ifHE1 zn*Wr;GHlqhrqdJ#;jqx7bi=oLLLVYy&q)BNH3)ekG(Q`4_0&7a8BJ90A~A_h`7pw8 zems04;;Upkxx7;)#>B4lEixA}pP#_#0!#gK@ZRBJ0iW=z5gRSjw_k^kk*JLW1U#+x zQn_P(epSqi4%FM)iK2JR<Ent9U$5UApPuC zAtQ=iWp6X68)(+{iB`a3&)&)maXQvs%_C+xL1w5knb856$o=UwkCJEKtv!&hcDxL z4_ZRoS<+O;o=7QfMS!LAFD-#s&!-QnBUV3?2;1%=py{`Y!63DLB8YAwvptPK(IidM z_;`z1th*K|Ue@h4xT9{%cmV`}x{))nuQlXarv@e}1QTjkgg|!Ol*H`@rdiGnU+05H z0Dl)k#A+aAj~)^WWMBwc3PhtLC-qWr)0D8j73IzawQ8&le~aPi;SZjPUG!JGX4m>T zgxs@Xf>l33b_ZtEpxDW*zH(MD~s~JW9_q5=fH(fi8VYi`8=&t~CrA`n4c< zqsYr5)%|quaAf2YIjxnmwr-=ZxB7)xae?~@AvbL(YJH;e%iR$f)3&n5C|nF*g>$IN zlrJYPFzYhgIe1du{~-)5RU&PgQY=lh>t&8CK&x}ChvuLr>q^ z+?Evch5uR-AH9C?4Crn`h^3BAPcMC#0+_K$b4Z-mn%5?31|Q+ODbrYz5A;OHYroYf zE6C($&umI}{WKjn89jtPTPi;BzEgU zqEW@(N>tf=EkPy{m~%)1%m6o%tm=1sW|g9}BjQci8&bG}SLiX+5tXON^sp|75?ZOR znVif_ssKGqb7}}>cDyofue?e;`xTUTEz7%E4`U?ec-q7hUB6@4Q);QA->%o%Ex@&z zP$qnA9+3Bh9B~D<7*IYL{l~wP$8ZO$#LWV;k)acw6n3gE{LC)F-*9gxV^jR)SO`Z5 z25nHCNK;6)8o{{go@fNO`4NGm>zpkMH+L4628WU!HvcYlY4dKn=g7-CvLMbejPFBorwBr#fY8Z7{HEZx;S z29Av@M-Hf6oD0?WJ99|+9dkN{so{q3MI$YQKzKU=`(SYZ2!7o?tj;JP0(Uo?6&60~ z!afHC;1SwIwlO&To`0F_ZE;1DmlsYN!kTa$x5@mrA`t+SXzT7bmtR8e3~)~|kzkY0 z7+U{Yhn2>A^7;v4m`0i{v3{ef!B1%PLUtTT!m2#wym^k_Z8nSQBg^Ju<^Fm=WUY-- z+Rg|4(=s}$Aji{WJ$i}sD2WlR7|u@xgl@h2tb@ggbjef*oaAy~kHKSMjB zz}93kWOlhx0%c&cLy7ELweKPW%v)hc5dKWK)Op$7I>d>yI(fR$h~Y76oQEe66d!KS}|TU*5%a51Y>`iy56iA3;VO0XLDGow%A+3 zmhc#M6a>^(?@kgR(@+Qo5AFb|);$8;2Cns?n$HuBj1VBRi4!wILLhg#h&y<0M@wg| z%y42y2DKd0vpZ~idYm`ZhqKQNO8l2(s$MV$M}gucR!_S6+6>oC)>=m-PeL>ah4$@>Z23{U&``qN9q}tFj>CmvL)%JEcMXSJd5+v|@GYOJm;#Fn6hIivj~C4wP7I_KsOkf{W37uC3V;C80gSP>ZezI~qKHYc(p-3HOQ#FV zc3j{(3!QLir>nKBdc+U&!=M@d7?8q%s=1a4490Q_QqdT%!`sFxeP!be3~q>`=IeTF z!u4$jhXLrnD`*;ZqX>MfWU)>@u!hUjs0Wl<=ehe3OM}3f#i%7M&*|K%gQVTxx|@}e zl4INe{?;0GE#o(sb7b(qo;>mj$8iXVQ3~j#>6m@15D+Oz>)uoG>Oc-pr;qu4<2_ew zeV+ogw-xjlNask3-(GO4-4+{xQfo(g4qhkr@&P<7pJR_ z#gu}74zM#D{#r0E-Wk8RaxtWDB$xh{XrHN;@*%3XL+ZvqS2xYPGLRY`lGnOK87@43 zJk1C|Z;>x6ThDx2$(AI^FOGQPgc4d$xLdcS`fi`;f#e&Z*V+OB7b_`68ZaDP?AvNR z1T@xUA~nq5RIvtSWTq{iieRCMnZ6q+z|z(S+$8b!AXO>qIGo+U@=)&}L7i|gZydqV zfEpk}1k!5O+dC*gS+y(7Q>nQa`>=X4VAPM zU8OvXC&#~iWN5MFw1`lTlSAd^XnSSnu1zI?2q(}r8+o69{l(6?JGGeD%;x4XV8y9d zbHkDXJOd@aw@f{N9w`kI8Ey8yK+g%~8WS|Vs=}<|k2{J;vNg={$0akpw*y2}e1o=# z&W?lYe{xpmd)A1K<*vurQsEs!{Nq@b(@)Iws{woByt?)qmIpI1vrAVN8PL#0Sc`?R z`q*Id!w{Ska7`DP{!s<~WOg$PzDRNuN4K^pBq@aCH8Kf}zVRnmn+yR!VpDSXu(C+( z>s(T6x?l(%xEi7L5uW+j*A<5C8`42lf&_DU3w)O=5yn&%*|$GLklwwO7&@>(za!MIw;N1noVyucyq6;m#oA6Mz-lR&=n3)u2%- zG(zMJ1X&m`>pW^ zCsiDv$Nphxl$%%y6Yy$J(c^>j==wX;sA=@XddzHA*(GGNYxZiXX;_G3B*DmS^2awx z1{0q&5?Y=p^VO1XK8(hp`u^h6M(a_287Tnvk*qm4V){{&L3e0mDwn^Uc_y};4Z#>2 z37IM3+g^F)tN>?Wi-x1t+S^9iXdG6D4J67Dp4=$kQdgz8l6= zB0#~HCg1r5J-aM(j%zNL7o*Wn@bKm-BNgK@oIb%Q+2w1~U2&fla;jx`46b{By)_Wl zF5*JJC7EWK$0zz%VC^PU{(}Kfzo#d3baV^}0?-GOo;icDw2+gr1&Ve>0ekf`d~D8i zJA>$^Yx)!l4A@K?8n`)LW}dU{Tp|y<=hnRu0f^>hR3KZupbtlkrk?IZ{!`X`Y1?cj zu{B$WBVpW{2lAI=bV8*U1ceXKp6#Ut+!|Y&CT+r|!+;?dr%Z+^rq_skaN*Ph>j9Ts z^67*(K;=b_G8pZ4W2%SK$n}g}nd~i&7G>?vX@pXXf=d1#jy#lozn{cu9Y^2%& zi5+maxhkMiPU-n9{)bnwvh_E+vWXBg&0>%>1W;EAn4?V%*C!$zWV-|oR3`eA+p<21 z{?JYh6oXFALL{vtjPvVnBmtaE%Zw12)GsMh6{u5od0Ph&Rxl7?5B^H_(U+wFqJ=;W zsXyckv~jkQ6f&+jdm%TBjAiZP7W;lC**fg0Ks@EjH9v+F9VKurq7wc0R8ZuW8nMIz z(_L6T+F49<;lbZxc@v>x;K_)xFgHV}))t*h*KH9YXjvG?kV$KnKy%s^cYd~-{4+xn zAmD{;1M!^|K1hC)ji8=~>HeP-4p{bc)!j6#$UqRCm&f6Fb`zm{P|ozf8E?z;Jt zlmmCoPg8lw1s5#z$=X}X9}pKvM)}nnu&Gz53#Zm+v{AoO4bX260baQ#4cf%{q)y_6 z`$>=jX=&Wkln>2$R=P7*%6(1kDj=03d1xO5f4lyKrH zOnF}O^C6Ru&&YdP~_Y>a3UcO#)i+pXg`f*lv(np-XYxEzD@v zgbIBTB|ED4fB?VGV4XLY0ZU5#+Y_G5l68b_u;@M$mJs70&NYPZ=*KkbBkdm>d3riL zBSdN49t;^F47JJp%1}%7mkxhTd%Lg&&vu~?Ot8Z-F#JR$1}{%d*>Upd83A|T^{8;- z^%Ws%eR&TH64!n2C_2$ynG6?wT+mJqxpHzEH&p?)SbO8%HqIS#*DIqeFxmsrR=3W` ztm2&f@9+#_wXA)-{{-XUY^Y*_QxzIjK1njSTdo4K2bN6IV3ia_N6JLA%!Xg?(U+Ta z+ZWDTu_4gZXNzydg?= zkNF`#v5DsXzvOgl^s(~rdu|Y|hQL}A8M^>AU&x!7agtuk15a{C<-%N-)uPJ;zPntH zk{*%=%{npjD{*pS`G1=o=bJ^rE??1e>m6lh%v7NFjiHG60Tx|cH|*oA`o!Th`&@;R zXCtUhQqg+2 zCs@>0U)pb9Hsp|8oWW}mM%xUu2&B3TSrs3Iy^~}T=%qP)o|LvF!K`2;wWAI=My>fp zm5mf5*#I9qv?0y3F*{ME4Qwx~#Z-KZqg%7GyR8r!WaYGyGND(MV z(Ocex7R8Ei)S2Aslq#gAdLmy47a_(d-+&tc>q)vRlPxrn(=&83rJ*%j z0>Dgw>}jhI$pL0W92PO+MWO&vsy@5M?7)FPuz1gT0g1pJX;R*Mx4YRSNJ$=-4jogs zY6`EacL{Af_&8GwoJ2$!_|LpCVqu&^nft%q%z6OT`h%C)20FzwoSI?Qsf?`_gcP5| z?Mig}Zj@f&gP*85r%y)rGI9)u-7gi;Z(<9{z+k&U2HYUTzI2D1j0G3Q_NPnXJp?Pq zldpObr(BxkAsEfeG~zOQ38D!Ld60FA#qH#I?s?CNHoRzF3pRwI@=t;|sJ&^YOi8V6 z;kq79LCI&**LmkP%H)DE(%uoE6e0key4mKEnPi%dk-oluVbw>}GT4|+%Y(2rfJKyc z(n&1SNDu%G9L1pZ2kTD)go|bjcRO00PJ9$PG;PgJ;Qc+kL+x z%fuMI=>gt8dZ>2b?FV#0JWCW}yC*=UE0LJjO~=Ki=|1b?yo}dO`V*G+-T;;hk;{o| z3-j;k=EI%qq&~TNBq~+&>H4Ew_DZeNc@^dBr2te#7583sxrCB>;PPoEhHehElynuucg92*>0q{d@g1)9bW`c`PIZT_tKE=rL`T%KAG}!>fpWX?o74QL?=kjee z0hw{I>y_lMkl1y21@d>cTe)Of(~T68f(gynn+x8*Xja1Y_Kg;$C--Fspa%zg;~lN6 z^;+Zm$(Yhs7zy4^6X$%A%j}lvSCFyc;<8x#Xk^heV+e&$c#lXa-w81x;e14@+dIZv zfDJ8+OS-urHm;?Q!36Q^Dl0`13HU3$k;<&NqN=l$32o==f8-&4Y;RyYVM0^=LtaDP zMT}1GX`XzO1{EzLc=qUk;hNmtESQFi`(KWbiMUvAydz{KlJSc0xk=zS297CL_%`uN zBvqB&MsTP=m6r2uKe130$`A7{F%WgmD~vRIUA|wB(r}$6nRI6CeeF2a_oawCW|vU2 zUvWgg4FTI@qjc;*$Q(VH`~@^Su%rnxF zOqG_edD`}FuELh-fB%c{IFx-BMzdw!{R>b&3^ej0Ef}u~UujKQ8f$dExndbJb&5x$ z_vI%wg%5Gaute7SP3a6Kn=>ol;tu7j-T3W}I8&`o5l zZ$k)o@X`BIB=u{clR7(?r2iDkq{VGGvJcWlmXpj_kxlZck zsTPH0s)jwi(*$j>7CQpmCq=p#su@_xMs2y=0bT_m$WgeQF;}a+KmIVSwta$YvZGKy zQo?t(k(eE7q=L$(0y9&prci{fXbQo2%x5LNmzpaDj!!KS|Qpb(G-_t?v1pPlN$c28{j=#Sg!K`rTC z!Cywhs)K?^NTc8ZP%PCtVKQL9YtVN3G~;=fR?6O}%np=F7IJkJuoCY9{5ZS+^>!?wZ3Eh5H5~h>6tzscApsiW8p# zB@a|;+HceXF4@BpGnmqa0F(oT1*!Uwbk-kg(UC2>a+C}j>Bt2>?F<_hs5zf+w33pg zP3U?QQxacIL>2zR79`_)x6@2x@)7f|-3m@kl^mb8xR&7#nu~=bWynZG^Ba>r3=+q~* zX=4zv)J79vTW$-#?0rEP2AbMPB!nea5g465XS#zRNphsm!;UXA?akB9zg;v=LiDe{ z9w`mXj6LfORJI)lZXUC+|NJ`CSPQ9u&NmG@vmEW<4+3mRORDJ)X)R#{@O=bD%yhRw z`2b_IlANM$y}=~V+_iPMRXgP5th79o#zXu2>L7Ccqx^_RJ<++~ith-{(Ly~vPQVL` z&b9z7BP&nVv2BR@kXAceHwaC08e4SxQc*{+WC^XT^Y(^eW)8}!nr}Y@H{LMZ1$hFs zR9VUP=Tn4G@~9ud^Bg%&b90NuYwG}lQ4NricJ}GX>mDX4%zZ<|H?DwoaTYJ4-ERtT zu;m7E9mhZ)sCq1Px0*Fz%Zyi3o)H(Cb51263(^<4&1CIwPrFhYUyssli*@(`qC*|c zM(d=lMqX}go0Bu98_%wS|$T^kIvg%8`VU2RrhblCI z?1BVnuIriAn{aK2^WvxH_8ih!^ntVXE$;B5JD@JFP>rQPZX0003kbC+3<{ORsRPr? z)_#mxY~KZ=+i6xlL$JJpAf&+kcwLtomX#~CIg^l9ZyRQU&6M>~25s4a%v9SS6;mcP z+Y&RD`iX$Tggk#~w`r>ip>0y!prSO$adNUz(;ngt>o4h=zzT9jE&=oRj(sJUlbT(tiL3=q?0+0sjz#-G*$*F}en zkWG;rDZh}(j5!5DP=eD!(?=U>_2?nb&h-}C`OV0C9#76~z&jJhH9baaqPH4SvCuv~ zdF!W54t~*UO|$O)cS6rpWg6VA&ItyJJu4*h>E@CuSVLucGNgrv4Wy8~+WbWTwGU;d z1F9 z!rBX?=Ck1WC4!c1NnTU3z#GKDN75LUCN5pW$WH*NNw%{TU<#?`@4?{7Fw`snAmlZ? z{fsX~>fe|r-`y|;K2XSNJxZ*=5AovStP(8U`3QaF^_Gf{6hmO`rQ!^y)Pl_dXUgAOaA5USme8%D4t zF1)4l=R+c4=oZRH`;YKf*--)6a_Y2mkfy^?Z%_>MneF@}ad3{=`@?v}cvAJL@!>g5 zYA6y+3X6$d^7J~}oVQXZiHhqXH*;lukIWOFQ(qQDaq4Mg3Z=}GX^TC>B2$VsQD4O94m{VHLxE; z2JPP~J) z%+RsqyRRalcARt2o$mQKz5bbgd+)@FCShU^OzTgbxQyWTFWzQtS#L&%eLN&C&L_l(V^CW%#fPi+sz~h5_Y$bp>!OSmc0ewg3J}TSphPXEU ztrH5M#!N4AIO}q`z?~LpiKa*M0fe&IFRBX}!(kA)sGOQ6%p4qA^OohuM-QI>xWnBjNB8zl@xM$(AsHTvk^pO78>GTBn-A;=SOz(R1>t_I4ikYiX8u5{1Vmni zi}*WxU&Mi!p(m~ejo_r@uCX~1L!aGul>wY)#x-3#mEA?g7E^~zF@tcGR1hcuwWuc( z(1zn|gk>7~uLA%tTG2hnM$I;pU8(E!wlP6%8f~|P(e_?v+dCGac4IkN7}-lrP8I|U zP=S1nix*ev$-rh?3&kE9&X;s|aw+NQFco%r;W`RTN@rYnCvSbTV>zr??~0sEpb0k- zPZ{J$vVP2$C5G~B>M~@Fp(sGOoR1Tm=Z%+KFP5}kc9--BL;t?gRJGd*y@MD zaA=GhHX*UthY#Q@GAz;n-8;y7g~e?N9p=pJqQATwCFe`0W(mH_X9+R)#E$t}$fNcg z3M+lr(MeTO(tV(AASI5w91fu5(7bx?3z1`xQQ9eL1(S+X09jH@0g2^<3K@}VMQoKu zE}3=)02b67g$*Jf98CEg-YXz~f^QJikO#zz}-ynSn(se23MG zQS^d|(DwRtQ9cQ>I^(!u1?f&j2dKumAE@Q8mL-?EBQ;3-p?yr)Wkir6fvkq(;Lh1t z+&J-zH8YP)pTGk#%w~9pKXRmb7k;g|INZ4q9M8-g2T;KENL}nKZk$U44~~R2D2V`J z!6Lw7*mK)f{4>-*(vJxeTeullqoY%k4$ZqF1s3m7R);xPkl69gG|L{dxVo04I?|O} z5p@Fr#pyWZW~vjmvfw)nM{ z`qXDs$k#_zV{k(z=vos^U%l)CD-l}?H{R>Fg7D{PVJI27%SNWa$#r zjI?j#H076Acg+jaYh}|E*JrqCaEn57fEx~R2R8RrL2SX!N;%pwI5*jOpPZ~0g;{P$ z4L;EdZ-*THR7Fl5VKY0i1?@7QnT|3}>EJuUpS(FUKucSJkJ2PWXpSRzmhbUAZ}zsyO=X?XUv}y=AW;e%5%>yeBA0fpMMOy zmDB~5*5d~93$&2q`IFRmr^YeX4D~0llE*5+J4G$%`N-F@wYj7RWG@o&)zgy%JI?^1 zf;N)}F*J%eqbvUpAH@@Qn8U0wC_RZO%^u)Y<>5=S!wE{YP}0Cj61S4Q$A z#=sw+Q2tBRTur2dqyV(1Z~y!jN3SFbTmZVt)(>4WoY6ql-fB{CE!C+yO?VuZ0DyBm zbM;;z?o=d+^>Ozjbx@HG=x;i~lRZQDk=e72VfDmnZy30`U(d z(&q8`IkHq7blS@!QIFnC3Lrq`@#z_^b)jvp!R6n5MQGU)USFwnU7*Vs0t!SGw&unP zoJ>6K$e?xga7aHF)spikNfK<@GpwaQPOG-Sd_3|Nqwog#Vyvr*m;`>a7a#iY@Mhy_ z^+dRXu~r}vbb%Ld^w*$_S|rBZ{x0^}XR5-wei<6tKm6Bbz7B>iqb8>Po`J%HD}YS2 zfE}Uf;zPC*Oi&yAeBBBfOuMVNwlxigay3J5aSX%Ll^Ix1%7C(mm?-iZiLDJGT7Q6a zfk8#@s+2SU0>ZoiveEwmu^WR3svlD1)0KSc_^W6VZilsOB1nXxd7Ub^R2MqcOiUPR zQmj5RNZ~nk438r*%^aE7WZEW;pT}UjjKoup~XK$n0fPcb8@GJ z9369;0eAI55)QuVl^p#$v0Dd$f^M9pgn>DYRh>s+Pgft9YrY9W>i$WiGD{KRHMp(ei zknb9dCUfW&icM8AV+txYa74&To9#W4$R9hJ00miW;jlBwz7%Gf!SfR3PI@R%@R*Gj zND+2vIt6UFu9>s3ilXOoJHKn1whud#F0+v3inLl#WK8AaSWM*7{a)vVc8VGzrzZ zGqZk9+HsqNGM2wx&g8pb#xMcDc7;(kpf5lQr!X82Z~;8AvG0@}tN>f|VFP#gvIeLV zdLWVX0)>MYqYo7t(`Q(-j~hBN7{0+d2eU9d!Gr#q)cJ6urH)bLazV7E%mfEqCz?Y5 zG>;?6dErZhF!VqUp))2>-m7EIOu_BZd8Kwb-UY>s>LIh+N`5E0_eb$Ve<9QwrG&tC zBUSF=pLuZuA2Xsa|TR5=PX1v>{fJ^jp#I#7Stw}fUu&IJZoA_=Vr>Lras+2IaSZ~n zmsCIyF%^Npz;X$oA!2SANeNkD5&tpr17BhlfVUrYgn@r}iwwfhQ z_phbl+AYV7jEm)yfOt})Q}O5%+amF?d>(T3=@G7O7*U4ttjuSighY^R4lXdl1TpVA zOB59BN}kbBQOKI%212g#sG7Lid!8g=0$EegbvbvUzf;-;4_fb8f7iue&XC&W|Ygsp$VOVv>J3J{ce00a& zs2qYH2(0a&9Ib!a0!GSk2SmnaCwlj1R^|80PyuCs)ILOdIp}$z18boGyxN27JyG$- zf&(~Z>TGGXka0P2d885heb!b0A^5sB7i+>EIx|y`gs%0*xg>_B>4zXgQXr$Ufdc&Fh-`&M zsbxh+LT7E3)Akhy?9%z8LJ|8t)F)xkc^!R%G~9(2rdUzAv;k^Zq^ubb*vIn^KwOi? z`8iQh8s1D3A%(Y7sLQPod@+@5=d1X0yhP9-3IPR*T{Qz^K;ia797~S2!7W&xyt@jB zT0Sa(pt<@i;l^b{9=gm$hN0>Dl!wXAOIENK`LSTj^@`q2xABZqrzqeXRJiO+?+9HhTOwWp5P!k z%kwrU+p1UnD>^@qwTuAp^k?G9$R8bdU~pw^qJ%{cI3KFyIx8Kbyrl zE9-xTnunngVybHv2hTt$LOkpdSAu>!j>ToqaetGSk@Ju$hGi0MPH9y$Q^HYRoi1ma z)glVb9DCD8m!bbFDjWxTg z4mN}fRCsb+d9cE@&1XasTeX`_7KI2a(uN+Jn($U$<*Yi&m-9#*@s-!td4;luHq}(P z!Bsul)8Y#s*-Ao8XoO1$YG`4nm}!*UlVpXtBCW`Ob3ewFc80k+^>`ZtjLN62c*Ir& zF578T;82yUnT0AfNFQDbZd_^K>w~~Z?chR257Gy8gtk!xe+-p>O|0;*+JM8xQ zeeNs+0Ykd(q?P9o0Z(j*8tXITJOaEF+ofAe&aftUdO8Z!#vplje>(@>1Cbp>qg1|@ zj({>CWiv!7``spuT&2v{-OPdE6HpR4S4m3-Y^9N;m#dyG2<6_%1ttRb!OGTP77ZBk z#fu3 zG0Tygt)9;59VtBJm%tau`1AdLVX8-WcfB9>t$!2JDEfk8P*eL(exk0eHe zVM&&*@v?e@#{DQ=&eMzE+KcN#i{s*tx_G0{>jaAX^JknN5db=uivlfBA{!Qrd*Y@#XHK15NVK_#Wky2bX8^S z6;+HrOtOHM@5v!L+hmsuqFqHgK&>T)jt>&-UT4@IuHI(|I19T>L_*bM$_@{Z9T%YZ zgZeJCHhrB$*O5hLp}`^11pllO5%y4r#6}PhS{e=R?6ec$#Mj*Iq+x z*)eE!;-0~H9CwUnKF#N!f2XutP014{55)=#-_GP54KhY-HzMdQ(r434X*0YC!w!l( zkLiBQWu0CmI9C3^(-nV41#f?!8K~0P!KCSGLg*C0Qk# zBFtx0gEuwcM8Z%qL3e!rvmDFcIm3)g&BNhE;^pgoU{ETPjc&+x6vQK$E0p@Yq1)`M zyaECVPK%^_bH5iB~X4G2Y zEuPwu77Y0MfS z(wZ|!&tw~zpg0$Dmn#-y>b9xuXmh^`GvxLU>L!xoD>VAS)w_DqY|;ZFhu<~hEFA)MFc|1a+_2`(Ybd25MnBz&L>k|*}L zEfwk#1t?OjI2mEu$^LBr*?!YuZLz{-p|URNtx>xThSopQwo2EPIvF;L-r|XmDA?xv ztVExr^YnqwE4I}xpfGiS18}1ba7*GbF?!XS);DwW#)ny{gVv9jj&*<54dR$Orx1&R zM)a`i1)@ZJxv=dC4&QX0DLKZ1b4=G`;5E@iBdEp(&_rQROSE0;4ZPsojq#L0qSS*r zq{{X_ftRnNI&wllrV}kNl}Du4#=;%r1JQDEy9tT+g2aIa;o@FIB`EyF=syu8p^jYT zb41H4%L9nUthEE~p4xN<=6l6#Q=O^2*wi5{@LuxH<6Yr&455MppG}_ACcqx@w*Q@p z>Ob+iH_2u_{s;THLkF}e2>mH4KFjK3%Ef>^XDm-0EF`_TpeFj-(Vf!WT2UkHot#zcUbr2wRo-=?Jp6yG3mCj> z9Mcl+YdZhIhA~-tQjp64287KC2HL|Pi`FnCx-C3m6QTKT+_i_7fVNAib2?VEr|*kr z2_d8LxE%bza^z4lt*IqlLI681+YFOf`?g!r$oq2In^JO3K>bM+odQ$!GwTG55MWQ% z?LKYX&N~uq{$yE=@BQ6*QG93OuCp;q^@jN4Ney=|1K?_bOR{hYr7>vGt>B1jJY78kF z1Ro0-G11m}o`{vas;Wek0WXb<-$q*bSDpctyBZlixGR%N$I)KbBQunkXI%!yyQZOz0lTLYUW1;qevE}^l* zT`hI1#(R17b;1l_!}2ko7G=XOubc0(^wy1bFBq4d$Ovh%tZ2LPN%$XO8gH>DCz=wi?ps35biXVzn)#1~8=1OIv8Xb^b))aWAYSxR5el)@c*0yN&get?8b0(T zjE8T27-&@>E2k972s)qJr2OaEdB)R?+u9wI^FMA>UEQ zw!fhRa>F?M^H9vji*;Du%}byv>{p9Ij7Tmd<+%h9$eYgV0-xeomtys`j&^-zkOj;F zuCS)S+P*#tAZZooG#?2q$SiS=I3q+3$Sz$ya8_LKeR~>s7@X<1Z8jsD<;l3;<04rC z7lQCm1{wfiK%T#Ks=i=hSZpEQYXP@TW^YczK7D#7qubEn{ZUqHgK@eEJDx-~9_f|d-Tcl`VUsYJ3@SLFT)$DQpBHz?j$jb4 zMYlt`EIu$vPHSX0eAea_GC;`pj4t`#anG|UV3G?bEV7bsG%yA&Ppak-=9|JFt2}~f zF}9y!*NnDOFPqY5$0)}*A${x^`VRt1vZZZ~Z_d@DK`B)sWlc}Rx2+u+Tj>Qc%b`a; zcMPo7O6_JT)Y33W4gkfjDvSio7XqX)xj=bWfZ4 zhoGD76*>rzb%LwQ#}sf$W??4;26yS-eHJ4>5b$aX#T*!ekV%PL} zUyg7cEk&T|c&%CF*l3?Ti&FI6QMcn3ZO$v8l3Gts#SOVG0LbU*7?k2sED-&dX^4Oq zMfK2;S^?cX-O0#teVpdl_51c5PGPJVJ0WFb(-(M|Ax7h@>>xT&dTi;&ktn{7(`V$s zcakbAq52t8g|3c+)nwtM2~F?j4*)am*|L`|3WTJw(j-47*U`s(pZp}Ehl&>s=u3X3 z%%~St2vEW{8S5pF?r;MCPCUP>xdwz@Yg)u>?zw2j z%z%MG_!x8DuAB@@^q|(oP0(}B0N&M&yQylm2Zb? z#I-bph5$aj6i$kfivTCP#i>}oItmGJG8v5wSnJ|5lqiVraebyMy{8mwHH^)JBzJm^ z-;7fJk@7ppr{C7%b2ml}twz?brvZs=-QGZr9n-hY z>&z!5BbcxNh?c+hN9cGu7?yCFDLh;RJ<~!kBMdmhm$HA77MGGY9Z}8+EV_T3&>&8b zHOs-%m}}f&ny`ACScCOAhe~21Y`~?}@9gZD0Yqv9+~hQb?pxmhM~)H=Yw64vT^6QO zOWADT+lnIFt)tg$yD8}H<-45dmM3}$KA)bo*PO}8jkAa{vCYB#rv_`%9WOKaj|z?u zqQScICU|qLjE^;rk-QXf?<*pbd15Q1t@bMkhjob;!# z8WOHek1ojm?Xj69*JS_1-a*lD2E+!M`x~!qS-IwAe+^ss*`Gfz#hx19u~yBQauw5#GB zYC<@#(o~jHcZm&C8jf*dNF*Xp zTNgt0k6VgnhJ?@}qM1*!jhUFNVC)2t`euqHJ?-Ppty4a2uWSf8uwt(}TN`^>Cs+Fi zK4*3XNq`yvn_RGSp1ibV=iXl{=M3^%l^mg4Ek zE+0^r6r+Xkkc~L3lHt+dnX2ccx1lTLE?lhg$aJA_Lkfs1z-v4CHRV;w^_?!pINp-i z2z+7Dd)vn%OxSOn{+K3(ly@g%`kjG;{|>YjTXhy4MU#j^ZIWIm8ULa}Xe^x9T`tM9 z4bVMgC5TQQ8EAsfMg|V}jl*%_Dp|Uy6a;j*k>y399|B7d`+&?20K(=}PW-yI5@PIx z#^eEg8$ocR>1r*nWNFz!T!&Ijaw;b*?yplb9fS$hgnrSFA(26S?Ybr*u#c959PDIN zr5(TO1PKcoO&1oHcdgQrla?)R!jPo@lGCUTxY@4lgyEy{CJyRJcUcL6 zvczh=M%#o*+2({(vYf zWa{*!uNVyUG%N*?o9nls9e+thfReDHg`5~596r`WFtThGIpthasY}hzctFwU?pOrH zqm5uzr;Y3Q9%TgCGGZ5C&@IZ6Xn4`qwm9va4yoJ`?(^MQtfTtbdt5X-k%NX|#@wn+ zKGg=~RhJ~-?B|HVeS%v1#cTqb#wviOy!E@CmR21=DVDQ)|Ics-Q?5qYlVkKCkY&QI zy6RRE{jWe^i!#y}7(~Zz-F4vVi;#M;k>aa#XSRjMc1Ihi6}ut?rR@aw|AjR7V~a!= zD#>Agd>3flI1K_hfvAwyMgE`4nmwi078=W)?Mco4QUg4{@)T4#Bj=2xd6 zht|>Zu6K?0;WL4(ZeO%>dPoukNUZiJT{#8e^`6gTVcF?gle))m_^0)SG|flQY|?Cj{e#9>`p*TJ}zOp`%#xc@Dc}ekO2gS5<+(RRjeKq zmzq}b^{GTGEFv2e1U~ue7^$7y7u-rj2Xg^pybvpIJPS1R7s)S6rxT7_CXWn1tuh(p zUwgrRyaruz$$%)x$x!Z1^&=_g9Q(}sb1r@=HOs+9VG4tvwFI{O>^%romE}!rE2veX zsj6@wqLLEJN7&Q0^vLFl*NFuzoa0{TpyE|Kr4cMZOi2l;qq)hvmyHLPK#Bk}w&^c< zrWd3cq7f)?6Fy7)CG}!3P@J^9*?J%D1YVLUMYS9G)`LM918QgK+&qC(7>(dgw=Ya1IYH(+eJo0?)1yq8mLetZE zma_L)HSgd3T^Ml}ylY4|w9= zKtI$h1^y((S$Ed`xTI*2_?9ub06!^<<_d+^*Hek>WYoO4yq(F-1^6Q@Lo|abn7|5N z7`~vkz1UD#vrU>17h%xkWFh*9vE6chz%MM|HC_-%G%po2lbRxu;$#_G!3b+{>DQ)S z<&BD}wn-2M`Dinf$gT#fft&d2RC9ux9QP__m!+jH5a2A2vK@r*H@=u^;kHq%pRKU; zfXbUMnZmbCJ%WYF9Dl1KoO|8&M~-d)jpFj>3^yjp7}7F2U-8e#MdV(>?Ij7ut!h`f zq$fol(?m7LOWwu+FAp*-X8W(Q7~cA%@uC8ARRb=;7Lr1{lglRp74x_gvOUIRMtv=v zYfC!5QN0I%o~Ey1^RMN8l*yuS3p{W$B8?S`I!sp3lLTvX*@@!-#)3Y2Q7>}Zk38i? zLO`Xb)QJkq(pVUNN2NgK%qu8u3}aj{8^_nP>5}Fs7^ago`~x*!c)XCD zHwkh!(%F^oVO8}-7ST|6n~KYaIF{IDW+> zP@2s9)Mt!kriVZF$f4}ACM_UWIG9~t6~^OTF!Ay#bAO{v@P*mK*u%BxDrxf`e;LcD zpBjDeS*8%9lR-oKdUo~xcdguEa+*vGVCle>OlujYk#YQ_k`QV}G)SVMS`M9+L>kgBmzpumu2LgF^HxFS+_-%o%oa3 zGj36!%V!0!UOAe9nHp*@4`VZ7cd60#x%VhA_6gyic*2{y^{7=}>2D41IgB;8Yo|aW zjXxLy(z`+z*FAD0^fO@Fs`BQ{`h;4CCLVYm$g3*AGXX1jVu>YQH!Zn*SEZmOa@G_q zh<^^(sK`Tv0A7oHl_5mg9=!AdB=p|BJkd7g!JuM*`LB^)YNS~>rA%UCE^1iU*rBA zrlIqE893-RkBat)on!H_u9ji1?A+KCX(kVML6izP?xAkZ+qnZDp1O{P_Ldpqz0;G1 z@P31-4SvxVefa1tF?Iz@uKasoJGK=Zy_U~j{x)fqlQU5y4IVuBnK-1z`fm6EV^oCh zJfDyb=~)lXhHUpFVV8^6k>v-yli)32re^KXBaWEnmvot+x0a0R`a;{kk1Jt$o0^+p z7dPPda$tUIK?{$;H>>~RIkt=9RUz{eIuAWw&k~ZWbjNZ2d6MKOB4f0Q9+~X*W!6MY ztwcfKpNtKp0Y}*O4Jl0%bw1gTNnA?5@FKA9rMmPGKeD#*PX(Bb!BwX1qMRefm2ckB z)bCCeRE&y(gWyx_0+BHmn}rE64*PRBoLd_l-ijK0+U51=IUE}o_>4lfDa}k~d zUdaDd+D){w7G{@|@rQK&@N2yqbr!sgsLEk9>4Fe**Iac)7T&P|TR&4hCFl@cdbjpy zMM&`eTV|t$#1jYmYgX%WhB(+{U~e@ zN3;ZmeGBO!E_Kye-x^@Q$HWdh&4Kir3Tb!OH;z_nO1Ni+b zv=3}xVy<5`594U5cX<%l$St8KM!Os;GLU<2SM1Yay)_)boh=fo5jp}&9e4ziUZev6 z?8f^Uc9^S!Nad5#tj3KRw}p8Yu7r1o@Igsdun;<-Rsh03E-=@(Ugc+$GH zcRkHMH0d{CAc;kKGnviRMJ)htjiWQGd@wG-LLz0SpYOTt>Vs7i=RbB~ekBJw=ms#B zj(~QQ6=fzWDDk{g`s#gvP8s0gRk;hck>|jYsx(@{P?O%ygB|z1{c*UwpLYU!>{Cg| zAy>+MbC&z_%6=#xza~kp6|;iv27J9lAI4b#=1~ggoJ5@4|qW&5L61B zk!d_O@tmUyS(cP98d4}_zHt($GOTmDbOUBHjQ|h3dY2!K9gjzEA_TWQU|!r}k;F}5 zT$i9w<7^5T)cZDiPz}`9-E&w1+W6CIuCXjDX@1lwDB|XF!XGAVAgM#bzn1q;F zVT*DTZH{$Tch|2tx1Qi8nnZ@_)G4jMk z%dNb758KZ}w-D2bnQ+X-_+#?l)pfw?s+Wn+5HHq>DV0E}_ z4`r8=ZeTaUoM(!9xAO4i;*&|MSga|&w1u{qwaY=^;7z!IzII`KALZ}!0vXG*%;Hcn zxex_KGs9m^2kwY5xU?D@FEB|beGqHN{h14tRu-f14W0xE>+~$?aSi8M%5zEvy*I_5 zQpr?E9kka7-X$*bUl3T(VBJ-Ng*DA{&Ud(%P$|$&g9flBn2nR47;Y~OlO*mtSry#- zzzlC2HscNZ4wVKeH)XBE`Irc6FhZ#o;i4TRtj22*sbq~XZJ9Eb^ub2wm^*R)*3293 z^QgG+v4oLgn^D8-E}Rp%hHj)+L1ust4fl8p7ia21VJxQ(q6kP>WSCGKEp31{=zsvY z(F+p)1+#0Gkub00?9N+Yo*Ane1P5O%TTg}J_z_>Ac0E-G^BN}x5h(s`Z zjCL(oC?8VnGA^nWC=k@P0w6piTp?D3I=vC&TFTKnP2W6r*22KVRijqJ0U2H_BA5_A zKTUjTX3`Af zERVPxbo)`FXMGllq%x^ix88Wlwd>zG+NN%qQ*ss=!X->zkb{~DM8v789svA*bDCMb zqUoE?T)b%=swc+Okm~@2HXW4I^YQfXE}6tVRvsBmZXl5t_oW4TdK9{$v~7+WcCn}c zWy;mCJB0hOokXJZyZ*-#-uQn~)21!(4|Jr?k;p9qILG&RvvulEYs$2c ziuL|;6psUp*7}A{!@3423OPYE9NBJBu#0x7TR&|m0Hb$27>!5+qtw6#2l1NB#cf*^*-_n1~`1F1s?{Rv6f(9Z7Ogj`vnQ1fkd&4RTR>3 z{LwvK6+;`(l_E*%F?}ZI=fe z%oEo!DW7h67%FeV5f$<56VO0_Z05RT8^o6|m==3BNW}{5&b&TM*dA03yv6nf*n^p$ zc&is*&K1sBUY*yI1EqioyaS&X^;{+lJub>_U64YyO$ei*==8H5Gp48;2%^AM>F1Qd z2j3Fsd{DrmARq&gyw495@?c_u-8)DtjAU~kEOl3XL9(PK7lV!{2ShR7Nt<3^pCFZ} z$m@WhaO1C@rP}ZFo`}#|LYn2-^}52IF})>dE7$U^GIUXXv7k_A(sb-hI!1@dGHTi< z%f}e!nnD`wm## zJZmZ-x)(SOA`A{Yn(9FUl<$`l)0(f_fpwiE6RF8fte@gdn8MT4!*x1IwtHva#;mK+xBhuY~b$g&9M!dY}@CX z2Sty|Vp=z{cTq9-;&**;-JqwSkxJn^2Qm!flwT$c5NZ{e3O7w#xS4tAWxbcfFF`g- z?A?YBAcAU-)}t^;CBr4->O468z=8$X5j2iRNI%j{4x*+X2HXvkc)stL4<73}jB0X4 z^)o~`UVSyD9&w>YdIa)Lo-aL4j-RkxAmr`BTd>;bjG^2i4KG1NdCUFS$uc)E&jNg0}FZhK_JN@Iq^9wfXFt6%Z1_6T>>qUtl_$lBn)W$PXMFx9N{q zhkCon^(Fw}Zm!y#s@yXN&|17-Rv6dyGB&vmDPQrqK$ybs!jD)<9Rhj_dY%fG*zcW2gwUQy{jp@dP4XA<>2&AcmS%yXQ^o*dfY}9{?qHtEaLRSvY%;ZaRN57NU=( z=8#!#W-T*v8-M`n=A%>}gh5aHs1_;ulK|Jw@;?tHOC_E_4rL)WBj67Vj-pF*ldTRJ zt#;!01DA(!AZ>j0PwcF7JiK_(lS@XNs&o{iDqZi|NU@^$?F&7E<^NP00NYUbv*YJoT{dTuyO0 za8#D?Vtd0aw?#bnzU%Hyg(kj1_%+i?xP2kp{wJwf53aZi(+fd&8PY;3E=3ZW$HNfY z0pdg^WZL((T{(s_X|CGoqf%Q?tqO4$dFBvJQzsY)3QRw(C6IR$HMmiqln7xz0W2RV`fd_VD=ox1&2`Dr&VH`vG*QS z!IME(PwDedzGjshSB<&O^I#ob4+>F1TY(U*x)(Ok1ail!4-BDQ&pCe+8Zq6u8OG&7 znQmhNknj>BlQ9H{GUFs8t|N2}x!%tab0cmAV0Bey?}`O0+2u=gW4V?~Oa3rzf1o;nLV^mW-ZCk=`|-zWCae)0cWias0$= zY;z9u66t*O(&)yCjg1>zb{BqFxoCPAGLz&szWZs7klci?y{T;I5I!^knQ;QhKaihw z9dh#UE&T?;)IDmrxDbRpNq)J146+IH#dXdNpI%!)_#H|2MJCXl;%ty8AWL=_ZdV@u z%JU_yU%14^1{Gq9PUq0c^YZMl#~kiC58q9-IT-uCgh!o637qaY&XEeNpOdRYz%$KZ zT;lkE;5w>aWYd`{a>Q;E2!tbj0R+Y!4GFmdbAO@JtsOKNZhxRM<~PD=AYf-e!#BbLf6AvIE%+nq`#-^`Vh(ko^ZTYg^{XSqH0J* zHfJhh@#IA%(qcFeb@Waq7Nvzf>UCefoj1QY7Ip07&7-HsFcp$8rMb!O2?eU1_TRdm zk`S$W&v#L2?S(NQ?lTKs;;CZFtT0Y0W;3Vv{@lX|?252vKpyJ8veMCn*&1xGIn!kq zY`L$6-=hyl3lLfIe>MjzP{k8#CPu?7@LowEaf+9=4nvCS;Nl8>yI{YeJ!NJBr#a?b zfQ;SEqV8LgOwX+O44Q|mTlg9mmtRm_F;K<+Gn02S<$Z_IbiVNxGm3e=Tolb1T;Y0K z20aRTV=|kU1-eLygv)~=rc7$!AOW(a(HA1X^CPF77{deIUZpYhuoNAQLg0gKGQBm| zf`4-2eZ(P-Zq?1c6*CdY$;P772H*yO7v(Z05_K(aB0MCbA#+^h2n=-Gm{)C?T4I{y zU|=#tPQWL~jEDDJ`=>Rq(OQM~{doqFaZIqL>UAM{xWaDXfQ?QGw;|#O#&&(EQW!&P z-h>a0=3M&61=e8@&JZFDDrX_V=>Ki=^aF*B9$6g#s(0WZ)%hl-V?-^4#pTuP`~6lB zVwi)#?@^gHNm*1>vS8OwH>wV63Ldm22#xxu{%cOFts_P=UYe(F5I6zfa*FVmD2=~# z8a1FWuWBTT7b2ym{DwI?vL7XP4>CO)KNOZ2N~6ziT#JxlE^bD(J**5vi{e=IyqW@Y zpov6>rCkQ%q=Ym@GX*QnEVOC$8m)noaSCX`U63@xK-k)1ugchu?2L2SHkGbSow!%( z;qSHa36Am)T^79t8AGM9dRMn@zhaKC_u2;Ky{eZtH7<$ee#8}s%@o6ABN?tZjAMvI zU7Uc))^WiFD#-??%>+@6^U(p=3>o~U)Hj^&k>2$Nz=hQ%(EFqZhP>SMdovrWB%^hz zJMuF+9Ug|*_Kj_cj@87RX2t9rHqKt z@P4xKjUOXU#6XjF&Y3T+kn;zAqR{~8Fck08MiL3J&)Qn0D76ncbAVw>PkRRp>?U(} zu;g@1?^qn@Ez|G1DxEtq*VD~IXoO5nu64kE8XuPBe2-rEDZ0v@nrz$H+!|MHJ z8it`KW8Vjeos90K-nAN>0;c6}3LrQbWSJL?QfdJJO{{@U=wrVVjp;I{B2yf$jTeQb-uvklW~+I6}nD-%tNFi`1)XMP!XEX3?{!{`9bi;zT3<}4J9(F3f*}N*d8q7+7whKLx4gQ zY>77FqX)?L^A5Ba(%JT2dL7(0D=8F}fGXZ*7!zl*L6b0HjWHBF5E{jiI2&40V7Q)< zK&{<=HXU%A)!H{jG@H8!5bOYV0Kbn*vV{S6m)eR4Ze`A|;uz8^pX|>FBd>i&nrSp+ z(wm{V*zKj}$ef^>+i|@K!%_^oPS>qi;Fany=EUs8Rj|byJA!;srPUEPHMBBk zi0#R)e&VZWRQDu8yHY2p>@pzb;Ll?qck!Wt%+3&`C}0FGK{Bm%>M) z=QAZ6g5~?K$Qv&bYRP4g7zo`l3H#BMS~{|%&ChklBO)AX!<0HJZK~cYa5E8`tqPu_UEZ~2x zRVfgzGSZkA=?#QKpTkeHG%b^Hxz*xur`xUn$8TtI&iG*2n-aI0Jq#Ivs^5}l;D~q$ zC5e1UeS*~0y_*Y&>R1Mp6XA<>keHD`P!V=L93R=#oUl7rR|5{MstGlgfo??#6h4DpeYGUkW30w zs1{`-wQ9e_WetJIwGx+X?H2bou+iHtnS1ge^Oj$P_`0BeM>g*6TuTH1&x9tP!&r#f z1*3iu;~>t^5KBI4qZhA(o6&#+p0M$@=1ttBy`ziLPyST6p@ChM0IU;2;Qy58QGSB$ z_OcHsD#mP&f=(zDKa=*L4_m3YJx|r-L{l~Gex%i;u`s!F7`$bpRy2Msz=c9&g?c#H}h8D+}?Xr;o)uXyB*79NTwg@%rc>v+HDG0+!*jJAVw|hiH z%-or6K||m5X|;Dog4zDs5iiq=GXPHwgm64o?l6YB1CKzBJweN7a^%Ey0 zb$uw7ybJ|rLZ#{F%jg8e+OQUf>eC4_*+Gye>%SUsd)&$oUL1QMH zjY{l~4^Qer#MyQ)(f(#_!H5E9VrIlU)0j>g+1Kvl&;O_6TIzrvw6aHLz#XEd5OLiO z>zmZ^lS`%P$r0B6CPzF2lMIpNB@yc64f)i>e+itB-&Ci(B!KB%H1fsrt^dYaSCXXD zn{gE(1EQR$Gl%ZQW$okOHZ}CT4eN-5JjvHxrMTc?>FtpU)E%E9(MXQFIDX6avVgI4 zFK=0jW5aN%oEp;?e;~8efd&nnvi-cvheVw$EQ6tbsz`?Vc0ydi6ogBU@c!2ymy^C< zG*-T;^pOI>(QH+PDz?%ibi3JLP_zs=4tPf=V*ZvYtiW$wmS1HC+}blROUF^zovYgv zmmfKpSeXXtHXJl0eFd-^T1bc0m?*Z{K14$d>@1%k6>2ppXSLsk29Cq+WN()rFoywk zr(GAaLWDxdG?EyaL=y~hn3B85Y=CXo)?&q2LPD?ht!rZ2+4Xn-A}q;oikZKlxbGS$ zR(q=hb=a<`+6Y;+Ppf<2S?o}PDdWcl2%gp%cPe5w^Vi$#g% z+OU4$HJR^Q7sQ5M_jGMNk@^c1s@CF3wenDF?Pg22?B~opREi6YWGlVeaA;5Iy> zBOZ4RJ3&cp(;YGo6Ss4!H+7aFFF_u!4#q zA1kw{Dt@sYWhDmP1Zb!k7p(~x&`!47(S&5TW&#uEs~8eel-5~j0d%8O7OXXU!G_so zHzz85i<|I=43KhF2xZaE9?8VnuR*;|YUt8FvNls;9VnZE$=TW%jj0iRp~70D3NIsI zUe==nOk)=pJ0>v5>KHtCkRdBkTEXG50ynO(zsJD@p)IhmP>f$4iz* zXxm!C{0RILC)J?x_RXLh2VpmG!9hL# z=2I#pt4|_=Z&98KumSU-`4Pli0<&m51viWQ;^%X03^<xT$y0&` zenW-nzf)YkgF0`|yD15_d~rI^ENI1127CXN*P-N9Y=MdR1tfJ++4FLD;l89Q0H zvy7?6^qJ#nDPIUWa(G11j05TFL)<0nln6l7N^M(qmqlbI7Pte47(4CVY!uCW*l6v9@ zM)U_55one1#%Mq)^HL$|8sg}OV)Y3-Sd)!!f|p4Buc!0#7kdPIH#dvQcHKjn8K=G6 zFq~8Mbz#NRg&;+MgJ+|6e0rOb6yW6xdA6P5W-%!2=JzE6kPqt&r3nuM3>fN8mxwp8 zG18kd>c)MSzqy8&UH@n;>i(+&Dx;nXFj&Ts57jdZ?1@Ni&3bp(36tK(vX(^5UI9vH zNJ(OlV{(dJw@r^)Ivp5z6~cN@$2S(-3b#)e|R&cmq8h? z+e|f;11bj%55&DXQIIZOL?J`)6wgNY^uT5!@Si6O!-xlCtttUuI$;;@mA}@K5feiS z*_+J*j8~&Hf)R-TN)`*bkMm0cnnolFM*|)XKAtRIQV=EQT>(saTkCK{geiVnN}t*x zWqDXh_P;I3cBlw4E3r}QQp@t{?cP(9me0E?8Cha&2S?V=S@jv1B2G$e-_=eP{i6PV zP69LTjpya-WPbLQ#g<>L>&QL&YpdB`c|^Dfs6xx$X+$>(+>v`O{OhMwl{&|6iTde- zreKL6V9MwN3omS*TTa4e;LwDVuXS7L#n+%}n7oCXR6MD%Tjd7`(h|1(bR67UK%$}LTEKM+lD`+gY48&-N$DMOgcXz1Rm$LspG7%R*IG5L zeQtv%u5X{y8OGUgnYT1m_Jiy83DYtF4nt^1Td|r?MUb`N5l(+21#%awR=x*B_l})Q z=;KQe=wAg83j`84t>6jV0OO^%8OL2MJQ@dNO1Y;h1R@#l9e5tZ)Dlr#fVN&$z2a|= z6DT#fvz1@7Cv)@O|L-LPmZC_N_L0Z2NF0%I z6Fs`ucD#1ZdNVtWunVR!uo(RpyA4?91L z%czOzzRSma2yhG+C&t9iNY6B?d4&PJXf4^U!uNG48H2YaGk9TT3(?gIG6WI{p$%a8 zHk8df=_{5;3e?AA?y#6Bm5wb7mS_#w?sWy7Xa4|qu~hh}MX(a$FY;i(g6Inz4r6hT zB-!#)c`!e((3RB0rrJ=KL4slI8#rs41>&cn_*U7#bj5UlF_-bnj6CvCFY(>MjUxfH za4b$w8iH!6#Bd0dgWET-(u+}EgM$P-+y0&Gb*yGDhS_D6&qD>o*C)6iPvYwLfILIq z%DfVv2aOer^yWK?!Q}K{<0ac@wsB|`Msh%-t+?mc^Z*0|>%Cf*DUR|^}S^^Bgw;tH3O3JK&?rXM%Mt5Di%2XR*z9z@K zd}5#*CE2tI#~qE4EYVTfwHya6UGm!Zz3+HqAgT&fFl~tm_bUf+RPN>GjJOMgyuKWu zr?InW=4EQqo}mZM8e2DCOb+!WSi{z-Oq-b;griLO@$^k=!HDCjsN|3@6SlLZr|VaX za@>j89_1Dt4e!%^T)=;#kSPm5{jc5>t)~1ETXt<}3z<1fPW&SzmOCKbXN)`H?T~r{ zopc2Ov}ZYxRaAD8FmVC3n+IP9IS;W8oD=K1`PJeiA#bbzoO#0t4ACj7{$ zK_3aZ=0_q<=us!A@ksq1#Me<#=EX_TAi$wHP{b0f@MWer^&KjO%?R%*__))WsGG)c z_gd5R{E90wH5m|D3x6Aqe2JAD+^=#SP^&T@+&uJtQW?-vW_ho4Es_K+5Tb-D{i1&g zZ6Np1-~sEO0jH_!g}O8S=-CANl=A`MaVYkpI_COg)(8)TihQ1nsn5xpj}s$rpPH^P z;;nXew~fpOvS<~JIq-6q99Bn2V%}kp&|QgAZk@NLlE*fk8iLg}EoXJbv5}s#upXL0 zN(d28!;JkvrZ{ftS~HrLzbN;!|E7RXwpxRkbM%^aJG+tsUuW_dZ`p#SNbS@?K^woY z@Rd*=VaMl?KYzxfy`gD`7a6J51~tVo$KFOzWMPO(QjoEoBm$tCx_fyT8v$&QSI56V zI4JuJNDt6&BA{Tv-gGT@(tKKMqy?it^eA(-61f3Y->ixYDjz&}V142>X8!n`d&msE z+{tm@`~{E<`zAyxOJ(m&c9R;tPBSm5msgZNDFQbl+!|11s&5H=+@xvv+D<^hvH>sx zX@wb)`z?K%rg+-Rn-2F-EccXkqT4GSXx$s@ssXb+l$+{GvcRzr-nwF`0R)QH`>;27 zfs~b%E3VSNCMH}wcW=B8QFTE)V9^#P&#b#C$34I#HwoPBr|QBsWNvP`nZ4-I;V#P3N zHC>0Cg8-p)op0V-KSnq_=NI>ftSai-Wi+Q`#@ONYPYO73krBDnF_Ta^)nuMBKAfJZ zEGT$`;~M6vWWQGwALw<$TZC$0q50Wo<#i|o6ubsQ6#hc|!$F@0N2n}OI|oy#Jk42G z2Z46x3b#wi>Dps+Lrm$QqzMx+#CBj5spqu~nd}{DTd=Jf^Ij9~>31%?)?1 zk6fVwI)kPopWlOH^T?R(4*qCp-=9xsqz&~bYYyCT;V(W+TniU`-O%Fh) z!J22Hsg>jrlIs_=$;a_KKDOJnJB{8C+zy(ofYt;81JJH{zB`tW8DpwhCq@j&&Qxe4 zR)X|}uARbtRvSRfwfjG~n`pf{zoCh`8a2mnk2MqtCMG~HO^t7mj4rP6s1gIGG1+r# za9cs4L9|Yx?v&);*WWn1hn5%zynT0F54l!Nl!H|7#v046@dPQ4j|@%6R8pa<2l|_- zmk|KGxAX;Xbq&|KZGQY757{>f+5^{;eSuZG2{vyKoo`x{!joxq8&nT&rh9VkK2sT| zB)cFCKN=V(POmaxVrCfOQb(I59=Qq9NONrP!3g8B41;gVS@e#;Rt~9{zJ>MNY{Dp0 zroU25bAjBDR^E z_L5EcnZqPt9wGYUxr#jT@ZRCvioH)DFTxmVq@Yi4$4?myr(mhfISDwKu7Ll^5lQOz zX~L@Xd(5|1Wq!h1MT+_1MzZw&e?SfAEFX=!vd0g(kkDD=HL@AJpk7!|2YW>OP%PO^ zANMzFSPxKU^3EV5sen@no_h{S7>28@l-%~i86WfRSqQcoigme0RW*KGJx5@ z$paBJ3rkl3=u%&uH`cJYtU?CzL>fKLXrJi zHjuvj37MY+VHFFnEu>Og~(N-^x7*szMOzXTZ-z{6`VOHL-nHXWlocK zjf>9TSJ9kyABQT(=yO%-o=H0@8`H zIEJ1d^PvoQzAwhKWsQyn5jp2H&}qRP%cR(SHiEf!OZ+43xUQH8b70zAeSKAi^*BnTs8_wK;Gk-fJrx%CTj0kCp=PCBw`1PV|)8*Jzj%c=a~EC0qex6pEfo4Il?dk?cP*CTV|K z8(Q40{pYR5oevIz2M=x&oK~MSE5!E*f~k#YNS=$ceI#`XOQe>wxT~yf3tDjJ07V#U zdhgcu4DS}-cB3CM$n@<(Vtb_pTETA-Xcd#^<(-Kd`;WI%rXpX^Qc`Ma{UgNY((M+E zT8W{{6Cf32N+@{Pd0XQ^gpjk)5KH|ax%-kQwcn3M2?kn~)XSqTgre9>F3FwtT{u}p z5D%p-{SDN|Y_7rQV6Uus3gy>A<~<6Uj+vnYd6b(taV9Nc4EoRQJo!TN19k@+gPZVq zP`bg^0r75Wsw$aBkVZAGB9M{X(3oN-TLYo{w$T0WK%>?C{QaNZ?CA4ea@NrnZ#I%% znQDLm9cbjecAGYzanxnS9P6K?rLYkcxRg+(MaWAd16nr^Jav{YBBVWg@W7xn*$ixj9ia8zul!6qbkaZF$RxK^+YN0A$yRk@Oq#sbm9d&KQ`J)n3EG>$#%otu} zYcKcnodjBP7&I+FSX5MM2hSYVx(K^}&k*YO@k(0 z-@AH_+GEYPm68y-PR>au;CST}Eyy-_`9Kvh8`FAJ_ZP^83FuyKsM2_fhS?GI@$!uvo+A+fIA&n8BHcR@w*`MQQw#al{y{~s!Q>t5FJpIRV0JzyKTOi zCLc&a(U<0;cUqazH_-!0IQX8_uR+Ee>*1z_XvapYp)%)GPCtxO^^yP`^9iB?>4yX; zd!r3#&_R3fok4;Af_zon{o&hUX3+N}6%2Bx;({7mdA(EuD#XJL$Tf4{D1i|wBaAi;e2YFs>Z2ST;*{x#=^MK971;`oUAJE?A=s=E4`Bi{U?FD>5HXe;}uwn6aO^s+ji6vci)vqFG*brfZaeq z37%#s7dr>WtG8dzQT*F_FS7DWF_qkLcRui__e`G7&$Q4^EZPb}~W`c0^k#+LIz&1xzWm?kQ zRZM>a{WX{L5<|>ODD~K>5L9U^_SXSlpk{**(=Mog9p)xgaqDVU=8q-xG&NOEx_vK| zmJLd05yOjaExyOLu-8G=jS$U+iMl6c?TXe&iwLJ&x5ZL&3g^NEv!-5$?}VKkgAc#Y zZSy4dkl?fPF<1p@;y0s?gD^mjvcQ64V?{K^Q6)a8{(90t+ZtSY6~Y@nxvB+qGnXue z1HWIRi3xSF;tjpgLFe{a&{YSSmV1wT1WqpRa(zhPng0aLW2|4aT3jb&gL9vTWnG;) zBLfsy>dGH8<-(pX(_01>m5h9vjH(_osYN=&=?4NKnZ6v+Bc4_GbJK}v`0SUzKnajB z&vFkoEolHXqTl|DcmrGb${F2kSG_%LckVh6IewZt`=YE-?4xIJUl!`qb?yq05EKbz z{r#Xk(3{J6HSZQ^oMX|vHCf!3_njKzrU+BjBwzb<#)Ab@%1-Hx4 zQWEQ=fui_-5rfn#fsnNk*h*o}R-py*Ja=L3owcN^t7-|HX4aUj1y5G6_Dpfy2!pEW zHppYf_7glNHzI4K$aF(1cA+{JxA~G{yH-{}3=XM9t_q+mT6I(vZ?v6zxpa5qrMtVN zySuwnN?N>hcSuQhcZlev8|emVDUpy8(8uq+H~-Ddx7O@AXMbn!J!^>Q0Puwk0O)tQ+Yl3rC-F;oG6ov7rBU z+(#oI-%m>&ml;f38t|RARU$Kx5N60_6J2fUo;f-N{`3p;^_t1c-X#A02}47k0}u zxPQ~?pkhvj?B#8vBflA?X_qe)IP&b5))nagQ3;R~8!vvcMw#mI%BpYSq^)LOHS)7m zHyagZs;&Gv>R8R_x^NfHmYy~4Z}F#WZ<@sm%+1Y1r19r2=G;V9>e!UNI zIoe2=m4f)m2ogu4013aBsH5Mh)V(g`iT8l+@EU?J!4i#N_$eDb^J!f19n~9s0)5T1 zxUMHVa^-bRcHY%_y}04pBw38ov7@(9Sgdq%Tij7Rux)KGLg%FC1xqp_i^-$Uawszeo?aKFr<<3QdL+Qh0=PTq-1sL zCXyv`_E&}itrzoJ858ZefT_Wn0}S~4pt$)@`|I%g%fgJpi#PkP((@AwXVmx^Qo;(O ziv{}GTpYZ6xEs|1T`J8?zPEZ@qkVE`=_m<3Blv5IZ}ijs3!3^2X`%v43(Mh=orMpL z{zs_4mJvS(j-W1GfrTPxP10T`W!E{NE2Z-unOr7z3870}C*lKz=7cZWpy))TZPDbv z=GCjO%9KCp7H~9g+}jF>#T}(Z^Xo5q$2l`H2OYZcN7k(f1R|PHbg`4~Ze7b>5t=>J zNcGODw;vxKkl9~#iGYhrmujv4Z6USW_~Kla{^7+ zLz+^#hUVP?Mp#DwPvnsxv6HXAUv>ENk|ae|p|Or&E;Nlkp{-Veg!Yicp9g>9k)}tt zgE1p+wJnr}H5Y33&@oT0J=2Y4DDp&6<@0O&e!1tXO@m7IdcMo95hW7!=?YV46In?X zz1vW$*{E;Gvu&gny|yUgP8g=sLEm+clxlIq~j#r6kw-Lq}@948LlQgk=7zaDzYI2|90UPSbTOg5cqnJiUvgxzvcQfcJ}Lo5yjQbV=?6(THi7t*>u<*SBV4RjY%ki< zv&I|_>M(NxBxgWEe=lI22Maj(sMcXbLGq3JJS0_eb+WKH=XXM8R@hWW0&xSru?!tW z7)R%ev)>4Lgy`9kmsRO@8fN9YLy`axA}tDWu3^&DugI=rZ0rjDiax)_?ATFsYoqX7 zz&b4});6}m1O)&WJadtb1;YV`u`wg`M1k0T%r3~|4_H}~O4J2vN(y!&z)K9%n}H+T zFJ)9L&hUXGX{4D)n2Q*r&~JxtsHd_t=29-)&}0KvDIaj^?}$EBni9#>hif9$vDqn; zi-!1I9A+)lK!X!&717)!#|5S-yc-gDuCj#lW-jba^H%EM@lwIij8u>t@%b+jTKx!l z;y(y3s3v| z*jpDcoqc0^=IA*~dN~FGPzYHBYnHZD?sF4^N8^uXl*bxL;2W`Lm~j?k1b2C<9dg7@ zRgTz{>NZ1TuDqd#fd;coXTgFH$nq>MnhX}SNW|cX#-fDzF9(roN4Chbk^LsNF=6Ku z+Q(2oI~b^w7EhG1Za2EJt3L7j{_YAXdRZQFnBq`FdL@Iw(ECR}4d&ddsmP1=hax6r0>jOrS9L(sSq!~W`vaC~e zXQ@uX9a8kUVb;xAROm@APAZ!yVLaB~zP{S>U?K;TcL4gFM1}7({y3FZCbe)ITiFh{u_` zl6(MTHTD$iDQm$-WZc!6CDmR?AfD-@D>t>;UM?Mm9g2p*K)=LlsnhHI%pF*44#roa zf}x$S1#IyTDMxLEnRHP9(9S1>CW-(^%}2B6%>H#U^JWPl>gOs+9@BHy@$iaN4OSYo;ndcsiJSd z5Us7&4@b7%@BMYXbIo_-NWFen$OZHVR6fDiH%O}_-h&>W}6Qcf+kJBs?&q2&p zC`>t4+ig;PL)sDHpt%zx3W+U#FRInkG5o;a(XEv)PZs|VtIv;M)l=JXv9lRTDGBRi z*EfW1ROB`mP9ZFN&tjlam<8>-fZ|IN-)(( zi?Uf~j7>?;f`4mRnBGPp+i%AG6nVCY#I43{!ZJI!d3(W8Fyf>1@4;I9IXZ3Rw9{b} z5uAruRSS1vsh?vmxNI?!nP2S9Eu7l82i&KbeTf<9hGdoHrRdwMx&;32U!dRTpse^0 zAPoKXjDHXw%jrNX`ST*?7_mgIaj!V{G=o3^R#o+@(9~>SzDll|X5wxg$W(WiexEjkwiEUtN_dA&f>z~aqQxv!j_u+ zzXiu0v?t*^Zlu4<%33#YjE%)Q+8@+}TE@tcO zm&9B4PSYB?e&#E$>1v7It*xBY;f2_Hm-nc*0W@m?K)l19i6*oDfE;m@=w3v#{kj#5iw1C|2`enWAeL;4W7HQ7K~#Z_I{ zp(}eS{Q%L_AJNFzzSdw^zAsBt9clCQUj(CFQFDA)Dw-*T@QP+SuQm5?i#Y#ZZ92Y9 zc`>!0{XA${s|6*m-*8I;&CihmU8;3D^&Y;(w_8}r+21(e#0)Q@B4%0b<7+T8hlVAK zPeYL|Ti{}li!lCZZ)gEZj03G^@a&@9gh{6jDSM2D*O(1wzvH{Xj~uD*f5LRNz72^0+>HC zB1c+ROd1n3TCZ$B?tIOOQ@z^ih z3&bXP^YHu^WD8E-`UhY31+Rnx4IAcEqS<$Nh~6w)-EjPO7-vB136zu%6JVzb|iT0-%6Gh0J_L|C#>5>Ca{& zI=)c`K)ZMxsOY7dYewKK>CMY=meVVZ^qzBw4JV*;#_k_ZDe{^lehN1-3Hjc6z=v!@ zHXF5|uz-T2BdPDp=oA@vC49)r)iGE~>$h>P`s#PiTION4>mUWFL=8jxFV8Sh7TNWr z)PmPMqqVg#vz>LZ!vKp5R~3t*<2b%Xl*x-2?;iOp-}~F?8s992R&ciJF62$VN+6+8 z1U#-;FaqN(JFWj$TUaU^Qt6)pHG;bmen?KeqK;t0dkA;T){G%HB6ivz0CFO;5~ZS- zd6_C6-Up!3b!30Yi8sfS`*b#k6A|Q)n9>nt|E}svsPE3&=j{}Q|DWM5#cdnX^~bge zyx(IR`+GTWjBLYZ=vs6XK$aY5p3X3xQPxWib~;^0Libf<66a-`w=)NW#p+F~7{*#l zU$gLVwnGP8>Yi~Mjj?aOXm)u?$iS*$f-Z`p;DWU^hKI|hH=g}76$zN~g!72CM7tLN zXSO69z-x))jle&(fpbA#v#?cmaR~udU%-L30SLEe0)zv)cSAmpUo;LL36EPqa|)=N z$F4@&o&BZ}OeDUPimA4@!2LvyfUIrJAi*}RKdLs2=#oQzp8i$rWwKu-dc1>rJ+EmV zpBsjxZ3JluDp4VMC36b>$Gqy;K;=5I{E?;tej<0BQzwa_qr!JhiCSMrS6+e~GeH&I z)GZzJyxKW#1*^&^tg35}%Bo#vp7O^`&yC`pNo{KLwT%AC3>Zth)SF}p7tedmx%(HF z_34Yu90W#Ab7!Cl@&X1~udjy{_s%V>T5zN3^!?SpL83a*Yc*sZsc)b_M z10)tn%PhP`zwpopN>>nX(n*ch7lTXCAYXP!Z&=aP62+_8P(*6R=OnS-`0R!cU}ZaC zXtYPfqA1D}^=7s2(k+d-_>(EFH2w&RYsoh^mCj(&?kp}|zCCW#1;i;ZHJfROAvavr zEC0wh>&gYH{35@?XH*Uw-p^Y!{5i57G$HC@CFGt|=J|~wBy)rv6Nwms!;1F|4;t@s zbr28peV|XHg5K>X09VmaPD=pQ6F}yQFPd!SQD|=b zDam8d=eiu+(Pl}}&+Oo$pHS7&e0R<+%Yed@ga#dc4kL6FFc{UKQ#;FTkmAJGkbn?S zb9}7Ih>Fj1#w%SsrRy9gZ{)iWFlWvj4NT^#W9{ZLl>c0*ABv=6txm1^dEBltz{~O9 zg9OGU%XE`l;L#i7=k=9^?Gc4DS-rG!r!nPsWD!LEn3zRIY2D#G%+!P z`wtU}&%Y)!StC#FXF76{J%qQxjT84-SjdHQ?C$fr4`N%5xO6rc9|lU$ajc5j_U!4& z2qQY^|B%LC(hxpqZ&D=d;))VRB+3zXMzg_uDvMx>5l@HEKPs%Uru1eBsAu(p5{l|o zo-7eW$If%R|0aWSeI`6=5^s&i7o_v)2=!2Mbn>m_en%Y3Ao_?51Gq(hJx*M*DQ+O( zvoYDEXTSjb6fa#50S~@phc?Q&X-T%h;L7^Hbif!nXWo`_haKc8yRLK*ez+i4ANLEk0$yOZn5*a^$SJXiN+dp~y# zDKM3deaBXfYyRY3SI@;_h`A9=BfY`Su1Pp}NylP#PP}@KxSc!vh68iH5$z4Ox<3M@ zW+qUYjw2N*Y&nF((j1*Myb$Yl=TXVj`Qn{7w2Rv8WFzksqC9 z5nY@o%(qL{G>+0Zzbon6{U7#xbxWn3AdR=#3O8D#U54f?JUCLNwA5SiM_&>#Ypt#B z&hzU%>FOkyi=B)f>x3R>2oeBC3?yZu)!QkXVfiVL0BUZ@8>Qq#PG#-;Dh}xYnE&S| zRty`j@-B7Dx^|f=>mka3Y>^t&SXrc zK=sm0vzPkoN0r)lt$R55_UH+}vr@&p#7p|e)Dex9Y}pkxATl3=PGr#@&r@fIvz-wOT&xkrh5)~R1{s_SGq}0Bp*C2eQ)0?R5R!Y@k}jF{dR{A(Ru0iM`s)rV|gkur{%yiEyRW zeG^~)R*jy(53wvYxlJNGJxkxP3sY~9y?iASx~+P(ZH#nB&FDVbxl#n~lk%}Fex7%p zFFUGlbmpK=Z7H_Z#wk*!TISnfoS>cEMM!75aEj!%UfuZ4d^uVU5Fa}u?z+k0dSHgc z%lG3@vf-IdS3ydeo5Yd*elQ5^;Oq(fHPB#07}8=hMP6)hV*ilRh;@tL3c%be_U2saE9bbV-p@ni@;xzJ!MT z&{EHGQeK29{)^3&`PgN{6uy>aeY)ADD3oua0bfWvfI*^i<$c-qNYESjrG8Vh^ea5@ z;e+RJBXSeWA~rCn2zK)HXdLFCqDhL=XRj1r3f0q_x#mGi7Zk? z_qq|m-e=7mMMsAFTY@kOQIFCW=tp$`Cnf;%U|T8_0A7u}BRoUNl+?Yn)E6RHKVOY zq+@tl@)Q>8_Dd~A@(9|XAlYrQH%umF1X0)=S@V&ZYisFze~f~lJbvl!dtM?DW~h?E zLBjQ{mff-R(*(e-5*>ZkEHP2ELZDaW%!uw`C=hRL#arZtcY;4_Wk2)0)_yS<*Yx`l z5o<%<)9h*$`&?5LRH?5RANN_Fco~z2Kiq2)OP1rmRYtyAMVj#dxOOaacDPbE3)MRW z^0`72lh&Qd|JgCU3p!K!xFM=^NQ4uMOWPCf=QrosjCQQm$nr(r{kVN44*8=$y1zS; z6+^FjgO90zj}RSH`{FDk$071sx*f5bTP8pBENw$XT02Q`^^-xOlCH9)XO$4WjYXiC z;WD|go2p(U-8aNax`E>n#w-rBGjwha+U6yw=}&k%6i|kMd-%5Ccr9G$A<%Ka3<9UR z(pzCociODURdzJ7WK0>jO!(lu@`Xm!v;{6(lkw;JfkBtuvH4P=%ETDUd-!R8&YmJR z%9k+2U&rObT|YKtBe_JO2OtIUA(-ce@_2L7=)Zrj0kwLbrOK#lnyptmC6_YGe(2g? zuQ^-sOyP_2T6pht9G@ykI?s20*?v6fL=m(y$WpN)9`Hf?qS~jIM19#DWi9j`ZSK#G zHNz`P#l#Q~|FfomZ%8T;kPJ*I{7(D91#;-ewo(Ai8nq#srCL+P7zcomyrQ?D$Y~v> z@)fR@#0Rth7Js^$!+a|>dKEfz0f?`qNWs5&-h>-|f5kyN=`QM978=+9%0vPyi)s1D zz4Mn_zpksICXq#_0)2!C@o5+|4YxXD=#^kM`wdsa1|XM^Mbif$@#LNjdOcJ8Avy3^ z80&?RGz)}IDf{D{fIqCh4udEg{q;)mlNy$OGM&M!?y;(uv0$ex`wR{)CSE38_FZ}Q z6SbZ^PTJ;ZsQ4r7_+wbS>9O9)K_@rU?K*Bjcj{-n04p!~9q%0LobWq^7me z@=C~T62t&bCvFh^%$Tn$d>+Td52ov|i6Vc~UBkx(2T>UnU^lKeVFZ41<24 zyQ54Uz~s6(AQ)7#B(naVsFRyUz_<-tvK^P+GL8MuK-;8sNMN?R@*BOql5(Cl^1yOW z^+*fT?sIvrOtdzczjMzzA`I_MCc1|_9ST6<71EC^ipuZ|k_ivm*9EkFRIadz>IxjO zeSRuQreDkKZx>c&J5`DY4*!W-MzCW#F~t6 zf1wxroIE8*si?h0AYclD`Ud>=F@;5d@^R6E>UCJ*CnqR~1s7I~1XfUVa;9oiG7LfH zU0q?p19}PcH8!V}bnd|R6jzgU>UYQ3GwA>HGBD+4NmuMN)Y0!<+Cw@XN{}2(xst!- znqp-{9x|fRMOur~c*Cj9A7q0YYU?-f!{Ubv21t;)3Uw2>^`Yk3Bo;8sxh+{_mWoda zdfR~T*f5j4uhAzVIDkP4CW(zo?MKDgD%me}eak4ek$y5g?!?2cp=NF6{VvPi>Wo*d z1>4&Ll`c)#3I<^Qt^+T1_+JkL0O?5@X0RjME~ZaBJ?L7@UajhBh7Ue+fxLz*A~%3A zw!X^ugl8I`QM7%EcdS5s_jAXHNR(2`sqYO}1{Wzm4=9z(42lCDA?>McQbmc2^PiKl z%w{F*H$9d>mzHD=)=gqSe*hwT=is z8XQiAmakV)5MYvs?f@22bR^7Ismt)1Xt4l|C)%e&&$yEkzscPm$$$&WkXUvUR^9k_ zCcF|JhKK^Zk=zmF0%11oSqq28T~11kQeetu5me{&7_r@}K773Jcip@CWN=%7ZEN%q zCGMs@3i$g+NK;d;@DJ|F-<;|Xz)w*{2}&vc^o&KhaqF;3bLJz1q7v&xFd{n;b7PsD z+rj67sC!Dn;*-2W@EGX<(upYAWaTebQ;`E4s69#UR=B!;8% zD*%LjeV<=KU51XupU_rmf0>#aNR4^;ZEre?OvtDLPC=7O%vHn|jW5DeW!?~8zK{V(-p}A5 zqCBIgisQ&C5r|mV8aUke(K_z(t084~zge}U(QHCQYdmR`HWN)F9gz zB54%m^an<>oI1;&NgO#U1e5Z&oj77<-Q?H-@+T2c+Bq#rm~xF)C-Q$$?SYccvI5bbWN^c^f^ z5j<;yaZ#J!n!JZ7hd=#OmDz~Xj@I{OqlN;{pRAU7-0(LesYbk@89Pq%2U^bbbA-X#k|xGrDo7=Z>3 zxc?w_+}1X-6qR-2xG_$pal0@yS;M~1EIg)--Ndy=DsqY(^^npI{sS}1!AcZa2A+QU+eIK(4HicI}BHe~YfAyNGMP{~)Nmk4}prbxDv+ZH) z8a?{-HVV}B6|0{HGDBP5lwp-{!~P?XpzXA0&fok^xI7Vn>Acu9Kp9dZdfA$(Z2C)( znjxtP>kX1#u7!rJ)89DZp%5~)zO40?RFu5QU*R@Pwa}zkZE2+~|48>~B3ljyP?Cj% z64>@4GceS)i$`|&u^GiUQU$_cBnX20B{b=g6YsrX#pT9mlw7U5W zv_nWK%t+{phG8Xm6f8Yj?~iEi>{VR!`FJqD3m4_DX#86pUPH9%)x5}ZGWw0Yfn{Z& z$_isr?T%|4IAXr~Zn=#_ANUZQ$;tmarKr&m^S2#){}FPM)^P%`3F!LW)}M^V{4JOP z06NHGD|^5L2a5=K`JMjJXF@G7ZB&fzZ&2FzyRufstz6<7k9?ks%TB>w?LCOsxuEredG;$^8DdTL-6rx@p+kjRSjFdjb z8F#&jn0rV#Ri$WH{L%z~IkxLeerJk57F}G326GVGl?h2x^L7{HjCOd4qy#kPf%u;b zk7nDuKyPuqgDQBl+cfV*J*}@cu1(lbji=-&7mz@ZWIGW)gP&HrT#{&z9;>AQZr7Sr z?#8A}<+art$X4-cBOlCRWx@c$#04kGi3$0(JSNhdlffNTc{y0lakL5L#7yMuh zHh_H_AXyVo1i%yKA`G`$b}}(~RCQnnJ}<-eGMX-G@{JcO6pEwe%Bjdf+ElN|?NdtG z-OCz=L-PZjDYq>}TM1)g87{n%3-VyzA#vk{-QcZvOaA_XEX`JnTk)NQgqLf7%~vjy z+(T8J7cO!j8yBmVv$b{E293G3*ntT0Y!Qc!a3Uno#jyFaz4Do3FGExgOE!n8ZoF8O z2YL0`Q08mDatj=!tN}h62J7cyuqNW2}SP zF5&>q$-=}XqUjG`8d#RMfe2jy)cEe~KkAY>zlI~sVVy+60OEnAN&lR8v^tTCzDEgU zZ&Et`#Y9>J{g$M)1>+Xl<_l!Y$%*KD|5&BZDEj~mpW)|x4?7ePlMNuDpHOC4@32cH zgnBB=!R?1XA*Sx7wL|HIDF>n3A26~WkpLHM)JXn?!^;m=6|N|kTFC4;^4nk>^w4U6 zfb9hsDjv|B3g(ccLMCpK)OmwT&9_F2zoXL#HrV;QRJJU{Ls|?-{_1E();`%zdmeD6y%Lo zQOoH>Jdf;;-%7x6yPC*wwF1jiZCi-n2!%}O*F>Qi5Km|+L%RBbi2Q*Lh~uLOU3jIU z_Svlw?#UkqkMkehEF9lB@p29EeM@BZ$eT42ZZQjR4zD$J0VOT2J4rwmyz*lBU(^@} z9fL`8sCYKqP{!w_{$&mTqR>}ZPpCWoOz9_D`IO-X7$7nW2rj{8M}a^fObNsimxO{D z2dzLEbQMU`M2SkhJy+dk7n{y|1aC<%#Wn5}4z;ejer75bDbl(fMMj*OkPyJ}G1S{` zmxT9e+DYPCV!ic19%Q3Z!H!!yTF?}coM*F)K(a<`vflOGtM_u5XHu#j?BuIAD-rJP zkX8f$l*i?WFQTF20J15;z~lyiS9G6Z-T(llza;@4j#RH&*pMW83IH~hqe)v3qRhbK zB2{EWO%Ads#!z4hsxmGZaUp%awKAUoqbVBY+@%VBdtGL0ww2anTMjWl;DDe}pJsUPi;27=GH4iB?$)f0YJT55j>xyLoV{byPRyXTdZ5Nl zKpxQQnzWtG2DnhgY68qfYg0Kdgm{OrEl?{UUiaTb)lYyzkj|3?<}jw8?n zFh4$zbjOzCJ>SRQp_ksWRa9`2K!Y8ZaTf~R1h2Y<8`%iv}JvgG_kUDd|M%{v3 zVQBkEcZ4z6)X;{3SK65Rp&8clG5oun^Z46q?PsEY28RjT|0KcrBp=91ZMU=ELB|IH z1OU)%QYetbfq@2I#?n}gS+eWU;(Exn-SU>Y2gMXZ7U} zCDjBDyw16rVlknsO;-f+YMWu`C4VPWU?ylgf@Q~D0I10q02W~WGQ8R^dr3P#N{`I0-~zi0TOx-9rH!HYS%zAZ-BJ*R?RU5J?i|$1MVkOz)%hGZU}}VA~~)rYqX= zOKg@(<DSq`?42g$suFKAjbotd#_W z=StM4R|VfWEU(4fC~HG}dT`0VeFNkx zu{1;wE3`$1zrd?3T|WAW%@J^UbT-Kn3)a=?+TMhTpNUz!j*OXhWH-m>u91a)ne;2p zK2naMn;w{ZVEg@fa*qkU5ZPrt`HT^f>|I0-E~2i+%Ii=;N7m`p#IQKtgn!Ud$2o75 zcEmMG@L7DCcc{YN1?$WxmihBuEYvdPzmWeQR{-QMnyg$PnruyUBPeYgGs%qWizQb@ z_-|u@)q3c(&T-Q$2aBUK(>ijm3vqcNT}fiS-gXf^lt<|JS-oS!NmP_;$d%-0 z$VU)eV$B;gw5qSl^R{~;-QF&8s>EfA^1c5~@|tPx)#sob28kO1WN8SsC4%Y(8~{== zH{Mj@h9=uh*?mAw-|+OQeWsdRai08I1M<4oN9(~Zm_lBv&`TWZu5$?Fj&21qm&=2+7_^2cCYIzr@I-}PDxKZbEm zDZTtZOG;8JNZXiPj-uK-6yNsp89AL?SNb?9-bi2eH6SB=;W*?qU7wo^UClWR^Wcr>k><4hHl!JR>ln3`@sExI9ZqaXkf`TT)~2?_JO zH9iao*ME$Flq$mWE5_b50Z7Iur?R!URS3+Vk2T4PKGvGx0alrn6TH}SBxsN4?nmNQFdNs67U<|bVNxBY(i-6&=4 z1Ff;xICMGAhERtkWJV;9IO~D;0H4P1|V3Eb^WUVPwv6&ee_|LKbJ95G-aN+TF(Ps z4*8j!EAntaNL|O3(R6!NE7pY_WCvSU=hhr{yl|8mWHq3Zl@iUEquI+9tL0|A>bP#ntp^0{`cAGn&lq(=DRc$AdH_~ee2ZnQ|kQ5 zQ-ZwtaySCNxQbI>@AwU|FmMF;6dTEx(M_UPW>Si7}=Y>WPY%Nua!4{o*3Bv0C z&O2;tp{wIn{I>nUb9N{YmTJvCuksZg%B`Y1$Z$h*rBE2FjOYk%Ya!x0ps&W^8fU3R z&_##drPF4Wm`EiWWQ}4f`s0Cp-nUv=)Ayo~e1f|-f~o;z`hC-#R3t@HAPzD$@l4@z zAxZ!Mh&z^amPkQ9wgyg=qjyZoY4%tPipnI?iKSg42AQLYa-UZ)avL{IM)la&@joQ? z7Qr6ZyDhIHWFLHbL0fQ3FNrJ@QUNO2fqsz+cl_88lX%O=0wEYCfU!+3=?&clp2z?s zQ)>&deM`q5Kw&4STi#F{NfmiSlrnXqrmM@=k=l^#0i_CHD4fS25o~@@*`LOh>!G?$ zqnG1Xw_N}I?+RUI#%2URpjlM|p)=^1Vz^>tbojiOrlrcE+eybYT=Ug&=k!CqXa}v7 zU|X)92*-W_ft1$@;hMS?M^c+leD-DUSP`g5f5fhkN&TxY#8{4T)nen7aG9rZBq{ED zmFJTln05*it+lXoF_#w$I*Lg2iiF|(O{DkZ0JjKv2<(owk-SD~Tw1G6kp!_2r}GY; zT+>ZPDl=UGsNY-xDo>ZX7?^kw4)H;%pGgHrxnanQE$8v2Q|3lEt6ab~NUJlZ`# zqZwUPn%^ZHWQjNTTk3uLm)TB_7ltA@pu$j94PW#?#9N<}@JnNy7Iz$uA`~naH-O9p zawpqi(}}-f0~Oa>HVW_;0pz;?$hRpn42F|^8T)EKOs3ntJ=J}W{sW$qw+B$AyAbeh z4wdIK-~wQ6fTsq>0eL&OH1f$oGI>Jiz9-1S+p~c_J^{SU9s7mFg0_HR)u@7kxuR&z zfU)laam9oN2?OP@W#}phL0;^|v5I|75Cy_$)|`i@X(egzV@?_Jdqd(Sk7q~o1ctPq zGB|^g+*kU3hA@DaQ#BJ7&~=&sF;IWADBAbL%D1r~MMQr9KlIY8+T(ZquKMG!3<~;V z2mQWoh@0F5{vg*4a8!QZ0DOk{G9J3{831A&^cwSUQiqFf&B01C2-?(zQn=YG70y!p zf=u9T4EiS}gc_EiX(`6bXjFa-8-Rw^d{7sx`eMZJoi$h+8Gq?pFhbOmGr3cAN3nbn zVT7-8QlFJK(hg+$Cy|z7(#w!?O7G_W(`FFTJG8833~E>k6yO=^#Y`gL0~H7SEOU4| z2r~4(T>SF3`Yv*bboHubb4dw>c@@@AE(JL$7jC2CLbQj?r8zLW+E%ppL*|=k_$Wk2UGiv}bHCkP|IQEs?rrd}B z3t~$8yU_IuA~nTu(vSy^V*#wym{}&9-rfJb`RUFJxYPtd^e;w@KHj24aOxAk2YoD{ zi|4y#A#pBd{Z6g{M3n@G^~dau5aB079I^j~{d`p}VrtSU6-k5PH=h7vTHwu>xU)MT zjAYOI_pBQfu%PxTLgcN8S!l{2xGM%~`s{O$f6d#Yc1$zS{1T_WeTuBWFneuD242N8 zWK$K%q<5x(rQwwi;NhgfEgSKG&{3sOg2W3EWXgCM-ijBLNbrlCLrNyjm>C@F<99-g z9yr)I3joJAwC)lOAyX6LG7V}zIFLvjhB*w&*kfg$KE|>d&u@d!cc=~CjFJzw{v-7G zG4RY??f+=64ki>K;UzD%TRMxR{$*T=eR}7d{7x(o#7xfMUi;NXS+?hi#GPg2lgd*4 zAoRALXyB{MFWR^MdW-&h_@a^XBqZK7EDkjVtM6~CR$U%C*V|`0k!&1{YIl~214Bz| zxSnOvXT!MTq$~qPIu90hc2mOTcP$|&^VyF#?=|I1o;rkny$(z5JybwhIm*qZMu0cg zm)U*iZ0|Q5KOh2gkehJ5DqDW@$(PY6flsCQS7lBDM9=-mvUb_vYpiV084ZPIqrY>hrI0Wd}ne&6z;^SkEafKqfSYg~y~CaO+XD0%C6j?o?~*<=>7 z6xl`>n}8U>?l59UDnDuI<0K!y_IpG7z(FmxOYV^0H1s1#CF>9k#+O-a)}=D+fd}=M zM6~-Fbwu3wv(85&BRQB7y@@vU`{Op6v{!kiMkShTEL!3A>h2W+M@YagpATDNv~p1v zx8k@;p~3otWpiJR_Lh|Fe$8UIOE}*4OBwrPKNHcLe=kUsb|mGR#rfiwkuV@x`Id)7 z%4I=2dG9lDHdf6zEXYVAxa3c9$l6?U{&gw$qA=pqZ3;2Iu`rFQmPdcxBct%w8AgO{ z!LGNs$cGe9eu+O;_g`DA-ktt4G-!Ui{GQ7OxBZ;5>0Q6N)Tz4MPEKRG(_0Nbt|T)0 z*S#aEun01{#B3XbfvkQ;$l?Bk9)rRA2Lz4^uh$a5G#Si;K`2#p1f zLf*^JK-4Gf%2$jX{W%q5&@~RD3&rO5fj`)z`Zl;9qXT&2dp>&WRi_qV60AxU$zp6=vAp|51kh|Z7NPWmCsF2vgY_H{^ zD&kPV_R*_gTB0K?YCX-~o~df~2wv$C%oN^qi+Xibi;l}dS5tam%*FO@+<1T)hj+Tb z>C<9LxzT}c_JvjYfr31LT)PY7ai7XfAj(N^q)jwauq;^k+dVdQ=|TA6TK2Z|Kv?Mb zae#5TC!1?%j4S`=_ATd#-CT2tR4(?A2m%=A`+CBJT%?q|*PZF3vGFod;FERN#c0gN zfHDNzrXmE75(=5);I}+;iV|r;;+)931(*I;LNM&qVF1z68C2JF+<+0xk;^ppuDLJ9 ze5&JH*S>w^5(0y|GB|)eurTS(?7ky_$UUtcKEp7BFq}Ai)j|-OrgFOQNo#~Q-V56Z zZqGxF*&~kVzGh`N23!dn|`5xXz&eqh&cYv%N+M~dZ$KU-sf=BuUa{kIM zb|LQW-LFWTwN*r7?)=9-WN}Ora6;wxntiQBfwI=?Rc;(-CuZuK(C4j=U(aJdQVv5< z@ou>o9g@kFpBVB5@X{*&l^m*ZpT=%4jA1brSH0g&wZ9plJ4JVYn_0e9b6v+f^OVgR zbIK^%k6uq)8=5REni&ym-wFIsOA0*D49eG=@%NkZYOAD=MmTGd)z-g)27~lE0U*VA z2Gs-xB%*FnD<+4~QJkY%&DZx)DEU)@9=jyLDo_@0J+d>74)5K`|6-}hT1Su<*DLII z{h--OAB-QUf)9P=4fxU|S>lyAi5`q6=a#{!UmURS#$uV{p~99v?{MOBd85D0Oe^#e zb)-w6;)TvK#;dww~ZTB3q@#fU%b~1G!;FZx38;4zBG6wHLcn$wCFmbd#8M4zJQMXob z{S{3pVY|V3&edpPYGc`)+xK>D74KDWC&qeTvO!5nrXAC2a~yjx!SeGNm9J!*?06)z z5YhD;d{t`vYn;cOLDO=#JxjSN^&R~DB`5Ny6}>1`7Qv5NaAgjTvgJhS7cC98iCdvW zECE)B#!s?51iKozDca`3*tTf2fSQDH`2GBx$jX9}YZ4mhU+s_ zOZe{RZ*6w&*AxT%O+8;Q_A8_mhO?s_A2&9QMvlkZ#K-TGF^%t9ss%3461|1i-QUuS zR=6nq^{mVO*i}zy)$$ztkK}pp`~Kwe9^9q!YQtn2xt^CaEpICLO%5vE{5$LCncOdf zyXZ_iT-bZ7EB!}PDn_q}SnUPf(to|XBL0M!`?T@DzCs?RO+pL~ERmz|nK2ST#}}h~ z8-WZ-n_6Iu#Rd_IJjzqi{YbTH>$Y^Z_&}V97N`khmyR-(#6`t4!9-?-9JZNf#XwtW_Mxv?%BpC0>=@^yT!3`* zC_7iE;4+6t$5YTQ2QN-heOdnM^&4`YSSL)EJc*7OT-+v1=YLG=KL;v<{F%8EU0tWj zHiy{S-%ndYHuOiO88j zfYwll3w00x1D0aKRjAAsAwzH}8cr+YxC+SZ656^|yt@TB+VWB%+Kq5w$AD`;N2K5B zBL9y!mWdO9iU1Xv;H8L|tN}(?rm5FIuSpU)VQ$oJHLprjAOS`B3Q%>+fMeVs)H}}2 zwb$k9i{rImbhm%yEe6~+0Y#?FkyOTsO zHWBQaCWQ`UJ5RfpPsLmbZkuLV@BNF&Itmz`mo=;`ZczpZ4j;m~8=G3VRniEutbP7n zg9B{6~(gznbus_6dGb@kXG%Oeg;+V zV9#kHcol|qPJwML_8iOMzia8?Nxe=rd%A|CqT>9_gj2Igv^Y05dJqp{lnE#cYA!bZ z;94dz@Va$|c@pTaG(Qm~bC-4AVep0BN(D@uXSPI#n4R zvsp^dgZ2z?J#SZ?z%xK$k&`e)Zb&O3x{~_&tzXz<{stFpYGLb6m-IrwOh;jxBq|i# zkN^lw00GPeMU4%>k@88a4VZ$QKLh|3CGJb~D26->VaVbJCt`yXP`NP_yRAc-7^pE` zidjKT{H%-{qETvkPIxaBvA(+N>^dnd;{)N>EcpNz?sW@lfzwS~`x2f!|CIa;GFTv^%*KbeK00LsvU}~97tNrh#FQ~DWHy!_xP9Qt9%fzTV-~bl2kN`gn9H)?JZIpdd$O~w;;FVlaFO6H| z2Te1iRvt+lwrql6@G5C#&T^4RhndAN`oM8TK8#i@PW9T?tgjd z1@8!?C%G#V`oD>L)AyLd=u%w3KsJ4P{amHj!GbRu7tRQnUr*M5xhHn1o zLuyV8tWiTpP1u)*o&6a&Uwaruh;;~+x*?XNf2KyXAXRnBc!^Dem6>b`tm2YA7U&RP zKw?+`Xj}s2VSpb?N>&_z`1>1=a^mYr8s4kU2?5)UOs{y|2w)djK2IlwEj8CHKh+W3 z8(;h)Bp?6)0027LhRwpG{!>c>2G-47DL(nzP)T z7xV)MvGB)%StZnro}B0%?!ljMoLr0e}FF zG||-i)9($CRd2b|%de8PI|_pS#c2-lTj{->_`0Ir5>>70w|ir9;V~+Ct19NMeX}lO z;Om?AT;=UjSbAAt5FEmEpn;(d{(G67JA zY#cubo%0-tu}EXn*p~rN{|95a+cCR|%8EO_ExR-=OtlKIe!N!tYs_=~S9lTR*Xrrq zoU#s-2MLqRwkq#}l0PNTjtGX^s~ZsvC!?X1?1l}kYs0-xIVZ*eZ%-SbQIW&&@q2T* z3p-Yx@c!?>jmz98Q~*q_OUZeJNZ!P?PC{=L!N*=Aht&Zl1$dYMM2f0#7-N!@XK;j;_wf>c zstw1WZb0dZS-xE;>!-Cj_AV*mh9x~)rU|{IW%4kTEQj4aZxc$FxFtzULon)?OG@gc zp}L3z(?Wn`%F9tLcRDvNxhw{=)B-6NoHxPQla8;|LzM@S)@7L_`LLNW#K;ai#8=#1GKm67 zl%+$4xWUY45!JjS{Z=@aSOP0E8vGm|Hi#e}Z-dVdnp(w$GQ^km!T<#Qu>}^WOxx=5 zE^IVB9sikCDWpnmod7@2(1hKn@DKnI*C>dMVYa_2EC2=rdGJ^v+R*fjrc5y*Nl-t> ztH}R^XYs&$dIc9P9*<9gSgSI2@7y)iTNz=~FM_bMFj-_|>4;lg|E0iwKYd(MxYv1xUE=|u6rNw2gUW^K}QpUP{rz#-H*_wcg~r;7i( zsSOFrR==a?;Yj5aVo3{P#XvzMRYka2wb4@}jmoL575Fr7V;z6g03_JhP{?(%QQxR> zLlFDUr5m@E8JGdM)iK{W2B@)4c~>28%MtcQ`J z^BC)n)In7(g5)3;ata%Pum+@_sH~lN=~l6pL4X(>&LR?^w!kDK*#|>$wAY?~_gL&1 z4FPqL;A4vc_IT?3h{1%7oz~FJ$BMGw65B@gaXcKD86!BL`LGgupT)O62K;GYR4nhL zcloIS@CvM0E2Cu754RA-2==9zDAPUi`ab?nbdy%c+dyBC^6E-HX9LO@Fa8&f-x=PO zpdGhrOuM4cr);Ay8KPk7elf5`?Pi(9FL$<{<8m-K3e&?R8<~z(F4uM!BsV?0ehEW{ zr6bwVC^%sMooWT8EU2Du7x!npb;09iW_nBr6v=BUUSn(@ugNXqXCw zK`Zb9L3ZLOrbX}s!urzIh94e`$zne_uH{rsv^E8@@Ip%xX+R#ZBe^UkpP|7wj&{7> zI3lp3q??^jHQ8^`D`FUD@T3^UN&NBgMZ3}@51T>H-bD0MSWB;|-@v`o0m)S z>+pj3`(O!t90Am9TB9)<{2gA1Ko9*J)Id^*(zpUO{ehrp+00Mw1k50bSM3Ns5C8+l zJSRZnmjPjbPohK6Hb$2sa0gxl9pUtmiMi?uz|aU__}12zK`6KZCwO4F zY^I6Fc=Z{m6uP)J7s3Tc9iMwVA8>bx(!`G@L%yjq^H8m!!RuH zww8LOM8>=x%92+i`z9j#;Hn3Rxq14uA-|7IhXQ*W=kWhk`u=1FRA5*vk=BsBgz)%` zqAsZLF!KM!#C@U=MWAK*%YfC};B01nh0=`sd{`?lZ^SdF;0VSN#pp5{e( zh~ta^5e1VdVOK|h0scM4U*6&aCfCPWO}p<6^UZr4&n@!=g%=r>=`vx;DC+(c_k^UQ zeUd*Ao4gQjS&Mw5@0ySSFo=hwj`dT3YA#47HHL=fl|-u;MTZNLDUsl%VEALLHFhx8 z&VLlMTy;>y|C?{WeKlS5-n#Z!Y2G%0E1@*LlFkF-wiLu7QQs2BByysLW$(FN96~a6HwiWbll`S+}vfMNw@c@{I~=sErd%p=^(?hwGcV*vFQ%$hR~=~-Thu4UxGeyrdH zJ3SsKf&oHa3jke#L8Sv^00Ne_?c6)daQTs+i1A)W&iQOd00047#7N-8fg)DwP3|E# zRhy&C9n&S7c;x#xvLb>DcSu^W4Zxd~^9qgWBs4Q7z8SofdrWXV7e5dFSe2(RU^hV} zVeC8NZ4g)lHHR+51!pi+$+>B|uiBc%|V*A-aH-HI()S->zAjY%}PPL}6PY>8E^wTiPo?H>X>ggnjY2c!25eVpmlAM zItIl0o~{U$7>-1120+Y-hNZmQ3$UOBy5C8zCFdq~dAWk(h2Zw$!fjX*&l>_l@4R5W` zty9bPRZ$?mR;{N2HfTNo0AegK5>k&W0bUZTV}*|M4m{sWe!jDw@4h)Rwr)(E;0)GIwUtNs-#!$JqY_dgUy$~h$`*QZYevpy*eQi6ChnwAf` z$1NOsqNGb{rlT_N7Ks`}QTz8C{G>TE>g<;9xpai*ao6@8eAMR}uscc!?4jaNfoaA};BheLyf-*zXV-h(GR_N?9sh%pvM|4iUHT&14{MOaz=u zEY>Ro1L&Bt;p3fjT?vnd{9vc15&w&Yyb-29_4@n)&lH(ju?QBfg}f| z#VF%>2zY5%it_v%N%Ld`C!hcT4e0;?0AO4nH%ky>#Z$5txyYBC)0Npw&iz+LVJ-Qp zC%eGP%ZPcxkD=LKrfaJ7;^c^d&yG^en$~=6J1Ano?NZI<>+}SF~82co&M9If_)G>JuKByxsL3BQN zty$?uc;qO=ZxBi2Z!|dgD)wAGlb_d%J)OaeB#1C3G;HLM2+Z@{IFiGBq$#C5>coi~ z)0S6XB8X)!usC(;Rv6amPH1A+k56eC&ln0<4xs$Z; z0A0ATae59F#JVCRx29+G;hmZ$@q88l0G3{YLw^)@+#trM<7VIzTKs4N{$!+JQW|?S zZU9XM6J3DWRXRD1j?zjur5XzYSHPhV?-_G1)la3-N0s_3o4grb_h*}hawpjc6>E5c^# zr~OvsUeO z*SG+{3=Q!n35tL%geT%rZO`a8UO36k=^zK53}O=pU%ROR0#2DhL9GaR=*)sz00Lz- zma8ob9B^2KBXi3x)^00fx;6Xk#a+W&&Oqnx3h%S5AnRC|zDokq1o~crUjmj&Byu3jtY-<29)0X~~PM*#kp^u~!4J zxwa9uqK@jdbE95VfNhTJThaIeH6LGC$nYk~f+s5MrcUH^Ei z(4_=)9OnXQksHh{J2V?qcrM-mNjs{RA`eoIv7Nc6k$L)IsQt+L>7O~$IK(cFb|=wj z52`B!(Vis4LZ%({AOPmJ$|cYOJOB!wpUnUOERN<>Pkqe?KRV-% zBhOsMp%6l3VboJoBxX#=J(}Q52%Z30To?%UarCE5u-&nMHqoqN4gjYV-1QZM;V_E^ zC))FIlz;}fg1m*EQjY*uU`VzQ2rL18B}i;vO7w&8)%`qJ6aQot-kn+n40EEc#BJzh zsFj`C%pT4(U=uBt1Mpl<0lSNxkCypSz4z8_6Agk!cWiaVBLwhKLt~G$BtYjO0`$U#$CxqoSGEL@K1-|>))0t& z&#nV;YaBoXy*F=x9vI*N_dv?WtMH)Wais#D00002niJqMO}PnMHxJrYkgflY17#F) zan43wI1GAcPQ}5joc6unBGDyCjgAZ=cbOh9a7@xb04C4?00}E#g){)tlC3W-)49F; zBgIRPXN>~6pI9G#aOD59&udmYwvDI6SVXt)bA9KdUgyb^Yjk1KOW3RUJ!X29)sDJC z4D~u*5n9KbYmr;1 zvawxCJ|=U4!kpA#h{ula6S6cvlq|dwIEwZhawRu;0LiKV-$gAmXTo#fyf{L;6HA93s&lGTpwR%GU{Ia z^+iXtZ5JLB&H5t(MmL-Wjcgt-*#MXsMl>f0k%pCU6a{EG`6(s5f$|K6j#krXS_(0I zw8HsrVfq*K-DJRK88HbP2v@oy7TWYiCyPkiz|w{!000N*002B_pn3p4p3UvG=j-_( zPvE!SblLkpJTTW~4eO7ZrUsoqOn>BV8FEzizN>k>`za^6#3X^&&OuXwYx&2y4b`t~ z%ta-S%PRCv{UxGH|3+3UKsfUxY*2PcPe&wxi^I9qk? zhU_<`!~L1p9|*k72wYL!orZQv{mjrsNZkZ~An6S4guIIZZwf(kjvTr*-2q}ld{bnK zH^jYoAv`p`Fz>{AGpR*%hhOhS|8yKnBJAsQ8jsqy(pEYUTWL?Whr_+N*I9ttdxu5{ zq?Z`<7f2WkAJ19+u6o*rcUkc((m@(f{z?Vtm=FP3fB*&|ppv|Jr9*fifTP+wy^Qi@ zJS{0|CUL7=P7hTXJQ|4ZLk(8!;PqFrs`ZR|Y<4!9j;yt|0vs7boHFTehT>AN083>F zfFWr6I#&$P&koj@!C^L4ZK?{_Gu$DzSO5S30e2bL!F9)k4R4apWf0vlI+lOwJ&mCv z1u#=}X?6I0YRlqi&Z02GLoASmDi_Td!^a%toF z{2%~0gs$Vn>KzR!cuLlw9V@{euoME&rO)iARiwaTx71_sLP(K~34F$&3iEj$kjlAT z06l=>u@{|G0zDTGwW!s?5#cCCp(vzBip;S><{PAd01;k3N}VSErtxFSQIErEk^Vmu&}JafqC!j-00kFT{w+(vnN? z%5v18X+vPn`VvHV&_ob4u%WUV$vSS^W8ypy$LY;6=*;XHYmx!vRDjOS}qBu z;L{F$=lbtE2i0niZz@|H%M@J?(t=9GG}xgRV9ZD(BHx}UBz0A^&8p^`)l=~VUs-5hqdkbNuTBad)2+z*>^gA0 zGd>JgkFh9U?@G@+PXMu8xP(XF-_}?^Fm=;FRG>mG@8XXPyADXKHi4Sy2F={cg^E5i zwHfox25)KwiTRA@uDvZ=#SK0uN6cBJTSlUcOM@kAtjJhlwa+xhMEaB=Jsn3fJMl;e z@jZ4Oq+M(H2>T)&uAn^j^q~`o!V8=v*{SB!47`nO10+J%4!S*x!0NU73#s@@@t(1N zDs3Tfv=(Xj!*^N-+yv3$Pp>GxhA1pOM#pWuf7kGlD7Fo%XdDKdOm?kk7CbZAd)+`Q z>7W1r4NLK#&B`>~MM-?!gZ9Dz0d=ONct;qM)Qs<(qkNyJyf7x7MmHd>TuoqV$7~xI zG+^L(C{Ia&BA18}z5%WjSKQW}93$Ee8(2UZ2f&S_jVb-!7Qc9Z zycrc=R%GYw9~+jByZuu+yKkS?rC3Z2c9nwjtp?4+v=(u1 z7XAQA*rn5pR-tu)?lGhRZ_hq<(fNzikLWZwlYum&vk)?>h}w0NywQU2g^j8|O7EpA z!v+#>&lVZlS)?SE{PSdH$~IN(o(j_lK024lAHW1W0e(#HwcY3FbGFD}ztJ;z4K&3Q zrj>>}XuMykjXFOBu~trRp7o#JkY|*n{LQWCw`RgCbH< z93Udbg5pSgYD7m&65OR{K0v5LX>tSzK5mVbvTL-k002k;00EM;M!Gj0;i0AY$Uc@7 zK2WQ}s+539^XzU+C5LU_@XLfMqcLHMBKnCa#$=KOsAibc?8PTn7JFv&q;Dnud}Y~z zxztIvm`Y(m3eassCJk_Q4zMVIhCgsn6VISI6WRjw0nH^43!a{m;u2HteN=nP^ISs!PvMBo0LPt=>xp8P6)}u*MZnq|%cC0`3&*zjv3lZ#6T;%`Y}=o_h>u1{M65d< z665cX5Hd9BB7nSM*)=ae3thcaxHKE4SkQNMC>eruwHpM}qy;TrOD3 zA3wav&ZaPnF@yoT(QnUrkNnbM)BS!aOLBkU`*IvPu=>Waox-0we1-5v&p`)x?a{v3 z`)Z|Eol6aeBOrNtcpcvU1f$x`Yz8I1grV{namS0HDni{cK&bADZG8FBgffycQ!76S zXVd?8hM`X*2=~JmHGk{T!#m3rh2u^5_>IPQipr}Dy~R|Vtm^jJ=VunkeQjG)6${7e zgO&gv0yWV3OaI-2$I27a);jks8Ph-9aVTR0D z=t-knfFpna31kBYnkEy}MI-kKpt2d-O<6>OF?bteTFxlQ`ms1SrqiDowyeAu6S>=E}h*&(1 z+&?(-KZD?^1y7N}gTfAkXZF83oakex@3R|py-eMqQ~lN6HDB`k>B8AaWcAu!^G|&< z0hiT+>t;EEIeiFc)D+IuWFpH9silvm%S$d|mjPo6a5%rw0BA`QAAyD&uM#EyZJXbV zscy{ZA=t0~m3MpzxU5`;6&&-4^ai4rl2?dIqxf@SkG`IFKhqcXfRO@beR@C_-kp>G zpPY!{$$~W?=z%fu?_L#WHD2sbRQR0`Rmz>rz2q)^W#QJNy!1^_%_(~3=9ck zZ-nAw+D!V6QX(W;5W8oyos9iDgUseudOOXG3r z&jN`R>DIP;{XCAS=)b_!DL*zVA*(vO-C4M9hOqKrn%Vf|Y9s>YIm=?Q2H56uyGhOp(c5$RUxP6z9k z;bhh6xX8Dbn+Zr1>h%j?JP)AiDM!l>`Bvh$sDKoKYmST`%3@_9)LQdeE-U+9SJSb2 z0G~ypwGJ?RTfQ{hCIUcfzrTyc7A(MGtMjlb@di6;9|7bh*g5B)U#8}gvz{KN31sk z*j`EZ7cdA8Dh+`*6f={t&6nc3+fR=G!2j7 z4cWLCJ~?2L=h=$HN5nb1q9H|?6~Bi!8GPi!B+Jh0o!>l+A4Y_MZq&&p-k7BT$91&4 z>h44vRzd-ycAV?sLY)&5mbp?-hl0XvZPUU~a&d_8y@aA3T9}d^^&i6Iq zVuWpEtOPWO*U~PxW7C)B{QV*87JrgVagnaTsBf9?YoeMuKAk-F7Owa8fSZ;JcBL;! zQRh(Iqf^iJ{3T8)qsK>C2Io4e(RvC87z(k`1Hn~^G ze#`GfQ4S9UYj3bM-Yl0~CA|+L+*WHk+r0_T=wKuo=@zaObK~@TT|OMudD$n?RHi{@ z2Y#gD1oaDmAblGtno{t=wNb}auU9g#Spchan|U#DavLN3XMr-Z&srDIo6EuhtvJCh zv$p_%aVb(sJlH~uIB8tqsz9v_gT;l%u}~Q`NFXeh7jf=x7E=Vv{od)8b-7CJKLE;T z&C2(-pi;=z74A?6xG|W@l0p1JciHIw<4{QUFxD=PE92Z9k;dVT=#spCN=Z_)kY> z^tVT*Oi}HjV-t)+F;qN<&}k&DZTO5&^#iq(D_VghUzZOftKDqX%c#BsjZ8_^tg&@s z7T}Pv<#-H4`_ZE)7dQMhI=3}RosM3gxHtft-iVhPm>%`gQGB}GNadks3``gYv-q5Y zXbNX-#=6FS6lZzmp)$YX@TkhHA7P^N=q07V}whden-;a1vM*RKmY)|Kq}TE`l8^b zrFeow5rYAx>}H``Pk;(6BFvW~zWV22`ZK@&G))fQf<=N6mTy;7SXG;y8wSlYG8&z_ zVOIl-{n;7pTSxx`wjmul`qoO*WbLL4)2$-Hu4h>`zy#fXB>^shR8k1OF}fz|A&W)A za*_|gL2`!~2#-zpwnyw-4jI0a#dOH^5C|N3#4Mn4^Zb5nKzYg^ISb3K}v`-u-E~Z)yA%e+H4NTFB_mPD)>1n7(EpD77|8k?{r5hSxs+&cl5o7ICs*e6xUNzO&)4 zHg#NsbEv)=(VTF1@F!bia88Lf*?GF-F3N~}U z(OzjAkoM}>&%xOoz4K-|k1zmBWDzPPgng+{8UmUzV%j>tIr%H-rOEZV$Hu%?*(Fa} zasQc4FFH}Zx2+zryzC^uC);D(!o=fcWtph|=xpXSWApDyT^HK4>UhgTU!e(~IU?#m z1Em;aa55*?UF{B3xJ1&uqdyKb6}EXSL~6e>@N}$jb5W-oH}Fgve$G_Xy99{KNz`KL zpnT}4z7Ns*V$~?3d3Qk>`)LH$%!S6-A7k&x8dMifR+k4;Rq`3(>LXnOcyXmA6?Bp# z`|5SMPmT^SFIve9cA>sMM}zNY-h;m^t36kq=>R-W`eOpR-81a?AK^h1pyYv{)iYfDyN zMrHWFfwrR7c&Wm#orxL06H=CsOOC|$hc-aHjqL5hI|z={PR&|;8>m0h43|*{`4u$RrX{T%!1jLAFO6Z# zHX5KCAS%b>&O2L4xA#YwaNnR7yo z!ua=0iXEOpcjXC*?YQ<_n_euosj>F>d`G<_4&tz_8o3_C6k6}AWw@b5y@_KooQ<1M zeKwi1qlnK0Vp8c4F@^v=USjyD&T2|urvDh&1*94RxFO_flmCBmuY?s}acQI42x zI7^xMmWy`dXg@YbOAIz}9l*m3{{6MLLi!Kcg!eJmj^S>OyyI?^6p_`h>p}peV=vqt z$!9GTFbJl=5YUxU0&Vfvi-wpHJLFPLWaanH!sO{*JId5Y;a|2tOp+|?HT>kcpc1S3>@^qH*#QaZI5{i3n#- z?d@1G!D3?m_0);_O`q{nQY{E|>Rh+1Qp8{iiZ=52Kob<0y6?6`%uw!FlI!xY%()jS z4tc^X{JmF068Y?rS63d}I-kcd7}pduRTLemV2ltbDY^$!5h23k`~UzO!TLR_f)wKF zF_QyK<_U>aZ86^sJqv<38dtZ-bL=p#V%*@5`fu4W`q4Ee)SLu_vFgQ z=t@p58-i>n?JPsrz)DZyk8y@;TTT;&u3zE0j9n@H@T6;^l(_=PSNHzN^{YT)(V4mv z+tUvDWf(Fg1qQTK4>cUD?OLAX@NIyF^LI^Kj?f5Nd*aG!Krg3uO~e1hmrzBa^Qrm0!Q^D!Dy!d(TUll#BIG0f6?O4nd>fOqxC zT{o}_-M{@x7K$}b|CPrjR_Njyc0C`5qj^yLqGbFPE34bVE`;4%p`0hE03MToBsqef zn12o+dZP2@qCpjhpLvDiVq@k4x4+D9sl zhdgv2mwLJp9uFI;ni%?i#r*zN&?%($3PQmChlYjJAykb(;pn1h97$j&zu(ik;b}rW zGpCG@w(fm~X0m1Q7Va(RMbe={!g2k0wK)gy`zwy6<=}g|v!CgAsE4t(zDvc!e+ER0 z$G7|!F)3T(pLGviLd1)|I3o!jALH@{JZ zQ(pL%1xgFlMaikhM1b@yH_}svm5&3R>mn%Ee$aPLBnYr<_y!o_f^rF>cRe+Tp(M+f5%Y!OW^Gq>Jy_I+ z`ZvG03poHd)y^yDy^g&A!G2>dz*$W9$>MfmguF&@=6~b7;fJ=~?Nw`kT}1pZ&dGl7 zay9Q9S?UX1+(XV##kw%);*x@2!KDzOHKWR-4KAIvZXikdIf| zCF~0qB{y9}^V;wGeD>TJ)X=4;$r!?l`cPujR2Ai?{}R)_zdjS31LK>GaUC(do~ITZ z=0Y7cca(WTFaTnQHvQzMvunZB*}jUkBd`DkG!tnR4*(>SxGxXyF0Yzy58t;;yOG5Q zfR(KXj|58Im5!tL`?)t|GNKd;L9jLGpdmbH6lHF@1j_Ge(U`_1C8KoJ%D}+TETOT` zt?>T(DH~RB+rT@i;^bT3T^1m z(p8mmv39!*qSp&N&%IzjBN5z;$ea?WKj||>Ac8ou|Qv3u@yq0YxloLE1es z68Nwh;9C*6UfauHu=>*!SJWC6_0j;YhPsj*;21?`?pq!ODY#2xt+c4q0nzM}Ps)H36e}){WGO>m$gfdl@b>#?R#K*DLXU1J#m38%Peb=k!?4Jtq3VRq`Ng$>&<2 z+5w65ULLoOPPJdCT+%L&jIl3UWhLZ2M4`4dBXk*?PfCcPprON1dZQ70i^>IG&GcX?#&N>dHMEAYb`KsYS)&9(EaZyPn`n3LdgqMhu7ilfCZLHS!O`y zK*oy3S_H5W(#2UfNE{ZMPg`jzA&!F}%a(%$a1*gpgs2mHzg8OiBY#mAJREwt6V%8r zLquebourSs;SMV7V;~!mcto&Jp|8UGwsG3XT>R6$HEI@}n$;S0-4?0Mjl!hllMG;(TJ|A!)U}%9blb-6bKUeH*w$Rb2;Y-@`R!2b-UglA zlx@R$M&~$@IqyrD*oX|edzIo&(V%~01?<&cy!qJ(YGpINZdJXuy(Z_Ft+R$jd{F#%QeFhUeUU7X32k zC@p{e=}ipjz{?c51XyYpNYaGdzz-XM4iNl@pF@)6ZVjxg+j#+~K4ng~UFx5%d@ibX zeS~;MvBO-lypVIgKb(z5GF)3B70hMXh3P5N2APkt=;E-!T`a~C)r}A0WseGG|6=5$ zsljxg72DCr;Z_8)fZAEH9pLe2>ul*oGk=@=`U}Xw04t2FkvW{zpIj*o2Zc}|v~VF4 zcI-9T% z7w!c*tfE>trVxm14~Y`u%dzx1nCi z9o1n|%x^mPXGHCTK?>A~d98qr&XY2VV_0-f!4&;44u}MZXJk@Ae=u?(w(nV?WYw_jG*i334(Gu z0yt}+pt`lBXCRRQm=RROu~ocdxb6Zt%Ij}jg093+h>V^D%yr9-^xuZ*!E z&|P>F`w~C45~cb>Oq>he$A~lUlZ8XH1!%PY$>bakrX)zQT9+xxwnG54YlEYZj2wQpDgzYMC<{lN*KK`Zab+rZ|nJyHJhuL6twiG~%EscZ$ZGaQZdTX>c1tEh*S=j}^rWwzOSwfYVhuJsgF0E`o zsIW$}J+MTrW;d|FkqUB+*V1@H_h8Z=eB`V`4?)*1hT<}wr5Xm+7qxNPQkF;TQD~)( zj|QGji{Av9&Q}Cv*&Fm$fGEA7;O6$dN&Xd2VS;GMKlX1oM920wg@w$?+40T}s!D1n zov?LRuE?sijXzld8>k!UlK9Bm$Sk(neoGf)4eM|Ow8mpWO}PVjd>_}ocoDuV+{@+Y zL7=Lt;c--*b3T#^VMTI7fPFAbd9mb@aT4+!)GuH(CQ<3^d^IUM`G4sVs_)U;3h|-a zu94s7gesHgyP=>R8Zl?>O~CN(fX=#aCf<$vG^38le!9o4aFRbWbVAW`f!0$R)vu^+ zvnU)~^^BiR>jO_OYmSIcWs5Bbd==4-(Us1FK{o1C%vp#56z!3JRAvNUTmceS#=-!; z#IDWcCf->mP@c$VI=}-&u zC8)01ruYkgVkiNTfIT=YH(18giw9_~435XqpMfFQ$ifFrnJl}=BsCm092a>2T^xVj za>4TY^3r7gZRq;Y1Z`9+GacXYx04U=iHa^AYnTIL-h_8T#75gz_QxF1Z0uYG(4x-r@jYZyD=H2^nL|cdJ^!-6bwA>FF0R7@aw6M%f4` zRm}OAy8uNCY)8Rc!A$o1CH6RZ=Uq*@;?StgrR>yDJ4iHCL@!5>b|`B~uc}p@R^_~b z^^ccg+I=mM(z|q8*c)f>WX(0RJsC zH@>+er`A(`Gh+K)ce775td?w*g{&gsoO!tS9rtR0Z*M==1pSq|IbEx^rjbBkXMJ0L zJ?`HB01rU$zx+(d?SI9bv(llyQPUEhmC@TD*p|Q|KQ*XORgfhyX!NIdG__Fv!UxK) z83{=nI9Qb?=E(}m#AV0;R{w>k4BRsSezO-8Q3W&r1_!~U!>P08z=Ee|2WLo+& zIu9?(8|)dot|@C24Hb>aq*qb@!|h8lvlDd>)7W=C^r;i%D1a-+$Fpn}kIhkMy+Q}ybpEMz5>nE$?_>5>EGJhu?GQ|7K>VD@-&KNW}sAqw6kn6)}o3O^ZX zm_vIMDEh%00fY#a@!hZ=lH!Mo6+el6aPyETcn%C%R}C=Rj{i8B5n{xv4q(Q^OJAOL zBO;`&c2M$>76OJld3tpggnazn4GAy=set_RSb!ZFX=~y>9SHfmaNQ)1O@fUG>15RA z83xv2O?Sl&A}q|zt6#&|?1qLlgD}@MKaSO2(U@V*eNa@Mfk9Xnd6>&I3`Tm`Oj>}$ z5r(~d;F@E02PmH+VATDQHRL#PicQN|?yRC3^`6^n+RQ!;0mv0pc5HM zKA!pd@mwaQ9@hLTQ`ojOW%D1c>>?H^Q|3C+t1ZY_9r2&+<)wr_H)^5CtK$V#CbRQX4l|myqqag%0v9E<%ECeoW$zQpl|8MH))f@+t$^g($>#vZt-p|ktCg=_R=w#- zAbGo7611=vNTm5n8Pf1?n-XRk z&-NClhh_mZCkbtEFLLn_N_SGE%=nTl%VlDWwK%I^y<=JJ`T_G30U87uR>nfv>7zF* zIgi4?z>{Dxf91ZcSShY>p@lIPJ0$QLTk0$PGajw0k=czkO)3y*s%M4c&{}|W8tab8 zLApm%{>kLszQ{-Fd&wG#O5E|D-%kgE*-3MPu18Ck=j?G}W}LQox8zZOZuD^OTLK1V znM4h4XtK^YWMbb6;8FHKSAb6O-PMfH=&>J6MCV}g$M@~ue%)^ULsd1Y(zu9q2w&Rt zMPFeIinbkefj{W>68UuwbAZS7WF-b(eh2 zb@W;?B_*q?^nxo#iVTe7(ubq~0J}fq2mtUNW3ZxB5c4Y{hge<%ivtMr#ky-L1$4WE znP!om51{M&WZM#-w@9dQv~rCn=4)$P(ZWSrd+MIblq_cb=OmZxER}Rj3%Qfw`WnPA zeGpLJ#2?t}n*G{Js%3znDNzq|n;$Z(z9B2H%!FtZ+?1iNBHT+@5wjsBm8MTTp@YIX z8P$r;P*`MZewYyw(}vNlwCWRv%NR{H;d4!7<5%`9GbLAys_e*NnZ=xS^R7wsVY=|` zL~Vb0E|^fJ>bwP$WEv7lQJ)C@Zu~uU>i0zf@~hS$k|Gvq9p=CsV2qCrmvVLjV<23An;n)FXaC?)Tc^^N$ZH*-MRc29R~x=zTTH$ zmQUb!ME7dJW}#qfA(s7`ho5B{_I3G?eNHW@X!-QQS0JSVi00M>duNjA zZ{|_fSqH((@7uHPxzTnsX+FBO#V+l5yScdywJ)biah+POi$AlxeJ8U@@Q;s{a0LWK zi8Ki}#qV$|dr;0{?sLmL1ptf1z+Lj#VmlX?nU`w9Za`*Xn>yW{y{ zEZssnS3t4e_71-E8VQ!fO@J3I<+Tcf4wH?NE~Q;0bMyv=1?V4fN+UeYg9*LbsN-nX zc^!XWMy*9$^y(%N)Mq-f5qSDkbJP~a)r|C{NJKs+UqO?{@*a89z2k`#6&A4q&F1AU z=;Oh7t@F4my+E0Nt;!&3HM-p*O5OpRS@mG?vE7P@$!hL7Q_)m)mOJrwn(~o?9&3gw zGu$(X$Yu!ZEeP+{1ORi&GY-uApeLbHT*JNzqWdQAWDxF&s6+q=z5oDCGtwi)Kzq8n z=EU&0pq0LV*{=*q;=Nc_8#0n0CH45;zOn1K=59yebcLZTtdDAK2jL*1AGQl%h7s3# z6FLe#=q2GWHW|lG6O9G-h^EBW5?=QYzQ(M376{zGmz|?FKwE)yv>e`X?sRrtjn)mRL%Q&X2Z=p z+G}ah#l4EH@VXxFrss&*Kbai@>Saf^$DQ+YY)C)VxZd$^v>T0i&pFsx>c6!K>zUXT zOHPeb1v(QYwK4`LMPtGaiifu$%R3(R0Y-zjsL;(&w4N%+8NCtxk?W}-tn{yCbKc~r zAa3x=Xu_sb^fXJ^#xUNKh{se2hLZD9;zzFsye3SVtp)=FkXMXaiC<(ln#CFke!5Wd zzj0C|Ry26HoZ8~4+>c<4{!htNCpmg4=btaVQ`}xABp~V`j~0^f8!gyK^mnsaUuV98 znTE#FR{3NBxk(~LytcS7lm@k^ElDgo4W=o|75IpFUFXmmw|#Ks&OX&NZ}r{xx8Nxr z8gQqxXPNN}k^aKNn{dzM&W^(A-%7l^Sk`j#mw<*oWVu8B{j?VLO&d9jdNpsWaxU}@ z#|9AO&>@2pN4Mt=N~iM$S|qwp-+wvsclB$l>@>Y%c-fE$pazftRBAr5c!9HxQcD;@ z5CpEDuaPktiuh*!9v-YbEo0J&2DUs~Q7v9O7TjiudyAQIR!CSnND?QpcY@?im<#eP z6{hrOVJjT#ZbyBSmUf2j#q_n$$D8h<7vo;-+8aBaSGE8^*_3!54UJyF;#Y%3nZX&R zO?Wmv_cS7WY%c(hBF-o-CxHbSsVYWlkvhz{FP!TJvgBNGg2+su0ZnW{5V!zX9w<^L z7&#;TY?1@y>(HCa&1x@oqDyn9QK{igAqWXbU0{xkiyd@r4;c!TP;P|Q>()@wS@NsV z!on(b6?c?`6R0%+x> zN;$Xo*zc;s<_oj2^K?>-Hh&u}-;L~2+Xr}T2Ohq(YGoe zMazb`PSFK>&qf4L|98jeTx zE(2IpsnoE_oZSNuv0_F?o-G`z41OtoU1(Blx5&O6KBXOhyS1B`t7~c{vue1Tp}VOU z2-{5o_W{7&`%jXhq0xi2OsIKk-&0mv9nFyrq+Nr&CYW5?_a0R2O<0M6Vmv1JVI_!WCuXnc#o`Cm0BC;14uC&;rUn zq*95DvN`Ahet0{fo%I7ciNY+l&cRfhVYvdu60NdTtvAEEiZ(r+#Ay87-#yVCv-)eA z8=H!mA2PiAL?%O(>L5T#IWn1vc07@J&u;AATtn|GK4tban^|-ywL)6KR9zp=fXx-f z(+(^$iFj+36fmCXs2?m{7C7)Y;ATgyUG$zbyb(8aCWIqj$? zzQ7|?7ZwMGYDtZhq*LIrL;lHI)a%GMc0#)Bz?P~9!TDOJWXYk%ma*iloL?ETyJ#Cp!QLTpjvYCx6bowffVtz zT4pC&PdQa{s(ifns!dtEzv@ z$&{FZfL$7Y9wM2)FENpOBY9r>#7{VV_39hWT>s^Hde1oH`E001iWv3n)o{K^B> zyZJMNa25HOmRHyC@AHAIvIFClFGB}FVW2E{O?4IM%EQ#0l-t+FvSAl^^#e;_sm%s= zDq+$Ch?gp98{Up%{0&^2wnW5e%lh3eOVmuW=a&5Yv(--Aj9G|gmlT2;H`xUj`^SN5 z)AOAA8xr@J>+4kZP+m0F35BEpym25at&N2E<}ZxBXK(^)8twia4j} z7zU2lu~-A@#l)*riE78vsrJZ9-0fh3ssINK*Zm!>hU3PYS=`+`p5U2eIWUwB&^$sv zN(o13)qKu-Vokf-OlCUs?m;)V`beclJ_eRXe|PuU?EweO_cIHBUdKTVN?kQ^L**YM znUPg@*}9Z1*1Jqr|Ey=`ImJ{sKLPw22mpy#dJV}ZM7}A<6xtP7(lzhu7Td7&-Gdc` zFnfyEg9b6eT4XB1p&ay9r+b5IPaSg=T#RG(;5c-q#!{Bzy_D4BPN4&Y-6U_XHaaC; z-sAN@hiY^x$8#=$A-p|{?u7DP^DoJ3(zOcFrLm5Tn`FwmrX?cRF)h14JVqY^^{v62j_UA-mHuB}@8=xeal?hG zxFuqO#^DoS_g=$3^={yhJcUc9Jnm8CG9IxthupYKN0;j1uu>~F| z5}$d>uj2&3v_I+R9U;*pUR0`wG;{GjEbts?x9SDt;#+F7hgv4cK4=gYGkEU|VlCgH z=?&~glug}@mo~)enRkv39t@<-d(%FKk?+4n@Z>MrX-Du?O71_GQ+>1tq0ziwi=iN+ z5)@wsJc4I-%dG&fRIw{@9qLm@D_`A5ooNL7uiv}Cj``q&pP>TYZ9qs6Q_sZUA}2(p zZ?Mc@s^f->%ba-4yD#!0<+$Sp^v%-+w)u51;cg_8G~4o{PljvpXoXX|Y=$tnY)=xE z!oqz}A|NeK2b(&A0rre!D)RhonrWv^tj--jDuK?s4eZUYq7>74uNk9IAE6-8YF;q^ z*K?LGNWSOI>++S}N@?9gc z3U{EXKoa#SE2S;g0G4G7{qP$!X*@vo@y``2C<-}I#H)ZA>HYkK;Us0K2$55`C)cM4 zFipVk8nrLEfg{_OpN1N!AZ8KyYH95DjId*llhD4{y`}KHwHVAu-WXeix|859T1#HjpQ*CgSai#|T55=tvU$u`MaEAQ6Vl z6G!{!Ufy`jbI^P#GiR_$`{-4+S?dC2+>R%%m%U7bK3ReYi(M-!*IP}U|Hpz(i#bJe%R)E2O7a&W^g%n&a@NB}4m;Sb7*%_BU z;9QO{L>bG4Cy*mlwgLMrh#P5I5fmN1oObS}+_rdS$4iIAYH(ctq9GnZ=K$M3!b1k+f4M5B)q-^SUuUSQ3ro31s-sQ57n!qIjm; z<;q6Y;px5#S5KF=L_-kt^5%UKc59zF{@XqD1YgMm?+yV5%NRWoGqA4bOARQ;r9?($ zO%L+zpwkKuog?~!W&cz{L4*YA%a(kk&rQR7sX%(*VZZEd59@RlOMvg0u`s+NPR4H; zN)TJv**A=R$>{vB3E?omftEzLp-cUX5K;;FJnnyi9=EMdIQKyISJJPxV}1MP4}${)b0wH9b@*ViIQJhxT~Vcu`%)&Tt3Nw&>(KedujFpH53EsSc9|f&cDy*9M(uMLDec0FaVm`-?ylR+5e%*uQ9%3n zjD~Pz!^h$hkC7@Wp50}}zfW4|j!Gtb%$X;4w+N{R03hU*1r4AHSUz9@j)To1pal8J z9vPVdn*hc1P3#69(zVMP9D6{Di+m$}D~+5MKFIz590mKRWJKB-d&=cd-g@Qx`LbkC zM<~#Sm)XJz_kZ^EGKI`%$to@}Yig@HKR$xkyt5Lgrd|s3Qe9;)*{Dw=S>)GUPW*?- zeS38wXMcTp8-|HNK&3feZqZH5Z6b?d72c)=1xo6gM1^1ZSr+w=n|BT ze*)YkQ_-$Su16BqU(J?F$zU&pHxiKM{6*}>5#8Lk1MiFVy)Lm%lOcF~30N)M*q(xK zkp5*}-|5x5>w-A3NszNvHVBng)xScn?jlXmALahPVvg#rI{7D^pe}x-IsAY4zrm|H5-XRZ0g% zzd2DH&$nASwGpaZ5->w)S4O{8bqJgLZs~J=lONF2%rA0B5p_hd&}>~p+hpXO;|-LP zrnkz6Jm+j7HB$F?OJ`_YXMZ8W|8^{H?k-QBPyox>2y1Jbn+~7w@T~tZ-$*s>&4(5r zle&Pa_)#?cwwSMce&p%RKs`jwj8MgO=-B+f^h8!1mxw$_GpE$U0%SWd&I^X1?k#hs?eG4(9gHej0 zWG&bJlm(W-e$_(ww2*D|qd>96_ZzT)@@c)GHt7(L*SDaal8>QS8mqGvS05!PeDlN} zX$|#BLEDUFkqy`g1OKsK&c8^zXZ){JmbQwFEh@6CN12nZ?#Cc^lwPw>ll9@9l+r!d ze9YG4`xbmo#!1-<5mH};T-Rno+)P0D`zFs!4M#;N03^yv(5#;5bJzBWp{Hz(MeVD2 zJ}{zW>+9gdP?UmTRS`(9#AoNV5HV=W89?Yb$V+(S)TAX32>O;L?DsXp)g;Yk2Q?IfB`RH--DvMGhaFLlp%@NCG7G7Wz|ga`gOC^ z!waz-?Xxmu=5r)g%svtA2d1&!+8h0s%>SWU?nPf23A5;)hfn5hxnOdpyRZO7;*HHL4pCpI1ak%?B?39M#XC+Y(lFID``}z9VtRL|_u*zMnqWzlUmjIzlx3{utV?+CMvCkzrn2CO>D|;fqm|V8@xZ8g z=J~hs&B(o840FRj?3F@kH&IRUH6ZbQ-%D=DGKW_wGHB4ajPdGXTSbXIwGolW>!_n# zqF85KXx0mR5nsb6)RMybd|NAcNKaseX6{2p#5;1nga^$l76Dn4B>{W@9e}EWWdOhc zd!V!h@Z8ltl~^OYzK|^$5yeT}XZxxGUCq1EUi2PrtU3sjlCwNZv1Z8@5H&it1xGWG z%g3*3x1KUyDAzMt-Du%EKy3=!H7dD@J3Dsf_diR;a+Gxh2l~c~Hia@;9S?Ml8t>x5 z9f20Dw{L8YxlbH}hJ63frYv@~O^*Xs_ZH5)qiyZu2Lcl*wT(;bYf}GhZIH@ucB4}4 zEP(t0=ibrxMSRCZGEw-hd<`lG*L8R!8`GyfJ&P(O zCUd`NWsmbE5%YR8ps9BUXC}F~<9R7@EZe!3H55Xb);ZySZ^c1xTDWGW@>i`W=*$+4 zuPufpof*TA+9(F=qakA{-&i9}IgU0Jtj5BKyvAaILRq(0J1iu%v8=4h)VW#q6@US* z_qW=*qmYV!KmB%};g&UZuivE#i!U}v?qm{=!xlX}SSak(n&PCG z^oQ!ob6wFn5~xo_#<}e1>hDa4_B&W*(=e2mXS?)XgN7f`hdPnL=pT->pRC1d`9wzx z<8ms~bx+;J@DKrj0f05W_MzZzFo?cARIa+^a(#kBOQzylRola(lZmPQA;sbV`uUqI`ghg$Nkx$xUzpU_BL#h#(5<&9?kK`CdC+?`;Sgz3Ue6z zvBe=cV<2<`IweucZuqT74Z>O`hdiqg9;(B$-E3diM%yDxhr;Mq`suHAx_(*X9 zDQ2MC9;&+U1CZcACA@)!tuhIKg$A3$?u=J^r`536GdN@VWm_$39{WsuAHpvi6Iu|GOqLS$(_vSDW946_P4L|PS)=5BXqn-2N)IK5QI{a+it zKD)Wu6P&;-?=Y=_RPvwyR;XqVs*+)#0AOd$w23nlH4PI=L&asZ+yup?OrQ02x1K4z zYZiMQ8Mmh9?%vZ(!vv2id}b94>%-#ea4P_PpG zm>@t?&~gwzB1yNI(1g!8VaFZhxSX1N@zN@0SmSz;wnZ_aOdk0$EE^>YwR3O+F9ZAH z5KoHvzK$OvS?2p-))SJt{Cuk$QZvIW!kZzAK@BdT_HD2LbVJA38(1#)VgXuhKK8U- zuhV>2?B%ewdgsFqdtwF=8Vux3d5ZS=)O8rZ&0EqWQxH~*!z^Dqs~x3!^VBCA7@7ko z{u)9Mn2CEd2Y`{{pQdd5yLxjcJvppnI6p^Spj!}Fx(1U~um8H5^3nSL$rJPBuG&H| ztLcNkGGx7?pmA0r0{)G3cr%)#lUJ5P8y3Yj3G43GtPm_}9q9lG=6UxJIYD@qE}E86 z{x_}bv|R^DjjYZd0nU-L=KJ9Z=4TtBr+CrO3qFFLZGzgcVd@ZnaS*##)wSJ7Hn4mH zu6tE^oikA1O!qOPiHTU=Qy`sB-Exq+eSQ`B*SOqckJ&Z_R~YYR!34(yi+J|nPy`&Q ze-m2%1s`is$5Y}}KK1-o3lci^GlE`6hSHh5i5r^(n~RX7cU$9Dapf2#K5~i)Wup- zR~1yYXdJT!sj>%GH?Q;3O+25knN{p&m0l>5jA(@GEMs`0s?%9UkjiyP^pL`9sq0?$ zeC^Q8VVOu2pP=GW+=gr9xCkF;-d%{0bbNb&7aQQ;Ch-HeTgh9*x&A9@@*Icat?v`s zd^0qn{zZx11*n2-cS`YR%HD!LE`b8{ZB$io;3r1daZTEt$na7n_xF5BK{)@E=!sO% zTKV{`1!*(@fmnBMA0M#qF6{v20hC^Nov&D}D?n8*Q)$-vXRb9%*`bp#rkgn8^u>C6fV0rGvg%?!`T0Z&%m$t}_$XG$Fm})46en7MOwc zm@9Eo?~y>I%bvL65yp+!orq{SGjL5 zMNnQ=t7rgwn3=K#L8g_mr^bxcnGJWzPQ zGdDh`xzS|CD}(drL@8QfpYWyY622^2T<`!eY%!Z=Bmo)|dmoC)IZJegolx@&G`m1x z3>&-|`M@<-o{M+%k)RQ=zV5~xelosl>FlHNiFk}Y$LDj`ua+^Gw?B0m2H=IiH%d`8 zQ0<(hhBv@aX2z7bw-{gcegX$2 z1*5@t#@NiLB_o+ysSd-Eo7&?JpL4V!I#tM*JifBaapd-2$qXFz1PD(+mPJ@x<)yI|3nX0f z+h?7cnC<(0XzEPO>dWX@9?!(YJZD> z?3#17#%(L9|GdOJRtOKBn7j!8i8HphML4i0?t|0e$yV-*;EOA6_MDK50PVN0cx+ zwbEwVIJ?c?tShFUHy7Z&7Omimt+AMpow&v#@wYNPJ*`H^a=FRgwOJxD?caa2Y5L1=8C2<`(e}skHGT?@*T+eTlnGI&F3R zCEixEXV(LVHm&x`o{U7O<3kQny*>O*LZMi~-$K2S9EsJ;4I~Z&rn$3bHXq8L#B@Oq zxV2s+ADwT_j}7$6U{J1@&?-swe=KFHJrjh+q71NXZF2<4HZW?LkrP~2_fQ|J#-4nm z&j(us;@kH2;$!Z_5JKFgulZsH*nYj4+rYZB^WTKjPaRh=uUwXYC&{1`{midcF_gU0 z$<q`5hnT4^#{lmtpd4n5^Sh3t|hv+fK5%z}oK7UXBDF|C;g^EubVydqEP0qL1V znoYlAhyN#-K(jf8!I(WO&}zN{hspoar%6h_(Wo2LlM?>MUy|VTJJvOSKRp`}IbVLS z>H8Zr$?(m~Px0Z)6&g_M32r#-_Q@rT*Uj_abHy>47BYFB1ft_snJ`|}VVA%%+So_FaHZX!|Ys?PU9KnP38*>1gQ`hq+O?l9HNG=4G2yQZzxIZmmD3- zqBDEoRxhU5tlTOK+#dSk1dU5{o7YF{@f}=BUUi_0V5}WcIc!&;E(zsCpWW?q06U!k zX>~ZovM%Ng)1?aS4=xsMH7LEaG|$44OXCTLmfP@&ZQitSa`V9OduRYm^=^1Woc9w^7}Bc#R4 zk$Ja_kjBz1ZI|yAGFY>Kk31z|Ybv~@4j>^|u_c!kYP4jtUk1iuP=CretG;ak)u4uQ ztBGnQJFI9*X~0AdSxuFAffa-raxPLon=|ne9+m%DARGC)%np6SyzhDariKIV2iM}n zN9XfhUe^nGD<-QqRO*?qj<~B&6X)tk@#lPQvtx)DsW-R?woUVty_n^#;vTo0E+5gf z1iNpQOv_6MjyT4td=j9kM;IP>uy>Igg#DB+pJ&^=Aed}Lle_*cZw86RQV<{k{FHBO z9lvIoEhJERwgIh32~DJ3#%9X?H8@)v9KN`9>lk}sSUv{NbfX_;UGCj!D1;Ch9Q+fa z4ApCJMzPdr`x{dL(PnYR@mEr|IU72DSW`&NYbO?{Ord8hJsdmY1#OQR+u*6bL1yL)V!}C8t!S^T}x>Hqb7HKj>CTWW3{?vo)RR8(q4HvCB_*6iN zn)V=v#Rxr7i>IGSWD&Z+o3v#2w!VL>C5*rp$l#dBd-+RTtFrN^AGN;TuV8uT9@}8C zx)<=)HV{1@xDnxsEvExaT-p(KJGW92*>$&A`;x{-c9eh~CIFgN;uU3f+}5O4*}?Tb z|3c1OK@n`EqFDwEuCt==|A)W_^wO^0b#87pg$?HR)kX~R9m6i`Km5cLA9On$nQ-IA z@5Kis-G(p@Zv}9IM){>E9p2sHykM^AINa=sLl1YQ1#d~H}#g5C<@E8a_3TwJ6$Q3#X^{P zRs`hNp~MS*X{xj0D3DoyJQ%bsHLKPCa34$+UuJ3C)_q-qxwSdGMBGEAQc!>?%oCY| z`sJT_iqbg2ffg>JRB(ukV(<0zz9ZR4{_fTOyVy4QXh^((5Ru=_TE+m8rtk~VEKL?Rw3<>8Pf@p@OnuFmSE2DNR^lp^gR_aZtz?%ZV z4@uWhK!3gp#D69`(+OOh=*FyyxyL4txnx0m*7Q+zZGy=9_k|=3a=V^(!2W7nO)Oq^ z7~&G663bodkQWnJB#vT+YZ~q1bgwtEgvcEC0<=0!1X8oF;zt^{06@^0?erOe#r(vJ z8bYB4bpf^MLM$60+AZZpVfhZj*N?mIqi$Op8B;kJ=rLR9(Og$hGr3PGaOh``|J!!i zi0X3Jp4HnR3j6GK?CI}FL7nn(!AZ$Xo%=RUEK4+c?4fyQ2J3a=k2b;!3>Y*dwb`%% zP6~=1NV+l7u|;`t+FgwaSdHke%LFgBOir}x`*F6R@@JwCRaG@3=7xK(WW9KJrP4N^ zTy!i~jSWW(uxZL7_i}0ovt-#bnMw_zdze4i6=Y)gnSX%4BeLtoWe)C-vk zZf+VY40g0|)*66~lFkfr*eOWhZW1N{^R!X5_!dfh!4-Xew-*}jDS0@k*ZcQM`}DT^ zNFqn$)i)br2Pnns<}ss;MK`)Qyi321l{isG5el{_=ue1We@^vG*vps~JC27!=t* z_f_gGV>L<%q;-!?4x1YL5PXaY4_Cd$N?a+(C9mJH;rd_u@m5`h;bK!T#jQMp6J_;y zBx-i+u@oI`kVk9Ea)nEkBR8Q$@A$08*Z7;{A{Ky*aAOXo6rYvHyjZD)(|A#QJ__6{ zr5{ZDg8&zmoXn!(T^>QvY%gDo!cJcvZcMEvKb8ol7UzcjI;Z}jv zAJII>kOq|WuD6P=)nHZrc#`Kn(o`Fj$uA4wM$vjrlPmvA4#HU;XD62!7?T!eA*{p zfY6pp7doK1NF1b(mJ8wD5{Q$cUrcOqfP^@^4;ZM?28WSbSxrh1(9JeJj7N9bu$F*`R6FhrDm(BNM?MqmpD zh$^MZ+RvmnYu}?Xs~3Wr9BYZY@!gCKLKk--w$MF5e)_Z`?|7eAj%*jXBjc_DHWtgSBf7Zlnbp* ztq>Z$2+UeyM@cB99H$LgJbI#qJUC3&<*^KvQ3}Ur8p!OFXGU?em5>WG^t&6ioaV81 z&vwX4caIYtskhtq*^$5NQE|AC`|?d?W>tWf+o%a?^_!S;!Mc=@Lyo^>(hPEi7%Ltm zXYi#Zna5xujWaHV4;IWYeW}ff`~=3^sOb{BSL?%}-z3mGm5O~YT}Uw1dx(!5uS~o zMv7*%JeN4&SYlsUb3I<^;;!?ls-X$gv6nGwC*oG%wP7(&pxe@MqXaXS!>fZU8g|IWb@dqbj-gU`8hxK5L^#{WPaKt;%gFbpZJsB>~82Er{YKDFqYgQqE-a z4~1MC8^>vxNL3QXz0O@dCQsJ1`5Tp!ae11f00e1x&*2%;zzx4ouT3}BM^m_S|AXdi zq|R9aN#i|>)gi#Lqi_`Uh;{7oT|vR#Mv;BL`}#mE_^I@Yv~F~ANy+SN$x=bhREIXy zLxh-;5{D`~KV-g5v7Fb7-Jb`XgW?xgSET5W3xxxeN`w$AFNcVz+K)A{6`p+86$Wdq z$UQhFN^{p_p%cggI>1WHZ1zbg69uRRYSLQhUP>Epys-7%%L_-%D~Tha@MUtJV=ac~ z?LhhXzy|Eg)}UMAT=)&6yIM};E*LNvwRwTlE!<}7o?{+P4AWZjEE>Bs!9|d^(2{*x z7!->#96HOrZh6<(i9Pu1lDFtU*iW&W$n84*b<7g|Bo-zr?A)X%$Bqu!;9i2|gjF?&VGN3!yD%N>kF z6uP|C36+AQ@|nDihW$xgkYnP78J`U#jRZr4`Mlfj;{x$?d_uy>gS{bx98A9{dVnyw zgf81M<`f%B3Kb`+sIl4%thUw?d-^~IQ%#8K$!4#zEv$V{^;M_t8Kj+LFhHb6(8Msx zXe8h=M(R^CTHC`cL<+ju;iq?%#U$Qca=ZF?(4T`Z!I3?{0+5|>7sM5~10d677bq5* zJ&A8#xc|@(I|gh6Vn4glBlyP+Ui8YY_eEobCOE#gL$B2R8~0|P-HS>!@6bEjj6atP z1xVjBkZ6b%gr-RcCBr?o``R4@)7PHe6yNXV7#oQt+eT}D*}iwQg~2 zojx{F18O$W&Lp`XJ@U8yCs-_A9GV9fN%_L6?-|M2KKhVGic{<6 zs`7yNSOfac=W+ETo`OSORiRcM^A+ME;gGrTfMs8Pp2F))jm8e+|RBPgEKQKGUe(k5`WjZH9(CbTHyUv0VC~ukZ$zP!rk4AbkG| z;GB-^hsK(he-cuoBa=!=Y2s4S^AO_Aq;7AxHIg%e*Vq2HKh}NSalND*%85sn-FSC$ z72YR;$M^VH?NwC$fTfYO;tfpCJ>CW?%n4xtRRPvBkO@}jS}5B>5sQt=2{OQ}CRD$Z z>)7S9ol~`~ON*R06n3=nq0;>lc88)1ShYvR83;n4RT1Daq9(vEzB&e-?1yEB)`@=I z!)fXBIbbiK*5@{_sT%j6DNrbx@J-0N{!wZvSIs?{+}1W)1gF|z%>Et%RNYKp7^jiT zG7;ieT%QNb0BG1rhsq;p4dg(tf|dYcLz8=$6+7seg}$v7)T0p}gJ%~Kcb!Cx?)sadL+#028& z08~J$zsne=+W1QTyC9LwpeOTB*d#=q$1GaC9B`0=%U2BA)GG+t}X{Qd9^DAO+mpI=S@2Kg(*fx}_F!s{>Yvm!R@*P~iLMmD_EW-a)Pw8u4jQRF>rwLG}`K z_KR@=qiR0Iw3dolDwTM~VMbZWo)H5$Hjy?PujP%8*yTe?-Jh&8ZPjKGXg8rCcXW&_ z2bfh1BYT8)+G7%21UD0b?b_;5FG{y&)+@}W0o@SPoeE(k80jkHkX+>!Cpa0Z*)^hRPk_w{fdkqPNqBAkr=6lq2%Zg{0He*rIZcQx+BhGe&HO-mJ%>b$8 zICSW*bBXqLAFv3v+F}RuJ1y9ztJ~?%{TuxRSN#=q7RvuZ+5zj%E@K>Y9t(+v*O%yg zL+`18BS-W!$M9HXio&x~FzIo)8uUTWFPr;eME$ls{j#EM*4Ah{Nxg&GuSkP`0V!2L zALd;7d=k-5fhE%L{x*qGO}Z9OuP5$?V{Np)KS`<{twxU-pp75>`l|<+1r+499`8fn z15So4d{$&7Ti|Dc^>V-U(i3B(HdYH1JTW1mcATgv_#aAvT>4I(4Iz_1vP*B!{#bv+@LO;Z+3>Kc^ zA~~aKx;&_)Xx$H3tw_ufn-$I=F3^*~h5Yss0QWwH`J>av+d!qTrd&xCwCamyru|rM z4FW$=FY!*l>lyEkfjV-m&kGsnHJ>yF*A@uNGUfCqBerw{sA$K2PW%N&n|b{C3${6X zf89uFM}-ZTP^=Is93RFceYc*y97J#n^`B)S$TXlGFVb=oridg}lK}nt7`#zwKh1Qh z)J~hW{lMl~NgNKXqJ!~tbYfkpIm;0}NQkaM7^qI->mAv+^isO^0~u&0q(qeYS3I7u z9XZD2QY=Y(z=j8G!mX8uI&mjZXF=vPYvyb~Ml;vDqB`?6NzMW~1gN&f2{;QPTT?v( z`%)X@spdP!ojguvBX_+&nM@!=G)ZJ(t$9=KH7Cgit&@u=ULtsa>KOPR zXCFQmEH37Quc(4n{(^{-73vCL(4UOBD9bL~RFJ z>~JqoSDX(3Y|0L2b9d6=2v37_w6m%?zDMC#MQ)LYJLz&Tct!d)m7>m^M0yzY#5C}& zwWGN3PE@cFa8vC9$K*ysj2S;AKWv4V`zScl|Gi%>-T)6k@V_to?o-KsQk`YKZ_Zqv z`82*U3`xqjPhnsH00O`1^lcBwZ=Y5>``|p@TD^=Y4XZK}WY5zc!a{yHuUj=XZrI;Z z_P}z9{5N4~m{>g&tTni=x4dORH=&kN#6`)apxqX{Z_YxIv4^A!KR<>j*`-`dc|1$n zcxcN^)~Oatf2rj_9>^5j|9zC|Gzb(Kc?YxdrD<(%(gC4srA%Ia zRt@cgNO{`KX_*eQiCG*itfCH2+JjV#T!@X$ui8g#QjfyyFF0Q`8R+B4-VfxiN9SsLMGvt0omHs-SE)xkp~QF%O1#+paNUbL_#Il8hGtvu?ue zG7b9i;!o$fU>OM}ihA%W=o;e8%I4GXjoB=u_9V9Vo-w;TyxnA5 z$kD*zOg-fYHj~WEalRKIr;JR&^KY5gSNgTNWw0kXJha~6yGd$!41fRtTfDYJKpouB zERT{Xx3Azl1}ku=v^6@yncE0KUMu^n)jY~mt@eGj+5_Y{MDRRu#Zk}@! zo-RT%Ek5By9Ji+(K*8W+V?&|oE&k^i)RQ9@dN3KdyxxB`RKg-YSCzkJUJQ@YPdmr# zl9NMPlm~q=z#4jSc5pF*MF52YH|UC}t|Doe_l+)34lC@}noW=F3qB@XxSCc)x;^tb zbq>NwAUhK@78(JKqG*|scGApPsaFZCz?soDKytRPRbNxSJe__3eB9V4){OP_D;uAE~WsN*`GF6{C z4vChCWMkt}uYepe`S{KVH2b;l(xNZKETy+XJW#0gqSN}NIvOI>lRyOB8-bC~3jKY6 zOd%T7agb9zJb3AtL1Z|!SpTp zCilhkGoRvh^JpAvTlC*80^b#}Nj8(fd)=8LM*p7!V8rdV*EXjwdzLXeuu$S)M72il zEz)@+M1*_4;In1=^K3qO@f-ls2=grhd%K=UIzz9>1!*J67fpopHG$5yH6nB&rZbFz z0T0;m*ztWfb;Uia7H*+qoCdFF;}T4!FmAi`arcn}U3T;#nif%1UCps zbg~WeGqn}c*3vp#1`~n-E0t}!_w9)e46KaVHn?Nc22wJ0gUG8}{yYxFYjyb__>hOr zX&K_RjipLICtl%9`c~0>xN3OfJy~OATJyjyj3!FgR@-6+7LEkG6v%aLYAULxm%B%oK-$dY);pIzUn^BI+e&;-#;aYH)V@yo)|KiC`ZTg^ zda&rA0WJSzAxB8R!3ps4xH=mmhohRiavf$Fm* z{rpk#`Iy<@AS6O5<}$GA`5;EX>*<5$oqPRF*MkNpA6lov{KU6+SoV^~U@F637frV8C}(CKne&{M0swcqy!ca%)=ORJLUzYc zOeGx5_rG*`*fLnpE$#cs7r=~`PH{xx9=Htz4>HpU25I6&m#d%a6t>r45kJu{5)UMw zxZi^MsVY4)!#_)57eQzcMih1FZayNAg+Gfa65!BmfIgg_A{b$4$I)&+UKl@UN(O8< zoe<**`6yoa<7=~gVcFIyVkz2qOi6FL>DvrH!{8&DeDk^XYZmmG=` z1VSMHs>xo1(yEPj`imq{)!Ms4vL5$r`i7CzgJR55V;r=g$JCH|6$m>}tW} z;>U1_>PD-cv^fq-H~Gg!LPj#WveE53(%)_`zW5G zxEdJ-x#ZHeumV42fDnV70|T?Sp0)4mGcQa5e17-$n}@;3V4PG4|DQKTs#EEL6N@msoc@CKKLgVla+`4+@R!3lb>~QSCd?&F zv^)|aOXw>)nOg29no!ar&FfKU*7Xg|)G5V=v(t!#rYMk=vg|Tgr{**hh-g_~=H(Xa z1;LO(Y%Z*eAcdEgKlu4zgf-&)6Zp9w^#sk_nQ;*Vd;-EN#~65gA9v8fnCps2=YDXe z03;X_8-UJBA9!~;2d&dB%N0KjD7D|x|M{*d(bJBGYRlZO%Q93Sg2t&rTiDS2W<^*r zof5}|R;@TL7SNUx+g)T1uQ&EJ^Aagk#cG=cmlzZ!Lo#(zE{BQ5TE8Bn!fL6u=2$o^ zdFSX7wD8loC@`zq+|c2V^`Uj^2{l=-@~+uS@Z4^ETm8XbyOZ}sn>k2zY6NC03_&~I zfA8GlVS#G|rUO7SGXVwaW@UrEXo+y!Z3LScxp^Yup1^C!6|4EC8HrRaNUPgs+ckHT(VOlgLrkP_UO=9&&kPLt>isMUZp;uXbL# zMW51{7RCF%3c6~$Tt?Cfp`fU16v7MTl>IPvo}EfLCrPz;hp-~ zZ=u&=gon|bd$L}H@6{TmF+PT%+u8bXdNwUH>;Wb~2{Hik`+BO63?W`hCW(0XI%!eq zqgoXeG5MLwz12KUbFv(fv2VRwDlcrD{0WQmSnKvVs3?wlw}f_LloU@(M4E@N`sY$e z;IGmsU+z-w-NwuFZ$z1+9|U-xG9N)_k?1JU-Mqh3$a(BL-2Yms51dh>bd4M?faI4J zJ|>NYG%&v_v{>1r^sI!hXo+DWI)r6chN)~)7)_~JlOMCeY<6G)6#Ek*@!2WWm9|E= zEr*n0MZYd7W#z1kPf3bCPTJ&V;UbQdyfYNKZTpl;m~FI>HdX-^KDNl;%Sj{}9h8kF zdIhg+1myBkKkbSiI+hT9?&2(q74UJSl2ew>sz-6cgs|CG>G`ED3>Qh?r8xL@He9lJ zI*-hWNwH=$IW`mZD36bz_!RpsG#KKyB}Qa{mEgm}?*N5Sk^moLn8f$73H++mWI%uX zSD?0$jZ)&w2iy#kVj^p}5Gp{G8z8Wqu2;HpjNQdoQMGy-lr8A8H@qvh~Mpl zFK(UX87BggoNNY{xRFZ+<}1HzR^~=WP+la+r7}{^L){u#@p*qfYDZ(KH5OFH3JluD zIBk9d#P31yl?D$2h?8i)+bv@?x3PTla4+kqkqi=lFNxW9{OEIBo=oPwNxbCsKo@Kc z5KR36YXkz%i%M+5b=Bu!mxo9n2`3UDqke=BqvoC(1#I9RZow%>WAzP;&c!h! z;j$L*<^mr^3q|UBnJVsykc$``r9Kf|wp-rhr{jW-7pGIqJVrOHc-J%Cd`oQr;%(Xi zV~c~&E+kfsR-hlw7-`>u9)L#71GH&aEKA{m4>lcamjkwK5_ox6tY4mWS(UFDcY zAu8oPVGI1X?S7NXmXM6uv0GeU0TyB1G2n1`f#pzx+ybD6@k*0t%2V)Qy8lsO%^eQY zHyrNP3mZHcO<=KJC02;^JCj?e1 zz_gPShW;L98ZIh4@k1imp_g`l*vN1H<=L!bt-v?d>fer3LcQLN*6lyJ5z#MCt!iLx z%i`|{LJKkvbU2gxJ>=u{gUh3pDlM0;aWd2ORco+lA`=oQyy-^`Is5MeM{_OP{#ZZj zbC%GFCHsJ}|1*EQ#ZH{^(iJS^NG3QaLwC$H*BE+zA#@3y|xXZ zd)a81@kKa}{PBn%2ZlX6q|_knFpdoFk0O*jEAKJU7XT=#S)YzwRPjIu`4%1!%DZiU zkOUI3ouK#)bcabgcl)3cD&35_66RF?Nl(FwV7orn|LZ55#!e{sREYKgr<`8(77YbP zC3@^|QMpJ$6y9kWK}@OfdLwGbHiovJaIqU_f^wawx?39wt;zu%>loA#X?WD~$)cUz zi%+eT&u>JlWfTDJEkF@e8_9|j@Q7Ug%bRW#gW$UNPY*jM9EF8C;ot=L$u;s zQ(|dee^Imo!nzxApSGSkvNt*0?8C55bv{X>i1jN~H0m!EuR3uJk(jd+C0m1}j@w+0 z9py{Tq+x#%?dc<~Aq_A0G%Yzv$$$A(Je1E8{91sDM2j;SaN6V$opNHX!@5>}joid> z2xUd$5&1+Xh^MyZ$~v07AO0g5Fk)NUrkYz5r|3Tq^T!fd)2qIF*8{AlJ;@?L&Ni= z1Ln9I_%vC-2NxU56`valY}y-ex0l2g|4%tdi_g-3v6zWB+v9RVwBLdG>LAHt z0D{?qSwWO+Wp^RiI#inzg^}l5Z4%+|PfmXIxti-SI6IRzY9K@0(xnu_6NPmrm&Mr7 z+#&3WOUyCmSz_M~s7L03s!9Txy}kQ6+W4xsufQ;6XqpafrFwb;7=b;v1RY`rj~I^2 zo^1r&`GUO?Ma1-U+1I6iQCi_;H;bZB!n)>G06N&4@n@&PXG>kjo{Xle3PzjQ7Xm(B ze$y;{tu__k=(WAJrNNKseJb*miDURPC28W{a^i;*RRSu(G>3RxDMLRW67tkVGlcAH zX|j4XN2w(p%PUA@lCZX%4F5qew(v3+9FIZn5W_mwhBf7=zv+9)i1e1j&H?LsS49ngIp|zKt#Ce-C&r4Dcb!CF zdvcxeTX7oD|1(=bsc{mZB>XH$cK;`Pu#1er7qfR&)d-J~UDtjZp8R~KMMf2^7@29R zpUGQ)9xP?sdd4&AHDZ67ePhTtK^1D6ba*olpYBNEg|=G+#&FKjRUkxjpl^Xz&4xSU63%w!%u+W7K40yBXWHC;5nWV`28;tA3F7N8H*D?~hS zKLFOWy$dHDJh(Po91p42)I-kNEnzEF6Y5Y`hD^rIeJVX^yGS?8GFai)v829S5SsMnEe<+F*Wn~+7CBz#h9tS zid5X1Ohe+OMEwqB4N((p^F{f`=c>V)8MOt@8BJzFncx7QOgri(<@Z7-t^cm^r&h`v=D=AL5#H zO;t@lO(Dv32^^wA90gtBY(78}hssh3e_RYhD}=hlFY`aQVfx^y*@^(?5&uslBPhhM zCs5vyQ*HS#5}X(PX;`zk+c`9+TXtaWB^}f~XmfK+2)G;LQyi-B5u!n>w6cO#0>2lH z)nq4acI76fYXB@_?U^qwY6Q7`HrPMplq(|9x$(q5+X zStLIvE#@1G9mE0plI`S8FwfF(Mz**Je+nvipxMuCphjDbbUu7 z1e0MEPI9F>i}bNKTS!TU^2~%jvc`>O<8ukQ3-i1KPw)L@OIq1!)v@K-V%Cw&%XLq_ z-U(k{p$t6d>e6*>+oDL~>SOE;T7u|!>HtT8KaAbobbrO3PY(6TH0VBbNymT_RDwwZ zFMdX|f@p=VeR{_1ygI-$^0u6iIhH-}S@3_pSqVvc6A1vD#_b%x=u}}u)h^xPb`ez` z^jYWBR!)btxyXP=aI9wDZAbdFNU6MPt-3q{Uhwj*v&&7T_d@CI^=d5_0r>9Up{)R7ze%CaVcv^Iv3GmYJ5t?A9DH9F+) z{dy$6N$U>fOVmCQ;s~pYK`lPK5!t09_m`!OPnx!zx@I%}hS|jjx&O^NYF~i=9gz5q z;2n|}LQNDXrDPNY=-;Tj5~u^RA=b;&@wAs41__6=*?UWP^C16)<>{UCPThlclm1%gbU0BfOE97%}50K_y-aOT!ST@F$WP zy9q(wEcAgg({a=-zESel8C4WNA{x3a7_ditt<5-A-b03r}+h00F z270HrN2012Jqz=^ox>HUUWE}T+513y=3d|bc=+8}hyo*)8xz>zVz`fbZMa}9h-AE| zhz<2)0Je(JCBM|G(u^U3Yas>yMs1vwgzv`FCM@rEZ4l|!`0FS+dtr1u+XQtAgPAD{ zyi>i=3|gI0{^BH1In5mq^HKiALfsP4rSeW`Hr*->h*bpxRDsB(M)I@ebH=SPw6#jv zfsKnxOR$_S#w3OTU4Bjb6r9i%=7*H1cg+52bnfji1BwI)QJa7=KvG)k2_4&P)%%ZX z^pJTk?6Xh=^@miWA*d?KgmE|lO~WZav#U|V5yXZ2nd2ZU3PNPpN(Lo^d{LIFx}Lvu zod0=jE!kEGL+v*gjj)B~TvoJ9Y@OC1(xBJQ(0=JkK{&3z;w0jJ>hinY?kEzYY?1Q4PBPq#O$(e73TtO3e41NqY$JT@zk&=StzM`nqy@e)&UX~4TB zY&dvEB6`Q-S%YdG0;Rn-WktkHb}_fQSy$@kz-S%}ZM68ZMxhoN$=Q8n%EUVlfxXpr zes+7U2&5up6C0A3g0uckyYGmucbUPmt#2=1a%GnkDHN)z4P1x-0A$GUyRW+CvU;vc zt?lpf0oyrZE4)9vx0#x!U!FVLyi_$q{DSX%KKMGulW4KeYng?eSCwFSZa>|*Mdm13 zMQ6n!jE`HX?M-KQHb?@8=Zkp-gF}K!CRM2VCx{9LXGM2C9KfQbO|D}MrQ9xmsT2$h zR5>e@qGBk4rurq>`r>H}lvD2m&nEKZ&x@dncZhI^e%|F-P0YPVwDlZ9nHk8m{}thG zF6KMiRYPJcSx1oUY$wLO622Zm%!*oH00;nH73ctGzw68GSiBsDy*=GaHuMhLo&U@} z4}D{Jipu=+X_rsl!+U4~So4l{slA5u#K4}n_aEFs#oyfL$#-naTEt{2NfOJ267HD9 zI(bVH?=oCcdwySx5p#I+g*$H(7vu0k_I&H}0Y_5W6W@RtR>`un3=Aq8Vdz`NLfW!@e z_gaBtp&zZJgUHZ{a%HNe!s(&F>;qsYuBkS)c$2sYXiAqF`0P#(CRO4Rr<1tsm~gQ{ z*P7Zm^4(VXCX_DImIcapTYVp#4?y)B&w||wDVr?IqM@lWUgk--R-;l6uscv-vmC$` z3saSB3;`m%Z#AhBA6jCuBGZvqDQv}~DXu2Rh2}{Mh=id4rjoeua4blr0n7LeZ+m-3 z&m<_K*UNF#(fb-J(?9bAEQ(2nA3}=zbEe2s&BHH)Yx~3FFf+EZ*z0dOH5Pi1PIzYrAl^>Iw=iT;R~ikwKxS5S(*?QQ=|32RCJaDE0&$t>veIoDA!T7`O(J zKV;#QUrqxqF380rHi6cX2 zb){(~X>S`M0W&}V2MgGJ+11=D(mq){TeJlMhN-cG83}>dj|AiKsdo?1De%iN;=U;n z^25yeED(s(h>fhCG_7ldKB@}$2~FtT)R*)+rnt{UULPo643V4NeE^eQ;x8`e{LF$u zh~wJqvGCK<_p<>g_24DH$amq$;{FXBmz1HInJUgc98j!%A{D6=Qu#q{*1y^4qhOOA zbIynm9v*(XE2drXWTg?0?@3!6`XA15B)z_pOq1!PoAph5* zz}l5qp+z&2Xfhs7$>)r75XT#TDiaeOhQmJADna}c+DsGRQ(6rFh(4@D|M z7H0#$UZle1G1+>_NMq*R^)w`y0);jzNMW^GzlFPbR2A?ecR8ftdfSHS$25YfsMgV{ zbj?fTh0S03_CX|CS4sFJYypv#=7NdcL!q=q#~q}if$RjNMM2S0%=FkCW#b< zPj{0p$1(Y~eIENBUctqdoT&*8TmIM1>FqLv3`=qH9tX0VsqE|)qM!{ouo5Aerw74{ z7-P~M0G|0vL{l-s!%&VN9QyVwH05D1ZrImfVeOLQQ&7L^s(2-`S%43sa*b<5pTA?h zkI!bzDM?=_-aMb3i#O!@c@^s{$}J_R(#)*l>~Dg&i|Yk1<)hYUL3wB8!~*?#*o?gT z0=3fd^!EEnN(1!?ZxTMi3Wo=k($y@M!mxPxb{8SE_{$J6=h%I(CI-z4;gQ0DzsN6L>(^LlU2C0=38Ag=<2bEDD4zSyql& zyhuMCZBA`Raw!%=xg~RS98}8EA2qTk_5E zp%5?L2Sj9wOl6GL1Bd47gWmawEeHfhMOlP+kTqI83lrUuR$e0DSx_|qzBLA|vh&!` zU;rf52z@p#4}f&cR}={SQPc;^-Q0wYXl3+v7e2)bAT0rTfE2q9Eea2z${cnn?E1V# z&UhUsS_ZcOP)Hl6-BBsfjr`1O;0W&qEgQXtd#yTJZKcM?zC8l6PA$W0P#9+*lamp1r<{iOwY+=)w=7jbN`ut$YJ4JymP1>@qVj|}$k z=0YlngykTMX>w6S6Ll(953QJKio>J>R>839Gi%TQ-9R>?o%o?Wd`9A;tZF1s?!co0 z<7nVuDar#83E(cQ2l9O_I*IPU)7!>U>aoaqgS#}+zLh@0764i1=4(x+C{dB|G42`T zEl#n2k+2ed^$k9#i-8U-0K4S2X+-s2Q0r_$2h%a8F`qNpp$y`jwQ^8 ziFlWsyAmFH7$bV=z-Q_7o7Vj$a_LAgfC@e80f??GiaP^+041f}ZIfE-ngA*|JNw6) zd*WNqhUv!)38<)|#Qhs=BCh0DgM<&3P4mWKM{@T$5Xy{;b}^VpJKfWlyttB_u4XdJ z2{*+TsdxQ?i1OlJA${pZ+^+90kG?Ej({abhhd|YuQ~O`w+QF#3hmnO1bIiu;h;i%4NP! zz0*Q+FYnKX>~I~lgDt_Y(bm~bf-&;ZTYugpfV^d0oCjuB5jHFcVm8Rb>j2P$t zi_jP^UCjLlJk^s>$Hn$`^-Z49kt7|CvTX`axZei4;lKB>O>$_$>odJgyI{9lf%lgZ zU@7*co@m8^_6StGV&%`jZmh4;w#UW}KLK}d3OK>lbGpOr@J$liBwO=`!|kZCi#@=wdt{<){0=!VCKbaV?uVPQtMmNlIQG=wG?VlR?LNMCm=GIz^HoHh#={2@GT;j!NXv;l^n6)?l$Qm`j z`^_*hhGKl%uYR|6-?aQ9?;SW@q_b_xBpNzBt0BnVVhC+; zyd@%!>9!J-sYJba0k2q@pngpk12YO~BpI^@R?NQvODdanvpX#SdhB&L$V;GWB2AW$!x`VRt zB#gXw0Y$}%%m%fK{wQ%o1J%u(Az9u0>L+DT_Y)W%utM%PR`mq^dbs7mikQdMh}1l< zkH4biJ08inL~}s@q9X`O&cn@MxW02$Ma?Pqro7bde4y+EHdYxV0}gE5|AAe1`p*-CG2PTry*OO2>vJ&^Z|x^=Q26x}F8GgPK^N#)8~nR7 z$=oR7_d3|07*pTw-EQK;TvK9P1=}wLmbrTCs_S`3sN#vPyq!*JTy<3)C~^(T_TIwN zDe@&MneKtq1Oc@S1XCfuvtJ6)c;i^hV~LzS|*JE ztkr(gm~mf2EYjKexnG)}f=oba-Yon+p4i<2i5CN$`~DVH;t~D)AT0};(Npf-*ol65 zoq?dGS?+9_X?YS=ir)huTSd%8z=|bSY9lq;`(NN7JhNmHV*_F6r?P9JI@wJWd9Z`!ez-M`|2zL`_l%R#OTLZ@%b^wG(-MHz9(haiiy0m z;MRIf^h44Bt&1PCP>r7`Mrd_2it|*$l8&X!`F=>Av#{EIquMD58s2Lb6VPvKWcyGD z9Z7dCb1dH!&wt8K<1W%$3@l=}m1N0SQ&o~O= z(or+-{dedh*d5PuX(g&C>7CXZ33+;&x?b0?z8_U;*Nr6{CUuw7 z^O9}w^Q1-v+!Y%u*X;-Cp0c2M9^Ta#BNIyS>%_-M6HMGv*@^}kSXFdPIc+p=NI@vV zDm-5FWzwY8&7YeE!{yg1D*8R^egG_Y;6V zb3r_-lBRvK0UpqbxoEXeuSBGd$5qjyT;eg~poq-@kqthV_-CPDjp=Aj>4a z6g3&7(tW|N{BD>F}`zV+Ns!d6U zM^9c$!~YeTO^)%X@PwC1Q{@XP-6?6qr|DUtuQExyJ3Fu?D#3+bCP5+o5K(^a0MR{nQreW-9G&gqeR)V zmwE|1C^#StyJR$@kugG7P)IUA0LS=c(rqPO#19Tm^f(FKgrPvB_of zwoWDBq`}TnT zKI&CAPM3U=FHCxnYle8~lzl(qLs{cXaQ7&odl089D|)78=d!j1dVSN^Q8ds3MQfD` z(IPYf1j3*xn$Ltn(Sob!f9PgrlOL5>;hd0On+7XZKj2#*1O{$Ir}=DDK`>N_>x3`_ zRfWp3sS@wpl|lb0QZAyDoV&xLA8Fz50Zn6;q+z+09IDzB`PnHV-9nQkXd204Xu#V; z-`JsJ%^ZXUYlD4Ndr&|K))x9*(RKqj&&!}-n03U39Kp$A!nJCNn5t+K2mX`CfFS_-S0CmN%y zGEyf9D^Iyn6$|{>!-m^$cfcOI7@oiML7CuFSY3d&b{W*7Y(4-V?SN~rrO+pOa${Se{95amcX0k8Ge1*Z&La{Vz62$;@FRGui+$10pw){NCN!iO z9pd0biq&VYx9b;p*34lB@}cKG$u4?l0OJd0Rds)-auf z^)|yAfjx05>}}n0B&7EmDoKo!|_tbT8V-pHaaTO85>U*$@_6?PZF(Dzqq= zBY{mOq!C$v72cPg)OASR;ou$WkNkw#-6d7J0n^!-9Kp$6Fd<`DG|yTI7kecV?(udO zig0O^G?k%Xl(QaK)iMI7_vd}xsa+r3Vj-1x#Bf)+Cd&fjOhpNVyly%$K`JfWZuXOK z4Ay_9y*LW>D4u_g_`%*PsJ_4#@r(`M#fldX#|=nQn)fIyZ}@zwkevwW8xq}WL47pB zaUuc#BcMtZEjIaM6ZC$JIzVC=bI(|UH_%)UqBLMjm)E0Ma^;5H|7`z;AWY1HL>XV9 z%NqQlaeGug$_NqX6!?q7V?R@_$Pec$O|7Uon?!w-`1Z^r|4KM3g(!XV<7-BQDyR-g8P_5BwTb&fzJ~S>Smk^{BDiy?u;V&ULYAo6i<$3$#w{xgaLN6_)xNw z;`?R3#Eo!#GwX{fx$5|!rBK7xPHCciWi2$WURwTXMMF0ncvW)>eJHcUTOAE-6+hS< zQ6g7%6;?1!d9ZXTD(%@DCdGjon3hvmg*5o6a@qp@=#6|(H%A0?2%o`8(bb9rJKd_? z+*rJ6(BIglKIz;KU8MicyGh4~jQO2_J=xW91KQ|!PFL4w&on^#FEetd12VSmw*&Oy z(miB04G_0=#Yhr7cj$8l$&Z?94^mPs(JAXTbGuvuGtL$EHPqUqj`)S0hc!3(3y``1 zq|VnK@>ouXn(u;WwDQ4SkOgYk?BGF@kDdD^qjN=fgi#&^L8xA;r9&KZob5*3%$t~^ z*dp(R=^?(YKe$KtPWCtZN}6Byc)Rh3vTf<-v@f%X<>fQPP0^ot<~AIQp;bYyd&2+s z2rsaHxLhhO_j$N<8!I*C&PBEDm1};V1Tnb2>|bEG=UaqYpwfQ-qTVM1<6L^wE}3pa zqp%pSaTTAwfl;JZC1a|sg>&A0JeyR}8^D&59v0Vo-ZSP`Xy}6@y41#_cE+TeV{NUr z6J{q!GgIE&T40fxg3J2^9KE}q?j#-MD8FrIA?Ayxd=#PSM(izh2a*xPEr8&*^Q!mP#5=9#UL6(D z#-&CxqTkF3ObRDHeO+hyek9Ko4+RkMKzUT5865Gx&SKguG`e~*GFbd%V;-?~FZ%#y zhdIq?Bt95a1+c+zDjQ9C;zdeId%+^vuHqJ7$dxUT>Kutny^&L&SLwNBbc$!vY4&z; zVVM#D^<$EVHyi5rr+QI?A8FhQW!;fE;i-D|L;SG*bLO+sD`~vUg*KGntDXNn>bdTr zGlut<^`_xyphff)w()^iMkS#*9Zp={&FP`Y}AjfsLOEFQZjp46Glni%;7sS>M{wTQ-kuD#^{!44;OsB?g8?O zxf_NG-<~;@d_U27$WBSH?RA%39O2_YlHH(7Mxq& zoLUq2Bx>AZ2L&7Rd{$y?d_1Y5cpA!&o-2-ZYm5Q3Qnwqj-HJ8!1I2wVeKclm)r6Y8 zt8*cYPI!f}ig7SitlfnsS>uJ&wh*c@7nY}b?vWlZ*5i$Ng5D5m?Ambhn&s|lA!WLO zdNVR|?z7~Y%K=02ID&%|2z%>0r@+<53AfLk;3wa(7ZZIV>BNN6U6e$GD7B0kd28pe z8CVY;%W5aBuTY(BT@}Fp12_x^<1VwW1I7}YT|*MN!VN5uNE0O{p<;#Png0Mm*D!NK z)Oj8OqkL#A9Re^aZ+QGwEG0I$l%!hVU`wEj6V#FQjAw=_n1EbqzI_AA(w$dwIJ|arkOg>-&UBEZ!J-BL= zJa8ojH)HmD1~sM7ZR~<4orFPC)UTfmao#O)x9jgBP(#*%N*%6`1>JK%q{Xo~N)exy z)zLsM7Y)f#n1aYGC+RF|#b^~fSybD^dZ2}1?eX^ABefrH8j^xUh?ZV;Du%Nn%oCjg z_C?#J#8c5L4AX}8K@J?a*b{QSVyOuwI!XXNIM+L-py|&9k9dKlBKPKz(9wZ4Pr`nf$=t&BnJI8y zA#m>J5!+!O00pJKk*2w>86ZUy-+6hvrW;m0UCoRCC9)m?**!r@_<@7Z^i&FIeM{qD zRYmg2p=9+gqBcAtRy&YbbtqOyF|Tr=D0rq4q{|haO1$XS&73oGQZ^#_&Ung#DMLLn zdNArXn48pE9^dZjJ2L4UW>j@Z{aw`sy+FnLv>%(WQd+&mRzV-E9zjpV?m~O4-MTlH zgXet@Iw~&$mUImEgvkbWxi9iBAUz_@=77kOO!t?f(ZH`pW>o32Q?=U$GKUYkl3pX@cn z*x9ycNi&PqnG{hd94y23%C+S&M_MtJcBi&%{pqB%6At`Edjy=+X*Cl?@51>)jGE1% zt-UeJcfBQ7EO9UPCP^=+{Bux-J$Z=I(q0HH}t8{|Ptcj5B8` zBU0{kn)wTtb<$GaNJYyC9uYe0CuQ4>Tgb7@#o_LnKkGcRz|Yc=SOmjwCV);~JKa|j zB7M^n`41Y$3>;IKEDj-6R+(>oMRu{=zF&-n)z@Nmoq$C&&&Vmalx@2B9E(1-&3zqbRRI1hGEmC~+BQ94wGhvqf?Lg67r?ZUQz>ZWKXlL?LsEfU|g0=Zg zWZI*zk?uottniB5o1e&&d#>3@X=jfB-aE+jd@hY731PVc2Mif-keJ?wcL z>v01T+*>-=?juQ-lf&Y>IVMrfD&XVx^QySTnPe~7RwcA63s^+3yhu~Wkp^qi&2rgu z_Y$3!|HQ^1kqj1x0s6rw9h#)iv`}(bG&P|c$CPGIiKW=%YZBwco$kmAX zSd*u6qWpN1iA>@nrxuSI@M!mFxv;EkoZi&B{96YX%H>o0Lcb)Xz6+<nk&JGE0IMc~OG%Q>#wZ#_umkb?v-z-_e*mv{P;`aa326a(ah5siZFi(K zo(>xM@nR58ApqT~i}E9Bj6}Gj=_x~#6@F#xU_N$hNKh+$7h{5oUU`Yzg1I4{q-*m2 z4SB99959Wg4|`X>p;P4zaMciB@30(Gb#|sSVCrDxq#EE$J_*sxfdETDw7(3@+YoO{ zp%2F0BA+k4D`OZGI5Zq&?HOGi_6jU-Oh5A{?3*8$xDL0m87DG}K5oFxl5^`O-XV84+rQD!ySk|j!jujl*t+OHtMPqZb4i2bL*7-vH3Uaym zr;V2EY-ChVBQaCev@aL7ygcM`J{1cT^Q|BbY}0=X)J3HB9=i=#$xbN&Wu(#`_LfUV zEc(R+mBb0W@7mBL)RMK=TegiP8TIuMrzUX)wllM(w|@c#=%g^1JM`(2rPWp9I1SG^cZ2iFpY~C3=PL16JK$D0?h3D{H)S6vs-9p-fs+K#l*bIu zb^y zYT6F}Uel?rXi&1Th_BP(pmMW{bMQNeHx~s`F5e2B5P^9D$b^Af5q8wh8u>+52ti%| zg3HG`Fc53mY>E#_o5(1x%E~z;^)Tyw<}PjborC z=7SxMMSGOC5^-voj|*c{Hq=?Qdvg_G+X0J>T$~EUmG^ZmCZel9xLl>4jpWh*pBCci z;*NvfykM@PX(-&o=h7jw~G%mY&HQb6Yl70p@TA9OhcWtz^C*| zG}iTP4u7uAre36polPy0>}vug18$ zwvQECs(yK0*=mNiNQ=4?ule667m%O8gF%Gc%VszdXPaI@zfh2Hq$z|W*ua^rYC6Up z?oxgHH_M;ATVofHm7t6x6J9~EoH*32ohZRdJ+C{IX0pMn~ zWEk7kG6|-Fll=M!eX@A=e!jO<{q;n~ zNq~^kYZvYgXG#o~$f5g|K}ZGx2{4fx5JS^nNDz}cJMroAL~vm*b}}|El-qP*EBPZb zwQ(-&P<`9%cM8JYY!@qP2)f6(vFq5)IpVL5Qpsh1RZatO`fu)W_*JAwu5nT^V1noX zh_tmrr|DzJ1(aU_mO@t+`RInlVp(MO!{v;0{;k}9 z>~vB{@k{e1C_opogvma7>Md*fqbM6UjL8;8dE_)z$Yuy2=Evf?a!k$0HFXts@vBCT zE^y{FW*%La?Rg)AY?**dY+0D50a0XVWJtFDXg46jMYE&%P;aTV9Fy3#mHI#1OrA|A z!OHqs_^miDofu3y$Pw*J^`9V}*&l(28cVJ)dEVcTbbRo4%VtW6r7ds|9(MYfAr7rV zph$^ky7Q4X+^^k4ZGF8j4D#lt4N`~?6Y5i!X^ZWmz&kV3xe@&h8sRWpX_KSbPvgwx zLip*}n6x3W-da)W$VLqb9r#+1!nJbKfC?6FU8%>czL}S^NvVJ>RZ4F$wy4IllFCwuVD^M){2zIOay=0o;{{o%b5f>=aEQJ`1vb zm`4We@EdAbW|@h5k+-64^sm5Yn$omo#!zX_6txf#-kCCa6b}OkKhy1sBuI6Yt4#+& z>9eAKK`P~aKe2ic>s>b64>yxu$tQ~Lw#z{0C|>BoomngyzA5MHVYxyQ?37ndpaNDD z@%wZ5%bg^d78pZKnZ3qZY6A@~j9WKEw1h6|(D|w0D!@)tOdsUS$B^Furt3N4{0!{{ zdIy*(q$?GFI`h3fhj&Wa^q?apzG!Dy(-^wT2R1$2}W{<0*twwcevMq)ogr=bSuelvv zKh>3AufKekn;?goWu63x8wA+g#M$8YU3ex&jZ++E5|uk9lg2}8;v1V9ew+sONB)h; zNM2fo!t~$SF3BL;67oWz9$XxzU{P`d-^7 zlp>|#F?xr$u{N7auafhV_j6%-Zljh+jy-hvcg_cvQA9$@7%kNxFUXx7H>#OlpyO#i^{taK+EWiF2bRQeoyMN)9ysszV1n9)mGG! zsjtK(?v`~dnu%EG=S@VgIK~pdYfH&D6eLtW!!giGkN}PoQuzt`c~|T8n435k!tAoe zFUWNgGQP3OvO&DRhcxWx^bX`&DU1+S(QM<(aypD!3P?k#FxS|Py*ZcFB?yS*MwBt#vuY^873DC zRGz((2DLN#NX*h?iU}JTWl`n{TzcYZ(TDzI)u7H`2WE!r9Bv$jO+pQP@ub!p!tM;2 zKTTVuTSmArWT_=yAo>6?uEsh=jL+O=Vsm8!Q|6Mo>57j1nEMLQVr{11)$MwtI&^CCJpXWX z^4fh=uF5q`!hA|hjvERER7_j9!6cL#MC*RpJvvd_0mx8B5gOf}n71lt^J=9Cmixdl zd9i#pbxFR!NXgaJe|q%s)>~H#7A+v>I`ILTd~4! zdh`(|(6~q_kAI3)_ECXd2kwIkG3GdH3t(|py%$EqXe`JNy*8l z$o-*}tD(&#>}BQWuQB#y9ks>U=)K5j;OAH!`85h}X}b`oi0%#+`P=3{Sf((b3I#6S znW(7|HUOO4vfE`}Guv-m+gfxM~ExuqRz( zcck2Hv_B1kSke*yEf~;+T}x%U85h)S=g(drE{xr2yWrdw5WDV#24I6u41KEC7nOrqtqU`Ge9GhtD5Fx6BM2saumfO&vLr z(8*KMlUNU-D!8Y2UlX-3)2S{%rOV!LusvNR0v7Y)WZdBCm z6zLRxFp@F=tk-?Ai@a31+{393!3>#J_vy#yyH@hJoSDgV5tgA788MncYe>Nc+4K72 ztQ70BqX!ji>MXjI+}0o9ECMI3H%pKW!%JH6kKtsrSE={7U{uGL8N>w1e6#<{t*9>+ z1X1$H1os>uq>5@1SIflVV~-`V{xMMx$je1xi-%sA7Jzst-Txj(gpp`WX=esGZuaXz zjf2}0MHCG^n4HLC5D4-Y6gxsrY;abRK)}FcN zF7X)eqGyEzJz=tL`>dnymxX7O-V8;D^Y`0+gvzNt+xM}EJLBL}98WCa3iP3ytH>s% z^dyAE#AuuQs6@yrOjJ9i4mqM(CA554t*Sja^Wm)^bo=o0+N$XnhXE!rkZ6WyItujx z4=U7i+1C5DKL550oWOdRyyomAAcxHZ>0PzhZ91mK+u&BULr`zW*hxaW<>E>F!Rl{T z{+{^tw<(V6h^T?8imqj0fVWFZPgX)_r~rH_hBl071_^~}nj4lJ zuTwyDMs%t$ka-l}Hvm7FlGEmWwURcYOMybAz9Hg*8HezeqS=Lb*5v^gdQqV#ZJkw~ zjaLWGc;l3BR#2@o`2%e8IDbv1z-7`U41_@L>E2dCieH1xWfXP#N2jE7^)@Gj$5K=o zs@Z*1d^;=X+u4ud3mx){grBsl6-wu%%&4)^l1tcydz64+ zZ_L;K0RM22M5=B0p3iun3qwIFlz~2GrC03n8y$?LzhCzg6dD#BRyzq9W)*9GE}Kkp zwtwr;p`pat9Lm#ylN?DpHqB{E-ML#@wCah=!qyfKFoovbD?|PXDt%+$vz^&sO$bgA zXi`a|5TU)ah;2rYvrpM*-02-JDG3i~6wzFy-gisjF)j^vVkzL`zh#*j%M${))cZS? zXRtC2x5AXW=+jvXe<4$PsEfRz?JiG_F9}t^`IE=llN<#$!X#{MYQW<#rq`1G0oqB1 zcztKn>xi!5GftLsPCvWY)X6l+@{Yj5vbWCGcqy~e0l@2Fh>!Gt9Q_URlM|&hLgN@a zfKxd>P5-B+jQA=p`HvO9Y0=%}sP>j0>~*)kgl8%dMTf3&(TnIT`n^(hm42`4*c{dNQfi=pdkb0p(Z*>QrkOJo4EgD>aKK*0%59iA#Q7`mP1^;7km{ zSQ7lqYFk2Y_+I@jRC|<#N=ZbHSYdesZKcg83*S;FXr)hBB?rbj^@&=Ac29^rAZ=AcgEPe z^^!S>p$k;*lOBMcrrj!pmUncf^4v_)nVH)OX5?imdzW~60kVl`bp^KfbGjNPFt(jO z4ybCLvY6zv17{PH?iHF?NW5kx%=$$|-1U+-y43o!v|A%)g4xWKO1wVF62Sj+xFK2= zA2Am<`IX-^t&gv%DElf0=4pbm1qrJGlGe9Bvf&O zxWrGv+P)&iy;%c+QQ9HO+F<9dWDW|9w1)yr*&VYJEd5Wb32>wfnR89~ftM}ywROSX5 z=;j)v*&yR3=xFgzx{dqKDJW-ldC9XzcLUBG0#IYb+_&#jahLhfu~N#DRfoQaB4yv* z;s18e(|fFtAAQ?9N!wgTtTn39hZ-AEWYl@3@NLRjhKA9hj3ec8Xw~kyQTCGW0}XH&n6_5}_^UtQ1$Q!B+FJ`bvp84=)skD+PAT`$TfL(slw z&qLa*JYkjj4_i^r7zOLICdrzd8~8?W^5`D;9{+=Zp<3krU`6yBkpaUT7h^Aal;W;G zX{#OqT=J+i@HB1J4Fco63)mn7r8@_>Sv=0!H3Lp2v z?63MSO~63+bQgrRcvd+59Mu=qlmYfPG($L}c(QM|5Ob+9v(|pUcl?u zacyavn)S}0TklGDX}wm85XgA}S3i=7-pLj9D%Iu9X%?0)u196;@i3TuIdO3rTUGrO1=>xk*ivk!8C8w@kj$9E)E8zO^E?_^hW!ddT1zm6kCWvA*QHiBYo2mxswUeel0xmo15p7$yYzD<5&d$B5%i*3Ew@}ZDf15m3kN$hYv@o-Yvtj7l zj^&zXCMrNw?DuHd+$U<>_qW<8;{@XT7s3HPj(nZe;;6a;iy*x?Frm(2H`%Q-E-w>6 zOqS7d8^fjZU)%l!Wq)G0?9m>8&-hz@`u}c^Fc9R0} zyx{4Pc;Df;*c17j_MhZFbVw;YtI2OG=j1{6asDqY2QdEu{BD;v(4H|0(D*df{MrU< zRP%u(r?EHlsUJ^L=pmPKLa5Oxg50;W#yj&Wx=3$D&xtdHdXURwya$P6Q~Mx-m%=Qy zML+joseft6c!Q?ONx9gH)Kv(a4DIsIOH^A6hU8{DK$HmV<`Wi~Uza-Ntij$p|m zJRwDOlKmB=0!;a`yG@=w4m7!-5Q}OSN2$UZiflaVL$-uvXf}@wT*Tcxz(n77Z(!L1 zHC5s)SY}uEZ?1JpGLoyY7z|l&;OW0j1K~9sHFg6AVf0g)kao(sZSGJK&NcSzR@A4ezY`uT$MvPC*c;BB?Hc`wzs5+coVdo|wl+~{f#eG-3aDNwFbJz@ z<6$Y?itS`&+Hhpj6QqH3mSCa6*7PyBa6zGhFE|`%*&C+FuiG;*xBzO=7BQ9)rP$-u|(Mp`*qTqO3UeeZ!U`Q65RsFysC@k3IC5e?{ zl0BxVG^mWlVIfbzj63{vhl*_@5EJpCVOyqQo{E5*Ja4^`^qUb@W`xA|bzjteA(wUM zO-+1W#mj`{-~;wMITo0M^B2VEWzmjdR*i%jZ)C!#N$TIKw8< z85wRt8WV&nRlXb@z?blrpYPmG4TaNIs^22up!$9Ec)mgw$Xnb_(%7ZI4K4L}!NACp zStb;nR1xjRp2wD@V=!(V2Mj0kZg{(dmL=1rdp!EDI!p~}Cvcd-5N~IR9S%?}P%r0| zkcZHfV=D)jIh+3H<;q`IcI$L$H=}XMhq4J8&D1jFnK)myoyB7im{VQVSjH7Lkg=jg zYhyVO1ixJ#fhn4<2Fw#xaz*Kz_UkgK1!aHZ7%t0Q*+6E)TtoDiR zgR|%lQvKXVNwz?yYh$8yma@wyqw8PbYQPgBc!K4R-Xt`ty8yN$Pc8mJ- z?xHbBTyyQ})2KcizF>UARlo9n<)7mxt%@2|Rba-gMh7|l)iLKZ4mM1u!2vhmhQ0gZVqyy29C2q8c* zb@=sO@lN2ZsAYJ5#Kcr>ker9~2Vq#RnCGwzaL5Su>WDoMwk+#ge2vUHW-;(g>g0+L zpl1mZDHdFXY}SweNB&z^v6RuDAFTHfJfI}~iT3lTwx=1Num!L5(E>dc+ike>1_lugKJ)bK z+U1*$sZo5p_N<_9O7px9k9o|O&vAHXs>HAi!1ov9!n_v+NhRZ+Sg~bZA|ticVp#Yt>5R(J52&+yP-_?==9|sGL;U;vGa_a0)% zL(Fp8jjdxW`3uU+)|YC(TAo<}_REc3nnlg1B)r!RRe*KDkufDGIZ~;#R1dK6fBHhb zV%#XgX@kMh0W;Dv;FQSpO{$ypVc`W+_rg&%RZHD_>(4N|gg$n0IB;DPAp-b3`!whH zov+HqY)*GF&~gOS;s#v=HPR<3LhJve=pY6D9N>c z4JmN?_WG=S^M*%%e?c3IkWkK%+K&rRuuLtCHgOOLZFFUDfz=|nk9d|0s2yR zwP-{#JBNT&>6Lof7zIurL7=xcPqt@L1nIa8sTY>+ZznDi ziB4z>xa&F)L*Ui{rp4w_SWQVGo;_8t;>~_7IsXhveZ>XG$twD2Iu_dK)5GZQ^D(Ns`35*^2d+*pN}^KEP#^X(*_KQkh2f;MVq z+Dto~Y*0@>riivZV}H10;)-Bp+HB-YD53lQBf;nv&1-X)k#^PVIG~v;$6Z*0HY%01 zzdt4mnQ*5@OM8K1u_bjZN6&n25c1L|b4z}PBUeDsGdVY<3pT#GavS-)lX~y2mv|&Ge{@XXi;OG9Fm5CzF=S$&0M@k z^^rVyl0xW{5EEjz z_e}r@)WH8(dZ;7F3z$MV2g^>ERjMVuqUXt;75Zmn50s-O8<#-cs&W2%HAg8{)V1Ji z`oK*|;F}O4Y~YjWF?jL1uD*Ib-EIiz?{&W_a33zsRG$0{;*9rwxlUwu7NS&_t$14` z_!997SM%#$(!)Tf^v*HqVfDMCQ~*LgL>tTlO>^@eC!%L)`h-LY)YBr{*<>!0Sf)JY zXBunr4d+)~i-|^D>&XxB<~pgUhudLqZpLwR?#0MJ^8p`zagVP)*}n9g7m_`1^x`_o zdguu9MNj%vI*-5d)IZqUm?@;oQWEx$C*zgrCE+HIKq#L3fMAefNSv;KmB8Up@DQgO zL8i}>D$3ygmfInq^ zUjT7Yr}8->)FC?u$CUA2E6of zf^B~#HUNMy;xVG%pRCZ_B?nIo_Cw-3hfx;_g!X1kd;by>1lqih;sviXvu!Ps#+OrH zL^ETHO^Zu^t*WIoH1kU6dwI?LQROW6FoRs62orVMMa!SC0|wu)S|RgVRAQm_R3?)U z0?t%IX&fHuN{<%XVi9prINx4H!Pwe1YFUlnx=zW{Hg8Q)y@|o`oPkPYwN?E#5N}HZ zQZYdAL$Bu4qlWE9MEhhjdU#96b^76|(Y$^p8duqW4@Z(QZEhe3oP7TDt{!;zPAjDP z!z&b|Vu=eWQxd)-Ph`X7{u0E%>NEZ^*M&5gHl&O&jf-WvaVz~LP7p~>DkVtBT|o5H zbn91Ky;#f39!jBDLTc+^#?{Jj@e@J_dZZ_DBybIgSvT66OaCThDFgy6BraU7>6*hm zrupvHk<6r*j4#5)!=_GOOQQ~UJ`0g=DUJ-ALnPQxL8b^y5KPc?$~mg>OT+?{CW_MxH-0AOb|=Rf z!!2T4Me$80O7)lh3Le;vwz$t@l)fID@;V!;rh7eJoh1?s(Ll5bR(eYT12Vg^nl<9o zL-%Hxsy}(xjVhFW5SCt$1>~r-KE8X(Xu)wNhw8j^=&zdXCjvx@a-{)tAmyj}ox+b# zor4^TWl#VIx`812=sow?9wUFYS9Of$BPs&pcrnlUE%5AJ7kaVDu*ex@`1Te?sSmh0 zmX;T?Qkr&Z%~@!erW?Do=xM!v=`N)Sjo+S zKK#>X%(%sCeG9${ei7@gF{lEV@=USrTs8E+vDT$0Vte}%;Yd}-<9++@eW&BRq!N3K z$bjMi0KhlD;#%`^KKpFTpR1b#XkCp3CLL>^lgTi6Qs}~+&a4JlgM{rxO*{2TGm(GJ zHuIVIl?!`|lbBVR?*4tng;v#gJ&Y}F$e^Sj;K&=Jio5wYb?l@;P-IUH35rB~0F1?? ze0wVELo3x{9JPm&drVz~KD;i`^bsr>Il*ozJZwyYrb+DTl8W=!(VPMG&cq{u*zp@* zf1JV9MrhG?2oc|3{tmgT288zXG&hdfgu+f-{!o?x`=f5!={Kq{*0{5&3R!QeUgc3n z-%Nb2XnckZsR~mjF4+5MT9nX&q*A?nCPysBHBvFM3_V-^DmGT=7f8^dSw?L}a zeQM`P_$B*B`+isEXi)9%hSe5P11i+%i(17Pw!}d5UIQyt1(X(tZL2KD%8BFo$y=YT zW6b9XZ_rd0?j@0JNv&y+jT9YF{;$Cx1g#xqE{wD4R}-lj&H&;hLOaqizo05HC}RTC zE}IiXj)cx4Cp`5F5-(_~Kn*d(=r<-r0DfjdAQv1XaS!8?6!NN(e6`iAcQ+e8MkwpF zKC*&BF{)(iO9N3xQ-0bzXFBv)ngJ$=aqYs3y22&m9G@0}SSSo+ik1*B{bSg0++Yg^ z51+?(U}wVSs_XC*K%#?uVT|MaFW2lwps3ee<*V^qN(vV;(?16KUAFN^(~Y{x?uZdv z9^Ys^d=ZrMt5ZXSJ?INd19-K|7Vcu^9qzQ>{Llx3IH1~s!YteqFx-6(?(DLlPV4PSp+-B{5{;osi{iZ96Fgv)e9R$G=Mno|6oj((h5;j8 zHr+$~A**j*!*=eyLpSG8^iT0scdAzuH2{i#?M6%J61y_kuZ`*rtml4yN&ke@*ti#`mk6>S>rcGhRE5dA!`+|@)Nc7fau!wWCOCcZIY=`r@@6> zt>pw$U}o@PYr%A%wIqe<{losct#_4t+azmvRWZD3Q11LTF(yp(m_Col{6q`muPHk5 zpR?k7U=V@b4 zWN+zGHMgyes(Z)r>~wxmaxK2Gc^Svy|1gMuUkbnZ*|HZ_E>n6RbflW~7!1fepEabJ zlN_73%1O!6^vem)ts$_kKM(*BrXVAVDA?_a)5m_eiOy;n=s@mmXk`BW&$}Vo^N#^ys&;7A!Y}Io-_Ms}Ew+s)of*4T7;KRtT5GH)41egk`AZdw_(Dj$~!GNj;xXNKe{#tSK>- za}@nqdl%UyUMcD&amj}fAi)`79bFMUCeHQxV`}1WA2Slih%ISLBh(mSH1_wX=rKt| zDmB7)#3mItq2_xU2`KU&y_trt(4&Yn3ZdKDv+ zOn&{B5Cq}Gml@V|fU2mGTS#7|6xkqIFboUJ@C;*Phu@PKE`ztt5ACc?aNm-iM_ zuBUo87rPcL?hw0nK#FxpdT9EPyl!I8|ILeAi_@lI_iL!N|0&5+;LPa&X8QIAgPk5b z3>OI+xSVai?PAxCfQ`5117)@JG6Z8{uS#{wX^dp(;Q!AZ|UAl%@APptkbwBL2h? zqR{YP#uc$wQ}Y}d9A1D9)GSd8s`c530Q08QAjPKL2>oE~zFv(5cC4@etlB9sFbES{ zFE$qbAI$B`V33xVE@9P>ApvF|$-igq^-61k%y?j-%kfXaDL3o7t5k0X5miB$ze@0$ z%4G-43e`;JrLxxoZLCG}UioXCYEzaS&k(~33c{J(k?cmCkVeXq^EvTRodWKf-vziQIuS@BWd6} z_M6dcW{~^%yN#%$=}+s-OePbDT*^<5tN7oNt>mC_=oHlQZA#>Ryx%Jc8RqQ1JY?x% z2BgRh@+UwOb+#^zIKXkng_nR^s#p^S&@=n@~Yv)5W!v$d|NE^ zdJmc?f?5tc9-Enkx* zOXP}e5n=~1)uja*Ksliip9I@de)QOda^@&@jQ3J6{J!mU!`8kS%17+ zJ-hzeNNpGVwt?3Ge1p4?&r)(^;xG3&gn}~nV1mOE$CH@|ms07bZT9G-^kNupMNVUB z8LVm?W#mQQ@!9)@g|g4u&t77MFtcN~jrc0N>}tn0-?1H(N-J4gD8SdgKHD#V4#1*h zH6_1B_pPkL>Nx;^?r18pS8x&iWg@T%WIy%k|9hsykw6j!domh89JZgEQ1a*LGfg9J ziPi`wOO2lTk~qr!cq=_d4DeQ?FEXV(Xd#f)r2N(hQ)q0S0?*PvVNAVP50%n#cLei5 zr;RfiZ?(fiNqLNd<1raoo_0~8k3H_moVtA^O+XF3DB>_&E{sud6~+Dja_Po#y7&B@ zQG3Z7B|!cj=_^)m$saM)`~aR7ikVtiMK@Xsw{(=W%gsv2T@aZP_5E1w0#C}VH5wRr znL&XjRs0cL+WP~|4yA5V98!8TyWST>*&yKQ>mAax`z9*kcju;}1?)Fst_*3-2gU`C z1#<&V`-{l`V=o_8Cr{%d&)!n`p-9Co@>Bh)2+T@^lG>g($HuUnqeioYASz!Y$;@2Q z_(Q2VO^^Z&VuahUgSTioAW@#^^!XC!GVmS9tb&jY>Xilt3v=A6#%b`0(7GZo7csG` zLbL6c1Z}HLAre!!(J+S$O_r4 z-oj7VNgiGTT6S6js^gou(n}Sq;lKN;`i9JC4?90H-ab1cg#ZUH9WmlZ!~(!C4I#fR z_rpd@4DHMfEDo~HR6+0dX$gc#GYWiTcK{ktoG~{Xb{7#mvQ{mo}Qum^0={4K$pJ!pKCYVk&vsVT0@%erS^M zQGBO8BxvN_RP*^&jv+7o8 zU-HNVl(ifAmi`-WZF&)NRPSj|^fP_fzMY&)C65+Lhz=OkpB!c(ZepiXXqB$Vzq;#- zKTUptGVIB|OS#x!xY{Fff5JeRaH+d?XY&Bx0M`bNBr08x4_F;h*i0XCNdGrH2K~v9 z%!d?#|Iro30OeJ2QnKjDgeY6VJAPQxn8_kux0Qj@#|NU{d}csUwb@fL;cmhXUK4#_ zNKCDTya8(=PcwwA^f5=fwx8bELxbI!M#YCXq4xx(F3AO;1b{R&-6$R&jcMCnaw;^c znR@jw=MuIeeH14_YZX-d$0Borlvz- zGw>OPqubS}&YZ|}jXC8D#JBqy)YpV8F|D@~Q=XB(mvF!Xxmyd%;Nd+9o!6DEtONm61Jgw6wCOy$& zF-_je-jjnJJZ7zL_T2=2*e`w%E`Bl0adkmdyNzk@HPMe*Em&A%DrjN2EI^#b^TwuK zUuyWiQmA4u;a`{JaH>U*b0356WhOLf>h+a-Pz(y4lG#tZ13Te5p$tqt1vuN*L-M+77L8W~eFWOg(0f$CRh=#j%^20(CDp^&eO^9Mt z9Du6wq}+u3=qB&`velOk<)$DEU$E z_~NYnRg4i>4qdG^oNQ3GRPiJ&V+ir{Or&BVm^)L&}eZ$jNeu}XlVA}wv=4_>;Tg?pxv^(e6 z;5JY*PBE%*4>edVfO!gr!?fj4YlkWwrTp?#yCeuw7*UQ^5nG<)qX$)Z}^xb z0?M*#w2o-Nj1_6-3-Mq`n9Im|z=+hKT=ZAs0oP2OGe*FlT*OR?6AeBe+BrfEkDGk9 zCWocDZ`InDm0Pjsg$myK1Kc?`BpjFaxBCnvppq9i#a+E?d7jL3ah=4G$hJ$tr7dR2 zqON0z{4rQkis5U>agw9Nlz26F&wyS1BIMz7H8NMo{Guz_4L>6o;u$0y06b2Jl-=BH z)%oSQqM=ahURA(MjQ8i5i&aPwTrc!|ub6dtFw`biVDZXbcRGO(_34uzV za_f8=Wp|bUVRYcA7_7a_FzBLi>x?*APzSlSL?(CzfHNGb740bzwK-fHQm_&)~ zT1lBetPr?J8GhH!R0vb)rm~dBTyh;)DZS%f{|lPNh0GW-V_sA2KAOqpC;88~wadhv z!L};LB=DuOv0B&0-BPQ9&AHsGcSl;7@9&rpJJz22_UB(w4`XZ;b~s`FQp?OVau&`v z?lw~A7KMf?f1ZvQK+Y^F5n2c6h}KU8>r^w9_2f>%>Ph9=#dh^5hW;6D;p2Vh`SIfK zBSb*ZhSY~GANI$%QDirY5760nGs@5L%DMmF8G~=LVb8pXE1B^TChyH?fO;2AI|WGD z3_5w-B-lWXaokGqeO{H|hl4u+K;Au`!92%;oCn(@SkA~{0hK~QkBoYPSN0x0U0mBk zI3tlpf;E%TpgPx=_XOf3@184zkvwxqCGF-tDXz;`s5A}_zx7}+S&u?@ zFx2$K&$vB{J7yIHax`zsN_Dr!v*+|b&~F;?Z@HzDm$cnQTzQ&Ckr=pEr8t+}1*Sj6 zAzZJN$amV_J0!s}P0aOXALEtw$+)UsN2r*2-6^f_HquC=d+LO~PkZHQ?;u?!7Uj`$cvX<5dMK3+Hrm#YS@=R8{{zp7(&qn^ zK3SHE>7T9VFKHsRcwCOo}-$oJH+t%IwX0rZ)=eRp zikv=p5HC~6f$$HreiTra5lpBpgvV-+Z>s~PiebDynh1B}kPpr;j5ruOTrE(7Q@~T@ zMLW@-*0&j3Ya@<0d-DJdOQM|U3kzt^ff(Z0`?$iIBE#D#$UpRRZeNOewWfXq;m>f8 zk%*0h!2bst!zyX|l#mP_+)P&bAplB1wZFGz-^yj=5g;gS81Sz$#}A4P$?&W(YoOaG zaw5s!C?Akh&hL4ESX@^HyhPW1Za-}@5_aeT0J9`p(NV5P1`{Z`1iRT)35rd+qmoIve-B_lTG>NY09{>nH* zw;5-`j~l^1n*=Tfk(!_=Y<0o{;St1MJTE7uJHRQ|G+D8Y!_$P6K|gNur+L|4PBi{p zs%?H+X6|X0(Y)WiVVn8a0YZm4ws~QsD{8t;l|{aSpAu-#$P>)u`1!@+3x~L$Y5*~l z6Ij|L?(TU*kDAPiW-Tj}6#)F#*8lK*GZ{2*&;;m@#y@`HMy3Lku|l7F-kIUZ9f_Cp zmrtJ>AI^uAYsuu@d?-F$lp`7OY^v1kQE#eOlU23D*-$#owd?r@(|zSs%)e4+m|&@s z1=07gYz~IDL9<%KiZb8X6IN=GNhe7YF{Kz8F@-e**{fK}>K0QjHYALeTVk@@Tt)=W zm7cBO-t&#D>!;K=*TXn$2{FxMltg zjaJv%Uk$6w5B&$2V&|4toSW`UqFm5Z%>OzQdYknWt~Pu3<^#LeOJhE+= z742u$VRC^(C9^+M5dy#@AV=pQQIoHdJW149er=dx^e?uGL-ConMZ`0}d-rW5lBlyX zbSfl=;Dcg)-Z2f5FP$u8XA1`Is))(rXukBUH*qpz3nF71nNgm0bI3O%Q;b<=@l;$x zm{mZ*@S2w(P!GTQAPMh8(gc{JV~y5y zEA$a;Hf{H6hOz(G(|_yHVFLYebQvOxk5LPJ(5cI|dFK*&78njq&;SlV@xS_5hr~3Q z-4w+&q~h?2a6Sdc91y%95>!CSiE~{V5+}^Y=La-Ga-^5%?J$jKCTThke^Bjt(oSZ& z$~QlF*5DGL8H17$xvUC!drn)NO%On!+UZU7w7gfzufi)zuyMUo=+DWAC6f|9)Uu@U zhEd>%ifLiR{lRSm0^@8_1UB=qE4`n$8ZEPl20<#*k8qyCZX|Ji!;0~e@&}WML}Yhz zm21nlR08eDDLuwx_z^{Q@26*WMDdIo9UMKU6W8Q{K(KHC5Gqp`!@1o**9&(iIHVns zE|*yi`SLl_=Ia7l@R!Q#4Dkk@3cI;e7D(qt zgqO(5jHkzxVPQw|SCr+(G@dpLLe1B@NaBAV%gle)mGDtisFq2OyH)~56}z)|HVZ}A zh+#Au!GdW6ovLquB&7?}X3Mi2m4(N$U;z0n<3c7mZ}oj59{dpDrlc=#%bNvMI=y`U zbb^?~C!5JZl9L-=t4>o9L1#z}9;cq~KtF^qFl3tA9q8GqozfW!_tbSDl{x6Sf+HcM zA|J&yah0RUIR-z4ejyBi>XEKJg#bwf0Q4kIQ~#YsyIhsgrl7J`hee_0khu0(yqFc5 zK^?awWt2I)I6p^L84EYc_t`zDaX+iTTak&5F&7#O*|X%6C5^;HTkq^UuQ@Qw^eb^j zq@fr%cvHrjCOSt%J|%v^00Mx&OAZc!*!iz{Id!j0iV>!nfYJn!2p^9EG(5uBMKHTk zvY%pTzcfRbCD(Xh;n0o5M>OV=+!R=aM~4cZEdPD1NPQZFkCShN*Rq2ci8iPBQ<`5g zL^kPSl$>yCvfcROR&?7nV4ckLv777fQO9xU#yE3ukyOH1#EO8rF7mq>%Ti(=u|mgQ zHPHc#nxdMYX}j>(i3IPu!5|~%&AjsFOxHnqNm8iJSP>jkb>UGs8YG|iQJENpGT5nsF7U|STqD-O6GTnPH$NTKOnOm5c_P2pHz!Q3{=LrfCsJP@0pq&L z;kj3T8_hk8o4`D`;i#7{7wN)((>`OlLR1S=`6x$Wb=v^}m(!&`^Smz41IL-MOkXW% zZ&Ayf%A9aV1qVK!iAqwh^^AD@3D8p34NmRR`#1=`TH-TKW4Gg~O#rruT2+(yf)z$y zxt&JZDXKh0V4wUUO}`H0wvFkbb%0-GTHC9UKlh9u9$}^{ah{=<;a7;JZ1j3+czr5x z%NYD&*|*Dx`NpC*g0m$=R!ArpNmnnrU0GmE^>4L!g_Jhz85;zo|85HNK~07TC>^t zBU;A|UxFugx_JcQzvTACThzhBZ0~2?^5pk-#*##3%NByDu-kH(x>f~_jFKk^+!NlL5k5B5DiF9?PPNT(x%bstq5Pz5! zkI(DJUZT+WMPNlm`Ma4$Lz&3U{2cAaZE{%3O|ywWk&%Iq*pTyWdu4*PIwll^6Wx{Cgkdt^M+B@Rl%^x%P8X1fpcj5LL0Q}7i)ibE@RdDoZMb>5BGX4D`hZ!& zN!=AHfC(~oFLCNgPgfUfv%a4BUE8Oi8 zf(k)$M}5KM7H~(1?K)&0uRv*Z?TL?Ca;|En82*>F!x{taUbi{7*wx4rR z%upDr6kj?xTH>`>tztEW+qzIzk|Ztw{e?Znvz(jGBy&y%oUK??G=R>7pI(-A`FOS6 zo0_xb2%-ltS<--n6WGk<61S4tu}BZ<$)A^i3KVBug&3YDj{b1?=^=V5`Z-Py(oCyh z+A0X(_kEpjjT!9GzcZ8ugtn1!514|OMpPjwRi%u43oi@rV7MhUybs*Oes{ri>aUxb zC<3<>z|*GB1t6)7F<#Dfk678D?T!N< z3&(~$#vT4~>G=mPQ`=|cZbbucG%adGc<$2!6tb99o*V?(ix;+pfC1b2Odi7m_9@ZV zn-fNNN{wJ6h(2py4S`8f9k4_J)4!9E|F>FN8i?e6h~uE!a7vZw)!e&( z2NL8CSNf8%FL}@v*&5TmGFylSqROi3*3PO;rs5B3EteE_BvdWtlU6P~KXJlTjd3); zNX;iFu~`eXsP!V{cy9H$pCW1tAM1BOWsrkmwB0@&`&x`0D(iamj4kjp;}&W9w@c1K z_rZB~2;5b!yRS(MJsU*lzAghI0Wt$@ zSub4GpIun%T}eO``*^7;xh>h;)UIsBOR~j`w)y-+79)c92~OsL$fnxNN8^tZJ`uQW z6pQCKYcel#l&;k<4A1TRRUBILW{&ocNDVjRRrhq41LSg3wTrs_DIMIEvqY_gK4YXW z|6s{$20FPi4S~;v{!KQKX4ifPX5(fqIteQ7(1Qe=d?*3v-$0jxFJZ2Qg&@%d`GfiA zt^JGY$}B-7gy@K0zutdxDHrxY^Dguk_~UhO=|+>S|Drbh9ujek&}MLG59%Z?=xvsTNDCHQ#5n7doV zG(g4juZi?9Mp-R|z?T?PtOQTV3zq|A!6e#2wzy8x+QVP1My4egj*IZpKVyif#*mg3 z>~f@krz{3#%J)s^fxq+e>SyqiOlwf~-oroGp*Q9B@jU;q&)e%oZ0kMqcx zS8k8SER7Z3+xx20X_En-;r^00L!d|>y)S^@qoDwwrL@CfII+2RGoF!O{K{V1fhPH< zPiuL|~GjIy5K=p8NFIGQf9j8nq`s(s8 zXIFtrC__#rM@2@vBtsyk(`mv!XC++VH#whOazPW{=v~BO6mzeUfDa$rs`(7 z$L}WB)cse4@sYD;yIcLjjV1^8y&Wv6^wjk|1Dp_!RfaJAg8(Mt8arM4W+dzggiLtD z2YBiNOkKo9@$VbK@f|YH=f+MAH$@oi#Z_?8rBz(+m}m7@4O&zFKvYifE5^TL%VI`Y zf=3=wo2+vYNsSRop~Cfo*aK)!oGdwM!ZBnKg=GF^7J(XY>>EaWxT__Fd>bZbf)$L? z=)Ar{Ks{NgBj$K(`K->xS8NrHicNv%{A?!OC9cr&n@rE!=!MmvhAr1)&&`^t zc$!t3X1zYy=pSxyxwev>%6k>k0UR@DQh1@w6Vuj<(V;(yxe4-EaEFX2y42AC=v|DqWo=Qv5#Cx&47El~9 zji=3awaGl?wZeO3UkkLM;C(QFv1oQ-pWMuuqjmYj)pePf+2vc(^ZW5gb`{?<4R{sc8`MFi9@V_;GVC ziQ8_bCOItT&grz08Q(EE^KV)XPek(KH3kP~-9r@y@kl2l@}eV3k;y8|0SDcM)$C4-tf7%{wW|msl&qoDIZ!22GAPw}(t|t2RjiIgvl@ zm^5smL9XI__s_Gblka1vZVG*Hf%Uo&-2F%2&nQ zJ~bUAOo8Zg!v0|Xr}$IAI;a-w8)7{ug6TBG@BBTUi(j)AeeX=Ji<`v-YHvd5_mRtp z5aw`r1yLKeLv#~`r|cGT63|Q~Ies1vwKrmghrR5=*rtht$E+)nYB5?*7@ z%#JAt0ZU1CiZRg)y;M6grl*TzdKoG*;|v(c1;n&+qXWlk5f#pgQ>s+ahG#{;kJUO^ zbyBWuPQxzy^^4lgS4ZtFuDtq2XzUAp4fsU-`gO7q_{W@?4)GG9Kg9AgX58d%oj4@R zAxq9BSvG4YTjdWwA`MUtrbfP}_euVahvdx9cpq9grD6eVkKSCB4~Bg<(%5qA+zllm zp5*#frAe|xPD(QUwd9K77|b7ZDadfO+!S!TcPZiTAS;~;xmJC$RMr3iHA$zaSNbeC zT`4Qs7iLo*5|oEyJZjAMDUy_HmTM_ zLaZ)uO#Zf{cXIx9p>bDNLw}qc&ekNAIYf8B2!$$SYRC7eWy!LU6P4^oxK)T!kcSB0 z?0UY-g|B9O+6xW!Tjq%Zq(l$FRWdkHrup`Ch!wZP-3=E7Dll!ld0z}g+57o=)-tVoSl(cecw1CTJFs7Z#Xq_CnP9Q?OC@w(G3}YAU$JoTs~EKAccXVb2vBQ^;%IRW7x%PhU%96T?m61TQj5W+OAyB+J&^uu z8xhLp#aE7LnF`+xBrEJ!?aaydSV^`pA#FP;Y!60r=v$H*GziPSV634$i>myhza1XV zVa^)$&L`BZE%1s1n+4zlM~eP&fZRxn1Wgh2t|J z_FVYt1QOPF=NdeJMYY7R1$^d6?4p`f(>s}fn9RA( zmhGF$!pshNiR@QPELj)t9S=e3Z+P5vmj&WcCWToRoUA|B4bOgYOg$d?k;aN<#Ilq9 zJfV`2U*>-bDQf)^!Cv%Gq<&n2CBgltLgOQB#R%lCTOY>4hYrVXgqaR42{Ld59By78 zNGTdGm2v(6Y;SEHeHIe_%ZaopT3KcHe09FGvalL)UTr>^!oHbWcH!{dMz(_ump@dP z>6v7!h2OGXfb$Qg@2UqGxUr0+@zTuQQ`HX-=6^cS0)LwvN}yK8jcdBbJd_%2>7t-tu5aQA52PH<=DlH1F#X&RGKM7o2FP~ zhRhxc7z2p@wd1YF_8JW=g*9bo$4mR<@roR?4}kAsRQigIlyT2`3Fqp;!Z>!+v>hL( z7Cq0Z#-J&fDWnTd`f>WIuEaUoeGh&u&?KENk0ck068Jr~#{0k&&0~4TU$GD9NTqdT z+G8o2YqwU3(r`9o5Ll9r8;OmmIR&Jkf%gg<&3S}lUA$F*B-SgODM)|pb*o;%Dn5f0 zBZYY;-{EA0+~~OnJpOz*D@J1lxyPIB>z43VWHBB^|5gOb5`=7=TjvuTvGk+y9yUm%CgrXOh zB9oZlCP52x>0FW$8KH_KD}Uuoqa17~%rmNtJ0e%ubGise19WowLX9 zX&jr*?RI^HovA***=90kf*`|9dufOU`F>Tb8ZNi6sFx}q$jzT1h-FH)U3&5@i&4wc zCK;>Cm3;nh5jJ??oS0rvDz!fh+ecUWgV<~_OKfOM#;)S&fLO~qn^ry+n&ql$@z1aO zQ!D+8%zPuopp^zLcR+=X(HXHQ5TfnOIsK0(pnv>v-`q5^Kni_`3|Gt$@`Wk%z9^&6 zS8)i*aTdb|w(YWjEx>ez|&YMad$ zLp*7ugaK8uRo|-E8QO}fW6HywQ_FKYgXJR&P`MlR8CoiPl32Y$k+M2c8YfbGDmo55 zt%3O^;x*!Voz&UjA(l$pYXHT+9|ePkZ*t746|rk%d3vR?%IHj&J!wzz`=HS8r4zv| z$#n@lSPa-ZJ^?MWp1Bc&YTl7g9of#y(+{>gDLHLj?iZc@z@-O+HRi{Vws=;)VAOsL zgvMelLQlbh17nn_@Xj9bgO148xEIV$4aXydZI~~4;-9#poUP1Zw_WHv?8`in887?% z58$oxEvz#D?muf_<~NP^xQJ$4=g@r9S}tjmkvC&Mw|FA`8|3UReAmfI=@-e9KWjkK z_R`sCf5e9ix;<979Y^{kbcW#cQ~!2yc>+CT11hIam1u3h@}6@m(~dEwNgV;qx)Vg} zXTiQ`bewPMUdR@9v$$3;4FOJ2D#6j!Uy*CA>qmDqr*EkhkN?LH&ycH5w5!tIuklkt zIr20*guPo@PlnYVbC+Ct5n+&_k|NN-Ti3r*AVqz?DcDu2No*paVRPHsMH(oZhX`F` zzCYksXMD2;BgLQqOCdCAo}=QNcGcEx2vfZf@2I>Llbxv5ycZh!yN@IQkvSF$JdpI? zUCt6s<74U_I||bK3F;M!{N(4d^n&kP@duz1$_?sY4R+EuPw?B>jHIEP=sH`vkB`Gd zW^8~(#$~7Uk?@ycLFr~lUKN~QMq^*GvD&9e#bVCSkU_N6V~MzgeYUN&C{0M71Wg|3 ze?N3gK(0Wes+v_CC2?=f9s-oNZSabq?z>MjRROjmhQY0HQ5D3@L2_e~aiJl_6Ji3o zC&j(r=m`!b;`^N{?-L3*ijt{AOOs^Zs^=H^V{<-IXyx9YI1!c_KJBsRa3?>knwCYY z+R%oEI)%p8?_Wa~kt75fs0?joc5>O-IS#S}iI>nR(AX}_-P#adMeD_0l0Ey=<*P2C z06%pDjxB-xCvKAciQ1F!fmkFbItYM~oRJ?ZEv^h0tygrb^Kqn=mE<&}^YyW<>5@}} zjyYtW@ABuj%vZ=1^^y?(i+4uI$~^SC35W3IL_swp0OM7sC$9)pov%(WI<>wx*;*C! zy=8GR#csc9TBH}aLul3+MUjMG>R!dw`ULiqAgh1+3-RC4Vzg~QYVutCtQa2rx^x|% ziCmdMJN~cx^_hagkQV)vGxXdsZ($sk4HX0+Gmb|~pQFB4U2*hbhM#?2Bw_C-<3k!9 zNUrm?)z|Z@xOuMl!E#(BP8z4^JghI#KIYTvOXFrmZdU@X#g3ReQqg8dPluV7_` z(?47UBI(RExa;x$mXQEdnfNF3bA_U=YhTcyzGk%zr8Jz4$;ZrSU z#31M{{&K*#FpftO}I+ypgLUjGs-I%tys8D}6PbWk-cjNRbs+8Z~{BB11 z$bV%{*>x1oU*$khJcB0Dm-{lRgY(Gv2`9-KJpN24yBLD%7p4yp;oEW-qjs(LslN#W z3EkPKVm52p~Vs=ITlQd`a0qPmux*lnIVzwuUE@C`d zsYz7ps&9K8c*&7>;z`6v;G09t;QN=)=-yN4vhSBrgshs4r-f=(2{_RpxaUS33%WtH!7L^9fHJ&2 zn$b0U$eu$l@d0icPcfq2jHvy z?*&kkN4IRVjZ$vwhzy`?_qL%mUL&-Dc}Y@Zp9b%WaF2v06Z*>(B&JD{5Szt7I6E0mAfiUar@Lq?!J5Pm#vk5J`#fAAbWyWqaox=JUh^A4lw>NUIkH2NlJHhGe#}O|&(ciy`JU?pPv8GC zd~T31fIo}rXD>~73N>9jCQNkjm;}#Er4}RO@9fe_bEWRzOsekcK9-{1vIAUUZ(Xg< z)a>}Pm`TC_9y+Sr(Ry5#eMsZxf`}Iu^RgK(SN`>!lsyA_gBVG_-!YN#?;)#9nN^sqohD`qOHF;WUx z(j~NDS^q{#ikl)Yigm9NG}Z+yz6I*@O?^ZIHT(Oq3hvMI5-=c|{98d$(KM>^RPLIE zpkBK#auClhD6CC2J0$FL2PYhEU%)TSSiJN-2;V*K{UYXbF~RJ_Z5U8m^r3)#g1Mit z>v?QcBcR@E=ElR!T`NnMG)vlk=mej34#_)f`T@D1PD0nIDje#dDaYikRJFJ7 zAN#ii8md@?y^>kz`ss4Rf8^q(vubjcV{hv51&?QX3tQvyzs+BuNC@WPtLW@dt^oiP zNaE`LwxTu~T_p_75^6**Jui%YCw`_7*pb~eE?~bQ$`=4xs+Mj0h0qGY$4jFu?2#1VFR805Bl#v290 z>r+cqb)CF@D(kJOG_G03DfeJ)K3lrv$pN^8e9RGz&1s(~a7kngi8={~y{VeAZSnJ` z*Vpt?h?5onCe&<-WVx_UGp-Xu(5T3kC^+(>X*gQ7vsl9Gqm=y_9L;m3FfSAmt%r{} zw_Z4m_IsfL!>xZ_pf24p&w9maqwY-BV^)|iQIraa>gIcbh?h?OxvAS8lTDPWvfovC z!7zsPja_v66XAXoCXXH##zE0g^XlPq0@r(na2Q6$F|2H9;AxkWsI2c;n%Y>nhF+E1 zTnT}>$-|TSw1bt(|Gy8bxcTlNys1bjE;qp{(#0cHGyzd7zX9T?t^)BfR&dFdfQ{8uc*Yk*CwQoM&QwUd(J|3^-?i?Q}k**+910$TR z$8LQ+st|kyNG)o@-^3_dzyXqp7OjpKX{gL97e3Md)mK8H5hYD4DnX8c;3x~Z^gUNCKuC7S8z_CS<1D^nXyg3FB!U11JnWB}KhrJoQeM>ir?BgD%kPqnU z+0eY^M0pG)#1%PX%1Bf22xV;O#qW2Z?&>Z`S&z})I@c@!MD<>Edu~*vC)L@M&N7@} zKnc*ELyr|)mGnL&k_n^Kw+~jahzMe9odt?PiElV*!J;`Q_`QugU_n(NnB`IWM6@BW z{1c#NHe2u+cP9MINrydr6p00zwXc@pSqns6e`0jjr#h5hCSe3|6WW-k(Y1f03rXQL zycM&R6G+~AHZP0`wp(gKK>p?`56v|6t$7i8+LEMs7C|D)bQ+Z%c5Px8jR{K-0INXa ztjRY`AWVdXSg&F2sIY5q^s-KjrK7!GwM7$5!TTx=pNoT zWVH2p2z}6NL-)^20C30BiMSPTKRPBKnAhU6Z4lE!d;RDFGTthxK*jaT1HGt8JG$sH zoXx!-f{tJkoHrhx}^d#fdMwTV}-jsd~lgMnO#9dj%u`!h*G!c=e5bH*+3Z469X_qm_S zSd8}FKN9Pan7F%{!eUKCR9HXBH4-QdkW_f^ESE9)%B*CSTbxJjVW#+q&Jr{FI5-DW zjPSZcQPQ~Jynk3jj)Y~zwkMEwgFnEc^$fu|-*kDfcYL2c8 zBGWPi)3QD;T`AKQun70PZbT(HYzliNsC^O3l)fwjl;xA~)p$cO;&oiPs&`X;sR7qj z=iLSX4%qRu0g+7p#I*A*k6ka_K?J^JP3bFjs}_M#I9X<|`gloVMo<|I7@BnbQT8^$ zCrX!wD~R={jpVl*=+ljMjl-{WjYv!aer%Be- zf5G5ViduP$f2HYYHh5=od~I|agrlJLiK)uHTxX?Azh=dvC>Q};x2o7pBYg{#_rPT<@$V^pq-gjvx+79e4I#EB!f*}y^>PgLAh9SCr{1g+KJi;2A>_*eQ8 z{ph1r_Cy}mryMEM&LWeEFy)LD=!bYNf%6cm3B^I2CXT$HqWW_Lvdb?!rXb}0is#5j z+q$z>iQz9a9Ergas1HAGAJyHivgu6OT1)OCNux6ig9RCq8i!Cz7Yy7a(-#x<6ge5I z4d8CVXV@R*2=5i zIspqdGo)>Dr-6qjxMN21TXlIJb|q&8x{Og0VO$XESmU$PSF}>cGq4g;iakzzKF9!e zGn!i=#=H4QF6@Q4dg$XqT}E>LanEqUooNKc55M(^#I(aR$BAEymk!gWh~=V(>ue-h?M*t+uPq&Pu4N-M~E_X zK>043sl(hSFW>dkLX)hH#-?f7NA86aDW*u(R>lT)6~o|rC#iwGb&Ca=?NeNNmV&aM zRSR}0>&O-K(1qRRw;}VzcPQ6>M^w>`5vz7EHBcFPb7+{AzE?PB93;gA#^wF=Q%G|u zQk&__Tg&-BkLpAL>_#y}qX1SWgxhA$bZkmbWVq&vi%%f#l-qoaI%}PWh|VW;bjBnS zzM;tSEXNm@AQ5^)b`MGR=H2iJLdg&vO2BCKzoAam4eirE1oIiGUmqr__ ztR0mePMjD8QAj6CeDK*$nAwJgz@ZKGd%zc!9!`NHvo^|0Y~MtrN3=l7w0aB}vdwg# zK14)mMrmTRWlVRQw4sW4j!GBxhu{3%EH=4Z8VvO^ceCfD*My2Ko(P+~Wf z#C{cd79de>*ZMs0&W?3ws7)`)&aYJueF8jrPUXQaGYY#AK5fl)fG$zye}j1``2EN8 z=mdy30eDW^2^VK)=SQ9By_GpOU|0i(Rcnb!5~VRT)9y(c}BPejIZ$O24YP4fDSXp{ZqAjArtp9#Gz<_B1zCYnR-JA@iIC z2ocgNu`c}5*>$W$H1Bm%<$_;l&;dK1lEITabZdI;2JriMR6bIR33Z$&WN)&9CJ)8{ zAwK*kpR^-r?Tv1Ko7kGGi2ErT>GCRs+7xgFbi9dZmkEPGqhdk}^=c8b+}s21>HD*F zb}rn?J14H}8yEA@0Oc>x%f(b)DR)=^OyoIE76lhcd9db`>oO@F-xT*}m+IH`=XRHe zFDWkE5Ht?}PSZB|gd`3chxdYD1znDd)m>~Z$yj!5cGaa~)KV3LIyF?x`0->qaFa0q zu}ViY*c~B84(&tgl*X1AVAoiQ(0WWPK8lN7?HE-o0Cu3pCdVNZea>k9mFc)6aZk`4 zoRE5E^KH%hJLd?|3fJSkvx6lYFlssKm$PFZ55h|w z#dh!5#Vc>njJH9(Zn+{`QxpImacq-Kf=eN+tmHL^y&p)Uq1oqc4k4?99A6CDe6e#R z5y@@pc;b3}o~ENuqeNb7ED1rYx-?J#@tg+GSA z-3VEmWG0EHM4X~FhF^iZ25G}lOKG0sUtIz0Hyg}Im}0LoEJj|^K`R1;Se)d1c&QGsObTRb9f*X z=mWAsQ}%Un`TVUI%<^8@uJX|+R$KmoF_=Q1?n0vXbtPjAwOQl4hBNs5yrbz3 z_bxCXl4Wxh8Hfe^3)+o)@$=+TUQ)LWX@remxpVYYFS{7x+@43(w={Jwp9YwJTf&D% zoZkylm*AkReELU@Y929=FmjTX-HCi|j%aXXueEnBF;o57Le$uZl%?*{EA*jw!SS!? z>Y1M}z^vkwwrYLx_h1U(Z$pC488BQ(q5|S?i-Fv!#tyxMP$O$e1!H34jA_LK`scj_ULqG7)JK?1^pi4*L#s znYvaUhL0$K4VEOYu*v`Pr-E5r4R-B7F&L*ZwF$W5J2w}zv#E&Y)B`Y+pgC!PAF}B` z8Me|rih{lp4(S!OIfZwqBN_wI0-o*8H|=_>b*PFk&=0a2y>JKp+NJ*uBQ21%WC>G=lGLCMwC*t^5ia-#Pk*(1+4>x|gN=;`b_dvv zLuM#gwr~oN+;8yw%zt(P5@|W-`{r|gi%g8*@(v#XRkv1`wTf2zSdAghn z#OXpG-tHB>wEN55d!eUpdMsllN}BtKryiV}hGSacJ%@YFPNM|3K$^ZE;+!sk{8A&C zo|b1WjoKaXUMqS%B&(cz2{oDdq>3SAcAHJ0TLT8pW&JY>}(z3u@7q%YB&Plk@5)1*fcWI^z6<}V}8WTu?jl&NZ*`nsiBPV zHfa6{7eC&MZ>Z#01zYP@QXB|ooW;q|K%zLfxyQCFo+`Kjww*JTP_G!)0urwa-nS85 zWtCwWdVi{4*Y9Evw@}Z$T@?FMB(h^m&b8=lAPW%fUF?x_+YaczY{lMn(b@MG*~YLx zG;c?VSf!jfYcJPgy}JXa{-b;Jj^4ConfD+V$da^5`jexYbL)-e8&*L>_UDz&xmoK7H*G+;k-V^ zbExp5x{YLc0#Pm7ClmH}`my|ZWm>Io5q?=PmtqUp7q=@8Ef!`0!SttQ3--3fE^ke?)GXUpWVQV&wD(EXstn!K}M=SH`=|Ndj+_{AtNnIxQzlr0;$Y08ADV(%4K{K$#G#;v2-BoSCx=$I6>-_S ze3^ASJ#kh&k{(&ZHrIB}>C`)Nl~0dk5R z7g2&W%7QJRdR*?9>&Qx1c7kyv4E});($d063KqUD=Ebk63_KK8UAtR^lmIS&Q652PwrddCe@WG`S+Ppfom>Cv5V0a#`qoo1X(2sz}k+hV`=sxAw zA3G@JR~gk8eo!>=(sI7d3o-VegCM%xEkYXcKq6@Qq=Hq*R#o0dgGDll%ll2~l|k|` z$oTpuHfP#Y>=|^OCxfiXIGo)XoBzK|pV%UnPbK`6LXF0G-kQ3sE_6bpT@V_jfSAG&<#0N`*bEa7dA z!+E?P&gc&LR?N=HczKl*n>5CpS_eYO;q|-C&sj3yw9q=2$|7m`k`5r&ID`h5PR%Z9WP zjKohz(L2LNg`5sxs<6YT6_=TXIou3M^`~^IF%~u0h8B#2wz)QfyA4?} z28<4(QWoNUr;kKW+&AU?+|GI>U1Mn=wn}xycTKiYi=Lv5k}X{Pu&KRA-l|iPt9*^Z z7u#&D&u%)K`6{dShTMglvq*XqC&AXm(xh1RLqf@745J1bC|gPgkMp)X3Q;4i>Qf?% zLNE7=YH(w72swZtw?Vl)n6_=;Vl5rDlrpp6kuW-Mhl9;=@A*1@kWes>V2+H;Ea39Y zEA+>N4j9z)E9@p`6gUS>SX;%l6iEPghh*`UJgeSX@PyTd8G}U}v~wN_LK9spOXY@P z0@}b$?_^Vc@fLo9GG2>e3NePhU-Qo^zx%m z)@76%AG0q+#To4=d_JcV2zvst{h({}n$JnUrfBaJ!!SQWt83Rw=`mtcLs2hQ)Q9L2 zx6xX6Ion>**SX2r5A2tVC9fp5GJfEu8E)&$>=@$YobnKpzG(Wk&RMt7d5Vw9hmVIF z>Up>)@J)FCee}Uv@7;jbBIU?jkGwx#yMgj?-oq?u%?<&KGL)rdW9il$Sw?Y6YAs}=@CsD|oyA8EQNK>YoNa3oI&z0e;Ov54qN1oJRlQUCcWuu!hF_4>hYZ78 zl%dQcV$T-UwAxbW+#5`&XiLS)lL`kZ(ebZdSI(NLqoQZne3rQ*<@ryXnz>4TTd0da z(=wR3;IUzXP>}i-H=z%6Ll$${hOi1nKbD1UHpgOq+3k#7RJ3aFNxY-kd}!vrmubM714UY z^h8ke3Cmi+yK)>}oNxNK)^P#W?(IGO}J* z67xkl9bxO(&^+B%p&_x(^l3*I7_T9h?-?0-ECF=ReUyhwHkOY!TOjRmVfMp7rZmK}8e6n2amgSc2LC z1aFKM=1^ryw#`BD+?sYAtlFb6Mh^?3YAtk%pcZmckvlmuVkd67@5s1wowdd@+(f{C zH>22SHl1G+Db2EPNQwxfjUdfhc?UfQRQ}c4bvqUqd(qVz8gse;)OUI@v~1_ z)44cgdjsi!S6?kdVQ@*j9{jIMO>gk$hpn8$ebce?rJ-lJzNR7P(mVGL%}rF>k^5XG z*jW1`yWslEIDKJxNok$$az#T@n;udV)Z}fooL(5rY54}+(_UhY7oo5`?pPMsI z(5}L2zg5R6s%AYy{59Ep3D#WP`zvE9kJb$=`p2|!)`3n?@15YGx+$s$yF3VP2ZIeX z05d?$zvfBmiUOvMVayfhG}37c=$IDaEKG-1z$KNkXePbpum_sY?#!`qvrtj;c zmoIAgNyZc-)SHfq+jHG7J);kQNO-QrT~}F{aHidUi-Qu5XJ6>^-|;-JxxhEGwtPF= z2rB(xrU#g0@*D1%m?2CEcPFE!5b-ES3}x)-0u=$b%(2#4Q*`^TaReF?m z>cvEdv`TXe3F;~jjOKhkZ;w@epif0OYb#+%*)#E#1Sec^Bw$Ab%%XEYzWJ>awcLH3 zNoVRjags+pJjsXHgKidG(yJqA`Iq3Q2?;q=Lx6S`eif|_Fxf^Ag`DF`+vd0mYqqUB zeR@K3x#8krDRUKz2ZE$|QgnFr3wh)(akyCf0DTHC;7&)rf0~b2I9^TJ^@6(TIeTwa zW|4q^6%Shs$ufB3t`@Xvx7x;>0FMeN-qtToxy9jTeKt&|m{cDTYC#qiqqF1{7JsH& z4s?zMPYs#GF!|TkgU;M4^-sBZ{wY0))6?{|-cVYA9Y!UF|T-=MIHai^7_yq;q}p|lne zQHhL&JrV|}eJvxEd!R~zY6>-<;?eDZv6|Mm!F^m?V_cxHqj<02Pv zJlFAC+>aI9QbyuO<6AT<&HscbRU_8pF86;kT zaB$%SmRo?Qf^#bZG-E^l&9K!!Qo*evxdZi(jCpFr&2@{S-0-7~TOS-Jd~HVm8qMqm z@^d;GF!ksRoFL)?Ldy_tz~{z``p$s4Q?^!tft&%l6n;FeiH(Z$JvF!DjiEmARRd~~ zK3RhWNbb}_G*`2!t}g6J)01G<0G7mhosFp;!#m4^nu({Q&N^eL)%s0vgs~1Vgt)oP zV_5?Fa@tYYJSeXvQOZN{Cy^UOHIZ7ti7OCq#~vW-(K#6p&7?mJoP3C8$)XE;MmT0) zc}^0s0*DYogA3A`D{~kmmoyZ&Jjqty647Z@k*0~b4)}b+XB4iiaiD{r++S|Dv>hbq z>vCh6cpFy80X0b_0=YMq&VAL8ZE=FWYD~fYTfJ76{dYG(cW4#yJq&d9)mp`qB2~dR z?>*v^rICH<_K2%P7QUPkgf&<@ztk#N;SPi=>>Ba<+E4*Pac;b9J#RUx}1+bJS-e15t~n z7ZXd}_fB(EJ9#+bLda;&9NtMfaR3|Bo_p$`*Zd+K5n_jp2N64~?CKD8~ROJhM@W2QE8aTfb- zWW49E=UnuvK7Zi65kMi3oF!d`tzH`^I{HZ?t{1goTfu;`}V z96~@8-~dwJ@XJ>{0``GzGdxQwu}C-fR5hpFsDw930WnL!^6TvYmwgij{Uq5Zzqse+ z@Z=uetJ<=p3cP%wEJ0&3$T9_q9A7~fVZ@UG{`J2BNp~{-X;4W8Z^S#eZ zQ%`0=L*WY?J9WB7aRl5cku59y@6r)Ln(_I-3e`O)|CnZqw!Lj`8cE(twN$P8u>{Df zqqUS8@N(RLS@~-Vw}Ab@tg1-ty1G&$-X?V^Y{%8O6=%q*hwO~EtrL_fMP}AE54K<+AbltHn?k4^M$Tc!gO#}RDJ0I6|6)&M*v3A%0pr4rUTa8Q zvih8yCM8-VqOC+1X^ehuu8sWZ-5r}nw#ADCa@>AbL`-l<96M>+rp(!^q;Zo+`hTt= zNENMWu;3Q(LX1u1l7Q>*2S8cV8>C#DS$<4(Bw6BP_Nu91$D@Hm{KYj;X-CP8Jwvxg z+0?$L1EV_#Tm8Tms=3a1uia*#H045;xn&H63CdN*u+K zvb8V|`Tk?|`WTRu7DPaq9|e_a^*M-K@GSD|`T4KN%rZReL*-)Dm?%l`z|pjFd4Rnd zHs>xJOsVFx_tozd299$f-x(j1Yng!^cT^SzfaZWCtZ~D9D$R}RF=id`oYgK>K=)N) z{X&mk?`j0xhtI5|rfdi_dBa1!m9E76!ZgHfluu|CghaV~O51|!5wbgr!QeAGi;kltHSLLfU2 zBs5%n4@eTM^rf9ZsvW1xa}DU0`wD0!qWP{wdTg*1!_5_WqtF>AEhE_#$8v>Vy_ZRO zCX*8V?JSE&vmd(JS{jO?0*ZKh021Juw=eg*tq0d?fu~KMa_bfy>abyavHYb1*0k^R z_VRWcL zAUdQa$<$=VfkF%YJv1rTXq*%hN$iEp2>j0dk&O1LTtQhNA{^Y7y3BKG$=g0a?gtjA zC9tZWtSEo$GciCtLWosl9C{X1Aijyeqz?0*i$aU042uqtXz}FA@fQ0&?+zl6i zoie0UI_m{(X>n~zSsEflG0E2%Ez*X!hHzb|y{Ad7J=2)9z&h|`%^(e1)7I+vX3geH zL5kYY%16R4=r)lp=2OTcw+jOXGr^b^T|b);G@=cwnAFbq(Nd5jVPF@8Mi$1?N{+W^o6os+8@PJSzQscR;z7f>k(g?hh-jC%ySie50dz z3>Ty@vf=jM+C+G56*hQeL)|7Tq$fT!_OKm+pzqU;PPoJL4LRL`+gg&0h<4*hbK5Q+ z&cj}MQAYO@B|&}5g1Gr)&r9z(y1|oZt{z1#vr46q&6ub&G?3WM$eW}3ANqKym!dM$7F+3ErU&45ip(Hh`CkHTM(=smZkPgp0=8FQonV{;Tk zi}KkgMr2;|dpkX@R+I#v3HOTwA_g0}JnQlcXQ%6E*{43~EhVS$H^CkXl|W;YVyvz* zWvuBoR9r~hm=-CIHCqu}G%_jbde z#~_2#9N=Q*cXmqD2^Lgz^00vzE`0Ql&zjRjEy1 zC)t|hYM3mGBF@c?SSwedEP15ms9;Uf@#pcjgE%vW*L|=UD$ST33~d<}S&Ek>bwOP8 z(ji?P6Whh-{i^!K-Qx74@4;*c)U}utvAFC1sm#0J0DrNBoIVYB5Uq`n9aq9Djxx)R ztgj&46Nt@d5ny~f53b3LXup`?B(CPE3J5@7UN?`^ab6|iflVJt69OrdeefDk6foo* z68VHDcp&4E5oij|$&GS8GfZ(9LolFD7ddi}q_*TR27WnO)&@W*vNQ!5J+fuYffH;Q zvgR{N8Qe$(X!6AjBt1gW#L zIK=$zp{4)oli4Pzb+~)BxjX>$7?^SC?i|0CoFtYlwn6KmE(1hzdf{>ftc7|P5;L!* zwlLI>0+c^F!YpOF>oyuL#ct5aZOO`#%>n&K*y}*_UGaWywKWFF*f`>ES3o>D|5rw- zS9EQ}sfcl6THM1o_~-?7n0~C8#!9uCHD4(N-9S}~k*6TTIANesC_NjF^O5f8gW^Iz zaD28UdHnZ3qoOga)3K@ZhGc6_WAGE-WGTS z1wA|}tN=_D`r)9_!O60QQZGw+{h^)3r$SpdA9;odYwknaa|>SsoaCi02lgh9Whl`=pY}=PBavMmhvB_*~(Gtt`(UOI=56w ztpWbSK?M;>+SN`oDEd$IPjs%oS&WPVSQz3vho73|PUjRdCL5{fv0S>vzo(hIK=7MN zuSb3-w_*LK2OFa_l28j!}!n!p?e`{=?LaV(-1^nzrH3|8fdVi-8yhxcifhQV0xfKN6wymo^Nds z&aE{uMK01N)pk`|tMtB(;9(^y@q$ZW$;$w;{J`k(8;_=u*Mbm0Q_n$!j2rHu5|7vzgdHoQu34t!5f+#Y~EMT1eR z`E?HWm@@LmcZZYzIBG2F=EzJ3St7vkDC(-!vsCmFl*O2c3N`)>7?orn^t%{ieE}MB_WkWW$xxyH=So~0@T=Rzt4L(htbDN z5c(8Tp(TyA~kU_mz6%(2s-phJ;Fy^{J4!2@P>&aqF!P;!_>)LA3xbD`Q@Cq zz`GC|1<=s7UX;9PHD;Gwo<@ zlp#Z)H!Zc^AcV>O@$;C7b?l%;s$#kXE~=!uWU*mKIDGTD{#WB^*0Hx;(&}46 zv5mRItmXEHISw@s8U@0vt8aEpvcaeUTse>h zdvgQKNI!#xAv?Q?!(&o>s9FK~#czjwhN zyEn=JCLYNKd&x>YtNfh=u&akV;T__rbZEm_(gCjPu|F0BmdRuth#bS0Mlo-z-YKaH3cjg4*v?>hQ{MCgYx^O1LY z5a*CnnRlD|(^C@C0{&Er`PTH@6~p6bcFk#z%#h`GWz7fKhyn24PxvfK&EOLOkqIjl zM(!5k-mX#jaj5yeMWMf{+@7D%mGhWHC3unu7nOA(&)&;}eTFu)fhi&tcNUs3Gs5Dg znH4DE7}!00UBoVzv%hj4X>AF)FJ6a6g6z{9Ud$3~wA;Ik z&Hg7@%j5Ciy8_7)!y4+2E`!Nczg|iU1_q3%bS{5ry8V|FDtJfrf)8^PXd=|Y0eS=_ zR8#J}lUqPv$B>5!`>l4pU7I$e_CD4+yqA1_Vz5W1+QvRV;m)o?%-V4QeLFAW)hb*z}ucN((MLPP}rVnvfh#xl8RYFGEhapzCrk8 zHsUi(sKDX2wOB3PSYGjITthKvy8&~go?y=CG4o)OuN6bUY))s+@6B^fEyIjJ#YGtW z2(@aj)Q=h)QtcHOz0FcHVM%OQ>IH|+Z70ec2!QV8sA zEJ%dySgkRGs2lhwh5l_-tsirZn2!XSS%XWAWlFpPzVcLv;cLYb7e6iyZf-<92n2G_ ztZX!+!fK-o$OsPPty92&eI%3d^pH^St&;4(BHKX9WI%0La(!{4DQX0!@J;jMVjZ4~ zbM7PL1!3WKGx}?z!(9QMRQsl+x{HoYaX@aLt+HrvTZ(#`dpMKor99>?jTLML0xUT+ z3Q;lnCE?jY>^He!Q=joCzCq&^sfzI_Ogpr2e1g!m^PXWXEWT{Rv)ER8x&j8={yM3@7&EY5rYE ztt*Qv^%qebh-<`**voiL1Zby?FS}{b2{HieH3kx@J*tAP*tD>$qOxoKbT*njyv85j z0(=vUF&S%p76OyuX5CZz4}XNM4xw1ptAq7q0tg(Q2P!~lcrQ+5-$JE5N^15-;7(_N zJ9~vd8ZcxwQ=4>F+t5|U4F4BGXQGisg7P-chH+xMl~fG1GZSbmnwnYPK`l7=$H9<+ zCpsNiyIq`)*Mq++IrM8kqOnBnr$%`LUN|f2Mu>$}a2qdy4 z8Ubz>l!}B#RG85y z>IadXPaqUoDNURwxh0x_1prneTQhj=3!cSh9#u|$_ieksbpWY-z3gBMq#~gf{${RXmv&nB5 zj_v7o>?0-VeP|lXN9iMa-Tk-g`qg5dRv(KbuK>1}d4tjrSl%c0@h!x|?7>RmzpYSz zy`rV~DF`1yNx~LpUoeDeI|duk_yYP@g(kme)Mtg1RFA$YAAG9vs@yI+CSAFYa{W(Z zc0PrOn~nRqxOeI`p3WpWjU>+)quQ;JQ&liM3=7 zvXv60tkrF6Xgz_6>!MN%K)38tEdC5>FcvNu3tzsasM+|Ztd_2ojJML@1~z<>Lkx|y zLdSe#l0;44%xQK{VDoS~k%TI%HsU%E3ilYxPBA14qE)O?u^6cAEa0>_s}myx5z4Xf znj_EpyyiRSERCKW5YIiu=JVfs5gtL|ed-F=!P9+8i3BkNvElWU`UANxm#WhAGXcLd zpJvL0`^mb#7M6oby}LLvXtF0?28estFvIN-jXMDIiuleDPxhbqAulxp`JDhP_=+~H zu)STrCc@o7fe)|h=Lxy0Y_c;A5Vutr$*4%O={z&Rys;mUp5Zt>^99Ea?b5ApXI0Ud>+9E zYyoZ&(%tE~yz~pak|@C|^KS@ZF4TBM>HXZG32EK&vxU|6t(}`J$Je#N`l>iGZpg@R zS&9X>uz`xYd*SEk-S11(9xG2l)ySCGEGSp3Kekv7Zj&dsny=JA;^;tjoH-fJ2Cfn1 zArjzhf(|DWl-c9t?O_stf4o!|EZnY1WS4MC_9ydt3bRd6&Vg7k3BHl6My*V2XX+ps z+l`khE%%wSD)IT@(A2>ES=;|iu#{?y(P);qT$^wt!{7l1QZ9Y??-oy1{()&9?yzZR zxxcDGHhqN#p}sNyFL(VrW~UUGT_f|^g%T@B1j8hK+7&zqXssNNoa*W}w*h+r{96|{u!9#m@Q-@r(Z8b;51vmdn#6bZvgTk^&g z|H`4HVJzlVrDE-@b#R-LKOYIm7+EyskI61|(*S9WdNQS}h=?c=(LQ{E60eb|t+!}f$0G~?Y@zi?;yZWLonIE?XO~a_eZZr zjm-<{z;ZB%O0V$>c(E%S#H861fZp&Cnw&j{3x&$0e4_Sci3M8rEbpWgDXnwtAwB!(@#7vO71TC!M+1S4QN159 z%C#VM4NN7}+3YXlH`la&YX-J3S8W7x1tZO=e$X=S5Qskp##c=(F+@&Sz(RaWb6LkO z#Fsl(dmlC*L6^PYUb#9Vl!iW5Sl(mCq2QkI9I;fT;x}jU^baTU21M$Q-}rwFRKWYv zz!HIdH1~BnAI8LpPhm>E2I@vITJS`-TzG8$sUxpH1tdKYXjQhggL5Qb7n?F?S}3Bd zevz(j{2ocVu}4vfo4@6}ZvbD>M{?`QvI+VkL2| z9Pv`G;Ht*jIVbv0CLdhop*|QKROp_xX#bieE=LcM6AA!y8f7Y2&gBmEAXner!CUOs zqJvCp@RAI_=wI@xEh?LEhZ%~8m>*zj(CuE;ye$N@XF#S1Doo3p{w|^XE*K~U%0qav z$iPv<3+I=hOOLuM^5S)=Ia%md9&rg@FLlz0QKX_BRl>RIxub$JV&m7W>+~(Y_i;gV z1yveHEAOGbAkxyvWFyF& zf9Os2WKqVsbdX-P!0J|uCaIn`e!skOxE4uM04VR_(Nv2_D*f)jJS5=b=R;nZY9t6r6euHW6N z;C(8~zCF39wauHsszc8;=hC`}5z`b}R<@gZ07qz>x6G0tr@J93En(P^u+rxjZ z7nnr$a^te;;rhAfDC3S#Fm3Y85L=w9*pUX)zqE^B0%jb_Up>lubIq7?R)JrL5~A3(Z2A`v*pjLJ z9JU44Hm&OsdvnSG0m=c_gihNT{+*8UnT=xHRBoa*_?jj<&L$d<6uerKWkD_C7Un78YcpE8Cofrv(WyySvGYGBCO2|zBhdfD=}eXEIB9)Ew$i6 zeZ|Hh6~HZbhAm*M)r-qvFkU;*KSGUrdc-dM+Jjg3diS_{oW*|+l4=(6y->yiRY`Sx zr9`i(P+{Lm#S&P5ixrEVI5QW7NjbvYQlU)E8eEjWzCeE`rXNwMeWc3OS4W;#!5rE{ zHo6UaG+U=f8>y-y1q82IvCZgA?S&z>-3bB8@R4f#GIPH{IyuwByNvD)_C=Mn;HFS; z^4182(JiyNs_BGiZ~S*fPXtPSE`|X-4=E>%eCR@*I-5#%+~ZL~qDW^>4=&^aP=QRh z005LTAFWU<4|K12^h_}irpo7@ch^U2N_L@9Yl2;Aoqccr^PQOcrfkPuNR}(L>)Koz zdb>6^^-ut!*(GFVRHVdn$veFC*;(30CP$ReE*tV^T)+wF#YuuPGPpfSv|jpJaU5It z){lLYw}uqaX<8>v{(sPGRshl`cPP(P(`myp!K(>ufd7fHVVNE+MzXj$G&@Ps z-jMP}{Gx|3X6p<19l1hSYiyp9dd@6Tq;>2=S&i4xisTuqxPYGlu}lBh&3gXmxu7xT zG?tN?M1R6=Ow@!1p3I?0+hT7=t)PQ)F-yox$K@dqE;w)FYMZtN11h;ZNQ)zFjDz?j zaf7arrLzz?We*qfCsZ{4&zE967;KHcNIq9SIa1q4OAm=-C)+ONX*$DUlsGr6J9{@4No#awXrL$gZk4HTM9_1_+7*@@W#;N~J z`CW^3Y^c3NDImmCTVLc^E8vTG`))dUT33kHZ5JJAP)VA)b{%4Zad}H8+faEM4K%d0 zkxDpX8lPzbcov!4*V2y$BGCF1aVj6@PAu&PIO0X^iF}>8^d89Bu&|eqOUHCXxp!VW zI^tyE^As3+Z2R>SE>szmp6BHrwWeB_WMFAObUvk{>_!O4I~!tBDEKb)qIECqMP5=d zM2taC>VA$zBvpID{?l=T5V9wNohkq?UufP0 zuRKoEWG^R91c&H!j0`l2qY$Yc`k}&p5qhtE6 z#s`hAB3i1$u+ktWORHK7{P5drZoJ?gPrciE(K(-1-_Z%c27Dr2J@0~$BBw6%;Z*G2 znXOeuqDrY6=7n=z7F5L=22?hStI(OzeFW@2uV83P!CE{kQ_(UT*|ZBv$uC6(u&)7K z-tu{$V-4c`Q-`bAHDe@>*FrYm zYG59QAUfba?j*BXlAaw@?*pTUlDiy$T9X5`cx<*@=^;19pjvk*Fx0vy1`<tUe?- z0JTSJQLyWSd%9#thU!(Lb%l*> zB6%{t(e0H6(hAI*;Be)~i9`0!YkW^Ee7y|@VKOH%tUKtqR@MxDVE}_|!RzoCK{70jV5B6;J-;5`%b>->N-dqVz zo2=18Ye$0l&VvR`fq1f&TUcjR@~)jRx^;lG22@@s&4#BCFto(Skv(ENxbD!(v_EYQ z&BIf}F#JP^eN?zRNhY9x64urW0T=!)3NaAe0jWD^1Yl|#e28p3Zf?bg)(`nzv8G)| zJzpjLyP~BmDkTs09>5s`YYn1R!N|IM*xETn*qSM&KS`WGeDDedv-mamjo)Vq0kmj` z7F-^GG7RCOR$#U_ES#04Jl8}ROI-FtM&kj!_9b(H+Lv|1chwuFh!vCHj2uf==ew1l z3P#eDaxTE(k?gjw)#!gr>v3p*aXzjGo)pyxpK|JWQ!uv2J)V`TgwN{tM zzyNC+x(r$NdTRSck{nmGX9UT%Jv6YF3u<}Uw{6E6yycj7mL0_;Qa#0EmE6tTRm0&e z?vz|tsO?O64;OZWTNdBa?NMChq6KgcbUA3byrH`m_?7{Z=Z22tumkdP%M}xI0*SCX zR=Eu1iW0I5w8hH1)$&zvYjH0n-JjF z{L`0EnqTqGrK4^w!^lmxLiLq=_7#}9;1vk5 zjBSC5UZh8ZOS{cwa1?h|)aQpz#lo0(_7XRQC{s^U7Gi>S%qf&{x~3hQ0Q`zNx|P&F z1pA;foe*2~SYc%AX9**OH4G~2wU5bdC@&icJklNkiY3D&PsKMQBH_ZUMfZ11qys9DOy{_O$u5VZ9$`g@&0T$s)FX zi@xZ|MV98tz3XP@?o(#9cNL&HXeo?{jyHp2@&=7MxuO7Noy*xh!zK`Zk>TL{B#$~3 zg>H>Wk*CdMP_n>Ygv2JkjTfK7yQ*ak!&6xFo*mpK4l`V_NK{ ze>QW`q~^=<&kzzvwemH^8-i;>{-;;sHjhA>2YMBQKIKO1n+n>oFe%Mxns0NpbpP`q zk3BmV5{e#5`rFD_$^vGaIH02Ya*?3c%Htj&il#rc0spHA^WjKfv-P_tr_VRh%-HBj zX_8YJ@MjysDvHa}^`DM14)L5nMI1Rfr;;0o+fRMEBs!9vC!*$_j|6}`g6ZJq+L%qg zy57~aJ)uGh^y!3_W75-Tp%`jY5sHi0?e3xKRHz07D@oPGgdTKS+#Nbf;P-w^I^G+H z`ZaPLUI;6mudeSy6?DMevMWm1N1Vq*6m8Jq5myuH!3XB_Sh=zlCH@-$>P7w4WlZtT z26wpL>z+$j0rw?Y5{H6^as>)x_}hkt)#lXgMG;8!o(>UaLl{?^ki)?eMqe+PnUctg+dqIZ4T87*cx@PdTrcO(Wo~fj}q;{CivmH(TBL9=}9P;d3F^fW)a1O5Uavb5uS4kpL)eb~B=)@XNDEK}eXalf>DcN1rS?0oa~D4>1? z&E?KhXkbtT57Wy9)fwNh?`-cT(|jRC(gLXFMnImBy{mxrXTYnAwuu-xm`gM&%Y6(b%Pb()()&I#$If42divk-9m;mgYAUvJUfR&GoJ^80lC)MJ2@_ z*MVQb6&8AW&9K)lu@s7fAcw1!1}_%CBR|TjJW0-AJ2bC>SgyBi=h$vC?{Ad-{jVD0 zS%h97obYJAv&|i-ZG;N-WNBjWzz(H3yn5G@GA_9MrQ10%hT&?yizfEeh{co5O+Z^e zi|&&DIh(#yXk;labNyupKc2-5x9!KV=9cG*pm< z^1)eNg>L(SI~mrYpf6|O`H-F7Jk;CCcip$N88JBQ-E8TFQ`D%wLr+wFXT!CzEQ&lM4~M1KfhsI@P3E(PqM z;yHo6-pWJ}h`&MeJ7~lp%J8-AkywG-);jz`*Gr^K7C7=cuh`>$5d&O1AeD5&J#_9;>ij7^d!iWwkS;_1y`xSn7b zp80?|ZokHl+$Nkjd?7V2rEH8icXF<^%u(-=2Oa*K6#Oi($3hIfa#Al|y*4>E!I-O2 zP`Hy-u^6Xw`bKjXo3$91WG7&Pg6?^j<){#BR^ZQ6gsF* zXheQGJ*)-2j`7B)2eCto2@CJ9GG ztT8`PQ`7-F^F8y$KZ&{<)&mWcQ}O{fg%KG*;lYJ-J!H@Vrd9W%fq)$8O~Q{WHig!G zPwo`2=xWptNVLWbNdj`Pn7hz|AWe*)Ir!yU7`})p{OE;0L*L1YAx>=wY{mFxF>w!> z5F;jRL8kwsCzRs4dR-wGQYfZUxK+k+<@TOS(qGDRYW@qCMJB1(eLHly#7r zu9!AmaVJ7&9Rs_#EpR-b+W)kdpnj0oeKs1eP4bQgjw9`N`J^`+QWfVBStUy&JoN8m zfWaP#CrP}FkON@JvB1@lE!MjFMptpr2dkzLgGZK3cnn(SJN{q(Bne<% zBujAxn@OUN98tJfEda=_DNY9;*uNbom!CI`4+u=J{#fa!TGMQq8iMc0{A(NqH(4g3 z$HcCTxV0WPbaGR$UI`t|HIR_JZwM5fyM2}Eu$u;FuCL=jxlnwZWMc!hJyh~gVhC6W z*sGTc`-ruD9aU1F1gJO}gCx)pbPyJVeLj1HyBMe$OM=1)YT-_E`?OR3@Ku6sGQ>iZ zV08|Kcw#}ya1G_O9pf8uPevxyA#x}BvT1anvO!n%FvD$uh4+XS?Kz(j+H@5 z-olg_{sQ;A_5qLU{Nb3sr|}+;VVTRYHc{Ce3By)$hCw)9pG}2=E!s2YkjO~t6?qzt zFTF-ydQ<2v-{~3;@@FrlcUoX`^fo}?F7g;+!c-t>vjLZ}zV3c5GXoqk&*7fJ8SV?a zn-7hgMmc$1@FPYp={royf{PC zY&UPPfj{do%sbf&psJSBEy2^^^LFKsn4qC)eve~Gg%tueJqb8~j#{2#;mI8QX^8dW zn_tz)p7b+QySTH@;2yG*!hXH8R}EbUh-%lpyi(iJYf?zsN9rH)9ww(kMz`cD*RSk8 z69-7Em-5%~X}n_kusLvQn+L*xRqVX`d3$}CfY7ND>FvY6_wo`!mOkh@-z_~{$hw}! zv%o3Il$L0b(z|T=wYoA`ojg3Z@=dFF#Ro^MYoMickXq8hJE^t|mhh!7K*Yif(EyS% zBaxkQ%yWI}>r#%M6m6tYF7jjE7g0|ErSu?c0J=0H@Kk5(Wkn~0v#`5U{M~wVhy^oc zO}yB!wS|-t6g(`{KSq{`OUFG^d?*$iESI9MNlT~NC)4}F?WhhDwJnxgL9u-G?>~=f zyh;71R_qlBbb)PK$}m%|0d;Cq7GK07QL2I$t4*W37vXn`lyOhs8t{Sh&R1z+Lnmem zb%&}DVL}}b;nsztb>eNS51rO%n#Uq~q0k4&r%XL`*H*LG-quZjiMAX{{NQ6b^o|A{ zPaG-mc~xWioO!m;5v>~(m0|-Uh2mKo4L?Qrul}49B1l|(bf}c~~<+E@h3>^P@zLv<`X&>l`W%A9KMu>>~-)B|dN7DO%}j zzapnPt=xPk*tB)xaOjeV9m8HjO${Ptqq)uK1H#%lq2l5yi>o1ZwxR=htWaJWkaS_| z06@()IvYW_))P!NU;|)D1%|TaO~7xraU>~O@s+?0!!Yw886NcmQ4^sXFKmmbjwG<` zi0e^P*6*fJ6re8wqg2+(DG|X$TnLeHGVMf0xUNz+qI9mL@1}%3XLgewfz>;&d-K8F zLWA#QJ-LbYU9c|gT*vtqu)S=L8aOvZjGoj2{vJf+c&yz?$1G0+rF4?X#Y@HMBM7xF z`irHse>{)lh%R2v5&L(8S&f?@pb8g$^_kO?--gb89FSQeY<1lcG2;@SQ58HaV<&Z0 zVl*Gk8>B8n=fa^E0TJK%+@ys=?~Nw3*FZBL*ak7(Bo0`$G2M{$tjn!*M3jn-(yOP$23TeKpb(4{i3`MEA^iCH9nAn3yO?IXz`M z=a^gLH9iDx<4~x6oSN=SbO+nMc~?2=mokmdb1YpM!C=qmfZCvvBZ4Y5b8KWUd@E#3 z0Eff-hiW+>Opo!90H*y3`ELK5Fk_v?vig8S*NO@_S!5xdxC{9fNZ-=V&NdCOzbOLI z9_Y=G5x%ivDPU^<9dSqyXD(Y{s}1Jz@zDP0Gr(GOg-tP`JcRpbTT!Br1yNz{(o=TU|d#nVrOg3HEWLe z`+%foldXAPM-8J}`&k!I^O|XeM>ZlhRzUJCTm=ZaZg`oQNnL%B+Hk%StlL*{>%Fay z*Y#>}zTW^O#*7QvlR7f&ti=okztEt-gb(_4TFlrsv|ATY3jevxO6>Bu>(2{X7G1pvZ z6=s`=>koYzC_+Q3Q?wo&6olL@HrU1!ubK2o{~F%keVKSVoq8msnS2Q|!^OAvMl%i7 z^F}@RdYD6WhC6b}UF%SnqG zdI@Axk#(`X5~YpSTb!M?ubhuG}5zrB8X^! zF?dl20UlhZ+iLU{eknLW&9?Xv!s z`qd=v8wZWRRG$MuMGp53cUp6_#qusnc1^1Vw+Wph*qYZK za%$|M>5UzbqK=)S^KPAvq$#+HslHf!GJ&?iD{-J!wdQh+3yt`~C=0L5IYBlIwl92A z_6YFS3yRiJ(kM!vNnqXSC}Jk#p=s4KB|3mSfHT%h7wmr3Bo1rJe@)$+AAmE=pihgM zABCnciJZ}--jHNpDbUJx-O?ma)gWihbjcr#T#c;iC&>=%#4)w>6H`@mY~@?}gi^ca z0>J>5xIh2zoZcKKNqZgOI|@U&bx|y&Ib^}e`(WxGA(3RzD>Zmf$N7(d{97cvx@Z~6 z_N1J1t^(&30q+~`X#<5j$zc}RrA+vGEy_uOgbaVf!@F!PajL~XQ{R=)a@;rnkFlC{6e|Gg0 zq_G7Zxoj7!EBS0Du5-@DRJ_NcfmlDD)yQwb$PO$Xk?BwvI_78B8iU|tfXi8#V`iWV zrO3tV;yS1Pu@^M<*5xyhs84Bp721@3J&S^1&8(nAXOkHyBv9I#^Ie{c)al-;QZUX(wNL zW0AY|=f=}|27wy+BRmtrQDgCJ+AFqFwUXx{`@M)h>I}ipIJp>o&kCa!r85- z|LZSiH{m4h-v3zdS!5DHwV=!8=mQ!zw})c7p9$$_bkH8iB@GS8JO)JCe;`Z9Yu>Up zV~yB)1nCyRsVIKEK2E@2ZST@K7$BjxVx`AOr>Q0mj;*@J)c-vh{@D?zSJr4tp*Q=G z3mF>*f?tF?`p=oB53ZEtUMzPa_V?0Tr(1W5DG0hm_K-wU;F%_$mn&a+9!!wP?&d&3 zwg^370u><{aTN3`DJG^o*@mD`Ox&4Z`+->lP(m0RxKM=mqG2Q+$lui$i!u?8*~B~F zWg*~l%T^*+L*L2nU2m3ru4_G3gGyQD_?{kvPWQGW%!B_UfNED4^A--5=gM>TYF&Kx zn*}x+^q%8VTl`nCBdw4%O}&taEKOnbDH)h(OAb6)GcL`S6%7su-}sCAJnG~dFqTB& zr{i5&zkYGnov-U zD_k8_=&Fh}t&voD^Zio_S`)U#E;X^$0eNXN3AUx+wk z?AjBYkle>tN4WcFIO%hbAINE3dh4Fps530z_1G?g3eMafCBeEN^8nQ;iFvj0LF(st zDYU44300qivXkQR_u{r9Sn!Q6O4@35Q6^sXss2CjWdvW(o5_2bevX&g3h4W`cxN#~ zuROWTBAp>44v1_K+ zb45BOF^JNLfP5DNdtEz~nL_D!9uxfs$2XHAjw7^?bH3x?CBKc7Riy5{&`GnL45g)= zNHd$V^D@7)m?`TN$kH~2Fb{sjSUF9SGm|eNYgCc*;Aa%O^Rc9m86v*gv_FK( zf&T~l`|G&~7Y+vP@YP8f_iJl`l+GjlZ085iEMh5Y5&mIA#cNDiZqEfW-VyiuIqjcU^n(AR2Bv-DS){9V}^L72B-%~6EnS= zNXLXeVeVFaZXg8eAK8tIOgeG zT-U!IYty}{{=OKsadbObMh}1+UHa@aAfZ-V(jpD*9p#E=`I(XHHWj=41ZCk&rvURf zG4BkJOj;uQM&fsvik-b6-j z)>^Ho)f|eJ5Ds%H5+W9~sI-{p+W+j#)`~J8|N53!e2LAyM6RehMHPhgsK6q441FX^ zwe?3+aQo5aOF4-r5zOe6CNliZ(fQRDwv3Pu;Mg_aYJ;El*f}_hi11J1sJoZ?JAn8(yL${9WN<=E$bk|ha+oD zb!2UbApOt~_cdefLbQmLm-^bS6AjUi`&$$-_v9M*wMsV4kaKU_E|yXd=qCBIa7zRf zMkE>L4HbANJ50>taP?`ZJ>ptWde-o738_O)tbo8q*_ioAheIO5u?S9*Q(>P(gD`H3 z_Ri{}4^7yASgWH&POqZC$AJJAUJAmccv{VSGyB<~4(*jTQ#Pf-9fIv6r0wi?vgn}U z9FsARkpXb%6kdE4u@cRL-Bl9BWhMvOJXOl2Pk2$D^UyTU_icOxqqW5W&bpVy=JQJdY^=Vzr3_zdPqzcC1j9pobU|;l>t!dXC0aoYp0d2ldl?`^WHiORchv~5K7x# z7at&EEm04$Jn-k*Sc#2{FoZi5gLyl`RqIt^+|05f>fl+8CRqv%0d1L}6$HO1G z(gMh3C|&%gGg^jG=@8vi*~3ixQSrARi8aMgTKS&~jHuzgyepqpx@=m(Q`3jlLPVV& zS$~q`0XbKcYPJPHvVLp+4U>}T9cFff@C3T zhqyiPf|@}+FR}{bUx_5~_a;Y%q+Avi^)WqFT&z2g3a54sNq7%EhanXWTFys^0d4wv zn7&>cg-bF#qp*WOb(^TDPNp2B84$i4M&zSi&v%Z)bS&2jf;OM#z8)tPi$Ku ze?r0KPkym-1He9aa$+wBlnB8}i5@peO~CMiz1~kNM+_`YJ$&qfApA$PQ6AyrM+)(f zuMtjAzoGUy$Qu|_$**89mWkx0HDXwbr%rn&!`?EEuY6*in5uACS}D6aelxSfqd0wd zK0*E<7(f*MTc^|*_Cc0&xA|y0nK#)_=qIrqfmR<%*Di z3Dc`)&5xmh*yAihySO_fC1Ze2?KSn0;Aq(?6nk{fGMz(T?hCs`^ctI+KE6s196=Cn zq|uQt*(J|92(x%HC_s)TY!N3Ss{@#s|v%%Shg zSG*KYlKxJb9QaC0Zs^;PpdV$oW87vdG`=ZdCug+lw{%PG$fnvCi8cs>A{|NXf6Yq# zeWXENx$@0;^n&!<&kT}pGZ#8E z&%x*~A`PRwBX+Rso^xx>pZsnth?g}vZ}-yjH(mQ?O@H36jcCsZvPS?12t-6>^XNYs z@bK;3&)n>*o;ikyk97jP&Or*tN;>kX2Dum%8!vCwal;}2j&4g~T~-7cFLENEC(5-i2j#F98+{5LITp&q6Qcm|7lO+?BF}3cqZ0 z;<}H$(;v29@K|Ba;?JzeCA6gNUIt;AGby2&cl?H8YOgfF|2Nn{{qAte!ZU?1p1+v* zxlX+g9cMt~S)TsOj=XJC+YS6!w)tA?kaF4&63si~L-FX!80p^M9uI3xhyD3w%YtZ_ zXLk5ZPKzhRls2eVf1hhcR(^=5e>bqKrA?~$K*nQCA%9(n1ZD`sFJ-@jH*0SUAX!{N zsO{6_P(bWk@DZPY`A`=6LC)I;pG~*uK0159cAVy6F$=c*FlyS__v`e~=7VP}LTMYA zcVdHNx^QOE($^I2sc8|>*g3$O2!n(PBBk?FCAd^gn_*CV5STR%MUW3JtpiAY;=%qQd>hPBamy7_P;fs63`{mMlh!)Qb~3&K~bkL zup!v^S*~Y9k$<9`bv`$2L+0Qfvduui;C5R`t{9CCOG9WrzPx~=gq zMLF@cMQGQNlceUv^@ob`;8P~9dQ{C`Ik%{}={8jJ9iJTZ$6OET3k*>{&38DtZu+kFdjFgUwUv@ornwGk3 zn!d>*)2b;12X8V7`N&%@?*hU;Hab%wzs8P*Uux=&LS`O(0B_>x;~YzokGF*fEfu}a z-2`UEF*VNWTBFze>H1o%>SmtjRJkqh!PAfUD81BJJqF3&jfmXdiN8lmdrd69RHigGNEv9pE6ECi*BYIG?i#s?p9DbJL+#&4iY-Y|3YW z2fR0G2AI&~Kz`j-HH4vFz@P>OD7!!N?ZQ8Ps{A_qT@byv+d*T9nS$NP&9DENa-kEk zRxEsvA^H`zi1#fLoefv%__$)g&w(Xdv5nP4>52Pf-N+#?DQe%hfh1suqoDZOV5zg< zt;>P{=+pp8FXd&HZ)fzlYZQ2U8XL{BzMfh`ONODG_$~N(evI40Is`EPZoTm`TJAN- z)8}NpwtEL7EK?`Y#S8K@r(MI+EneXO=G`@|8Q-dYzaOo<;eE{Np(w!Qkv@21jCD4N zhA-7B7JL`|2tS)VUz)1=@R_B82us zLFCv$-Ibs46Q1t3r|*LDbOk)+b}>!aS_4V;^HsXqn!*%Vkwa%@KD{hMkelZ==vOL@ z3Q;i^Sr=e}|0l}2|+r75+$=jkkIlWT&@*Ejl# z)~4BKUEupSV|ce<5j(a&4Gt0ZJmHX+urS##%>!7^%czh_d_;YpqTWw}j(tKi&IXrK zGlCn&hf~ph!9;23<)C`wUA4;{Dy}PiVv$}A{3+Ap8r?YsH~`yn2i#iN?Ze?J{&uKQ z)>W=1?bC~!;I~#C2VQjWX>(g8vEbKnkip)3X;@<-1FrOoGWz8bQ)@mx>ANgTj;GJX z@inx!;3U8^>Vi#xB0B(Jz!4dqY|H$Ll5gjj^B=upE|lW!fMBS-3?~#82*KkYi3BsO z?TofzOo2LG!OuH*&*T?_WIs`&y4`pvC_y$>G5rd8$D_f=u`y2;G|c>A7Ns`YR{{c> zsbqSQFD%2f5H)y2z<2Opqf>Osm|sUMwuiuQwe+~X`NhnmQ(Ul!O(FgHuH=V*6VD)4 z`3?%Mz%?GE&c_}48YoN%&;ecQpDiaGUp`Vh;A-p5xzRqlaQe#3o z?Jh8|BU`=2t+lDrbFDW8vw8t)O-Pzb6c5ZIis3GhYDbL}CdJmB{QKh;Zf{B#&?acQtKl0Q7E}86zthfTQAK z9l1I?4IrZW3Iv)}+TUW+now!6G|pFWi#+jpe-MC^!<6xacD`4H2CN`C%BEaSKSVIE z4bJ?E2cuo^>L|;AqAj5x2v5kQxil%uz=* literal 0 HcmV?d00001 diff --git a/images/icons/chart-pie-solid.svg b/images/icons/chart-pie-solid.svg new file mode 100644 index 000000000..97f83f834 --- /dev/null +++ b/images/icons/chart-pie-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/icons/chart-pie-solid.svg.gz b/images/icons/chart-pie-solid.svg.gz new file mode 100644 index 0000000000000000000000000000000000000000..d51548a5a5844a33f904db8c8a6cf8c867bd6fc9 GIT binary patch literal 449 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 G=f419dv|vL literal 0 HcmV?d00001 diff --git a/images/bug.png b/images/bug.png new file mode 100644 index 0000000000000000000000000000000000000000..69740085503a907611cff6add9f878fdba41de8d GIT binary patch literal 92258 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 *9rio(P~L(tT8P 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 literal 0 HcmV?d00001 diff --git a/images/csharp_toplevel.png b/images/csharp_toplevel.png new file mode 100644 index 0000000000000000000000000000000000000000..7dabb89cf38b62e15645635d541385955d5f407d GIT binary patch literal 157811 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