mWmdev :: tutorials ::creating and developing http://mwmdev.com pt Home Server - 225,8€ - Windows XP <p class="headline">Intro</p>Hoje em dia é normal ter-se mais do que 1 PC em casa [eu tenho 3 só no meu quarto e 6 no total] e torna-se interessante e ao mesmo tempo necessário ter uma maneira de partilhar informação [documentos, fotos, vídeos, etc.]. Para este fim, costuma-se adoptar uma de duas soluções: (1) Definir permissões de partilha em todos os PCs e cada PC acede a outro pelo IP ou pelo nome do computador; (2) Arranja-se um PC para "servir" os outros.<br /> <br /> A que venho falar aqui hoje é a solução (2). Montar um Home Server com o mínimo de custos possível, que permite filesharing, backup-system e remote printing.<br /> <br /> Vou assumir que têm uma pequena rede em casa com 2 PCs no mínimo ou que o segundo será comprado e montado perante o material a baixo descrito. E ainda, que tenham um switch, router ou hub que serve a rede local.<br /> <br /> <p class="headline">Material - Server - Windows XP</p><table class="post" cellpadding="3"><tr><td><b>Componente</b></td><td><b>Modelo</b></td><td><b>Preço</b></td></tr><tr><td>Processador</td><td>INTEL CELERON 420 (1,6 GHZ) SKT 775</td><td>30,60 €</td></tr><tr><td>Motherboard</td><td>ASUS P5VD2-VM SE</td><td>42,50 €</td></tr><tr><td>Memória</td><td>KINGSTON 1GB DDR2 667MHZ</td><td>16,70 €</td></tr><tr><td>Disco</td><td>WESTERN DIGITAL 500GB SATA II 16MB</td><td>84,20 €</td></tr><tr><td>DVD-RW</td><td>LG DVD±R 20X H58N SECUREDISK PRETO BULK (IDE)</td><td>24,80 €</td></tr><tr><td>Box-ATX</td><td>ASUS MID TOWER TA-863</td><td>27,00 €</td></tr></table><br /> <b>Total:</b> 225,8€<br /> <hr size="1" width="100%" noshade color="#b9b9b9"><br /> Dependendo das necessidades de cada um e das possíveis peças que cada um já tenha, isto sairá mais caro ou mais barato. Eu por exemplo tenho exactamente este sistema descrito na tabela mas não gastei dinheiro numa caixa porque tenho aqui várias velhas e comprei mais um disco de 500 Gb. Depois, dependendo dos que já têm caixa, têm de arranjar uma fonte compatível com a motherboard, esta é de 24 pinos e uma de 4 pinos para o CPU. Uma nova custa pelo menos 12 €. Convém ainda ter um monitor :)<br /> <br /> <p class="headline">Já tenho o meu material e agora? - Setup</p>Agora é preciso um sistema operativo. Nesta primeira parte vou-me ficar pelo Windows XP Professional. Para uma próxima, e se calhar com a ajudar do iGama [cravanço prévio] talvez se faça para Linux.<br /> <br /> Como estamos no IST, temos acesso a uma data de recursos, um deles é a MSDNAA, que nos permite ter acesso a uma data de aplicações, entre elas o Windows XP Professional. Pelo que, fazendo um home server com Linux ou com Windows, neste caso, terá um custo adicional de 0 €.<br /> <br /> Perante isto, inicamos o nosso sistema com o CD do Windows XP Professional na drive, arrancamos para o setup via DOS. Ao chegarmos à instalação, criamos uma partição com sensivelmente 60 Gb para o Windows, visto que vai ser um servidor e terá bastantes aplicações [possivelmente]. Há que adaptar às necessidades de cada um. Formatamos esta partição em NTFS. Podemos não criar logo a partição com o restante espaço porque é possível faze-lo quando estivermos no Windows mas é indiferente. Arrancamos com a instalação.<br /> <br /> Quando já estivermos no Windows, há que recorrer ao CD do chipset da motherboard e de outras coisas que tenham "instaladas" enquanto hardware para instalarmos as drivers e ficar tudo 100% a funcionar. Depois, é preciso instalarmos um antivírus [e para os mais exigentes, uma firewall]. Eu tenho o antivírus que está disponível para se sacar no site da RNL, McAfee VirusScan Enterprise, ver. 8.5i, mas podem arranjar uma versão free do Avast Home Edition [tenho-a no portátil, 5*].<br /> Importante: façam-no antes de ligarem quaisquer cabos ethernet ou outro tipo de ligação à internet. Não imaginam a rapidez com que um computador desprotegido com uma fresh install do Windows XP ligado à internet fica infectado!<br /> Activamos a firewall do Windows XP SP2 [daqui a poucos dias, SP3] e fazemos as actualizações necessárias ao antivírus. Assim que tudo estiver minimamente protegido, ligamo-nos à net e sacamos as actualizações do Windows e service packs necessários para ficar tudo up to date. É importante darmos um nome ao computador, para isso:<br /> <ul><li>Right-click sobre o "My computer"/Properties/Computer Name(tab)</li><li>Clicar no botão "Change..."</li><li>Atribuir um nome ao computador (por exemplo "server")</li><li>Definir o "Workgroup" (por exemplo "WORKGROUP")</li></ul><br /> <p class="headline">Filesharing - File-server</p>Temos agora, duas partições, uma com sensivelmente 60 Gb com o sistema operativo, neste caso, com o Windows XP Professional, e outra com "muito" espaço livre para usar e para "servir" as necessidades de todos os utilizadores da rede doméstica.<br /> <br /> Precisamos de definir as permissões de partilha para que cada utilizador consiga aceder [ler dados] e possivelmente copiar dados para o server sem dificuldade.<br /> <ul><li>Abrir uma pasta do Explorer</li><li>Ir a Tools/Folder Options.../View(tab)/Advanced Settings(label)</li><li>Uncheck "Use simple file sharing (Recommended)"</li></ul>Temos agora, total controlo sobre as definições das permissões de todos os utilizadores. Nota: precisamos de fazer todas estas alterações e definições como administradores do sistema.<br /> <br /> Após definirmos que já não há simple file sharing, vamos organizar o nosso server. Deixando a partição do sistema operativo, temos a nossa partição principal que vai servir para partilhar dados e, mais tarde, para um backup-system.<br /> <br /> Nesta nossa partição de dados, vamos criar pastas para os vários tipos de dados, por exemplo:<br /> <ul><li>Appz</li><li>Games</li><li>Movies</li><li>Music</li><li>Pictures</li><li>TV Shows</li></ul>E para cada uma destas pastas, vamos criar permissões de acesso para utilizadores. Por exemplo, podemos querer que na pasta Music, qualquer utilizador da rede possa ler e escrever, mas que na pasta Movies só se possa ler, embora o administrador tenha full control.<br /> <ul><li>Right-click sobre a pasta</li><li>Properties/Sharing(tab)/Share this folder(label)</li><li>Atribuir um "Share name" (com o nome da pasta por exemplo)</li><li>Definir um limite de utilizadores em "User limit"</li><li>Clicar no botão Permissions</li><li>Adicionar os utilizadores que se quer</li><li>Definir as permissões na label de baixo "Permissions for ..."</li></ul>Agora, a partir de qualquer computador, podemos aceder ao nosso fileserver da seguinte maneira:<br /> <ul><li>Abrir uma pasta do Explorer</li><li>Escrever no endereço: "\\server" (onde "server" é o nome do computador)</li></ul>Ou, se soubermos exactamente onde queremos ir no server, mapeando uma pasta automaticamente (por exemplo "\\server\TV Shows").<br /> <br /> <p class="headline">Backup-system</p>Para os mais interessados, um home server pode ser usado como backup-system. Se tivermos portáteis ou mesmo outros computadores ligados à rede, é importante fazer cópias de segurança (backups) dos dados, de modo a diminuir o risco da perda dos mesmos. Se por alguma razão um disco falha ou o sistema operativo tem um problema e não arranca e precisamos mesmo daquelas fotografias ou daqueles documentos da cadeira X, temos uma cópia de segurança no server. Isto se, é claro, fizermos backups para o server.<br /> <br /> Para fazermos backups, precisamos de software específico. O Windows XP vem instalado com uma solução de backups mas que é bastante fraca. Já tentei passar de um lado para outro, mais de 5Gb com mais de 2 000 ficheiros em jogo e baralhou-se. Craxou [para variar]. Arranjei, portanto, um software, freeware, que satisfaz totalmente o que precisamos para o nosso sistema de backups entre os PCs de cada um e o nosso server.<br /> <br /> A empresa que o fornece é a 2BrightSparks e podem encontrar a versão free aqui:<p class="quote"><a href="http://www.2brightsparks.com/downloads.html">http://www.2brightsparks.com/downloads.html</a></p>Depois de instalarmos este software nos PCs que vão fazer backups (não no server), corre-mo-lo e criamos perfis para cada backup. Por exemplo, no nosso portátil temos uma pasta "TV Shows", outra "IST" e outra "Music". Para cada uma, criamos um perfil com as devidas definições. O mais comum será algo do género:<br /> <ul><li>Se um ficheiro local (portátil) ainda não existe no destino (server), copiar para o destino</li><li>Se um ficheiro no destino (server) ainda não existe localmente (portátil), não fazer nada</li></ul>E têm uma série destas características para definir adaptando-se à necessidade de cada perfil por pasta.<br /> Atribuem, ainda, as pastas local e remota do portátil e do servidor, respectivamente a cada perfil para poderem mais tarde sincronizar ou fazer backups sem problemas, por exemplo:<br /> <ul><li>Local: "D:\IST"</li><li>Server: "\\server\Backups\IST"</li></ul> ou<br /> <ul><li>Local: "D:\Music"</li><li>Server: "\\server\Music"</li></ul>Depois, uma vez por semana ou quando acharmos que é preciso, corremos os perfis e ficamos com os dados guardados no servidor. Através das permissões definidas, cada utilizador terá acesso aos seus dados ou alguns, acesso a dados mistos (partilhados).<br /> <br /> <p class="headline">Print sharing</p>Podemos ainda tirar partido do facto de termos um servidor para podermos utilizar a impressora sem termos de andar com o portátil ou com a impressora de um local ou computador para outro. Para além de que só temos de instalar as drivers da impressora, num único computador: no server. Depois de instalarmos as drivers no server, só temos de adicionar a impressora de rede a cada computador que a vai utilizar. Para isso:<br /> <b>No server:</b><br /> <ul><li>Start menu/Control Panel/Printers and Faxes</li><li>Right-click na impressora instalada/Properties/Sharing(tab)</li><li>Seleccionar "Share this printer" e atribuir um "Share name"</li></ul><b>Nos PCs que a vão querer usar:</b><br /> <ul><li>Start menu/Control Panel/Printers and Faxes/Add Printer</li><li>Seguir o Wizard, tendo o cuidado de seleccionar Network Printer e procurar na rede pelo nome que atribuiram no server</li></ul><br /> <p class="headline">Streaming</p>Outra forma de tirarmos partido do servidor é de o utilizarmos como media center. Imaginem que estão no portátil e querem ver um filme. Simplesmente acedem ao server como foi explicado em cima, "\\server\Movies", por exemplo e directamente da pasta aberta, escolhem o filme que lá têm e abrem-no no vosso leitor de vídeos preferido, bsplayer, vlc, mplayer, windows media player, etc. O programa terá de suportar streaming. Estamos portanto, a ver um filme através da rede sendo que estamos numa ligação local tipicamente de 100mbps por cabo e 50mbps por wifi o que torna o stream muito bom (sem falhas). Com este celeron 1.6ghz e com uma rede de 100mbps ethernet e 50mbps wifi, consigo usar em minha casa, 2 streams HD ao mesmo tempo sem falhas. É claro que se precisarem de usar mais talvez convinha investir em melhor processamento (novo CPU, por exemplo um core 2 duo barato) e/ou num switch gigabit.<br /> <br /> Outro streaming possível é com audio. Abrir uma série de músicas no leitor de aac/mp3/ogg, etc. e fazer stream das músicas em directo, sem falhas.<br /> <br /> Tudo isto poupa uma data de espaço no computador de cada um, uma vez que já investimos num ou mais discos de 500 Gb no servidor onde podemos ter tudo.<br /> <br /> É importante não dar muito uso ao servidor em termos de utilizador. Por exemplo, dá jeito ter uma conta guest para se poder utilizar para ir à net ou imprimir alguma coisa directamente se não se tiver outro PC disponível mas de resto, é para se usar remotamente. Isto para que não haja vírus, falhas de segurança e para que os dados dos utilizadores da rede estejam o mais seguros possível.<br /> <br /> <p class="headline">Remote Desktop e VPN</p>A escrever ... Sat, 24 May 2008 01:16:33 GMT http://mwmdev.com/viewpost.php?id=118 Acer under Linux - some issue fixes Desde que uso Ubuntu tenho vindo a acumular algumas falhas, mas, até agora, todas corrigidas. Venho, por isso, partilhar como as corrigi.<br /> <br /> <p class="topic">NOTA:</p><p class="quote"><br /> Portátil:<br /> Acer Aspire 1694WLMi<br /> Intel Pentium M 760 2.0GHz<br /> 2x512MB DDR2 Memory<br /> 100GB HDD 4200 RPM (Product: ST9100822A)<br /> DVD/CD-RW Combo Drive (Product: MATSHITAUJ-845D)<br /> 15.4" WXGA CrystalBrite TFT LCD<br /> ATI Mobility Radeon X700 PCI Express 128MB VRAM<br /> 56k Modem<br /> LAN<br /> WLAN (Intel PRO/Wireless 2200BG)<br /> Bluetooth<br /> Infrared<br /> SD Card reader (Product: Texas Instruments PCIxx21/x515 Cardbus Controller)<br /> PT Keyboard</p><br /> <p class="topic">Falhas no boot</p><br /> 1. Mudar a resolução do uplash para uma que funciona sempre 1024x768:<br /> <p class="code">sudo gedit /etc/usplash.conf</p><br /> <br /> 2. Mostrar a barra de loading acrescentando <b>vga=791</b> á linha do kernel no menu.lst:<br /> <p class="code">sudo gedit /boot/grub/menu.lst </p><br /> <br /> 3. Actualizar as modificações com:<br /> <p class="code">sudo update-initramfs -u -k `uname -r`</p><br /> <br /> <p class="topic">LED da placa Wireless</p><br /> 1. Criar o ficheiro ou acrescentar se já existir:<br /> <p class="code">sudo gedit /etc/modprobe.d/ipw2200</p><br /> a seguinte linha:<br /> <p class="code">options ipw2200 led=1</p><br /> <br /> Para mais informações fica o <a href="https://wiki.ubuntu.com/LaptopTestingTeam/AcerAspire1694WLMi">site/fonte</a><br /> <br /> <p class="topic">Som no SO e no Flash ao mesmo tempo</p><br /> <p class="code"> sudo apt-get install libflashsupport</p><br /> Wed, 16 Jan 2008 20:56:24 GMT http://mwmdev.com/viewpost.php?id=78 WAMP - lesson #01 Há uns tempos aprendi a mexer em PHP e posteriormente a usar, integrado, o sistema de base de dados MySQL, ambos opensource. Comecei por criar pequenos programas como contadores de visitas por página, depois, um tracker em que me dizia, por página, quantas pessoas tinham visitado e dava para organizar por IP, posteriormente uma espécie de guestbook em que o utilizador preenchia uma série de campos, como nome, e-mail e website e depois tinha um espaço para meter um texto, como comentário e submeter para o site. Ou seja, aprendi a guardar uma série de tipos de dados em base de dados MySQL e depois a interagir com o PHP para seleccionar valores da base de dados e manipulá-los e integrá-los num site usando HTML.<br /> <br /> Primeiro comecei por instalar um sistema que dá muito jeito: WAMP. WAMP são as inicias de Windows, Apache, MySQL e PHP. Existe, também, a versão para Linux [LAMP]. Estes 3 serviços são essenciais para se começar a criar alguma página de jeito usando bases de dados com a ajuda de PHP integrado em HTML. O Apache é um serviço e sistema de servidor de internet que nos permite alojar um site e mostrá-lo ao mundo através do nosso computador ou onde estiver instalado. Normalmente está num servidor onde tem uma banda de transmissão muito maior do que um simples computador pertencente a um ISP. Com isto dito acho que podemos começar com alguns princípios do que aqui se vai aprender.<br /> <br /> Criei este post com o intuito de mostrar como este sistem de blogs funciona e foi criado. Basicamente, usando o WAMP, que instalei no meu computador, montei um site e fui experimentando e adicionando features à medida que ia aprendendo ou descobrindo como se faziam. Comecei por criar um ficheiro top.php onde incluí o menu principal. Assim, tendo o topo destacado num ficheiro à parte, pudia inserir noutros subsites que viessem a ser criados, estes ficheiro, ficando tudo igual. A grande vantagem é que ao querer mudar alguma coisa no topo, bastaria mudar num sítio e todos ficavam novamente iguais. Depois, comecei por criar uma base de dados com alguns campos que depois foram alterados. A tabela chama-se ‘posts’.<br /> <p class="code">create table posts (autoID int unsigned auto_increment primary key, title varchar(50), subtitle varchar(50), tag varchar(20), article text, int date, inte date_edit);</p><br /> Depois da tabela criada tinha, então, uma base de dados que podia, agora, receber posts. Estes, definidos por um número identificador ‘autoID’, um título ‘title’ um subtítulo ‘subtitle’, um nome da imagem do artigo, ‘pic_article’, uma etiqueta para posterior visualização na respectiva secção, ‘tag’, uma data de criação do artigo ‘date’, uma data de possível edição do artigo ‘date_edit’ e o próprio texto do artigo ‘article’. Com esta tabela na base de dados, podemos agora inserir nos vários campos, novos elementos e portanto um ‘post’ é um conjunto de vários campos que, neste caso, têm estes formatos e nomes.<br /> <br /> Depois disto, veio a decisão das secções, subsites. Há muito tempo, tive um site onde editava e criava posts tudo manualmente, e foi por esse motivo que decidi criar um sistema automatizado no sentido de poder criar posts e organizá-los e armazená-los, tudo de uma forma simples e sem problemas. Nessa altura, tinha poucas secções: home [notícias e blog] e projects [projectos e coisas do género]. Quando comecei a criar o sistema, e porque agora tinha um dos campos da base de dados chamado ‘tag’, era possível seleccionar apenas os posts relativos a uma determinada tag, decidi ampliar o número de secções até para reorganizar melhor a estrutura do site e definir melhor o tema de cada artigo/post. Assim, surgiram as secções ‘reviews’, ‘tutorials’, ‘3d’ e ‘2d’, mantendo-se a secção original ‘projects’.<br /> <br /> A partir daqui, comecei a criar o código para a primeira secção, home/blog. Como o site funciona quase igual em todas as secções, o código é muito mais geral e facilita muito o trabalho individual.<br /> Para se aceder a uma base de dados através do PHP tem de se ter previlégios e saber o nome da base de dados. Ora, como é óbvio, não vamos querer estar a ver o site e, de cada vez que carregamos num link em que o seu site tem de aceder à base de dados, que este nos pergunte pelo nome da base de dados, pelo nome do utilizador e pela password, etc. Assim, na pasta root [/] onde o site é criado, criamos uma pasta ‘config’, ou com outro nome qualquer, que nos indica os ficheiros que contêm informação sobre o acesso à base de dados do site. Assim, ninguém poderá aceder-lhe. Existem certas permissões de pastas que é possível definir o serviço do servidor de web Apache, mas para o caso não interessa agora. Supondo que, online, os utilizadores não conseguem ter acesso a outras pastas a não ser à root [/], acedemos, então, à criada pasta ‘config’ e criamos um novo ficheiro à qual chamamos ‘db_config.php’. Neste ficheiro vamos incluir todos os dados relativos ao acesso à base de dados do servidor. Para isso, incluímos o seguinte pedaço de código no ficheiro ‘db_config.php’:<br /> <p class="code"><?php<br /> $db_host = "localhost";<br /> $db_user = "username";<br /> $db_password = "username_password";<br /> $db_name = "database_name";<br /> ?></p><br /> <br /> Assim, ao mandarmos incluir este ficheiro noutro, podemos aceder a estas quatro variáveis e, finalmente, poderemos ter acesso à base de dados ‘database_name’ através do utilizador ‘username’ com a password ‘username_password’ no site ‘localhost’. Perante este ficheiro muito importante, só nos resta começar a criar outros ficheiros e tentarmos ligarmo-nos à base de dados caracterizada por estas definições do ficheiro ‘db_config.php’.<br /> <br /> Criamos, então, o ficheiro principal do site ‘index.php’. Para podermos aceder à base de dados, como já foi explicado, temos de ter guardados os dados relativos a ela e as passwords de acesso, etc. Para isso, incluímos no topo do ficheiro ‘index.php’ [ou outro que seja], uma lina essencial para o efeito:<br /> <p class="code">require($_SERVER["DOCUMENT_ROOT"] . "/config/db_config.php");</p><br /> Esta linha permite que no presente código onde está inserida, todas as variáveis lhe sejam acedidas mas de uma forma segura. A variável ‘$_SERVER[“DOCUMENT_ROOT”] é uma vairável do PHP que indica onde se encontra a pasta root [/] ditada pelo servidor Apache [configurável]. Ou seja, essa variável devolverá ‘/’ e depois seguido de ‘/config/db_config.php’. E a funcção ‘require()’ inclui esse ficheiro no actual.<br /> <br /> Agora que já temos acesso à base de dados através da inclusão do ficheiro ‘/config/db_config.php’, podemos ligarmo-nos a ela para, posteriormente, inserir, remover e actualziar campos. Para o efeito, existe uma variável de acesso à base de dados que nos permite fazer a ligação: ‘mysql_connect()’.<br /> <br /> Para nos ligarmos apenas temos de incluir a seguinte linha:<br /> <p class="code">$connection = mysql_connect($db_host, $db_user, $db_password) or die("Error connecting");</p><br /> Se repararem, o resultado de ‘mysql_connect’, foi igualado à variável ‘$connection’. Isto ajuda bastante, visto que vamos usar esta ligação muitas vezes quando formos aceder à base de dados para fazer selecções ou outras operações. Podem também reperar que as vairáveis passadas a ‘mysql_connect()’ não são mais do que as variáveis que se encontram no ficheiro ‘db_config.php’. Se, por alguma razão, username errado, password errada, o servidor não se conseguir ligar à base de dados através da função ‘mysql_connect()’, o código é interrompido e dá um erro, dizendo ‘Error connecting’.<br /> <br /> Posto isto, falta-nos seleccionar a base de dados a usar. Para o efeito, existe outra função de origem no PHP, que nos permite fazer isso: ‘mysql_select_db()’. E portanto acrescentamos: <br /> <p class="code">mysql_select_db($db_name, $connection);</p><br /> Podemos reparar que as variávies usadas já foram declaradas em cima, e como foi mostrado, a variável ‘$connection’ deu jeito ser associada à ligação à base de dados porque agora podemos usá-la sem ter de escrever de novo a aquela linha da função ‘mysql_connect()’.<br /> <br /> Estando, agora, tudo a postos e com a ligação e selecção à base de dados feitas, podemos começar a a ceder-lhe, criar, apagar, actualizar, seleccionar campos, etc.<br /> <br /> Como este tuturial é bastante introdutório, não vou explicar como fiz o site todo visto que tem algumas features bastante avançadas como limitação por páginas, ordenação, etc. No entanto, estes conceitos, à medida que se vai aprendendo a trabalhar com PHP, tornam-se bastante claros e fáceis e de explorar.<br /> <br /> Posto isto, falta um elemento importante. Para podermos visualizar os posts de qualquer tag [embora esteja só a fazer par ao index.php, que inclui os posts sobre home/blog] temos de realmente os ter, ou seja, temos de ter uma maneira de criar posts. Para isso, vamos criar uma nova página e chamar-lhe ‘post.php’. Esta página terá, como objectivo, a criação dos posts e a respectiva inserção na base de dados de maneira correcta, consoante os campos preenchidos pelo utilizador.<br /> <br /> Em PHP, existem dois métodos de submeter dados, são eles o ‘GET’ e o ‘POST’. O segundo, o ‘POST’, é, por assim dizer, ‘silencioso’, uma vez que não mostra nenhum acrescento ao link original, e o primeiro, o ‘GET’, acrescenta nomes de variáveis e respectivos valores, ao link original. É possível que já tenham reparado em alguns sites quando vêm coisas de género ‘http://sitequalquer.php?p=2&id=1234’. Isto quer dizer que houve uma submissão de dados via método ‘GET’ e o nome das variáveis são ‘p’ e ‘id’, com os valores ‘2’ e ‘1234’ respectivamente. No entanto, o método ‘POST’ permite-nos submeter dados de um modo ‘silencioso’ como foi referido antes, querendo isto dizer, que não chegamos a ter de acrescentar valores ao link original. Isto acontece nas submissão das famosas forms. As forms são, como certamente saberão, campos de texto e de selecção de opções em drop menus, radio buttons, checkers, etc, seguidos de um botão de submissão. Aí, submetemos os dados ao site através do método ‘POST’ em modo ‘silencioso’ [também é possível submeter forms com método ‘GET’].<br /> <br /> Posta esta breve introdução sobre envio de dados, temos que definir no código, como os vamos receber. Ora se queremos que seja pelo método ‘POST’, apenas termos de incluir o seguinte no código para a série de variáveis que vamos receber da form: <br /> <p class="code">$ $tag = $_POST["tag"];<br /> $title = $_POST["title"];<br /> $subtitle = $_POST["subtitle"];<br /> $pic_name = $_POST["pic_name"];<br /> $article = $_POST["article"];</p><br /> <br /> Podemos então, enviar dados através da form e os campos na form terão de ter o nome respectivo aqui nas variáveis que se encontram entre áspas nas variáveis de recepção ‘$_POST[“”]’. Sem querer forçar já a parte de inserção destes valores na base de dados, que penso ser a parte mais fácil do processo todo, vou criar aqui um pequeno exemplo com uma form que permite preencher dados com aqueles nomes e, depois, imprimi-los depois da sua submissão [como que uma confirmação de dados]:<br /> <p class="code"><html><br /> <head><br /> <title>O meu primeiro site em PHP</title><br /> </head><br /> <body><br /> <br /> <h1>Insira os valores nos respectivos campos</h1><br /> <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="POST"><br /> <p>Title:</p><br /> <p><input size="33%" type="text" name="title"></p><br /> <p>Subtitle:</p><br /> <p><input size="33%" type="text" name="subtitle"></p><br /> <p>Picture name:</p><br /> <p><input size="33%" type="text" name="pic_name"></p><br /> <p>Tag:</p><br /> <p><input size="33%" type="text" name="tag"></p><br /> <p>Article:</p><br /> <p><textarea rows="5" name="article" cols="20"></textarea></p><br /> <p><input type="submit" value="Submit"</p><br /> <br /> </body><br /> </html></p><br /> Perante este código em HTML, criamos uma form em que temos os campos para podermos submeter os seus valores e estes serem recebidos pelas variáveis anteriormente criadas. Como podem ver há uma variável ‘$_SERVER[“PHP_SELF”]’. Esta variável, devolve o actual site onde se está, ou seja, se for chamada no ficheiro [site] cujo nome é ‘index.php’, devolve ‘index.php’. No entanto, foi aberta uma tag PHP dentro do HTML. Isto não faz mal, podemos interromper o código HTML com tags PHP desde que estas sejam correctamente executadas lá dentro. Neste caso, abrimos uma tag PHP e mandamos imprimir o valor de ‘$_SERVER[“PHP_SELF”]’ que devolverá ‘index.php’, neste caso. E assim a form terá ‘action=”index.php”’. Ao carregarmos no butão ‘Submit’ na form criada, este irá para onde a action manda, que é, como acabámos de ver, ‘index.php’ e irá submeter os dados da form, através do método ‘silencioso’ ‘POST’. Assim, podemos perceber que o próprio ‘index.php’ tem, à partida, de estar preparado para receber estes dados e, porque não, guardá-los em variáveis para depois poderem ser utilizados.<br /> <br /> Assim, ao submetermos os dados da form, estes são automaticamente guardados nas respectivas variáveis se tiverem o nome correcto na form e na respectiva variável ‘$_POST[“nome”]’. Perante isto, podemos mostrar, no final, o que acabámos de submeter. Para isso criamos o seguinte código [continuação do anterior]:<br /> <p class="code"><html><br /> <head><br /> <title>O meu primeiro site em PHP</title><br /> </head><br /> <body><br /> <br /> <h2>Insira os valores nos respectivos campos</h2><br /> <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="POST"><br /> <p>Title:</p><br /> <p><input size="33%" type="text" name="title"></p><br /> <p>Subtitle:</p><br /> <p><input size="33%" type="text" name="subtitle"></p><br /> <p>Picture name:</p><br /> <p><input size="33%" type="text" name="pic_name"></p><br /> <p>Tag:</p><br /> <p><input size="33%" type="text" name="tag"></p><br /> <p>Article:</p><br /> <p><textarea rows="5" name="article" cols="20"></textarea></p><br /> <p><input type="submit" value="Submit"</p><br /> <h2>Insira os valores nos respectivos campos</h2><br /> <?php<br /> <br /> echo ‘<br /> <p><b>Title:</b></p>’.$title.’<br /> <br /> <p><b>Subtitle:</b></p>’.$subtitle.’<br /> <br /> <p><b>Picture name:</b></p>’.$pic_name.’<br /> <br /> <p><b>Tag:</b></p>’.$tag.’<br /> <br /> <p><b>Article:</b></p>’.$article;<br /> ?><br /> <br /> </body><br /> </html></p><br /> Abrimos de novo uma tag e, perante o nome das variáveis criadas no início do ficheiro, temos agora, dentro delas, os valores submetidos através dos campos da form e prontos para serem utilizados. No nosso caso imprimimo-los e é tão simples quanto isto. Agora, perante este cenário, podíamos verificar se algum dos campos não tinha sido preenchido através da função ‘strlen()’ que recebe uma string e devolve o seu tamanho. Se esta função devolve-se 0 [zero] em alguma das variáveis, podíamos alertar o utilizador, etc. Isto através de manipulação de variáveis e de condições.<br /> <br /> Para uma primeira análise de como a coisa funciona penso que é suficiente. Principalmente, é importante perceber a integração do código PHP em HTML e como ambos funcionam bem e, juntando a isto, a possibilidade de nos ligarmos a uma base de dados e podermos guardar lá valores para posteriormente seleccioná-los e também manipulá-los, etc.<br /> <br /> Para uma primeira introdução penso que é tudo. Com o tempo vou continuar este tema da criação de sites com o sistema WAMP/LAMP. Até uma próxima. Thu, 23 Aug 2007 02:28:27 GMT http://mwmdev.com/viewpost.php?id=61 How to Install XGL + Beryl - ubuntu XGL é uma arquitectura do X Server criada para tirar partido do poder gráfico das placas gráficas actuais, usando as drivers OpenGl. Suporta aceleração por hardware de todo o X, das aplicações do OpenGl e do Xvideo e efeitos gráficos através de um manager compositor de janelas como o compiz ou o Beryl. Este projecto foi começado por David Reveman e a primeira release foi em 2 de Janeiro de 2006.<br /> Neste artigo vou explicar como se instala o XGL+Beryl [compositor das janelas] no Ubuntu, usando a ATI.<br /> Existem muitas versões do Ubuntu, a mais recente [aquando da criação deste artigo] é a versão 6.10 Edgy Eft. Vou tentar acompanhar os passos em paralelo para a versão LTS [Long Term Support] 6.06 Dapper Drake e para a 6.10 Edgy Eft, visto que muita gente ainda usa o Dapper. Para além disto, esta primeira versão do artigo só vai ser focada para as placas gráficas ATI com o controlador gráfico fglrx. Para a NVIDIA ficará para outra altura.<br /> Se vieste ver isto, ou é mero interesse e curiosidade ou já viste o XGL a funcionar numa máquina com ele instalado. Vou tentar fazer passo a passo as instruções a seguir. Qualquer dúvida coloquem por e-mail.<br /> <br /> <p class="topic">I – Versão Ubuntu 6.06 LTS Dapper Drake</p><br /> Em primeiro lugar, e para que o XGL funcione, temos de ter a nossa ATI instalada para termos suporte OpenGL. Já vi muitos tutoriais para instalar ATI fglrx mas só ao fim de muito tempo e de muita procura consegui juntar todos os elementos e os passos para que tudo funcione.<br /> <br /> 1. Blacklist old fglrx module from linux-restricted-modules<br /> <p class="code">sudo gedit /etc/default/linux-restricted-modules-common</p><br /> <br /> editar “DISABLE_MODULES” para incluir fglrx<br /> <p class="code">DISABLED_MODULES=”fglrx”</p><br /> <br /> 2. Instalar a nova driver. Fazer download do driver em:<br /> <p class="code"><a href="http://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/ati-driver-installer-8.29.6.run">http://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/ati-driver-installer-8.29.6.run</a></p><br /> <br /> [instalador para sistemas 32bit e 64bit]<br /> <br /> 3. Verificar que tem os repositórios “universe” e “multiserve” activos em “/etc/apt/sources.list” para instalar os seguintes pacotes necessários:<br /> <p class="code">sudo apt-get update<br /> sudo apt-get install module-assistant build-essential<br /> sudo apt-get install fakeroot dh-make debconf libstdc++5 linux-headers-$(uname -r)</p<br /> <br /> criar os pacotes *.deb<br /> <p class="code">bash ati-driver-installer-8.29.6.run –buildpkg Ubuntu/dapper</p><br /> <br /> instalar os pacotes *.deb criados:<br /> <p class="code">sudo dpkg -i xorg-driver-fglrx_8.29.6-1_i386.deb<br /> sudo dpkg -i fglrx-kernel-source_8.29.6-1_i386.deb<br /> sudo dpkg -i fglrx-control_8.29.6-1_i386.deb</p><br /> <br /> remover quaisquer pacotes *.deb fglrx antigos da pasta “/usr/src/”:<br /> <p class="code">sudo rm /usr/src/fglrx-kernel*.deb</p<br /> <br /> compilar o módulo do kernel:<br /> <p class="code">sudo module-assistant prepare<br /> sudo module-assistant update<br /> sudo module-assistant build fglrx<br /> sudo module-assistant install fglrx<br /> sudo depmod -a</p><br /> <br /> actualizar o ficheiro “xorg.conf”:<br /> <p class="code">sudo aticonfig –initial<br /> sudo aticonfig –overlay-type=Xv</p><br /> <br /> reiniciar o sistema:<br /> <p class="code">sudo shutdown -r now</p><br /> <br /> 4. Confirmar que funcionou:<br /> <p class="code">fglrxinfo</p><br /> <p class="quote">display: :0.0 screen: 0<br /> OpenGL vendor string: ATI Technologies Inc.<br /> OpenGL renderer string: RADEON 9700 Generic<br /> OpenGL version string: 2.0.6065 (8.29.6)</p><br /> <br /> [Como já escrevi este texto há já algum tempo, tenham em atenção que a driver pode estar desactualizada. Assim que puder porei o novo link para a última versão]<br /> <br /> Todos os comandos a executar, na consola, estão seguidos das bullets. Tudo o resto são instruções para perceberem melhor o seguimento da instalação da ATI.<br /> <br /> Posto isto, e assumindo que conseguiram instalar a ATI sem problemas e viram, correndo o comando “fglrxinfo” algo parecido com o que me apareceu a mim e está em cima, prossigamos para a instalação do XGL+ Beryl.<br /> <br /> Se por acaso já tentaram instalar o XGL com outro compositor, o compiz, terão de o remover primeiro antes de o instalar. No entanto, todos esses passos estão aqui:<br /> <br /> <br /> <br /> Se tens compiz instalado:<br /> <p class="code">sudo apt-get remove compiz compiz-gnome cgwd cgwd-themes xserver-xgl csm</p><br /> <br /> 1. Upgrade ao sistema antes de instalar os pacotes necessários para o XGL+ Beryl<br /> <p class="code">sudp apt-get update<br /> sudo apt-get dist-upgrade</p><br /> <br /> 2. Adicionar os reposítórios para poder fazer o download dos pacotes do Beryl<br /> <p class="code">sudo gedit /etc/apt/sources.list</p><br /> <br /> e adicionar estes no fim da lista:<br /> <p class="code">deb http://www.beerorkid.com/compiz/ dapper main<br /> deb http://xgl.compiz.info/ dapper main<br /> deb-src http://xgl.compiz.info/ dapper main</p><br /> <br /> 3. Fazer download das keys do QuinnStorm:<br /> <p class="code">wget http://www.beerorkid.com/compiz/quinn.key.asc -O - | sudo apt-key add -</p><br /> <br /> 4. Actualizar a lista dos pacotes:<br /> <p class="code">sudo apt-get update</p><br /> <br /> 5. Fazer download e instalar o Beryl [um só comando]<br /> <p class="code">sudo apt-get install xserver-xgl libgl1-mesa xserver-xorg libglitz-glx1 beryl beryl-core beryl-manager beryl-plugins beryl-plugins-data beryl-settings emerald emerald-themes</p><br /> <br /> 6. Criar a sessão XGL:<br /> <p class="code">sudo gedit /usr/bin/startgnomexgl.sh</p><br /> <br /> e dentro do documento acrescentar estas linhas:<br /> <p class="code">Xgl -fullscreen :1 -ac -accel glx:pbuffer -accel xv:pbuffer & sleep 2 && DISPLAY=:1<br /> # Iniciar Gnome<br /> exec gnome-session</p><br /> <br /> guardar e fechar.<br /> <br /> 7. Criar iniciador da sessão XGL:<br /> <p class="code">sudo gedit /usr/share/xsessions/gnome-xgl.desktop</p><br /> <br /> e dentro do documento acrescentar estas linhas:<br /> <p class="code">[Desktop Entry]<br /> Encoding=UTF-8<br /> Name=gnome-xgl<br /> Exec=/usr/bin/startgnomexgl.sh<br /> Icon=<br /> Type=Application</p><br /> <br /> guardar e fechar.<br /> <br /> 8. Torná-los executáveis:<br /> <p class="code">sudo chmod 755 /usr/bin/startgnomexgl.sh<br /> sudo chmod 755 /usr/share/xsessions/gnome-xgl.desktop</p><br /> <br /> 9. Pôr o Beryl a arrancar com o sistema:<br /> <br /> Ir ao menu “System/Preferences/Sessions/Startup Programs”, carregar “Add” e escrever este comando:<br /> <p class="code">beryl-manager</p><br /> <br /> Se vir que não arrancou totalmente com os efeitos, abrir uma linha de comandos e escrever o comando:<br /> <p class="code">beryl-xgl</p><br /> <br /> em princípio só terá de fazer este comando a primeira vez.<br /> <br /> Por uma questão de segurança, reiniciem o sistema uma última vez para que tudo tome efeito. Façam, então, login pela sessão Gnome XGL e o beryl-manager arrancará [visto os útlimos passos]. Agora têm instalado o ambiente gráficos mais eficiente até agora feito. E não se esqueçam, estão num SO opensource, criado por toda gente, onde não há dinheiro envolvente nos projectos! Nem o Windows Vista com o novo ambiente gráfico AeroGlass consegue bater o Ubuntu + XGL + Beryl!<br /> <br /> Bem, no fundo espero que tenham conseguido instalar tudo e que esteja tudo a funcionar. Se tiverem alguma dúvida ou algum problema deixem a respectiva, num comment abaixo e logo verei o que posso fazer. Mon, 13 Aug 2007 01:38:19 GMT http://mwmdev.com/viewpost.php?id=24 "Make Ubuntu look like OSX" - part 1 No fórum do ubuntuportugal encontrei um link que ia para um site, cujo autor é o Lauri Taimila, onde tinha um guia para transformar o Ubuntu parecido com o MAC OS X. Há muitos themes a imitarem mac, mas para Windows, para Linux vêm-se poucos. Este pareceu-me muito bom em termos de explicação e o aspecto final é excelente. Pedi os direitos ao autor para traduzir o artigo dele e por isso aqui vai o guia traduzido.<br /> <br /> Reparei que muita gente tenta imitar o aspecto do MAC OSX Tiger com o seu actual sistema operativo. Quer seja Windows ou Linux. Eu sou uma dessas pessoas e, portanto, isto é a minha tentativa de pôr o Ubuntu Linux parecer-se com o OSX Tiger. Eu uso o Ubuntu simplesmente porque é a melhor distribuição de qualquer sistema operativo. O Ubuntu usa o Gnome como o seu ambiente gráfico. Por isso este guia é somente para os utilizadores de Gnome. Se usas outra distribuição de Linux, este guia funcionará na maior parte dos casos. Este guia tenta ser o mais específico possível para que também os mais leigos na matéria o possam seguir!<br /> <br /> Porque é que hei-de modificar o meu ambiente de trabalho para se parecer com o OSX?<br /> <br /> Bem, tem tudo a ver com o teu gosto. Se não gostas do aspecto do OSX então não modifiques, mas há muita gente que pensa que o OSX é simplesmente lindo. Pessoalmente eu não gosto do tema castanho original do Ubuntu e os seus ícones (Actualização: o Dapper tem ícones lindos). Não são é para mim. O bom de se usar o Ubuntu (e qualquer outra distribuição de Linux em geral) é que é possível modificar tudo o que se quiser. Isto permite-nos ter um bom sistema operativo com um aspecto personalizado.<br /> <br /> Screenshots – O resultado final<br /> <br /> Tenho a certeza que já estão a pensar “Okay, mas mostra-me algumas screenshots!”. Portanto aqui ficam algumas imagens do antes e do depois. As imagens do antes são tiradas do site oficial do Ubuntu.<br /> <br /> Antes<br /> <br /> IMAGEM<br /> <br /> Depois<br /> <br /> IMAGEM<br /> <br /> Comecemos a modificar o nosso desktop!Comecemos com alguns conceitos básicos. O ambiente gráfico Gnome tem três temas diferente que se pode mudar. Estes são, Ícones, Controlos e Decoração de Janelas. Mesmo mudando apenas estas, podem ficar com um ambiente de trabalho muito bom. Existem muitos temas disponíveis e podes encontrá-los em Gnome-look. Podes usar o tema que quiseres mas neste guia vamos fazer um OSX parecido e precisamos de escolher os melhores para o objectivo.Mudar os temas e os ícones<br /> <br /> Descarrega os seguintes temas em do Gnome-look. O primeiro inclui o tema para a decoração das janelas e para os controlos e o segundo tem os ícones ao estilo do OSX.<br /> <br /> T-ish for Clearlooks by Tmilovan<br /> OSX iconset by Kiddo<br /> <br /> Depois de teres descarregado estes pacotes, vai a “Sistema -> Preferências -> Temas”. Sistema pode ser encontrado no canto superior esquerdo do ecrã. Selecciona “Instalar Tema…” e navega até à pasta onde acabaste de descarregar os pacotes acima. Selecciona o pacote T-issh for Clearlooks e continua. Agora o theme manager instala os ficheiros do tema para que possam ser usados. Repete os mesmos passos para o pacote OSX iconset. Finalmente selecciona o tema T-ish da lista de temas e carrega em “Fechar”. Agora deves ter um novo tema com novos ícones. É um bom começo, mas porquê parar por aqui!<br /> <br /> <p class="topic">Wallpaper</p><br /> O wallpaper é o elemento básico do ambiente de trabalho. No Ubuntu podes muda-lo carregando com o Butão direito do rato no ambiente de trabalho e seleccionando “Mudar Fundo do Ambiente de Trabalho” no menu. Agora deves ver o seleccionador de imagens de fundo (vê a imagem à direita). Podes adicionar novos wallpapers à lista carregando simplesmente no botão “Adicionar Imagem de Fundo” e navegando até à pasta onde tens as tuas imagens de fundo. Ok, isto é tudo muito intuitivo e simples mas onde arranjo os wallpapers como os do OSX? Aqui ou carregando nas thumbnails abaixo e descarregando as imagens para o teu computador. Depois disso podes usá-las como foi descrito acima. Eu uso a do meio no meu ambiente de trabalho mas a escolha é tua! Para mais wallpapers vê a minha lista de links no fim do guia.<br /> <br /> Ícones do DesktopEu uso poucos ícones no meu ambiente de trabalho e são muito grandes como podes ver pelas screenshots. Uso os ícones do thema Innex no ambiente de trabalho. Também recomendo que descarreguem a OS-L iconset mesmo sendo para KDE. Tem muitos ícones onde podes usar nos menus ou nas aplicações que crias.<br /> <br /> <p class="topic">Fontes</p><br /> As fontes são raramente pensadas como sendo atractivas mas bem escolhidas podem fazer a diferença em como fica o aspecto do teu ambiente de trabalho. Também é importante que as fontes sejam legíveis! Não uses fontes muito complicadas ou muito artísticas. Mantém-no simples! Eu uso a fonte chamada HandelGotD, que é muito bonita e mesmo assim é simples. Infelizmente não é de graça e portanto tens de pagar para a ter. É por isso que não a posso pôr aqui. Outra boa opção é usares as mesmas fontes que o verdadeira OSX usa. Estas fontes estão disponíveis em osx.com e são de graça para descarregar. É claro que a fonte padrão do Ubuntu também é bonita, portanto a escolha é tua, uma vez mais. A seguir vamos instalar as fontes descarregadas para que as possamos usar no Gnome. Abre o terminal indo a “Applicações > Acessórios > Terminal” e vai até à pasta que contem as fontes [depois de extraíres]. Agora corre os seguintes comandos. Estes comandos apenas copiam as novas fontes para a pasta das fontes do sistema.<br /> <p class="code">Sudo mkdir /usr/share/fonts/truetype/ttf<br /> sudo cp *.ttf /usr/share/fonts/truetype/ttf<br /> sudo cp *.TTF /usr/share/fonts/truetype/ttf</p><br /> Depois de aplicares estes comandos, recomendo que faças terminar sessão e entres na sessão de novo para teres a certeza que as fontes já estão em uso. Agora temos as fontes instaladas mas ainda precisamos de fazer com que o Gnome as use. Para isso, vai a “Sistema > Preferências > Fonte”. Carrega nos botões para mudar a fonte e selecciona a tua fonte nova da lista e escolhe o tamanho que quiseres. Eu estou a usar o tamanho 9 mas pode ser um bocadinho pequeno para a maior parte dos utilizadores. As fontes de base do Mac são a Lúcida Grande e a Lúcida MAC com tamanho 10. Muda a Application Font, Desktop Font e Windows Title Font, mas não mudes a Terminal Font. Já está! Agora podes fechar a janela do configurador de fontes. Poderás ter de reiniciar a sessão, uma vez mais, para que as mudanças tomem efeito em todas as janelas das aplicações. Por reiniciar sessão eu quero dizer, log out e log in.<br /> <br /> <p class="topic">Painel de modificações do Gnome</p><br /> Os painéis do Gnome são aquelas coisas cinzentas em cima e em baixo no ecrã. Os painéis podem conter menus, barras de tarefas, o relógio, atalhos para as aplicações, etc. A seguir vamos estudar como por o painel de cima parecido com o do OSX e também como podemos fazer a OSX Docker, parecida, no painel de baixo. Há, também, outras maneiras de imitar a OSX Docker, mas não são discutidas neste tópico.<br /> <br /> <p class="topic">Painel De Baixo</p><br /> Nota: todas as imagens referentes ao tutorial ainda estão a ser actualizadas por isso não constam actualmente. Serei breve. Mon, 13 Aug 2007 01:37:18 GMT http://mwmdev.com/viewpost.php?id=23