Posts Tagged ‘Programming’

Spark Inspector : Its flexibity

Ok.. Using Spark Inspector was very easy.

At first there was one odd thing : Where is the SparkInspector.framework?
It’s located in Spark Inspector app. However, if using its “Framework Setup assistant”, the app ingest frameworks to be linked for a chosen project for you.

One thing I didn’t like was that.. as most Cocoa programmers tend to set up a Xcode project, it puts framework setting in “target” Build Settings rather than “Project” Build Settings.

link settingIf you want to set those links as default for all targets you end up adding, the easier way is to put that setting in “project” Build Settings. I know that many Mac/iOS app developers who usually jumped into Mac/iOS app dev. after iOS became popular don’t understand the different necessity between the “Target” and “Project” Build Settings.
Anyway, this is not a big deal.

Now, let’s talk about cool things.

Spark Inspector app

As you can see from the above picture, your app runs on a simulator or an actual device while debugging, but the Spark Inspector app intercept that also and displays view hierarchy in list form on its left pane, visual representation of it in the middle pane, and finally, properties of chosen view/layers on the right-most pane. So, while you are debugging and interacting with a real device or a simulator, you can change colors, tints etc by choosing a layer/view on the Spark Inspector and changes some properties of them.
You don’t need to paint your layer/view in your code for debugging purpose anymore!
Isn’t that cool?

Also, the most important and useful feature of this app is the 3D display of those views and layers. When one view occludes an underlying view completely, and if there is some transition is applied to the underlying view ( unexpectedly ), you can still check what’s happening visually.

You can say that recursiveDescription is good enough. (It’s undocumented message of UIView )
However, when there are lots of view/layers, it can be very hard to identify which one is which when you use the message. However, this great helper tool for UI debugging eases debugging very easy.

After the PaintCode, I think this is a must-have tool for iOS developers!
I’ll buy it soon.

BTW, there is one little glitch there. As you can see, the right side of the right-most pane invades the right border of its super view. So, the content on the right-most pane goes beyond the right border.

Is there any 3D visualizer for NS/UIView and CALayer?

Is there any 3D visualizer for NS/UIView and CALayer?

This is HTML inspector view of Firefox ( Aurora ).
It’s very handy to see what layer/view is where in x, y and z coordinates.

Is there any tools for iOS and Mac for Cocoa application also for development purpose?


UPDATE : Mr. Charlie Monroe gave a URL for such a tool for iOS. http://sparkinspector.comThank you!!!! ;)

LLVM’s Clang Compiler Is Now C++11 Feature Complete

OK. Now C++11 is said to be fully implemented in LLVM.
Although I kept opening my eyes on LLVM/C++0x/11 and have checked what were added, changed, etc, but it looks like that it’s time to swallow it instead of tasting.

하이브리드앱에 대한 개발자와 기업의 자세

재미난 개발관련 트윗을 하시는 김홍준(@jun0683)님의 트윗으로 부터 가져온 블로그 포스트입니다.
순수 기술 기반 회사에서 일하다가, 개발 팀 구성도 제대로 안되어 있고, 소프트웨어 개발에 대한 이해가 부족한 회사로 몇년전에 옮겨 왔는데, 그러다 보니 개발 환경에 대한 이해 자체를 개발 시안을 내는 사람이 잘 못하고 있어서 중구 난방의 계획을 세우고 그러다 보니 뭐 하나 제대로 안되는 경우가 있습니다. 그러다보니 웹 앱 개발이냐 네이티브 개발이냐, 안드로이드 개발이냐 iOS개발이냐 너무 왔다 갔다 하다 보니, 이런 저런 생각을 하게 되는데, 제가 생각한 것도 있고, 미국인들이 쓰는 블로그도 있는데, 한국분이 괜찮은 포스팅을 했구나 싶어 여기에 소개 합니다.

Well choreographed web site for mobile web developers

I happened to read some articles here at mobiForge.
It’s for mobile web app developers and articles are organized really well.

For example, “Starting”, “Designing”, “Developing”, “Testing” and “Running” are the main titles.
So, you can easily find articles for those each step.

difference in auto synthesis and “traditional” synthesis

After the introduction of iPhone SDK, many things have been changed very quickly.
Some were changed very publicly, while some didn’t. Even though there is no explanation on those changes, you could figure out some by taking a look at basic template code which Xcode puts by default.
However, some are hidden.
I was away from iOS/Mac development for a while and tried to catch up stuff recently. One of the simple but astonishing one was the internal member variable Objective-C preprocessor creates.

For example, let’s say that interface file looks like this.

@interface JAWindowController : NSObject

@property (retain, nonatomic) IBOutlet UIToolbar *toolBar;
@property (retain, nonatomic) IBOutlet UIButton *buttonOne;
@property (retain, nonatomic) IBOutlet UITextView *textViewOne;


Then when ARC is off and auto synthesis is used, it creates those internal variables which matches their properties with “_” prefixed to the property name.

#import "JAWindowController.h"

@implementation JAWindowController

- (void)dealloc
	[_buttonOne release];
	[_textViewOne release];
	[_toolBar release];
	[super dealloc];

However, if explicit synthesis is used, it will create the default internal variable names same to their property names like this.

the red underlines means a variable with such a name doesn't exists.

the red underlines means a variable with such a name doesn’t exists.

When ARC is on, it’s the same like the case of ARC is off. The only difference is that it doesn’t create dealloc message for you automatically, because usually it’s not necessary because Objective-C objects are to be released automatically by ARC mechanism.

Is Google intentionally introducing “fragmentation” to Android market?

This is very interesting article.
Android fragmentation predicted to squeeze out independent developers

Well, I’m currently working on an iOS program, which was originally implemented by some people in an outsource company. One major problem is that they didn’t understand the philosophy of Cocoa framework and Objecitve-C. So, there are maany wrongly written piece of code as well as wrong memory management, wrong view management, etc.
So, to fix some problems asked is very irritating because I have to fix those things hidden to end users as well as visible problems to people here at….

Then, unnecessary “fragmentation” occurs even on this beautiful and clean iOS platform. Often, I have to work around the wrongly written code, because people in my company didn’t understand why it coudl take longer time than they expect, because to them, the “surface” problems look small. For better management of projects, I fix fundamental problems in architecture, coding etc if that is to give me hard time. ( to work around studid code is not feasable sometimes. ) Anyway, because I have to find a way to work around some problems which are better not to solve at this moment, there must be some code which can be odd.

Then, if a platform has its inheretant fragmentation, how much headache it can give?

So, I don’t expect Android developers test their projects on every Android platform. They would choose only the major devices they think. The “circle” of the major devices can be different among people. So, Google found out that they needed “reference devices”, but they don’t look to be consistent for themselves.

So.. yes.. I expected this kind of news, which says that fragmentation expel indepedent developers. Actually it’s not only those small developers who are affected by the problem. In companies, where they have S/W dept. managers who don’t understand S/W development, would raise question to his/her S/W engineers request to buy more Android devices to test for. Then, the frustrated developers would just give up testing on more major devices, they would say, “Ok. Nowadays Sammy Galaxy 3 is hot. So, it’s OK if my program runs on it Ok.”. This will cause them to miss non-negligiby large target audiences.

On the other hand, I started to think that Google people may enjoy this fragmentation issue. You know, Google invests heavily on HTML5/AJAX. They can be the next MS once everything is to be written with HTML5/JavaScript and computers are like Chrome books. Well… I’m also threatened that I have to update my knowledge on HTML5 especially on AJAX. ( Although it was interesting, I stopped writing code in HTML5/JavaScript long time ago. ) Compared to C/C++, it’s fairly easy, and more over I already know them. So, updating with the lastest idioms and techniques wil be easy. However, I have to expand my major interest over too many things.
In 90’s it was easy to keep up to date on Perl, CGI, PHP, JavaScript, HTML, Win32/MFC, Mac, Unix, C/C++, SQL etc. But nowadays it is pretty hard.

However, thanks to the success of iPhone, native programming is still strong.
Then Google people may think that HTML5/JavaScript based computing is a strong environmeent to go over traditionally strong players in this industry.

Yeah… probably, Goole wants people to be frustrated by the fragmentation of Android. Many people will think that even iOS has that fragmentation and would not try at all.
Also, business oriented people tend to prefer write-once & deploy-on-all approach. It was things like Java, Mono .NET, etc. But while HTML/JavaScript started to have the flexibility of native languages, those folks started to prefer them over native dev., because they don’t need to maintain C# programmers, C/C++ programmers, etc.

It makes sens from one point of view, but not at all from different angle.
I hate it.

%d bloggers like this: