Как стать автором
Обновить
-11
0

Пользователь

Отправить сообщение

очередь на место гендиректора еще длиннее

Cortana в России бесполезна

Рефакторинг по мелочи вообще не эффективен

Иногда нужно поднять старые пласты говна. Вы будете делать это в своё время и на энтузиазме?

в мелких масштабах и гражданам РФ

а потом тебя спросят почему ты не занимаешься основной задачей

Мой ответ на все вопросы: плохо

И что теперь?

Не просить время на рефакторинг...

Спорно.

Надо спросить. Получить отказ. Решить что руководитель идиот и зря получает деньги. А вот потом уже тратить на реф свои собственные ресурсы

Здесь не хватает бенчмаркинга

И всё это будет работать только по платной подписке

"Вечерело. Тяжелые свинцовые тучи медленно плыли по небу. Ветер играл с опавшими листья, то поднимая их в высь, то прибивая к земле. Молодой парень проводил взглядом пролетевший мимо листок и посильнее затянул ремень на грязно-сером пальто. Стряхнув с чемодана упавшие листья, он, вздохнув, пошел к покосившемуся крыльцу старого заброшенного дома…"

Я лет в 14 написал такое.

Только гораздо красивее. Сжёг вместе со вторым томом мертвых душ. Теперь жалею.

Молодцы!

Ну вот, а говорят CI/CD на монолите невозможен. Надо просто добавить простой советский разбить на быстрые стадии чтобы можно было быстро гасить инстанс

Ага

Клавиатура think pad была прекрасна. Зачем испортили?

Вот прямо захотелось послушать историю боли как " разработчики страдали с монолитом. Коммиты не коммитились, абсолютно всё было плохо, релиз раз в месяц, ужасные миграции"

То есть как девопсы не справились с монолитом, перешли на микросервисы и подложили бяку всем и разработчикам и себе.

И почему не справились.

Но читать отзывы конечно же никто не собирался© Каневский жпг

использонвание аллокаторов и впрямь странное

fn createAndSumList(allocator: std.mem.Allocator, size: usize) i32 {
    var list = std.ArrayList(i32).initCapacity(allocator, size) catch |err| {
        std.log.err("Failed to initialize ArrayList: {}", .{err});
        return 0;
    };
    defer list.deinit();

    // Заполняем список случайными числами
    for (0..size) |_| {
        const random_num = std.rand.random().int(i32);
        try list.append(random_num);
    }

    // Вычисляем сумму элементов
    var sum: i32 = 0;
    for (list.items) |item| {
        sum += item;
    }

    return sum;
}
const std = @import("std");

fn createDynamicArray(comptime T: type, comptime size: usize, allocator: std.mem.Allocator) ![]T {
    var arr = try allocator.alloc(T, size);
    errdefer allocator.free(arr);
    return arr;
}

fn main() !void {
    const allocator = std.heap.page_allocator;

    // Создаем динамический массив i32 размера 5 во время выполнения
    const int_array = try createDynamicArray(i32, 5, allocator);
    defer allocator.free(int_array);
    std.debug.print("int_array: {any}\n", .{int_array});

    // Создаем динамический массив f64 размера 3 во время выполнения
    const float_array = try createDynamicArray(f64, 3, allocator);
    defer allocator.free(float_array);
    std.debug.print("float_array: {any}\n", .{float_array});
}

приседать с асинхронностью/многопоточностью

вообще ни разу не сложно на C# да и на питоне

по сравнению с микросервисами

Говорят, а/б тестирование удобно на микросервисах: сделал два варианта и балансируй количество вызовов каждый версии, потом смотри аналитику поведения пользователей

Мотиватор один: деньги.

Извините, ни на что другое не куплюсь.

А вот демотиваторов много.

  1. Когда ты не на своём месте и талант твой не заинтересован. Заниматься низкопроизводительным трудом это такое же унижение как драить туалеты зубной щеткой.

  2. Усталость. А когда устаешь ты не можешь быть десятикратным и смотри пункт первый

  3. Заносчивость руководства. Руководители пусть работают эффективно, иначе там за забором целая очередь желающих на его должность. Ничего странного не вижу когда главный инженер или CIO получает больше чем финансовый директор, скажем. А хороший программист больше руководителя его отдела.

  4. Незатребованность результатов, работа в стол

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

PS

Ну да, ещё мотивирует страх что тебя перестанут видеть как чемпиона. Замечал, что могу лениво работать неделю, а потом впахивать 24 часа если есть риск что скажут "эх ты..., обыкновенный стал, а ведь раньше мог уух!" Но это работает только на коротких дистанциях

Да, мотивирует ощущение что ты классный, затребованный. Это где-то на вершине пирамиды потребностей Маслоу.

Но затребованность нынче измеряется деньгами.

Грабли в resume driven development

Ну и ваш любимый чат говорит что лучше сделать всё скриптами на питоне

import feedparser
import pyttsx3
import telegram
from flask import Flask, request, abort
from datetime import datetime
import asyncio

# Конфигурация
RSS_FEED_URL = "https://example.com/rss"
TELEGRAM_BOT_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN"
TELEGRAM_CHAT_ID = "YOUR_TELEGRAM_CHAT_ID"
LAST_PUBLISHED_ENTRY = None

# Инициализация компонентов
rss_feed = feedparser.parse(RSS_FEED_URL)
tts_engine = pyttsx3.init()
telegram_bot = telegram.Bot(token=TELEGRAM_BOT_TOKEN)

app = Flask(__name__)

async def process_news_item(entry):
    """Асинхронная обработка одной новостной статьи"""
    title = entry.title
    content = entry.summary

    # Генерация аудио
    tts_engine.save_to_file(content, f"{title}.mp3")
    tts_engine.runAndWait()

    # Публикация в Telegram
    with open(f"{title}.mp3", "rb") as audio_file:
        await telegram_bot.send_audio(chat_id=TELEGRAM_CHAT_ID, audio=audio_file, caption=title)

    print(f"Новость '{title}' успешно опубликована в Telegram!")

@app.route("/webhook", methods=["POST"])
async def handle_webhook():
    """Обработка веб-хука от RSS-ленты"""
    global LAST_PUBLISHED_ENTRY

    # Проверка подлинности веб-хука
    if request.headers.get("X-Hub-Signature") != "YOUR_WEBHOOK_SECRET":
        abort(403)

    # Обновление RSS-ленты
    rss_feed = feedparser.parse(RSS_FEED_URL)

    # Обработка новых новостных статей
    for entry in rss_feed.entries:
        if entry.id != LAST_PUBLISHED_ENTRY:
            await process_news_item(entry)
            LAST_PUBLISHED_ENTRY = entry.id
        else:
            break

    return "OK"

if __name__ == "__main__":
    app.run()

почему вы были настолько уверены что нужны микросервисы что даже не спросили вашего чатика об этом?

и как определяется тематика новостей? не брать все же новости со всех сайтов

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность