programming-guidelines.xml
author "German Poo-Caaman~o <gpoo@gnome.org>"
Wed, 15 Nov 2006 22:50:31 -0300
changeset 6 4e44e6123b42
parent 5 4ca4c0227161
child 7 00ea2985a116
permissions -rw-r--r--
Recode from latin1 to utf-8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
     1
<?xml version="1.0" encoding="ISO-8859-1"?>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
     2
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
     3
    "/usr/share/sgml/docbook/dtd/xml/4.1.2/docbookx.dtd" [
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
     4
<!ENTITY Emacs "<application>Emacs</application>">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
     5
<!ENTITY Vim "<application>Vim</application>">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
     6
<!ENTITY ChangeLog "<filename>ChangeLog</filename>">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
     7
]>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
     8
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
     9
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    10
<article class="techreport" id="index" lang="es">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    11
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    12
  <articleinfo>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
    13
    <title>Guía de programación de GNOME</title>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    14
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    15
    <authorgroup>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    16
      <author>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    17
	<firstname>Federico</firstname>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    18
	<surname>Mena Quintero</surname>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    19
	<affiliation>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    20
	  <address>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    21
	    <email>federico@gnu.org</email>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    22
	  </address>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    23
	</affiliation>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    24
      </author>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    25
      <author>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    26
	<firstname>Miguel</firstname>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    27
	<surname>de Icaza</surname>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    28
	<affiliation>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    29
	  <address>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    30
	    <email>miguel@kernel.org</email>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    31
	  </address>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    32
	</affiliation>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    33
      </author>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    34
      <author>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    35
	<firstname>Morten</firstname>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    36
	<surname>Welinder</surname>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    37
	<affiliation>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    38
	  <address>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    39
	    <email>terra@diku.dk</email>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    40
	  </address>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    41
	</affiliation>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    42
      </author>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    43
      <othercredit>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    44
	<firstname>Germ&aacute;n</firstname>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    45
	<surname>Po&oacute; Caama&ntilde;o</surname>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
    46
	<contrib>Traducción al español</contrib>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    47
	<affiliation>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    48
	  <address>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    49
	    <email>gpoo@ubiobio.cl</email>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    50
	  </address>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    51
	</affiliation>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    52
      </othercredit>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
    53
      <othercredit>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
    54
	<firstname>Lucas</firstname>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
    55
	<surname>Vieites Fari&ntilde;a</surname>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
    56
	<contrib>Revisión de la traducción al español </contrib>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
    57
	<affiliation>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
    58
	  <address>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
    59
	    <email>lucas@asixinformatica.com</email>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
    60
	  </address>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
    61
	</affiliation>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
    62
      </othercredit>
4
254f5b1f49db 2006-09-11 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 1
diff changeset
    63
      <othercredit>
254f5b1f49db 2006-09-11 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 1
diff changeset
    64
	<firstname>Sergio</firstname>
254f5b1f49db 2006-09-11 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 1
diff changeset
    65
	<surname>Villar Senin</surname>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
    66
	<contrib>Revisión de la traducción al español  </contrib>
4
254f5b1f49db 2006-09-11 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 1
diff changeset
    67
	<affiliation>
254f5b1f49db 2006-09-11 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 1
diff changeset
    68
	  <address>
254f5b1f49db 2006-09-11 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 1
diff changeset
    69
	    <email>svillar@igalia.com</email>
254f5b1f49db 2006-09-11 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 1
diff changeset
    70
	  </address>
254f5b1f49db 2006-09-11 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 1
diff changeset
    71
	</affiliation>
254f5b1f49db 2006-09-11 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 1
diff changeset
    72
      </othercredit>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    73
    </authorgroup>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    74
    <copyright>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    75
      <year>2000</year>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    76
      <holder>The Free Software Foundation</holder>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    77
    </copyright>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    78
    <copyright>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
    79
      <year>2004&mdash;2006</year>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
    80
      <holder>GNOME Foundation, respecto de la versión en español.</holder>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    81
    </copyright>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    82
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    83
    <abstract>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    84
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
    85
	Este artículo contiene varías guías y sugerencias para los
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
    86
	programadores de GNOME, así como ciertas políticas que
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
    87
	deberían seguirse cuando se escriben programas para GNOME.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    88
	Es un intento para que los programadores puedan aprender
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
    89
	acerca del proceso de desarrollo de GNOME y su filosofía.
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
    90
	GNOME es un esfuerzo de equipo, así que será útil para 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
    91
	que los programadores sepan «la forma de hacer la
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
    92
	cosas».
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    93
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    94
    </abstract>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    95
  </articleinfo>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    96
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    97
  <!-- Introduction -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    98
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    99
  <sect1 id="intro">
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   100
    <title>Introducción</title>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   101
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   102
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   103
	  GTK+, la biblioteca de interfaz de usuario básica de GNOME, nos
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   104
	  ha enseñado algunas lecciones importantes en el diseño de software.
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   105
	  El código de GTK+ es limpio, consistente, mantenible y tiene
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   106
	  sentido.  Tal código no sólo provoca placer al trabajar con el,
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   107
	  sino que además es un incentivo para las buenas prácticas de 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   108
	  programación para aquellos que quieran extenderlo y modificarlo.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   109
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   110
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   111
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   112
	  En este artículo intentamos presentar algunas sugerencias y 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   113
	  lineamientos que deberías tener en cuenta cuando escribas código
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   114
	  para el proyecto GNOME.  Presentamos algunas de las políticas
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   115
	  que deben seguirse cuando se modifica el código de otras
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   116
	  personas, usando el repositorio CVS y asegurándose de que el
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   117
	  código se ajusta para ser incluído en GNOME. También 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   118
	  presentamos información que será útil para los mantenedores
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   119
	  de paquetes.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   120
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   121
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   122
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   123
	  Además de este documento, asegúrate de leer los Estándares de 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   124
	  Programación de GNU.  Estos se encuentran disponibles en el
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   125
	  nodo info <filename>(Standards)</filename> en la documentación
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   126
	  estándar de GNU.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   127
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   128
  </sect1>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   129
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   130
  <!-- The Importance of Writing Good Code -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   131
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   132
  <sect1 id="good-code">
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   133
    <title>La importancia de escribir buen código</title>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   134
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   135
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   136
	  GNOME es un proyecto de software libre muy ambicioso y, como tal,
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   137
	  está compuesto por muchos paquetes de software que son más o menos
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   138
	  independientes el uno del otro.  Mucho del trabajo en GNOME lo 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   139
	  realizan voluntarios; programadores que vienen y se van
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   140
	  en cualquier momento y que serán capaces de dedicar
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   141
	  diferentes cantidades de tiempo al proyecto GNOME.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   142
	  Muchas personas trabajan en software libre en su tiempo libre o
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   143
	  como un pasatiempo, así, si sus responsabilidades del &lsquo;mundo
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   144
	  real&rsquo; cambian, se verá reflejado en la cantidad de trabajo que
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   145
	  dedicarán a proyectos de software libre.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   146
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   147
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   148
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   149
	  Se tarda mucho tiempo en escribir software y supone una
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   150
	  gran cantidad de trabajo. Es por esto que muchos
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   151
	  de los voluntarios de tiempo parcial no pueden comenzar 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   152
	  grandes proyectos por sí mismos; es mucho más fácil y
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   153
	  gratificante contribuir a proyectos existentes, puesto que
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   154
	  los resultados son inmediatamente visibles y usables.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   155
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   156
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   157
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   158
	  Teniendo esto en cuenta y el hecho que los programadores de
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   159
	  software libre tiene recursos escasos, concluimos que
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   160
	  para los proyectos existentes es muy importante facilitar,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   161
	  tanto como sea posible, que otras personas puedan contribuir.
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   162
	  Una forma de hacerlo es asegurándose de que los programas
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   163
	  sean fáciles de leer, entender y modificar.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   164
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   165
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   166
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   167
	  El código desordenado es difícil de leer y las personas pueden
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   168
	  perder interés si no son capaces de descifrar lo que el código
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   169
	  intenta hacer.  Además, es importante que los programadores sean
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   170
	  capaces de entender el código rápidamente, y así poder comenzar
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   171
	  a contribuir reparando fallos y extendiéndolo en un período breve
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   172
	  de tiempo.  El código fuente es una forma de comunicación, y así
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   173
	  como a alguien podría no querer leer una novela con errores
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   174
	  ortográficos y mala puntuación, los programadores deben intentar
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   175
	  escribir buen código de tal forma que sea fácil de entender y
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   176
	  modificar por otros.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   177
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   178
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   179
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   180
	  Existen algunas cualidades que son importantes en un buen 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   181
	  código y por qué son importantes para los desarrolladores
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   182
	  de software libre:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   183
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   184
      <variablelist>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   185
	<varlistentry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   186
	  <term>Limpieza</term>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   187
	  <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   188
	    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   189
		  Un código limpio es fácil de leer; permite a las
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   190
		  personas leerlo con un mínimo esfuerzo y así pueden
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   191
		  entenderlo más fácilmente.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   192
	    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   193
	  </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   194
	</varlistentry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   195
	<varlistentry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   196
	  <term>Consistencia</term>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   197
	  <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   198
	    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   199
		  El código consistente permite más fácilmente que las
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   200
		  personas entiendan como funciona el programa; cuando se
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   201
		  lee código consistente, subconcientemente uno se forma
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   202
		  un número de supuestos y expectativas acerca del 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   203
		  funcionamiento del código, de esta forma es más fácil
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   204
		  y seguro realizarle modificaciones.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   205
	    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   206
	  </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   207
	</varlistentry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   208
	<varlistentry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   209
	  <term>Extensibilidad</term>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   210
	  <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   211
	    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   212
		  El código de propósito general es más fácil de reutilizar
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   213
		  y modificar que el código demasiado específico con muchos
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   214
		  supuestos escritos directamente en el código (hardcoded).
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   215
		  Cuando alguien desea agregar una nueva característica
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   216
		  a un programa, obviamente será más fácil hacerlo si el
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   217
		  código fue diseñado para ser extensible desde el inicio.
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   218
		  El código que no fue escrito de esta forma hará que las
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   219
		  personas deban implementar hacks muy feos para poder
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   220
		  añadir características.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   221
	    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   222
	  </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   223
	</varlistentry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   224
	<varlistentry>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   225
	  <term>Corrección</term>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   226
	  <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   227
	    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   228
		  Finalmente, el código diseñado debe ser correcto para
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   229
		  que las personas pierdan menos tiempo preocupándose de
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   230
		  los errores y se ocupen  en extender las
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   231
		  características de un programa.  Los usuarios también
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   232
		  apreciarán un código correcto, ya que a nadie le gusta
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   233
		  que un programa se caiga.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   234
	    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   235
	  </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   236
	</varlistentry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   237
      </variablelist>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   238
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   239
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   240
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   241
	  En resumen, los programadores a menudo contribuyen en
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   242
	  su tiempo libre a proyectos de software libre, y aún quienes
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   243
	  contribuyen de forma regular pueden detenerse en cualquier
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   244
	  instante del tiempo, así que es muy importante que el código
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   245
	  sea bueno y les permita modificarlo facilmente.  El resultado
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   246
	  final será un mejor software al que los programadores 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   247
	  querrán extender.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   248
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   249
  </sect1>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   250
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   251
  <!-- Coding Style -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   252
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   253
  <sect1 id="code-style">
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   254
    <title>Estilo de programación</title>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   255
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   256
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   257
      &lsquo;El estilo de programación&rsquo; se refiere a la forma en 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   258
	  que se da formato al código fuente.  Para C, esto involucra
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   259
	  la forma en que se ubican las llaves, se indenta el código y
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   260
	  se utilizan los paréntesis.  GNOME tiene una mezcla de estilos
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   261
	  de programación y no se obliga el uso de ninguno de ellos.  Lo más
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   262
	  importante es que el código sea consistente dentro de un programa
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   263
	  o una biblioteca &mdash; el código con un formato desordenado
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   264
	  no es aceptable debido a que es difícil de leer.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   265
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   266
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   267
    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   268
	  Cuando escribas un nuevo programa o biblioteca, sigue un
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   269
	  estilo consistente de ubicación de llaves y de indentación.
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   270
	  Si no tienes ninguna preferencia personal de estilo, 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   271
	  recomendamos el estilo de programación del núcleo de Linux o
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   272
	  el estilo de programación de GNU.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   273
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   274
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   275
    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   276
	  Lee el nodo de info <filename>(Standards)Writing C</filename> 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   277
	  en la documentación de GNU. Luego, obtén el código fuente
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   278
	  de Linux y lee el archivo 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   279
	  <filename>linux/Documentation/CodingStyle</filename>, e
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   280
	  ignora los chistes de Linus.  Estos dos documentos te darán
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   281
	  una buena idea de nuestras recomendaciones para el código de
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   282
	  GNOME.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   283
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   284
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   285
    <!-- Indentation Style -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   286
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   287
    <sect2 id="indent">
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   288
      <title>Estilo de indentación</title>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   289
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   290
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   291
		Para el código del núcleo de GNOME preferimos el estilo
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   292
		de indentación del núcleo de Linux.  Usa tabuladores
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   293
		de 8 espacios para la indentación.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   294
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   295
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   296
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   297
		Usar tabuladores de 8 espacios para indentación proporciona
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   298
		un número de beneficios.  Permite que el código sea más
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   299
		fácil de leer, ya que la indentación se marca claramente.
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   300
		También ayuda a mantener el código ordenado
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   301
		forzando a dividir funciones en trozos más modulares y
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   302
		bien definidos &mdash; si la indentación va más allá del
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   303
		margen derecho, significa que la función está mal
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   304
		diseñada y que debiera dividirse para hacerla más modular
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   305
		o bien, repensarla.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   306
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   307
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   308
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   309
		Los tabuladores de 8 espacios para indentación también
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   310
		ayudan al diseño de funciones que encajen bien en la pantalla, 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   311
		lo cual significa que las personas puedan entender el código
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   312
		sin tener que desplazarse atrás y adelante para entenderlo.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   313
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   314
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   315
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   316
		Si usas &Emacs;, entonces puedes seleccionar el estilo de
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   317
		indentación del núcleo de Linux incluyendo en el 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   318
		archivo <filename>.emacs</filename> lo siguiente:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   319
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   320
	<programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   321
(add-hook 'c-mode-common-hook
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   322
          (lambda ()
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   323
            (c-set-style "k&amp;r")
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   324
            (setq c-basic-offset 8)))</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   325
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   326
	En los nuevos Emacs o con el nuevo cc-mode, puedes ser capaz
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   327
	de hacerlo más simple con:
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   328
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   329
	<programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   330
(add-hook 'c-mode-common-hook
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   331
          (lambda ()
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   332
            (c-set-style "linux")))</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   333
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   334
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   335
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   336
		El estilo de indentación de GNU es el predeterminado para
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   337
		&Emacs;, así que no es necesario agregar nada en el 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   338
		archivo <filename>.emacs</filename> para habilitarlo.
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   339
		Si deseas seleccionarlo explícitamente, sustituye
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   340
		«gnu» por «linux» en el ejemplo anterior.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   341
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   342
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   343
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   344
		Si usas &Vim;, entonces puedes seleccionar el estilo
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   345
		de indentación del núcleo de Linux incluyendo el 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   346
		siguiente fragmento en el archivo 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   347
		<filename>.vimrc</filename>:
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   348
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   349
	<programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   350
set ts=8
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   351
if !exists("autocommands_loaded")
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   352
  let autocommands_loaded = 1
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   353
  augroup C
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   354
      autocmd BufRead *.c set cindent
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   355
  augroup END
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   356
endif</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   357
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   358
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   359
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   360
		Como alternativa puedes seleccionar el estilo de 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   361
		indentación de GNU en &Vim; usando lo siguiente en
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   362
		el archivo <filename>.vimrc</filename>:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   363
	<footnote>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   364
	  <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   365
	    Gracias a Tomas &Ouml;gren por proporcionar este código.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   366
	  </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   367
	</footnote>:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   368
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   369
	<programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   370
augroup C
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   371
   autocmd BufRead *.c set cinoptions={.5s,:.5s,+.5s,t0,g0,^-2,e-2,n-2,p2s,(0,=.5s formatoptions=croql cindent shiftwidth=4 tabstop=8
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   372
augroup END</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   373
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   374
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   375
      <note>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   376
	<para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   377
	  Si sabe personalizar el estilo de indentación en otros
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   378
	  editores populares, por favor háganoslo saber y así podemos
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   379
	  expandir este documento.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   380
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   381
      </note>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   382
    </sect2>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   383
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   384
    <!-- Naming Conventions -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   385
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   386
    <sect2 id="naming">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   387
      <title>Convenciones de nombres</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   388
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   389
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   390
		Es importante seguir una buena convención de nombres para
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   391
		los símbolos de los programas.   Es específicamente 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   392
		importante para las bibliotecas, ya que no debería
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   393
		ensuciarse el espacio de nombres global &mdash; es muy
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   394
		molesto cuando una biblioteca tiene símbolos nombrados
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   395
		desordenadamente que chocan con nombres que pueda
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   396
		querer usar en sus programas.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   397
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   398
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   399
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   400
		Los nombres de las funciones deberían ser de la forma
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   401
		<function>modulo_submodulo_operacion</function>, por ejemplo,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   402
		<function>gnome_canvas_set_scroll_region</function> o
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   403
		<function>gnome_mime_get_keys</function>.  Esta convención
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   404
		elimina las colisiones de nombres de símbolos entre módulos.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   405
		Es muy importante para las bibliotecas.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   406
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   407
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   408
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   409
		Los símbolos deben tener nombres descriptivos.  Como Linus
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   410
		dice, no use <function>cntusr()</function>, sino que use
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   411
		<function>count_active_users()</function>.  Esto permite
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   412
		que el código sea más fácil de leer y casi se auto
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   413
		documenta.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   414
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   415
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   416
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   417
		Intente usar las mismas convenciones de nombre que tienen
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   418
		GTK+ y las bibliotecas de GNOME:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   419
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   420
	<itemizedlist>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   421
	  <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   422
	    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   423
		  Los nombres de las funciones en minúsculas, con líneas
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   424
		  de subrayado para separar palabras, tal como:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   425
	      <function>gnome_canvas_set_scroll_region()</function>,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   426
	      <function>gnome_mime_get_keys()</function>.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   427
	    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   428
	  </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   429
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   430
	  <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   431
	    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   432
		  Las macros y las enumeraciones en mayúsculas, con líneas
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   433
		  de subrayado para separar palabras, tal como:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   434
	      <symbol>GNOMEUIINFO_SUBTREE()</symbol> para una macro y
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   435
	      <symbol>GNOME_INTERACT_NONE</symbol> para un valor 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   436
		  enumerado.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   437
	    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   438
	  </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   439
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   440
	  <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   441
	    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   442
		  Los nombres de tipos y estructuras usan una mezcla de
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   443
		  mayúsculas y minúsculas, tal como:
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   444
	      <symbol>GnomeCanvasItem</symbol>,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   445
		  <symbol>GnomeIconList</symbol>.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   446
	    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   447
	  </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   448
	</itemizedlist>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   449
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   450
	Al utilizar líneas de subrayado para separar palabras el
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   451
	código estará menos apretado y facilita la edición, ya
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   452
	que puede usar las secuencias de teclas que permiten
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   453
	navegar entre palabras más rápidamente en cualquier editor.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   454
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   455
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   456
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   457
		Si estás escribiendo una biblioteca, entonces puedes necesitar
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   458
		exportar símbolos que serán usados sólo dentro de la
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   459
		biblioteca.   Por ejemplo, dos de los archivos objeto que
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   460
		componen la biblioteca <filename>libfoo.so</filename> pueden
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   461
		requerir acceder a símbolos ubicados en el otro archivo,
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   462
		pero se tiene la intención que éstos símbolos no sean 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   463
		utilizados desde los programas de usuario.  En este caso,
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   464
		coloca una línea de subrayado antes del nombre de la
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   465
		función y haz que la primera palabra siga la convención
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   466
		estándar módulo/submódulo.  Por ejemplo, podrías tener
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   467
		una función llamada
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   468
	<function>_foo_internal_frobnicate()</function>.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   469
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   470
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   471
      <!-- Consistency in Naming -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   472
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   473
      <sect3 id="consist">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   474
	<title>Consistencia entre nombres</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   475
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   476
	<para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   477
	  Es importante que las variables se nombren de manera 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   478
	  consistente.  Por ejemplo, un módulo que manipula una
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   479
	  lista puedes elegir nombrar las variables que mantienen
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   480
	  un puntero a la lista como «<symbol>l</symbol>», 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   481
	  por elegancia y simplicidad.  Sin embargo, es importante que
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   482
	  un módulo que manipula widgets y tamaños no use variables
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   483
	  llamadas «<symbol>w</symbol>» tanto para
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   484
	  widgets y anchos («width») (como en valores de ancho/alto);
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   485
	  esto podría hacer que el código sea inconsistente
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   486
	  y difícil de leer.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   487
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   488
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   489
	<para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   490
	  Por supuesto, nombre muy cortos y elegantes solamente deberían
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   491
	  ser usados para variables locales de funciones.
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   492
	  Nunca llame una variable global «<symbol>x</symbol>»; use 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   493
	  un nombre más largo que indique lo que significa.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   494
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   495
      </sect3>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   496
    </sect2>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   497
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   498
    <!-- Cleanliness -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   499
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   500
    <sect2 id="clean">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   501
      <title>Limpieza</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   502
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   503
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   504
		El código de GNOME debe ser tan limpio como sea posible.
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   505
		Esto implica usar un estilo de indentación consistente
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   506
		y una buena convención para nombrar símbolos, como se
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   507
		ha indicado anteriormente.  Esto también implica lo
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   508
		siguiente.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   509
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   510
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   511
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   512
		Aprender el uso correcto de la palabra reservada
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   513
		<symbol>static</symbol>.
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   514
		<emphasis>No</emphasis> declarar todos los símbolos como
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   515
		globales.  Esto tiene la ventaja de poder usar nombres
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   516
		más cortos dentro de las funciones en un sólo archivo
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   517
		fuente, ya que no son globalmente visibles y por
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   518
		consiguiente no necesitas emplear el prefijo 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   519
		módulo/submódulo.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   520
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   521
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   522
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   523
		Aprender el uso correcto de la palabra reservada
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   524
		<symbol>const</symbol>.  Úsala consistentemente,
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   525
		así permitirás al compilador que atrape muchos
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   526
		errores estúpidos.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   527
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   528
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   529
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   530
		Si tienes una función que retorna un puntero a
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   531
		un dato interno que se supone que el usuario
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   532
		no debe liberar, deberías usar el modificador
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   533
		<symbol>const</symbol>.  Este avisará al usuario si intenta 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   534
		hacer alguna operación incorrecta, por ejemplo:
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   535
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   536
	<programlisting>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   537
const char *gnome_mime_get_info (const char *info);</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   538
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   539
		El compilador avisará si el usuario intenta liberar
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   540
		la cadena retornada.  Esto puede atrapar muchos
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   541
		errores.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   542
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   543
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   544
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   545
		Si tienes «valores mágicos» en el programa o
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   546
		biblioteca, usa macros que los definan en vez de usarlos
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   547
		directamente en el código:
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   548
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   549
	<programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   550
/* Amount of padding for GUI elements */
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   551
#define GNOME_PAD          8
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   552
#define GNOME_PAD_SMALL    4
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   553
#define GNOME_PAD_BIG      12</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   554
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   555
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   556
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   557
		Si tienes una lista de valores posibles para una variable,
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   558
		no uses macros para ellas, usa enum para darle 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   559
		un nombre de tipo &mdash; esto permite disponer de nombres
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   560
		simbólicos en un depurador.  Además, no uses 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   561
		«int» para almacenar un valor enumerado; usa
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   562
		el tipo enum.  Esto le permite al compilador atrapar
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   563
		los errores por tí, permitiéndole al depurador mostrar los
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   564
		valores apropiados y hacer obvios los valores que una 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   565
		variable puede tomar. A continuación un ejemplo:
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   566
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   567
	<programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   568
/* Shadow types */
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   569
typedef enum {
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   570
	GTK_SHADOW_NONE,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   571
	GTK_SHADOW_IN,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   572
	GTK_SHADOW_OUT,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   573
	GTK_SHADOW_ETCHED_IN,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   574
	GTK_SHADOW_ETCHED_OUT
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   575
} GtkShadowType;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   576
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   577
void gtk_frame_set_shadow_type (GtkFrame *frame, GtkShadowType type);</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   578
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   579
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   580
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   581
	Si define un conjunto de valores para un campo de bits, haz
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   582
	lo siguiente:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   583
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   584
	<programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   585
<![CDATA[
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   586
/* Update flags for items */
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   587
enum {
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   588
	GNOME_CANVAS_UPDATE_REQUESTED  = 1 << 0,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   589
	GNOME_CANVAS_UPDATE_AFFINE     = 1 << 1,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   590
	GNOME_CANVAS_UPDATE_CLIP       = 1 << 2,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   591
	GNOME_CANVAS_UPDATE_VISIBILITY = 1 << 3,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   592
	GNOME_CANVAS_UPDATE_IS_VISIBLE = 1 << 4
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   593
};]]></programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   594
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   595
	Esto hace más fácil modificar la lista de valores y menos 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   596
	propenso a error que especificando los valores a mano.  También
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   597
	permite usar estos valores como símbolos en un depurador.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   598
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   599
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   600
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   601
		No escribas código ofuscado, intenta que sea espartano. 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   602
		Para clarificar una expresión, no uses más paréntesis que 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   603
		los necesarios.  Usa espacios antes de los paréntesis y
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   604
		después de las comas y también alrededor de los operadores
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   605
		binarios.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   606
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   607
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   608
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   609
		No escribas hacks en el código.  En vez de escribir un 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   610
		hack feo, reescribe el código para que quede limpio,
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   611
		extensible y mantenible.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   612
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   613
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   614
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   615
		Asegúrate de que el código compila absolutamente sin ningún
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   616
		aviso del compilador.  Esto te ayudará a atrapar errores
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   617
		estúpidos.  Usa los prototipos de las funciones en los
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   618
		archivos de encabezados de forma consistente.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   619
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   620
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   621
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   622
		Dentro de GNOME puedes usar la macro de Autoconf 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   623
        <symbol>GNOME_COMPILE_WARNINGS</symbol> en el archivo
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   624
        <filename>configure.in</filename>.  Esto permitirá contar
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   625
		con un buen conjunto de avisos del compilador de una manera
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   626
		portable.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   627
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   628
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   629
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   630
		Comenta el código.  Coloca comentarios antes de
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   631
		cada función para decir que hace.  No digas cómo lo hace
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   632
		a menos que sea absolutamente necesario; debería ser 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   633
		obvio al leer el código.  Si no lo fuera, entonces
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   634
		puedes desear reescribirla hasta que sea fácil de 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   635
		entender.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   636
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   637
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   638
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   639
		Cuando documentes las funciones de la API de una biblioteca,
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   640
		sigue las directrices indicadas en el archivo
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   641
        <filename>gnome-libs/devel-docs/api-comment-style.txt</filename>.
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   642
		Esto permite que el código fuente pueda proporcionar documentación
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   643
		en línea, que posteriormente se extrae mediante el sistema
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   644
        <application>gtk-doc</application> para crear un manual DocBook
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   645
	  	de forma automática.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   646
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   647
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   648
      <!-- Portability considerations -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   649
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   650
      <sect3 id="portability">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   651
	<title>Consideraciones de portabilidad</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   652
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   653
	<para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   654
	  Se construye GNOME en muchas plataformas diferentes.
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   655
	  Se puede asumir que serán plataformas más o menos tipo Unix;
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   656
	  hasta el momento GNOME no ha sido portado a sistema no-Unix,
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   657
	  así que se puede asumir que los servicios estándares de 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   658
	  Unix estarán disponibles.<footnote>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   659
	    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   660
		  ¿Servicios estándar de Unix? Por supuesto que estamos
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   661
		  bromeando.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   662
	    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   663
	  </footnote>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   664
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   665
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   666
	<para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   667
	  Recuerda que el mundo no es tu propio equipo con GNU/Linux;
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   668
	  las gente realmente usa otros tipos de máquinas.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   669
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   670
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   671
	<para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   672
	  Intenta no usar extensiones específicas de
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   673
	  <application>GCC</application> debido a que éstas no 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   674
	  funcionarán con otros compiladores.  Si realmente debes
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   675
	  hacer uso de tal cosa, ve la forma en que se hace
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   676
	  en <application>Glib</application> con el conjunto de
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   677
	  macros G_GNUC; asegúrate también de incluir código
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   678
	  que funcione con compiladores ISO C. Si sólo tienes
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   679
	  disponible <application>GCC</application>, aprende a usar
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   680
	  las opciones <option>-ansi -pedantic</option> que
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   681
	  permiten probar código sospechoso.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   682
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   683
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   684
	<para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   685
	  Recuerda que algunas plataformas no disponen de
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   686
	  <application>GCC</application> o que
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   687
	  <application>GDB</application> puede ser inusable en ellos,
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   688
	  y se querrán usar otros compiladores y depuradores.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   689
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   690
      </sect3>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   691
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   692
      <!-- GTK+-related Issues -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   693
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   694
      <sect3 id="gtk">
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   695
	<title>Tópicos relacionados con GTK+</title>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   696
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   697
	<para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   698
	  GTK+ permite hacer mucha magia y ofuscación con manejadores
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   699
	  de señal, pasar cerraduras y conjuntos de datos.  Si te
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   700
	  encuentras utilizando muchos 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   701
	  <function>gtk_object_set_data()</function> en un mismo lugar,
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   702
	  o estas pasando estados de forma extraña a través de manejadores
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   703
	  de señales, reescribe el código.  Si necesitas adjuntar muchos
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   704
	  datos a un objeto en particular, entonces es un buen candidato
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   705
	  para una nueva clase derivada, que no sólo hará al código
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   706
	  más limpio, sino que también lo hará más extensible.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   707
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   708
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   709
	<para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   710
      Mucha de la heurística en manejadores de eventos complicadas
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   711
	  a menudo se pueden reemplazar limpiando el código a través
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   712
	  de una máquina de estados.  Esto es útil cuando se quieren
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   713
	  implementar cosas truculentas como selección y comportamientos
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   714
	  de arrastrado, y hará al código más fácil de depurar y extender.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   715
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   716
      </sect3>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   717
    </sect2>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   718
  </sect1>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   719
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   720
  <!-- Correctness and Robustness -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   721
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   722
  <sect1 id="robust">
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   723
    <title>Corrección y robustez</title>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   724
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   725
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   726
	  Es extremadamente importante que el código de GNOME sea
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   727
	  correcto y robusto.  Esto significa que el código debería hacer
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   728
	  lo que se espera que haga y debería manejar bien las condiciones
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   729
	  de excepción.  Aunque esto pueda parecer obvio, esta sección
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   730
	  dará algunas ideas para asegurar la corrección de tu código
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   731
	  de GNOME.  Esto es muy importante, ya que los usuarios esperan
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   732
	  y merecen un software confiable que se ejecute correctamente
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   733
	  y que no se caiga.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   734
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   735
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   736
    <!-- Ensuring Consistency -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   737
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   738
    <sect2 id="ensure">
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   739
      <title>Cómo asegurar la consistencia</title>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   740
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   741
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   742
	  	<!-- FIXME: Buscar un mejor termino para "assertion" -->
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   743
		Utiliza las macros de aserción de Glib para asegurarte
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   744
		que el estado de un programa es consistente.  Estas macros
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   745
		ayudan a localizar errores muy rápidamente y se gastará 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   746
		mucho menos tiempo en el depurado si se emplean de forma
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   747
		generosa y consistente.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   748
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   749
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   750
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   751
		Inserta verificaciones de sanidad en el código en puntos
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   752
		importantes como es el inicio de funciones públicas, al
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   753
		final de código que realiza una búsqueda que siempre
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   754
		debe ser exitosa y en cualquier lugar donde
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   755
		el rango de valores calculados es importante.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   756
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   757
    </sect2>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   758
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   759
    <!-- Assertions and Preconditions -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   760
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   761
    <sect2 id="assert">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   762
      <title>Aserciones y precondiciones</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   763
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   764
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   765
		Las aserciones y precondiciones ayudan a asegurar que
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   766
		el estado de un programa es consistente.  Glib proporciona
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   767
		macros para colocar aserciones y precondiciones en el
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   768
		código.  Deberías usarlas libremente; a cambio podrás
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   769
		localizar errores muy rápidamente y ocuparás menos tiempo
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   770
		rastreando errores con el depurador.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   771
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   772
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   773
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   774
		Existen macros de Glib para precondiciones, las cuales
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   775
		emiten un mensaje cuando una condición falla y retornan
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   776
		de la función desde donde fueron llamadas.  Debieran ser
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   777
		usadas en el inicio de las funciones.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   778
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   779
	<variablelist>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   780
	  <varlistentry>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   781
	    <term><function>g_return_if_fail
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   782
		(condición)</function></term>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   783
	    <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   784
	      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   785
			Retorna desde la línea actual de la función si la
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   786
		<symbol>condición</symbol> es falsa.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   787
	      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   788
	    </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   789
	  </varlistentry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   790
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   791
	  <varlistentry>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   792
	    <term><function>g_return_val_if_fail (condición,
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   793
		valor)</function></term>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   794
	    <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   795
	      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   796
			Retorna el <symbol>valor</symbol> indicado desde
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   797
			la función actual si la <symbol>condición</symbol>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   798
			es falsa.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   799
	      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   800
	    </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   801
	  </varlistentry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   802
	</variablelist>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   803
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   804
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   805
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   806
		También existen macros para aserciones.  Estas emitirán
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   807
		un mensaje cuando una condición falle y llamará a la
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   808
		función <function>abort(3)</function> para terminar el
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   809
		programa.  Debieran ser usadas para asegurarse la
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   810
		consistencia para códigos internos.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   811
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   812
	<variablelist>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   813
	  <varlistentry>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   814
	    <term><function>g_assert (condición)</function></term>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   815
	    <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   816
	      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   817
			Aborta el programa si la <symbol>condición</symbol>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   818
			es falsa.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   819
	      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   820
	    </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   821
	  </varlistentry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   822
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   823
	  <varlistentry>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   824
	    <term><function>g_assert_not_reached ()</function></term>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   825
	    <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   826
	      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   827
			Aborta el programa si se llama a la macro.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   828
	      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   829
	    </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   830
	  </varlistentry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   831
	</variablelist>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   832
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   833
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   834
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   835
		Estas funciones debieran emplearse para imponer 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   836
		precondiciones en el código y verificar su corrección
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   837
		&mdash; piensa en ellas como verificaciones de sanidad
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   838
		en los programas.  Debieras usarlas libremente como
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   839
		asistencia para atrapar los errores rápidamente; una
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   840
		vez que el programa se encuentre completamente depurado,
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   841
		puedes compilarlo con estas macros deshabilitadas y así
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   842
		evitar añadirle sobrecarga al momento de ejecutarlos.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   843
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   844
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   845
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   846
		Las macros <function>g_return_*()</function> debieran 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   847
		emplearse al inicio de las funciones públicas de las
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   848
		bibliotecas, para asegurarse de que los argumentos que se pasan
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   849
		a ellas sean correctos y tengan un rango válido.  Si
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   850
		una función no retorna valor (por ejemplo, retorna
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   851
		<symbol>void</symbol>), debieras usar 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   852
		<function>g_return_if_fail()</function>.  En caso contrario,
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   853
		debiera usar <function>g_return_val_if_fail()</function> 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   854
		para retornar un valor &lsquo;seguro&rsquo;.  Cuando
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   855
		se invoca una función de biblioteca que usa estas macros 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   856
		con un argumento incorrecto , se producirá un
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   857
		mensaje de error y continuará la ejecución.  El
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   858
		programa cliente podrá tener algún sobresalto, hacer
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   859
		nada o caerse, pero al menos sabrá 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   860
		<emphasis>dónde</emphasis> se le ha pasado un valor 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   861
		incorrecto a la función.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   862
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   863
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   864
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   865
	  	La macro <function>g_assert()</function> debiera usarse para
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   866
		asegurar la consistencia interna de una biblioteca o
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   867
		programa.  En vez de retornar de la función y continuar
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   868
		la ejecución si la condición falla, 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   869
		<function>g_assert()</function> producirá en mensaje de error
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   870
		e inmediatamente abortará el programa.  Esto es para
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   871
		evitar que el programa continúe ejecutándose en un
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   872
		estado inconsistente.  Debieras usar esta macro para
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   873
		asegurarte de que el programa o biblioteca está usando
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   874
		valores internos sanos.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   875
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   876
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   877
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   878
		La macro <function>g_assert_not_reached()</function> se
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   879
		usa para marcar el lugar en el código que nunca 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   880
		debiera producirse.  Por ejemplo, si tienes una 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   881
		cláusula <symbol>switch</symbol> y piensas que manejas
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   882
		todos los valores posibles en las etiquetas
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   883
		<symbol>case</symbol>, entonces debieras colocar 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   884
		<function>g_assert_not_reached()</function> en la 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   885
		etiqueta <symbol>default</symbol> para asegurarte de que
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   886
		el código nunca llegue allá (podría significar que
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   887
		ha perdido algún valor o que el programa se encuentra
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   888
		incorrecto).
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   889
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   890
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   891
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   892
		Estas macros ayudan a encontrar errores más rápido 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   893
		a través de avisos que se producen tan pronto como
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   894
		el programa alcanza un estado incosistente.  Úsalos
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   895
		frecuentemente y encontrarás muchos errores más 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   896
		fácilmente.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   897
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   898
    </sect2>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   899
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   900
    <!-- GTK+-related Issues -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   901
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   902
    <sect2 id="assert-gtk">
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   903
      <title>Tópicos relacionados con GTK+</title>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   904
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   905
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   906
		Debe ser cuidadoso cuando escribas manejadores de eventos 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   907
		&mdash; asegurate de que los eventos son manipulados en
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   908
		las situaciones apropiadas.  Es necesario asegurarse de
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   909
		que los manejadores de señales tengan los prototipos
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   910
		correctos.  Esto es muy importante.  Recuerda que no
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   911
		todos los prototipos de manejadores de señal se parecen
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   912
		a lo siguiente:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   913
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   914
	<programlisting>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   915
static void my_handler (GtkWidget *widget, gpointer data);</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   916
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   917
	Por ejemplo, los manejadores de eventos tienen un parámetro
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   918
	extra de evento y retornan <symbol>gint</symbol>.  Revisa los
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   919
	archivos de encabezado de GTK+ cuando necesites verificarlo.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   920
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   921
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   922
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   923
		Asegúrate que el programa trata de una forma apropiada
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   924
		todas las acciones generadas por el usuario.  Recuerda
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   925
		que el usuario puede cerrar una ventana en cualquier 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   926
		momento a través del administrador de ventanas; tenlo
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   927
		presente y escribe el código necesario para manejar esta
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   928
		situación.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   929
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   930
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   931
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   932
		Si verificas los modificadores de teclas con una máscara
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   933
		de estado de eventos, por ejemplo,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   934
		<keycombo><keycap>Control</keycap><keycap>F10</keycap></keycombo>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   935
		escribe lo siguiente:
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   936
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   937
	<programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   938
  guint modifiers;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   939
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   940
  modifiers = gtk_accelerator_get_default_mod_mask ();
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   941
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   942
  if (event-&gt;keysym == GDK_F10
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   943
      &amp;&amp; (event-&gt;state &amp; modifiers) == GDK_CONTROL_MASK) {
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   944
          do_something ();
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   945
  }</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   946
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   947
	Esto es necesario; si en vez de lo anterior escribes:
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   948
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   949
	<programlisting>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   950
  if (event-&gt;keysym == GDK_F10 &amp;&amp; event-&gt;state == GDK_CONTROL_MASK)</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   951
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   952
		entonces el programa no funcionará correctamente si el
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   953
		usuario tiene, por ejemplo, activada la tecla 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   954
		<keycap>NumLock</keycap> &mdash; <keycap>NumLock</keycap> 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   955
		también es un modificador, y si está activado, entonces
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   956
		la máscara de estado del evento no será como se espera
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   957
		en el segundo ejemplo.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   958
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   959
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   960
      <!-- Visuals and Colormaps -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   961
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   962
      <sect3 id="visuals">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   963
	<title>Vistas y mapas de color</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   964
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   965
	<para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   966
	  <!-- FIXME: Buscar un término adecuado para "Visual" en
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   967
	       vez de "vista" -->
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   968
	  Algunos usuarios utilizan tarjetas de vídeo avanzadas
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   969
	  (por ejemplo, SGIs y Suns) que soportan múltiples vistas
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   970
	  simúltaneamente.  Una vista define la representación en memoria
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   971
	  que usa un dispositivo de hardware para almacenar los 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   972
	  contenidos de una imagen.  Muchas tarjetas de vídeo de
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   973
	  PC soportan sólo una vista a la vez, pero el hardware
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   974
	  avanzado puede tener diferentes ventanas y pixmaps en
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   975
	  diferentes vistas simultáneamente.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   976
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   977
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   978
	<para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   979
	  Es importante entender las vistas y mapas de colores si
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   980
	  vas a escribir código que crea ventanas y pixmaps por tus
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   981
	  propios medios, en vez de utilizar las funciones de alto
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   982
	  nivel como GnomeCanvas y GnomePixmap.  Para mayor información,
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   983
	  lea el manual de programación de Xlib.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   984
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   985
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   986
	<para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   987
	  En general, sólo necesitas recordar que la vista y el mapa
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   988
	  de colores de un área de dibujo debe coincidir con los de 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   989
	  otra área de dibujo si deseas copiar un trozo desde la
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   990
	  primera área de dibujo a la segunda.  Si no son las mismas,
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   991
	  podrías obtener el mensaje «BadMatch error» del servidor X y
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   992
	  tu aplicación muy probablemente abortará su ejecución.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   993
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   994
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   995
	<para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   996
	  Si creas un contexto gráfico (GC) y lo compartes para pintar
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   997
	  en varias áreas de dibujo, asegúrate que todas ellas tengan
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   998
	  la misma vista y mapa de colores que fue definido para el 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
   999
	  GC.  Lo mismo se aplica si quieres copiar un área desde un
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1000
	  pixmap a una ventana; ambos deben tener la misma vista y mapa
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1001
	  de colores.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1002
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1003
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1004
	<para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1005
	  Si no estás seguro de que tu código lo hace correctamente, 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1006
	  pregunta educadamente, en una de las listas de correo de 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1007
	  desarrollo de GNOME, si alguien puede realizar una prueba con
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1008
	  una tarjeta de video que soporta esta característica.  Dicha 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1009
	  persona sabrá como arreglar el problema y te dirá al respecto.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1010
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1011
      </sect3>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1012
    </sect2>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1013
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1014
    <!-- Unix-related Issues -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1015
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1016
    <sect2 id="unix">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1017
      <title>Temas relacionados con Unix</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1018
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1019
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1020
		Verifica los valores de retorno de <emphasis>todas</emphasis>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1021
		las llamadas al sistema que el programa realice.  Recuerda
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1022
		que muchas de las llamadas al sistema pueden ser 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1023
		interrumpidas (por ejemplo, la llamada retorna 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1024
	    <symbol>-1</symbol> y <symbol>errno</symbol> será definido a 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1025
	    <symbol>EINTR</symbol>) y deben reiniciarse.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1026
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1027
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1028
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1029
		No asumas, por ejemplo, que la función 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1030
		<function>write(2)</function> escribirá el buffer completo
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1031
		de una vez; tienes que verificar el valor de retorno, el cual
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1032
		indica el número de bytes escritos e intenta nuevamente 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1033
		hasta que sea cero.  Si el valor de retorno es 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1034
	    <symbol>-1</symbol>, recuerda
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1035
		verificar el valor de errno y manejar el error 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1036
		apropiadamente.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1037
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1038
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1039
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1040
		Si la aplicación llama a la función <function>fork(2)</function>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1041
		sin llamar a <function>execve(2)</function>, recuerda que
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1042
		el proceso hijo no puede hacer llamadas X.  Normalmente se
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1043
		puede diagnosticar este problema a través de un oscuro
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1044
		mensaje de error de Xlib.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1045
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1046
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1047
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1048
		Lee el libro «Advanced programming in the Unix 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1049
		environment», de Richard Stevens, para aprender acerca de
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1050
		todos estos teassertmas y asegúrate que tus programas usan
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1051
		la API de Unix de forma correcta.  Si no deseas asegurarte
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1052
		del uso correcto de las llamadas Unix, pregunta en las
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1053
		listas de correo.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1054
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1055
    </sect2>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1056
  </sect1>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1057
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1058
  <!-- Security Considerations -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1059
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1060
  <sect1 id="security">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1061
    <title>Consideraciones de seguridad</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1062
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1063
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1064
	  La seguridad es un tema complejo y en esta sección no se
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1065
	  puede explicar ni de lejos todo lo relacionado.
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1066
	  Intentaremos indicar las situaciones más comunes donde tus
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1067
	  programas deben interesarse por la seguridad.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1068
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1069
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1070
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1071
	  Es muy fácil crear hoyos de seguridad a través de la creación
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1072
	  incorrecta de archivos temporales en <filename>/tmp</filename>.
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1073
	  Debes garantizar que los archivos que usarás no existen al 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1074
	  momento de su creación.  Usar un nombre de archivo «único»
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1075
	  e «impredecible» no es suficiente; debes garantizar que el archivo
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1076
	  con ese nombre no será creado por alguien más entre el tiempo
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1077
	  en que se determina el nombre y el tiempo en que es efectivamente
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1078
	  creado (básicamente los ataques involucran que un tercero
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1079
	  cree un enlace simbólico al archivo que ellos quieren 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1080
	  sobreescribir).
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1081
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1082
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1083
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1084
	  Afortunadamente, esto es fácil de hacer.  Usa el siguiente trozo
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1085
	  de código:
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1086
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1087
      <programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1088
	char *filename;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1089
	int fd;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1090
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1091
	do {
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1092
		filename = tempnam (NULL, "foo");
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1093
		if (!filename) {
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1094
			fprintf (stderr, "Could not create temporary file name\n");
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1095
			exit (EXIT_FAILURE);
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1096
		}
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1097
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1098
		fd = open (filename, O_CREAT | O_EXCL | O_TRUNC | O_RDWR, 0600);
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1099
		free (filename);
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1100
	} while (fd == -1);</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1101
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1102
      Recuerde liberar <symbol>filename</symbol> usando la función
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1103
	  <function>free()</function> y llamar a las funciones 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1104
	  <function>close()</function> y <function>unlink()</function> 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1105
	  con el archivo respectivo cuando haya terminado; aquí
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1106
	  liberamos <symbol>filename</symbol> con <function>free()</function>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1107
	  inmediatamente y así no causará una pérdida de memoria.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1108
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1109
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1110
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1111
	  Si deseas usar la biblioteca estándar de E/S, puede usar la
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1112
	  función <function>fdopen()</function> para transformar el
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1113
	  descriptor de archivo en <symbol>FILE *</symbol>, o puedes
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1114
	  usar la función <function>tmpfile()</function> para hacerlo 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1115
	  en un solo paso.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1116
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1117
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1118
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1119
	  Intenta no usar buffers de tamaño fijo.  Los buffers de tamaño
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1120
	  fijo para cadenas constituyen los típicas fuentes de hoyos
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1121
	  explotables que pueden llegar a oscuros errores.  Si definitivamente
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1122
	  debes usar buffers de tamaño fijo para cadenas, usa la función
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1123
      <function>g_snprintf()</function> para especificar el tamaño 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1124
	  máximo del buffer.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1125
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1126
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1127
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1128
	  Glib proporciona la, muy conveniente, función 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1129
      <function>g_strdup_printf()</function>, la cual funciona como
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1130
      <function>sprintf()</function> pero automáticamente 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1131
	  localizará un buffer con el tamaño correcto.  El valor de retorno
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1132
	  de esta función debiera ser liberada usando
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1133
	  <function>g_free()</function>.  A menudo es más conveniente de
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1134
	  usar que <function>g_snprintf()</function>, ya que esta no 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1135
	  limita el tamaño de las cadenas que un programa puede manipular.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1136
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1137
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1138
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1139
	  Si deseas concatenar un grupo de cadenas, puedes usar la función
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1140
      <function>g_strconcat()</function>, la cual recibe una lista
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1141
	  variable de cadenas y un puntero a <symbol>NULL</symbol>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1142
	  como último argumento.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1143
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1144
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1145
    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1146
      <emphasis>Bajo ninguna circunstancia</emphasis> crees un 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1147
	  programa GTK+ con setuid root.  Las bibliotecas de GTK+ y
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1148
	  GNOME son grandes y complejas y no han tenido auditorías
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1149
	  de seguridad.  En cualquier caso, no debieras querer que 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1150
	  una pieza tan grande código sea setuid root.  Si definitivamente
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1151
	  requieres usar privilegios de root para algo, escribe un 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1152
	  programa que sea la interfaz de usuario como un proceso
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1153
	  normal, sin privilegios y crea un programa nexo que
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1154
	  tenga setuid y se encargue de realizar la operaciones
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1155
	  «peligrosas».  Además, notifica a las listas
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1156
	  de correo de desarrollo de GNOME indicando que requieres
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1157
	  que alguien realice una auditoría de seguridad a tu
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1158
	  programa nexo.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1159
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1160
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1161
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1162
	  En general, si no estás seguro si puedes crear un riesgo de
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1163
	  seguridad, pregunte en las listas de correo de desarrollo
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1164
	  de GNOME.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1165
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1166
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1167
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1168
	  Puedes leer más sobre temas de seguridad que debieras encontrar
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1169
	  cuando programes una aplicación Unix en el documento
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1170
      <ulink URL="http://www.fish.com/security/murphy.html">«Murphy's
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1171
      Law and Computer Security»</ulink>, de Wietse Wenema.  
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1172
	  Hay otros documentos de seguridad en <ulink
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1173
      URL="http://www.fish.com/security">el sitio fish.com</ulink>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1174
	  que podrías encontrar interesante.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1175
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1176
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1177
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1178
	  Puedes encontrar muchas otras guías útiles para escribir programas
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1179
	  seguros en <ulink
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1180
      url="http://www.dwheeler.com/secure-programs">«Secure
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1181
      Programming for Linux and Unix HOWTO»</ulink>.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1182
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1183
  </sect1>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1184
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1185
  <!-- Performace -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1186
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1187
  <sect1 id="performance">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1188
    <title>Rendimiento</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1189
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1190
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1191
	  No leas esta sección hasta que estés seguro que tu programa está
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1192
	  correcto, por ejemplo, cuando estés seguro que funciona 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1193
	  correctamente y no tiene errores.  Es más importante que
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1194
	  el código sea correcto a que sea rápido.  Un programa lento
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1195
	  pero correcto es mucho mejor a uno rápido pero con errores.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1196
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1197
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1198
    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1199
	  Si quieres optimizar tu programa, el primer paso es determinar
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1200
	  un perfil al programa ejecutándolo con datos de la vida real
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1201
	  y recopilar puntos calientes que requieran optimización.
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1202
	  Esto ayudará a determinar los lugares que necesitan optimizarse.
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1203
	  Es importante que nunca adelantes la optimización si no tienes
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1204
	  una idea clara sobre donde está el problema.  Podrías terminar 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1205
	  perdiendo el tiempo en agilizar una rutina que no es la causa 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1206
	  del cuello de boteLla y como resultado podrías terminar ofuscando 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1207
	  dicha rutina.  Esto podría reducir la legibilidad y mantenibilidad
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1208
	  del código sin ganancia visible en velocidad.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1209
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1210
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1211
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1212
	  Un código sencillo es bueno porque es fácil de entender y 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1213
	  mantener.  Si puedes escribir código simple que además sea
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1214
	  potente y rápido, tanto mejor.  Si tienes un trozo de código
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1215
	  inteligente pero que no es fácil de seguir, entonces documéntalo
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1216
	  para que las personas no lo estropeen accidentalmente.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1217
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1218
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1219
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1220
	  No escribas código que sea difícil de leer y mantener por el
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1221
	  sólo hecho de hacerlo más rápido.  En cambio, prefiere un algoritmo
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1222
	  agradable y claro e impleméntalo claramente.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1223
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1224
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1225
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1226
	  Hacer un buen trabajo en el caso general es a menudo mejor que
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1227
	  tener muchos casos especiales.  Sólo provee casos especiales
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1228
	  cuando se han identificado puntos débiles en el programa.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1229
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1230
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1231
    <!-- List Management in Glib -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1232
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1233
    <sect2 id="list">
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1234
      <title>Administración de listas en Glib</title>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1235
    	<para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1236
		  Evita emplear construcciones que terminen ralentizando
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1237
		  los algoritmos.  Si usas
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1238
		  <function>g_list_insert_sorted()</function> o
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1239
    	  <function>g_list_append()</function> sin ningún cuidado,
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1240
		  fácilmente puedes tener un algoritmo que se ejecuta en
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1241
		  tiempo proporcional a O(n<superscript>2</superscript>).  
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1242
		  Normalmente puedes crear listas hacia atrás, usando
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1243
    	  <function>g_list_prepend()</function>, e invirtiéndola
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1244
		  cuando hayas terminado usando 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1245
		  <function>g_list_reverse()</function>.  Esta es una
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1246
		  operación O(n).  Y si necesitas una lista ordenada, puedes
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1247
		  crearla de la misma forma (hacia atrás) y una vez terminado,
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1248
		  usar <function>g_list_sort()</function>.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1249
    	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1250
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1251
    	<para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1252
		  Si necesitas una lista ordenada en todo momento, puede ser
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1253
		  mejor emplear un estructura de árbol o un híbrido 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1254
		  lista/árbol.  Si necesitas construir una lista añadiendo
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1255
		  nodos a ella, mantén un puntero al final de la lista
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1256
		  y ve cambiándola según sea apropiado; esto te permitirá
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1257
		  insertar un nodo al inicio o al final en un tiempo constante.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1258
    	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1259
    </sect2>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1260
  </sect1>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1261
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1262
  <!-- Localization -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1263
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1264
  <sect1 id="l10n">
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1265
    <title>Localización</title>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1266
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1267
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1268
	  Se pretende que GNOME pueda ejecutarse en distintas localidades
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1269
	  y lenguajes, y los programas debieran tener esto en cuenta.  No
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1270
	  tienes que localizar los programas, sólo debes permitir que éstos
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1271
	  sean traducibles y localizables.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1272
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1273
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1274
    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1275
	  Debes recordar que los diferentes idiomas humanos tienen diferentes
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1276
	  gramáticas, así que no debieras suponer la forma de estructurar
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1277
	  cada frase.  Esto es importante, por ejemplo, cuando se 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1278
	  construyen cadenas a partir de trozos separados.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1279
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1280
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1281
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1282
	  La concatenación normalmente no es la forma correcta de construir
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1283
	  una cadena para que sea presentada al usuario.  Normalmente terminan
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1284
	  en mensajes que no pueden ser traducidos correctamente en todos
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1285
	  los idiomas.  En vez de concatenar, intenta usar
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1286
	  <function>g_strdup_printf()</function>, por ejemplo:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1287
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1288
      <programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1289
	/* Una forma no muy buena */
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1290
	char *message = g_strconcat (_("Hello, "),
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1291
				     name,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1292
				     _(", would you like fries with that?"),
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1293
				     NULL);
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1294
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1295
	/* Una mejor forma */
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1296
	char *message = g_strdup_printf (_("Hello, %s, would you like fries with that?"),
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1297
					 name);</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1298
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1299
	  Esto permitirá al traductor mover %s donde corresponda según
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1300
	  lo requiera la gramática del idioma en el cual trabaja.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1301
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1302
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1303
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1304
	  Recuerda que no todos los idiomas forman los plurales añadiendo
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1305
	  una «s» a las palabras.  Además, las estructuras de
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1306
	  frases pueden cambiar con los plurales.  Por ejemplo,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1307
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1308
      <programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1309
	/* Una forma no muy buena */
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1310
	printf (_("%d happy monkey%s bouncing on the bed."),
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1311
		num_monkeys,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1312
		(num_monkeys > 1) ? "s", "");
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1313
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1314
	/* Una mejor forma */
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1315
	printf ((num_monkeys > 1)
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1316
		? _("%d happy monkeys bouncing on the bed."),
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1317
		: _("%d happy monkey bouncing on the bed."));</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1318
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1319
	  Se requiere de esta forma ya que el plural se forma de 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1320
	  distintas maneras en distintos idiomas, y la estructura
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1321
	  completa de la frase puede cambiar.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1322
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1323
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1324
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1325
	  Si el programa muestra fechas u horas, usa la función
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1326
      <function>strftime()</function> para darles formato como
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1327
	  cadenas.  Esto se encargará de usar la representación
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1328
	  adecuada de fecha y hora de acuerdo a la definición local
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1329
	  del usuario.  Además, si el programa debe generar una
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1330
	  representación visual de un calendario, recuerda que en
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1331
	  algunos países se considera como primer día de la semana
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1332
	  el domingo y no el lunes.  El programa debiera permitir 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1333
	  ambas formas de calendarios.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1334
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1335
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1336
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1337
	  Si el programa usa medidas, asegúrate de permitir tanto
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1338
	  el sistema métrico decimal como el sistema imperial (o anglosajón).
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1339
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1340
  </sect1>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1341
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1342
  <!-- Binary Compatibility -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1343
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1344
  <sect1 id="binary">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1345
    <title>Compatibilidad binaria en las bibliotecas</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1346
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1347
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1348
	  Para bibliotecas estables y ya liberadas, es muy importante
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1349
	  intentar preservar la compatibilidad binaria en las revisiones
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1350
	  mayores del código.  Los desarrolladores de bibliotecas deben
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1351
	  intentar no alienar a los usuarios realizando de forma frecuente
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1352
	  cambios que sean binariamente incompatibles en bibliotecas que
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1353
	  son de producción.  Por supuesto, en aquellas bibliotecas que se
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1354
	  encuentran en desarrollo o están etiquetadas como no finalizadas
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1355
	  puedes realizar tantos cambios como se necesiten.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1356
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1357
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1358
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1359
	  Una biblioteca típicamente exporta un número de interfaces.  Estas
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1360
	  incluyen nombres de rutinas, las firmas o prototipos de estas
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1361
	  rutinas, variables globales, estructuras, campos de estructura
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1362
	  (tanto los tipos como su significado), el significado de los
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1363
	  valores enumerados y la semántica de los archivos que la
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1364
	  biblioteca crea.  Mantener compatibilidad binaria significa que
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1365
	  estas interfaces no cambiarán.  Puedes añadir nuevas interfaces
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1366
	  sin romper la compatibilidad binaria, pero no puedes cambiar
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1367
	  las ya existentes, ya que los programas antiguos no se ejecutarán
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1368
	  correctamente.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1369
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1370
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1371
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1372
	  Esta sección incluye un número de ideas acerca de como lograr
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1373
	  que el código de una biblioteca sea compatible con sus
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1374
	  versiones anteriores.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1375
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1376
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1377
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1378
	  Mantener la compatibilidad binaria significa que los programas
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1379
	  y archivos objetos que fueron compilados con una versión 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1380
	  previa del código continuarán funcionando sin recompilar aún
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1381
	  cuando la biblioteca sea reemplazada. Es posible encontrar
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1382
	  una descripción detallada en el nodo info
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1383
      <filename>(libtool)Interfaces</filename> de la documentación
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1384
	  de GNU libtool.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1385
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1386
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1387
    <!-- Private Information in Structures -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1388
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1389
    <sect2 id="private">
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1390
      <title>Información privada en las estructuras</title>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1391
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1392
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1393
		En el sistema GNOME es una tarea muy común crear un
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1394
		nuevo <structname>GtkObject</structname> para crear
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1395
		una estructura cuyo primer miembro corresponde a la 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1396
		clase de la cual hereda este objeto y posteriormente
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1397
		un número de variables de instancia que se añaden 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1398
		después del primer miembro.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1399
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1400
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1401
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1402
		Este esquema de diseño normalmente lleva a que el código
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1403
		sea difícil de actualizar y cambiar: si se quiere
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1404
		extender un objeto donde se necesita mantener su estado 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1405
		interno, los programadores necesitan recurrir a varios 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1406
		hacks para mantener el mismo tamaño de las estructuras.  
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1407
		Esto hace difícil agregar nuevos campos a las estructuras 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1408
		públicas sin romper la compatibilidad binaria, ya que 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1409
		los campos de la estructura pueden cambiar y el tamaño 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1410
		de las estructuras pueden variar.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1411
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1412
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1413
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1414
		Por consiguiente, se sugiere una estrategia que puedan
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1415
		adoptar los desarrolladores en el momento de crear nuevos
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1416
		objetos.  Esta estrategia asegurará la compatibilidad
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1417
		binaria y al mismo tiempo mejorará la legibilidad y 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1418
		mantenibilidad del código.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1419
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1420
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1421
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1422
		La idea es que, para un objeto dado, el programador
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1423
		debiera crear tres archivos: el primero que contiene
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1424
		el contrato entre la biblioteca y el usuario (esto
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1425
		es el archivo de encabezado que se instala en el 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1426
		sistema); el segundo contiene la implementación del
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1427
		objeto; y el tercer archivo contiene la definición 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1428
		de la estructura para los campos privados o internos
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1429
		que no necesitan estar en la estructura pública.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1430
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1431
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1432
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1433
		La API pública de la estructura podría incluir un
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1434
		puntero a un elemento privado, el cual podría 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1435
		apuntar a los datos privado de la instancia. Las
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1436
		rutinas de implementación podría dereferenciar
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1437
		este punto para acceder a los datos privados; por
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1438
		supuesto, el puntero apunta a la estructura que se
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1439
		localiza privadamente.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1440
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1441
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1442
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1443
		Por ejemplo, imagina que se crea el objeto GnomeFrob. 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1444
		La implementación del widget será dividido en tres 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1445
		archivos:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1446
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1447
	<table>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1448
	  <title>Archivos que muestran el widget de ejemplo 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1449
	  GnomeFrob</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1450
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1451
	  <tgroup cols="2">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1452
	    <thead>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1453
	      <row>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1454
		<entry>Archivo</entry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1455
		<entry>Contenido</entry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1456
	      </row>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1457
	    </thead>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1458
	    <tbody>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1459
	      <row>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1460
		<entry><filename>gnome-frob.h</filename></entry>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1461
		<entry>API pública de GnomeFrob</entry>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1462
	      </row>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1463
	      <row>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1464
		<entry><filename>gnome-frob.c</filename></entry>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1465
		<entry>Implementación del objeto Gnomefrob</entry>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1466
	      </row>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1467
	      <row>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1468
		<entry><filename>gnome-frob-private.h</filename></entry>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1469
		<entry>Datos privados de la implementación de GnomeFrob.
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1470
			Debieras querer usar esto si planea compartir los
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1471
			datos privados a través de varios archivos C. Si
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1472
			limitas el uso de la información privada a sólo un
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1473
			archivo, no necesita esto, ya que al definir la
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1474
			estructura en el archivo de implementación se logrará
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1475
			el mismo efecto.</entry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1476
	      </row>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1477
	    </tbody>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1478
	  </tgroup>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1479
	</table>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1480
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1481
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1482
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1483
	<example>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1484
	  <title>Ejemplo de la API pública de <filename>gnome-frob.h</filename>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1485
	  </title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1486
	  <programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1487
typedef struct _GnomeFrob GnomeFrob;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1488
typedef struct _GnomeFrobPrivate GnomeFrobPrivate;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1489
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1490
struct _GnomeFrob {
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1491
       GtkObject parent_object;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1492
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1493
       int  public_value;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1494
       GnomeFrobPrivate *priv;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1495
} GnomeFrob;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1496
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1497
GnomeFrob *gnome_frob_new (void);
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1498
void       gnome_frob_frobate (GnomeFrob *frob);</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1499
	</example>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1500
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1501
	<example>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1502
	  <title>Ejemplo de 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1503
	  <filename>gnome-frob-private.h</filename></title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1504
	  <programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1505
typedef struct {
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1506
        gboolean frobbed;
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1507
} GnomeFrobPrivate;</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1508
	</example>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1509
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1510
	<example>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1511
	  <title>Ejemplo de la implementación de 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1512
	  <filename>gnome-frob.c</filename>.</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1513
	  <programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1514
void gnome_frob_frobate (GnomeFrob *frob)
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1515
{
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1516
        g_return_if_fail (frob != NULL);
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1517
	g_return_if_fail (GNOME_IS_FROB (frob));
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1518
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1519
	frob->priv->frobbed = TRUE;
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1520
}</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1521
	</example>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1522
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1523
		Fíjese en el uso de prototipos de estructura: esto permite que
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1524
		el compilador realice más verificaciones en tiempo de
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1525
		compilación respecto a los tipos que estan siendo empleados.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1526
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1527
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1528
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1529
		Este esquema es útil en algunas situaciones, particularmente
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1530
		en el caso en el cual vale la pena almacenar un puntero
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1531
		extra para una instancia del objeto.  Si esto no fuera
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1532
		posible, el programador necesitaría recurrir a otros
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1533
		artilugios para evitar este problema.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1534
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1535
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1536
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1537
		El propósito de tener un archivo de encabezado privado
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1538
		extra para las estructuras privadas es permitir que las
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1539
		clases derivadas usen esta información.  Por supuesto,
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1540
		una buena práctica de programación indicaría que debiera
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1541
		proveerse de interfaces o métodos de acceso precisamente
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1542
		para que el programador no tenga que lidiar con 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1543
		estructuras privadas.  Se debiera intentar alcanzar un 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1544
		balance entre buena práctica y pragmatismo cuando se
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1545
		crean estructuras privadas y métodos de acceso públicos.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1546
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1547
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1548
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1549
		Podrían aparecer algunos problemas, por ejemplo, cuando
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1550
		se ha enviado un versión del código y que está siendo
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1551
		ampliamente usado y se desea extenderlo.  Hay dos 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1552
		soluciones para esto.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1553
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1554
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1555
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1556
		La primera opción es encontrar un campo puntero en la
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1557
		estructura pública que pueda hacerse privada y 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1558
		reemplazar el puntero a la parte privada de la 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1559
		estructura.  Esto preserva el tamaño de la estructura
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1560
		ya que, para los propósitos de GNOME, se puede
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1561
		asumir que los punteros son todos del mismo tamaño.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1562
		Se puede hacer que este campo apunte a la parte privada
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1563
		de la estructura que será ubicada por la función que
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1564
		originalmente creaba la estructura pública.  Es
4
254f5b1f49db 2006-09-11 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 1
diff changeset
  1565
		importante que este campo no sea llamado
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1566
		<structfield>private</structfield>, se trata de
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1567
		una palabra reservada de C++ y creará problemas cuando
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1568
		el archivo de encabezado sea usado desde programas
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1569
		fuentes C++ &mdash; mejor llámalo 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1570
		<structfield>priv</structfield>.  Por supuesto, este
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1571
		tipo de cambios sólo funcionará si el antiguo campo
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1572
		puntero solamente era usado para propósitos internos;
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1573
		si los usuarios de la biblioteca habían tenido acceso
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1574
		a dicho campo para cualquier propósito, será necesario
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1575
		buscar otro campo o buscar una solución diferente.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1576
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1577
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1578
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1579
		Si la estructura original fue derivada de
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1580
	<structname>GtkObject</structname> y no hay campos punteros
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1581
	que puedan ser reemplazados, puedes usar la facilidad
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1582
	de datos de objetos de GTK+.  Esto permite asociar punteros
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1583
	a datos arbitrarios a objetos.  Usa la función
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1584
	<function>gtk_object_set_data()</function> para adjuntar
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1585
	valores o estructuras a un objeto y cuando requieras usarlos
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1586
	la función <function>gtk_object_get_data()</function> 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1587
	permitirá recuperar dichos valores.  Esto puede ser empleado
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1588
	para adjuntar una estructura privada a un objeto GTK+.
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1589
	Esto no es tan eficiente como el enfoque anterior, pero podría
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1590
	no importar para el dominio particular de la aplicación.  Si
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1591
	los datos serán accedidos frecuentemente, se pueden usar
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1592
	quarks en vez de cadenas para agregar y obtenerlos a través
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1593
	de las funciones
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1594
	<function>gtk_object_set_data_by_id()</function> y
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1595
	<function>gtk_object_get_data_by_id()</function>, 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1596
	respectivamente.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1597
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1598
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1599
    </sect2>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1600
  </sect1>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1601
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1602
  <!-- Modifying Other People's Code -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1603
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1604
  <sect1 id="modify">
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1605
    <title>Cómo modificar el código de otros</title>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1606
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1607
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1608
	  GNOME es un proyecto de equipo, así las contribuciones de
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1609
	  código a programas de otras personas siempre son apreciadas.
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1610
	  Sigue los siguientes lineamientos cuando modifiques el código
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1611
	  de otra persona.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1612
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1613
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1614
    <!-- General Etiquette -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1615
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1616
    <sect2 id="etiquette">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1617
      <title>Etiqueta general</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1618
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1619
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1620
		Siga el mismo estilo de indentación usado en el código 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1621
		original.  El código original perdurará durante más tiempo
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1622
		que el que le pueda dedicar, mantener las 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1623
		contribuciones consistentes respecto a la indentación
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1624
		es más importante que forzar su estilo de indentación
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1625
		en el código.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1626
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1627
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1628
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1629
		Aunque sus parches pueden implementar una 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1630
		funcionalidad muy llamativa, es muy molesto para el 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1631
		autor tener que reindentar el código antes de aplicar
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1632
		un parche al código principal.  Así, si el código
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1633
		original luce como:
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1634
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1635
      <programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1636
int
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1637
sum_plus_square_of_indices (int *values, int nvalues)
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1638
{
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1639
	int i, total;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1640
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1641
	total = 0;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1642
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1643
	for (i = 0; i &lt; nvalues; i++)
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1644
		total += values[i] + i * i;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1645
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1646
	return total;
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1647
}</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1648
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1649
	entonces no agregues una función que luce como:
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1650
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1651
	<programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1652
int sum_plus_cube_of_indices(int *values, int nvalues) {
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1653
  int i,total;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1654
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1655
  total=0;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1656
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1657
  for (i=0;i&lt;nvalues;i++)
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1658
    total+=values[i]+i*i*i;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1659
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1660
  return total;
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1661
}</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1662
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1663
	En el segundo ejemplo, la indentanción y ubicación de las
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1664
	llaves no coincide con el código original, no hay espacios 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1665
	alrededor de los operadores y el código no se parecerá
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1666
	al original.  Sigue el estilo de programación del autor
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1667
	original del programa y los parches que envías tendrán una mejor
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1668
	oportunidad de ser aceptados.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1669
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1670
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1671
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1672
		No repares errores con artilugios o hacks rápidos; repáralo
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1673
		correctamente.  Tampoco añadas características como hacks o
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1674
		con código que no sea extensible; es mejor rehacer el 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1675
		código original para que sea extensible y luego agrega
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1676
		la nueva característica, utilizando el código como 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1677
		estructura.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1678
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1679
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1680
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1681
		La limpieza de código siempre es bienvenida; si encuentras
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1682
		trozos de código feos y sucios en GNOME, será muy
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1683
		apreciado si envías parches que hagan el código más
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1684
		agradable y fácil de mantener.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1685
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1686
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1687
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1688
		Como siempre, asegúrate de que el código que contribuye compila
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1689
		sin ningún tipo de aviso, que tenga los prototipos correctos
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1690
		y que sigan las directrices de este documento.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1691
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1692
    </sect2>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1693
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1694
    <!-- Documenting Your Changes -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1695
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1696
    <sect2 id="document">
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1697
      <title>Cómo documentar los cambios</title>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1698
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1699
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1700
		GNOME utiliza los archivos &ChangeLog; estándar de GNU para
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1701
		documentar los cambios al código.  Cada cambio que 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1702
		efectúes a un programa <emphasis>debe</emphasis> ser
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1703
		acompañado por una registro en el &ChangeLog;.  Esto
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1704
		permite a las personas leer la historia de cambios 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1705
		del programa de una manera sencilla.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1706
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1707
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1708
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1709
		Si usas &Emacs;, puede agregar las líneas al 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1710
		&ChangeLog; presionando «C-x 4 a».
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1711
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1712
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1713
      <note>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1714
	<para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1715
		Si conoces la forma de realizarlos para otros editores
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1716
		populares, agradeceremos que nos lo hagas saber para
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1717
		expandir este documento.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1718
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1719
      </note>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1720
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1721
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1722
	Cada registro en el &ChangeLog; tiene un forma general:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1723
	<programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1724
1999-04-19  J. Random Hacker  &lt;jrandom@foo.org&gt;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1725
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1726
	* foo.c (some_function): Changed the way MetaThingies are
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1727
	frobnicated.  We now use a hash table instead of a linked list to
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1728
	look MetaThingies up.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1729
	(some_other_function): Support the MetaThingies hash table by
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1730
	feeding it when necessary
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1731
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1732
	* bar.c (another_function): Fixed bug where it would print "Take
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1733
	me to your leader" instead of "Hello, World".
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1734
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1735
1999-04-18  Johnny Grep  &lt;grep@foobar.com&gt;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1736
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1737
	* baz.c (ugly_function): Beautified by using a helper function.</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1738
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1739
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1740
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1741
		Si agregas una nueva función a una biblioteca, escribe
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1742
		la referencia necesaria y la documentación de programación.
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1743
		Puedes escribir una referencia a la documentacion 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1744
		en línea usando el formato de comentarios descrito en
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1745
		<filename>gnome-libs/devel-docs/api-comment-style.txt</filename>.
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1746
		Si usas &Emacs;,
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1747
		<filename>gnome-libs/tools/gnome-doc/gnome-doc.el</filename>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1748
		provee un acelerador que puede ser empleado para añadir
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1749
		una plantilla de documentación al programa.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1750
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1751
    </sect2>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1752
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1753
    <!-- Changing Code on CVS -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1754
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1755
    <sect2 id="change-cvs">
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1756
      <title>Cómo actualizar en CVS</title>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1757
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1758
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1759
		Si tienes acceso de escritura en el repositorio CVS de GNOME,
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1760
		debes seguir algunas políticas adicionales.  Ya que estás
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1761
		trabajando en la copia maestra de los fuentes, debes tener
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1762
		especial cuidado.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1763
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1764
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1765
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1766
		Si estás reparando algo en un programa que está en el CVS
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1767
		o si estás añadiendo una funcionalidad allí, y si no has
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1768
		estado trabajando en dicho programa por un período largo
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1769
		de tiempo, pregunta al autor original antes de aplicar
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1770
		sus parches.  Generalmente está bien formular estas
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1771
		preguntas en la lista de correo
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1772
		<filename>gnome-devel-list</filename>.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1773
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1774
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1775
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1776
		Una vez que el autor del programa te indique como un
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1777
		&lsquo;contribuyente frecuente&rsquo;, puedes comenzar 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1778
		aplicar los parches sin previo consentimiento. Si
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1779
		quieres aplicar una reorganización mayor del código,
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1780
		debieras preguntar primero.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1781
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1782
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1783
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1784
		Algunos módulos en el CVS tienen rama estable y de
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1785
		desarrollo.  Normalmente el desarrollo debiera ir
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1786
		en la rama HEAD en el CVS, y la rama estable debiera
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1787
		mantenerse separadamente.  Generalmente no se añaden
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1788
		nuevas características a las rama estable; sólo
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1789
		se reparan errores.  Repara el error a la rama estable
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1790
		y pregunta al autor principal sobre la política para
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1791
		mezclar parches en la rama de desarrollo; algunos
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1792
		autores prefieren hacerlo por lotes, mientras hay otros
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1793
		que prefieren mezclarlos inmediatamente.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1794
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1795
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1796
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1797
		Si trabajas en una característica experimental que
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1798
		podría estropear mucho código, crea una rama en el CVS
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1799
		y realiza los cambios allí.  No los mezcles en la rama
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1800
		principal de desarrollo hasta que te encuentres
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1801
		razonablemente seguro que funcionará correctamente y que
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1802
		se integrará bien dentro del resto del código.  El uso de
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1803
		una rama para trabajo en características experimentales
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1804
		te permitirá evitar interrumpir el trabajo de otros
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1805
		desarrolladores.  Pregunte al autor principal antes de
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1806
		mezclar tu rama y traer sus cambios a la parte principal 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1807
		del árbol.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1808
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1809
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1810
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1811
		Como siempre, agrega un registro en el &ChangeLog; 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1812
		cuando realices un cambio.  Algunos autores tienen la
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1813
		política de rechazar, correctamente, los cambios que 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1814
		no tienen tal registro.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1815
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1816
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1817
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1818
		Algunas veces existen diferentes políticas para los módulos,
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1819
		verifica si el módulo contiene un archivo
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1820
        <filename>README.CVS</filename>.  Si es así, lee ese archivo
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1821
		antes de realizar cambios.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1822
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1823
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1824
      <!-- Branches and Tags -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1825
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1826
      <sect3 id="branches">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1827
	<title>Ramas y marcas</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1828
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1829
	<para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1830
	  Tenemos una convención para nombrar las ramas y marcas o
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1831
	  puntos de una rama en el repositorio de CVS de GNOME. 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1832
	  Las marcas deben ser definidas después que se libera cada
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1833
	  nueva version y deben ser de la forma
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1834
	  «MODULE_MAJOR_MINOR_MICRO», por ejemplo,
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1835
	  «GNOME_LIBS_1_0_53».  Los puntos de una rama
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1836
	  deben ser de la forma «MODULE_BRANCH_ANCHOR», 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1837
	  como en «GNOME_LIBS_1_0_ANCHOR».  Finalmente, 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1838
	  una rama raíz en este punto debiera ser de la forma
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1839
	  «module-branch», por ejemplo, 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1840
	  «gnome-libs-1-0».  Usa esta convención cuando
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1841
	  crees marcas, puntos de una rama y ramas.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1842
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1843
      </sect3>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1844
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1845
      <!-- Additional CVS Policies -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1846
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1847
      <sect3 id="cvs-policies">
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1848
	<title>Políticas adicionales del CVS</title>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1849
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1850
	<para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1851
	  CVS no proporciona un manera preconstruida para renombrar archivos
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1852
	  o moverlos a otros directorios.  Debiera planificar 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1853
 	  cuidadosamente el árbol del repositorio de tal forma que evite
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1854
	  mover o renombrar archivos.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1855
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1856
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1857
	<para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1858
	  En el caso que debas mover o renombrar un archivo en el CVS,
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1859
	  <emphasis>NO EJECUTES</emphasis> «cvs remove»
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1860
	  y luego «cvs add».  Si lo haces, los archivos
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1861
	  «nuevos» perderán la capacidad de seguir su
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1862
	  historial de cambios, ya que desde el punto de vista de CVS
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1863
	  serán archivos completamente nuevos en su revisión
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1864
	  inicial.  Un objetivo del repositorio CVS de GNOME es 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1865
	  poder seguir la historia de los fuentes de manera 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1866
	  precisa desde el inicio.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1867
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1868
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1869
	<para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1870
	  <emphasis>Por favor</emphasis>, pregunte al mantenedor
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1871
	  del CVS, esto es, una persona conocida con acceso shell
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1872
	  a la máquina con CVS, para realizar la cirugía necesaria
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1873
	  para mover los archivos por ti.  Esto requiere 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1874
	  conocimiento de la forma en que funciona CVS y debe ser
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1875
	  hecho muy cuidadosamente.  La recuperación de un error de
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1876
	   «cvs add/remove» es una tarea muy desagradable;
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1877
	  Si mueves archivo en esta forma equivocada, un mantenedor
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1878
	  del CVS, quien tendrá que ir a reparar y realizar el trabajo
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1879
	  sucio, reclamará las penas del infierno.  Así es que mejor
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1880
	  pregunta por una persona que pueda mover los archivos por
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1881
	  ti.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1882
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1883
      </sect3>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1884
    </sect2>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1885
    
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1886
  </sect1>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1887
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1888
  <!-- Maintaining a Package -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1889
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1890
  <sect1 id="maintain">
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1891
    <title>Cómo mantener un paquete</title>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1892
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1893
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1894
	  Un mantenedor de paquete es una persona que se preocupa de
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1895
	  liberar versiones, integrar cambios de otras personas y,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1896
	  en general, ser responsable de un paquete.  Durante el
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1897
	  período de vida de un paquete, éste puede cambiar de 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1898
	  mantenedores, por ejemplo, una persona que pierde interés
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1899
	  o que ya no puede dedicarle tiempo suficiente como mantenedor.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1900
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1901
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1902
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1903
	  En conformidad con los Estándares de programación de GNU, GNOME
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1904
	  usa GNU Autoconf para manejar la portabilidad  y GNU Automake
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1905
	  para crear makefiles.  Automake hace especialmente fácil
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1906
	  construir paquetes correctos, así que si eres un mantenedor
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1907
	  de paquetes, debieras aprender como usarlo.  Autoconf y 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1908
	  Automake tienen muchas áreas truculentas, así que siéntete
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1909
	  libre de pedir ayuda en las listas de desarrollo de GNOME
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1910
	  si tienes preguntas sobre la forma correcta de construir
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1911
	  makefiles para tu paquete.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1912
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1913
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1914
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1915
	  Un número de personas regularmente contribuye con traducciones
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1916
	  localizadas de los catálogos de mensajes en los paquetes de
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1917
	  GNOME.  Para mantener las traducciones actualizadas tanto como
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1918
	  sea posible, los mantenedores deben coordinarse con los 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1919
	  traductores para que estos últimos puedan actualizar las
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1920
	  traducciones a tiempo cuando se va a liberar una nueva 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1921
	  versión del paquete.  Una buena forma de notificar a los
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1922
	  traductores consiste en enviar un mensaje a
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1923
      <email>gnome-i18n@gnome.org</email> con suficientes
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1924
	  días de anticipación.  Esto les permitirá actualizar sus
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1925
	  respectivas traducciones a tiempo para puedan ser incluidas
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1926
	  en la siguiente versión liberada.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1927
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1928
  </sect1>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1929
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1930
  <!-- Memory Leaks Agenda -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1931
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1932
  <sect1 id="memory-leak">
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1933
    <title>¿Por qué preocuparse por la pérdida de memoria?</title>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1934
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1935
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1936
	  Échale un vistazo a la lista de errores de Mozilla y una cosa es
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1937
	  clara: el nuevo código que entra a Mozilla no es (o no ha sido)
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1938
	  verificado suficientemente por pérdida de memoria y problemas
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1939
	  de acceso.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1940
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1941
  
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1942
    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1943
	  Las pérdidas de memoria son malas por varias razones:
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1944
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1945
      <itemizedlist>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1946
	<listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1947
	  <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1948
		Se comerá el área de intercambio lentamente. A la larga tu
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1949
		programa, o hasta tu máquina sucumbirán.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1950
          </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1951
          <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1952
		Nadie quiere que su programa o biblioteca adquiera la 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1953
		reputación de ser una porquería sólo porque uno ha sido un
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1954
		vago.  Déjaselo a las personas en Redmond.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1955
		</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1956
	</listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1957
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1958
	<listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1959
	  <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1960
		Ocultan el mal uso de la memoria.  Si olvidas liberar la
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1961
		memoria, no hay forma de atrapar las lecturas y
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1962
		escrituras a esos trozos de memoria.  Si, posteriormente,
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1963
		reparas la pérdida, una parte completamente distinta
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1964
		del programa podría fallar.
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1965
      </para>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1966
	</listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1967
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1968
	<listitem>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1969
      <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1970
		Cuando se usan verificadores automáticos de memoria,
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1971
		nadie quiere ver 600 problemas, de los cuales 500
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1972
		se encuentran en las bibliotecas de soporte. Lo que
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1973
		deseas saber es que estaba todo limpio antes que comenzara
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1974
	    el caos, y por lo tanto, esos problemas te corresponde a ti
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1975
		arreglarlos.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1976
	  </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1977
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1978
	  <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1979
		Este es uno de los problemas de Mozilla actualmente: 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1980
		pierde memoria sin parar así que ¿cómo vas a saber si has 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1981
	    contribuido al problema?
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1982
          </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1983
	</listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1984
      </itemizedlist>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1985
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1986
 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1987
    <sect2 id="memory-advice">
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1988
      <title>Algunos consejos contra la pérdida de memoria.</title>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1989
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1990
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1991
        <itemizedlist>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1992
          <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1993
	    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1994
	      Usa «<symbol>const</symbol>» donde sea posible (para 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1995
		  punteros obviamente).
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1996
        </para>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1997
	    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1998
  	      Si un argumento es «<symbol>const</symbol>», entonces 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  1999
		  indudablemente la función llamada no liberará la memoria por 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2000
		  ti.
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2001
        </para>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2002
	    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  2003
		  Si el tipo de resultado de una función es 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  2004
		  «<symbol>const</symbol>», entonces
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2005
		  claramente no eres responsable por liberarlo. 
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  2006
		  <emphasis>Probablemente</emphasis> lo será para un resultado
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  2007
		  distinto de «<symbol>const</symbol>» (que no sea un entero 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2008
		  o algo similar).
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2009
        </para>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2010
	    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  2011
		  Fíjate en que, desafortunadamente, esto no funciona muy bien
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2012
		  con los objetos que cuentan referencias.  Funciona bien
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2013
		  con cadenas.
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2014
        </para>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2015
	    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2016
		  Dado que C usa llamadas por valor, no tiene sentido
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  2017
		  aplicar «<symbol>const</symbol>» a tipos 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2018
		  <symbol>int</symbol>, <symbol>double</symbol> y similares.
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2019
         </para>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2020
	  </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2021
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2022
	  <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2023
	    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2024
	      <emphasis>Documenta las responsabilidades.</emphasis>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2025
            </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2026
	    
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2027
	    <itemizedlist>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2028
	      <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2029
		<para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  2030
			 Si una función toma la propiedad de un objeto/referencia,
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  2031
			 sé explícito acerca de ello.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2032
                </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2033
	      </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2034
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2035
	      <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2036
		<para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  2037
			 Indica siempre si el que llama a la función debiera
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2038
			 liberar/desreferenciar los resultados.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2039
                </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2040
	      </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2041
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2042
	      <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2043
		<para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  2044
		  Documenta <emphasis>cómo</emphasis> entregar la 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2045
		  memoria: unref, free, g_free, ...
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2046
                </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2047
	      </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2048
	    </itemizedlist>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2049
	  </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2050
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2051
          <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2052
	    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2053
	      <emphasis>Se cuidadoso cuando uses copiar-y-pegar.</emphasis>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2054
            </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2055
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2056
	    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  2057
			  El proceso de cortado y pegado no mejora el código, al 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2058
			  contrario de lo que creen muchos programadores.  Primero,
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  2059
			  mira el código y si intenta producir muchas copias, quizás
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  2060
			  necesite una función ayudante o nexo. <!-- FIXME: mejor 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  2061
			  traducción de helper -->
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2062
            </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2063
	  </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2064
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2065
          <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2066
	    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2067
	      <emphasis>Libera todo antes de salir.</emphasis>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2068
        </para>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2069
        <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  2070
		  Esto lleva tiempo, así que quizás debieras hacerlo 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  2071
		  sólo dentro de una condición.
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2072
        </para>  
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2073
	    <para>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2074
		  El motivo de este consejo es que los verificadores de memoria
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  2075
		  toman tiempo en determinar entre una pérdida que tu conoces 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  2076
		  y no te preocupan, y las otras pérdidas.
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2077
        </para>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2078
	  </listitem>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2079
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2080
	  <listitem>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2081
	    <para>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2082
	      <emphasis>No dejes punteros sueltos en tus estructuras de 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2083
		  datos.</emphasis>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2084
        </para>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2085
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2086
	    <para>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2087
		  Asigna <symbol>NULL</symbol> o 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2088
		  <symbol>(void *)0xdeadbeef</symbol> para los miembros 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2089
		  liberados a menos que vayas a liberar la estructura a la 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2090
		  que pertenecen.
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2091
        </para>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2092
	    
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2093
	    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  2094
		  Los punteros sueltos tienen la mala tendencia a ocultar pérdidas
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2095
		  de memoria.
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2096
	    </para>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2097
	  </listitem>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2098
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2099
	  <listitem>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2100
	    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  2101
	      <emphasis>Ejecuta el nuevo código en un ciclo 1 millón de 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2102
		  veces.</emphasis>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2103
            </para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2104
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2105
	    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  2106
		   Si pierdes memoria, lo sabrás &mdash; sólo sigue al proceso con
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  2107
		   <command>top</command> en otra ventana.  Podrías querer
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2108
		   especificar a top el <symbol>PID</symbol>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  2109
		   del proceso con la opción <parameter>-p</parameter>.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2110
            </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2111
	  </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2112
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2113
	  <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2114
	    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  2115
	      <emphasis>Repáralo ahora, no después.</emphasis>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2116
            </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2117
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2118
	    <para>
6
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  2119
		  No escribas una porquería de código; más temprano que 
4e44e6123b42 Recode from latin1 to utf-8
"German Poo-Caaman~o <gpoo@gnome.org>"
parents: 5
diff changeset
  2120
		  tarde te pesará.
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2121
        </para>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2122
	  </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2123
	</itemizedlist>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2124
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2125
    </sect2>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2126
  </sect1>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2127
</article>