본문 바로가기

알아두면 손해 없는 정보 저장소16

Spark DataFrame의 이해 인프런 인공지능 강의를 듣고 내용을 정리한다. 스파크 머신러닝 완벽 가이드 - Part 1 | 권 철민 - 인프런 권 철민 | 스파크(Spark) 머신러닝의 핵심 Framework에 대한 이해, 난이도 높은 실전 문제를 통한 SQL 기반의 데이터 가공, 업무 도메인 분석을 통한 데이터 분석과 최적화된 머신러닝 모델 구현 능력 www.inflearn.com Pandas와 Spark DataFrame의 head() 및 print() 비교 head(N)은 Pandas와 Spark에서 반환값과 print() 적용 시의 출력이 다르다. Pandas에서 선두 N 개 Record를 가지는 DataFrame을 반환하고, Spark에서 선두 N개 Row Object의 list를 반환한다. 이 반환값을 print() 적용.. 2024. 3. 31.
C 모듈을 사용하는 iOS 앱 개발 1 골수 앱등이 개발자, 10년 만에 드디어 MacOS 첫 발을 떼다 오랫동안 사용해온 가계부 iOS 애플리케이션이 있다. 2017년 초부터 지금까지 나의 모든 자산 관련 이력이 남아 있다. 특징으로는 거의 모든 것을 수동으로 작업해야 해서 엄청난 수고로움이 있지만, 그만큼 자유도가 높은 편이다. 그래서 요즘 많이들 사용하는 뱅크 샐러드나 기타 자산 관리 애플리케이션과 견주어도 밀리지 않을 그런 애플리케이션이다. 그런데 더 이상의 업데이트를 하지 않는다. 물론 가계부라는 게 추가되는 서비스가 없어도 사용하는데 아무런 지장이 없긴 하지만, 개인적으로 아이폰의 인터페이스가 아주 작은 화면(SE)에서 가장 큰 화면(12 Pro Max)으로 변경되다 보니 오류가 조금씩 있더라. 그래서 내가 한번 만들어 봐야지 했는.. 2022. 3. 18.
HP-UX 전용 패키지 다운로드 Unix 멈춰 나름 PKI 응용 그리고 기반 소프트웨어 개발 밥을 먹은 지도 어언 4년 차다. 그러다 보니 리눅스 다루기는 정말 익숙해졌고, 진짜 하기 싫었던 유닉스도 조금씩 (강제로) 익숙해져 버렸다. 그래서 절대로 하면 안 되는 것 그리고 하면 좋은 것 이런 것들이 생겨버렸다. 절대로 하면 안 되는 것 중 하나가 아래 표다. 한창 CMake로 자동화해본다고 삽질했을 때였던 것 같다. 하나의 설루션을 다양한 환경에서 빌드하고 배포하기 위해서 같은 코드를 리눅스에서 빌드하고 AIX 갔다가 SunOS 갔다가 HP-UX 갔다가 왔다가 했을 때가 있었고, 이게 나름 답답했었는지 자동화가 해보고 싶었던 것 같다. 엔터 한 번에 모든 일을 일사천리로 척척척. 그런데 HP-UX는 좀 까다로웠다. http://hpu.. 2022. 3. 17.
Solaris에서 .tar.gz 파일 untar 안될 때, 해결 방법 압축이 안 풀린다고? 압축은 풀어야겠는데 내가 알던 상식으로는 압축이 안 풀렸다. 솔라리스 8, 9, 10에서는 안 되는 걸 확실하게 확인했고, 11에서는 되는 것을 확실하게 확인했다. $ tar -xvf pressedFile.tar.gz tar: directory checksum error(디렉토리 체크섬 오류) $ uname -a SunOS mars 5.8 Generic_117350-62 sun4u sparc SUNW,Sun-Fire-V240 낮은 버전(10 이하)의 솔라리스에서 .tar.gz 파일 압축 해제 방법 솔라리스 2.5 이상 10 이하의 버전의 tar는 z 옵션이 없기 때문인데, 낮은 버전의 솔라리스에서 정 압축을 풀고 싶으면 이렇게 하면 된다. $ gunzip -c pressedFile... 2022. 3. 16.
AIX의 XL C/C++ 설치 및 삭제 까다로운 XL C/C++, AIX, IBM 그 당시의 나는 AIX에서는 반드시 XL C/C++를 사용해야 하는 줄 알았다. 이전 회사에서도 그랬고, 이전 버전의 AIX에서도 XL C/C++를 사용했기 때문에 그렇게 생각했던 것 같다. 그런데 비싼 장비에서 사용하는 컴파일러이다 보니 공짜가 아닌가 보다. 그런데 또 버전을 타서, 해당 OS에 맞는 버전의 XL C/C++를 사용해야 했다. 처음에 설치한 버전은 13.1이다. AIX 7.2에는 X 표시가 아니고 링크이길래 맞는 줄 알았다. 심지어 링크를 따라 들어가면 AIX 7.2는 13.1을 2015년 11월부터 지원할 거라는 설명이 나온다. 근데 개뿔 안된다. 아마 내가 설치한 버전은 해당 업데이트가 들어가지 않은 버전이었던 것 같다. 그다음으로 16.1... 2022. 3. 15.
AIX 용 오픈소스 소프트웨어 패키지 저장소 리눅스에는 있는데 유닉스에는 없는 것: yum, apt CentOS에 yum, Ubuntu에 apt가 있다면 AIX에는 없다. 셀프로 해야 한다. 웬만한 소프트웨어는 초기 설치 시 지원을 해주지만 그 외로 필요한 것들은 직접 찾아서 설치해야 하는데, 찾다 보면 시간 낭비하기 일쑤이다. 하지만 이 사이트에는 웬만한 패키지가 다 있다. 지원하는 AIX의 버전을 패키지 명 뒤에 괄호로 명시하니 알맞은 버전을 선택하면 된다. AIX 용 오픈소스 소프트웨어 패키지 저장소; AIX Toolbox for Open Source Software: GNU and open source tools for AIX https://www.ibm.com/support/pages/node/883798 p.s. http://www.bu.. 2022. 3. 14.
AIX에서 이상적인 PS1 설정하기 이상적인 시스템 프롬프트 AIX에서 이상적인 프롬프트를 사용하기 위해서 다음과 같은 작업이 필요하다. 1. (System startup 파일 중 하나인) ~/.profile 열기 2. export PS1="[$USER@$HOSTNAME "'${PWD##*/}'"]\$ " 추가하기 3. ~/.profile 실행하기 프롬프트 변경 방법 $ vi ~/.profile . . . export PS1="[$USER@$HOSTNAME "'${PWD##*/}'"]\$ " esc 누른 후 :wq $ . ~/.profile [anothel@localhost exp]$ p.s. 이렇게 하면 로그인할 때마다 설정한 PS1이 바로 적용되어서 나온다. 한 번만 수정하고 싶을 땐. profile 파일을 수정하지 않고 바로 수행하면.. 2022. 3. 13.
형상 관리 툴 선택 2 - 깃랩, 깃헙, 비트버킷? GitLab, GitHub 중에 뭐 쓰세요? 이용자 수를 한번 따져보자. 빗버킷: 약 600만 명, 깃랩: 약 3000만 명, 깃허브: 약 4000만 명 이상. 이용자 수만 봤을 때는 빗버킷보다는 깃랩, 깃허브가 훨씬 더 많은 이용자 수를 보유하고 있다. 그래서 깃랩을 쓰느냐 깃허브를 쓰느냐 이 두 개의 대결을 세기의 대결로 칭한다. 회사에 다니기 전 회사에 입사하기 위해, 자소설에 항상 썼던 말이 있다. 저는 프로그래밍을 잘하고 싶습니다. 그런데 회사에서 일을 한다는 것은 프로그래밍을 잘하게 되는 과정일 뿐인데, 회사에서는 돈을 줍니다. 이 얼마나 기쁜 일입니까? 저는 늘 기쁜 마음으로 일할 것입니다. 대충 이런 류의 이야기였던 것 같은데, 아마 실제의 나와 글이 달라서 회사에서는 잘 뽑아주지 않았던 .. 2022. 3. 7.
형상 관리 툴 선택 1 - 깃랩, 깃헙, 비트버킷? Bitbucket이요? 그건 뭐죠? 지인들께 어떤 종류의 소스 코드 관리 도구를 사용하냐고 질문했을 때 받은 대답 중 특이한 대답이 하나 있었다. 바로 git이었는데, 깃랩도 깃허브도, 빗버킷도 아닌 git이었다. 관리는 Sourcetree를 사용한다고 했다. 하긴 그 친구는 학생 때부터 그런 본연적인 것을 좋아했다. 예를 들어보자면 포토샵으로 할 일을 그림판으로 하는 그런 걸 좋아했던 친구이다. 나는 git으로만 사용하진 못하겠고, 잘 사용하게끔 도와줄 다른 플랫폼이 웬만하면 필요하다. 그게 GitLab, GitHub 아니면 Bitbucket이다. 이런 게 있으면 생산성 높은 일을 할 자신이 있다. 좋은 게 있는 데 사용하지 않아야 할 이유는 없다고 생각한다(어차피 지금 회사에는 이미 있다). 아마도 .. 2022. 2. 11.
애자일 소프트웨어 개발 선언 애자일 소프트웨어 개발 선언 (Manifesto for Agile Software Development) 우리는 소프트웨어를 개발하고, 또 다른 사람의 개발을 도와주면서 소프트웨어 개발의 더 나은 방법들을 찾아가고 있다. 이 작업을 통해 우리는 다음을 가치 있게 여기게 되었다: 공정과 도구보다 개인과 상호작용을 포괄적인 문서보다 작동하는 소프트웨어를 계약 협상보다 고객과의 협력을 계획을 따르기보다 변화에 대응하기를 가치 있게 여긴다. 이 말은, 왼쪽에 있는 것들도 가치가 있지만, 우리는 오른쪽에 있는 것들에 더 높은 가치를 둔다는 것이다. Kent Beck Mike Beedle Arie van Bennekum Alistair Cockburn Ward Cunningham Martin Fowler James.. 2022. 2. 10.
형상 관리 도구 뭐 쓰세요? 깃? SVN? 형상관리 도구: Git? SVN? 혹시 Plastic SCM?? 정의 소프트웨어 형상 관리, 구성 관리(SCM, Software Configuration Management), 버전 관리 시스템(VCS, Version Control System), 소스 관리(source control), 소스 코드 관리(SCM, Source Code Management)는 일반적으로 모두 동일한 의미 하며, 특히 형상 관리는 소스 코드뿐 아니라 개발 환경, 빌드 구조 등 전반적인 환경 전반적인 내역에 대한 관리 체계를 정의한다. 즉, 하나의 소프트웨어 산출물(binary)을 생성하기 위해 필요로 하는 아이템들과 공정 방식의 정의, 그리고 재생성을 위한 전반적인 환경까지 베이스라인(baseline)화하여 관리하는 방식 전.. 2022. 2. 9.
데브옵스란 무엇인가 1 데브옵스: 빠른 서비스 적용을 위해 개발과 운영을 동시에 하는 메커니즘 데브옵스의 정의: 얼른 일 마치고 집에 빨리 가기 위해 만든 술수 소프트웨어 개발 방법론의 하나로, 개발(development)과 운영(operation)의 합성어이다. 개발 담당자와 운영 담당자가 연계하여 협력하는 개발 방법론을 말한다며 두산백과는 얘기하고 있다. 하지만 데브옵스라는 단어의 의미를 딱히 이렇다 하게 정하지 않았다고 위키에서는 말하고 있다. 사실 위에 스스로 내린 정의는 조금 오버한 감이 없이 않아 있는 것 같고, 그나마 진정성이 보이는 의미는 이 정도가 되지 않을까 싶다. 팀 지원, 팀 간 커뮤니케이션 및 공동 작업, 기술 자동화를 강조하며, 소프트웨어 개발 팀과 IT 팀 간의 프로세스를 자동화하고 통합하는 일련의 .. 2022. 2. 8.
Google C++ Style Guide 3 Google C++ Sytle Guide를 해석해가며 공부한 후 배운 점과 느낀 점에 대해서 서술하려 한다. C++ Version, Header Files C++ Version 현재, 코드는 C++17 환경이어야 한다(예를 들어, C++ 2x는 안된다.). 이 가이드가 목표로 하는 C++ 버전은 시간이 지남에 따라 (공격적으로) 발전한다. non-standard extensions을 사용하지 마라. C++14, C++17에서 나온 기능을 사용하기 전에 다른 환경으로의 이식 가능성을 고려해라. 더보기 더보기 Currently, code should target C++17, i.e., should not use C++2x features. The C++ version targeted by this guide.. 2021. 7. 10.
Google C++ Style Guide 2 Google C++ Sytle Guide를 해석해가며 공부한 후 배운 점과 느낀 점에 대해서 서술하려 한다. Background, Goals of the Style Guide Background C++는 수많은 Google의 오픈소스 프로젝트에 사용되는 주요 개발언어이다. 모든 C++ 개발자가 알고 있는 것처럼 C++는 강력한 기능들이 많지만, C++의 이러한 강력한 기능들은 버그를 일으키기 쉽고, 코드를 읽거나 유지 보수하기 어렵게끔 만드는 복잡성을 갖고 있다. 이 가이드의 목표는 C++를 사용한 개발을 하며 해야 할 것과 하지 말아야 할 것에 대해 아주 자세하게 서술함으로써 복잡성을 관리하기 위함이다. 이러한 규칙은 코드 베이스를 관리 가능한 상태로 유지하면서, C++ 개발자가 생산적으로 개발할 수 .. 2021. 7. 6.
Google C++ Style Guide 1 C와 레거시 코드를 다루다가 (CPP의 필요성을 아직 느끼진 못했지만) C++로 리팩터링 하다가 느낀 점을 서술하려 한다. - 다시 펼쳐보는 구글 코드 스타일 규약집 1. 레거시 지옥(feat. 누가 이런 코드를 허락하였는가) 회사에서 TF프로젝트를 진행하며, 빠른 개발을 위해 레거시 프로젝트에서 사용하던 쌩 C 파일과 GCC컴파일러로 개발했다. 짧은 설계과 회의 등을 마친 후 해당 기능 구현을 했고, 모든 메모리 누수를 잡았다.(메모리 누수가 너무나도 많았었다.) JAR파일 배포를 통해 라이브러리를 제공하는 형태의 사업이었다. 내가 맡은 부분은 JNI 인터페이스를 만들어서 JAVA라이브러리와 회사 기반 라이브러리(PKI 관련 암호화 등)를 연결하는 모듈을 만들었다. 메모리 누수를 잡기 위해서 Valgr.. 2021. 7. 5.
Awesome Reference Bookmarks Google C++ Style Guide - https://google.github.io/styleguide/cppguide.html Google C++ Style Guide google.github.io Unix-like AIX 프롬프트 변경 - https://logic.edchen.org/how-aix-ps1-set-command-prompt/ How AIX PS1 Set Command Prompt - Ed Chen Logic AIX PS1 By default, there's little information in prompt for a new user. Usually, I changed the prompt into this: $ vi ~/.profile ... export PS1="[$USER@$H.. 2021. 6. 27.