Pesquisar este blog

terça-feira, 27 de dezembro de 2016

StartUp Dica Quente


"Serviços bancários são essenciais, bancos não são.” 


Esta celebre frase foi pronunciada por Bill Gates em 94 quando o Departamento de Justiça americano travou um negócio de US$ 1,5 bilhão ofertado pela Microsoft para a compra da Intuit que desenvolvera uma ferramenta voltada para a gestão pessoal chamada Quicken. Muitos anos se passaram e a egemonia das grandes instituições financeiras permanece mas, o aparecimento das fintechs ressuscita a frase de uma forma provocativa.

As startups de tecnologia financeira tem como objetivo fornecer serviços ou produtos financeiros que substituam ou melhore os oferecidos pelos bancos tradicionais, gerando preocupação entre eles. Destacam-se pela agilidade e inovação atraindo jovens ambientados com o mundo digital. São pequenas, ágeis e voltadas para a solução de problemas e por esse motivo conseguem mudar o rumo dos negócios rapidamente em detrimento as grandes e lentas estruturas da instituições financeiras. Atuam em vários segmentos como crédito, empréstimo, entre outros mas, existem várias outras possibilidades de negócios a serem exploradas.

Especialistas apostam na inovação nas áreas de crédito, empréstimos para pequenas empresas com ou sem garantia e financiamento imobiliário. Modelos como os praticados na Europa com investimentos exclusivos para mulheres ou jovens é uma tendência, afirmam eles. 

Por outro lado, a maior dificuldade enfrentada pela fintechs é a ampliação de portofólio pois, conseguem ofertar apenas um bom serviço ou produto. Ainda não houve startup que tenha ofertado possibilidades similares a de um banco. Assim como, aumentar a base de clientes é uma barreira a ser superada. Outro ponto a se observar é o jurídico pois, os ambientes regulatórios variam de país para país.

Por mais que se pense ao contrário, atualmente, o ambiente entre os bancos e as fintechs é de cooperativismo a ponto de serem criadas encubadoras como CUBO do Itaú e InovaBRA do Bradesco  para estreitar a relação. Se por um lado os bancos procuram aprender e entender os modelos de negócios praticados, por outro eles tentam buscar a colaboração quando os interessa  e até mesmo absorvem por meio de compra.

A criação de uma fintech pode ser uma boa opção para quem pretende empreender em 2017.

Fonte: Sebrae - PEGN

segunda-feira, 12 de dezembro de 2016

Tendências para 2017


As empresas brasileiras comprovaram em 2016 que na crise surgem oportunidades. O consumo menor forçou uma corrida por eficiência e redução dos custos por meio da tecnologia. Assim como, surgiram novos modelos de negócios e diferentes possibilidades de relacionamento com os seus clientes. Logo que a economia demonstre sinas de que está se recuperando será a hora de manter em pé os pontos positivos conseguidos.

As empresas se enxugaram inovando na comunicação e na produção por exemplo. A tendência para 2017 é inovar com agressividade pois foi percebida a necessidade  de transformação nos seus modelos de negócios. A compra de uma start-up, que atraiu 3,2 milhões de homens interessados em receber um kit de barbear, pela quantia de US$ 1 bilhão pela Unilever é um exemplo. Segundo alguns analistas, uma empresa do porte da Unilever dificilmente coseguiria criar um modelo de negócio deste tipo na sua estrutura corporativa. Isso significa que empresas deste porte tendem a buscar por novos modelos de negócios em uma tentativa de prosperar. 

A tecnologia é o eixo motor para que se possa inovar internamente e externamente em qualquer área de atuação. Ela tem possibilitado a relação das empresas por canais nunca antes utilizados e para isto se torna necessário, quase obrigatório, a criação de conteudo pois, como o consumidor é orgânico as empresas precisam expor as suas marcas em todos os lugares onde ele consome informação.

As grandes empresas estão se reinventado produzindo videos e séries 100% on-line sem ter a intenção de conduzir estes consumidores para os seus sites entendendo que as campanhas se resolvem pelo fato deste simplesmente assistir ao seu conteudo. Esse tipo de comunicação tem se mostrado eficiente para "encantar" os clientes que enxergam isso como uma forma de evolução refletindo a importância da inovação.

Em meio a uma crise o consumo é reduzido retirando determinados produtos do carrinho mas, este cliente ainda quer ser encantado pelas marcas. E as marcas que tem se renovado por meio de inovações são as que encantam.  

A evolução do marketing digital está trazendo modelos que condicionam a mensagem ao consumidor a sua etapa de navegação. Para conhecer o produto existe uma mas, se ele já tem conhecimento a mensagem é outra, tendo em mente de que não adianta mostrar uma mensagem genérica nas diferentes etapas de relacionamento.

A inteligência artificial veio para ficar e já está sendo explorada no relacionamento empresa cliente. Um exemplo claro disso são os chatbots onde robôs se encarregam de atender os usuários conseguindo responder a altura. Esse é um exemplo de inovação que reduz custos e fica disponível 24/7. Com a inteligência artificial será possível escalar qualquer modelo de negócio.

A principal tendência para 2017 é se conscientizar de que as marcas precisam passar uma mensagem e que nesta mensagem é muito interessante divulgar qual é o propósito da sua empresa.

Fonte: Sebrae - PEGN

quarta-feira, 7 de dezembro de 2016

Quais as principais tecnologias que a sua empresa precisará até 2020.




Se você é dono de empresa, formal ou não, administra algum tipo de negócio ou pretende iniciar algum empreendimento, precisa começar a se preocupar com a velocidade que as tecnologias estão avançando e qual o impacto disso na sua área.

Os obstáculos a serem ultrapassados são complexos:

  • Qualificação de mão-de-obra. Um dos principais problemas, existe desde que mundo é mundo, tende a ficar cada vez pior pois a tecnologia não perdoa, quando ela entra em um ambiente  e os colaboradores que compõe as equipes não estão preparados o resultado é catastrófico, a concorrência agradece.
  • Flexibilidade. Uma das grandes reclamações dos colaboradores é ter que atender a pedidos inusitados do seu chefe via Smartphone, geralmente depois do fim do expediente e independente do local que se encontra. Lidar com isso é um grande desafio, para patrões e colaboradores, já que o mercado moderno funciona 24/7 e pouco se importa com o fator humano.
  • Impedimentos jurídicos. Sabe aquela ideia fantástica que vai revolucionar o mundo? Provavelmente, existe algum entrave jurídico para a sua implementação, basta olhar a quantidade de processos que o UBER enfrenta para poder se manter em pé. Por isso, tenha em mente que consultar um bom advogado, assim como um contador, pode poupar muitas dores de cabeça e também o seu precioso dinheiro além de direcionar o seu projeto para o caminho do sucesso.
  • Comportamento Organizacional. A mudança do comportamento dos envolvidos em todo o processo é fundamental para a criação de uma cultura que esteja pronta para absorver o impacto das constantes mudanças que a tecnologia impõe.
Superados estes obstáculos você e a sua empresa estão prontos para usufruir de uma produtividade elevada proporcionada pela tecnologia.
  • Inteligência Artificial. De acordo com o físico Stephen Hawking este será um dos grandes desafios que a humanidade terá de enfrentar pois, com o passar do tempo os softwares, compostos por algoritmos capazes de desempenhar tarefas que normalmente necessitariam de mão-de-obra humana, passam a executá-las. Se por um lado tira empregos, por outro, gera novas possibilidades em um caminho que não tem mais volta, empresas como o Google e Facebook já utilizam alguns conceitos para disponibilizar material de acordo com o perfil do usuário.
  • Realidade aumentada. Colocar informações, por meio de tecnologia, para melhorar a experiência do usuário em produtos ou serviços. O recente sucesso do jogo Pokémon Go é um exemplo a ser observado.
  • Blockchain. É um recibo eletrônico para transações com bitcoins, por meio de uma plataforma, garantindo que apenas os interessados tenham acesso as informações. Caso você nunca tenha ouvido falar em bitcoins é bom começar a pesquisar assim como, a inteligencia artificial, é um caminho sem volta.
  • Drones. Veículos comandados a distância por pessoas ou softwares que já estão sendo utilizados em alguns lugares do mundo como a Suiça pelo serviço de correios possibilitando assim, a entrega de encomendas em lugares remotos com tempo e custo reduzidos, outras empresas como Amazon já tem estudos para entregar produtos comprados na sua plataforma de e-commerce.
  • Internet das Coisas (IoT). Hardwares interligados via sensores a softwares processando informações via intranet ou internet, com a finalidade de melhoria na produtividade e gerando também economia de recursos e de dinheiro. É uma área com possibilidades infinitas.
  • Robôs. A cada dia que passa as pessoas ficam mais velhas e com necessidades especificas está é somente uma das áreas onde se pode utilizar robôs para a execução de tarefas como o monitoramento por exemplo. É impossível pensar em robôs e esquecer da inteligência artificial pois, estão intimamente ligados. Outras áreas como fábricas e a construção civil também serão afetadas pela entrada desses equipamentos no mercado.
  • Realidade virtual. Treinamento com simuladores de carro para auto-escolas, em linhas de alta voltagem para companhias elétricas ou manequins virtuais para lojas de roupa são algumas das possibilidades que se abrem, não se esquecendo dos vídeos games. Para que a experiência seja positiva, em alguns casos, é necessário a utilização de dispositivos como óculos.
  • Impressoras 3D. As possibilidades que a impressão 3D está proporcionando são infinitas e ainda sem serem exploradas em sua totalidade. Áreas como a dos polímeros, plástico, estão um pouco mais avançadas que as outras mas, é somente a ponta do iceberg.
Estas tecnologias chegaram para ficar e vão causar muito barulho o UBER é um exemplo atual mas, em um passado recente música era ouvida em vinil onde existia uma estrutura ou indústria completa voltada para a sua produção. O impacto que o mp3 causou foi grande e quando começou não parou, toda aquela estrutura teve que se adequar as mudanças. Tenha como meta se manter atualizado para poder oferecer uma experiência positiva aos seus clientes porque senão a concorrência o fará.

Fonte: Sebrae - Exame.com

sexta-feira, 5 de fevereiro de 2016

Estudo Sobre Alarm Manager Android

Alarmes (com base na classe AlarmManager ) oferecem uma maneira de executar operações baseadas em tempo fora do tempo de vida de sua aplicação. Por exemplo, você poderia usar um alarme para iniciar uma operação de longa duração, como iniciar um serviço uma vez por dia para baixar a previsão do tempo.

Os alarmes devem ter as seguintes características:

  • Eles permitem disparar Intenções em datas fixas e / ou intervalos.
  • Você pode usá-los em conjunto com receptores de radiodifusão para iniciar os serviços e executar outras operações.
  • Eles operam fora da sua aplicação, de modo que você pode usá-los para acionar eventos ou ações, mesmo quando o aplicativo não está em execução, e mesmo se o próprio dispositivo está dormindo.
  • Eles ajudam você a minimizar as necessidades de recursos do seu aplicativo. Você pode agendar operações sem depender de temporizadores ou continuamente em execução serviços em segundo plano.

Nota: Para as operações que são garantidos para ocorrer durante o tempo de vida de sua aplicação sincronismo, ao invés considerar o uso do Handler classe em conjunto com Timer e Thread . Esta abordagem dá Android melhor controle sobre os recursos do sistema.

Entenda o trade-offs


Um alarme de repetição é um mecanismo relativamente simples, com flexibilidade limitada. Pode não ser a melhor escolha para a sua aplicação, especialmente se você precisa para desencadear operações de rede. Um alarme de mal projetado pode causar o consumo da bateria e colocar uma carga significativa em servidores.

Um cenário comum para o desencadeamento de uma operação fora do tempo de vida de seu aplicativo é quando estiver sincronizando dados com um servidor. Este é um caso em que você pode ser tentado a usar um alarme de repetição. Mas se você possui o servidor que está hospedando os dados da aplicação, utilizar o Google Cloud Messaging (GCM) em conjunto com o adaptador de sincronização é uma solução melhor do que AlarmManager . Um adaptador de sincronização lhe dará as mesmas opções de agendamento como AlarmManager , mas oferecerá muito mais flexibilidade. Por exemplo, uma sincronização pode ser baseada em uma mensagem de "novos dados" a partir do servidor / dispositivo (pesquise Executando um Adaptador de sincronização para mais detalhes), a atividade do usuário (ou inatividade), a hora do dia, e assim por diante. 

Melhores práticas


Cada escolha que você faz ao projetar seu alarme repetitivo pode ter consequências na forma como seu aplicativo usa (ou abusa) recursos do sistema. Por exemplo, imagine um aplicativo popular que se sincroniza com um servidor. Se a operação de sincronização é baseada na hora do relógio e cada instância do aplicativo sincroniza às 11:00, a carga sobre o servidor pode resultar em alta latência ou mesmo "negação de serviço". Siga estas melhores práticas na utilização de alarmes:


  • Adicionar aleatoriedade para quaisquer solicitações de rede que provocam, como resultado de um alarme de repetição:
  • Fazer qualquer trabalho local quando o alarme dispara. "O trabalho Local" significa qualquer coisa que não bate um servidor ou exigir os dados do servidor.
  • Ao mesmo tempo, programar o alarme que contém os pedidos de rede para disparar contra um certo período de tempo aleatório.
  • Mantenha a sua frequência de alarme a um mínimo.
  • Não acorde o dispositivo desnecessariamente (este comportamento é determinado pelo tipo de alarme, conforme descrito em Escolha um tipo de alarme ).
  • Não faça o tempo de disparo do seu alarme mais vezes do que tem que ser.
  • Use setInexactRepeating() em vez de setRepeating() . Quando você usa setInexactRepeating() , o Android sincroniza repetir alarmes de vários aplicativos e dispara-os ao mesmo tempo. Isto reduz o número total de vezes que o sistema tem de ativar o dispositivo, reduzindo assim a drenagem da bateria. A partir do Android 4.4 (API Nível 19), todos os alarmes de repetição são inexatos. Observe que, enquanto setInexactRepeating() é uma melhoria em relação setRepeating() , ele ainda pode sobrecarregar um servidor se cada instância de um aplicativo atinge o servidor na mesma época. Portanto, para solicitações de rede, adicionar um pouco de aleatoriedade aos seus alarmes, como discutido acima.
  • Evitar basear o seu alarme na hora do relógio, se possível. Alarmes repetitivos que são baseados em um tempo de disparo preciso não funcionam bem. Use ELAPSED_REALTIME se puder. 

Definir um alarme repetitivo


Como descrito acima, alarmes de repetição são uma boa escolha para agendar eventos regulares ou pesquisas de dados. Um alarme de repetição tem as seguintes características:

  • Um tipo de alarme. Para mais discussão, pesquise tipos de alarme .
  • Um tempo de disparo. Se o tempo de disparo você especificar está no passado, o alarme dispara imediatamente.
  • Intervalo do alarme. Por exemplo, uma vez por dia, a cada hora, a cada 5 segundos, e assim por diante.
  • A intenção pendente (PendingIntent) que é acionada quando o alarme é disparado. Quando você define um segundo alarme que usa a mesma intenção pendente, ele substitui o alarme inicial.

Escolher um tipo de alarme

Uma das primeiras considerações na utilização de um alarme de repetição é o seu tipo deve ser.

Existem dois tipos de relógio gerais para alarmes: "o tempo decorrido real" e "relógio de tempo real" (RTC). tempo real decorrido utiliza o "tempo desde a inicialização do sistema", como uma referência, e relógio de tempo real utiliza UTC tempo (relógio de parede). Isto significa que o tempo real decorrido é adequado para a fixação de um alarme com base na passagem de tempo (por exemplo, um alarme que dispara a cada 30 segundos), uma vez que não é afectada pelo tempo de fuso / local. O tipo de relógio de tempo real é mais adequado para os alarmes que são dependentes da localidade atual.

Ambos os tipos têm uma versão "despertar", que diz para acordar a CPU do dispositivo se a tela está desligada. Isso garante que o alarme será acionado na hora programada. Isso é útil se o seu aplicativo tem um exemplo de dependência de tempo, se ele tem uma janela limitada para realizar uma operação particular. Se você não usar a versão de despertar do seu tipo de alarme, em seguida, todos os alarmes de repetição serão acionados quando o dispositivo está for acordado.

Se você simplesmente precisa o alarme para disparar em um intervalo específico (por exemplo, a cada meia hora), use um dos tipos de tempo real decorrido. Em geral, esta é a melhor escolha.

Se você precisar de seu alarme para disparar em um determinado momento do dia, em seguida, escolha um dos tipos de relógio de tempo real baseado em relógios. Note, no entanto, que esta abordagem pode ter alguns inconvenientes: o aplicativo pode não traduzem bem a outras localidades, e se o usuário altera configuração de tempo do dispositivo, que poderia causar um comportamento inesperado no seu aplicativo. Usando um tempo real tipo de relógio de alarme também não escala bem, como discutido acima. Recomendamos que você use um alarme "em tempo real decorrido", se puder.

Lista de tipos:

ELAPSED_REALTIME - Destrói a intenção pendente com base na quantidade de tempo desde que o dispositivo foi inicializado, mas sem acordar o dispositivo. O tempo decorrido inclui qualquer momento durante o qual o dispositivo foi adormecido.
ELAPSED_REALTIME_WAKEUP - Acorda o dispositivo e dispara a intenção em andamento, após o período de tempo especificado tiver decorrido desde a inicialização do dispositivo.
RTC - Queima a intenção pendente no momento especificado, mas não acorda o dispositivo.
RTC_WAKEUP - Acorda o dispositivo para disparar a intenção pendente no momento especificado.
exemplos ELAPSED_REALTIME_WAKEUP

Aqui estão alguns exemplos de como usar ELAPSED_REALTIME_WAKEUP .

Acorde o dispositivo para disparar o alarme em 30 minutos, e a cada 30 minutos depois disso:

 // Hopefully your alarm will have a lower frequency than this!
 alarmMgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
         AlarmManager.INTERVAL_HALF_HOUR,
         AlarmManager.INTERVAL_HALF_HOUR, alarmIntent);

Acorde o dispositivo para disparar um alarme de uma só vez (não-repetição) em um minuto:

  private AlarmManager alarmMgr;
 private PendingIntent alarmIntent;
 ...
 alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
 Intent intent = new Intent(context, AlarmReceiver.class);
 alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);

 alarmMgr.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
         SystemClock.elapsedRealtime() +
         60 * 1000, alarmIntent);

Exemplos RTC

Aqui estão alguns exemplos de como usar RTC_WAKEUP .

Acorde o dispositivo para disparar o alarme em aproximadamente 14:00, e repetir uma vez por dia, ao mesmo tempo:

  // Set the alarm to start at approximately 2:00 pm
 Calendar calendar = Calendar.getInstance();
 calendar.setTimeInMillis(System.currentTimeMillis());
 calendar.set(Calendar.HOUR_OF_DAY, 14);

 // With setInexactRepeating(), you have to use one of the AlarmManager interval
 // constants--in this case, AlarmManager.INTERVAL_DAY.
 alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
         AlarmManager.INTERVAL_DAY, alarmIntent);

Acorde o dispositivo para disparar o alarme, precisamente 08:30, e a cada 20 minutos depois disso:

  private AlarmManager alarmMgr;
 private PendingIntent alarmIntent;
 ...
 alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
 Intent intent = new Intent(context, AlarmReceiver.class);
 alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);

 // Set the alarm to start at 8:30 am
 Calendar calendar = Calendar.getInstance();
 calendar.setTimeInMillis(System.currentTimeMillis());
 calendar.set(Calendar.HOUR_OF_DAY, 8);
 calendar.set(Calendar.MINUTE, 30);

 // setRepeating() lets you specify a precise custom interval--in this case,
 // 20 minutes.
 alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
         1000 * 60 * 20, alarmIntent);

Decidir como o alarme precisa ser

Como descrito acima, a escolha do tipo de alarme é frequentemente o primeiro passo na criação de um alarme. Uma outra distinção é como você precisa que seu alarme seja. Para a maioria dos aplicativos, setInexactRepeating() é a escolha certa. Quando você usa esse método, o Android sincroniza vários alarmes inexata repetindo e dispara-los ao mesmo tempo. Isso reduz o consumo da bateria.

Para o app rara que tem horários rígidos, por exemplo, o alarme deve disparar precisamente às 8:30 am, e de hora em hora depois de usar setRepeating() . Mas você deve evitar o uso de alarmes exatos, se possível.

Com setInexactRepeating() , não é possível especificar um intervalo personalizado da maneira que você pode com setRepeating() . Tem de utilizar uma das constantes de intervalo, como INTERVAL_FIFTEEN_MINUTES , INTERVAL_DAY , e assim por diante. Veja AlarmManager para a lista completa.

Cancelar um alarme

Dependendo do seu aplicativo, você pode querer incluir a possibilidade de cancelar o alarme. Para cancelar um alarme, ligue para cancel() no Gerenciador de alarmes, passando o PendingIntent você não quer mais ao fogo. Por exemplo:

  // Se o alarme foi definido, cancelá-lo.
 if (alarmMgr! = null) {
     alarmMgr.cancel (alarmIntent);
 }

Iniciar um alarme quando o dispositivo é inicializado

Por padrão, todos os alarmes são cancelados quando um dispositivo é desligado. Para evitar que isso aconteça, você pode projetar seu aplicativo para reiniciar automaticamente um alarme de repetir se o usuário reinicia o dispositivo. Isso garante que o AlarmManager continuará fazendo a sua tarefa sem que o usuário precise reiniciar manualmente o alarme.


Aqui estão os passos:




quinta-feira, 4 de fevereiro de 2016

Exemplo das Classes BroadCast, Notification e Alarm Android Combinadas

Estas três classes Android combinadas são um poderosa ferramenta na mão do desenvolvedor, usadas com inteligência, podem trazer grandes benefícios nas duas pontas da relação usuário aplicativo.

Para o desenvolvimento de uma aplicação que se comunique com o usuário é imprescindível a utilização de notificações periódicas para que ele saiba que o aplicativo existe e todo o projeto não caia no esquecimento, também é possível agendar  coleta de dados para identificar deslocamento entre outras possibilidades.

A grande questão é como fazer essas classes trabalharem juntas ao seu favor. Existem muitos bons materiais publicados na web, inclusive serão utilizados para aprofundar as informações aqui prestadas. A grande dificuldade é encontrar um exemplo completo, por este motivo esta postagem foi criada.

Em resumo será criado uma Activity principal e duas BroadCasts, uma denominada Boot e outra Alarme. É possível analisar o diagrama de classes do exemplo logo abaixo:


As classes, Alarme e Boot, são extensões da super-classe Broadcast herdando assim todas as suas características. Assim como, a classe Main estende a super-classe Activity. O relacionamento entre as classes Alarme e Boot com a Main é de agregação pois,  mesmo depois de destruída a Activity Main o alarme ficará ativo e cada vez que o sistema é reiniciado a classe Boot vai receber a informação de forma independente.

Assim que instalado, no emulador ou em um aparelho, e inicializado o exemplo apenas mostrará uma tela branca com um label: Testar Alarme no centro como mostrado abaixo.


A partir do momento que o S.O. é reinicializado o um sinal de BroadCast (BOOT_COMPLETED) é enviado pelo sistema e a classe Boot o recebe e arma o Alarme para notificar o sistema na inicialização e a cada dez segundo a contar daí. A classe Boot é mostrada abaixo:


A cada alarme é disparado outro sinal de BroadCast (ALARME) o qual a classe Alarme recebe e roda a notificação. A classe Alarme é mostrada abaixo:



A maior dificuldade no entendimento do funcionamento é que somente com um sinal de BroadCast enviado o sistema não  funcionará corretamente. O detalhe é que são dois sinais e que outros sistemas podem receber e enviar múltiplos sinais. Abaixo é possível verificar o Manifest do exemplo:


Foram pedidas a permissões para cada ação que o exemplo utiliza, vibrar e ser informado sobre o Boot do S.O.  Também é possível notar que existem dois receivers um para cada comunicação,  do Alerta e do Boot.

E finalmente a classe Main é mostrada abaixo:


Caso exista a necessidade de aprofundamento nos tópicos exibidos aqui existem estes vídeos explicativos muito bons.

Notification:

   


BroadCast:




AlarmManager: