D4vidOliveir4 Menu

Softwares e Fotografia

Tipo de Disco Rigido

Disco Rígido é a peça responsável por armazenar os arquivos e dados de um computador e hoje são encontrados em vários protocolos, formatos, velocidades e capacidades de armazenamento.


HDD

São discos rígidos comuns, com um disco magnético girando e uma cabeça de leitura.

Tem dois padrões de tamanho 3,5' e 2,5'. Atualmente são encontrados no padrão SATA em varias velocidades dos discos 5400rpm, 7200rpm etc. Atingem uma velocidade média de 120 MB/s de leitura. Utilizam protocolo SATA.


SSD

São placas de memoria solida, e são encontrados em vários formatos e tamanhos, conectores e protocolos os mais comuns são o SATA (tanto no conector SATA quanto no conector M.2) e os NVMe.

SSD SATA - Podem alcançar velocidades de até 600MB/s de leitura e tem um formato muito parecido com um HDD 2,5' , porem mais leves e finos. São conectados ao computador usando um cabo SATA e um cabo de alimentação conectado a fonte. Utilizam protocolo SATA.

SSD M.2 SATA - São conectados diretamente a placa mãe usando um conector M.2 PCIe, são bem menores e muito semelhantes a uma memoria RAM. Utilizam protocolo SATA e portanto tem a mesma velocidade de um SSD 2,5'.

SSD M.2 NVMe - Muito semelhantes ao M.2 SATA em formato físico, também são conectados diretamente a placa mãe, se diferenciam apenas pela velocidade que começam em 2100 Mb/s nos modelos mais simples e podem passar 6000MB/s em modelos mais caros. Utilizam o protocolo NVMe que é mais eficaz.


06/01/2023

Partial class no C# e a coesão de classes

Uma partial class no C# consiste de uma classe dividida em dois ou mais arquivos. Isso existe para permitir que você separe partes de uma mesma classe, em arquivos separados, por qualquer motivo que você ache conveniente. O que não é possível com classes simples. E para fazer isso basta você criar uma classe usando "public partial class NomeDaClasseParcial(){}".

E agora vem a parte importante disso... Por mais que a classe esteja separada em vários pedaços ela ainda é UMA classe, sendo assim ela só pode ter uma responsabilidade. Se você esta pensando em criar partials pra separar uma classe que tem mais de uma responsabilidade você esta pensando da maneira errada. Se sua classe tem mais de uma responsabilidade você não deve criar uma partial, você deve separar essa responsabilidades em classes próprias. Dessa forma você garante a coesão do seu fonte e ganha vários benefícios de desempenho e manutenção de código. Classes mais claras, mais leves, reutilizáveis, de fácil leitura etc.

E é sempre importante lembrar que a partial foi criada para melhorar a organização do código. Depois que você compila os vários arquivos da partial vão virar um só, e se você criou uma partial pra separar uma classe com várias funções no final você vai acabar sempre "tendo que comprar um carro só pelas rodas" quando for usar essa classe. E tem outro ponto a partial foi feita pra organizar o código, imagina se você separa uma classe sem fazer nenhum planejamento... você vai acabar com vários arquivos que fazem referencias a coisas que estão em outros arquivos, que fazem referencia a outros arquivos, e outros arquivos e outros... isso vai virar um inferno pra dar manutenção.

Mas não vamos achar que partials nunca devem ser usadas, se você tem uma classe coesa e quer separar as funções das propriedades você pode usar uma partial (por mais que algumas pessoas achem isso uma má pratica), você também pode usar uma partial pra separar o que é interface de usuário do que é logica de negocio da sua classe mas acho que a função mais comum hoje em dia é pra estender classes de terceiros sem ter que alterar fontes que já existem ou foram gerados de maneira automática.

Dessa maneira acho que deu pra ficar claro o que é uma partial class e as formas de usar ela. Basta você sempre lembrar que por mais que esteja dividida ela ainda vai ser uma unica classe que sempre deve ter apenas uma função... E vamos ser sincero, usa o bom senso o negocio foi feito pra organizar o código não pra bagunçar ainda mais.

27/10/2022

O que são classes básicas

Voltando ao assunto de acoplamento e coesão, queria falar de algo mais especifico. Algumas dicas pra evitar um sistema altamente acoplado e com baixa coesão. Uma forma simples de fazer seu sistema perder coesão é nas heranças e classes bases.

Agora você pergunta o que é uma classe base... se você se perguntou isso já ta no caminho certo. Uma classe base é uma da qual varias outras classes dependem. No sistema operacional, por exemplo, uma das classes mais básicas é o Kernel do sistema... sem ele nada funciona. E quando você vai desenvolver um sistema é muito importante você saber identificar o que é base e o que é especifico, porque a classe básica é aquela que você só deve mexer quando for realmente necessário. Se você tem uma classe que o sistema inteiro usa e você tem que mudar ela toda a semana algo foi feito errado, muito provável que ela esteja sem coesão.

Uma boa forma de pensar isso numa hierarquia de classes, você vão ter aquelas classes que sustentam o sistema... frameworks, bibliotecas, componentes, coisas que servem para todo mundo usar. Essas classes terão um acoplamento bem alto, varias outras precisarão delas. Acima delas as classes devem ir ficando cada vez mais especificas e quanto mais especificas elas se tornam menos acopladas elas devem ser. Você nunca deve ter uma classe especifica dependendo de outra classe especifica. Vamos pegar um exemplo concreto... um carro.

Vou pegar as classes "Roda", "Chassi", "Motor", "Banco", "Radio","Ar condicionado". "Chassi" é a classe mais básica desse carro, sem essa peça você não monta mais nada no carro, O "Motor" também seria uma classe básica, estando acima do "chassi" porque você precisa dele para montar o "Motor". "Banco", "Radio" e "Ar condicionado" são classes especificas, elas dependem da "Chassi" e "Motor" para funcionarem, mas elas não dependem de outras especificas para funcionar... Imagina se pra usar o "Radio" você tivesse que ligar o "Ar condicionado" ou que pra usar o banco do seu carro você tivesse que ter um "Radio". Não faz o menor sentido, né?! 

E nos sistemas de computador a logica não é muito diferente, existem outras maneiras de ver isso e exceções mas a ideia básica é sempre cada classe deve ter sua responsabilidade, seus atributos e deve ser identificado a importância dela no projeto todo. E o melhor é fazer isso antes de executar o projeto. Cria um organograma das classes, projetar a arquitetura do sistema antes de começar a desenvolver evita o desperdício de tempo e dinheiro com retrabalho ao descobrir que uma classe especifica foi usada como base, ou que as classes receberam atribuições erradas... tudo isso é mais fácil de revolver no papel quando é só um desenho do que num sistema pronto já sendo usado pelo cliente.

E é isso... um projeto bem planejado, com classes coesas e uma arquitetura clara e bem pensada evita muitos problemas e facilita muito a vida de todos os envolvidos. E eu sei que não é fácil fazer todo esse trabalho de planejamento e analise do problema, mas garanto pra vocês que é um trabalho que se paga rapidamente quando você precisar implementar novas funções ou dar manutenção nas que já existem e isso for realmente coisa de poucos minutos e não meses.

06/10/2022

Coesão e Acoplamento

Coesão e acoplamento são conceitos da orientação a objetos bem simples... Coesão diz respeito a responsabilidade das classes, acoplamento ao quantas conexões essa classe tem. Na pratica o objetivo é sempre aumentar a coesão das classes e diminuir o acoplamento!

Vamos deixar mais claro...


Coesão

Uma classe coesa é uma classe que tem apenas uma responsabilidade, isso quer dizer que ela faz apenas o que ela precisa fazer... Uma luz vai apenas iluminar, se ela começa a iluminar, tocar musica, fazer café etc... ela perdeu coesão e começou a cumprir as responsabilidades de outras classes. E a forma mais fácil de manter a coesão das classes é quebra-las em classes menores. Uma lâmpada, um tocador de musica, um fazedor de café etc... e no final você pode criar outra classe e juntar tudo isso.


Acoplamento

Esse é impossível de evitar mas bom minimizar, uma classe muito acoplada é aquela classe que usa tudo que existe no sistema. Ela precisa da calculadora, precisa do bloco de notas, precisa no paint... E sendo sincero você vai ter que ter classes assim no seu sistema, o problema começa quando todas as classes precisam de todas as classes e tudo ta amarrado em tudo. E pra resolver isso são dois passos, analisar a arquitetura do sistema e quebrar as classes em classes mais coesas para que as classes possam ser reaproveitadas e tudo esteja onde deveria estar e a coesão fique apenas nas classes que unificam tudo (como no exemplo da lâmpada que faz tudo ali de cima).


E não esqueçam o objetivo é AUMENTAR a coesão e DIMINUIR o acoplamento... não o contrario. 

28/09/2022

As coisas mudam

Bem, vamos do começo... Essa postagem aqui vai ser bem na pegada de eu mostrar onde tudo começou e onde eu já consegui chegar, contudo, porém, entretanto... vou aproveitar pra falar de alguns temas relacionados. Recentemente decidi realizar outro sonho meu, um plano que tenho desde criança e nunca tive coragem de perseguir. Montei meu próprio PC com as configurações que sempre sonhei, depois falo mais sobre ele, e ainda tenho meu primeiro PC então decidi fazer algumas comparações.

Esse aqui do lado esquerdo é meu primeiro PC, ganhei quando tinha uns 13 anos. Um CCE... sim eu sei da piada do "Comecei Comprando Errado", mas não era meu dinheiro então era o que tinha. Processador Pentium Dual Core, 1GB de RAM, 160GB de HDD e um gravador de DVD. Sendo bem sincero nem sei em que ponto na régua de qualidade essas configurações estavam na época, o importante é que eu fiquei muito feliz em ter um computador e que ele que me serviu muito por um tempo, sinceramente sofreu bastante na minha mão... e funciona até hoje indo contra todas as expectativas. Já esse aqui do lado direito é meu novo PC... AMD Ryzen 7 5600g, 16GB de RAM, 256GB de SSD e 500GB de HDD, GeForce 2060 Super e um gabinete de vidro. Sinceramente uma maquina que montei pra rodar qualquer coisa que me der vontade.

Agora indo pro que interessa, o como as coisas mudaram nesses anos. São quase 15 anos de diferença entre os computadores e uma coisa fica bem clara, teve muita mudança nesse tempo. A primeira delas é que o computador deixou de ser uma curiosidade, mais um eletrônico que as pessoas deixavam no canto e usavam de vez em quando para se tornou uma necessidade nas casas de todo mundo, seja num desktop seja num mobile. Essa presença maior do computador fica bem clara no design deles. Claramente a CCE não estava nem ai para resfriamento, beleza e outras coisas desse tipo... mas por incrível que pareça ela já estava bem a frente do seu tempo colocando luz na frente do gabinete e um horrível mouse com LED. Mas esse era um padrão na época, computador era só uma caixa branca que ficava amarela depois de um tempo ou uma caixa preta sem graça. Mas isso mudou com os anos e hoje a gente tem coisas lindas, os gabinetes saíram de baixo da mesa e ganharam destaque, ventilação, tampas transparentes e todo um design feito pra exibir os componentes cada vez mais potentes... ninguém quer pagar uma nota em peça de computador e deixar escondido.

Outra coisa que melhorou muito foi a manutenção dos computadores, esse gabinete da CCE era um trabalho para mexer. Você não conseguia alcançar nada dentro dele, tudo apertado e pra trocar qualquer peça tinha que tirar varias outras do caminho. Já os de hoje em dia tem amplo espaço interno (parece até que descrevi um carro), as peças são bem posicionadas, passagem de fios organizada para que nada fique no caminho das outras peças. Além de facilitar a manutenção isso melhora a ventilação do gabinete que é outra mudança nos computadores modernos. Processadores mais potentes geram cada vez mais calor, o planejamento de resfriamento teve que mudar. O CCE não tinha uma ventoinha, tirando as do processador e fonte, o novo precisa de cinco ventoinhas... três jogando ar pra dentro e duas tirando o ar quente, tudo isso num gabinete com muito mais aberturas para ar do que se quer era pensado antigamente.

Outra coisa que mudou nesses anos foi onde se compra computadores. Antigamente computador era vendido em tudo que era lugar, você ia no mercado e tinha vários modelos para escolher. Realmente poucos deles tinham qualidade, eram feitos para serem baratos ao invés de durarem e terem potencia. Os computadores potentes mesmo eram encontrados nas poucas lojas especializadas que montavam eles para você. Hoje em dia já não se encontra mais desktop para vender nas grandes lojas de varejo, só notebooks e até esses raramente são vendidos os modelos mais potentes. Computadores desktop, agora, só estão nas (mais raras ainda), lojas especializadas. Eu até entendo porque isso aconteceu, notebooks são mais rentáveis para essas lojas. Eles não tem manutenção e é mais fácil programar a vida útil deles. Já um desktop por outro lado corria o risco de só dar dinheiro para essas lojas uma vez, se ele fica obsoleto você não precisa comprar um novo, basta trocar as peças por outra melhores... já o notebook é mais difícil, uma ou outra peça até vai mas o que realmente importa não da. E também foi vendida a ideia da praticidade, notebooks são menores, você carrega para todo lado, são mais frágeis etc etc...

Mas agora vou desviar um pouco do assunto, para falar de coisas menos tangíveis que mudaram. Sinceramente eu sempre estive meio atrasado nessas coisas, minha internet nunca era a melhor disponível e meus computadores nunca foram o melhor que eu podia ter. E sendo bem sincero não era um problema financeiro, era psicológico... Mesmo eu sendo programador e vivendo de computadores e internet em todas as áreas da minha vida eu sempre achei errado gastar dinheiro com isso. Estranho não?! Em algum momento na minha vida entrou na minha cabeça que realizar meus sonhos era errado, ter computador era um luxo  desnecessário. Então por anos eu vivi com esse sonho e a capacidade de realiza-lo mas sem ter a coragem de realiza-lo... A vozinha na minha cabeça dizia que era um desperdício de dinheiro, coisa de criança e um monte de coisas do tipo. Mais uma vez, engraçado um programador pensar essas coisas, né?! Mas acontece, a mente humana é ótima em aprender coisas que não são boas pra ela, foram anos pra eu reparar nessa vozinha me colocando pra baixo e mais anos pra eu conseguir vencer ela. E o pior é que nesse meio tempo gastei o mesmo valor em coisas mais baratas que não serviam para o que eu precisava mas estavam ali para substituir o que eu realmente queria e precisava.

Mas enfim, muitas coisas tiveram que mudar para eu finalmente conseguir realizar meus sonhos. A tecnologia teve que mudar, a cultura do mundo teve que mudar e principalmente eu tive que mudar. E depois de muitos anos fico feliz de ter chega onde cheguei, demorou bastante mas finalmente cheguei onde em mais uma parte da minha vida.

18/07/2022

Tecnologias que já morreram

Hoje decidi dar uma revirada na caixa de tralhas aqui em casa e desenterrei algumas coisas bem interessantes, um CCE com Intel Pentium Dual Core, um XPeria X10 mini e um Sony Ericsson W200. Por incrível que pareça todos funcionando razoavelmente bem para a idade deles. Mas desenterrar tudo isso me fez ter uma ideia... tecnologias dos anos 2000 que morreram! Então se prepara que ai vem uma lista...

1. Cartão de memoria M2

Não, não estou falando dos SSD M2, mas sim do cartão de memoria que a Sony inventou em 1998. Era bem parecido com o MicroSD que temos hoje e sinceramente só a Sony usou... o MicroSD se tornou muito mais famoso e tomou o mercado. Em 2010 a Sony desistiu dessa ideia e aderiu ao MicroSD também.


2. Infravermelho para transferência de dados

Essa foi moda quando começaram os primeiros celulares com suporte multimidia. Era literalmente um infravermelho, bem parecido com os que tem em controle remoto. Uma desgraça pra usar, você tinha que apontar um celular pro outro e não podia mexer enquanto estivesse transferindo as informações... sinceramente era pra passar raiva, você ficava horas esperando transferir e dava erro na maioria das vezes... graças aos deuses o Bluetooth matou isso.


3. Placa-mães BTX

Ali pelo começo dos anos 2000 a Intel decidiu "revolucionar" o mercado de gabinetes e placas-mães e lançar o padrão BTX. Um engenheiro, gênio por sinal, olhou pra placa ATX e seus problemas de resfriamento e teve a ideia genial de espelhar ela. Sim, os cara só inverteram os conectores de lugar e tentaram vender como a maior revolução. A promessa era melhor resfriamento por permitir colocar a fonte na parte de baixo e um monte de outras coisas que eles alegavam. Esse padrão foi muito falado por um tempo, uns 2 anos ali até a galera reparar que sinceramente, dava pra fazer as mesmas coisas com a ATX de sempre... enfim a ideia não pegou e a Intel desistiu da ideia.


4. CD, DVD e Bluray

Beleza, eu sei que eles não são realmente dos anos 2000 mas vou colocar na lista porque morreram nessa época. Esses também poderiam estar numa lista de coisas pra fazer a gente passar raiva. Pra quem não sabe CD e DVD eram umas bolachas brilhantes que a gente usava pra gravar arquivos, na maioria das vezes musicas e filmes piratas. E era muito bons no que eles faziam até eles riscarem ou começarem a ficar com umas manchas pretas ai você podia jogar no lixo. O engraçado é que eles fazem parte de uma "linhagem" de mídias, teve as fitas K7/VHS, o LaserDisc, os disquetes, os CDs os DVDs os blurays e todos eles morreram com a chegada dos pendrives e streaming... e sinceramente acho que logo mais o streaming mata até os HDs e SSDs. E os blurays ainda tão tentando se manter vivos nos videogames, mas veremos até quando.


5.Cabo Flat

Outra coisa que não é dos anos 2000 mas morreu ali no começo do milênio. Ainda tenho aqui um PC com HD e Leitor de CD que usa Cabo Flat, pros mais novos vou descrever a imagem... pega vários fios coloca eles um do lado do outro em cima da mesa e passa Superbonder. Pronto você fez seu próprio Cabo Flat. Sinceramente era o que tinha na época, uns trambolhos gigantes e super frágeis, se você segura errado eles quebram. Sem contar que eram bem lentos. Hoje em dia eles foram substituídos pelos cabos SATA, mas todo notebook ainda usa Cabo Flat de algum tipo.


6. Gravador de CD/DVD

É redundante colocar na lista? É, mas vale pra ocupar o espaço...morreram, CD e DVD morreram esses tiveram que ir junto. A pouco tempo não se vendia computador sem um desses e tinha de tudo que é tipo, mais lentos, mais rapidos. Que só liam, que liam e gravavam... mas morreram. Hoje você não acha mais um PC que venha com um desses, não tem mais nem o espaço nos gabinetes pra colocar. E junto com eles morreram também os aparelhos de CD e DVD, raridade hoje em dia você achar um radio com CD ou um aparelho pra assistir DVD, mas esses ainda tão na lista que tentam sobreviver nos video games acho que a maioria deles ainda lê CD e DVD, junto com Bluray.


7. TVs de Plasma

Outra febre que durou pouco. Quando lançaram prometia ser a grande revolução, telas gigantes imagens incríveis e varias promessas, a realidade foi telas com imagens "queimadas"... Essas realmente ficaram pouco tempo no mercado até as pessoas verem que as telas LED eram bem melhores, mais resistentes e davam menos problemas e quando queimavam era só um pixel por vez. E vamos concordar, não ia dar pra colocar uma tela de plasma nos celulares e relógios.


8. As muitas bugigangas

Tá... cansei de escrever e a lista não acaba, então, vou fazer uma lista dentro da lista e colocar todas as varias bugigangas que tentaram vender nesses anos e não foram pra frente... Windows Phone, Google Glasses, Tyzen, Google +, Celular com TV, Netbook 2 em 1, teclado laser, hoverboard, Wii U e muitos outros que eu nem lembro.


15/07/2022

Finalmente fibra ótica

Hoje é um dia feliz, coisas boas aconteceram! Eu finalmente consegui uma internet de fibra ótica! Pra dar o contexto da minha situação eu moro num "buraco", internet banda larga só chegou na minha região em 2012... Até então eu usava conexão discada, pras crianças que nunca viveram isso conexão discada usava a linha de telefone e tinha uma velocidade de download de incríveis 36kb/s. A internet banda larga só fui conseguir ter depois de 2015, quando consegui ter dinheiro pra uma linha da antiga GVT(saudades), e tenho essa linha até hoje. E a desgraça ai é que é uma conexão de 15MB e é a única velocidade que a Vivo me oferece aqui.

Durante anos venho tentando uma fibra da Vivo, os cara ainda tinha a cara de pau de me ligar oferecendo o serviço só pra quando eu aceitar eles informarem que não tinha disponível na minha região! E infelizmente a GVT foi comprada pela Vivo então as coisas estavam bem difíceis pra mim, trabalhando de casa com uma rede antiga, de uma empresa que nem existe mais as coisas estavam ficando difíceis. E demoradas, velocidades de 1,5MB/s de download e pra piorar 1MB/s de upload, eu mal conseguia subir uma imagem pra nuvem sem travar a rede inteira... E nada de a Vivo me vender uma fibra...

Mas então apareceu minha salvadora, a VIP Telecom! Uma empresa nova, pequena e que entrou na minha região oferecendo fibra ótica. Confesso que não botei muita fé, empresa pequena as chances de ser B.O. era grande mas decidi arriscar e por enquanto não estou me arrependendo. Contratei o plano pela internet, marcaram a instalação para o dia seguinte, o técnico chegou na minha casa as 8h da manhã e em 15 minutos eu já estava conectado! Eficiência nota 10! O próximo teste é ver a estabilidade do serviço, porque a velocidade entregaram direitinho...

Por enquanto ainda estou com a rede da Vivo ligada, acho que se não pesar muito no orçamento vou continuar com ela. Como eu trabalho com a internet acho interessante ter uma rede de Backup, e pode ser útil quando for fazer alguma live. Já se eu achar que não vale a pena vou cancelar mesmo e ficar só com a nova que é melhor e mais barata. Enfim, estou muito feliz com um sonho realizado e mais feliz ainda com as pequenas empresas que chegam onde as grandes estão ignorando!

17/06/2022