Як робити рефакторинг в продукті з бурхливою історієюAleksandr Brychuk
— Ознаки, що проект потребує рефакторингу (крім кількості FAQ, що каже команда, коли дивиться на код). Вплив рефакторингу на бізнес — все стає простіше. Чому б не переписати «з нуля». Рефакторинг під час розробки вкрай дрібними кроками.
— Чотири ознаки, що пора зупинитися.
— Рефакторинг по-бойскаутські: «Залишай місце, з якого пішов, кращим, ніж воно було до тебе. При виконанні будь-якої задачі зменшуй технічний борг».
Багаті спадкоємці, або як робити рефакторинг у продукті з бурхливою історією....HOWWEDOIT
— Ознаки, що проект потребує рефакторингу (крім кількості FAQ, що каже команда, коли дивиться на код). Вплив рефакторингу на бізнес — все стає простіше. Чому б не переписати «з нуля». Рефакторинг під час розробки вкрай дрібними кроками.
— Чотири ознаки, що пора зупинитися.
— Рефакторинг по-бойскаутські: «Залишай місце, з якого пішов, кращим, ніж воно було до тебе. При виконанні будь-якої задачі зменшуй технічний борг».
Oleksandr Brychuk "UniSender architecture. Growth from 100kk to 1.5kkk letter...Fwdays
Architecture in 2013 comes from scratch, so is there any hope for the future? Business is primarily about money, but what if the balance between technical improvements and a beautiful look is not maintained.
"Emergency 2015" - the limit after which you need to make drastic changes in the technical component. Carte blanche from business and a rough idea of where to start the transformation.
Why did you choose to go through refactoring? Why did you decide to split the monolith into microservices in 2015, when the hype was just emerging, instead of SOA and monolith? How did you choose where to start? How AWS S3 defeated Ceph and helped save the nerves and funds of DevOps? What nodes of the system have provided us with the opportunity to grow 10-15 times in 5 years without spending much more money on vertical scaling? Stable 1.5 billion letters in 2020.
Як прокачати трьох студентів за п’ять тижнівArtem Henvald
GitHub repository: https://github.com/stfalcon-studio/lost-and-found
Відео з презентації: https://www.youtube.com/watch?v=3EgilE_fpkI
До нас на студію прийшли три студенти проходити практику. Потрібно було дати їм завдання і організувати навчальний процес. Розробляли проект "Бюро знахідок" на PHP Framework Symfony2. Ділюсь своїм досвідом, як я це зробив і що в результаті вийшло.
Як робити рефакторинг в продукті з бурхливою історієюAleksandr Brychuk
— Ознаки, що проект потребує рефакторингу (крім кількості FAQ, що каже команда, коли дивиться на код). Вплив рефакторингу на бізнес — все стає простіше. Чому б не переписати «з нуля». Рефакторинг під час розробки вкрай дрібними кроками.
— Чотири ознаки, що пора зупинитися.
— Рефакторинг по-бойскаутські: «Залишай місце, з якого пішов, кращим, ніж воно було до тебе. При виконанні будь-якої задачі зменшуй технічний борг».
Багаті спадкоємці, або як робити рефакторинг у продукті з бурхливою історією....HOWWEDOIT
— Ознаки, що проект потребує рефакторингу (крім кількості FAQ, що каже команда, коли дивиться на код). Вплив рефакторингу на бізнес — все стає простіше. Чому б не переписати «з нуля». Рефакторинг під час розробки вкрай дрібними кроками.
— Чотири ознаки, що пора зупинитися.
— Рефакторинг по-бойскаутські: «Залишай місце, з якого пішов, кращим, ніж воно було до тебе. При виконанні будь-якої задачі зменшуй технічний борг».
Oleksandr Brychuk "UniSender architecture. Growth from 100kk to 1.5kkk letter...Fwdays
Architecture in 2013 comes from scratch, so is there any hope for the future? Business is primarily about money, but what if the balance between technical improvements and a beautiful look is not maintained.
"Emergency 2015" - the limit after which you need to make drastic changes in the technical component. Carte blanche from business and a rough idea of where to start the transformation.
Why did you choose to go through refactoring? Why did you decide to split the monolith into microservices in 2015, when the hype was just emerging, instead of SOA and monolith? How did you choose where to start? How AWS S3 defeated Ceph and helped save the nerves and funds of DevOps? What nodes of the system have provided us with the opportunity to grow 10-15 times in 5 years without spending much more money on vertical scaling? Stable 1.5 billion letters in 2020.
Як прокачати трьох студентів за п’ять тижнівArtem Henvald
GitHub repository: https://github.com/stfalcon-studio/lost-and-found
Відео з презентації: https://www.youtube.com/watch?v=3EgilE_fpkI
До нас на студію прийшли три студенти проходити практику. Потрібно було дати їм завдання і організувати навчальний процес. Розробляли проект "Бюро знахідок" на PHP Framework Symfony2. Ділюсь своїм досвідом, як я це зробив і що в результаті вийшло.
Viktor Zhora - Cyber and Geopolitics: Ukrainian factorOWASP Kyiv
Hidden details of some high profile hacks of the last 3 years from the guy, who happens to deal with geopolitical cyber-attacks for a living.
Follow Viktor on Twitter: https://twitter.com/VZhora
Lidiia 'Alice' Skalytska - Security Checklist for Web DevelopersOWASP Kyiv
Application Security considerations are best articulated in a simple and actionable form. Alice recommends using specially crafted checklists just for that.
Follow Alice on Twitter: https://twitter.com/alice_kaifat
Viktor Zhora - Cyber and Geopolitics: Ukrainian factorOWASP Kyiv
Hidden details of some high profile hacks of the last 3 years from the guy, who happens to deal with geopolitical cyber-attacks for a living.
Follow Viktor on Twitter: https://twitter.com/VZhora
Lidiia 'Alice' Skalytska - Security Checklist for Web DevelopersOWASP Kyiv
Application Security considerations are best articulated in a simple and actionable form. Alice recommends using specially crafted checklists just for that.
Follow Alice on Twitter: https://twitter.com/alice_kaifat
39. Підсумок
● Щоб працювати з git безпечно треба бути обережним
○ Хороші рішення знайти так само легко як і погані
● Доступні для всіх логи не спрощують задачу
39
48. 2016 — Повернення
48
● Хочеться свій блог
● Перший пост має бути про щось цікаве
Проблема з git push
49. 2016 — Повернення
49
● Всього 10 токенів якось малувато
● Можливо за два роки все змінилось?
● Потенційна шкода, якщо проблема більш поширена
50. 2016 — Повернення
50
● Всього 10 токенів якось малувато
● Можливо за два роки все змінилось?
● Потенційна шкода, якщо проблема більш поширена
Рішення: ще раз пройтись пошуком
51. 2016 — Перші результати
● 28 активних токенів
51
52. 2016 — Перші результати
● 28 активних токенів
● часткова автоматизація завантаження логів
52
53. 2016 — Перші результати
● 28 активних токенів
● часткова автоматизація завантаження логів
○ знаючи ім’я репозиторію, навіть якщо він «деактивований» на Travis
CI, логи все ще можна отримати
○ у випадку проблем з git push який знаходиться в after_success секції,
білд залишається «зеленим»
53
54. 2016 — Перші результати
● 28 активних токенів
● часткова автоматизація завантаження логів
○ знаючи ім’я репозиторію, навіть якщо він «деактивований» на Travis
CI, логи все ще можна отримати
○ у випадку проблем з git push який знаходиться в after_success секції,
білд залишається «зеленим»
● ‘coordinated’ та інші види disclosure
54
56. 2016 — Книга облич
56
● Можна писати статтю! :-)
57. 2016 — Книга облич
57
● Можна писати статтю! :-)
● Баг баунті? Офкорс!
58. 2016 — Книга облич
58
● Можна писати статтю! :-)
● Баг баунті? Вуд лов ту, бат…
○ «Не можна зв’язуватися з працівниками з питань повідомлення
безпосередньо або через інші канали.»
○ Помилка вже виправлена
59. 2016 — Книга облич
59
● Thank you for reporting this information to us.
60. 2016 — Книга облич
60
● Thank you for reporting this information to us.
61. 2016 — Книга облич
61
● Thank you for reporting this information to us.
● After reviewing this issue, we have decided to award you a bounty
of $X000.
62. 2016 — Книга облич
62
… award you a bounty of $X000
68. 2017 — Скан: репозиторії
68
● популярні (>100 зірочок чи форків)
● проекти відомих компаній (Google, Mozilla, Facebook, etc.)
69. 2017 — Скан: репозиторії
69
● популярні (>100 зірочок чи форків)
● проекти відомих компаній (Google, Mozilla, Facebook, etc.)
● проекти топ-коммітерів до проектів зібраних раніше
71. 2017 — Скан: репозиторії
71
● популярні (>100 зірочок чи форків)
● проекти відомих компаній (Google, Mozilla, Facebook, etc.)
● проекти топ-коммітерів до проектів зібраних раніше
● проекти коммітерів до проектів топ-коммітерів
72. 2017 — Скан: білди
72
Деякі проекти використовують Travis CI наповну
● інколи десятки тисяч білдів
● кожен білд має десятки джоб логів
73. 2017 — Скан: білди
73
● тільки останні 3000 білдів
● не більше 10 логів на білд
○ завжди останній та перший
○ 8 випадкових
74. 2017 — Скан: час
74
● ~4 місяці
○ щоб не забанили мій сервер
○ не створювати проблем для безкоштовного сервісу
75. 2017 — Скан: час
75
● ~4 місяці
○ щоб не забанили мій сервер
○ не створювати проблем для безкоштовного сервісу
● дуже важко не сидіти і тупо дивитись як біжать рядочки
76. 2017 — Скан: час
76
● ~4 місяці
○ щоб не забанили мій сервер
○ не створювати проблем для безкоштовного сервісу
● дуже важко не сидіти і тупо дивитись як біжать рядочки
● постійний збір нових «цілей»
78. Хвилинка статистики (1)
78
Скан
● 7.8 мільйонів репозиторіїв на 326 мовах
● 320 тис. з них мали хоча б один білд на Travis CI
~4.1%!
● 60 мільйонів білдів
122. Висновки
122
● “given enough eyeballs, all bugs are shallow” — не працює,
токени в логах були роками навіть у великих проектів
123. Висновки
123
● “given enough eyeballs, all bugs are shallow” — не працює,
токени в логах були роками навіть у великих проектів
● якщо програма поводиться несподівано, документацію не
прочитають
124. Висновки
124
● “given enough eyeballs, all bugs are shallow” — не працює,
токени в логах були роками навіть у великих проектів
● якщо програма поводиться несподівано, документацію не
прочитають
● копі-паста коду з Інтернету, як завжди, не допомогає
126. PS. Не git push єдиним
● set -x
● git remote -v
● echo
126
127. PPS. Виправимо git-push!
- error(_("failed to push some refs to '%s'"), transport->url);
+ error(_("failed to push some refs to '%s'"), transport_anonymize_url(transport-
>url));
“This leaks the return value.”
:-(
127