Блоґ одного кібера

Історія хвороби контуженого інформаційним вибухом

Posts Tagged ‘розробка

Проста схема перетворення інтерактивної процедурної програми з goto в функціональну рекурсивну

with 3 comments

Власне вся передмова помістилась в заголовок. Хоча може для цього “паттерну” є коротша назва.

Існує клас інтерактивних програм які очікують вводу користувача, потім залежно від того вводу щось роблять, потім знову очікують вводу і так далі. Наприклад якась така програма “вгадай число”:
Прочитати решту цього запису »

Advertisements

Written by bunyk

Квітень 10, 2016 at 13:29

Оприлюднено в Кодерство

Tagged with , , ,

Знову повертаючись до університету

with 6 comments

В мене таке відчуття ніби я в універі. Місце де я сплю – вузьке і біля стіни. Біля ліжка – захаращений стіл. Мій сусід поїхав кудись на вихідні, а я сиджу, залипаю в комп’ютер і скоро зустрічатиму світанок. 🙂

Сиджу, ковбашу код який мав би допомагати мені виправляти помилки форматування статтей вікіпедії:
Прочитати решту цього запису »

Written by bunyk

Березень 13, 2016 at 04:55

Як Garage48 допоміг мені нарешті почати проект

with 7 comments

Минулих вихідних я відвідав Garage48 – мені дуже сподобалось. Тому дуже вдячний Анастасії за те що повідомила і склала компанію, і компанії N-iX за те що надали можливість провести таку подію.

Що там було гарного?

Garage48 – це хакатон, слово що складено об’єднанням слів хакер і марафон. Тобто по суті мало б бути 48 годин програмування протягом вихідних.

В якомусь гаражі. Так, в тому місці де захід проводився (офіс компанії N-ix знаходиться на 7-му поверсі заводу Електрон), зліва від “сцени” була купка шин. Коли я мав нагоду поговорити з директором, я запитав чи то запас з євромайдану, чи аби створити гаражну атмосферу. Виявилось він просто літню гуму зберігає на роботі.

Garage48 придумали е-стонці. Е-стонія – дуже е-лектронна держава. А все тому що вони якось розробили скайп, їм сподобалось і вони вирішили спробувати зробити ще щось таке. Естонія невелика, всього лише 1.3 мільйона населення, але подушна кількість стартапів там чи не вища ніж в Каліфорнії. Окрім електронного уряду, відомі ще компанією Transferwise, яка здешевлює міжнародні перекази між різними валютами до одного євро, замість % обміну.

Garage48 естонці не тільки придумали, вони й проводили. Вони займались всією організацією, презентаціями і т.д. А так як це вже не перший хакатон – все було досить чітко. Єдиний мінус – це був мій перший хакатон такого роду, і тому я був не зовсім в курсі що головне не так писати код, як правильно подати ідею, і зорганізувати роботу. Наступного разу знатиму, що якщо є ідея – на хакатон треба приходити вже з командою. Або хоча б з менеджером. Або бути нормальним менеджером, що не так вже й просто. Треба мати people skills.

Ragnar Sass не надто вражений нашим демо. 😦

Що крім коду мені довелось робити? Ну спершу – презентувати свою ідею за 90 секунд одним слайдом. Добре що в мене вже є досвід публічних виступів. Досвід 90-секундних виступів тепер теж є. 🙂 Далі – знайти “співробітників”. І тепер я краще розумію як тяжко HR. Я вже готовий був до того що проект буде на .Net, або мікроконтролерах, але пощастило і таки знайшлась одна людина на Python. Далі – змусити їх робити те що я хочу, а не те що вони хочуть. І це при тому я їм ніяку зарплату не платив. Перший день і половину другого ми провели за суперечками про те що ми будемо робити. На щастя нікого звільняти не довелось, самі звільнились. А поки всі сперечались, одна людина зробила все за нас, почала Django проект, описала всі залежності, встановила всі бібліотеки і бекенд був готовий. Далі два фронтендщики зробили фронт-енд кілька разів.

А в ніч з суботи на неділю ми пішли на “тім-білдінг”. Хоча напевне раніше варто було. Можна було б звісно довше програмувати, але ж ми прийшли на хакатон також і заради розваги, тому цікаво було також познайомитись. Особливо тому що один з нашої команди, Алекс, який власне все й зробив, був з Донецька, але через те що їх офіс зі зрозумілих причин зараз не достатньо зручний для роботи – переїхав у рідне місто – Костянтинівку. І мало того що він крутий розробник, він ще й має футболку з логотипом The Pirate Bay і знає тексти Фліта і Тостера.

Тім-білдінг полягав просто в тому що ми сиділи на пиві в цілодобовому кафе “Цісар” на городоцькій біля церкви Анни. Ціни там дуже навіть помірні, але меню не відповідає можливостям кухні, тому треба додатково питати про наявність певних страв. А ще там була офіціантка, дуже добра, чим мені дуже сподобалась. Я навіть запросив її на танці, хоча вона звісно відмовилась. Чомусь 95% дівчат яких я запрошую на танці – відмовляються. Я напевне роблю щось неправильно, може не треба питати так прямо в лоб, а спочатку зайнятись якимись попередніми ласками бесідами, щоб вони були поступливіші? 🙂 Потім офіціантка напевне тому що не було чим зайнятись (то була десь 2:30) заспівала пісню сербською краще за Марію Шерифович. Так гарно заспівала що я аж закохався. Тільки от не бачив її відтоді, ніяк не можу на її зміну потрапити. Думаю якби вдягнувся нормально, вмився і побрився, мав би більші шанси її запросити.

Ліричний відступ закінчуємо, тепер до того що ми робили далі.

Після тім-білдінгу ми почали спроби інтегрувати фронтенд і бекенд і фіксити баги які виникали в процесі. Не всі встигли, але як виявилось – цього не потребувалось, потребувалось зробити гарне демо. І я не думав що це займе так багато часу. А ще, мене змушували двічі ходити на репетицію демо-презентації (на першу з яких ми спізнились бо не були в курсі). Демо мало тривати 180 секунд і його треба було багато разів пробувати, аби сказати все цікаво, пояснити важливість і корисність свого продукту і вкластись в час. На першій репетиції естонці сказали мені що спочатку треба сказати як мене звуть. Я спитав кого то обходить, але мені сказали що то важливо так само як і про що проект. А ще, що мені треба тримати зоровий контакт з аудиторію а не руки в кишенях.

Біля сусідньої до нашої кімнати свою презентацію репетирувала дівчина, команда якої зрештою отримала перше місце. Я домовився з нею про співпрацю, і ми одне одного засікали, критикували та вчились підтримувати зоровий контакт. То було трохи незручне, але досить цікаве заняття, думаю варто ще потренуватись на інших людях. Або як Віктор Суворов (пробачте, я не втримаюсь і вставлю ще ліричний відступ):

С глазами у меня хуже, чем с языком. У меня есть опыт из Спецназа смотреть в глаза собакам. Но тут этого недостаточно. Нас тренируют с зеркалом: смотри в глаза, не моргай. Не отводи взгляд. Если хочешь завербовать человека, ты должен прежде всего выдержать взгляд. Дружба начинается с улыбки, вербовка – со взгляда. Если ты не выдержал первый тяжелый взгляд своего собеседника-то и не пытайся потом его вербовать: психически он сильнее. Он не поддастся.

Я выхожу на станции метро “Краснопресненская” и иду в зоопарк. Если у вас та же проблема, то приходите к закрытию – вам никто не помешает. Я смотрю в глаза тиграм, леопардам, Я направляю свою волю, я сжимаю челюсти.
Неподвижные желтые глаза хищника расплываются передо мной. Я сильнее сжимаю кулаки, впиваясь ногтями в ладони. Глаза нужно осторожно сощуривать и вновь медленно-медленно широко раскрывать, так можно не моргать. Глаза режет, наворачиваются слезы. Еще мгновение – и я моргнул. Огромная ленивая рыжая кошка презрительно улыбается мне и отворачивает разочарованно морду: слаб ты, Суворов, со мной состязаться.

Ничего, кошка. Я настойчивый. Я приду сюда в следующее воскресенье. И в следующее. И потом еще. Я – настойчивый.

В кінцевому результаті вийшло як завжди – розмахував руками або тримав їх в кишенях і дивився в підлогу. Відео виступу

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

Після хакатону залишається проблема підтримки цього всього. 48 годин – за вихідні – це гарний копняк для того щоб ідея почала рухатись, бо це навіть більше ніж робочий тиждень. Це як робочий тиждень з суботою. Навіть якщо ми не ввесь час працювали. Проблема в тому що ми використали python2, а я щиро вболіваю за python3, на якому вже є купа можливостей писати. І що хостинг позичений на Azure, а переносити – довго, бо залежностей багато, і деякі такі – в назві яких я навіть слова не знаю:

django-annoying==0.8.4
django-wysiwyg-redactor==0.4.2.1
django-formtools==1.0
django-flat-theme==1.1.1
django-tastypie==0.12.2
django-location-field==1.6.1
django-cors-headers==1.1.0
django-sitemetrics==0.5.0

uwsgi==2.0.11.2
newrelic==2.56.0.42

Хоча я багато повикидав, тому що ніякого New Relic там не потрібно. І простори імен в проекті вийшли заглибокі. Взагалі він вийшов занадто ентерпрайзним, як на таку просту ідею. Але нічого, потрохи переробляю.

Ах, і найгірше, в нас головний select зроблений в python циклі. 🙂 Жахіття! Нічого, це теж перероблю. Біда от що я повністю нулячий в керуванні конфігурацією. Те що я пишу публікації про docker, Vagrant, (про fabric бракує) – означає тільки те що я час від часу роблю спроби там освоїтись.

А ще, думаю, може б то open source? З одно боку, якщо ідея злетить, було б шкода давати конкурентам можливість обігнати нас, а з іншого боку – мало хто вірить в таку ідею крім мене.

Поки що живий сервер можна спостерігати за адресою http://46.101.226.138/. Не знаю наскільки довго.

Одним словом, ми не виграли, але головне не перемога, а участь, а ця участь окрім втоми дала дуже багато – весело проведений час, мотивацію робити щось далі, без ілюзії про те що це буде легко, і купу нових знань і досвіду.

Якщо буде ще одне таке подібне – обов’язково піду. А поки що попереду LvivPy #5 та Django girls Хмельницький. І хоча я не дівчина та погано знаю Django, але в мене в дипломі написано що я можу викладати (здається), тому я спробую викладати.

See you!

Written by bunyk

Листопад 18, 2015 at 00:50

Оприлюднено в Нещоденник

Tagged with , ,

Вступ до системної інженерії

with one comment

Від університету Нового Південного Уельсу можна подивитись на Coursera.

Найнудніший з тих що я проходив в інтернеті. Здається що навіть в університеті не було так нудно. Проходив я його для того щоб зрозуміти “якщо те що пишу я набагато простіше за літаки, то як взагалі ті літаки літають? Як тисячі людей домовляються про те щоб діяти разом?”

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

Нудний, бо по перше, про водоспадну модель я ще в університеті дізнався (а також про Extreme programming, Dynamics System Development Method, і навіть трохи про Rational Unified Process). Що означає що кубик – таки класний і при певних зусиллях може бути в топ100 світового рейтингу, а також про те що Карнаух – одна з найкращих викладачів там, бо якби не вона, я б таких слів не знав, і це при тому що коли ми з нею познайомились я вже не дуже хотів вчитись.

А по друге, ну не треба ставити на слайди стільки списків. А якщо вже поставили – то не читати списків.

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

Written by bunyk

Травень 13, 2015 at 18:13

Оприлюднено в Конспекти

Tagged with

vagrant up!

with 10 comments

Vagrant – це як висловився dmytrish – CLI до VirtualBox. (А також для інших систем віртуалізації. Перекладається слово як бродяга, і далі ви зрозумієте чому. Для чого там інтерфейс командного рядка? Ну, щоб швидше створювати і перемикатись між віртуальними машинами, а вони сьогодні ой як потрібні.)
Прочитати решту цього запису »

Written by bunyk

Лютий 23, 2015 at 09:11

Розробка керована питаннями

leave a comment »

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

Важко звісно не набирати рядки, а ВИРІШИТИ які рядки потрібно набрати. В дні коли я пишу їх багато – це рішення просте, в дні коли мало – рішення часом взагалі неможливо побачити. І втомлюється людина від прийняття рішень, а також особливо від рішень які ще не прийняті. Навіть існує ефект Зейгарнік, який проявляється в тому, що люди схильні швидко забувати вирішені питання і закінчені справи, а незакінчені будуть триматись в мозку і займати його ресурси.

Качечка теж втомилась :)

Качечка теж втомилась 🙂

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

Якщо ще додавати до кожного запису час, і коротко записувати відповіді на запитання, можна отримати журнал який показує на що йде час розробки, і чому код написаний саме так а не інакше (бо виникали такі питання і знаходились такі відповіді). Якщо код буде написано неправильно – можна буде знайти момент в який неправильне рішення до нього привело. Якщо буде поставлена наступна задача – легше буде оцінити скільки питань і якої складності треба буде вирішити для виконання задачі. Бо розбиття роботи на пункти плану і оцінка їх по аналогії з вже виконаними пунктами – єдині відомі способи оцінити необхідний для роботи час. Для оцінки по аналогії покладаються на пам’ять, хоча журнал був би надійнішим.

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

Ну й наостанок дам приклад того про що я пишу – лог питань що виникають при розробці гри в “п’ятнадцять”: bunyk.github.com/blob/master/fifteen/worklog.txt. Сама гра.

Written by bunyk

Вересень 21, 2014 at 07:47

Чим відрізняється декоратор від адаптера? (І про фасад)

with 2 comments

Цих вихідних їхав поїздом додому, і в купе побачив на столі книжку “Heads first Design Patterns” видавництва O’reilly. Моїми сусідами по купе були хлопець з дівчиною. Вони виглядали сонними, і навіть плутали напрям поїздки (думали що поїзд до Києва їде, а не до Франківська, хоча їхали до Франківська), і активно проявляли намір лягти спати, тому я запитав:

– Можна я вашу книжку подивлюсь? Бо завжди хотів знати чим відрізняється декоратор від адаптера.

На що хлопець відповів:

– Так, звісно.

А дівчина:

– Ви що, теж програміст?! Як вас всіх скрізь багато розвелось!

Вони лягли на свої полиці, я теж підклав під голову рюкзак, вмостився на своїй полиці і взявся за книжку.

Книжка чудова, всім рекомендую. Правда, напевне дорога як холєра, але якщо вам пощастить до неї дістатись – читайте без жодних сумнівів. Щоб довго не тягнути інтригу, скажу що про відмінність декоратора і адаптера я таки дізнався. Там в цій книжці навіть цілий діалог між декоратором та адаптером описують, де ці два шаблони доводять один одному хто з них крутіший. 🙂
Прочитати решту цього запису »

Written by bunyk

Липень 9, 2014 at 08:40