Estruturas de repetição em Swift

Bom pessoal vamos começar com mais um post sobre o Swift, assim como o ultimo post onde falei sobre estruturas condicionais neste post vamos falar sobre outro recurso extremamente importante para a programação estruturas de repetição os nossos famosos laços.

A principio, o que é um laço?
A ideia básica é criar um pequeno bloco de código que colocamos para se repetir enquanto a condição for verdadeira.

E quais os tipos de laços que existem e quais suas diferenças?

Dentro do Swift temos 4 tipos de laço:

O laço While (enquanto) a estrutura básica dele é a seguinte:

while (condições){
    // códigos que será executado
}

Ou seja, enquanto minha condição for verdadeira, o bloco de código será executada, porem tome cuidado com as condições que você cria para executar laços por exemplo se você cria uma condição 1 < 2, o código será executado infinitamente afinal 1 sempre será menor que 2.

Vamos criar um pequeno exemplo agora:

var teste: Int = 0;
while repetições < 3 {
    println("Nosso laço se repetiu:\(teste+1)");
    teste++;
}

Execute esse código e veja o que acontece em seu terminal, para fazer alterações no número de vezes que ele será executado podemos simplesmente alterar a condição;

Outro laço que podemos usar com Swift é o laço Do-While, ( que significa faça enquanto ) sua estrutura não diferencia muito do while, porem ele tem uma peculiaridade bem interessante ele executara seu bloco de código pelo menos uma vez:

Vamos explicar melhor com nosso exemplo, vamos criar um array que representara o carros em vagas de um estacionamento, cada vaga será equivalente a uma posição no array, e em cada posição um carro, (ok, ok, nesse exemplo temos que usar MUITO a imaginação mas vamos la).

//Nosso estacionamento, lembre-se de usar a imaginação
var carros = ["Ferrari", "Gol", "Fusca", "Fiat 147"]
var contador: Int = 0
do {
    println("Esse é meu carro?")
    contador++;
    if(carros[contador] == "Fusca"){
        println("Achei meu carro")
    }
} while carros[contador] != "Fusca"

Nesse exemplo, nós percorremos um array verificando cada carro, se esse carro que tem nessa vaga é o nosso, e diferente do while nós executamos toda a verificação pelo menos um vez, para então verificar se a condição nos permitiria executar o bloco novamente.

Vamos o laço For agora, esse laço faz exatamente a mesma coisa que um laço while, sua principal diferença é sua estrutura enquanto o laço while você precisa declarar uma condição de incremento em no meio de seu bloco, com o laço for você pode fazer isso tudo em uma única linha, sua estrutura básica funciona assim:

for (inicio, condição , incremento){
  // código
}

O interessante é que podemos por exemplo declarar uma variável no meio do comando for, por exemplo:

for(var contador: Int = 0; contador < 10; ++contador) {
    println("Nosso laço foi executado");
}

E apor fim nosso ultimo laço o For-in esse que tem propriedades muito interessantes, por exemplo podemos mandar ele percorrer um array de maneira MUITO mais simples que com os outros laços, vamos voltar a nosso array de carros, digo nosso estacionamento.

var carros = ["Ferrari", "Gol", "Fusca", "Fiat 147"]
for carro: String in carros{
    println(carro)
}

Nesse laço nós percorremos o array mostrando todos os valores dele no caso mostrando todos os carros dele.

Espero que esse post tenha ajudado alguém, foi bem curto, porem tem um conteúdo bem interessante para quem está aprendendo a programar, e se você gostou deste post, de uma olhada no ultimo onde eu falei sobre estruturas de condição.

Estruturas condicionais com swift

Bom pessoal, vamos a mais um post sobre o desenvolvimento de IOS, como meu último post ficou um pouco grande vou tentar ser um pouco mais sucinto nesse. Este post vai tratar de um assunto simples, porem extremamente importante para a programação como um todo não só para o desenvolvimento mobile, vamos trabalhar com as estruturas condicionais.

Bom antes de tudo, o que são estruturas condicionais ?

Quando estamos programando alguma coisa, em praticamente 100% dos códigos nós precisamos usar um if, quando usamos esse tipo de código nós estamos falando para o computador, olha SE a condição que eu falei foi cumprida, faça tal coisa. Temos também outros códigos que podemos usar junto como o caso do else, esse código usamos logo depois de um IF ele quer dizer que se a condição para executar o if não for cumprida, deve ser feito o que temos dentro das chaves ( { } ) de nosso else. Feita essa breve introdução vamos programar um pouco.

Inicie um novo projeto Swift, não vamos usar nenhum recurso visual, então vamos criar um novo, em linhas de comando apenas para demonstrar nossos exemplos.

Tela de criação de projeto swift
Tela de criação de projeto swift

Para começar precisamos criar uma variável para testar nosso sistema de condições, vamos criar uma variável do tipo inteiro, vou chama-la de idade, e vou atribuir a ela o valor 18.

var idade = 18;

Imagine agora que estamos fazendo um sistema para verificar se uma pessoa pode entrar em nosso bar, porem para entrar em nosso bar é preciso ter 18 anos ou mais, então vamos fazer uma condição, se a idade for maior ou igual a 18 ele pode entrar, e como ficaria isso em swift?

if(idade >= 18){

    println(“A pessoa pode entrar”)

}

Porém, e se a pessoa não for maior de idade? Para isso usamos nossa comando Else, nosso código fica da seguinte maneira.

var idade = 18;

if(idade >= 18){

    println(“A pessoa pode entrar”)

}else{

    println(“A pessoa não pode entrar”)

}

Mas e ai, o que significa esse >= que usamos em nosso código, bom eles são nossos operadores condicionais, normalmente usamos 6 deles:

X > Y onde nosso X é maior que nosso Y

X < Y onde nosso Y é maior que nosso X

X >= Y onde X é maior ou igual a nosso Y

X <= Y onde X é menor ou igual ao nosso X

X == Y onde nosso X e nosso Y são iguais (Lembrando que usar =, == e === são diferentes, se usamos apenas 1 = estamos atribuindo um valor a outro, == quer dizer que estamos comparando um valor ao outro, e o === estamos comparando um valor ao outro, e também estamos comparando o tipo da variavel).

Vamos treinar um pouco as comparações e fazer uma série de ifs testando as condições, para isso vamos criar 2 variáveis do tipo inteiro, e atribuir um valor a cada uma.

var x = 10

var y = 9

if(x>y){

    println(“X é maior que y”)

}else{

    println(“Y é maior que X”)

}

if(x>=y){

    println(“X é maior ou igual a y”)

}else{

    println(“Y é maior ou igual a X”)

}

 

if(x==y){

    println(“X é igual a Y”)

}else{

    println(“Y é igual a X”)

}

if(x===y){

    println(“X e Y tem valores Igual, e o mesmo tipo”)

}else{

    println(“X e Y tem valores diferentes ou tipos diferentes”)

}

com esse trecho de código podemos ver uma série de comparações, usando if/else, esse tipo de comparação pode ser feita com condições mais complexas, por exemplo uma equação, vamos criar outras 2 variáveis do tipo inteiro, e faremos o seguinte.

var y = 10

var z = 15

 

if((y*z) > 100){

    println(“A multiplicação de y e z é maior que 100”)

}else{

    println(“A multiplicação de y e z é menor que 100”)

}

Notem que para que nossa equação seja feita antes da comparação, a colocamos dentro de parênteses, assim o compilador faz a multiplicação dos dois valores e então a comparação.

Porem não precisamos fazer necessariamente fazer a comparação entre 2 valores inteiros, podemos usar exemplos boleanos por exemplo.

Então vamos la em mais um exemplo, criando uma variável do tipo boleano, e vamos atribuir um valor verdadeiro a ele (true).

var a = true

if (a == true){

    println(“o valor de a é verdadeiro”)

}

E por fim temos um ultimo tipo de comparação muito interessante podemos fazer comparações mais interessantes usando operadores lógicos(|| e &&), vamos a mais um exemplo com 2 variáveis do tipo Boleano.

var v1 = true

var v2 = false

if(v1 || v2 == true){

    println(“o valor de v1 ou v2 são verdadeiros “)

}else{

    println(“Nenhum dos valores é verdadeiro”)

}

Para esse tipo de comparação usamos || ou &&.

x || y quer dizer que o valor x OU que o valor y tem que atender a condição

x && y quer dizer que o valor x E que o valor y tem que atender a condição

Bom pessoal por hoje é isso, esse post ficou bem mais curto que o anterior, mas ainda apresenta um conteúdo muito interessante, e muito importante para quem está aprendendo a programar. Todo o código que usamos em nosso projeto está disponível para Download aqui.

Caso queira aprender mais sobre o Swift acesse este link onde falamos mais sobre a linguagem.

Erro 404: Faça o error 404 trabalhar pra você

O que é o Error 404?

O que você procurava simplesmente sumiu?  Error 404! O error 404 nada mais é que a resposta de uma requisição ao servidor dizendo que a página não foi encontrada. Confira algumas dicas para lidar com o error 404 ao seu favor.

Dicas de como utilizar o erro 404 a seu favor

  • Identifique os erros mais freqüentes;
  • Identifique quais conteúdos o usuário procura e você ainda não disponibilizou;
  • Um crawler nunca indexa uma página com 404, ou seja páginas com esse tipo de erro não são indexadas; #FicaDica
  • Redirecione velhos produtos, para uma página com produtos relacionados ao invés de um 404 😉 ;
  • Páginas 404 estão presentes nos melhores sites;
  • Podem ser causadas por erros de digitação do usuário;
  •  Customize sua página 404;

Dicas para customizar a sua página 404

  • Siga o padrão do seu layout, mostre ao usuário que ele continua no seu site na hora de configurar a sua página 404;
  • Coloque links de navegação para que ele possa voltar ao conteúdo do site;
  • Coloque um campo de busca para que possa procurar algo relacionado ao que não encontrou da primeira vez;
  • Coloque um pequeno texto no inicio dessas páginas, pedindo desculpas;
  • Sugira conteúdos do seu site relativos ao que o usuário está buscando;

Construção de tabelas com Objective-C e Swift

Bom pessoal vamos começar mais um tutorial no blog e dessa vez vamos falar sobre um dos recursos mais interessantes e mais usados para os aplicativos móveis, as tabelas e para isso vamos fazer da seguinte maneira como ainda temos usuários que estão programando Objective-C e aqueles que ja estão começando no Swift então vamos mostrar como criar o mesmo aplicativo em Objective-C e em Swift. Antes de montar o projeto em si vamos explicar um pouco sobre arrays. Os arrays são um tipo variável, que podem armazenar mais de uma valor, o conceito pode ter ficado meio confuso, então vamos tentar explicar de maneira diferente. Digamos que nossa memória seja um conjunto de caixas onde você pode armazenar vários objetos (nossa variáveis) agora digamos que dentro de uma caixa você  coloque uma pasta de documentos nessa pasta teríamos variais folhas, esta pasta seria nosso array. Agora voltando ainda para a area de computação. podemos dizer que armazenamos um conjunto de valores em uma variável,  e está variável vai para a memória.(isso pode variar de linguagem para linguagem, mas normalmente arrays só suportam um tipo de variável, ou seja se você colocou uma variável do tipo inteira, na primeira posição todos os outros valores do array tem que ser inteiros.). Se ainda ficou alguma duvida, acesse este link

Documentação Objective-C

Neste link temos a documentação da apple, sobre variáveis, em Objective-C, e no link a baixo, temos a documentação para Swift

Documentação Swift

Vamos a programação, primeiramente vamos ao conceito, vamos criar um app em Objective-C bem simples, você vai criar 2 telas, uma para inserir dados no array, e a outra que será a tabela propriamente dita, e também vamos colocar o botão para retirar dados da tabela.

imagem1

 

Primeiramente vamos ao Xcode, e vamos criar um novo projeto, mas ele será um pouco diferente do modelo padrão de uma única tela como criamos normalmente, vamos criar dessa vez um Tabbed Application, crie o novo projeto e salve onde quiser, vamos explicar a diferença entre o Single View e o Tabbed. O single view como o nome diz, é uma view em branco pronta para você alterar a vontade, enquanto o tabbed vem com estrutura diferente ele  tem 2 telas, uma normalmente usada para inserir os dados e outra onde temos a tabela propriamente dita.

imagem 2

Bom como vamos criar apenas um exemplo simples, vamos fazer da seguinte maneira, crie um NSMutableArray dentro da FirstViewController (como o nome deixa, um pouco óbvio, é a primeira tela a ser carregada), como estava sem criatividade, vamos fazer um tabela sobre nome de carros, então vamos criar um array chamado, nomeCarros, lembrando que você pode dar o nome que quiser para seu array. Dentro das linguagens da apple temos o MutableArray, e o Array padrão vamos a diferença básica entre eles, o array mutável (NSMutableArray) pode ser alterado durante a execução do código, ou seja podemos inserir e retirar dados do array durante todo o código, ja um array padrão não podemos. Explicado isso vamos continuar, embora nós pudéssemos simplesmente criar um array estático e e mostrar em uma tabela, mas ai qual seria a graça? vamos fazer um formulário simples para inserir os nomes na tabela(vocês ja devem ter percebido que hora eu falo inserir dados no array, hora eu falo em inserir dados na tabela, isso foi intencional, e agora vamos explicar o porque as tabelas pegam seus dados direto do array.), continuando o formulário vamos colocar apenas um campo para o texto, e um botão para inserir as informações; Lembrando que  se você estiver usando o Xcode 6 quando você acessa o storyboard suas telas devem estar com tamanhos diferentes de um tamanho padrão de Iphone nesse caso vamos fazer apenas um alteração no nosso projeto selecione uma view qual quer e dentro da aba direita de ferramentas dentro de Identity and Type (o primeiro botão) retire a opção Use Auto Layout  clique em Ok na tela que vai abrir, e pronto suas views ja estão com o tamanho da tela do iphone.

Imagem 3

A tela agora está feita, a minha ficou assim:

imagem 4

Vamos alterar agora nossa Header, não temos muito que fazer nela apenas ligar os objetos da minha tela e criar uma ação para nosso botão, e também criar também uma variável do tipo NSstring. nosso código por enquanto está assim, nada muito complexo, pelo menos por enquanto.

#import <UIKit/UIKit.h>

  NSMutableArray *nomeCarro; NSString *nomeDoCarro;

@interface FirstViewController : UIViewController

@property (weak, nonatomic) IBOutlet UITextField *nome;

  – (IBAction)inserir:(id)sender;

@end

Bomagora vamos começar a programar nosso projeto para inserir os dados no array a primeira coisa a se fazer é iniciar nosso array, para isso vamos dentro de nosso ViewDidLoad (dentro de nosso arquivo .m) e então vamos fazer o seguinte código: – (void)viewDidLoad {

    [super viewDidLoad];

    nomeCarro = [[NSMutableArray alloc]init];

  }

Com este código temos um array pronto para uso, vamos agora a a nossa ação para inserir os dados em nosso array da tabela.Dentro do Action que criamos vamos fazer o seguinte código.

– (IBAction)inserir:(id)sender {

    nomeDoCarro = _nome.text;

    [nomeCarro addObject:nomeDoCarro];

    [_nome resignFirstResponder];

  _nome.text = @””;

    NSLog(@”%@”,nomeCarro);

}

Vamos explicar agora como funciona este código, a primeira linha diz que nossa variável do tipo String é igual ao valor do nosso campo de texto. Ja na segunda linha ela é a chave de toda ação ele com ele basicamente nós falamos, olha pegue o array nomeCarro e inseria o objeto nomeDoCarro(nossa variável). Nossa terceira linha é um dos códigos mais interessantes ele abaixa o teclado, o que pode ser muito util. ja as próximas duas linhas não são necessárias, mas são interessantes de analisar na quarta linha nós limpamos o campo de texto, ou seja a cada nova entrada de dados o campos de texto já esta pronto para ser preenchido novamente, enquanto a ultima linha nos mostra pelo terminar do Xcode, qual todos os valores do Array, ou seja podemos testar ver se está tudo funcionando. E com isso terminamos nossa primeira tela, vamos para a parte principal do projeto, nossa tabela, que por incrível que pareça é mais simples de se fazer do que as pessoas que estão iniciando na linguagem acham, para isso vamos para nossa SecondView, nela onde vamos criar a tabela. A primeira coisa que vamos fazer é criar uma tabela, arrastando nosso componente la no mesmo esquema que fizemos com o campo de texto,porem agora nossa tabela tem um diferencial devemos conectar a nosso Delegate e nosso DataSource, para isso clique com o “botão direito” no componente tabela ligue ao delegate e o DataSource basicamente, para saber que esta conectado quando ele fica com uma “bolinha” do lado do método, isso mostra que estamos conectados, vamos a nossa programação.

imagem 5 imagem 6

Temos 3 métodos principais para nossa tabela, lembrando que para acessar os dados de nosso array que esta em outra classe antes precisamos importar essas informações esse tipo de conceito, estudamos em orientação a objeto, que não posso explicar nesse post, pois ele ja esta muito grande, podemos deixar para outro post, para este basta saber que para acessar as informações de outra classe você precisa importava, para importar isso voltemos nosso arquivo .h da segunda view e coloque essa linha de código:

#import “FirstViewController.h”

Com isso é como se todo o código que temos em FirstViewController podem ser acessados na nossa segunda tela. Bom voltando aos métodos da nossa tabela, quando construímos uma tabela, temos 3 métodos essenciais,(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

Por enquanto não vamos mexer muito nele. (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

Ja com esse método, nós retornamos o “Tamanho de nossa tabela“ Por fim com esse método nós montamos nossa célula.

(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

Esse são os 3 métodos que precisamos para trabalhar com tabelas, agora vamos nos aprofundar um pouco mais em cada uma, e vamos mostrar o código para nossa tabela funcionar.

– (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{

return 1;

}

– (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

return [nomeCarro count];

}

Esses são os 2 primeiros métodos que vimos, não temos muito o que explicar agora, mas vale lembra que no segundo método, ele define o numero de linhas da tabela, o problema de colocar um tamanho fixo por exemplo 5, se formos tentar colocar um 6 valor, teremos um erro de memória, pois o programa tentaria colocar mais valores no array do que sua capacidade total, então o que fazemos é colocamos o count do array que “comanda“ a tabela, isso diz que, a o tamanho da tabela é igual o tamanho do meu array, logo não teremos erro. Agora vamos ao ultimo método, talvez o mais interessante de todos, com ele nós montamos as células de nossa tabela para isso basta colocar o seguinte código: –

(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

static NSString *CellIdentifier = @”Cell”; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == Nil) {

        cell =[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];

    } cell.textLabel.text = [nomeCarro objectAtIndex:indexPath.row];

    [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];

    return cell;

}

Como nós só temos um único campo texto em nosso array, vamos apenas dizer que o campo label de nossa célula vai ser igual ao valor do array isso nós fazemos com o código

cell.textLabel.text = [nomeCarro objectAtIndex:indexPath.row];

com essa linha nós dizemos que o valor do array estará em nossa tabela, linha por linha. Como esse post é um introdutório não vamos nos aprofundar muito mais que isso, e nem explicar como podemos fazer células custodiadas, e agora vamos ao um outro método, este é outro método que podemos usar em praticamente qual quer tabela, afinal nós aprendemos a colocar os dados vamos ver como retirar os dados da tabela agora, para isso podemos resolver com menos de 10 linhas de código, vamos implementar o seguinte método.

– (void)tableView:(UITableView *)table commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

Vamos colocar o código para excluir o valor do array e recarregar a tabela.

[nomeCarro removeObjectAtIndex:indexPath.row];

NSLog(@”%@”,nomeCarro);

[table reloadData];

com essas 3 linhas de código nós retiramos a linha de código selecionada pelo usuário, mostramos como ficou o array, e também recarregamos a tabela, que voltará ja sem o o valor retirado, o Método todo fica assim.

– (void)tableView:(UITableView *)table commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{

    if (editingStyle == UITableViewCellEditingStyleDelete)

    { [nomeCarro removeObjectAtIndex:indexPath.row]; NSLog(@”%@”,nomeCarro); [table reloadData]; }

}

Esse método, faz com que se o usuário selecione a opção de excluir ele retira esse valor do array, e recarrega a tabela com o código reloadData. Com esses 4 métodos simples temos uma tabela simples, porem funcional, o código todo projeto estará disponível para Download.

Agora em Swift

Para aqueles que ainda não sabem o que é o Swift ainda podem dar uma lida rápida em outra postarem nossa nesse link.

Como nosso tutorial está ficando um pouco grande vou tentar ser mais sucinto nessa parte.Vamos iniciar o projeto, usamos o mesmo procedimento que usamos para criar o projeto em Objective-C porem vamos selecionar Swift.

A lógica de nosso projeto será a mesma, porem como estamos com um post um pouco longo ja vamos resumir, e fazer tudo em uma tela nossa layout não vai ficar um dos mais bonitos, mas vamos la .

imagem 7

 

bom o processo para conectar os componentes ao código é o mesmo processo, porem como não temos os arquivos headers, colocamos diretamente ao código swift, vamos precisar primeiramente de 4 componentes,

@IBOutlet var tableView: UITableView

@IBOutlet var nomeCarros : UITextField

var Carros: String[] = []

var carrosString :NSString = “”

Com essas 4 linhas de código nós declaramos 2 variáveis, uma chamada carros, ele será o Array onde vamos salvar os dados, ja o carrosString é uma variável do tipo string, que receberá nosso texto digitado, logo no inicio temos os nossos 2 Outlets nossa tabela, e nosso campo texto, feito isso agora podemos declarar a ação para nosso botão.

Nossa Ação fará o seguinte, vai receber os dados de nosso campo de texto, e depois o insere em uma variável do tipo String,

carrosString = nomeCarros.text

feito isso precisamos inserir os valores no array, essa função pode ser resolvida com uma única linha de código

Carros += carrosString

Essas duas linhas de código são o básico para inserir os dados de um campo texto em um array, porem teremos alguns problemas se apenas fizermos isso em nosso código, não saberemos se os dados, foram realmente inseridos, então para resolver isso, vamos fazer nossa Action ficar assim

@IBAction func InserirDados(sender : AnyObject) {

        carrosString = nomeCarros.text

        Carros += carrosString

println(\(Carros))

nomeCarros.text = “”

        [nomeCarros .resignFirstResponder()]

tableView .reloadData()

}

Bom esse código agora faz o seguinte, quando a ação for chamada, ela pega o valor que temos em nosso campo texto, e o convertemos para uma string e o inserimos no array, tiramos o teclado da tela, limpamos o campo de texto igual fizemos com nosso projeto me Objective-C.

Porem se você tentar executar essa ação teremos um erro, afinal não temos a tabela ainda em nossa tela, nem suas classes, então faremos o seguinte arraste a tabela para nossa view, depois de feito isso ligue ela a nosso outlet chamado tableView.

Agora vamos nossas funções da tabela.

a primeira coisa que precisamos fazer, seria dizer para nosso código que as células de nossa tabela se chama cell, para fazer isso dentro de nossa função viewDidLoad colocamos esse código

self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: “cell”)

assim como em em Objective-C temos algumas classes especificas para nossa tabela, como no Objective-C temos que dizer a quantidade de linhas de nossa tabela para isso vamos criar uma função

func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {

return self.Carros.count;

}

essa função por sua vez retorna uma valor inteiro, que é o tamanho de nosso array

Assim como no Objective temos que montar nossas células, elas são montadas dentro da função cellForRowAtIndexPath, dentro de nossa função precisamos apenas de 3 linhas de código

var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier(“cell”) as UITableViewCell

cell.textLabel.text = self.Carros[indexPath.row]

return cell

Na primeira dizemos que nossa célula vem de nosso objeto tableView, para a célula com nome cell, que declaramos logo no começo do código, ja a segunda linha diz que nosso textlabel é o valor que temos no array para cada linha, lembrando que você pode fazer a célula como bem entender, ou como o projeto precisar, porem a parte de células customizadas fica para uma próxima aula, e por fim retornamos nossa célula para nossa tabela.

Pronto temos agora um projeto simples com tabela e inserir dados em array tanto em Objective-C quanto em swift, lembrando que o ideal seria você escrever os códigos ao invés de copiar, os links para downloads são esses.

Códigos Objective-C

Objective

Códigos em Swift

Swift

Caso ainda não conheça muito sobre o Swift de uma olhada nesse link onde falamos um pouco sobre a linguagem.

Redirecionamento 301

O que é o Redirect 301?

O Redirecionamento 301 nada mais é que indicar automaticamente ao navegante endereço ou arquivo antigo para o novo endereço.

Quando devo utilizar o Redirect 301?

  • Alteração de página ou  novo domínio;
  • Renomear ou alterar um arquivo;
  • Melhorar a usabilidade do seu site redirecionando um Erro 404 > Redirect 301;
  • Redirecionar um domínio sem www para com www;

Como resolver um alto volume de erros 404 com o Redirect 301?

“Página não encontrada”, famoso erro 404.  Então você possui muitas páginas que não existem mais? Use o redirect 301 e acompanhe no seu painel do Google Webmaster Tools o rastreamento dos erros 404. Sabia que, a longo prazo o acúmulo destes erros pode resultar em uma queda de rankeamento no google.

Vantagens em utilizar o Redirect 301

  • O ranking e boa parte do valor adquirido pela página é mantido e passado para a nova.
  • O redirecionamento 301 serve para redirecionar uma página permanentemente, e não simplesmente redirecionar temporariamente.

Redirecionamento 301 com .htaccess

redirect 301 /antigo/arquivo_antigo.html http://www.seusite.com.br/aquivo_novo.html

redirect – é tipo de ação
301
– é código para redirecionamento permanente
/antigo/arquivo_antigo.html – local antigo
http://www.seusite.com.br/aquivo_novo.html – para onde ele vai ser redirecionado

Redirecionamento 301 com PHP

HTTP/1.1 301 Moved Permanently

Location: http://www.meusite.com.br/

<?
header( 'HTTP/1.1 301 Moved Permanently' );
header( 'Location: http://www.meusite.com.br/' );
?>

HTTP/1.1 301 Moved Permanently – é o código para redirecionamento permanente
Location: http://www.meusite.com.br/ – é o local para o qual será redirecionado

Redirecionamento sem www para o domínio com www (mod_rewrite)

RewriteEngine on

Options +FollowSymlinks

rewritecond %{http_host} ^seusite.com.br [NC]

rewriterule ^(.*)$ http://www.seusite.com.br/$1 [r=301,NC]

RewriteEngine on – habilita o uso do mod_rewrite no seu site
Options +FollowSymlinks
rewritecond %{http_host} ^seusite.com.br [NC]
rewriterule ^(.*)$ http://www.seusite.com.br/$1 [r=301,NC] – regra de conversão

 

Redirecionando um domínio antigo para um novo com o .htacess (mod_rewrite)

Options +FollowSymLinks

RewriteEngine on

RewriteRule (.*) http://www.sitenovo.com.br/$1 [R=301,L]

RewriteEngine on – habilita o uso do mod_rewrite no seu site
Options +FollowSymLinks
RewriteRule (.*) http://www.sitenovo.com.br/$1 [R=301,L] – regra de conversão

Dicas

  •  Utilize Ctrl + Shit + Del para limpar o cache do seu navegador e realizar novas alterações/testes.

Introdução ao Swift, nova linguagem da Apple

Swift um primeiro contato

Bom pessoal estamos começando hoje uma série de tutoriais sobre desenvolvimento IOS, e atualmente a maior novidade para todos o desenvolvedores é a nova linguagem de programação que a Apple nos apresentou, Swift. Então nada mais justo que nosso primeiro artigo seja sobre a mesma, vamos falar um pouco sobre ela, passar algumas linhas de código simples e comentar falar 1 pouco sobre as primeiras impressões da linguagem Swift.

A primeira coisa que vamos falar é a primeira impressão que tive (lembrando que esta é minha opinião pessoal, vocês tem todo o direito de discordar)

A primeira coisa que passou pela minha cabeça quando fiquei sabendo da nova linguagem foi, “puts, lá se vão horas e mais horas estudando Objective C, tudo jogado fora”, bom pesquisando um pouco mais eu percebi que isso não seria totalmente verdade, os desenvolvedores ainda podem criar aplicativos com Objective, embora seja uma tendência ele começar a desaparecer isso ainda pode levar vários anos para acontecer, isso se acontecer.

Muitos também tem se perguntado o porque da Apple decidir implementar uma nova linguagem assim, do nada. Basicamente o Objective C é uma excelente linguagem de programação, porem como muitas outras linguagens baseadas no nosso bom e velho amigo C, era uma linguagem muito robusta, e com uma curva de aprendizado péssima, a intenção deles foi criar uma linguagem completamente nova, mais moderna e que seja especialmente mais simplificada ou seja fazer mais, com menos código, este é o Swift.

Primeiras Impressões

Bom já diziam a primeira impressão é a que fica, e devo admitir nesse primeiro momento a linguagem me surpreendeu muito, eu achei ela bem pratica e uma coisa que não herdamos do objective C foi a infinidade de [] que usávamos em quase todo lugar, e poderia deixar seu código pouco legível, pois mesmo o Xcode tendo um auto-completar muito bom sempre que tinha uma situação tipo ]]]]; é muito mais fácil se perder, outra coisa que não temos mais são os clássicos ; eles que ja custaram infinitas horas a programadores procurando erros em seus códigos quando na verdade era apenas uns ; que resolveu ir embora sem avisar.

E onde podemos achar documentação sobre o swift afinal como podemos programar uma linguagem nova sem livros, tutoriais cursos e nem nada do género, bom ai a Apple nos surpreendeu novamente, enquanto a linguagem era anunciada pela Apple, eles ja subiram os arquivos com toda a documentação, ou seja toda a linguagem ja está documentada, alem de ja ter um E-Book disponibilizado pela própria Apple.

Bom agora que ja falamos um pouco sobre a linguagem,  e ja enchemos linguiça vamos a parte realmente interessante vamos fazer alguns códigos (Lembrando que para poder programar swift precisamos do Xcode 6 que ainda esta em versão beta, então cuidado ao instalar ). A parte de criar novo projeto é exatamente a mesma que usamos para criar um projeto normal, não vamos usar uma interface ainda apenas alguns comandos básicos da linguagem.

imagem1

uma das coisas mais interessantes é a maneira como podemos trabalhar com strings, vamos do básico o comando para escrever um texto no nosso terminal

println(“Nossa primeira linha de texto”)

Simples assim, não precisamos importar bibliotecas nem nada semelhante, agora e se formos imprimir uma variável no meio de nossa string essa na minha opinião é uma das maiores facilidades do swift em relação o objective C

Vamos precisar de uma variável, não vou explicar muito sobre elas nesse tópico pois este seria apenas uma introdução

// Vamos criar uma variável chamada nomeVariavel do tipo inteiro e atribuímos um valor de 10 a ela (lembrando que não precisamos colocar ; no fim do código)

var nomeVariavel: Int = 10

println(“O valor da variável é \(nomeVariavel)”)

Este simples comando imprime nossa string na tela, e também mostra o valor da variável, ou seja concatenar strings com variáveis é algo extremamente simples com o swift basca colocar um \() com o nome da variável, quando fazemos isso nosso compilador vê que temos um \ no meio da string e entende que o proximo valor está dentro de () é uma váriavel, e imprime o valor da variava para nosso terminal.

Bom pessoal este post foi bem curto, ele é apenas uma introdução para quem quer aprender a linguagem em breve teremos mais posts com outros temas interessantes relacionados a programação iOS.

Encontrou algum erro ? tem algum comentário ? gostaria de ver outros temas ? entre em contato conosco pelos comentários, e até o próximo post.

Google Autoria

Os resultados do google tem chamado a sua atenção? Calma agora você vai apreender de uma vez por todas a utilizar este benefício como autor e conquistar os olhos e consequentemente o clique do outro lado da telinha. Aproveite os benefícios do Google Autoria.

Passo a passo sobre como implementar e verificar o Google Autoria:

  • Crie uma conta pessoal no Google+
  • Vá até a opção Perfil no Google+
  • Clique em Editar perfil
  • Role para baixo na página e clique em Colaborador para
  • Clique Adicionar link personalizado
  • Digite o nome da página do blog/site e o URL
  • Clique em Salvar
  • Clique em Concluir a edição na barra superior azul da página

Passo a passo sobre como implementar o código no blog:

  • Insira a tag rel=”author”  a seguir no seus posts:
<a rel="author" href="https://plus.google.com/108820552074928441267/">Isis Mariana</a>

Configurando o Sublime Text 2

Sublime é um editor de código limpo, leve e customizável! Ele possui uma versão free e um desempenho incrível. Você vai adorar a interface do Sublime Text 2, pois ele possui um alto nível de personalização por código, plugins e atalhos.

 

Confira um passo a passo de como configura-lo no Windows 7:

 1º Passo

Você deve baixar o Sublime 2 e instalar em sua máquina.

2º Passo

Após instalar o Sublime em sua máquina será necessário instalar o Package Control. Através dele você poderá descobrir, instalar e gerenciar plugins, então não se esqueça esse passo é muito importante! 😉

Basta acessar a página Package Control copiar o código que está localizando na aba “Sublime 2” (Ctrl +C) e depois abra o Sublime 2 acesse View > Show Console, cole o código selecionado (Ctrl+V) e pressione o Enter.

Feche o Sublime e abra-o novamente para concluir a instalação. Caso apareça alguma mensagem de erro instale-o manualmente.

  1. Clique na guia Preferences > Browse Packages e acesse a pasta.
  2. Volte uma pasta anterior e acesse Installed Packages
  3. Baixe o Pacote Control.sublime-package e copie-o para o diretório Installed Packages 
  4. Restart Texto Sublime.

3º  Com o Sublime aberto pressione Ctrl + Shift + P e pesquise por Package Control: Install Package e presione Enter.

3 Dicas rápidas para utilizar o Sublime Text 2 [Bônus]

Dica 1 – Dois arquivos que você deve conhecer: Atalhos de teclado em Sublime Text 2 > Preferences > Key Bindings – User e definições gerais Sublime Text 2 > Preferences > Settings – User

Atenção se você quiser mudar algo, lembre-se altere sempre o arquivo de USER, pois assim você mantém as definições default intactas! 😉

Dica 2 – Quer relembrar os atalhos do Sublime? Basta pressionar Ctrl+Alt+P, cada comando que você digitar você visualizará a respectiva tecla de atalho. Fácil não é mesmo?

Dica 3 – Quer mover uma linha? Pressione Ctrl + Alt + Seta pra baixo/cima.
Quer mover o bloco todo? Segure o Shift + Seta pra direita.

Sugestão de plugin para turbinar o seu editor de códigos Sublime Text 2

Instale o Plugin Emment no Sublime

Pressione Ctrl + Shift + P digite Package Control: Install Package, depois procure por Emment e pressione Enter.

 

YES, você pediu!

Fundada em 2003 a yesBR Soluções Web oferecia apenas os serviços de hospedagem, manutenção e criação de sites. A partir de 2011 implementou os serviços de desenvolvimento de sistemas e lojas virtuais, atendendo clientes da região do Vale do Paraíba.

Em 2014, a frente de uma nova demanda, a empresa ampliou os seus serviços no meio digital, acompanhando a nova prática da publicidade online. 

A YESbr Agência Web agora representa o conceito de mutação constante. Conta com novos serviços  como, otimização de sites, disparo de email marketing, gerenciamento de redes sociais, links patrocinados e desenvolvimento de aplicativos mobile.

Abaixo o infográfico YES, VOCÊ PEDIU!

infografico_YESbr-01

 

Criando Formulário de envio de e-mail

Nosso formulário de envio de e-mail se divide em 2 páginas, o formulário principal e a página em PHP que é a página que realmente envia os e-mails.

A princípio vamos começar pelo formulário, ele tem como função captar as informações a serem enviadas para o e-mail.

Para isso iremos usar o Dreamweaver um programa de edição de códigos voltados para web. Basta0 iniciar o programa e selecionar a opção “HTML”

criando-formulario-de-envio-de-e-mail2

A partir dai vamos na aba “code” onde podemos digitar o código da página.

criando-formulario-de-envio-de-e-mail3

Vamos utilizar as seguinte tag abaixo:

<table> </table>

<form></form>

<input />

<textarea></textarea>

A tag <table> é responsável por começarmos uma tabela. Esta tabela nós deixamos com borda 0 ou seja ela não é vista pelo usuário. O atributo cellpadding é definido como “5” para que exista uma margem interna, facilitando a visualização. Também definimos cellspacing como 0 para evitar margens externas às células, e alinhamos a tabela ao centro.

Criaremos  uma tabela de 2 coluna por 6 linhas, e depois nas 4 linhas do meio nós iremos dividir em 2 colunas, portanto o código completo da nossa tabela fica da seguinte forma:

<table width="500" cellpadding="5" cellspacing="0" border="0" align="center">
<tr>
<th colspan="2">&nbsp;</th>
</tr>
<tr>
<td align="right">&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td align="right">&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td align="right">&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td align="right">&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="2" align="center">&nbsp;</td>
</tr>
</table>

Depois da tag <table>, adicionamos uma “TR”, que é uma linha da tabela, e dentro dessa linha colocamos a tag “TH”, indicando o cabeçalho desta tabela.

Onde encontramos escrito &nbsp; é onde realmente podemos colocar nosso campos e nossos textos.

Os campos onde os dados são inseridos são chamados de input e textarea. A diferença entre os dois tipos é que no textarea podemos digitar várias linhas.

O código para nossos inputs é o seguinte (neste caso, para o campo nome):

<input type="text" name="nome" size="40" />

E o código para nosso textarea é o seguinte:

<textarea name="nome" cols="30" rows="5"></textarea>

Note que em todos os campos existe o atributo name. Ele é o responsável pela identificação do campo que será enviado para o PHP fazer o envio, tornando-se indispensável.

Nos inputs, type se refere ao tipo de dado inserido no form como não pedimos nenhum campo do tipo senha ou algo parecido vamos deixar todos como text, porém podemos deixar no lugar de text como password e então o campo realmente adquire características de um campo senha, como não mostrar os dados.

O atributo size indica o tamanho que este campo apresenta em relação ao quantidade de caracteres que podem ser inseridos. O mesmo vale para cols.

Já o atributo rows indica o número de linhas visíveis no textarea.

O campo input pode ser copiado mais 2 vezes: uma para e-mail outra para assunto. Porém não se esqueça de mudar os respectivos nomes.

Para que o formulário funcione o que falta é o form propriamente dito, o <form> fica antes da tabela, sendo assim engloba toda a tabela, e o comando </form> fica depois do fim da tabela pois ele delimita a área a ser enviada.

<form action="envia.php" method="post"></form>

No formulário, temos os atributos action e method.

Action representa o arquivo para o qual vamos enviar os dados (este ainda será criado). Ele será o responsável pelo envio do e-mail. Por fim temos o method, ele representa o método pelo qual as informações serão enviadas: get ou post. No nosso caso, post.

Tendo em vista que já criamos praticamente o form completo vamos agora colocar os botões que irão ser os responsáveis por apagar as informações nos campos e o botão responsável pelo envio.

<input type="submit" value="Enviar" /> <input type="reset" value="Limpar" />

O mais importante aqui é o “type”: ele realmente define o tipo do botão podendo ser o de enviar e o de limpar os campos. E nós os colocamos no fim de nossa tabela. Até agora nosso código está assim:

<form action="envia.php" method="post">
<table width="500" cellpadding="5" cellspacing="0" border="0" align="center">
<tr>
<th colspan="2">Formulário de Email</th>
</tr>
<tr>
<td align="right"><strong>Nome:</strong></td>
<td><input type="text" name="nome" size="40" /></td>
</tr>
<tr>
<td align="right"><strong>E-mail:</strong></td>
<td><input type="text" name="email" size="40" /></td>
</tr>
<tr>
<td align="right"><strong>Assunto:</strong></td>
<td><input type="text" name="assunto" size="40" /></td>
</tr>
<tr>
<td align="right"><strong>Mensagem:</strong></td>
<td><textarea name="nome" cols="30" rows="5"></textarea></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="Enviar" /> <input type="reset" value="Limpar" /></td>
</tr>
</table>
</form>

O PHP

Depois de criado o formulário HTML nós precisamos criar o php que é o responsável pelo envio das informações para o e-mail, para criarmos nosso formulário vamos começar um novo arquivo chamado enviar.php pelo Dreamweaver:

criando-formulario-de-envio-de-e-mail7

Para começar uma página php precisamos iniciar a página com uma tag <?php e finalizar a página com um ?>  segue o mesmo princípio do <body> </body> de uma página HTML padrão:

<?php
$hoje_tmp = getdate();
$nome = $_POST["nome"]; //trata a variável nome
$email = $_POST["email"]; //trata a variável e-mail
$assunto = $_POST["assunto"]; //trata a variável assunto
$mensagem = $_POST["mensagem"]; //trata a variável mensagem
$enviou = mail("seu_e-mail@vem.aqui", // aqui você coloca o seu e-mail
"$assunto",
"Nome: $nome
E-mail: $email
Assunto: $assunto
Mensagem: $mensagem",
"From: $email <$nome>");
if ($enviou){
    header('location: contato1.html');
} else {
    header('location: contato2.html');
}
 
?>

Esta é a programação por trás de nossa página php, a página tem o nome de falar.php não podemos nos esquecer disso, pois nós criamos com este nome .

Dentro desta programação podemos ver os seguinte código $nome = $_POST[“nome ”]; dentro do PHP isso quer dizer o seguinte a variável nome é igual ao post (método que usamos pra enviar as informações da outra página) e dentro das aspas temos o nome da variável que criamos no formulário, isso se aplica aos 4 campos. Por fim tempo o envio do e-mail, e onde esta o exemplo seu_e-mail@vem.aqui colocamos o e-mail que deseja receber as informações. Depois disso as informações que o sistema pegou ele insere nesta na ordem em que eles aparecem em vermelho na programação podendo ser alterados.

Logo depois do envido das informações temos uma condição o conhecido if (se), ele representa a seguinte função “se a variável $enviou for verdadeira vamos para a página contato1.html else (senão) nós iremos para a página contato2.html.

Confira um exemplo funcionado.

DICA: Você pode incrementar seu formulário, utilizando validação dos campos com jQuery e adicionando máscaras jQuery.