BNR exchange rates

Please select your desired exchange currency to see its chart and then modify the period range as desired. The default range is from 3 January 2006 until now.

For help you can go visit article »


Curs valutar BNR

Selectati valuta dorita pentru a vedea graficul ei si apoi modificati durata dupa dorinta. Perioada initiala este de la 3 ianuarie 2006 pina acum.

Pentru ajutor puteti vizita articol »

Posts tagged XCode

Radu Poenaru at Fraunhofer FIT presenting IdeaPitch - first screen

IdeaPitch – built on Microsoft Surface

1

I am very close to finish another project in Fraunhofer FIT: IdeaPitch on the Microsoft Surface.

This concept is very simple, you are able to “store” ideas in a repository, created using PHP and MySQL, and later on manipulate it on Microsoft Surface, along with the rest of the contributors. Other clients, iPhone and Air, were developed and are able to connect to the repository and register the ideas there. They are acting like individual clients, the iPhone can’t be used comfortable by more than one person. Not to mention that this is kind of personal device by its nature.

The Surface application allows users to connect to a PHP webservice which provides the interface to the small repository for “ideas”, the transfer is using XML to provide a easy way to consume data. Below you can see some photos which depict how these ideas are shown. The application uses quite a lot from the surface features – multitouch, special contextual menus – different for “idea” representation and for the main surface, a custom built management interface, allowing easy saving and restore of the session from the repository.

My experience on Microsoft Surface

It features “agents” which can:

  • send the message back to the sender,
  • “duplicate” the message
  • send it to a timer
  • to a random logged in user by using the “decide”
  • … and worth mention also to a Nabaztag, the funny white wireless rabbit!

I have the feeling that this app will be demoed soon in some fairs or conferences regarding communication and collaboration where Fraunhofer FIT will be represented!

 

iMeet application presentation

0

iMeet logo icon Finally, the biggest moment: application is ready!! I am very proud of this application, as it represents my achievements in fast learning and adapting to:

  • new way of programming, as XCode and Interface Builder truly represent the ModelViewController paradigm
  • new language- Objective-C, which as any language has its pluses and minuses
  • new device: mobile devices on which I didn’t work since my experience on Sales Force Automation in TotalSoft company, back in 2005, on Windows CE.

I’ve structured the application visually in few areas:

1. Login screen – the ‘”gate” to the application. Since the access to theiMeet - first screen, allowing login with credentials on a specific webserver

XML-RPC is done in a secure way, the application implemented also a credential input and recording mechanism. The mechanism is dual: user can enter the login into the first screen or in the iPhone Settings application. Depends only on him where and how he’ll manage his credentials.

 

The main point of this screen is to create a intuitive interface for users to insert their credentials, instead of having to leave the application and go to the iPhone settings.

(more…)

Objective-C: Putting markers on Map control

1

xcode

This article comes as a completion to my previous ones, XCode : using MapKit with no geocoding available out of the box and XCode: Modal windows – Google maps and shows how to add pins on your already created Map View.

First of all, adding the points to the map is not as intuitive as it might seem, so let’s start by creating a new class called POI – point of interest. Its header must be filled with this code:

 

#import <foundation foundation.h>
#import <mapkit mapkit.h>
#import <corelocation corelocation.h>

@interface POI : NSObject  {
CLLocationCoordinate2D coordinate;
NSString *subtitle;
NSString *title;
}

@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
@property (nonatomic,retain) NSString *subtitle;
@property (nonatomic,retain) NSString *title;
- (id) initWithCoords:(CLLocationCoordinate2D) coords;

@end

(more…)

XCode: Modal windows – Google maps

1

xcode From time to time, you’ll need to show in your iPhone application a view over the entire application without navigating and destroying your workflow of the application. I’ll present the mechanism of modal windows as it is implemented in Cocoa Touch.

Lets take a real case: you have a view in which you want to input an address. Near the address you have a button which will show the user the Map centered on the specific address that he inputted. How this can be implemented?

The answer is quite simple: you need to declare the view from which you launch the modal view as <UINavigationBarDelegate> in the header file (.h for newbies), like this:

@interface CtrlAddEvtView1 : UIViewController <UINavigationBarDelegate>

This way, the view will know “magically” how to interact with children views.

(more…)

XCode : using MapKit with no geocoding available out of the box

1

xcode

One of the tasks in the CSCW lab was to create a map on which the users to see the location of a specific address.

So I started working on it, knowing that the newest framework brings a lot of goodies, through which there is also a map framework. But surprise! Apple provides only reverse geocoding, not forward geocoding. This means that you can only transform a pair of Latitude / Longitude to the Map and it will show it to the user. But what to do when user enters an address?

My point is that nobody caries with him a GPS to search for the address, get the coordinates and enter them into my map!

I was curious about it and after a little search I found that there was a big argue about the geocoding and Apple didn’t want to pay the price that Google and Tom-Tom asked for this feature.

(more…)

Objective-C: Base64 to NSString and NSString to Base64

0

xcode

While working on the CSCW Lab project, I encountered a situation in which the XML-RPC call returned an image, of course encoded as Base64. And guess what – in its known style, Apple doesn’t provide Base64 encoding and decoding – quite lame, given the fact that this encoding is used everywhere in data transfer over the internet – e-mail, browsers, web services – all of them use at some point this encoding to overcome the different local encodings on each one’s machine.

Once identified this problem, I had to solve it somehow – but guess what? – over the free sources there aren’t too many functions that provide this simple and basic encoding.

Finally, after few hours of searching, I finally found that Eric Czarny had a very successful implementation of this in its Cocoa XML-RPC Framework . After taking a quick look at its code, I end up using and importing into my project the

  • NSStringAdditions.h. NSStringAdditions.m – providing the new category

+ (NSString *)base64StringFromData: (NSData *)data length: (int)length;

  • NSDataAdditions.h and NSDataAdditions providing the new category:

+ (NSData *)base64DataFromString: (NSString *)string;

Being categories, they are automatically added to NSString and NSData automatically at runtime, thus their usage is straight forward :

UIImageView *uiIV;
// currentElementValue holds the string representation of the image, encoded in Base64
NSData *nsD = [NSData base64DataFromString: [dataLayer currentElementValue]];
   
if ([nsD ){
    uiIV = [[UIImageView alloc] initWithImage:[UIImage imageWithData: nsD]];
}

Processing NSDate into an ISO8601 string

2

xcode

 

During the CSCW Lab, where I had the experience of working on iPhone, I had to connect to a XML RPC server. Some of the parameters of the request had to be formatted as ISO8601 standard. After some reading, I end up using the following code, managing both the conversion of a NSDate to NSString and a NSString to a NSDATE using the above format:

 

NSString –> NSDate

-(NSString *) strFromISO8601:(NSDate *) date {
    static NSDateFormatter* sISO8601 = nil;

    if (!sISO8601) {
        sISO8601 = [[NSDateFormatter alloc] init];

        NSTimeZone *timeZone = [NSTimeZone localTimeZone];
        int offset = [timeZone secondsFromGMT];

        NSMutableString *strFormat = [NSMutableString stringWithString:@"yyyyMMdd'T'HH:mm:ss"];
        offset /= 60; //bring down to minutes
        if (offset == 0)
            [strFormat appendString:ISO_TIMEZONE_UTC_FORMAT];
        else
            [strFormat appendFormat:ISO_TIMEZONE_OFFSET_FORMAT, offset / 60, offset % 60];

        [sISO8601 setTimeStyle:NSDateFormatterFullStyle];
        [sISO8601 setDateFormat:strFormat];
    }
    return[sISO8601 stringFromDate:date];
} 

(more…)

Objective-C: Use NSXMLParser

0

xcode Almost any time you’ll need to pull some data from the web. Using Objective-C you have at your disposal a pretty good XML parser – the event-based version. What really means is that instead of building in-memory tree with the structure of the XML you’ll have some events raised when the parser encounters a special token – the most usual ones are tag start, tag end and found comments. The parsing goes node by node and is not nesting-sensitive. As soon as the parser returns you a node, you don’t know where in the structure you are currently anymore. As long as you have a clearly defined structure where each element is always present, you could do this using a counter. However, as soon as you have multiple nodes with no defined count, you have a problem.

The usage is simple and straight-forward. For simplicity, we assume that we have only have one level of children under the root node, but this can be easily extended to many levels.  We’ll see some code and after that the detailed explanations:

- (void)parseJourneyData:(NSData *)data parseError:(NSError **)err {     
// create and allocate the parser - it must be initiated with the XML data that we received or loaded     
NSXMLParser *xmlParser= [[NSXMLParser alloc] initWithData:data];
  self.arrResult= [[NSMutableArray alloc] init];
  // Create the array for holding the resulted data
  [xmlParser setDelegate:self];
  // The parser calls will be redirected to methods in this class
  [xmlParser setShouldProcessNamespaces:NO];
  // We are not interested in namespaces
  [xmlParser setShouldReportNamespacePrefixes:NO];
  // neither in prefixes
  [xmlParser setShouldResolveExternalEntities:NO];
  // just data, no other stuff
  [xmlParserparse];
  // Parse that data.. here the parsing begins and the delegated methods will get called
  //the parsing process ended and we check for errors
  if (err && [xmlParser parserError]) {
	*err = [xmlParser parserError];     
  }  
  [xmlParser release];
  //cleaning the remainders
  }     

(more…)

Objective-C: allocation and deallocation

0

xcode While reading the book by Mr. Kochan (1st ed): "Programming in Objective C" , I noticed that he uses the following code (you can see it at pages 342-344) to explain that the initWithString is preferable to stringWithString because the AddressCard class would own the name variable contents. Also, I don’t get any errors making repeated calls to the setName version with the stringWithString method.

  

//I didn't added here the header file which has the needed declarations
#import "AddressCard.h"
@implementation AddressCard;
-(NSString *) name{    
return name;
}

//Recommended code:    
-(void) setName: (NSString *) theName{     
[name release]     
name = [[NSString alloc] initWthString: theName];     
}

//Incorrect code according to Kochan:    
-(void) setName: (NSString *) theName{     
[name release]     
name = [NSString stringWthString: theName];     
}
 (more...)

Objective-C: NSDictionary and NSMutableDictionary can’t keep the order of entries

0

XCode 3.0 - NSDictionary can't keep the order of its elementsMy latest task in CSCW Lab was to create the parser class for parsing some huge and multilevel XML. All nice and easy at first sight. Since the XML was the result of an RPC call, I got back some structures corresponding to NSDictionary and some arrays corresponding to NSArray in Apple’s Objective-C.

While iterating in the structure using NSXMLParser, a event-based parser, I kept adding the pairs as name and values to the parent.The normal approach would be to add the name and NSNull for value first, then when retrieving the value’s content, search the last inserted entry ( the pair composed by name and value) and just fill the value with content. First I instantiate the strKey with the last key obtained from the array who contains all dictionary keys, then I set the value for the key already computed.The code that I used was :

// get the last element in the dictionary and set it's value
NSString *strKey = [[(NSMutableDictionary *)parentObj allKeys] lastObject];
[(NSMutableDictionary *)parentObj setObject:theValue forKey:strKey]; 

But surprise! the last value is the same always (in my specific case the first added element). What the heck ?

Digging more deeply into this, seems that setObject:ForKey doesn’t ADD at the end of the dictionary, but more randomly insert the elements.

Go to Top