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 - EzianGES

#11
Cita de: adastra en 27 Febrero 2014, 17:50 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
@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
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
Hasta donde yo recordaba, si hacía algo así:
Código (Python) [Seleccionar]

>>>3 / 2
1
>>>3 // 2
1
>>>3.0 / 2
1.5
>>>3 / 2.0
1.5


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 (Pyton) [Seleccionar]

>>> 3 / 2
1.5


¿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
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
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
#18
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
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:

BOOL WINAPI TerminateProcess(
  _In_  HANDLE hProcess,
  _In_  UINT uExitCode
);


CitarhProcess [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:

HANDLE WINAPI OpenProcess(
  _In_  DWORD dwDesiredAccess,
  _In_  BOOL bInheritHandle,
  _In_  DWORD dwProcessId
);


CitardwDesiredAccess [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:

DWORD WINAPI GetProcessId(
  _In_  HANDLE Process
);


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
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:

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:

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.

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:

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:

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:

Citarcython3_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:

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:

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:
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 (bash) [Seleccionar]

install_kivy_stable_py3_virtualenv.sh
Shell

#!/bin/sh
# Bootstrap Python3.3
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:fkrull/deadsnakes
sudo apt-get update
# Install necessary system packages
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
# Bootstrap current setuptools
wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py -O - | sudo python3.3
# Bootstrap a current Python virtualenv
sudo apt-get remove --purge -y python-virtualenv python-pip
sudo easy_install-3.3 -U pip
sudo pip3.3 install -U virtualenv
# Create a vitualenv
sudo rm -rf venv
virtualenv-3.3 venv
# Install current version of cython into the virtualenv
sudo apt-get remove --purge -y cython
sudo pip uninstall --yes cython
venv/bin/pip install -U cython
# Install other PyGame and Kivy dependencies
venv/bin/pip install -U numpy
# Install pygame into the virtualenv
hg clone https://bitbucket.org/pygame/pygame
cd pygame
../venv/bin/python setup.py build
../venv/bin/python setup.py install
sudo ../venv/bin/python setup.py install
cd ..
sudo rm -rf pygame
# Install development version of Kivy into the virtualenv
venv/bin/pip install kivy
# Install a couple of dependencies for KivyCatalog
venv/bin/pip install --upgrade pygments docutils


Fuente: https://gist.github.com/brousch/8825629 & Ben Rousch jaja