Naraeon SSD Tools internals – 7. Get diagnostic information(SMART) from SATA devices

Necessity I think this part doesn’t need any further explanation about necessity. Because this part is the reason of existence of disk management tool. With this, we can manage devices’ status, and catches subtle failures that can be easily ignored by users, to prevent big failure. S.M.A.R.T: Self-Monitoring, Analysis, and Reporting Technology As the name […]

Naraeon SSD Tools internals – 6. Identify SATA devices

Necessity Last time, I introduced ATAPI command standard, ACS-3. I said about some definitions and introduced how we can issue a command to SATA devices. In this time, we would see implementation to issue identify device command in Naraeon SSD Tools. Identify (Identify device) In fourth, I said about Identify command like this. BIOS and device […]

Naraeon SSD Tools internals – 5. Introduction to SATA commands

Necessity Though NVMe devices are now widely spread, SATA devices are majority. Most of the SSDs connected with PC using SATA interface, and definitely HDDs do. To get information about them, knowledge about their language, ACS(ATA Command Set) is mandatory. Naraeon SSD Tools implemented based on SATA, and results from other devices converted to SATA […]

Naraeon SSD Tools internals – 4. Command set and Interpreting buffer

Necessity I think reason for visiting my blog is in this. Function that includes all features other than Read, Write, Open, Close, ioctl. Called DeviceIoControl in winapi. In undergraduate course, there would be only introduction about this function. I also firstly had no idea about where to find information to use ioctls. So I would write about […]

Naraeon SSD Tools internals – 3. Physical drive abstraction

Necessity Physical drives have various features. From these features, TPhysicalDrive abstracts some of them those are needed to Naraeon SSD Tools. Internally, the object just passes the request to right object. There are objects process these requests. Firstly, there is an object that issue adequate command to the bus directly(ATA, SCSI, NVMe, …).  And there is […]

Naraeon SSD Tools internals – 2. Objects pointing path

Necessity Naraeon SSD Tools has various objects those need path. From TPhysicalDrive as the name shows, a lot of Getter objects need the destination drive path. Other than that, some objects require path of a partition. In those cases, it is reasonable to memorize the path and use many times. Someone would think this is […]

Naraeon SSD Tools internals – 1. How to get PhysicalDrive list

Foreword In this series, I would write about internals of Naraeon SSD Tools. So people who implements some subset of this would get some help. This series includes things I asked about. If you have further questions, feel free to email me. But I would not get request about translating code snippet from Delphi to […]

리팩토링 대작전 – 3. 효용

상당히 귀찮은 작업이었지만 효용도 만만찮았다. 여기서는 리팩토링으로 얻어진 장점들을 논해보려 한다. 분석 편의성 일단 디버그/프로파일링 시에 필요한 분석이 매우 편해졌다. 무료 툴들의 경우는 으레 함수 단위로 분석을 해주는데, 이렇게 한 가지 일만 하게 되면 함수만 알려줘도 어떤 부분이 문제가 되는지 알 수 있기 때문이다. 또한 디버그의 경우에도 스택에 올라간 함수들 이름만 따서 줄글로 이으면 뭘 […]

리팩토링 대작전 – 2. 부수고 또 부수고

시작하자마자 부수고 또 부수었다. 기존 코드를 ‘한 가지만 하는’ 함수로 나누다 보니 객체가 자연스레 생겼다. 그 객체 수가 불어나며 그를 묶어낼 패키지도 자연스레 정의되었다. 이 시기 ‘델파이 프로그래밍 언어‘가 나의 친구였다. C 프로그래밍 언어를 읽어보면서, 각 언어의 레퍼런스로 창시자가 내놓은 일명 ‘XX 프로그래밍 언어’가 정말 좋음을 이 때 깨달았다. 그래서 산 책인데, 이를 통해 10년 […]

1% 개발, 99% 유지보수 – 5. 에필로그

그 후로 나는 군대에 당첨되었고, 그러고도 많은 일이 있었고, 남아있는 수많은 일을 뒤로 하고 국방의 의무를 수행하기 위해 떠났다. 어느새 나래온 툴은 처음의 앳된 모습에서 점점 자신을 꾸밀 줄 아는 모습으로 변해갔으며, 내가 만든 다른 유틸리티들의 든든한 토대가 되어 더티 테스트 툴의, 그리고 수명 테스트 툴이 뿌리를 박을 수 있도록 도와주었다. 오늘도 수많은 프로그램들이 그 […]