Posts

Showing posts from August, 2017

Design Patterns & Principles - Strategy Pattern

This is a part of a blogpost series listing the design principles and pattern definitions. The Strategy Pattern - defines a family of algorithms, encapsulates each one, and makes them interchangeable. Strategy lets algorithm vary independently from clients that use it. Following are few principles adhered in this pattern Identify the aspect of your application that vary and separate them from what stays same. Program to interface not to an implementation Favor composition over inheritance The example code for strategy pattern in Swift is available at my github repo . courtesy: Head First Design Patterns

Protocol oriented programming PoP

This post is a part of my blogpost series while learning Swift and Programming paradigms. First part on Functional Programming can be found here . Protocol oriented programming (POP)  can be said as as - a way to adhere the " Program to interface not to implement " principle  - which is one of the basic design principles of software development. Structure your code such that you define interfaces first then make the classes implement it. Define interfaces using protocols and then make classes implement them. POP is just another technical term for the interface programming in Swift programming language. Yes! There are additional advantages of POP in swift using "Extensions" along with protocols in Swift. Let us discuss this with a classic example - Shapes and its classes . Any shape has area. Every shape needs to be drawn on some canvas. Typically an average programmer thinks: Let's have a base class named Shape. Let's derive all other concrete cl

Functional programming concept and Swift

Image
For quite sometime now I am on a new programming language from Apple - Swift. Apart from the hype Swift got there are multiple programming paradigms that I got introduced to - Functional Programming ( FP ), Protocol oriented programming ( PoP ). I was little curious as I knew what functions are and what protocols are used for especially in objective-C, and my mind asked me few questions - What are Functional Programming and Protocol oriented programming? Is swift a Functional Programming language or a Protocol oriented programming language? Is it mandatory to learn in Functional Programming or Protocol oriented programming to code in Swift? What is the right way? Browsing through some websites and reading few books, this is what I understand. In this post I will be sharing my thoughts & understanding on FP and a subsequent post on PoP. Q: What is Functional Programming? Answer:  (In non-developer's term) Functional Programming is a way of how you code your so

Compiler directives in objective-C 2.0

Here are the list of directives in Objective-C 2.0. Let me know if anything is missing. // directives used in class declaration @interface @public @package @protected @private @property @end // directives used in class implementation @implementation @synthesize @dynamic @end // creating a string object @”string” // for forward declaration @class // similar to function pointers @selector() // used for method declaration mainly for delegation purpose @protocol @required @optional @end // to assure thread safety @synchronized // handling memory issues (useful in ARC enabled apps) @autoreleasepool // throwing and handling exceptions @throw @try @catch @finally // type encoding ( Apple docs ) @encode // aliasing an existing class name to a new one (useful in refactoring) @compatibility_alias Happy coding!

Rotate Scale Flip - NSImageView

This is a problem which I have fiddled a lot to solve. Sometimes NSImageView objects seems to behave strangely when you rotate them and try to reposition it inside its superview. The Problem: I had an NSImageView as subview of another NSView. There where slider controls to scale and rotate the subview as and when required. I also had horizontal and vertical flipping options. So when I played around with it, the subview started acting weirdly. I had used [subview setFrameCenterRotation:angle]; to rotate the subview. For flipping NSAffineTransform scaleXBy:yBy: was helpful. Scaling I had set the imageScaling flag, so that I just have to set the frame and NSImageView takes care of it by itself. Now why is this acting weirdly? Seems all fine. All proper apis have been used. After some brain wracking and a little help from OpenGL transformation application, I found out the solution. If you have rotated a image view, before doing any other transformation rotate it back to ze

Tint an NSImage view

I was developing an editor kind of stuff, where there are multiple images placed in a view and lot of custom drawings happen here and there in the custom views. The user gets to select a view and it has to be highlighted. For this I used to dram a boundary line using NSBezierPath in the view's drawRect: method. But this used to hide the edges and corners of the view. Users started to complain they cannot place the views pixel perfect. They demanded for tinting the view. After googling out for some time I found following NSImage extension: @implementation NSImage (Extends) - (NSImage *)imageTintedWithColor:(NSColor *)tint {     if (tint != nil) {         NSSize size = [self size];         NSRect bounds = { NSZeroPoint, size };         NSImage *tintedImage = [[NSImage alloc] initWithSize:size];         [tintedImage lockFocus];         CIFilter *colorGenerator = [CIFilter filterWithName:@"CIConstantColorGenerator"];         CIColor *color = [[[CIColor alloc] in

helloAll();

// This is a programming blog // Here I planning to share my programming tips and tricks which I learn helloAll ("welcome") { /* I am always intrigued by new programming languages and want to  learn them, use them to create solutions.  I also try to understand why something is good in some situations. Currently in search of enlightenment. */  learn(); share(); aceeptSuggestions(); respondToComments(); // So I hope this new journey will be exciting. thanks(); }