Annyce Davis

Davis Technology Consulting

  • Home
  • About Me
  • Blog
  • Courses
  • Newsletter

Git Merging

July 12, 2011 by Annyce Davis

Another helpful tool in working with Git repositories is the git mergetool command.  This provides you with a graphical interface for merging conflicts.  What’s nice about this tool is that you can see all of the differences in the remote file and the local file and you can go through each and choose the change that you want to keep.  Very nice!

Storing JSON in External EhCache Server

July 11, 2011 by Annyce Davis

If you would like to store JSON data in an external EhCache Server you would need to use either REST or SOAP calls.  The below example uses REST calls and the HTTPBuilder library.  It assumes that you have your EhCache Server running at the following location:
http://localhost:8080/ehcache/rest.

The name of the cache that I’m using in this example is just sampleCache.

def getCachedItem(key) {
def uri = "http://localhost:8080/ehcache/rest/sampleCache/"
def restClient = new RESTClient(uri)

def res
try {
res = restClient.get(path:key)
}
catch (Exception e) {
log.error("Error retrieving item from cache for this key: $key")
}

return res?.data
}

def putCachedItem(key, html) {
def url = "http://localhost:8080/ehcache/rest/sampleCache/"

try {
def json = html as grails.converters.JSON

def http = new HTTPBuilder(url)
http.request(Method.PUT) { req ->
uri.path = key
send('application/json', grails.converters.JSON.parse(json?.toString()))

response.'201' = { resp ->
log.info("success in adding item to cache: ${resp.status}")
}

response.success = { resp, object ->
log.info("success in adding item to cache: ${resp.status}")
}

response.failure = { resp ->
log.error("error adding item to cache: ${resp.statusLine}")
}
}
}
catch (Exception e) {
log.error("Error setting the cache for this key: $key")
}
}

Creating a Texture in OpenGL ES 1.0

June 23, 2011 by Annyce Davis

I have recently been learning to use OpenGL ES on Android.  I know that many devices currently support OpenGL ES 2.0, but I wanted to start with 1.0 that is supported everywhere.  To that end I will be making a series of posts that contain various bits of code that I have learned along the way that might be useful to others.

So, this is how you can create a texture in OpenGL ES 1.0:

Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(),
R.drawable.item);
int[] textureIds = new int[1];
gl.glGenTextures(1, textureIds, 0);
textureId = textureIds[0];

gl.glBindTexture(GL10.GL_TEXTURE_2D, textureId);

GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);

gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER,
GL10.GL_NEAREST);

gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER,
GL10.GL_LINEAR);

gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S,
GL10.GL_CLAMP_TO_EDGE);

gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T,
GL10.GL_CLAMP_TO_EDGE);

gl.glBindTexture(GL10.GL_TEXTURE_2D, 0);

bitmap.recycle();

You can then use the textureId to bind the texture and draw it on the OpenGLSurfaceView.

Removing jar files from your Grails war

June 13, 2011 by Annyce Davis

Recently I encountered a situation where a plugin was bringing in a version of a jar file that was causing my application to misbehave.  In order to fix this issue I had to remove the errant jar file from the final build.  This is the code that you can use to do that.  You have to place this code snippet in your BuildConfig.groovy.  Hope this helps someone else.

grails.war.resources = { stagingDir ->
delete(file:"${stagingDir}/WEB-INF/lib/<name>.jar")
}
« Previous Page
Next Page »

Follow Me

  • Bluesky

Categories

  • Android (61)
  • Career (5)
  • Communication (4)
  • Flutter (1)
  • Git (4)
  • Gradle (4)
  • Grails (23)
  • iOS (1)
  • Java (8)
  • JavaScript (6)
  • Kotlin (17)
  • Life (5)
  • Public Speaking (26)
  • Revenue (2)
  • RxJava (1)
  • Software Development (14)
  • Twitter (3)
  • Uncategorized (11)
  • Video Course (5)

Follow Me

  • Bluesky

Copyright © 2025 · All Rights Reserved · Log in