9 em 10 aplicativos sem servidor estão em apuros na segurança frontend

Renato em HackerNoon.com Segue em 9 de jul · 4 min ler

Todos nós odiamos violações de segurança e todos ficamos entediados ao investigar maneiras de proteger nossos aplicativos. Vamos encarar: é muito mais emocionante criar um recurso novo e amado do que garantir possíveis vulnerabilidades que alguém possa explorar um dia só para irritar todo mundo. No entanto, nenhum de nós quer ser pego como sendo preguiçoso em garantir o nosso software e é por isso que nos preocupamos com segurança para os mais altos padrões. read more

A crescente importância do Comic Con

O Comic Con já pode ser considerado como um dos maiores eventos na indústria do entretenimento. Mesmo que as convenções de quadrinhos sejam apenas um dos interesses dos fãs. Há outros – convenções de Star Trek, celebrações de Star Wars, exposição de jogos de vídeo e jogos de mesa, convenções de anime e muito mais. Independentemente do foco, todos eles são organizados praticamente da mesma maneira. Você pode participar de grupos para aprender sobre um tópico, ver celebridades, conversar com artistas, fazer compras em enormes salões de exposição e conhecer pessoas que gostam das mesmas coisas que você. read more

10 ideias de presentes incríveis para seu namorado geek / nerd

Algumas idéias de presentes para seus amigos programadores e familiares para feriados e links para comprá-los.

javinpaul Blocked Desbloquear Seguir Seguindo 24 de dezembro Foto de freestocks.org no Unsplash

Olá galera, é aquela época do ano novamente quando amamos passar um tempo com a família e amigos, comprar presentes para eles e mostrar nosso amor e carinho para eles.

Meu círculo de amigos tem muitos programadores e não programadores e quando se trata de comprar presentes para aniversários, aniversários ou feriados, recebo muitas perguntas de minha família e amigos que não são programadores sobre o que comprar para um programador?

Bem, comprar um presente é fácil, mas escolher o presente certo para alguém é realmente muito difícil.

Eu tive essa experiência quando se trata de comprar presentes para as crianças. Eu sei que eles gostam de brinquedos, mas minha esposa me disse para comprar algo mais valioso, que não só os manteria engajados, mas também forneceria algum valor, os ajudaria a aprender e eles apreciariam cada vez que eles usassem.

Isso é muito para atender em um único presente, mas esse é o presente perfeito, não é?

O mesmo vale para programadores, você compra algo que eles não se importam não fará diferença, eles aceitarão alegremente e permanecerão em um canto da casa.

Mas, se você der algo que eles possam usar diariamente ou esculpir, eles não apenas se lembrarão de você todos os dias, mas também apreciarão seu senso de dom.

Você estará em seus bons livros por um longo tempo. Isto é particularmente importante se você tentar impressionar seu colega ou chefe, que por acaso é um técnico ou programador.

Como qualquer presente, o orçamento é muito importante, alguns presentes são bons, mas se eles são muito caros e você não pode comprá-los, então não é útil.

Mas, se você quer dar a alguém que é querido para você, por exemplo, seu marido, namorado, irmão ou apenas um amigo próximo, você definitivamente quer comprar presentes mais valiosos.

É por isso que incluí tanto itens valiosos quanto um tanto caros, bem como muitos presentes acessíveis, que você pode comprar com menos de 100 dólares ou um pouco mais.

Os 10 melhores presentes para programadores e profissionais de TI

Aqui estão alguns dos melhores presentes que você pode dar aos seus amigos programadores. Os presentes são listados em ordem aleatória e alguns deles são caros, você pode escolher com base no seu orçamento.

1. MacBook Pro

Programadores adoram gadgets e nada supera a Apple quando se trata de gadgets. Se você é amigo do programador, não tem o MacBook Pro, então é uma boa idéia presentear isso com ele.

Claro, é caro, mas se ele é alguém que você ama ou muito próximo, então definitivamente vale a pena e quem você presenteá-lo, não vai esquecer de você por um longo tempo.

2. Associação Plurasight

O programador aprecia as associações e o Pluarlsight é como o NetFlix para desenvolvedores de software.

Ele contém mais de 5.000 cursos on-line sobre todos os tópicos mais recentes, como desenvolvimento de front-end e back-end, aprendizado de máquina, etc. Ele também inclui questionários interativos, exercícios e o mais recente material de certificação.

Como o aprendizado é uma parte importante do trabalho de programação, a associação à Plurlasight é uma ótima maneira de se manter à frente da concorrência.

Você pode comprar a associação anual do Plurasight , que custa cerca de 299 $. É um pouco caro, mas oferece muitas opções de aprendizado e seu amigo programador irá apreciar cada vez que ele o usar.

Se você está preocupado com o lado do custo, em seguida, assinatura mensal também é uma boa opção, que custa cerca de 29 $. A afiliação anual da Pluralsight é um pouco cara, mas vale cada centavo.

Btw, se você tiver sorte, você pode obter algumas ofertas de férias, da última vez eu comprei adesão Pluarlsight em 33% de desconto durante o mesmo período.

3. Assinatura do Amazon Prime Music

Outra coisa que Programers Loves é música é que eles nunca se cansam de ouvir música. Muitos programadores, na verdade, precisam de música para trabalhar e aumentar sua produtividade.

A Amazon Music é a maior coleção de músicas e seu amigo programador certamente encontrará algo que ele ama nessa grande loja de música.

Ele apreciará seus pensamentos e esforços, toda vez que ouvir música em seu fone de ouvido também.

4. Um Raspberry Pi

Raspberry Pi tem sido em torno de um tempo, mas parece que ele continua ficando incrível. Os programadores são pessoas curiosas e eles jogam com eletrônicos.

Raspberry Pi é um mini-computador inteiro por um preço ridiculamente barato e você pode obter um pacote incrível, como este, que adiciona todos os tipos de coisas legais para brincar.

Também é ótimo para mexer com uma programação de ensino para crianças ou fazer sua própria rede de servidores.

Uma vez, eu corri Linux no meu Rasberry Pi e usei putty para conectá-lo, o quão incrível é isso? Em suma, um dos melhores gadgets para presentear seu amigo programador.

5. Livros

Semelhante a gadgets e música Programadores também gostam muito de livros, mas com o livro, há confusão. Qual livro você deve comprar para eles? Um romance, um livro de programação ou outra coisa.

Bem, embora muitos programadores como livros de fantasia e romances não sejam tão valiosos para eles, mas se você comprá-los algo como

Soft Skills: Manual de vida do desenvolvedor de software read more

Git Checkout, Git Reset e Git Revert: Quando usar

A caixa de ferramentas do Git fornece várias ferramentas exclusivas para corrigir erros durante o seu desenvolvimento. Comandos como git reset , git checkout e git revert permitem que você desfaça mudanças errôneas em seu repositório.

Porque eles executam operações semelhantes, é muito fácil misturá-los. Existem algumas diretrizes e regras para quando cada comando deve e não deve ser usado. Vamos dar uma olhada!

Seja cuidadoso! Você não pode sempre refazer depois de desfazer . Esta é uma das poucas áreas em Git onde você pode perder algum trabalho se fizer errado.

Desfazendo com comandos do Git

Vamos começar esclarecendo as principais diferenças entre esses três comandos.

Confira:

  • Use isso para mover o ponteiro HEAD para uma confirmação específica ou alternar entre as ramificações.
  • Ele reverte qualquer alteração de conteúdo para aqueles do commit específico.
  • Isso não fará alterações no histórico de confirmação.
  • Tem o potencial de sobrescrever arquivos no diretório de trabalho.

Reverter:

  • Alterações de reversão que você confirmou.
  • Cria um novo commit de um commit especificado, invertendo-o. Portanto, adiciona um novo histórico de confirmação ao projeto, mas não modifica o existente.
  • Tem o potencial de sobrescrever arquivos no diretório de trabalho.

Restabelecer:

  • Use isso para retornar a árvore de trabalho inteira ao último estado confirmado. Isso descartará os commits em uma agência privada ou jogará fora as alterações não confirmadas!
  • Alterações que comprometem uma ramificação que o HEAD está apontando atualmente. Altera o histórico de confirmação existente.
  • Pode ser usado para desassociar um arquivo.

Todo comando permite que você desfaça algum tipo de mudança em seu repositório, somente check-out e reset podem ser usados ??para manipular commits ou arquivos individuais.

Usando os Comandos

Há muitas maneiras diferentes de desfazer suas alterações , tudo depende do cenário atual. A seleção de um método apropriado depende se você cometeu ou não a alteração por engano e se você a confirmou, tenha compartilhado ou não.

Desfazer alterações públicas

Cenário: Imagem que você fez git push na ramificação do hotfix para os commits que você não queria fazer ainda.

Solução: A maneira mais segura de corrigir isso é revertendo suas alterações, pois não reescreve o histórico de confirmação.

 git checkout 
 hotfix git revert HEAD~1

Resultado: Você desfez com sucesso alterações confirmadas! Tudo o que foi alterado no commit antigo será revertido com este novo commit. O Git obriga você a confirmar ou esconder quaisquer mudanças no diretório de trabalho que serão perdidas durante o checkout.

Você pode pensar em git revert como uma ferramenta para desfazer mudanças confirmadas , enquanto o git reset HEAD é para desfazer mudanças não confirmadas .

Desfazer alterações locais

Cenário: você começou a trabalhar em um recurso, mas não gostou do resultado final. Essas alterações não foram compartilhadas com mais ninguém.

Solução: Você deseja desfazer tudo nesse arquivo para o estado anterior, da mesma forma que aparentava no último commit .

 git checkout file_name.rb

Resultado: O arquivo file_name.rb foi revertido para um estado conhecido anteriormente pelo Git. Observe que isso remove todas as alterações subseqüentes no arquivo!

Você pode usar git checkout branch_name para alternar entre filiais. O Git obriga você a confirmar ou esconder quaisquer mudanças no diretório de trabalho que serão perdidas durante a operação de checkout.

Desfazer alterações particulares

Cenário: Você fez alguns commits localmente no ramo de hotfix, mas tudo é terrível! Você deseja remover os dois últimos commits do branch atual.

Solução: Redefina o ramo de hotfix para trás por dois commits, como se esses commits nunca tivessem acontecido.

 git checkout hotfix 
 git reset HEAD~2

Resultado: Nosso repositório git foi rebobinado todo o caminho de volta para o commit especificado. Aqueles que ficaram de fora agora são órfãos e serão removidos na próxima vez que o Git executar uma coleta de lixo . Por enquanto, o conteúdo deles ainda está no disco.

Você pode dizer ao Git o que fazer com seu índice (conjunto de arquivos que se tornará o próximo commit) e o diretório de trabalho ao executar o git reset usando um dos parâmetros:

  • --soft : Diz ao Git para redefinir o HEAD para outro commit, então o índice e o diretório de trabalho não serão alterados de forma alguma. Todos os arquivos alterados entre o HEAD original e o commit serão preparados.
  • --mixed : Assim como o soft, isso irá redefinir o HEAD para outro commit. Ele também redefinirá o índice para corresponder a ele enquanto o diretório de trabalho não será tocado. Todas as alterações permanecerão no diretório de trabalho e aparecerão como modificadas, mas não como encenadas.

A principal diferença entre --mixed e --soft é se o seu índice também é modificado ou não. Verifique mais no git-reset-guide .

  • --hard : Isso redefine tudo – redefine o HEAD de volta para outro commit, redefine o índice para corresponder a ele e redefine o diretório de trabalho para que ele também seja correspondido.

Dicas e truques

Eu cobrirei duas coisas adicionais que podem ser úteis durante suas aventuras no Git.

Corrigir a mensagem de confirmação anterior

Cenário: Todos cometem erros de digitação ao escrever commits e isso é completamente correto! Pode ser facilmente corrigido antes de você fazer um git push .

Solução: Apenas execute git commit --amend ou git commit --amend -m 'The new message' . Isso atualizará e substituirá o commit mais recente por um novo commit.

Refazer após desfazer

Cenário: Você fez uma git reset --hard para algumas alterações indesejadas, mas depois percebeu que realmente precisava delas.

Solução: git reflog vem em seu socorro! É um comando incrível para recuperar o histórico de projetos e recuperar quase tudo.

Espero que estas três ferramentas o ajudem sempre que você precisar desfazer suas alterações recentes.

Texto original em inglês. read more

O Guia Definitivo para os melhores Sites de Fanfiction e Fanfiction

Foto de Aziz Acharki no Unsplash

Ah, o mistério da fanfiction! Um turbilhão de aventuras, histórias e loucuras que deixa qualquer um atordoado. Eu tenho lido e escrito fanfiction sob vários pseudônimos por ~ 7 anos agora. Eu tentei todos os sites de novos sites de fanfiction como Commaful para arquivos de fanfics de nicho para os arquivos testados e verdadeiros como Fanfiction.net e AO3 . Neste artigo, vou repassar tudo sobre fanfiction, desde o básico “What is fanfiction” até revisões detalhadas de todos os vários sites fanfic.

Aqui está o TL; DR para aqueles que não querem ler a coisa toda:

  • Há fanfiction para praticamente tudo o que você é fanático e se não há VOCÊ pode começar o fandom! Procure qualquer programa, filme ou ator e você provavelmente encontrará alguma coisa!
  • Commaful e Archive of Our Own (AO3) são meus dois lugares favoritos para compartilhar e ler fanfiction (por razões bem diferentes). AO3 por causa de sua enorme biblioteca e incrível mecanismo de busca. Commaful por seus visuais lindos (eu posso usar gifs para ajudar meus fics a ganhar vida). Você tem que experimentar para experimentar a magia.
  • Fanfiction pode ser um monte de romance, sexo e “navios” (navios são quando o autor coloca dois personagens em um relacionamento romântico), mas não tem que ser. Há fanfiction para todos.

O que é Fanfiction?

Em sua forma mais simples, fanfiction é quando alguém leva um personagem, universo ou história de um cenário diferente para criar sua própria história. Esses personagens e cenários são comumente retirados de romances, programas de TV, filmes e até mesmo da vida real (olhando para você Justin Bieber e Harry Styles fanfiction writers!)

Você sabe quem é o cara com a espada vermelha? A menos que você viva sob uma rocha, você provavelmente sabe o que é Star Wars e que o nome do homem é Kylo Ren. Se você não sabe quem ele é, aqui está o que você precisa saber .

Imagine que você acabou de assistir ao filme e adora o personagem. Depois do filme, você tem todos esses cenários “e se” passando pela sua cabeça. E se Kylo matasse esse cara em vez daquele cara? E se ele tem um interesse amoroso?

Se você escrever esses cenários, o resultado é fanfiction!

Com fanfiction, as possibilidades são infinitas! Você pode colocar personagens de Harry Potter em Star Wars. Você pode reescrever cenas de filmes de que não gosta. Você pode reescrever interesses amorosos. Você pode adicionar seus próprios personagens ao universo de Hogwarts. Você pode adicionar-se ao seu romance favorito. Você pode ter seu personagem favorito vestido de galinha. Você entendeu.

Vamos tentar sua mão em algumas partes leves e curtas de fanfiction:

Uma história sobre Harry Potter e os Vingadores do AO3

Spellist – Esama – Harry Potter – JK Rowling [Arquivo de Nosso Próprio]
Um Arquivo de Nosso Próprio, um projeto da Organização para Obras Transformativas archiveofourown.org read more

Duolingo Review: O recurso oferece conteúdo atraente?

 

O Duolingo é uma das ferramentas de aprendizado de idiomas mais populares da Internet. É certamente o mais conhecido. Foi bem promovido e é grátis, o que é uma grande vantagem. Eu tenho uma quantidade limitada de tempo disponível para o aprendizado de idiomas , então, para mim, o fato de ser gratuito é menos importante do que garantir que minhas atividades de aprendizado de idiomas sejam eficazes e se adequar a como gosto de estudar idiomas.

As tarefas de aprendizado no Duolingo são agradavelmente apresentadas e habilmente gamificadas. Duolingo nos diz que podemos aprender uma língua em cinco minutos por dia, o que eu sinceramente duvido. O usuário recebe recompensas frequentes por respostas corretas. Uma variedade de mensagens é usada para nos persuadir a não desistir, mas não funcionou para mim. Eu preciso de conteúdo significativo. Mesmo com as mesmas atividades, quero-as com base em conteúdo maior, mais substancial, mais significativo.

Por razões que vou explicar abaixo, no entanto, depois de várias tentativas, eu simplesmente não consegui me aprofundar o suficiente no Duolingo para fazer uma revisão detalhada. Meus comentários aqui serão superficiais e talvez injustos. Para uma revisão mais detalhada, eu recomendo uma das melhores críticas do Duolingo que eu encontrei (abaixo), uma análise em vídeo do Duolingo by Langfocus. Vou apenas tocar em alguns problemas neste post.

Você pode realmente aprender um idioma com o Duolingo?

Pesquisando Duolingo, me deparei com um artigo afirmando que 2,3 milhões de pessoas estão usando Duolingo para aprender irlandês. Eles estão aprendendo irlandês? Eu não sei. Aparentemente, mais de 100 milhões de pessoas estão usando o Duolingo para aprender uma variedade de idiomas. O que essas pessoas realmente aprendem? Duolingo nos diz que “34 horas no site é equivalente a um semestre completo de ensino de idiomas”, baseado em um estudo pago pelo Duolingo.

Escusado será dizer que isto é uma afirmação sem sentido. O sucesso em aprender uma língua dependeria mais da atitude e do comprometimento do aluno, da linguagem envolvida e do tipo de curso universitário que está sendo comparado. Os cinco minutos diários que o Duolingo recomenda que gastemos em seu sistema podem não ser o fator mais importante que afeta o sucesso do aluno.

Stephen Krashen escreveu um excelente artigo sobre esse estudo no qual ele afirma o seguinte:

“Os participantes de seu estudo não eram típicos de estudantes universitários: sua idade média era de 35 anos, 69% eram graduados e muitos tinham pós-graduação. O tempo médio dedicado a Duolingo foi de 22 horas, mas houve variação substancial: 25% dos sujeitos completaram oito horas ou menos, com um estudante fazendo apenas duas horas. Alguns alunos fizeram muito mais que a média, com um aluno completando 133 horas. O desvio padrão em torno da média de 22 horas foi grande, 20,4 horas. Houve uma alta taxa de abandono: apenas 90 dos 156 indivíduos que iniciaram o programa duraram até o final. ”

Como esses alunos de Duolingo foram testados?

“Os participantes foram solicitados a usar o Duolingo por 30 horas e a fazer um teste padronizado, o WebCAPE , um teste de múltipla escolha que é claramente baseado em formulários.”

Múltipla escolha e gamificação, bem como tradução, estão no centro do Duolingo. Na minha opinião, eles não irão, por si só, levar à aquisição da linguagem, mesmo que muitas pessoas gostem de fazer essas coisas. Eu acredito, com Krashen, que apenas uma exposição massiva a conteúdo significativo pode fazer isso. O melhor cenário é que os usuários do Duolingo sejam introduzidos ao aprendizado de uma língua e se motivem a começar a fazer as outras coisas que lhes permitirão aprender: ler, ouvir, escrever e falar.

Duolingo é, sem dúvida, muito apreciado por muitas pessoas ou não haveria 100 milhões de pessoas usando-o. Para mim, no entanto, Duolingo é bastante limitante.

Usando Duolingo para grego

Eu tenho estudado grego por pouco mais de três meses, principalmente usando o LingQ. Eu coloquei cerca de uma hora ou uma hora e meia por dia. Isso consiste em uma hora ou mais por dia ouvindo e mais 30 minutos lendo e usando o LingQ no meu iPad. Minhas estatísticas no LingQ mostram que eu li quase 70.000 palavras, salvei quase 10.000 palavras e frases em meu banco de dados pessoal e tenho 2.700 palavras conhecidas. Passei a maior parte do meu tempo com nossa série de mini-histórias repetitivas, mas interessantes .

Eu também trabalhei meu caminho através de jornais com a ajuda de dicionários online. Eu tive cinco conversas online com tutores italki. Eu pude discutir coisas simples, como minha planejada viagem à Grécia, o que eu gosto de comer, porque eu decidi aprender grego, etc. Eu tentei falar sobre a crise econômica na Grécia, mas eu simplesmente não tenho as palavras.

No entanto, no Duolingo, onde não consigo ultrapassar o nível iniciante, sou testado em termos como

“Esta é minha tartaruga.”

“Meu cachorro bebe água.”

“Um pássaro está comendo um rato.”

As perguntas são de múltipla escolha, tradução ou ditado. É demorado fazer esses questionários e frustrante que eu continue a errar o suficiente para que eu não possa progredir para algo de interesse para mim. Mas olhando para frente, mesmo se eu passar por esses módulos básicos, o que está alinhado na minha frente são mais segmentos de comida, animais, roupas e parentes. Se algum dia superar isso, tenho a sensação de que só terei mais exercícios de múltipla escolha, tradução e ditado.

No LingQ também posso fazer cartões flash, ditado, testes de múltipla escolha e cloze, mas o vocabulário é do conteúdo de interesse que li e posso ouvir sempre que quiser, onde quer que esteja. Eu não quero fazer todo o meu aprendizado apenas sentado na frente de um computador, passando por palavras e frases desconexas.

“Acertar as coisas” nos vários testes de Duolingo não é tão significativo para mim. Eu sei, por experiência, que posso acertar as coisas hoje e depois errar uma semana a partir de agora. Eu preciso de muita exposição significativa para as coisas eventualmente afundarem.

No Duolingo não consigo explorar a linguagem. Eu tenho que enviar para o sistema. O sistema diz para mim, me diz o que aprender, coisas como “Um pássaro está comendo um rato”. Langfocus fez um ótimo vídeo sobre a natureza ridícula de muitas das frases que somos forçados a aprender em Duolingo chamado Duolingo é o Diabo! .

Tentando novamente com polonês

Mas determinado a dar uma chance a Duolingo, decidi tentar polonês. Talvez o polonês fosse melhor que o grego. Em polonês, eu entendo podcasts sobre política, li livros com a ajuda do LingQ e escutei livros de áudio sérios sobre a história da Polônia. Li 570.000 palavras de polonês, guardei 35.000 palavras e frases e sei 33.000 palavras de acordo com as estatísticas do LingQ. Eu não sei quantas centenas de horas de polonês eu escutei, mas é muito.

No entanto, mesmo em polonês no Duolingo, não posso ignorar o primeiro estágio. Eu tentei o teste de colocação para ver se eu poderia ignorar os módulos de início sobre animais, alimentos, roupas e parentes. Eu falhei, ou porque cometi erros de ortografia, erros de gramática, ou porque o áudio de texto para fala do ditado é dificilmente compreensível.

Você pode dizer que eu deveria me curvar e trabalhar nos exercícios iniciantes até que eu os consiga certo, mas eu não quero. Eu não me importo em fazer as coisas direito.

Eu quero conteúdo de linguagem que seja atraente read more

Oi, eu sou um membro do telefone viciados anônimos

Gabriella Gricius Blocked Desbloquear Seguir Seguindo 12 de janeiro

Apesar dos meus melhores esforços, parece que sou membro do Phone Addicts Anonymous (PAA). Alguns chamam de uma doença geracional, apontando para os millennials e Gen-X, Y e Zers em zombaria. Outros dão de ombros e corretamente apontam que os smartphones não vão a lugar nenhum, por que se incomodar com o dedo apontando.

Eu sou de duas mentes quando se trata do meu próprio uso de smartphone. Como parte da geração em que os telefones celulares começaram a funcionar nos últimos estágios do ensino médio, ainda me lembro do meu primeiro smartphone. Distintamente, lembro-me de não pensar em carregar esse estranho aparelho, e só percebi que precisava fazê-lo depois que ele foi desligado na mochila por dois meses.

Agora eu praticamente vivo no meu smartphone. Embora eu faça questão de não ter tempo de telefone com meu parceiro diariamente, ele ainda ocupa uma parte significativa da minha atenção durante o dia. Na verdade, meu celular me lembra que eu o faço entre sessenta e oitenta vezes por dia … um fato que é um tanto perturbador.

Foto de Yura Fresh em Unsplash

Mas os smartphones realmente merecem o mau rap que eles recebem?

Deixando de lado o desdém que muitos têm pelo uso exagerado de smartphones, você pode se perguntar se os smartphones são tão ruins quanto a mídia diz ser. Alguns estudos mostram que a luz azul difusa é o que mantém você acordado durante a noite , e

outros afirmam que os telefones são perigosos para as crianças porque alimentam a distração read more

O que eu aprendi do meu 299-Day Duolingo Streak (e porque eu nunca acertar 300)

Braden Moore Blocked Unblock Seguir Seguindo 12 de janeiro

Bom dia ! Je suis Braden. Je suis Australien. Je suis um pouco de um francófono . Na maior parte de 2017, eu tinha o hábito de praticar o francês uma vez por dia. Para fazer isso, usei o aplicativo de aprendizado de idiomas Duolingo . Minha “raia” de dias contínuos quase alcançou um marco de 300 dias seguidos – mas nunca cheguei lá. O que me levou mais do caminho foi uma rotina e um objetivo. Duolingo me ensinou muitas lições, a maioria delas em francês. Mas as mais importantes foram as 5 lições que aprendi sobre os hábitos.

Um hábito é facilitado por um amigo

Esta não foi minha primeira incursão em francês. Eu fiz um curso de 8 semanas com alguns amigos alguns anos antes. Nós até assistimos o Senhor dos Anéis em francês. Eu tinha usado o Duolingo anteriormente – e subsequentemente parei de usá-lo. Então, em 2017, quando abri o aplicativo com a coruja verde falante novamente, não pensei: “desta vez, as coisas serão diferentes”. Eu comecei a aprender.

Na época, eu tinha acabado de começar a ver alguém. Eles também estavam aprendendo uma língua – eu tive um companheiro na minha jornada. Esse fato tornou o começo da minha prática de aprendizado de idioma um pouco mais fácil. Esta foi uma lição que eu aprendi anos antes, assistindo as histórias de Tolkien na tela grande, e agora ensinei novamente:

  1. Um hábito é facilitado por um amigo.

Um amigo pode empurrá-lo para executar, pode responsabilizá-lo e compartilhar experiências com você. Juntos, isso faz com que a ação de praticar cada dia pareça sem esforço. E essa não foi minha única vantagem. Eu também tive a unidade que vem da novidade de uma tarefa do meu lado.

Duo (mascote verde fofa do Duolingo) ajuda a manter você no caminho certo com o seu hábito de aprender idiomas.

Todos nos sentimos animados sempre que começamos algo novo. Pode ser ir ao ginásio, aprender uma língua ou começar um novo emprego. No entanto, essa excitação não dura. Nosso momentum inicial logo vem contra a fricção do mundo real. Felizmente, eu tive mais do que apenas esse momento para me carregar. Foi aí que minha rotina chegou.

Para cultivar um hábito, desenvolva uma rotina

Todos os dias, eu pego o trem para o trabalho. O trem tem mais do que algumas qualidades negativas – o tempo perdido, a falta de privacidade. No entanto, possui dois traços específicos em benefício da minha aprendizagem de línguas. Minha viagem de manhã teve um tempo consistente e um lugar consistente.

Como James Clear, autor best-seller de Atomic Habits , escreve, uma das melhores maneiras de desenvolver um hábito é realizar essa ação ao mesmo tempo e no mesmo lugar. Consistentemente, mais e mais, você faz parte de uma rotina.

Todas as manhãs, sentado no mesmo trem e passando pelas mesmas estações, eu praticava meu francês. Eu havia estabelecido uma rotina. Com isso, minha veia de Duolingo estava voando alto. Desenvolver um hábito praticando ao mesmo tempo e no mesmo ambiente a cada dia era fácil. Esta foi a segunda lição:

2. Para cultivar um hábito, desenvolva uma rotina.

Cada dia eu mantive minha rotina, meu hábito só se fortaleceu. Em um ciclo virtuoso, cada sessão de treinos melhorou a chance do próximo. Você pode ir muito longe com uma boa rotina.

Para manter um hábito, tenha um objetivo read more

Os finalistas do Golden Kitty Award de 2018 estão aqui – vote agora!

Abadesi Blocked Unblock Seguir Seguindo 10 de janeiro

Na semana passada, todos vocês nomearam seus produtos favoritos de 2018 em 22 CATegories. Nós calculamos mais de 12.000 indicações. Aqui estão os finalistas.

Nosso 4º Prêmio Anual Golden Kitty está celebrando incríveis produtos, fabricantes e membros da comunidade do ano passado.

Confira a lista completa e faça um upvote de seus favoritos ??.

Para escolher nossos finalistas para “Membro da Comunidade do Ano” e “Criador do Ano”, extraímos dados de todos os 2018 e criamos um modelo para comparar indivíduos com várias métricas, incluindo (mas não se limitando a) metas do Google Maker, comentários , upvotes e lançamentos de produtos.

A votação começa hoje e encerra terça-feira 15 de janeiro às 18:00 PT. Os vencedores serão agraciados com o cobiçado troféu na quinta-feira 17 de janeiro.

Os prêmios são uma ótima maneira de destacar os projetos e as pessoas. Dito isso, estamos muito gratos a toda a comunidade Product Hunt e a todos os fabricantes ao redor do mundo que estão lançando projetos todos os dias. Aqui é para os fabricantes em todos os lugares – nós saudamos você. ?

Os vencedores do PS recebem um prêmio real do Golden Kitty pelo correio para que possam exibi-lo em perpetuidade através das mídias sociais e do IRL.

Foto cedida por Duolingo, vencedor do Golden Kitty Award 2017

Texto original em inglês.

Design System for dummies, crie o seu próprio sabor do aplicativo React Native em 3 passos fáceis

Ethan Sharabi Blocked Unblock Seguir Seguindo 8 de janeiro

Criar seu próprio aplicativo não é uma tarefa pesada hoje em dia. Enquanto há apenas alguns anos você teria que dominar dois ecossistemas diferentes para criar um aplicativo multi-plataforma, hoje, usando apenas o JavaScript com o React Native, é uma questão de minutos até você ver sua primeira tela em funcionamento no iPhone. e dispositivo Android.

Sim, é verdade, podemos discutir os prós e contras de se ter um aplicativo nativo de resposta versus um nativo, mas essa não é a razão pela qual nos reunimos aqui hoje.

Então… criar um aplicativo é fácil (ou um pouco mais fácil), mas que tal projetar um? Como alguém pode realmente construir um aplicativo bonito e impressionante?

Vamos começar com alguns exemplos

Para demonstrar o que vamos falar aqui hoje, criei dois tipos de telas, telas que você provavelmente verá na maioria dos aplicativos.

  • A tela de login
  • Uma tela típica de formulário

Isso me ajudará a mostrar como é fácil se mover entre diferentes designs e brincar com conceitos ao usar o uilib .

01 Pesquisa

Sempre comece com pesquisas sólidas, todos os bons aplicativos baseados nos mesmos fundamentos: Cores, Tipografia e Layout.

Em seguida, há o estilo. Obtenha algumas inspirações de estilo e ideias de vários sites e aplicativos. Eu posso recomendar alguns que sempre me ajudem.

  • Pinterest – basta começar a procurar por conceitos e você encontrará o que precisa.
  • Muzli – ótimo lugar para inspirações, o melhor recurso para alguns top, projetos atuais e tendências.
  • Coolors – Gere cores de tema e obtenha pré-ajustes de cores para você seguir em frente.
  • Google Fonts – Explore fontes diferentes, com diferentes pesos e faça o download gratuitamente.

Baixe, capture e imprima tudo o que achar interessante, reúna uma ideia do que você está tentando alcançar, não há motivo para reinventar a roda.

02 A Fundação

Depois de decidir uma ideia geral para o seu aplicativo e ter uma imagem clara de como ele deve ficar, é hora de criá-lo.

Como mencionei antes, cada aplicativo tem sua própria base e a base consiste em conceitos fundamentais na interface do usuário. O uilib permite que você defina essas bases e as use facilmente em todo o seu código.

Cinquenta Tons de Cinza

Primeiro são as cores. Cada aplicativo tem um conjunto exclusivo de cores que o identificam. Para Spotify é verde e preto, Pinterest é vermelho e Facebook é azul. O Google é muito limpo (ou seja, branco), mas ainda assim, usa suas cores populares azul, vermelho, verde e amarelo em todos os seus produtos.

Não precisa ter muitas cores, mas eu pessoalmente recomendo manter de 5 a 8 tons por cor.

Por quê? As sombras de causa são úteis para implementar estados diferentes (desativado, feedback de impressão, etc…)

Se, por exemplo, decidimos usar # D64933 como nossa cor vermelha, eu incluiria as seguintes tonalidades e as nomeasse red10, red20,… red50 de acordo. (quando red30 aponta para # D64933, o tom primário), é claro, você pode nomear como quiser.

Agora, com o uilib, tudo o que você precisa fazer é usar o Colors.loadColors assim:

 import {Colors} de 'react-native-ui-lib';
 Colors.loadColors ({ 
 red10: '# C37463', 
 red20: '# BD6753', 
 red30: '# B95A44', 
 red40: '# A9523F', 
 red50: '# 984938', 
 });

O uilib já vem com um conjunto de cores, incluindo os 8 tons para sua conveniência. Além disso, fornece utilidade útil para mover rapidamente entre diferentes tonalidades.

Colors.getColorTint (Colors.red30, 50) // -> Colors.red50
Colors.getColorTint (Colors.blue10, 40) // -> Colors.blue40 read more

Como carregar fontes da Web para evitar problemas de desempenho e acelerar o carregamento da página

Mattia Astorino Blocked Unblock Seguir Seguindo 17 de dezembro de 2018

Fontes da Web personalizadas são usadas em todo o mundo, mas muitos sites (muitos) as carregam indevidamente. Isso causa muitos problemas no carregamento da página, como problemas de desempenho, tempo de carregamento lento, renderização bloqueada e troca de fontes durante a navegação.

Eu vejo muitos desenvolvedores ignorando esses problemas ou talvez cometendo os mesmos erros repetidamente, porque “eles sempre fizeram isso”, mas como desenvolvedores da Web, precisamos ser capazes de nos adaptar em um ambiente em constante mudança.

É hora de quebrar esse ciclo e começar a fazer a coisa certa em 2019. Há apenas quatro etapas a serem consideradas ao carregar uma fonte da Web personalizada:

  • Use o formato de fonte correto
  • Pré-carregar fontes
  • Use a declaração correta de fonte
  • Evite texto invisível durante o carregamento da fonte.

Vamos dividir esses pontos um de cada vez.

Use o formato de fonte correto

Existem muitos formatos de fonte que podem ser usados na Web, mas apenas dois formatos são realmente necessários se você não tiver que suportar o Internet Explorer (IE) 8 ou inferior: woff e woff2 . Esses são os dois únicos tipos de arquivo que você deve usar porque são compactados no formato gzip por padrão (assim são muito pequenos), são otimizados para a web e são totalmente suportados pelo IE 9+ e por todos os outros navegadores evergreen.

Pré-carregar fontes

Ao usar fontes personalizadas, você deve dizer ao navegador para pré-carregá-las usando a tag e os atributos apropriados rel="" :

<link rel="preload" as="font" href="/fonts/custom-font.woff2" type="font/woff2" crossorigin="anonymous">

<link rel="preload" as="font" href="/fonts/custom-font.woff" type="font/woff2" crossorigin="anonymous"> read more

O que faz uma ótima landing page?

Simon McCade Blocked Unblock Seguir Seguindo 3 de janeiro

Explore o processo de design por trás de alguns ótimos exemplos de páginas de destino com o designer UI e UX baseado em Bristol, Simon McCade.

É mais crítico para os negócios do que nunca ter uma página de destino que capte a atenção de seus visitantes antes de irem para o temido botão “Voltar”. Felizmente, no entanto, o processo de design de uma ótima página de destino pode ser muito mais informado e calculado do que nunca – o truque está em descobrir quais elementos centrais são necessários para alcançar essa importante passagem.

Ninguém gosta de andar por aí. Se você não der aos visitantes do seu site o que eles querem ou, na verdade, explicar o que você acha que eles devem querer em questão de segundos, eles estarão prontos para encontrar uma alternativa melhor. Tradução: você perde vendas.

Se é um ponto de dor muito familiar para você que as pessoas estão fazendo mais saltos do que convertendo, aqui é onde você descobre o que suas landing pages podem estar perdendo e, claro, o que você pode fazer para corrigir isso.

Aqui estão os princípios que devem estar no centro de qualquer página de destino, seja para uma startup B2C corajosa passando por um lançamento ou um gigante B2B estabelecido passando por uma reformulação:

Uma proposição de valor direta

Simplificando, se um usuário tiver que trabalhar duro para entender o que você está oferecendo, ele não trabalhará duro para lhe dar tempo ou dinheiro. Os benefícios dos recursos devem ser imediatamente claros e isso pode ser realmente reforçado pelo ótimo design.

Se um usuário tiver que trabalhar duro para entender o que você está oferecendo, ele não trabalhará duro para lhe dar tempo ou dinheiro.

Tome Headspace , por exemplo. A página de destino do aplicativo popular não é apenas visualmente impressionante, mas também deixa claro como é o dia. Facilita o visitante na experiência com a visão em túnel – o cabeçalho e o subtítulo complementados por dois apelos à ação claros obtêm a proposição de valor em apenas 15 palavras. A impressão de calma e eficiência que isso comunica é uma das razões pelas quais ele foi baixado mais de um milhão de vezes.

App Headspace – Uma clara proposta de valor

Uma interface limpa e simples

A maioria dos serviços de design vai gritar sobre a importância da interface do usuário a partir dos topos das montanhas, mas muitos não acertam em todos os níveis. Se for um aplicativo ou algum software que você está vendendo, o produto em si pode prometer uma UI incrível que supera todas as expectativas do usuário, mas se a “vitrine” da página de aterrissagem criar uma barreira entre o usuário e o produto por causa de uma UI mal projetada, a viagem gaguejará e os negócios serão perdidos.

O Duolingo possui uma landing page que vai direto ao ponto crucial do desejo das pessoas de aprender um novo idioma de uma maneira que seja fácil de navegar e entender. Há praticamente zero desordem – o acesso ao produto, todos os idiomas que ele oferece e todos os dispositivos e plataformas nos quais ele está disponível são imediatamente claros, portanto não há necessidade de lidar com o site para encontrar o que você deseja. Isso torna toda a experiência agradável e gratificante, e o mesmo sentimento se aplica à gamificação do aplicativo em si.

Duolingo – Um design de página de destino organizada

UX consistente com outras atividades de marketing

Consistência é fundamental – você já ouviu isso um milhão de vezes, mas é verdade em todos os aspectos da vida digital. Os usuários não esperam apenas uma experiência consistente em um programa ou site, mas exigem uma experiência consistente em todos os pontos de contato, seja via e-mail, mídia social ou na loja.

Para um site que construiu seu nome em semelhança e interconectividade, o IFTTT oferece um excelente exemplo de uma página de destino alinhada à sua experiência geral do usuário. O estilo com o qual ele comunica seu principal benefício de tornar a vida mais inteligente é tão óbvio em seu email marketing quanto em sua landing page.

IFTTT – Design consistente que comunica a natureza do software

Uma estrutura lógica com cópia matadora

Tudo precisa trabalhar em conjunto quando se trata da página de destino perfeita. Não se trata apenas de design, não é apenas sobre cópia, não é apenas uma grande oferta. É realmente sobre tudo se reunindo em uma página coesa estruturada que mostra ao usuário a imagem completa.

Não se trata apenas de design, não é apenas sobre cópia, não é apenas uma grande oferta.

A Apple sempre fez isso muito bem quando se trata de utilizar a cópia para colocar o usuário em primeiro lugar. É tudo sobre “você” e “suas” necessidades e eles posicionam os produtos de tal forma que os faz parecer uma necessidade absoluta para atender a essas necessidades.

Apple – Design centrado no usuário para produtos centrados no usuário

Um CTA direto ao ponto

Se o tempo de atenção de um usuário estiver no lado mais curto, mexer em ação o mais rápido possível não poderia ser mais importante. É um bom equilíbrio em um mundo digital tão freneticamente competitivo, mas os concorrentes estão continuamente envolvidos em jogos de excelência quando se trata de projetos, estruturas de preços e atendimento ao cliente.

A indústria de streaming de música vê uma dessas batalhas entre Spotify e Deezer . O primeiro pode ser um pouco mais antigo que o anterior, mas eles se viram lutando na mesma idade de entretenimento sob demanda com essencialmente o mesmo produto pelo menor preço e melhor UX. Conseqüentemente, os calls-to-action em ambas as páginas de destino são financeiramente motivados para ir direto ao problema principal que a maioria das pessoas tem sobre streaming de música: o preço.

Spotify – Design despojado, mas poderoso, que atrai os usuários para o preço

Como demonstrado aqui e em muitos dos botões de registro ou inscrição, os verbos imperativos dão uma sensação real de urgência nas CTAs: ‘Obtenha Spotify Free’ e ‘Try Deezer Premium’, o último dos quais é precedido por uma menção ao preço uma sensação de ‘necessidade’ em oposição a ‘querer’.

Deezer – Um CTA simples que une custo com qualidade

Os verbos imperativos dão um senso real de urgência nos CTAs

Uma quantidade confiável de prova social

Quer queiramos ou não, muitas das nossas decisões são tomadas com base naquelas que já foram feitas por outros. Pense em como as revisões cruciais são para o ciclo de compra agora; Não é à toa que sites como o Trustpilot e o Yelp estão voando. Um relatório da Mintel descobriu que 70% dos compradores americanos buscavam ativamente avaliações antes de fazer compras – e isso foi em 2015.

Prova de outros que algo realmente vale seu tempo e dinheiro não é apenas sobre opiniões em depoimentos e resenhas; Os números de usuários e os números de vendas geralmente podem resolver o problema.

O Shopify utiliza esses tipos de prova social com números impressionantemente grandes e depoimentos positivamente brilhantes em sua landing page. Eles podem estar abaixo da dobra, mas estão estrategicamente posicionados baixo o suficiente para adicionar mais incentivo ao tipo de usuário de rolagem que ainda pode ter uma ou duas dúvidas sobre como se comprometer com a empresa em questão.

Shopify – Poder para as pessoas com design

Tornou-se um truque moderno que funciona e outra vez, por isso é uma parte crítica de qualquer landing page que valha a pena.

Público diferente, página de destino diferente

Pode haver uma série de semelhanças entre as principais páginas de destino nos dias de hoje, como podemos ver acima, mas a verdade é que não há estrutura definida para o design ideal para “uma página de destino”. Todos esses exemplos dependem de comportamentos de pesquisa exclusivos, ciclos de compra e uso de dispositivos e assim por diante, mas os princípios básicos aqui devem ser a base sobre a qual você cria suas respostas diretas aos requisitos de seu público. Faça isso direito e sua página de destino fará você certo.

Você está no processo de projetar uma nova página de destino? Entre em contato hoje para discutir como posso ajudá-lo a incorporar todos os elementos de design de UI e UX necessários para torná-lo um sucesso.

Texto original em inglês. read more

Como estilo botões usando material Theming

Um botão não é apenas um botão.

David Allin Reese Blocked Desbloquear Seguir Seguindo 12 de dezembro de 2018

A Material Design lançou recentemente orientações atualizadas sobre formas, ferramentas e estudos de caso para mostrar como é fácil modelar componentes de interface do usuário usando o Material Theming. Para ilustrar ainda mais as capacidades de temas do novo sistema de formas, criamos exemplos vivos de Botões de Material em uma variedade de temas usando Componentes de Material para a Web no Glitch. O Glitch permite que qualquer pessoa (até você) remixe esses exemplos de botão e perceba seu potencial expressivo usando o código. Em suma, os exemplos de botões a seguir torcer os mesmos botões proverbiais dentro Material Theming para alcançar resultados visuais muito diferentes. Como cada vez mais marcas existem exclusivamente no espaço digital, os componentes temáticos são agora tão importantes quanto um logotipo em como os usuários se relacionam com sua marca.

Cada botão no Glitch tem como tema uma marca ou produto fictício, como um serviço de entrega de flores ou um aplicativo de podcast. Este guia irá desconstruir o tema de cada botão em termos de marca e os sistemas Material Color, Type e Shape.

Material DIY – Aprenda a remixar esses botões você mesmo no arquivo .readme do botão.

Sinergia

App de orientação de meditação

Synergee é um aplicativo de orientação de meditação que orienta os usuários através de jornadas de meditação via tecnologia háptica e outros meios não visuais. A marca da Synergee possui os seguintes atributos: brilhante, humilde e sofisticado .

Cor

O uso de azuis claros e escuros domina a marca da Synergee e fala com seus atributos brilhantes e humildes. Ao replicar a sensação de olhar para o céu, as cores expressam uma certa familiaridade que parece agradavelmente amigável.

 $ mdc-theme-primary: # ded7ff; 
 $ mdc-theme-on-primary: # 003db8;

Tipo

A Synergee expressa seu sofisticado atributo de marca através do uso do K2D, um tipo de letra tailandês e latino criado por Cadson Demak. O K2D inclui letras tradicionais tailandesas que são inerentemente redondas e “loopy”, é legal ver como as características de design do alfabeto latino e da abugida tailandesa foram transformadas em algo único e excitante.

$ mdc-tipografia-fonte-família: unquote ("K2D, sans-serif");
$ mdc-typography-styles-button: (
tamanho da fonte: 14px,
font-weight: 500,
espaçamento entre letras: 0.05em,
); read more

Gamification: Modelo de Motivação

O caminho quebrado de cenoura e pau

Eugen E?anu Blocked Desbloquear Seguir Seguindo 3 de janeiro

H av você já se perguntou por que você jogar um jogo? Além do fato de ser relaxante, na maioria das vezes você toca um porque é divertido. Você gosta do processo de tentativa e erro e descobre coisas novas quando o joga. Se é um novo elemento de história, novo nível ou novo item no jogo.

Em meus artigos anteriores sobre gamificação, escrevi sobre o básico , por que as pessoas adoram fracassar nos jogos , recompensar os usuários com pontos . Neste, será sobre o que motiva as pessoas em certas situações e porque amamos os jogos.

Quando as pessoas aplicam o gamification a ferramentas que usamos diariamente, como apps, atividades físicas ou aprendizado de novos aplicativos de idiomas, tendemos a perder alguns elementos cruciais. Podemos olhar além de simples emblemas e conquistas com pontos e usar alguns modelos de motivação diferentes. Por exemplo, o processo de se divertir apenas para se divertir. Nenhuma recompensa extrínseca é necessária.

Mas dizer isso é mais fácil do que feito. E antes de dar um exemplo de como poderíamos encorajar “diversão por diversão”, quero que você entenda o que motiva as pessoas primeiro.

Motivação 1.0

Daniel Pink, em seu livro Drive , descreve um experimento essencial e grandioso que moldou a maneira como vemos a motivação. O experimento foi feito por Harry F. Harlow, professor de psicologia na Universidade de Wisconsin (década de 1940). Ele e seus colegas reuniram oito macacos e os colocaram em jaulas separadamente para resolver um quebra-cabeça mecânico. O quebra-cabeça consistia em puxar um alfinete vertical de um pedaço de madeira plana, soltar o gancho e levantar a tampa articulada.

Por volta do dia 13 ou 14, os macacos aprenderam a resolver o quebra-cabeças sozinhos. Mas é um pouco estranho porque ninguém lhes ensinou como fazê-lo. Ninguém oferecia recompensas por isso – comida, carinho ou aplausos. E isso é contra o nosso próprio mundo, onde tentamos recompensar cada ação nossa no trabalho com elogios, bônus, maiores salários e promoções. Então, o que é essencial para nós tirarmos desta experiência é:

Os macacos resolveram o enigma porque acharam o processo gratificante. O processo de realizar a tarefa foi uma alegria e sua própria recompensa.

Motivação 2.0

Mais tarde, em 1969, Edward Deci conduziu uma experiência semelhante, mas com pessoas, para avançar no que foi descoberto antes. Deci escolheu o cubo de quebra-cabeça Soma. É um quebra-cabeça que consiste em sete peças de plástico. Você poderia montar o quebra-cabeça como quiser e obter objetos diferentes dele. O resultado é sempre dependente da sua imaginação.

Deci reuniu um grupo de pessoas, homens e mulheres, e dividiu-as em dois grupos iguais. Durante três dias de experimentos, uma hora de sessões, ele pediu às pessoas para brincar com os quebra-cabeças. Enquanto isso, ele estava em uma sala ao lado assistindo através de uma janela.

O truque aqui foi que o Grupo A não recebeu recompensa pelo que fez no Dia 1, uma recompensa por um esforço extra no Dia 2 (dinheiro) e novamente nenhuma recompensa no Dia 3. Entretanto, o Grupo B não recebeu recompensas nos três dias. E o que Deci descobriu foi que o Grupo B jogou um pouco mais com os quebra-cabeças no Dia 3 em comparação com o Grupo A (que recebeu uma recompensa no Dia 2). Deci concluiu que:

Quando o dinheiro é usado como recompensa externa para alguma atividade, os participantes perdem o interesse pela atividade.

As recompensas podem proporcionar um aumento de curto prazo, uma pequena dose de dopamina em sua cabeça, mas cria uma dependência. O mesmo tipo de impulso que uma boa xícara de café, cujo efeito acaba em algumas horas. E esse tipo de motivação pode reduzir a motivação de longo prazo de uma pessoa para continuar o projeto.

Os seres humanos têm uma tendência inerente de procurar novidades e desafios, para ampliar e exercitar suas capacidades, para explorar e aprender. Quem está interessado em desenvolver e melhorar a motivação intrínseca em crianças, funcionários, estudantes, etc., não deve se concentrar em fatores de motivação externos, como recompensas monetárias – Edward Deci

É por isso que, sempre que você pergunta a um garoto por que ele está jogando, a resposta sempre será: ” Porque é divertido “. Mas nós colocamos muito ênfase em recompensas e conquistas, que, novamente, eu não nego, são essenciais, mas não críticas.

Diversão gamificante

Eu estava tendo uma conversa com um amigo meu que trabalha na indústria de jogos, e eu estava pedindo sua opinião sobre um projeto no qual estou trabalhando. Eu estava projetando um aplicativo que usa alguns modelos de gamificação para motivar as pessoas a escrever mais.

Mesmo que os crachás, níveis e pontos sejam uma recompensa em si, porque você tem feedback e progresso em tempo real, às vezes você precisa de um pouco mais de dinheiro. E ele me disse que as pessoas precisam ter motivação para abrir o aplicativo diariamente. As pessoas têm que descobrir algo novo quando colocam em prática. O que pode ser uma nova parte da história, ou porque eles tinham uma sequência de 7 dias, eles poderiam receber alguma informação / animação de bônus. As pessoas precisam entrar em um estado de fluxo, sempre que usarem seu produto / jogo.

Um estado de fluxo pode ser alcançado de muitas maneiras diferentes, desde que as condições corretas sejam atendidas. Surge quando temos um objetivo claro, uma tarefa desafiadora para executar e habilidades suficientes para enfrentar o desafio – ou, pelo menos, chegar perto o suficiente para nos energizarmos para tentar novamente e fazer melhor – Jane McGonigal

E sua sugestão me levou a uma ideia interessante que pode ser facilmente aplicada a aplicativos que estão tentando usar um modelo de gamificação. Missões diárias renováveis e não repetíveis.

Diário de missões

Nós amamos missões. Parece uma aventura para nós. Nós amamos ter um objetivo e encontrar maneiras de alcançá-lo. Porque é divertido e as pessoas adoram a rotina. Então, se pudéssemos dar às pessoas uma chance de pegar uma missão diariamente, isso é impossível de repetir. Eu estou no estágio inicial de desenvolver o galo de missões para o meu próprio projeto, mas eu adoraria compartilhar a idéia e o processo de pensamento com você.

Digamos que você queira motivar as pessoas a aprender um novo idioma. E vamos dar como exemplo o aplicativo popular Duolingo. O que o Duolingo está perdendo atualmente é o desafio diário de aprender esse novo idioma. As pessoas não têm a chance de fazer algo com seus conhecimentos recém-adquiridos, mas de uma maneira divertida.

Aqui está uma grande oportunidade para introduzir um galo de missões que atualiza diariamente. E você pode escolher todos ou apenas um, sempre que quiser. Por exemplo, hoje você pode receber três novas missões. Uma delas é escrever um poema curto de 4 versos com tudo que você acabou de aprender. Ou para usuários mais avançados, escreva um conto sobre um personagem fictício em um ambiente absurdo e compartilhe-o com o mundo. E, ao completá-lo, os usuários podem receber pontos extras ou experiência para subir de nível.

Implementando a ideia

O que é interessante para mim sobre esse “log” de missões diárias é que, antes de mais nada, funciona. É aplicado em muitos jogos. E geralmente, o modelo é bem direto. Você quer completar as missões diárias e receber recompensas monetárias no jogo (ouro / experiência) com as quais você pode comprar um item. Ou uma moeda única, que é obtida apenas daquelas missões diárias, com as quais você pode comprar itens especiais, que não podem ser encontrados em nenhum outro lugar.

Estou prestes a implementá-lo e estou procurando recompensar os usuários apenas com experiência extra, para subir de nível. Porque eu quero testar as quests primeiro, para ver se elas são divertidas o suficiente para que um usuário possa aceitá-las sem motivação extra – como incentivos monetários no jogo com os quais você pode comprar algo. Por quê? Porque eu considero que fazer uma missão deve ser uma recompensa e um desafio em si. Você melhora uma habilidade individual e se torna uma pessoa melhor. O que mais você precisa? Ou, como mencionado acima, as pessoas adoram o processo, se é divertido o suficiente.

Este é o caminho clássico para aumentar a auto-eficácia: aceitar um objetivo, fazer um esforço, obter feedback sobre esse esforço, melhorar uma habilidade específica, continuar tentando e, eventualmente, ter sucesso. Você não precisa de um jogo para iniciar esse caminho. Mas como é da própria natureza dos jogos desafiar e melhorar nossas habilidades, eles são uma maneira incrivelmente confiável e eficiente de chegar lá – Jane McGonigal

Outro motivo para não adicionar recompensas por quests também é o que Edward Deci descobriu. Depois de sua experiência, ele viu que adicionar certos tipos de recompensas extrínsecas em tarefas inerentemente interessantes pode frequentemente diminuir a motivação e diminuir o desempenho. Ou como o economista russo Anton Suvorov percebeu em um de seus experimentos:

As recompensas são viciantes, pois, uma vez oferecidas, uma recompensa em potencial faz com que uma pessoa a espere sempre que uma tarefa semelhante é enfrentada, o que, por sua vez, obriga o diretor a usar as recompensas repetidas vezes.

Há outro experimento interessante mencionado no livro, P unished by Rewards : “Ao longo de doze dias, alunos do quarto e do quinto ano foram recompensados por brincar com certos jogos relacionados à matemática e não foram recompensados por brincar com os outros. As crianças prontamente gravitaram para os jogos que levaram a uma recompensa. Quando as recompensas desapareceram, seu interesse por esses jogos também diminuiu. Os pesquisadores concluíram:

O uso de procedimentos poderosos de recompensa sistemática para promover o aumento do engajamento em atividades-alvo também pode produzir diminuição concomitante no engajamento de tarefas, em situações em que nem as recompensas extrínsecas tangíveis nem sociais são percebidas como disponíveis. (Greene, 1976)

Aumentar a autoeficácia dos usuários

Voltando, resolver missões diárias fáceis e repetitivas é uma ótima maneira de aumentar a auto-estima de uma pessoa e reconectar sua mentalidade. Ou como Jane McGonigal escreve em seu livro SuperBetter :

Quando você tem oportunidades constantes para tentar estratégias diferentes e obter feedback, você recebe mais freqüentes e mais intensas explosões de dopamina. Não só você tem esse prazer, mas sua mentalidade muda a longo prazo. Seu cérebro começa a olhar para coisas que não eram realizáveis antes e começa a pensar que elas podem ser alcançadas com um pouco mais de esforço. Ele espera aprender, melhorar e ter sucesso, porque é isso que é usado.

É por isso que esse recurso é uma excelente maneira de melhorar seu modelo de gamificação com alguma diversidade diária. As missões diárias estão lá esperando por você. Eles não são obrigatórios. Pegue-os sempre que quiser fazer. E o tipo de missões que você dá aos usuários é limitado apenas à sua imaginação.

Leitura adicional recomendada:

Texto original em inglês. read more

Como implementar o carregamento lento em angular

Sai gowtham Blocked Unblock Seguir Seguindo 29 de dezembro de 2018 Carregamento Preguiçoso em Angular

O Angular CLI é uma ferramenta de interface de linha de comando que pode criar um projeto, adicionar arquivos e executar várias tarefas de desenvolvimento contínuas, como teste, empacotamento e implantação.

Se você precisar atualizar o CLI Angular, poderá atualizá-lo facilmente usando os seguintes comandos.

npm install -g @angular/cli
ng new PROJECT-NAME 
 cd PROJECT-NAME 
 ng serve --open

ng new é usado para gerar clichê angular.

O que é o carregamento lento?

Carregamento preguiçoso nos ajuda a baixar as páginas da web em partes, em vez de baixar tudo em um pacote grande.

Para implementar o Lazy Loading em Angular, precisamos criar um routing module e um arquivo module.ts para o componente que precisamos para carregar com preguiça.

Na imagem acima, criamos dois arquivos que são posts-routing.module.ts e posts.module.ts .

Agora vamos ver o que precisamos codificar nesses dois arquivos.

posts-routing.module.ts read more

Se divertindo com Mixins em Angular

Mixins em Angular – O Bom, o Mau e o Feio

Christian Janker Blocked Unblock Seguir Seguindo 29 de dezembro de 2018 Foto de freestocks.org no Unsplash

No meu último post eu escrevi sobre o Statemanagement in Angular . No final, escrevi sobre um Connect Mixin que eu tinha em mente naquele momento. Ok, para ser honesto eu tinha um Componente de Ordem Superior em mente, mas isso não é tão fácil de se conseguir em Angular. Então, vamos dar um passo após o outro. O objetivo do Connect Mixin seria conectar-se a uma Loja NGRX e nos fornecer dados dela. Finalmente chegou a este writeup. Se você não ler o post inteiro, eu o encorajaria a pular para a parte do Connect-Mixin. Ou pelo menos leia a última parte: Os Mixins são ruins?

1? O que são Mixins?

A programação MixIn é um estilo de desenvolvimento de software onde unidades de funcionalidade são criadas em uma classe e então misturadas com outras classes.

Uma classe mixin é uma classe pai que é herdada de – mas não como meio de especialização . Tipicamente, o mixin exportará serviços para uma classe filha, mas nenhuma semântica será implícita sobre a criança “ser uma espécie de” o pai – [1]

Em minhas próprias palavras: Mixins são um tipo especial de herança de classes. Eles lhe dão o poder da herança múltipla e permitem que você use código de muitas classes diferentes. Mas por que?

2? Por que Mixins? ???

Eles nos permitem compartilhar o comportamento funcional cruzado. Digamos que tenhamos algumas funcionalidades genéricas para se conectar ao nosso armazenamento redux e algumas funcionalidades compartilhadas que queremos compartilhar com muitas visualizações. Uma abordagem ingênua poderia se parecer com o seguinte trecho:

Herança múltipla via estender não é permitido

Mas o compilador não está muito feliz com isso. Um erro é lançado para nós:
As aulas só podem estender uma única aula!

Como podemos resolver este problema? Mixins para o resgate ?. Vamos mergulhar diretamente em algum código. Para alcançar o comportamento desejado acima, temos que criar algumas funções que misturem (MixIn ^^) o comportamento. Essa função Mixin espera pelo menos um argumento, ou seja, a classe que queremos estender. E isso é exatamente o que está acontecendo dentro da função. Ele está retornando uma Expressão de Classe que se estende da classe determinada e adiciona um comportamento adicional sobre ela:

Amostra de MixIns

Agora podemos melhorar nossa classe base CommitView com o comportamento Connect-Mixin e o comportamento View-Mixin . Eu não quero entrar em detalhes sobre o próprio Mixins, porque já existe uma ótima introdução de Marius Schulz.

Basicamente, uma função Mixin recebe uma definição de classe e aprimora-a, estendendo-se a partir dela. No meu exemplo acima, o View-Mixin adiciona o campo viewMode e o Connect-Mixin se conecta a uma implementação de loja específica. Para a implementação completa do Connect-Mixin , navegue até 4?.

3? Mixins em material angular

Ao olhar através de alguma fonte de Material Angular, notei que existem Mixins usados também. Isso foi uma surpresa, mas faz muito sentido. Eles têm muitas funcionalidades compartilhadas entre as diferentes diretivas, como Color Mixin , Disabled Mixin , Tabindex Mixin , Error Sate Mixin ou Initialized Mixin . Construir múltiplas classes base com todas as diferentes variantes de comportamento simplesmente não seria benéfico e sustentável. Eu acho que este é um exemplo perfeito de um uso válido de Mixins.

Dê uma olhada no Color Mixin :

Antes da introdução de Mixins no Angular Material, o mesmo código era copiado e colado repetidamente em vários componentes.

4? O Connect Mixin

Como prometido acima, aqui vem o Connect Mixin. Sua tarefa é trabalhar de forma semelhante ao Connect Superior Order Component do React Redux . Ele permite que você especifique seletores e ações que são então mixadas para o determinado componente.
Nesta mini amostra, criei e conectei um componente de contador a um repositório NGRX.

Contador chato – eu sei

Vamos dar uma olhada no uso do Connect Mixin. Observe que isso mostra uma implementação muito fina de um componente contêiner . O contêiner serve exatamente um propósito: Conectar o componente do contador. Essa é uma abordagem diferente, porém limpa, dos componentes do contêiner. Por que diferente? Nos Aplicativos Angulares, muitas vezes vejo componentes de contêiner muito grandes que conectam todos os tipos de dados da loja e fazem lógica de negócios adicional neles. Eles não cumprem o Princípio da Responsabilidade Única de alguma forma.

Para poder usar a injeção de dependência do Angular, temos que adicionar a classe CounterViewBase entre e estender o container da classe Mixins criada. Isso ocorre porque as classes Mixin devem ter um construtor com um único parâmetro de repouso do tipo any[] e, portanto, não podemos injetar o Injector diretamente no Mixin.

No modelo abaixo, chamamos diretamente os métodos que foram vinculados ao contêiner por meio do Connect-Mixin. Esses métodos são acessíveis através do objeto vm . Esta é uma limitação que temos que tomar para nos mantermos compatíveis com AOT . Você pode nomear o que quiser, no entanto. Importante é apenas que a variável seja conhecida pelo modelo antecipadamente.

O modelo do contêiner do contador

O Connect-Mixin em si espera um componente que tenha um injetor, portanto criamos a interface HasInjector . Precisamos do injetor para obter o serviço de armazenamento NGRX em tempo de execução. Poderíamos ter injetado a Loja NGRX diretamente no contêiner, mas eu queria dissociar o contêiner da implementação da loja que estamos usando.

Embora eu não esteja usando o objeto vm no componente contêiner neste exemplo, os tipos Entradas <I> e Saídas <O> nos dariam um tratamento seguro contra tipos.

5? Os Mixins são ruins?

Eu tenho que admitir que eu era uma composição de favor sobre o evangelista de herança até que eu fizesse este artigo. Eu tentei evitar herança, especialmente herança múltipla, a todo custo. Mas o mundo não é apenas preto ou branco, e para bibliotecas de componentes como o Material Angular usando Múltiplas Heranças via Mixins faz sentido.

Eu não usaria excessivamente Mixins embora.

Se você precisar de muito mais comportamento dinâmico em seus componentes, eu me esforçaria para “Composição sobre herança”. A composição permite o comportamento intercambiável em tempo de execução e adere ao princípio fechado fechado.

Ainda na fila
Próximo post será sobre o tema de Mixins vs componentes de ordem superior.
Se eu mantiver o ritmo, terminarei em junho de 2019. Brincadeira ?

Confira a fonte completa do exemplo no Github

? ? Tudo de melhor para 2019 ? ?

Siga-me no Twitter 🙂

Texto original em inglês. read more

React vs Angular vs Vue: Quem ganha em 2019?

Andrei Neagoie Blocked Desbloquear Seguir Seguindo 8 de novembro de 2018 Artigo # 98310931831 sobre este tema

Não importa. Se você quer ser um ótimo programador, precisa mudar sua mentalidade e parar de pensar em termos do que é melhor usar. O que ganha? O que me dará o maior salário?

Grandes programadores pensam em termos de prós e contras. Quando você deve escolher uma ferramenta sobre a outra? Por que essa ferramenta foi construída? Por que seria bom em alguma situação e não nos outros?

Ps esta é a parte 1 de uma série de 2 partes . Você pode ler a segunda parte aqui .

Ser míope e declarar uma biblioteca / estrutura para governá-los é apenas dito por pessoas que não conhecem sua história. jQuery, Backbone, AngularJS, foram todos úteis quando saíram. Eles forneceram 10x benefícios para o que havia antes. Mas, eventualmente, todos eles evoluem e seguem em frente à medida que a comunidade cresce, as plataformas da Web mudam e as preferências do usuário mudam.

Então, o que você deve aprender em 2019? No final, todos esses 3 permitem que você crie aplicativos rich front end. Em geral, nenhum é significativamente melhor que o outro (o que é necessário para a próxima onda).

Angular é a cozinha inteira que fornece todas as ferramentas necessárias para você criar a refeição que é seu aplicativo da web. Se sou um banco com muitos desenvolvedores, gosto do Angular para manter todos trabalhando no mesmo padrão. Reaja é o forno. É muito provável que você precise de mais ferramentas para assar esse bolo, mas permite a flexibilidade de escolher e escolher quais ferramentas você deseja com base nas suas necessidades. Se eu sou uma empresa de tecnologia com desenvolvedores experientes que podem tomar boas decisões, gosto do React.js. Vue é o microondas que permite que você comece a trabalhar muito rápido e torne sua vida culinária mais eficiente e fácil. Se eu for uma startup com uma equipe jovem de desenvolvedores e um prazo rigoroso, eu gosto do Vue.js.

Claro, o acima é um exemplo simples e há muito mais coisas a considerar. No entanto, o que você deve aprender não é a última moda, framework, a nova API experimental do React Hook , etc. Não me entenda mal: é bom saber essas coisas se você estiver trabalhando diretamente com elas, mas daqui a 5 anos , a paisagem vai mudar.

Os grandes programadores são aqueles que sabem como usar pelo menos uma dessas ferramentas, mas, mais importante, eles veem a razão de alto nível de por que essas tecnologias existem e podem tomar decisões sobre quando usar uma sobre a outra quando chegar a hora. Eles estão prontos para a próxima onda e têm uma mentalidade de longo prazo: Aprenda os fundamentos e aprenda quais problemas cada ferramenta resolve e esteja pronto para a mudança.

Quanto mais anos de experiência você tiver, mais começará a perceber que, para acompanhar a indústria, não precisa memorizar cada API, ouvir cada podcast, assistir a todas as palestras da conferência ou ler cada postagem de blog. Você precisa dos princípios fundamentais que fundamentam todas essas ferramentas. É por isso que os grandes programadores sabem sobre estruturas de dados e algoritmos, como os compiladores funcionam, como os padrões de projeto podem ajudar a construir grandes sistemas (embora você possa ser míope no sentido inverso e achar que essas bibliotecas são inúteis … o que é simplesmente tão ruim).

Reagir vs Angular vs Vue? Qual deles você deve escolher em 2019? Não importa. Continue aprendendo e não se esqueça dos tópicos de ciência da computação testados e comprovados que fundamentam tudo. Há uma razão pela qual as grandes empresas de tecnologia fazem perguntas sobre estruturas de dados e algoritmos em uma entrevista.

Apenas certifique-se da próxima vez que alguém lhe perguntar: “Por que você escolheu React?” Você tem uma boa resposta para dar a eles.

Ps esta é a parte 1 de uma série de 2 partes . Você pode ler a segunda parte aqui .

Texto original em inglês.

Showdown de tendências tecnológicas?: React vs Angular vs Vue

Andrei Neagoie Blocked Desbloquear Seguir Seguindo 10 de dezembro de 2018

Espere, eu já não escrevi sobre isso ? Bem… sim, mas muitos de vocês se queixaram de não lhe dar uma resposta real. Então, aqui é algo para aqueles que amam números concretos e estatísticas.

Analisaremos postagens de emprego, estatísticas de desenvolvedores, números de downloads e outros fatores, para realmente explodir na nuvem difusa React, Angular e Vue, e decidir o que você deve aprender em 2019 para sua carreira .

Metodologia:

O objetivo é realizar uma pesquisa imparcial com base nos critérios:

Demanda de trabalho – qual é a demanda de trabalho real e os trabalhos disponíveis com cada uma das três bibliotecas e estruturas.

Uso do desenvolvedor – qual dos três desenvolvedores e programadores estão usando?

Opinião do desenvolvedor – você quer aproveitar a ferramenta que está usando. Como os desenvolvedores se sentem em relação a cada um desses três?

Neste artigo você encontrará seções sobre os tópicos acima. Idealmente, queremos escolher a ferramenta que é a mais procurada, o que nos permitirá ter uma maior chance de empregabilidade, ao mesmo tempo em que mantemos em mente que queremos aproveitar o trabalho com a biblioteca. Finalmente, queremos escolher o que não está em declínio, mas, em vez disso, tem um futuro brilhante e está crescendo na comunidade de desenvolvedores. Vamos começar!

Importante : De vez em quando, vou jogar meus 2 centavos no tópico, mas como em tudo, você deve fazer sua própria pesquisa e decidir por si mesmo o que aprender e dominar. Eu escrevi sobre isso antes . Eu forneço alguns números que você pode usar e expandi-los como quiser, para decidir por si mesmo. Se eu perdi alguma coisa, ou você quer adicionar algo, me avise nos comentários.

Todos os dados e números encontrados abaixo estão atualizados até o momento da publicação (10 de dezembro de 2018). Este artigo será atualizado a cada poucos meses para acompanhar as tendências.

Demanda de trabalho

Eu arriscaria adivinhar que este é um dos fatores mais importantes, se não o mais importante, para você decidir o que aprender em sua carreira. Afinal, o tempo é um recurso valioso quando há tantas coisas para aprender, então você quer ter certeza de escolher o que lhe dá dinheiro. Vamos dar uma olhada nos números:

Qual é o número de postagens de emprego para desenvolvedores React, Angular e Vue?

Os mesmos dados acima, visualizados de uma maneira diferente:

E os números reais:

Meus critérios para selecionar os dados foram os seguintes:

O LinkedIn é o maior quadro de empregos atualmente para a tecnologia, portanto, essa é uma pesquisa mundial de ofertas de emprego de desenvolvedor para cada biblioteca.

De fato , o SimplyHired e o Dice são três grandes postos de trabalho de tecnologia nos EUA, então a pesquisa é geograficamente direcionada para lá. Você não pode morar nos EUA, mas é bom ver o que está acontecendo em um local muito importante para a tecnologia.

AngelList é provavelmente a melhor placa de trabalho para startups. Nós conseguimos ver quais startups e as empresas mais novas e mais modernas estão usando na tecnologia.

Contratado é uma plataforma de contratação que ajuda as empresas a buscar talentos em engenharia. É interessante ver a perspectiva deles sobre o que as empresas estão procurando, pois tendem a postar apenas o trabalho das grandes empresas de tecnologia.

Remoto é uma seção especial que adicionei para me divertir: usei trabalhos remotos encontrados em indeed.com e também em remote.co como uma forma de avaliar quantas oportunidades de trabalho remoto estão disponíveis para cada uma das três bibliotecas.

O que vemos nos dados: read more

Criando seu primeiro aplicativo para Android

Packt_Pub Blocked Unblock Seguir Seguindo 18 de dezembro de 2018

Na programação, é tradição que o primeiro aplicativo de um novo aluno use qualquer linguagem / sistema operacional que esteja usando para dizer olá ao mundo. Neste tutorial, criaremos rapidamente um aplicativo que faz exatamente isso.

Nota

O código completo pode ser baixado em https://github.com/PacktPublishing/Android-Programming-for-Beginners/tree/master/Chapter%2001 .

Siga estas etapas para iniciar o projeto.

1. Execute o Android Studio da mesma maneira que você executa qualquer outro aplicativo. No Windows 10, por exemplo, o ícone de lançamento aparece no menu Iniciar.

Nota

Se você for solicitado a importar as configurações do Studio de… :, escolha Não importar configurações .

2. Você será saudado com a tela de boas-vindas do Android Studio, conforme mostrado na captura de tela a seguir. Localize a opção Iniciar um novo projeto do Android Studio e clique nele com o botão esquerdo:

3. Depois disso, o Android Studio exibirá a janela Novo projeto . Aqui é onde vamos realizar o seguinte:

  • Nomeie o novo projeto
  • Escolha onde no nosso computador os arquivos do projeto devem ir
  • Forneça um domínio da Empresa para distinguir nosso projeto de quaisquer outros, caso decidamos publicá-lo na Play Store

4. O nome do nosso projeto será Hello World e o local dos arquivos será sua pasta AndroidProjects.

5. O domínio da empresa pode ser quase tudo que você gosta. Se você tiver um site, poderá usar o formato Yourdomain.com. Se não, sinta-se à vontade para usar o gamecodeschool.com, ou algo que você acabou de criar sozinho. Só é importante quando você vem para publicar.

6. Para ser claro, caso você não consiga ver os detalhes na captura de tela a seguir com clareza, aqui estão os valores usados. Lembre-se de que o seu pode variar dependendo das opções de domínio da empresa e do local do projeto:

Nota

Observe que o nome do aplicativo tem um espaço entre “Hello” e “World”, mas o local do projeto não funciona e não funcionará se isso acontecer.

7. A captura de tela a seguir mostra a tela Novo Projeto depois de inserir todas as informações:

8. Na captura de tela acima, você pode ver que o Android Studio gerou automaticamente um nome de pacote com base nas informações inseridas. O meu é com.gamecodeschool.helloworld . O seu pode ser o mesmo ou pode ser diferente; Não importa.

Nota

Você pode escrever aplicativos para Android em alguns idiomas diferentes, incluindo C ++ e Kotlin. Existem várias vantagens e desvantagens para cada um, em comparação com o uso de Java. Aprender Java será uma ótima introdução para outras linguagens, e Java também é a língua oficial do Android. A maioria dos principais apps e jogos da Play Store é escrita em Java.

9. Clique no botão Avançar e continue configurando o projeto Hello World. O seguinte conjunto de opções é a janela Target Android Devices . Você pode deixar as opções padrão selecionadas, pois você está apenas fazendo aplicativos para telefone e tablet . A opção Minimum SDK pode ser deixada como está, porque significa que o jogo será executado na maioria (quase todos) de dispositivos Android, do Android 4.0 até a versão mais recente.

10. Esta próxima tela mostra a janela Target Android Devices que acabamos de discutir, principalmente apenas para sua referência:

11. Clique no botão Next .

12. A janela que se segue tem um título ligeiramente obscuro, Add an Activity to Mobile . Estes são alguns modelos de projetos úteis que o Android Studio pode gerar para você, dependendo do tipo de aplicativo que você vai desenvolver.

Nota

Como uma breve introdução, uma Atividade é uma classe especial da API e todo aplicativo Android deve ter pelo menos um. É a parte do código em que seu aplicativo será iniciado quando for iniciado pelo usuário e lidará com a interação com o usuário. As opções nesta tela fornecem diferentes modelos prontos de código da classe Activity para dar aos programadores um rápido início ao criar vários tipos de aplicativo. Como estamos começando do zero, a opção mais apropriada para nós é a atividade básica .

13. Vamos usar a opção Atividade Básica . O Android Studio gerará automaticamente uma pequena quantidade de código e uma seleção de recursos para iniciar o projeto.

14. Selecione Atividade Básica . Aqui está uma captura de tela da guia Adicionar uma atividade ao celular com a opção Atividade básica selecionada:

15. Certifique-se de que a atividade básica esteja selecionada e clique em Avançar .

16. Na tela Personalizar Atividade , que você deve estar vendo agora, temos algumas alterações a serem feitas. Poderíamos deixar os padrões como estão, mas o Android geraria mais arquivos do que precisamos. Além disso, queremos alterar o Nome da Atividade para algo mais apropriado que o MainActivity . Siga esta pequena lista de alterações para configurar a tela Personalizar atividade :

  • Alterar o nome da atividade para HelloWorldActivity
  • Observe que o nome do layout muda automaticamente para activity_hello_world . Deixe isso como está.
  • Observe que o título muda automaticamente para HelloWorldActivity . Mude para My First Activity .
  • Deixe a opção Usar um fragmento desmarcada.

17. Verifique se é assim que a tela Personalizar atividade se parece quando você termina a etapa anterior:

18. Finalmente, para esta seção, você pode clicar no botão Concluir e explorar um pouco do que você (e o Android Studio) acabou de alcançar.

O Android Studio preparará seu novo projeto. Isso pode levar alguns segundos ou alguns minutos, dependendo de quão poderoso é o seu PC.

Neste estágio, você pode estar pronto para continuar, mas dependendo do processo de instalação, talvez seja necessário clicar em alguns botões extras.

Veja a janela inferior do Android Studio para ver se você tem a seguinte mensagem:

Nota

Observe que, se você não visualizar uma janela horizontal na parte inferior do Android Studio como a mostrada abaixo, poderá ignorar essas duas etapas adicionais.

Etapa extra 1

Se você vir algo como a captura de tela acima, clique em Instalar plataforma (s) ausente (s) e projeto de sincronização , aceite o contrato de licença e clique em Avançar , seguido de Concluir .

Etapa extra 2

Se você receber outra mensagem como esta:

Clique em Instalar ferramentas de construção… . e, em seguida, clique em Concluir .

Nota

Você pode arrumar a tela um pouco e fechar essa janela horizontal inferior clicando na guia Mensagens na parte inferior do Android Studio, mas isso não é obrigatório.

Espero que tenha gostado de ler este artigo. Se você gostaria de explorar o Android em mais detalhes, você pode conferir, Programação Android para Iniciantes – Segunda Edição . Um guia abrangente e acessível, a

Programação Android para Iniciantes – Segunda Edição read more

Algoritmo para encontrar anagramas

Brandon Skerritt Blocked Unblock Seguir Seguindo 2 de janeiro

Encontrar anagramas de palavras não parece um problema difícil, mas tem uma solução interessante.

Um anagrama é uma palavra ou frase que pode ser transformada em outra palavra ou sentença. Elvis tem todas as mesmas letras que Vidas, então Elvis é um anagrama de Vidas.

A maneira como a maioria das pessoas resolveria imediatamente esse problema seria pegar uma palavra, passar por todas as palavras do dicionário e ver se as combinações de letras correspondem exatamente.

A maneira de fazer isso usará um multiconjunto . Conjuntos são como matrizes onde a ordem não importa e as repetições não são permitidas. Com um array, [a, b] não é o mesmo que [b, a]. Mas com um conjunto, (a, b) é o mesmo que (b, a).

Os conjuntos não permitem repetições. Então (a, a, a, a, a, b) é o mesmo que (b, a) – porque o primeiro conjunto seria transformado em (a, b).

Um multiset é um conjunto que permite repetições, mas a ordem não importa. Para este exemplo, vamos começar pequeno.

Com nosso exemplo, temos uma lista chamada dicionário onde cada item desse dicionário é uma palavra. Queremos descobrir quais dessas palavras são anagramas de “Elvis”, então o que fazemos é fazer um loop no dicionário da seguinte forma:

Nota: não é assim que os multisets funcionam em Python, mas estou usando principalmente isso para ilustrar um ponto. Você pode descobrir como os multisets funcionam aqui . Você, provavelmente.

Você está certo. Isso é muito lento. Funcionaria, mas temos 2 problemas. O primeiro problema é que a capitalização não fará os multisets iguais. O segundo problema é que mais espaços podem aparecer na sentença de saída do que na palavra original.

Como exemplo, “carne assada” é um anagrama de “coma para a BSE”.

Com duas frases como “roast beef” e “eat for BSE”, se as transformassemos em multisets, elas não seriam iguais devido à quantidade diferente de espaços. Há outra maneira de calcular se duas sentenças são anagramas uma da outra. O teorema fundamental dos estados aritméticos:

Cada inteiro é um número primo ou pode ser representado como o produto de números primos e, além disso, essa representação é única, a ordem dos fatores.

Números primos são números que possuem apenas dois fatores – o número em si e 1.

Se atribuirmos cada letra do alfabeto a um número primo, assim:

E assim por diante, então calcule o produto desses números esse número é único – por causa do teorema fundamental da aritmética.

Isso significa que, para um multiset de letras, o produto de números primos para cada letra nesse multiconjunto é único. Se duas palavras ou frases tiverem o mesmo número, essas duas palavras ou sentenças são anagramas umas das outras. Vamos ver um exemplo rápido, é “BAC” um anagrama de “A Bc”?

Determinar quais palavras são anagramas de outras palavras seria tão simples quanto criar um dicionário de {Word: Fatoração Primária} e então agrupar toda a fatoração primária.

Agora, dadas duas frases, podemos facilmente dizer se elas são anagramas umas das outras.

Gostou deste artigo? Conecte-se comigo nas mídias sociais para discutir todas as coisas relacionadas à ciência da computação ?

Twitter | Instagram | LinkedIn

Não se esqueça de clicar no botão ?clap? para mostrar a sua apreciação!

Eu não fui pago por escrever este artigo. Se você quiser me apoiar ou gostou deste artigo, sinta-se livre para me comprar uma xícara de chá ou algo abaixo ??

Pague Brandon Skerritt usando o PayPal.Me
Vá para paypal.me/BrandonSkerritt e digite o valor. Como é o PayPal, é fácil e seguro. Não tem um PayPal… www.paypal.me read more

Yahoo.com PWA, Parte 1: Introdução

Pavan Ratnakar Blocked Unblock Seguir Seguindo 3 de dezembro

Breve história

Y ahoo recentemente abraçou Progressive Web App (PWA) e lançou um novo aplicativo móvel da Web independente chamado Yahoo Lite. O PWA é uma tecnologia empolgante que permite que nossos usuários em todo o mundo se beneficiem dos aprimoramentos que podem oferecer.

Já lançamos em mais de oito países (expandindo para muito mais). As melhorias de desempenho e o crescimento do engajamento do usuário da web móvel e do Yahoo Lite nos deram grande confiança nos recursos do PWA. No entanto, a criação de um PWA na escala do Yahoo exigiu que fizéssemos as coisas de maneira diferente.

Presumimos que você tenha alguma familiaridade com o Progressive Web App (PWA) . Caso contrário, leia a documentação do Google sobre o PWA . Queríamos compartilhar nossos aprendizados e experiências em três partes ( Post 2 e Post 3 ). Cada parte é dividida em quatro seções: What , How , Challenges and Conclusion . Esperamos que você ache essas postagens informativas e acreditamos firmemente que os PWAs ajudam a preencher a lacuna entre recursos nativos e da Web.

o que

Quando começamos nossa jornada, nos fizemos algumas perguntas:

  • Podemos construir simultaneamente um PWA para Android e iOS?
  • Devemos reconstruir nossa pilha de tecnologia e começar do zero?
  • Precisamos usar o modelo de shell do aplicativo?
  • Quem deve lidar com nossas estratégias de busca de chamadas XHR: service worker ou biblioteca de clientes?

Como

Nós já tínhamos começado a trabalhar em uma re-arquitetura para Web móvel do Yahoo.com Nossa nova biblioteca de clientes estava evoluindo, um investimento que nos ajudou a reduzir nosso tamanho de JS em 68%. Também conseguimos reduzir os tamanhos de HTML e CSS em 48% e 76% , respectivamente, com bons aprimoramentos nos seguintes tempos: AFT (tempo da dobra), tempo até o primeiro byte, início da renderização, tempo de resposta do serviço e tempo interativo do DOM . Sabíamos que poderíamos levar isso adiante adotando os recursos do PWA . Quando começamos a trabalhar no nosso PWA, o Safari tinha acabado de lançar suporte para o service worker. No entanto, após algumas experiências, percebemos que o suporte do Safari era limitado:

  • Modo autônomo é buggy. Estávamos enfrentando problemas com cookies persistentes entre o modo de web do Safari e o modo autônomo.
  • Todos os links abrem em uma nova janela para o modo autônomo (há uma solução , mas não é elegante).
  • O Safari não instala binário como o Android Web APK, fazendo com que adicionar à tela inicial apenas outro marcador, limitando suas capacidades e resultando em ícones duplicados.
  • O Service Worker no Safari ainda não está totalmente amadurecido.

Tendo em conta o modo autônomo do Safari e as limitações do trabalhador de serviço, decidimos começar com o Android

Como parte de nossa migração tecnológica, não quisemos introduzir novas mudanças radicais. Numerosos artigos como este um na web app progressiva também falar sobre Reagir. Embora o React seja incrível, infelizmente não se encaixou em nosso caso de uso da página inicial.

Decidimos continuar com nossa migração de tecnologia sem fazer nenhuma alteração significativa. Os benefícios progressivos do aplicativo da Web são agnósticos em bibliotecas e frameworks

A web móvel do Yahoo.com é um aplicativo de página única parcial. Temos diferentes stacks de tecnologia que alimentam diferentes páginas, então mudar para um modelo de shell de aplicativo exigiria muito mais mudanças e nós queremos servir o Yahoo start_url com conteúdo do servidor para fins de SEO. Temos uma boa mistura de navegações de páginas e navegações de clientes. Dados os benefícios limitados para nosso caso de uso:

Decidimos criar nosso aplicativo da Web progressivo e páginas em torno dele sem o modelo de shell do aplicativo

Como parte de nossa nova biblioteca de clientes, decidimos não aproveitar o service worker para as chamadas XHR, pois queríamos aprimorar nossa experiência em sistemas operacionais e navegadores. Nós não temos um service worker em todas as nossas propriedades e páginas. Se você tiver chamadas de pré-busca em lote como nós, o armazenamento em cache do service worker poderá não funcionar.

A adição de estratégias de busca no cliente nos deu muito mais flexibilidade e alcance

Como parte de nossa biblioteca de clientes, criamos um componente de busca muito poderoso. Fetch é o que usamos para fazer chamadas XHR e montar o novo DOM usando o fragmento de documento na página. Nós otimizamos isso ainda mais usando GPU para a maioria das nossas animações (vamos postar sobre isso no futuro).

Para adicionar aos nossos recursos de componentes de busca, também adicionamos as estratégias de busca ” Network First ” e ” Cache First “.

Fluxo simples de buscar

Primeira estratégia de rede

  • A busca tentará primeiro recuperar dados pela rede.
  • Em uma chamada de rede bem-sucedida, o componente Fetch responderá com dados e gravará os dados mais recentes no cache no modo assíncrono (não bloqueando a solicitação).
  • Se a rede falhar, ela procurará no cache e servirá do cache, se disponível.
  • A busca será exibida a partir do cache, mesmo se o cache for obsoleto.

Primeira estratégia de rede

Cache primeira estratégia

  • O Fetch tentará primeiro obter dados do cache com tempo limite de 1.000 ms.
  • Ele tentará servir a partir do cache se o cache existir e não tiver expirado.
  • Se o cache não existir, expirar ou o cache expirar, o Fetch será exibido na rede.
  • Em uma chamada de rede bem-sucedida, responderá com dados e gravará no cache no modo assíncrono (não bloqueando a solicitação).
  • Se a pesquisa de cache inicial e a rede falharem, ela será analisada novamente no cache com tempo limite maior e será atendida a partir do cache, se disponível. Usamos um tempo limite maior para a segunda pesquisa para levar em consideração a lentidão ocasional do IndexedDB que observamos como parte de nossas medições.
  • A busca será exibida a partir do cache, mesmo se o cache for obsoleto.

Cache primeira estratégia

Desafios

IndexedDB e nossos aprendizados

Estamos usando o IndexedDB para armazenamento em cache. O IndexedDB é realmente incrível e fornece um banco de dados assíncrono baseado em transação no navegador. No entanto, ainda tivemos nossa parcela de aprendizado ao usá-lo.

  • As operações de BD indexadas são assíncronas, mas as operações de leitura / gravação podem ser lentas ocasionalmente. Veja abaixo alguns dos nossos dados de outro projeto.

Tempo gasto para inicializar a conexão entre os navegadores no Android:

Inicialize o tempo indexedDB por 24 horas

<100ms = 48,9%

> 100 ms e <500 ms = 37,7%

> 500 ms e <1000 ms = 7,1%

> 1000ms = 6,2%

Tempo gasto para recuperação de registros da loja nos navegadores no Android

Registre o tempo de recuperação por 24 horas

<100ms = 13,1%

> 100 ms e <500 ms = 37,7%

> 500 ms e <1000 ms = 64,5%

> 1000ms = 12,8%

Tempo gasto para atualização de registro de loja em navegadores no Android

Atualizar o tempo por 24 horas

<100ms = 71%

> 100 ms e <500 ms = 22,8%

> 500 ms e <1000 ms = 3,5%

> 1000ms = 2,7%

  • Criar um índice no campo correto ao criar uma loja é essencial.
  • Use ‘onupgradeneeded’ cuidadosamente (consulte nosso código abaixo).
  • Não use DB para ler até que a loja seja criada.
  • Divida suas transações de leitura / gravação (consulte nosso código abaixo).

Aqui está um exemplo de como lidamos com nossos eventos de conexão, onerror e onupgradeedeeded . Se você perceber, temos várias verificações determinando quando podemos realizar operações. Garantir que o banco de dados e todas as lojas sejam criados é essencial, já que as lojas não seriam criadas nunca até que a versão do

banco de dados seja atualizada read more