LinkedIn Mobile Search iPhone Architecture
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

LinkedIn Mobile Search iPhone Architecture

  • 293 views
Uploaded on

This is a high level presentation of the LinkedIn mobile search page.

This is a high level presentation of the LinkedIn mobile search page.

More in: Internet
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
293
On Slideshare
284
From Embeds
9
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 9

https://www.linkedin.com 9

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. LinkedIn Mobile Search iPhone Architecture Dennis Byrne
  • 2. Agenda ● Model View Controller Pattern ● Retrieval o Core Data o Typeahead o Federated Search ● Cell construction & the Builder pattern ● Metrics ● Full Screen Scrolling ● Unit Testing
  • 3. The Model - “if you can’t see it” ● Think nouns, not verbs ● LISearchV3Model.m o SearchData.m o NSArray o NSDictionary ● Ridiculously Good Looking
  • 4. The View - “if you can see it” ● LISearchV3ViewController.xib ● LISearchT1Cell.xib ● LISearchT1CellHigh.xib ● LISearchT1CellUltraHigh.xib ● LISearchT2Cell.xib ● LISearchT2CellHigh.xib ● LISearchV2FilterButton.xib
  • 5. The Controller ● LISearchV3ViewController.m ● Think verbs, not nouns ● Delegate Pattern ● Event Listeners ● Glue code ● Logic
  • 6. MVC … try to think of it as VCM 1010010100 1010100101 0100101001 0100111011 1111010100 1101001010 0101010010 1010010100 TM
  • 7. Agenda ● Model View Controller Pattern ● Retrieval o Core Data o Typeahead o Federated Search ● Cell construction & the Builder pattern ● Metrics ● Full Screen Scrolling ● Unit Testing
  • 8. Retrieval Data Sources ● Local Cache o Core Data o SQLite ● Typeahead o phone-fe o Typeahead Restli server ● Federated Search o phone-fe o Federated Search Restli server
  • 9. Retrieval - Core Data
  • 10. Retrieval - Remote Results ? ?
  • 11. Retrieval - Threading Model ● Everything is on the main thread ● Except … o Core Data retrieval o Core Data callbacks o HTTP requests
  • 12. Retrieval Controller phone-fe
  • 13. Agenda ● Model View Controller Pattern ● Retrieval o Core Data o Typeahead o Federated Search ● Cell construction & the Builder pattern ● Metrics ● Full Screen Scrolling ● Unit Testing
  • 14. Cell Construction - Builder Pattern ● LISearchV3UITableViewCellBuilder.m
  • 15. Cell Builder Retrieval Controller phone-fe
  • 16. Agenda ● Model View Controller Pattern ● Retrieval o Core Data o Typeahead o Federated Search ● Cell construction & the Builder pattern ● Metrics ● Full Screen Scrolling ● Unit Testing
  • 17. Metrics ● LISearchV3Metrics.m ● Page Views & Actions ● Performance o First o Second o Third o Platform  iPhone  android  touch web
  • 18. Cell Builder Metrics LPTimer Retrieval Controller Perf phone-fe
  • 19. Agenda ● Model View Controller Pattern ● Retrieval o Core Data o Typeahead o Federated Search ● Cell construction & the Builder pattern ● Metrics ● Full Screen Scrolling ● Unit Testing
  • 20. Full Screen Scrolling
  • 21. Cell Builder Full Screen Scrolling Metrics LPTimer Retrieval Controller Perf phone-fe
  • 22. Agenda ● Model View Controller Pattern ● Retrieval o Core Data o Typeahead o Federated Search ● Cell construction & the Builder pattern ● Metrics ● Full Screen Scrolling ● Unit Testing
  • 23. Unit Testing ● SenTestCase ● LISearchV3JobScheduler o LISearchV3ProductionJobScheduler.m o LISearchV3TestJobScheduler.m ● OCMock
  • 24. SenTest … similar to JUnit < 4.0 -(void)setUp { } -(void)testSomething { STAssertEquals(YES, NO, @"msg here"); STAssertEqualsWithAccuracy(1.0, 1.2, 0.1, @””); STFail(@”msg here”); }
  • 25. Dependency Injection // similar to an interface in Java @protocol LISearchV3JobScheduler <NSObject> - (void)enqueueOnMainThread:(void(^)())block; @end
  • 26. OCMock #import "OCMock.h" id op = [OCMockObject mockForClass:[LINetworkOperation class]]; NSDictionary *tag = @{@”key”: @”value”}; [(LINetworkOperation *)[[op stub] andReturnValue:OCMOCK_VALUE(tag)] tag];
  • 27. Cell Builder Full Screen Scrolling Metrics LPTimer Retrieval Controller Perf phone-fe Job Scheduler
  • 28. The Napkin Test
  • 29. Agenda ● Model View Controller Pattern ● Retrieval o Core Data o Typeahead o Federated Search ● Cell construction & the Builder pattern ● Metrics ● Full Screen Scrolling ● Unit Testing