목록IT (121)
번개애비의 라이프스톼일
이전에 특정좌표가 폴리곤영역내에 존재하는지 확인하는 Point-in-Polygon 알고리즘을 활용하여 해결했는데, 이번에는 폴리곤과 폴리곤을 비교하여 서로 겹쳐졌는지 확인하는 기능을 개발하였다. 폴리곤 좌표와 검색할 좌표를 비교하여 해당 좌표가 폴리곤안에 들어와있는지 확인하는 PHP함수 섹터를 나누는 기능을 개발하기 위해서는 섹터의 영역인 폴리곤과 좌표계를 비교하는 개발소요가 있었다. 예를 들면 이것 처럼.... 기본적으로 Tmap이나 Naver Map에서는 설정한 폴리곤영역에서 사 www.burndogfather.com (하루가 멀다고 자꾸자꾸 새롭게 개발할게 마구마구 튀어나오고 있는중임) 테스트를 위해 여러개의 폴리곤 좌표계를 활용하였다. 비교 대상이 되는 기본 폴리곤 하나와 기본 폴리곤과 동일한 폴..
섹터를 나누는 기능을 개발하기 위해서는 섹터의 영역인 폴리곤과 좌표계를 비교하는 개발소요가 있었다. 예를 들면 이것 처럼.... 기본적으로 Tmap이나 Naver Map에서는 설정한 폴리곤영역에서 사전에 맵에 띄워둔 마커가 폴리곤에 포함되어있는지 확인하는 API가 존재했지만,이 과정은 언제까지나 매번 API를 통해 호출해야되는 부담이 있었고, 마커가 수천개가 되는 상황에서는 조금더 섹시한 방법을 찾기로 했다. 방법은 크게 두가지가 있었다. 1. 데이터베이스를 활용하는 방법 MySQL에 Polygon형태의 데이터를 저장해두고 MBRContains 연산자를 이용하여 SELECT를 쿼리하는 방법이다. 2. 데이터베이스를 활용하지 않는 방법 데이터베이스의 좌표계를 불러온뒤, 자료구조로 만들어두고 애플리케이션(P..
CentOS 7.x 를 설치하고 ping 8.8.8.8을 실행하니 ping이 안찍힌다. ifconfig를 해보면 Loop back IP가 나오는것을 봐선 네트워크 연결이 잘못됬거나 이더넷 어댑터가 로드되지 않은것이 분명함. sudo lshw -C network 이 명령어를 입력하여 현재 시스템의 이더넷 랜카드의 칩셋정보를 확인한다. 확인한결과 intel I219-V 칩셋이었다. 아래 압축파일을 다운로드 받아 별도로 USB에 담아서 설치했음. cd /tmp mkdir /tmp/usb //USB장치정보를 확인하고 마운트한다. fdisk -l //마운트 mount -t vfat /dev/sdb1 /tmp/usb 이 명령어는 USB를 시스템에 연결하고 USB를 마운트하는 명령어이다. cd /tmp/usb tar..
웹서비스를 통해 제공되는 ERP화면이나 관리자패널등에서는 하나의 화면에 굉장히 다양한 정보를 제공해야되고, 다양한 데이터수정이 이뤄진다. 다음과 같은 예시.... (출처 : [팔피엠 웹ERP/MES] https://blog.8pmbiz.com/33) 하나의 화면에서 다양한 정보를 수정하기 도울수 있는 웹 라이브러리를 소개한다. 검색이 가능한 multiple Select 라이브러리 단일선택을 위한 Select뿐만 아니라 다중선택이 지원되는 Multiple을 지원하고, 대량의 데이터를 Select를 통해 지원하기 위해 페이징방식의 Select를 지원해주는 라이브러리이다. 주요특징으로는 태그만으로 이용 검색기능 지원 무한스크롤방식의 페이징 지원 호출-응답 커스텀 가능 사용자 선택에 따른 콜백 작성가능 사전선택..
로컬에서 git을 사용하고 있는데 굉장히 귀찮은 일이 많아서 개발서버에서 파일저장 시 github으로 자동 커밋하는 기능을 만들었고, 이 기능을 공유한다. 컴포넌트화된 라이브러리들을 중간중간 Public git으로 커밋해주고, CDN을 통해 메인프레임웤에 연동하는 개발위주로 진행하고 있다. AS-IS 단위기능수정 -> 컴포넌트 수정사항발생 -> 로컬에서 개발 및 테스트 -> git커밋 -> CDN으로 실서버에 배포 컴포넌트 수정사항은 사실 잦은 일은 아니였지만, 매번 로컬에서 개발하고 테스트하고 git에 배포하고 CDN으로 실서버에 배포하는 과정자체가 굉장히 수고스러웠다. 무엇보다 로컬환경에서 개발과 테스트했을때와 실서버에서 배포되었을때와의 환경차이(?)로 인해 어려움이 많았고, 이러한 환경차이를 최소화..
PHP8 이 새롭게 나오면서 JIT이라는 개념으로 기존 PHP 7 대비 성능이 크게 향상되었다고 주장했었으나, 사실, 큰 성능 향상을 기대하기 힘들었다. (슬그머니 올려두었던 나머지 발 마저도 떼야되나...) 프레임워크에 동일한 성능의 클라우드에 PHP 8.1 과 PHP 8 을 올려두고 여러번 테스트했지만, 사실 상 유의미한 성능변화폭이 없는것도 사실이다. (기대말라... 💩) 그리고, JIT을 Opcache와 활성화해두면 컴파일 캐싱을 위해 가끔 엄청나게 속도가 느려지는 현상이 발생되는 문제점도 존재함. (참고로 서버셋팅이 잘못될리 없음 ㅋㅋ) (PHP JIT이 드디어 나왔다고 환호했던 예전의 나를 반성하게 만들어버림....) 작년에 PHP 8.1 이 새롭게 나오면서 새로운 기능을 이것 저것 맛보고 있..
이번에 회사에서 신입개발자(1년미만)를 채용하게 되었다. 내가 경험한 것처럼 다른 회사의 파트장이나 팀을 이끄는 리더에게 조금이나마 도움이 됬으면 하는 바램에 경험내용과 코딩테스트 문제를 공유하게 되었다. 이전까지는 면접과 배경지식과 관련된 간단한 문제만으로 개발자를 뽑았었는데, 그 결과 조금만 로직이 복잡해지면 굉장히 힘들게 일을 하는 경우가 많았고 그 빈도가 점차 증가하면서 주니어개발자 그 자신에 대한 자존감이 크게 하락하는 경우를 경험하게 되었다. 그 친구만의 문제라고 단정짓지 않고 Recruit 프로세스부터 OJT, Todo 관리, Capa 측정등 회사 내 개발조직의 모든 프로세스를 점검하면서 되돌아본 계기가 되었다. 최근 개발자 몸 값이 크게 뛰면서 많은 사람들이 직업학교등을 통해 개발에 입문하..
SPA란? Single Page Application의 약자로써 쉽게 이야기하자면 페이지이동이 이뤄지지 않는 웹서비스를 말한다. 단순히 1페이지로 구성되는 서비스가 아니라 실제 메뉴/페이지 이동도 가능하도록 구현시킬 수 있다. SPA 서비스들은 최초 브라우저에서 페이지 로드이후 새로고침이 이뤄지지 않기 때문에 사용자로 하여금 페이지 전환이 빠른것처럼(?) 느끼게 해줄 수 있다. 위 사진에서는 Ajax로 구현되어 있지만 최근에는 React로 손쉽게 구현할 수 있으며, 조금더 낮은 단계로 내려가면 Fetch, axios로 구현할 수도 있다. (심지어 Websocket으로 구현한 경우도 있음) 최근에는 Android, iOS등 멀티플랫폼에 대응하기 어려운 환경에서 SPA기반으로 웹뷰로 서비스하는 목적으로도 ..
요즘 차량관제와 관련된 백오피스를 개발하면서 지도와 열심히 씨름중임. 매일 수십개의 스팟과 함께 지도에는 언제나 수백개의 차량을 표현하는 마커가 떠 있어야 하는 미션이 주어짐. 이렇게 대용량 마커를 Static map 에 출력하는 방법은 위 이미지처럼 무식하게(?) marker를 때려박거나 클러스터러를 활용하는 방법이 있다. 개발하는 관점에서는 당연히 클러스터러가 편하고 쉽고 섹시한 방법처럼 생각할지 모르겠지만, 지도에서 어떤 객체를 바로 검색하거나 찾아야되는 요구사항에서는 마커를 때려박는 경우도 있다. 네이버맵이든, 티맵, 카카오맵등 대부분의 맵의 JS작동방식이 비슷해서인지 몰라도 동일하게 300개이상의 대량 마커가 지도에 한꺼번에 출력되면 엄청난 렉이 동반된다. 웃긴건 업체들마다 API로 제공하는 N..
Windows 환경에서 MySQL 데이터베이스를 데이터베이스별로 자동으로 백업하기 필자의 회사의 개발서버는 Windows 기반이고 다수의 웹서비스를 개발하고 있는 상황이라 데이터베이스를 보다 효과적으로 백업하기 위해 별도의 배치파일을 만들어 스케줄러로 동작시키고 있다. www.burndogfather.com 이전에 windows 환경에서의 mysql 스케줄링 백업에 대해 소개했었는데, 이번에는 리눅스에서 데이터베이스 스케줄링 백업에 대해서 소개한다. (window 보다 훨~씬 쉬움!) 적당한 경로에 "블라블라.sh"와 같이 Bashshell 파일을 만들어준다. 아래 코드를 참고하여 사용하면 된다. //샘플코드 #!/bin/bash DATE=$(date +%Y%m%d) BACKUP_DIR=/home/sql..