В школах, к сожалению,
этому не учат. В вузах да, учат, но между
делом — типа «курсовая/реферат/диплом
должны быть составлены так-то и так-то».
А ведь достаточно легко превратить
блогозаметку «я тут на грабли наступил,
гля пацаны, как я разобрался» во вполне
себе толковую работу, которую не стыдно
ни в журнал профильный направить, ни в
резюме упомянуть.
Пример первый — решение
проблемы нехватки inode-ов
в Linux (диск забит миллионами мелких
ненужных файлов). Статья выросла как
раз из блогозаметки.
Прочитал статью Необычное
переполнение жесткого диска или как
удалить миллионы файлов из одной папки и
очень удивился. Неужели в стандартном
инструментарии Linux нет простых средств
для работы с переполненными директориями
и необходимо прибегать к столь
низкоуровневым способам, как
вызов
getdents()
напрямую.
Для тех, кто не в курсе
проблемы, краткое описание: если вы
случайно создали в одной директории
огромное количество файлов без иерархии
- т.е. от 5 млн файлов, лежащих в одной
единственной директории, то быстро
удалить их не получится. Кроме того, не
все утилиты в linux могут это сделать в
принципе - либо будут сильно нагружать
процессор/HDD, либо займут очень много
памяти.
Так что я выделил
время, организовал тестовый полигон и
попробовал различные средства, как
предложенные в комментариях, так и
найденные в различных статьях и свои
собственные.
Своего рода, расстановка точек над i в вопросе удаления файлов из переполненной директории.
Своего рода, расстановка точек над i в вопросе удаления файлов из переполненной директории.
Пример второй — решение
задачи сортировки при нехватке оперативной
памяти (применение кодирования суть
сжатия).
In my previous post, I shared some
source code to sort
one million 8-digit numbers in 1MB of RAMas an answer to this
Stack Overflow question. The program works, but I didn’t
explain how, leaving it as a kind of puzzle for the reader.
I had promised to explain it in a
followup post, and in the meantime, there’s been a flurry of
discussion in the comments and on
Reddit. In particular, commenter Ben
Wilhelm (aka ZorbaTHut) already managed to explain most of
it (Nice work!), and by now, I think quite a few people already get
it. Nonetheless, I’ll write up another explanation as promised.
Комментариев нет:
Отправить комментарий