Looking for software experts?
Need an expert advice on software development? Need consulting work done in time and at high standards? Tremend has the right solution for you.

We can provide expertise in:
  •    » high traffic and complex content website infrastructures using Java, PHP or .NET. More here ...
  •    » mobile applications for iPhone, Android or J2ME. More here ...

For an enquiry, send an email to contact [at] tremend [dot] ro.

Rightsflow acquired by Google

January 13th, 2012 by Ioan Cocan in business, General, PHP

Congrats to the Rightsflow team for the recent acquisition by Google. We are glad that we were able to bring our contribution to this success. Tremend provided software services for implementation of Limelight (songclearance.com), Rightsflow’s main licensing tool.

Limelight allows music licesing for the song you want to cover either in digital, physical, streaming or ringtone format. You can enter the song information, pay the royalty fees and you will receive a PDF license after Rightsflow’s licensing department verifies the copyright ownership and pays the royalties on your behalf. The solution integrates with PayPal Pro for payment processing. You can also bulk upload songs for a faster experience.

Good luck to Rightsflow team, now part of YouTube!

read more ...

FRF competition management

January 11th, 2012 by Ioan Cocan in Java, General

As part of an effort to meet UEFA guidelines in footbal competition management, the Romanian FA started an initiative to have a full featured management solution. Initially built in Java (Hibernate/Spring) and Flex we migrated it in 2008 to a Symfony based solution that has been continously updated since then. Although a fine solution at one point, the Flex grew and as it was not modular thought out it became difficult to maintain it.

The solution mantains major leagues (1,2,3), youth and feminin competion data including the official referee delegations. The system allows to generate games based on specific combinations (Bergers). Data is displayed in the official websites: frf.ro and frf-cca.ro (the referees website). Along with several listings and exports the systems provides features such as SMS or email notifications for referees, account info that allows referrees and observers to fill in their personal data, availability, online referee reports and much more.

A FoxPro based solution that was used to mantain player history and memberships was migrated to the solution allowing much more flexible management for player club membership. The database has now over 35.000 registered players since 1960.

The technical solution extensively uses Symfony admin generator, built in caching for information such as competition rankings. Symfony proved to be a very flexible solution with great features for data migration between application versions.

Future plans include registered club access to player information and also an automatic online transfer system. The goal is to have a complete and automated solution that allows all participants in the game to fill in their reports electronically (clubs, referees, observers, FA members).

read more ...

Drupal Commerce for ePayment module

November 27th, 2011 by Ioan Cocan in Drupal

Inspired by Drupal philosophy of contributing code and modules for the community, we have released a module that provides ePayment support in Drupal Commerce. Available here.

Just install the module, configure standard ePayment parameters and you’re ready to process payments. You can also set a debug mode for the IPN confirmations and switch between production and test mode from the Drupal admin, very handy for a Drupal live site.

Feel free to extend it and contribute some more for the Drupal community.

read more ...

Tremend 6 years

November 16th, 2011 by Ioan Cocan in Java, General

Tremend teamTremend is now 6 years old, a new year of projects and challenges. So what is new in this past year?

We’ve extended our expertise in technologies such as Drupal and Grails. Published custom modules in Drupal (Drupal Commerce for ePayment), delivered new solutions with Grails (Orange Karaoke). We’ve delivered a highly scalable solution for Orange Romania (Orange My Account), the customer care portal.

We’re up to date with mobile development, released several new apps (iPhone and Android) and mobile sites. A Windows Phone 7 app is on the way, as well.

For the 7th year we plan to deliver more with our expertise and grow into new areas (HTML5, more mobile). And more blog posts.

read more ...

Tremend at first Marathon

November 16th, 2011 by Ioan Cocan in Team

Bucharest Marathon

Bucharest hosted in October 9th 2011 the 4th edition of its marathon. A competion now registered in the league of international marathons, aimed to grow, to promove sport and action.

 

Although there are no long runners at Tremend we’ve motivated ourselves to train before the competition for a few times on an athletic stadium. A good surface that helps the knees, we hear. Our goals: finish the race. And if we could do it under 4 hours, that would be great. And we did exactly that. Ioan, Ionut, Petrica, Max run in a rainy morning with 10 degrees outside, along other hundreds of people. Being our first competition everything was new and fun, the cold outside was the last thing to think about. We also forgot about pictures, we only have few from the finish lap, available on Facebook.

Thank you Dragos for the support and precious advices. It was a great run, we’ll do it again next year and maybe there will be a Tremend 2 team as well!

read more ...

Taxonomy additions Drupal module

February 1st, 2011 by Ioan Cocan in Drupal

Our first Drupal module: http://drupal.org/project/taxonomy_additions ads various additions to the core Taxonomy module. Meet Andrei (amateescu at tremend.ro) in Brussels at Drupal Developer Days 2011, 4-6 February.[QR]

read more ...

Meet us at IDG Devworld 2010

October 26th, 2010 by Ioan Cocan in General

Marius will have a presentation about Hotnews.ro high traffic website, problems and solutions. Details here: http://www.idg.ro/devworld-2010

read more ...

Perelman’s CigarCyclopedia for Android now available

October 20th, 2010 by Ioan Cocan in Android, Mobile

Perelman’s guide is now available in Android Market.

See it here: http://www.cyrket.com/p/android/com.deviceiq.cigarcyclopedia2010/

As paid publishing for Android Market is not available in Romania, it is released under our partner’s name DeviceIQ.com.

read more ...

Perelman’s CigarCyclopedia for Blackberry now available

October 6th, 2010 by Ioan Cocan in Blackberry, Mobile

The popular Perelman Cigar Cyclopedia for Blackberry is now available in Blackberry AppWorld:

http://appworld.blackberry.com/webstore/content/15111

The approval process took about 10 days.

For the iPhone users: http://itunes.apple.com/us/app/perelmans-pocketcyclopedia/id356717371?mt=8.

An Android version is in final testing, will be available later this year.

read more ...

Hotnews.ro application at Nokia Calling All Innovators

September 20th, 2010 by Ioan Cocan in Mobile

Hotnews.ro application developed by Tremend for Nokia devices has been shortlisted for Calling All Innovators Day:

http://www.callingallinnovators.com/romania/

You can download the app here: http://store.ovi.com/content/30479.

read more ...

Spring+JPA with MySQL/Oracle configurations

September 6th, 2010 by Ioan Cocan in Java, General, Spring

Spring Framework

During development for a solution based on Spring+JPA+MySQL/Oracle we came across two settings to watch for.

1. Database isolation level

The default isolation level in MySQL is REPEATABLE READ, different from the default in Oracle (READ_COMMITTED). It seems this is kept for historical reasons related to the replication. Still, the effect is that for example a database query will return the same result, no matter if some other transaction has meanwhile changed the database.

For checking the current MySQL isolation level: SELECT @@GLOBAL.tx_isolation, @@tx_isolation;

For changing the isolation level add: “transaction-isolation = REPEATABLE-READ” to you MySQL configuration.

2. JPA transaction configuration

For those accustomed to Hibernate default configuration, the default JpaTransactionManager comes with a different default for behavior related to transaction configuration. The “globalRollbackOnParticipationFailure” is set to true, that means a failed transaction will trigger a global rollback. If you want to change that and be the decision maker if the global transaction should be rolled back or not, set globalRollbackOnParticipationFailure to false.

read more ...

Javascript mp3 player

February 12th, 2010 by Marius Hanganu in General, HTML, Javascript
flash javascript mp3 player

flash javascript mp3 player

Seems impossible, right? Well, it is :-). The title is a bit misleading. You can’t play mp3 in javascript. Not yet at least. Not without a flash object behind the scenes.

But when it comes to searching a flash mp3 player that has also a customizable skin and javascript integration you won’t have so much luck. The players that allow flash – javascript communication are not skinnable, and the ones that are skinnable, don’t allow communication with javascript.

So after a bit of hacking here’s the final result: http://blog.tremend.ro/wp-content/uploads/2010/02/flash-javascript-mp3-player/test.html

The script is based on this excellent flash mp3 player which involves a hidden flash mp3 player. The main headache is actually not the UI which uses a simple scriptaculous effect for scrolling (just drag and drop the cursor to see it working), but actually making sure the commands from javascript to the flash player work on all browsers.

Another bonus feature added is the ability to jump to different sections of the audio file. The sections are described in a javascript configuration object. An UI for this feature can be easily built using your favorite UI framework.

read more ...

File not found: transaction …, path …. SVN mysteries behind an Apache Reverse Proxy

December 6th, 2009 by Bogdan Nitulescu in General, Tools

We have an SVN server somewhere on our intranet, but since outside people want to access it, I put it behind an Apache reverse proxy. It was fairly straightforward. Here’s an excellent tutorial if you want to know how to do it: http://silmor.de/49 .

Basically, you have the intranet apache that’s configured to serve SVN, and you have an outside apache in your firewall’s DMZ that proxies the request:

ProxyPass /svn/ http://intranet.example.com/svn/
ProxyPassReverse
/svn/ http://intranet.example.com/svn/

It was all fine when people checked out their sources, but there were strange errors during commits. 7 files commits worked ok. When you tried 8 files or more, you got something like…

File not found: transaction ’431-12′, path ‘/parser/XMLparser/XMLparser.sln’

It took a lot of sweat to find out why 8 was the magic number – and after a lot of packet dumps and tracing, I found out that one of the servers used HTTP keepalives, and the other one rejected them.

So here’s a couple of rules not to be broken when proxying SVN requests:

Keep the same paths. Do not try something like ProxyPass /svn/ http://intranet.example.com/my_svn/ . It will fail with a cryptic error message at the worst of time.

Keep the same configuration.  Check your /etc/httpd/conf/httpd.conf on both servers for differences in your configuration. In my case, I had “KeepAlives On” in one server and “KeepAlives Off” in the other. When I put them both to On, it worked just fine.

read more ...

How to move Drupal to a subdirectory and keep the links

October 20th, 2009 by Bogdan Nitulescu in Drupal

The usual way for Drupal is to have it live in the root of your web site. It’s all nice if the only thing on your site is Drupal, but it gets very cluttered when you have other top-level directories.

One customer had his corporate site at, say, “www.example.com“, and his customer support pages at “www.example.com/support“.  We wanted to keep the application in the “support” directory, move all the drupal directories under “corporate“. And keep the old links working.

First we had to let Drupal know that, even if it’s been relocated to “corporate”, the URL still remains the same. Do it in “corporate/sites/default/settings.php“:

$base_url = 'http://www.example.com';

Then tell Apache that Drupal has moved. Put these rewrite rules in .htaccess in the root of your web site.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  RewriteEngine on
 
  # Rewrite www.example.com to the Drupal home page: www.example.com/corporate/index.php
  RewriteRule ^$ corporate/index.php [L]
  # Let Drupal process paths like www.example.com/corporate/about
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^corporate/(.*)$ corporate/index.php?q=$1 [L,QSA]
 
  # Search for real Drupal files that moved, 
  #  (e.g. www.example.com/flash/intro.swf to www.example.com/corporate/flash/intro.swf)
  RewriteCond %{DOCUMENT_ROOT}/corporate/$1 -f
  RewriteRule ^(.*)$ corporate/$1 [L]
 
  # Let Drupal process all paths that are not real files and directories, like www.example.com/about
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^(.*)$ corporate/index.php?q=$1 [L,QSA]
 
  # What's left are real non-Drupal pages and directories, like www.example.com/support
read more ...

Xaraya to Drupal Migration Script

September 11th, 2009 by Julia Biro in Drupal

Using some functionalities from this script I managed to port
a Xaraya 1.4 installation to Drupal 6.13.

The script performs the following tasks:

  • imports users
  • imports articles and comments
  • imports forums and comments
  • imports content types
  • imports vocabularies and terms
  • imports files



The first thing I’ve done was to eliminate the sequences table, which is deprecated starting from Drupal version 4.

Next, when managing categories, I’ve used the xaraya categories with parent id equal to 0 as Content Types and Vocabularies and inserted all the other as terms associated with the vocabulary.

The term hierachy is created by running a script on the term_hierarchy table setting parent_id 0 for the first child and the original parent_id for the next ones.

With regard to files and images, Inserting them into the ‘files’ table is not enought – the FileField
and ImageField Drupal modules are mandatory in order to associate a field with a node. (this is still work in progress)

One last note: in order to maintain database integrity, the original id-s must be used in all tables.

Click here to download the script

read more ...

« Previous Entries