전체 글

ETC/Docker

[Docker] LDAP Server 생성하기

사내 시스템을 구성하기 위해 Docker로 여러개의 컨테이너를 이용중인데 현재는 Git, MinIO, 메일서버, ERP, 관리자 등 여러 서비스에서 각각의 계정을 만들어주어야 하기 때문에 인증정보 통합의 필요성을 느껴 LDAP서버를 사용하기로 했다. LDAP란 Lightweight Directory Access Protocol의 약자로, 분산 디렉터리 서비스에서 사용자, 시스템, 네트워크, 서비스, 앱 등의 정보를 공유하기 위한 프로토콜이다. 자세한 내용은 LDAP에 대해 알아보자 가볍지만 무거운 프로토콜 😮 medium.com 참조 쉽게말해 네트워크 기반 데이터베이스라고 볼 수 있는데, 생소한 개념이라 그런지 조금 어렵다 😅 복잡하게 갈 필요 없이 openldap를 이용했다. 해당 이미지를 올려서 LD..

Desktop App/C#.Net

[C# .NET] Windows 방화벽 등록하기

TCP 통신 기능이 있는 닷넷 프레임워크 앱들은 실행하면 아래와 같은 창이 뜨고, 허용 시 윈도우 방화벽에 자동으로 등록이 된다. 이 때 네트워크 프로필과 다른 옵션을 선택하거나 엑세스를 허용하지 않은 경우, 또는 무언가 알 수 없는 오류로 위 창조차 보이지 않고 방화벽에 등록이 되지 않는 경우가 생긴다. 해당 문제로 고객사측 앱 사용에 문제가 있어 방화벽에 앱을 자동으로 등록해줄 수 있도록 해주었다. 테스트하기 위해 간단한 프로젝트를 생성했다. 참조 우클릭 -> 참조 추가 COM 항목에서 NetFw라고 검색하면 위와 같이 NetFwTypeLib 라이브러리가 나온다. 체크하여 참조해준다. 테스트만 하고 끝낼 것이 아니라 배포용 앱에도 추가해야 하기 때문에 따로 클래스를 만들어 주었다. using Syst..

ETC/Git

[Docker] Gitea로 나만의 Git 구축하기

시놀로지 DS116+을 사용하다가 성능과 1베이 용량에 아쉬움을 느껴 DS718+를 구매했다. 전에 작성해두었던 게시글을 토대로 Gogs를 다시 설치하려다가 718+는 Docker 사용이 가능해서 추후 복구가 편하도록 Docker 위에 올리기로 했....는데 한글로 쓰인 자료가 거의 없다...ㅜㅜ 그냥 되는대로 설치해 보기로 한다. 나중에 EC2나 회사 코로케이션 서버에 구축할 수도 있으니 최대한 시놀로지의 GUI없이 CLI에서만 구축해 보았다. 1. Docker 네트워크 구성 $ sudo docker network create web-server-network 2. Docker에 MySQL 및 Gitea 설치 $ sudo docker pull mysql $ sudo docker pull gitea/gi..

Mobile App/Android

[Gradle] 안드로이드 빌드 버전 자동으로 관리하기

플레이스토어에 앱 업로드 시 versionCode가 기존에 올라가있는 Bundle과 같거나 작을 경우 업로드가 차단된다. 매번 까먹고 다시 빌드해서 다시 올리는건 상당히 귀찮은 일이다. 다행히도 Gradle 문법에서 Programmatically Versioning이 가능하다. 먼저 Module단계의 폴더(기본: app)에 version.properties 파일을 하나 생성해 주고 관리하고 싶은 버전의 이름을 넣는다. VERSION_MAIN=0 VERSION_SUB=1 VERSION_CHILD=5 VERSION_RELEASE=5 이후 Module 단계의 build.gradle을 수정해주면 된다. 나는 Main은 신규기능 추가나 시스템 개편 등 업데이트를 설치하지 않으면 앱 사용이 불가할 정도의 업데이트 ..

Desktop App/C#.Net

[C# .NET] static 함수에서 Control에 접근하기

로그를 눈에 보이게 처리해야 해서 TextBox에 로그를 남기는 함수를 만들었다. 근데.. static 함수에서는 this를 사용할 수 없다... 고민하던 중 생각난 해결책은 아래와 같다. public partial class Form1 : Form { public static Form1 instance; public Form1(){ InitializeComponent(); instance = this; } public static void func1(){ instance.Log("message"); } private void Log(string Message) { this.Invoke(new Action(() => { try { tb_log.AppendText($"[{DateTime.Now.ToStri..

Mobile App/Android

Cross-App Scripting Reject 해결방법

Intro SSL Handler가 구현되어있는 최초 버전 (버전코드 1번)이 테스트 트랙에 올라가 있다는 이유로 구글플레이에서 삭제되었다. 당장 해당 트랙을 비활성화 한 뒤 업데이트를 시도해 보았지만 Cross App Scripting Vulnerability로 리젝되어 클라이언트의 요청이 지속되는 상황이었다. Vulnerability APK Version(s) Past Due Date Cross-app Scripting Your app(s) are using a WebView that is vulnerable to cross-app scripting. To address this issue, follow the steps in this Google Help Center article. 33 August..

ETC/Git

[Synology] Git Server / Gogs로 나만의 Git 구축하기

요즘들어 유니티 프로젝트의 의뢰가 많다. 유니티는 자체적으로 Collaborator라는 클라우드 스토리지 서비스를 지원하지만, commit log를 제외하면 git처럼 버전 관리할 수 있는 곳이 암만 찾아봐도 없다. Github는 파일당 100MB 제한이 있고, BitBucket은 파일당 용량 제한은 없지만 총 용량 제한이 있다. 그리고 매우 느리다.. 그래서 그냥 시놀로지 DSM에 있는 Git Server를 활용하기로 했다. 사전에 Git Server와 MariaDB 5 설치가 필요하지만, Git을 사용하고 서버를 구축하기 위해 여기까지 찾아온 여러분께는 구태여 설명할 필요가 없을 것 같으므로 생략합니다. *** 시놀로지에서 Docker를 지원하는 경우 여기를 참조하세요. 도커로 구성하는게 추후 관리가..

ETC/Synology

[Synology] ipkg 패키지매니저 설치하기

DSM 패키지 센터 커뮤니티 소스 리스트 http://packages.synocommunity.com/ http://synology.sysco.ch/ http://www.cphub.net http://syno.dierkse.nl/ 인터넷에 떠돌아다니는 리스트 중 현재는 유효하지 않은 링크는 삭제했습니다 이 게시글의 패키지는 ARM 코어가 탑재된 보급형 Synology 기기에서도 사용이 가능합니다. 설치방법 Perl 패키지가 필요합니다. 시놀로지 공식 패키지센터에서 설치합니다. 패키지센터 우측 상단의 설정 버튼을 누르고, 패키지 소스 탭에 위 리스트를 추가합니다. ipkg만 설치하실거면 맨 아래 cphub 링크만 추가하셔도 됩니다. 패키지센터를 종료 후 다시 엽니다. 검색창에 ipkg를 검색 후 Easy ..

ETC/Ubuntu

[Ubuntu] 우분투 초기세팅 (카카오 미러서버, zsh)

카카오 미러서버 - apt sudo sed -i -re 's/([a-z]{2}.)?archive.ubuntu.com|security.ubuntu.com/mirror.kakao.com/g' /etc/apt/sources.list sudo apt update sudo apt upgrade -y 카카오 미러서버 - pip mkdir ~/.pip echo "[global] index-url=http://ftp.daumkakao.com/pypi/simple trusted-host=ftp.daumkakao.com" >> ~/.pip/pip.conf pip3 install --upgrade pip zsh 및 oh-my-zsh 설치 sudo apt install -y zsh curl git sh -c "$(curl -..

Mobile App/iOS

[Objective C] Javascript와 WKWebView 통신 시 리턴값 받기

iOS 에서의 Javascript Interface Bridge는 단방향, JS -> Native로밖에 값을 전달하지 못한다. 따라서 js에 setValue() 등의 함수를 사용해야 한다.. 그러나 window.webkit.messageHandler.foo.postMessage(args) 를 호출하고, 네이티브에서 evalJavascript로 setFooValue(bar) 함수를 호출해 밸류를 지정해준다 한들, 완성된 js코드를 보는 후임 개발자 입장에서 코드가 쉽게 눈에 들어오지 않을 것이고, 예쁘지도 않다. 또 리턴받아야 하는 함수가 여러 개인 경우 setValue() 함수를 여러번 생성해야 하며, Android JavascriptInterface Bridge와 다른 방식으로 사용해야 한다. 안드로이..

Jade Choe
Jade's Hello, World!