Web micro blogHyeonseok HanJava JSP MVC2 구조를 이용한 Web Micro blog
: Micro blog를 구현하기위해 페이스북, 인스타그램과 같은 성공적인 웹서비스를 모티브로 하였습니다.
github : https://github.com/HanHyeonseok/Micro_blog_WebProject/tree/master/KH
Hellotutorialhellotutorial구글 크롬 익스텐션을 이용해서 누구나, 어떠한 사이트라도 쉽고 빠르게 튜토리얼을 제작하고 볼 수 있는 서비스 입니다. 이렇게 제작된 튜토리얼들은 해당 웹사이트 위에 동적으로 삽입되어 사용자에게 비춰지며, 사용자들은 클릭 몇 번으로 웹사이트의 다양한 기능들을 익힐 수 있습니다.
『빠르게 훑어보는 구글 클라우드 플랫폼』 - 맛보기복연 이조대협, 최명근, 최유석, 윤성재, 김영균 지음 | 한빛미디어 | 2016.09.10
구글 클라우드 플랫폼을 처음 사용하는 사람을 위한 실습형 입문서.
이 책은 구글 클라우드를 처음 사용하는 사람이 가상 머신(VM) 기반의 클라우드 서비스 기능들을 빠르게 사용할 수 있도록 도울 목적으로, 실습 위주로 속도감 있게 구성하였다.
구글 클라우드의 가상 머신 서비스인 컴퓨트 엔진을 사용하기 위해 가입부터 VM 설정, 네트워크 설정, 오토 스케일링(자동 확장)과 모니터링, 그리고 MySQL 매지니드 서비스인 Cloud SQL의 사용법을 소개한다. 마지막으로 구글 클라우드만의 장점인 빅데이터 서비스, 전 세계를 덮는 전용 네트워크망, 합리적인 가격 정책을 소개한다.
[취업특강] IT분야에서 행복하게 일하기 - SW 개발자를 중심으로Sungwoo Park2016년 11월 모 대학에서 IT 계열 전공 재학생들을 대상으로 진행했던 진로 특강 자료입니다.
앞쪽의 제반 내용들은 다양한 자료들을 정리하면서 제 생각을 담았습니다.
이 자료의 가장 핵심적인 내용은 5가지 유형의 현직 선배들을 대상으로 설문을 실시하여 후배들에게 들려주고 싶은 현실적이고 진솔한 이야기를 정리한 부분입니다.
IT 분야 그리고 소프트웨어 개발자의 삶의 모색하는 분들에게 조금이나마 도움이 되길 바라는 마음에 자료를 공개합니다.
Ubucon Europe and AsiaYoungbin HanThe document discusses Ubucon conferences, which are community-organized events focused on local Ubuntu communities. It provides details on previous Ubucon Europe and Asia conferences, including locations and dates. The bulk of the document outlines the process of organizing a Ubucon, including establishing a team, acquiring a venue, calling for proposals and sponsors, scheduling sessions, managing logistics, and post-event tasks like publishing materials and planning the next event. The presenters are available to provide resources and assistance to future Ubucon organizers.
우분투 아시아 컨퍼런스 바닥에서 시작하기Youngbin Han- The document discusses the organization of the first UbuCon Asia conference, held in September 2021. It describes some of the challenges in organizing an international online event, including communicating with communities in different regions, coordinating decisions across diverse backgrounds and opinions, and securing support and volunteers. Key difficulties involved contacting communities, gathering and coordinating people, and navigating different perspectives on communication and decision making. The conference organizers overcame these challenges by finding creative solutions, such as utilizing translation technologies and coordinating local volunteers to support translations.
Hellotutorialhellotutorial구글 크롬 익스텐션을 이용해서 누구나, 어떠한 사이트라도 쉽고 빠르게 튜토리얼을 제작하고 볼 수 있는 서비스 입니다. 이렇게 제작된 튜토리얼들은 해당 웹사이트 위에 동적으로 삽입되어 사용자에게 비춰지며, 사용자들은 클릭 몇 번으로 웹사이트의 다양한 기능들을 익힐 수 있습니다.
『빠르게 훑어보는 구글 클라우드 플랫폼』 - 맛보기복연 이조대협, 최명근, 최유석, 윤성재, 김영균 지음 | 한빛미디어 | 2016.09.10
구글 클라우드 플랫폼을 처음 사용하는 사람을 위한 실습형 입문서.
이 책은 구글 클라우드를 처음 사용하는 사람이 가상 머신(VM) 기반의 클라우드 서비스 기능들을 빠르게 사용할 수 있도록 도울 목적으로, 실습 위주로 속도감 있게 구성하였다.
구글 클라우드의 가상 머신 서비스인 컴퓨트 엔진을 사용하기 위해 가입부터 VM 설정, 네트워크 설정, 오토 스케일링(자동 확장)과 모니터링, 그리고 MySQL 매지니드 서비스인 Cloud SQL의 사용법을 소개한다. 마지막으로 구글 클라우드만의 장점인 빅데이터 서비스, 전 세계를 덮는 전용 네트워크망, 합리적인 가격 정책을 소개한다.
[취업특강] IT분야에서 행복하게 일하기 - SW 개발자를 중심으로Sungwoo Park2016년 11월 모 대학에서 IT 계열 전공 재학생들을 대상으로 진행했던 진로 특강 자료입니다.
앞쪽의 제반 내용들은 다양한 자료들을 정리하면서 제 생각을 담았습니다.
이 자료의 가장 핵심적인 내용은 5가지 유형의 현직 선배들을 대상으로 설문을 실시하여 후배들에게 들려주고 싶은 현실적이고 진솔한 이야기를 정리한 부분입니다.
IT 분야 그리고 소프트웨어 개발자의 삶의 모색하는 분들에게 조금이나마 도움이 되길 바라는 마음에 자료를 공개합니다.
Ubucon Europe and AsiaYoungbin HanThe document discusses Ubucon conferences, which are community-organized events focused on local Ubuntu communities. It provides details on previous Ubucon Europe and Asia conferences, including locations and dates. The bulk of the document outlines the process of organizing a Ubucon, including establishing a team, acquiring a venue, calling for proposals and sponsors, scheduling sessions, managing logistics, and post-event tasks like publishing materials and planning the next event. The presenters are available to provide resources and assistance to future Ubucon organizers.
우분투 아시아 컨퍼런스 바닥에서 시작하기Youngbin Han- The document discusses the organization of the first UbuCon Asia conference, held in September 2021. It describes some of the challenges in organizing an international online event, including communicating with communities in different regions, coordinating decisions across diverse backgrounds and opinions, and securing support and volunteers. Key difficulties involved contacting communities, gathering and coordinating people, and navigating different perspectives on communication and decision making. The conference organizers overcame these challenges by finding creative solutions, such as utilizing translation technologies and coordinating local volunteers to support translations.
Automating boring and repetitive UbuCon Asia video and subtitle stuffsYoungbin HanWhether it’s online or offline event, There’s always boring and repetitive jobs for event organizers and volunteers. Putting cover on session videos and making subtitle for videos are part of them. UbuCon Asia team, is no exception. But like you and other ordinary people, our organizers also have their own job and busy with that usually. As it’s first event we don’t even know if we can gather enough volunteers or gain sponsorship to hire some workers. So, We decided to use some automation tools like CI/CD, Speech to text, Translation API, Video cover rendering template and so on to automate these boring job as much as possible and reduce cost at the same time. In this session, I would like to share how we did this and what we’ve learned while trying to automate stuffs.
https://2021.ubucon.asia/sessions/automating_boring_and_repetitive_ubucon_asia_video_and_subtitle_stuffs
Engaging new l10n contributors through Open Source ContributhonYoungbin HanLast year, Ubuntu Korean LoCo participated “Open Source Contributhon”(Contribution + Marathon) as Ubuntu Korean L10n team to engage new l10n contributors. “Open Source Contributhon” is an program led by a government agency, And more than 20 teams joined last year.
In this session, We’ll introduce details about “Open Source Contributhon”(which is now “Open Source Contribution Academy”) and our experiences about the program as mentors and as mentees.
https://2021.ubucon.asia/sessions/engaging_new_l10n_contributors_through_open_source_contributhon/
Introduction to Hanjp-IM Project (DebConf18 - Hsinchu, Taiwan)Youngbin HanPresentation about an introduction to Hanjp-IM Project
Presented at Aug 4th in DebConf18 by Youngbin Han
as one of the on-demand Ad-Hoc Session
How & Why we have connected Slack & IRCYoungbin HanThis is an update version for openSUSE.Asia 2017 Tokyo
Original one : /hanyoungbin/how-and-why-we-integrated-slack-and-irc
How and why we have integrated Slack and IRCYoungbin HanThis document discusses integrating Slack and IRC to address problems with using Facebook Groups and forums for an Ubuntu community in Korea. It notes issues with cost and surveys that showed preference for a single chat solution. An open source Slack-IRC bot was identified that could connect the two systems to address these issues. Cooperation with IRC network managers was also discussed, and the result was presented as a solution to unite the community in a more cost effective way.
Ubuntu's Unity - Birth to Death(in 5minutes)Youngbin HanThe document summarizes the history of Ubuntu's Unity desktop environment from its debut in 2010 to its end in 2017. It started as an interface for netbooks and became Ubuntu's default desktop in 2011. Unity aimed for convergence across devices but ultimately failed to gain significant mobile usage. In 2017, Canonical announced it would shift Ubuntu back to GNOME and end development of Unity and the Mir display server. While some efforts have emerged to continue Unity, it and the Ubuntu mobile project were ultimately shut down.
Git&GitHub 를 이용한 버전관리와 협업 - 4.협업과 지속적 통합Youngbin HanThis document provides instructions for integrating a project with Travis CI continuous integration. It includes commands to add the upstream repository, pull changes from the master branch, and configure a .travis.yml file to compile a C program using gcc and run tests. The last steps push the .travis.yml file and make a test commit to trigger a build on Travis CI.
Git&GitHub 를 이용한 버전관리와 협업 - 2.비교하기와 되돌리기Youngbin HanGit diff is used to compare differences between commits, files in the staging area and your local files. Git log -p shows the commit history with patches for each commit. Git commit --amend allows editing the most recent commit message and adding any new files. Git checkout switches between branches and restores file contents. Git reset undoes commits by moving the HEAD pointer. Git revert undoes specific commits by creating a new commit with opposite changes.
제2회 SSSCON - 웹해킹 스터디 현황Youngbin HanThis document discusses webhacking and provides a numbered list of topics including an introduction, definitions, examples, and a question and answer section about webhacking techniques. It also includes a link to an external website for further information.
1. 안녕하세요 카카오톡 자동응답 API를 이용한 교내 소식 전달 시스템 SKHUFEEDS를
발표를 맡은 <발표자 이름>입니다.
1
2. 먼저 저희 프로젝트에 참여한 구성원들을 소개하겠습니다. 우선 소프트웨어공학과 한
영빈 학우와 김희수 학우, 정보통신공학과 한나라 학우가 프로젝트에 참여하였습니다.
한영빈 학우는 전체적인 프로젝트를 총괄, 구독 설정 모듈 개발과 서버 배포와 관리를
담당하였습니다. 김희수 학우는 카카오톡 통신부 개발을 맡았으며, 한나라 학우는 프로
젝트 기획 및 크롤러 모듈 개발을 담당하였습니다.
2
3. 여러분들은 보통 어떤 방식으로 학교 소식이나 공지사항을 확인 하시나요? 대부분 학
교 메인 홈페이지나 학과 홈페이지 등 각 웹사이트를 방문하여 확인 할 것 입니다. 그런
데 웹사이트를 방문 하였을 때 사이트가 복잡하여 헤매는 경우, 또는 확인을 못하는 경
우도 많이 있을 것입니다. 이미 대다수의 학우 분들은 모바일 환경에서 대부분의 소식
을 받아보는 반면, 중요한 정보가 올라오는 학교 관련 웹사이트는 데스크톱 환경에서만
최적화가 되어 있어 모바일 에서는 소식 확인이 불편하다는 문제점이 있습니다. 그러다
보니 웹사이트에 직접 방문해서 소식을 확인하지 않는 학우 분들이 많습니다.
3
4. 그렇기 때문에 많은 학우들이 중요한 공지를 놓치는 경우가 많습니다. 웹사이트를 확인
하지 않다 보니, 장학금 신청기간을 놓치는 경우도 많으며, 한솥밥 튜터링, 어울림 등 교
내에서 하는 프로그램 또한 놓치는 사례가 많습니다. 저희 SKHUFEEDS는 이 불편한
점을 착안하여 시작하게 되었습니다.
4
5. 우선 이러한 문제를 해결하는 방법 중 하나는 모바일 환경에서도 중요정보를 쉽게 받
아볼 수 있도록 하는 것입니다. 모바일 환경에 최적화 하는 경우 보통 모바일 앱이나 모
바일 웹 개발을 많이 떠오르실 겁니다. 설치하고 홈 화면에 바로가기를 두면 언제든지
쉽게 접근이 가능하기 때문입니다.
5
6. 하지만 모바일 앱이나 웹을 개발할 때는 다양한 디바이스와 환경을 고려해야 합니다.
안드로이드만 해도 다양한 os버전이 있고 제조사별 커스텀으로 인해 일부 디바이스에
서는 의도대로 작동되지 않을 수도 있습니다 웹 또한 많은 브라우저 환경을 고려해야
합니다. UI를 잘 설계하지 않으면 앱 사용이 어려워 외면 받을 수도 있습니다. 회원가입
이 필요하거나 하드웨어의 특정한 기능 또는 OS에서 제공되는 API를 사용해야만 구현
이 가능했다면 앱 으로 개발했겠지만, SKHUFEEDS는 중요소식을 쉽게 받아 볼 수 있
게 하는 것이 목적이었으므로 굳이 어플을 개발하면서 다양한 환경까지 대응하는 것에
시간을 낭비할 필요가 없다고 생각을 하였습니다.
6
7. 그래서 저희는 챗봇 형태로 서비스를 개발 하기로 하였습니다. 저희는 챗봇 기능을 제
공하는 메신저중 카카오톡을 선정하였습니다. 그 이유는 국내에서 가장 많은 사용자를
보유한 메신저이기 때문에 쉽게 서비스를 접근 할 수 있기 때문입니다. 개발자 입장에
서는 다양한 이용 환경을 대응하지 않아도 된다는 장점이 있으며, 사용자 입장에서는
굳이 다른 어플을 깔지 않아도 되고, 익숙한 카카오톡의 UI를 사용하여 쉽게 서비스를
이용할 수 있다는 것입니다.
7
8. 처음에 프로젝트를 시작 할 때, 구성원 중 백엔드 개발을 할 줄 아는 사람이 거의 없었습
니다. 그래서 올해 1학기 파이썬 스터디 부터 시작했고, 이후 여름방학 초반에 기본적
인 장고 프레임워크 사용 방법을 스터디 하여 필요한 지식을 먼저 습득 하였습니다. 이
후 서비스에서 사용할 데이터 베이스를 모델링 하였고, 본격적으로 개발을 시작하였습
니다. Git 을 이용하여 버전 관리를 하였으며, GitLab.com을 통해 소스코드를 공유 하
였습니다. 여름 방학이 끝나가고 개강이 다가올 때 즈음, 구독 설정 모듈 부터 개발이 완
료 되었으며, 이후 크롤러 모듈과 카카오톡 통신부 모듈 순으로 개발이 완료 되었습니
다.
8
9. 앞서 언급했다 싶이, 입문 하기 쉬운 편인 파이썬과, 파이썬 웹 프레임워크인 장고를 이
용하여 서비스를 개발 하였습니다. 그리고 그림과 같이 크게 kakao, settings,
crawlers 이렇게 새 가지 모듈로 나누어 개발을 진행 하였습니다.
9
10. Kakao 모듈은 사용자가 카카오톡 채팅방에서 하는 대부분의 동작을 처리하는 모듈입
니다. 사용자가 특정 버튼을 누르거나 메시지를 전송하면, 해당 동작을 카카오톡 서버
를 통해 전달받아 처리하는 방식으로 작동합니다.
10
11. Kakao 모듈에서는 주로 사용자가 메시지 전송을 통해 보낸 명령어에 대한 처리, 플러
스친구 홈에서 친구 추가/차단 버튼을 누른 것에 대한 동작과, 채팅방 입장과 퇴장 동작
등, 채팅방에서 사용자가 할 수 있는 동작을 처리하고 있습니다.
11
12. Settings 모듈은 사용자가 받아보고자 하는 소식에 대한 구독을 설정 할 수 있게 하는
모듈입니다. 사용자에게 설정 화면으로 들어갈 수 있는 URL 을 발급해 전달할 때만,
kakao 모듈과 카카오톡 서버를 거쳐 통신하며. 그 외의 경우는 사용자가 설정 페이지
에 접속한 경우 이므로 사용자와 직접 통신합니다.
12
13. 사진과 같이 구독 설정 화면을 제공 합니다. 구독 설정 화면은 “설정” 버튼을 누르면 나
오는 “설정 페이지” 버튼에 담긴 URL 을 통해 접근 가능합니다. URL 에는 JWT 가 포
함되어 있으며, 이 JWT를 통해 설정 화면 접속시 사용자를 인증합니다. JWT 발급과
인증 작업은 파이썬 모듈인 python-jose 를 이용하고 있습니다. 설정 화면 레이아웃은
Bootstrap 으용 하였습니다.
13
14. Crawlers 모듈은 지정된 웹페이지에서 필요한 정보를 가져오는 코드들을 모두 모아 둔
모듈 입니다. 주기적으로 크롤링 하여, 데이터베이스에 저장하는 작업을 합니다.
HTML 로 작성 되어있는 웹페이지는 BeautifulSoup 모듈을 이용하며, XML 문서는
파이썬 내장 모듈인 ElementTree 를 사용합니다. 적어도 한 시간 이상 간격을 두고 크
롤링 작업을 하고, URL 을 가져오는 경우. 추후 채팅방에 표시 할 때 많은 내용을 표시
할 수 있게 하기 위해, pyshorteners 모듈과 Google 단축 URL API를 이용해 단축하
여 저장합니다.
14
15. 현재 크롤러 모듈에서는, 학사일정, 연락처, 날씨, 학교소식, 학식 식단을 크롤링 하고
있습니다. 연락처의 경우 학내기관과 교수님, 교직원 분들의 연락처를 크롤링 하고 있
으며, 날씨의 경우 학교 주변 날씨 정보를 기상청에서 가져오고 있습니다.
15
16. 구독 하여 받아 볼 수 있는 학교 소식 항목은 아래와 같습니다. 구독 설정 화면에서 선택
적으로 구독 하실 수 있습니다. 추후 학과별 공지사항 등, 좀 더 많은 학내 소식을 제공
할 예정입니다.
16
17. 한번 실행하면 마칠 때 까지 시간이 오래 걸리는 크롤링 작업은 같은 프로세스에서 실
행시 같은 쓰레드의 경우, 다른 작업을 수행 할 수 없고, 다른 쓰레드의 경우 데이터베이
스 쓰기 작업 시 충돌이 있을 수 있습니다. 때문에 Celery 를 이용하여 별도의 Worker
프로세스에서 작업이 실행되도록 하였습니다.
17
18. 서버측 코드 배포시 다양한 도구를 이용하여, 효율적으로 배포하고 관리하고 있습니다.
기본적으로 Gitlab 을 이용하여 버전 관리와 이미지 빌드 및 보관을 하며, Docker 를
이용해 컨테이너 형태로 배포합니다. 컨테이너 스캐쥴링은 Docker 에 내장된 Docker
Swarm 으로 관리합니다. DB 서버는 MySQL, 파이썬으로 작성한 백엔드를 프로덕션
환경에 배포하기 위해 gunicorn, Caddy 를 사용합니다. Celery, RabbitMQ 는 앞서
언급한 크롤링 작업을 워커 프로세스에서 실행하기 위해 사용하고 있습니다. 이 모든것
을 배포할 기반 환경으로 AWS 의 EC2 VM 을 사용합니다.
18
19. 실제 서비스 이용 화면입니다. 사진처럼 카카오톡 플러스친구 형태로 서비스가 제공됩
니다.
19
23. 9.18 일부터 공개 베타테스트를 시작하여, 지금까지 진행하고 있으며. 동시에 정식 서
비스를 위해 개선 작업을 계속 하고 있습니다.
개선 작업을 통해 테스트 기간동안 학식 조회 기능을 구현 완료하여, 이를 포함한 버전
을 배포해 둔 상태입니다.
10.13 일 까지 베타 테스트를 계속 진행할 예정이며, 10.21 일에 정식 서비스를 시작할
예정입니다.
23
24. 공개 베타 테스트의 경우 테스트를 시작한 이후, 10월 2일 기준 16분께서 테스트에 참
여해 주시고 계십니다.
24
25. 서비스 운영을 위해 총 3개의 플러스친구 계정을 운영할 예정이며, 그 중 2개 계정을 친
구추가하여 이용해 보실 수 있게 됩니다. 정식 버전을 서비스할 SKHUFEEDS /
skhufeeds 계정은 10.21 일 부터 이용하실 수 있으며. 현제는 테스트용 계정인
SKHUFEEDS(TEST) / skhufeeds_test 계정을 통해 공개 베타 테스트 참여만 가능합
니다. SKHUFEEDS(SID) 는 내부 테스트를 위한 비공개 계정으로, 이용하실 수 없습니
다.
25