• Tipagem Fraca, Forte, Estática, Dinâmica e Inferência de Tipo

    Nas últimas semanas tenho descoberto que existe um débito técnico muito grande em relação a programação.

    Débito técnico: leia-se uma forma bonita que aprendi a falar para mostrar que tenho uma grande capacidade de programar sem saber de fato a aplicação, teoria, filosofia daquilo que está sendo escrito.

    Tipagem fraca, forte, dinâmica, estática e inferência de tipos são 5 conceitos diferentes - só pra ficar bem claro.

    Inferência de Tipo

    A inferência de tipos é a capacidade do compilador entender/’adivinhar’ qual é o tipo de dados de determinada variável sem ela ter sido declarada no código escrito. Isso, mastigue o conceito com calma tomando a sua cerveja.

    Vamos aos exemplos. No C# temos inferência de tipo ao declarar variáveis locais com o “var” antes do nome da nossa variável, tipo:

    var inferencia = 10; //Nossa variável 'inferencia' terá seu tipo setado em tempo de compilação

    A lá, que beleza. Não declaramos tipo nenhum, mas na hora que o compilador enxerga o valor ele entende que é uma variável do tipo int, e é essa capacidade que define que uma linguagem infere tipos. Temos PHP, Python , Javascript, etc. Um exemplo contrário seria o Java, nela o tipo deve ser determinado na declaração da variável (Pelo que pesquisei está tendo um esforço gradual em colocar a inferência de tipo no java há algum tempo ver JEP 286: Local-Variable Type Inferecen ).

    Tipagem Forte e Fraca

    Uma forma simples de definir a tipagem forte e fraca é que, caso ela seja forte, teremos a verificação de tipos em todas as operações em tempo de execução ou compilação, já a fraca não temos essa verificação.

    Por exemplo, temos nosso amigo Javascript que é uma tipagem fraca, ou seja, além de não ter a capacidade de detectar erros em operações de tipos diferentes, ela nos dá um resultado nas operações de tipos diferentes, mas como assim?

    Em Javascript podemos fazer:

    '1' + 1 // o resultado será '11'
    '1' + true // o resultado será 1true

    Abra seu navegador e teste amiguinho. O PHP é uma outra linguagem de tipagem fraca.

    Um Exemplo de tipagem forte seria o Python. Fazendo as mesmas operações do Javascript no python temos:

    '1' + 1
    Traceback (most recent call last): File "
    <stdin>", line 1, in <module>
    TypeError: cannot concatenate 'str' and 'int' objects</module></stdin>
    
    '1' + True
    Traceback (most recent call last): File "
    <stdin>", line 1, in <module>
    TypeError: cannot concatenate 'str' and 'bool' objects</module></stdin>

    Note que PHP tem tipagem fraca e o Python tem tipagem forte mas as duas linguagens tem Inferência de Tipos.

    Tipagem Estática e Dinâmica

    Tipagem Estática é a capacidade de uma linguagem ajudar na segurança de tipos, onde, a partir do momento que uma linguagem determina o tipo de uma variável esse tipo não pode ser alterado durante a compilação, fazendo com que o jovem programador não se preocupe tanto pois o compilador acusará erro caso seja alterado o tipo de uma variável.

    Por exemplo, em C#:

    var i = 1; //Note que terá a inferência do tipo inteiro
    i = 'A'; //Dará erro de compilação pois o tipo da variável é inteiro

    Já na Tipagem Dinâmica temos a possibilidade de alterar o tipo da nossa variável em tempo de execução. A essa capacidade definimos uma linguagem como Dinâmica, como por exemplo, o nosso velho amigo Javascript, veja:

    var i = 1; //Note que terá a inferência do tipo inteiro
    i = 'A'; //A partir desse momento sua variável é do tipo string com o valor 'A'. Lance normal, segue o jogo.

    Note que o C# tem inferência de tipo, é forte e é estática, já o javascript tem inferência de tipo, é fraca e é dinâmica.

    Veja que uma linguagem com tipagem dinâmica, não implica em uma linguagem dinâmica, e em relação a isso já deixo o post do akita que é uma tradução do post de Steven Devijver que analisa um terceiro post! :)

    Um outro objetivo do blog é repassar conceito que deveriam ser básicos, mas pelo menos na minha cidade, a maioria das pessaos que conversam já vão direto pra um framework e passam batidos nesse tipo de diferença, o que acaba influenciando na qualidade dos profissionais, acredito eu.

    Eae, vocês sabiam essas diferenças? Eu duvido!

  • Startup Weekend - Um Novo Compromisso SWUDI

    Vocês já ouviram falar da iniciativa Startup Weekend? #TEXTÃO DETECTED

    Imagino que você seja um homem de negócios, um desenvolvedor ou um designer que tem mais ou menos 952,459 ideias de novas soluções por hora. Levando isso em consideração, surge logo de cara uma pergunta - Como que irei fazer com que a minha ideia solucione problemas?

    Se você já está pensando em construir uma app que vale mais que barras de ouro, vai resolver o problema da zika/chikungunya e ainda vai ser divertido conseguindo um faturamento de 1 Bilhão anual, te aconselho a continuar lendo esse artigo e participar de um Startup Weekend.

    Como diz no site oficial, “em 54 horas, você vai experimentar os altos, baixos, as diversões e a pressão que compõe a vida em uma Startup”. De forma resumida, o Startup Weekend é um evento com o intuito de PROVER EDUCAÇÃO para que os participantes possam iniciar uma empresa real com soluções reais para problemas reais. “Desgeneralizando” um pouco o que escrevi, o evento imerge o participante em práticas e teorias com o intuito de ensinar as melhores práticas para retirar as ideias de startups da galera do papel em apenas 54 horas.

    Beleza Perera, o evento vai me dar a educação necessária, para prover soluções reais para problemas reais. E…..? E aí que vou te contar minha experiência na participação do Startup Weekend Uberlândia - #SWUDI realizado de 20 a 22 de Maio/2016, para que você entenda o formato e o motivo de ser tão FANTÁSTICO!!

    Experiência no Startup Weekend Uberlândia

    obs.: As informações são baseadas na minha experiência, para saber tudo sobre as funções dos facilitadores, organizadores, mentores, etc leia o site oficial

    Day One: Palestra, Pitch da ideia e Criação dos Times

    Chegamos em Uberlândia (Cidade muito bacana por sinal) para o Startup Weekend às 18:00. O evento começa com um rapaz com uma energia fora do comum chamado Ricardo Moraes que é o FACILITADOR batendo um papo sobre o que vamos encontrar no Startup Weekend. Fui direto na fonte (Ricardo) buscar uma definição da função do Facilitador, e resumindo, é parecido ao Mestre de Cerimônias entretanto ele também guia os bastidores. O facilitador mantém os valores (CORE 7) do evento intactos com o foco em trazer uma experiência incrível para todos (participantes, mentores, organizadores, jurados, etc).

    Na primeira palestra tudo parece fácil. “Ah é só ter uma ideia, validar, vender e apresentar”. Pobre e ignorante jovem.

    Logo após a palestra todos os participantes do evento tem 30 segundos para ir a frente do público para expor a sua ideia com o intuito de formar uma equipe (1º Pitch). Tivemos 45 ideias apresentadas, e logo após, o público define através de uma votação simples as melhores ideias. Os organizadores são a galera mais #HardWorkPapai que existe no evento, e são eles que cuidam de som, luz, problemas, patrocinadores e que recolhem as ideias mais votadas. O Herberth Amaral do Minas UP foi a frente e deu a ideia de criar um sistema para pessoas com dificuldades em ter disciplina na prática esportiva, E TEVE A IDEIA ESCOLHIDA! APLAUSOS!!! #GoMinasUp

    Após selecionadas as ideias, as pessoas que deram as ideias começam a efetuar uma verdadeira caça para montar sua equipe de trabalho. Fiquei na equipe do Herberth para criar o FitMania, juntamente com uma galera incrível, que são: o Coach Renan Teixeira, o acadêmico Business Marlon Moro e o excelente Designer Jonnathan Barcelos .

    Day Two: Aprendizado e HardWorkPapai (via Murilo Gun)

    Começamos sendo pressionados pelos mentores. Os mentores são uma galera que você ama em dados momentos e quer matar em outros. Eles sentam na mesa pra te guiar e pra te “trucar”. Digo com propriedade que eles são os maiores responsáveis pelas pivotadas e nós somos os principais responsáveis pelo acerto ou erro desses pivôs. Nossa equipe pivotou 458 vezes até às 11 da manhã, a partir daí parei de contar.

    • Tivemos uma palestra sobre validação e prototipação nesse dia para nos ajudar.

    Somos guiados por uma série de tarefas assim listadas:

    • Definição do problema (Pessoas são indisciplinadas e não mantém uma periodicidade em exercícios físicos)
    • Validação do problema (Saímos nas ruas de Uberlândia e na internet descobrindo se as pessoas fazem exercício, com que periodicidade e o motivo delas faltarem ou delas persistirem na prática de exercícios físicos. Entrevistamos 180 pessoas).
    • Sugestão de Solução para o problema validado (Constatamos na pesquisa que as pessoas se desmotivam por preguiça em sua maioria, e que elas se motivam devido a saúde e acompanhamento de amigos nas práticas físicas. Sendo assim, nossa solução foi que uma pessoa desafie outra a perder peso. Caso ela cumpra o desafio, ela ganha dinheiro, caso ela perca ela perde dinheiro).
    • Validação da Solução (Criamos um protótipo para validar. Nosso protótipo foi ir a rua e fazer com que o desafio fosse feito e que as pessoas passassem o dinheiro via Moip. Conseguimos 4 participantes).

    Claro galera, que 180 pessoas para validar o erro e 4 participantes utilizando é pouco pra falar que a solução funciona, entretanto, o papel do Startup Weekend é EDUCAR, e ao realizar essas tarefas na prática e na pressão entendemos perfeitamente TODAS as ideias propostas.

    Day three: Pré Pitch, Pitch e Escolha dos vencedores

    O nosso amigo Coach Renan Teixeira ficou encarregado do pitch, enquanto eu escrevia o produto e Herberth e Marlon iam pra rua vender o protótipo (SIM NOS ATRASAMOS MAS DEU TUDO CERTO). Nessa fase o Renan teve um pré pitch que é apresentar o pitch para os mentores para que eles nos “truquem” novamente. Nesse momento estávamos há 3 dias sem dormir direito, trabalhando intensamente e querendo matar qualquer mentor que nos fizesse pivotar, mesmo assim foi incrível.

    • Tivemos uma palestra sobre pitch nesse dia para nos ajudar.

    Ao fim do evento o pitch final foi para jurados que me deixaram impressionados com a capacidade de percepção de vários negócios, eles não davam uma dica furada! Enquanto saia o resultado, tivemos uma palestra com um Japonês de 30 anos que parecia ter 15 (pesquisando o nome, falha minha esqueci) falando sobre Design. O tema proposto da palestra foi excelente!

    E finalmente foram anunciados os vencedores. A ideia vencedora foi a PoupeCent$ onde nosso amigo Montesclarense do Minas UP Paulo Sidônio participou. Já dei os parabéns pessoalmente, mas gostaria de deixar frisado que a ideia é excelente e mereceram com louvor ganhar. Em resumo, a ideia consiste em transformar aquelas balinhas que a gente recebe como troco em dinheiro de fato, nunca mais haverão balinhas no lugar de moedas de um centavo.

    Sim, eu sei que por boa regra um artigo não deve ser longo demais e etc. Gostaria de agradecer quem conseguiu ler até o final e falar uma última coisa. O Startup Weekend é um evento de negócios e tecnologia. Ele divide os participantes em Desenvolvedor, Designer e homem de negócios, EU TENHO ABSOLUTA CERTEZA que você se encaixa em um dos três perfis, então, veja essa lista dos próximos eventos E FAÇA SUA INSCRIÇÃO LOGO.

  • O que são meta tags HTML e quais utilizarei nesse blog?

    É isso mesmooo, temos nosso primeiro artigo, e será sobre meta tags!! Mas por quê? Por que eu to indo criar as meta tags desse blog agora, e após fuçar o blog do akita e o blog do dinossauro das CSS nota-se claramente que há meta tags pra caramba no mundo e eu não posso ficar aqui parado.

    Só um minuto que esqueci o latão de skol…. Pronto, simbora.

    Beleza fera, mas o que são meta tags?

    Segundo a wiki do W3C meta tags são: “The element represents various kinds of metadata that cannot be expressed using the title, base, link, style, and script elements.” Em HuehueBR - Segundo o W3C (2012), o elemento representa uma variedade de metadados que não podem ser expressados usando os elementos title, base, link, style e script.

    Ou seja, várias informações sobre a sua página serão declaradas em tags , o que implica dizer que ela trabalha com metadados e onde suponho surgiu o nome dessa tag. Sendo assim, utilizaremos as meta tags para “informar informações” relativas ao nosso site, para facilitar o trabalho de um tanto de gente, como - por exemplo - do facebook, que utiliza das informações colocadas por você (desenvolvedor) nas tag meta para apresentar uma publicação de uma página de forma linda e agradável - com imagens, descrições e o escambaul - na timeline.

    Normalmente - eu disse NORMALMENTE - a tag tem dois atributos, um atributo define o funcionamento da tag meta e o outro atributo o conteúdo dessa tag. Beleza, tô confuso, vamos mostrar. Quando eu digo definir, isso quer dizer que dependendo do atributo declarado saberemos qual é o tipo do metadado que está no abributo de conteúdo. Sendo assim temos os atributos:

    • name que quando está sendo utilizado é um metadado a nível de documento, por ex:
    <meta name="description" content="Meta tag que traz a descrição da sua página
    e comumente utilizada pelo google para dar uma prévia sobre
    as páginas no resultado da busca" />
    <!-- Os SEO pira -->
    • http-equiv quando declarado, é utilizado para simular um cabeçalho de resposta HTTP com o intuito de controlar as ações do browser. Ele não serve para sobrescrever a resposta HTTP do servidor. Um exemplo seria controlar o ato de cachear a página:
    <meta http-equiv="cache-control" content="no-cache" />
    • itemprop vem de uma parada muito louca chamada microdata do HTML5 que pode ser tema de uma próxima conversa. Quando setado em uma tag meta você pode omitir o atributo name, http-equiv e charset e é obrigatório ter o content. O google utiliza esses metas, por exemplo, no google plus “para apresentar uma publicação de uma página de forma linda e agradável - com imagens, descrições e o escambaul - na timeline”.
    <meta itemprop="author" content="Perera">
    <!-- Meu nome por que sou o autor dessa bagaça de artigo -->

    Passamos da fase da teoria para dar aquela analisada básica nas tags que irei utilizar nesse blog. Se você der uma olhada no código html da página verá-lhe-lho-as no código.

    Quais meta tags utilizarei no blog?

    Charset Imprescindível! Muito pequeno gafanhoto se ferra pois o seu arquivo não está sendo lido corretamente devido ao charset. Essa tag fala pro browser qual o charset é utilizado por você.

    <meta charset="utf-8" />
    <!-- Meu nome por que sou o autor dessa bagaça de artigo -->

    Keywords A keywords é um clássico que foi mal utilizado durante bom tempo e agora o google a desconsidera. O pessoal descobriu que era só colocar as palavras que todo mundo tava procurando para que seu site sofresse uma alavancagem nos resultados da busca. Hoje em dia os buscadores levam em consideração a coerência semântica, ou seja, se as palavras chaves estiverem coerente com o conteúdo da sua página ela é melhor rankeada.

    <meta name="keywords" content="html, meta tags, microdata, front-end, SEO,
    HTML5, http, http-equiv, w3c">
    <!-- Meu nome por que sou o autor dessa bagaça de artigo -->

    Viewport Como bem disse o Diego Eis do Tableless nesse artigo, viewport é a área da tela onde seu website aparece. As definições do viewport são providenciais para que possamos controlar a visualização em vários tamanhos de tela. Caso queira saber mais leia o artigo do Diego que é duca.

    <meta name="viewport" content="width=device-width, initial-scale=1,
    user-scalable=no">

    Description Essa meta dá uma descrição resumida da sua página. Utilizo normalmente a primeira frase do artigo pois é isso que aparece na descrição de um resultado no google, consequentemente minha primeira frase deve ter claramente o assunto tratado.

    <meta name="description" content="É isso mesmooo, temos nosso primeiro artigo,
    e será sobre meta tags!! Mas por quê? Por que eu to indo criar as meta tags
    desse blog agora, e após fuçar o blo..">

    Autor Nesse caso temos uma verdadeira assinatura dos créditos de quem escreveu a página.

    <meta name="author" content="Perera">

    Itemprop Author, name e description Coloquei essas metas juntas pois elas são exatamente a mesma coisa das metas com name description, author. E a de itemprop = name é relacionado a tag title. São informações duplicadas declaradas de forma diferente para abranger, por exemplo, o google plus.

    <meta itemprop="author" content="Perera">
    <meta itemprop="name" content="O que são meta tags HTML e quais utilizarei
    nesse blog?">
    <meta itemprop="description" content="É isso mesmooo, temos nosso primeiro
    artigo,e será sobre meta tags!! Mas por quê? Por que eu to indo criar as
    meta tags desse blog agora,e após fuçar o blo..">

    Meta tags do facebook E pra finalizar, como exemplo gigantesco, segue as meta tags do open graph do facebook. A partir dessas declarações, ele define como publicar e mapear a sua página no facebook. Acabou a cerveja, então não vou explicar uma a uma, pesquisa ae seu vagabundo.

    <meta property="fb:app_id" content="333451410072252" />
    <meta property="og:locale" content="pt_BR" />
    <meta property="og:type" content="article" />
    <meta property="og:title" content="O que são meta tags HTML e quais utilizarei nesse blog?" />
    <meta property="og:description" content="É isso mesmooo, temos nosso primeiro
    artigo,e será sobre meta tags!! Mas por quê? Por que eu to indo criar as
    meta tags desse blog agora,e após fuçar o blo.." />
    <meta property="og:url" content="http://felipequadros.com/meta-tags/html/front-end/2016/05/15/meta-tags-do-blog/">
    <meta property="og:site_name" content="Blog do Perera" />
    <meta property="article:publisher" content="https://www.facebook.com/felipepereira.quadrosmaia" />
    <meta property="article:author" content="https://www.facebook.com/felipepereira.quadrosmaia" />
    <meta property="article:section" content="HTML" />

    Agora que você já ta o bixão em meta tags, vai dar uma lida sobre a relação das meta tags e o SEO . A pessoa que não dá uma lida em SEO bom sujeito não é.

    É o primeiro artigo e gostei demais do assunto, sempre ficava perdido com algumas metas. Nesse momento não tem plugin de comentários, mas entrem em contato comigo pelo meu face e vamos trocar ideia!!

    Acho que o próximo será sobre o Jekyll que é o bixão demais. Abraços!

  • Bem Vindos

    Vamos descobrir o que esse blog será.

    Tenho assumido vários papéis nos últimos tempos (professor, aluno, empresário, desenvolvedor, vendedor, faxineiro, investidor, diretor financeiro, cartoleiro, etc), e convivido com uma galera muito f*d@.

    Trabalho junto a um excelente rapaz que desde o primeiro dia na empresa ele foi bem sincero ao admitir que não sabia nada sobre qualquer área de desenvolvimento de software, mas que gostaria muito de aprender.

    Nas primeiras duas semanas ele fez a área administrativa de um site em Laravel com a ajuda da equipe da empresa, e essa experiência de passar conhecimento e aprender junto tem me feito experimentar a possibilidade real de crescimento através da troca sincera de conhecimento.

    Espero fazer isso com o blog. Preciso me acostumar a escrever, então tomarei uma cerveja diferente a cada post escrito.

    Hoje vou de Skol Latão por que eu to de ressaca e consequente preguiça de comprar uma melhor.

    Vlw flw.