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;

Flat Design – Nova tendência da web

Fala galera!

Vamos continuar nossa série sobre criação de sites, falando um pouco sobre flat design.

O que é flat design?

Flat design (design plano, traduzido para o português) nada mais é do que criar interfaces simples para sites, passando uma ideia de clareza. Seus elementos possuem uma aparência “clean”, sem muitos detalhes, e com cores vibrantes, porém sem muito brilho. Não utiliza detalhes, como sombras, bordas, gradientes, etc.

Pontos importantes

O conceito do Flat design é simplicidade através de formas planas sem perspectivas de profundidade. Basicamente, segue aquela velha frase: “Menos é mais”.

O sucesso deste tipo de layout se baseia nas cores utilizadas, e muitas vezes na tipografia. A ideia principal parte da hierarquia na concepção e colocação dos elementos para facilitar a interação com o usuário. Em telas pequenas, uma interface plana se torna mais fácil e prática de usar, utilizando menos botões e opções.

Outro ponto a ser considerado é que essa técnica se ajusta perfeitamente em layouts responsivos.

Alguns exemplos de Flat design

Existem vários sites que já adotaram essa técnica de desenvolvimento de layout. Vamos citar alguns exemplos para ilustrar a ideia principal do flat design. Veja nas imagens abaixo:

Flat Design - Google Now
Google Now

Flat Design Windows 8
Windows 8

Flat Design - Superplayer
Suplerplayer

Flat Design - YESbr
O próprio site da YESbr

E o que vem depois?

Atualmente, esse conceito está se tornando base para os sistemas operacionais, sendo que a Microsoft o aderiu nas versões do Windows 8, a Google implementou essa técnica no novo Android L e a Apple atualizou seu novo sistema operacional com o flat design.

Com a onda do modernismo atual, essa técnica se tornará uma tendência, mas logo menos os designers irão introduzir cuidadosamente dimensionalidades e novas maneiras de se estilizar um layout. Novos padrões surgirão, e o flat design vai acabar ficando para trás, infelizmente.

Até a próxima, pessoal!

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.

Design Responsivo – A nova Web

O que é Design Responsivo?

Design responsivo nada mais é que elaborar sites que se adaptem aos diversos dispositivos disponíveis no mercado para acesso à internet, como os desktops, smartphones, tablets, iPhones, iPads, e até mesmo televisões.

Nos primórdios, a maioria dos computadores com acesso à internet tinham resoluções baixas e o mesmo navegador Internet Explorer. Então, todos os designers ajustavam seus layouts para uma melhor visualização nesse browser (lembra daqueles botõezinhos Melhor visualizado em…?). Como hoje em dia a internet se tornou indispensável no cotidiano, é essencial que os sites possam ser acessados de qualquer dispositivo. Daí a necessidade do design responsivo.

Design Responsivo

Design Responsivo e os buscadores

O design responsivo já era defendido por muitos desenvolvedores, mas ganhou mais destaque ainda depois que o Google confirmou indiretamente que para a área de SEO (search engine optimization, otimização para buscadores) essa técnica é a mais indicada. Para o Google, é mais fácil perceber que o site.com.br tem um layout se adapta a qualquer tela, do que entender que o m.site.com.br e tablet.site.com.br são o mesmo site e apenas copiam conteúdo alterando a estrutura do conteúdo.

A recomendação da página de ajuda do Google para design em smartphones diz o seguinte:

Google recomenda que os webmasters sigam a melhor prática da indústria usando design responsivos, oferecendo o mesmo código HTML para todos os dispositivos e usando apenas media queries de CSS para decidir como a informação deve ser renderizada.

Técnicas básicas de design responsivo

O design responsivo utiliza Media Queries (em tradução livre significa consulta de mídia). São expressões que indicam folhas de estilos de acordo com o dispositivo que ele estiver utilizando.

/* smartphones */
@media only screen and (max-width: 320px) {
    /* estilos formatados para smartphones */
}

/* tablets */
@media only screen and (min-width: 768px) and (max-width: 1024px) {
    /* estilos formatados para tablets */
}

Também é importante adicionar uma tag meta no início do seu código html:

<meta name="viewport" content="width=device-width,initial-scale=1" />

O viewport é a área em que seu site aparece. Quando o tamanho da tela varia muito, existe uma preocupação pelo fato de afetar diretamente a forma como o seu site é visualizado.

Por exemplo, um smartphone possui uma tela de 320px, porém sua resolução é 980px. Então, sem essa tag, se você adicionar uma imagem com largura 980px, não existirá barra de rolagem, e a imagem ficará parecendo uma miniatura.

Outra técnica importante é utilizar elementos fluídos, ou seja, utilizar porcentagens para definir o tamanho dos elementos. Isso fará com que o elemento se ajuste automaticamente.

Teste seu site com design responsivo

A Google possui uma ferramenta de recursos multi-screen para que você possa testar seu site com design responsivo, e ainda te dá várias dicas de como melhorar ainda mais o seu site.

Concluindo

Design responsivo é um assunto bastante extenso e muito interessante. Vale muito a pena pesquisar afundo sobre esse assunto afim de potencializar o uso dessa técnica, que se tornou essencial nos dias de hoje.

Até mais, galera!

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.

Registro de domínio no Brasil, como consultar

Como consultar dados de registro de domínio no registro.br

O Registro.br é o órgão que regula os domínios com a extensão .br, ou seja, “.com.br”, “.net.br”, “.tv.br” etc, todos com final “.br”. Várias empresas podem efetuar este registro para você, porém, é sempre bom verificar se a empresa que efetuou seu registro, colocou os dados corretamente. Veja abaixo como consultar:

 

Digite em seu navegador: www.registro.br

Link para acesso a consulta de domínios no Brasil
Link para acesso a consulta de domínios no Brasil

 

Clique em Tecnologia e depois em Ferramentas

No menu tecnologia está a aba Ferramentas
No menu tecnologia está a aba Ferramentas

 

Clique em “Serviços de diretório whois”

No primeiro link são apresentadas informações sobre os registros
No primeiro link são apresentadas informações sobre os registros

 

Insira o domínio que quer pesquisar no campo ao lado de “Consultar” e depois clique em “Consultar”.
Nota: Somente é permitida consulta de domínio com a extensão final “.br”.

Campo para consulta de domínio no registro.br
Campo para consulta de domínio no registro.br

 

É apresentada a tela com dados de CNPJ ou CPF do real proprietário do domínio, bem como algumas informações como nome, DNS (servidor de hospedagem), status e ID para contato incluindo e-mail.

Tela com dados do registrante
Tela com dados do registrante

 

Caso o registro de domínio do seu site não esteja com seu CNPJ ou CPF, entre em contato imediatamente com seu servidor de hospedagem e solicite a transferência do domínio para seu nome pois o “dono” não é você.

Os dados de c-titular, c-admin, c-técnico e c-cobrança são úteis para facilitar que seu desenvolvedor faça as alterações de DNS (servidor de hospedagem) mais facilmente.

O c-titular é a conta que administra o CNPJ ou CPF em questão, ele pode tudo a não ser trocar o CNPJ ou CPF.

O c-admin é quem tem o poder de alterar dados de DNS e cobrança.

O c-técnico normalmente é deixado para a empresa de hospedagem para que atualize corretamente os DNSs.

Por fim, o c-cobrança é quem receberá contatos referentes à situação financeira do seu domínio.

Tableless: o que é e como funciona

Buenas, galera!

Hoje vamos tratar de um assunto bem legal: tableless, uma técnica de desenvolvimento de layouts muito utilizada hoje em dia.

O que é Tableless?

Tableless nada mais é que uma forma de criar layouts sem utilizar tabelas (daí o porquê do nome), e sim folhas de estilos (CSS). Isso não significa que as tabelas se tornaram inutilizáveis, mas sim que serão usadas apenas quando for necessário (em caso de dados tabulados). O termo tableless é mais utilizado aqui no Brasil, mas em outros países ele foi mais difundido, sendo conhecido também como CSS Layouts.

Originalmente os layouts eram diagramados usando tabelas (<table>) para dividir as seções das páginas e organizar o conteúdo do site. Porém, nessa época os browsers não tinham um padrão a ser seguido, pois a W3C (World Wide Web Consortium), um consórcio internacional onde são desenvolvidos os Web Standards (padrões web), tinha apenas “rascunhos” dos padrões atuais. Com isso, os desenvolvedores encontravam muitas dificuldades para criar um código que funcionasse igualmente em navegadores diferentes, e acabavam focando em apenas um browser específico (tipo aqueles “Melhor visualizado em …”).

Com o passar dos anos, e o aumento de integrantes na Guerra dos Browsers, criar um site que funcione nos principais browsers se tornou um requisito básico e indispensável na área de desenvolvimento web. Não basta apenas ter um layout bonito e bem diagramado, mas também que funcione da mesma maneira em navegadores diferentes. E é aí que entra o tableless.

Como funciona o Tableless?

Um site que utiliza o padrão tableless obrigatoriamente segue as regras de semântica. Ou seja, cada tag seja sua função. Por exemplo, um parágrafo de texto será representado pela tag <p></p>, as tabelas são usadas para dados tabulados, etc.

A grosso modo, trocamos o uso da tag table pela tag div, que pode assumir a forma desejada seguindo as orientações da folha de estilo (CSS). Essa folha de estilo é a grande responsável por toda a diagramação e estrutura do layout, facilitando para o desenvolvedor realizar qualquer alteração futura.

Um rápido estudo de caso para fixar a ideia do tableless:

Depois de várias reuniões e layouts, um grande projeto foi finalizado. Toda a estrutura do site está pronta, todas as inúmeras páginas estão diagramadas. Porém, de última hora, o cliente liga e pede para alterar a cor dos títulos, pois eles deveriam ser da mesma cor da logo.
O designer quase tem um infarto instantâneo, pois se lembra que cada página possui seu estilo no próprio código, e a única saída seria vasculhar documento por documento buscando os benditos títulos que seriam atualizados.

Neste caso, o desenvolvedor criou um grande problema para si mesmo pois criou o layout na forma “primitiva”. Se ele tivesse utilizado a técnica do tableless, bastava alterar apenas uma linha de código na folha de estilos. Agora imaginem se o cliente pedisse para mudar o site inteiro novamente?

Quais as vantagens do Tableless?

  • Utilização de folha de estilos: facilita caso haja necessidade de alteração;
  • Redução de banda: os navegadores atuais armazenam arquivos CSS e javascript em cache.
  • Maior velocidade na renderização da página;
  • Maior facilidade para adaptação à dispositivos mobile;
  • Apenas uma: requer um grande conhecimento das tags HTML e, principalmente, CSS.

E quais as desvantagens?

  • Apenas uma: requer um grande conhecimento das tags HTML e, principalmente, CSS.

 

Desenvolver seu site através de tabelas não é uma forma errada de fazê-lo. Porém, com o tableless, a facilidade em atualizar a folha de estilos e manter um padrão cross-browser é muito grande, e ainda possibilita ao desenvolvedor utilizar design responsivo, que será o próximo tema a ser comentado.

Até a próxima, pessoal!

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>

Saiba como identificar um boleto modificado por vírus

Boleto modificado por vírus? Sim, vírus modifica boletos bancários com dados falsos

O que é este vírus?

Este vírus é um Malware que ao infectar computadores altera a linha digitável dos boletos bancários, bem como imagem do banco recebedor ou até mesmo informações de recebimento e código de barras.

Como este vírus funciona no boleto?

A ação do vírus é bem simples pois age de diversas formas para enganar o usuário:

  • Altera somente a linha digitável
  • Altera a imagem do banco recebedor
  • Altera o código de barras tornando-o ilegível
  • Altera os dados do boleto bancário de cedente, CNPJ etc

Normalmente não é feita alteração de valor, data ou cedente, justamente para ludibriar mais facilmente o usuário que não percebe que um vírus está por trás alterando os dados fazendo com que pague o boleto para um criminoso e não para a empresa que gerou o boleto corretamente.

O banco normalmente é modificado pois o criminoso não possui conta em todos os bancos, então utiliza o banco dele. Neste caso seria modificada a linha digitável, o código do banco e a imagem do banco, deixando valor, data e dados intocados para que o usuário não identifique a mudança dos dados.

Em outros casos o vírus modifica até mesmo os dados de cedente, ficando mais fácil para quem gera o boleto perceber que está incorreto, mas nós, como seres humanos comuns e desatentos, não prestamos a devida atenção e acabamos pagando incorretamente boletos falsos.

Como identificar se seu boleto foi modificado?

Observe as imagens abaixo. A primeira refere-se a um boleto legítimo e a segunda a um boleto modificado. Neste caso a alteração foi somente da linha digitável  e do código de barras. Note a dificuldade de identificar o boleto verdadeiro do boleto falso.

Boleto bancário Legítimo não modificado por vírus
Boleto bancário Legítimo não modificado por vírus
Boleto bancário modificado por vírus
Boleto bancário modificado por vírus

Nesta terceira imagem, destacamos as áreas alteradas pelo vírus para que você possa perceber as sutis diferenças. Veja que o código de barras está com áreas em branco, ou seja, impossível de uma leitora reconhecer o boleto, obrigando o atendente a digitar a linha impressa no boleto. Porém a linha foi modificada pelo vírus fazendo com que o pagamento caia em uma conta completamente desconhecida do usuário que está efetuando o pagamento sem notar que foi enganado.

Identificação de campos do boleto bancário  modificados por vírus
Identificação de campos do boleto bancário modificados por vírus

Já presenciamos casos de clientes que tiveram TODOS os dados do boleto alterados, ou seja, data, valor, cedente, código de barras, imagem do banco, conta, enfim, TUDO e estes clientes pagaram normalmente sem perceber.

Como se prevenir?

Pense agora quantas vezes você já CONFERIU detalhadamente os dados que vem impressos nos boletos bancários, como, cedente, banco e código do banco. A grande maioria absoluta dirá não, pois estamos no site, o boleto é gerado em nossa tela, imprimimos e fazemos o pagamento em algum banco, casa lotérica ou até mesmo online.

Este é o primeiro passo para não ser enganado, conferir e saber para onde está sendo feito o pagamento, ou até mesmo ligar no fornecedor do boleto bancário para confirmar se eles tem realmente o boleto daquele banco que foi gerado para ele.

Sempre que gerar um boleto, verifique se o código de barras não contém áreas em branco que tornem impossível a leitura do código de barras, por exemplo ao passar em uma máquina de auto-atendimento.

Verifique os valores, data de vencimento, cedente e imagem do banco se tem o mesmo código a que se refere a lista da FEBRABAN que pode ser conferida abaixo.

Lista completa dos códigos bancários

Em caso de dúvidas, confira no link abaixo a lista de códigos bancários associados à FEBRABAN, caso não esteja correto, enter em contato com a empresa que forneceu o boleto bancário para pagamento, pois você pode ser vítima de um vírus.