Ось і закінчилася моя відпустка, завтра на роботу. Варто зазначити, що в мене професійний ювілей - 10 років тому я завів собі трудову книжку і почав педагогічну діяльність в рідній школі: будучи студентом старших курсів, хотів мати собі трохи додаткових грошей в кишені на проїзд і на пообідати.

Десять років тому я вперше опинився "по ту сторону вчительського стола" - не як практикант. З моїми першими учнями мені пощастило - працювати було нормально. Далі були і баламути, так. Один із класів - класного керівника, яка випускала і мене, з ними було взагалі найкраще. Варто сказати - мені з ними було цікаво. Потім, по закінченню університету, я пішов зі школи працювати вище.

Треба, напевне, на перше вересня викотити колегам пляшечку Поліської білочки після роботи.

Цей допис стане в нагоді тим, хто має нещастя працювати з Єдиною державною електронною базою освіти, або ЄДЕБО. Сьогодні (неділя), до мене телефонують із навчального відділення і кажуть, що ця поробка видала всю інформацію про студентів у семи XML файлах - по кількості випускних груп, а підприємство, що друкує додатки, хоче один.

Спочатку я хотів вирішити питання нахрапом - в текстовому редакторі, але XML-файли виявилися не розбитими на рядки і працювати з ними нормально неможливо. Тоді я спробував встановити щось із безкоштовного для редагування XML, проте воно не захотіло копіювати фрагменти з одного документу в інший. Врешті, я знайшов просту утиліту mergex, що в командному рядку одним пуком все зробила:

mergex.exe *.xml -ograduates.xml

Так! Я його встановив! Ніщо так не не впиралося встановленню, як Open edX. Коли я тільки затіяв цю справу, то думав, що прочитаю інструкцію, встановлю необхідні залежності і встановлю саму систему — наприклад, на свій ноутбук, або на комп'ютер, де вже стоїть Moodle — місця тут достатньо.

Із використанням вже готового образу в мене нічого не вийшло, взявся я за самостійне встановлення. Інструкція написана для Ubuntu 12.04 x64, але це вже застаріла система, думав я, починаючи виконувати її на Debian Jessie — ніби близькі родичі з Ubuntu.

Open edX Studio

Система дистанційного навчання Moodle встановлюється досить просто — як звичайна CMS. Звісно, в неї є певні вимоги до хостингу, але це легко вирішується додатковим встановленням модулів для php, дописуванням фрагментів конфігурації в php.ini та nginx.conf із офіційної документації. Система популярна, документації та статей повно, у тому числі й перекладених українською. Але колеги вже скаржаться, що всередині керування зроблено дуже не очевидно і через жопу. Можливо, це справа звикання, але я вирішив вживу спробувати інші системи дистанційного навчання, щоб порівняти. Ну, можна було-б встановити якісь ATutor чи eFront — ті іще легші за Moodle, але я не шукаю легких шляхів — я вирішив спробувати Open edX.

А тепер, коли ви звернули увагу на цей жовтий заголовок, скажу вам, що скандалів та інтриг в мене немає, є лише розслідування. Я хотів вияснити, якого дідька періодично гальмує веб-сервер.

Все почалося з того, що я обрав собі тему роботи, пов'язану із дистанційною освітою. Директор теж цим зібрався зайнятися, а тому дуже швидко в господарстві знайшовся вільний системник на сервер, куди я втулив Debian Jessie, поставив і налаштував nginx та запустив Moodle. Апаратне забезпечення не свіже - Pentium 4 на 3ГГц і два логічних ядра + 2 ГБ мізків - але для нас має вистачити з головою. І тут перша неприємність - я виявив, що сайт часом дико гальмує.

Я подумав, що щось напартачив, накидавши у конфігурацію nginx фрагментів з офіційної документації Moodle. Проте під час гальмування сайту часто вивалювався сеанс ssh - там я напартачити не міг, бо openssh server працює без налаштувань. Запущений локально htop не показував якихось перевантажень. Тоді закралися підозри на мережу - вона у нас гуано. Найдешевші світчі та роутери, купа приносних ноутів на DHCP та студентські планшети і телефони. На модернізацію зараз розраховувати не варто, криза, добре, що зарплатня вчасно.

Мережа виявилася ні при чому, коли колега під'єднав ноута напряму до сервера і виявив ті-ж проблеми. Тоді я розшукав замітку для господарки і вирішив потрасувати виконання PHP-скриптів. Для аналізу логів, навіть, накарлякав скрипт на Пайтоні (Нікіта Павлюченко не дарма старався з курсами) і не виявив там ніяких проблем - жоден із системних викликів не займав багато часу, один раз зафіксовано 0,1 секунди, все інше - тисячні і десятитисячні долі секунди (epoll_wait не рахую, він по секунді в режимі очікування).

Добрі люди напоумили полізти в системний лог - чому я не поліз туди раніше. Там цікаво - там повно повідомлень наступного змісту:

[27918.036268] r8169 0000:02:00.0 eth0: link up

Тобто, link up має бути один раз при увімкненні комп'ютера, а тут постійно - у всякому разі, на своєму ноутбуці я такого не бачив в логах. Отже два варіанти - або штатні драйвери на мережеву картку погані, або сама мережева картка погана. Замінити я зможу аж у середу, бо у вівторок на роботі мене немає, а от з драйверами вирішив спробувати прямо зараз. Відчуваєте негаразд? Результат під катом.

Півтора місяці тому я писав про курси Prometheus, де я взявся вивчати мову сценаріїв Python і що я там такий успішний. Так ось, в цю суботу було опубліковане останнє, екзаменаційне завдання і я його виконав, тепер чекаю на генерацію електронного сертифікату — наскільки я зрозумів, то буде посилання, за яким красивими літерами буде написано про те, що я такий молодець.

До останнього завдання відсіялися люди, які не вміють читати і шукати інформацію самостійно. Самі курси, за враженнями учасників, схожі до інструкції "Як намалювати сову?". Крок перший — малюємо два кола, крок другий — малюємо решту сови. В тім, є форум, де можна було задавати свої ламерські запитання і бути посланим на гугл. Бувало, що і по справі підказували.

Ах так, мало не забув — курс програмування на Prometheus нікуди не дівається, а залишається доступним для тих, хто вирішить опанувати його пізніше.

Так ось, екзаменаційне завдання стосувалося проходження лабіринту роботом. План і розміри невідомі, десь там лежить артефакт — перстень Цзунь-Си, що можна знайти. Тестовий лабіринт може бути як і простий, так і багатозв'язний і, навіть, з коридорами, ширшими за одну клітинку. Робот вміє повертатися і наосліп їхати вперед, стикаючись з перешкодами.

Моя програма вийшла:

  • Рекурсивною. Більше того, в кожному виклику копія робота тиражується в чотири екземпляри, кожен з яких посилається вперед, назад, вліво та вправо. Можна було-б назад не роботи, адже ми звідти прийшли, проте в одному із тестових прикладів робот стартує мордою в стінку.
  • Я в курсі, що можна написати без рекурсії.
  • Щоб обмежити рекурсію, робот запам'ятовує відносні координати всіх відвіданих точок і більше в них не сунеться жодною із своїх копій.
  • Для тестування свого коду, я мусив візуалізувати лабіринт, що очевидно.
  • В Python незвична для мене політика областей видимості, а я до цього програмував на Pascal, то-ж мені не вдалося повернути копію робота, яка знайшла артефакт, в первинну точку виклику. Тому я приробив милицю у вигляді запису правильних ходів і потім, за допомогою простого циклу, відтворюю всі ходи над оригінальною копією робота, що передається в мою підпрограму у вигляді об'єкта.
  • Ну а раз у мене є запис ходів, плюс наявні засоби візуалізації, тому можна запросто показати правильний шлях у вигляді анімації. Зазначу, що шлях не найкоротший.
Анімація робота

А під катом мій бидлокод. Точніше, перша частина — викладача курсів, як задана умова, а вже далі — мій розв'язок.

Взявся я за допомогою Python вирішувати якісь практичні задачі. Зокрема, вирішив замінити невеличкий bash-скрипт, написаний моїм товаришем три роки тому, за допомогою якого я формую HTML-код для блогу із порожніми абзацами та фотографіями із поточної теки, куди залишається просто вписати текст. Код маленький, має такий вигляд:

Тобто, цей код зчитує всі файли із вказаним в ньому розширенням із поточної директорії і для кожного файлу формує рядок із HTML-кодом. Варто зазначити, що скрипт строго заточений під мої потреби, тому вам навряд чи згодиться. Він прекрасно працює, проте мене не у всьому задовольняє. А раз я взявся за Python так чому-б не наваяти щось своє — з блекджеком та шльондрами. І я наваяв.

Раз я взявся їсти дітей займатися мовою програмування Python, а інтенсивність занять на Прометеусі для мене замала, значить, треба знайти якусь гарну книжку і спробувати повчитися самостійно. Ще краще було-б фінансово підтримати видавництво та книжкових бариг автора, чесно придбавши дану книгу.

Але не поспішайте. Спірачена книжка зекономить ваші кошти не тому, що ви безкоштовно нею користуєтеся, а тому, що ви взагалі відмовитеся її читати до того, як витратите на неї гроші. Власне, я про це вже писав, але сьогодні зіткнувся знову.

Отже, за рекомендаціями, я спрямував свій погляд на книгу Марка Лутца, як на кращу книгу про Python. Паперовий варіант четвертого видання російською мовою коштує 1233 гривні, електронний англомовний варіант другого видання на Гугл Макулатурі коштує 149 гривень 27 копійок.

Відкриваю я тирену копію і починаю гортати. З 6 по 17 сторінку "Про автора" (всього сторінок 1280), 17-39 — передмова, 39-77 сторінки — уведення, де розповідається, що таке мова Python, чому вона така гарна, що її використовують в Google, NASA, Intel та інші великі організації. Аж із 77 сторінки автор згадав, що він пише книгу про програмування на Python і взявся розповідати про середовище інтерпретатора Python, про те, як у ньому запускати програми різними способами. Аж до 119 сторінки, де автор згадав, що книга називається "Вивчаємо Python" і почав писати безпосередньо про мову програмування Python — частина ІІ книги присвячена типам даних, включно з динамічною типізацією — аж до 321 сторінки, де отримані знання можна, нарешті, реалізувати у написанні програм, бо в тільки в частині ІІІ автор пожалів читача і написав про інструкції та синтаксис.

Можна скачати книгу Гвідо Россумського, який є автором мови Python, і, здається, ця книга, навіть, безкоштовна. Більше того — вона втричі менші за обсягом, а суть починається вже на 19-й сторінці — враховуючи, що зміст книги знаходиться на початку і замає вісім сторінок, то з 11-ї. Проте вона видана іще 2001 року і є застарілою. Так що шукаю щось сучасне і змістовне.

Як я сам користуюся вільним програмним забезпеченням — все гаразд, все працює, все задовольняє. Як тільки хочу показати комусь, чи, тим більше, даю спробувати — відразу вилазить купа збоїв та недоробок і думаєш — навіщо ти їм показав той глючний Лінукс?

У нас на соціальній педагогіці, на заочному, навчаються священники — при чому, цього року на першому курсі аж цілий митрополит з ними. Група досить активна, цікавиться навчанням, в тому числі і інформаційними технологіями — з ними найкраще працювати із усіх заочників. Ось, на тижні, в мене було з ними дві пари — на першу я їм видав практичне завдання, а, поки вони його робили, дістав із сумки ноутбука, підключив до проектора і думав, коли залишиться час, познайомити їх, як недорого дотримуватися заповіді "Не вкради". Та-й Linux сумісний із бородою. Але тут почалися сюрпризи — і, мимоволі, пригадував байки з інтернету про те, що Linux — це сатанинська система, бо там chmod 666, дітовбивство та демони, а Windows — православна, бо там служби та іконки.

По перше, при підключенні проектора до VGA ноутбука, система починала безбожно гальмувати. Можна, в принципі, через HDMI, проте проектор висить під стелею, а подовжувача на цей інтерфейс у мене немає. Спробував перемкнутися із дискретної на вбудовану відеокартку, після перезавантаження взагалі лишився без графіки. Зніс заводські драйвери на Radeon, запустилися вільні, чи то MESA — навіть і не глянув. Проектор усе одно призводить до гальмування. Підключив монітор із викладацького комп'ютера — не гальмує, проте система не бажає виставляти на нього роздільну здатність 1366х768, як у ноутбучного екрана, хоча під Windows він на такій роздільній здатності працює. А при різних роздільних здатностях інтерфейс KDE не масштабується — не зручно показувати.

Інтернету не було, колега в своїй аудиторії вимкнула рубильник, а з ним і світч, йти вмикати не хотілося. Якось заставив я його показувати на два екрани з однією роздільною здатністю, поки батюшки робили практичну роботу.

Треба, якось, спробувати попідключати до ноутбука через різні інтерфейси свій настільний монітор — але щось мені здається, що там усе гладко запрацює — бо, по перше, це вдома, а, по друге, монітор і ноутбук від Dell. Я от подумав, може собі бороду відростити. І, так, на фото зліва — не священник.

Не перемикайтеся.

Сьогодні у бібліотеці Сухомлинського бачив ось таку книжечку:

Антикварна книжка

Назва приблизно перекладається як "Філософія Сенеки у викладі та з коментарями Юста Ліпсія", видання друге, 1615 року — 400 років томику скоро. Обсяг приблизно 500 сторінок (їх не пронумеровано), товщина на всі тисячу — папір то там товстіший, ще-й обкладинка з телячої шкіри. Текст латинською мовою.

Сторінки