Pedro Schneider

Um pouco sobre minha vida, trabalhos, estudos, diversões entre outros!

[SOLVED] “Could not reliably determine the server’s fully qualified domain name, using … for ServerName”

Provavelmente você já enfrentou o seguinte erro enquanto você reiniciar o servidor Apache no Ubuntu.

$ sudo /etc/init.d/apache2 restart
* Restarting web server apache2
apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName
… waiting apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName

Para corrigir esse problema, você precisa editar o arquivo httpd.conf. Abra o terminal e digite,

$ sudo gedit /etc/apache2/httpd.conf

O httpd.conf pro padrão ficará em branco. Agora, basta adicionar a seguinte linha ao arquivo.

ServerName localhost

Salve o arquivo e saia do gedit.

E por fim reiniciar o servidor.

$ sudo /etc/init.d/apache2 restart
posted by correaschneider in Desenv,Dicas,Linux,PHP and have No Comments

Android – Manifest (Faltou no post anterior)

Peço desculpas por ter esquicido de colocar o Manifest no post anterior ( Android – Login com HttpClient, HttpPost, JSONObject! ).

Por isso estou colocando agora!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="finanz.kontrolle"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="8" />
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
 
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".FinanzKontrolleDroidActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
 
	<activity android:label="Menu" android:name="MenuActivity"></activity>
 
    </application>
</manifest>
posted by correaschneider in Android,Desenv,Dicas and have No Comments

Android – Login com HttpClient, HttpPost, JSONObject!

Olá nesse meu primeiro post sobre Android, vou falar sobre a tela de login do meu App financeiro!

Bom vamos começar pelas Strings!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    <?xml version="1.0" encoding="utf-8"?>
        <resources>
            <string name="hello">FinanzKontrolleDroid!</string>
            <string name="app_name">Finanz Kontrolle</string>
            <string name="txtNome">Nome</string>
            <string name="txtSenha">Senha</string>
            <string name="txtLogin">Login</string>
            <string name="btnLogar">Logar</string>
            <string name="msgSucessoLogin">Usuário logado! </string>
            <string name="msgPreenchaLogin">Preencha o Login</string>
            <string name="msgPreenchaSenha">Preencha a Senha</string>
            <string name="msgErroLogin">Erro ao logar!</string>
            <string name="msgErroConectar">Erro ao conectar ao servidor!</string>
            <string name="msgEmailSenhaInvalido">E-mail ou Senha inválido!</string>
            <string name="urlSite">http://10.1.1.2/Finanzkontrolle/Site/</string>
            <string name="urlLogin">android/login</string>
        </resources>

Criei essa tela, simples mas eficiente!

O xml é esse:

1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:weightSum="1">
        <EditText android:layout_height="wrap_content" android:layout_width="match_parent" android:inputType="textEmailAddress" android:id="@+id/txtLogin" android:hint="E-mail" android:text="@string/tempLogin">
            <requestFocus/>
        </EditText>
        <EditText android:layout_height="wrap_content" android:layout_width="match_parent" android:inputType="textPassword" android:id="@+id/txtSenha" android:hint="Senha"></EditText>
        <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/btnLogar" android:id="@+id/btnLogin"></Button>
    </LinearLayout>

Esse é o Activity inicial deixei o código comentado

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
package finanz.kontrolle;
 
import finanz.kontrolle.Parametros;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
 
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;
 
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
 
public class FinanzKontrolleDroidActivity extends Activity implements OnClickListener {
	private boolean logado = false;
 
	public void onCreate( Bundle savedInstanceState ) {
		super.onCreate( savedInstanceState );
		setContentView( R.layout.main );
 
		Button btnLogin = ( Button ) findViewById( R.id.btnLogin );
		btnLogin.setOnClickListener( this );
	}
 
	//Quando houver click na tela
	public void onClick( View arg0 ) {
		switch ( arg0.getId()  ) {
			// Verifica se é o botão de login
			case R.id.btnLogin:
					EditText txtLogin = ( EditText ) findViewById( R.id.txtLogin );
					EditText txtSenha = ( EditText ) findViewById( R.id.txtSenha );
 
					int mensagem = R.string.msgSucessoLogin;
 
					//Valida se os campos foram preenchidos
					if ( txtLogin.getText().length() <= 0 )
						 mensagem =  R.string.msgPreenchaLogin;
					else if ( txtSenha.getText().length() <= 0 )
						 mensagem =  R.string.msgPreenchaSenha;
					else //Em caso de sucesso, chama método logar
						mensagem = this.logar( txtLogin.getText().toString(), txtSenha.getText().toString() );
 
					//Mostra mensagem para usuário
					Toast t = Toast.makeText( this, mensagem, Toast.LENGTH_SHORT );
					t.setGravity( Gravity.CENTER, 0, 0 );
					t.show();
 
					if ( this.logado ) {
						//Se logado troca a tela
						Intent i = new Intent( FinanzKontrolleDroidActivity.this, MenuActivity.class );
						startActivity( i );
					}
				break;
		}
	}
 
	//Método para enviar o login para o PHP
	protected int logar( String mLogin, String mPassword ) {
		int mensagem = 0;
 
		String strUrl = getResources().getString( R.string.urlSite ) + getResources().getString( R.string.urlLogin );
 
		HttpClient httpclient = new DefaultHttpClient();
		HttpPost httppost = new HttpPost( strUrl  );
 
	    try {
	        List nameValuePairs = new ArrayList(2);
	        nameValuePairs.add(new BasicNameValuePair("Login", mLogin));
	        nameValuePairs.add(new BasicNameValuePair("Senha", mPassword));
	        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
 
	        HttpResponse response = httpclient.execute(httppost);
 
	        StringBuilder retorno = this.inputStreamToString( response.getEntity().getContent() );
 
	        try {
				JSONObject jo = new JSONObject( retorno.toString() );
 
				 this.logado = false;
				if ( jo.getBoolean( "logged_in" ) ) {
					mensagem = R.string.msgSucessoLogin;
					this.logado = true;
 
					//Armazena o Nome e qual Banco do usuário
					Parametros par = Parametros.getInstance();
					par.setNome( jo.getString( "email" ) );
					par.setDatabase( jo.getInt( "banco" ) );
 
				} else if ( !jo.getBoolean( "logged_in" ) )
					mensagem = R.string.msgEmailSenhaInvalido ;
				else
					mensagem = R.string.msgErroConectar ;
			} catch (JSONException e) {
				mensagem = R.string.msgErroConectar;
			}
 
	    } catch (ClientProtocolException e) {
	    	mensagem = R.string.msgErroConectar;
	    } catch (IOException e) {
	    	mensagem = R.string.msgErroConectar;
	    }
 
	    return mensagem;
	}
 
	//Método que transforma InputStream para String
	private StringBuilder inputStreamToString(InputStream is) throws IOException {
	    String line = "";
	    StringBuilder total = new StringBuilder();
 
	    BufferedReader rd = new BufferedReader(new InputStreamReader(is));
 
	    while ((line = rd.readLine()) != null)
	        total.append(line);
 
	    return total;
	}
}
posted by correaschneider in Android,Desenv,Dicas and have Comments (5)

Android

Nesse semestre na faculdade, estamos tendo aula de Android, vou começar a postar coisas sobre o mesmo, afinal estou desenvolvendo um App como trabalho de conclusão!

O objetivo do App, é controle financeiro!

Ainda não está conectando diretamente no banco, mas com tempo vou fazer essa alteração!

Como estamos desenvolvendo um controle financeiro na WEB, o App, envia os dados para o servidor PHP, esse faz o tratamento necessário, e retorna a resposta que o App vai estar esperando!

Vou postar minhas dificuldades e meus sucesso!

posted by correaschneider in Android,Desenv,MySQL,PHP and have No Comments

Group_Concat do SQLServer

Anteriormente foi falado em Relacionando Tabelas N:N na query de consulta. Só que só funciona em MySQL. Dai tu me pergunta:

– Como faz em SQLServer?

Te respondo assim:

DECLARE @x VARCHAR(8000)
SELECT @x = COALESCE(@x + ', ','') + ISNULL(CONVERT(VARCHAR,CampoTabela),'') FROM Tabela WHERE ChavePrimaria IN (1,2,3,4)
SELECT @x
posted by correaschneider in Desenv,Dicas,SQL and have No Comments

Nível de cafeina CRÍTICO!

Aff!

Estou a duas semanas exatas, sem café!

O mais foda é depois do meio dia, da uma leseira, quase durmo na frente do PC!

Ontem fui lavar a caneca para tomar uma Água2O, fui me servir, e foi tão instintivo que coloquei café, quando estava levando pra boca, vi que era café, joguei fora e peguei Água2O.

Tá foda, mas já tenho gastro marcado, só tenho que me controlar!

posted by correaschneider in Desenv,Diversos,História and have No Comments

Dicas de CSS para IEs

Como pode haver tanta diferença entre CSS de IE para IE.

Tendo constantemente esse problema corri atrás de mais informações e veja o que encontrei!

http://goo.gl/oyyGA

Sabendo do problema os caras fizeram isso para ver se ajuda!

posted by correaschneider in Desenv,HTML + CSS and have No Comments

Firefox + ASP(X) = Lento?

MS diz: Vai desenvolver para ASP(X)? Só temos Internet Explorer pode ser?

Desenv diz: Posso usar Mozilla Firefox?

MS diz: Pode, vai ficar lento a cada Refresh, pode ser?

Desenv diz: “Pode ser” o caralho!

Para deixar os aplicativos ASP(X) mais rápidos no Firefox, faça o seguinte:

1 – Abra o MS Notepad com administrador!

2 – No Notepad vá em Arquivo > Abrir e digite: %SystemRoot%\system32\drivers\etc\hosts

3 – Localize a seguinte linha comentada: #    127.0.0.1       localhost

4 – Descomente-a deixando assim: 127.0.0.1       localhost

5 – Salve e reinicie a placa de rede!

6 – Note que o Firefox esta na mesma velocidade ou mais rápido que o IE.

Depois disso tudo é correr para o abraço no Firefox!

posted by correaschneider in ASP,ASPX,Desenv,Dicas,Firefox and have No Comments

Alterando Collation de Database em SQLServer

ALTER DATABASE [NomeBaseDados] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE [NomeBaseDados] COLLATE Latin1_General_CI_AS
ALTER DATABASE [NomeBaseDados] SET MULTI_USER
posted by correaschneider in Desenv,Dicas,SQL and have No Comments

Função .trim() do jQuery não funciona do IE

Quando precisamos retirar espaços, novas linhas e tabulações de uma string, utilizamos a função “.trim()”!

No Firefox e outros navegadores, utilizamos da seguinte forma!

Codigo:

$('#texto').val($('#texto').val().trim());

Já no IE teria que ser diferente!

Codigo:

$('#texto').val($.trim($('#texto').val()));

Resultado para ambos casos:
Antes: “Texto com espaços sobrando”
Depois: “Textocomespaçossobrando”

posted by correaschneider in Desenv,Dicas,jQuery and have No Comments