website diff pt/devel/forge.php @ rev 990
pt: move devel index.html to php & add forge.php
author | Claudinei Pereira <claudinei@slitaz.org> |
---|---|
date | Wed Mar 21 01:49:19 2012 -0300 (2012-03-21) |
parents | |
children | 2a2cae2179d4 |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/pt/devel/forge.php Wed Mar 21 01:49:19 2012 -0300 1.3 @@ -0,0 +1,360 @@ 1.4 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 1.5 + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 1.6 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt" lang="pt"> 1.7 +<head> 1.8 + <title>SliTaz - Espaço dos Desenvolvedores</title> 1.9 + <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" /> 1.10 + <meta name="description" content="SliTaz GNU/Linux project information overview" /> 1.11 + <meta name="keywords" lang="pt" content="sobre slitaz, gnu, linux, mini distro, livecd" /> 1.12 + <meta name="robots" content="index, follow, all" /> 1.13 + <meta name="modified" content="2011-03-26 00:30:00" /> 1.14 + <meta name="author" content="Claudinei Pereira" /> 1.15 + <link rel="shortcut icon" href="../../favicon.ico" /> 1.16 + <link rel="stylesheet" type="text/css" href="../../slitaz.css" /> 1.17 +</head> 1.18 +<body> 1.19 + 1.20 +<?php include("../../lib/html/header.pt.html"); ?> 1.21 + 1.22 +<!-- Block --> 1.23 +<div id="block"> 1.24 + 1.25 + <?php include("../../lib/html/nav.pt.html"); ?> 1.26 + 1.27 + <!-- Information/image --> 1.28 + <div id="block_info"> 1.29 + <h4>Desenvolvimento</h4> 1.30 + <p> 1.31 + Utilitários, linhas mestras e serviços utilizados para 1.32 + desenvolver o SliTaz. 1.33 + </p> 1.34 + <p> 1.35 + <img src="../../images/users.png" alt="users.png" /> 1.36 + Utilize também o <a href="http://scn.slitaz.org/">SCN</a> 1.37 + (SliTaz Community Network) e a 1.38 + <a href="../mailing-list.php">lista de discussão</a>. 1.39 + </p> 1.40 + </div> 1.41 +</div> 1.42 + 1.43 +<!-- Language --> 1.44 +<div id="lang"> 1.45 + <a href="../../i18n.php"> 1.46 + <img src="../../images/locale.png" alt="locale.png" /></a> 1.47 + <a href="../../de/devel/">Deutsch</a> 1.48 + <a href="../../en/devel/">English</a> 1.49 + <a href="../../fr/devel/">Français</a> 1.50 +</div> 1.51 + 1.52 +<!-- Content --> 1.53 +<div id="content"> 1.54 + 1.55 +<h2>Espaço dos Desenvolvedores do SliTaz</h2> 1.56 + 1.57 +<ul> 1.58 + <li><a href="#kiss">KISS e respeito aos padrões.</a></li> 1.59 + <li><a href="#tank">Build host & home.</a></li> 1.60 + <li><a href="#repos">Repositórios Mercurial.</a></li> 1.61 + <li><a href="#gui">Interface gráfica em GTK e Web/CGI</a></li> 1.62 + <li><a href="#iconv">Implementação da função iconv().</a></li> 1.63 + <li><a href="#pkgs">Pacotes Tazpkg.</a></li> 1.64 + <li><a href="#website">Gerenciamento do Website.</a></li> 1.65 +</ul> 1.66 + 1.67 +<a name="kiss"></a> 1.68 +<h2>KISS e respeito aos padrões</h2> 1.69 +<p> 1.70 +"Keep it Simple", ou seja, tentamos manter as coisas simples: respeito 1.71 +aos padrões, planejamento cuidadoso e documentação escrita de alta 1.72 +qualidade, fornecimento de um sistema robusto e estável e um sistema de 1.73 +arquivos (<em>rootfs</em>) no LiveCD leve o suficiente para ser executado 1.74 +em máquinas que tenham ao menos 128 mb de memória RAM. Também usamos 1.75 +aplicativos baseados em GTK+2, Dialog, scripts SHell ou PHP. A idéia 1.76 +é não nos repetirmos e deixar o sistema básico leve e pequeno. 1.77 +</p> 1.78 + 1.79 +<a name="tank"></a> 1.80 +<h2>Tank - Build host & home</h2> 1.81 +<p> 1.82 +Cada participante do projeto pode obter uma conta no servidor do projeto 1.83 +com acesso seguro, espaço em disco, um diretório público e acesso a todas 1.84 +as ferramentas de desenvolvimento. Os desenvolvendores podem compilar 1.85 +pacotes e os mantenedores dos mirrors podem gerenciar as sincronizações. 1.86 +O Tank também hospeda o website, o boot via web e os repositórios 1.87 +mercurial: 1.88 +<a href="http://tank.slitaz.org/">tank.slitaz.org</a> 1.89 +</p> 1.90 +<p> 1.91 +Instruções para a utilização deste servidor estão descritas no "Livro de 1.92 +Receitas" (cookbook): 1.93 +<a href="http://doc.slitaz.org/pt:cookbook:buildhost">SliTaz Build Host (tank)</a>. 1.94 +</p> 1.95 + 1.96 +<a name="repos"></a> 1.97 +<h2>Repositórios Mercurial</h2> 1.98 +<p> 1.99 +Os repositórios Mercurial ou Hg do SliTaz podem ser listados ou clonados por 1.100 +qualquer um na URL: <a href="http://hg.slitaz.org/">http://hg.slitaz.org/</a>. 1.101 +Pessoas com acesso de escrita podem acessar diretamente pelo endereço 1.102 +<code>repos.slitaz.org</code> que necessita de autenticação. 1.103 +O Mercurial usa Python e é instalável com o comando: 1.104 +<code>tazpkg get-install mercurial</code> 1.105 +</p> 1.106 +<h3>~/.hgrc</h3> 1.107 +<p> 1.108 +Antes de sua primeira transferência no servidor, assegure-se de que possui 1.109 +o arquivo de configuração do Hg correto com seu nome e endereço de e-mail 1.110 +e lembre-se de checar que você não está acessando como usuário root. 1.111 +Exemplo de arquivo ~/.hgrc: 1.112 +</p> 1.113 +<pre class="script"> 1.114 +[ui] 1.115 +username = FirstName LastName <you@example.org> 1.116 +</pre> 1.117 +<h4>Clonar, modificar, transferir e finalizar</h4> 1.118 +<p> 1.119 +Clonar (clone) um repositório, exemplo para slitaz-doc: 1.120 +</p> 1.121 +<pre> 1.122 + $ hg clone http://repos.slitaz.org/wok 1.123 +</pre> 1.124 +<p> 1.125 +Mude de diretório para slitaz-doc, note que você deve estar no repositório 1.126 +para poder utilizar os comandos "hg". Para marcar todos os logs ou somente o 1.127 +último log: 1.128 +</p> 1.129 +<pre> 1.130 + $ hg log 1.131 + $ hg head 1.132 +</pre> 1.133 +<p> 1.134 +Modifique um ou mais arquivos e transfira (commit): 1.135 +</p> 1.136 +<pre> 1.137 + $ hg add 1.138 + $ hg status 1.139 + $ hg commit -m "Log message..." 1.140 + $ hg log 1.141 +</pre> 1.142 +<p> 1.143 +Note que você pode usar o comando <code>rollback</code> para desfazer a última 1.144 +transação. Antes de finalizar (push) as mudanças no servidor é seguro executar 1.145 +o comando pull ao menos uma vez: 1.146 +</p> 1.147 +<pre> 1.148 + $ hg pull 1.149 + $ hg push 1.150 +</pre> 1.151 +<p> 1.152 +Está feito, suas mudanças, código ou correções estão agora no servidor 1.153 +</p> 1.154 + 1.155 +<h4>Comandos Úteis</h4> 1.156 +<p> 1.157 +Comandos do mercurial (hg) que podem ser usados. 1.158 +</p> 1.159 +<ul> 1.160 + <li><code>hg help</code> : Mostra uma lista completa dos comandos.</li> 1.161 + <li><code>hg rollback</code> : Desfaz a última ação (commit, pull, 1.162 + push).</li> 1.163 + <li><code>hg log <package></code> : Mostra o log de um pacote.</li> 1.164 + <li><code>hg head</code> : Mostra o último log.</li> 1.165 +</ul> 1.166 + 1.167 +<a name="gui"</a> 1.168 +<h2>Interface Gráfica - C/GTK, Yad, Vala/Genie e WEB/GCI</h2> 1.169 +<p> 1.170 + Há várias maneiras de criar interfáces gráficas para o usuário para a 1.171 + distribuição. No início do projeto até a versão 3.0, usamos principalmente 1.172 + o GTKDialog, o que nos permitia criar interfaces razoavelmente complexas 1.173 + em GTK, ao mesmo tempo que pudemos usar uma linguagem de script que 1.174 + era executada sem a necessidade de ser compilada. Porém, o GTKDialog 1.175 + não é mais mantido pelos desenvolvedores, e está desatualizado, então 1.176 + tivemos que mudar para o Yad para criar algumas caixas de diálogo simples. 1.177 + Para todos as ferramentas de administração, pacotes e configuração 1.178 + próprias da distribuição, agora usamos o TazPanel, que é uma interface 1.179 + WEB/CGI escrita em xHTML5 e CSS3. 1.180 +</p> 1.181 +<p> 1.182 + O Yad é simples, porém não nos permite criar interfaces muito complexas, 1.183 + então outra maneira teve de ser abordada. A vantagem de uma linguagem 1.184 + de script é o fato de não precisar ser compilada e ser codificada em 1.185 + tempo real, porém isso significa em programas que rodam com um pouco menos 1.186 + de performance. Escrever programas na Linguagem C é complexo e atrai 1.187 + menos desenvolvedores, porque linguagens de script são mais atrativas 1.188 + para aqueles que desejam contribuir, tal como o SHell Script, que é 1.189 + fácil de compreender e manter. Deste modo, com uma linguagem de programação 1.190 + script uma interface WEB/CGI ou em GTK, podemos manter nossas linhas 1.191 + mestras e atrair desenvolvedores. 1.192 +</p> 1.193 +<p> 1.194 + Há muitas linguagens que usam GTK, como Genie, Vala ou GTKaml. Mas é 1.195 + preciso manter em mente que elas não são tão populares quanto o C ou GTK 1.196 + e não são tão fáceis de aprender e usar (para interfaces simples, melhor é 1.197 + utilizar scripts SHell para tarefas corriqueiras). Pode-se usar o Vala, 1.198 + porém note o seguinte exemplo, que é o código necessário para criar uma 1.199 + simples caixa de diálogo, e possui 14 linhas de código: 1.200 +</p> 1.201 +<pre> 1.202 +#include <gtk/gtk.h>; 1.203 +int main(int argc, char *argv[]) 1.204 +{ 1.205 + GtkWidget *window; 1.206 + 1.207 + gtk_init(&argc, &argv); 1.208 + window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 1.209 + g_signal_connect (G_OBJETCT (window), "destroy", 1.210 + G_CALLBACK (gtk_main_quit), NULL); 1.211 + 1.212 + gtk_widget_show(window); 1.213 + gtk_main(); 1.214 + return 0;' 1.215 +} 1.216 +</pre> 1.217 +<p> 1.218 + Caso queira contribuir, e não está certo qual linguagem usar, mande uma 1.219 + mensagem para a lista de discussão. Para pequenas interface gráficas, 1.220 + utilize o TazBox como exemplo, que pode ser encontrado no repositório 1.221 + slitaz-tools, que também possui pequenas interfaces gráficas, como a 1.222 + responsável pelo logout do usuário. O primeiro utilitário do SliTaz a 1.223 + ser escrito em Linguagem C pura, com GTK, é o TazWeb, e ele pode ser 1.224 + utilizado como exemplo na utilização da função system() para incluir 1.225 + comandos do sistema em uma interface. Esta ferramente utiliza 1.226 + wget para downloads e sed para adicionar favoritos. 1.227 +</p> 1.228 +<p> 1.229 + Scripts em Yad devem seguir as linhas mestras de codificação para a 1.230 + distribuição: 1.231 + <a href="http://hg.slitaz.org/slitaz-dev-tools/raw-file/tip/tazyad/README"> 1.232 + README</a> e o 1.233 + <a href="http://hg.slitaz.org/slitaz-dev-tools/raw-file/tip/tazyad/tazyad"> 1.234 + código de exemplo</a>. 1.235 +</p> 1.236 + 1.237 +<a name="iconv"></a> 1.238 +<h2>Implementação da função iconv()</h2> 1.239 +<p> 1.240 +O SliTaz utiliza a função iconv() fornecida pela biblioteca glibc do 1.241 +projeto GNU - alguns pacotes que necessitam da função <code>libiconv</code> 1.242 +devem usar a versão fornecida pela glibc (<code>glibc-locale</code>). Note 1.243 +que já não há mais um pacote libiconv (1.2 MB) no SliTaz. 1.244 +</p> 1.245 + 1.246 +<a name="pkgs"></a> 1.247 +<h2>Pacotes Tazpkg</h2> 1.248 +<p> 1.249 +Os pacotes tazpkg no SliTaz são automaticamente criados via o 1.250 +<a href="http://cook.slitaz.org/">robô de compilação</a> e receitas 1.251 +no wok. O Livro de Receitas descreve o 1.252 +<a href="http://doc.slitaz.org/pt:cookbook:wok">uso das ferramentas</a> 1.253 +e o formato das <a href="http://doc.slitaz.org/pt:cookbook:receipt">receitas</a>. 1.254 +Informações sobre o comando cook e sobre criação de arquivos receipt são 1.255 +necessários para a criação de pacotes. 1.256 +</p> 1.257 +<p> 1.258 +Em termos de escolha de pacote, a idéia é oferecer o pacote por tarefa ou 1.259 +funcionalidade, isto é, a mais leve aplicação em seu campo e sem duplicações. 1.260 +Note que a atual seleção de pacotes não é imutável, se você souber de uma 1.261 +alternativa mais leve, com mais funcionalidades ou mais <em>sexy</em> por apenas 1.262 +alguns KB a mais, sugira na lista de discussão. Atenção redobrada é prestada 1.263 +aos pacotes do LiveCD: eles devem ser "limpos", removendo-se dependências 1.264 +desnecessárias e opções do compilador. Em geral os pacotes candidatos a fazer 1.265 +parte do LiveCD são discutidos na lista. 1.266 +</p> 1.267 +<p> 1.268 +Antes de você começar a compilar e a criar pacotes para o SliTaz, certifique-se 1.269 +que o trabalho ainda não existe na relação do wok disponível no mirror principal 1.270 +do SliTaz. Não se esqueça que os membros da lista podem te ajudar e que a 1.271 +documentação do <a href="http://doc.slitaz.org/pt:cookbook:wok">wok e ferramentas</a> 1.272 +existe para te guiar nos primeiros passos. 1.273 +</p> 1.274 + 1.275 +<a name="pkgs-naming"></a> 1.276 +<h3>Nomes de Pacotes</h3> 1.277 +<p> 1.278 +Na maioria dos casos o nome do pacote é o mesmo do código fonte, exceto 1.279 +para os módulos das linguagens Python, Perl, PHP, Ruby e Lua. Por exemplo, 1.280 +o pacote que fornece o sistema de templates Kid, escrito em Python e XML, 1.281 +é nomeado: <code>python-kid</code>. 1.282 +</p> 1.283 + 1.284 +<a name="website"></a> 1.285 +<h2>Gerenciamento do website e manuais</h2> 1.286 +<p> 1.287 +O website e os manuais (Manual do SliTaz, Livro de Receitas) são 1.288 +gerenciados pelo repositório mercurial, podendo ser clonados da 1.289 +seguinte maneira: 1.290 +</p> 1.291 +<pre> 1.292 + $ hg clone http://hg.slitaz.org/website 1.293 + Ou, se você tiver as permissões necessárias: 1.294 + $ hg clone http://repos.slitaz.org/website 1.295 +</pre> 1.296 + 1.297 +<a name="xhtml"></a> 1.298 +<h3>Estilo para codificação de xHTML</h3> 1.299 +<p> 1.300 +As páginas nos diferentes <em>manuais</em> são codificadas em xHTML 1.0 1.301 +transitional. As cores para o corpo da página (<code>body</code>) e para 1.302 +os títulos são definidas diretamente de forma a permitir que os links 1.303 +sejam facilmente identificáveis. Os títulos de primeiro nível são usados 1.304 +apenas uma vez, no topo da página, os de segundo nível são usados para 1.305 +nomear as seções e os de terceiro e quarto nível para as subseções. Se 1.306 +uma lista é usada para os tópicos, usando âncoras para as diferentes seções, 1.307 +é posta logo no início da página, após o título da mesma. 1.308 +Parágrafos são colocados dentro das tags <code><p></p></code>. 1.309 +Para indentação, usa-se tabulações (tabs), de forma a manter-se a semântica 1.310 +e para diminuir espaço em termos de octetos (bytes). Para mostrar trechos 1.311 +de código, como o nome de um comando dentro de um parágrafo, 1.312 +<code><code></code> é o método recomendado. Para mostrar a saida 1.313 +de comandos ou comandos a serem digitados em um terminal, usa-se 1.314 +<code><pre></code>. Exemplo: 1.315 +</p> 1.316 +<pre> 1.317 + $ comando 1.318 +</pre> 1.319 +<p> 1.320 +Para mostrar texto que pode ser copiado e colado, como scripts, peças de 1.321 +código, arquivos de configuração, etc, também se usa a tag 1.322 +<code><pre></code>, em conjunto com a classe CSS chamada "script". 1.323 +Exemplo: 1.324 +</p> 1.325 +<pre class="script"> 1.326 +<pre class="script"> 1.327 + 1.328 +code... 1.329 + 1.330 +</pre> 1.331 +</pre> 1.332 +<p> 1.333 +Texto <em>enfatizado</em> é colocado dentro da tag <code><em></code> 1.334 +e links internos são relativos. É recomendável checar a validade do código 1.335 +xHTML por meio do <em>validador</em> online da W3C. 1.336 +</p> 1.337 + 1.338 +<h2>Diff e patch</h2> 1.339 +<p> 1.340 +As utilidades <code>diff</code> e <code>patch</code> são ferramentas de linha 1.341 +de comando para criação e implementação de diferenças entre dois arquivos. Esta 1.342 +técnica é freqüentemente usada para colaboração e as mudanças feitas no arquivo 1.343 +original podem ser extraídas facilmente. Para criar um arquivo <code>diff</code> 1.344 +legível aos humanos em um simples editor de textos, você deve fornecer a opção 1.345 +<code>-u</code> : 1.346 +</p> 1.347 +<pre> 1.348 + $ diff -u file.orig file.new > file.diff 1.349 +</pre> 1.350 +<p> 1.351 +Para aplicar um patch: 1.352 +</p> 1.353 +<pre> 1.354 + $ patch file.orig file.diff 1.355 +</pre> 1.356 + 1.357 +<!-- End of content --> 1.358 +</div> 1.359 + 1.360 +<?php include("../../lib/html/footer.pt.html"); ?> 1.361 + 1.362 +</body> 1.363 +</html>