terça-feira, 10 de maio de 2016

Construindo um regulamento à lei do transístor

Valores


 A vida imita o xadrez como dizia Garry Kasparov no título de um livro, da mesma forma que outras frases deveriam ser válidas.
A disciplina é o oposto da anarquia.
A humildade é outro valor.
A perseverança é algo importante tanto para um programador como para um líder.
Veja as páginas 2 e 3 do livro “Programação com classes em C++”, segunda edição actualizada, da editora FCA, do autor Pedro Guerreiro .






https://images.portoeditora.pt/getresourcesservlet/image?EBbDj3QnkSUjgBOkfaUbsOO1PkcorE7ouH4GdCRFtw72Xsr1%2Fcg16nqgJxLv%2FUyO&width=440
Excertos interessantes na forma de pensar dessas páginas
“A disciplina é uma das qualidades fundamentais de um programador, seja em que linguagem for. Um programador indisciplinado, mesmo que genial, é de pouca utilidade para uma equipa de desenvolvimento de software. Ora o C++ é uma linguagem boa para cultivar a disciplina na programação.”
“A linguagem C++, por ser complexa, ensina-nos a ser humildes, a aceitar as nossas limitações, a respeitar os outros, a nunca partir do principio de que programar é fácil. A humildade é outra das qualidades fundamentais de um programador.”
“O C++ é bom para educar a perseverança. A linguagem é difícil e só chegaremos ao fim se formos teimosos, corajosos perseverantes. Caso contrário, ficaremos talvez com umas “luzes”, mas não programaremos verdadeiramente em C++.”
Não posso negar os meus fundamentos base, senão estaria a mentir e isso poria em causa este blog.
Humildade implica ainda ter vontade de aprender e estar sempre aberto a novas experiências.
Se a humildade é um valor tão importante, basta ver como isso justifica a importância de estatutos nas universidades ou definição de cargos em empresas, por que os indivíduos passam a conhecer os seus próprios limites.

SuperHanoi 3.0

Jogo das torres de Hanói renovado com capacidades de resolução eficazes.
Por um propósito!
Esperemos ver um dia destes.

sábado, 7 de maio de 2016

Jogo da cobra

O famoso jogo da cobra, que conheci aos 13 anos num jogo de Tetrix e que tantas horas passei a jogar no telemóvel a preto e branco aos 15/16 anos. A primeira versão que desenvolvi era em Turbo Pascal. No Verão em que andava tirando código de condução (ainda os carros não conduziam sozinhos) traduzi à mão para C, ignorando a existência de tradutores de código. Lol.

Nessa altura era um jogo do caraças e hoje nada vale. Como vêm esta versão só usa caracteres e fiz-o, quando andava no secundário.

O lado melhor: apanha o dinheiro e não batas com a cabeça na parede!












Quem está farto deste jogo para começar recomendo jogos como o Push, que estava no Miniclip e em muitos telemóveis a preto e branco; ou o Sokoban (do mesmo género) do Linux, que para quem não vê bem aconselho a diminuir a resolução do ecrã. São jogos antigos que consistem em empurrar blocos e por-se a pau com certos obstáculos. O facto de não precisarem de inteligência artificial para o jogador humano jogar (precisam só para serem resolvidos pelo computador) torna-os ideais para começar.

O jogo da cobra que fartei-me e já não há paciência como deve perceber.



Foi o meu primeiro jogo a usar enumerações e isso é para mim e há de ser para outras pessoas, um grande avanço em termos de raciocínio lógico.

Ping And Pong

Este foi um trabalho em linguagem C das aulas de programação do 11º ano, ao qual tive uma excelente nota. Foi também uma versão dos primeiros jogos para computadores que corria numa Atari. Nessa altura era a preto e branco e não a cores e se calhar foi escrito em Assembly e não numa linguagem de alto nível como o C. Chamava-se Pong e era tudo obra de Nolan Bushnell.






O objectivo é fazer mover a raquete do lado esquerdo com as setas do teclado de forma a impedir que a bola saia do jogo.
O outro jogador é invencível e o tempo de jogo é infinito. Quanto mais tempo se aguentar, mas pontos obtém.
As pontas vermelhas da raquete simbolizam perigo e são importantes pelo facto de a bola seguir a equação de uma recta e como tudo é caracteres o jogador poder-se focar na parte azul para ser sempre possível controlar a bola. A bola até faz sombra sobre a mesa.
Tem algumas vidas para se aguentar e vários níveis de dificuldade.

sexta-feira, 6 de maio de 2016

Certa desmotivação

Não vou contar grande coisa para não arranjar certo tipo de problemas.

No entanto espero resolver.

Aviso

Posso não estar a colocar constantemente novas versões de jogos ou novos jogos na página.

Um atraso teve a ver com a ocupação nas aulas com muita teoria em muita coisa, ao qual tenho de agradecer ao professor José Valente de Oliveira por ter permitido fazer uma tese sobre o Pacman.

Uma pessoa tem de ganhar a vida.

Posso estar a pensar em como lucrar com os jogos ou relacionados. Só de me lembrar de um curso de C# poder custar 1440 euros, como boa parte desse dinheiro vai para o acesso à melhor documentação dos programas e como ainda se queixam do software livre e Open Source.

Tudo que possa fazer é difícil e já pus muito à borla pela web.

Posso estar a pensar em apresentar coisas a empresas.

Se estou a trabalhar para uma empresa que não faz jogos, então não vou pôr jogos, nem me arrisco a abusar com trabalhos extra para além da empresa, sobre risco de ser punido por isso.

Nem tudo impede uma explosão de novos assuntos no Osi code. Posso pôr links para a malta discutir o programa ou comprá-lo (defendo baixo custo) à empresa.

Apelo a vossa compreensão, podemos concluir que não têm nada que se queixar e há quem seja bem pior do que eu.

quarta-feira, 4 de maio de 2016

Há casos em que a sucessão é efeito

Também há muitos casos em que a sucessão não é efeito e outros em que isso acontece com uma dada probabilidade. Resta saber métodos que comprovem ou rejeitam essa hipótese para uma dada situação.
Os casos em que a sucessão é efeito são inúmeros. O nosso mundo é composto por leis como acontece na física, na química e não só.
Cada ser humano tem a sua capacidade de previsão, que pode ser feita de inúmeras maneiras. Os computadores também têm uma capacidade de previsão, embora elaborada de maneira diferente dos humanos. Algumas delas nos seres humanos são com base numa sequência de acontecimentos sucessivos ao qual fazemos ligações, tal como os conceitos que aprendemos. A capacidade de fazer ligações entre os conceitos é uma forma de inteligência segundo muitos peritos.

A sabedoria popular diz que as ultimas noites do mês de Agosto no Algarve indicam se o Inverno vai ser muito chuvoso ou não. O que quero dizer com isto é que para algo acontecer tem já de haver alguma coisa que acontecesse antes nem que isso seja o seguinte. Sem calor a água não aquece. Se a água não aquece, então não evapora. Se a água não evapora, então não há nuvens. Se não há nuvens, então não chove. Então como deve ser essas tais noites para o inverno ser muito chuvoso no Algarve? Frias e húmidas, mas apesar de não deixar a curiosidade em branco, esta resposta não é a mais importante para a conclusão.

Então que dizer do Cristiano Ronaldo, que só precisa de analisar o chuto para saber para onde a bola vai e não precisa de olhar depois para a bola no ar para saber aonde vai.
Então os computadores? Já que é assim tão notório e verídico, há alguma estratégia AI, que explore este principio?
Há sim senhor!

O ms pacman é um exemplo onde o movimento dos fantasmas também pode ser previsto, embora seja difícil. A sucessão (posições actuais dos fantasmas, posições anteriores dos fantasmas, posição actual do pacman, posições anteriores do pacman) é efeito (próximas posições do fantasma a prever). Há um algoritmo que modela o comportamento em tempo real chamado RLS… Mais? Isso foi possível de concluir na tese “Uma arquitectura de subsunção com capacidades preditivas adaptativas para o Pacman”. O maior problema de tal estratégia para tentar apurar se a sucessão é efeito são as limitações do modelo linear usado (ou modelo ARX como foi referido).
Basta haver uma série de factores que condicionem o movimento do elemento a mover-se para ser possível modelar o seu comportamento ou basta os elementos terem um comportamento pré-definido, mesmo com uma componente aleatória. A componente aleatória vai determinar o erro. Quanto maior a componente aleatória, mais falível o método será. A dimensão do erro depende do jogo e depende da situação.
Outro problema é saber dar valor a quem descobre o que possa estar mal e reconhecer os problemas que isso resolve. Compreendo que possa ser confuso para a maioria das pessoas por ser uma noção difusa. Todas as noções difusas têm um tanto verdadeiro e um tanto falso e a noção de a sucessão ser efeito ou não, não é excepção. O professor doutor José Valente de Oliveira conhecia este método por ser da área de lógica difusa e a sua qualidade pode justificar o seu uso.

MinLine 1.0 for iOS

When complexity show us a simple look.
You found a mathematical game very simple to play. To try is a pleasure.
You will develop and agilize your mind. Swap the numbers of lines in order to simplify patterns.
The goal is to diminish the number of vertical, or horizontal lines which split the groups with different images. If you swap the line, then you will swap the respective column.
You can choose several factors of complexity such as the number of different images, the number of lines, or the number of level or all can be chosen randomly. You have at all around some hundreds of levels, always different.
Enjoy it!


Você encontrou um jogo matemático muito simples de usar. Experimente e vai gostar.
Acaba por ser mais um puzzle para agilizar e desenvolver a sua mente. Troque os números das linhas de forma a simplificar padrões. Se trocar uma linha, então trocará a respectiva coluna.
O objetivo é diminuir o número de linhas horizontais ou verticais que separam imagens diferentes umas das outras. Se as imagens forem iguais, então não há necessidade de separá-las com uma linha. A mesma linha serve para o puzzle inteiro.
Pode optar por vários fatores de complexidade como número de imagens diferentes, quantidade de linhas ou o número do nível ou pode escolher tudo de forma aleatória. Tem cerca de centenas de níveis, sempre diferentes.
Divirta-se!

Idéias para uma DeathStar












Será que numa civilização do tipo I, uma vez controlando o planeta onde habitam, ele se torna numa DeathStar?
Poderia ser a maneira mais fácil de o conseguir, juntamente com muito conhecimento, engenharia e infra-estruturas criadas.
Os maiores obstáculos seriam estabilidade planetária (sem conflitos internos,…), abundância de materiais para o desenvolvimento tecnológico e mentalidades.
Parece-me (outras pessoas não sei) impossível fazer do planeta Terra uma DeathStar, portanto para o conseguir teremos de mandar pessoas selecionadas para Marte ou até mesmo para fora do sistema solar.

A verdadeira espiritualidade

Espiritualidade é lidar com intuição. A intuição é algo que faz parte do lado direito do cérebro humano e serve para resolver problemas. Só isso e mais nada.
Normalmente este conceito está associado a muitas asneiras e eu não sou ninguém para julgar quaisquer Deuses.
Sou um ser materialista e gosto de uma boa interface e de um bom manual que sejam intuitivos.

VillasDB

Não revelo mais detalhes por este meio.
Encontra-se feita e acabada.

O engraçado

Não estou a gozar com ninguém, pelo mesmo motivo que os Chat Bots fazem-nos rir.
Mesmo que a sociedade seja negativa com tais atitudes, algo que tenho a dizer em minha defesa é por ser um tema típico de pensadores para pensar.
Não falta por aí pessoas a queixarem-se de forma directa ou indirecta, que não tiveram ou não têm noção das consequências e passam a vida a lamentarem-se disso. Há um pormenor muito bom neste tipo de circunstâncias: ao dizerem isso estão a aceitar as suas próprias limitações, mesmo não o sendo frequente de todo.
Com base nisso há outros problemas. Peguemos na lógica inconfundível e inquestionável por detrás das anedotas sobre génios que realizam desejos. Com base nisso e para começar, só para não ser muita coisa, formulamos a seguinte pergunta: o que é para si a definição de ideal?




Vai encontrar esta e muito mais…
Outro problema é que há pessoas que são mesmo ruins.

Alguns puzzles com que passei horas e horas a jogar

Estes puzzles são bons desafios para usar inteligência articial ou para resolver sem ajuda do computador.
klotski, um puzzle poláco com que passei horas a resolver, jogando efernizadamente com o rato. Lembro de usar uma versão para Windows e outra para Linux.


O Tetravex ficou muito melhor com as cores aplicadas a cada triângulo do quadrado. Não deixa de ser apelativo.


Sudoku, um problema NP-completo!


Tetris cujo o melhor jogador possivel, torna-se um problema NP-completo!


E estes excelentes jogos são os puzzles que mais me vêm à cabeça. Experimente!

Armamento incremental no mundo da informática

Nada melhor que uma equipa bem treinada com alguma frequência no mundo de desenvolvimento de software. A área de engenharia de software também tem o seu papel no mundo de desenvolvimento de software.
As actualizações de software são importantes. Recomendo o uso de firewalls. Deve-se ter cuidado com o que se descarrega e por onde se navega, bem como usar um bom browser como o Mozilla.
Código de segurança e código de ataque, até quando deixarão de crescer?
Eis alguns assuntos mais fáceis de explicar.

Técnicas de intrusão
1. keyloggers
2. sniffing
3. path transversal
4. SQL injection
5. Scanner
6. WEP cracker
7. Password cracker em geral
8. DNS Cache poison
9. Sites clonados

Respectivas técnicas de defesa
1. teclado virtual
2. Encriptação
3. implementação de mecanismos de autenticação em todos os ficheiros da página web
4. Escaping input (há outros mecanismos também)
5. Detectores de intrusão como o Snort, que também é um sniffer
6. Mudar para WPA2
7. Password forte
8. Pode limpar a cache dos ficheiros de DNS do browser e o ficheiro de DNS do sistema operativo tem de estar protegido contra escrita
9. Certified authority e verificar endereço no browser. O tópico anterior é importante.

O melhor é nunca deixar infectar o seu computador. Se tiver infectado temos 2 hipóteses para Windows e Linux. Uma vez tendo o computador doméstico infectado para remover malware no Windows, então nada melhor que o ComboFix. Uma vez tendo o computador doméstico infectado para remover malware no Linux, então nada melhor que o Trinity Rescue Kit.

Algumas boas práticas de segurança

Todas elas têm um contexto e servem de tópicos de pesquisa.
-Split DNS.
-Uso de VPNs como por exemplo Intranet ou VLANs.
-Definição de grupos de utilizadores e as suas respectivas permissões.
-Uso de standards de segurança como o ISO 27001 ou melhores ainda.

Resolvendo um equívoco das base de dados


Será um algoritmo de inteligência artificial algo assim tão fora do comum ou não adequado aos nossos problemas do dia-a-dia como é o caso das base de dados?
Existem várias questões e respostas para abordar acerca do assunto. Vamos então à principal e veremos diferenças existentes entre vários contextos para ver até que ponto há ou não problema com o assunto.
Que tem um algoritmo de inteligência artificial que os outros não têm?
Ambos são feitos de instruções da mesma natureza (programas de máquina de Turing e podem correr num processador RISC ou noutra linguagem). O único problema é o tipo de problemas que abordam e o grau de controlo sobre eles.
Qual a maior vantagem em fazer previsões?
Embora nem sempre seja possível fazer previsões ou prever as coisas da maneira que queremos, o facto é que previsões existem e baseamo-nos nelas para construir o nosso raciocínio. Um exemplo de previsões pode ser a meteorologia que orienta os negócios de pescadores, agricultores e tantos outros possíveis. Existe algoritmos de inteligência artificial nesse sentido, mas com outros dados como alvo de estudo.
Então se o problema é mandarem em nós?
Qualquer informação que recebemos acaba por orientar tanto a nós como aos computadores. Nós seres humanos precisamos de informações precisas e devidamente justificadas para poder tomar decisões acertadas tal como os computadores. Os computadores têm a obrigação de nos informarem devidamente por mais complexos que sejam os cálculos por detrás do software e voltamos à mesma questão de instruções da mesma natureza tanto de um tipo de algoritmos ou como de outro.
Então se o problema é substituírem-nos?
Haverá sempre orientação humana, ou readaptação para sermos mais produtivos numa empresa. Isso é o que acontece com qualquer ferramenta.
Que fundamento têm antes de poderem ser usados nas base de dados?
Depois da criação da teoria por detrás, eles devem ser testados em jogos por serem ambientes sob-controlo, com regras bem conhecidas e com objetivos coerentes. O mundo real acaba por ser mais complicado, mas não impossível.
Agora não perca a sua oportunidade, porque se não é você que quer, haverá outro no seu lugar a aproveitar a ocasião. Existe exemplos na Web (da medicina às engenharias) para o ajudar a convencer, bem como técnicos de informática devidamente especializados para o assunto.

Alguns exemplos de aplicação de A.I.:

http://archive.ics.uci.edu/ml/datasets/Heart+Disease (visitado a 05/04/2016)
http://www.ebah.pt/content/ABAAAABasAL/trabalho-redes-neurais (visitado a 05/04/2016)