Будни программиста
55 subscribers
34 photos
2 videos
2 links
Канал о рабочих буднях разработчика. Рассказываю о ситуациях, с которыми сталкиваюсь в течение дня. А так же о том, что мне интересно: финансы, крипта, здоровье и полезные заметки о жизни.
Download Telegram
Как вам такая красота? Отложили булочку в сторону?
👍3😱21
Учимся общаться с девушками 😁
😁6💩2
Когда сверка данных приносит удовольствие

Моей самой не любимой работой в программировании является сверка данных 🆘 Это занятие меня никак не развивает. Ты просто сидишь и ищешь ошибку. Причин для её возникновения миллион и надо перебрать кучу разных вариантов преобразования данных, что бы найти косяк в алгоритме 🤯

Сегодня у меня была такая задача, только в этот раз я от неё кайфанул 🤩 Ранее я писал, что собирал куб данных для получения средневзвешенной ставки. После успешного заполнения таблиц пришла очередь проверить корректность значений 🧑‍🎓

Сначала пытался решить задачу глобально, взяв для проверки крупного партнёра. Это было ошибкой. Слишком много записей приходится выгружать, сравнивать. Время выполнения запроса не мгновенное, да и строк слишком много, легко запутаться 😵‍💫 Решил спуститься до уровня одной торговой точки.

Не буду расписывать все шаги, что пришлось выполнить. Скажу только, что сначала получил итоговые значения для точки в экселе. А под конец дня получил их же через запросы в свои кубы. Данные совпали до 4 знака после запятой. Кайф! 🥳

Приятно осознавать, что результат, к которому шёл несколько месяцев (подготовка одних таблиц, выверка других, написание алгоритмов обработки) достигнут, причём с высочайшей точностью 🎯 И конечно приятно, что всё проделано не зря. Теперь и расчёты будут точнее и аналитика детальнее.

А от чего в работе кайфуете вы?
Please open Telegram to view this post
VIEW IN TELEGRAM
Вчера делал презентацию для выступления. Решил, что данный материал будет полезен и вам.

В работе регулярно встречаются задачи, которые необходимо выполнять с определенной периодичностью. Например, обновление раз в час цен в интернет-магазине. Для этого в cron кладется задание на выполнение скрипта по расписанию. Может так случиться (а случается это довольно часто), что скрипт не успевает выполниться за отведенное время. Через час запускается еще одна такая же задача. Два скрипта работают параллельно. Спустя еще час запускается третий скрипт. Нагрузка на сервер возрастает. Избежать такой ситуации помогает проставление неких маркёров или флагов, которые показывают, что процесс еще запущен и второй экземпляр запускать не надо. Существует 2 хороших и 2 так себе варианта решения этой проблемы.

Плохие варианты это хранить флаг в оперативке (кэш) или базе данных. Если кэш сбросят или перезагрузят кэширующий сервер, ваш флаг пропадет и привет дублирующий процесс. Если ваш флаг в базе и случился какой-то сбой, перезагрузка сервера, то новый скрипт вообще не запустится. У вас в базе флаг, что процесс запущен. Придется лезть в базу и обновлять значение. Оба эти варианты еще плохи тем, что в случае необработанной ошибке в скрипте, вас ждут те же проблемы, что написал выше.

Продолжение ⬇️
Правильные же варианты выглядят так. Это либо делать блокировку файла (flock(fopen('updateprices.txt', 'r+'), LOCK_EX | LOCK_NB)), либо записывать в файл id запущенного процесса и при попытке запуска нового скрипта проверять процесса по id из файла (posix_kill(<pid из файла>, 0)).

Второй вариант чуточку надежнее, т.к. запрашивает у сервера запущен ли проверяемый процесс или нет. В первом варианте при какой-либо ошибке и "падении" процесса блокировка снимается, но все равно есть нюансы и на 100% расчитывать нельзя. Зато в варианте с блокировкой можно задать ее тип и тогда второй запущенный скрипт либо сразу отваливается, либо ждет выполнения предыдущего. Такую же реализацию можно сделать и через posix_kill, но это чуточку сложнее чем с flock.

Надеюсь, эта заметка была полезна и сподвигла писать более грамотный код.
🔥2
Кто такое придумывает

Недавно служба безопасности работодателя ввела новые ограничения на использование рабочей техникой. Из-за них стало невозможно 🖕 подключиться к своему серверу, зайти в телеграм⛔️, на различные сайты вход так же заблокирован. Решено было купить личный ноутбук.

Выбирал я между Б/У маком, т.к. рабочий комп у меня от Эпл 💻, и новым ноутом на винде. Windows в целом мне привычен, набор нужных программ известен. Для разработки 🧑‍💻 в целом должен подойти. Бюджет на покупку был до 60к.

Долго думал, что же взять. У каждого варианта есть свои плюсы и минусы. Решено было брать новый ноут.

После беглого изучения предложений на рынке, решил взять Huawei Mate D15. Цена на него чуть выше бюджета, зато должны были дать хороший кэшбек 💸💸💸 (щедрая промоакция от Мегамаркета). За итоговую сумму цена более чем приятная.

И вот наступил долгожданный день доставки. Ноут забрал, проверил в пункте выдачи. Все с ним хорошо кроме экрана. Господа, это пипец 😭 После мака с 4к разрешением смотреть в 1920x1080 боль и страдания. Думал, что когда говорят «я вижу пиксели», это придирки и выделывание отдельных личностей. Но нет, увы, это так. Шрифты на экране как будто из Майнкрафта, все квадратное 😳

А еще столкнулся с проблемой, что кнопка выключения не переводит ноут в режим сна 😴 Жмешь на нее, и ноль реакции. А, оказалось, что жать-то надо сильнее. Вот прям продавливать. Какому инженеру пришло в голову такое решение? На маке ты слегка жмешь кнопку и она отправляет ноут в сон, а если держать долго, то выключаешь. Но хорошо, что хоть сканер отпечатка пальца работает корректно.

В общем, после покупки остался с чувством легкого разочарования 😭 Вроде и комп мощный, и задачи тянет, но вот в мелочах (еще например громкий клик тачпада) погрешности, которые не дают полностью быть удовлетворенным покупкой. И нет-нет, да и задумываешься о том, что надо было брать мак про 2018 года. Почему-то в 23 года производители себе позволяют такие огрехи.
 
А что бы выбрали вы? Мак Про 2018 года или такой же по характеристикам, но новый ноут на винде?
Please open Telegram to view this post
VIEW IN TELEGRAM
Замена рабочего инструмента

Долго сомневался, что делать с новым ноутом. В итоге решил продавать на авито. Выставил на 15к дешевле, чем новый стоит в магазине. С учётом бонусов, которые должны начислить, я ещё буду в небольшом плюсе 🤑

Первая попытка продажи оказалась неудачной. Днем написал мужик, предложением купить на 5к дешевле моей цены. Сторговались где-то по середине Договорились, что вечером приедет, потестит. Если всё ок, то забирает🤩
Тороплюсь с работы, что б успеть к договорённому времени. Проходит полчаса, покупателя нет. Чел появляется онлайн, но на сообщения не отвечает, трубку не берет. В общем, слился дядька. Мог бы хотя бы предупредить 🤬

Спустя неделю появляется кто-то, кто ещё заинтересовался ноутом. Договариваемся на вскр (сегодня) на полдень. Парень настроен серьёзно. Полагаю, что приедет и купит.
Параллельно начинаю искать б/у мак про 🧑‍💻(такой же как рабочий). На авито есть пару интересных объявлений. Откладываю в Избранное.

В этот раз всё сложилось удачно 🔥 Покупатель приехал, проверил, заплатил. Дальше полчаса перестанавливаю винду, дабы удалить старые данные. Расстаёмся. Сразу выдвигаюсь 🏎 за заменой рабочей машины.

Нашёл контору с большим выбором прошек 18 года. Первый вариант был с битыми пикселями, второй как будто вскрывался, у третьего силиконовая накладка с рус. буквами на клавиатуре - не вариант 😠 Только 4й вариант меня устроил.

Пока занялся первичной настройкой и всё на первый взгляд ок. Но ощущение, что где меня "налюбили" остаётся 🐇

Расскажите, у вас был опыт покупки чего-то крупного на авито? Как боретесь со страхом, что могли не заметить какой-то косяк?
Please open Telegram to view this post
VIEW IN TELEGRAM