terça-feira, 20 de agosto de 2013

Como gerar uma quebra de linha no PHP

Em alguns servidores muitas vezes o \n utilizado no PHP para quebrar linha no texto não funciona, como no exemplo abaixo:
$teste = "Meu texto. \n e aqui é a quebra de linha";






Nestes casos, a opção abaixo utiliza os caracteres de retorno de carro e quebra de linha, funciona perfeitamente.
$teste = "Meu texto." . chr(13).chr(10) . "e aqui é a quebra de linha"; //nova
forma com a quebra do sistema

Dica retirada de: http://br.groups.yahoo.com/group/php-pt/message/149528

sexta-feira, 16 de agosto de 2013

Configurar moodle para bloquear envio de imagens para o perfil ou limitar tamanho da imagem

Existe uma configuração na política de segurança do site do Moodle que desabilita a possibilidade do usuário atualizar a imagem do perfil. Por padrão, essa configuração vem desabilitada. Se apenas os alunos ou tutores não estão conseguindo atualizar a imagem do perfil, certamente essa configuração foi habilitada. Para desabilitar essa configuração, siga os seguintes passos:
1) Acesse o Moodle com senha do administrador
2) No bloco de administrador, navegue em Segurança/ Políticas do site
3) Procure a configuração Desabilitar Imagens em perfis de usuário (disableuserimages). Se a caixa de seleção estiver marcada, desmarque para desabilitar a configuração.
4) Clique no botão salvar mudanças. Feito isso, acesse com senha do aluno e veja se aparece a opção de upload da imagem no perfil.

Dica retirada do endereço: http://moodleeduc.blogspot.com.br/2011/03/impedir-os-alunos-e-tutores-de-editar-o.html

Caso o usuário possa enviar imagens para o perfil há a possibilidade de limitar o tamanho do arquivo também em Políticas do Site

Carregar Lista de Usuários no Moodle sem perder a senha

Para excluir os alunos dos cursos

 

Basta executar o comando abaixo no banco de dados.
O roleid=5 busca somente os usuário com perfil de aluno, antes de executar, confira na tabela mdl_role o roleid correto para sua versão do moodle.

DELETE FROM mdl_user_enrolments WHERE userid IN (SELECT userid FROM mdl_role_assignments WHERE roleid=5);

 

 

Para importar os alunos

Primeiramente o seu arquivo de importação csv deve estar no formato UTF-8.
Para fazer isso nós utilizamos o programa Notepad++, que você pode fazer o download em: http://notepad-plus-plus.org/
Depois de fazer o download e instalar o programa abra o arquivo de importação csv no Notepad++, clique em Formatar e depois em Converter para UTF-8 (sem BOM)
Salve o arquivo.

Formato do arquivo

O cabeçalho do arquivo deve ficar da seguinte forma:
firstname; lastname ;username; password; city;email;country;course1


E o conteúdo:
Nome;Sobrenome;usuarios;senha;cidade;email@email.com.br;BRASIL;Course1
* Note que no campo course1 eu coloquei o Nome Breve do curso que desejo importar os alunos, pois é com ele que o moodle identifica a qual curso deve ser importado.
Por padrão o usuário é importado como aluno.
Caso seja necessário cadastrar o aluno em mais de um curso, basta acrescentar colunas como course2;course3 e incrementar até a quantidade de cursos necessários.

Enviando o arquivo

Vá em Usuários -> Contas -> Carregar lista de usuários. Nesta tela apenas selecione o arquivo a ser enviado.
Na tela seguinte configure da seguinte forma:
Tipo de transmissão: Adicionar novos e atualizar usuários já existentes
Nova senha do usuário: Campos obrigatórios no arquivo
Detalhes de usuário existente: Sobreponha com o arquivo
Senha de usuário já existente: Nenhuma mudança
O restante dos campos permanecem da mesma forma.
Clique em Carregar lista de usuários e pronto.

quinta-feira, 4 de julho de 2013

Resolvendo limitação de envio de dados via POST PHP

Me deparei estes dias com um problema no envio de notas de vários alunos via método POST.
O servidor limitava o envio, quando eram enviados 61 registros somente 59 eram reconhecidos.

Para resolver o problema, entrei no Synaptics no Debian e desinstalei o módulo php5-suhosin.

Este módulo é instalado por padrão para manter a segurança do servidor quanto a envio de dados via post.

Foi uma solução, não totalmente recomendada para quem necessita de segurança, como em comércio eletrônico, mas no meu caso em que não havia o porque do bloqueio, efetuei este procedimento

terça-feira, 13 de novembro de 2012

Sub-redes(Subnetting)

Vou compartilhar neste post um problema que surgiu na rede de onde trabalho e a solução que encontrei para contornar em partes meu problema.

Problema: Possuímos 1 link de internet de 2MB e só tinhamos um computador que estava fazendo o nat, dhcp e servindo de proxy ao mesmo tempo.
Isto causava instabilidade, pois todos os pools de endereços liberados pelo dhcp estavam na mesma faixa. As quedas eram constantes e precisava de alguma solução que ao menos conseguisse manter a instabilidade, a velocidade é outra história...rsrsrs
Solução: Em pesquisa ao nosso famoso oráculo Google, achei uma solução intermediária que talvez resolvesse meu problema, a divisão da rede em sub-redes.

Vamos a uma breve explicação do conceito de sub-redes, sub-nets e outros nomes que pode encontrar.

Como todos sabemos uma rede possui uma máscara de sub-rede que é utilizada para fazer a divisão das redes em redes menores.
Você pode verificar, facilmente, as configurações do protocolo TCP/IP que estão definidas para o seu computador (Windows 2000, Windows XP ou Windows Vista). Para isso siga os seguintes passos:
1.       Faça o logon com uma conta com permissão de Administrador.
2.       Abra o Prompt de comando: Iniciar -> Programas -> Acessórios -> Prompt de comando.
3.       Na janela do Prompt de comando digite o seguinte comando:
ipconfig/all
e pressione Enter.


Você encontrará por aí endereços ip representados na forma 192.168.1.1/24.
O /24 destacado ao final do endereço ip deve-se a máscara de sub-rede. Se convertermos esta máscara para a notação binária, notação esta que é usada pelos equipamentos, a numeração passa a ser: 11111111.11111111.11111111.00000000.
Note que a representação binária é dividida em grupos de oito bits(dígitos). Por isso diz-se que a máscara de rede é dividida em octetos.
Veja que a contagem de números 1 encontrados é 24.
Os números 1 da máscara de sub-rede representam a rede em si e os 0's os hosts(dispositivos da nossa rede, ou seja, computadores, impressoras etc...).

Para encontrar o número de sub-redes basta utilizar a fórmula 2^n, onde n é o número de 1's da máscara de sub-rede;
Para encontrar o número de hosts basta utilizar a fórmula 2^n - 2, onde n é o número de 0's da máscara de sub-rede.

O símbolo(^) significa elevado à, ou seja, 2 elevado a potência n.

Vendo como exemplo a máscara acima, temos que o número de computadores é igual a 2^8 - 2 = 256-2 = 254 hosts disponíveis em nossa rede.
Aí surge a pergunta, porque podemos usar só 254 ao invés de 256 números ip para endereçar nossos equipamentos.
Como sabemos na área de computação a contagem dos números começa em 0 ao invés de começar em 1.
Então nosso primeiro endereço ip seria 192.168.1.0 e o último 192.168.1.255.
O primeiro endereço é utilizado para representar a rede em si, muito útil para efetuar bloqueios, por exemplo, se quiser bloquear o tráfego de rede para todos equipamentos da rede 192.168.1.x é só bloquear o endereço 192.168.1.0, com isso não é necessário bloquear um por um.
O último número, 255 é utilizado para Broadcast.O Broadcast é utilizado para enviar mensagens para todos equipamentos da rede, portanto se um switch por exemplo enviar uma mensagem para 192.168.1.255, todos os equipamentos da rede receberam esta mensagem.

Caso minha explicação não tenha sido clara, consulte o endereço: http://www.juliobattisti.com.br/artigos/windows/tcpip_p1.asp, do nosso mestre Júlio Batisti, ele possui um dom didático invejável.

 No caso da minha rede, como estou utilizando um exemplo de rede classe C, a máscara de sub-rede padrão é 255.255.255.0 = 11111111.11111111.11111111.00000000. Se alterarmos os primeiros 3 octetos já não teremos uma rede de classe C e sim de classe B. Portanto, no nosso caso podemos alterar somente o último octeto.

Percebe-se que no último octeto não temos números 1, somente 0's que são utilizados para os hosts.

Suponhamos que você precise dividir esta rede em setores: Gerência, Administração, TI, Almoxarifado, Logística e Direção e cada rede terá seu controle de sites permitidos, banda de internet entre outros, como fazer esta divisão?
Aí entra o pulo do gato, divida em sub-redes, para isso basta acrescentarmos 1's ao último octeto, utilizando a forma 2^n. Como acima precisaremos de 6 sub-redes, se elevarmos 2^3 teremos 8 sub-redes, suficientes para abrigarmos os 6 setores. Para cada sub rede teríamos 2^5-2 = 32 - 2 = 30 hosts(equipamentos).
Então nossa máscara de rede ficaria 255.255.255.224 = 11111111.11111111.11111111.11100000.
Não é permitido a utilização da primeira e última redes, pelo mesmo motivo que expliquei acima, a primeira rede contém o endereço de rede, ex: 192.168.x.0 e a última tem o broadcast 192.168.x.255, portanto, se utilizarmos a primeira e última sub-redes, o tráfego vai passar por todos equipamentos o que não é útil se necessitamos de sub-redes.
Portanto, para a máscara de rede que temos agora com 30 equipamentos por rede, a primeira sub-rede seria o intervalo 192.168.x.0 até 192.168.x.31 e a última  192.168.x.224 até 192.168.x.255. Estes intervalos não devem ser utilizados.
Os outros intervalos possíveis são:
 Rede                   Broadcast
192.168.x.32 até  192.168.x.63
192.168.x.64 até  192.168.x.95
192.168.x.96 até  192.168.x.127
192.168.x.128 até 192.168.x.159
192.168.x.160 até 192.168.x.191
192.168.x.192 até 192.168.x.223

Podemos observar que o primeiro e último número de cada sub-rede também não são utilizados, pois desempenham o papel de número de rede e broadcast para cada sub-rede, portanto que fossemos utilizar uma regra para bloquear o acesso do intervalo 32 ao 63, basta bloquearmos o endereço da rede 192.168.x.32

Espero que este post tenha sido útil e caso haja dúvidas, basta deixar sua pergunta que responderei dentro dos limites do meu conhecimento.






segunda-feira, 5 de novembro de 2012

Como colocar acentuação em alerts javascript


Me deparei com um problema ao programar um site com funções em javascript que me tirou o sono para resolver.
Ao escrever um alert com acentuação eis que o javascript tem problemas para formatar. Tentei usar o estilo html para ver se resolveria e nada.
Pesquisando a internet consegui encontrar uma tabela de códigos que substituem os acentos, segue abaixo:

á = \u00e1
à = \u00e0
â = \u00e2
ã = \u00e3
ä = \u00e4
Á = \u00c1
À = \u00c0
 = \u00c2
à = \u00c3
Ä = \u00c4
é = \u00e9
è = \u00e8
ê = \u00ea
ê = \u00ea
É = \u00c9
È = \u00c8
Ê = \u00ca
Ë = \u00cb
í = \u00ed
ì = \u00ec
î = \u00ee
ï = \u00ef
Í = \u00cd
Ì = \u00cc
Î = \u00ce
Ï = \u00cf
ó = \u00f3
ò = \u00f2
ô = \u00f4
õ = \u00f5
ö = \u00f6
Ó = \u00d3
Ò = \u00d2
Ô = \u00d4
Õ = \u00d5
Ö = \u00d6
ú = \u00fa
ù = \u00f9
û = \u00fb
ü = \u00fc
Ú = \u00da
Ù = \u00d9
Û = \u00db
ç = \u00e7
Ç = \u00c7
ñ = \u00f1
Ñ = \u00d1
& = \u0026
' = \u0027

Basta substituir o código acima onde deveria haver a acentuação.
Ex:
Na frase:  alert("O campo nome é de preechimento obrigatório ") escreva;
                alert("O campo nome \u00e9 de preenchimento obrigat\u00f3rio");
Dica retirada do blog: http://infoblemas.blogspot.com.br/2012/08/acentos-em-alert-box-javascript.html

quarta-feira, 12 de setembro de 2012

Configurar Mini-modem 3G Huawei E173 Android

Neste post vou comentar sobre uma experiência que tive no meu trabalho.
Um funcionário da empresa precisava de acesso a internet através de um modem 3G Huawei E173, mas não estava conseguindo configurar.
Como sempre, cai no colo do cara da informática....rsrsrsrs
Ele trouxe para que eu pudesse configurar pra ele e perdi pelo menos uma manhã no oráculo Google garimpando uma solução.

Eis que encontrei no blog http://globalizados.com.br/blog_loja/?p=664 e funcionou.

Abaixo configurações para algumas operadoras. Lembrando que a senha é sempre o nome da operadora em minusculo. Ex: vivo, tim, claro, oioioi.

1) TIM
Nome do Provedor: TIM CONNECT FAST (APN: tim.br ou tim.com.br)
Telefone: *99***1#
Nome de usuário: tim
Senha: tim
Confirmar senha: tim

2) OI:
Nome do Provedor: Oi GPRS (APN: gprs.oi.com.br)
Telefone: *99***1#
Nome de usuário: (em branco) ou oiwap
Senha: (em branco) ou oioioi
Confirmar senha: (em branco).

Espere que este post ajude assim como me ajudou.

Viva ao compartilhamento de informação.