{"id":1381,"date":"2014-10-03T14:56:02","date_gmt":"2014-10-03T14:56:02","guid":{"rendered":"http:\/\/blog.filipesaraiva.info\/?p=1381"},"modified":"2014-10-03T14:56:02","modified_gmt":"2014-10-03T14:56:02","slug":"cantor-novas-funcionalidades-no-kde-4-14","status":"publish","type":"post","link":"https:\/\/filipe.saraiva.tec.br\/blog\/?p=1381","title":{"rendered":"Cantor: novas funcionalidades no KDE 4.14"},"content":{"rendered":"<p style=\"text-align: justify;\">O\u00a0<a href=\"http:\/\/kde.org\/announcements\/4.14\/\" target=\"_blank\">KDE 4.14<\/a> foi lan\u00e7ado em agosto de 2014, mas at\u00e9 o momento n\u00e3o tive tempo para escrever sobre as novas funcionalidades do Cantor dispon\u00edveis naquele release.<\/p>\n<p style=\"text-align: justify;\">Portanto, vamos corrigir isso agora!<\/p>\n<h2 style=\"text-align: justify;\">Novo backend: Lua<\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/blog.filipesaraiva.info\/wp-content\/uploads\/2014\/09\/ss1.png\" alt=\"\" width=\"693\" height=\"473\" \/><\/p>\n<p style=\"text-align: justify;\">A fam\u00edlia de backends do Cantor tem um novo membro: <a href=\"http:\/\/www.lua.org\/\" target=\"_blank\">Lua<\/a>, usando a implementa\u00e7\u00e3o <a href=\"http:\/\/luajit.org\/luajit.html\" target=\"_blank\">luajit<\/a>.<\/p>\n<p style=\"text-align: justify;\">Este backend j\u00e1 disp\u00f5e de v\u00e1rias funcionalidades: destaque de sintaxe, auto-complementa\u00e7\u00e3o de c\u00f3digo, carrega figuras no terminal, editor de scripts, e mais<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/blog.filipesaraiva.info\/wp-content\/uploads\/2014\/09\/ss3.png\" alt=\"\" width=\"783\" height=\"667\" \/><\/p>\n<p style=\"text-align: center;\"><em>Cantor + Lua em a\u00e7\u00e3o<\/em><\/p>\n<p style=\"text-align: justify;\">O backend para Lua foi desenvolvido pelo brasileiro <a href=\"http:\/\/oproj.tuxfamily.org\/\" target=\"_blank\">Lucas Negri<\/a>, e isso \u00e9 um motivo para eu ficar muito feliz. Bem-vindo a bordo Lucas!<\/p>\n<p style=\"text-align: justify;\">Voc\u00ea pode ler mais sobre esse backend em um <a href=\"http:\/\/oproj.tuxfamily.org\/math\/lua\/kde\/2014\/08\/04\/cantor.html\" target=\"_blank\">texto no blog do Lucas<\/a>.<\/p>\n<h2 style=\"text-align: justify;\">Uso de utf8 em c\u00f3digos LaTeX<\/h2>\n<p style=\"text-align: justify;\">Quando voc\u00ea exporta seu terminal para LaTeX, a codifica\u00e7\u00e3o utf8 agora \u00e9 utilizada por padr\u00e3o. Essa melhoria foi desenvolvida por Lucas.<\/p>\n<h2>Suporte \u00e0 extens\u00e3o pacotes nos backends para Sage e Octave<\/h2>\n<p>Agora estes backends tem um assistente para importar pacotes\/m\u00f3dulos\/bibliotecas.<\/p>\n<h2 style=\"text-align: justify;\">Suporte para scripts que executam automaticamente<\/h2>\n<p style=\"text-align: center;\"><a href=\"http:\/\/blog.filipesaraiva.info\/wp-content\/uploads\/2014\/09\/python2_autorun.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1340\" data-permalink=\"https:\/\/filipe.saraiva.tec.br\/blog\/?attachment_id=1340\" data-orig-file=\"https:\/\/filipe.saraiva.tec.br\/blog\/wp-content\/uploads\/2014\/09\/python2_autorun.png\" data-orig-size=\"586,493\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"python2_autorun\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/filipe.saraiva.tec.br\/blog\/wp-content\/uploads\/2014\/09\/python2_autorun-300x252.png\" data-large-file=\"https:\/\/filipe.saraiva.tec.br\/blog\/wp-content\/uploads\/2014\/09\/python2_autorun.png\" class=\"aligncenter size-full wp-image-1340\" src=\"http:\/\/blog.filipesaraiva.info\/wp-content\/uploads\/2014\/09\/python2_autorun.png\" alt=\"python2_autorun\" width=\"586\" height=\"493\" srcset=\"https:\/\/filipe.saraiva.tec.br\/blog\/wp-content\/uploads\/2014\/09\/python2_autorun.png 586w, https:\/\/filipe.saraiva.tec.br\/blog\/wp-content\/uploads\/2014\/09\/python2_autorun-300x252.png 300w\" sizes=\"auto, (max-width: 586px) 100vw, 586px\" \/><\/a><\/p>\n<p style=\"text-align: center;\"><em>Scripts para execu\u00e7\u00e3o autom\u00e1tica no backend para Python 2<br \/>\n<\/em><\/p>\n<p style=\"text-align: justify;\">Agora os backends para Python 2, Scilab, Octave, Sage, Maxima, Qalculate, e KAlgebra tem suporte para execu\u00e7\u00e3o autom\u00e1tica de scripts. Voc\u00ea pode configrar uma s\u00e9rie de scripts ou comandos que ser\u00e3o executados no momento em que o Cantor carregar o terminal &#8211; ou seja, durante a inicializa\u00e7\u00e3o.<\/p>\n<h2 style=\"text-align: justify;\">Adicionado CTRL+Space como alternativa padr\u00e3o \u00e0 complementa\u00e7\u00e3o de c\u00f3digo no terminal<\/h2>\n<p style=\"text-align: justify;\">O comando padr\u00e3o para complementa\u00e7\u00e3o de c\u00f3digo no terminal do Cantor \u00e9 o bot\u00e3o TAB, mas agoras temos uma alternativa a isso: <strong>CTRL + Space<\/strong>. Isso manter\u00e1 a consist\u00eancia entre o editor de scripts (onde o comando padr\u00e3o para essa funcionalidade \u00e9 <strong>CTRL + Space<\/strong>) e o terminal.<\/p>\n<h2 style=\"text-align: justify;\">Suporte inicial para os assistentes de algebra linear e cria\u00e7\u00e3o de gr\u00e1ficos no Python 2<\/h2>\n<p style=\"text-align: justify;\">Desenvolvi um suporte inicial para dois plugins legais no backend para Python 2: algebra linear e cria\u00e7\u00e3o de gr\u00e1ficos.<\/p>\n<p style=\"text-align: justify;\">Primeiro, vamos ver o plugin de algebra linear. Na barra de menu, v\u00e1 em <em>Algebra Linear &gt; Criar Matriz<\/em>. Uma janela para cria\u00e7\u00e3o de matrizes ser\u00e1 aberta. Voc\u00ea deve ent\u00e3o colocar os valores nas c\u00e9lulas.<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/blog.filipesaraiva.info\/wp-content\/uploads\/2014\/09\/python3_linearalgebra.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1341\" data-permalink=\"https:\/\/filipe.saraiva.tec.br\/blog\/?attachment_id=1341\" data-orig-file=\"https:\/\/filipe.saraiva.tec.br\/blog\/wp-content\/uploads\/2014\/09\/python3_linearalgebra.png\" data-orig-size=\"355,295\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"python3_linearalgebra\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/filipe.saraiva.tec.br\/blog\/wp-content\/uploads\/2014\/09\/python3_linearalgebra-300x249.png\" data-large-file=\"https:\/\/filipe.saraiva.tec.br\/blog\/wp-content\/uploads\/2014\/09\/python3_linearalgebra.png\" class=\"aligncenter size-full wp-image-1341\" src=\"http:\/\/blog.filipesaraiva.info\/wp-content\/uploads\/2014\/09\/python3_linearalgebra.png\" alt=\"python3_linearalgebra\" width=\"355\" height=\"295\" srcset=\"https:\/\/filipe.saraiva.tec.br\/blog\/wp-content\/uploads\/2014\/09\/python3_linearalgebra.png 355w, https:\/\/filipe.saraiva.tec.br\/blog\/wp-content\/uploads\/2014\/09\/python3_linearalgebra-300x249.png 300w\" sizes=\"auto, (max-width: 355px) 100vw, 355px\" \/><\/a><em>Assistente de cria\u00e7\u00e3o de matriz<\/em><\/p>\n<p style=\"text-align: justify;\">Ap\u00f3s clicar no bot\u00e3o &#8216;Ok&#8217;, o comando para cria\u00e7\u00e3o de matrizes da biblioteca <em>numpy<\/em> ser\u00e1 carregado no terminal, automaticamente.<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/blog.filipesaraiva.info\/wp-content\/uploads\/2014\/09\/python2_linearalgebra_result.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1342\" data-permalink=\"https:\/\/filipe.saraiva.tec.br\/blog\/?attachment_id=1342\" data-orig-file=\"https:\/\/filipe.saraiva.tec.br\/blog\/wp-content\/uploads\/2014\/09\/python2_linearalgebra_result.png\" data-orig-size=\"513,394\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"python2_linearalgebra_result\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/filipe.saraiva.tec.br\/blog\/wp-content\/uploads\/2014\/09\/python2_linearalgebra_result-300x230.png\" data-large-file=\"https:\/\/filipe.saraiva.tec.br\/blog\/wp-content\/uploads\/2014\/09\/python2_linearalgebra_result.png\" class=\"aligncenter size-full wp-image-1342\" src=\"http:\/\/blog.filipesaraiva.info\/wp-content\/uploads\/2014\/09\/python2_linearalgebra_result.png\" alt=\"python2_linearalgebra_result\" width=\"513\" height=\"394\" srcset=\"https:\/\/filipe.saraiva.tec.br\/blog\/wp-content\/uploads\/2014\/09\/python2_linearalgebra_result.png 513w, https:\/\/filipe.saraiva.tec.br\/blog\/wp-content\/uploads\/2014\/09\/python2_linearalgebra_result-300x230.png 300w\" sizes=\"auto, (max-width: 513px) 100vw, 513px\" \/><\/a><em>Nova matriz criada<\/em><\/p>\n<p style=\"text-align: justify;\">Por agora este plugin tem implementado apenas o suporte para cria\u00e7\u00e3o de matrizes.<\/p>\n<p style=\"text-align: justify;\">Veremos agora o plugin para cria\u00e7\u00e3o de gr\u00e1ficos, que serve tanto para gr\u00e1ficos 2D quanto 3D. Fa\u00e7amos <em>x = numpy.arange(0.0, 2.0, 0.01)<\/em> e, na barra de menu, vamos em <em>Gr\u00e1fico &gt; Gr\u00e1fico 2D<\/em>. A janela abaixo ser\u00e1 aberta.<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/blog.filipesaraiva.info\/wp-content\/uploads\/2014\/09\/python2_graphic.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1343\" data-permalink=\"https:\/\/filipe.saraiva.tec.br\/blog\/?attachment_id=1343\" data-orig-file=\"https:\/\/filipe.saraiva.tec.br\/blog\/wp-content\/uploads\/2014\/09\/python2_graphic.png\" data-orig-size=\"279,214\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"python2_graphic\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/filipe.saraiva.tec.br\/blog\/wp-content\/uploads\/2014\/09\/python2_graphic.png\" data-large-file=\"https:\/\/filipe.saraiva.tec.br\/blog\/wp-content\/uploads\/2014\/09\/python2_graphic.png\" class=\"aligncenter size-full wp-image-1343\" src=\"http:\/\/blog.filipesaraiva.info\/wp-content\/uploads\/2014\/09\/python2_graphic.png\" alt=\"python2_graphic\" width=\"279\" height=\"214\" \/><\/a><em>Assistente para cria\u00e7\u00e3o de gr\u00e1ficos 2D<br \/>\n<\/em><\/p>\n<p style=\"text-align: justify;\">Voc\u00ea pode configurar uma express\u00e3o para o eixo Y (neste caso estou usando a fun\u00e7\u00e3o seno <em>numpy.sin<\/em>) e uma v\u00e1ri\u00e1vel ou fun\u00e7\u00e3o para o eixo X (neste caso, <em>2 * x * numpy.pi<\/em>). Voc\u00ea poderia apenas colocar\u00a0<em>x<\/em> no nome da vari\u00e1vel para criar um gr\u00e1fico dos valores de\u00a0<em>x<\/em>.<\/p>\n<p style=\"text-align: justify;\">Ap\u00f3s pressionar &#8216;Ok&#8217;, o comando usando <em>pylab<\/em> ser\u00e1 carregado no terminal para criar o gr\u00e1fico.<\/p>\n<div style=\"text-align: justify;\"><a href=\"http:\/\/blog.filipesaraiva.info\/wp-content\/uploads\/2014\/09\/python2_graphic_result.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1344\" data-permalink=\"https:\/\/filipe.saraiva.tec.br\/blog\/?attachment_id=1344\" data-orig-file=\"https:\/\/filipe.saraiva.tec.br\/blog\/wp-content\/uploads\/2014\/09\/python2_graphic_result.png\" data-orig-size=\"957,655\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"python2_graphic_result\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/filipe.saraiva.tec.br\/blog\/wp-content\/uploads\/2014\/09\/python2_graphic_result-300x205.png\" data-large-file=\"https:\/\/filipe.saraiva.tec.br\/blog\/wp-content\/uploads\/2014\/09\/python2_graphic_result.png\" class=\"aligncenter  wp-image-1344\" src=\"http:\/\/blog.filipesaraiva.info\/wp-content\/uploads\/2014\/09\/python2_graphic_result.png\" alt=\"python2_graphic_result\" width=\"689\" height=\"471\" srcset=\"https:\/\/filipe.saraiva.tec.br\/blog\/wp-content\/uploads\/2014\/09\/python2_graphic_result.png 957w, https:\/\/filipe.saraiva.tec.br\/blog\/wp-content\/uploads\/2014\/09\/python2_graphic_result-300x205.png 300w\" sizes=\"auto, (max-width: 689px) 100vw, 689px\" \/><\/a>O assistente para gr\u00e1ficos 3D segue um padr\u00e3o similar para criar as figuras.<\/div>\n<p style=\"text-align: justify;\">Como voc\u00ea pode ver, utilizar esses assistentes requer alguns m\u00f3dulos do python carregados na \u00e1rea de trabalho, e eles devem ter os mesmos nomes utilizados nos plugins. Existem diversas formas de carregar m\u00f3dulos no ambiente python (<em>import foo; import foo as [anyname]; from foo import *; <\/em>etc), ent\u00e3o fazer isso de forma gen\u00e9rica \u00e9 praticamente imposs\u00edvel (na verdade eu queria ouvir algumas sugest\u00f5es sobre isso da comunidade).<\/p>\n<p style=\"text-align: justify;\">Minha escolha foi carregar <em>numpy, scipy, matplotlib <\/em>e <em>pylab<\/em> quando o backend para Python 2 \u00e9 carregado pelo Cantor. Bem, eu pretendo mudar isso porque esses m\u00f3dulos passam a ser obrigat\u00f3rios para o backend funcionar corretamente, e tamb\u00e9m porque <em>pylab<\/em> n\u00e3o \u00e9 mais <a href=\"http:\/\/matplotlib.org\/faq\/usage_faq.html#matplotlib-pyplot-and-pylab-how-are-they-related\" target=\"_blank\">recomendado nas vers\u00f5es recentes do matplotlib<\/a>. Ent\u00e3o, eu espero alterar esse plugin o quanto antes.<\/p>\n<p style=\"text-align: justify;\">De qualquer forma, gostaria de escutar as opini\u00f5es da comunidade de usu\u00e1rios de python no ambiente cient\u00edfico sobre essas funcionalidades.<\/p>\n<h2 style=\"text-align: justify;\">Futuro<\/h2>\n<p style=\"text-align: justify;\">No momento estamos trabalhando no port do Cantor para Qt5\/KF5. Voc\u00ea pode acompanhar esse trabalho no branch &#8216;<a href=\"https:\/\/projects.kde.org\/projects\/kde\/kdeedu\/cantor\/repository\/show?rev=frameworks\" target=\"_blank\">frameworks<\/a>&#8216; do reposit\u00f3rio do Cantor.<\/p>\n<h2 style=\"text-align: justify;\">Doa\u00e7\u00f5es<\/h2>\n<p style=\"text-align: justify;\">Se voc\u00ea usa ou aprecia meu trabalho no Cantor, ou em algum outro projeto de software livre, por favor considere fazer uma <a href=\"http:\/\/blog.filipesaraiva.info\/?page_id=1349\" target=\"_blank\">doa\u00e7\u00e3o<\/a> para mim: assim eu poderei continuar me dedicando \u00e0 contribui\u00e7\u00f5es e melhorias nesses projetos.<\/p>\n<p style=\"text-align: justify;\">Voc\u00ea poderia considerar <a href=\"https:\/\/www.kde.org\/community\/donations\/\" target=\"_blank\">uma doa\u00e7\u00e3o para o KDE<\/a> tamb\u00e9m, e ajudar com a manuten\u00e7\u00e3o dessa grande comunidade de software livre e os projetos desenvolvidos por ela.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>O\u00a0KDE 4.14 foi lan\u00e7ado em agosto de 2014, mas at\u00e9 o momento n\u00e3o tive tempo para escrever sobre as novas funcionalidades do Cantor dispon\u00edveis naquele release. Portanto, vamos corrigir isso agora! Novo backend: Lua A fam\u00edlia de backends do Cantor tem um novo membro: Lua, usando a implementa\u00e7\u00e3o luajit. Este backend j\u00e1 disp\u00f5e de v\u00e1rias&hellip;&nbsp;<a href=\"https:\/\/filipe.saraiva.tec.br\/blog\/?p=1381\" class=\"\" rel=\"bookmark\">Continue a ler &raquo;<span class=\"screen-reader-text\">Cantor: novas funcionalidades no KDE 4.14<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[9],"tags":[58,11,26,42,41,105,49,108,80],"class_list":["post-1381","post","type-post","status-publish","format-standard","hentry","category-software-livre","tag-cantor","tag-desenvolvimento","tag-kde","tag-planet-mageia-portugues","tag-planeta-psl-pi","tag-planeta-python-brasil","tag-planetkde-portugues","tag-python","tag-python-backend"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p1p2Jh-mh","jetpack_sharing_enabled":true,"jetpack_likes_enabled":false,"_links":{"self":[{"href":"https:\/\/filipe.saraiva.tec.br\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1381","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/filipe.saraiva.tec.br\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/filipe.saraiva.tec.br\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/filipe.saraiva.tec.br\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/filipe.saraiva.tec.br\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1381"}],"version-history":[{"count":1,"href":"https:\/\/filipe.saraiva.tec.br\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1381\/revisions"}],"predecessor-version":[{"id":1382,"href":"https:\/\/filipe.saraiva.tec.br\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1381\/revisions\/1382"}],"wp:attachment":[{"href":"https:\/\/filipe.saraiva.tec.br\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1381"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/filipe.saraiva.tec.br\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1381"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/filipe.saraiva.tec.br\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1381"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}