2012-07-30

"Изкувство проффесианального програмирования"

была такая шутка, якобы кусок кода венды, в котором каждая вторая строка имела вид типа while(do_nothing()){ sleep(100) };

так вот, такой стиль написания кода существует.
и применяется ушлепками из canonical.

расследования надоедливой проблемы с двухминутным ожиданием подключения сети вывело на файлик /etc/init/failsafe.conf, который на половину состоит из sleep!

 

cat /etc/init/failsafe.conf | grep -v '^[ ]*(#.*)?$'                                                                                                          <1194]14:02:43 description "Failsafe Boot Delay" author "Clint Byrum " start on filesystem and net-device-up IFACE=lo stop on static-network-up or starting rc-sysinit emits failsafe-boot console output script         # Determine if plymouth is available         if [ -x /bin/plymouth ] && /bin/plymouth --ping ; then                 PLYMOUTH=/bin/plymouth         else                 PLYMOUTH=":"         fi         sleep 20         $PLYMOUTH message --text="Waiting for network configuration..." || :         sleep 40         $PLYMOUTH message --text="Waiting up to 60 more seconds for network configuration..." || :         sleep 59         $PLYMOUTH message --text="Booting system without full network configuration..." || :         sleep 1     exec initctl emit --no-wait failsafe-boot end script post-start exec logger -t 'failsafe' -p daemon.warning "Failsafe of 120 seconds reached."


просто и не заморачиваясь. делаем несколько раз слип. и или появляется сеть, или скипаем этот скрипт.
это гениально.

1 коментар:

Анонім сказав...

Что странно, до появления сообщения типа "Booting without network configuration" все сетевые сервисы работают, шлюз пропускает пакеты, pptp поднимается - всеобщее счастье втечение 5-10 секунд - после задержка в почти 2 минуты, пока светиться сия надпись, и вновь всё работает, как надпись исчезает.