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 &amp; 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 &amp; 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 &lt;you@example.org&gt;
   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 &lt;package&gt;</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>&lt;p&gt;&lt;/p&gt;</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>&lt;code&gt;</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>&lt;pre&gt;</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>&lt;pre&gt;</code>, em conjunto com a classe CSS chamada "script".
   1.323 +Exemplo:
   1.324 +</p>
   1.325 +<pre class="script">
   1.326 +&lt;pre class="script"&gt;
   1.327 +
   1.328 +code...
   1.329 +
   1.330 +&lt;/pre&gt;
   1.331 +</pre>
   1.332 +<p>
   1.333 +Texto <em>enfatizado</em> é colocado dentro da tag <code>&lt;em&gt;</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 &gt; 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>