Using Silhouette analysis for selecting the number of cluster for K-means clustering. (Part 2)

Postado em

Data science musing of kapild.

Continuing from my last post on k-means clustering, in this post I will talk about how to use `Silhouette analysis` for selecting number of clusters for K-means clustering.

What is Silhouette analysis (S.A.)?: S.A. is a way to measure how close each point in a cluster is to the points in its neighboring clusters. Its a neat way to find out the optimum value for k during k-means clustering. Silhouette values lies in the range of [-1, 1]. A value of +1 indicates that the sample is far away from its neighboring cluster and very close to the cluster its assigned. Similarly, value of -1 indicates that the point is close to its neighboring cluster than to the cluster its assigned. And, a value of 0 means its at the boundary of the distance between the two cluster. Value of +1 is idea and -1 is least preferred. Hence…

Ver o post original 546 mais palavras

Dois portugueses e o negociante faz tudo

Postado em

Conheci dois portugueses que tinha juntos uma frota de taxis.

Durante um ano um trabalhava e o outro tirava ferias, e assim sucessivamente. Um tomava conta, o outro , férias de 1 ano. 1 ANO !!!

Ja o empresario faz-tudo não tem férias. E quando fica doente quem cuida? O problema não é falir com a doença, deixando familiares na mão. O problema são as contas a pagar e compromissos não cumpridos. Estes podem dar em ações judiciais, indenizações. E tem a perda dos empregados, com consequentes ações trabalistas.

Ou seja, se o negocio cresce vc te que se preocupar com a continuidade, e com gerentes e supervisoes. Assim se o negocio expandir, vc tem que ver se vc tem lucro ou só trabalha, e se vc vive para trabalhar

Planeje-se antes de abrir um negócio “rentável” . Anúcios motram sempre o cara de sucesso, sorrindo e feliz. Não mostra o caso dos que quebraram.

 

Esta empreendedora teve sua ideia rejeitada ‘só’ 90 vezes

Postado em

São Paulo – “O mundo adora dizer ‘não’”. Esta é a conclusão da empreendedora americana Danae Ringelmann, ao relembrar o início do seu negócio. A ideia de Ringelmann foi rejeitada “apenas” 90 vezes antes de conseguir levantar seu primeiro dólar em investimento.

Mas o mais importante: ela não desistiu, e hoje o resultado é recompensador. Ringelmann é uma das fundadoras do Indiegogo, uma plataforma de crowdfunding que visa ajudar empreendedores a conseguir investimento.

Migrating from Eclipse ADT

Postado em

Migrating from Eclipse ADT to Android Studio requires adapting to a new project structure, build system, and IDE functionality. To simplify the migration process, Android Studio provides an import tool so you can quickly transition your Eclipse ADT workspaces and Ant build scripts to Android Studio projects and Gradle-based build files.

This document provides an overview of the migration process and walks you through a sample import procedure. For more information about Android Studio features and the Gradle-based build system, see Android Studio Overview and Configuring Gradle Builds.

Migration Overview


Migrating from Eclipse to Android Studio requires that you change the structure of your development projects, move to a new build system, and use a new user interface. Here are some of the key changes you should be aware of as you prepare to migrate to Android Studio:

  • Project filesAndroid Studio uses a different project structure. Each Eclipse ADT project is called a module in Android Studio. Each instance of Android Studio contains a project with one or more app modules. For more information see, Project Structure.
  • Manifest settingsSeveral elements in the AndroidManifest.xml file are now properties in the defaultConfig and productFlavorsblocks in the build.gradle file. These elements are still valid manifest entries and may appear in manifests from older projects, imported projects, dependencies, and libraries. For more information see, Manifest Settings.
  • DependenciesLibrary dependencies are handled differently in Android Studio, using Gradle dependency declarations and Maven dependencies for well-known local source and binary libraries with Maven coordinates. For more information see,Dependencies
  • Test codeWith Eclipse ADT, test code is written in separate projects and integrated through the <instrumentation> element in your manifest file. Android Studio provides a AndroidTest folder within your project so you can easily add and maintain your test code within the same project view. JUnit tests can also be configured to run locally to reduce testing cycles.
  • Gradle-based build systemIn place of XML-based Ant build files, Android Studio supports Gradle build files, which use the Gradle Domain Specific Language (DSL) for ease of extensibility and customization. The Android Studio build system also supports build variants, which are combinations of productFlavor and buildTypes, to customize your build outputs.
  • User interfaceAndroid Studio provides an intuitive interface and menu options based on the IntelliJ IDEA IDE. To become familiar with the IDE basics, such as navigation, code completion, and keyboard shortcuts, see IntelliJ IDEA Quick Start Guide.
  • Developer tools versioningAndroid Studio updates independently of the Gradle-based build system so different build settings can be applied across different versions of command line, Android Studio, and continuous integration builds. For more information, see Configuring Gradle Builds.

Migration Prerequisites


Before migrating your Eclipse ADT app to Android Studio, review the following steps to make sure your project is ready for conversion, and verify you have the tool configuration you need in Android Studio:

  • In Eclipse ADT:
    • Make sure the Eclipse ADT root directory contains the AndroidManifest.xml file. Also, the root directory must contain either the .project and .classpath files from Eclipse or the res/ and src/ directories.
    • Build your project to ensure your latest workspace and project updates are saved and included in the import.
    • Comment out any references to Eclipse ADT workspace library files in the project.properties or .classpathfiles for import. You can add these references in the build.gradle file after the import. For more information, seeConfiguring Gradle Builds.
    • It may be useful to record your workspace directory, path variables, and any actual path maps that could be used to specify any unresolved relative paths, path variables, and linked resource references. Android Studio allows you to manually specify any unresolved paths during the import process.
  • In Android Studio:
    • Make a note of any third-party Eclipse ADT plugins in use and check for equivalent features in Android Studio or search for a compatible plugin in the IntelliJ Android Studio Plugins repository. Use the File > Settings > Pluginsmenu option to manage plugins in Android Studio. Android Studio does not migrate any third-party Eclipse ADT plugins.
    • If you plan to run Android Studio behind a firewall, be sure to set the proxy settings for Android Studio and the SDK Manager. Android Studio requires an internet connection for Setup Wizard synchronization, 3rd-party library access, access to remote repositories, Gradle initialization and synchronization, and Android Studio version updates. For more information, see Proxy Settings.
    • Use the File > Settings > System Settings menu option to verify the current version and, if necessary, update Android Studio to the latest version from the stable channel. To install Android Studio, please visit the Android Studio download page.

Importing Projects to Android Studio


Android Studio provides a function for importing Eclipse ADT projects, which creates a new Android Studio project and app modules based on your current Eclipse ADT workspace and projects. No changes are made to your Eclipse project files. The Eclipse ADT workspace becomes a new Android Studio project, and each Eclipse ADT project within the workspace becomes a new Android Studio module. Each instance of Android Studio contains a project with one or more app modules.

After selecting an Eclipse ADT project to import, Android Studio creates the Android Studio project structure and app modules, generates the new Gradle-based build files and settings, and configures the required dependencies. The import options also allow you to enter your workspace directory and any actual path maps to handle any unresolved relative paths, path variables, and linked resource references.

Depending on the structure of your Eclipse ADT development project, you should select specific files for importing:

  • For workspaces with multiple projects, select the project folder for each Eclipse ADT project individually to import the projects into the same Android Studio project. Android Studio combines the Eclipse ADT projects into a single Android Studio project with different app modules for each imported project.
  • For Eclipse ADT projects with separate test projects, select the test project folder for import. Android Studio imports the test project and then follows the dependency chain to import the source project and any project dependencies.
  • If Eclipse ADT projects share dependencies within the same workspace, import each project individually into Android Studio. Android Studio maintains the shared dependencies across the newly created modules as part of the import process.

To import a project to Android Studio:

  1. Start Android Studio and close any open Android Studio projects.
  2. From the Android Studio menu select File > New > Import Project.Alternatively, from the Welcome screen, select Import project (Eclipse ADT, Gradle, etc.).
  3. Select the Eclipse ADT project folder with the AndroidManifest.xml file and click Ok.
  4. Select the destination folder and click Next.
  5. Select the import options and click Finish.The import process prompts to migrate any library and project dependencies to Android Studio, and add the dependency declarations to the build.gradle file. The import process also replaces any well-known source libraries, binary libraries, and JAR files that have known Maven coordinates with Maven dependencies, so you no longer need to maintain these dependencies manually. The import options also allow you to enter your workspace directory and any actual path maps to handle any unresolved relative paths, path variables, and linked resource references.

  6. Android Studio imports the app and displays the project import summary. Review the summary for details about the project restructuring and the import process.

After importing the project from Eclipse ADT to the new Android Studio project and module structure, each app module folder in Android Studio contains the complete source set for that module, including the src/main and src/androidTestdirectories, resources, build file, and Android manifest. Before starting app development, you should resolve any issues shown in the project import summary to make sure the project re-structuring and import process completed properly.

Validating imported projects

After completing the import process, use the Android Studio Build and Run menu options to build your project and verify the output. If your project is not building properly, check the following settings:

      • Use the Android SDK button in Android Studio to launch the SDK Manager and verify the installed versions of SDK tools, build tools, and platform match the settings for your Eclipse ADT project. Android Studio inherits the SDK Manager and JDK settings from your imported Eclipse project.
      • Use the File > Project Structure menu option to verify additional Android Studio settings:
        • Under SDK Location verify Android Studio has access to the correct SDK and JDK locations and versions.
        • Under Project verify the Gradle version, Android Plugin version, and related repositories.
        • Under Modules verify the app and module settings, such as signing configuration and library dependencies.
      • If your project depends on another project, make sure that dependency is defined properly in the build.gradle file in the app module folder.

If there still are unexpected issues when building and running your project in Android Studio after you have checked these settings, consider modifying the Eclipse ADT project and re-starting the import process. Importing an Eclipse ADT project to Android Studio creates a new Android Studio project and does not impact the existing Eclipse ADT project.

To get started using Android Studio, review the Android Studio features and Gradle-based build system to become familiar with the new project and module structure, flexible build settings, and other advanced Android development capabilities. For a comparison of Eclipse ADT and Android Studio features and usage, see Transitioning to Android Studio from Eclipse. For specific Android Studio how-to documentation, see the pages in the Workflow section.

Terms of service

Postado em

Effective Date: August 8, 2015

A Violation of any of the below Terms of Service will result in action by 000Webhost up to and possibly including the termination of your account, with or without warning.

000Webhost is a private service which provides free web hosting. We offer our free members up to 1500MB of web space, and 100GB data transfer per account. 000Webhost reserves the right to cancel any account for any reason or no reason at all. 000Webhost provides web hosting to any site that abides to our terms and conditions. 000Webhost reserves the right to change the terms and conditions at any time. 000Webhost users are entirely liable for all activities conducted through their account.

The following rules apply while using 000Webhost services:

The most important rules are:

1. No adult content of any kind

2. No warez / hacking / phishing sites

3. No mass mailers / spammers (account will be automatically suspended if you try to send mass mail), so if your software supports such feature, disable it right now.

4. We do not allow any file sharing or file download scripts to be run.

5. Chat, proxy scripts are not allowed. (allowed if you upgrade account)

6. Paid-to-surf, auto-surf, buxto, and any other similar scripts are banned(allowed if you upgrade account)

7. We do not allow online gaming scripts such as ogame, mafia, etc.. (allowed if you upgrade account)

8. Nulled software such as ip.board or vbulletin is not allowed to be hosted

9. Account cannot be used to store files only

10. Sites related to torrents cannot be hosted (allowed if you upgrade account)

Other rules:
Obscene, graphically violent, and other inappropriate content is strictly prohibited.

000Webhost is not responsible for the content of any member homepages. We reserve the right to remove any homepages that are in violation of our terms and conditions. Members will be held legally responsible for the contents of their web pages including but not limited to use of copyrighted material without the permission of the author or posting material considered indecent for minors. The use of 000Webhost Homepages for illegal purposes is strictly forbidden and any homepage found to be or believed to be, in 000Webhost sole discretion, violating the law may be removed without notice. 000Webhost membership will be revoked if any of the following activities occur:

• Hate, Bigotry, and/or Intolerance
• Warez or Software Piracy related
• Music Piracy Related
• Hacking Related
• Making available copyrighted software which has been “cracked” (e.g., copyright protection for the software has been removed)
• Making available serial numbers for software which can be used to illegally validate or register software.
• Making available tools which can be used for no purpose other than “cracking” software.
• Spamming to promote your website
• Anything related to illegal activity

You agree to not use the Service to:

1. upload, post, email, transmit or otherwise make available any Content that is unlawful, harmful, threatening, abusive, harassing, tortious, defamatory, vulgar, obscene, libelous, invasive of another’s privacy, hateful, or racially, ethnically or otherwise objectionable;
2. harm minors in any way;
3. impersonate any person or entity.
4. forge headers or otherwise manipulate identifiers in order to disguise the origin of any Content transmitted through the Service;
5. upload, post, email, transmit or otherwise make available any Content that you do not have a right to make available under any law or under contractual or fiduciary relationships (such as inside information, proprietary and confidential information learned or disclosed as part of employment relationships or under nondisclosure agreements);
6. upload, post, email, transmit or otherwise make available any Content that infringes any patent, trademark, trade secret, copyright or other proprietary rights (“Rights”) of any party;
7. upload, post, email, transmit or otherwise make available any unsolicited or unauthorized advertising, promotional materials, “junk mail,” “spam,” “chain letters,” “pyramid schemes,” or any other form of solicitation, except in those areas (such as shopping) that are designated for such purpose ;
8. upload, post, email, transmit or otherwise make available any material that contains software viruses or any other computer code, files or programs designed to interrupt, destroy or limit the functionality of any computer software or hardware or telecommunications equipment;
9. upload, post, email, transmit or otherwise make available any material that is of broadcast / streaming types.
10. interfere with or disrupt the Service or servers or networks connected to the Service, or disobey any requirements, procedures, policies or regulations of networks connected to the Service;
11. intentionally or unintentionally violate any applicable local, state, national or international law, including, but not limited to, regulations promulgated by the U.S. Securities and Exchange Commission, any rules of any national or other securities exchange, including, without limitation, the New York Stock Exchange, the American Stock Exchange or the NASDAQ, and any regulations having the force of law;
12. provide material support or resources (or to conceal or disguise the nature, location, source, or ownership of material support or resources) to any organization(s) designated by the United States government as a foreign terrorist organization pursuant to section 219 of the Immigration and Nationality Act;
13. “stalk” or otherwise harass another; and/or
14. upload, post, email, transmit or otherwise material for the purposes of file distribution, relay, or streaming reasons.
15. execute slow MySQL queries or overload the server your account is hosted on.
16. collect or store personal data about other users in connection with the prohibited conduct and activities set forth in paragraphs 1 through 14 above.

We do not allow any type of programs, software, or MP3 files on our server unless you are the full owner and have all rights to the file. Copyrighted files not belonging to users posting those files may be deleted without notice!
You and any person who has access to your account must evaluate, and bear the risk associated with, the accuracy, completeness or usefulness of any Content. 000Webhost reserves the right to remove Content which is deemed in 000Webhost sole discretion harmful, offensive, or otherwise in violation of the Rules or any rules or policies 000Webhost has in place at the time.
In order to keep your client profile active you should login to the members area at least one time a year. By logon to our members area you will show that you are still using our services. While we will never delete your account even if you do not login to the members area for more than one year, we reserve a right to disable some account features that we advertise on our homepage.
You or 000Webhost may terminate your Account at any time for any reason. To remove your 000Webhost site and account, log in and visit your My Account section.

THE 000Webhost SERVICE IS PROVIDED TO YOU “AS IS” AND “AS AVAILABLE” WITH NO WARRANTY. TO THE MAXIMUM EXTENT PERMITTED BY LAW, 000Webhost DISCLAIMS ALL WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, THE IMPLIED CONDITION OF SATISFACTORY QUALITY AND IMPLIED WARRANTIES ARISING FROM COURSE OF DEALING OR COURSE OF PERFORMANCE. YOU ACKNOWLEDGE THAT IF YOU RELY ON ANY INFORMATION OR CONTENT ON THE SERVICE, YOU DO SO SOLELY AT YOUR OWN RISK.

000Webhost will not be liable for any of its services. We have the right to cancel our service at any time, and we will not be liable for any files that are lost and/or corrupted which may occur (including, for example, from a system crash, security breach, or hard disk failure).
By signing up with 000webhost.com, your email is automatically added to our mailing list. 000webhost.com reserves a right to send you 1 promotional email message every month. You may opt out of emails you receive from 000webhost.com by visiting http://members.000webhost.com/unsubscribe.php
000webhost.com will show 1 popup per website once in 7 days. This feature can be disabled from members area.
000webhost.com reserves the right to suspend resource-intensive websites until customer upgrades his account.
To the full extent permissible under the applicable law, 000Webhost shall not be liable for any direct, indirect, incidental, special or consequential damages resulting from the use or inability to use 000Webhost services. You agree, at your own expense, to indemnify, defend and hold harmless 000Webhost and its affiliates, officers, directors, employees, consultants, agents, suppliers and licensors from and against any and all third party claims, liability, damages, losses and/or costs (including but not limited to reasonable attorneys’ fees) arising from or relating to: (a) your failure to comply with these terms of use; (b) your infringement or violation of any intellectual property or other right of a third party; or (c) your violation of any applicable law.

9 PASSOS PARA MONTAR O SEU ESCRITÓRIO VIRTUAL

Postado em

Os escritórios virtuais estão cada vez mais na moda e os motivos para que isso aconteça são vários. Maior mobilidade, menos custos e a fácil distribuição de tarefas são apenas algumas das principais vantagens em trabalhar num escritório virtual.

Ao longo dos últimos anos, tenho desenvolvido algumas estratégias que me têm permitido ter um escritório cada vez mais virtual. Isso tem sido benéfico, não só para o meu negócio, mas também para a minha produtividade, visto que um escritório virtual acaba por dar uma maior disponibilidade para trabalhar onde me sinto mais confortável.

Apesar de ter mudado do Home Office para o escritório ao longo dos últimos meses, tal como explica neste artigo, a verdade é que em muitas ocasiões gosto de trabalhar num café ou em outro local que não seja o escritório (especialmente em dias de maior calor…), e por isso continuo fiel à minha estratégia de manter tudo o mais virtual possível.

O QUE É UM ESCRITÓRIO VIRTUAL?

Para quem não sabe, o escritório virtual é a “migração” do seu escritório físico para um ambiente virtual. Ao invés de ter arquivos com pagamentos de clientes, contratos ou estar pessoalmente com a sua equipe, no escritório virtual você tem tudo isso na “nuvem”,  o que permite que você acesse a esses arquivos ou contate com essas pessoas em qualquer local do mundo. Para isso, você apenas necessita de fazer o login na sua conta! Serviços como o Google Drive, Dropbox ou o Evernote são os melhores exemplos de projetos que são possíveis de serem acessados em qualquer local do mundo.

Ao longo deste artigo, vou compartilhar com você algumas das estratégias que me têm ajudado a ter um escritório móvel. Se você tiver alguma dica sobre este tema, não hesite em deixar um comentário no final do artigo.

1. FAÇA O LEVANTAMENTO DE TODAS AS SUAS DEPENDÊNCIAS FÍSICAS

Antes de pensar em ter um escritório virtual, você necessita de pensar em todos os pormenores físicos que você necessita para trabalhar. Pormenores como umlocal para guardar documentos, telefone, um endereço para receber correspondência ou até mesmo um escritório para receber clientes são opções que você conseguirá transferir para um escritório virtual, como vamos ver nas próximas linhas.

Já uma impressora, por exemplo, será um acessório que você não pode levar para todo o lado e por isso é necessário que encontre uma solução para quando necessitar de utilizá-la.

Fazer esse levantamento é bem simples: pegue num bloco de notas e faça uma lista com todo o material indispensável para você trabalhar no dia-a-dia. Agora espere até ler as próximas linhas e conferir se nós temos alguma solução para substituir esse material.

Ebook - Ser Freelancer

2. PENSE NOS POSSÍVEIS LOCAIS PARA ONDE VAI TRABALHAR

Agora que você já fez o levantamento de tudo, chegou o momento de conferir os locais para onde você pode trabalhar com o seu escritório virtual. As opções mais comuns são estas:

  • Empresas que alugam escritórios virtuais: Existem várias empresas que alugam escritórios virtuais. Esta opção apresenta algumas vantagens, tais como a possibilidade de ter uma secretária, um telefone fixo ou um local para receber os seus clientes. Porém, tem sempre a questão do custo, pois estes escritórios virtuais representam um valor fixo. Esta opção não é aconselhável caso o seu objetivo com o escritório virtual seja reduzir custos.
  • Cowork: Alguns freelancers preferem ter um local reservado num cowork para trabalharem de vez em quando. Não é incomum ver freelas que trabalham num Home Office e num Cowork alternadamente. Apesar de representar um custo mais baixo, ter um lugar reservado num Cowork continua a representar um custo fixo. Se quiser saber mais sobre este tema, leiaeste e este texto.
  • Cafés: Os cafés são excelentes locais de trabalho, com a grande vantagem de que você pode ter várias opções disponíveis. Se não quiser trabalhar num café poderá ir para o outro, tornando o seu dia-a-dia bem menos monótono. Uma boa internet, conforto e ser um local com pouco barulho são questões importantes na hora de escolher um café para trabalhar.
  • Biblioteca: Se você gosta de locais mais silenciosos, então as bibliotecas são uma boa escolha. Normalmente, as bibliotecas têm uma internet com qualidade e são um ambiente bastante confortável. Porém, elas apresentam algumas desvantagens. A primeira é que você não poderá receber os seus clientes lá. A segunda grande desvantagem é que atender o celular ou fazer ligações pelo Skype também não é algo possível, pois pode incomodar os outros utilizadores da biblioteca.

3. ATENÇÃO AO MATERIAL FÍSICO…

Apesar do nosso foco aqui ser o escritório virtual, você vai sempre necessitar de algum material físico para trabalhar. É importante que não se esqueça do básico como o carregador para o seu computador, uma garrafa de água ou uns fones de ouvido para escutar música durante o trabalho. Logo abaixo, fica a imagem do que eu normalmente levo quando não estou no meu escritório físico:

material para escritorio virtual

4. APLICATIVOS PARA ORGANIZAR OS SEUS DOCUMENTOS

Agora que já falamos sobre os conceitos básicos, chegou o momento de falarmos sobre a organização do seu trabalho.

O primeiro cuidado que você deve ter é com a organização de documentos. Atualmente, acredito que existem poucas ferramentas no mercado que sejam tão poderosas como o Google Drive. Com o seu serviço baseado na nuvem, o Google Drive fornece uma opção gratuita e extremamente intuitiva para se trabalhar.

Com ela é muito fácil guardar arquivos, compartilhar esses arquivos com clientes e ter ferramentas como o Word, Excel ou Power Point num único local, podendo acessar a partir de qualquer computador. Basta fazer o login e pode encontrar a toda a informação. Mesmo que você não tenha conexão à internet, pode usar a Google Drive em modo offline no seu ambiente de trabalho!

A imagem abaixo é como organizo a estrutura do meu Google Drive.

Exemplo de organização na Google Drive

Veja como é possível dividir em várias pastas, cores, etc. Para cada cliente, por exemplo, eu crio uma pasta com todas as informações e ao mesmo tempo compartilho as informações com esse meu cliente.

Além disso, tenho também pastas para os pormenores pessoais tais como arquivos importantes ou planilhas para gestão financeira da minha vida pessoal. Fica tudo online e acessível em qualquer local!

Se quiser saber mais sobre o Google Drive, aconselho que leia este artigo: 14 truques e segredos do Google Drive

5. AUTOMATIZE AS SUAS PROPOSTAS

A Google Drive também acaba por trazer uma grande vantagem na organização de arquivos importantes tais como propostas de contratos, modelos de briefing, planilhas para gestão de custos, entre outros.

Ao invés de andar com papéis atrás de você o tempo todo, experimente ter um modelo “base”, que fica guardado na Drive e depois rescreva ele conforme as necessidades do seu cliente.

Outra grande vantagem de ter os seus arquivos importantes por lá, é que você pode compartilhar eles com os seus clientes. Desta forma, o cliente recebe em poucos minutos a sua proposta. Por norma, demoro menos de 24 horas a enviar propostas aos meus clientes. Se fosse rescrever tudo, imprimir, entregar para a proposta por email, etc, certamente demoraria vários dias! Além de correr o risco do email ir parar ao Spam!

Lembre-se, tal como explicamos neste artigo: responder mais rapidamente aos seus clientes aumenta as suas chances de fechar um projeto com ele!

6. ORGANIZAÇÃO FINANCEIRA NA NUVEM

Outra grande fonte de papelada no seu escritório é a sua gestão financeira. Felizmente, hoje em dia já existem apps que permitem que a organização financeira seja feita completamente online. Confira aqui algumas dessas apps:

  • WaveUma das principais novidades do mercado em 2014. A Wave permite que você insira todas as suas entradas e saídas de dinheiro do seu negócio, controle recibos e ainda organize as suas finanças pessoais. A app já trabalha com alguns bancos brasileiros, fazendo a integração direta das suas entradas e saídas de dinheiro.
  • OrganizzeTalvez o site brasileiro mais conhecido quando o assunto é gestão financeira. O Organizze é um site que permite a organização financeira pessoal e profissional. Ele gera relatórios financeiros, define metas e controla os seus gastos com cartão de crédito. Além disso, está 100% em português!
  • Conta AzulMais vocacionada para a gestão empresarial, a Conta Azul é responsável por 260 mil empresas no Brasil. Tem planos que começam nos 29 reais. Só deve ser equacionada no caso do seu negócio estar numa fase mais avançada.
  • Zeropaper: Completamente grátis, o Zero Paper é outra opção bastante interessante. Com ela, você vai controlar todas as despesas da sua empresa, comparar as receitas com meses anteriores e ainda ter relatórios personalizados com os seus resultados.

7. FAÇA O TRACKING DO SEU TRABALHO

Já expliquei anteriormente, na Escola Freelancer, que fazer o tracking do seu trabalho é fundamental. Enquanto freelancer, é necessário que você saiba quanto tempo está gastando com cada cliente. Para fazer essa mensuração, a melhor opção é usar um algum aplicativo. Confira aqui algumas das melhores opções:

  • Paymo: Já escrevi imensas vezes sobre ela na Escola Freelancer e continuarei a escrever pois adoro esta app! O Paymo permite que você ative um cronômetro e conte o tempo que está gastando com cada cliente. Além disso, permite que crie invoices e defina o seu valor por hora.
  • FreshBooksO Fresh Books conta com todas as funcionalidades que um sistema de faturação necessita: permite enviar cobranças, saber a situação de cada cliente e dar baixa de pagamentos. O site conta também com uma versão grátis, que pode ser criada em poucos minutos
  • BallparkSe fazer ofertas para clientes, criar faturas ou mesmo controlar o tempo no seu trabalho são um problema para si, então conheça o Ballpark, uma excelente ferramenta que vai ajudá-lo a conseguir ser mais eficiente com os seus clientes.
  • PowerLancer: O PowerLancer tem muitas funcionalidades interessantes. Além de fazer o tracking do seu trabalho, a app também permite a gestão de clientes, gestão financeira e organização de tarefas.
  • House of WorkA House of Work é um projeto 100% brasileiro e inteiramente grátis para freelancers. Esta ferramenta tem como objetivo principal organizar os seus projetos e ajudá-los a perceber os custos (e o tempo) investido em cada projeto.

8. GESTÃO DO TRABALHO EM EQUIPE

Ter um escritório virtual também permite que você trabalhe em equipe sem estar constantemente a encontrar-se pessoalmente com outras pessoas. No fundo, o que você necessita é de uma app que permita essa integração.

Atualmente, o aplicativo que mais recomendo é o Flow. É com ele que delego tarefas à minha equipe e não tenho motivos para usar outra opção. Saiba mais sobre o Flow neste artigo.

Outra opção para gestão de equipes é o Basecamp. Logo abaixo, compartilho o vídeo do criador desta ferramenta, que conta como um grupo de pessoas, vivendo em países diferentes, conseguiram criar uma das melhores apps do mercado. Se você tiver dificuldades com o inglês, poderá ativar as legendas em português.

http://embed.ted.com/talks/jason_fried_why_work_doesn_t_happen_at_work.html

9. MANTENHA-SE EM CONTATO

Manter-se em contato com os seus clientes também é fundamental. Para isso, nada melhor que o Skype! É sem dúvida alguma a melhor escolha, além de ser completamente grátis.

Uma das grandes vantagens desta app é que você pode comprar créditos e a partir daí ligar para os seus clientes. Recentemente, o Skype até tornou grátis a opção de falar com várias pessoas ao mesmo tempo, podendo reunir-se assim com a equipe dos seus clientes sem qualquer custo.

Se quiser saber mais sobre o Skype, aconselho que leia este artigo: O guia completo para quem quer começar com o Skype

Mas se você não gosta do Skype para reuniões, ainda existe o Google Hangouts. Esta ferramenta do Google permite que você faça ligações com um máximo de dez pessoas em simultâneo. Na minha opinião, um dos seus pontos fortes é a qualidade das ligações. Raramente tive problemas com as ligações por Hangout. Já com o Skype não posso dizer o mesmo…

BÔNUS

Conforme os leitores do artigo forem deixando sugestões de aplicativos, vamos inserindo aqui algumas apps sugeridas por eles. Confira aqui a lista:

  • Evernote: para guardar todas as suas notas
  • Dropbox: alternativa ao Google Drive
  • IFTTT: excelente para automatizar tarefas
  • Spotify: para escutar música enquanto trabalha

CONCLUSÃO

Trabalhar num escritório virtual é uma opção que traz vantagens e desvantagens, mas acredito que com as dicas que partilhei com você, o seu sucesso em montar um escritório virtual estará mais próximo!

E agora, pergunto a você:

  • Já tentou trabalhar sem ter um local fixo?
  • Quais foram as dificuldades que encontrou?

Abraço,

Luciano Larrossa

Android – List of Free code Camera

Postado em

Projects

  • 3 DSModel AR
    Load and display a 3 DS file on camera view using JPCT. Basic Augmented Reality on Android.
  • AB ITS Inc Flashlight Android
    A basic, ad-free, flashlight application that falls back to using the screen if a camera LED is not present on the device.
  • Android Camera Example
    A sample android camera example.
  • android camera gallery example
    Simple app that select a picture from gallery or camera.
  • Android Camera Stream Module
    Appcelerator Camera Stream Module.
  • android camera tests
    Tests with the android camera and some opencv stuff.
  • android camera with opencv sample
    Android Camera Sample + OpenCV lib.
  • Android ContactlessVitalSigns
    Using the Android camera , the app detects faces and starts to calculate heart rate, blood pressure, and body temperature.
  • Android LED Incapacitator
    Exploring the Bucha effect from a camera phone flash.
  • android packages apps Camera
    AOSP Camera app – modified for htc hero.
  • android packages apps FFCFix
    Temporary work-around for FFC on msm7x30 ICS Camera HAL.
  • android packages apps Focal
    Open Source Android Camera App | don’t forget android _external_Focal repo.
  • Android Scene
    An Android app that manipulates scenes captured from the camera. Will add more features later.
  • AndroidCamera
    Playing with the Android Camera.
  • AndroidCamera App
    HW#2: Uses CWAC (CommonsWare) camera library to show and manipulate the camera.
  • AndroidCamera PreviewAPI8
    A sample application to show how to create a camera preview app for android API level 8. Keeping the aspect ratio of the preview and not subclassing SurfaceView.
  • ar. camera SDK
    Test Camera with the Android SDK.
  • Ascii Camera
    View the world in ASCII on your Android device.
  • Auto Camera
    This is an Android app that is an activity that automatically takes a picture.
  • Camdroid
    A sample Android camera app live coded at TriDroid meetup.
  • Camera
    Sample Android Camera Application.
  • Camera Coder
    Visible Light Communication Test for Android.
  • Camera DCIM
    DCIM compliant Android Camera (and Camcorder).
  • Camera Example
    An example of taking pictures programmatically in Android on a timed loop.
  • Camera Face Eyes Mouth
    Sample Android app to detect the face, eyes, and mouth and draw items over the camera preview to denote where they are.
  • Camera Loop
    Testing Android 2.1 application that continuously takes pictures.
  • Camera Overlay
    Android app, free on google play.
  • camera play
    Playing with the Android Camera.
  • Camera PreviewSample
    Sample code of Android camera preview.
  • camerio
    our cool android camera !.
  • camspy
    Make Android view CCTV Camera.
  • CamTimer
    Simple camera timer app for Android.
  • Confluence Camera
    Take pictures with your Android device and upload them as attachments in Atlassian Confluence.
  • CxemCar2
    CxemCar2 Android RC Car Project with Camera.
  • DashCam
    An android application which provides the functionality of dash camera in modern vehicles.
  • dgCam
    Custom camera for Android created for testing, playing and learning. You will find a lot of useful stuff in this little app.
  • Digisystech BlueTrigger
    Android Open Source Blue Tooth Camera Triggering Software.
  • Docam
    Android camera app for papers.
  • Duchess Camera
    Duchess France Android Application.
  • edgefinder
    Edge Detection Camera Preview Filter for Android.
  • EnCam
    An encrypted Camera application for android.
  • Face Camera
    This can serve as a starting point if you are interested in integrating android camera with android face detect.
  • Frosted Window
    Android experiment, playing with the camera API and a couple of effects.
  • HeightCatcher
    HeightCatcher is an open source application for a camera -enabled mobile device (e.g. Android tablet or phone) that can measure the height on an infant and use age and weight inputs to calculate a Z score for that infant.
  • Hidden Camera
    WIP Android hidden camera app.
  • JME3 Android Camera
    A demo for integrating the Android camera with jMonkeyEngine.
  • Kiss The Presidents
    Android experiment to play with the camera API. At the moment includes presidents from Venezuela, USA, France, China and North Korea. Feel free to check the code and add the president of your country.
  • maps android flyover
    Camera flyover example app using the Google Maps Android API v2.
  • mASCIIcam
    ASCII-art camera for android.
  • Messing with Androids Camera and Sensors
    Messing around with the orientation and acceleration sensors and the camera.
  • My Camera
    Example of how to use Android camera.
  • OpenCV DirectionBlob
    An usage of OpenCV Blob Color Detection to set a direction from an android camera.
  • OrzEye
    An Android OCR application that uses the camera to look up the recognized English words. Use tess-two as OCR engine.
  • PACC
    PTP Android Camera Control.
  • peepers
    A simple IP camera application for Android.
  • PghTraffic
    Android app for viewing Pittsburgh traffic cameras.
  • porkycam
    Interval Camera for Android.
  • Portrait Camera
    Android Portrait Camera Sample.
  • QuickSnap
    Android camera implementation based off the official Gingerbread camera app source code.
  • rearview camera
    Rearview camera implemented as an Android app with OpenXC.
  • Remote Camera
    Remotely control the camera of an Android device from the PC.
  • ShotQuote
    With your Android phone, Shot by camera and Post it to Tumblr.
  • ShowMeHills
    Android augmented reality application which overlays mountain peak names over a camera view.
  • Simple Android OCR
    A simple Android OCR application that makes use of the Camera app.
  • Simple Camera
    A simple Android camera application.
  • Simple Camera App
    A very simple android application that dumps the camera stream in a file.
  • spydroid ipcamera
    A powerful and funny android app. that streams the camera and microphone of your phone to your browser or to VLC.
  • StickierQR
    Android app that displays a stream of information related to the QR-Code sticker your camera sees. (Specifically created for Polytechnic University of Bucharest).
  • Super Wifi Cam
    Live camera data streaming application for android.
  • SydneyTraffic Cameras
    simple android app for retrieving camera feeds from RTA cameras in Sydney.
  • TriChromat
    Android colorblind assistance camera filter.
  • v.g.
    Visual Glitch on Android camera.
  • warai otoko camera
    Android application to detect face and draw warai-otoko.
  • WSCamera for Android
    WebSocket Camera Server for Android. support Web Intents Addendum(UPnP adaptation).
  • YUV to RGB in Android NDK
    This Android project is used to convert camera YUV byte data in to RGB data (can be used in augmented reality) in android NDK.

DevOps para aplicativos móveis desafios e melhores práticas

Postado em

As 10 melhores práticas do DevOps para a empresa móvel

DevOps está rapidamente se tornando um novo padrão para desenvolvimento e entrega de aplicativos corporativos, mas DevOps para aplicativo móvel é uma espécie diferente. Ou não? Os líderes de opinião sobre IBM MobileFirst e DevOps Leigh Williamson e Sanjeev Sharma explicam por que o DevOps deve incluir aplicativos móveis como cidadãos de primeira classe. Eles compartilham 10 melhores práticas usadas pelas equipes de desenvolvimento e Parceiros de Negócios da IBM para integrar continuamente aplicativos da web e móveis em um fluxo de trabalho de gerenciamento de ciclo de vida colaborativo.

Leigh Williamson, IBM Distinguished Engineer, IBM

Sanjeev Sharma, Executive IT Specialist, IBM

13/Mai/2014

Nos últimos cinco anos, muitos segmentos de mercado lutaram para adaptarem-se à grande mudança de comportamento de usuários de aplicativos de negócio com a adoção, por milhões de pessoas no mundo todo, de dispositivos móveis como o principal meio de acessar a Internet. Essa mudança crucial no comportamento do usuário é uma forte motivação para as empresas desenvolverem canais móveis para aplicativos de negócio existentes e para planejar novos tipos de aplicativos que possam usar as características exclusivas dos dispositivos móveis. Como ocorre com todas as grandes revoluções no segmento de mercado de TI, os primeiros anos dessa mudança viram uma atividade frenética para atender à demanda e criar presença de mercado sem considerar questões mais estratégicas, como custos de desenvolvimento, capacidade de manutenção, qualidade e segurança do aplicativo. Conforme o mercado de aplicativos móveis amadurece, e a corrida inicial ao mercado se estabiliza, agora é possível enfatizar essas questões de desenvolvimento de software mais abrangentes.

Neste artigo, discutimos os desafios de integrar aplicativos móveis na empresa e apresentamos 10 melhores práticas para DevOps móvel. Começamos com uma visão geral de DevOps e explicamos alguns dos desafios específicos — e a necessidade — de integrar aplicativos corporativos móveis em uma oficina de DevOps. A seguir, apresentamos 10 melhores práticas para implementar DevOps em um fluxo de trabalho que una integração contínua, teste e monitoramento de aplicativo e entrega de aplicativo móvel.

O que é DevOps?

DevOps não é uma técnica nem um processo, mas uma abordagem para habilitar a entrega contínua de aplicativo da concepção à produção. Antes do surgimento do DevOps, o padrão para organizações corporativas era manter equipes separadas de desenvolvimento e operações. A falta de comunicação e colaboração entre as equipes era, de muitas formas, um desafio ao crescimento e à inovação na empresa. A separação do desenvolvimento e das operações era problemática para empresas que adotavam desenvolvimento agile, uma vez que usar metodologias agile aumentava muitas vezes o número de novas construções de aplicativo para desenvolver, testar e implementar. Em vez de entregar uma nova criação à equipe de operações em uma frequência regular, os desenvolvedores podiam produzir criações em algumas horas e entregar candidatos a release a frequências muito maiores.

O movimento DevOps iniciou com as equipes de desenvolvimento e operações que se uniram para abordar com mais eficiência os desafios da entrega contínua de aplicativo. Um objetivo inicial era “mudar para a esquerda” as responsabilidades das operações, envolvendo as operações muito mais cedo no ciclo de vida de entrega de software. A seguir, os desenvolvedores foram incentivados a codificar aplicativos com preocupações operacionais em mente desde o início. De fato, DevOps coordena os conjuntos de interesses e conhecimento de desenvolvedores e gerentes de operações usando os princípios de desenvolvimento enxuto para que o processo de integração e entrega contínuas seja mais eficiente.

A IBM assume uma visão holística de DevOps, definindo-o como a capacidade corporativa de entrega contínua de software, que permite que os clientes aproveitem as oportunidades de mercado e reduz o tempo para obter o feedback do cliente.

O principal termo nessa definição é entrega contínua. Entrega contínua significa implementar software e o ambiente no qual ele executa, automaticamente e on demand, em qualquer estágio do ciclo de vida de entrega de software. Em entrega contínua, é possível implementar qualquer coisa: — de simples alterações de configuração até alterações de código incrementais e alterações ao esquema do banco de dados, ao ambiente ou a toda a pilha.

DevOps para aplicativos móveis

DevOps emprega os mesmos princípios básicos, esteja você codificando aplicativos da web corporativos ou aplicativos móveis. Inclua a equipe de desenvolvimento móvel ao adotar DevOps para a empresa, mesmo que a equipe móvel seja uma pequena parte da sua empresa ou siga um processo de desenvolvimento de software diferente. Isso é especialmente verdadeiro ao desenvolver aplicativos móveis como um frontend a aplicativos e serviços corporativos existentes. Também é verdadeiro tanto para aplicativos voltados ao consumidor ou feitos para uso interno.

Aplicativos móveis que interagem diretamente com aplicativos e serviços corporativos precisam ser cidadãos de primeira classe no ciclo de vida do DevOps. Conforme novos recursos são adicionados ao aplicativo ou serviço corporativo, as equipes podem integrá-los continuamente ao aplicativo móvel.

O desafio do DevOps móvel

Embora os princípios básicos do DevOps sejam os mesmos para aplicativos corporativos e móveis, os aplicativos móveis apresentam desafios específicos ao DevOps. Esses desafios incluem:

  1. Suporte a várias plataformas
    Aplicativos móveis não têm um único objetivo ambiente. A maioria dos aplicativos móveis é voltada para vários dispositivos, o que significa lidar com diversos aspectos técnicos, versões de sistema operacional e formatos. O Android é conhecido pela sua fragmentação, uma vez que cada fornecedor de dispositivo bifurcou o sistema operacional para seus próprios dispositivos (exemplos incluem Android para Nexus, Android para Kindle Fire e Android para Nook). Concorrentes mais novos, como BlackBerry 10, Windows® Phone 8, Ubuntu e Firefox agora estão fragmentando ainda mais o mercado de Android. Da mesma forma, o iOS, que antes era muito padronizado, hoje possui diversas variantes. Um aplicativo para iOS precisa ter suporte para diferentes versões do sistema: o formato para iPhone 4S e inferiores, o formato para iPhone 5 e os formatos para iPad e iPad mini.
  2. Aplicativos móveis como um frontend corporativo
    Aplicativos móveis, especialmente business-to-consumer (B2C) corporativos ou business-to-employee (B2E), geralmente têm pouca lógica de negócios no dispositivo móvel em si. Em vez disso, um aplicativo móvel business-to-consumer ou business-to-employee atua como um frontend para um ou mais aplicativos corporativos já em uso pela empresa, como sistemas de processamento de transações, sistemas de recursos humanos de funcionários ou sistemas de aquisição do cliente. A Figura 1 destaca um aplicativo desse tipo com lógica de negócios limitada no aplicativo em si.

    Figura 1. Arquitetura de um aplicativo móvel do LinkedIn

    A diagram of the architecture of a LinkedIn mobile appFonte:Blog LinkedIn Engineering

    O aplicativo móvel do LinkedIn é, na verdade, um frontend à Plataforma LinkedIn de backend, que contém os aplicativos ou serviços de Profile, Connections e Groups do LinkedIn. O aplicativo móvel, que é entregue a várias plataformas como um aplicativo nativo ou híbrido, precisa ser desenvolvimento e entregue junto com os serviços da Plataforma LinkedIn de backend. Para DevOps, o desafio é vincular de maneira holística todos os aplicativos na empresa e coordenar seus processos e ciclos de criação e release.

  3. Integração contínua e entrega contínuaDevido à forte motivação de negócios para entregar aplicativos móveis ao mercado rapidamente, os projetos de desenvolvimento móvel geralmente assumem prazos muito agressivos. É comum que um período que inclua da concepção à entrega dure alguns meses, ou mesmo semanas. A pressão para entregar aplicativos móveis rapidamente resulta na adoção de métodos de desenvolvimento agile para projetos móveis mais bem-sucedidos.

    Integração e entrega contínuas são elementos importantes de praticamente todos os projetos agile. Alterações ao aplicativo entregues por desenvolvedores precisam ser processadas imediatamente para todos os sistemas operacionais móveis almejados. Se o aplicativo móvel for uma implementação híbrida ou nativa, várias construções diferentes do aplicativo precisam ser acionadas sempre que um conjunto de alterações para o aplicativo for entregue por um desenvolvedor. A instalação e a configuração do desenvolvimento para cada ambiente móvel com suporte são diferentes umas das outras. Provavelmente será necessário fornecer e disponibilizar um farm pequeno de servidores de desenvolvimento para manipular essas várias construções de sistema operacional.

  4. A loja de aplicativosNa maioria dos casos, um aplicativo móvel não pode ser implementado diretamente em um dispositivo. Ele precisa passar por uma loja de aplicativos. A Apple começou a usar esse modelo de distribuição de aplicativos e bloqueou seus dispositivos para evitar a instalação direta de aplicativos por fornecedores ou desenvolvedores. Fabricantes de dispositivos, como a RIM, fizeram o mesmo.

    A loja de aplicativos adiciona uma etapa assíncrona adicional ao processo de implementação, pois os desenvolvedores não podem implementar atualizações de aplicativo on demand. Mesmo para correções de erro cruciais, novas versões de aplicativo passam por um processo de envio e análise da loja de aplicativos. A entrega contínua se torna “enviar e esperar”.

  5. Implementação por “pull”, não “push”A maioria das implementações tradicionais opera em um modelo “push”, através do qual as operações podem enviar por push uma nova versão de um aplicativo on demand, seja um aplicativo da web ou outro aplicativo baseado em servidor. O processo para atualizar aplicativos móveis é um processo “pull”, porém, na maioria dos casos, os usuários devem eles mesmos escolher atualizar os aplicativos. Os desenvolvedores de aplicativos móveis têm pouco controle sobre a versão do aplicativo que um usuário estabelecido mantém em seu dispositivo. De uma perspectiva do DevOps, isso significa que os serviços de backend implementados com que um aplicativo interage devem fornecer suporte contínuo para releases anteriores do aplicativo móvel.
  6. Para aplicativos do consumidor, falhar não é uma opçãoNada é mais prejudicial a uma marca que um aplicativo com uma classificação de uma estrela, especialmente quando essa classificação é transmitida por meio de uma loja de aplicativos. Usuários de aplicativos móveis consumidores insatisfeitos podem se tornar públicos e visíveis rapidamente, não importa se o aplicativo é comprado ou gratuito. Embora as reclamações sobre problemas com um website sejam comunicadas à central de suporte técnico, as reclamações sobre aplicativos móveis são transmitidas via loja de aplicativos para todos verem. Aplicativos móveis devem passar por amplos testes funcionais, de usabilidade e desempenho para garantir sua qualidade.

As 10 melhores práticas para DevOps móvel

Com base nos desafios específicos de aplicativos móveis, recomendamos 10 melhores práticas de DevOps para aplicativos móveis. Essas práticas se enquadram em três categorias amplas de capacidades, ou seja:

  1. Integração contínua e entrega contínua
  2. Teste e monitoramento
  3. Entrega de aplicativo móvel

O objetivo é usar as 10 melhores práticas para criar um pipeline de entrega que habilite essas três capacidades, ao mesmo tempo que abordam os desafios específicos dos aplicativos móveis.

DevOps na filosofia e na prática

Um pipeline de entrega do DevOps implementa o lado técnico dele, mas também é importante abordar as dimensões humana e cultural do movimento do DevOps. As melhores práticas nesta seção têm como objetivo garantir que as empresas incluam desenvolvimento móvel e equipes de QA como cidadãos de primeira classe na comunidade do DevOps. Uma filosofia holística do DevOps deve considerar as necessidades e as preocupações das equipes de desenvolvimento de aplicativo móvel que trabalham junto com as que desenvolvem aplicativos e serviços da web corporativos.

Integração contínua e entrega contínua

  1. Garantir rastreabilidade de ponta a ponta em todos os ativosO valor da rastreabilidade em todos os ativos de desenvolvimento e QA não é mais assunto de debate. Uma equipe de desenvolvimento de aplicativo móvel deve garantir a rastreabilidade de ponta a ponta de todos os ativos de desenvolvimento, — como código, configurações, scripts, infraestrutura como código, scripts de teste, documentos de design. Também é fundamental que a rastreabilidade não esteja limitada a ativos de desenvolvimento móvel. Ela deve se estender para aplicativos e serviços corporativos com que os aplicativos móveis se integrem, aos quais se conectem ou que acessem.
  2. Integração contínua práticaPráticas de desenvolvimento agile defendem a integração contínua, o que significa executar construções frequentes e integrar continuamente novo código ao que já desenvolvido por outras equipes — tanto móveis quanto corporativas. A integração contínua garante que o código entregue por uma equipe de desenvolvimento funcione com código e módulos entregues por outras equipes de desenvolvimento. A integração geralmente é realizada continuamente para aplicativos móveis. Também deve ser realizada periodicamente com os componentes do lado do servidor não móveis que compreendem o backend acessado pelo aplicativo móvel em desenvolvimento.

    Para aplicativos móveis, as equipes de desenvolvimento compartilham servidores de criação e integração centrais para o código do aplicativo móvel que atende todas as plataformas móveis almejadas. Automatizar o processo de criação e desenvolvimento garante desenvolvimentos de integração contínua rápidos e confiáveis, realizados em servidores de criação, ou server farms, para todas as plataformas com suporte.

  3. Mantenha áreas de desenvolvimento e integração separadas para cada versão do SDK do sistema operacional móvel com suporte.
    A fragmentação no espaço do dispositivo móvel vai além de apenas os quatro sistemas operacionais móveis principais de iOS, Android, Blackberry e Windows Phone. Cada um desses sistemas operacionais também é fragmentado internamente. A Apple bifurcou seu próprio iOS para dar suporte ao iPad. O Android possui variantes para quase cada dispositivo. O BlackBerry 10 da RIM é um novo sistema operacional com relação limitada com o sistema operacional legado do BlackBerry. O Windows Phone 8 é uma grande reformulação de versões anteriores do Windows Phone. Diversas plataformas móveis novas estão surgindo também, incluindo de Ubuntu e Firefox. Como resultado, os desenvolvedores de aplicativos móveis devem escrever diversas variantes de aplicativos para dar suporte a cada plataforma almejada e suas variantes, mesmo que sejam voltados apenas para uma plataforma. Todo aplicativo móvel requer diversas versões do SDK.

    Para garantir a separação de código e das capacidades específicas para cada plataforma almejada, os desenvolvedores devem manter “fluxos” de desenvolvimento separados para cada versão específica da plataforma de um aplicativo móvel. Essa divisão requer manter áreas de integração e criação separadas para cada plataforma almejada. Se fosse um aplicativo para Android, os desenvolvedores precisariam ter fluxos separados para Kindle Fire, Nook HD, Nexus e outros sistemas operacionais.

  4. Usar scripts de desenvolvimento e implementação automatizadosDesenvolvedores móveis estão acostumados a usar um IDE para executar criações manualmente. Eles costumam executar desenvolvimentos manualmente e, em alguns casos, para diferentes plataformas almejadas. Conforme a complexidade e o número de construções aumentam, os desenvolvedores podem configurar construções automatizadas usando scripts para executar as construções conforme o necessário em servidores de criação separados. Eles gerenciam scripts de criação e atribuem versões do mesmo modo que código, garantindo que cada criação possa ser reproduzida a qualquer hora e por qualquer membro da equipe.

Teste e monitoramento

  1. Teste cada criação por completo com o máximo de automação possível em dispositivos físicos ou simuladosAutomação de teste é uma área em que o desenvolvimento de aplicativo móvel ficou para trás em comparação a aplicativos corporativos. A maioria dos desenvolvedores móveis testa amplamente em um simulador, mas não em dispositivos físicos. Até mesmo testar em um simulador é principalmente um processo manual. Por causa da velocidade do desenvolvimento e da natureza agile inerente do desenvolvimento móvel, o teste de regressão funcional automatizado é a única maneira real de garantir a qualidade. Dada a variedade de plataformas e formatos com suporte, não é possível realizar testes manuais suficientes. Além disso, para aplicativos corporativos, sejam para o cliente ou para funcionários, baixa qualidade não é aceitável.

    Teste todos os aplicativos com ferramentas de teste automatizadas, em simuladores fornecidos pelos SDKs, e todos os dispositivos físicos reais com suporte.

  2. Virtualize e simule serviços de backend que não estejam disponíveis durante o teste de aplicativo móvelAplicativos móveis seguem um rápido processo de desenvolvimento, o que pode resultar em muito mais liberações em comparação a aplicativos e serviços corporativos de backend. Esse rápido desenvolvimento pode manter os aplicativos móveis tecnicamente à frente da curva de aplicativos corporativos, o que significa que eles possuem recursos mais novos que ainda não têm suporte em aplicativos e serviços corporativos de backend. Mesmo quando serviços de backend estão disponíveis, eles podem custar dinheiro ou recursos para serem testados. Por exemplo, serviços SaaS normalmente têm um custo de pagamento por uso, mesmo para teste. De modo similar, serviços hospedados em System z (mainframe) custam MIPS. As equipes de desenvolvimento podem solucionar esse problema virtualizando (simulando) serviços de backend. Todo o ecossistema de aplicativos, serviços e origens de dados com que o aplicativo móvel precisa interagir pode ser disponibilizado como instância virtual, simulando o comportamento dos recursos reais com que o aplicativo móvel precisa interagir. Essa organização permite rápido teste do aplicativo móvel e suas interações. Isso também economiza recursos de hardware que seriam necessários para executar instâncias reais desses serviços e aplicativos.
  3. Monitorar o desempenho dos serviços de backend e dos aplicativos móveis implementadosO maior desafio para desenvolvedores de aplicativos móveis é um aplicativo que tenha um bom desempenho tanto no ambiente de teste, mas falha no mundo real. Condições de rede não confiáveis, baixa memória e potência e perda de dados são algumas das causas subjacentes de mau desempenho do aplicativo móvel. Nem todas essas condições podem ser previstas e testadas no laboratório, de modo que é imperativo que os desenvolvedores habilitem monitoramento de desempenho de contínuo conforme os aplicativos são usados. Esse monitoramento deve ser feito na extremidade do aplicativo ou do servidor da pilha do aplicativo com que o aplicativo interage.

    A falha de desempenho definitiva é quando o aplicativo para de executar nas mãos do usuário em campo. Adicionar lógica ao aplicativo que capture informações de contexto “must gather” no caso de falha, como dados de local e características do dispositivo, fornece ao desenvolvedor dados suficientes para descobrir a causa raiz da falha e corrigi-la. Lógica de análise e captura de travamento integradas são componentes essenciais dos aplicativos móveis.

Entrega de aplicativo móvel

  1. Empregue governança centralizada para perfis, certificados e chaves de API de fornecimento móvelSe para enviar um aplicativo a uma loja de aplicativos ou usar uma API fornecida por um aplicativo interno ou externo, um desenvolvedor ou corporação identifica a autenticidade e a propriedade de um aplicativo por meio de uma chave de perfil ou fornecimento emitida pelo fornecedor. Essas chaves atuam como a aprovação de autorização para a loja ou API. Geralmente, desenvolvedores individuais recebem as próprias chaves que usam para fins de desenvolvimento. Mas para a liberação do aplicativo final, remova todas as chaves pessoais e substitua-as pelas chaves corporativas oficiais. Proteja as chaves e os perfis corporativos. Eles devem ser usados apenas para liberações de aplicativo oficiais. Processos de governança de móveis devem ser bem definidos e controlados. Acima de tudo, acesso restrito a chaves corporativas. A autorização é uma questão tanto de segurança quanto de privacidade que requer governança estrita.
  2. Use uma loja de aplicativo virtual para testar a implementação do dispositivoUm aplicativo móvel somente pode ser fornecido a um dispositivo móvel por meio de uma loja de aplicativos do fornecedor. Geralmente, o aplicativo passa por um processo de aprovação manual antes de entrar na loja de aplicativos. Uma vez que estiver na loja, o usuário precisa “comprar” o aplicativo, que então é enviado por push ao seu dispositivo. Para testar todo esse processo, as equipes de desenvolvimento podem usar uma “loja de aplicativo de desenvolvimento privada”. Essas lojas de aplicativos virtuais (veja os Recursos ) simulam o comportamento de uma loja de aplicativo real, permitindo aos desenvolvedores efetivamente testar o processo de enviar um aplicativo e fornecê-lo a um dispositivo.
  3. Converter feedback do usuário em solicitações de aprimoramento e histórias do usuárioAplicativos móveis têm um mecanismo de feedback exclusivo via lojas de aplicativos que permite aos usuários classificar e fornecer feedback por escrito sobre eles. Um aplicativo bem aceito provavelmente receberá uma classificação de quatro ou cinco estrelas. Um aplicativo menos popular costuma receber uma classificação de uma ou duas estrelas, possivelmente acompanhada por um feedback negativo. O ciclo de feedback para aplicativos móveis não está disponível como um mecanismo centralizado formal para nenhuma outra plataforma. Os desenvolvedores costumam descobrir problemas com aplicativos de desktop apenas se um usuário telefonar para o suporte técnico ou deixar um comentário em um fórum monitorado pelos desenvolvedores. As equipes de desenvolvimento móvel devem monitorar de perto os feedbacks e classificações na loja de aplicativos e incorporar feedback em histórias de usuário, aprimoramentos e melhorias de s software futuros. É fundamental obter o máximo desse feedback de valor para melhorar continuamente os aplicativos móveis.

Conclusão

Não existe DevOps separado para aplicativos móveis. DevOps é uma abordagem que funciona para todos os aplicativos e componentes — de aplicativos móveis de frontend a middleware, componentes do servidor de backend e armazenamentos de dados. Aplique as práticas e os princípios de DevOps em todas as equipes de desenvolvimento e operações na empresa para habilitar a entrega contínua de todos esses componentes.

Aplicativos móveis têm necessidades e desafios específicos que devem ser abordados. Nossas 10 melhores práticas de DevOps para aplicativos móveis abordam essas necessidades específicas de aplicativos móveis. O objetivo dessas melhores práticas é alinhar o desenvolvimento, a garantia de qualidade e as práticas operacionais de aplicativo móvel com aplicativos corporativos padrão. Essas melhores práticas permitem que as empresas adotem o DevOps em todas as equipes de desenvolvimento móvel, entreguem aplicativos móveis de maior qualidade e habilitem melhoria contínua e inovação.

Recursos

Aprender

Obter produtos e tecnologias

  • IBM Rational Test Workbench: experimente uma solução abrangente de automação de teste para aplicativos móveis, teste de regressão, tecnologias de integração e teste de desempenho e escalabilidade.
  • Rational Test Virtualization Server: habilite a implementação de serviços, software e aplicativos virtualizados para testes simplificados e eficientes.
  • IBM UrbanCode Release: faça o download de software para planejar, executar e rastrear um release em todos os estágios do modelo de ciclo de vida.
  • IBM Mobile Quality Assurance: entregue continuamente aplicativos móveis de alta qualidade.
  • IBM UrbanCode Deploy: organize e automatize a implementação de aplicativos, configurações de middleware e alterações de banco de dados em ambientes de desenvolvimento, teste e produção.
  • IBM Rational Test Virtualization Server: elimine as dependências de teste de aplicativo e reduza o tempo de configuração e os custos de infraestrutura.
  • Worklight Developer Edition: desenvolva, execute e gerencie aplicativos móveis HTML5, híbridos e nativos com esta plataforma aberta e abrangente para desenvolvimento de aplicativos.
  • Solução IBM Rational para Collaborative Lifecycle Management: melhore a produtividade da sua equipe com capacidades de gerenciamento de ciclo de vida do aplicativo (ALM) integradas.

Discutir