Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - lfs linux

Pages: [1] 2 3
1
Bash / 400 comandos Bash Gnu/linux
« on: September 18, 2017, 10:16:56 am »
Información del sistema

arch: mostrar la arquitectura de la máquina (1).
uname -m: mostrar la arquitectura de la máquina (2).
uname -r: mostrar la versión del kernel usado.
dmidecode -q: mostrar los componentes (hardware) del sistema.
hdparm -i /dev/hda: mostrar las características de un disco duro.
hdparm -tT /dev/sda: realizar prueba de lectura en un disco duro.
cat /proc/cpuinfo: mostrar información de la CPU.
cat /proc/interrupts: mostrar las interrupciones.
cat /proc/meminfo: verificar el uso de memoria.
cat /proc/swaps: mostrar ficheros swap.
cat /proc/version: mostrar la versión del kernel.
cat /proc/net/dev: mostrar adaptadores de red y estadísticas.
cat /proc/mounts: mostrar el sistema de ficheros montado.
lspci -tv: mostrar los dispositivos PCI.
lsusb -tv: mostrar los dispositivos USB.
date: mostrar la fecha del sistema.
cal 2011: mostrar el almanaque de 2011.
cal 07 2011: mostrar el almanaque para el mes julio de 2011.
date 041217002011.00: colocar (declarar, ajustar) fecha y hora.
clock -w: guardar los cambios de fecha en la BIOS.
Apagar (Reiniciar Sistema o Cerrar Sesión)

shutdown -h now: apagar el sistema (1).
init 0: apagar el sistema (2).
telinit 0: apagar el sistema (3).
halt: apagar el sistema (4).
shutdown -h hours:minutes &: apagado planificado del sistema.
shutdown -c: cancelar un apagado planificado del sistema.
shutdown -r now: reiniciar (1).
reboot: reiniciar (2).
logout: cerrar sesión.
Archivos y Directorios

cd /home: entrar en el directorio “home”.
cd ..: retroceder un nivel.
cd ../..: retroceder 2 niveles.
cd: ir al directorio raíz.
cd ~user1: ir al directorio user1.
cd –: ir (regresar) al directorio anterior.
pwd: mostrar el camino del directorio de trabajo.
ls: ver los ficheros de un directorio.
ls -F: ver los ficheros de un directorio.
ls -l: mostrar los detalles de ficheros y carpetas de un directorio.
ls -a: mostrar los ficheros ocultos.
ls *[0-9]*: mostrar los ficheros y carpetas que contienen números.
tree: mostrar los ficheros y carpetas en forma de árbol comenzando por la raíz.(1)
lstree: mostrar los ficheros y carpetas en forma de árbol comenzando por la raíz.(2)
mkdir dir1: crear una carpeta o directorio con nombre ‘dir1’.
mkdir dir1 dir2: crear dos carpetas o directorios simultáneamente (Crear dos directorios a la vez).
mkdir -p /tmp/dir1/dir2: crear un árbol de directorios.
rm -f file1: borrar el fichero llamado ‘file1’.
rmdir dir1: borrar la carpeta llamada ‘dir1’.
rm -rf dir1: eliminar una carpeta llamada ‘dir1’ con su contenido de forma recursiva. (Si lo borro recursivo estoy diciendo que es con su contenido).
rm -rf dir1 dir2: borrar dos carpetas (directorios) con su contenido de forma recursiva.
mv dir1 new_dir: renombrar o mover un fichero o carpeta (directorio).
cp file1: copiar un fichero.
cp file1 file2: copiar dos ficheros al unísono.
cp dir /* .: copiar todos los ficheros de un directorio dentro del directorio de trabajo actual.
cp -a /tmp/dir1 .: copiar un directorio dentro del directorio actual de trabajo.
cp -a dir1: copiar un directorio.
cp -a dir1 dir2: copiar dos directorio al unísono.
ln -s file1 lnk1: crear un enlace simbólico al fichero o directorio.
ln file1 lnk1: crear un enlace físico al fichero o directorio.
touch -t 0712250000 file1: modificar el tiempo real (tiempo de creación) de un fichero o directorio.
file file1: salida (volcado en pantalla) del tipo mime de un fichero texto.
iconv -l: listas de cifrados conocidos.
iconv -f fromEncoding -t toEncoding inputFile > outputFile: crea una nueva forma del fichero de entrada asumiendo que está codificado en fromEncoding y convirtiéndolo a ToEncoding.
find . -maxdepth 1 -name *.jpg -print -exec convert ”{}” -resize 80×60 “thumbs/{}” \;: agrupar ficheros redimensionados en el directorio actual y enviarlos a directorios en vistas de miniaturas (requiere convertir desde ImagemagicK).
Encontrar archivos

find / -name file1: buscar fichero y directorio a partir de la raíz del sistema.
find / -user user1: buscar ficheros y directorios pertenecientes al usuario ‘user1’.
find /home/user1 -name \*.bin: buscar ficheros con extensión ‘. bin’ dentro del directorio ‘/ home/user1’.
find /usr/bin -type f -atime +100: buscar ficheros binarios no usados en los últimos 100 días.
find /usr/bin -type f -mtime -10: buscar ficheros creados o cambiados dentro de los últimos 10 días.
find / -name \*.rpm -exec chmod 755 ‘{}’ \;: buscar ficheros con extensión ‘.rpm’ y modificar permisos.
find / -xdev -name \*.rpm: Buscar ficheros con extensión ‘.rpm’ ignorando los dispositivos removibles como cdrom, pen-drive, etc.…
locate \*.ps: encuentra ficheros con extensión ‘.ps’ ejecutados primeramente con el command ‘updatedb’.
whereis halt: mostrar la ubicación de un fichero binario, de ayuda o fuente. En este caso pregunta dónde está el comando ‘halt’.
which halt: mostrar la senda completa (el camino completo) a un binario / ejecutable.
Montando un sistema de ficheros

mount /dev/hda2 /mnt/hda2: montar un disco llamado hda2. Verifique primero la existencia del directorio ‘/ mnt/hda2’; si no está, debe crearlo.
umount /dev/hda2: desmontar un disco llamado hda2. Salir primero desde el punto ‘/ mnt/hda2.
fuser -km /mnt/hda2: forzar el desmontaje cuando el dispositivo está ocupado.
umount -n /mnt/hda2: correr el desmontaje sin leer el fichero /etc/mtab. Útil cuando el fichero es de solo lectura o el disco duro está lleno.
mount /dev/fd0 /mnt/floppy: montar un disco flexible (floppy).
mount /dev/cdrom /mnt/cdrom: montar un cdrom / dvdrom.
mount /dev/hdc /mnt/cdrecorder: montar un cd regrabable o un dvdrom.
mount /dev/hdb /mnt/cdrecorder: montar un cd regrabable / dvdrom (un dvd).
mount -o loop file.iso /mnt/cdrom: montar un fichero o una imagen iso.
mount -t vfat /dev/hda5 /mnt/hda5: montar un sistema de ficheros FAT32.
mount /dev/sda1 /mnt/usbdisk: montar un usb pen-drive o una memoria (sin especificar el tipo de sistema de ficheros).
Espacio de Disco

df -h: mostrar una lista de las particiones montadas.
ls -lSr |more: mostrar el tamaño de los ficheros y directorios ordenados por tamaño.
du -sh dir1: Estimar el espacio usado por el directorio ‘dir1’.
du -sk * | sort -rn: mostrar el tamaño de los ficheros y directorios ordenados por tamaño.
rpm -q -a –qf ‘%10{SIZE}t%{NAME}n’ | sort -k1,1n: mostrar el espacio usado por los paquetes rpm instalados organizados por tamaño (Fedora, Redhat y otros).
dpkg-query -W -f=’${Installed-Size;10}t${Package}n’ | sort -k1,1n: mostrar el espacio usado por los paquetes instalados, organizados por tamaño (Ubuntu, Debian y otros).
Usuarios y Grupos

groupadd nombre_del_grupo: crear un nuevo grupo.
groupdel nombre_del_grupo: borrar un grupo.
groupmod -n nuevo_nombre_del_grupo viejo_nombre_del_grupo: renombrar un grupo.
useradd -c “Name Surname ” -g admin -d /home/user1 -s /bin/bash user1: Crear un nuevo usuario perteneciente al grupo “admin”.
useradd user1: crear un nuevo usuario.
userdel -r user1: borrar un usuario (‘-r’ elimina el directorio Home).
usermod -c “User FTP” -g system -d /ftp/user1 -s /bin/nologin user1: cambiar los atributos del usuario.
passwd: cambiar contraseña.
passwd user1: cambiar la contraseña de un usuario (solamente por root).
chage -E 2011-12-31 user1: colocar un plazo para la contraseña del usuario. En este caso dice que la clave expira el 31 de diciembre de 2011.
pwck: chequear la sintaxis correcta el formato de fichero de ‘/etc/passwd’ y la existencia de usuarios.
grpck: chequear la sintaxis correcta y el formato del fichero ‘/etc/group’ y la existencia de grupos.
newgrp group_name: registra a un nuevo grupo para cambiar el grupo predeterminado de los ficheros creados recientemente.
Permisos en Ficheros (Usa ”+” para colocar permisos y ”-” para eliminar)

ls -lh: Mostrar permisos.
ls /tmp | pr -T5 -W$COLUMNS: dividir la terminal en 5 columnas.
chmod ugo+rwx directory1: colocar permisos de lectura ®, escritura (w) y ejecución(x) al propietario (u), al grupo (g) y a otros (o) sobre el directorio ‘directory1’.
chmod go-rwx directory1: quitar permiso de lectura ®, escritura (w) y (x) ejecución al grupo (g) y otros (o) sobre el directorio ‘directory1’.
chown user1 file1: cambiar el dueño de un fichero.
chown -R user1 directory1: cambiar el propietario de un directorio y de todos los ficheros y directorios contenidos dentro.
chgrp group1 file1: cambiar grupo de ficheros.
chown user1:group1 file1: cambiar usuario y el grupo propietario de un fichero.
find / -perm -u+s: visualizar todos los ficheros del sistema con SUID configurado.
chmod u+s /bin/file1: colocar el bit SUID en un fichero binario. El usuario que corriendo ese fichero adquiere los mismos privilegios como dueño.
chmod u-s /bin/file1: deshabilitar el bit SUID en un fichero binario.
chmod g+s /home/public: colocar un bit SGID en un directorio –similar al SUID pero por directorio.
chmod g-s /home/public: desabilitar un bit SGID en un directorio.
chmod o+t /home/public: colocar un bit STIKY en un directorio. Permite el borrado de ficheros solamente a los dueños legítimos.
chmod o-t /home/public: desabilitar un bit STIKY en un directorio.
Atributos especiales en ficheros (Usa ”+” para colocar permisos y ”-” para eliminar)

chattr +a file1: permite escribir abriendo un fichero solamente modo append.
chattr +c file1: permite que un fichero sea comprimido / descomprimido automaticamente.
chattr +d file1: asegura que el programa ignore borrar los ficheros durante la copia de seguridad.
chattr +i file1: convierte el fichero en invariable, por lo que no puede ser eliminado, alterado, renombrado, ni enlazado.
chattr +s file1: permite que un fichero sea borrado de forma segura.
chattr +S file1: asegura que un fichero sea modificado, los cambios son escritos en modo synchronous como con sync.
chattr +u file1: te permite recuperar el contenido de un fichero aún si este está cancelado.
lsattr: mostrar atributos especiales.
Archivos y Ficheros comprimidos

bunzip2 file1.bz2: descomprime in fichero llamado ‘file1.bz2’.
bzip2 file1: comprime un fichero llamado ‘file1’.
gunzip file1.gz: descomprime un fichero llamado ‘file1.gz’.
gzip file1: comprime un fichero llamado ‘file1’.
gzip -9 file1: comprime con compresión máxima.
rar a file1.rar test_file: crear un fichero rar llamado ‘file1.rar’.
rar a file1.rar file1 file2 dir1: comprimir ‘file1’, ‘file2’ y ‘dir1’ simultáneamente.
rar x file1.rar: descomprimir archivo rar.
unrar x file1.rar: descomprimir archivo rar.
tar -cvf archive.tar file1: crear un tarball descomprimido.
tar -cvf archive.tar file1 file2 dir1: crear un archivo conteniendo ‘file1’, ‘file2′ y’dir1’.
tar -tf archive.tar: mostrar los contenidos de un archivo.
tar -xvf archive.tar: extraer un tarball.
tar -xvf archive.tar -C /tmp: extraer un tarball en / tmp.
tar -cvfj archive.tar.bz2 dir1: crear un tarball comprimido dentro de bzip2.
tar -xvfj archive.tar.bz2: descomprimir un archivo tar comprimido en bzip2
tar -cvfz archive.tar.gz dir1: crear un tarball comprimido en gzip.
tar -xvfz archive.tar.gz: descomprimir un archive tar comprimido en gzip.
zip file1.zip file1: crear un archivo comprimido en zip.
zip -r file1.zip file1 file2 dir1: comprimir, en zip, varios archivos y directorios de forma simultánea.
unzip file1.zip: descomprimir un archivo zip.
Paquetes RPM (Red Hat, Fedora y similares)

rpm -ivh package.rpm: instalar un paquete rpm.
rpm -ivh –nodeeps package.rpm: instalar un paquete rpm ignorando las peticiones de dependencias.
rpm -U package.rpm: actualizar un paquete rpm sin cambiar la configuración de los ficheros.
rpm -F package.rpm: actualizar un paquete rpm solamente si este está instalado.
rpm -e package_name.rpm: eliminar un paquete rpm.
rpm -qa: mostrar todos los paquetes rpm instalados en el sistema.
rpm -qa | grep httpd: mostrar todos los paquetes rpm con el nombre “httpd”.
rpm -qi package_name: obtener información en un paquete específico instalado.
rpm -qg “System Environment/Daemons”: mostar los paquetes rpm de un grupo software.
rpm -ql package_name: mostrar lista de ficheros dados por un paquete rpm instalado.
rpm -qc package_name: mostrar lista de configuración de ficheros dados por un paquete rpm instalado.
rpm -q package_name –whatrequires: mostrar lista de dependencias solicitada para un paquete rpm.
rpm -q package_name –whatprovides: mostar la capacidad dada por un paquete rpm.
rpm -q package_name –scripts: mostrar los scripts comenzados durante la instalación /eliminación.
rpm -q package_name –changelog: mostar el historial de revisions de un paquete rpm.
rpm -qf /etc/httpd/conf/httpd.conf: verificar cuál paquete rpm pertenece a un fichero dado.
rpm -qp package.rpm -l: mostrar lista de ficheros dados por un paquete rpm que aún no ha sido instalado.
rpm –import /media/cdrom/RPM-GPG-KEY: importar la firma digital de la llave pública.
rpm –checksig package.rpm: verificar la integridad de un paquete rpm.
rpm -qa gpg-pubkey: verificar la integridad de todos los paquetes rpm instalados.
rpm -V package_name: chequear el tamaño del fichero, licencias, tipos, dueño, grupo, chequeo de resumen de MD5 y última modificación.
rpm -Va: chequear todos los paquetes rpm instalados en el sistema. Usar con cuidado.
rpm -Vp package.rpm: verificar un paquete rpm no instalado todavía.
rpm2cpio package.rpm | cpio –extract –make-directories *bin*: extraer fichero ejecutable desde un paquete rpm.
rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm: instalar un paquete construido desde una fuente rpm.
rpmbuild –rebuild package_name.src.rpm: construir un paquete rpm desde una fuente rpm.
Actualizador de paquetes YUM (Red Hat, Fedora y similares)

yum install package_name: descargar e instalar un paquete rpm.
yum localinstall package_name.rpm: este instalará un RPM y tratará de resolver todas las dependencies para ti, usando tus repositorios.
yum update package_name.rpm: actualizar todos los paquetes rpm instalados en el sistema.
yum update package_name: modernizar / actualizar un paquete rpm.
yum remove package_name: eliminar un paquete rpm.
yum list: listar todos los paquetes instalados en el sistema.
yum search package_name: Encontrar un paquete en repositorio rpm.
yum clean packages: limpiar un caché rpm borrando los paquetes descargados.
yum clean headers: eliminar todos los ficheros de encabezamiento que el sistema usa para resolver la dependencia.
yum clean all: eliminar desde los paquetes caché y ficheros de encabezado.
Paquetes Deb (Debian, Ubuntu y derivados)

dpkg -i package.deb: instalar / actualizar un paquete deb.
dpkg -r package_name: eliminar un paquete deb del sistema.
dpkg -l: mostrar todos los paquetes deb instalados en el sistema.
dpkg -l | grep httpd: mostrar todos los paquetes deb con el nombre “httpd”
dpkg -s package_name: obtener información en un paquete específico instalado en el sistema.
dpkg -L package_name: mostar lista de ficheros dados por un paquete instalado en el sistema.
dpkg –contents package.deb: mostrar lista de ficheros dados por un paquete no instalado todavía.
dpkg -S /bin/ping: verificar cuál paquete pertenece a un fichero dado.
Actualizador de paquetes APT (Debian, Ubuntu y derivados)

apt-get install package_name: instalar / actualizar un paquete deb.
apt-cdrom install package_name: instalar / actualizar un paquete deb desde un cdrom.
apt-get update: actualizar la lista de paquetes.
apt-get upgrade: actualizar todos los paquetes instalados.
apt-get remove package_name: eliminar un paquete deb del sistema.
apt-get check: verificar la correcta resolución de las dependencias.
apt-get clean: limpiar cache desde los paquetes descargados.
apt-cache search searched-package: retorna lista de paquetes que corresponde a la serie «paquetes buscados».
Ver el contenido de un fichero

cat file1: ver los contenidos de un fichero comenzando desde la primera hilera.
tac file1: ver los contenidos de un fichero comenzando desde la última línea.
more file1: ver el contenido a lo largo de un fichero.
less file1: parecido al commando ‘more’ pero permite salvar el movimiento en el fichero así como el movimiento hacia atrás.
head -2 file1: ver las dos primeras líneas de un fichero.
tail -2 file1: ver las dos últimas líneas de un fichero.
tail -f /var/log/messages: ver en tiempo real qué ha sido añadido al fichero.
Manipulación de texto

cat file1 file2 .. | command <> file1_in.txt_or_file1_out.txt: sintaxis general para la manipulación de texto utilizando PIPE, STDIN y STDOUT.
cat file1 | command( sed, grep, awk, grep, etc…) > result.txt: sintaxis general para manipular un texto de un fichero y escribir el resultado en un fichero nuevo.
cat file1 | command( sed, grep, awk, grep, etc…) » result.txt: sintaxis general para manipular un texto de un fichero y añadir resultado en un fichero existente.
grep Aug /var/log/messages: buscar palabras “Aug” en el fichero ‘/var/log/messages’.
grep ^Aug /var/log/messages: buscar palabras que comienzan con “Aug” en fichero ‘/var/log/messages’
grep [0-9] /var/log/messages: seleccionar todas las líneas del fichero ‘/var/log/messages’ que contienen números.
grep Aug -R /var/log/*: buscar la cadena “Aug” en el directorio ‘/var/log’ y debajo.
sed ‘s/stringa1/stringa2/g’ example.txt: reubicar “string1” con “string2” en ejemplo.txt
sed ‘/^$/d’ example.txt: eliminar todas las líneas en blanco desde el ejemplo.txt
sed ‘/ *#/d; /^$/d’ example.txt: eliminar comentarios y líneas en blanco de ejemplo.txt
echo ‘esempio’ | tr ‘[:lower:]’ ‘[:upper:]’: convertir minúsculas en mayúsculas.
sed -e ‘1d’ result.txt: elimina la primera línea del fichero ejemplo.txt
sed -n ‘/stringa1/p’: visualizar solamente las líneas que contienen la palabra “string1”.
Establecer caracter y conversión de ficheros

dos2unix filedos.txt fileunix.txt: convertir un formato de fichero texto desde MSDOS a UNIX.
unix2dos fileunix.txt filedos.txt: convertir un formato de fichero de texto desde UNIX a MSDOS.
recode ..HTML < page.txt > page.html: convertir un fichero de texto en html.
recode -l | more: mostrar todas las conversiones de formato disponibles.
Análisis del sistema de ficheros

badblocks -v /dev/hda1: Chequear los bloques defectuosos en el disco hda1.
fsck /dev/hda1: reparar / chequear la integridad del fichero del sistema Linux en el disco hda1.
fsck.ext2 /dev/hda1: reparar / chequear la integridad del fichero del sistema ext 2 en el disco hda1.
e2fsck /dev/hda1: reparar / chequear la integridad del fichero del sistema ext 2 en el disco hda1.
e2fsck -j /dev/hda1: reparar / chequear la integridad del fichero del sistema ext 3 en el disco hda1.
fsck.ext3 /dev/hda1: reparar / chequear la integridad del fichero del sistema ext 3 en el disco hda1.
fsck.vfat /dev/hda1: reparar / chequear la integridad del fichero sistema fat en el disco hda1.
fsck.msdos /dev/hda1: reparar / chequear la integridad de un fichero del sistema dos en el disco hda1.
dosfsck /dev/hda1: reparar / chequear la integridad de un fichero del sistema dos en el disco hda1.
Formatear un sistema de ficheros

mkfs /dev/hda1: crear un fichero de sistema tipo Linux en la partición hda1.
mke2fs /dev/hda1: crear un fichero de sistema tipo Linux ext 2 en hda1.
mke2fs -j /dev/hda1: crear un fichero de sistema tipo Linux ext3 (periódico) en la partición hda1.
mkfs -t vfat 32 -F /dev/hda1: crear un fichero de sistema FAT32 en hda1.
fdformat -n /dev/fd0: formatear un disco flooply.
mkswap /dev/hda3: crear un fichero de sistema swap.
Trabajo con la SWAP


2
Lack Of Love / Tutorial Add-ons
« on: September 08, 2017, 05:31:46 pm »
Add-om Tutorial

Este tutorial está diseñado para ayudar a los artistas o técnicos desarrolladores aprender a extender Blender. Se espera que una comprensión de los conceptos básicos de Python para los que trabajan a través de este tutorial.

Requisitos previos
Antes de pasar al tutorial deberías ...

  • Estar familiarizado con los aspectos básicos del trabajo en Blender.
  • Saber cómo ejecutar un script en el editor de texto de Blender.
  • Tener una comprensión de Python tipos primitivos (int, boolean, string, lista, tupla, diccionario, y establecer).
  • Estar familiarizado con el concepto de módulos de Python.
  • Tener un conocimiento básico de las clases (orientación a objetos) en Python.

Sugerido la lectura antes de comenzar este tutorial.
Inmersión en Python secciones (1, 2, 3, 4, 5, 6, 7).
  • Your First Python Program
  • Native Datatypes
  • Comprehensions
  • Strings
  • Regular Expressions
  • Closures & Generators
  • Classes & Iterators
Blender API de inicio rápido para ayudar a familiarizarse con los elementos básicos del mezclador / Python.

Para solucionar mejor las impresiones de Python mensaje de error al escribir secuencias de comandos, ejecutar Blender desde un terminal. Ver usar el terminal .

Enlaces de documentación
Mientras que pasa al tutorial, es posible que desee ver en la documentación de referencia.
  • blender_api: Blender generales del API . - Este documento es bastante detallado, pero útil si desea saber más acerca de un tema.
  • bpy.contextreferencia de la API. - práctico tener una lista de elementos disponibles su script puede operar.
  • bpy.types.Operator. - Los siguientes complementos definen los operadores, estos documentos dan detalles y más ejemplos de operadores.
¿Qué es un Add-on?
Un add-on es simplemente un módulo de Python con algunos requisitos adicionales para Blender puede mostrar en una lista con información útil.

Para dar un ejemplo, aquí es el complemento más simple posible.
Code: [Select]
bl_info  =  { "name" :  "Mi prueba Add-on" ,  "categoría" :  "Objeto" }
def  registro ():
    print ( "Hola mundo" )
def  anular el registro ():
    print ( "Adiós Mundo" )
  • bl_info
    es un diccionario que contiene add-on meta-datos como el título, el autor y la versión que se mostrará en las preferencias de usuario de la lista.
  • register
    es una función que sólo se ejecuta cuando se activa el complemento, esto significa que el módulo puede ser cargado sin activar el complemento.
  • unregister
    es una función que descargar nada por la instalación register, esto se llama cuando el complemento está deshabilitado.
Nótese que este complemento no hacer nada relacionado con Blender (el bpymódulo no ha sido importada por ejemplo).

Este es un ejemplo artificial de un complemento que sirve para ilustrar el punto de que los requisitos de la base de un add-on son simples.

Un add-on normalmente se registran los operadores, paneles, elementos de menú, etc, pero vale la pena señalar que cualquier script puede hacer esto, cuando se ejecuta desde el editor de texto o incluso la consola interactiva - no hay nada intrínsecamente diferente acerca de un add-on que le permite integrarse con Blender, tal funcionalidad se acaba proporcionada por el bpymódulo para cualquier script de acceso.

Así que un add-on es sólo una forma de encapsular un módulo de Python en una forma en que un usuario puede utilizar fácilmente.

Nota:
La ejecución de esta secuencia de comandos en el editor de texto no se imprimirá nada, para ver la salida debe ser instalado a través de las preferencias del usuario. Los mensajes se imprimen cuando la activación y desactivación.


Su primer Add-on
El más simple posible complemento anterior es útil como un ejemplo, pero no mucho más. Este próximo add-on es simple pero muestra cómo integrar una secuencia de comandos en Blender usando una Operator que es la forma típica de definir una herramienta que se accede desde los menús, botones y combinaciones de teclas.

Para el primer ejemplo vamos a hacer un script que simplemente se mueve todos los objetos en una escena.

Escribir el guión
Añadir la siguiente secuencia de comandos para el editor de texto en Blender.

Code: [Select]
importación  bpy

escena  =  bpy . contexto . escena
de  obj  en  escena . objetos :
    obj . ubicación . x  + =  1,0

Haga clic en el botón Ejecutar script , todos los objetos de la escena activa son movidos por 1,0 unidades de Blender.

Escribir el complemento (simple)
Este add-on toma el cuerpo del script anterior, y lo añade a un operador de execute()la función.

Code: [Select]
bl_info  =  {
    "name" :  "Mover el eje X" ,
    "categoría" :  "Objeto" ,
}

import bpy


clase  ObjectMoveX ( bpy . tipos . Operator ):
    "" "Mi objeto en movimiento escritura" ""       # Use esto como una ventana de información de elementos de menú y los botones.
    bl_idname  =  "object.move_x"         Identificador único # para los botones y elementos de menú para hacer referencia.
    bl_label  =  "Mover X en uno"          # nombre a visualizar en la interfaz.
    bl_options  =  { 'REGISTER' ,  'Deshacer' }   # Habilitar deshacer para el operador.

    def  ejecutar ( auto ,  contexto ):         # ejecutar () se llama cuando se ejecuta el operador.

        # El guión original
        escena  =  contexto . escena
        de  obj  en  escena . objetos :
            obj . ubicación . x  + =  1,0

        volver  { 'terminado' }             # Le permite Blender sabe que el operador ha finalizado correctamente.

def  registro ():
    bpy . utils . register_class ( ObjectMoveX )


def  unregister ():
    bpy . utils . unregister_class ( ObjectMoveX )


# Esto le permite ejecutar la secuencia de comandos directamente desde licuadoras editor de texto
# para probar el complemento sin tener que instalarlo.
Si  __name__  ==  "__main__" :
    registrar ()

Nota
bl_info se divide en varias líneas, esto es sólo una convención estilo utilizado para añadir más fácilmente los elementos.

Nota
En lugar de utilizar bpy.context.scene, se utiliza el context.sceneargumento pasado a execute(). En la mayoría de los casos éstos serán los mismos. Sin embargo, en algunos casos, los operadores serán pasados un contexto personalizado para autores de scripts deben preferir el contextargumento pasado a los operadores.


Para probar el script, puede copiar y pegar en editor de texto licuadora y ejecutarlo. Esto ejecutará el script de forma directa y el registro de llamadas de inmediato.

Sin embargo la ejecución del script no se moverá ningún objeto. Para esto, es necesario para ejecutar el operador recién registrado.



Para ello, pulse Spacebarpara abrir el diálogo de búsqueda del operador y el tipo de «Mover X en uno» (la bl_label), a continuación Enter.

Los objetos deben moverse como antes.

Mantener este complemento abierta en Blender para el siguiente paso - Instalación.

Instalar el add-on
Una vez que usted tiene su complemento en editor de texto dentro de Blender, tendrá que ser capaz de instalarlo para que pueda ser activada en las preferencias del usuario para cargar en el arranque.

A pesar de que el add-on anterior es una prueba, vamos a ir a través de los pasos de todos modos para que sepa cómo hacerlo para más adelante.

Para instalar el texto Blender como un add-on, primero tendrá que guardarlo en el disco, tenga cuidado de obedecer las restricciones de nomenclatura que se aplican a los módulos de Python y terminar con una .pyextensión.

Una vez que el archivo está en el disco, puede instalarlo como si se tratara de un add-on descargado en línea.

Abre el usuario Archivo ‣ Preferencias de usuario , seleccione el complemento de la sección, pulse Instalar complemento ... y seleccione el archivo.

Ahora se incluirá el complemento y se puede activar pulsando la casilla de verificación, si usted quiere que sea activado en el reinicio, pulse Guardar como predeterminado .

Nota

El destino del complemento depende de la configuración del mezclador. Al instalar un complemento de las rutas de origen y de destino se imprimen en la consola. También puede encontrar el complemento ubicaciones de ruta mediante la ejecución de esto en la consola de Python.

Code: [Select]
importación  addon_utils
de impresión ( addon_utils . caminos ())

Más se ha escrito sobre este tema aquí: Directorio de diseño .

Su segundo Add-on
Para nuestro segundo complemento, nos centraremos en la creación de instancias de objeto - esto es - para hacer copias de un objeto vinculados de una manera similar a lo que pudo haber visto con el modificador de matriz.

Escribir el guión
Al igual que antes, en primer lugar vamos a empezar con un guión, desarrollarlo, luego convertirlo en un add-on.

Code: [Select]
import bpy
from bpy import context

# Obtener la escena actual
escena  =  contexto . escena

# Obtener el cursor 3D
cursor  =  escena . cursor_location

# Obtener el objeto activo (supongamos que tenemos uno)
obj  =  escena . objetos . activo

# Ahora haga una copia del objeto
obj_new  =  obj . copia ()

# El objeto no obtendrá automáticamente en una nueva escena
escena . objetos . enlace ( obj_new )

# Ahora podemos colocar el objeto
obj_new . ubicación  =  cursor

Ahora intenta copiar este script en la licuadora y ejecutarlo en el cubo por defecto. Asegúrese de hacer clic para mover el cursor 3D antes de ejecutar como el duplicado aparecerá en la posición del cursor.

Después de correr, observe que cuando se entra en el modo de edición para cambiar el Cubo - todos los cambios copias, en Blender esto se conoce como Linked-duplicados .

A continuación, vamos a hacer esto en un bucle, para hacer una matriz de objetos entre el objeto y el cursor activo.

Code: [Select]
import bpy
from bpy import context

escena  =  contexto . escena
del cursor  =  escena . cursor_location obj = escena . objetos . activo
 

# Utilice un valor fijo por ahora, finalmente, hacer que este ajustable por el usuario
totales  =  10

# Añadir objetos 'total' en la escena
de  i  en  rango ( totales ):
    obj_new  =  obj . copia ()
    escena . objetos . enlace ( obj_new )

    # Ahora colocar el objeto en entre el cursor
    # y el objeto activo basado en 'i'
    factor de  =  i  /  total de
    obj_new . ubicación  =  ( obj . ubicación  *  factor de )  +  ( cursor  *  ( 1,0  -  factor de ))

Trate de ejecutar este script con el objeto activo y el cursor separadas entre sí para ver el resultado.

Con este script se dará cuenta de que estamos haciendo un poco de matemática con la ubicación de objetos y el cursor, esto funciona porque ambos son 3D casos, una clase práctica proporcionados por el módulo y permite a los vectores que se multiplican por números y matrices.mathutils. Vectormathutils

Si está interesado en esta área, leer en mathutils.Vector - hay muchas funciones útiles de servicios públicos tales como conseguir el ángulo entre los vectores, producto vectorial, productos de punto, así como funciones más avanzadas en mathutils.geometry como Bézier spline de interpolación y la intersección de rayos-triángulo.

Por ahora nos centraremos en hacer este guión un add-on, pero es bueno saber que este módulo de matemáticas 3D está disponible y se puede ayudar con una funcionalidad más avanzada más adelante.

Escribir el add-on
El primer paso es convertir el guión como está en un complemento.

Code: [Select]
bl_info  =  {
    "name" :  "Cursor de arrays" ,
    "categoría" :  "Objeto" ,
}

import bpy


clase  ObjectCursorArray ( bpy . tipos . Operador ):
    "" "Cursor objeto Array" ""
    bl_idname  =  "" object.cursor_array
    bl_label  =  "cursor matriz"
    bl_options  =  { 'REGISTER' ,  'Deshacer' }

    def  ejecutar ( auto ,  contexto ):
        escena  =  contexto . escena
        del cursor  =  escena . cursor_location obj = escena . objetos . activo
         

        total = 10

        para  i  en  gama ( total de ):
            obj_new  =  obj . copia ()
            escena . objetos . enlace ( obj_new )

            factor de  =  i  /  total de
            obj_new . ubicación  =  ( obj . ubicación  *  factor de )  +  ( cursor  *  ( 1,0  -  factor de ))

        volver  { 'terminado' }

def  registro ():
    bpy . utils . register_class ( ObjectCursorArray )


def  unregister ():
    bpy . utils . unregister_class ( ObjectCursorArray )


Si  __name__  ==  "__main__" :
    registrar ()

Todo lo que aquí se ha cubierto en los pasos anteriores, es posible que desee para tratar de ejecutar el add-on, y considera lo que se podría hacer para que sea más útil.

El dos de las cosas que faltan más obvios son - Vista del total fijado en 10, y tener que acceder al operador desde el espacio-bar no es muy conveniente.

Tanto estas adiciones se explican a continuación, con el guión final después.

propiedad del operador
Hay una variedad de tipos de propiedades que se utilizan para los ajustes de herramientas, tipos de propiedad común incluyen: int, float, vector, color, booleano y la cadena.

Estas propiedades se manejan de manera diferente a los atributos de clase típica de Python porque Blender necesita para mostrarlos en la interfaz, almacenar sus ajustes en mapas clave y mantener la configuración para su reutilización.

Si bien esto se maneja de una manera bastante Pythonic, ser conscientes de que está en la definición de ajustes de herramientas informativas que se cargan en Blender y acceder otras partes de Blender, fuera del pitón.

Para deshacerse de lo literal 10 para total, vamos a utilizar una propiedad del operador. Propiedades de operadores se definen a través del módulo bpy.props, esta se añade a la cuerpo de la clase.

Code: [Select]
# Trasladó encargo de ejecutar () al cuerpo de la clase ...
totales  =  bpy . apoyos . IntProperty ( nombre = "pasos" ,  por defecto = 2 ,  min = 1 ,  max = 100 )

# Y esto se accede a la clase
ejemplo # dentro de la función de ejecutar () como ...
sí . total

Estas propiedades de bpy.propsse maneja de forma especial por Blender cuando la clase se ha registrado por lo que se muestran como botones de la interfaz de usuario. Hay muchos argumentos se pueden pasar a las propiedades de los límites establecidos, cambiar las preferencias y mostrar una ventana de información.

Ver también

bpy.props.IntProperty


Este documento no entra en detalles sobre el uso de otros tipos de propiedad, sin embargo, el enlace anterior incluye ejemplos del uso de la propiedad más avanzada.

Opción del menú
Los complementos pueden añadir a la interfaz de usuario de paneles, encabezados y menús existentes definidos en Python.

Para este ejemplo vamos a añadir a un menú existente.



Para encontrar el identificador de un menú, puede colocar el ratón sobre el elemento del menú y se muestra el identificador.

El método utilizado para añadir un elemento de menú es añadir una función de extracción en una clase existente.

Code: [Select]
def  menu_func ( auto ,  contexto ):
    sí . diseño . operador ( ObjectCursorArray . bl_idname )

def  registro ():
    bpy . tipos . VIEW3D_MT_object . append ( menu_func )

Para documentos en los menús que se extienden, consulte: Menú (bpy_struct) .

mapa de teclado
En Blender, los complementos tienen sus propios mapas de teclas a fin de no interferir con los mezcladores construidas en los mapas de teclas.

En el ejemplo siguiente, un nuevo objeto en modo bpy.types.KeyMapse añade, a continuación, una bpy.types.KeyMapItemse añade a la clave-mapa que hace referencia a nuestro operador recién agregado, utilizando Ctrl-Shift-Spacecomo la tecla de acceso directo para activarlo.

Code: [Select]
# Tienda de mapas de teclas aquí para acceder después de registro
addon_keymaps  =  []

def  registro ():

    # Manejar el mapa de teclado
    wm  =  bpy . contexto . window_manager
    km  =  wm . keyconfigs . complemento . mapas de teclas . nueva ( nombre = 'Object Mode' ,  space_type = 'vacío' )

    kmi  =  km . keymap_items . nueva ( ObjectCursorArray . bl_idname ,  'espacio' ,  'Pulse' ,  ctrl = Verdadero ,  cambiar = Verdadero )
    kmi . propiedades . total de  =  4

    addon_keymaps . append (( km ,  KMI ))


def  unregister ();

    # Manejar el mapa de teclas
    de  km ,  kmi  en  addon_keymaps :
        km . keymap_items . eliminar ( KMI )
    addon_keymaps . claro ()

Nótese cómo el elemento de mapa de teclado puede tener un diferente totalajuste el valor por defecto fijado por el operador, esto le permite tener varias claves que accedan al mismo operador con diferentes configuraciones.

Nota

Si bien Ctrl-Shift-Spaceno es un defecto de Blender tecla de acceso directo, es difícil asegurar que los complementos no se sobreponen a los demás mapas de teclas, por lo menos tener cuidado al asignar teclas que no entren en conflicto con la funcionalidad importante dentro de Blender.



3
C# Aprender / 2 Simple procesamiento de datos
« on: May 12, 2017, 06:13:10 pm »
2 Simple procesamiento de datos:
En este capítulo vamos a crear un programa verdaderamente útil (sobre todo si están en el negocio de doble acristalamiento). Comenzaremos por crear una solución muy sencilla y investigando las sentencias de C # que realizan el procesamiento de datos básico. Entonces usaremos características adicionales del lenguaje C # para mejorar la calidad de la solución que estamos productor.

2.1 Un primer programa C #
El primer programa que vamos a ver leerá en el ancho y alto de un ventana y luego imprimir la cantidad de madera y vidrio necesarios para hacer una ventana que caben en un agujero de ese tamaño. Este es el problema que nos propusimos resolver como se describe en Sección1.2.2

2.1.1 El Ejemplo de Programa
Tal vez la mejor manera de empezar a buscar en C # es saltar directamente con nuestro primer C #
programa. Aquí está:
Code: [Select]
using System;

class GlazerCalc
{
        static void Main()
        {
                double width, height, woodLength, glassArea;
                string widthString, heightString;
                widthString = Console.ReadLine();
                width = double.Parse(widthString);
                heightString = Console.ReadLine();
                height = double.Parse(heightString);
                woodLength = 2 * ( width + height ) * 3.25 ;
                glassArea = 2 * ( width * height ) ;
                Console.WriteLine ( "The length of the wood is " +
                woodLength + " feet" ) ;
                Console.WriteLine( "The area of the glass is " +
                glassArea + " square metres" ) ;
        }
}

Ejemplo de código 01 Programa GlazerCalc
Este es un programa válido. Si se lo dieron a un compilador de C# se compilaría, y usted podría ejecutarlo. El trabajo real se hace por las 2 líneas que he destacado. En general hablar las cosas antes de estas dos líneas se refiere a establecer las cosas y conseguir los valores en ser procesado. Las cosas después de las 2 líneas se ocupa de mostrar la respuesta al usuario. Ahora podemos repasar cada línea a su vez e intentar ver cómo encaja en nuestro programa.

Utilizando el sistema;
Una gran parte de aprender a programa está aprendiendo cómo utilizar todas las funciones adicionales del sistema que soporta sus programas.

Esta es una instrucción para el compilador C # para decirle que queremos usar las cosas de la espacio de nombres del sistema. Un espacio de nombres es un lugar donde los nombres particulares tienen significado. Tenemos namespaces en nuestras conversaciones también, si estoy usando el "Football" Namespace y digo "Ese equipo está realmente en llamas" Estoy diciendo algo bueno. Si yo estoy usando el espacio de nombres "Bombero" Estoy diciendo algo menos bueno.

En el caso de C #, el espacio de nombres System es donde se describen muchas cosas útiles. Una de estas cosas útiles proporcionadas con C # es el objeto de consola que me permitirá escribir cosas que aparecerán en la pantalla delante del usuario. Si quiero referirme a esto como la consola tengo que decirle al compilador que estoy utilizando el espacio de nombres del sistema. Esta significa que si me refiero a algo por un nombre particular el compilador buscará en System para ver si hay algo que coincida con ese nombre. Usaremos otros espacios de nombres mas tarde.

Clase GlazerCalc
Las clases son la base del objeto programación orientada a la veremos más adelante.

Un programa C # se compone de una o más clases. Una clase es un contenedor que contiene datos y código de programa para hacer un trabajo en particular. En el caso de nuestro doble acristalamiento calculadora de la clase sólo contiene un método único que va a trabajar nuestra madera longitudes y área de vidrio, pero una clase puede contener mucho más que eso si es necesario.

Necesitas inventar un identificador para cada clase que crees. He llamado a la nuestra GlazerCalc ya que esto refleja lo que hace. Por ahora, no te preocupes demasiado Clases Sólo asegúrese de elegir nombres sensibles para las clases que cree. Y una cosa mas. Existe una convención de que el nombre del archivo que contiene una clase particular debe coincidir con la clase en sí, en otras palabras, el programa anterior debe mantenerse en un archivo llamado GlazerCalc.cs.

Estático
Esta palabra clave asegura que el método que sigue está siempre presente, es decir, i.e. la palabra estática en este contexto significa que "forma parte de la clase inclusiva y está siempre aquí ".Cuando lleguemos a considerar los objetos vamos a encontrar que esta pequeña palabra clave tiene todos tipos de ramificaciones interesantes. Pero por ahora estaría agradecido si solo te aseguras que lo pones aquí para que tus programas funcionen correctamente.

vacío
Un vacío no es nada. En términos de programación, la palabra clave void significa que el método estamos a punto de describir no devolver nada de interés para nosotros. El método sólo hacer un trabajo y luego terminar. En algunos casos escribimos métodos que devuelven un resultado (De hecho vamos a utilizar este método más adelante en el programa).

Sin embargo, para detener a alguien accidentalmente haciendo uso del valor devuelto por nuestro método principal, estamos declarando explícitamente que no devuelve nada. Esta hace que nuestros programas sean más seguros, ya que el compilador ahora sabe que si alguien intenta utilizar el valor devuelto por este método, esto debe ser un error.

Principal
Usted elige los nombres de sus métodos para reflejar lo que van a hacer por usted. Excepto para Main. Este método (y debe haber uno, y sólo uno de estos métodos) es Donde el programa comienza a ejecutarse. Cuando el programa se carga y ejecuta el primer El método dado control es el llamado Main. Si te pierdes el método principal, Sistema literalmente no sabe por dónde empezar.

( )
Este es un par de corchetes que no incluyen nada. Esto puede sonar estúpido, pero en realidad dice el compilador que el método principal no tiene parámetros. Un parámetro a un método da
El método algo para trabajar. Cuando se define un método se puede decir C # que trabaja en una o más cosas, por ejemplo sin (x) podría trabajar en un punto flotante valor del ángulo x. Abordaremos los métodos muy detalladamente más adelante en este documento.

{ }
Esto es una llave. Como su nombre indica, los aparatos vienen en paquetes de dos, es decir, para cada abierto debe haber un cierre parejo. Los apoyos permiten a los programadores agrupar
Programa juntos. Este tipo de programa es a menudo llamado un bloque. Un bloque puede contener la declaración de las variables utilizadas dentro de ella, seguida de una secuencia de programas declaraciones que se ejecutan en orden. En este caso, las llaves partes del método.
Cuando el compilador ve la correa de cierre al final, sabe que ha alcanzado
El final del método y puede buscar otro (si lo hay). Los efectos de un no apareado
La llave es invariablemente fatal ....

doble
Por ahora probablemente sienta que necesita una bebida. Pero eso no es lo que significa doble en en este contexto. Lo que significa es "número de coma flotante de doble precisión". Nuestro programa necesita recordar ciertos valores mientras se ejecuta. En particular, se leerá en valores para el ancho y altura de las ventanas y luego calcular e imprimir valores para el area de vidrio y longitud de madera. C # llama a los lugares donde se ponen valores variables. En el principio de cualquier bloque puede decir a C # que desea reservar un espacio para mantener algunos valores de datos. Cada elemento puede contener un tipo particular de valor. Esencialmente, C # puede manejar tres tipos de datos, números de coma flotante, números enteros y texto (es decir, letras, Dígitos y puntuación). El proceso de crear una variable se llama declarando el variable. Una variable doble puede contener una muy amplia gama de valores a un muy alta precisión. Usted declara algunas variables de un tipo particular dando el tipo de los datos, seguido por una lista de los nombres que desea que las variables tengan. Estamos usando el tipo Doble por ahora. Luego usaremos otros tipos.

Anchura, altura, maderaLength, glassArea
Esta es una lista. Una lista de elementos en C # está separada por caracteres (coma). En este caso, Es una lista de nombres de variables. Una vez que el compilador ha visto la palabra doble (ver arriba) está esperando encontrar el nombre de al menos una variable que se va a crear. El compilador funciona su camino a través de la lista, la creación de cajas que pueden contener valores de tipo doble y dándoles los nombres apropiados. A partir de este punto podemos referirnos a lo anterior nombres, y el compilador sabrá que estamos utilizando esa variable en particular.


Punto del programador:
saber de dónde provienen sus datos de hecho, dadas las limitaciones en la exactitud con que las personas pueden leer las medidas de cinta, y el hecho de que no estamos va a hacer cualquier ventana tan amplia como el universo, un número de punto flotante de doble precisión es excesivo para esto solicitud. En su lugar, preguntar al cliente si está bien simplemente expresar las dimensiones en milímetros en su lugar. Nosotros mirará las consideraciones que conducen la elección de tipos de variables particulares un poco más adelante. Todas estas decisiones son
Impulsado por los metadatos (datos sobre datos) que recopila cuando está descubriendo acerca del sistema que está creando

4
C# Aprender / 1.4.6 ¿Qué incluye el programa C# ?
« on: May 12, 2017, 05:46:28 pm »
1.4.6 ¿Qué incluye el programa C# ?

Si quisieras decirle cómo hacer tu pastel de frutas favorito, escribiría la Receta abajo en un trozo de papel.
La receta sería una lista de ingredientes seguida por la secuencia de acciones a realizar en ellos.

El programa puede ser considerado como una receta, pero escrito para una computadora a seguir, no un Cook
Los ingredientes serán valores (llamados variables) que desea que su programa trabajar con el programa en sí será una secuencia de acciones (llamadas declaraciones) que son a seguir por la computadora. En lugar de escribir el programa en un pedazo de lo pones en un archivo en la computadora, a menudo llamado un archivo de origen.

Esto es lo que actúan los actores. Un archivo de origen contiene tres cosas:
  • información sobre las estructuras que almacenarán los datos a almacenar y manipulado.
  • instrucciones que manipulan los datos.
  • instrucciones al compilador

Para tomar estos a su vez: Control del compilador.
El compilador C # necesita saber ciertas cosas acerca de su programa. Necesita saber qué recursos externos su programa va a utilizar. También se le puede decir opciones para la construcción de su programa que son importantes. Algunas partes de su programa simplemente proporcionará esta información para decirle al compilador qué hacer.
Almacenamiento de los datos los programas funcionan procesando datos. Los datos deben almacenarse en el ordenador mientras el programa lo procesa. Todos los idiomas de la computadora soportan variables de un formulario u otro.
Una variable es simplemente una ubicación con nombre en la que se mantiene el valor mientras la se ejecuta el programa. C # también le permite construir estructuras que contienen más de un elemento, Por ejemplo, una estructura única podría  contener toda la información sobre un banco en particular Cliente La parte del proceso de diseño del programa necesitará decidir qué ítems de los datos deben almacenarse. También debe decidir los nombres confidenciales que utilizará para identifique estos elementos.

Computadoras y Programas C#

Describiendo la solución:
Las instrucciones reales que describen su solución al problema también deben ser parte de su programa. Una instrucción simple, simple para hacer algo en un programa C # es llamó una declaración. Una instrucción es una instrucción para realizar una operación particular, para Ejemplo agregue dos números juntos y guarde el resultado. Lo realmente emocionante de los programas es que algunas declaraciones pueden cambiar lo que la declaración se realiza a continuación, para que su programa pueda ver las cosas y decidir qué todas. En el caso de C# puede agrupar declaraciones en conjunto para formar un bulto de programa que hace una tarea particular. Tal protuberancia se llama un método. Descanso programado del horario abajo un problema en un número de pequeños y haga un método para cada uno. El método puede ser muy pequeño o muy grande. Puede volver al valor que puede o puede no es de interés. Puede tener cualquier nombre que te guste, y tu programa puede contener muchos métodos como mejor le parezca. Un método puede referirse a otros. El lenguaje C # también tiene un gran número de bibliotecas disponibles que puede utilizar. Estos le salvan de "Re-inventar la rueda" cada vez que escribes un programa. Examinaremos los métodos detalle más adelante en estas notas.

Identificadores y palabras clave
Usted da un nombre a cada método que crea, e intenta hacer el nombre de la mostrar ajuste o qué hacer. ShowMenu o SaveToFile. El lenguaje C # en realidad ejecuta su programa buscando un método con un nombre especial, Main. Este el método se llama cuando el programa comienza a ejecutarse, y cuando termina principal, su el programa termina. Los nombres que inventaste se llaman identificadores. Tú también crea identificadores cuando haces cosas para retener valores; WoodLength puede ser una buena opción cuando queremos sostener la longitud de la madera requerida. Más tarde veremos en las reglas y convenciones que debe observar cuando crea identificadores.

Las palabras que forman parte del lenguaje C # en sí se llaman palabras clave. En una receta sería algo así como "mezcla" o "calor" o "hasta". Ellos dirían cosas como "calor de azúcar hasta que se funden" o "mezclar hasta suave". De hecho, usted encontrará que los programas se parecen mucho a las recetas. Las palabras clave aparecerán en azul en algunos de los listados en este texto 

Objetos algunas de las cosas en los programas que escribimos son objetos que forman parte del marco que estamos utilizando. Para continuar nuestra analogía de cocina, estas son cosas como mezclar tazones y hornos, que se utilizan durante el proceso de cocción. Los nombres de los objetos se dará en un tono diferente de azul en algunos de los listados en este texto.

Texto en un programa informático
Hay dos tipos de texto en su programa. Hay las instrucciones que deseas el ordenador a ejecutar y hay los mensajes que desea que el programa en realidad aparecen delante del usuario. Su madre puede agregar la siguiente instrucción a su receta de pastel:
Ahora escriba las palabras "Feliz Navidad" encima de la torta en la formación de hielo rosada. ella está usando los caracteres de la cotización doble para marcar el texto que se dibujará en el pastel,
y C# funciona exactamente de la misma manera. "Feliz Navidad" no es parte de la instrucciones; Es lo que necesita ser escrito. Este tipo de mensajes son de color rojo en este texto.

Colores y Convenciones
Los colores que utilizo en este texto están destinados a alinearse con los colores que verá cuando edite sus programas usando un editor de programas profesional como el suministrado como parte de Visual Studio. Los colores sólo sirven para hacer los programas más fáciles de entender, y no tienen ningún significado especial. Se agregan automáticamente por el editor mientras escribe su programa.

5
Lack Of Love / Node Editor
« on: February 05, 2017, 09:57:43 pm »

6
Lack Of Love / Referencias Web
« on: December 29, 2016, 09:13:44 am »
lista de paginas web referencias de lectura y consulta


Aunque WIKIPEDIA es una fuente muy grande de información, NO ES CONFIABLE, sin embargo la uso como referencia para encontrar ( hompage ) conocidos como sitios oficiales o sitio del desarrollador.



7
Lack Of Love / Tabla de conversion Milimetros - Pixeles
« on: December 25, 2016, 02:50:36 pm »
  • 1 mm =   3.779528 px
  • 2 mm =   7.559055 px
  • 3 mm =   11.338583 px
  • 4 mm =   15.11811 px
  • 5 mm =   18.897638 px
  • 6 mm =   22.677165 px
  • 7 mm =   26.456693 px
  • 8 mm =   30.23622 px
  • 9 mm =   34.015748 px
  • 10 mm =   37.795276 px
  • 11 mm =   41.574803 px
  • 12 mm =   45.354331 px
  • 13 mm =   49.133858 px
  • 14 mm =   52.913386 px
  • 15 mm =   56.692913 px
  • 16 mm =   60.472441 px
  • 17 mm =   64.251969 px
  • 18 mm =   68.031496 px
  • 19 mm =   71.811024 px
  • 20 mm =   75.590551 px
  • 21 mm =   79.370079 px
  • 22 mm =   83.149606 px
  • 23 mm =   86.929134 px
  • 24 mm =   90.708661 px
  • 25 mm =   94.488189 px
  • 26 mm =   98.267717 px
  • 27 mm =   102.047244 px
  • 28 mm =   105.826772 px
  • 29 mm =   109.606299 px
  • 30 mm =   113.385827 px
  • 31 mm =   117.165354 px
  • 32 mm =   120.944882 px
  • 33 mm =   124.724409 px
  • 34 mm =   128.503937 px
  • 35 mm =   132.283465 px
  • 36 mm =   136.062992 px
  • 37 mm =   139.84252 px
  • 38 mm =   143.622047 px
  • 39 mm =   147.401575 px
  • 40 mm =   151.181102 px
  • 41 mm =   154.96063 px
  • 42 mm =   158.740157 px
  • 43 mm =   162.519685 px
  • 44 mm =   166.299213 px
  • 45 mm =   170.07874 px
  • 46 mm =   173.858268 px
  • 47 mm =   177.637795 px
  • 48 mm =   181.417323 px
  • 49 mm =   185.19685 px
  • 50 mm =   188.976378 px

8
Lack Of Love / Manual de Usuario BLENDER
« on: December 25, 2016, 03:39:22 am »
Introducción
Después de iniciar Blender y cerrar la pantalla Splash, tu Blender debería verse como en la imagen de abajo. La interfaz de usuario de Blender es consistente en todas las plataformas.



Interface Elements

Window ‣ Screen ‣ Areas ‣ Editors ‣ Regions ‣ (Tabs) ‣ Panels ‣ Controls



Controles

La interfaz se puede personalizar para que coincida con las tareas específicas que utilizan Layouts de pantalla, que pueden ser nombrados y guardados para su uso posterior. La pantalla predeterminada se describe a continuación.

Una pantalla está organizada en una o más Áreas con cada área que contiene un Editor.

9
Lack Of Love / UV mapping Step 1:
« on: December 24, 2016, 01:24:31 pm »
Esta es una Traducción lo mas fielmente posible de esta pagina http://www.chocofur.com/5-uv-mapping.html, aunque cabe mencionar que le voy a quitar toda la narrativa necesaria

Paso 1 Proyecto desde vista

UV MAPPING
El Mapeo UV se trata de lo siguiente. Antes de poner una textura en cualquier objeto en el espacio 3D debe hacer su geometría perfectamente plana. Esto se debe a las imágenes de textura son sólo un plano, las superficies y cada forma 3D tiene que ser transición a dos dimensiones también. Puede parecer un poco confuso, trate de recordar las clases de geometría que tenía en la escuela. probablemente hizo un un modelo de papel de cubo y el dibujo de su "malla" antes de cortarlo y pegarlo. Este es otro ejemplo de cómo funciona el mapeo UV.



Con todo lo que se dice, estoy seguro de que ahora seguirá las técnicas que estoy utilizando en Blender a UV mapa de modelos 3D para que muestren diversas texturas correctamente. no voy a cubrir cómo UV mapa de todos los elementos de escena, ya que tomaría demasiado tiempo. En cambio, me estoy centrando en las técnicas principales y éstas pueden ser fácilmente implementadas en casi todos los entornos o elementos.

La forma más rápida de empezar será simplemente agregar los objetos más simples y tratar de UV mapa de ellos. Cree un cubo básico y entre en el modo de edición. Seleccione todas las caras y pulse el botón "U". Aparecerá una lista de mapeo UV y podrá ver muchos métodos de asignación diferentes disponibles en Blender. Seleccione la primera de la parte superior que es Unwrap. Como ve, nada cambia en la ventana de visualización 3D ya que nuestro mapa UV se mostrará en otro espacio de trabajo. Abra UV / Editor de imágenes y ver cómo su nuevo mapa UV generado parece.



NOTA Hay muchos métodos de mapeo UV, cubrire los que más uso. Al terminar esta parte del tutorial, te recomiendo probar todos. Ahora describir uno de los métodos más fáciles y más comúnmente utilizados.


Paso 1 Proyecto desde vista

Project From View es un método muy fácil y rápido de asignar su geometría. Lo que hace es "proyectar" la situación de la ventana actual a UV / Image Editor. No importa si está en Perspectiva o Vista ortogonal, Posición de la cámara en la parte superior, lateral o aleatoria - El proyecto de la vista siempre mapeará lo visible en el modo de edición.

Cree un cubo sencillo y entre en el modo de edición. Gire su visor en modo Perspectiva a cualquier ubicación, seleccione toda la geometría y pulse el botón U. Elija Proyecto de la vista y vea cómo se actualiza su editor de imágenes / UV. Ahora, cambie a Vista superior y repita la operación nuevamente. Consulte el Editor de UV actualizado.



NOTA IMPORTANTE
es importante saber desde el principio, que todas las operaciones de mapeo de UV se aplican sólo a los elementos de geometría seleccionados en el modo de edición. Las caras no seleccionadas no se verán afectadas por la operación de mapeo UV y esto nos da la oportunidad de mezclar diferentes métodos de mapeo UV - podemos aplicar Project From View en algunas de las caras y Unwrap los otros.

Ahora vamos a mapa UV algo relativamente simple - suelo, plano de piso en nuestro interior. Ocultar todos los elementos y dejar el piso sólo. Cambie a la vista superior e ingrese al modo de edición. Presione U y elija Proyecto de vista. Vamos a ver la actualización en UV / Image Editor y comprobar si algo cambia después de cargar la textura de la imagen. Como puede ver a continuación, nuestro mapeo UV se ha deformado ligeramente y eso se debe a que la proyección se realizó por defecto, diseño de mapa de tamaño cuadrado. Por ejemplo, si tuviéramos un mapa de textura 4096 x 4096, no aparecería ninguna deformación. Para solucionar este problema, simplemente vuelva a proyectar desde la vista.





Todo parece ser correcto, pero sería bueno tener una vista previa de nuestro mapeo y textura en la vista 3D. Para ello, es necesario crear un ciclo básico de sombreado (basic Cycles diffuse shader) difuso. Agregar nodo de textura de imagen, conéctelo como una entrada de color y cargue el archivo de textura de madera. Después de eso, sólo tiene que cambiar el modo de sombreado de vista a Textura.



Como se puede ver, los tablones de madera son demasiado grandes y tenemos que reducirlos. Ya conoces 3 tipos básicos de transformación: (S) caling, (R) otating y (G) rabbing, todos estos trabajos en UV / Image Editor, así que simplemente escala nuestro mapa de UV por lo que parece correcto en la ventana de visualización.



Otra cosa que vale la pena mencionar aquí - personalmente prefiero hacer todas las operaciones de mapeo UV en la textura de la imagen real que se aplicará en el modelo final. Para realizar la escala de mapas UV más allá de los límites de diseño de la textura en 2D, necesitará un mosaico. Puede descargar la textura de piso utilizada anteriormente o utilizar algunas de las texturas incluidas en nuestras muestras de modelos gratuitos. o ingrese a una cuenta de chocofur http://www.chocofur.com/en la barra de navegación superior y navegue por los archivos gratuitos.










11
Lack Of Love / Modo de Postear
« on: December 23, 2016, 01:27:06 pm »
    • Cada tema tendrá su propio hilo
    • Una vez terminado el tema se creara un concentrado con las preguntas y respuestas ya concentradas y específicamente sobre el tema
          ( limpiaremos los comentarios necesarios para solo dejar la solución que encontramos )
    • Prohibido que su EGO de  ARTISTA, los haga perder los estribos
    • si quieres desarrollar un tema a modo de Tutorial o Curso, Indicar en el titulo del post la modalidad
          quien participe en el hará su pregunta específicamente y de igual forma se contestara, como un Aula Virtual
    • Toda sugerencia respecto a lo que sea de el proyecto pueden hacerla aqui en las replicas, leer las que ya hayan hecho para que no se repitan peticiones
           y si crees que falta complementar algo de alguna sugerencia, replicar en la sugerencia para que se pueda seguir el orden y aplicar la mejora

    Por mi parte este espacio es de todos NOSOTROS, somos completamente desconocidos, pero educados, si se enojan con alguien RECUERDEN RESPIRAR PROFUNDO Y LENTO Y CONTAR HASTA MAS DE 10 SI LO NECESITAS, si le damos solides a una amistad y buena convivencia es un proyecto que tendrá mucho éxito ante cualquier circunstancia

    se vale enseñar todo lo que quieras para que todos alcancemos el mismo nivel posible  y si alguien quiere aprender algo también es valido, por favor a quien le pidan que enseñe algo sean buena onda y hagan lo posible por enseñarlo, no solo nos manden bien lejos a tomar una lectura, recuerden que cada persona tiene su propia forma de aprender, unos visualmente otros a través del lenguaje otros leyendo o sobre la practica.

    que nos ofrece este proyecto ???

    primero que nada es una cuestión personal que tengo inquietud de desarrollar y un poco de coraje, últimamente muchos niños o chavos hijos de amigos de vecinos mis sobrino, me preguntan mucho que juegos pueden jugar de X o Y genero que se adapte a su computadora porque descargaron el que esta de moda y la maldita LAP o la PC no dn el ancho porque no manejan una tarjeta gráfica de buenas prestaciones, y papa o mama no tienen para gastar 300 DLL en una de estas, ademas le das la posibilidad a mucha gente que tiene necesidad de reciclar una PC antigua, a acceder a una forma de divertirse que por la razón que sea no tendrían oportunidad porque los juegos de hace 5 años a tras ya te exigen un procesador CORE DUO como mínimo, porque hasta los CELERON son una porquería aunque sean de 64 bits.

    y otras razones ya de 3er grado que son mas personales, como desarrollar mi capacidad de programador mis haya de lo administrativo en redes y bases de datos.
    que me impulsa ? pues que de chico si tuve un ATARI 2600 pero después de ese mi siguiente consola fue una SUPER NES que alguien tiro a la basura y yo la repare para poder jugar con ella, cuando estaba estudiando por ahí de los 90's, asi es mi economía no era muy mala pero tampoco fue la mejor de todas, y se lo que se siente no poder tener la consola de ultima generacion y que te digan oye jugaste tal juego y tu respondas ah.. éee... de que me hablas ? si yo todavía juego con mis G.I. YOU. jajajajajajaj.

    este es su espacio Bien venidos tODOS

13
Slackware 14.1 / mke2fs - create an ext2/ext3/ext4 filesystem
« on: August 31, 2016, 07:26:27 pm »
Name
mke2fs - create an ext2/ext3/ext4 filesystem
Synopsis
mke2fs [ -c | -l filename ] [ -b block-size ] [ -f fragment-size ] [ -g blocks-per-group ] [ -G number-of-groups ] [ -i bytes-per-inode ] [ -I inode-size ] [ -j ] [ -J journal-options ] [ -K ] [ -N number-of-inodes ] [ -n ] [ -m reserved-blocks-percentage ] [ -o creator-os ] [ -O feature[,...] ] [ -q ] [ -r fs-revision-level ] [ -E extended-options ] [ -v ] [ -F ] [ -L volume-label ] [ -M last-mounted-directory ] [ -S ] [ -t fs-type ] [ -T usage-type ] [ -U UUID ] [ -V ] device [ blocks-count ]

mke2fs -O journal_dev [ -b block-size ] [ -L volume-label ] [ -n ] [ -q ] [ -v ] external-journal [ blocks-count ]
Description
mke2fs is used to create an ext2, ext3, or ext4 filesystem, usually in a disk partition. device is the special file corresponding to the device (e.g /dev/hdXX). blocks-count is the number of blocks on the device. If omitted, mke2fs automagically figures the file system size. If called as mkfs.ext3 a journal is created as if the -j option was specified.

The defaults of the parameters for the newly created filesystem, if not overridden by the options listed below, are controlled by the /etc/mke2fs.conf configuration file. See the mke2fs.conf(5) manual page for more details.
Options

-b block-size
    Specify the size of blocks in bytes. Valid block-size values are 1024, 2048 and 4096 bytes per block. If omitted, block-size is heuristically determined by the filesystem size and the expected usage of the filesystem (see the -T option). If block-size is negative, then mke2fs will use heuristics to determine the appropriate block size, with the constraint that the block size will be at least block-size bytes. This is useful for certain hardware devices which require that the blocksize be a multiple of 2k.
-c
    Check the device for bad blocks before creating the file system. If this option is specified twice, then a slower read-write test is used instead of a fast read-only test.
-E extended-options
    Set extended options for the filesystem. Extended options are comma separated, and may take an argument using the equals ('=') sign. The -E option used to be -R in earlier versions of mke2fs. The -R option is still accepted for backwards compatibility. The following extended options are supported:
stride=stride-size
    Configure the filesystem for a RAID array with stride-size filesystem blocks. This is the number of blocks read or written to disk before moving to the next disk, which is sometimes referred to as the chunk size. This mostly affects placement of filesystem metadata like bitmaps at mke2fs time to avoid placing them on a single disk, which can hurt performance. It may also be used by the block allocator.
stripe-width=stripe-width
    Configure the filesystem for a RAID array with stripe-width filesystem blocks per stripe. This is typically stride-size * N, where N is the number of data-bearing disks in the RAID (e.g. for RAID 5 there is one parity disk, so N will be the number of disks in the array minus 1). This allows the block allocator to prevent read-modify-write of the parity in a RAID stripe if possible when the data is written.
resize=max-online-resize
    Reserve enough space so that the block group descriptor table can grow to support a filesystem that has max-online-resize blocks.
lazy_itable_init[= <0 to disable, 1 to enable>]
    If enabled and the uninit_bg feature is enabled, the inode table will not be fully initialized by mke2fs. This speeds up filesystem initialization noticeably, but it requires the kernel to finish initializing the filesystem in the background when the filesystem is first mounted. If the option value is omitted, it defaults to 1 to enable lazy inode table initialization.
test_fs
    Set a flag in the filesystem superblock indicating that it may be mounted using experimental kernel code, such as the ext4dev filesystem.
-f fragment-size
    Specify the size of fragments in bytes.
-F
    Force mke2fs to create a filesystem, even if the specified device is not a partition on a block special device, or if other parameters do not make sense. In order to force mke2fs to create a filesystem even if the filesystem appears to be in use or is mounted (a truly dangerous thing to do), this option must be specified twice.
-g blocks-per-group
    Specify the number of blocks in a block group. There is generally no reason for the user to ever set this parameter, as the default is optimal for the filesystem. (For administrators who are creating filesystems on RAID arrays, it is preferable to use the stride RAID parameter as part of the -E option rather than manipulating the number of blocks per group.) This option is generally used by developers who are developing test cases.
-G number-of-groups
    Specify the number of block groups that will be packed together to create a larger virtual block group (or "flex_bg group") in an ext4 filesystem. This improves meta-data locality and performance on meta-data heavy workloads. The number of groups must be a power of 2 and may only be specified if the flex_bg filesystem feature is enabled.
-i bytes-per-inode
    Specify the bytes/inode ratio. mke2fs creates an inode for every bytes-per-inode bytes of space on the disk. The larger the bytes-per-inode ratio, the fewer inodes will be created. This value generally shouldn't be smaller than the blocksize of the filesystem, since in that case more inodes would be made than can ever be used. Be warned that it is not possible to expand the number of inodes on a filesystem after it is created, so be careful deciding the correct value for this parameter.
-I inode-size
    Specify the size of each inode in bytes. mke2fs creates 256-byte inodes by default. In kernels after 2.6.10 and some earlier vendor kernels it is possible to utilize inodes larger than 128 bytes to store extended attributes for improved performance. The inode-size value must be a power of 2 larger or equal to 128. The larger the inode-size the more space the inode table will consume, and this reduces the usable space in the filesystem and can also negatively impact performance. Extended attributes stored in large inodes are not visible with older kernels, and such filesystems will not be mountable with 2.4 kernels at all. It is not possible to change this value after the filesystem is created.
-j
    Create the filesystem with an ext3 journal. If the -J option is not specified, the default journal parameters will be used to create an appropriately sized journal (given the size of the filesystem) stored within the filesystem. Note that you must be using a kernel which has ext3 support in order to actually make use of the journal.
-J journal-options
    Create the ext3 journal using options specified on the command-line. Journal options are comma separated, and may take an argument using the equals ('=') sign. The following journal options are supported:
size=journal-size
    Create an internal journal (i.e., stored inside the filesystem) of size journal-size megabytes. The size of the journal must be at least 1024 filesystem blocks (i.e., 1MB if using 1k blocks, 4MB if using 4k blocks, etc.) and may be no more than 102,400 filesystem blocks.
device=external-journal
    Attach the filesystem to the journal block device located on external-journal. The external journal must already have been created using the command
mke2fs -O journal_dev
    external-journal
Note that
    external-journal must have been created with the same block size as the new filesystem. In addition, while there is support for attaching multiple filesystems to a single external journal, the Linux kernel and e2fsck(8) do not currently support shared external journals yet.
Instead of specifying a device name directly,
    external-journal can also be specified by either LABEL=label or UUID=UUID to locate the external journal by either the volume label or UUID stored in the ext2 superblock at the start of the journal. Use dumpe2fs(8) to display a journal device's volume label and UUID. See also the -L option of tune2fs(8).
Only one of the
    size or device options can be given for a filesystem.
-K
    Keep, do not attempt to discard blocks at mkfs time (discarding blocks initially is useful on solid state devices and sparse / thin-provisioned storage).
-l filename
    Read the bad blocks list from filename. Note that the block numbers in the bad block list must be generated using the same block size as used by mke2fs. As a result, the -c option to mke2fs is a much simpler and less error-prone method of checking a disk for bad blocks before formatting it, as mke2fs will automatically pass the correct parameters to the badblocks program.
-L new-volume-label
    Set the volume label for the filesystem to new-volume-label. The maximum length of the volume label is 16 bytes.
-m reserved-blocks-percentage
    Specify the percentage of the filesystem blocks reserved for the super-user. This avoids fragmentation, and allows root-owned daemons, such as syslogd(8), to continue to function correctly after non-privileged processes are prevented from writing to the filesystem. The default percentage is 5%.
-M last-mounted-directory
    Set the last mounted directory for the filesystem. This might be useful for the sake of utilities that key off of the last mounted directory to determine where the filesystem should be mounted.
-n
    Causes mke2fs to not actually create a filesystem, but display what it would do if it were to create a filesystem. This can be used to determine the location of the backup superblocks for a particular filesystem, so long as the mke2fs parameters that were passed when the filesystem was originally created are used again. (With the -n option added, of course!)
-N number-of-inodes
    Overrides the default calculation of the number of inodes that should be reserved for the filesystem (which is based on the number of blocks and the bytes-per-inode ratio). This allows the user to specify the number of desired inodes directly.
-o creator-os
    Overrides the default value of the "creator operating system" field of the filesystem. The creator field is set by default to the name of the OS the mke2fs executable was compiled for.
-O feature[,...]
    Create a filesystem with the given features (filesystem options), overriding the default filesystem options. The features that are enabled by default are specified by the base_features relation, either in the [defaults] section in the /etc/mke2fs.conf configuration file, or in the [fs_types] subsections for the usage types as specified by the -T option, further modified by the features relation found in the [fs_types] subsections for the filesystem and usage types. See the mke2fs.conf(5) manual page for more details. The filesystem type-specific configuration setting found in the [fs_types] section will override the global default found in [defaults].

    The filesystem feature set will be further edited using either the feature set specified by this option, or if this option is not given, by the default_features relation for the filesystem type being created, or in the [defaults] section of the configuration file.

    The filesystem feature set is comprised of a list of features, separated by commas, that are to be enabled. To disable a feature, simply prefix the feature name with a caret ('^') character. The pseudo-filesystem feature "none" will clear all filesystem features.
dir_index
    Use hashed b-trees to speed up lookups in large directories.
extent
    Instead of using the indirect block scheme for storing the location of data blocks in an inode, use extents instead. This is a much more efficient encoding which speeds up filesystem access, especially for large files.
filetype
    Store file type information in directory entries.
flex_bg
    Allow the per-block group metadata (allocation bitmaps and inode tables) to be placed anywhere on the storage media. In addition, mke2fs will place the per-block group metadata together starting at the first block group of each "flex_bg group". The size of the flex_bg group can be specified using the -G option.
has_journal
    Create an ext3 journal (as if using the -j option).
journal_dev
    Create an external ext3 journal on the given device instead of a regular ext2 filesystem. Note that external-journal must be created with the same block size as the filesystems that will be using it.
large_file
    Filesystem can contain files that are greater than 2GB. (Modern kernels set this feature automatically when a file > 2GB is created.)
resize_inode
    Reserve space so the block group descriptor table may grow in the future. Useful for online resizing using resize2fs. By default mke2fs will attempt to reserve enough space so that the filesystem may grow to 1024 times its initial size. This can be changed using the resize extended option.
sparse_super
    Create a filesystem with fewer superblock backup copies (saves space on large filesystems).
uninit_bg
    Create a filesystem without initializing all of the block groups. This feature also enables checksums and highest-inode-used statistics in each blockgroup. This feature can speed up filesystem creation time noticeably (if lazy_itable_init is enabled), and can also reduce e2fsck time dramatically. It is only supported by the ext4 filesystem in recent Linux kernels.
-q
    Quiet execution. Useful if mke2fs is run in a script.
-r revision
    Set the filesystem revision for the new filesystem. Note that 1.2 kernels only support revision 0 filesystems. The default is to create revision 1 filesystems.
-S
    Write superblock and group descriptors only. This is useful if all of the superblock and backup superblocks are corrupted, and a last-ditch recovery method is desired. It causes mke2fs to reinitialize the superblock and group descriptors, while not touching the inode table and the block and inode bitmaps. The e2fsck program should be run immediately after this option is used, and there is no guarantee that any data will be salvageable. It is critical to specify the correct filesystem blocksize when using this option, or there is no chance of recovery.
-t fs-type
    Specify the filesystem type (i.e., ext2, ext3, ext4, etc.) that is to be created. If this option is not specified, mke2fs will pick a default either via how the command was run (for example, using a name of the form mkfs.ext2, mkfs.ext3, etc.) or via a default as defined by the /etc/mke2fs.conf(5) file. This option controls which filesystem options are used by default, based on the fstypes configuration stanza in /etc/mke2fs.conf(5).

    If the -O option is used to explicitly add or remove filesystem options that should be set in the newly created filesystem, the resulting filesystem may not be supported by the requested fs-type. (e.g., "mke2fs -t ext3 -O extents /dev/sdXX" will create a filesystem that is not supported by the ext3 implementation as found in the Linux kernel; and "mke2fs -t ext3 -O ^has_journal /dev/hdXX" will create a filesystem that does not have a journal and hence will not be supported by the ext3 filesystem code in the Linux kernel.)
-T usage-type[,...]
    Specify how the filesystem is going to be used, so that mke2fs can choose optimal filesystem parameters for that use. The usage types that are supported are defined in the configuration file /etc/mke2fs.conf(5). The user may specify one or more usage types using a comma separated list.

    If this option is is not specified, mke2fs will pick a single default usage type based on the size of the filesystem to be created. If the filesystem size is less than or equal to 3 megabytes, mke2fs will use the filesystem type floppy. If the filesystem size is greater than 3 but less than or equal to 512 megabytes, mke2fs(8) will use the filesystem small. Otherwise, mke2fs(8) will use the default filesystem type default.
-U UUID
    Create the filesystem with the specified UUID.
-v
    Verbose execution.
-V
    Print the version number of mke2fs and exit.

Author
This version of mke2fs has been written by Theodore Ts'o <tytso@mit.edu>.
Bugs
mke2fs accepts the -f option but currently ignores it because the second extended file system does not support fragments yet.
There may be other ones. Please, report them to the author.
Availability
mke2fs is part of the e2fsprogs package and is available from http://e2fsprogs.sourceforge.net.

14
Slackbuilds.org

En Slackbuilds.org podran descargar algun programa que no tenga Slackware en sus paquetes oficiales.

La forma de instalarlo es muy sencilla, veamos como:

1.- Entrar a la pagina Slackbuilds.org y busca nuestro programa seleccionando nuestra version.

Por ejemplo "unrar" para descomprimir archivos rar.

2.- Descargar la fuente del programa "unrarsrc-3.9.6.tar.gz" y el SlackBuild "unrar.tar.gz" recuerden que el Slackbuild no incluye la fuente.

3.- Descomprimir el SlackBuild:
#tar xzvf unrar.tar.gz

Movemos la fuente del programa a la carpeta recien descomprimida del SlackBuild
#mv unrarsrc-3.9.6.tar.gz unrar/

Nota: Si la version del programa es mas nueva que el especificado por el script de SlackBuild, necesitas modificar el script. Usando algun editor de tu gusto, abrimos el archivo unrar.SlackBuild y buscamos la linea "VERSION".

Cambiamos la version por la nueva especificada en la fuente del programa.

Ejemplo:
VERSION=${VERSION:-3.9.8}

Nota 2: Si estas usando Slackware 13 de 64bit, buscas la linea "ARCH" y la cambias por la opcion:

- x86_64 Procesadores de 64bit

Otras de las opciones validas son:

- i486 Computadores antiguos (no lo recomiendo)
- i686 Cualquier computador nuevo de 32bits

Hay mas opciones pero con esas son suficientes.

Ejemplo:
ARCH=${ARCH:-x86_64}
ARCH=${ARCH:-i686}

Puedes buscar por google o la wikipedia, aqui un resumen de las arquitecturas:
http://foro.noticias3d.com/vbulletin/showpost.php?p=687800&postcount=2

4.- Le damos permisos de ejecucion al script
#chmod +x unrar.SlackBuild

Lo ejecutamos
#./unrar.SlackBuild

4.- Instalamos el paquete:

Ahora si todo se ha salido bien sin error (la compilacion), el paquete finalizado deberia estar en el directorio "OUTPUT" declarado en el SlackBuild script que por defecto es el directorio /tmp.

Para instalar el programa solo hacemos:
#installpkg /tmp/unrar-3.9.6-i486-2_SBo.tgz

Nota: Es recomendable guardar nuestro paquete resultante en otro carpeta. Para que en un futuro si lo queremos instalar solo tengamos que hacer installpkg nombredelprograma.tgz

Como nota adicional, el SlackBuild nos va a detectar nuestro tipo de arquitectura si es i686, i585, etc... si por otras razones no hace la detección correcta, siempre tenemos la opcion de modificar el script como vimos mas arriba.

Pero a la larga puede resultar fastidioso, para eso podemos modificar el archivo profile:

#nano -w /etc/profile

Y agregamos la siguiente linea "export ARCH=i686" (Cambiando la arquitectura por la tuya) y ya con eso podemos tener nuestros slackbuilds con la arquitectura de nuestro computador.

Enlaces de Interes de Paquetes para Slackware:

http://slackbuilds.org/
http://linuxpackages.net/  ( creo que este link ya no sirve o cambio de direccion )
http://www.slacky.eu/



SlackBuilds de Alien BOB
http://connie.slackware.com/~alien/slackbuilds/

15
Guía Para Administradores de Sistemas GNU/Linux / 1
« on: July 31, 2016, 05:26:44 pm »

Pages: [1] 2 3