Получи случайную криптовалюту за регистрацию!

✙rozho)))k✙🇺🇦

Логотип телеграм канала @full_of_hatred — ✙rozho)))k✙🇺🇦 R
Логотип телеграм канала @full_of_hatred — ✙rozho)))k✙🇺🇦
Адрес канала: @full_of_hatred
Категории: Технологии
Язык: Русский
Количество подписчиков: 3.65K
Описание канала:

Реклами на каналі немає!
Про автора: www.rozhkov.me/about
Про канал: www.rozhkov.me/about-full-of-hatred
Канал про все що не ІТ: @daily_rozhok
дірект: @xrozhokx
блог: rozhkov.me

Рейтинги и Отзывы

3.33

3 отзыва

Оценить канал full_of_hatred и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

1

4 звезд

0

3 звезд

1

2 звезд

1

1 звезд

0


Последние сообщения

2022-08-31 09:15:00 Мікрооптимізації vs читаємість

Бот для управління чатом зроблений на Ruby on Rails. Для визначення команди використовується наступна конструкція: if command.downcase == "!ban"

.downcase тому що раніше на телефоні мав клавіатуру яка після знаку оклика піднімала регістр. Зараз вже не така, але регістро-незалежний код залишився.

У всіх Rails проектах для підтримання порядку використовую лінтер Rubocop. Крім форматування він ще підказуває ідіоматичні речі та перформенс проблеми. І от після чергового регулярного апдейту пакетів я проганяю рубокоп, а він мені і каже:

app/models/moderator_bot.rb:42:8: C: [Correctable] Performance/Casecmp: Use command.casecmp("!ban").zero? instead of command.downcase == "!ban".
if command.downcase == "!ban"
^^^^^^^^^^^^^^^^^^^^^^^^^^

Ну я такий думаю ок, зроблю rubocop -A, хай автоматом підставить те що треба. Зробив, забув.

Нещодавно додавав ще одну команду, дивлюся на той код, а він мені не подобається. Ну от уявіть, замість простого і всім зрозумілого downcase та == я тепер бачу сішне casecmp а потім ще й zero?. Треба пам'ятати що є така функція яка порівнює рядки, і якщо вони співпадають, то вона вертає 0, а якщо не співпадають, то щось відмінне від 0, можливо 1, а можливо і -1.

Я вирішив що так діла не буде, і треба викинути гидку сішну конструкцію. Та стало цікаво, звідки взагалі взялося це правило. Пішов на документацію, там є посилання на гітхаб з бенчмарками та результатами замірів. Різниця між == та casecmp у нас така:

Comparison:
String#casecmp: 6948231.0 i/s
String#downcase + ==: 5017089.5 i/s - 1.38x (± 0.00) slower
String#casecmp?: 3686650.7 i/s - 1.88x (± 0.00) slower

Тобто «оптимізоване» порівняння рядків буде аж на 40% швидше! Ніби непогано! Але сама операція при цьому займає 200 наносекунд! Тих порівняннь у мене по коду п'ять штук далі. З одного боку я розумію що от з таких 50 наносекунд різниці тут і там, потім складається повільний веб, але не у моєму випадку тільки в базу сходити буде коштувати десяток мілісекунд.

Вони б ще туди інтрінсіки запхали, їй-б-гу.

Викинув те правило та повернув все на ==. Чого і вам бажаю.

upd: Уважний читач Ігор Є. помітив, що замість «п'яти порівнянь далі по коду» можна зробити extract variable. І хоча пост не зовсім про це, а більше про читаємість, маю зізнатися що тут я дав маху. Зовісм глупий став.

#робота
permalink | donate
1.3K viewsedited  06:15
Открыть/Комментировать
2022-08-30 09:15:00 Істинна мотивація

Торік написав пост «Як прокидатися рано?». В мене тоді була якась цікава задача, я був заряджений на перемогу і мені не потрібно було себе «примушувати» прокидатися щоб розпочати роботу.

Задача закінчилась, мотивація повернулась на попередній навколонульовий рівень—працювати аби з голоду не померти.

Під час розробки @Donate1024Bot я знову відчув що таке справжня внутрішня мотивація. Перші декілька днів коли в мене ще не було крону, я робив розсилку вручну. Вже о 8 ранку я підривався і ледве примушував себе поспати ще годинку. В наступні дні я швидко біг до комп'ютера та дивився чи немає помилок у Sentry. Потім придумував що б ще такого зробити, статистика, монобанки, дашборд, оце все. Воно моє.

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

Я просто сідав і робив.

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

В чому секрет успішних кабанчиків? П'ять звичок багатіїв, сім способів доводити справи до кінця, топ три поради від фаундера єдинорога? Все це туфта. Секрет один—успішний кабанчик має багато причин прокидатися рано і працювати на повну.

Кабанчик успішний не тому що він рано встає або медитує. Ранній підйом це не причина а наслідок його успішності.

Що там, вже загримувались та готові до виступу у цирку під назвою дейлі стендап?

#продуктивність
permalink | donate
1.2K views06:15
Открыть/Комментировать
2022-08-29 09:15:00 Новини @Donate1024Bot: дашборд та «пауза» на тиждень

Привіт усім! Дякую активним донатерам, ви—найкращі ! Згідно статистики монобанок наша потужність точно складає близько 10 000₴. Я думаю того тижня ми зробили непоганий внесок. Продовжуємо далі!

Дашборд

Я розробив сторінку на якій відображаються основні базові метрики боту: кількість підписників, кількість зроблених донатів, загальна приблизна сума задоначених грошей, кількість опублікованих зборів та конверсія—відсоток людей які відмітилися що задонатили:

https://donate1024.org/

Також там можна переглянути всі вже опубліковані збори та їх статистику.

«Не турбуйте мене наступні 7 днів»

Додав кнопку яка поставить бот на паузу на наступні 7 днів. Буває таке що зараз не до донатів, а блокувати бота або відписуватися не хочеться—бо потім забудеш. Якщо ви не донатите але хочете щоб вам нагадали про це пізніше—сміливо тисніть кнопку.

Дрібнички

Поправив UI кнопок, тепер зелена відмітка буде з'являтися тільки якщо ви натиснули кнопку «готово». Статистика монобанок буде автоматично оновлюватися у вашому повідомленні, і якщо ви задонатили то відразу, або з невеликою затримкою побачите зміну прогресу.

На тому все!

Підключайте собі @Donate1024Bot, та долучайтеся до мене у марафоні щоденного донату в розмірі 1024 гривні на потребі армії!

#проекти #війна #donate1024
permalink | donate
1.6K views06:15
Открыть/Комментировать
2022-08-28 15:22:12
Пам'ятаєте, ми збирали гроші на пікап для ССО? Разом з @kapelan_it та Віталієм Ратушним вдалось зібрати більше 400000₴!

Ми вже купили повнопривідний Toyota Tacoma 2005 року та відремонтували його. На гроші що залишилися докупили якісні маскувальні сітки, газові балони, відбійний молоток, вітаміни, спеціальні одноразові душі, та покрили ТО ще одного авто підрозділу!

Пікап чекає на фарбування, після цього ми переоформимо його на баланс частини та відправимо на фронт.

Після відправки обов'язково відзвітуємо.

Дякуємо всім хто долучився, ви найкращі!
1.9K views12:22
Открыть/Комментировать
2022-08-26 09:15:00 Мережа у fly.io

Всі ваші сервери знаходяться всередині приватної IPv6 мережі. Всі регіони зв'язані у одну мережу, а гнучкий DNS дозволяє вам резолвити імена типу top.nearest.of..internal, який автоматично підбере вам найближчий інстанс. Втім мені воно не потрібно, в мене всі апки живуть у Франкфурті. Крім того доступно ще багато регіонів, навідміну від Heroku, у якого їх всього два.

За необхідності, кожен процес вашої апки (вебсервер і тд) може отримати зовнішній проксі-сервер щоб до нього можна було звертатися з інтернету. Але якщо це не потрібно (для воркерів та для баз даних), то все буде приватним. Heroku виставляє вашу базу даних голою дупою в інтернет, і захищена вона лише довжелезним паролем. Коли б я робив свою хмару, то теж би планував таку архітектуру—все приватне.

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

WireGuard це топ софт і набагато зручніший ніж OpenVPN та інші VPN рішення.

Якщо вам потрібно відкрити собі доступ лише до якоїсь частини ресурсів то команда типу fly proxy 15432:5432 rozhok-db.internal прокине вам тунель на локалхост. Власне поки я не знайшов часу розібратися з DNS то я так і прокидую собі базу з редісом та працюю.

“Але ж все це давно є в кубах та інфраструктурі навколо!”, вигукне досвічений читач. Звичайно є, але воно все тягне за собою сотні шарів непотрібних мені абстракцій.

P.S.

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

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

Fly позиціонують себе як платформу на якій інші можуть будувати свої PaaS та рішення, і вже навіть з'явилися такі компанії.

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

#інструменти
permalink | donate
2.4K viewsedited  06:15
Открыть/Комментировать
2022-08-25 09:15:00 Friendship ended with Heroku, now fly.io is my best friend.

Коли я починаю проект то завжди намагаюсь застосувати нову технологію. Для @Donate1024Bot я обрав дві таких: хостинг на fly.io та верстку з Tailwind CSS. І якщо остання завдала клопоту, то перша виправдала себе на 100%. Про це і розповім.

Вперше я натрапив на fly.io на HackerNews, де обговорювався їх блог-пост A Foolish Consistency: Consul at Fly.io. Я тоді прочитав цей матеріал і подумав “Нічого собі! Оце хлопці роблять рокет саєнс!”. Якщо коротко то Fly позиціонює себе як хостинг з точками присутності по всьому світу з мінімальним оверхедом на віртуалізацію.

Щоб досягнути цього вони побудували приватну IPv6 мережу між датацентрами по всьому світу з'єднану через WireGuard, для віртуалізації використовують Firecracker, а зверху написали купу софту яким тим всім керує, наприклад конвертер з Docker імеджів у Firecracker, свій DNS-сервер для гнучких гео-запитів і багато іншого цікавого. Рекомендую ознайомитись.

Останні місяці я платив за Heroku 60$. Значну частку рахунку складали adopt.ua та blogigram.com (сервіс що публікує пости з блогу в телеграм) які тягнули по 23$ кожний за дві віртуалки та постгрес. Донат бот теж потребував 2 процеси—вебсервер та воркер для бекграунд джоб. Збільшувати рахунок ще на 14$ мене якось ламало. Але і переносити існуючі проекти мотивації не було. Тому як тільки випала нагода, я вирішив протестувати fly.io.

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

Перед початком роботи потрібно розгорнути Postgres кластер. Кластер немає обмежень по розміру бази, навідміну від Heroku що дає всього 10 000 рядків у Free Tier. Його можна приєднувати до потрібних аплікацій. Я швиденько то налаштував, потім підняв Redis, який потрібен мені для Sidekiq.

Далі просто. Fly працює з докер-контейнерами, тому вам треба або вже мати свій, або fly launch детектить що за мова та фреймворк використовується і генерує Dockerfile під вас.

Потім потрібно встановити секрети (ключі AWS і так далі) через fly secret set і нарешті fly deploy. Ця команда підніме ваш особистий безкоштовний білд-сервер, надішле туди сорци, збере докер імедж, і задеплоїть його.

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

Після першого деплою апки можна додати домени та сертифікати.

Через день я подивився у скільки мені то все обійшлося і був приємно здивований—я вліз у Free Tier і витратив лише пару центів.

Про мережу я розповім пізніше, але Fly мені так сподобався що я вирішив перенести туди всі свої проекти з Heroku. Сказано—зроблено. Завдяки тому що Heroku ефемерний, то мені потрібно було лише забрати звідти дампи баз.

Вчора я переніс останній проект—adopt.ua, довелось трошки повозитися з докер імеджом, бо там використовується старий вебпакер, але вреші все запрацювало. Мене приємно вразила швидкість роботи. Сайт став буквально літати. Можете поклікати котиків та оцінити.

Heroku це просто надбудова на AWS, тому він працює достатньо швидко, але зовісм не так як Fly, який розгортає ваші контейнери прямо на залізі. За рахунок цього вони по-перше, значно дешевші та по-друге, більш швидкодійні.

Через пару днів буду розуміти у скільки мені то все обійдеться, але схоже що я легко влізу в 15$ на місяць за всі проекти.

Якщо ви хостите свої проекти на DO/AWS/Heroku ще десь то наполегливо рекомендую подивитися на fly.io.

#проекти #інструменти
permalink | donate
2.6K viewsedited  06:15
Открыть/Комментировать
2022-08-23 09:15:12 До 31-ої річниці Незалежності допомагаємо ДОУ зібрати 31 мільон гривень на безпілотник PD-2

https://dou.ua/forums/topic/39602/

Переходьте за посиланням, донатьте будь-яку суму, ставте + в коментарях, залипайте на прогрес бар! Лайк шер репост.

Я навіть встиг на мить увірватися до топ10 але швидко здав позиції потужним кабанчикам.

Також не забувайте донатити разом зі мною у @Donate1024Bot
2.6K viewsedited  06:15
Открыть/Комментировать
2022-08-22 09:15:00 Новини Donate 1024: статистика монобанок, реквізити, алгоритм видачі, спрощення UI

Того тижня я сумлінно працював над покращенням @Donate1024Bot. Зараз є 380 підписників з активованими сповіщеннями.

Спрощення UI

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

Реквізити

Номери карток та монобанок виділені в окрему секцію та відформатовані так щоб одним кліком копіювати номер картки.

Статистика монобанок

Для усіх монобанок два рази на годину оновлюється статистика. Коли вранці вам прийде новий збір, то в ньому вже буде вказаний прогрес.

Алгоритм видачі

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

Врешті, враховуючи наявні дані я прийняв рішення залишити все як є: видавати всім один і той самий рандомно обраний збір. Наша потужність складає десь ~10 000₴ на день. В базі немає таких зборів, які би могли бути закриті цією сумою, тому вважаю що немає змісту робити якісь калькуляції та пріоритезації.

Моя ідея полягала в тому що я не роблю складного морального вибору. За мене це робить постгрес. Якщо би ми мали потужність в 300 000₴ то була б звичайно інша розмова бо дійсно виникла ситуація з закриттям збору за раз. Це класна проблема, і я б хотів її мати, але зараз це не так. Тому покладаємось на order by random().

Нотифікація користувачам про схвалення їх збору

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

Інстаграм та модерація зборів

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

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

На тому все!

Підключайте собі @Donate1024Bot, та долучайтеся до мене у марафоні щоденного донату в розмірі 1024 гривні на потребі армії!

#проекти #війна #donate1024
permalink | donate
2.8K viewsedited  06:15
Открыть/Комментировать
2022-08-20 10:00:00 Обери еміграцію.

Вибери безпеку. Вибери країну, вибери місто, вибери район. Вибери хороші дороги. Вибери роботу в автомотіві, зарплатну стелю в 4k євро та відсутність кар'єрних перспектив. Вибери малолітражку. Вибери іпотеку на 30 років під 2.5% та справно сплачуй внески. Вибери існування від зарплати до зарплати. Вибери прогресивний податок. Вибери садочок, вибери школу. Вибери кешбек та податкові вирахування. Вибери поганий сервіс та магазини що зачиняються о п'ятій вечора. Вибери тільки готівкове обслуговування. Вибери дорогий та неякісний інтернет. Вибери безліч заборон та обмежень на все навколо. Вибери сортування сміття. Вибери мігрантські квартали. Вибери круасан по 10 євро. Вибери мовні екзамени та процедуру отримання посвідки на постійне проживання. Вибери черги в лікарнях. Вибери мультикультуралізм. Вибери чесні суди та співгромадян-стукачів. Вибери літкод. Вибери багатомісячну підготовку до співбесід. Вибери behavioral interview. Вибери фаанг та ретельно працюй над promotion package. Вибери $500k. Вибери rest-and-vest, вибери картку революта, вибери стоки. Вибери пусті балачки, вибери розмови про гроші. Вибери студію за 6000$, вибери наркоманів на вулицях, вибери чужий культурний контекст. Вибери злочинність, вибери рівність, вибери дискримінацію, вибери толерантність. Вибери податкового адвоката. Вибери медичний туризм до Турції. Вибери джанк фуд, підписку на нетфлікс, надмірну вагу. Вибери спеку, вибери холод. Вибери мігрантські чати, вибери бюрократію, вибери паперову пошту. Вибери кілометрові гайди, вибери релокаціїні аґенції. Вибери бічування по різним квартирам, AirBnb та життя на валізах. Вибери прикордонника який візьме хабаря, вибери нічну мандрівку через ліс. Вибери петицію про скасування заборони на виїзд чоловіків. Вибери чат «повістки львів».

Але навіщо мені це все? Я не став обирати еміграцію, я обрав дещо інше. Чому? Жодних «чому». Які можуть бути «чому» коли є Україна та КВЕД 62.01?



#кулсторі #війна
permalink | donate
3.8K viewsedited  07:00
Открыть/Комментировать
2022-08-17 11:25:39 Новини Donate 1024: перші користувачі, безумовна підписка, верифікація, «статистика»

Всім привіт! Завдяки публікації на каналі ҐРУНТ бот @Donate1024Bot підключило собі багато користувачів—більше 200! Я був трошки неготовий до такого . Дякую всім хто приєднується! Наразі в нас є 320 людей, тобто продукт комусь потрібен. Радий що моя гіпотеза підтвердилась.

Безумовна підписка

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

Верифікація зборів

Найперше питання у всіх—яким чином буде перевірятися честність волонтеру або фонду? На початку розробки я не ставив собі за мету робити ретельну верифікацію і хотів обмежитися переглядом профілю волонтера щоб переконатися що він раніше робив звіти. Мені здавалося що це не так важливо, бо я довіряю людям, але виявилось що інші хотіли би мати більше впевненості. В мене є великий нетворкінг серед волонтерів, тому незабаром ми додамо «верифіковані» збори, від волонтерів, яких я знаю особисто або через одне рукопотискання.

«Статистика»

Я зробив UI збору більш цікавим і додав кілька кнопок: зробив донат/не зробив донат/статистика. Нажаль, немає ніякої надійної можливості дізнатися чи були транзакції, але якщо ви задонатили то заохочую вас натиснути кнопку «донат зроблено». Якщо збір вам не подобається—тисніть кнопку що не подобається. Статистика відображає кількість людей яким було надісланий конкретний збір, та відповідно кількість людей які натиснули кнопки зробив/не подобається.

Що далі?

Додам верифіковані збори. Перероблю UI боту щоб були кнопки замість незручних команд. Додам функцію «поскаржитися на збір».

На тому все! Підключайтеся до @Donate1024Bot та приєднуйтесь до нашого щоденного марафону донатів!

#проекти #війна #donate1024
permalink | donate
3.4K viewsedited  08:25
Открыть/Комментировать