Server Language64 [Legacy to Modernization] 3. Language Context Switching에 따른 작업 효율성 고려하기 서론최근, CodeIgnitor 1.0 beta & 언더바 템플릿 2개의 고대 유물적인 Framework를 섞어서 하나로 만들어 놓은 요상한 FrameWork 기반의 Legacy PHP Web Application을 Next.Js(Front)와 SpringBoot(Back)으로 분리하며 Converting 작업을 진행하고 있습니다. 컨버팅 작업 자체는 큰 리소스를 요구하지 않지만, 유지보수도 함께 진행해야 한다는 점에서 문제가 발생합니다. 코드 컨벤션이 전혀 지켜지지 않은 과거의 스파게티 코드와 에일리언 코드를 분석하고, 이를 Java Spring 진영에서 재구현하는 과정에서 유지보수 작업이 들어오면 다시 PHP로 돌아가야 하는 반복적인 행위가 이어집니다. 이러한 언어 컨텍스트 스위칭은 작업 효율성과 업.. Server Language/PHP 2024. 9. 25. [Legacy to Modernization] 2. 형식없는 Appliction API를 표준화된 RestAPI로 교체하기. 서론현대 소프트웨어 개발 환경에서는 API(Application Programming Interface)가 중요한 역할을 합니다. API는 다양한 소프트웨어 시스템 간의 상호 작용을 가능하게 하며, 특히 REST API(Representational State Transfer API)와 JSON API는 유연성과 확장성이 뛰어나 많은 시스템에서 채택되고 있습니다. 그러나 많은 기존 시스템에서는 여전히 오래된 형태의 API를 사용하고 있으며, 이를 REST API 및 JSON API로 전환하는 것이 필요합니다. 본 논문에서는 기존 시스템의 API가 REST API가 아닌 일반 Application API임을 분석하고, 이를 REST API 및 JSON API로 전환하는 과정과 장단점을 설명합니다.본론1. .. Server Language/PHP 2024. 7. 21. [Legacy to Modernization] 1. PHP Legacy Project에 ORM 도입하기 서론레거시 프로젝트는 종종 오래된 코드베이스와 기술 부채를 포함하고 있어 유지보수와 확장에 어려움을 겪는 경우가 많습니다. 특히, 데이터베이스와의 상호작용을 위해 PDO를 이용한 SQL 쿼리문 작성 방식은 다양한 단점을 가지고 있습니다. 이러한 문제점을 해결하고, 개발 생산성과 코드 품질을 향상시키기 위해 ORM(Object-Relational Mapping) 도입이 필수적입니다. 본 보고서에서는 PDO 기반 SQL 쿼리문 작성의 단점을 분석하고, ORM 도입의 필요성과 그 이점을 체계적으로 설명하겠습니다.PDO 기반 SQL 쿼리문 작성의 단점1. 코드의 가독성 및 유지보수성 저하PDO를 이용한 SQL 쿼리문 작성은 SQL 문법이 직접 코드에 포함되기 때문에, 코드의 가독성이 떨어집니다. 복잡한 쿼리일수.. Server Language/PHP 2024. 7. 17. 활용하면 좋은 PHP 매직 메소드 서론 PHP에서 매직 메소드는 특정 상황에서 자동으로 호출되는 메소드로, 이름은 항상 두 개의 밑줄로 시작된다(__). 이들은 객체 지향 프로그래밍에서 다양한 상황에 대응하거나, 코드를 보다 유연하고 읽기 쉽게 만드는 데 도움을 준다. 본 포스팅에서는 PHP에서 제공되는 매직 메소드를 예시를 들며 소개한다. __construct() 객체가 생성될 때 자동으로 호출되는 생성자 메소드로 주로 초기화 작업에 주로 사용된다. class Person { public $name; public $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } } $person = new Person("John", 30).. Server Language/PHP 2024. 1. 2. IOS WKWebView Pull Down To Reload 구현하기 서론 예전 스타일의 Toolbar 디자인에는 새로고침 버튼이 존재했지만, 'Pull Down To Reload' 라 불리는 스크롤을 내려서 페이지를 새로고침하는 이 기능은 사용자에게 매우 직관적이다. 대부분의 스마트폰 사용자들은 이제 이 동작에 익숙하며, 콘텐츠를 새로 고침하고 싶을 때 자연스럽게 화면을 아래로 당기는 경향이 있다. 때문에 최근 UI/UX 측면에서 Toolbar에 존재하는 새로고침 버튼을 없애고 Pull Down To Reload를 도입하는 Application이 많아졌기에 한번 구현해보자. 'pull down to refresh' 기능을 사용하는 주된 이유와 장점 첫 번째 - 직관적인 사용자 경험: 위에서 설명한 것과 같이 이 기능은 사용자에게 매우 직관적이다. 대부분의 스마트폰 사용자.. Server Language/Swift 2023. 11. 30. WebView 구성의 IOS App 속도 개선 작업 서론 WebView로 구성된 IOS App의 처음 진입 및 페이지 이동간 속도 개선 작업을 진행하게 되었다. Native App 이라면 이런 저런 속도 개선 작업을 코드 단위에서 진행할 수 있겠지만, WebView로 구성된 IOS App의 경우 사실상 할 수 있는게 별로 없다. Web Source의 무거운 외부 종속 라이브러리 등을 첨삭하여 개선하는 방법이 가장 빠른 길이지만 그럼에도 불구하고 App에서도 개선할 수 있는 작업이 있을까 고민하게 되었다. 현재 앱 구성 파악 현재 본인의 앱 상태가 어떤지 파악해야 하는데, 나의 경우 App을 실행할 때 LaunchScreen 표시 이후 WebView 로딩까지 매끄럽지 않고 특히 Custom Loading Indicate (개발자가 임의로 만들어낸 로딩 지연.. Server Language/Swift 2023. 11. 8. 내가 만든 패키지를 packagist.org에서부터 설치해보자 패키지를 다운받아 설치하는것은 우리의 패키지 매니저가 다 알아서 해준다. PHP의 전용 패키지 매니저인 Composer를 사용해서 내가 만들어 올려놓은 패키지를 packagist.org에서부터 다운받아서 사용할 수 있다. 신규 프로젝트 생성하기 composer create-project laravel/laravel example-app 위 명령어처럼 우리는 composer 패키지 매니저를 통해서 손 쉽게 라라벨 프로젝트를 설치할 수 있다. composer가 설치되어 있지 않더라도 각각의 os에서 쉽게 라라벨 프로젝트를 생성하는 방법은 라라벨 공식 홈페이지에서 쉽게 찾을 수 있다. 패키지 설치하기 packagist.org의 우측 상단 자신의 닉네임을 클릭하여 My Packages를 클릭하면, 앞에서 배포하.. Server Language/PHP 2023. 11. 8. 내가 만든 패키지를 packagist.org에 올려보자 많은 PHP 개발자들은 composer 패키지 매니저를 사용해서 다른 사람들이 만든 라이브러리 혹은 패키지 등을 본인의 프로젝트에 주입하여 사용한다. 나도 다른 사람들이 만들어놓은 패키지를 많이 사용해왔지만, 스스로 패키지를 만들어 본 적은 없었기 때문에 한번 해봤다. 참고 : PHP 언어의 패키지매니저로 유명한 Composer로 다운받는 모든 외부 패키지는 packagist.org 사이트에서 운영 및 관리가 되고 있다. github webhook을 packagist와 연결하자 수 많은 개발자들이 하나의 프로젝트를 시작하면 제일 먼저 하는 소스 버전 및 형상 관리를 해주는 Git. 나는 GitHub으로 앞으로의 토이프로젝트를 진행하려고 한다. 때문에 새로운 github repository를 만들고 pus.. Server Language/PHP 2023. 11. 8. Java로 Builder Program 만들기 (완결) - Apache Commons-compress로 빌드 된 프로젝트 폴더 tar.gz 파일로 압축하기 이전 포스팅에서 원하는 도커 이미지를 사용하여 Build 된 프로젝트 폴더를 AWS S3 Bucket에 올리기 쉽게 tar.gz(tgz) 파일로 압축하는 작업을 실행할 차례. apache에서 제공하는 commons-compress 라이브러리를 주입받아 사용한다. Dependency injection 본인은 gadle build tool을 사용하고, commons-compress 1.3버전을 주입받아 사용하였다. dependencies { implementation group: 'org.apache.commons', name: 'commons-compress', version: '1.3' } Make CompressLib Class compress 기능은 추후 다른 곳에서도 사용할 수 있기 때문에 comp.. Server Language/Java 2023. 1. 2. Java로 Builder Program 만들기 (2) - Java로 Shell Script를 Controller하여 Docker로 Source Build하기 Java Docker Library를 찾던 중 대표적으로 많이 쓰이는 2가지를 찾게 되었지만 둘 다 사용하고 싶지 않았다. 첫 번째로 찾은 Library는 docker-java. 최소 2가지의 dependency를 주입받아야 했고 그 이외에 gradle repository를 추가하거나 데몬을 사용해야 하는 등 내가 필요한 기능 이외에 것들을 많이 설정해야 해서 resource 차지가 심하다고 생각이 들었다. 두 번째로 찾은 Library는 gradle-docker-plugin. bmuschko라는 닉네임을 사용하는 특정 개발자가 만든 library로써 사용설명에 이후의 업데이트는 없다고 명시해 놨기 때문에 사용성 측면에 있어서 어려움이 있었다. 그래서 사용자가 원하는 Docker Image를 사용하여 원.. Server Language/Java 2022. 12. 28. Java로 Builder Program 만들기 (1) - Java JGit Library 사용해서 Git Controller하기 최근 CI/CD를 구현하면서 Builder라는 것에 대해 많이 생각하게 되었다. 단순히 빌드( 개념 정리는 여기 클릭 )를 진행해 주는 프로그램이라 생각했었고, 단순히 사용만 하던 이 Builder라는 녀석을 직접 Java로 구성해보려 하니 막막했다. 특정된 FrameWork이나 특정된 언어(Java, PHP 등)로 구성된 Project만 빌드 해주는 builder가 아니라 사용자의 입맛대로 (원하는 언어 혹은 FrameWork, Git Repository 등을 사전에 설정하면 원하는 방식으로) Build 해주는 프로그램을 만들어 보려고 한다. Java Builder 이미지 메이킹 builder가 하는 역할이나 흐름도에 대해 머릿속에서 대략적으로 생각했던 것들을 손으로 정리해 보았다. 원하고자 하는 기능.. Server Language/Java 2022. 12. 27. Java로 Firebase Cloude Message (Application Push) 구현하기 Firebase Cloude Message(이하 FCM)을 구현하여 Web 및 App Device에 Push Message를 보내는 기능을 구현해봅니다. FCM 구현에는 송수신을 위한 두 가지 주요 구성요소가 필요합니다. Firebase용 Cloud Functions 또는 앱 서버와 같이 메시지를 작성, 타겟팅, 전송할 수 있는 신뢰할 수 있는 환경 해당 플랫폼별 전송 서비스를 통해 메시지를 수신하는 Apple, Android 또는 웹(자바스크립트) 클라이언트 앱 1. Firebase Admin SDK 의존성 추가하기 Firebase Admin SDK를 사용하기 위해서는 해당 서버에 Java 8 이상이 설치되어 있어야 합니다. // Gradle - build.gradle dependencies { imp.. Server Language/Java 2022. 7. 19. 이전 1 2 3 4 ··· 6 다음