elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Mensajes
Páginas: 1 [2] 3 4
11  Programación / Scripting / Re: Atenti con el operador / en Python ahora xD en: 27 Febrero 2014, 18:15 pm
Pues si... es la "magia" de Python 3.
En versiones 2.x te devolvía un entero, en las nuevas versiones ahora te devuelve un flotante siempre ya que se hace una "floor division".
Si quieres remover la parte flotante del resultado, tienes que ejecutar la división con "//".


http://docs.python.org/3/tutorial/introduction.html
http://docs.python.org/3/glossary.html#term-floor-division






Si, lo de quitar los decimales y demás lo capté jaja pero me sorprendió y pensé que algún distraído tampoco lo habría notado jaja
12  Programación / Programación C/C++ / Re: Pregunta sobre APIs en Windows. en: 27 Febrero 2014, 18:02 pm
@xcore64:
Es justo lo que me faltaba! te lo re agradezco!

@Vaagish
Casualidades de la vida que justo tengo ese enlace abierto jajajaj Muchas gracias por la ayuda a ambos.


En cuánto tenga un código funcional lo subo :)

A probar y programar se ha dicho n.n

Muchísimas gracias.
13  Programación / Programación C/C++ / Re: [Aporte] Jumping intro C++ y C++ Complete reference 4th edition en: 27 Febrero 2014, 17:57 pm
Si, la verdad que los estoy ojeando es interesante, igual el de compresión me excede un poco... Por ahora me limito a Jumping jeje, a medida que vaya traduciendo partes considerables las voy subiendo.
14  Programación / Scripting / Atenti con el operador / en Python ahora xD en: 27 Febrero 2014, 17:44 pm
Hasta donde yo recordaba, si hacía algo así:
Código
  1. >>>3 / 2
  2. 1
  3. >>>3 // 2
  4. 1
  5. >>>3.0 / 2
  6. 1.5
  7. >>>3 / 2.0
  8. 1.5
  9.  

Python me devolvía un número entero si usaba / entre dos números enteros, y un número entero con // sin importar que fuesen float...

Formateo la PC, me bajo Python3.3.4 y me topo con lo siguiente (además de una web mejorada con una shell interactiva que se luce http://python.org/):
Código
  1. >>> 3 / 2
  2. 1.5
  3.  

¿Desde cuándo una división entre dos números enteros me devuelve float si o si? xD O siempre fue así y yo por algún motivo no me di cuenta? xD Busqué en la documentación sobre el último release y no dice nada al respecto D:


15  Programación / Programación C/C++ / Re: [Aporte] Jumping intro C++ y C++ Complete reference 4th edition en: 27 Febrero 2014, 17:09 pm
No de hay de qué...

Jumping intro C++ lo estamos comenzando a traducir con un amigo, pero nos va a llevar un tiempo considerable jaja
16  Sistemas Operativos / GNU/Linux / Re: Como descargar e instalar Google Chrome con apt-get install ...? en: 27 Febrero 2014, 07:47 am
Creo que lo tenés que descargar desde Google... entrás a Google y aparece el botón "obtener Google Chrome".

Soy un newbie en Linux, aviso... pero creo que podrías buscar algún repositorio que lo tenga o no sé bien como es la mano en caso de que quieras hacerlo si o si con apt-get... Bah, al menos yo intenté -pensé que era la única manera- y terminé descargándolo como indica en Google :P
17  Programación / Programación C/C++ / [Aporte] Jumping intro C++ y C++ Complete reference 4th edition en: 27 Febrero 2014, 07:03 am
Vi que no estaban colgamos, y son muy buenos, para tenerlos en cuenta:

http://ebook-dl.com/item/Jumping_into_C_Plus_Plus_Alex_Allain

http://ebook-dl.com/item/C_Plus_Plus_The_Complete_Reference_4th_Edition_Herbert_Schildt

http://ebook-dl.com/item/Data_Compression_The_Complete_Reference_Fourth_Edition_David_Salomon_G_Motta_D_Bryant

No los vi colgados, así que bueno, los comparto :P son de descarga gratuita :) Y cuentan con muuuchas páginas :)

Un abrazo.
18  Programación / Programación C/C++ / Re: Pregunta sobre APIs en Windows. en: 27 Febrero 2014, 06:53 am
En Python es relativamente sencillo, tenés el módulo ctypes en dónde podés acceder a librerías dinámicas mediante stdcall o cdecl, y tenés mapeados (creo que es el término correcto) los tipos de datos entre c, python y ctypes, tipo:

C       Python      Ctypes
int       int            c_int
long     int           c_long

Y así...

Tengo entendio por lo que vengo leyendo, que la función GetCurrentProcessId obtiene el pid del proceso actual, y yo lo que necesitaba era conseguir el pid de otro proceso, me estoy liando, se que me faltan cosas pero no se cuáles jaja

Abrazo!
19  Programación / Programación C/C++ / Pregunta sobre APIs en Windows. en: 27 Febrero 2014, 00:11 am
Disculpen que haga este hilo acá... realmente no se donde hacerlo jaja en fin, estoy experimentando con ctypes en Python (si lo sé esto es el subforo de C). Para eso me estoy informando con MSDN, y recurro a la sabiduría de los C-sianos (?) que la tienen calada...
Estoy intentando usar la API TerminateProcess, cuya descripción es la siguiente:

Código
  1. BOOL WINAPI TerminateProcess(
  2.  _In_  HANDLE hProcess,
  3.  _In_  UINT uExitCode
  4. );

Citar
hProcess [in]
A handle to the process to be terminated.
The handle must have the PROCESS_TERMINATE access right. For more information, see Process Security and Access Rights.
uExitCode [in]
The exit code to be used by the process and threads terminated as a result of this call. Use the GetExitCodeProcess function to retrieve a process's exit value.

Entiendo que necesita dos argumentos de entrada, el "handle" del proceso, y un código de salida.
Bien, entonces asumo que tengo que conseguir el "handle" del proceso. Pues bien, no entiendo cómo obtener el handle. Soy muy novato en el tema, y estoy viendo algo sobre la API OpenProcess, que teóricamente me devuelve el handle del proceso:

Código
  1. HANDLE WINAPI OpenProcess(
  2.  _In_  DWORD dwDesiredAccess,
  3.  _In_  BOOL bInheritHandle,
  4.  _In_  DWORD dwProcessId
  5. );

Citar
dwDesiredAccess [in]
The access to the process object. This access right is checked against the security descriptor for the process. This parameter can be one or more of the process access rights.
If the caller has enabled the SeDebugPrivilege privilege, the requested access is granted regardless of the contents of the security descriptor.
bInheritHandle [in]
If this value is TRUE, processes created by this process will inherit the handle. Otherwise, the processes do not inherit this handle.
dwProcessId [in]
The identifier of the local process to be opened.

Entiendo que necesita tres argumentos. Llegado el tercer argumento (el PID), entiendo que para obtenerlo, tengo que utilizar la API GetProcessID:

Código
  1. DWORD WINAPI GetProcessId(
  2.  _In_  HANDLE Process
  3. );
  4.  

Ahora bien, eso me devolvería el PID... el cuál necesito para obtener el handle... Pero la función me pide el handle del proceso... No entiendo xD.

Perdón la ignorancia, y que haga una pregunta así, pero no logro entender el procedimiento para cerrar un proceso mediante TerminateProcess. Se que lo puedo hacer utilizando taskkill /f /im blabla, pero prefiero entender esto :\
Aclaro que no estoy haciendo ninguna maldad ni nada similar, solo estoy practicando multithreading, y se me ocurrió hacer una función que abra un proceso, mientras otra lo cierre, por el mero hecho de practicar algo, y decidí hacerlo de esta manera.

De todas maneras, voy a seguir buscando y probando. No pido un códigohecho, con una palabra que me oriente estaría muy agradecido!

Un abrazo.


20  Programación / Scripting / ["Aporte"-Python] Haciendo funcionar Kivy en Python3.3 en: 23 Febrero 2014, 08:23 am
Por esas casualidades de la vida me topé con Kivy. Un par de videos y algunas críticas me convencieron de probarlo. Por un momento tuve la extraña sensación de "preocupación", de que este framework fuese un proyecto inestable mas, con grandes problemas. Para sorpresa mía, fue casi todo lo contrario: un proyecto robusto, una obra de ingeniería, pero muy joven, con una comunidad agradable, con muy buen nivel. Entonces me hice una serie de preguntas vitales: ¿Windows, Linux? ¿Python 2, Python 3? ¿3.2? ¿3.3? Para mi sorpresa... no solo Windows y Linux, si no también Android, iOs, y OSx. La documentación es regular. Para un programador experimentado, o un lector muy ávido de inglés, es buena.
Me dispuse a instalarlo bajo Windows en principio... y resultó ser algo mas complejo de lo que pensaba. Podría bajarme todo en uno, como si fuese "otra versión"de Python. Es decir, viene con un Python portable, y desde ese intérprete puedo usar Kivy. Para tener Kivy a disposición del intérprete ya instalado, es necesario -según llegué a leer- compilar a mano todo. Lo dejé para después. fue entonces cuando lo probé bajo Ubuntu. Acá es donde comenzaron los pequeños retrasos. La verdad no soy muy entendedor de Linux todavía, soy un usuario que lleva muy poco tiempo utilizándolo.
Quiero aclarar que en Ubuntu, contamos por defecto con Python2.7. Para acceder a Python 2.7 tipeamos cualquiera de las siguientes líneas en la terminal:

Código:
user@ubuntu:~$ python
user@ubuntu:~$ python2
user@ubuntu:-$ python2.7

Asumo -y es pura suposición- que al tipear "python", Linux ejecuta el intérprete predefinido, si tipeamos "python2", ejecuta la versión mas reciente de Python2x, y si tipeamos "python2.7" accedemos a la versión específica. (algún linuxero que corrija a este novato, por favor)
Tipeamos ahora lo siguiente, para saber si tenemos Python3.3 instalado:

user@ubuntu:-$ python3.3

Si no lo tenés instalado, Ubuntu -a la fecha- no cuenta con tal versión en los repositorios oficiales. Es por eso que debemos buscarlo en otro repositorio. En mi caso, DuckDuckGo-eando, me topé con que los repositorios DeadSnakes si cuentan, por tanto debemos agregar a la lista:

Código:
user@ubuntu:-$ sudo apt-get install python-software-properties
user@ubuntu:-$ sudo add-apt-repository ppa:fkrull/deadsnakes
user@ubuntu:-$ sudo apt-get update
user@ubuntu:-$ sudo apt-get install python3.3-dev

El -dev es para desarrolladores. Una vez que tenemos instalado Python3.3 correctamente, es tiempo de descargar Kivy, y Cython, que forma parte de los requerimientos. Descargamos Kivy desde la web oficial, descargamos el fichero (Kivy-1.8.0.tar.gz), el mismo quedará en /home/Descargas, en donde lo descompriremos, quedando entonces en /home/Descargas/Kivy-1.8.0.

Es tiempo de probar si todo funciona, lo cuál en mi caso no sucedió, pero mejor intentarlo.

Código:
user@ubuntu:-$ cd Descargas/Kivy-1.8.0
user@ubuntu:-/Descargas/Kivy-1.8.0$ python3.3 setup.py install

Si querés instalarlo para otra versión, solo cambia "python3.3" por la versión deseada ("python2.7", por ejemplo).

Si no hay ningún error, estás de suerte, y solo queda por importar Kivy:

Código:
user@ubuntu:-$ python3.3
>>>import kivy


Pero si te levantaste con el pie izquierdo, entonces vas a tener que hacer algunos pasos adicionales, seguramente habrá aparecido algún problema relacionado a Cython. Realmente no llegué a entender el 100% de lo que hice, pero bajé cython y cython3.
Cython lo conseguí en el siguiente enlace de Ubuntu: http://packages.ubuntu.com/raring/cython3
Lo bajé, lo extraje, y tuve que copiar cada fichero en la carpeta correspondiente dentro de /usr/bin.
Para esto, como usuario común, no podremos hacerlo, por lo que utilizaremos Nautilus:

Código:
user@ubuntu:-$ sudo nautilus

Una vez hecho esto, nos dirigimos a la carpeta de Cython3 (que en mi caso tiene el nombre cython3_0.17.4-0ubuntu1_amd64) y dentro está el siguiente sistema de directorios:

Citar
cython3_0.17.4-0ubuntu1_amd64/
        ./usr
            ./bin
              cydbg    (fichero)
              cython3  (fichero)
            ./lib
               ./python3
                  ./Cython
            ./doc

Lo que tenemos que hacer ahora es copiar los ficheros cydbg y cython3 a /usr/bin en nuestro sistema de directorios, y la carpeta Cython a /usr/lib/python3.3.

Nuevamente intentamos instalar Kivy:

Código:
user@ubuntu:-/Descargas/Kivy-1.8.0$ python3.3 setup.py install

Si nuevamente tenemos un error, es necesario que Cython esté en el directorio de Kivy. Pero debemos bajar "otra versión" al parecer, desde http://cython.org/#download. Una vez descargado, extraemos el fichero, y dentro tendremos una carpeta llamada "Cython". La debemos copiar entera ADENTRO del directorio de Kivy. Y ahora si, abrimos la terminal:

Código:
user@ubuntu:-$ cd Descargas/Kivy-1.8.0
user@ubuntu:-/Descargas/Kivy-1.8.0$ python3.3 setup.py install

Y el problema debería estar solucionado, algo como lo siguiente debería aparecer al importar kivy:
Código:
Python 3.3.3 (default, Dec 27 2013, 19:27:19) 
[GCC 4.6.3] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import kivy
[INFO   ] Kivy v1.8.0
>>>

Ahora bien, lo que hice yo fue copiar la carpeta "kivy" (dentro de Kivy-1.8.0) a la carpeta de python3.3 (./usr/lib/python3.3, necesitamos Nautilus). Esto es porque para importar Kivy, deberíamos estar dentro del directorio donde fue extraído. De esta manera, estemos donde estemos, podremos importar kivy.

Se que es una solución informal, infundamentada. Realmente fue un rebusque de novato que me di. Espero que le sirva a algún otro novato, y por favor, sepan disculpar las burradas dichas seguramente.
Les mando un abrazo.

PD: Voy a buscar la solución en Windows. Creo que voy a echar una mirada al registro, quizás pueda modificar algunas llaves, y así reemplazar el intérprete "normal" por el Kivy (que es el mismo, pero portable).
------------------------------------------
EDIT:
Encontré una manera mas limpia de instalar bajo Ubuntu, con el siguiente script:

Código
  1. install_kivy_stable_py3_virtualenv.sh
  2. Shell
  3.  
  4. #!/bin/sh
  5. # Bootstrap Python3.3
  6. sudo apt-get install python-software-properties
  7. sudo add-apt-repository ppa:fkrull/deadsnakes
  8. sudo apt-get update
  9. # Install necessary system packages
  10. sudo apt-get install -y build-essential mercurial git python3.3 python3.3-dev python-gst0.10 ffmpeg gstreamer0.10-plugins-good libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsmpeg-dev libsdl1.2-dev libportmidi-dev libswscale-dev libavformat-dev libavcodec-dev libgl1-mesa-dev libgles2-mesa-dev zlib1g-dev
  11. # Bootstrap current setuptools
  12. wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py -O - | sudo python3.3
  13. # Bootstrap a current Python virtualenv
  14. sudo apt-get remove --purge -y python-virtualenv python-pip
  15. sudo easy_install-3.3 -U pip
  16. sudo pip3.3 install -U virtualenv
  17. # Create a vitualenv
  18. sudo rm -rf venv
  19. virtualenv-3.3 venv
  20. # Install current version of cython into the virtualenv
  21. sudo apt-get remove --purge -y cython
  22. sudo pip uninstall --yes cython
  23. venv/bin/pip install -U cython
  24. # Install other PyGame and Kivy dependencies
  25. venv/bin/pip install -U numpy
  26. # Install pygame into the virtualenv
  27. hg clone https://bitbucket.org/pygame/pygame
  28. cd pygame
  29. ../venv/bin/python setup.py build
  30. ../venv/bin/python setup.py install
  31. sudo ../venv/bin/python setup.py install
  32. cd ..
  33. sudo rm -rf pygame
  34. # Install development version of Kivy into the virtualenv
  35. venv/bin/pip install kivy
  36. # Install a couple of dependencies for KivyCatalog
  37. venv/bin/pip install --upgrade pygments docutils
  38.  

Fuente: https://gist.github.com/brousch/8825629 & Ben Rousch jaja
Páginas: 1 [2] 3 4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines