Skip to main content

Posts

Creating a HelloWorld Android App for Amazon Fire Phone

I've tried creating a sample project for Amazon Fire Phone and found a few issues and workarounds. I thought it might be helpful to share them here. It might be useful to Android developers getting started with Amazon Fire Phone programming. I've followed steps on setting up development environment provided by the Amazon site. Once I've got an Amazon Fire Phone SDK Addon installed, I've created a sample app in Android Studio v1.3.2. In this example, I am using buildToolsVersion "23.0.0" Here are the steps for creating a new project: Android Studio v1.3.2. - File > New > New Project    - Application Name: HelloWorld    - Company Domain: practice.mdzyuba.com    - Next - Check on Phone and Tablet box    - Select Minimum SDK: API 17: Android 4.2 (Jelly Bean)    - Next - Select a Blank Activity to be added    - Next - Finish The projects has failed to compile and I've got a few errors: /Users/mykola/C...

cucumber-jvm and Android Studio

During this Winter holidays, I've been exploring a Behavior Driven Development and experimented with a couple of testing frameworks: Calabash and cucumber-jvm . In this post, I would like to describe setting up cucumber-jvm for Android Studio projects. I've extended cucumber-jvm examples with a version for Android Studio. Here is a copy in my github branch: https://github.com/mdzyuba/cucumber-jvm/tree/add_android_studio_example/examples/android/android-studio/Cukeulator . In addition to the example code, here is some details on how it was created. Dependencies The cucumber-jvm requires several libraries to be added to a project:  https://github.com/cucumber/cucumber-jvm/tree/master/android I've found it's easier to add those dependencies with the Android Studio project setup dialog because it takes care of the jar versions for you. File > Project Structure > Modules > app > Dependencies > + > Library dependency   > type "cuc...

Flash on Google Sites

This is a brief how-to add a Flash on a Google Site. Google Sites allows adding Flash embedded into a Google Gadget. I uploaded a swf file to my Google Site - FlexWebTools and found a gadget that allows displaying any SWF on a Google Site page. It is called AnyFlash. It is pretty easy to use and it worked fine in my Firefox 3.5.5 on Mac OS X 10.5.8. Then I send a link to my site to my friends and they discovered that the SWF was not displayed properly on IE6 and in Firefox on Linux. I reviewed AnyFlash source code and eventually found that there is a bug 939 in the Google Gadget API. Therefore, I created a new gadget that does not use the gadgets.flash.embedFlash() method and works well with Firefox, Safari and IE6 browsers on Mac, Windows and Linux. While working on the gadget, I found a few different ways of embedding Flash into a gadget. Some of them are pretty straightforward like simply pointing to a swf in the context tag. Some are more sophisticated. For instance, they wo...

Testing Remote Data Services with FlexUnit

This is a short example that describes an approach on testing a Flex remote data access code with FlexUnit . The access to the remote services in Flex is provided via HTTPService , WebService or RemoteObject classes. The requests to the data services are handled asynchronously. That adds a bit more complexity to the unit testing. In this example, I will share a design idea on how to test a client side of the remote data services. This is something I came up with working on my "pet" project. The "pet" project is a Web application that is based on a three tier architecture: an SQL database, a middleware part implemented with Java, Hibernate, and BlazeDS, and a client tier implemented with Flex. The example shown here works on a client side and tests access to the server-side part of the application. The tests covered in this example are designed to test a user login operation. The login operation is defined on the server-side class called UserService. public class ...

Building a Flex project with Ant

Here is a quick sample on how to build a simple Flex "hello world" project with Ant. The "hello world" project contains a src folder with one Flex application file and an Ant build.xml file: ./project_home/ ./src/ app.mxml build.xml The app.mxml is the main module of the project. It simply has a label with a "Hello World!" text: <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Label text="Hello World!"/> </mx:Application> Here is the build.xml source: <?xml version="1.0"?> <project name="fx_practice7" default="all"> <!-- Init the build process --> <target name="init" unless="initialized"> <!-- Name of project and version --> <property name="FLEX_HOME" location="/Users/mykola/java/flex"/> ...

Using FlexUnit for Stress Testing

I saw quite a few questions in the forums on how to stress test a Flex application. I thought about it and came up with an idea that I want to share here. I think FlexUnit can be used for stress testing. It is not that difficult. I simply add multiple test runners for each client application and run all of them asynchronously. Here is the example of the FlexUnit runner: <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" xmlns:flexunit="flexunit.flexui.*" creationComplete="onCreationComplete()"> <mx:Script> <![CDATA[ import flexunit.framework.TestSuite; import test.TemperatureConverterTest; import test.ArrayUtilTest; import mx.collections.ArrayCollection; import flexunit.flexui.TestRunnerBase; [Bindable] public var testClients:ArrayCollection; public var NUMBER_OF_TESTS:int = 100; private function onCreationComple...

Java and Flex Builder 3

Flex Builder 3 is distributed as an Eclipse plugin and as a standalone IDE. The standalone version does not support Java development out of the box. These couple of blogs helped me to add Java to the standalone version. Adding Java Development Tools to Flex Builder Standalone by Flex Doc Team Adding Subclipse to Flex Builder 3 Standalone by Dan Wilson

Setting a default application for Flex SWF files on Mac

I found a small problem with opening SWF files on Mac. I am using Mac OS X Tiger version at the moment. I installed Flex SDK 3 and created a sample project in Eclipse with an Ant build file that compiles my Flex msml code to SWF files. I've noticed that generated SWF files are associated with RealPlayer, however it does not really play them. I can select these files in Firefox just fine. But, the bigger problem is when I use a command line Flex debugging tool called fdb. It opens the RealPlayer for me, and I cannot really choose a player in the fdb tool. Adobe fdb (Flash Player Debugger) [build 814] Copyright (c) 2004-2007 Adobe, Inc. All rights reserved. (fdb) (fdb) run file:///Users/mykola/progs/workspace2/fx_practice3/build/fx_practice3.swf Attempting to launch and connect to Player using URL file:///Users/mykola/progs/workspace2/fx_practice3/build/fx_practice3.swf Here is how to fix it. Open Finder and locate the file with swf extension. Right click and select Get Info. ...

How to debug SOAP on Mac with tcpdump

I’ve been using several tools to debug SOAP on Mac and Windows. I would like to share my experience in using some of the tools and show some examples. So far I found four major categories of tools that are useful in debugging SOAP: Interface listeners such as tcpdump and others Proxy tools such as TCPMonitor Servlet filters Application server logging. For example, Weblogic has a special logging option that dumps SOAP requests and responses to the sever log. All of these tools have their own advantages and disadvantages. In this article, I will describe the first type - an interface listener tool called tcpdump. I am planning to describe other three categories in the future posts. The tcpdump is a tool that sniffs IP traffic and dumps it to a file or a standard output stream. It was originally developed by Van Jacobson, Craig Leres and Steven McCanne from the Lawrence Berkeley National Laboratory, University of California, Berkeley, CA. It is open source. The tcpdump documentation...

Deploying BlazeDS to Weblogic 10.0

The BlazeDS is a free and open source J2EE application that provides data services to Adobe Flex and AIR applications. I’ve deployed it to Weblogic 10.0 server. I thought somebody else would be interested to do the same. Here is how. In case you need to install Weblogic 10.0, the developers copy is available for free at http://commerce.bea.com/products/weblogicplatform/weblogic_prod_fam.jsp . I have it installed on my Windows XP at D:\bea10 folder. I have created a new domain for my BlazeDS applications. It is easy to do, see http://edocs.bea.com/common/docs100/confgwiz/index.html for details. In my case, the domain name is blazeds and it is located in D:\bea10\user_projects\domains\blazeds folder on my computer. The domain name and the folders names can be difference, I just mentioned them so it is easier to follow the examples.. Once the Weblogic server is installed and a domain is ready, the BlazeDS applications can be deployed. A copy of BlazeDS is available...

MySQL macport install on Mac OS X Tiger

I have installed mysql5 macport on the MacBookPro laptop running OS X Tiger 10.4. There are a few steps that needs to be done once the port is installed. These steps are not documented (see Ticket #12694 on macports.org). So, after reading a few blogs and analyzing mysql startup error messages, I figured out what needs to be done in order to get it running. That info might be useful to others, so I’ve decided to publish the solution here. First of all, we need to create the initial database database $ sudo /opt/local/lib/mysql5/bin/mysql_install_db --user=mysql Here is the output of the command: $ sudo ./mysql_install_db --user=mysql Installing MySQL system tables... 071118 0:06:29 [Warning] Setting lower_case_table_names=2 because file system for /opt/local/var/db/mysql5/ is case insensitive OK Filling help tables... 071118 0:06:29 [Warning] Setting lower_case_table_names=2 because file system for /opt/local/var/db/mysql5/ is case insensitive OK To start mysqld at boot time you hav...

How To Run Java EE 5 Tutorial Examples On Mac

I spent some time configuring Java environment on Mac. Here are a few tips on how to get it going. The Max OS X comes with Java 5 installed. So, here are main steps: * Download Java EE 5 Tutorial package from http://java.sun.com/javaee/5/docs/tutorial/information/download.html * Download Sun Java System Application Server 9.1 from http://java.sun.com/javaee/downloads/ . I downloaded Java EE 5 SDK Update 3 that comes with the application server. * Use instructions posted here on how to install it http://java.sun.com/javaee/sdk/javaee5sdk_install.jsp Also use Application Server Installation Tips posted here: http://java.sun.com/javaee/5/docs/tutorial/doc/gexaj.html Once the application server is installed, change permissions on the SDK/javadb, so the folder permissions allow creating a database. Here is an example on how to do that: cd SDK sudo chown –R your_name javadb In general, I believe it is a good idea to change permissions to other files in SDK to some less privileged user than r...

Java Unboxing and Null

While playing with boxing/unboxing in Java 5, I found an interesting case. If my collection has a null value, the unboxing fails with a NullPointerException at runtime. Here is an example Set s = new HashSet (); for (int i=0; i < 10; i++) { s.add(i); } s.add(null); System.out.println("s: " + s); // this is a problem. The unboxing does not handle null for (int sx : s) { System.out.println("sx: " + sx); } The output of the progam is here: s: [2, 4, null, 9, 8, 6, 1, 3, 7, 5, 0] sx: 2 sx: 4 Exception in thread "main" java.lang.NullPointerException at com.mykola.TestSets.main(TestSets.java:21) So, unboxing is fine, unless a collection has a null element.

Macrodef makes Ant stronger

I found new macrodef feature in ant extremely useful in my code development. It allows me to reuse lots of code and save time. Here is a quick example on how to use macrodef and why it is cool Let’s say I have several web applications that I need to deploy on the same web server. If I use a regular Ant task, I would have to replicate these lines of code for every application: <wldeploy action="deploy" verbose="${verbose}" debug="${debug}" name="myApp" source="${output.dir}/myApp.war" user="${admin.username}" password="${admin.password}" adminurl="${adminurl}" targets="myWebSiteDomain" /> I know it does not look that bad, but this is just a short sample. In a real world case, I also need to compile the application, generate a WAR file, deploy it, generate a client stub, etc. So, the Ant build.xml tends to grow very fast. In one o...

Some Perforce Tips

Here is a small one line command that I created to find all local files, i.e. the files that still need to be added to the repository: find . -type f -print | xargs p4 filelog -m 1 | grep "not on client" I like to work with svn more. The "svn status" makes the same thing much more easier.

Weblogic 10.0 Classpath

The classpath in Weblogic 10.0 has changed comparing to 9.2 version. Here is what I have in my build.xml now. It works for a simple web service and Weblogic tools such as jwsc, clientgen, wldeploy. <path id="wl.class.path"> <pathelement location="${wl.home}/jrockit_150_08/lib/tools.jar" /> <pathelement location="${wl.home}/patch_wls1000/profiles/default/sys_manifest_classpath/weblogic_patch.jar" /> <fileset dir="${wl.home}/wlserver_10.0/server/lib"> <include name="weblogic_sp.jar" /> <include name="weblogic.jar" /> <include name="webservices.jar" /> <include name="xqrl.jar" /> </fileset> <fileset dir="${wl.home}/modules/features"> <include name="features/weblogic.server.modules_10.2.0.0.jar" /> <include name="features/com.bea.cie.common-plugin.launch_2.2.0.0.jar" /> <inclu...

How to post a code snippet here?

I have a few lines of code that I want to post here. The cut and paste does not work. Here is a simple solution I found in posts on groups.google.com. The idea is to replace < and > with & lt;, & gt; symbols. Here is how it looks like: <tag>value<tag>

Why Blog?

I always keep notes when I am working on a project or study. I found it very useful. I write some tips on how to do something. I write some ideas. I use my notes a lot. So, I thought maybe I should share my notes with others and maybe it will be helpful to them too. Here you go. This blog is for me and everybody who might find it useful.