Главная Юзердоски Каталог Трекер NSFW Настройки

Программирование

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 53 5 21
Пиздеж про ИИ-кодинг в интернетах Уже около двух лет я иногда тыкаю модели для вайбкодинга. И больш Аноним 23/01/26 Птн 08:19:44 3630193 1
16955895638957.png 148Кб, 686x743
686x743
Пиздеж про ИИ-кодинг в интернетах

Уже около двух лет я иногда тыкаю модели для вайбкодинга. И большие платные на примере claude code, и опенсорсные модели. Они все бесполезны в работе кроме как простой справочни по технологиям которые ты мало знаешь. Еще иногда скелет проекта могут нормально накидать. Но только для питона/пхп/js . Все остальные задачи они либо сделать не могут, либо делают очень хуево.

Но тут и на хабре я постоянно читаю, что у людей там просто революция нахуй и они ниибаца нейротворцы, которые жгут токены только в путь. Мол они теперь стали продуктивнее в 5 раз. Что заменили всех джунов в команде. И т.п. Вот на оппике пример, чел из разряда нейрооптимистов. Лезу к нему в гитхаб https://github.com/alexmasyukov?tab=repositories и там нету никакой сверхпродуктивности. Со времен начала эпохи нейросетей только один проект, смотрю его.

В десктопном софте для макоси особо не разбираюсь. Но слышал, что тесты нейронки генерят только в путь. Поэтому открыл единственный коммит https://github.com/alexmasyukov/murmurix/commit/3cbe275905580f59bd52052b061691349989e766 и там ебаная хуета в плане тестов. Чтобы вы понимали - это апплет на панель макоси для быстрого перевода речи в текст. Ну т.е. на каком-то питоне это была бы сотня строчек наверное. Дернул утилиту/либу записи и сохранил в файл. Скормил файл whisper. Все. Но там тестируется всякая шняга типа генерации wav, работы с mp3, ogg, небом, аллахом, тестирование mime-type для этой хуйни. Сам ридми к репу типичный набор нейросблева.

Короче я не первый месяц эту хуйню наблюдаю у разных людей. И никто сука из пиздящих про то какой он аи-кодер и что будущее наступило, не может показать ебаный результат.

Что за хуйня происходит? Это массово проплаченные АИ-компаниями реклама? Или просто куча городских сумасшедших, которые не понимают какое говно им пишет сетка, но мнящие себя погромистами? Или реально столько людей вокруг, которые пишут хуже чем нейронка? Или они все боятся признаться, что не осилили ИИ, хотя осилить его нельзя? Или это троллинг такой?

сорян за вчерашний тред в пораше, бухой был не туда попал
Аноним 23/01/26 Птн 08:30:10 3630196 2
Чмо, не думал купить платную модель хоть раз чтоб та держала контекст всего проекта? Соси хуй вкатунец
Аноним 23/01/26 Птн 09:07:40 3630205 3
>>3630196
Мог бы ты расписать пару задач и характер проекта, которые ты успешно решаешь при помощи модели? С подробностями.
Аноним 23/01/26 Птн 09:20:52 3630208 4
>>3630205
Просто купи себе подписку на гпт, она стоит блядских 20 бачей и попробуй сам. Я сайт для своего бизнеса сделал на гпт,хотя фронт не знаю. Бэк тоже почти весь на гпт
Аноним 23/01/26 Птн 09:53:45 3630219 5
>используешь старую бесплатную модель
>даже не самая мощная
>что-то требуешь
Просто нахуй иди

- мимо сократили штат с 14 человек до 2х, имея нейросети в команде. Подняли оклад с 200к до 500к за это.
Аноним 23/01/26 Птн 10:12:22 3630230 6
Аноним 23/01/26 Птн 10:43:53 3630254 7
>>3630193 (OP)
Ты читаешь шизофреников и пиздаболов которые вообще ни разу не кодили. У них нет продуктов, они пиздятю

Чтобы вся эта поебота работала - нужно создавать агентов вручную, ручками прям сидеть и писать чем должен являтся каждый агент. Каждый "агент" заточен под свою задачу - написание кода, проверка кода, соответствие спецификациям, соответствие стилю, проверка на лишний код, проверка на достижение минимально возможной логики, проверка на необходимость логики. И даже тогда результат не гарантирован, на простейшую задачу уходит 100-300 генераций, иногда 500-1000. У шизов типо >>3630196 >>3630219 >>3630208 этих даунят во-первых нет таких денег, во-вторых они слишком тупы для такого.

Всё что нейрокалыч пишет - туповатое и багнутое дерьмо, офк ни в каком реальном проекте это не работает вообще.
Аноним 23/01/26 Птн 11:23:09 3630297 8
>>3630254
>И даже тогда результат не гарантирован, на простейшую задачу уходит 100-300 генераций, иногда 500-1000.
Claude Code сжирает в месяц 100-200 баксов максимум
Аноним 23/01/26 Птн 11:24:41 3630300 9
>>3630193 (OP)
>Все остальные задачи они либо сделать не могут, либо делают очень хуево.
Всё так.
Агенты хуета, но чат гпт может что-то относительно рабочее выдать, если надо писать какие-нибудь парсеры генераторы, алгоритмы вычисления. Да и то не с первого раза, но это проще чем самому ебаться.

А вот с бизнес логикой всё плохо у нейронок, слишком тупые для этого
Аноним 23/01/26 Птн 11:45:51 3630329 10
>>3630297
Да похуй мне на тебя, шизло
Аноним 23/01/26 Птн 13:53:54 3630485 11
>>3630193 (OP)
>не понимают какое говно им пишет сетка, но мнящие себя погромистами
this
Скорее всего, такие люди всю жизнь занимались какими-то простыми вещами и даже не знают, что бывает что-то более сложное. А простые задачи ллм действительно решает, поэтому им кажется, что теперь все можно решить таким способом
Аноним 23/01/26 Птн 15:13:18 3630553 12
>>3630254
>Всё что нейрокалыч пишет - туповатое и багнутое дерьмо

Дваждую.
Простые алгоритмы, типа написать код открытия файла на _языкнейм оно может, но в сложную задачу с осознанием контекста, проектированием архитектуры - нет.
Аноним 23/01/26 Птн 15:33:59 3630569 13
>>3630193 (OP)
>Уже около двух лет я иногда тыкаю модели для вайбкодинга. И большие платные на примере claude code, и опенсорсные модели. Они все бесполезны в работе кроме как простой справочни по технологиям которые ты мало знаешь

Хуила, почему ты сначала пишешь что ты эксперт в моделях, а потом утверждаешь, что они - простой справочник?

Ты понимаешь что ты пиздун-школьник с дегенеративным мышлением, уёбище, которое вчера прибежало в "Политику" и засунуло туда свой высер?

То, что LLM давно не справочник, а машина, которая пишет код - все знают.

Давай выблядок блядский какую-нибудь задачу на любом популярном языке программирования, засунем её в любой LLM и посмотрим на результат, мразь?

Вообще я офигеваю с двачеровских экспертов. Корпорации пилят нейросети, вкладывают в это миллионы, но анонимное чмо второй день доказывает что LLM не нужны.

Жду задачу и кодовую базу, кусок говна.
Аноним 23/01/26 Птн 16:38:01 3630627 14
>>3630569

Ну давай попробуем:

Write a python script for diary of daily repetative tasks or "routines". It must use TKinter gui.
On start script opens file named "tasks.txt", contained list of "routines", one per line. Fo example:

eat shizaprotective tablet
troll on dvach
wipe ass after taking shit
etc

Script reads list of routines, sorts it alphabetically, and create TKinter window with buttons - one button per "routine". If "routine" button already had been clicked today, button must be at the end of the list. All clicked "routines" at the end of the list also sorted alphabetically. At the end of the clicked button must be added number of today clicks on it.

When user clicks button, script logs that click to file named "diary.yaml". Script must create entry for each day and add clicked "routine" to current day. Each "routine" entry must have a list of clicked times. The "diary.yaml" file must have such structure:

- 2002-12-01
- eat shizaprotective tablet: [ "2002-12-01 08:00", "2002-12-01 18:00" ]
- troll on dvach: [ "2002-12-01 16:00", "2002-12-01 16:15", "2002-12-01 16:30"]

After click order of buttons must be reordered according to the rules described before, and number of clicks updated accordingly.


Напишет, будем делать рефакторинг.
Аноним 23/01/26 Птн 17:01:58 3630659 15
>>3630627
>Ну давай попробуем
Всё ясно. Вот типичный свидетель секты "LLM ничего не умеет". Даже ТЗ не удосужился написать на русском, скопипастил какую-то хуету на англицком.

Это не техзадание. Это какая-то абстрактная хуита из разряда "дверь мне запили".
Аноним 23/01/26 Птн 17:03:55 3630663 16
>>3630659
>Это не техзадание
Покажи техзадание
Аноним 23/01/26 Птн 17:22:26 3630685 17
image.png 12Кб, 415x645
415x645
Вообще мне кажется с таким справится ща попробуем
#!/usr/bin/env python3
"""
Daily Routine Tracker - A Tkinter GUI application for tracking daily repetitive tasks.
"""

import tkinter as tk
from tkinter import messagebox
from datetime import datetime
from pathlib import Path
import yaml
import os


class RoutineDiary:
def __init__(self, root):
self.root = root
self.root.title("Daily Routine Tracker")
self.root.geometry("400x600")

self.tasks_file = Path("tasks.txt")
self.diary_file = Path("diary.yaml")

self.tasks = []
self.today_clicks = {} # {task_name: [datetime, datetime, ...]}
self.buttons = {} # {task_name: button_widget}

self.load_tasks()
self.load_today_clicks()
self.create_gui()

def load_tasks(self):
"""Load tasks from tasks.txt file."""
if not self.tasks_file.exists():
messagebox.showerror("Error", "tasks.txt file not found!")
self.root.destroy()
return

with open(self.tasks_file, "r", encoding="utf-8") as f:
self.tasks = [line.strip() for line in f if line.strip()]

self.tasks = sorted(self.tasks, key=str.lower)

def load_diary(self):
"""Load the entire diary from diary.yaml."""
if not self.diary_file.exists():
return []

with open(self.diary_file, "r", encoding="utf-8") as f:
content = f.read()
if not content.strip():
return []
try:
data = yaml.safe_load(content)
return data if data else []
except yaml.YAMLError:
return []

def load_today_clicks(self):
"""Load today's clicks from diary.yaml."""
today_str = datetime.now().strftime("%Y-%m-%d")
self.today_clicks = {}

diary = self.load_diary()
if not diary:
return

# Find today's section in the diary
i = 0
while i < len(diary):
if diary == today_str:
# Found today's date, load all tasks until next date or end
i += 1
while i < len(diary):
item = diary
if isinstance(item, dict):
for task_name, timestamps in item.items():
if isinstance(timestamps, list):
self.today_clicks[task_name] = [
datetime.strptime(ts, "%Y-%m-%d %H:%M")
for ts in timestamps
]
i += 1
elif isinstance(item, str) and len(item) == 10 and item[4] == '-':
# Next date found
break
else:
i += 1
break
i += 1

def save_diary(self):
"""Save click to diary.yaml."""
today_str = datetime.now().strftime("%Y-%m-%d")
diary = self.load_diary()

# Find and remove today's section if it exists
new_diary = []
i = 0
while i < len(diary):
if diary == today_str:
# Skip today's date and all its tasks
i += 1
while i < len(diary):
item = diary
if isinstance(item, str) and len(item) == 10 and item[4] == '-':
# Next date found
break
i += 1
else:
new_diary.append(diary)
i += 1

# Add today's section with updated data
if self.today_clicks:
new_diary.append(today_str)
for task_name in sorted(self.today_clicks.keys(), key=str.lower):
timestamps = [dt.strftime("%Y-%m-%d %H:%M") for dt in self.today_clicks[task_name]]
new_diary.append({task_name: timestamps})

# Write to file
with open(self.diary_file, "w", encoding="utf-8") as f:
yaml.dump(new_diary, f, default_flow_style=None, allow_unicode=True, sort_keys=False)

def create_gui(self):
"""Create the main GUI."""
# Title label
title_label = tk.Label(
self.root,
text="Daily Routines",
font=("Arial", 16, "bold"),
pady=10
)
title_label.pack()

# Date label
today_str = datetime.now().strftime("%Y-%m-%d")
date_label = tk.Label(
self.root,
text=f"Today: {today_str}",
font=("Arial", 12),
pady=5
)
date_label.pack()

# Scrollable frame for buttons
container = tk.Frame(self.root)
container.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)

canvas = tk.Canvas(container)
scrollbar = tk.Scrollbar(container, orient="vertical", command=canvas.yview)
self.scrollable_frame = tk.Frame(canvas)

self.scrollable_frame.bind(
"<Configure>",
lambda e: canvas.configure(scrollregion=canvas.bbox("all"))
)

canvas.create_window((0, 0), window=self.scrollable_frame, anchor="nw")
canvas.configure(yscrollcommand=scrollbar.set)

# Bind mouse wheel scrolling
def on_mousewheel(event):
canvas.yview_scroll(int(-1 * (event.delta / 120)), "units")

def on_mousewheel_linux(event):
if event.num == 4:
canvas.yview_scroll(-1, "units")
elif event.num == 5:
canvas.yview_scroll(1, "units")

canvas.bind_all("<MouseWheel>", on_mousewheel)
canvas.bind_all("<Button-4>", on_mousewheel_linux)
canvas.bind_all("<Button-5>", on_mousewheel_linux)

scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)

self.canvas = canvas
self.update_buttons()

def get_sorted_tasks(self):
"""Get tasks sorted according to the rules."""
not_clicked = []
clicked = []

for task in self.tasks:
if task in self.today_clicks and len(self.today_clicks[task]) > 0:
clicked.append(task)
else:
not_clicked.append(task)

not_clicked.sort(key=str.lower)
clicked.sort(key=str.lower)

return not_clicked + clicked

def update_buttons(self):
"""Update the button display."""
# Clear existing buttons
for widget in self.scrollable_frame.winfo_children():
widget.destroy()

self.buttons = {}
sorted_tasks = self.get_sorted_tasks()

for task in sorted_tasks:
click_count = len(self.today_clicks.get(task, []))

if click_count > 0:
button_text = f"{task} ({click_count})"
bg_color = "#90EE90" # Light green for clicked
else:
button_text = task
bg_color = "#F0F0F0" # Default gray

btn = tk.Button(
self.scrollable_frame,
text=button_text,
font=("Arial", 11),
bg=bg_color,
activebackground="#ADD8E6",
anchor="w",
padx=10,
pady=5,
command=lambda t=task: self.on_task_click(t)
)
btn.pack(fill=tk.X, pady=2)
self.buttons[task] = btn

# Update scroll region
self.scrollable_frame.update_idletasks()
self.canvas.configure(scrollregion=self.canvas.bbox("all"))

def on_task_click(self, task_name):
"""Handle task button click."""
now = datetime.now()
# Round to minute (remove seconds/microseconds for cleaner timestamps)
now = now.replace(second=0, microsecond=0)

if task_name not in self.today_clicks:
self.today_clicks[task_name] = []

self.today_clicks[task_name].append(now)

self.save_diary()
self.update_buttons()


def main():
root = tk.Tk()
app = RoutineDiary(root)
root.mainloop()


if __name__ == "__main__":
main()
Аноним 23/01/26 Птн 17:26:39 3630687 18
>>3630663
>Покажи техзадание
ЛЛМке нужно порционально скармливать требования - куски кода, лежачие в зоне ответственности той задачи, которую решаешь.
Аноним 23/01/26 Птн 17:35:04 3630695 19
>>3630687
Это какая-то дрочка в презервативе.
То модель не та, то версия модели не та, то надо не просто писать что ты хочешь от нейронки в виде промпта, а отдельные спецификации в виде .md файликов, а потом уже и этого не хватает и надо ей сам код совать, а потом еще и пошагово писать что и как нужно сделать, как будто надиктовываешь коды слабоумному. А, ну и конечно без RAG и MCP сервера context7 ничего не заведется.

Нет бы честно признать, что нейронки имеют ограниченное пространство для применения, так дурачки зачем-то забесплатно пытаются всех уверить в том, что они просто не умеют этими нейронками пользоваться. Мол, есть какие-то магические приемы, с которыми все полетит как надо, а те, у кого не полетело, луддиты и лоускиллы.
Аноним 23/01/26 Птн 17:37:29 3630698 20
>>3630297
>Claude Code сжирает в месяц 100-200 баксов максимум
Это если ты подписку купил, где за 3 дня интенсивного использования ты все месячные лимиты сожжешь.

Если ты собрался покупать Opus 4.5 в виде токенов через опенроутер, то у тебя в сутки будет 100-200 баксов сжигаться.
Аноним 23/01/26 Птн 17:44:38 3630703 21
>>3630687
Выходит то что что нахуярить макросами на целевом ЯП, только будешь понимать что происходит
Аноним 23/01/26 Птн 17:45:40 3630705 22
>>3630685
Напиши чтоб питон не использовал, это же пиздец разметке. Матц в своё время решительно обоссал Ван Россума как бык овцу.
Аноним 23/01/26 Птн 17:55:42 3630717 23
>>3630705
Так в тз питон и ткинтер как тут monospace сделать, я новичок
Аноним 23/01/26 Птн 17:57:56 3630719 24
>>3630717
>я новичок
Лул.

Скинь код через pastebin а не текстом.
Аноним 23/01/26 Птн 17:59:21 3630723 25
Вот пример корректного ТЗ (хотя дипсик и немного не так понял, но сойдет в качестве демонстрации).
https://chat.deepseek.com/share/z6l4kbkkm3l1d3g936

Из кода я удалил следующий блок проверки:

[code]
if (
// Авторизованный пользователь пытается редактировать не своё объявление
$this->getCurrentUser()->getId() !== $this->advert->getIdUser()
// Запрещаем гостю редактировать объявления оставленные гостями
or
$this->advert->getId() &&
$this->getCurrentUser()->isGuest() &&
$this->getCurrentUser()->getId() === $this->advert->getIdUser()
) {
return $this->createNotification(Notification::TYPE_ALERT)
->setMessage($this->getView()->getLang()->get('notification.message.forbidden_access'))
->setRedirectUrl('/authorization/frontend-login/')
->run();
}
[/code]

LLM почти корректно написала (даже вставила новые правки в тоже место, где они и были написаны!), правда проигнорировав условие, что "Гость не может редактировать объявление оставленное другими гостями, в т.ч. оставленное им самим". Но взяла имеющийся функционал (уникальный cookie-идентификатор пользователя) и сделала "фитчу", которая в рамках данного проекта вполне имеет место быть - гость может редактировать своё объявление.
Аноним 23/01/26 Птн 18:03:34 3630732 26
Аноним 23/01/26 Птн 18:16:56 3630743 27
>>3630685
Вот бы еще видеть пруф промтов. Из минусов - зачем-то добавлен канвас для кнопок, который там нахуй не нужен.

Но ладно, давай попробуем первый рефакторинг.

Let's optimize our script, assuming that file "diary.yaml" is way too big to load and save it fully. You must manually search last day section or create it if needed when saving data. Same is requirement when you loading data - you only need data from current day. Rewrite script according to new requirements.
Аноним 23/01/26 Птн 18:22:33 3630753 28
>>3630695
>потом еще и пошагово писать что и как нужно сделать, как будто надиктовываешь коды слабоумному
ты понимаешь, что ты мягко говоря зажрался и требуешь от машины быть волшебницей, которая должна предугадывать твои хотелки? Естественно, что без четкого и внятного ТЗ - результат ХЗ.
Давай я тоже напишу подобное говноТЗ, тебе на выполнение, а потом доебусь до тебя, что ты не так написал, как я этого хотел.

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


>>3630695
>нейронки имеют ограниченное пространство для применения
вот пример: >>3630723 - это самописный код, закрытый и старый, нейронка про него ничего не знает. где ты тут увидел "ограниченное пространство для применения"? правки написаны? написаны. корректно? вполне корректно. нейронка получила все классы, которые нужны для выполнения задачи и написала хороший грамотный код. в чем причина тряски?
Аноним 23/01/26 Птн 18:31:43 3630761 29
>>3630753

Да просто все сводится к тому что машине-неволшебнице приходится надиктовывать на алгоритмическом английском то что по сути надо сразу писать кодом. И чем больше проект, тем меньше профит от нейронки по сравнению с внесением правок самому. А мелкие скрипты оно быстро генерит, как и скаффолдинг всякий. Но только для очень распространенных вещей, которые уже тысячу раз написаны.
Аноним 23/01/26 Птн 18:32:32 3630763 30
image.png 118Кб, 1687x808
1687x808
Аноним 23/01/26 Птн 19:06:18 3630785 31
>>3630763

Все равно спасибо за сожженые токены, анон. Код может и работает, но очень ебаный, вместо того чтобы десереализовать последний день в yaml, обновить его, сделать truncate до начала последнего блока, а потом записать туда обратно сериализованный день, оно пытается написать недопарсер yaml.

Короче даже на самом надроченном языке и его стандартной библиотеке вылезают проблемы уже после первого маленького рефакторинга.
Аноним 23/01/26 Птн 19:58:23 3630803 32
>>3630685
>>3630743
>>3630763
>>3630761
>>3630753
>>3630785
Харош уже эту хуету нести.

Ирл нет задач ебучий список написать на ПИТОНЕ блядь. Ирл задачи это написать список который работает в 9999999 фпс на калькуляторе.
И ты сидишь с этой поеботой часами, стараешься как-то выкроить бюджет кадра, пишешь кастомный linked list вместо массива потому что в конкретном алгоритме он быстрее чем массив. То же самое с бизнес логикой - как сделать асинхронную поеботу гарантированно доставленной, изобретаешь валидацию какой-то неведомой ебалы через пизду кобылы

Нейрокалыч НЕ МОЖЕТ блядь это написать потому что промтов в принципе не существует пока ты не начнёшь решать задачу. Рассуждения нейрокалыча строятся на промте, рассуждения не строятся на рассуждениях внутри рассуждений. Ты сам должен провести инженерную работу и выяснить что работает, а что нет, почему работает и вообще какого хуя это работает. Вот это и есть программирование, по обыкновению.
Аноним 23/01/26 Птн 20:43:35 3630835 33
>>3630803
Ты какую то хуйню высрал
Аноним 23/01/26 Птн 20:45:01 3630839 34
>>3630835
Держи в курсе, вкатун
Аноним 24/01/26 Суб 06:38:54 3630985 35
>>3630835

Но он тащем-то прав. При росте сложности задачи объем промта будет асмиптотически приближаться к размеру кода, написанного вручную, а сложность перевода на машинно-дебильный будет расти, как и количество галлюцинаций.

В примере с дневником на питоне выше, что топовая модель начинает галлюцинировать уже на первом промте, и это на стандартной библиотеке питона.
Аноним 24/01/26 Суб 10:10:14 3631068 36
>>3630193 (OP)
Читать надо книги, а не интернет.
Аноним 24/01/26 Суб 10:25:04 3631073 37
image.png 140Кб, 1684x756
1684x756
>>3630627
Лол.

import tkinter as tk
from tkinter import messagebox
import yaml
import os
from datetime import datetime
from collections import defaultdict

class RoutineDiaryApp:
def __init__(self, root):
self.root = root
self.root.title("Routine Diary")
self.root.geometry("600x500")

self.tasks_file = "tasks.txt"
self.diary_file = "diary.yaml"

# Данные
self.all_tasks = [] # Все задачи из файла
self.today = datetime.now().strftime("%Y-%m-%d")
self.today_clicks = defaultdict(int) # Счетчики кликов на сегодня
self.clicked_tasks = set() # Задачи, нажатые сегодня

# Загрузка данных
self.load_tasks()
self.load_diary()

# GUI элементы
self.create_widgets()
self.update_buttons()

def load_tasks(self):
"""Загрузка списка задач из файла"""
try:
if os.path.exists(self.tasks_file):
with open(self.tasks_file, 'r', encoding='utf-8') as f:
self.all_tasks = sorted([line.strip() for line in f if line.strip()])
else:
# Создаем пример файла, если его нет
with open(self.tasks_file, 'w', encoding='utf-8') as f:
f.write("eat shizaprotective tablet\ntroll on dvach\nwipe ass after taking shit\n")
self.all_tasks = ["eat shizaprotective tablet", "troll on dvach", "wipe ass after taking shit"]
except Exception as e:
messagebox.showerror("Error", f"Failed to load tasks: {e}")
self.all_tasks = []

def load_diary(self):
"""Загрузка истории из YAML файла"""
try:
if os.path.exists(self.diary_file):
with open(self.diary_file, 'r', encoding='utf-8') as f:
diary_data = yaml.safe_load(f) or []

# Ищем записи за сегодня
for day_entry in diary_data:
if isinstance(day_entry, dict) and self.today in day_entry:
today_data = day_entry[self.today]
for task, timestamps in today_data.items():
if isinstance(timestamps, list):
self.today_clicks[task] = len(timestamps)
if timestamps:
self.clicked_tasks.add(task)
break
except Exception as e:
print(f"Warning: Could not load diary: {e}")
# Создаем пустой файл
self.save_to_diary([])

def save_to_diary(self, data):
"""Сохранение данных в YAML файл"""
try:
with open(self.diary_file, 'w', encoding='utf-8') as f:
yaml.dump(data, f, allow_unicode=True, default_flow_style=False)
except Exception as e:
messagebox.showerror("Error", f"Failed to save diary: {e}")

def create_widgets(self):
"""Создание элементов интерфейса"""
# Фрейм для кнопок
self.button_frame = tk.Frame(self.root)
self.button_frame.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)

# Scrollbar для кнопок
scrollbar = tk.Scrollbar(self.button_frame)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

# Canvas для скроллирования кнопок
self.canvas = tk.Canvas(self.button_frame, yscrollcommand=scrollbar.set)
self.canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)

scrollbar.config(command=self.canvas.yview)

# Фрейм для кнопок внутри canvas
self.inner_frame = tk.Frame(self.canvas)
self.canvas_window = self.canvas.create_window((0, 0), window=self.inner_frame, anchor=tk.NW)

# Привязка событий для скроллинга
self.inner_frame.bind("<Configure>", self.on_frame_configure)
self.canvas.bind("<Configure>", self.on_canvas_configure)

# Метка с текущей датой
self.date_label = tk.Label(self.root, text=f"Today: {self.today}", font=("Arial", 12, "bold"))
self.date_label.pack(pady=5)

def on_frame_configure(self, event):
"""Обновление scrollregion при изменении размера фрейма"""
self.canvas.configure(scrollregion=self.canvas.bbox("all"))

def on_canvas_configure(self, event):
"""Обновление ширины внутреннего фрейма при изменении размера canvas"""
self.canvas.itemconfig(self.canvas_window, width=event.width)

def update_buttons(self):
"""Обновление отображения кнопок"""
# Очистка старых кнопок
for widget in self.inner_frame.winfo_children():
widget.destroy()

# Разделение задач на нажатые и ненажатые
unclicked = sorted([t for t in self.all_tasks if t not in self.clicked_tasks])
clicked = sorted([t for t in self.all_tasks if t in self.clicked_tasks])

# Создание кнопок для ненажатых задач
for task in unclicked:
btn = tk.Button(self.inner_frame, text=task,
command=lambda t=task: self.on_task_click(t),
bg="lightgray", height=2, width=40)
btn.pack(pady=2, padx=5, fill=tk.X)

# Создание кнопок для нажатых задач (с количеством кликов)
for task in clicked:
count = self.today_clicks[task]
btn_text = f"{task} ({count})"
btn = tk.Button(self.inner_frame, text=btn_text,
command=lambda t=task: self.on_task_click(t),
bg="lightgreen", height=2, width=40)
btn.pack(pady=2, padx=5, fill=tk.X)

def on_task_click(self, task):
"""Обработка клика по кнопке задачи"""
try:
current_time = datetime.now()
timestamp = current_time.strftime("%Y-%m-%d %H:%M")

# Обновление счетчиков
self.today_clicks[task] += 1
self.clicked_tasks.add(task)

# Загрузка существующего дневника
diary_data = []
if os.path.exists(self.diary_file):
with open(self.diary_file, 'r', encoding='utf-8') as f:
diary_data = yaml.safe_load(f) or []

# Поиск или создание записи за сегодня
today_entry = None
for entry in diary_data:
if isinstance(entry, dict) and self.today in entry:
today_entry = entry
break

if not today_entry:
today_entry = {self.today: {}}
diary_data.append(today_entry)

# Добавление timestamp
if task not in today_entry[self.today]:
today_entry[self.today][task] = []

today_entry[self.today][task].append(timestamp)

# Сохранение
self.save_to_diary(diary_data)

# Обновление интерфейса
self.update_buttons()

except Exception as e:
messagebox.showerror("Error", f"Failed to log task: {e}")

def main():
root = tk.Tk()
app = RoutineDiaryApp(root)
root.mainloop()

if __name__ == "__main__":
main()
Аноним 24/01/26 Суб 10:26:30 3631074 38
Аноним 24/01/26 Суб 11:04:28 3631093 39
Аноним 25/01/26 Вск 04:58:46 3631908 40
>>3630193 (OP)
>Что за хуйня происходит? Это массово проплаченные АИ-компаниями реклама?
Массовое помешательство
Потом никто верить не будет что все просто ебнулись на этих ллм попугаях
Аноним 25/01/26 Вск 05:00:58 3631909 41
>>3630219
>Подняли оклад с 200к до 500к за это.
Вот это самое жирное, будете пахать за те же деньги даже если сократят штат
Аноним 25/01/26 Вск 06:41:11 3631940 42
>>3631908
Часто это тупо троллинг и байт на подписку. Смысл в том чтобы разогнать пузырь и тогда он быстрее лопнет.
ИИ конечно же работает и его можно использовать, но далеко не так как многие заявляют плюс это нагружает не меньше человека чем раньше, просто раньше ты делал проект за проектом, а сейчас сразу 10 проектов делаешь, но при этом кодинг не час занимает, а 10 часов, потому что чтобы получить норм результат надо 10 веток сделать и потом посмотреть их все где нормально вышло.

Плюс времени для описания агентам их задач, стэка, примеров и подобной фигни уходит просто тонна, чуть где проебался и он начнет выдумывать на основе имен переменных фигню которой ты не пользуешься или переизобретать велосипед когда стоило использовать готовую библиотеку.

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

Лучшее же использовании ИИ это поисковик по личным заметкам, жизнь так огромна и сложна что хер всего упомнишь и если ведешь заметки даже хорошая система занимает много времени на поиск, так как порой ты тупо думаешь немного другими понятиями и вот модельки тут прям выручают.
Аноним 25/01/26 Вск 07:43:59 3631948 43
>>3630193 (OP)
> Мол они теперь стали продуктивнее в 5 раз
запомни ОйТи это еще тот цирк где куча хайпа, наебалово, позерства, скамкурсов успешного успеха, понтов, жадности, зависти и прочей офисной шизы. простым словом ПИЗДАБОЛЫ во всех смыслах. это не среда серьезных инженеров которые отвечают за базар.

хабраюзеры славятся своими графоманством и хайпожерством. есть на хабре 10-ая часть реального полезного информативного контента с пруфами и аналитикой.
Аноним 25/01/26 Вск 08:58:48 3631954 44
>>3631073

Тут тоже зачем-то впиздячен canvas https://tkdocs.com/tutorial/canvas.html , хотя он нахуй не нужен. И кстати и твой ответ и ответ анона выше проходит весь массив в поисках последнего дня с начала в конец, хотя логично смотреть с конца.

И еще фанатам дорого платного claude code, вот ответ от бесплатного локального qwen2.5-coder:14b : https://pastebin.com/VeQGqyPp

Там гораздо лучше сделан tk интерфейс - ничего лишнего, но косяк в том, что вместо количества кликов рядом с кнопкой пишутся сами даты кликов. Я бы выбрал для доработки именно вариант от qwen.
Аноним 25/01/26 Вск 09:03:12 3631956 45
>>3630219
Нужно больше инфы:

- что вы писали такое?
- закончилась ли активаня фаза создания проекта и настала поддержка?
- какая была зепка у уволенных?
- 2-3 примера добавляемого функционала?
Аноним 26/01/26 Пнд 01:07:35 3632737 46
>>3630803
Хуйня. Что тебе мешает сидеть и промптить модель, чтобы она пробовала разные способы решения задачи? Короче ты калич.
Аноним 26/01/26 Пнд 08:48:59 3632794 47
>>3631956
- Хайлоад на микросервисах
- всё ещё создаём, но продаём, больше 2х миллионов пользователей в месяц
- 200-300к
- добавить функцию отправки файлов, прикрепление картинки, добавить новый тип входа по ссылке, создание аналитических отчётов
Аноним 26/01/26 Пнд 10:02:30 3632817 48
image.png 27Кб, 225x225
225x225
>>3632737
>сидеть и промптить модель, чтобы она пробовала разные способы решения задачи
Аноним 26/01/26 Пнд 11:20:56 3632877 49
Аноним 26/01/26 Пнд 11:46:18 3632913 50
>>3632794
>- Хайлоад на микросервисах
>- всё ещё создаём, но продаём, больше 2х миллионов пользователей в месяц

>Хайлоад.
>RPS меньше одного

Ебать вы там высоконагруженные.

>- всё ещё создаём, но продаём

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

>- добавить функцию отправки файлов, прикрепление картинки, добавить новый тип входа по ссылке,

Задачи уровня хайлоад микросервисов. Задачи уровня зепок 200-300 к.

> создание аналитических отчётов

Аналитические отчеты уровня "SELECT DATE(created) AS saledate, SUM(amount) FROM Sales GROUP BY saledate;" ? Потому что как нейронка будет стягивать данные по типичной продовой базе на сотню таблиц, подтягивая нужные куски с левых микросервисов, я даже имаджинировать не хочу.


И так сука каждый раз - немножко копнешь и выяснится, что нейронки в увольнениях совершенно ни при чем.
Аноним 26/01/26 Пнд 11:51:23 3632919 51
>>3632913
>Аналитические отчеты уровня "SELECT DATE(created) AS saledate, SUM(amount) FROM Sales GROUP BY saledate;" ? Потому что как
Ты чё, пёс, у нас Кликхаус
Аноним 26/01/26 Пнд 11:53:53 3632922 52
>>3632794
>- Хайлоад на микросервисах
>- всё ещё создаём, но продаём, больше 2х миллионов пользователей в месяц
Зачем ты пиздишь, пиздаболище больное? 2кк в месяц это максимум 500-100 RPS. Какие микросервисы какой хайлоад?

Ебучие нейрошизы, вечно один пиздёжь.

Нахуя вы пиздите, нейрочушки? Проебали 2к баксов, ничего не получили и начали оправдывать себя, что всё идёт как нужно?
Аноним 26/01/26 Пнд 12:02:38 3632943 53
>>3632922
Ты не понимаешь, это только начало. Сегодня 100 RPS, а завтра уже 10000 RPS
Нейросети находят нам лидов, запускаем рекламу. Скоро уже миллиарды прибыль в день будет, нужно только докупить токенов на счёт.
Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов