website annotate 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
rev   line source
claudinei@990 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
claudinei@990 2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
claudinei@990 3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt" lang="pt">
claudinei@990 4 <head>
claudinei@990 5 <title>SliTaz - Espaço dos Desenvolvedores</title>
claudinei@990 6 <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
claudinei@990 7 <meta name="description" content="SliTaz GNU/Linux project information overview" />
claudinei@990 8 <meta name="keywords" lang="pt" content="sobre slitaz, gnu, linux, mini distro, livecd" />
claudinei@990 9 <meta name="robots" content="index, follow, all" />
claudinei@990 10 <meta name="modified" content="2011-03-26 00:30:00" />
claudinei@990 11 <meta name="author" content="Claudinei Pereira" />
claudinei@990 12 <link rel="shortcut icon" href="../../favicon.ico" />
claudinei@990 13 <link rel="stylesheet" type="text/css" href="../../slitaz.css" />
claudinei@990 14 </head>
claudinei@990 15 <body>
claudinei@990 16
claudinei@990 17 <?php include("../../lib/html/header.pt.html"); ?>
claudinei@990 18
claudinei@990 19 <!-- Block -->
claudinei@990 20 <div id="block">
claudinei@990 21
claudinei@990 22 <?php include("../../lib/html/nav.pt.html"); ?>
claudinei@990 23
claudinei@990 24 <!-- Information/image -->
claudinei@990 25 <div id="block_info">
claudinei@990 26 <h4>Desenvolvimento</h4>
claudinei@990 27 <p>
claudinei@990 28 Utilitários, linhas mestras e serviços utilizados para
claudinei@990 29 desenvolver o SliTaz.
claudinei@990 30 </p>
claudinei@990 31 <p>
claudinei@990 32 <img src="../../images/users.png" alt="users.png" />
claudinei@990 33 Utilize também o <a href="http://scn.slitaz.org/">SCN</a>
claudinei@990 34 (SliTaz Community Network) e a
claudinei@990 35 <a href="../mailing-list.php">lista de discussão</a>.
claudinei@990 36 </p>
claudinei@990 37 </div>
claudinei@990 38 </div>
claudinei@990 39
claudinei@990 40 <!-- Language -->
claudinei@990 41 <div id="lang">
claudinei@990 42 <a href="../../i18n.php">
claudinei@990 43 <img src="../../images/locale.png" alt="locale.png" /></a>
claudinei@990 44 <a href="../../de/devel/">Deutsch</a>
claudinei@990 45 <a href="../../en/devel/">English</a>
claudinei@990 46 <a href="../../fr/devel/">Français</a>
claudinei@990 47 </div>
claudinei@990 48
claudinei@990 49 <!-- Content -->
claudinei@990 50 <div id="content">
claudinei@990 51
claudinei@990 52 <h2>Espaço dos Desenvolvedores do SliTaz</h2>
claudinei@990 53
claudinei@990 54 <ul>
claudinei@990 55 <li><a href="#kiss">KISS e respeito aos padrões.</a></li>
claudinei@990 56 <li><a href="#tank">Build host &amp; home.</a></li>
claudinei@990 57 <li><a href="#repos">Repositórios Mercurial.</a></li>
claudinei@990 58 <li><a href="#gui">Interface gráfica em GTK e Web/CGI</a></li>
claudinei@990 59 <li><a href="#iconv">Implementação da função iconv().</a></li>
claudinei@990 60 <li><a href="#pkgs">Pacotes Tazpkg.</a></li>
claudinei@990 61 <li><a href="#website">Gerenciamento do Website.</a></li>
claudinei@990 62 </ul>
claudinei@990 63
claudinei@990 64 <a name="kiss"></a>
claudinei@990 65 <h2>KISS e respeito aos padrões</h2>
claudinei@990 66 <p>
claudinei@990 67 "Keep it Simple", ou seja, tentamos manter as coisas simples: respeito
claudinei@990 68 aos padrões, planejamento cuidadoso e documentação escrita de alta
claudinei@990 69 qualidade, fornecimento de um sistema robusto e estável e um sistema de
claudinei@990 70 arquivos (<em>rootfs</em>) no LiveCD leve o suficiente para ser executado
claudinei@990 71 em máquinas que tenham ao menos 128 mb de memória RAM. Também usamos
claudinei@990 72 aplicativos baseados em GTK+2, Dialog, scripts SHell ou PHP. A idéia
claudinei@990 73 é não nos repetirmos e deixar o sistema básico leve e pequeno.
claudinei@990 74 </p>
claudinei@990 75
claudinei@990 76 <a name="tank"></a>
claudinei@990 77 <h2>Tank - Build host &amp; home</h2>
claudinei@990 78 <p>
claudinei@990 79 Cada participante do projeto pode obter uma conta no servidor do projeto
claudinei@990 80 com acesso seguro, espaço em disco, um diretório público e acesso a todas
claudinei@990 81 as ferramentas de desenvolvimento. Os desenvolvendores podem compilar
claudinei@990 82 pacotes e os mantenedores dos mirrors podem gerenciar as sincronizações.
claudinei@990 83 O Tank também hospeda o website, o boot via web e os repositórios
claudinei@990 84 mercurial:
claudinei@990 85 <a href="http://tank.slitaz.org/">tank.slitaz.org</a>
claudinei@990 86 </p>
claudinei@990 87 <p>
claudinei@990 88 Instruções para a utilização deste servidor estão descritas no "Livro de
claudinei@990 89 Receitas" (cookbook):
claudinei@990 90 <a href="http://doc.slitaz.org/pt:cookbook:buildhost">SliTaz Build Host (tank)</a>.
claudinei@990 91 </p>
claudinei@990 92
claudinei@990 93 <a name="repos"></a>
claudinei@990 94 <h2>Repositórios Mercurial</h2>
claudinei@990 95 <p>
claudinei@990 96 Os repositórios Mercurial ou Hg do SliTaz podem ser listados ou clonados por
claudinei@990 97 qualquer um na URL: <a href="http://hg.slitaz.org/">http://hg.slitaz.org/</a>.
claudinei@990 98 Pessoas com acesso de escrita podem acessar diretamente pelo endereço
claudinei@990 99 <code>repos.slitaz.org</code> que necessita de autenticação.
claudinei@990 100 O Mercurial usa Python e é instalável com o comando:
claudinei@990 101 <code>tazpkg get-install mercurial</code>
claudinei@990 102 </p>
claudinei@990 103 <h3>~/.hgrc</h3>
claudinei@990 104 <p>
claudinei@990 105 Antes de sua primeira transferência no servidor, assegure-se de que possui
claudinei@990 106 o arquivo de configuração do Hg correto com seu nome e endereço de e-mail
claudinei@990 107 e lembre-se de checar que você não está acessando como usuário root.
claudinei@990 108 Exemplo de arquivo ~/.hgrc:
claudinei@990 109 </p>
claudinei@990 110 <pre class="script">
claudinei@990 111 [ui]
claudinei@990 112 username = FirstName LastName &lt;you@example.org&gt;
claudinei@990 113 </pre>
claudinei@990 114 <h4>Clonar, modificar, transferir e finalizar</h4>
claudinei@990 115 <p>
claudinei@990 116 Clonar (clone) um repositório, exemplo para slitaz-doc:
claudinei@990 117 </p>
claudinei@990 118 <pre>
claudinei@990 119 $ hg clone http://repos.slitaz.org/wok
claudinei@990 120 </pre>
claudinei@990 121 <p>
claudinei@990 122 Mude de diretório para slitaz-doc, note que você deve estar no repositório
claudinei@990 123 para poder utilizar os comandos "hg". Para marcar todos os logs ou somente o
claudinei@990 124 último log:
claudinei@990 125 </p>
claudinei@990 126 <pre>
claudinei@990 127 $ hg log
claudinei@990 128 $ hg head
claudinei@990 129 </pre>
claudinei@990 130 <p>
claudinei@990 131 Modifique um ou mais arquivos e transfira (commit):
claudinei@990 132 </p>
claudinei@990 133 <pre>
claudinei@990 134 $ hg add
claudinei@990 135 $ hg status
claudinei@990 136 $ hg commit -m "Log message..."
claudinei@990 137 $ hg log
claudinei@990 138 </pre>
claudinei@990 139 <p>
claudinei@990 140 Note que você pode usar o comando <code>rollback</code> para desfazer a última
claudinei@990 141 transação. Antes de finalizar (push) as mudanças no servidor é seguro executar
claudinei@990 142 o comando pull ao menos uma vez:
claudinei@990 143 </p>
claudinei@990 144 <pre>
claudinei@990 145 $ hg pull
claudinei@990 146 $ hg push
claudinei@990 147 </pre>
claudinei@990 148 <p>
claudinei@990 149 Está feito, suas mudanças, código ou correções estão agora no servidor
claudinei@990 150 </p>
claudinei@990 151
claudinei@990 152 <h4>Comandos Úteis</h4>
claudinei@990 153 <p>
claudinei@990 154 Comandos do mercurial (hg) que podem ser usados.
claudinei@990 155 </p>
claudinei@990 156 <ul>
claudinei@990 157 <li><code>hg help</code> : Mostra uma lista completa dos comandos.</li>
claudinei@990 158 <li><code>hg rollback</code> : Desfaz a última ação (commit, pull,
claudinei@990 159 push).</li>
claudinei@990 160 <li><code>hg log &lt;package&gt;</code> : Mostra o log de um pacote.</li>
claudinei@990 161 <li><code>hg head</code> : Mostra o último log.</li>
claudinei@990 162 </ul>
claudinei@990 163
claudinei@990 164 <a name="gui"</a>
claudinei@990 165 <h2>Interface Gráfica - C/GTK, Yad, Vala/Genie e WEB/GCI</h2>
claudinei@990 166 <p>
claudinei@990 167 Há várias maneiras de criar interfáces gráficas para o usuário para a
claudinei@990 168 distribuição. No início do projeto até a versão 3.0, usamos principalmente
claudinei@990 169 o GTKDialog, o que nos permitia criar interfaces razoavelmente complexas
claudinei@990 170 em GTK, ao mesmo tempo que pudemos usar uma linguagem de script que
claudinei@990 171 era executada sem a necessidade de ser compilada. Porém, o GTKDialog
claudinei@990 172 não é mais mantido pelos desenvolvedores, e está desatualizado, então
claudinei@990 173 tivemos que mudar para o Yad para criar algumas caixas de diálogo simples.
claudinei@990 174 Para todos as ferramentas de administração, pacotes e configuração
claudinei@990 175 próprias da distribuição, agora usamos o TazPanel, que é uma interface
claudinei@990 176 WEB/CGI escrita em xHTML5 e CSS3.
claudinei@990 177 </p>
claudinei@990 178 <p>
claudinei@990 179 O Yad é simples, porém não nos permite criar interfaces muito complexas,
claudinei@990 180 então outra maneira teve de ser abordada. A vantagem de uma linguagem
claudinei@990 181 de script é o fato de não precisar ser compilada e ser codificada em
claudinei@990 182 tempo real, porém isso significa em programas que rodam com um pouco menos
claudinei@990 183 de performance. Escrever programas na Linguagem C é complexo e atrai
claudinei@990 184 menos desenvolvedores, porque linguagens de script são mais atrativas
claudinei@990 185 para aqueles que desejam contribuir, tal como o SHell Script, que é
claudinei@990 186 fácil de compreender e manter. Deste modo, com uma linguagem de programação
claudinei@990 187 script uma interface WEB/CGI ou em GTK, podemos manter nossas linhas
claudinei@990 188 mestras e atrair desenvolvedores.
claudinei@990 189 </p>
claudinei@990 190 <p>
claudinei@990 191 Há muitas linguagens que usam GTK, como Genie, Vala ou GTKaml. Mas é
claudinei@990 192 preciso manter em mente que elas não são tão populares quanto o C ou GTK
claudinei@990 193 e não são tão fáceis de aprender e usar (para interfaces simples, melhor é
claudinei@990 194 utilizar scripts SHell para tarefas corriqueiras). Pode-se usar o Vala,
claudinei@990 195 porém note o seguinte exemplo, que é o código necessário para criar uma
claudinei@990 196 simples caixa de diálogo, e possui 14 linhas de código:
claudinei@990 197 </p>
claudinei@990 198 <pre>
claudinei@990 199 #include <gtk/gtk.h>;
claudinei@990 200 int main(int argc, char *argv[])
claudinei@990 201 {
claudinei@990 202 GtkWidget *window;
claudinei@990 203
claudinei@990 204 gtk_init(&argc, &argv);
claudinei@990 205 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
claudinei@990 206 g_signal_connect (G_OBJETCT (window), "destroy",
claudinei@990 207 G_CALLBACK (gtk_main_quit), NULL);
claudinei@990 208
claudinei@990 209 gtk_widget_show(window);
claudinei@990 210 gtk_main();
claudinei@990 211 return 0;'
claudinei@990 212 }
claudinei@990 213 </pre>
claudinei@990 214 <p>
claudinei@990 215 Caso queira contribuir, e não está certo qual linguagem usar, mande uma
claudinei@990 216 mensagem para a lista de discussão. Para pequenas interface gráficas,
claudinei@990 217 utilize o TazBox como exemplo, que pode ser encontrado no repositório
claudinei@990 218 slitaz-tools, que também possui pequenas interfaces gráficas, como a
claudinei@990 219 responsável pelo logout do usuário. O primeiro utilitário do SliTaz a
claudinei@990 220 ser escrito em Linguagem C pura, com GTK, é o TazWeb, e ele pode ser
claudinei@990 221 utilizado como exemplo na utilização da função system() para incluir
claudinei@990 222 comandos do sistema em uma interface. Esta ferramente utiliza
claudinei@990 223 wget para downloads e sed para adicionar favoritos.
claudinei@990 224 </p>
claudinei@990 225 <p>
claudinei@990 226 Scripts em Yad devem seguir as linhas mestras de codificação para a
claudinei@990 227 distribuição:
claudinei@990 228 <a href="http://hg.slitaz.org/slitaz-dev-tools/raw-file/tip/tazyad/README">
claudinei@990 229 README</a> e o
claudinei@990 230 <a href="http://hg.slitaz.org/slitaz-dev-tools/raw-file/tip/tazyad/tazyad">
claudinei@990 231 código de exemplo</a>.
claudinei@990 232 </p>
claudinei@990 233
claudinei@990 234 <a name="iconv"></a>
claudinei@990 235 <h2>Implementação da função iconv()</h2>
claudinei@990 236 <p>
claudinei@990 237 O SliTaz utiliza a função iconv() fornecida pela biblioteca glibc do
claudinei@990 238 projeto GNU - alguns pacotes que necessitam da função <code>libiconv</code>
claudinei@990 239 devem usar a versão fornecida pela glibc (<code>glibc-locale</code>). Note
claudinei@990 240 que já não há mais um pacote libiconv (1.2 MB) no SliTaz.
claudinei@990 241 </p>
claudinei@990 242
claudinei@990 243 <a name="pkgs"></a>
claudinei@990 244 <h2>Pacotes Tazpkg</h2>
claudinei@990 245 <p>
claudinei@990 246 Os pacotes tazpkg no SliTaz são automaticamente criados via o
claudinei@990 247 <a href="http://cook.slitaz.org/">robô de compilação</a> e receitas
claudinei@990 248 no wok. O Livro de Receitas descreve o
claudinei@990 249 <a href="http://doc.slitaz.org/pt:cookbook:wok">uso das ferramentas</a>
claudinei@990 250 e o formato das <a href="http://doc.slitaz.org/pt:cookbook:receipt">receitas</a>.
claudinei@990 251 Informações sobre o comando cook e sobre criação de arquivos receipt são
claudinei@990 252 necessários para a criação de pacotes.
claudinei@990 253 </p>
claudinei@990 254 <p>
claudinei@990 255 Em termos de escolha de pacote, a idéia é oferecer o pacote por tarefa ou
claudinei@990 256 funcionalidade, isto é, a mais leve aplicação em seu campo e sem duplicações.
claudinei@990 257 Note que a atual seleção de pacotes não é imutável, se você souber de uma
claudinei@990 258 alternativa mais leve, com mais funcionalidades ou mais <em>sexy</em> por apenas
claudinei@990 259 alguns KB a mais, sugira na lista de discussão. Atenção redobrada é prestada
claudinei@990 260 aos pacotes do LiveCD: eles devem ser "limpos", removendo-se dependências
claudinei@990 261 desnecessárias e opções do compilador. Em geral os pacotes candidatos a fazer
claudinei@990 262 parte do LiveCD são discutidos na lista.
claudinei@990 263 </p>
claudinei@990 264 <p>
claudinei@990 265 Antes de você começar a compilar e a criar pacotes para o SliTaz, certifique-se
claudinei@990 266 que o trabalho ainda não existe na relação do wok disponível no mirror principal
claudinei@990 267 do SliTaz. Não se esqueça que os membros da lista podem te ajudar e que a
claudinei@990 268 documentação do <a href="http://doc.slitaz.org/pt:cookbook:wok">wok e ferramentas</a>
claudinei@990 269 existe para te guiar nos primeiros passos.
claudinei@990 270 </p>
claudinei@990 271
claudinei@990 272 <a name="pkgs-naming"></a>
claudinei@990 273 <h3>Nomes de Pacotes</h3>
claudinei@990 274 <p>
claudinei@990 275 Na maioria dos casos o nome do pacote é o mesmo do código fonte, exceto
claudinei@990 276 para os módulos das linguagens Python, Perl, PHP, Ruby e Lua. Por exemplo,
claudinei@990 277 o pacote que fornece o sistema de templates Kid, escrito em Python e XML,
claudinei@990 278 é nomeado: <code>python-kid</code>.
claudinei@990 279 </p>
claudinei@990 280
claudinei@990 281 <a name="website"></a>
claudinei@990 282 <h2>Gerenciamento do website e manuais</h2>
claudinei@990 283 <p>
claudinei@990 284 O website e os manuais (Manual do SliTaz, Livro de Receitas) são
claudinei@990 285 gerenciados pelo repositório mercurial, podendo ser clonados da
claudinei@990 286 seguinte maneira:
claudinei@990 287 </p>
claudinei@990 288 <pre>
claudinei@990 289 $ hg clone http://hg.slitaz.org/website
claudinei@990 290 Ou, se você tiver as permissões necessárias:
claudinei@990 291 $ hg clone http://repos.slitaz.org/website
claudinei@990 292 </pre>
claudinei@990 293
claudinei@990 294 <a name="xhtml"></a>
claudinei@990 295 <h3>Estilo para codificação de xHTML</h3>
claudinei@990 296 <p>
claudinei@990 297 As páginas nos diferentes <em>manuais</em> são codificadas em xHTML 1.0
claudinei@990 298 transitional. As cores para o corpo da página (<code>body</code>) e para
claudinei@990 299 os títulos são definidas diretamente de forma a permitir que os links
claudinei@990 300 sejam facilmente identificáveis. Os títulos de primeiro nível são usados
claudinei@990 301 apenas uma vez, no topo da página, os de segundo nível são usados para
claudinei@990 302 nomear as seções e os de terceiro e quarto nível para as subseções. Se
claudinei@990 303 uma lista é usada para os tópicos, usando âncoras para as diferentes seções,
claudinei@990 304 é posta logo no início da página, após o título da mesma.
claudinei@990 305 Parágrafos são colocados dentro das tags <code>&lt;p&gt;&lt;/p&gt;</code>.
claudinei@990 306 Para indentação, usa-se tabulações (tabs), de forma a manter-se a semântica
claudinei@990 307 e para diminuir espaço em termos de octetos (bytes). Para mostrar trechos
claudinei@990 308 de código, como o nome de um comando dentro de um parágrafo,
claudinei@990 309 <code>&lt;code&gt;</code> é o método recomendado. Para mostrar a saida
claudinei@990 310 de comandos ou comandos a serem digitados em um terminal, usa-se
claudinei@990 311 <code>&lt;pre&gt;</code>. Exemplo:
claudinei@990 312 </p>
claudinei@990 313 <pre>
claudinei@990 314 $ comando
claudinei@990 315 </pre>
claudinei@990 316 <p>
claudinei@990 317 Para mostrar texto que pode ser copiado e colado, como scripts, peças de
claudinei@990 318 código, arquivos de configuração, etc, também se usa a tag
claudinei@990 319 <code>&lt;pre&gt;</code>, em conjunto com a classe CSS chamada "script".
claudinei@990 320 Exemplo:
claudinei@990 321 </p>
claudinei@990 322 <pre class="script">
claudinei@990 323 &lt;pre class="script"&gt;
claudinei@990 324
claudinei@990 325 code...
claudinei@990 326
claudinei@990 327 &lt;/pre&gt;
claudinei@990 328 </pre>
claudinei@990 329 <p>
claudinei@990 330 Texto <em>enfatizado</em> é colocado dentro da tag <code>&lt;em&gt;</code>
claudinei@990 331 e links internos são relativos. É recomendável checar a validade do código
claudinei@990 332 xHTML por meio do <em>validador</em> online da W3C.
claudinei@990 333 </p>
claudinei@990 334
claudinei@990 335 <h2>Diff e patch</h2>
claudinei@990 336 <p>
claudinei@990 337 As utilidades <code>diff</code> e <code>patch</code> são ferramentas de linha
claudinei@990 338 de comando para criação e implementação de diferenças entre dois arquivos. Esta
claudinei@990 339 técnica é freqüentemente usada para colaboração e as mudanças feitas no arquivo
claudinei@990 340 original podem ser extraídas facilmente. Para criar um arquivo <code>diff</code>
claudinei@990 341 legível aos humanos em um simples editor de textos, você deve fornecer a opção
claudinei@990 342 <code>-u</code> :
claudinei@990 343 </p>
claudinei@990 344 <pre>
claudinei@990 345 $ diff -u file.orig file.new &gt; file.diff
claudinei@990 346 </pre>
claudinei@990 347 <p>
claudinei@990 348 Para aplicar um patch:
claudinei@990 349 </p>
claudinei@990 350 <pre>
claudinei@990 351 $ patch file.orig file.diff
claudinei@990 352 </pre>
claudinei@990 353
claudinei@990 354 <!-- End of content -->
claudinei@990 355 </div>
claudinei@990 356
claudinei@990 357 <?php include("../../lib/html/footer.pt.html"); ?>
claudinei@990 358
claudinei@990 359 </body>
claudinei@990 360 </html>