ufrgs-hyman / meican Goto Github PK
View Code? Open in Web Editor NEWWeb application for the management of Dynamic Circuits Networks (DCNs)
License: Other
Web application for the management of Dynamic Circuits Networks (DCNs)
License: Other
One of the OSCARS developers had a chance to briefly look over it and
mentioned a few possible issues:
Due to issue #36.
MEICAN is not returning correctly the acks to NSI Providers:
2016-06-29 14:35:26,586 DEBUG application play-akka.actor.default-dispatcher-4398 - Parsing SOAP ack (200) from urn:ogf:network:cipo.ufrgs.br:2014:nsa:meican2 at http://meican.cipo.rnp.br/circuits/requester: <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://schemas.ogf.org/nsi/2013/12/framework/headers" xmlns:ns2="http://schemas.ogf.org/nsi/2013/12/connection/types"><SOAP-ENV:Header><ns1:nsiHeader></ns1:nsiHeader></SOAP-ENV:Header><SOAP-ENV:Body><ns2:acknowledgment/></SOAP-ENV:Body></SOAP-ENV:Envelope> 2016-06-29 14:35:26,588 WARN application play-akka.actor.default-dispatcher-4398 - Communication error with provider urn:ogf:network:cipo.ufrgs.br:2014:nsa:meican2 at http://meican.cipo.rnp.br/circuits/requester: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 256; cvc-complex-type.2.4.b: The content of element 'ns1:nsiHeader' is not complete. One of '{protocolVersion}' is expected. - org.xml.sax.SAXParseException: cvc-complex-type.2.4.b: The content of element 'ns1:nsiHeader' is not complete. One of '{protocolVersion}' is expected.
Solução: usar internacionalização também nos javascript.
Inclusão de funcionalidade para troca de URNs entre usuários MEICAN – Permitirá que usuários MEICAN possam indicar pontos finais através de URNs diretamente, acelerando o acesso aos pontos finais (end-points).
Integração com um sistema de acompanhamento de erros (bugs) – Implantar um sistema de bugtracking e integrar o mesmo na funcionalidade de feedback da ferramenta MEICAN.
The administrator can create an account without a password. Consequently, in the moment the user tries to log in, it is prevented because the password field cannot be empty.
Se por algum motivo os webservices (Oscars, OscarsBridge, ODE, ...) falharem (ou estiverem indisponíveis), o Meican não responderá adequadamente. Sendo que o usuário obterá erros estranhos e não conseguirá identificar o motivo do erro.
Solução:
Auxilio num estudo sobre alta disponibilidade do OSCARS – Resultará no design de uma solução que permitirá ter uma rede DCN estável e resiliente.
Due to issue #36 the ports manager is broken.
Toda vez que uma mudança é feita no sistema, novos testes são feitos. Porém esses testes não estão especificados e documentados em nenhum lugar.
Além disso, os testes poderiam ser automatizados.
Solução:
Especificar testes para o sistema. Testes que busquem encontrar problemas (mostrar que não funciona).
Estudar e usar teste automatizado, a melhor ferramenta para PHP é o PHP Unit
Incorporação de um assistente para determinação de pontos finais – Permitirá que usuários possam determinar mais rapidamente quais pontos finais são mais adequados de acordo com suas localizações geográficas.
When the administrator tries to change the password of any user an error occurs and the new password is not saved
Sempre que uma modificação é feita no banco de dados, toda a equipe de desenvolvimento e o servidor em produção precisa atualizar manualmente o seu banco de dados.
Solução: implementar scripts para automatizar o processo. Pode-se olhar o recurso de migrations do Ruby on Rails.
Better user management scalability, through the ability of a domain administrator
to add new users to that given domain, or to add/remove permission to it's
domain to existing users.
WireIt and your main dependency Yahoo UI are deprecated.
http://yahooeng.tumblr.com/post/96098168666/important-announcement-regarding-yui).
MEICAN inherited the STP interpretation from OSCARS where the URN of an
STP encodes the domain/network, device and port. This logic is not applicable to
the NSI URN representation, which is only officially compose of two informations
only: network-id and local-id.
Both CESNET and GEANT domains are using OpenNSA (https://github.com/NORDUnet/opennsa) as uPa and Aggregator and are willing to use MEICAN on top of it.
When the new password was entered (even before entering the confirmation password) an information was displayed saying: the passwords do not match
No controller, os campos enviados para salvar, são lidos diretamente usando Common::POST. Desse modo é necessário ler cada campo do sendo enviado. Geralmente os frameworks parseiam o POST e colocam os dados num array automaticamente, esse array é passado diretamente para o modelo para salvar. Isso evita várias linhas de código e erros de digitação, além de deixar o código mais simples e reusável.
É possível acessar indevidamente arquivos php. Por exemplo: http://meican.cipo.rnp.br/libs/nuSOAP/samples/index.html
Suporte a caminhos alternativos – Permitirá que o usuário possa especificar dispositivos específicos por onde um circuito dinâmico deverá passar.
Desempenho. Muitas vezes ao invés de fazer uma query grande (com vários joins), são feitas várias consultas separadas. Isso traz sérios problemas de desempenho e escalabilidade.
Por exemplo, ao salvar uma rede é enviado um POST para a action networks/add após salvo é mostrado a lista das redes, como na action networks/show. Porém a URL continua em networks/add. Isso acontece pois ao invés de redirecionar (por header) dentro da action (add) é chamada outra action (show) que não condiz com a action original.
Solução: trocar todas os "redirects" e implementar em javascript um mecanismo que detecte os redirects ao carregar o pjax.
Aprimoramento da interface gráfica do sistema – Finalizar o design e implantação de uma versão aprimorada da interface gráfica do sistema MEICAN.
An error occurs when trying to access "I forgot my password" page in the login page. The error has the following description:
Error processing your request. Sorry. :(
A error occurred while the Web server was processing your request.This error has been registered. Please use the feedback option in the top menu if you want to report more informations. Thank you.
Administrator
Caros,
Observei que fica muito difícil saber qual a razão para uma reserva falhar. Seria importante ter uma funcionalidade de Logging e que isso fosse mostrado na interface para o usuário final.
Sds,
Fausto
Faltam as telas de criar conta, esqueceu a senha e suporte/sobre. O usuário final fica com uma sensação de sistema incompleto.
Quando uma página do Meican é requisita, geralmente há chamada de algum webservice na mesma requisição. O problema são com webservices que fazem modificações (por ex. criar reserva no OSCARS) em que o usuário precisa esperar muito tempo para o carregamento da página (alta latência).
Solução: Fazer chamada assíncrona: (por ex.) reserva é enviada ao Meican, Meican salva no banco de dados e retorna para o usuário. Enquanto isso, um daemon verifica que uma nova reserva foi inserida no banco, envia para o OSCARS e atualiza a situação da reserva no banco.
Solução: Implementar diretamente a chamada dos webservices no PHP usando WSO2 WSF/PHP.
Caros,
Observei que a lista de reservas históricas aparece em uma lista contínua. Seria bom realizar paginação. Esse seria o principal caso, mas vale para as outras tabelas também.
Sds,
Fausto
Due to issue #36 the viewer is broken.
O ACL é uma implementação realmente complexa. É conectado a várias classes do sistema. O que torna uma parte crítica. Até hoje surgem bugs no ACL. Não há testes automáticos, então sempre que se mexe em algo no ACL, bugs novos podem surgir, que talvez demorem para serem detectados.
Outro grande problema é a atualização da arvore do ACL. Sempre que um registro é inserido no banco, a árvore precisa ser atualizada. Isso gera um absurdo de mais de 1000 queries SQL!!
Os javascripts foram desenvolvidos de maneira puramente procedural, basicamente declarando funções e variáveis globais. O problema é com vários nomes (de variáveis e funções) no mesmo escopo (global) podem ocorrer nomes iguais e trazer bugs para o sistema, além de ser um prática não muito boa de engenharia de software.
Solução: usar design paterns de javascripts. Um artigo com algumas idéias foi enviado em 31 de março de 2012. https://javascriptweblog.wordpress.com/2010/12/07/namespacing-in-javascript/
Ao fazer um fetch de um modelo qualquer, o resultado será um array de instâncias do modelo. O problema é que para cada item (row) encontrado na tabela, um objeto deverá ser instânciado, gerando overhead. Além disso, há informação redundante, já que cada instância carrega os atributos da tabela. Como o sistema já faz muitas queries, isso pode eventualmente gerar um overflow da memória.
Solução:
Remover os atributos do construtor dos modelos.
Ao invés de o resultado do fetch ser um array de objetos, pode ser um array de array (com os campos e valores do fetch).
Várias views usam extensamente tabelas onde não é necessário. Por exemplo as telas de cadastro usam tabelas para colocar os labels a direita e inputs a esquerda.
Solução: reescrever todas as telas de cadastro (pricipalmente das apps topology e aaa). Verificar onde são usadas tabelas, que deveriam ser apenas para listagens.
In DCN and NSI community, the rules for usage control of network resources are generally referenced by AUP or Acceptable Usage Policies.
My suggestion is change the menu name from Workflows to Policies.
Aparentemente o sistema prevê que usuários possam configurar a formatação de datas de acordo com sua localidade. Há pelo menos 20 chamadas do tipo DateTime::format em que é definido um formato de data em cada uma delas.
Solução: Criar uma classe estática com as formatações de date, time, datetime, float, currency, .... em dois sentidos, formatar do banco para a tela, e da tela para o banco. Deve ser usado o formato baseado na configuração salva na sessão (conforme opção do usuário). Para formatar para a tela procurar chamar essa classe na view.
Todas as telas deveriam ser paginadas. Apresentando um limite de 20 (por exemplo) itens e permitindo que o usuário troque de página. O problema é que o framework do Meican não é flexível para isso: não é fácil passar mais parametros para o controller, não há uma maneira fácil de enviar esses parametros para os modelos (de maneira genérica) para que as queries sejam geradas com instruções LIMIT e OFFSET.
Solução: implementar um mecanismo de paginação genérico para todas as telas. Preferivelmente reusar de algum framework (Rails, Yii, CakePHP, ...).
Node labels are buggy in Viewer
SURFnet implements authentication using Oauth2, but meican currently doesn't provide a way to input the authentication token.
The Authentication and Authorization in NSI procotol is documented in the following file: draft-gwdi-trompert-nsi_aa-public-comment-v7.pdf Section 7.2.1
The foreign key for user domain roles is in delete cascade mode. The cascade removes permissions from current users incorrectly.
Exemplos:
Telas de cadastro (domínios, redes, dispositivos, ...) tem muitos campos que podem parecer confusos para o usuário. Além disso, falta os validar campos. Por exemplo, campo Endereço IP e Número de portas podem ser preenchidos com texto, e que ao clicar em salvar geram um erro de SQL, que é pouco intuitivo para o usuário.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.