플로렌스라는 개발자

전체 글

185

Gitea Release 파일 업로드 "You can not upload files of this type." 문제

gitea 저장소 이슈에도 나와 있는데, app.ini에서 추가만 하면 됩니다. [repository.upload] ALLOWED_TYPES = application/zip|application/x-zip|application/x-zip-compressed|application/x-compress|application/x-compressed|multipart/x-zip [attachment] ENABLED = true PATH = E:/my-work-spaces/Gitea/data/attachments ALLOWED_TYPES = application/zip|application/x-zip|application/x-zip-compressed|application/x-compress|application/..

Git 2020.02.04 Plorence

Gitea private repository를 위한 git SSH 설정

먼저 bash를 실행시켜 키를 만들어야 합니다. ssh-keygen 위 명령어를 입력해 키를 만듭니다. 여기서는 키의 저장 경로를 입력하라는 말인데, 기본 경로로 설정하겠습니다. (그냥 엔터 하면 됨) 키의 비밀번호를 입력합니다. 키의 비밀번호를 재입력합니다. 키가 만들어졌습니다. /c/Users/John/.ssh/에 저장되었다고 합니다. 참고로 pub로 끝나는게 공개키입니다. 경로로 가서 pub파일의 내용을 복사합니다. 개인 저장소에 가서 설정 > 배포 키 > 배포 키 추가 > 내용에 아까 복사해뒀던 공개키 값을 붙여 넣기 합니다. Enable Write Access에 체크해줍니다. 제목은 키가 누구건지 알아볼 정도로만 쓰시면 됩니다. 그리고 배포 키 추가를 클릭합니다. 이제 git에서 clone하면 ..

Git 2020.02.03 Plorence

Synology gitea 설치하기

저는 Synology에서 Gitlab vs Gitea를 고민하다가 벤치마크를 보고 Gitea를 택했습니다. 더군다나 Gitlab의 많은 기능을 사용할 필요가 없어서 Gitea가 더 매력적이었습니다. 준비사항 도커를 지원하는 나스(도커가 설치되어 있어야 함.) SSH 활성화 Gitea 설치 파일 다운로드 Gitea는 정식 패키지가 아니기 때문에 SPK파일로 수동설치해야합니다. 여기에서 SPK파일을 다운로드 합니다. 시놀로지에서 패키지를 수동설치할려면 로그인된 사용자 컴퓨터에서 업로드해야합니다. (파일 스테이션 내에서 선택하는 기능이 없음.) Gitea 설치 파일을 다운로드받았다면 SPK 파일을 가지고 수동설치해야합니다. 시놀로지 패키지 센터에 접속합니다. 우측 상단에 수동 설치를 클릭합니다. 찾아보기를 클..

Synology 2020.02.03 Plorence

Synology DSM 7.0 Preview

DSM 7.0 프리뷰가 드디어 공개됐습니다. 베타를 참여하시려면 반드시 등록해야 하고, 시놀로지 계정이 필요합니다. 등록기간은 2020년 1월 14일까지니 베타 참여하실 분들은 그전에 하셔야 합니다. https://event.synology.com/en-global/dsm_preview

Synology 2020.01.01 Plorence

정말 간단하게 소개용 포트폴리오 사이트 만들어봤습니다.

ASP.Net core(v2.1) MVC를 사용했습니다. 별 취지는 없고 예전부터 생각했던 아이디어라서 해보고 싶었습니다. 오픈소스 프로젝트입니다. 저장소는 여기 구경은 plorence.kr Plorence's notepad Plorence's notepad plorence.kr

개발 작품 2019.11.30 (2) Plorence

ASP.Net Core로 웹사이트 만들어본 후기

저는 주력으로 웹 개발을 하는 사람도 아니고 디자인도 엉망입니다. 웹에 대해 아주 얕은 지식만 있습니다. 만들고 싶은 것도 있고 개인 소개용 웹사이트나 프로젝트에서 API 서버를 개발해야 될 일이 있었습니다. 여러 가지 찾다가 Django, Node.js, ASP.net(core) 세 가지였습니다. ASP.Net Core를 선택한 이유 매우 간단한 이유인데, 파이썬이나 자바스크립트보단 C#을 더 잘 알고 있었습니다. 파이썬은 거의 모르는 수준이고 자바스크립트는 어려운 문법까진 모르지만 간단한 것과 코드 수정 정도는 가능했습니다. 그에 반해 C#은 제가 만들고 싶은 것을 만들만한 수준은 되었습니다. 거기서도 ASP.Net을 택하느냐 ASP.Net Core를 택하느냐에 갈렸지만 크로스 플랫폼을 지원하는 AS..

프로그래밍/C# 2019.11.21 (2) Plorence

Synology docker ASP.net Core + mssql 연동

저의 블로그 게시글 중에 Synology docker로 asp.net core 배포하기를 따라 하고, EF Core를 사용하신다면 아래와 같은 오류가 발생합니다. System.PlatformNotSupportedException: LocalDB is not supported on this Platform. or System.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance ..

Synology 2019.11.18 (1) Plorence

C++ vector와 valarray, 그리고 array 중 뭘 써야 할까?

이 클래스들은 서로 다른 목적을 가지고 서로 다른 그룹들에 의해 개발되었습니다. 먼저 vector 템플릿 클래스는 컨테이너 클래스와 알고리즘으로 구성된 시스템의 일부입니다. vector 클래스는 정렬, 삽입, 재배치, 검색, 다른 컨테이너로의 데이터 전송, 그 밖의 조작과 같은 컨테이너 지향적인 액티비티들을 지원합니다. 반면에 valarray 템플릿 클래스는 수치 계산을 지향하며 STL의 일부가 아닙니다. (valarray 템플릿 클래스은 push_back(), insert() 메서드를 가지고 있지 않음.) 그러나 많은 수학적 연산에 대해 간단하고 직관적인 인터페이스를 제공합니다. valarray 템플릿 클래스은 객체의 내용을 합하는 sum() 메서드, 최댓값을 리턴하는 max() 메서드, 최솟값을 리턴..

프로그래밍/C++ 2019.11.07 Plorence

C++ 펑터 또는 펑크터(functor)

펑터 또는 펑크터라고 하는데, 여기선 펑터라고 하겠습니다. 많은 STL 알고리즘들이 펑터(Functor)라고 부르는 함수 객체(Function object)를 많이 사용합니다. 펑터는 함수처럼 ()과 함께 사용할 수 있는 객체입니다. 일반 함수의 이름, 함수를 지시하는 포인터, () 연산자가 오버로딩된 클래스 객체 모두 펑터가 될 수 있습니다. #include class Money { private: int _Money = 0; public: int operator()() { return this->_Money; } void operator()(int N) { this->_Money += N; } }; int main(void) { Money money; money(100); //void operator..

프로그래밍/C++ 2019.11.06 Plorence

C++ 생각보다 많이 모르는 삼항 연산자의 특성

https://docs.microsoft.com/ko-kr/cpp/cpp/conditional-operator-q?view=vs-2019 해당 문서만 봐도 해당 게시글에서 설명하는 것은 다봤다고 해도 무방합니다. exp1 ? exp2 : exp3; 라는 삼항 연산자가 있을 때.. exp2과 exp3의 타입이 동일하다면 lvalue이다. 당연히 exp2와 exp3도 lvalue일때를 말합니다. char A = 'a'; char B = 'A'; (1 ? A : B) = 'B'; C는 컴파일 에러가 발생하고 C++에서는 이것이 허용됩니다. exp2과 exp3의 타입이 다르다면 형 변환이 일어난다. 제가 삼항 연산자를 더 알아본 이유입니다. #include int main(void) { char Result =..

프로그래밍/C++ 2019.11.06 Plorence

C++ mutable 키워드

mutable 키워드는 특정 구조체나 클래스가 const로 선언되어 있다 하더라도 특정 멤버를 변경할 수 있음을 나타내는 데 사용할 수 있습니다. 예제 의도는 const 객체여도 int형 변수의 읽기/쓰기가 가능한 클래스를 만들려고 합니다. (cosnt의 의도를 완전히 무시하는 거라 좋지 못하고 불필요한 클래스입니다.) #include class TEST { private: int number; public: void SetNumber(int n) const { number = n; } int GetNumber() const { return number; } }; int main(void) { TEST test1; const TEST test2; test1.SetNumber(100); test2.SetN..

프로그래밍/C++ 2019.11.06 Plorence

C++ 일반화 프로그래밍과 반복자(iterator)

STL는 일반화 프로그래밍(generic programming)의 한 예입니다. 객체 지향 프로그래밍은 프로그래밍의 데이터 측면을 중시하지만, 일반화 프로그래밍은 알고리즘에 중점을 둡니다. 두 프로그래밍 패러다임에 공통적인 것은, 데이터의 추상화와 재활용이 가능한 코드의 작성입니다. 추구하는 철학은 완전히 다른데, 일반화 프로그래밍의 목적은 데이터형과 무관한 코드를 작성하는 것입니다. 템플릿은 일반화 프로그램을 작성하는 C++의 도구입니다. 이터레이터가 필요한 이유 이터레이터를 이해하는 것이 STL을 이해하는 열쇠입니다. 템플릿이 알고리즘을 저장할 데이터형과 무관하게 만드는 것처럼, 이터레이터는 알고리즘을 사용할 컨테이너형과 무관하게 만듭니다. 이터레이터는 STL의 일반화 접근에 필수 구성 요소입니다. ..

프로그래밍/C++ 2019.11.06 Plorence