angular – debugging an app

noviembre 24, 2017

Peek 2017-11-24 15-39.gif

There’s an excellent article on ionic blog which talks about how to debug an app. It become really handy now that JS Batarang extension stopped working on my google chrome 馃槬 (Ubuntu 16.04.3 LTS; Chrome Version 62.0.3202.62 (Official Build) (64-bit)).

Peek 2017-11-24 15-23

You just have to identify an element on your page which is associated with an scope and you would see all the variables on that scope through the use of a simple console.log call.

angular.element(targetNode).scope()

sources:
http://blog.ionicframework.com/angularjs-console/

Anuncios

abd logcat output

Una vez que logras ejecutar tu aplicaci贸n en el emulador es indispensable tener una forma de depurar la aplicaci贸n. La forma m谩s sencilla que he encontrado es mediante mensajes en la consola usando el comando

console.log(‘mensaje para el log’)

para poder ver estos mensajes mientras ejecutamos la aplicaci贸n en el emulador la 煤nica forma que he encontrado es ejecutar en una terminal el comando

adb logcat | grep ‘Web Console’

simplemente filtramos la salida del comando adblogcat en b煤squeda de logs que contengan la palabra ‘Web Console’, que para los mensajes producidos por console.log es agregada autom谩ticamente.

Ser铆a mucho mejor hacerlo con un filtro de logcat, pero no he podido encontrar uno que funcione 馃槮

he intentado

adb logcat Cordova:D DroidGap:D CordovaLog:D *:S

adb logcat ActivityManager:I MyAppName:D *:S

pero sin 茅xito.

Fuentes:
http://blog.koalite.com/2012/09/depurar-phonegapcordova-en-android-con-adb/
http://developer.android.com/tools/debugging/debugging-log.html
http://blog.joelambert.co.uk/2011/09/20/monitoring-console-log-on-phonegap-android/

Al hacer un debug de un servicio web, me aparec铆a la siguiente excepci贸n

Error initializing server: At least one valid code-source or import-shared-library element is required for shared-library “global.libraries” embedded-oc4j/config/server.xml

Al parecer, el problema se debe a que mov铆 el directorio donde instal茅 JDeveloper, y este guarda la ubicaci贸n en el archivo de configuraci贸n ~/jdevhome/system/oracle.j2ee.10.1.3.41.57/embedded-oc4j/config/server.xml

As铆 que tuve que sustituir todas las rutas a la nueva ubicaci贸n.

Por ejemplo, cambi茅

<code-source path="/opt/jdeveloper10133/j2ee/home/applib"/>

por

<code-source path="/home/cirovladimir/Apps/jdeveloper/jdeveloper10133/j2ee/home/applib"/>

Fuentes:
https://forums.oracle.com/forums/thread.jspa?threadID=592789

En un proyecto estoy tratando de utilizar un control Calendar para agendar eventos. SmartGwt define propiedades básicas para los eventos: name, startDate, endDate y description -todos ellos se pueden mapear a otras propiedades con métodos como setStartDateField-

Si nuestro evento tiene otras propiedades, además de estas, podemos agregar los campos en los editores mediante los métodos setEventDialogFields y setEventEditorFields.

Al agregar un SelectItem al editor de diálogo, me aparecía el siguiente mensaje de error

[ERROR] [Desktop] – 08:37:54.799:MUP0:WARN:DynamicForm:isc_DynamicForm_2:[Class SelectItem] form item defined with no ‘name’ property – Value will not be saved. To explicitly exclude a form item from the set of values to be saved, set ‘shouldSaveValue’ to false for this item.

Supuestamente este error fue arreglado en las ultimas versiones (04/05/2012) pero en la versión 3.0 me seguía apareciendo.

Después de mucho batallar encontré que el problema sólo se me presentaba cuando hacía la depuración (debug) en Google Chrome. Utilicé Mozilla Firefox y ya no tuve problemas.

De ahora en adelante intentaré depurar mi código en Firefox.

Fuentes:
http://forums.smartclient.com/showthread.php?t=4934
http://www.smartclient.com/smartgwt/javadoc/com/smartgwt/client/widgets/calendar/Calendar.html#setEventDialogFields(com.smartgwt.client.widgets.form.fields.FormItem…)
https://code.google.com/p/smartgwt/source/search?q=%22form+item+defined+with+no%22&origq=%22form+item+defined+with+no%22&btnG=Search+Trunk 
http://www.smartclient.com/smartgwt/javadoc/com/smartgwt/client/widgets/form/fields/FormItem.html 

Para desarrollar aplicaciones GWT utilizo Eclipse y el plugin de Google. Mi navegador por default es Google Chrome así que lo más natural para mí fue utilizarlo para depurar el código. Pues realmente Chrome es una mala elección para esto, me di cuenta cuando un SelecItem no me mostraba las opciones y la aplicación en general era demasiado lenta. Así que si padeces alguno de estos síntomas, mejor prueba con otro navegador –Firefox 馃槈 –

Fuentes:
http://forums.smartclient.com/showthread.php?t=8159#aChrome
https://groups.google.com/forum/?fromgroups#!topic/google-web-toolkit/qfVFxoieOXg 

Cuando ejecutas una aplicación GWT en Eclipse -ya sea Debug as Web Application ó Run as Web Application- utiliza Jetty como servidor web.

En una aplicación necesitaba poner una serie de archivos disponibles en dicho servidor. Como los archivos ya los tenía en una carpeta, no quise copiarlos a una carpeta en el servidor web (src/main/webapp), así que creé un enlace simbólico a la carpeta. Al querer acceder a los recursos me aparecía el siguiente mensaje en el log

[WARN] Aliased resource: file:/home/cirovladimir/projects/java/videohaus/videohaus-gwt/target/videohaus-gwt-0.0.1-SNAPSHOT/storage/videos/demo.mp4==file:/home/cirovladimir/Videos/videohaus/demo.mp4
[WARN] 404 – GET /storage/videos/demo.mp4 (127.0.0.1) 1446 bytes

El problema es que, por cuestiones de seguridad, Jetty no permite acceder a los recursos mediante un alias (mayúsculas y minúsculas, nombres cortos, enlaces simbólicos y carácteres extras).

Para desactivar esta carácteristica y permitir los enlaces simbólicos, podemos agregar un parámetro a la configuración de ejecución. Selecciona el proyecto y da clic en el menú “Run->Debug Configurations..”, luego agrega el parámetro “-Dorg.mortbay.util.FileResource.checkAliases=false” en la pestaña de argumentos en la sección de argumentos de la máquina virtual.

UPDATE: Existe una opción con el comando “mount” para montar una carpeta local en otra, y con esto ya no es necesario configurar Jetty para seguir los enlaces simbólicos. El comando es

 sudo mount --bind origen nueva_carpeta
 

si quieres que el montaje permanezca después de reiniciar tu computadora, agrega la siguiente línea en el archivo /etc/fstab

 origen &nbsp; nueva_carpeta &nbsp; none   bind   0   0
 

curiosamente esta solución la encontré cuando investigaba como montar una carpeta mediante NFS.

Fuentes:
https://groups.google.com/d/msg/google-web-toolkit/kMZv6jkYitw/yYfM54duu3wJ
http://docs.codehaus.org/display/JETTY/How+to+enable+serving+aliased+files
https://help.ubuntu.com/community/SettingUpNFSHowTo

GWT – Depuraci贸n remota

diciembre 6, 2011

Si usas Linux, para ver como funciona tu aplicaci贸n en Internet Explorer, tendr谩s que hacerlo desde una computadora con Windows (sea virtual o no).
Yo intent茅 hacerlo desde una m谩quina virtual (virtualbox) pero no me mostraba la p谩gina.

Para poder depurar tu aplicaci贸n GWT desde una computadora remota debes agregar el siguiente par谩metro a la configuraci贸n de depuraci贸n
-bindAddress 172.180.0.146
obviamente poniendo la ip de tu m谩quina 馃槢

Con ello ya podr谩s depurar de forma remota.

Fuentes:
http://stackoverflow.com/questions/3944164/debug-gwt-application-in-a-remote-browser