{"id":320,"date":"2011-06-03T17:47:10","date_gmt":"2011-06-03T17:47:10","guid":{"rendered":"http:\/\/blog.filipesaraiva.info\/?p=320"},"modified":"2011-06-03T17:47:10","modified_gmt":"2011-06-03T17:47:10","slug":"scilab-diz-hello-cantor","status":"publish","type":"post","link":"https:\/\/filipe.saraiva.tec.br\/blog\/?p=320","title":{"rendered":"Scilab diz: &#8220;Hello Cantor!&#8221;"},"content":{"rendered":"<p>&#8230;e tamb\u00e9m faz c\u00e1lculos!<\/p>\n<p style=\"text-align: justify;\">Nestas \u00faltimas semanas, trabalhei basicamente com a comunica\u00e7\u00e3o entre o Cantor e o Scilab, via o backend que estou desenvolvendo. A tarefa foi bem interessante pois houve mudan\u00e7as no projeto, na tecnologia escolhida para a implementa\u00e7\u00e3o.<\/p>\n<p style=\"text-align: justify;\">Antes <a href=\"http:\/\/blog.filipesaraiva.info\/?p=239\" target=\"_blank\">eu havia proposto<\/a> o uso da <a href=\"http:\/\/help.scilab.org\/docs\/5.3.2\/en_US\/call_scilab.html\" target=\"_blank\">API call_scilab<\/a>, que faz a comunica\u00e7\u00e3o entre c\u00f3digo C\/C++ com o Scilab. Mas, estudando o c\u00f3digo do Cantor, percebi que os demais backends utilizam a classe <a href=\"http:\/\/api.kde.org\/4.x-api\/kdelibs-apidocs\/kdecore\/html\/classKProcess.html\" target=\"_blank\">KProcess<\/a> (ou <a href=\"http:\/\/doc.qt.nokia.com\/latest\/qprocess.html\" target=\"_blank\">QProcess<\/a>), que permite que c\u00f3digo em Qt inicialize uma <em>thread<\/em> de outro software e fa\u00e7a a comunica\u00e7\u00e3o com ele via os <a href=\"http:\/\/en.wikipedia.org\/wiki\/Standard_streams\" target=\"_blank\"><em>streams<\/em> padr\u00f5es<\/a> stdout, stderr e stdin.<\/p>\n<p style=\"text-align: justify;\">Entretanto, o Scilab originalmente n\u00e3o usava esses <em>streams<\/em>. Ent\u00e3o, conversando com meu mentor Ledru, resolvemos implementar essa funcionalidade.<\/p>\n<p style=\"text-align: justify;\">Ap\u00f3s alguns dias e mais estudos, consegui prover o suporte a estas sa\u00eddas no Scilab! E, <em>voil\u00e1<\/em>, Scilab diz &#8220;Hello Cantor!&#8221; via backend! Clique nas imagens para ampliar:<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"http:\/\/blog.filipesaraiva.info\/wp-content\/uploads\/2011\/06\/CommunicationCantorScilabHelloCantor.png\" alt=\"\" width=\"640\" height=\"400\" \/><\/p>\n<p style=\"text-align: justify;\">O backend est\u00e1 de fato funcional, apesar de, claro, faltarem alguns detalhes. Agora teremos muitas screenshots. \ud83d\ude42<\/p>\n<p style=\"text-align: justify;\">Backend do Cantor para o Scilab faz c\u00e1lculos:<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"http:\/\/blog.filipesaraiva.info\/wp-content\/uploads\/2011\/06\/CommunicationCantorScilabCalculus.png\" alt=\"\" width=\"640\" height=\"400\" \/><\/p>\n<p style=\"text-align: justify;\">Adiciona vari\u00e1veis, usa fun\u00e7\u00f5es pr\u00e9-definidas e permite v\u00e1rios c\u00e1lculos em um mesmo <em>workspace<\/em>:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone aligncenter\" src=\"http:\/\/blog.filipesaraiva.info\/wp-content\/uploads\/2011\/06\/CommunicationCantorScilabVeryCalculus.png\" alt=\"\" width=\"640\" height=\"400\" \/><\/p>\n<p>Trabalha com v\u00e1rios workspaces simultaneamente:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/blog.filipesaraiva.info\/wp-content\/uploads\/2011\/06\/CommunicationCantorScilab.png\" alt=\"\" width=\"640\" height=\"400\" \/><\/p>\n<p>Emite as mensagens de erro no <em>workspace<\/em>:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/blog.filipesaraiva.info\/wp-content\/uploads\/2011\/06\/CommunicationCantorScilabError.png\" alt=\"\" width=\"640\" height=\"400\" \/><\/p>\n<p>\u00c9 isso! Bem, vamos agora a um resum\u00e3o com informa\u00e7\u00f5es r\u00e1pidas sobre este projeto:<\/p>\n<p><strong>O que falta?<\/strong><\/p>\n<ul>\n<li style=\"text-align: justify;\">Gerenciamento de cria\u00e7\u00e3o de gr\u00e1ficos. Atualmente, o backend gera o gr\u00e1fico do Scilab em outra janela. Ser\u00e1 adicionada a possibilidade de gera\u00e7\u00e3o do gr\u00e1fico dentro do workspace do Cantor;<\/li>\n<li>Destaque de sintaxe;<\/li>\n<li>Alto-complete de fun\u00e7\u00f5es nativas do Scilab;<\/li>\n<li>Trabalhar a codifica\u00e7\u00e3o dos caracteres da sa\u00edda;<\/li>\n<li style=\"text-align: justify;\">Gerenciar sa\u00eddas grandes. Quando Scilab faz um c\u00e1lculo e vai imprimir muitas informa\u00e7\u00f5es na tela, o ambiente mostra apenas uma parte da sa\u00edda e pergunta se o usu\u00e1rio quer ver mais. No backend isto n\u00e3o funciona, pois quando a primeira parte da sa\u00edda \u00e9 mostrada, n\u00e3o h\u00e1 mais como enviar outra entrada para o Scilab. Veja abaixo, na imagem:<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/blog.filipesaraiva.info\/wp-content\/uploads\/2011\/06\/CommunicationCantorScilabMoreExits.png\" alt=\"\" width=\"640\" height=\"400\" \/><\/p>\n<p><strong>\u00c9 poss\u00edvel testar este backend?<\/strong><\/p>\n<p style=\"text-align: justify;\">O c\u00f3digo do backend que est\u00e1 no <a href=\"https:\/\/projects.kde.org\/projects\/kde\/kdeedu\/cantor\/repository\/show?rev=scilab-backend\" target=\"_blank\"><em>branch<\/em> scilab-backend<\/a> do reposit\u00f3rio do Cantor realiza todas as fun\u00e7\u00f5es aqui descritas. Entretanto, ela precisa da nova vers\u00e3o do Scilab para funcionar, pois tive que implementar o suporte aos <em>streams<\/em> padr\u00f5es &#8211; ou seja, \u00e9 necess\u00e1rio baixar o c\u00f3digo do Scilab e compil\u00e1-lo. Em outro momento, irei escrever um post com algumas dicas sobre a compila\u00e7\u00e3o do Scilab.<\/p>\n<p style=\"text-align: justify;\">Para quem n\u00e3o quer se aventurar no processo de compila\u00e7\u00e3o do Scilab, o jeito \u00e9 esperar a pr\u00f3xima vers\u00e3o do Scilab que deve ser lan\u00e7ada em setembro. Apenas a partir dela \u00e9 que o backend para Scilab no Cantor funcionar\u00e1.<\/p>\n<p style=\"text-align: justify;\">Ent\u00e3o \u00e9 isso amigos, obrigados a aqueles que leram o texto at\u00e9 aqui e fiquem atentos para maiores novidades. E n\u00e3o deixe de fazer um coment\u00e1rio aqui sobre o que voc\u00ea est\u00e1 achando desse projeto. \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8230;e tamb\u00e9m faz c\u00e1lculos! Nestas \u00faltimas semanas, trabalhei basicamente com a comunica\u00e7\u00e3o entre o Cantor e o Scilab, via o backend que estou desenvolvendo. A tarefa foi bem interessante pois houve mudan\u00e7as no projeto, na tecnologia escolhida para a implementa\u00e7\u00e3o. Antes eu havia proposto o uso da API call_scilab, que faz a comunica\u00e7\u00e3o entre c\u00f3digo&hellip;&nbsp;<a href=\"https:\/\/filipe.saraiva.tec.br\/blog\/?p=320\" class=\"\" rel=\"bookmark\">Continue a ler &raquo;<span class=\"screen-reader-text\">Scilab diz: &#8220;Hello Cantor!&#8221;<\/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":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[9],"tags":[58,11,47,59,26,42,41,49,55],"class_list":["post-320","post","type-post","status-publish","format-standard","hentry","category-software-livre","tag-cantor","tag-desenvolvimento","tag-gsoc","tag-gsoc2011-scilab-backend","tag-kde","tag-planet-mageia-portugues","tag-planeta-psl-pi","tag-planetkde-portugues","tag-scilab"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p1p2Jh-5a","jetpack_sharing_enabled":true,"jetpack_likes_enabled":false,"_links":{"self":[{"href":"https:\/\/filipe.saraiva.tec.br\/blog\/index.php?rest_route=\/wp\/v2\/posts\/320","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=320"}],"version-history":[{"count":2,"href":"https:\/\/filipe.saraiva.tec.br\/blog\/index.php?rest_route=\/wp\/v2\/posts\/320\/revisions"}],"predecessor-version":[{"id":322,"href":"https:\/\/filipe.saraiva.tec.br\/blog\/index.php?rest_route=\/wp\/v2\/posts\/320\/revisions\/322"}],"wp:attachment":[{"href":"https:\/\/filipe.saraiva.tec.br\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=320"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/filipe.saraiva.tec.br\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=320"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/filipe.saraiva.tec.br\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=320"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}