Instalando e Editando uma Wiki com MediaWikiWiki

Para instalar a MediaWiki no Ubuntu

sudo apt-get install mediawiki

Apos instalar, desbloquear no /etc/apache2/conf.d/mediawiki.conf o “Alias”.

Criar o banco de dados e garantir acesso ao usuario no MySQL.

Para maiores informações : MediaWiki Tutorial

Configurações báicas:

# melhorar a velocidade com cache
$wgUseFileCache = true; /* default: false */
$wgFileCacheDirectory = “$IP/cache”;
$wgShowIPinHeader = false;
$wgDisableCounters = true;

# restrigir acesso anonimo
$wgGroupPermissions[‘*’ ][‘createaccount’] = false;
$wgGroupPermissions[‘*’ ][‘read’] = true;
$wgGroupPermissions[‘*’ ][‘edit’] = false;
$wgGroupPermissions[‘*’ ][‘delete’] = false;
$wgGroupPermissions[‘*’ ][‘createpage’] = false;
$wgGroupPermissions[‘*’ ][‘upload’] = false;
$wgGroupPermissions[‘*’ ][‘move’] = false;

Como Editar uma Wiki

Obs: o Sumario abaixo é criado automaticamente quando se usa os simbolos de igual para criar titulos/topicos.

Tabela de conteúdo

[esconder]

if (window.showTocToggle) { var tocShowText = “mostrar”; var tocHideText = “esconder”; showTocToggle(); }

[editar] Tutorial de edição de wikis

[editar] Links para novas paginas

Para criar nova pagina, criar primeiramente o link no menul principal Escolher editar na pagina principal e acrescentar o nome da nova pagina entre dois pares de colchetes,

[[Cadastro de Pessoas]]

Após visitar a pagina principal clicar no novo link que deve estar em vermelho e criar o conteudo do mesmo.

[editar] Efeitos nos textos

Para efeitos de destaque vamos utilizar negrito e italico. Usar com cautela. Italico: usar duas apostrofes antes e depois da frase que se quer em italico.

Teste de ''italico''.

Teste de italico.

Negrito: usar tres apostrofes antes e depois da frase que se quer em negrito:

Teste de '''negrito'''.

Teste de negrito.

Italico e Negrito: usar cinco apostrofes antes e depois da frase que se quer em italico e negrito:

Teste de '''''italico e negrito'''''.

Teste de italico e negrito.

È possivel incluir indentação nos paragrafos utilizando o simbolo “:”

Exemplo:

: pula espaco inicial
:: pula dois espacos iniciais
pula espaco inicial

pula dois espacos iniciais

Para destacar um conteudo pode-se usar <pre> </pre> ou então para não processar os simobolos de wiki usar o <nowiki> </nowiki>

[editar] Titulos e Topicos

Vamos utilizar tres niveis de topicos, com geração automatica do Sumario.

Titulo Principal: usar dois sinais de igual, antes e depois do titulo.

== Objetivo do Cadastro de Pessoas ==

Sub-Titulo: usar tres sinais de igual, antes e depois do subtitulo.

=== Tela 1 ===

Seção: usar quatro sinais de igual, antes e depois da seção..

==== Objetivo do Cadastro de Pessoas ====

[editar] Listas

Vamos utilizar listas numeradas e marcadas Para lista numeradas usar o simbolo # para cada nivel da lista. Exemplo:

# Frutas
## Maça
## Banana
# Verduras
## Folhas
### Alface
### Couve
  1. Frutas
    1. Maça
    2. Banana
  2. Verduras
    1. Folhas
      1. Alface
      2. Couve

Para listas marcadas, substituir o # pelo *

* Frutas
** Maça
** Banana
* Verduras
** Folhas
*** Alface

~~~~
*** Couve
  • Frutas
    • Maça
    • Banana
  • Verduras
    • Folhas
      • Alface
      • Couve

Tabelas

  • Para iniciar uma tabela usar {|.
  • Para o titulo da tabela usar o |+.
  • Para cada nova linha usar |-.
  • Para cada coluna |.
  • Para destaque/titulo da coluna usar !.

Vaje um exemplo simples abaxo

{| border=2 width="80%"
|+ Tabela 1 - Exemplo
|-
! linha
! Coluna 1
! Coluna 2
|-
! linha 1
| align="right" | alinhado à direita
| 1,2
|-
! linha 2
| align="center" | centrado
| bgcolor="#f0f0f0" | fundo cinzento
|}
Tabela 1 – Exemplo
linha Coluna 1 Coluna 2
linha 1 alinhado à direita 1,2
linha 2 centrado fundo cinzento

Maiores informações [Tutorial Wikipedia]

Terminal no Ubuntu

Para configurar o terminal no Ubuntu usar o gnome-terminal:

gnome-terminal –profile=PROFILE –geometry=100×27

Configurar letra para “Monospace Bold” tamanho 13.
Para conexão via SSH usar ssh -px ip.

PHP Debugging

Referencia: Pedro Silva

Todas as linguagens dispõem de várias formas de efectuar debug de código, o PHP não foge a regra. Ao longo dos últimos 10 anos, que dediquei ao PHP, experimentei algumas técnicas, algumas com muito bons resultados outras nem por isso.

Validar a syntax

Antes de qualquer acto, deverá ser efectuada uma validação da conformidade da syntax do código, isto se não queremos ficar com o resultado do desenvolvimento cheio de errosSyntax Error“.  Muitos editores fazem esta validação, de modo visual, no entanto eu sugiro que o PHP CLI (Command Line Interface) seja corrido.

Exemplo: php -l file.php

Analise dos logs enquanto se desenvolve

Um dos erros muito comuns no desenvolvimento em qualquer linguagem interpretada é não usarmos a totalidade das vantagens da análise de logs. No PHP para um uso mais eficiente do relatório de erros e avisos, a propriedade error_reporting, no ficheiro php.ini, deverá ser definida como E_ALL.

error_reportingE_ALL

Para um desenvolvimento mais efectivo, desligo sempre a visualização de erros no “screen”, preferindo a análise dos mesmos no ficheiro de log. Para isso defino o display_errors como desligado.

display_errors = Off

Necessitamos ainda, de indicar ao PHP para efectuar o log dos erros para um ficheiro e indicar qual o caminho para o ficheiro onde desejamos gravar as mensagens de erro.

log_errors = On ; Desejamos gravar as mensagens em ficheiro

error_log = “/var/logs/php.log” ; Caminho para o ficheiro onde desejamos gravar as mensagens

Depois basta abrir uma consola onde estou a monitorizar toda a actividade do ficheiro de log do php.

tail -f /var/logs/php.log

Xdebug

A extensão XDebug para PHP permite efectuar profilling e debugging de uma forma muito simples, com funções como xdebug_memory_usage( ), que nos permite analisar o uso da memória do script currente, que também tem correspondente na versão nativa do php, memory_get_usage(), a função xdebug_call_class(), que permite saber em que class foi o método invocado, entre muitas outras.

A extensão XDebug proporciona uma melhoria na visualização de mensagens de erro, podendo-se observar o caminho de execução do script até ao momento em que aconteceu o erro, por exemplo.

Mais informações sobre a extensão na página da mesma.

Atualizando Ubuntu para nova versão e instalando extras

Uma das formas de atualizar o Ubuntu quando aparece nova versão, principalmente se voce tem mais de uma maquina para atualizar e baixar a versão “alternate” e fazer  a atualização via CD-ROM ou montar o ISO.

Para tanto baixe a versão alternativa em Releases do Ubuntu

Apos baixar voce pode “queimar” um CD-ROM ou montar a ISO.

sudo mount -o loop ~/Desktop/ubuntu-9.04-alternate-i386.iso /media/cdrom0

Se aparecer uma tela informando sobre o UpGrade siga as instruções. Senão execute o comando apos teclar ALT-F2:

gksu “sh /cdrom/cdromupgrade”

Depois instalar os pacotes extras

sudo apt-get install xubuntu-restricted-extras

Asterisk com Realtime ARA

Asterisk Realtime permite utilizar o MySQL para armazenar as configurações em vez dos tradicionais arquivos texto no /etc/asterisk.

Alem dos dados ficarem em tabelas do MySQL, tambem a recarga das alterações são feitas automaticamente pelo Asterisk dispensando o comando ”reload”.

Para configurar:
Habilitar o acesso ao MySQL.

$ cat /etc/asterisk/res_mysql.conf
[general]
dbhost = 127.0.0.1
dbname = asteriskrealtime
dbuser = asteriskuser
dbpass = senha

Informar quais configurações estarão no MySQL.

$ cat /etc/asterisk/extconfig.conf
[settings]
sipusers => mysql,asteriskrealtime,sip_buddies
sippeers => mysql,asteriskrealtime,sip_buddies

;iaxusers => odbc,asterisk
;iaxpeers => mysql,asteriskrealtime,iax_buddies
;extensions => mysql,asteriskrealtime,extensions
;queues => odbc,asterisk
;queue_members => odbc,asterisk

Habilitar o cache para mostrar as informações dos peers.

$ cat /etc/asterisk/sip.conf
[general]
rtcachefriends=yes

Apos estas configurações iniciais, fazer um ”reload” para carregar as informações. Apos este passo iniciais o Realtime já esta habilitado e todas as alterações e inclusões feitas na tabela sip_buddies refletiram automaticamente para o Asterisk.

Para confirmar que o Asterisk esta realmente ”enxergando” a tabela sip_buddies execute o seguinte comando:

[root@vw1 asterisk]# asterisk -vvvvvr
Parsing ‘/etc/asterisk/asterisk.conf’: Found
Parsing ’/etc/asterisk/extconfig.conf’: Found
Binding sipusers to mysql/asteriskrealtime/sip_buddies
Binding sippeers to mysql/asteriskrealtime/sip_buddies
Asterisk 1.2.20, Copyright© 1999 – 2007 Digium, Inc. and others.
Created by Mark Spencer
Asterisk comes with ABSOLUTELY NO WARRANTY; type ‘show warranty’ for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type ‘show license’ for details.
=========================================================================
Connected to Asterisk 1.2.20 currently running on voipway1 (pid = 3851)
Verbosity is at least 5
vw1*CLI>

Observe que o Binding esta apontando para o MySQL.

Se precisar carregar manualmente para testar ou para verificar as configurações, utilize o seguinte comando após preencher a tabela sip_buddies no Banco de Dados MySQL.

vw1*CLI> reload
vw1*CLI> realtime load sippeers name 2328
Column Name Column Value
——————– ——————–
id 1
name 2328
canreinvite yes
context cliente
dtmfmode rfc2833
fullcontact
host dynamic
nat yes
port 61095
qualify 100
secret senha
type friend
username 2328
disallow all
allow g729
allow g723.1
allow g726
allow alaw
allow ulaw
regseconds 1194365166
ipaddr 201.262.150.214
cancallforward yes

vw1*CLI> sip show peer 2328

* Name : 2328
Secret :
MD5Secret :
Context : cliente
Subscr.Cont. :
Language : br
AMA flags : Unknown
CallingPres : Presentation Allowed, Not Screened
.
.

Asterisk gravando ligações no MySQL

Para gravar os dados na tabela cdr do banco de dados MySQL , é preciso ajustar alguns parâmetros no Asterisk.

Instalação do Banco MySQL

Para instalar o MySQL, basta usar o comando abaixo.

 apt-get install mysql-server-5.0

Criação do usuário e strutura

Após instalar o Banco MySQL, entrar com o usuário root e executar o script abaixo.

 CREATE DATABASE asteriskcdrdb; 

 GRANT INSERT 
  ON asteriskcdrdb.* 
  TO asteriskcdruser@localhost 
  IDENTIFIED BY 'yourpassword'; 

 USE asteriskcdrdb; 

 CREATE TABLE cdr ( 
 `id` bigint NOT NULL auto_increment PRIMARY KEY,
 `calldate` datetime NOT NULL default '0000-00-00 00:00:00', 
 `clid` varchar(80) NOT NULL default '', 
 `src` varchar(80) NOT NULL default '', 
 `dst` varchar(80) NOT NULL default '', 
 `dcontext` varchar(80) NOT NULL default '',  
 `channel` varchar(80) NOT NULL default '', 
 `dstchannel` varchar(80) NOT NULL default '', 
 `lastapp` varchar(80) NOT NULL default '', 
 `lastdata` varchar(80) NOT NULL default '', 
 `duration` int(11) NOT NULL default '0', 
 `billsec` int(11) NOT NULL default '0', 
 `disposition` varchar(45) NOT NULL default '',  
 `amaflags` int(11) NOT NULL default '0', 
 `accountcode` varchar(20) NOT NULL default '', 
 `userfield` varchar(255) NOT NULL default '',
 `enviado`char(1) NOT NULL default 'N'
 ) ENGINE = innodb; 

 ALTER TABLE `cdr` ADD INDEX ( `calldate` ); 
 ALTER TABLE `cdr` ADD INDEX ( `dst` );

Ajustar o cdr_mysql.conf

Criar um arquivo de configuração informando a senha do Banco MySQL.
Exemplo: /etc/asterisk/cdr_mysql.conf

 ; 
 ; Note - if the database server is hosted on the same machine as the 
 ; asterisk server, you can achieve a local Unix socket connection by 
 ; setting hostname=localhost 
 ; 
 ; port and sock are both optional parameters.  If hostname is specified 
 ; and is not "localhost", then cdr_mysql will attempt to connect to the 
 ; port specified or use the default port.  If hostname is not specified 
 ; or if hostname is "localhost", then cdr_mysql will attempt to connect 
 ; to the socket file specified by sock or otherwise use the default socket 
 ; file. 
 ; 
 [global] 
  hostname=localhost 
  dbname=asteriskcdrdb 
  password=yourpassword 
  user=asteriskcdruser 
  ;port=3306 
  ;sock=/tmp/mysql.sock 
  ;userfield=1

Ajustar o modules.conf

Editar o /etc/asterisk/modules.conf e acrescentar

 load cdr_addon_mysql.so

e reinicializar o asterisk para carregar o módulo.

Verificando a implenetação

Entre no asterisk com asterisk -r e dê um restart now .

Entre novamente, e verifique:

asterisk*CLI> cdr mysql status
Connected to asteriskcdrdb@localhost, port 3306 using table cdr for 8 seconds.
Wrote 0 records since last restart.
asterisk*CLI>

Pronto, seu asterisk já está gravando o CDR em MySQL.

Obs: se voce for compilar o asterisk, lembre-se se acrescentar o “add on” e a biblioteca do MySQL (libmysqlclient15-dev).

Menu CSS Drop-Down 2.0

Referencia: Javascript Array

It is a One Level Drop-Down Menu with Timeout effect.

If you are looking for advanced script, see the Multi-Level Drop-Down Menu based on simple treelike unordered list.

Internet has a lot of scripts with the name “Drop Down Menu”. One day I needed to make such menu for my site. I have rummaged a heap of sites and archives with scripts. And not found what I looked for. On the Net scripts shared on two variants. The first – utterly worthless scripts. The second – too complex heap up and chargeable.

And I just wrote this simple script:

Sample

This menu can be located anywhere on the page:

HTML Code

HTML code is very simple and without tables. It used unordered list for menu items and hidden layers near own parent items.

Parent items and hidden layers have unique identifiers. Also these have event handlers onmouseover and onmouseout:

<ul id="sddm">
    <li><a href="#" 
        onmouseover="mopen('m1')" 
        onmouseout="mclosetime()">Home</a>
        <div id="m1" 
            onmouseover="mcancelclosetime()" 
            onmouseout="mclosetime()">
        <a href="#">HTML Drop Down</a>
        <a href="#">DHTML Menu</a>
        <a href="#">JavaScript DropDown</a>
        <a href="#">Cascading Menu</a>
        <a href="#">CSS Horizontal Menu</a>
        </div>
    </li>
    <li><a href="#" 
        onmouseover="mopen('m2')" 
        onmouseout="mclosetime()">Download</a>
        <div id="m2" 
            onmouseover="mcancelclosetime()" 
            onmouseout="mclosetime()">
        <a href="#">ASP Dropdown</a>
        <a href="#">Pulldown menu</a>
        <a href="#">AJAX Drop Submenu</a>
        <a href="#">DIV Cascading Menu</a>
        </div>
    </li>
    <li><a href="#">Order</a></li>
    <li><a href="#">Help</a></li>
    <li><a href="#">Contact</a></li>
</ul>
<div style="clear:both"></div>

CSS Code

<li> tag have loat: left; declaration. sumbmenu layer have visibility: hidden; and position: absolute;. Anchor tag set to display: block;

Everything else is usual decoration:

#sddm
{	margin: 0;
	padding: 0;
	z-index: 30}

#sddm li
{	margin: 0;
	padding: 0;
	list-style: none;
	float: left;
	font: bold 11px arial}

#sddm li a
{	display: block;
	margin: 0 1px 0 0;
	padding: 4px 10px;
	width: 60px;
	background: #5970B2;
	color: #FFF;
	text-align: center;
	text-decoration: none}

#sddm li a:hover
{	background: #49A3FF}

#sddm div
{	position: absolute;
	visibility: hidden;
	margin: 0;
	padding: 0;
	background: #EAEBD8;
	border: 1px solid #5970B2}

	#sddm div a
	{	position: relative;
		display: block;
		margin: 0;
		padding: 5px 10px;
		width: auto;
		white-space: nowrap;
		text-align: left;
		text-decoration: none;
		background: #EAEBD8;
		color: #2875DE;
		font: 11px arial}

	#sddm div a:hover
	{	background: #49A3FF;
		color: #FFF}

JavaScript Code

Insert this code between your <head></head> tags. Look to the code for the comments:

// Copyright 2006-2007 javascript-array.com

var timeout	= 500;
var closetimer	= 0;
var ddmenuitem	= 0;

// open hidden layer
function mopen(id)
{	
	// cancel close timer
	mcancelclosetime();

	// close old layer
	if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';

	// get new layer and show it
	ddmenuitem = document.getElementById(id);
	ddmenuitem.style.visibility = 'visible';

}
// close showed layer
function mclose()
{
	if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';
}

// go close timer
function mclosetime()
{
	closetimer = window.setTimeout(mclose, timeout);
}

// cancel close timer
function mcancelclosetime()
{
	if(closetimer)
	{
		window.clearTimeout(closetimer);
		closetimer = null;
	}
}

// close layer when click-out
document.onclick = mclose; 

That�s it! All you have to do now is add some hover styles and make it your own. Enjoy!

If you want to use this script on your page, please place link to http://javascript-array.com at one of your pages.

Looking for Multi-Level Menu? See the Multi-Level Drop-Down Menu.

Menu CSS com background image

Este menu permite trocar a imagem de fundo e produzir efeito no momento que o usuario passa sobre a opção:

Será utilizado HTML, CSS e Javascript. Vamos ao código, já com as explicações:

<html>
<head>
<style type="text/css">

/* classe para quando o mouse sair da opção */
.itemOn{
padding-left:10px;
padding-top:2px;
background-image: url(b1.jpg);
}

/* classe para quando o mouse passar na opção */
.itemOver{
padding-left:10px;
padding-top:2px;
background-image: url(b2.jpg);
}

/* Observe que este CSS apenas troca a imagem de fundo de b1.jpg para b2.jpg */
</style>
</head>

<body>
<table cellpadding='0' cellspacing='0'>
<tr>
<td nowrap>

<div class="itemOn"
onmouseover="this.className='itemOver';"
onmouseout="this.className='itemOn';">
<a href="#menuum"> MENU UM </a>
</div>
</td>

<td nowrap>

<div class="itemOn"
onmouseover="this.className='itemOver';"
onmouseout="this.className='itemOn';">
<a href="#menudois"> MENU DOIS </a>
</div>
</td>
</tr>
</table>
</body>
</html>

Bom trabalho !