Sunday, September 23, 2012

Where is my SVN in Mac OS X Mountain Lion?

Well, I've just installed the new OS X Mountain Lion and surprise!!! There is no SVN on it. Subversion is not included in this new version but developers need SVN as well and not only GIT.


How to install it?

If you are a iOS developer you are lucky. After install the last release of XCode go to Preferences > Download > Command Line Tools  and click on Install. Wait a while (115.4MB) and done! You will have SVN installed in your Mac.

Hope Help!



Tuesday, June 19, 2012

Sending files via FTP automatically under LINUX

Hi,

I'm going to show how to send files (backup copies for example) via FTP using ncftp and a traditiona ftp cliente under linux.

NCFTP

First we need to install the ncftp package:

apt-get insttall ncftp

And now the script (script name: sendviaftp.sh) :

#!/bin/bash
FTP_SERV="ftp.yourserver.com"
FTP_USER="youruser"
FTP_PASS="yourpass"
FTP_PATH="/directory/you/want"
ncftpput -R -m -u $FTP_USER - p $FTP_USER $FTP_SERV $FTP_PATH $1

where $1 is the command line parameter. For example:

./sendviaftp.sh   filetosend.tar.gz

FTP Cliente

If you want to do the same with your traditional FTP client the steps are:

1) Add to the file  ~/.netrc the user and password for your FTP
vi ~/.netrc
default login FTPUSERNAME password FTPPASSWORD


2) Write the next script


#!/bin/bash
HOST='ftp.yourserver .com'
ftp  -i $HOST <<END_SCRIPT
put $1
quit
END_SCRIPT
exit 0


3) Try it up:

chmod 0600 ~/.netrc
chmod +x ftpscript
./ftpscript

Bye! 

Sunday, March 11, 2012

Video for iPhone/iPad using MPMoviePlayerController

First of all, we need to add the framework MediaPlayer to the project (MediaPlayer.framework) and then include the header file:
#import <MediaPlayer/MediaPlayer.h>
Suppose we saved the  MP4 file on disk. We have to provide the path in our code:
NSString *path = [[NSBundle mainBundle] pathForResource:@"nombre-video-sin-ext" ofType:@"mp4"];
NSURL *url = [NSURL fileURLWithPath:path];

MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:url];
Now we have to set the video size and position. It is worth noting that MPMoviePlayerController inherits from UIViewController so we set the player.view properties.
player.view.frame = CGRectMake(50, 50, 698, 500);
[self.view addSubview:player.view];
[player prepareToPlay];
Finally, if we want to manage the video we will use:
[player play];
[player pause];
[player stop];
If we want to perform an action when the video ends, we can use notifications. For example:
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(movieFinishedCallback:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:player];
y pass the object player as a parameter to the function movieFinishedCallback:
- (void) movieFinishedCallback:(NSNotification*) aNotification {
MPMoviePlayerController *player = [aNotification object];
[[NSNotificationCenter defaultCenter]
removeObserver:self
name:MPMoviePlayerPlaybackDidFinishNotification
object:player];
[player stop];
[player autorelease];
}
We are ready to watch videos on iPad or iPhone.

Wednesday, August 24, 2011

How to do vertical alignment for UILabels

I wrote something about that but I don't remember where :). Anyway, the easiest way is to add a method to the UILabel class.

Include in your file (or create a new one) this interface to extend the current UILabel one:
@interface UILabel (VerticalAlign)
- (void)alignTop;
@end
Add the method code in the .m file:
- (void)alignTop {
    CGSize fontSize = [self.text sizeWithFont:self.font];
    double finalHeight = fontSize.height * self.numberOfLines;
    double finalWidth = self.frame.size.width;    
    CGSize theStringSize = [self.text sizeWithFont:self.font constrainedToSize:CGSizeMake(finalWidth, finalHeight) lineBreakMode:self.lineBreakMode];
    int newLinesToPad =
(finalHeight  - theStringSize.height) / fontSize.height;
    for(int i=0; i
        self.text = [self.text stringByAppendingString:@"\n "];
}

Done, now you can use this new method
[YourUILabel alignTop];

Hope help!

Wednesday, August 17, 2011

How to install ImageMagick in a Mac for MAMP

Hello,

First of all we need some tools:

For installing MacPort download the last version and on a terminal write:
$ sudo port selfupdate
If it doesn't work it's because you need to add the new path to the system PATH variable, ie:
$ export PATH=$PATH:/opt/local/bin
$ export MANPATH=$MANPATH:/opt/local/share/man
$ export INFOPATH=$INFOPATH:/opt/local/share/info
Now, we can install the ImageMagick and GhostScript
$ sudo port install ImageMagick
$ sudo port install ghostscript
Now it's time to configure the MAMP
$ vi /Applications/MAMP/Library/bin/envvars
and comments the lines

#DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
#export DYLD_LIBRARY_PATH
and add a new line at the end of the file
export PATH="$PATH:/opt/local/bin"
and done!!!

Try it out
exec(‘convert -resize 640×480 -quality 70 test.eps test.jpg’);

Hope help!

Friday, July 15, 2011

How to connect using PHP to Oracle DB

Hi again. Today an brief explanation about how to install OCI8 for PHP.

1) We need to install PEAR

$sudo apt-get install php-pear libaio1 php5-dev

php-pear the PHP extensión
libaoi1 is th Linux kernel AIO access library
php5-dev because we need the command phpize

2) Download the Oracle Instant Client from the official Oracle website (you need to create an account) and download the files

instantclient-basic-linux32-XX.X.X.X.X.zip
instantclient-sdk-linux32-XX.X.X.X.X.zip

3) Create your own tree of directories

$ sudo mkdir -p /opt/oracle
$ sudo cd /opt/oracle
$ sudo unzip instantclient-basic-linux32-XX.X.X.X.X.zip
$ sudo unzip instantclient-sdk-linux32-XX.X.X.X.X.zip
$ sudo mv instantclient_XX_X instanclient

4) Set some soft links
$ sudo ln -s libclntsh.so.10.1 libclntsh.so
$ sudo ln -s libocci.so.10.1 libocci.so

5) Install the OCI module (needs php5-dev)
$sudo pecl install oci8
...
[path]: instantclient,/opt/oracle/instantclient

6) Add to /etc/php5/apache/php.ini the line
extension=oci8.so

7) Reset apache services and... voila!!

Hope help

Tuesday, July 5, 2011

iPhone: Determining available memory programmatically

Hi, here it's the way I use to determine the available memory in my apps. I have a class with an static method where I use the Mach VM statistics


#import <mach/mach.h>
#import <mach/mach_host.h>

+(void) print_free_memory {
mach_port_t host_port;
mach_msg_type_number_t host_size;
vm_size_t pagesize;

host_port = mach_host_self();
host_size = sizeof(vm_statistics_data_t) / sizeof(integer_t);
host_page_size(host_port, &pagesize);

vm_statistics_data_t vm_stat;

if (host_statistics(host_port, HOST_VM_INFO, (host_info_t)&vm_stat, &host_size) != KERN_SUCCESS)
NSLog(@"Failed to fetch vm statistics");

/* Stats in bytes */
natural_t mem_used = (vm_stat.active_count +
vm_stat.inactive_count +
vm_stat.wire_count) * pagesize;
natural_t mem_free = vm_stat.free_count * pagesize;
natural_t mem_total = mem_used + mem_free;
NSLog(@"used: %u free: %u total: %u", mem_used, mem_free, mem_total);
}


The original code version was created by Landon Fuller.

Hope help.