Bom dia,
Este é meu primeiro programa editado e disponibilizado em C#. É algo bem simples, na verdade é um tipo de calculadora para converter áreas com medidas em metros para hectares, alqueires ou alqueirões. Foi feito pensando no agronegócio.
Se muitas delongas segue o link para que quiser baixar aqui.
sábado, 10 de novembro de 2018
terça-feira, 4 de setembro de 2018
Desenvolvimento Seguro de Software se tornará em breve pauta n° 1 no mercado de TI
Alcyon Junior em 03/09/2018 no site Profissionais TI
Em 2017 ocorreram diversas ações de grupos de hackers que impactaram o cenário das grandes empresas diretamente. O melhor exemplo disso foi o famoso Ransomware Wannacry, que atingiu mais de 230.000 sistemas corporativos deixando o negócio dessas empresas totalmente paralisados.
Os dados são um dos ativos mais valiosos que uma empresa tem a sua disposição, abrangendo desde transações financeiras até detalhes importantes de clientes e clientes em potencial.
Com a LGDP – Lei de Proteção de Dados Pessoais – prestes a entrar em vigor no Brasil, é vital para as empresas começarem a reavaliar seus sistemas “pra ontem”. As empresas precisam planejar como minimizar os riscos, manter os dados seguros e implementar os processos de Desenvolvimento Seguro de Software caso precisem lidar com qualquer uma das ameaças à segurança de dados.
Observando esse cenário, as empresas estão cada vez mais contratando profissionais que tenham conhecimento em segurança da informação. Esse perfil não é exatamente a de um profissional de segurança da informação efetivo, mas sim a de um profissional de TI especialista em segurança da informação dentro da sua área.
Dentre as diversas áreas da tecnologia da informação, a área que está com a maior lacuna é a de profissionais de desenvolvimento com especialidade em desenvolvimento seguro de software. Essa lacuna, está fazendo com que esta temática eleve seu grau de importância cada vez mais e, até o final de 2019, será o profissional mais requisitado do mercado.
Agora que você entendeu que esse é um tópico de fundamental importância com muitos aspectos a serem considerados, inicialmente pode ser confuso saber por onde começar, então, aqui vão 4 dicas vitais para você que deseja ser um profissional qualificado na área de desenvolvimento seguro de software.
1. Analise o código-fonte linha a linha – Testes Unitários
A próxima metodologia de que falaremos é o teste unitário. Dependendo da sua experiência, você pode ou não ter ouvido algo sobre testes de unidade, desenvolvimento orientado a testes ou algum outro tipo de metodologia de teste. Normalmente, essas metodologias são aplicadas no contexto de grandes sistemas de software e, às vezes, no contexto de sites simples.
Na programação de computadores, o teste de unidade é um processo de desenvolvimento de software no qual a menor parte testável de um código-fonte, denominada unidade, é testada individualmente e de forma independente para examinar se estão funcionando conforme o esperado. Isso ajuda você a identificar falhas nos algoritmos e / ou lógica antes que o código seja liberado.
Um dos benefícios que você adquire ao criar testes de unidade é que sua equipe estará motivada a escrever código testável. Como o teste de unidade requer a estrutura apropriada do seu código, isso significa que o código deve ser dividido em funções menores e mais focadas. Cada um dos quais é responsável por uma única operação em um conjunto de dados, em vez de em grandes funções que executam várias operações diferentes.
2. Integração contínua
A Integração Contínua (CI) é uma prática de desenvolvimento que exige que os desenvolvedores integrem o código em um repositório compartilhado várias vezes ao dia (SVN, Subversion ou Git). Cada check-in é verificado pelos testes automatizados. Embora os testes automatizados não sejam estritamente parte do IC, eles geralmente são previstos. Essa abordagem permite que os desenvolvedores detectem problemas mais cedo e, como resultado, os resolvam mais rapidamente.
Esta é uma prática valiosa por si só. Você deve se concentrar em configurar um processo simples de Integração Contínua o mais cedo possível. Existem muitas ferramentas que podem ajudá-lo a configurar esse processo e as mais conhecidas são Jenkins , Bamboo e Teamcity . Eles permitem que você automatize sua implantação de software e permita que você se concentre na criação de seu produto.
3. Sessão de demonstração
A reunião de revisão de demonstração geralmente ocorre perto do final do Sprint. O objetivo desta reunião é mostrar os outros membros da equipe, clientes e partes interessadas que os resultados da equipe de trabalho realizaram durante a Sprint.
Pode não ser imediatamente visível por que isso leva a um código melhor, mas o fará. Ao mostrar regularmente o código-fonte, os desenvolvedores precisam mantê-lo próximo ao estado de lançamento. Com reuniões de demonstração regularmente, você terá um processo bem organizado de receber feedbacks. E isso lhe dará uma melhor compreensão do que foi feito corretamente e indicará quando algo foi na direção errada.
Agora, vamos seguir em frente e verificar quais são algumas ferramentas de qualidade de código recomendadas para aperfeiçoar o processo. Você deve realizar avaliações de risco regulares para identificar quaisquer perigos potenciais para os dados da sua organização. Isso deve analisar todas as ameaças que você pode identificar, desde uma violação de dados on-line até ameaças mais físicas, como cortes de energia. Isso permitirá identificar quaisquer pontos fracos no sistema de segurança de dados atual da organização e, a partir daqui você pode formular um plano de como remediar isso e priorizar ações para reduzir o risco de uma violação de dados cara.
4. Revisão de código
A próxima melhor coisa para emparelhar a programação é a revisão de código. Se você não praticar a programação em pares, recomenda-se considerar pelo menos a revisão de código. É um processo leve que deve ser aplicado o mais rápido possível depois que o código é escrito.
Ao longo dos anos trabalhando em diferentes projetos de desenvolvimento de software, acumulamos nossa própria experiência de tornar o bom código melhor. E aqui estão as coisas que recomendamos fazer durante todo o processo para melhorar a qualidade do código:
- Siga o guia de estilo da linguagem de programação;
- Aderir aos princípios do STRIDE no seu design;
- Dê nomes descritivos para métodos e variáveis;
- Use padrões de design;
- Não reinvente a roda ou utilize estruturas de terceiros;
- Use estruturas de dados e algoritmos eficientes;
- Crie testes unitários;
- Documente todos os aspectos do seu projeto;
- Mantenha todos os elementos do seu projeto sob o sistema de controle de versão.
Em conjunto com a metodologia de desenvolvimento seguro e suas práticas de programação diárias, você acabará desenvolvendo de forma mais legível, mais segura e tornando a revisão do código mais simples. Você também vai poupar seu trabalho, sua equipe e seus clientes de muitas dores de cabeça, tempo e, portanto, dinheiro.
Seguindo todas essas dicas você estará mitigando os riscos mais comuns. Caso queira se aprofundar no tema, você pode fazer o curso Gratuito “Desenvolvimento Seguro de Software” CLICANDO AQUI. Com esse curso gratuito você estará totalmente preparado para esse novo nicho de mercado de trabalho.
sexta-feira, 4 de maio de 2018
Aprendendo Python
Depois de muito tempo inativo volto com um código de calculadora e controle de lanchonete feito em Python conforme videos do youtube - aqui
Segue o código:
from tkinter import*
import random
import time;
from tkinter import Entry
root = Tk()
root.geometry("1600x800+0+0")
root.title("Sistema de Administração de Restaurante")
text_Input = StringVar()
operator = ""
Tops = Frame(root, width = 1600, height = 50, bg = "powder blue", relief=SUNKEN)
Tops.pack(side=TOP)
f1 = Frame(root, width = 800, height = 700, relief=SUNKEN)
f1.pack(side=LEFT)
f2 = Frame(root, width = 300, height = 700, relief=SUNKEN)
f2.pack(side=RIGHT)
#====================================Time=========================================
localtime = time.asctime(time.localtime(time.time()))
#====================================Info=========================================
lblInfo = Label(Tops, font=('arial', 40, 'bold'), text = "Sistema de Administração de Restaurante", fg = "Steel Blue", bd = 10, anchor = 'w')
lblInfo.grid(row = 0, column = 0)
lblDateTime = Label(Tops, font=('arial', 25, 'bold'), text = localtime, fg = "Steel Blue", bd = 10, anchor = 'w')
lblDateTime.grid(row = 1, column = 0)
#==================================Calculadora====================================
def btnClick(numbers):
global operator
operator = operator + str(numbers)
text_Input.set(operator)
def btnClearDisplay():
global operator
operator=""
text_Input.set ("")
def btnEqualsInput():
global operator
sumup = str(eval(operator))
text_Input.set (sumup)
operator = ""
def Ref():
x = random.randint(10908, 500876)
randomRef = str(x)
rand.set(randomRef)
CoF = float(Fries.get())
CoD = float (Drinks.get())
CoFilet = float (Filet.get ())
CoBurger = float (Burger.get ())
CoChicBurger = float (Chicken_Burger.get ())
CoCheese_Burger = float (Cheese_Burger.get ())
CostofFries = CoF * 0.99
CostofDrinks = CoD * 1.00
CostofFilet = CoFilet * 2.99
CostofBurger = CoBurger * 2.87
CostofChicken_Burger = CoChicBurger * 2.89
CostofCheese_Burger = CoCheese_Burger * 2.69
CostofMeal = "£", str('%.2f' % (CostofFries + CostofDrinks + CostofFilet + CostofBurger
+ CostofChicken_Burger+ CostofCheese_Burger))
PayTax = ((CostofFries + CostofDrinks + CostofFilet + CostofBurger
+ CostofChicken_Burger+ CostofCheese_Burger) * 0.2)
TotalCost = (CostofFries + CostofDrinks + CostofFilet + CostofBurger
+ CostofChicken_Burger+ CostofCheese_Burger)
Ser_Charge = ((CostofFries + CostofDrinks + CostofFilet + CostofBurger
+ CostofChicken_Burger+ CostofCheese_Burger)/99)
Service = "£", str('%.2f' % Ser_Charge)
OverAllCost = "£", str('%.2f' % (PayTax + TotalCost + Ser_Charge))
PaidTax = "£", str('%.2f' % PayTax)
Service_Charge.set(Service)
Cost.set(CostofMeal)
Tax.set(PaidTax)
SubTotal.set(CostofMeal)
Total.set(OverAllCost)
def qExit():
root.destroy()
def Reset():
rand.set ("")
Fries.set ("")
Burger.set ("")
Filet.set ("")
SubTotal.set ("")
Total.set ("")
Service_Charge.set ("")
Drinks.set ("")
Tax.set ("")
Cost.set ("")
Chicken_Burger.set ("")
Cheese_Burger.set ("")
txtDisplay= Entry(f2, font=('arial', 20,'bold'), textvariable=text_Input, bd=30, bg="powder blue", insertwidth=4, justify='right')
txtDisplay.grid(columnspan=4)
btn7=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="7", bg="powder blue", command=lambda: btnClick(7)) .grid(row=2, column=0)
btn8=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="8", bg="powder blue", command=lambda: btnClick(8)) .grid(row=2, column=1)
btn9=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="9", bg="powder blue", command=lambda: btnClick(9)) .grid(row=2, column=2)
Addition=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="+", bg="powder blue", command=lambda: btnClick("+")) .grid(row=2, column=3)
#-------------------------------------------------------------------------------------------------------
btn4=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="4", bg="powder blue", command=lambda: btnClick(4)) .grid(row=3, column=0)
btn5=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="5", bg="powder blue", command=lambda: btnClick(5)) .grid(row=3, column=1)
btn6=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="6", bg="powder blue", command=lambda: btnClick(6)) .grid(row=3, column=2)
Subtraction=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="-", bg="powder blue", command=lambda: btnClick("-")) .grid(row=3, column=3)
#-------------------------------------------------------------------------------------------------------
btn1=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="1", bg="powder blue", command=lambda: btnClick(1)) .grid(row=4, column=0)
btn2=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="2", bg="powder blue", command=lambda: btnClick(2)) .grid(row=4, column=1)
btn3=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="3", bg="powder blue", command=lambda: btnClick(3)) .grid(row=4, column=2)
Mutiplay=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="*", bg="powder blue", command=lambda: btnClick("*")) .grid(row=4, column=3)
#-------------------------------------------------------------------------------------------------------
btn0=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="0", bg="powder blue", command=lambda: btnClick(0)) .grid(row=5, column=0)
btnClear=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="C", bg="powder blue", command= btnClearDisplay).grid(row=5, column=1)
btnEquals=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="=", bg="powder blue", command=btnEqualsInput) .grid(row=5, column=2)
Division=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="/", bg="powder blue", command=lambda: btnClick("/")) .grid(row=5, column=3)
#------------------------------------Restaurante Info 1-------------------------------------------------------------
rand = StringVar()
Fries = StringVar()
Burger = StringVar()
Filet = StringVar()
SubTotal = StringVar()
Total = StringVar()
Service_Charge = StringVar()
Drinks = StringVar()
Tax = StringVar()
Cost = StringVar()
Chicken_Burger = StringVar()
Cheese_Burger = StringVar()
lblReference = Label(f1, font=('arial', 16,'bold'), text = "Nº Pedido", bd=16, anchor='w')
lblReference.grid(row=0, column=0)
txtReference= Entry(f1, font=('arial', 16,'bold'), textvariable= rand, bd=10, insertwidth=4,
bg= "powder blue", justify = 'right')
txtReference.grid(row=0, column=1)
lblFries = Label(f1, font=('arial', 16,'bold'), text = "Batata Frita", bd=16, anchor='w')
lblFries.grid(row=1, column=0)
txtFries= Entry(f1, font=('arial', 16,'bold'), textvariable= Fries, bd=10, insertwidth=4,
bg= "powder blue", justify = 'right')
txtFries.grid(row=1, column=1)
lblBurger = Label(f1, font=('arial', 16,'bold'), text = "Burger Meal", bd=16, anchor='w')
lblBurger.grid(row=2, column=0)
txtBurger= Entry(f1, font=('arial', 16,'bold'), textvariable= Burger, bd=10, insertwidth=4,
bg= "powder blue", justify = 'right')
txtBurger.grid(row=2, column=1)
lblFilet = Label(f1, font=('arial', 16,'bold'), text = "Filet_o_Meal", bd=16, anchor='w')
lblFilet.grid(row=3, column=0)
txtFilet= Entry(f1, font=('arial', 16,'bold'), textvariable= Filet, bd=10, insertwidth=4,
bg= "powder blue", justify = 'right')
txtFilet.grid(row=3, column=1)
lblChicken = Label(f1, font=('arial', 16,'bold'), text = "Chicken Meal", bd=16, anchor='w')
lblChicken.grid(row=4, column=0)
txtChicken= Entry(f1, font=('arial', 16,'bold'), textvariable= Chicken_Burger, bd=10, insertwidth=4,
bg= "powder blue", justify = 'right')
txtChicken.grid(row=4, column=1)
lblCheese = Label(f1, font=('arial', 16,'bold'), text = "Cheese Meal", bd=16, anchor='w')
lblCheese.grid(row=5, column=0)
txtCheese= Entry(f1, font=('arial', 16,'bold'), textvariable= Cheese_Burger, bd=10, insertwidth=4,
bg= "powder blue", justify = 'right')
txtCheese.grid(row=5, column=1)
#------------------------------------Restaurante Info 2---------------------------------------------------------
lblDrinks = Label(f1, font=('arial', 16,'bold'), text = "Drinks", bd=16, anchor='w')
lblDrinks.grid(row=0, column=2)
txtDrinks= Entry(f1, font=('arial', 16,'bold'), textvariable= Drinks, bd=10, insertwidth=4,
bg= "#ffffff", justify = 'right')
txtDrinks.grid(row=0, column=3)
lblCost = Label(f1, font=('arial', 16,'bold'), text = "Cost of Meal", bd=16, anchor='w')
lblCost.grid(row=1, column=2)
txtCost= Entry(f1, font=('arial', 16,'bold'), textvariable= Cost, bd=10, insertwidth=4,
bg= "#ffffff", justify = 'right')
txtCost.grid(row=1, column=3)
lblService = Label(f1, font=('arial', 16,'bold'), text = "Service Charge", bd=16, anchor='w')
lblService.grid(row=2, column=2)
txtService= Entry(f1, font=('arial', 16,'bold'), textvariable= Service_Charge, bd=10, insertwidth=4,
bg= "#ffffff", justify = 'right')
txtService.grid(row=2, column=3)
lblStateTax = Label(f1, font=('arial', 16,'bold'), text = "State Tax", bd=16, anchor='w')
lblStateTax.grid(row=3, column=2)
txtStateTax= Entry(f1, font=('arial', 16,'bold'), textvariable= Tax, bd=10, insertwidth=4,
bg= "#ffffff", justify = 'right')
txtStateTax.grid(row=3, column=3)
lblSubTotal = Label(f1, font=('arial', 16,'bold'), text = "Sub Total", bd=16, anchor='w')
lblSubTotal.grid(row=4, column=2)
txtSubTotal= Entry(f1, font=('arial', 16,'bold'), textvariable= SubTotal, bd=10, insertwidth=4,
bg= "#ffffff", justify = 'right')
txtSubTotal.grid(row=4, column=3)
lblTotalCost = Label(f1, font=('arial', 16,'bold'), text = "Total Cost", bd=16, anchor='w')
lblTotalCost.grid(row=5, column=2)
txtTotalCost= Entry(f1, font=('arial', 16,'bold'), textvariable= Total, bd=10, insertwidth=4,
bg= "#ffffff", justify = 'right')
txtTotalCost.grid(row=5, column=3)
#===========================================Buttons===================================================
btnTotal = Button(f1, padx=16, pady = 8, bd = 16, fg = "black", font=('arial', 16,'bold'), width = 10,
text = "Total", bg = "powder blue", command = Ref).grid(row = 7, column = 1)
btnReset = Button(f1, padx=16, pady = 8, bd = 16, fg = "black", font=('arial', 16,'bold'), width = 10,
text = "Reset", bg = "powder blue", command = Reset).grid(row = 7, column = 2)
btnExit = Button(f1, padx=16, pady = 8, bd = 16, fg = "black", font=('arial', 16,'bold'), width = 10,
text = "Exit", bg = "powder blue", command = qExit).grid(row = 7, column = 3)
root.mainloop()
Segue o código:
from tkinter import*
import random
import time;
from tkinter import Entry
root = Tk()
root.geometry("1600x800+0+0")
root.title("Sistema de Administração de Restaurante")
text_Input = StringVar()
operator = ""
Tops = Frame(root, width = 1600, height = 50, bg = "powder blue", relief=SUNKEN)
Tops.pack(side=TOP)
f1 = Frame(root, width = 800, height = 700, relief=SUNKEN)
f1.pack(side=LEFT)
f2 = Frame(root, width = 300, height = 700, relief=SUNKEN)
f2.pack(side=RIGHT)
#====================================Time=========================================
localtime = time.asctime(time.localtime(time.time()))
#====================================Info=========================================
lblInfo = Label(Tops, font=('arial', 40, 'bold'), text = "Sistema de Administração de Restaurante", fg = "Steel Blue", bd = 10, anchor = 'w')
lblInfo.grid(row = 0, column = 0)
lblDateTime = Label(Tops, font=('arial', 25, 'bold'), text = localtime, fg = "Steel Blue", bd = 10, anchor = 'w')
lblDateTime.grid(row = 1, column = 0)
#==================================Calculadora====================================
def btnClick(numbers):
global operator
operator = operator + str(numbers)
text_Input.set(operator)
def btnClearDisplay():
global operator
operator=""
text_Input.set ("")
def btnEqualsInput():
global operator
sumup = str(eval(operator))
text_Input.set (sumup)
operator = ""
def Ref():
x = random.randint(10908, 500876)
randomRef = str(x)
rand.set(randomRef)
CoF = float(Fries.get())
CoD = float (Drinks.get())
CoFilet = float (Filet.get ())
CoBurger = float (Burger.get ())
CoChicBurger = float (Chicken_Burger.get ())
CoCheese_Burger = float (Cheese_Burger.get ())
CostofFries = CoF * 0.99
CostofDrinks = CoD * 1.00
CostofFilet = CoFilet * 2.99
CostofBurger = CoBurger * 2.87
CostofChicken_Burger = CoChicBurger * 2.89
CostofCheese_Burger = CoCheese_Burger * 2.69
CostofMeal = "£", str('%.2f' % (CostofFries + CostofDrinks + CostofFilet + CostofBurger
+ CostofChicken_Burger+ CostofCheese_Burger))
PayTax = ((CostofFries + CostofDrinks + CostofFilet + CostofBurger
+ CostofChicken_Burger+ CostofCheese_Burger) * 0.2)
TotalCost = (CostofFries + CostofDrinks + CostofFilet + CostofBurger
+ CostofChicken_Burger+ CostofCheese_Burger)
Ser_Charge = ((CostofFries + CostofDrinks + CostofFilet + CostofBurger
+ CostofChicken_Burger+ CostofCheese_Burger)/99)
Service = "£", str('%.2f' % Ser_Charge)
OverAllCost = "£", str('%.2f' % (PayTax + TotalCost + Ser_Charge))
PaidTax = "£", str('%.2f' % PayTax)
Service_Charge.set(Service)
Cost.set(CostofMeal)
Tax.set(PaidTax)
SubTotal.set(CostofMeal)
Total.set(OverAllCost)
def qExit():
root.destroy()
def Reset():
rand.set ("")
Fries.set ("")
Burger.set ("")
Filet.set ("")
SubTotal.set ("")
Total.set ("")
Service_Charge.set ("")
Drinks.set ("")
Tax.set ("")
Cost.set ("")
Chicken_Burger.set ("")
Cheese_Burger.set ("")
txtDisplay= Entry(f2, font=('arial', 20,'bold'), textvariable=text_Input, bd=30, bg="powder blue", insertwidth=4, justify='right')
txtDisplay.grid(columnspan=4)
btn7=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="7", bg="powder blue", command=lambda: btnClick(7)) .grid(row=2, column=0)
btn8=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="8", bg="powder blue", command=lambda: btnClick(8)) .grid(row=2, column=1)
btn9=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="9", bg="powder blue", command=lambda: btnClick(9)) .grid(row=2, column=2)
Addition=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="+", bg="powder blue", command=lambda: btnClick("+")) .grid(row=2, column=3)
#-------------------------------------------------------------------------------------------------------
btn4=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="4", bg="powder blue", command=lambda: btnClick(4)) .grid(row=3, column=0)
btn5=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="5", bg="powder blue", command=lambda: btnClick(5)) .grid(row=3, column=1)
btn6=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="6", bg="powder blue", command=lambda: btnClick(6)) .grid(row=3, column=2)
Subtraction=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="-", bg="powder blue", command=lambda: btnClick("-")) .grid(row=3, column=3)
#-------------------------------------------------------------------------------------------------------
btn1=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="1", bg="powder blue", command=lambda: btnClick(1)) .grid(row=4, column=0)
btn2=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="2", bg="powder blue", command=lambda: btnClick(2)) .grid(row=4, column=1)
btn3=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="3", bg="powder blue", command=lambda: btnClick(3)) .grid(row=4, column=2)
Mutiplay=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="*", bg="powder blue", command=lambda: btnClick("*")) .grid(row=4, column=3)
#-------------------------------------------------------------------------------------------------------
btn0=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="0", bg="powder blue", command=lambda: btnClick(0)) .grid(row=5, column=0)
btnClear=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="C", bg="powder blue", command= btnClearDisplay).grid(row=5, column=1)
btnEquals=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="=", bg="powder blue", command=btnEqualsInput) .grid(row=5, column=2)
Division=Button(f2, padx=16, pady=16, bd=8, fg="black", font=('arial', 20,'bold'),
text="/", bg="powder blue", command=lambda: btnClick("/")) .grid(row=5, column=3)
#------------------------------------Restaurante Info 1-------------------------------------------------------------
rand = StringVar()
Fries = StringVar()
Burger = StringVar()
Filet = StringVar()
SubTotal = StringVar()
Total = StringVar()
Service_Charge = StringVar()
Drinks = StringVar()
Tax = StringVar()
Cost = StringVar()
Chicken_Burger = StringVar()
Cheese_Burger = StringVar()
lblReference = Label(f1, font=('arial', 16,'bold'), text = "Nº Pedido", bd=16, anchor='w')
lblReference.grid(row=0, column=0)
txtReference= Entry(f1, font=('arial', 16,'bold'), textvariable= rand, bd=10, insertwidth=4,
bg= "powder blue", justify = 'right')
txtReference.grid(row=0, column=1)
lblFries = Label(f1, font=('arial', 16,'bold'), text = "Batata Frita", bd=16, anchor='w')
lblFries.grid(row=1, column=0)
txtFries= Entry(f1, font=('arial', 16,'bold'), textvariable= Fries, bd=10, insertwidth=4,
bg= "powder blue", justify = 'right')
txtFries.grid(row=1, column=1)
lblBurger = Label(f1, font=('arial', 16,'bold'), text = "Burger Meal", bd=16, anchor='w')
lblBurger.grid(row=2, column=0)
txtBurger= Entry(f1, font=('arial', 16,'bold'), textvariable= Burger, bd=10, insertwidth=4,
bg= "powder blue", justify = 'right')
txtBurger.grid(row=2, column=1)
lblFilet = Label(f1, font=('arial', 16,'bold'), text = "Filet_o_Meal", bd=16, anchor='w')
lblFilet.grid(row=3, column=0)
txtFilet= Entry(f1, font=('arial', 16,'bold'), textvariable= Filet, bd=10, insertwidth=4,
bg= "powder blue", justify = 'right')
txtFilet.grid(row=3, column=1)
lblChicken = Label(f1, font=('arial', 16,'bold'), text = "Chicken Meal", bd=16, anchor='w')
lblChicken.grid(row=4, column=0)
txtChicken= Entry(f1, font=('arial', 16,'bold'), textvariable= Chicken_Burger, bd=10, insertwidth=4,
bg= "powder blue", justify = 'right')
txtChicken.grid(row=4, column=1)
lblCheese = Label(f1, font=('arial', 16,'bold'), text = "Cheese Meal", bd=16, anchor='w')
lblCheese.grid(row=5, column=0)
txtCheese= Entry(f1, font=('arial', 16,'bold'), textvariable= Cheese_Burger, bd=10, insertwidth=4,
bg= "powder blue", justify = 'right')
txtCheese.grid(row=5, column=1)
#------------------------------------Restaurante Info 2---------------------------------------------------------
lblDrinks = Label(f1, font=('arial', 16,'bold'), text = "Drinks", bd=16, anchor='w')
lblDrinks.grid(row=0, column=2)
txtDrinks= Entry(f1, font=('arial', 16,'bold'), textvariable= Drinks, bd=10, insertwidth=4,
bg= "#ffffff", justify = 'right')
txtDrinks.grid(row=0, column=3)
lblCost = Label(f1, font=('arial', 16,'bold'), text = "Cost of Meal", bd=16, anchor='w')
lblCost.grid(row=1, column=2)
txtCost= Entry(f1, font=('arial', 16,'bold'), textvariable= Cost, bd=10, insertwidth=4,
bg= "#ffffff", justify = 'right')
txtCost.grid(row=1, column=3)
lblService = Label(f1, font=('arial', 16,'bold'), text = "Service Charge", bd=16, anchor='w')
lblService.grid(row=2, column=2)
txtService= Entry(f1, font=('arial', 16,'bold'), textvariable= Service_Charge, bd=10, insertwidth=4,
bg= "#ffffff", justify = 'right')
txtService.grid(row=2, column=3)
lblStateTax = Label(f1, font=('arial', 16,'bold'), text = "State Tax", bd=16, anchor='w')
lblStateTax.grid(row=3, column=2)
txtStateTax= Entry(f1, font=('arial', 16,'bold'), textvariable= Tax, bd=10, insertwidth=4,
bg= "#ffffff", justify = 'right')
txtStateTax.grid(row=3, column=3)
lblSubTotal = Label(f1, font=('arial', 16,'bold'), text = "Sub Total", bd=16, anchor='w')
lblSubTotal.grid(row=4, column=2)
txtSubTotal= Entry(f1, font=('arial', 16,'bold'), textvariable= SubTotal, bd=10, insertwidth=4,
bg= "#ffffff", justify = 'right')
txtSubTotal.grid(row=4, column=3)
lblTotalCost = Label(f1, font=('arial', 16,'bold'), text = "Total Cost", bd=16, anchor='w')
lblTotalCost.grid(row=5, column=2)
txtTotalCost= Entry(f1, font=('arial', 16,'bold'), textvariable= Total, bd=10, insertwidth=4,
bg= "#ffffff", justify = 'right')
txtTotalCost.grid(row=5, column=3)
#===========================================Buttons===================================================
btnTotal = Button(f1, padx=16, pady = 8, bd = 16, fg = "black", font=('arial', 16,'bold'), width = 10,
text = "Total", bg = "powder blue", command = Ref).grid(row = 7, column = 1)
btnReset = Button(f1, padx=16, pady = 8, bd = 16, fg = "black", font=('arial', 16,'bold'), width = 10,
text = "Reset", bg = "powder blue", command = Reset).grid(row = 7, column = 2)
btnExit = Button(f1, padx=16, pady = 8, bd = 16, fg = "black", font=('arial', 16,'bold'), width = 10,
text = "Exit", bg = "powder blue", command = qExit).grid(row = 7, column = 3)
root.mainloop()
quinta-feira, 8 de fevereiro de 2018
Cryptomining Software Discovered on Tennessee Hospital’s EMR Server
Por David Bisson em 08/02/2018 no site The Sate of Security
A Tennessee hospital discovered cryptomining software installed on a server that hosts its electronic medical records (EMR) system.
In January 2018, Decatur County General Hospital began notifying patients of a incident involving its electronic medical record systems. Its breach notification letter (PDF) reveals the hospital first learned about the security event from its EMR vendor:
On November 27, 2017, we received a security incident report from our EMR system vendor indicating that unauthorized software had been installed on the server the vendor supports on our behalf. The unauthorized software was installed to generate digital currency, more commonly known as “cryptocurrency.”
Decatur County General Hospital subsequently launched its own investigation into the incident. So far, it’s determined that a remote actor likely accessed the server on which its EMR system stores patients information including their names, addresses, dates of birth, Social Security Numbers, insurance details, and medical treatment records. It’s also found that the cryptomining software had been active since at least 22 September 2017.
The hospital’s EMR vendor replaced the server and operating system four days after discovery.
At this time, Decatur County General Hospital cannot confirm whether the individual responsible for the breach accessed patients’ information stored on the server. It tells patients as much:
Again, while our investigation continues into this matter, we have no evidence that your information was actually acquired or viewed by an unauthorized individual, and based upon reports of similar incidents, we do not believe that your health information was targeted by any unauthorized individual installing the software on the server. Our investigation to date, however, has been unable to reasonably verify that there was not unauthorized access of your information.
Cryptomining emerged as a salient threat in 2017. Tools responsible for generating new units of cryptocurrency preyed upon 1.65 million users over the first eight months of the year. Since then, researchers have discovered a single Monero mining campaign that victimized 15 million users in the fall of 2017. Such findings have led some security experts to wonder whether cryptomining will supplant ransomware as the most widespread form of digital crime in 2018.
Given that possibility, it’s important that hospitals and other healthcare organizations maintain the security and integrity of their EMR systems. They can find guidance for that objective here.
To learn more about how Tripwire can protect your healthcare organization against digital threats, click here
Hackers Can Now Steal Data Even From Faraday Cage Air-Gapped Computers
Por Swati Khandelwal em 08/02/2018 no site The Hackers News
A team of security researchers—which majorly focuses on finding clever ways to get into air-gapped computers by exploiting little-noticed emissions of a computer's components like light, sound and heat—have published another research showcasing that they can steal data not only from an air gap computer but also from a computer inside a Faraday cage.
Air-gapped computers are those that are isolated from the Internet and local networks and so, are believed to be the most secure devices that are difficult to infiltrate.
Whereas, Faraday cages are metallic enclosures that even blocks all electromagnetic signals, such as Wi-Fi, Bluetooth, cellular and other wireless communications, making any device kept inside the cage, even more, isolate from outside networks.
However, Cybersecurity Research Center at Israel's Ben Gurion University, directed by 38-year-old Mordechai Guri, has developed two techniques that helped them exfiltrate data from computers placed inside a Faraday cage.
Dubbed MAGNETO [pdf] and ODINI [pdf], both the techniques make use of proof-of-concept (PoC) malware installed on an air-gapped computer inside the Faraday cage to control the "magnetic fields emanating from the computer by regulating workloads on the CPU cores" and use it to transmit data stealthily.
"Everyone was talking about breaking the air gap to get in, but no one was talking about getting the information out," Guri says. "That opened the gate to all this research, to break the paradigm that there's a hermetic seal around air-gapped networks."
According to the researcher, once a computer (no matter if it is air-gapped or inside a Faraday cage) has been infected, hackers can exfiltrate stolen data without needing to wait for another traditional connection to the infected machine.
How MAGNETO & ODINI Attacks Work:
Once a motivated attacker somehow succeeded in planting malware on an air-gapped computer, the malware then collects small pieces of information, like keylogging data, encryption keys, credential tokens, and passwords.
The PoC malware developed by the team then electrically generates a pattern of magnetic field frequencies by regulating CPU's workload, which can be achieved by overloading the CPU with calculations that increase power consumption and generate a stronger magnetic field.
These electromagnetic (acoustic, optical and thermal) emissions from the infected computer are powerful enough to carry a small stream of stolen data to a nearby device, a receiver planted by the hacker.
The process involves translating data first into binary, i.e. 0 and 1, and the transmitting it into morse-code-like patterns in accordance with electromagnetic emission.
"The transmitting program leaves only a small footprint in the memory, making its presence easier to hide from AVs. At the OS level, the transmitting program requires no special or elevated privileges (e.g., root or admin), and hence can be initiated from an ordinary userspace process," the paper reads.
"The transmitting code mainly consists of basic CPU operations such as busy loops, which do not expose malicious behaviors, making it highly evasive from automated analysis tools."
While both MAGNETO and ODINI attacks are designed to exfiltrate data from a secured computer using electromagnetic emissions, the only difference between the two is:
- MAGNETO is a short-distance attack where an Android app installed on the attacker's smartphone can receive stolen data with the help of phone's magnetometer— a magnetic sensor that can transmit data even if the smartphone is placed inside a Faraday bag or is set to airplane mode.
- ODINI attack enables attackers to capture electromagnetic signals from a slightly longer range using a dedicated magnetic sensor.
In case of MAGNETO, the team managed to achieve only up to 5 bits/sec over a distance of up to 12.5 cm (5 inches), while ODINI is quite more efficient with a maximum transfer rate of 40 bits/sec over a range of 100 to 150 cm (3-5 feet).
Both ODINI and MAGNETO also work if the targeted air-gapped device is inside a Faraday cage, which is designed to block electromagnetic fields, including Bluetooth, Wi-Fi, cellular, and other wireless communications.
Researchers suggest three different approaches that can be used to prevent attackers from establishing a covert magnetic channel, i.e., shielding, jamming, and zoning.
Video Demonstration of MAGNETO And ODINI Attacks
The team published proof-of-concept video demonstrations for both MAGNETO and ODINI attacks, which shows both the attacks in action.
It's not the first time Ben-Gurion researchers came up with a covert technique to target air-gapped computers. Their previous research of hacking air-gap computers include:
- aIR-Jumper attack that steals sensitive information from air-gapped computers with the help of infrared-equipped CCTV cameras that are used for night vision.
- USBee attack that can be used steal data from air-gapped computers using radio frequency transmissions from USB connectors.
- DiskFiltration attack that can steal data using sound signals emitted from the hard disk drive (HDD) of the targeted air-gapped computer;
- BitWhisper that relies on heat exchange between two computer systems to stealthily siphon passwords or security keys;
- AirHopper that turns a computer's video card into an FM transmitter to capture keystrokes;
- Fansmitter technique that uses noise emitted by a computer fan to transmit data; and
- GSMem attack that relies on cellular frequencies.
A empresa que transforma o smartphone num 'super GPS’
Geraldo Samor em 08/02/2018 no site Brazil Journal
Uma empresa do Recife desenvolveu uma tecnologia de geolocalização de precisão inédita — com aplicações em marketing, CRM e prevenção de fraude — transformando o smartphone num ‘super GPS’ e aumentando o potencial de monetização para anunciantes.
Usando tecnologias já embarcadas no smartphone, a In Loco, fundada por ex-alunos de ciência da computação da Universidade Federal de Pernambuco, permite conhecer e prever o comportamento dos consumidores com grau de precisão e assertividade inéditos.
Para ganhar capilaridade, a In Loco fez acordos com os aplicativos mais baixados do mercado para embutir sua tecnologia: quando um usuário baixa o app, a In Loco pega carona.
Para entender onde o usuário está, a In Loco usa o wifi e outras tecnologias embarcadas no celular que a maioria dos usuários sequer sabem existir: o acelerômetro (que entende o número de passos que a pessoa deu, o tamanho de cada passo e a direção), o giroscópio (sensor que entende para onde o celular está apontando nas três direções), e o magnetômetro (um subconjunto da bússola).
“Cada local físico tem um conjunto de distorções magnéticas que é único — uma espécie de impressão digital daquele local,” diz André Ferraz, que fundou a In Loco com amigos de faculdade há cinco anos.
A tecnologia desenvolvida pela In Loco agrega, processa e determina a localização do usuário com uma precisão de dois ou três metros. Para efeito de comparação, trata-se de uma precisão 30 vezes maior que o GPS usado pelo Waze ou pelo Google Maps. Mais: a tecnologia consome 3.000 vezes menos bateria que um GPS tradicional, permitindo que o algoritmo fique rodando non-stop. Ao longo de um dia, a aplicação da In Loco consome 0,5% de uma carga de bateria.
A In Loco está fazendo avanços num terreno que tem sido pedregoso para as maiores companhias do Silicon Valley.
O Google chegou a ter 150 engenheiros trabalhando para desenvolver uma tecnologia de indoor location, mas o projeto foi descontinuado em 2017. Agora, o Google está investindo em outra tecnologia chamada beacon, que depende da instalação de um dispositivo bluetooth para viabilizar a localização. Há dois problemas: o custo do hardware e o fato de menos de 5% das pessoas com smartphones usarem o bluetooth o tempo todo. Segundo André, para conseguir o mesmo mapeamento (em quilômetros quadrados) que a In Loco tem hoje, a tecnologia beacon demandaria um investimento de US$ 10 bilhões.
No ano passado, o Facebook abriu uma competição para desenvolvedores de indoor location e teve 6 mil inscritos: o melhor deles obteve 60% da precisão da In Loco. Finalmente, a Apple comprou duas empresas de indoor location technology — uma americana em 2011, e uma israelense em 2014 — mas ainda não lançou nenhum produto.
Hoje, a tecnologia da In Loco está embarcada em 60 milhões de smartphones no Brasil (por meio de mais de 600 apps), mas a ambição da companhia é global. A In Loco já está em 3,5 milhões de smartphones nos EUA, e deve chegar a 10 milhões em março.
Até agora, a In Loco desenvolveu três aplicações para sua tecnologia. A primeira delas, a In Loco Media, permite a anunciantes obter mais assertividade em suas campanhas e já tem clientes como Pizza Hut, Jeep, Coca-Cola, Mondelez e Boticário. A ideia da In Loco é passar a cobrar dos clientes um CPV — custo por visita à loja física — em vez do famigerado CPM (custo por mil) cobrado nas campanhas do Google e Facebook. O cliente só paga à In Loco se o usuário for atraído até sua loja e ficar ali mais de cinco minutos.
“Um cliente nosso comparou o CPV a um contrato de ‘success fee’ em que os dois lados ganham,” diz Adrian Ferguson, que se juntou à In Loco Media no ano passado depois de 27 anos no mercado publicitário.
A segunda aplicação, o Engage, é uma ferramenta de CRM que permite a companhias identificar o contexto ideal para interagir com seus clientes por meio do aplicativo. Por exemplo, a partir dos insights da In Loco, um aplicativo de táxis descobriu que não estava engajando seus clientes em locais como aeroportos e bares. De posse do diagnóstico, o app começou a fazer promoções usando a geolocalização e conseguiu aumentar o número de corridas. O CRM do aplicativo não conseguiria chegar ao mesmo diagnóstico porque a tecnologia da In Loco consegue ‘ver' onde os usuários se encontram mesmo quando eles não estão usando o app.
A terceira aplicação, o In Loco ID, previne fraude a partir do conhecimento dos hábitos do usuário, e já está sendo usado por dois bancos digitais. Como dependem de fotos de documentos para abrir contas, os bancos estão suscetíveis a fraude.
Como quase toda startup, a In Loco já flertou com o desastre. Quando foi fundada em 2013, a companhia levantou recursos junto à Naspers para durar dois anos, mas acabou focando sua tecnologia num produto com uso limitado: serviços de geolocalização, tendo shopping centers como o cliente final. Quando faltavam dois meses para o dinheiro acabar, a In Loco fez o ‘pivot’ que a salvou da extinção: lançou um novo produto, focado em publicidade, que começou a gerar caixa quase imediatamente.
Em 2015, a companhia faturou US$ 1,5 milhão. No ano seguinte, US$ 5 milhões e, ano passado, US$ 12 milhões.
No Carnaval, Ferraz vai para São Francisco conversar com fundos de venture capital para uma nova captação, que deve financiar o crescimento nos EUA. Já disse aos sócios que só volta quando a rodada estiver garantida.
Ele diz ser quase impossível para empresas como Google e Facebook fazer o que a In Loco está fazendo. O motivo: o paradigma de privacidade.
"Todo o modelo de negócios do Google e do Facebook está baseado neles saberem exatamente quem é o usuário deles. Já a nossa tecnologia enxerga padrões mas não enxerga o RG que está lá na ponta. Na medida em que a sociedade aumentar sua demanda por privacidade, eles teriam que abandonar toda a sua base de usuários e começar do zero" para replicar o que a In Loco faz hoje.
O avanço nas tecnologias de geolocalização — assim como a chamada Internet of Things — marcam a transição da computação para um novo estágio chamado ‘Computação Ubíqua’.
Um pesquisador da Xerox PARC, Mark Weiser, propôs o conceito num artigo em 1991. Weiser previu que a computação um dia será, na vida cotidiana, igualzinha à energia elétrica.
Invisível.
terça-feira, 6 de fevereiro de 2018
INTELIGÊNCIA ARTIFICIAL VS APRENDIZAGEM DE MÁQUINA
Por Nuno Miguel Oliveira em 05/02/2018 no site Leak
A Inteligência Artificial e a Aprendizagem de Máquina são coisas distintas, com implicações diferentes ao nível do que os computadores conseguem fazer e da forma como interagem connosco.
Os dois termos são muitas vezes confundidos e utilizados incorretamente pelos departamentos de marketing por esse mundo fora, que querem dar um ar mais sofisticado aos seus produtos.
Tudo começa com as Redes Neurais
Aprendizagem de máquina é o paradigma computacional que levou ao crescimento da “Big Data”.
- O termo Big Data refere-se a um grande conjunto de dados armazenados.
Já a inteligência artificial, é baseada no desenvolvimento de redes neurais e aprendizagem profunda. Geralmente isto é descrito como uma imitação da forma como os humanos aprendem, mas não é bem assim.
Aprendizagem de máquina não é nada mais do que análise estatística e aprendizagem interativa.
Uma área da tecnologia que está a ajudar a melhorar os serviços que utilizamos diariamente nos nossos smartphones e na web é sem duvida a aprendizagem de máquina.
Em vez de construir programas tradicionais que se baseiam em declarações lógicas e árvores de decisão (if, if-else, and, or, etc) uma rede neural é construída especificamente para aprender usando uma rede de neurónios paralela, em que cada uma existe para um propósito específico.
- Redes neurais são modelos computacionais inspirados pelo sistema nervoso central (particularmente o cérebro), que são capazes de realizar aprendizagem de máquina bem como reconhecimento de padrões.
A natureza de qualquer rede neural pode ser muito complicada, mas a chave para o funcionamento é sem dúvida a atribuição de factores de importância ao input.
Usando redes com vários factores de importância é possível produzir uma probabilidade ou estimativa de que o seu input equivale a um ou mais outputs definidos.
- Input/Output = Entrada/Saída
O problema deste tipo de computação é, tal e qual como na programação tradicional, a dependência de como o programador humano constrói toda esta rede é re-ajustar todo o sistema demoraria demasiadas horas de trabalho humano.
Por isso as redes neurais entraram no mundo da aprendizagem de máquina.
Aprendizagem de Máquina
Ao monitorizar o output/input do sistema e ajustando os factores de importância gradualmente, uma rede pode treinar-se a si própria para melhorar a sua precisão.
Consoante os resultados, a rede irá aprender com os resultados corretos mas também com os erros que comete, tal e qual como um… humano !
O importante aqui é que o algoritmo de aprendizagem de máquina é capaz de aprender e agir sem os programadores terem de especificar toda e qualquer possibilidade daquilo que poderá vir a acontecer.
- Não é preciso pré-definir todos carros do mundo para o algoritmo perceber o que é um carro.
Treinar uma rede pode ser feito de várias maneiras, mas todas elas envolvem uma abordagem de força brutapara conseguir maximizar a precisão do output.
- Força Bruta é uma técnica que consiste em enumerar todos os possíveis candidatos a solução para encontrar a verdadeira.
Imaginem um pin de 4 dígitos, esta técnica irá testar todas as combinações desde 0000 até a 9999, para descobrir o pin correcto!
No entanto, mesmo usando Força Bruta, este treino é muito mais eficiente do que programar tudo à mão, permitindo que o algoritmo processe muitos mais dados a uma velocidade significativamente mais alta.
Assim que o treino termine, o algoritmo de aprendizagem de máquina é capaz de ordenar novos inputs através da rede com grande velocidade e precisão em tempo real.
Criando assim uma tecnologia essencial para reconhecimento de voz, processamento de línguas e também projectos científicos.
O que é Inteligência Artificial e o que não é
Aprendizagem de máquina é uma técnica de processamento muito inteligente, mas não possui inteligência real.
Um algoritmo não necessita de perceber o porquê de se auto-corrigir, apenas precisa de perceber como pode ser mais eficiente e preciso no futuro.
Mas assim que um algoritmo tiver aprendido algo, pode ser usado em sistemas que realmente possuam inteligência real.
Uma boa maneira de definir inteligência artificial é a aplicação de aprendizagem de máquina que interaja com humanos ou os imite numa maneira inteligente e convincente.
A Inteligência Artificial pode ser repartida em dois grandes grupos, aplicada e geral.
A aplicada é mais fácil actualmente, temos casos como compra e venda de acções, gestão de tráfego numa cidade ou diagnóstico de pacientes.
Sendo capaz de variadas tarefas, entendendo qualquer conjunto de dados, por isso consegue pensar de maneira mais ampla, como os humanos, com capacidade de aprender “fora da caixa”, ou seja, fora do seu set de conhecimento inicial, levando a um grande crescimento nas capacidades.
As primeiras descobertas de aprendizagem de máquina reflectem ideias de como o cérebro se desenvolve e como as pessoas aprendem.
Aprendizagem de máquina, fazendo parte de um sistema complexo, é essencial para conseguir alcançar software e máquinas capazes de realizar tarefas características e comparáveis à inteligência humana
Agora e o futuro
Porquê que os processadores de smartphones incluem um processador de Inteligência Artificial ?
Se os assistentes virtuais têm sido a tecnologia inovadora nos últimos tempos, então os processadores de IA são certamente o equivalente no lado do hardware.
Apesar de todo marketing e palavras técnicas que as empresas vomitam cá para fora, tanto a aprendizagem de máquina como a inteligência artificial têm aplicações presentes no mercado.
Ainda estamos um pouco longe de viver lado a lado com IA geral, mas se tem experiência com o assistente da Google ou a Siri da Apple, já interagiu com alguma forma de inteligência artificial.
Aprendizagem de máquina usada em processamento de linguagem é uma das chaves para os aparelhos “smart” de hoje em dia.
A aprendizagem de máquina já faz parte da sua vida, você é que ainda não sabe
Se nasceu nos anos 80 ou 90, provavelmente a ideia de Inteligência Artificial ou de Aprendizagem de máquina puxa logo imagens do Arnold Schwarzenegger a dizer “I’ll be back”, mas não se assuste, Hollywood fica longe e o Arnold já está velho.
O exemplo da “Smart Home” é apenas o caso de uso mais recente, aprendizagem de máquina já foi aplicado em várias casos, tal como a Google, que usa para o seu motor de pesquisa, ou o Facebook que também a usa para optimização de publicidade, até o seu banco deve usar para prevenir fraudes.
Existe uma grande diferença entre aprendizagem de máquina e inteligência artificial, apesar de o primeiro ser uma grande componente do segundo.
Assinar:
Postagens (Atom)