2.13.2020

Quer publicar no Apple Store ?

Quer publicar no Apple Store ?

A. Amram Duque - ad@hamechcode.co





Forma / Programa de desenvolvimento da Apple: 

Apple Developer Program

Primeiramente, você precisa se registrar no Apple Developer Program, como desenvolvedor.
Neste programa, você poderá utilizar ferramentas adicionais da Apple, ver as principais estatísticas do seu aplicativo.
Pague pela inscrição
Você não conseguirá se inscrever sem despesas. O registro no programa da Apple só é possível dessa forma.
Se você é um empreendedor individual, ou possui uma empresa com até um funcionário, serão cobrados $99 dólares anuais pela inscrição. Se você possui uma equipe de desenvolvimento, a inscrição custará $299 dólares anuais. Assim, todo o seu time de desenvolvimento terá acesso a mesma conta.

Faça testes detalhados do seu aplicativo

Se você criou o aplicativo, o trabalho ainda não terminou. Afinal, você precisa planejar o lançamento do seu aplicativo na App Store de forma inteligente.
Mesmo que o seu processo de desenvolvimento seja bem feito, não significa que seu aplicativo não tenha pequenos bugs.
Sendo assim, é absolutamente necessário que você teste seu aplicativo detalhadamente. Assim, você pode entender se seu aplicativo esta funcionando da melhor forma, sem bugs ou erros.
Além disso, existem vários dispositivos com iOS, então, quantos mais dispositivos forem usados para testes, melhor para o seu aplicativo.
Você poderá ter certeza que seu aplicativo cabe e se adapta a todas as telas, algo que você não conseguirá fazer em um simulador de iOS.
E, mesmo que a equipe de avaliação da Apple não encontre os bugs do seu aplicativo, não significa que seus usuários ficarão satisfeitos com tudo. Sendo assim, tenha certeza que eles possam ter a melhor experiência.

Não ignore as regras principais.

A Apple disponibiliza todos os guias e documentos necessários para que os desenvolvedores encontrem todas as informações importantes. Infelizmente, alguns desenvolvedores acabam ignorando as principais regras, fazendo com que seus aplicativos sejam rejeitados.
Nesse artigo, resolvemos te ajudar a entender as principais regras, para que você não as deixe passar despercebidas:
  • Seu aplicativo deve passar por um teste de erro;
  • O uso de APIs privados é impossível;
  • Não pode ser um clone de um aplicativo nativo pré instalado no sistema;
  • Deve conter a ferramenta de compras in-app integrada;
  • A câmera ou o microfone do smartphone não podem ser utilizados sem a permissão do usuário;
  • Seu aplicativo deve utilizar apenas artes próprias, ou deve ter as devidas permissões para utilizar artes alheias.
A lista não é tão grande, mas seguir essas simples regras consegue te ajudar a publicar seu aplicativo sem nenhum grande problema.

ID do App

Qualquer aplicativo requer uma identificação única na App Store. A Apple oferece dois tipos de ID – explicito e wildcard. Você pode desenvolver e instalar um grande número de aplicativos com um ID wildcard. Mas, se você deseja utilizar o iCloud, ou ferramentas espefícias do iOS, como as notificações push, você vai precisar de um ID explícito. Sendo assim, escolher a ID correta é muito importante.

Distribuição

Para ter certeza que seu aplicativo estará disponível para um tipo específico de dispositivo ou versão de iOS, você precisa conseguuir um certificado de distribuição autorizado pela Apple.
Para conseguir, você precisa enviar uma solicitação e esperar a aprovação da Apple. Você deve estar logado em sua conta de desenvolvedor da Apple.
Ao receber seu certificado de distribuição, você deve criar um perfil de provisionamento próprio, assim além de comprovar sua identidade, você e sua equipe poderão utilizar e testar o aplicativo em um iPhone ou iPad.

Assinatura do código

Após estes procedimentos, você precisa realizar a assinatura do código. Mas, o que é isto? Você precisa configurar as opções no Xcode, e passar pela assinatura do código.
Esta é uma tecnologia de segurança do macOS, que certifica que seu aplicativo foi criado por você.
Essa tecnologia pode identificar quaisquer mudanças feitas por você ou terceiros, e lhe enviará uma notificação.
Se algum malware tentar infectar seu aplicativo, você saberá imediatamente.
No total, este processo parece bem difícil de sere realizado de primeira, mas, depois de um tempo, você pega o jeito.

Alvo de implantação (Deployment target)

Você não pode ignorar o alvo de implantação de desenvolvimento de seu aplicativo. Esta configuração também é importante. Quando você cria um projeto no Xcode, seu aplicativo tem um alvo na implantação – ele indica qual a versão mais antiga do sistema operacional é capaz de rodar seu aplicativo.
É tudo bastante simples, mas há algo importante a ser considerado: quando você terminar de publicar seu aplicativo na Apple, você deve modificar o alvo de implementação de modo cuidadoso.
Se você pretende aumentar a implementação de seu aplicativo em uma nova atualização, quando seu aplicativo já estiver disponível para usuários, alguns deles não conseguiram utilizar seu aplicativo, por estarem utilizando uma versão de sistema operacional mais antiga. Consequentemente, você perderá parte de seu público, e pode receber feedbacks negativos quanto a isto.

Envio do aplicativo: siga as regras a App Store

Seu aplicativo será publicado. Complete alguns passos para completar esta etapa!

Otimização do ícone

Seu aplicativo não pode existir sem um ícone, e você, ou seu designer, deve criar um ícone atrativo para seu aplicativo.
Tenha em mente que o tamanho de seu ícone deve estar de acordo com as demandas da Apple.
Os principais requisitos da Apple a respeito do tamanho dos ícones se encontram no site oficial.

Capturas de seu aplicativo

Você deve produzir pelo menos 5 capturas de seu aplicativo e pelo menos uma pré-visualização. Se você criar um aplicativo para vários dispositivos, você precisará fornecer capturas de tela de todos eles.
É muito importante que esse passo seja cumprido, quando você estiver publicando seu aplicativo iOS na App Store, já que suas capturas de tela podem impactar diretamente na decisão final de seu público.
Ou seja, as capturas de tela também podem afetar se as pessoas serão ou não usuárias de seu aplicativo.

Metadados

Seu aplicativo deve possuir uma descrição detalhada, com todas as informações necessárias. Os dados são os seguintes:
  • Nome do aplicativo;
  • Número da versão do aplicativo;
  • Escolher a categoria do seu aplicativo;
  • Produzir uma descrição detalhada;
  • Adicionar palavras-chave.
Esse é um dos principais passos a ser seguido para publicar seu aplicativo iOS na App Store.

O começo da publicação

Ao completar todas as ações acima, você deve criar seu aplicativo no iTunes Connect.
Aqui, você deve utilizar as informações de sua conta de desenvolvedor, preencher o formulário e adicionar o novo aplicativo.

1. Adicione o nome do seu aplicativo;

É recomendado que o nome do seu aplicativo seja igual ao nome abaixo do ícone na tela inicial;

2. Adicione seu número SKU/ID do Bundle;

O número SKU é um tipo de código que faz com que seja possível identificar seu aplicativo na App Store. O desenvolvedor pode criar este código sozinho.
Quando ao Bundle ID, você só precisa selecionar o ID do aplicativo que você escolheu (explícito ou wildcard) no menu. Só isso.

3. Adicione o custo de seu aplicativo

Apenas adicione o preço e escolha quais lojas que seu aplicativo estará disponível. Se você quiser mudar isso depois, sendo no preço ou na disponibilidade, você pode fazê-lo no iTunes Connect a qualquer momento, sem precisar criar nenhuma atualização.

4. Faça o upload do seu aplicativo

Você começará criando um arquivo, quando preparar a publicação de seu aplicativo iOS.
O arquivo deverá ser criado utilizando o seu dispositivo iOS, conectado ao Mac que você utiliza.
Depois disso, você deve encontrar o arquivo no Menu do Xcode. Se tudo tiver sido feito da forma correta, o organizador do X code abrirá seu arquivo normalmente.
Selecione o arquivo e clique no botão Upload To App Store. A versão binária do aplicativo será enviada para os servidores da Apple. Lá, seu aplicativo será validado, e, se houver algo errado, ocorrerá um erro.
De qualquer forma, isso deverá te ajudar a corrigir todos os erros antes que ele chegue as mãos do time da apple para avaliação.

5. Processo de avaliação

Depois da verificação inicial, você conseguirá verificar o status atualizado como Waiting for Review. Normalmente, são necessários por volta de 7 dias para que seu aplicativo seja avaliado.
Se você desenvolveu um aplicativo sólido e fez bons teste, seu aplicativo não falhará nesta etapa.

Porque seu aplicativo foi rejeitado

Agora, vamos falar dos principais motivos que podem causar a rejeição na publicação de um aplicativo na App Atore.
Esta parte do texto vai te ajudar a evitar erros comuns, fazer com que seu aplicativo seja agradável ao público, e completar o envio de seu aplicativo da melhor forma.

Bugs e falhas

Você deve testar seu aplicativo detalhadamente antes de enviá-lo para publicação. Se ele conter quaisquer erros ou falhas constantes, o time de avaliação irá rejeitá-lo. Além disso, tenha certeza que seu aplicativo não contém nenhum link quebrado ou corrompido.

A presença de conteúdo inútil

Isso significa que seu aplicativo não pode conter nenhum aplicativo que não tenha nenhuma funcionalidade. Termine seu aplicativo com calma antes de enviá-lo para publicação.

Falta de informação

Quando você estiver publicando um aplicativo iOS na App Store, tenha certeza que seu aplicativo tenha toda a informação necessária, como uma descrição detalhada e fotos ou vídeos demonstrativos. Se houverem configurações especiais a serem realizadas, considere adicioná-las a especificação do aplicativo. Se você resolver esta etapa de forma inteligente, tudo ocorrerá da melhor forma.

UI inadequada

A interface de uso (UI) deve ser bem pensada e focada na usabilidade, então desenvolva de forma consciente. A Apple possui requisitos estritos quanto a interface de uso de um novo aplicativo, então tenha certeza que o seu software tenha tudo que é necessário.

Fraudes

Seu aplicativo deve conter exatamente aquilo que anuncia, para não confundir ou enganar os usuários. Se isso não acontecer, ou se as funções não forem especificadas na descrição oficial, esteja preparado para revisar seu aplicativo e reenviar para publicação. Ele será rejeitado.

Aplicativos similares

Se você criar vários aplicativos para serem publicados na App Store, tenha certeza que seus aplicativos não têm funções iguais ou muitos parecidas, ou todos eles serão rejeitados. Além disso, se o seu aplicativo é um tipo de clone de algum aplicativo já publicado na App Store, ele também será rejeitado. A Apple irá oferecer que você desenvolva um aplicativo combinando todas a ferramentas encontradas em todos os seus apps similares.
Aplicativo de baixo-custo
Mesmo que seu aplicativo obedeça todas as principais regras da Apple, e não exista nenhuma violação séria, ele continua passível de rejeição. O aplicativo deve conter algo novo para o mercado de aplicativos iOS, e se conter códigos e desenvolvimento medíocre, ou se for criador para um público muito limitado, ele será rejeitado.
Além disso, tenha certeza que seu aplicativo contenha o identificador de anúncios, se você planeja adicioná-los a seu app. No fim, teste se seu identificador de anúncios funciona de forma correta, pois se os anúncios não forem exibidos corretamente, o aplicativo também será rejeitado.

Resultado / Conclusão

Se você deseja saber como publicar seu aplicativo na App Store, você tem todas as principais informações nesse texto. 
De qualquer forma, a principal dica é: desenvolva da melhor forma e fique atento as regras da Apple.

1.22.2020

Good Platform = (Bitcoin + Blockchain )*HighTech Software+OpenSource/securityDistributed

Here's why it matters from a policy perspective... about Blockchain with open source software 
The computer code undergirding each major cryptocurrency and open blockchain project is developed as open source software. Regulators and policymakers looking into cryptocurrencies but unfamiliar with open source software may have an incorrect mental model: one wherein software-based systems are (and must be) developed by one or a handful of for-profit companies. While plenty of important software projects are developed in this way (e.g. Microsoft’s Windows or Oracle’s RDBMS), open source projects are different and that difference can and should help shape public policy.
Open source software is collaboratively produced, shared freely, published transparently, and developed to be a community good rather than the property or business of a single company or person. When a project is developed open source there isn’t a single chokepoint in the development process, no company or individual that makes, owns, and sells the software. Just as there is no single company that powers the Bitcoin network, neither is there one company that makes the software that, when run on internet connected computers, creates that network. This decentralization in technology production has several profound benefits and can be difficult to grasp for those not familiar with software development.
To better understand the power and nature of open source, it is helpful to first understand a bit about one particularly successful piece of open source software: Linux, the open source operating system.
Good Platform = (Bitcoin + Blockchain )*HighTech Software+OpenSource/securityDistributed 


9.09.2019

Supervised and Unsupervised machine learning techniques



One of the main questions I hear in Artificial Intelligence (AI) classes is about what it is and when to use supervised and unsupervised machine learning techniques.
Today these questions are asked by non-programmers or beginners, because the amount of information on what supervised learning is and how to implement really has to be accessible to those who know or who know and have experience.
These terms imply that they are different models.
Making a metaphor, imagine students being supervised by a teacher who passes a specific goal or target and shows several examples so that they can have a direction on how to learn to perform their task to better reach the target. In the unsupervised, the teacher gives examples, but does not indicate the target to be reached. Students are free to draw their conclusions from the examples.
These techniques address different problem solving.
Which one to use will depend on the business objective.

TARGET :  BUSINESS OBJECTIVE







8.19.2018

Machine Learning # Deep Learning


Machine Learning # Deep Learning 


Para aclarar, sencillo, las diferencias entre MACHINE LEARNING y DEEP LEARNING, diremos que Machine Learning consiste en un conjunto de algoritmos que parten de un conjunto de datos de entrada y tratan de clasificarlos automáticamente o bien de inferir nuevos datos.


Entre estos algoritmos se encuentran la :
  1. regresión lineal
  2. regresión logística 

Estos las redes neuronales

Son métodos de fuerza bruta que normalmente funcionarán tan bien como bueno y amplio sea el conjunto de datos de entrada.

Ejemplos de aplicaciones de estas técnicas son:
  • Reconocimiento de caracteres en una imagen
  • En base a un elevado número de variables de entrada (nº de habitaciones, superficie, antigüedad, etc.) determinar el precio óptimo de una vivienda
  • Clasificar noticias, artículos, películas, etc. por categoría y hacer recomendaciones personalizadas
  • Detección del uso fraudulento de cuentas bancarias
  • Detección de enfermedades en base a datos médicos del paciente

En el aprendizaje definimos un mapa de vectores con referencia en los datos.

Estos algoritmos pueden trabajar con un gran número de variables de entrada y la dificultad normalmente consiste en recolectar los datos con los que alimentarlos.

Pero en todo momento hablamos de datos en bruto: diferencias entre pixeles de una imagen o correlaciones entre datos, no hay un verdadero entendimiento de los valores de entrada.

Aquí es donde entra el Deep Learning, que añadiría la parte de representación de datos, de esa forma el sistema sabría que una película dramática contiene normalmente la pérdida de alguien querido o una relación amorosa truculenta, que el estómago y el hígado forman parte del aparato digestivo o sabría que las caras muestran diversas expresiones: alegría, tristeza...

Por tanto, es Deep Learning es un área de investigación clave en los próximos años...







La conclusión sería la siguiente, mi visión:

Deep Learning = Machine Learning + Semántica

9.28.2017

O Lookup no Java EE 6 

É mais simples, podemos utilizar injeção de dependência e é compatível com as implementações anteriores.
Existe mais de uma maneira de fazê-lo, e aqui tentaremos abordar uma forma considerada boa prática.
Para saber mais sobre o assunto, pesquise por Portable global JNDI name que foi introduzido no Java EE 6 

A imagem abaixo demonstra como é possível fazer o lookup direto e o equivalente utilizando a injeção de dependência.

Importante: Esta é uma forma simples, porém em uma aplicação corporativa não é uma boa prática.

Não deve fazer, segundo as boas práticas de estratégia de implementação.

Mas quais são os problemas desta abordagem?
 
Existem alguns problemas relacionados à portabilidade, e uma limitação em termos de nomes. O lookup JNDI, é possível saber mais detalhes sobre o assunto, no wesbite do Java .

Nas versões mais antigas do Java EE, é possível minimizar este problema adicionando nomes lógicos nos descritores, deployment plan e fazendo lookup utilizando java:comp/env.

No Java EE 6 não é muito diferente, porém existem algumas facilidades:
 
1) Não é necessário adicionar itens aos descritores da aplicação (web.xml e ejb-jar.xml)
2) Alguns lookups são possíveis sem nenhum descritor, outros com apenas o deployment plan.

Abaixo é demonstrado como é feito um lookup a base de dados utilizando os recursos do Java EE 6:
(boa prática)


Em uma aplicação web, o @Resource é o responsável por colocar as informações, as quais você teria que colocar no web.xml

O Deployment plan, continua sendo o mesmo arquivo com o mapeamento entre os nomes lógicos e os nomes físicos. Como varias informações são fornecidas com o uso de annotations, este arquivo acaba sendo um pouco mais enxuto. 

Lookups de EJBs no Java EE 6:

 
Nos casos dos EJBs tem uma diferença, que melhorou no meu ponto de visão. Em lookups locais não é necessário nenhum tipo de descritor. No caso de lookups remotos apenas é necessário o deployment plan para fazer o mapeamento.

Outra diferença é que ficou mais simples de fazer o lookup, bem como é possível utilizar a injeção de dependência:

Object result = context.lookup(CepRepositoryBeanLocal.class.getName());
CepRepositoryBeanLocal service = (CepRepositoryBeanLocal) result;


E o código acima pode ser trocado por

 
@EJB CepRepositoryBeanLocal service;

Utilizando o @EJB, o container irá cuidar de prover uma implementação de CepRepositoryBean para a interface de negócio CepRepositoryBeanLocal.



Download dos exemplos:
Ambiente: JDK 1.6.24, JBoss 6.0, Eclipse 3.6

2.20.2017

TDD What ? New or old ? Good or no ?

Currently or since I know myself as a professional, software failures are largely responsible for costs and time in the software development process.
While it is not possible to remove all existing errors in a given application, it is possible to considerably reduce the number of errors using a more elaborate testing infrastructure, which allows for identifying and removing defects earlier and more effectively.
These defects can result from various causes such as errors of knowledge, communication, analysis, transcription, coding, etc. There are basically three ways to handle software flaws:

1. Fault-avoidance: With appropriate specification, design, implementation and maintenance activities always aiming to avoid failures in the first place. It includes the use of advanced software construction methods, formal methods, and reuse of trusted software blocks.

2. Fault-elimination: Analytical compensation for errors committed during specification, design and implementation. Includes verification, validation and testing.

3. Fault-tolerance: real-time compensation of residual problems such as changes out of specification in the operating environment, user errors, etc.

Due to the fact that fault-avoidance is economically impractical for most companies, the technique of fault elimination is generally adopted by software manufacturers

In the US, do these errors move the software market by approximately 50 billion dollars, and in Brazil and South America? We can see that there is a culture of everything by the result, and after delivery by delivery, in many projects and forgotten the quality be it in the software architecture or in the choice of the project implementation strategy, the DEADLINE is focused by the DEADLINE.
Another point is the bureaucratization of technical activities, process must exist but these should also be support to the objectives and not against the objectives that includes being agile, safe, reusable, practical and that make a culture in the company be it with 10 professionals or with 100 In a company.

The culture of testing is old, as it says in King Chelomoh's Cohelet book, nothing new is just not revealed.

The practice involves the implementation of a system starting with test cases of an object, this is old, I at least have known these techniques since 1999, I will cite only one that defends this idea [Gelperin and Hetzel 1987]. Minimize the errors by focusing on the tests, and today as we are in the era of "JS frameworks", there is a semantics of confusing the implementation framework with work process framework with tools of griffe, which does not apply if they are not tested in the process by All, for all, not only by the 18-year-old project architect, this 18-year-old nowadays grant the role of software architect, senior software development positions to good early professionals, but with little experience, which For me 1996 was almost impossible to have a Jr. level in my classificatory parts of technical activities of the profession, I thought more imperative implementation than clear techniques, there have been many improvements, but today TDD - Test driven development can be put at high risk If you do not have experience in IT projects with software development with serious errors and also great achievements.
In many different techniques, used in the market and tested in the academic world, and professional can, I say by myself also, that the use of this technique is possible to reduce the complexity of software, increasing the maintainability of it. Failures are easily identified even in the development stage thanks to continuous feedback given to the programmer. The test units created allow you to more easily evaluate new defects that may have been inserted in the software facilitating the development of successive releases.


But a detail the professionals who do this are also with attributes of programmers, systems analysts know the world of implementation, this is my opinion for the success of TDD, adjust to lead to good results.


AI within DDD ( Domain Driven Development )

In some projects  I've participated in, and even created and built directly, I always thought about automating the generation of compone...