В квітні 2017 року я запустив один зі своїх проектів – сайт для позитивного розвитку «Плетиво». Хостер zzz.com.ua гостинно надав 1 Gb дискового простору, PHP, MySQL та можливість встановлення CMS. Майже три роки zzz.com.ua безкоштовно і стабільно утримував мій сайт. Одного разу я звернувся за технічною підтримкою і оперативно її отримав. Хочу щиро подякувати zzz.com.ua за ці три роки підтримки.
Але життя продовжується, 30 березня 2020 року отримав від них такого листа:
--- 20 апреля 2020 года срок действия Вашего FREE хостинг-аккаунта истекает на хостинге ZZZ.COM.UA, после чего все Ваши страницы будут заблокированы, а затем удалены. Чтобы избежать этого, пожалуйста, обновите Ваш план до PRO в нашей панели хостинга всего за 499.90 грн/год. ---
Закривати проект не хотілось, бо вже багато чого зроблено і багато чого хочеться ще зробити. А грошей трохи шкода, бо якщо зібрати оплату за всі проекти, що я власним коштом утримую, то набирається трохи сума.
І тут приємним чином згадалося, що сайт «Плетиво» побудований на Joomla, тобто відомій сучасній CMS. І це дозволяє легко і просто перевезти увесь сайт з одного хостингу на інший. Залишилось знайти надійного недорогого хостера і спробувати.
Алгоритм переїзду простий:
Всі файли і база даних зі старого хостингу копіюються до себе на комп'ютер
Зі свого комп'ютера на новий хостинг переписуються файли та імпортується база даних.
В одному конфігураційному файлі переписується пару рядків.
У реєстратора домена вказуються нові ns-сервери.
Я перевів «Плетиво» на новий хостинг за кілька годин, при тому, що трохи помилився і звертався за допомогою до технічної підтримки нового хостера.
Вважаю, що дуже важливо мати можливість переїзду сайту зі збереженням всіх матеріалів.
«Плетиво» - невеликий особистий проект, а якщо сайт складається з кількасот новин, файлів, світлин. Коли архів загубити ніяк не хочеться. Використання відомих CMS дає можливість простого перенесення сайту, а це достатньо серйозний аргумент для проектів, яким планується довге життя.
Отже, сайт «Плетиво» змінив домівку. Ідеальним алгоритмом – просто і непомітно.
Каратин 2020 року. Березень, про який потім, хто доживе, напишуть багато публіцистики. Ну а у нас не вистачає масок. Або вони відсутні, або вони неймовірно дорогі. 17 березня, коли я пишу цей матеріал, епідемія поки що виглядає не дуже лячно, якщо не читати математичні викладки про експоненти.
Інфекціоністи пишуть, що захисні маски від вірусу не врятують. Олексій Давиденко на Цензорі пише, що мембранних масок в України немає, а ті що є — неефективні. Пишуть, що маски вірус не зупинять, а вони лише можуть обмежити попадання на людину слини з вірусом від носія цього самого вірусу. І краще, щоб маску надягав сам хворий, а не налякані здорові. Але реальність така, що саме здорові все більше вдягають маски для хоч незначного, але захисту від крапель чужої слини. Всі розуміють, що без потреби нема чого виходити з оселі. Мова про тих, хто від всієї родини, наприклад, ходить за продуктами. Мова про цих, скажемо так, "кур'єрів", або "сталкерів", якщо по Стругацьких.
Мабуть всі вже бачили, як зробити маску з паперового рушника, резинок і степлера. Але маска виходить невеличка і не дуже зручна.
Можна маску зробити з мокрих серветок, цей алгоритм також відомий і легко знаходиться в YouTube.
Я ж сьогодні знайшов ще один матеріал для виробництва маски… в будівельному магазині.
Є дві плівки, що продаються в рулонах в будівельних магазинах – паробар’єр і гідробар’єр.
Паробар'єр — це плівка, щільне полотно, що не пропускає ні пар, ні повітря, ні воду. Таку плівку застосовують при утепленні дахів.
Гідробар'єр відрізняється спеціальним будовою поліетиленової плівки — в ній є мікроотвори, які необхідні для відводу пара. Матеріал не пропускає вологу зовні, захищаючи покрівлю від дощу і снігу, але забезпечує вільний вихід пари.
Такі плівки продаються, нагадаю, в будівельних магазинах. Вони різної щільності. Я для проби купив два різних матеріали, провів експерименти і виготовив пару масок.
Краплю води обидва матеріали не пропускали:
Це чудово! А ось якщо на них 70% спиртовим антисептиком дуже сильно бризкати, промокли.
Якщо чесно, то я не дуже зрозумів, це взагалі у мене — гідробар’єр чи паробар’єр. Але через те, що маски – дефіцит, а може бути треба найближчим часом, то вирізаємо маску. Розмір офіційної маски - 175×95 мм, але ми можемо ці розміри змінити, у нас же багато матеріалу і він не дорогий. 1 квадратний метр більш дорогої плівки коштує 14 гривень, менш щільної – 10 грн. За квадратний метр!
Наступним кроком закріплюємо шнурки. Я знайшов прищепки металеві і шнурки 70 см довжини. Як раз один шнурок іде на маску.
Я не інфекціоніст, я не можу порівнювати офіційні маски і мої, саморобні. Але якщо хтось поряд чихне, то, сподіваюсь, частини його слини ця саморобна маска затримає. Можливо, когось така саморобна штука як раз і виручить. До речі, дарую концепцію — "Що дарувати дівчатам у березні 2020 року!" :) Дурдом, звичайно, але як вже є :)
Ну і фото-фінал гуртка «Маски, шнурки, карантин»:
При наявності степлера маску можна зробити легшою і гарнішою. Мої розміри: маска 18.5 х 10 см, довжина шнурків - 25-26 см. Скоби ставимо так, щоб не дряпати обличчя.
А якщо руки правильно ростуть, і є бажання, то можна з того самого матеріалу пошити дійсно гарні маски, ось:
В звичайній масці можна дихати через матеріал маски, при цьому маска більш-менш герметично прилягає до обличчя. Через вологу серветку можна також дихати, навіть коли вона складена учетверо. Через той матеріал, з яким я експерементував, дихати не вийде, тому маска з такого матеріалу - то певний бар'єр від попадання слини. А дихати можна лише завдяки нещильному приляганню до обличчя. Звичайно, це не маска з мембраною або респіратор класу FFP3. Ще раз хочу порадити прочитати статтю Олексія Давиденко. Хто не в курсі - це власник "Медтехніки". Цитата звідти: "...надягаючи маску люди виходять в громадські місця, магазини, зупинки, лікарні і вважають, що захищені, а насправді — ні. Захисні маски респіраторного типу допоможуть краще, але якщо ви утримайтеся від відвідування публічних місць і будете постійно дезінфікувати і захищати руки - це буде значно краще і ефективніше".
Якщо треба – Ця електронна адреса захищена від спам-ботів. Вам необхідно увімкнути JavaScript, щоб побачити її.
Програмісту Петрику напередодні 8 березня наснився Григорій Сковорода і сказав: «Петре, все до копійки – на троянди для дівчат!». Хлопець дуже здивувався, хоч і не зрозумів філософа. А ще більше він здивувався, коли зранку на вулиці знайшов 500 гривен. Розгорнувши знахідку, він побачив портрет того самого Сковороди і зрозумів, що треба вже купити ті троянди і роздати дівчатам, бо тут якась містика.
Петрик почав гуглити, по скільки троянд треба оптимально дарувати дівчатам. Він швидко дізнався, що за парну кількість троянд в букеті прекрасне створіння може кинути каменюкою. Бувалі програмісти радили дарувати дівчатам якомога меншу непарну кількість троянд згідно алгоритму «навіщо радувати одну дівчину трьома трояндами, якщо трьома трояндами можна порадувати цілих три дівчини». Петрик довіряв класичним прикладним алгоритмам, бо чим більше дівчат, тим краще. І невідомо, що, як і з ким складеться в майбутньому життя. А ще Петрик нагуглив, що цього року страшно модними серед дівчат є білі троянди. І що дівчина, яка отримає саме білу троянду, скоріше за все страшенно зрадіє і навіть поцілує хлопця. Петрик з піднесеним настроєм і знайденими гривнями підійшов до великого магазину квітів і побачив цінник:
Як казав Петрику Григорій Сковорода, треба купити троянди на всі 500 гривень, без решти. Шановні дорослі програмісти, допоможіть, будь-ласка, Петрику. Підкажіть, скільки йому яких троянд купити, щоб і дівчат порадувати і, головне, побільше націлуватися…
В 2020 році обласна олімпіада Житомирської області проходила під прапором змін. Змінився університет проведення — аудиторії Житомирського Державного Університету змінили аудиторії університету «Житомирська Політехніка». Змінилась платформа проведення — цього року це був не e-olymp.com, розроблений в ЖДУ, змагання проводились на платформі Ejudge, яку дуже швидко розгорнули і настроїли. Змінилось і журі олімпіади.
Приємно, що не змінився гарний дух змагання. Ті самі лідери-програмісти так само показали шикарні результати. Топ-список найкращих вчителів з програмування залишився практично таким самим. Технічно і організаційно ні у мене ні у моїх учнів претензій не було, як все добре працювало всі попередні роки, так все добре працювало і цього року. В сюжеті «Суспільного телебачення» можна побачити учасників, аудиторії, організаторів:
Пропоную розглянути гарний, як на мене, розв’язок однієї з задач. Це найпростіша задача, організатори, мабуть, вирішили таким чином підняти дух всіх учасників. Задачу розв’язали майже всі учні, отже немає чого мені хвалитися, питання лише стильності розв’язку.
Задано послідовність символів, розділених пробілами. Кожний символ послідовності представляє собою велику або маленьку літеру латинського алфавіту або цифру від 0 до 9.
Знайдіть суму цифр, які входять до цієї послідовності. Кількість символів, які входять до послідовності – не більше 10 000.
Вхідні дані.
Послідовність символів, розділених пробілами.
Вихідні дані.
Сума цифр, які входять до послідовності або значення 0, якщо у послідовності немає цифр.
Ліміт часу 1 секунда
Ліміт використання пам'яті 64 MiB
Вхідні дані #1
A 1 2 B C D A B C 1 9 B 3
Вихідні дані #1
16
Вхідні дані #2
A B C
Вихідні дані #2
0
В Python існує величезна купа зручних інструментів, знання яких значно спрощує життя програмісту. Звичайно, Python-програмісти, що працюють з текстом, знають, що для розв’язку можна не порівнювати кожний по циклу вирізаний символ на предмет відповідності його числу, а скористатися функцією isdigit(), що відповідає на запитання «Чи складається рядок з цифр».
Відповідно, використавши цю функцію, задача здається в один рядок:
print(sum([int(x) for x in input().split() if x.isdigit()]))
Хочу звернути увагу програмістів-початківців на величезну купу вже існуючих в Python функцій для роботи з текстом:
Таблиця: «Функції і методи рядків»
x = 'Микола'
y = 'Оленка'
Функція чи метод
Призначення
Приклад
Результат
result = x + y
Конкатенація (склеювання рядків)
result = x + y
'МиколаОленка'
result = x * 3
Повтор рядка
result = x * 2
'МиколаМикола'
result = x[i]
Звернення по індексу
result = x[0]
'М'
result = x[[start]:[end]:[step]]
Отримання зрізу
result = x[1:3]
'ик'
result = len(x)
Визначення довжини рядка
result = len(x)
6
x.lstrip([chars])
Видалення символів пропуску (або символів chars) на початку рядка
' Коля'.lstrip()
'Коля'
x.rstrip([chars])
Видалення символів пропуску (або символів chars) в кінці рядка
'Коля '.lstrip()
'Коля'
x.strip([chars])
Видалення символів пропуску (або символів chars) на початку і в кінці рядка
' Коля '.lstrip()
'Коля'
x.find(str, [start],[end])
Пошук підрядка в рядку. Повертає номер першого входження або -1
result = x.find('я')
-1
x.rfind(str, [start],[end])
Пошук підрядка в рядку. Повертає номер останнього входження або -1
result = x.find('л')
4
x.replace(шаблон, заміна)
Заміна шаблону
result = x.replace('икол', 'урк')
'Мурка'
x.isdigit()
Чи складається рядок з цифр
result = x.isdigit()
False
x.isalpha()
Чи складається рядок з букв
result = x.isalpha()
True
x.isalnum()
Чи складається рядок з букв або цифр
result = x.isalnum()
True
x.islower()
Чи складається рядок виключно з символів в нижньому регістрі
result = x.islower()
False
x.isupper()
Чи складається рядок виключно з символів в верхньому регістрі
result = x.isupper()
False
x.isspace()
Чи включає рядок символи, що не відображаються (пробіл, символи '\f' '\n' '\r' '\t '\v')
result = x.isspace()
False
x.istitle()
Чи починаються слова в рядку з великої літери (навіть якщо їх декілька)
result = x.istitle()
True
x.upper()
Перетворення рядка до верхнього регістру
result = x.upper()
'СТЕПАН'
x.lower()
Перетворення рядка до нижнього регістру
result = x.lower()
'степан'
x.startswith(шаблон)
Чи починається рядок з шаблону
result = x.startswith('Ст')
True
x.endswith(шаблон)
Чи закінчюється рядок шаблоном
result = x.endswith('ан')
True
z.join(список)
Збирання рядка зі списку з розділювачем z
result = '+'.join(x)
'С+т+е+п+а+н'
ord(символ)
Символ в його код Unicode
ord('Я')
1071
chr(число)
Код Unicode в символ
chr(1071)
'Я'
x.capitalize()
Переводить перший символ рядка в верхній регістр, а всі інші в нижній
result = 'вАсЯ'.capitalize()
'Вася'
x.center(width, [fill])
Повертає відцентрований рядок, по краях якого стоїть символ fill (пробіл за замовчуванням)
'Оленка'.center(10, '+')
'++Оленка++'
x.ljust(width, [fill])
Повертає рядок, довжиною не меншою width, в разі потреби заповнюючи останні символи символом fill (пробіл за замовчуванням)
'Оленка'.ljust(10, '+')
'Оленка++++'
x.rjust(width, [fill])
Повертає рядок, довжиною не меншою width, в разі потреби заповнюючи перші символи символом fill (пробіл за замовчуванням)
'Оленка'.rjust(10, '+')
'++++Оленка'
x.title()
Першу букву кожного слова переводить в верхній регістр, а всі інші в нижній
'доБрИй дЕнь'.title()
'Добрий День'
x.swapcase()
Переводить символи нижнього регістру в верхній, а верхнього - в нижній
x.swapcase()
'сТЕПАН'
І це ще не все :)
Скільки зручних інструментів є в Python. Якщо вам сподобалась саме моє табличне представлення функцій і методи рядків, то все це давно і вільно лежить і оновлюється на «Плетиві» в розділі «Довідники мови Python». Звичайно, більша частина матеріалів там для початківців, бо писав ці довідники для своїх учнів, для уроків. При цьому щось намагався включити і авторське, наприклад, казку «Два зоопарки», що пояснює роботу з даними у списку, придумав сам.
Хочу привітати всіх учасників обласних етапів олімпіади з програмування, – справжнього свята інтелекту. Успіхів вам в наступних змаганнях – учні і вчителі!
Відомий всеукраїнський конкурс юних науковців має своїх прихильників і своїх критиків.
Давайте для початку розберемося в тому, як це було до 2020 року.
Якщо учень в 11 класі пробився на всеукраїнській рівень в конкурсі МАН і в фіналі виборов диплом будь-якого ступеня, то йому при вступі до закладу вищої освіти України додавалось 10 балів. Це був величезний бонус, таким чином можна було вступити в університет значно вищого рівня. Крім того, це певні «запасні бали» на випадок, якщо абітурієнт не дуже вдало здав, наприклад, українську.
Додавав позитивізму факт, що протягом останніх двох років фінал МАН проводився в форматі «всі разом». Найрозумніші діти країни майже тиждень спілкувались між собою. Організація була чудова: діти жили в гарних готелях, їх системно харчували. І дуже важливо, що рівень спілкування всередині спільноти МАНівців був дуже високий, що також було серйозним аргументом і додавало приводів взяти участь в МАН. Два останні роки підряд мої учні брали участь у фіналі МАН у відділенні «комп’ютерних наук» і вони в один голос це підтверджують.
Для того, щоб попасти у фінал, треба було пройти обласний відбір, для чого написати власне саму наукову роботу, написати контрольну з базової дисципліни (в комп’ютерних науках це математика), презентувати і захистити свою наукову роботу перед журі, де, як правило, запитання задають як члени журі так і учні-конкуренти.
Щоб отримати диплом у фіналі, необхідно попасти в першу половину рейтингу, тобто якщо у фіналі в даній секції було 20 учасників, то треба попасти по рейтингу в першу десятку.
Критики такого положення звертали увагу на факт «повної загальності» конкурсу МАН. Можна було захистити роботу в секції «Кліматологія та метеорологія», при цьому написати контрольну з географії, а отримані додаткові 10 балів витратити для вступу в медичний університет. Критики системи вважали це дуже неправильним. Крім того, оцінювання учасників – вкрай складна тема, а коли мова йде не про шматок картону на ім’я «грамота», а про 10 балів для вступу в ВНЗ, то, звичайно, все стає на порядок складніше у суддівстві. Також критики такої системи висловлювались, що практично неможливо визначити автора роботи, що наукову роботу дуже часто пишуть зовсім не діти, а вчителі, що взагалі нівелює цінність конкурсу.
11 жовтня 2019 року наказом №1285 Міністерство освіти і науки України змінило правила.
Цитата:
«Призерам (особам, нагородженим дипломами I–III ступенів) IV етапу Всеукраїнських учнівських олімпіад в рік вступу з базових предметів, призерам III етапу Всеукраїнського конкурсу-захисту науково-дослідницьких робіт учнів - членів Малої академії наук України в рік вступу під час вступу на спеціальності, визначені Переліком спеціальностей, яким надається особлива підтримка (додаток 2), останній доданок встановлюється рівним 10, а якщо конкурсний бал вступника при цьому перевищує 200, він встановлюється таким, що дорівнює 200. Інформацію про них приймальні комісії отримують з ЄДЕБО.»
Отже, якщо призер фіналу МАН обере собі спеціальність, якої немає в додатку 2, то його 10 балів не враховується. Але перед тим, як представити додаток 2, звернемо увагу на ще одну важливу деталь з Умов прийому. Цитата:
Примітка. З 2021 року статус спеціальностей, яким надається особлива підтримка, надаватиметься спеціальностям (спеціалізаціям, предметним спеціальностям), з яких прохідний бал широкого конкурсу МОН не перевищує 130 балів, статус припиняється для спеціальностей (спеціалізацій, предметних спеціальностей), з яких упродовж двох попередніх років поспіль прохідний бал широкого конкурсу МОН становить не менше ніж 170 балів за умови набору усіма закладами вищої освіти (крім вищих військових навчальних закладів, закладів вищої освіти із специфічними умовами навчання, військових навчальних підрозділів закладів вищої освіти) не менше ніж 50 % від загального набору студентів на перший курс денної форми здобуття освіти на основі повної загальної середньої освіти за кошти фізичних та юридичних осіб.
Звичайною мовою: якщо цього року спеціальність є у Додатку 2, але прохідний бал на неї більше 170 балів і університети набирають на дану спеціальність більше 50% студентів, то спеціальність із додатку 2 на наступний рік зникне. А туди допишеться спеціальність, на яку прохідний бал малий, менше 130 балів. Тобто, спеціальності зовсім не рейтингові, скажемо прямо.
Цілком зрозуміло, що в додатку 2 прогнозовано немає комп’ютерних спеціальностей галузі знань 12 "Інфомаційні технології". Для вступу на топову 121 спеціальність «Інженерія програмного забезпечення» в 2020 році не допоможе ні призове місце в фіналі МАН ні призове місце в фіналі будь-якої всеукраїнської олімпіади. Там серед комп’ютерних залишилась лише неймовірно складна «124 – Системний аналіз», але якщо поспілкуватися зі студентами, що навчаються на даній спеціальності, наприклад, в ІПСА КПІ, можна зрозуміти, що вчитися там неймовірно складно. Скоріше за все, саме тому 124 спеціальність поки що залишається в Додатку 2.
На мою думку, цей закон дуже змінить розстановку сил в МАН. Сенс брати участь у МАН стрімко змінився. Знову таки, обидва мої учні, що пройшли до фіналу, і придумували і писали свої роботи самостійно, витративши на це море сил і часу. Який вони могли б витратити на підготовку до ЗНО. Звичайно, ми розраховували на 10 балів, тут ніякої таємниці немає. Щодо мотивації наступних МАНівців – питання, на мою думку, цілком зрозуміле.
Мова не про оцінювання даного закону або даного факту, мова про декларування зміни правил. Важливих правил для абітурієнтів.
І, обіцяний додаток №2 (на 2020 рік):
Додаток 2 до Умов прийому на навчання до закладів вищої освіти України в 2020 році (пункт 3 розділу III)
ПЕРЕЛІК спеціальностей, яким надається особлива підтримка
Шифр галузі
Галузь знань
Код спеціальності
Назва спеціальності
01
Освіта
014
Середня освіта (за основними предметними спеціалізаціями: 014.04 - 014.10, 014.15)