Arquivo

Arquivo do Autor

Onde o iTunes salva o backup do iPhone no PC?

19 de novembro de 2017 Deixe um comentário

Ao conectar o iPhone no PC é feito um backup completo no PC.

Onde fica a pasta com o backup?

C:\Users\(username)\AppData\Roaming\Apple Computer\MobileSync\Backup

 

image

 

Fonte: https://discussions.apple.com/thread/4027822?start=0&tstart=0

Como desativar backup automático do iPhone no iTunes?

19 de novembro de 2017 Deixe um comentário

Sempre ao conectar o iPhone ao PC, o iTunes abre e já faz um backup completo do iPhone no PC. O problema é que isso demora muito e as vezes só quero pegar um arquivo. Então, fica a pergunta.

 

Como desativar o backup automático do iPhone no iTunes?

 

Procedimento no PC

  1. Fechar o iTunes
  2. Executar, Windows+R
  3. Digite: C:\Program Files\iTunes\iTunes.exe  /setPrefInt DeviceBackupsDisabled 1image
  4. Para voltar, repita os passos 1, 2
  5. Digite: C:\Program Files\iTunes\iTunes.exe  /setPrefInt DeviceBackupsDisabled 0

 

Procedimento no Mac

  1. Fechar o iTunes
  2. Abrir o terminal de comando
  3. Digitar: defaults write com.apple.iTunes DeviceBackupsDisabled -bool YES
  4. Abrir o iTunes, agora o backup automático não será feito.
  5. Para voltar, repita os passos 1, 2
  6. Digitar: defaults delete com.apple.iTunes DeviceBackupsDisabled

Fonte: http://osxdaily.com/2012/05/15/disable-itunes-backup-for-ios-devices/

SQL Server – Gerar um número randômico

13 de setembro de 2017 Deixe um comentário

Preciso gerar um volume de dados com valor inteiro e/ou decimal, para popular uma tabela no SQL Server. Não quero depender de ferramenta de terceiro para gerar os dados.

A solução foi fazer um script Gerar_Numero_Randomico.sql, que está disponível no meu GitHub.

Gera_NrRandomicoResult

Explicação dos comandos usados, abaixo:

1. Gerar um número randômico, ou seja, número aleatório. Exemplo: 1, 524, 6421, 60544, 40.

Para isso usarei a função NEWID() que cria um valor hexadecinal único do tipo uniqueidentifier.

SELECT NEWID() AS ID_Hex

 

2. Extrair o valor inteiro do ID_Hex, usando a função CHECKSUM().

SELECT

  A.ID_Hex,

  CHECKSUM(A.ID_Hex) AS Nr_Randomico,
FROM ( — Nr_Randomico baseado em um ID Hexadecimal
            SELECT NEWID() AS ID_Hex
          ) A

 

3. Criar o valor decimal, com 4 casas, dividindo o valor inteiro por 10000,0000 e convertendo o resultado da divisão usando a função CAST().

SELECT

  A.ID_Hex,

  CHECKSUM(A.ID_Hex) AS Nr_Randomico,

  CAST(CHECKSUM(ID_Hex) / 10000.0000 AS decimal(10,4)) AS Nr_Randomico_Decimal
FROM ( — Nr_Randomico baseado em um ID Hexadecimal
            SELECT NEWID() AS ID_Hex
          ) A

 

Com os três passos, obtemos o seguinte resultado:

ID_Hex Nr_Randomico Nr_Randomico_Decimal
4CBFDEC3-F57C-433D-B145-7959B570FBC0 -1216800284 -121680.0284

 

Podemos gerar novos valores inteiros e decimais, usando parte do Nr_Randomico_Decimal. Exemplo:

Nr_Randomico_Decimal Novos Valores Descrição do Valor
-121680.0284 -121680 Somente parte inteira
-121680.0284 0284 Somente parte decimal
-121680.0284 0.0284 1 dígito da parte inteira + parte decimal
-121680.0284 80.0284 2 dígitos da parte inteira + parte decimal
-121680.0284 680.0284 3 dígitos da parte inteira + parte decimal
-121680.0284 1680.0284 4 dígitos da parte inteira + parte decimal

 

4. Usarei a função PARSENAME() para obter a parte inteira do Nr_Randomico_Decimal.

PARSENAME(CAST(CHECKSUM(ID_Hex) / 10000.0000 AS decimal(10,4)) , 2) AS Parte_Inteiro

 

5. Usarei a função PARSENAME() para obter a parte decimal do Nr_Randomico_Decimal.

PARSENAME(CAST(CHECKSUM(ID_Hex) / 10000.0000 AS decimal(10,4)) , 1) AS Parte_Decimal

Note que a função PARSENAME() é composta por dois parâmetros o Objeto e Parte do Objeto que se deseja obter, sintaxe PARSENAME ( ‘object_name’ , object_piece ).

Como nosso objeto é o Número Decimal  -121680.0284, ele é composto por 2 partes interpretadas da direita para esquerda. Portanto:

Objeto Parte Resultado Descrição
-121680.0284 1 0284 Parte Decimal do Nr_Randomico_Decimal
-121680.0284 2 -121680 Parte Inteira do Nr_Randomico_Decimal

6. Já com a Parte Inteira, -121680, preciso extrair o 1 dígito, 2 digito, etc.

Para isso usarei a função RIGHT(), obtendo N caracteres da direita para esquerda.

Parte Inteira Resultado Sintaxe
-121680 0 RIGHT(‘-121680’, 1)
-121680 80 RIGHT(‘-121680’, 2)
-121680 680 RIGHT(‘-121680’, 3)
-121680 1680 RIGHT(‘-121680’, 4)

RIGHT(PARSENAME(CAST(CHECKSUM(ID_Hex) / 10000.0000 AS decimal(10,4)), 2), 1) AS Parte_Inteiro_1dig

7. Agora vamos somar a Parte Inteira N Digitos + Parte Decimal

Nr_Randomico_Decimal Inteira N Digitos Parte Decimal Novos Valores
-121680.0284 0 0284 0.0284
-121680.0284 80 0284 80.0284
-121680.0284 680 0284 680.0284
-121680.0284 1680 0284 1680.0284

 

8. Como repetir o comando SQL, várias vezes?

Até o passo sete, foi construído o comando SELECT… que retorna um número aleatório/rondômico.

Porém, precisamos executar o comando SELECT várias vezes e ir armazenando em uma tabela.

Para executar um comando N vezes, usarei o GO que é uma instrução sqlcmd, exemplo:

SELECT ‘A’, 1

GO 5

Será executado 5 vezes o comando SELECT ‘A’, 1

Dito isto, para gerar 5 números randômicos vamos colocar no final do comando SELECT, GO 5

SELECT

  A.ID_Hex,

……

GO 5

9. Criar uma Tabela para armazenar os 5 números gerados no passo oito.

No passo anterior, vimos que o comando SELECT foi executado 5 vezes. Isso gerou 5 resultados em resultset diferentes e não uma tabela contendo 5 registros.

Para resolver isso, podemos criar uma Tabela para receber os valores gerados.

Normalmente, usamos a função CREATE TABLE().

Mas, neste exemplo não quero definir cada campo ao criar a tabela de resultado e sim aproveitar o resultado do SELEC para criar a estruturar da #Tabela_NrRandomico que receberá os números randômicos gerados.

Para isso usarei a função TOP() em conjunto com a cláusula INTO do SELECT.

SELECT TOP 0, *

INTO #Tabela_NrRandomico

FROM (

SELECT

  A.ID_Hex,

……

) Gerar_NrRandomico

No comando acima o TOP 0 (zero), * do PRIMEIRO SELECT não retorna nenhum valor, porém captura toda estrutura de campos do resultado gerado pelo SEGUNDO SELECT A.ID_HEX.

Já o INTO #Tabela_NrRandomico do PRIMEIRO SELECT, cria a tabela #Tabela_NrRandomico baseado no resultado capturado.

Atenção o # não é erro de digitação, ele significa que será criar uma tabela temporária que ao fechar a conexão com o banco de dados é eliminada, automaticamente.

Para criar uma tabela real, portanto permanente. Retire o #, INTO Tabela_NrRandomico.

 

10. Inserir na tabela #Tabela_NrRandomico os 5 números gerados no passo oito.

Para isso usarei o INSERT INTO com valores gerados no SELECT

INSERT INTO #Tabela_NrRandomico
SELECT *
FROM (

SELECT

  A.ID_Hex,

……

) Gerar_NrRandomico

GO 5

11. Vamos exibir o resultado da #Tabela_NrRandomico

SELECT * FROM #Tabela_NrRandomico
GO

12. Excluir a tabela #Tabela_NrRandomico, usando o DROP TABLE.

Para que ao executar o script várias vezes não exiba o erro de tabela já existente, pois ela é sempre criada no passo nove.

DROP TABLE #Tabela_NrRandomico
GO

Com os 12 passos, obtemos o seguinte resultado:

ID_Hex Nr_Randomico Nr_Randomico_Decimal
4CBFDEC3-F57C-433D-B145-7959B570FBC0 -1216800284 -121680.0284
0509C7E0-AEC0-4B6C-8DDF-A26142156E59 -1025729740 -102572.9740
539E79E8-12CC-45AE-9E38-2CBECE009464 718090630 71809.0630
38268135-CDCC-43B0-B8D2-68C67C3D0D14 -2028602481 -202860.2481
C0743028-43C9-43BE-93AC-5C39455BEA5C 779214164 77921.4164

… mais outras colunas com os novos valores Inteiro_1_Decimal, Inteiro_N_Decimal.

 

Fonte:

https://stackoverflow.com/questions/3418606/sql-how-do-i-get-only-the-numbers-after-the-decimal

https://stackoverflow.com/questions/16412231/how-to-get-2-digits-after-decimal-point-in-tsql

https://stackoverflow.com/questions/1045138/how-do-i-generate-random-number-for-each-row-in-a-tsql-select

Automatizar envio de E-mail usando PowerShell

29 de agosto de 2017 Deixe um comentário

Podemos automatizar diversas tarefas usando PoweShell, inclusive enviar e-mail.

Este tutorial trata o script PowerShell e também como configurar o Gmail para permitir o envio do e-mail.

psEmail003

 

Criar script PowerShell com .NET Framework para enviar E-mail

 

Abra o bloco de notas, copie/cole o código e salve em: "C:\TEMP\Email_PowerShell.ps1"


$SMTPServer = "smtp.dominio.com.br"
$SMTPPort = "587"
$Username = "seuemail@dominio.com.br"
$Password = "senha"

$to = "destinatario@dominio.com.br"
$cc = "destinatariocopia@dominio.com.br"
$bcc = "destinatariocopiaoculta@dominio.com.br"
$subject = "Assunto do E-mail"
$body = "Este e-mail foi enviado automaticamente, usando PowerShell.

Att,
Sua Assinatura"

$attachment = "C:\TEMP\Email_PowerShell.ps1"

$message = New-Object System.Net.Mail.MailMessage
$message.subject = $subject
$message.from = $username
$message.to.add($to)
#$message.cc.add($cc)
#$message.cc.add($bcc)
#$message.attachments.add($attachment)

$message.body = $body

$smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort);
$smtp.EnableSSL = $true
$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password);
$smtp.send($message)
write-host "E-mail Enviado!"


Usando o SMTP do GMail

 

$SMTPServer = "smtp.gmail.com"
$SMTPPort = "587"
$Username = "seuemail@gmail.com.br"
$Password = "senha"

 

Quando usamos o GMail para autenticação no Outlook, Site e Apps. Sempre na primeira vez é perguntado se vamos permitir que o “Programa” em questão acesse nossa conta.

Ao concordarmos o acesso é liberado e o “Programa” faz login usando as nossas credencias.

Isso é uma segurança do Goggle.

No caso do “Programa” – Script PowerShell não existe a interface que solicita nossa permissão. Logo, quando o script tenta fazer o login para enviar o e-mail.

Aparece uma mensagem de erro / falha de autenticação:

Exception calling "Send" with "4" argument(s): "The SMTP server requires a secure connection or the client was not authenticated.The server response was: 5.5.1 Authentication Required. Learn more at"At line:15 char:1+ $SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ CategoryInfo          : NotSpecified: (:) [], MethodInvocationException+ FullyQualifiedErrorId : SmtpException

 

A solução imediata, porém menos segura, é reduzir a segurança do Google.

Configurar o GMail para permitir o Login:

a. Entre em https://myaccount.google.com/security 

b. Alterar a opção Permitir aplicativos menos seguros: DESATIVADA –> ATIVADA

c. Você receberá um e-mail de segurança do Google, não precisa fazer nada é só um aviso.

psEmail006

Outra solução é usar a autenticação em duas etapas e ativar a senha de app de 16 dígitos.

Também podemos usar a autenticação OAuth, ambas soluções tratarei outro dia.


Executar o script PowerShell

 

psEmail003

a. Abrir o PowerShell

b. Entrar na pasta “CD C:\TEMP”

c. Executar o comando “.\Email_PowerShell.ps1

.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170.

d. Executar o comando mudando a permissão, apenas no contexto desta sessão

PowerShell.exe -NoProfile -ExecutionPolicy Bypass -File "ExecPS1.ps1" -Verb RunAs

 

 

Fonte:

.NET Framework

https://technet.microsoft.com/pt-br/library/system.net.mail(v=vs.110).aspx

SMTP PowerShell using simple Authentication

http://petermorrissey.blogspot.com.br/2013/01/sending-smtp-emails-with-powershell.html

Sending e-mail with Gmail using PowerShell

https://stackoverflow.com/questions/29029364/sending-email-with-gmail-using-powershell

Windows PowerShell about_Execution_Policies

https://technet.microsoft.com/pt-BR/library/hh847748.aspx

Converter e/ou Formatar no Microsoft SQL Server

30 de maio de 2017 Deixe um comentário

Tenho um campo do tipo SmallDateTime contendo 2017-05-30 16:16:10.730.

Desejo os seguintes resultados:

GetDate yyyymmdd yyyy-mm-dd dd/mm/yyyy
2017-05-30 16:16:10.730 20170530 2017-05-30 30/05/2017

 

Solução:

Para resolver este problema usei a função CONVERT passando o parâmetro style, ele será o responsável por apresentar o resultado da conversão com um formato de exibição.

Cada código do style indica um formato, mais informações na documentação T-SQL.

 

Syntax for CONVERT: CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

 

Comando:

select getdate() AS ‘GetDate’

     , convert(varchar(10), getdate(), 112)  AS DateFormat_ISO_Long
     , convert(varchar(10), getdate(), 126)  AS DateFormat_ISO8601_Long
     , convert(varchar(10), getdate(), 103) AS DateFormat_British_French_Long

 


Desejo a Data e Hora SEM espacos

GetDate yyyy-mm-ddThh:mm:ss.mmmZ
2017-05-30 16:16:10.730 2017-05-30T16:16:10.730

 

Solução:

select getdate() AS ‘GetDate’
    
     , convert(varchar(19), getdate(), 126)  AS DateFormat_ISO8601_Long — (no spaces)


Desejo a Hora com formados diferentes

GetDate hh:mm hh:mm:ss hh:mm:ss.mmm
2017-05-30 16:16:10.730 16:16 16:16:10 16:16:10.730

 

Solução:

select getdate() AS ‘GetDate’

     
     , convert(varchar(5), getdate(), 114) AS HoraMinuto
     , convert(varchar(8), getdate(), 114) AS HoraMinutoSegundo
     , convert(varchar(12), getdate(), 114) AS HoraMinutoSegundoMilisegundo

Certificado – Maratona Xamarin 2017

29 de março de 2017 Deixe um comentário

Agora sim, ficou pronto meu certificado da Maratona Xamarin 2017

SamirMMBRxamarinmaratona2017pt

Xamarin Fest LATAM – São Paulo

25 de março de 2017 Deixe um comentário

Está acontecendo agora o evento presencial gratuíto de Xamarin.

xamarinfestlatam2017

Xamarin Fest – Zapopán, México
Tema: Cognitive Services & Xamarin
Oficinas Los Xamarinos, Calle Prado de los Cedros 867
Xamarin Fest – São Paulo, Brasil
Tema: Xamarin Fest São Paulo
Escola SENAI de Informática- Santa Cecília
Xamarin Fest – Porto Alegre, Brasil
Tema: Xamarin Fest Porto Alegre
Puc Rio Grande do Sul
Xamarin Fest – Blumenau, Brasil
Tema: Xamarin Fest Blumenau
UniSociesc de Blumenau
   

Em São Paulo:

Dia 25 de março a equipe de Microsoft MVPs estará na cidade para levar o seu conhecimento de Xamarin e nuvem para o próximo nível.

 

Organizadores:

Valerio Ferreira, e Thamirys Gameiro

https://www.meetup.com/pt-BR/Developers-SP/events/238451950/

 

O evento será um treinamento com a seguinte agenda:

• Xamarin para desenvolvimento de aplicativos;

• Definição do escopo do aplicativo;

• Como utilizar o Visual Studio Team Services para: Desenvolvimento Agile  com planejamento de tarefas (Scrum e Kanban) e colaboração de código com Git;

• Desenvolvimento do aplicativo e conexão com Azure;

• Como utilizar o Mobile Center para Testes de UI, Crashes, Analitycs e também como enviar versões betas de testes para usuários selecionados antes de publicar na loja;

• Como preparar e enviar um aplicativo para publicação na Apple Store e Google Play.

 

Fonte:

  https://goo.gl/J2kAnA