Programming Tips
집중하고 싶다면 우선 주위에 있는 것들을 버려라. 그래야 현재 내가 가지고 있는 하나에만 집중할 수 있게 된다.
CRC-32
CRC-32은 Cyclic Redundancy Check (CRC) 방식중의 하나이며 CRC 알고리즘 계산을 추진할 때 CRC32 다항식 (Polynomial) 을 사용한다. CRC는 네트워크 데이터블록 또는 파일 등 데이터에 근거하여 짧고 간단하며 자리수가 고정 된 검증코드를 발생시키는 채널코딩기술 (Channel Coding Techniques) 이며 주로 데이터 전송 또는 저장 후에 발생할 수 있는 오류 등을 감지 또는 검증하는데 사용된다. CRC는 1961년에 미국의 정보와 컴퓨터과학 전문가 W. Wesley Peterson 이 발명하였다.
Modulo 연산
나머지(영어: remainder)는 산술에서 두 정수의 나눗셈 이후, 온전한 정수 몫으로 표현할 수 없이 남은 양을 가리킨다. 잉여(剩餘)라고도 한다.
A/B=Q remainder R
이때 A는 피제수(dividend)라고 부른다.
B는 제수(divisor) 라고 부른다.
Q는 몫(quotient)라고 부른다.
R는 나머지(remainder)라고 부른다.
나머지 연산은 modulo라고 하며 mod라고 나타낸다.
7 mod 2 = 17 mod 2=1 이다. 왜냐면 7을 2로 나누면 몫이 3이고 나머지가 1이므로, 이 나머지 값이 모듈러 연산의 결과값이 된다.
출처: https://eine.tistory.com/entry/수학-나머지Modulo-연산-1 [아인스트라세의 SW 블로그]
Joel On Software
장인정신, 99%의 완성 상태에서 1%의 완성도를 위해서 들어가는 비싸지만 다른 기업과의 경쟁에서 경쟁우위를 점할 수 있는 핵심 요인
검색, 검색에서의 진짜 문제는 검색 결과를 정렬하는 방법
[Page Rank Algorithim] https://ko.wikipedia.org/wiki/%ED%8E%98%EC%9D%B4%EC%A7%80%EB%9E%AD%ED%81%AC
- Page Rank에 대한 논문을 확인할 수 있는 링크 ( 아래 링크 참조 )
문서출처: 이명헌 경영스쿨 http://www.emh.co.kr/xhtml/google_pagerank_citation_ranking.html
Anti-Aliasing 문자
- 컬러 디스플레이의 해상도가 낮을 때, 회색 그림자를 사용해서 해상도 ‘착각’을 불러 일으키는 편이 보기에 좋다는 생각해서 출발하였음.
https://blog.naver.com/marasyl/222494098324
네트워크 투명성
- 유명한 예제 : RPC (원격 프로시져 호출)
UNC - Universal Naming Convention
UNC[유엔씨]는 컴퓨터 내의 공유 파일이 저장되어 있는 장치를 명시하지 않고서도, 그 파일을 확인하기 위한 방법이다. 윈도우 운영체계, 노벨 네트웨어, 그리고 어쩌면 많은 다른 운영체계들에서도, 자체적인 명명 시스템 대신 UNC가 사용될 수 있다.
CopyFile 메소드
https://docs.microsoft.com/ko-kr/dotnet/api/microsoft.visualbasic.fileio.filesystem.copyfile?view=net-5.0
FtpOpenFile
https://docs.microsoft.com/en-us/windows/win32/api/wininet/nf-wininet-ftpopenfilea https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=tipsware&logNo=100200000637
충돌 보고서를 작성하는 방식
자동으로 수집하는 자료
- 제품의 정확한 버전
- 운영체제 버전과 인터넷 익스플로러 버전
- 충돌이 발생한 코드 파일명과 행 번호
- 문자열로 표현하는 오류 메세지
- 오류 종류를 위한 고유한 숫자 코드
- 어떤 작업을 하고 있었는지에 대한 사용자 설명
- 사용자 이메일 주소
Status :
Assigned To :
Category :
Fix For :
Priority :
Scout MSG :
Version :
Computer :
Opend by {BugTracker}
Error ~~
Windows Version ~
Error Message ~
Module ~
Line Number ~
User Descriptions ~
Assigned to {Someone} by {BugTracker}
개발자 인터뷰
- 과거에 특별히 어려운 선별 과정을 거친 경험
기존이 높은 대학을 졸업, 채용과정이 매우 까다롭다고 이름난 회사
- 여러 지원자를 동시에 인터뷰하지 말것
인터뷰에 한 시간 정도의 시간은 충분히 할애할 것
- 인터뷰시 찾아야할 사람
똑똑하다, 업무를 성실하게 수행한다.
여러번 반복할 필요가 없으면 좋은 신호이다.
똑똑함은 ‘자질구레한 질문에 대한 답을 안다’가 아님을 명심하십시오. - 해야할 질문
첫인사
최근 프로젝트 경력에 대한 질문
답변 불가능한 질문
프로그래밍 문제
만족합니까?
질문 있습니까? - 불접적인 질문
인종
종교
성별
고국
나이
군복무 자격
제대 구분
성 정체성
신체적 장애
운용비용 절감만이 목표가 되어선 안된다.
운용절차 없이 운용해서는 안된다!
- 감시절차
- 온라인 동작 절차
- 백업 절차
등등등
작업 플로우는 유지보수 그룹이 추가 검토한다.
절차서의 애매함이 운용 품질로 연결된다.
운용 규정을 운용 절차서에 포함시킨다.
우수한 테스트는 테스터로 일하려고 하지 않거든요.
- 테스팅 직을 기술지원 직보다 한 단계 높은 직급으로 정하십시오. 테스팅이 지겹기는 하지만, 성난 사용자를 전화로 상대하기보다는 낫습니다. 기술 지원 부분에서 빠져나가는 인력을 붙잡는 방법도 될 겁니다.
- 프로그래밍 강의 수강을 지원하는 등 자기 경력 개발을 도우십시오. 프로그래밍 도구나 스크립트 언어를 사용해 자동화된 테스트 프로그램을 개발하도록 격려하십시오. 같은 대화창을 반복해서 테스트하는 작업보다는 훨씬 흥미로울 겁니다.
- 최우수 테스터는 쉽게 잃을 수 있다는 사실을 인정하십이오.
- ‘구태의연하지 않는’ 테스터를 찾으십시오.
- 임시직을 고용하십시오.
테스터를 고용할 돈이 없으니까요.
- 가장 멍청하고 말이 안되는 이유 입니다.
개발자는 멀티 태스킹 기계가 아입니다.
- 과업 배분.
- 개발자가 결코 한번에 일을 두가지 이상 진행하게 방치해서는 안된다는 사실.
코드 쓰는 작업보다 읽는 작업이 더 어렵다
추상화는 아랫부분에서 일어나는 아주 복잡한 어떤 작용을 간소화 하는 방법입니다.
- 허술한 추상화
모든 쓸 만한 추상화에는 어딘가에 구멍이 존재합니다.
모순적이지만 이 모든 사실은 우리가 더 나은 추상화 기법으로 더 고차원적인 프로그래밍 도구를 만들 수록 능숙한 프로그래머가 되기가 점점 어려워짐을 의미합니다.
소프트웨어 제작과정에서 의존할 언어 클래스, API, 플랫폼 등에 대해 몇년간의 옹골진 경험이 있는 아키텍트를 한 명이라도 확보하지 못했다면 새로운 프로젝트를 시작하지 마십시오.
소프트웨어 비즈니스에 성공하려면 프로그래밍에 해박한 동시에 비즈니스도 이해하고 좋아하는 관리층이 있어야 한다.
말단에서라도 해내기
- 혼자라도 하십시오
- 입소문의 힘을 이용하십시오
- 우수한 인재를 모으십시오
- 고문관은 봉쇄해야 합니다
- 방해받지 않는 곳으로
- 꼭 필요한 인물이 되십시오
‘방법론을 조심하라’ 입니다. 쓸만한 수준으로 그저 그런 성능을 내는데 괜찮은 방법이 될 수 있지만, 동시에 유능한 인재를 쫓아낼 수 도 있습니다.
구현에 앞서 설계를 해야합니다.
- “설계를 필요 이상으로 하지마라”고 말할 뿐이며, 이는 충분히 일리가 있습니다.
NIH - Not Invented Here - 자산이 직접 개발하지 않은 기술에 대해 베타적인 성향을 보이는 행태
- 무슨일이 있어도, 핵심 비즈니스 기능은 직접 수행하라!
‘블로트웨어’란,
- 해커 용어사전에서는 ‘제공하는 기능에 비해 상대적으로 많은 디스크 공간과 메모리를 요구하는 소프트웨어. 특히 응용 프로그램과 OS 업그레이드 판에 많음, 윈도우 NT 세계에서는 흔한 용어임. 근거들은 널려있음’이라는 악의의 찬 정의를 내고 있습니다.
API란?
- 워드 프로세서 프로그램을 짠다고 가정해보면, 메뉴를 출력하거나 파일을 저장하기 위해서는 운영체제에거 요청을 보내야 합니다. 특정 함수를 호출해야 하는데, 함수 집합은 운영체제마다 다릅니다. 이런 함수 호출을 API라고 합니다. 다시 말하면, 윈도우와 같은 운영체제가 워드프로세스나 스프레드 시트 같은 응용 프로그램 개발자에게 제공하는 인터페이스 입니다. API 는 프로그래머가 쓸 수 있는, 수천 개에 이르는 상세하고도 까다로운 함수와 서브루틴 집합입니다.
메모리 관리가 좋은 이유?
- 자동화된 메모리가 관리가 생산성을 높이는 이유는 무엇일까요?
- 함수 g가 넘기는 반환값을 걱정하지 않고 f(g(x))를 짤 수 있기 때문입니다. 다시 말하면, 복잡한 추상 자료형을 반환하는 함수나 추상 자료형을 변환하는 함수를 편하게 쓸 수 있다는 뜻입니다. 그러면 개발자는 구현시 추상화 단계를 높일 수 있습니다.
- 메모리를 해제하는 코드를 안 짜도 되고, 메모리 누수를 찾는데 시간을 들일 필요가 없습니다.
- 메모리를 제대로 헤체하기 위해 함수 반환 시점을 까다롭게 써야할 필요가 없습니다.
경쟁사가 아니라, 고객에게 귀를 기울인다.
예측을 할 때 여유 기간은 어느 정도/몇 퍼센트나 둬야 하죠?
- 개발 도중에 생기는, 예상치 못한 추가 기능용 여유 기간
- 경쟁사가 한 일로 인한, 예상치 못한 경쟁적 대응용 여유 기간
- 여러 개발자가 작성한 코드를 통리는 데 걸리는 시간용 여유 기간
- 테스트 기간 동안에 버그를 찾고 고치는 시간용 여유 기간
- 개발과 관련 없는 업무용 버퍼
- 요측 보다 오래 걸리는 업무용 여유 기간
- 예측에서 빠트린 업무용 여유 기간
Duck Typing ( 덕 타이핑 )
- 오리처럼 걷고 소리내면 그건 분명 오리라고 결정한다. 즉, 오리가 아니더라도 오리의 행동을 하면 오리라고 하는것이다.
Stampit
- https://www.npmjs.com/package/stampit
- 재사용 가능하고, 구조화를 위한 객채 생성 npm package - stampit
좋은 질문
- 업무적으로 꼭 해야 하는 건 아니지만 당신이 도와주는 사람은 누구이고 또 당신이 도움을 요청하는 사람은 누구입니까?
더닝-크루거 효과
더닝 크루거 효과(Dunning–Kruger effect)는 인지 편향의 하나로, 능력이 없는 사람이 잘못된 판단을 내려 잘못된 결론에 도달하지만, 능력이 없기 때문에 자신의 실수를 알아차리지 못하는 현상을 가리킨다. 그로 인해 능력이 없는 사람은 환영적 우월감으로 자신의 실력을 실제보다 높게 평균 이상으로 평가하는 반면, 능력이 있는 사람은 자신의 실력을 과소 평가하여 환영적 열등감을 가지게 된다. 크루거와 더닝은 “능력이 없는 사람의 착오는 자신에 대한 오해에서 기인한 반면, 능력이 있는 사람의 착오는 다른 사람에 대한 오해에서 기인한다”고 결론을 내린다.
달인이 되는 비결
매일 세수하고 양치하듯이 꾸준하게 반복하는 것이 바로 그것입니다.
- 실력을 개선하려는 동기를 가지는 것
- 구체적인 피드백을 적절한 시기에 받는 것
MR ( Maintenance Release )
유지 보수 릴리스는 새로운 기능이나 컨텐츠를 추가하지 않는 제품 릴리스입니다. 예를 들어, 컴퓨터 소프트웨어에서 유지 관리 릴리스는 일반적으로 “버그”또는 보안 문제와 같은 사소한 문제를 해결하기위한 것입니다.
말그대로 Maintenance 라는게 유지보수 정비의 건, Smart Phone으로 치자면 이미 나와 있는 펌웨어에 추가적인 버그수정, 기존 마이너한 이슈 수정, 예를 들면 Bluetooth 기능개선 이런것들을 검증하는 차수라 볼 수 있는것
Controllership - 주로 회계업무담당
- AR(Account Recievable) : 매출채권회계
- AP(Account Payable) : 매입채무회계
- Treasury : 현금 및 현금성 자산
- Tax : 세무
- 기타 직원경비처리, 재고자산 및 고정자산관리 등
**최근 외국계기업의 경우 반복적인 회계업무는 Shared Service로 이관한다고 함(외주의미)
FP&A(Financial Planning & Analysis)
- Budgeting : 예산편성
- Profit analysis : 손익분석(마진, 손익계산서 등)
- Forecasting : 매출예상
https://blog.naver.com/PostView.naver?blogId=ispooh96&logNo=221871059411&parentCategoryNo=&categoryNo=31&viewDate=&isShowPopularPosts=true&from=search
**주로 계획과 분석업무 분야
BM ( Brand Manager )
하나의 제품이 만들어지는 과정이 있어요. 상품 개발을 하기 위해 기획을 하고… 상품 출시를 위한 총체적인 과정이요. 브랜드 매니저(이하 BM)는 그 모든 과정을 조율하면서, 무사히 상품 출시까지 이루어 내는 역할이라고 보시면 돼요.
최근 들어서 ‘책임감’이 강조되면서, 브랜드 매니저의 중요성은 점차 증가되고 있습니다. 브랜드매니저(Brand Manager)ms 줄여서 BM이라고도 불립니다. BM제도는 외국의 선진 기업들(예: P&G, 유니레버, 네슬레 등)에서는 오래 전부터 있어 왔던 것으로, 기능(function) 중심의 기능 단위 조직에서, 의사 결정의 효율성과 합리성, 그리고 신속성이 강조되는 토탈 마케팅(Total marketing) 조직으로의 변화 과정에서 나타난 새로운 존재라고 할 수 있습니다.
BM은 브랜드 관리자란 말 그대로, “담당하고 있는 브랜드를 관리하는 모든 활동을 책임지고 관리하는 사람”을 말하는데, 마케팅 지원 조직(Support Group - 리서치, R & D, 디자인, 영업)을 활용하여 해당 브랜드의 매출과 손익을 관리하고 브랜드 자산의 가치를 높이며, 모든 마케팅 전략 수립과 활동 (광고, 판촉, PR, 가격전략, 유통전략 등)을 수행하며, 동시에 개발 및 생산과 판매를 조율하는 총체적인 역할을 합니다. 이에 브랜드 매니저는 역할과 권한이 큰 만큼 책임 또한 크다고 하겠습니다.
참고 - https://blog.daum.net/kevinchae/9943597
컨소시엄 (consortium)
연합체 (聯合體), 혹은 컨소시엄(consortium)은 2가지 이상의 개인 또는 회사, 단체, 정부의 협동체(협회)로 공통의 활동에 참여하는 목적을 지니며 공통의 목적을 달성하기 위해 그들의 자원을 투입한다. 컨소시엄의 영어 낱말 ‘consortium’은 라틴어로 동반자 관계와 협력, 동지를 의미한다. 보통 이 단어는 특정 작업을 수행하기 위해 사업가나 회사들이 만든 일(임)시적인 사업 조직을 말한다. 예를 들면, 큰 자본이 주어지면 은행의 컨소시엄은 대여를 하게 된다. 이것은 기업 연합 자본으로 알려져 있다. 더 영구적인 결합은 보통 인스티튜트(대학 또는 연구소)라 불린다. 또한 항공사끼리 뭉치는 조직은 연합체로 구성되어 있으며 대표적으로는 원월드, 스카이팀, 스타 얼라이언스 등과 같은 항공 동맹이 별도로 존재한다.