본문 바로가기

코드 장인16

[2부 코드의 비밀스러운 일생] Chapter12 불안전 콤플렉스 안전한 소프트웨어를 구축할 책임은 누구에게 있을까? 그 골칫덩어리는 우리의 것이다! 위험 도둑이 랩톱이나 PDA를 훔쳐서 보안이 안 된 민감한 데이터를 읽을 수 있다 결함이 있는 입력 루틴이 악용되면 많은 종류의 손상을 일으킬 수 있다 권한 상승이란 제한된 접근 권한을 가진 사용자가 시스템을 속여 보안 수준을 얻는 것 통신을 할 때, 데이터가 암호화되지 않은 상태로 불안전한 매체를 통과하면 도중에있는 모든 컴퓨터가 그 데이터를 빨아들여서 읽을 수 있다 보안이 코드 작성뿐만 아니라 시스템 관리와도 관련이 있다 조심성 없는 사용자가 쓸데없이 시스템을 열어두어서 공격 받기 쉬운 상태로 내버려둘 수 있다 시스템에 대한 접근 허용을 느슨하게 설정해 두면 사용자들이 시스템의 민감한 부분에 접근 할 수 있다 컴퓨터 .. 2017. 11. 15.
[2부 코드의 비밀스러운 일생] Chapter11 속도의 필요성 이 장의 내용 왜 효울적인 코드가 중요한가 효율적인 코드 설계하기 기존 코드의 성능 향상시키기 인생에는 속도를 높이는 것보다 더 중요한 일이 있습니다. - 마햐트마 간디 다른 어떤 이유보다 더 많은 컴퓨팅 죄악이 효율성이라는 이름으로 - 효율성을 성취하지도 못하면서 - 자행됩니다. 맹목적인 어리석음으로 인한 것보다 더 많습니다. - W. A. 울프 (유명한 컴퓨터 과학자) 최적화는 소프트웨어 개발을 위협하는 망령이다!! 최적화는 낡아빠진 주제라서 이미 모든 사람들이 그에 대한 의견을 내놓았고, 똑같은 충고가 재삼재사 거론되어 왔다. 그럼에도 불구하고 아직도 많은 코드들이 현명하게 개발되지 못하고 있다 효율성, 성능, 필요하지 않은 최적화 등을 하고 있다. 최적화란 무엇인가? 최적화 순수한 의미는 개선을 .. 2017. 11. 14.
[2부 코드의 비밀스러운 일생] Chapter10 잭이 빌드한 코드 빌드: 고급 언어 프로그램을 배포 가능한 실행 파일로 변환하는 작업 우리는 C컴파일러에 어떤 옵션이 넘겨지는지 모른다거나, 오브젝트 파일에 어떤 수준의 설비가 남겨지는지 모른다며느 당신은 그 빌드 시스템에 대해 진정한 통제권을 가지고 있다고 할 수 없다! 언어 장벽 세 개의 주요한 메커니즘 인터프리트 언어, 컴파일 언어, 바이트 컴파일 언어 인터프리트 언어 특정한 빌드 국면을 거칠 필요가 없다 Perl, Python, JavaScript 장점은 개발 속도 프리컴파일: 소스파일을 실행하기 전에 빌드 JIT(Just-in-Time)컴파일: 함수 각각을 실행에 임박했을 때 컴파일하는 방법 스크립트 언어도 포함 컴파일 언어 개별적인 소스 파일 가각이 중간 오브젝트 파일로 컴파일되고, 그 다음에 오브젝트 파일들이.. 2017. 11. 12.
[2부 코드의 비밀스러운 일생] Chapter9 결함 찾기 인생의 진실 대부분의 버그는 부주의로 일어난다. 많은 부주의한 실수들은 잡아낼 수 있는 것이고, 예방까지 할 수 있는 것 방어적 프로그래밍과 지각 있는 테스트가 우리의 주된 무기 버그의 본성 버그가 어떻게 태어나고 생존하고 박멸 될 수 있는지 알아두는 것은 가치 있는 일이다 컴파일 실패 최고의 에러 감지하기가 가장 쉽고, 고치기도 가장 쉽기 때문이다. 가장 직접적이고, 가장 분명하다 런타임 붕괴 에러가 컴파일 에러처럼 눈부시게 분명히 보이기 때문이다 예기치 못한 동작 여러 시간 전에 실행되었던 코드 내부의 사소한 로직 때문 지상에서의 관점 문법에러 컴파일러의 경고 스위치를 모두 켜놓고 빌드하자 빌드에러 프로젝트를 대청소한 다음에 아무 것도 없는 상태에서 다시 빌드하자 큰 타격을 입을 기회가 생기기 전에 .. 2017. 11. 10.