반응형

전체 글 119

C언어를 처음 배웠던 시절의 코드를 다시 보았다.

때는 2017년. 지금으로부터 약 7년 전이다. 초등학교 6학년 겨울방학, 컴퓨터에 푹 빠졌던 나는 부모님께 C언어 학원을 보내달라고 졸랐다. 그리고 거기서 걸으면 안 될 길을 걷고야 말았다. 세상에. ​ #1. 뭘 집어넣는 거야? // 세 과목의 성적을 입력받아 합계와 평균을 구하는 프로그램 setbuf(stdin,NULL); int sj = ("%d", sj); int sj2 = ("%d", sj2); int sj3 = ("&d", sj3); // ...이하 생략 ㅋㅋㅋㅋㅋㅋ 대환장... 아마 scanf("%d", &sj);를 의도한 것 같은데, 무슨 생각으로 저랬을까. 참고로 의외지만 저 코드는 문법상으로 아무 문제가 없다. 쉼표 ',' 연산자는 두 식의 값을 평가한 후, 뒤의 것을 돌려준다. 즉 ..

카테고리 없음 2024.01.17

[TastyNav] #1: 중앙대학교 맛집 앱 개발 시작!

환영합니다, Rolling Ress의 카루입니다. ​ 따로 언급은 안 했는데, 저는 현재 COMP 동아리에 소속되어 있습니다. 개인적으로 매우 만족하는 동아리 중 하나예요. 이 동아리에 들어올 때 좀 우여곡절이 있었는데(^^,,) 어쨌든 무사히 들어오게 되었습니다. ​ 지금은 팀 프로젝트를 진행중이에요. 저희 팀은 중앙대학교 주변 맛집 앱을 만들고자 합니다. TastyNav는 개발 코드명이에요. 아직 앱 이름이 정해지지 않아서, 도메인이나 내부적으로는 TastyNav를 사용하고 있습니다. ​ 개발 언어: JavaScript (프론트: React.js with PWA, 백엔드: Node.js) ​ 1) 자료조사 첫째로, 맛집과 메뉴 목록을 조사했습니다. 공유 엑셀 파일을 이용해서 정보를 취합했습니다. 맛집..

중앙대학교 2024.01.17

[C11] C언어도 제네릭이? _Generic 키워드 살펴보기

환영합니다, Rolling Ress의 카루입니다. ​ C언어에 제네릭이 이미 들어갔었네요? 물론 C++의 template이나 다른 언어의 제네릭에 비해선 크게 약하지만, 그래도 가능은 하다라는 점에 의의를 두고 싶습니다. C23에서는 아예 auto 키워드가 본래의 의미를 잃고 C++의 auto와 동일하게 변경되는데, C언어도 발전하는 모습이 보기 좋습니다. 그래봐야 실무에선 아직도 C99 쓰겠지만. _Generic(expr, list) 표현식은 간단합니다. 이때 list에는 다음과 같은 것들이 올 수 있습니다. // type은 VLA 또는 VLA를 가리키는 포인터가 올 수 없음. type1: expr1, type2: expr2, default: expr3 C언어는 오버로딩을 지원하지 않기 때문에 매크로의..

C언어 2023.12.31

[C23-] 함수 파라미터에 void를 써야 할까? ─ int func(), int func(void)

환영합니다, Rolling Ress의 카루입니다. ​ 이 글은 C23 이전 표준안에 대해 다루고 있습니다. 사실 아직까지도 C11은 커녕 C99를 주로 쓰는 경우가 많아서, 대부분 이 글에 적용된 내용이 해당됩니다. 한 20년쯤 지나면 이 글이 필요 없어질 수도 있겠군요. 참고로 C++에는 해당이 되지 않는 이야기입니다. C11 이전의 C 표준에서만 해당됩니다. ​ 흔히 C언어에서는 함수를 선언할 때 꼭 void를 쓰라고 합니다. int func(); int func(void); C++ 에서는 위 둘의 뜻이 정확히 같습니다. 매개변수를 받지 않는다는 뜻이죠. 오히려 func(void)보다는 func()를 권장합니다. C# 같은 언어에서는 아예 첫 번째 표현만 가능하고요. (두 번째 표현을 쓰면 오류가 나..

C언어 2023.12.04

[C99] VLA(Variable Length Array; 가변 길이 배열)에 관한 깊은 고찰

환영합니다, Rolling Ress의 카루입니다. ​ C언어를 배우다보면 흔히 이런 말을 한 번쯤은 들어 보셨을 겁니다. 배열을 선언할 때, 크기를 정하는 인덱스에는 변수를 사용할 수 없다. int len = 5; int array[len]; 쉽게 말해서 위와 같은 코드가 불가능하다는 뜻이죠. 일반적으로 상수값만 가능하다고 배우니까. 그런데 이 말은 틀렸습니다. C99부터 VLA라는 문법을 지원하기 때문이에요. C11에서 선택구현으로 바뀌어서 이게 사라졌다고 아시는 분들도 있는데, C23에서 다시 부활했습니다. 아마 C언어는 이 문법을 계속 가지고 갈 것 같아요. ​ * 참고로 이 코드는 gcc에서 C99 이상의 문법으로 컴파일했을 때만 작동합니다. MSVC는 지원하지 않고, C++도 지원하지 않아요. ..

[카루의 HTML 5] 마크업 언어 첫걸음

환영합니다, Rolling Ress의 카루입니다. 사실 이 글 전에 작성했던 게 비주얼 스튜디오 코드 설치 안내였습니다. 지금은...아예 도입부를 HTML로 작성하고 있네요. HTML은 마크업 언어의 일종입니다. HyperText Mark-up Language의 줄임말이에요. HTML. 태그와 태그로 이루어져있는데, 이 사이에 값을 넣는 형식이죠. 와 인데요, head는 문서 전체에 영향을 미치는 특성이라고 보면 되고 body는 내용이라고 봐도 될 것 같습니다. 참고로 웹 디자인을 위해서 HTML 태그에 직접 값을 삽입하는 경우도 많았는데, HTML 5부터 CSS가 적극적으로 권장되면서 그런 방법들이 사라졌습니다. 이건 나중에 기회가 되면 말씀드리도록 하죠.

기타 2023.01.11

구글 순정 다이얼러에서 통화 녹음 파일 가져오기

환영합니다, Rolling Ress의 카루입니다. ​ 구글 순정 다이얼러에서 요즘 통화 녹음이 되기 시작했죠. 문제는 그 통화 녹음 파일에 접근할 수가 없습니다. 알고보니 개인정보를 이유로 꼭꼭 숨겨놨더라고요. 머리카락 빠졌나? 그래서, 일반적인 방법으로는 해당 폴더에 접근할 수가 없습니다. 그래서 직접 data 파일을 탐색해야 해요. 루팅한 휴대폰이 아닌 이상 기기만으로는 접근할 수 없고, adb가 필요합니다. ​ /data/user/0/com.google.android.dialer/files/callrecording ​ 위 폴더에 통화 녹음 파일이 있습니다. 이 경우에는 adb를 루트 권한으로 실행시켜야 합니다. 아래 두 명령어를 입력하여 루트 쉘을 실행합시다. adb root adb shell 그리..

카테고리 없음 2022.12.07

AutoHotKey로 프리미어 프로 단축키 쉽게 사용하기 (exe 공유)

환영합니다, Rolling Ress의 카루입니다. ​ 오늘은 오토핫키 관련 글입니다. 제목엔 프리미어 프로라고 써있긴 한데, 사실 모든 곳에 활용이 가능합니다. 포토샵, 일러스트레이터, 라이트룸과 같은 어도비 제품군 뿐 아니라 일반적인 오피스, 웹, 게임 등에서도 사용이 가능합니다. 내가 사용할 프로그램을 지정해주기만 하면 됩니다. 다만 이번 글에서는 프리미어 프로에 사용한 내용을 중점적으로 살펴보겠습니다. ​ 제가 사용하는 그래픽카드가 GT 1030이라 성능이 상당히 후달립니다. 조만간 RTX 3060정도로 바꿀까 생각중인데, GT 1030이 생각보다 개판이더라고요. 조립할 당시 '화면만 나오면 된다' 정도의 생각으로 구입했는데, 진짜 화면 출력기 수준입니다. 이때문에 뭐 하면 튕기고 (특히 VIDEO..

기타 2022.11.13

비주얼 스튜디오 C# 언어 버전 바꾸기 (ft. .NET Framework)

환영합니다, Rolling Ress의 카루입니다. ​ 오랜만에 써보는 프로그래밍 글이네요. 그런데 이건 VS 관련 얘기라 짧게만 설명하고 끝내겠습니다. 이후 일정이 밀려가지고 살짝 바쁘네요 (^^,,,) ​ 보통 비주얼스튜디오로 C# 프로젝트를 만들면 .NET 6 (혹은 5)와 .NET Framework 중에 선택을 할 수 있습니다. C#을 처음 배우시는 분들은 .NET 6를 선택하시면 됩니다. 이게 기존에는 .NET Core와 .NET Framework로 나뉘었는데, 이것들이 통합이 되면서 .NET 5가 되었고, 그게 6으로 이어진 겁니다. .NET Framework는 이제 사실상 버려지는 단계를 밟고 있다고 볼 수 있습니다. 그런데 UWP 또는 WPF 등 일부 C# 프로젝트의 경우 강제로 .NET F..

C# & .NET 2022.10.21

나만의 C++ 프로그래밍 가이드

환영합니다, Rolling Ress의 카루입니다. 이건 제가 중학교 때 Overcalc를 개발하면서 작성했던 C++ 프로그래밍 가이드라인입니다. 일부는 꼭 지켜야 하는 것도 있지만, 가끔가다 '이건 뭐지' 싶은 것들도 있을 거예요. 지금 시점에서도 제가 일반적인 프로그래밍에서 지켜야 하는 것들은 진하게 표시를 해둘 테니 참고하시면 되겠습니다. 1) 변수의 이름 변수를 선언할 땐 반드시 매크로 var 키워드를 붙인다. 또한 자료형에 따라 변수의 앞 글자를 다르게 한다. #define var var int nSubjects = 10; var string strName = "카루"; 2) 포인터 동적할당 new 연산자를 단독으로 사용하지 않고, shared_ptr ptr = make_shared(new .....

C++ 2022.10.01
반응형