sábado, 14 de septiembre de 2013

Habilitar resoluciones de pantalla en Ubuntu 12.04

Aquí se muestra la información para  poner o activar resoluciones que no aparecen en la configuración de monitores.

Al instalar un nuevo monitor panorámico, únicamente aparecían las resoluciones para el antiguo monitor de 4:3.

Tras mucha búsqueda encontré la información correcta en: http://samuelmartin.wordpress.com/2012/05/29/enabling-resolutions-in-ubuntu-12-04-lubuntu-12-04/

Como entrada recordatoria propia y para quien no domine el inglés, resumo los pasos aquí.

Los archivos de configuración del servidor X se han cambiado a /usr/share/X11/xorg.conf.d/

Ahí hay que crear un archivo 10-monitor.conf con la información conseguida a través de varios comandos:

1) Información de "modeline"

En una ventana de terminal escribimos el comando gtf, seguido de la resolución horizontal, la resolución vertical y la frecuencia de refresco vertical. Esta información aparecerá en el manual del monitor. Si no lo tienes busca por Internet. Así que para una resolución de 1920x1080 y una frecuencia de refresco de 60Hz, el comando a escribir sería:
gtf 1920 1080 60
Se mostrará algo así:
# 1920×1080 @ 60.00 Hz (GTF) hsync: 67.08 kHz; pclk: 172.80 MHz Modeline “1920x1080_60.00″  172.80  1920 2040 2248 2576  1080 1081 1084 1118  -HSync +Vsync
Únicamente nos interesa la segunda línea (destacada en negrita). Es lo que tendrás que escribir en el archivo 10-monitor.conf.

2) Información de nombre de interfaz de pantalla

En la ventana de terminal escribe: xrandr
Se mostrará algo como:
Screen 0: minimum 64 x 64, current 1920 x 1080, maximum 32000 x 32000 HDMI-1 connected 1920×1080+0+0 0mm x 0mm
 1920x1080_60.00    60.0*+
 1024x768    60.0 +    60.0
...

El nombre de interfaz de pantalla el el indicado justo antes de "connected". En este caso es "HDMI-1" (en negrita). Es lo que usaremos en el archivo 10-monitor.conf.

Crear el archivo 10-monitor.conf

Para activar la nueva resolución hay que crear el archivo /usr/share/X11/xorg.conf.d/10-monitor.conf

Así que en la ventana de la terminal escribimos:
sudo nano /usr/share/X11/xorg.conf.d/10-monitor.conf
En la ventana del editor nano (puedes usar cualquier otro), escribe lo siguiente, teniendo en cuenta que la información en negrita es la que hay que adaptar según la información arrojada por los comandos anteriormente explicados (la información de "modeline" va en una única línea):
 
Section "Monitor"
  Identifier "Monitor0"
    Modeline “1920x1080_60.00″  172.80  1920 2040 2248 2576  1080
 1081 1084 1118  -HSync +Vsync
EndSection
Section "Screen"
  Identifier "Screen0"
  Device "HDMI-1"
  Monitor "Monitor0"
  DefaultDepth 24
  SubSection "Display"
    Depth 24
    Modes "1920X1080_60.00" "1024x768"
  EndSubSection
EndSection
 

La última información de "Modes" es la lista de resoluciones admitidas. Deben existir en la información que muestra el comando xrandr (la primera columna), poniéndolas entre comillas y separadas con un espacio en blanco.

Hay que guardar el archivo y al reiniciar ya estarán disponibles las resoluciones indicadas en "Modes".

Bueno, al final no he resumido mucho, pero será más comprensible.

martes, 5 de julio de 2011

Arreglar stick analógico de la PSP

Hace poco tenía una PSP fat de las primeras y se quedó pillado el mando analógico hacia abajo.
Lo desmonté varias veces, limpiando la goma conductora que tiene cuatro cables metálicos en el interior y también los contactos de placa y stick. Lo monté apretando bien los tornillos pero nada; seguía con el mismo problema.

Se lo comenté al dependiente de una tienda especializada, que me consta que contrala mucho del tema, y me dijo que poner la gomita "tenía truco".

Pues ya he conseguido que vuelva a la vida. La idea es que haga más presión para que haga buen contacto. Probé primero elevando el stick analógico de la carcasa superior, metiendo algo entre el stick y la carcasa, pero no iba.

La solución fue soldar un poco de estaño en los contactos del stick analógico. Si eres capaz de soldar sin que se unan los puntos de soldadura o conoces a alguien que te lo haga, ya lo tienes.


sábado, 20 de noviembre de 2010

Modificación de yUMLmeRails de Nelson Silva

yUMLmeRails es un plugin de Nelson Silva para extraer la información de los modelos y generar el modelo UML usando RailRoad o mediante la web http://yuml.me

El caso es que tengo demasiados modelos para plasmarlo en una única imagen y quería seccionarlo en varias. La modificación permite seleccionar los modelos sobre los que realizar el diagrama.

Para lograrlo, he añadido parámetros al generador de diagramas y he añadido una tarea rake que acepta como argumentos los modelos que tomará como base.

Los cambios son los siguientes:

Fichero 'lib/railroad/yUMLmeRails.rb'
línea #13:

define generate_diagram(additional_options={})

añadido desde línea #35, tras OpenStruct.new():

only=additional_options[:only].split('//').map{|fn| fn.include?('.rb') ? fn : "app/models/#{fn}.rb" }
puts "Generating for models: " + only.join(',')
options.only=only

---------------------
Fichero 'lib/rails_road/'
Sustituir en los métodos load_classes y generate las líneas:

files = Dir.glob("app/models/**/*.rb")
files += Dir.glob("vendor/plugins/**/app/models/*.rb") if @options.plugins_models
files -= @options.exclude

por

if @options.only && @options.only.size>0
files = @options.only
else
files = Dir.glob("app/models/**/*.rb")
files += Dir.glob("vendor/plugins/**/app/models/*.rb") if @options.plugins_models
files -= @options.exclude
end


---------------------
Fichero 'lib/tasks/yUMLmeRails.rake'
añadido:

desc "Get yUML URL for only models"
task :url_only, :only, :needs => :environment do |t, args|
args.with_default(:only => [])
puts YUMLME_URL << only =""> args[:only])
end

---------------------

Además, he añadido un controlador para generar desde el navegador:
Fichero añadido: 'app/controllers/yuml_controller.rb'

class YumlController < models="Dir.glob(">b}
end
def show_model
@models=params[:models].map{|x| File.basename(x).chomp('.rb')}
@models||=[]
@address=YUMLmeRails.generate_diagram({:only => @models})
@url="http://yuml.me/diagram/scruffy/class/#{CGI.escape(@address)}"
end
private
def extract_class_name(filename)
File.basename(filename).chomp(".rb").camelize
end
end

------------------------------
Fichero 'app/views/yuml/index.html.erb'

Models


<%form_tag :action => 'show_model' do -%>

    <%@models.each do |m|%>

  • <%=check_box_tag 'models[]', m%><%=h(m)%>

    <%end%>

<%=submit_tag 'Ver'%>
<%end%>

------------------------------------------
Fichero 'app/views/yuml/show_model.html.erb'

Modelo UML


Modelos:



    <%@models.each do |m|%>
  • <%=h m%>

  • <%end%>

URL en yuml.com:


<%=@address%>


IMAGEN DEL MODELO


<image src="<%=@url%>" />

-------------------------------
Para usar con rake: rake yUMLmeRails:url_only[model1//model2//...]
Para usar con rake y ruta: rake yUMLmeRails:url_only[app/models/model1.rb//...]
-------------------------------
Ejemplo del modelo completo con rake yUMLmeRails:url

Ejemplo del modelo usando rake yUMLmeRails:url_only[alumno]

lunes, 25 de octubre de 2010

FCKEditor múltiple con Lipsiadmin en Rails

En un anterior artículo se indicó la forma de usar un textarea con FCKEditor.

En el caso de necesitar varias entradas de textarea con el editor, se pueden hacer los siguientes cambios:

Cambiar el archivo javascripts/form.js, añadiendo otro identificador para que se incluya el FCKEditor con él:


function styledForms() {
hoverEffects();
buttonHovers();
formHovers();
//FCKEditor
var sBasePath = '/fckeditor/'
var oFCKeditor = new FCKeditor( 'FCKEditor', '100%', '400' ) ;
oFCKeditor.BasePath = sBasePath ;
oFCKeditor.ReplaceTextarea() ;
//PARA CADA TEXTAREA ADICIONAL CON FCKEDITOR DOS LÍNEAS COMO LAS SIGUIENTES
oFCKeditor.InstanceName='FCKEditor2' ;
oFCKeditor.ReplaceTextarea() ;
}


El atributo 'id' del textarea debe coincidir con los declarados anteriormente. En una de las vistas del backend del formulario parcial "_form.html.haml":


-tab "Clasificacion" do
%ul.form
%li
%div{:id => "clasificacion"}
=text_area :clasificacion, :tabla_clasificacion, :rows => 30, :id => 'FCKEditor'
-tab "Calendario" do
%ul.form
%li
%div{:id => "calendario"}
=text_area :clasificacion, :tabla_calendario, :rows => 30, :id => 'FCKEditor2'

sábado, 29 de mayo de 2010

Cómo hacer tu propio lápiz infrarrojo (IR pen) y táctil para usar con Wiimote

Tener una pizarra digital interactiva se ha convertido en algo muy asequible. Con un simple mando de Wii, un lápiz infrarrojo (IR pen) y algunos de los programas gratuitos o no, por menos de 100 €, aparte del proyector ya se tiene la pizarra digital.

En este artículo voy a mostrar cómo fabricar tu propio lápiz infrarrojo con pulsador manual y pulsación por presión del lápiz.

Material:



- Led infrarrojo (Vishay TSAL6400).
- Pulsador de placa horizontal de botón ancho.
- Pulsador de rosca para carcasa redondo.
- Portapilas AAA (No había de una pila, así que he apañado dos a partir de uno doble).
- Rotulador de pizarra blanca.
- Cable.
- Soldador y estaño.
- Termofusible.

Perforar el pulsador de rosca con un alambre en el soldador (enrollar estando desenchufado y frío!!!) para que entre una patilla del diodo infrarrojo y pegarla con pegamento instantáneo (el de la gota).





El portapilas AAA lo conseguí a partir de uno doble.



Perforar girando un cúter 4 agujeros para que encaje el pulsador plano. Agrandarlo con la punta de un destornillador. Retirar un trozo de envoltorio y rallar la superficie para que agarre al final el termofusible.


En el rotulador de pizarra blanca que tengo hay que retirar el tope interno. Se puede usar un destornillador plano pequeño.


La disposición interna será así:


He fabricado un soporte con el borde de una tarrina de CDs o DVDs:







Las conexiones y la posición de los componentes:



El portapilas que queda sin lateral se puede arreglar añadiendo un trozo de plástico (puede valer de tarrina de CD o cualquier envoltorio semirrígido (como el de un pendrive):



Las conexiones de las partes que quedarán en el interior:


Utilizar cables como guía para los cables del pulsador plano exterior y para guiar el led infrarrojo:


Soldar las puntas de los cables guía a los dos cables que van al pulsador externo y une el cable guía de la punta al led infrarrojo. Además he puesto funda de cable (lo que sobra al pelarlo) a las patas del led infrarrojo, he añadido un trozo de palillo de dientes entre las patas para darle mayor rigidez y lo he rodeado con cinta aislante. También he puesto cinta aislante por el lateral del pulsador de rosca para sujetar el cable que va al led y que no tire hacia fuera:



Ahora hay que ir tirando de los cables guía y empujando el pulsador con el led colocado. El soporte debe entrar un poco forzado pero no en exceso. Cuando esté bastante dentro seguir empujando con el portapilas. Éste es el paso delicado. Una vez que salga el led por la punta, retirar la cinta aislante y comprobar que funciona al presionar:



Ahora soltar los cables guía y soldar los cables al pulsador exterior en dos patas cruzadas (si uno va arriba a la derecha, el otro va abajo a la izquierda). Acabar pegandolo con termofusible:


Ya sólo falta cortar el tapón trasero para que se ajuste al final del portapilas y que así no se mueva nada en el interior:


Y ya está acabado:


Recuerda que contra más blando sea el pulsador de rosca más fácil será la pulsación por presión.

Vídeo de muestra de funcionamiento:

miércoles, 12 de mayo de 2010

Pizarra digital en Asus EEEPC con Ubuntu con el mando de Wii

Con el mando de la Wii es posible tener una pantalla táctil muy asequible.

En Windows no tuve problemas para hacer funcionar los programas que conectan y gestionan el mando de la Wii, pero en Linux siempre salía un problema con la pila (librerías) bluetooth: "Native Library bluecove not available". La distribución es la 9.10.

Probé a utilizar por separado bluz-gnome y gnome-bluetooth, pero daba el mismo fallo.

En freakingtips conseguí la solución al error: instalar las librerías de desarrollo de bluetooth libbluetooh-dev.


sudo apt-get install libbluetooth-dev


Usando el paquete gnome-bluetooth, ya conectaba sin problemas.

Los programas que he probado:

GTKWHITEBOARD (1.3): Funciona de lujo. Permite usar el botón derecho del ratón, apuntando a una zona exterior del borde de la pantalla. Está escrito en Python, por lo que hay que tener instaladas las librerías, que normalmente ya vienen por defecto. Siempre es importante leer las instrucciones que acompañan a los programas para evitar problemas de dependencias.

WIIMOTEWHITEBOARD: Funciona muy bien. No permite el botón derecho del ratón, pero se puede observar lo que ve la cámara del mando de la Wii para comprobar la calibración. Otro pequeño inconveniente es que hace falta descargarse la librería de BlueCove (versión 2.1.0) e incluirlas dentro del archivo JAR. Aquí se puede leer cómo hacerlo completo, pero en italiano. Para ver cómo incluir la librería BlueCove en inglés, mirar en la carpeta HELP de WiimoteWhiteboard.

martes, 2 de marzo de 2010

Problema con portátil de la Junta que se para en grub

En caso de que el portátil no arranque el sistema gráfico, y en su lugar aparezca el indicador "grub>", es síntoma que falta un archivo (concretamente menu.lst). Linux crea archivos de seguridad, por lo que hay una esperanza. Puede que haya sido debido a un apagado incorrecto.

Tras el indicador, escribir los siguientes pasos pulsando la tecla Enter tras cada línea (los números no se ponen y antes de '(' hay un espacio):
  1. root (hd0,0)
  2. setup (hd0)
  3. configfile /grub/menu.lst~
  4. reboot
Notas:
- el "0" de (hd0,0) es un cero.
- antes de los paréntesis va un espacio
- el teclado estará en inglés, por lo que los paréntesis están en el 9 y el cero, y la barra (/) en el menos (-)
- para escribir ~ se pulsa "AltGr" junto con la tecla "4", aunque no es necesario porque se puede autocompletar usando la tecla tabulador (a la izquierda de la Q) cuando esté escrito /boot/grub/men

Con estas instrucciones debería arrancar. Los siguientes inicios no deben tener problema. Si vuelve a aparecer el problema es posible que también haya desaparecido el archivo menu.lst~, por lo que la solución no será tan "sencilla".
 
javascript:void(0)