어쩌다보니 F&B와 AI프로그램개발 사업에 발담그게 되었다. > 대외협력

본문 바로가기

커뮤니티

대외협력

회원사보기

대외협력

대외협력

페이지 정보

어쩌다보니 F&B와 AI프로그램개발 사업에 발담그게 되었다.

작성자Mag 작성일/25-09-16

본문

#JavaScript 프로그램 개발 #JS #크롬확장프로그램 #크롬브라우저 #크롬 #뽀모도로타이머 #타이머 #투두리스트 #브라우저투두리스트 #할일목록이 포스팅을 쓴단 얘기는!?그렇다!웹 크롬 스토어에서 내 확장 프로그램을 승인해줬다!!!예ㅔㅔㅔㅔㅔ어예ㅖㅔㅔㅔㅔ와~~ 처음으로 개발한 것을 공개해봤다.언제나의 깃을 통한 소스만 공개가 아니라...실제.... only 내 개발... # 왜 만들었는가?내가 가장 좋아하는 언어는 JavaScript다.여러 프로젝트에서 가장 오랫동안 썼던 것이기도 하고... 아무것도 준비되지 않은 환경에서 F12만 콕 눌러주면 개발자도구 콘솔창에서 바로 써볼 수 있는 언어라서?CSS랑 엮어서 왜 이놈을 못잡니 왜 저놈을 컨트롤못하니 빡칠테도 있지만 편하고 재밌고 좋다!I love js발단은 일단 3월.그런 JavaScript로 뭘 할 수 있지? 라고 찾아보다가 크롬 확장프로그램은 일단 JavaScript로 만들 수 있다는 것을 보았다.그런데 백엔드 역량을 키워한다고 생각하던 참이고, JS보다 프로그램 개발 Vue.JS나 Typescript등 습득이 중요하다고 생각했어서..흠흠 그렇구나 하고 넘겼다.​그리고 그다음은 5월 말.친구가 앗 넌 프로그래밍할 줄 아니까 이런거 만들 수 있지 않아? 하면서 크롬 확장 프로그램 얘기를 꺼내주었다.스토어에 게시하는 방법은 모르지만.. 뭘로 만드는지는 이미 두 달전에 찾아봤으니, 친구의 얘기를 듣다가 간단한거라도 뭐라도 해보자! 란 생각을 했다.5월 중순에 간만에 요구사항을 가지고 개발한 일주일(과제였지만)이 너무나도 즐거웠고 역시 난 개발을 해야해! 라고 생각하기도 했으며, 내가 만든 것을 다른 사람도 쓸 수 있게 공유하는 것은 진귀한 경험이긴 하니까.​원래 처음 도전하려한 주제는 구글 docs의 단어 찾기&단어 교체 기능이였다. 분명 없었단 말이다!!그런데 도전!외치고 구글 docs를 들어가니 웬걸. 그새 생겨있더라.(ㅠㅠ)눈에 탁 보이고, 도움이 프로그램 개발 될만한 소박한 걸로 시작해보고 싶었다.​그렇다면 작업시간을 정해두고 작업 목록을 보여주는 서비스면 좋겠다!! 그래서 타이머&투두리스트로 만들었다,# 구글 Docs 기준 단어 찾기&단어 교체 실패 이유 ㅎ...ㅎㅎ...ㅎㅎ기능이 있음에도 만들고 싶었다. 크롬 확장프로그램에서 브라우저 내부 접근을 해야할테니 그것만으로 도전의 가치가 있을 것이라 생각했다. 하지만 문제에 부딪혀 이 과제는 내려두었다.​구글 Docs는 실제 DOM 텍스트 노드가 없었다.텍스트 입력/수정은 구글 내부 JS 모델과 관련되어 있어, 화면에서는 Canvas나 가상 노드 형태로 그려진다.따라서 외부 JS코드인 크롬 확장 프로그램에서 접근할 수 없게 되었다.. (so sad)# 크롬 확장 프로그램의 기본 구조크롬 확장 프로그램은 웹 페이지와 상호작용하면서 브라우저의 기능을 확장하는 구조이다.따라서 기능 별로 파일이 나눠져 있는 것이 프로그램 개발 좋다.일단 폴더 구성에 있어 중요한 3가지가 있다.​1) manifest.json : 확장 프로그램의 메타 정보와 구성 요소를 정의한다. 크롬 브라우저에서 이 파일을 기준으로 코드를 프로그램을 해석한다.​2) content_script.js : 탭화면에서 실행되는 동작 스크립트로, 사용자 브라우저 탭 내부에서 실행된다.​3) background.js : 백그라운드에서 항상 실행되는 스크립트로, 탭 간 데이터 공유, 알림 처리, 장기 이벤트 처리에 사용된다.브라우저가 꺼지지 않는 이상, 계속 실행되는 숨은 작업자이기도 하다.여기서는 UI없이 백그라운드에서 이벤트(타이머)를 지속적으로 처리한다. = 마치 웹 서비스의 백엔드와 같이 동작한다.# 크롬 확장 프로그램 저장소 : Chrome.storage.localQ) Redis를 써서 할 일 목록을저장하는 기능은 어떤가?크롬 확장 프로그램은 브라우저 내부에서만 작동하기 때문에 Redis 같이 서버 측 인메모리 프로그램 개발 데이터베이스는 직접 사용할 수 없다.​.. 그럼에도 쓰고 싶다면!백엔드 서버를 별도로 따로 두고 확장 프로그램이 서버와 통신하게끔 되어야한다.Redis가 진짜로 필요한 경우는 다수 사용자, 동기화된 타이머 상태, 로그인 사용자별 히스토리 저장같은걸 하려는 경우가 있다.​이러한 방식을 대체할 수 있는, 사용 가능한 대체 저장 방식은 chrome.storage.local, IndexDB, localStorage 등 브라우저 내 저장소를 사용하는 방법이 있다. 일반적으로 크롬 확장 프로그램 개발에서는 chrome.storage.local을 사용한다.​비동기 API백그라운드와 popup.html 간 데이터 공유크롬 확장 프로그램 전용의 브라우저 내 저장소즉 서버없이 사용자의 설정이나 상태를 저장하고 확장 전역에서 공유할 수 있다.​chrome.storage.local을 통해 브라우저가 닫혀도 타이머의 설정이나 할일 목록은 이어진다.​# 크롬 확장 프로그램 알림 : Chrome.notifications.create(..)이는 크롬 알림을 프로그램 개발 띄운다.알림은 우측 하단 또는 알림센터에 표시되며, 사용자가 수동으로 끄지 않으면 자동으로 사라진다.​type : "basic" 은 가장 일반적인 텍스트 중심 알림이다.title : 알림 제목message : 알림 본문오른쪽 하단에 이렇게 뜬당# 개발 이슈[오류 메세지] Uncaught (in promise) Error : Cannot access a chrome:// URL크롬 확장 프로그램은 chrome:// (ex : chrome://extensions, chrome://newtab, chrome://settings 등)에 접근시도할 시 위와 같은 오류가 발생한다.​이유 : 보안 제한구글 크롬은 보안상의 이유로 모든 확장 프로그램이 chrome:// 페이지에 접근하는 것을 엄격히 금지한다.이 페이지는 브라우저 내부 페이지이기 때문에, 외부 스크립트 삽입이나 alert 호출 등이 불가능하다.manifestion.json에서 권한이 부여되어 있어도 이 도메인들은 예외없이 차단된다.​나같은 경우는 크롬 확장 프로그램 프로그램 개발 팝업을 크롬 설정페이지에서 실행해서 발생했었다. chrome:// URL 페이지만 아니면 정상 동작한다.​아마 이런 보안은 크롬 브라우저 상의 웹 접근성 보안인 것 같다.크롬 확장 프로그램에서 발생하는 chrome:// 접근 제한, 콘텐츠 스크립트 실행 제한, alert() 차단 등은 모두 웹 접근성 보안 정책(CSP, Content Security Policy)와 샌드박싱 때문이다.이는 기본적으로 확장 프로그램이 사용자 몰래 민감한 페이지나 브라우저 내부 설정 등을 조작하지 못하도록 설계되어 있다.​결론! 확장 프로그램은 정해진 범위 내에서만 동작해야 한다.그 안에서 메세지 전송, 알림, 뱃지, local storage 등 충분히 활용이 가능하다.​★ 알림의 경우 사용자 OS 설정에 따라 소리가 안날 수도 있다 ★.[오류 메세지] Unchecked runtime.lastError: Some of the required 프로그램 개발 properties are missing: type, iconUrl, title and message.이유 : Chrome.notificiations.create(...) 호출 시 필수 속성 중 하나 이상이 빠졌기 때문이다.이렇게 들어가야 하는데!! iconUrl이 빠졌었다. 나는 js 폴더를 생성해서 js 파일들을 모두 거기다 몰아 넣었는데 그러는 바람에 이미지 경로가 계속 틀려서 조금 헤맸다...파일 위치 바꿀 때 경로 확인 꼭 하자!!# 프로그램 요약스토어 게시할랬더니 이미지로 설명서 달래서 급하게 후다닥...​전체 소스와 확장 프로그램에 대한 설명은 영어지만...깃에다 업로드 했다.​Contribute to Greeense/pomodoroTodolist_extension development by creating an account on GitHub.​​역시 개발은 재밌다...이거 하면서 Azure나 도커 공부도 더 해볼겸 웹서비스를 만들어야겠다고 생각했다... 트래픽..azure가 버텨주겠지...(ㅈㄴ)아니면 로그인 필요없이 그냥 간단하게 GPT 결과받기(대신 프롬프트를 이용해 형식 프로그램 개발 지정) 같은거라도 해볼까 한다.​

댓글목록

등록된 댓글이 없습니다.

회원Member

회원가입

한국유학협회 서울시 서초구 강남대로 381 두산베어스텔 910호단체번호 : 101-82-63610
전화 : 02) 501-2789이메일 : info@kosaworld.org문의 : 한국유학협회 사무국