Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - RyogiShiki

#161
Java / Re: cannot find class
20 Febrero 2012, 18:18 PM
Código (java) [Seleccionar]

Ventana v1 = new Ventana("Ventana 1", true);
v1.mover()


Los atributos suelen ser privados y es bueno especificarlo.

Más info: http://foro.elhacker.net/empty-t345736.0.html

Saludos
#162
Mirándolo rápido no veo nada que objetar, para lo que mencionas al principio puedes usar "or":

Código (ruby) [Seleccionar]
if (ARGV[0])=="-h" or "--help"
help()


--EDIT--
Para que el archivo no se reemplace con File.rename puedes comprobar si el archivo ya existe con File.exist?(file)

Esta podría ser la forma correcta:
Código (ruby) [Seleccionar]

if (File.exist?(path_to_file))
   print "ERROR!!"


--EDIT--
Una sugerencia más, para reducir la cantidad de lineas, puedes definir una función más genérica, que reciba parámetros, y llamar a la función en base a los argumentos. Me refiero a que se simplifica mucho de la siguiente forma:

Código (ruby) [Seleccionar]
def reemplazar(caracter_a_reemplazar, nuevo_caracter)
   Find.find(ARGV[1].gsub("\\", "/")) { |path|
path = path.encode('utf-8')
if path[caracter_a_reemplazar] then
File.rename(path, path.gsub(caracter_a_reemplazar, nuevo_caracter))
$renamed += 1
end
$total += 1
   }
end

if (ARGV[0] == "-c" or "--comilla")
 reemplazar("\u004B", "\u0027")
else if ...


Saludos
#163
la manera de usarlo en el condicional, como devuelve true o false es la siguiente:

Código (ruby) [Seleccionar]

if (ARGV.empty?) then
   print "ARGV Vacio"
end


Como no se ha pasado ningun elemento como argumento entonces ARGV[0] que es el primer elemento del array no existe, por eso el método empty? se aplica al array como tal y no a un elemento de este

Existe buena documentación en la página de Ruby: http://www.ruby-lang.org/es/documentation/

En cuanto a lo del material, revisa este hilo: http://foro.elhacker.net/scripting/introducing_ruby_lo_que_debes_saber_sobre_ruby-t321085.0.html

Saludos
Saludos
#164
Scripting / Re: [Ruby] Error "undefined method"
20 Febrero 2012, 16:11 PM
El problema de este Script está en las variables. Las variables tienen un "scope" o contexto en el que son usadas. Al terminar dicho contexto la variable desaparece. En este caso las variables se crean en el método reset(), y cuando el método reset desaparece las variables desaparecen con este y no se pueden usar en otro método diferente. Para solucionar este problema se usan las denominadas variables globales, que en Ruby se identifican porque empiezan con un signo "$". Así si defines el método reset así no debería haber más problemas:

Código (ruby) [Seleccionar]

def reset()
$renamed = 0
$total = -1
end


Y recuerda entonces que para usarlas siempre han de estar antecedidas con el signo "$" por ejemplo: "#{$total}" si las quieres mostrar dentro de la cadena sin concatenar.

Saludos
#165
Scripting / Re: [RUBY] Mostrar caracter unicode
20 Febrero 2012, 07:47 AM
El problema del primer script está en esta linea:

Código (ruby) [Seleccionar]
print ' -comilla    (Reemplaza "´" por "'")' + "\n"

En donde debes escapar la comilla simple para que se encierre bien dentro de los pares de comillas, así:

Código (ruby) [Seleccionar]
print ' -comilla    (Reemplaza "´" por "\'")' + "\n"

Ahora para mostrar caracteres de tipo unicode debes usar comillas dobles y escapar el resto de comillas dobles de la siguiente forma:

Código (ruby) [Seleccionar]
# -*- coding: UTF-8 -*-

def help()
print "\n Opciones: \n\n"
print ' -?          (Elimina el caracter "¿")' + "\n"
print ' -comilla    (Reemplaza "´" por "\'")' + "\n"
print ' -ft         (Reemplaza " ft " por " feat. ")' + "\n"
print ' -ft.        (Reemplaza " ft. " por " feat. ")' + "\n"
print " -guion      (Reemplaza \"\u2013\" por \"-\")" + "\n"
end


Ahora desde que ARGV es un array puedes comprobar si está vacío de la siguiente manera:

Código (ruby) [Seleccionar]
ARGV.empty?

Lo que devuelve true o false dependiendo si tiene elementos o no.

--EDIT--
Puedes usar puts (put string) envés de print y esté adicionará el salto de linea al final sin necesidad de especificarlo con "\n"

Saludos
#166
Al parecer es culpa del cmd de Windows, que no está pasando los argumentos encodeados en utf-8 la solución usar este comando antes de correr el Script:

chcp 1252>NUL

y usar este Script:

Código (ruby) [Seleccionar]
# -*- coding: UTF-8 -*-

require 'find'
exit if Object.const_defined?(:Ocra)

rename = 0
total = 0

Find.find(ARGV[0].gsub("\\", "/")) { |path|
path = path.encode('utf-8')
if path["\u2013"] then
File.rename(path, path.gsub("\u2013", "-"))
rename += 1
end
total += 1
}

puts "Procesados: #{total} archivos" + " | " + "Renombrados: #{rename} archivos"


Saludos
#167
Cita de: EleKtro H@cker en 20 Febrero 2012, 03:47 AM
Tienes razón me estaba dando cuenta de eso ahora iba a editar el script

Y esto debe quedar así:
Código (ruby) [Seleccionar]
total = -1

Salu2

Eso si quieres empezar el conteo desde 0

Saludos.
#168
Hola.!

Bien me alegra que haya sido de ayuda. Con respecto a las modificaciones un simple arreglo. la variable total no te va a devolver la cantidad de archivos analizados, sino que te va a devolver la cantdad de archivos que no fueron renombrados, o los que en su nombre no tenian el caracter ilegal, para obtener el total has de hacer la suma por fuera del condicional if:

Código (ruby) [Seleccionar]
# -*- coding: UTF-8 -*-

require 'find'
exit if Object.const_defined?(:Ocra)

rename = 0
total = 0

Find.find(ARGV[0].gsub("\\", "/").encode('utf-8')) { |path|
path = path.encode('utf-8')
if path["\u2013"] then
File.rename(path, path.gsub("\u2013", "-"))
rename += 1
end
total += 1
}

puts "Procesados: #{total} archivos" + " | " + "Renombrados: #{rename} archivos"


Saludos.
#169
Java / Re: Problemas con jTextarea
20 Febrero 2012, 03:09 AM
Bueno si no vemos algo de código entonces no podremos ayudarte mucho.

Igual te dejo un ejemplo de como lo haria:

Código (java) [Seleccionar]
package jtarea;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;

/**
*
* @author ryogi
*/
public class JTArea extends JFrame implements ActionListener{
   
   private JTextArea textArea = new JTextArea(10, 10);
   private JTextField textToAppend = new JTextField(15);
   private JButton button = new JButton("Agregar a JTextArea");
   
   public JTArea() {
       setSize(200, 300);
       setResizable(false);
       setDefaultCloseOperation(EXIT_ON_CLOSE);
       setLayout(new FlowLayout());
       
       button.addActionListener(this);
       button.setActionCommand("Append");
       
       add(textArea);
       add(textToAppend);
       add(button);
       
       setVisible(true);
       
   }
 
   public static void main(String[] args) {
       JTArea jtarea = new JTArea();
   }

   @Override
   public void actionPerformed(ActionEvent e) {
       if (e.getActionCommand().equals("Append")) {
           textArea.append(textToAppend.getText());
       }
   }
}


Como veo que hasta ahora inicias, No sigas al pie de la letra el ejemplo, esto es solo un ejemplo y ésa no es la manera de estructurar una aplicación con GUI en Java.

Saludos
#170
Cita de: WaAYa HaCK en 19 Febrero 2012, 23:52 PM
Eso del ARGV[0] me parece raro, ya que argv(0) siempre ha sido el propio script.

Si bueno eso en C y entros lenguajes si quieres saber eso en ruby es con:

Código (ruby) [Seleccionar]
__FILE__

Saludos