쪽지발송 성공
Click here
재능넷 이용방법
재능넷 이용방법 동영상편
가입인사 이벤트
판매 수수료 안내
안전거래 TIP
재능인 인증서 발급안내

🌲 지식인의 숲 🌲

🌳 디자인
🌳 음악/영상
🌳 문서작성
🌳 번역/외국어
🌳 프로그램개발
🌳 마케팅/비즈니스
🌳 생활서비스
🌳 철학
🌳 과학
🌳 수학
🌳 역사
해당 지식과 관련있는 인기재능

 안녕하세요. 안드로이드 기반 개인 앱, 프로젝트용 앱부터 그 이상 기능이 추가된 앱까지 제작해 드립니다.  - 앱 개발 툴: 안드로이드...

소개안드로이드 기반 어플리케이션 개발 후 서비스를 하고 있으며 스타트업 경험을 통한 앱 및 서버, 관리자 페이지 개발 경험을 가지고 있습니다....

안녕하세요.신호처리를 전공한 개발자 입니다. 1. 영상신호처리, 생체신호처리 알고리즘 개발2. 안드로이드 앱 개발 3. 윈도우 프로그램...

Titanium 앱 성능 최적화 및 디버깅

2024-09-12 03:00:49

재능넷
조회수 1124 댓글수 0

Titanium 앱 성능 최적화 및 디버깅 마스터하기 🚀

 

 

모바일 앱 개발 세계에서 Titanium은 강력한 크로스 플랫폼 프레임워크로 자리잡고 있습니다. 하지만 뛰어난 성능의 앱을 만들기 위해서는 최적화와 디버깅 기술이 필수적입니다. 이 가이드에서는 Titanium 앱의 성능을 극대화하고 효과적으로 디버깅하는 방법을 상세히 알아보겠습니다.

 

재능넷과 같은 플랫폼에서 활동하는 개발자들에게 이러한 기술은 매우 중요합니다. 고품질의 앱을 제작하여 클라이언트의 만족도를 높이고, 자신의 재능을 더욱 빛나게 할 수 있기 때문입니다. 이제 Titanium 앱 개발의 숨겨진 비밀들을 함께 파헤쳐 보겠습니다! 🕵️‍♂️💻

1. Titanium 앱 성능의 기초 이해하기 📊

Titanium 앱의 성능을 최적화하기 전에, 먼저 성능에 영향을 미치는 주요 요소들을 이해해야 합니다. 이는 마치 자동차의 엔진을 튜닝하기 전에 엔진의 작동 원리를 이해하는 것과 같습니다.

 

1.1 메모리 관리의 중요성 🧠

Titanium 앱에서 메모리 관리는 성능에 직접적인 영향을 미칩니다. 메모리 누수(Memory Leak)는 앱의 속도를 저하시키고, 최악의 경우 크래시를 유발할 수 있습니다.

 

1.2 렌더링 성능 🖼️

UI 요소의 렌더링 속도는 사용자 경험에 큰 영향을 미칩니다. 복잡한 레이아웃이나 과도한 애니메이션은 앱의 반응성을 떨어뜨릴 수 있습니다.

 

1.3 네트워크 통신 최적화 🌐

대부분의 모바일 앱은 서버와의 통신이 필수적입니다. 비효율적인 네트워크 요청은 앱의 전반적인 성능을 저하시킬 수 있습니다.

 

1.4 백그라운드 프로세스 관리 ⚙️

불필요한 백그라운드 작업은 배터리 소모를 증가시키고 전체적인 앱 성능을 저하시킬 수 있습니다.

Titanium 앱 성능 요소 메모리 관리 렌더링 성능 네트워크 최적화

이러한 기본적인 성능 요소들을 이해하고 나면, 구체적인 최적화 기법을 적용할 준비가 된 것입니다. 다음 섹션에서는 각 요소별로 상세한 최적화 방법을 살펴보겠습니다.

2. 메모리 관리 최적화 기법 💾

메모리 관리는 Titanium 앱 성능 최적화의 핵심입니다. 효율적인 메모리 관리는 앱의 반응성을 높이고, 안정성을 향상시킵니다.

 

2.1 객체 생명주기 관리 🔄

Titanium에서 객체의 생명주기를 적절히 관리하는 것은 매우 중요합니다. 사용하지 않는 객체는 즉시 해제하여 메모리를 확보해야 합니다.


// 잘못된 예
var win = Ti.UI.createWindow({
    backgroundColor: '#fff'
});
win.open();

// 올바른 예
var win = Ti.UI.createWindow({
    backgroundColor: '#fff'
});
win.addEventListener('close', function() {
    win = null;
});
win.open();

 

2.2 이벤트 리스너 관리 👂

이벤트 리스너를 적절히 관리하지 않으면 메모리 누수의 주요 원인이 될 수 있습니다. 항상 사용이 끝난 리스너는 제거해야 합니다.


var button = Ti.UI.createButton({
    title: 'Click me'
});

function handleClick() {
    console.log('Button clicked');
}

button.addEventListener('click', handleClick);

// 나중에 리스너 제거
button.removeEventListener('click', handleClick);

 

2.3 큰 데이터셋 처리 📊

대량의 데이터를 처리할 때는 메모리 사용량에 특히 주의해야 합니다. 페이지네이션이나 lazy loading 기법을 사용하여 메모리 사용을 최소화할 수 있습니다.


// 페이지네이션 예시
var pageSize = 20;
var currentPage = 1;

function loadData() {
    var start = (currentPage - 1) * pageSize;
    var end = start + pageSize;
    var data = largeDataset.slice(start, end);
    
    // 데이터 표시 로직
    
    currentPage++;
}

 

2.4 이미지 최적화 🖼️

이미지는 메모리를 많이 사용하는 리소스 중 하나입니다. 필요한 크기로 이미지를 리사이징하고, 사용하지 않는 이미지는 메모리에서 해제해야 합니다.


var image = Ti.UI.createImageView({
    image: 'large_image.jpg',
    width: Ti.UI.SIZE,
    height: Ti.UI.SIZE
});

// 이미지 사용 후
function cleanupImage() {
    image.image = null;
    image = null;
}
메모리 관리 최적화 기법 객체 생명주기 관리 이벤트 리스너 관리 큰 데이터셋 처리 이미지 최적화

이러한 메모리 관리 기법들을 적용하면 Titanium 앱의 성능을 크게 향상시킬 수 있습니다. 메모리 사용량을 모니터링하고 주기적으로 최적화를 수행하는 것이 중요합니다. 다음 섹션에서는 UI 렌더링 성능을 최적화하는 방법에 대해 알아보겠습니다.

3. UI 렌더링 성능 최적화 🖌️

사용자 인터페이스(UI)의 렌더링 성능은 앱의 사용자 경험에 직접적인 영향을 미칩니다. 부드럽고 반응이 빠른 UI는 사용자 만족도를 크게 높일 수 있습니다.

 

3.1 레이아웃 최적화 📐

복잡한 레이아웃은 렌더링 성능을 저하시킬 수 있습니다. 가능한 한 단순한 레이아웃을 사용하고, 중첩된 뷰의 깊이를 최소화해야 합니다.


// 비효율적인 레이아웃
var view = Ti.UI.createView({
    layout: 'vertical'
});
for (var i = 0; i < 100; i++) {
    view.add(Ti.UI.createLabel({ text: 'Item ' + i }));
}

// 효율적인 레이아웃
var tableView = Ti.UI.createTableView();
var data = [];
for (var i = 0; i < 100; i++) {
    data.push({ title: 'Item ' + i });
}
tableView.setData(data);

 

3.2 뷰 재사용 ♻️

긴 리스트를 표시할 때는 뷰를 재사용하는 것이 중요합니다. TableView나 ListView를 사용하여 화면에 보이는 항목만 렌더링하고 스크롤할 때 뷰를 재사용할 수 있습니다.


var listView = Ti.UI.createListView({
    templates: {
        'template': {
            properties: { height: 60 },
            childTemplates: [
                {
                    type: 'Ti.UI.Label',
                    bindId: 'title',
                    properties: {
                        left: 10,
                        color: '#000'
                    }
                }
            ]
        }
    },
    defaultItemTemplate: 'template'
});

var sections = [];
var fruitSection = Ti.UI.createListSection({ headerTitle: 'Fruits' });
var fruitDataSet = [
    { title: { text: 'Apple' } },
    { title: { text: 'Banana' } },
    { title: { text: 'Orange' } }
];
fruitSection.setItems(fruitDataSet);
sections.push(fruitSection);

listView.sections = sections;

 

3.3 애니메이션 최적화 🎬

과도한 애니메이션은 UI 성능을 저하시킬 수 있습니다. 하드웨어 가속을 활용하고, 복잡한 애니메이션은 간소화하는 것이 좋습니다.


// 하드웨어 가속을 사용한 애니메이션
var view = Ti.UI.createView({
    backgroundColor: '#f00',
    width: 100,
    height: 100
});

var animation = Ti.UI.createAnimation({
    left: 200,
    duration: 1000
});

view.animate(animation);

 

3.4 비동기 로딩 활용 ⏳

무거운 작업은 백그라운드에서 비동기적으로 처리하여 UI 스레드의 부하를 줄여야 합니다.


function loadHeavyData(callback) {
    setTimeout(function() {
        // 무거운 데이터 처리 로직
        var result = heavyComputation();
        callback(result);
    }, 0);
}

loadHeavyData(function(result) {
    // UI 업데이트
    updateUI(result);
});
UI 렌더링 성능 최적화 레이아웃 최적화 뷰 재사용 애니메이션 최적화 비동기 로딩 활용

이러한 UI 렌더링 최적화 기법들을 적용하면 Titanium 앱의 반응성과 사용자 경험을 크게 향상시킬 수 있습니다. 다음 섹션에서는 네트워크 통신을 최적화하는 방법에 대해 알아보겠습니다.

4. 네트워크 통신 최적화 🌐

모바일 앱에서 네트워크 통신은 성능에 큰 영향을 미치는 요소 중 하나입니다. 효율적인 네트워크 통신은 앱의 반응성을 높이고 데이터 사용량을 줄일 수 있습니다.

 

4.1 데이터 압축 🗜️

서버와 클라이언트 간 통신 시 데이터를 압축하면 전송 속도를 높이고 데이터 사용량을 줄일 수 있습니다. GZIP 압축을 사용하는 것이 일반적입니다.


var xhr = Ti.Network.createHTTPClient({
    onload: function(e) {
        // 응답 처리
    },
    onerror: function(e) {
        Ti.API.debug(e.error);
    },
    timeout: 5000
});

xhr.open("GET", "https://api.example.com/data");
xhr.setRequestHeader("Accept-Encoding", "gzip");
xhr.send();

 

4.2 캐싱 전략 구현 📦

자주 변경되지 않는 데이터는 로컬에 캐싱하여 불필요한 네트워크 요청을 줄일 수 있습니다.


function fetchData(url, callback) {
    var cache = Ti.App.Properties.getString(url);
    if (cache) {
        callback(JSON.parse(cache));
        return;
    }

    var xhr = Ti.Network.createHTTPClient({
        onload: function(e) {
            Ti.App.Properties.setString(url, this.responseText);
            callback(JSON.parse(this.responseText));
        },
        onerror: function(e) {
            Ti.API.debug(e.error);
        },
        timeout: 5000
    });

    xhr.open("GET", url);
    xhr.send();
}

 

4.3 배치 요청 처리 📊

여러 개의 작은 요청 대신 하나의 큰 요청으로 데이터를 가져오면 네트워크 오버헤드를 줄일 수 있습니다.


// 비효율적인 방법
for (var i = 0; i < items.length; i++) {
    fetchItem(items[i].id);
}

// 효율적인 방법
fetchItems(items.map(item => item.id));

 

4.4 오프라인 모드 지원 📴

네트워크 연결이 불안정한 상황에서도 앱이 동작할 수 있도록 오프라인 모드를 구현하는 것이 좋습니다.


var isOnline = Ti.Network.online;

Ti.Network.addEventListener('change', function(e) {
    if (e.online) {
        Ti.API.info('Device is online');
        syncData();
    } else {
        Ti.API.info('Device is offline');
        enableOfflineMode();
    }
});

function syncData() {
    // 온라인 상태일 때 데이터 동기화
}

function enableOfflineMode() {
    // 오프라인 모드 활성화
}
네트워크 통신 최적화 데이터 압축 캐싱 전략 배치 요청 처리 오프라인 모드 지원

이러한 네트워크 통신 최적화 기법들을 적용하면 Titanium 앱의 데이터 로딩 속도를 크게 향상시키고 사용자 경험을 개선할 수 있습니다. 다음 섹션에서는 백그라운드 프로세스 관리에 대해 알아보겠습니다.

5. 백그라운드 프로세스 관리 ⚙️

백그라운드 프로세스는 앱의 성능과 배터리 소모에 큰 영향을 미칩니다. 효율적인 백그라운드 프로세스 관리는 앱의 전반적인 성능을 향상시키고 사용자 경험을 개선할 수 있습니다.

 

5.1 백그라운드 작업 최소화 🔄

앱이 백그라운드 상태일 때는 필수적인 작업만 수행하도록 해야 합니다. 불필요한 백그라운드 작업은 배터리 소모의 주요 원인이 될 수 있습니다.


Ti.App.addEventListener('pause', function() {
    // 앱이 백그라운드로 전환될 때
    stopNonEssentialTasks();
});

Ti.App.addEventListener('resume', function() {
    // 앱이 포그라운드로 돌아올 때
    resumeNormalOperations();
});

function stopNonEssentialTasks() {
    // 불필요한 타이머 중지
    // 네트워크 요청 취소
    // 리소스 집약적인 작업 중단
}

function resumeNormalOperations() {
    // 필요한 작업 재개
}

 

5.2 효율적인 백그라운드 서비스 구현 🔧

백그라운드에서 실행해야 하는 중요한 작업은 효율적으로 구현해야 합니다. iOS의 경우 Background Fetch, Android의 경우 WorkManager를 활용할 수 있습니다.


// Android에서 WorkManager 사용 예시
var workmanager = require('ti.workmanager');

var work = {
    id: 'syncData',
    callback: 'app.syncDataInBackground',
    requiresCharging: false,
    requiresNetworkType: workmanager.NETWORK_TYPE_CONNECTED,
    persistAcrossReboots: true
};

workmanager.enqueueWork(work);

// 백그라운드에서 실행될 함수
exports.syncDataInBackground = function() {
    // 데이터 동기화 로직
    Ti.API.info('Syncing data in background');
};

 

5.3 푸시 알림 최적화 📢

푸시 알림은 사용자 참여를 높이는 좋은 방법이지만, 과도한 알림은 오히려 역효과를 낼 수 있습니다. 사용자 맞춤형 알림 전략을 구현하세요.


var CloudPush = require('ti.cloudpush');

CloudPush.retrieveDeviceToken({
    success: function(e) {
        Ti.API.info('Device token: ' + e.deviceToken);
        // 서버에 디바이스 토큰 전송
    },
    error: function(e) {
        Ti.API.error('Failed to register for push notifications');
    }
});

CloudPush.addEventListener('callback', function(evt) {
    Ti.API.info('Received push: ' + JSON.stringify(evt));
    // 푸시 알림 처리 로직
});

 

5.4 주기적인 작업 스케줄링 🕰️

정기적으로 실행해야 하는 작업은 적절한 간격으로 스케줄링하여 배터리 소모를 최소화해야 합니다. 예를 들어, 위치 업데이트나 데이터 동기화와 같은 작업을 효율적으로 스케줄링할 수 있습니다.


// 주기적인 위치 업데이트 예시
var locationModule = require('ti.geolocation');

locationModule.requestLocationPermissions(locationModule.AUTHORIZATION_WHEN_IN_USE, function(e) {
    if (e.success) {
        startLocationUpdates();
    } else {
        Ti.API.error('Failed to get location permissions');
    }
});

function startLocationUpdates() {
    locationModule.setAccuracy(locationModule.ACCURACY_HIGH);
    locationModule.setDistanceFilter(100); // 100미터마다 업데이트
    locationModule.setPreferredProvider(locationModule.PROVIDER_GPS);

    locationModule.addEventListener('location', function(e) {
        if (e.success) {
            Ti.API.info('Updated location: ' + JSON.stringify(e.coords));
            // 위치 정보 처리 로직
        }
    });
}
백그라운드 프로세스 관리 백그라운드 작업 최소화 효율적인 백그라운드 서비스 푸시 알림 최적화 주기적인 작업 스케줄링

이러한 백그라운드 프로세스 관리 기법들을 적용하면 Titanium 앱의 전반적인 성능과 배터리 효율성을 크게 향상시킬 수 있습니다. 다음 섹션에서는 Titanium 앱의 디버깅 기법에 대해 알아보겠습니다.

6. Titanium 앱 디버깅 기법 🐛

효과적인 디버깅은 고품질의 앱을 개발하는 데 필수적입니다. Titanium에서는 다양한 디버깅 도구와 기법을 활용하여 문제를 신속하게 식별하고 해결할 수 있습니다.

 

6.1 콘솔 로깅 활용 📝

Ti.API.info(), Ti.API.debug(), Ti.API.error() 등의 메서드를 사용하여 중요한 정보를 로깅하세요. 이는 앱의 동작을 추적하고 문제를 식별하는 데 도움이 됩니다.


function performCriticalOperation() {
    Ti.API.info('Starting critical operation');
    try {
        // 중요한 작업 수행
        Ti.API.debug('Operation details: ' + JSON.stringify(operationDetails));
    } catch (e) {
        Ti.API.error('Critical operation failed: ' + e.message);
    }
    Ti.API.info('Critical operation completed');
}

 

6.2 크래시 리포팅 구현 💥

크래시 리포팅 도구를 사용하여 예기치 않은 오류를 추적하고 분석할 수 있습니다. Crashlytics나 Bugsnag과 같은 서비스를 Titanium 앱에 통합할 수 있습니다.


var Bugsnag = require('ti.bugsnag');

Bugsnag.startBugsnagWithApiKey('YOUR_API_KEY');

Ti.App.addEventListener('uncaughtException', function(e) {
    Bugsnag.notify('Uncaught Exception', e.message, {
        severity: 'error',
        stacktrace: e.backtrace
    });
});

 

6.3 성능 프로파일링 📊

Titanium Studio나 Chrome DevTools를 사용하여 앱의 성능을 프로파일링할 수 있습니다. 이를 통해 병목 현상이나 메모리 누수를 식별할 수 있습니다.


// 성능 측정 예시
var startTime = new Date().getTime();

performHeavyOperation();

var endTime = new Date().getTime();
var executionTime = endTime - startTime;

Ti.API.info('Operation took ' + executionTime + ' milliseconds');

 

6.4 단위 테스트 구현 🧪

Jasmine이나 Mocha와 같은 JavaScript 테스트 프레임워크를 사용하여 Titanium 앱의 핵심 기능에 대한 단위 테스트를 작성할 수 있습니다.


// Jasmine을 사용한 단위 테스트 예시
describe('Utility Functions', function() {
    it('should correctly format currency', function() {
        var result = formatCurrency(1000);
        expect(result).toBe('$1,000.00');
    });

    it('should validate email addresses', function() {
        expect(isValidEmail('test@example.com')).toBe(true);
        expect(isValidEmail('invalid-email')).toBe(false);
    });
});
Titanium 앱 디버깅 기법 콘솔 로깅 활용 크래시 리포팅 구현 성능 프로파일링 단위 테스트 구현

이러한 디버깅 기법들을 적용하면 Titanium 앱의 안정성과 품질을 크게 향상시킬 수 있습니다. 효과적인 디버깅은 개발 과정을 더욱 효율적으로 만들고, 최종 사용자에게 더 나은 경험을 제공할 수 있습니다.

7. 결론 및 최종 팁 🏁

Titanium 앱의 성능 최적화와 디버깅은 지속적인 과정입니다. 앱 개발의 모든 단계에서 이러한 기법들을 적용하고 개선해 나가는 것이 중요합니다.

 

주요 포인트 요약:

  • 메모리 관리에 주의를 기울이세요. 객체 생명주기를 적절히 관리하고 메모리 누수를 방지하세요.
  • UI 렌더링 성능을 최적화하세요. 복잡한 레이아웃을 피하고 뷰 재사용을 활용하세요.
  • 네트워크 통신을 효율적으로 관리하세요. 데이터 압축, 캐싱, 배치 요청을 활용하세요.
  • 백그라운드 프로세스를 최소화하고 효율적으로 관리하세요.
  • 다양한 디버깅 도구와 기법을 활용하여 문제를 신속하게 식별하고 해결하세요.

 

추가 팁:

  • 정기적으로 성능 테스트를 수행하고 결과를 분석하세요.
  • 사용자 피드백을 적극적으로 수집하고 반영하세요.
  • Titanium 커뮤니티에 참여하여 최신 트렌드와 팁을 공유하세요.
  • 지속적인 학습과 실험을 통해 개발 스킬을 향상시키세요.

이러한 기법들을 마스터하면 고성능의 안정적인 Titanium 앱을 개발할 수 있습니다. 사용자들에게 최고의 경험을 제공하는 앱을 만들어 보세요!

Titanium 앱 개발 마스터 사이클 계획 개발 테스트 최적화

Titanium 앱 개발의 여정에서 이 가이드가 도움이 되길 바랍니다. 끊임없는 학습과 개선을 통해 여러분의 앱이 성공을 거두길 기원합니다. 화이팅! 🚀

관련 키워드

  • Titanium
  • 성능 최적화
  • 디버깅
  • 메모리 관리
  • UI 렌더링
  • 네트워크 통신
  • 백그라운드 프로세스
  • 크래시 리포팅
  • 단위 테스트
  • 프로파일링

지적 재산권 보호

지적 재산권 보호 고지

  1. 저작권 및 소유권: 본 컨텐츠는 재능넷의 독점 AI 기술로 생성되었으며, 대한민국 저작권법 및 국제 저작권 협약에 의해 보호됩니다.
  2. AI 생성 컨텐츠의 법적 지위: 본 AI 생성 컨텐츠는 재능넷의 지적 창작물로 인정되며, 관련 법규에 따라 저작권 보호를 받습니다.
  3. 사용 제한: 재능넷의 명시적 서면 동의 없이 본 컨텐츠를 복제, 수정, 배포, 또는 상업적으로 활용하는 행위는 엄격히 금지됩니다.
  4. 데이터 수집 금지: 본 컨텐츠에 대한 무단 스크래핑, 크롤링, 및 자동화된 데이터 수집은 법적 제재의 대상이 됩니다.
  5. AI 학습 제한: 재능넷의 AI 생성 컨텐츠를 타 AI 모델 학습에 무단 사용하는 행위는 금지되며, 이는 지적 재산권 침해로 간주됩니다.

재능넷은 최신 AI 기술과 법률에 기반하여 자사의 지적 재산권을 적극적으로 보호하며,
무단 사용 및 침해 행위에 대해 법적 대응을 할 권리를 보유합니다.

© 2024 재능넷 | All rights reserved.

댓글 작성
0/2000

댓글 0개

해당 지식과 관련있는 인기재능

미국석사준비중인 학생입니다.안드로이드 난독화와 LTE관련 논문 작성하면서 기술적인것들 위주로 구현해보았고,보안기업 개발팀 인턴도 오랜시간 ...

안녕하세요 안드로이드 개발 7년차에 접어든 프로그래머입니다. 간단한 과제 정도는 1~2일 안에 끝낼 수 있구요 개발의 난이도나 프로젝...

웹 & 안드로이드 5년차입니다. 프로젝트 소스 + 프로젝트 소스 주석 +  퍼포먼스 설명 및 로직 설명 +  보이스톡 강의 + 실시간 피...

📚 생성된 총 지식 9,925 개

  • (주)재능넷 | 대표 : 강정수 | 경기도 수원시 영통구 봉영로 1612, 7층 710-09 호 (영통동) | 사업자등록번호 : 131-86-65451
    통신판매업신고 : 2018-수원영통-0307 | 직업정보제공사업 신고번호 : 중부청 2013-4호 | jaenung@jaenung.net

    (주)재능넷의 사전 서면 동의 없이 재능넷사이트의 일체의 정보, 콘텐츠 및 UI등을 상업적 목적으로 전재, 전송, 스크래핑 등 무단 사용할 수 없습니다.
    (주)재능넷은 통신판매중개자로서 재능넷의 거래당사자가 아니며, 판매자가 등록한 상품정보 및 거래에 대해 재능넷은 일체 책임을 지지 않습니다.

    Copyright © 2024 재능넷 Inc. All rights reserved.
ICT Innovation 대상
미래창조과학부장관 표창
서울특별시
공유기업 지정
한국데이터베이스진흥원
콘텐츠 제공서비스 품질인증
대한민국 중소 중견기업
혁신대상 중소기업청장상
인터넷에코어워드
일자리창출 분야 대상
웹어워드코리아
인터넷 서비스분야 우수상
정보통신산업진흥원장
정부유공 표창장
미래창조과학부
ICT지원사업 선정
기술혁신
벤처기업 확인
기술개발
기업부설 연구소 인정
마이크로소프트
BizsPark 스타트업
대한민국 미래경영대상
재능마켓 부문 수상
대한민국 중소기업인 대회
중소기업중앙회장 표창
국회 중소벤처기업위원회
위원장 표창