정글에서 온 개발자
1/1 오픈소스, C++ 본문
오픈소스
자유 소프트웨어 vs 오픈 소스
대부분의 자유 소프트웨어는 오픈소스다. 자유 소프트웨어가 좀 더 자유에 진심이다.
그래서 자유소프트웨어를 오픈소스라고 부르면 화낸다.
자유 소프트웨어와 오픈 소스 사이에는 자유를 도덕적 문제로 보는지(자유 소프트웨어), 실용적 문제로 보는지 (오픈 소스)차이가 있지만 라이선스를 보기 전까지는 큰 차이를 느끼기 힘들다.
라이선스
OSI 라이선스가 없으면 오픈소스가 아니다. 그냥 소스 이용가능일 뿐이다.
GPL, MIT, 아파치 라이선스 모두 OSI(Open Source Initiative) 라이선스이다.
(; Open System Interconnection 7계층과 관계 없음)
방임형 라이선스
- 오픈 소스 라이선스의 파생 저작물을 원 저작물과 다르게 할 수 있다.
- 또한 원래 코드 그대로나 수정소스를 그대로 상업화 할 수 있다.
- 라이선스를 변경할 수 있다(독점 등으로) 단, 원래 소스의 라이선스는 반드시 고지하는 등 제약사항이 있다.
- Apache, MIT 라이선스가 대표적 . MIT가 가장 방임적이다.
카피레프트 라이선스
- 자유롭게 활용하는 데 좀 더 제약이 있는 다른 라이선스로 바꾸면 안된다.
- GPL이 대표적
오픈소스 기여를 포트폴리오로 쓰는 것에 관하여
이력서가 보여주는 것은 두가지다.
- 지난 직책에서 한 일
- 해당 업무에서 만들어낸 차이
고용주는 타당한 이유로 일을 잘하고 전체 팀과 회사를 어떤 방향으로 움직여줄 팀원을 원한다. 즉, 차이를 만들어 낼 사람을 바란다.
이력서가 '한 일'을 보여준다면 포트폴리오는 '어떻게 했는지'를 드러낸다.
무엇을 했는지가 더 중요하다(이력서가 더 중요하다). '어떻게는' 면접관마다 자신만의 특정한 선호가 있기 때문이다.
막 시작한 사람에게 추천
- 라이브러리, 플러그인, 작은 위성 프로젝트
- 유니티용 플러그인
- 그리고 초보자에게 친절한 커뮤니티를 찾자!
생각한 점
방임형 라이선스는 오픈소스를 사용해서 판매를 해도 되게 때문에 마케팅을 잘 하는 사람이 더 잘 팔수도 있다. 그러나 오픈소스임을 명시해야 하기 때문에 뭔가 부가가치를 더해서(유지 보수 지원 등) 팔지 않으면 소비자들은 원래의 무료 상품을 사용하게 될 것이다.
찾아본 사이트들
- https://github.com/MunGell/awesome-for-beginners - 초보자용 라벨이 있는 레포지토리가 잘 분류되어있다. 꽤 큰 프로젝트도 있어서 좋다.
- https://up-for-grabs.net/#/ - 오픈소스용으로 좋다는데, 아직 잘 모르겠고 유의미한 레포는 못 찾았다.
참고
오픈 소스로 미래를 연마하라 - https://product.kyobobook.co.kr/detail/S000001033085
C++ - 문자열 스트림
스트림과 문자열을 서로 변환하는데 유용함
stringstream은 읽기와 쓰기를 둘 다 할 수 있고,
istringstream은 읽기만, ( >> 연산만)
ostringstream은 쓰기만 할 수 있다. (<< 연산만)
세 스트림 모두다 .str()로 버퍼에서 읽기가 가능하고, <T> ss("스트링") 로 쓰기가 가능하다.
또 한가지 주의할 점은 cin, cout과 다르게, 읽기 연산을 하면서 버퍼가 소비되지 않는다.
따로 지워주려면 .str("")로 내용을 지워야 한다. error비트 등의 청소는 .clear()로 한다.
활용처
parse()가 없는 c++에서 parse를 구현하는데 사용하거나, string에서 +연산의 비효율을 극복하기 위해 사용할 수 있다.
Parse
string data = "apple,banana,orange";
stringstream ss(data);
string fruit;
vector<string> vec;
while (getline(ss, fruit, ',')) {
vec.push_back(fruit);
}
String 만들기
vector<string> vec = {"a","b","c"};
ostringstream ss;
for(auto &v : vec){
ss << v;
}
string str = ss.str();
str.push_back()으로 추가하는 것보다 메모리 재할당시 오버헤드가 적다.
'TIL' 카테고리의 다른 글
1/3 TIL interval관련 알고리즘, c++ sort 팁 (0) | 2025.01.03 |
---|---|
1/2 TIL (짧음) sliding 윈도우 주의, .count()로 키 찾지 말기 (0) | 2025.01.02 |
12/31 TIL C++ 소소한 배움 (0) | 2024.12.31 |
12/30 TIL C++ 알고리즘을 위한 STL 소소팁 (0) | 2024.12.30 |
12/28 TIL 좋은 단위 테스트의 4대 요소 (1) | 2024.12.29 |