Серия «О программировании не от программиста ( нейросети)»

3

Для писателя- как mp3 с диктофона быстро в doc файл перевести- на python+whisper

Как известно я не программист, но начинающий писатель ( одну книгу уже написал кстати, совсем на редкие темы, о которых тут нет, и на будущее подумал: удобно же на диктофон на говорить, а потом перевести в текст, причем с форматированием, запятыми и т.д
Конечно, есть онлайн инструменты, но во-первых там надо платить, во-вторых вопросы конфиденциальности, в третьих - зависимость от интернета.
Вот тут кратко показываю результат такой работы, хотя на самом деле до банального все просто.
Если кому такое нужно, пишите, обьясню, да и код могу также дать:-)
Но нужна довольно мощная видеокарта, на процессоре время обработки аудио в 10 минут боюсь будет полчаса... а вот на GPU ( видеокарта)- в моем случае 58 секунд. Но это видеокарта 4* серии с 16GB ( правда с ограниченной мощностью- чтобы не было нагрева)

Показать полностью
1

Один из двух ключевых навыков "программиста" под нейросетями

Умение набирать вслепую, совсем забыл про это сказать, я уже лет 20 навыком этим владею ( 10-ти пальцевый слепой метод), очень сильно экономит время, нервы и шея лучше себя чувствует. Представьте, давая задания, набираемые двумя пальцами сколько тратится времени и нервов, и сколько времени уходит, когда на клавиатуру не смотришь и набираешь со скоростью 300 символов в минуту? А второй навык- очевиден.. Или пишите в комментариях. Полезная может быть беседа.

9

Итоги года- недопрограмммиста, что можно натворить с помощью доброго слова и ДипСика с ЛеЧатом для Wildberries (репрайсер)

Год с небольшим назад начал торговать кое-каким товаром на Wildberries, а поставщик требовал удерживать РРЦ- очень очень. Иначе штрафы и другие проблемы. Поэтому начал искать, сначала один программист, сделал сыроватый продукт, потом другой сделал как надо.. В итоге, стал сам пользоваться, и другим продавцам у нашего продавца тоже предоставил такую возможность.

В итоге, спустя полгода доработок- в неспешном тормозном стиле ( мне вообще-то 48 лет, и последний раз программировал в институте на турбо-паскале и бейсике в школе), получилось то что получилось, ниже это просто своего рода памятки. Рекламные статьи будут совсем на других ресурсах.

А тут пост для мотивации, что можно натворить не будучи программистом ( вру вру, в душе то я программист, мысленно программировал, писал тех.задания программистам, но кроме include в php ничего не знаю, при том что по логике пытаюсь код читать, который писал нейросети, они ведь иногда ошибаются, что-то иногда понимаю..)

Так что думаю совсем с нуля такое не получится написать, надо хотя бы немного уметь читать документацию и задавать чёткие запросы нейросетям, тем не менее, как говорится, не верю своим глазам!

Если бы учился программированию на php, думаю пришлось бы года два на это убить и то не факт, поскольку нет у меня необходимой для программирования усидчивости, и основные то интересы в жизни это психология (по последнему образованию клинический психолог), кое-какие сайты делал для продажи тех же товаров ( но опять же, без программирования, на конструкторе), написал книгу в конце июля вообще на абсолютно другие темы, не связанные никак с техническим программированием, больше на тему психологии, но тоже не совсем, сейчас планирую вторую книгу, и третья это книга стихов. Чтобы вы понимали, что я не очень то фанат компьютеров:-)
Но видимо была детская мечта стать программистом, в своё время не хватило баллов для поступления на автоматизацию металлургических процессов в Красноярске ( цветмет), и поступил просто на металлурга.. Это к тому, что некоторое вдохновение имеется, к тому же меня немножко подпинывали и давали идеи, что можно сделать ( сам то как человек ленивый наверное ограничился бы обычным репрайсером, как он был изначально написан супер-программистом)

Итак, что мы имеем в сухом остатке:

Было изначально:

Репрайсер, удерживающий РРЦ  (рекомендованную розничную цену), с проверкой раз в 7 минут ( задается в настройках планировщика хостинг-панели), хранение данных в  файловой бд sqlite. Контроль СПП и WB кошелька. ( первоначальные затраты 50 000 р, оплата программистам, первый создал неудачный костыльный вариант ( блин комом), второй создал очень хорошую основу с удачной архитектурой для обновления и для обучения на примере)

Также репрайсер изначально содержит возможность телеграм уведомления при ошибках обновления цен ( в основном это говорит о том, что на WB неполадки того или иного рода)

Что было далее сделано мной  с помощью DeepSeek и Le Chat, вначале использовался Copilot, но быстро отправился в утиль..:

В самом репрайсере:

1)  Изменение цен в заданных диапазонах времени ( свой прайс- под каждый диапазон времени)

2)  Таблица репрайсера показывает остатки товара  ( можно выгрузить в CSV, или Excel, с остальными параметрами, чтобы отфильтровать по заданным диапазонам)

3)  Загрузка цен до СПП ( изначально репрайсер создан для удержания РРЦ)

4)  Загрузка цен до WB кошелька.

5)  Юнит-калькулятор ( расчет прибыльности  и маржи в %, выгрузка в виде Excel-отчета, быстрая проверка рекламных расходов)

6)  Полуавтоматическое обновление цен поставщика при условии заданного артикула поставщика в первой колонке Excel прайса.

7)  Реализация создания отчета для отправки поставщику, при выполнении условия из п.6

8)  Установка в прайсе товаров, которые не нужно менять

9)  Горячая замена цен ( клик мышкой, открывается окно, вписывается цена). В основном цены задавались только напрямую через excel прайс, и приходилось каждый раз загружать новый прайс с измененной ценой.

10)  Быстрый вывод товаров с нулевым СПП.

11)  Вывод логов действий репрайсера за последние два дня- в модальном окне, либо скачивание файлов отчетов ( до этого только я мог сам посмотреть по FTP)

12) Выводится дата годности токена на видном месте ( ранее информации не было).

Внешние доработки, для себя, не используются другими клиентами, но можем сделать и вам😊

1)  Выдача пропусков по расписанию ( актуально для FBS)

2)  Синхронизация цен с OZON ( можно ставить в WB такие же цены как в Ozon, при условии доступа к api ozon, либо к сторонним json выгрузкам с прайсом в Ozon.

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

4)  Слежение за конкурентами и следование ценовым стратегиям ( держать цену на 1р ниже, или такую же как у конкурента, но не ниже заданного предела). В процессе тестирования, проверялось на малом количестве товаров, планируется интеграция в репрайсер

5)  Суммирование возвратов ( упрощение процесса работы с возвратами), актуально если очень много товаров.


Для удобства работы с клиентами

1)  Обновитель-updater ( эдакая замена GIT по простому), на основе WinSCP ( да, голь на выдумки хитра, и до сих пор не научился пользоваться git, контроль версий проводится кустарно ( в этой папке старое, в этой новое, тестирую, смотрю). При нажатии одной кнопки происходит обновление на разных ftp-серверах, в разных папках, всех установленных репрайсеров, когда была сделана доработка.

2)  Панель для контроля оплат, интегрирована с платёжной системой Prodamus через API ( автоматическое продление подписок), в целом реализована система автоматического выключения при неоплате, но пока достаточно всё видно и по таблице оплат.

3)  Инсталлятор, то есть клиент вводит в заданной форме емайл, телефон, название организации, логин и пароль, репрайсер устанавливается автоматически по заданному адресу, настройки выдаются на экране установщика и отправляются на почту. Ранее всё делалось вручную, пароли задавались также, файлы копировались через FTP вручную.

Roadmap. Что будет сделано ( в процессе, или в планах):

Для себя: Уведомление об остатках ( если товара мало- приходит уведомление на почту и в телеграм), уже работает, но с колебаниями, в процессе доработки

Для клиентов: Whatsapp-уведомление для желающих ( выбор в настройках),  если WB-кошелек сменился ( ранее работало автоматическое обновление WB-кошелька, сейчас задаётся вручную, ввиду изменений WB, возможно это обновление и не понадобится. если WB вернет доступ к настройкам). Также будет сделано уведомление о времени завершения работы токена ( за неделю).

Для клиентов: Задание диапазона обновления/проверки цен в админ/панели, от 7 до 60 минут ( сейчас в основном задаю вручную 1 раз в 7 минут,  1 раз в 10-15 минут, кому этого достаточно и не нужно очень быстро). Отключение/Включение обновления через админ/панель.

Для клиентов: Возможное добавление юнит-калькулятора для учёта %  возвратов ( актуально для одежды, где много возвратов, и существующий юнит-калькулятор показывает тогда далеко не точные цифры). Также в общем будет сделана доработка юнит-калькулятора для удобства использования  ( цветовые диапазоны для разных уровней прибыльности), сейчас выводится красным если ниже 0, а также другие доработки для горячего анализа прибыльности, сейчас таблица с параметрами добавляется через Excel.

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


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

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

Итоги года- недопрограмммиста, что можно натворить с помощью доброго слова и ДипСика с ЛеЧатом для Wildberries (репрайсер) Программирование, PHP, Wildberries, Нейронные сети, ChatGPT, Фриланс, Проект, Длиннопост

Ежели будут любые вопросы спрашивайте, авось отвечу:-)

Несколько скринов, для наглядности

Итоги года- недопрограмммиста, что можно натворить с помощью доброго слова и ДипСика с ЛеЧатом для Wildberries (репрайсер) Программирование, PHP, Wildberries, Нейронные сети, ChatGPT, Фриланс, Проект, Длиннопост

Самый начальный вариант

Итоги года- недопрограмммиста, что можно натворить с помощью доброго слова и ДипСика с ЛеЧатом для Wildberries (репрайсер) Программирование, PHP, Wildberries, Нейронные сети, ChatGPT, Фриланс, Проект, Длиннопост

Как репрайсер выглядит сейчас

Итоги года- недопрограмммиста, что можно натворить с помощью доброго слова и ДипСика с ЛеЧатом для Wildberries (репрайсер) Программирование, PHP, Wildberries, Нейронные сети, ChatGPT, Фриланс, Проект, Длиннопост

Еще чуть подробней

Итоги года- недопрограмммиста, что можно натворить с помощью доброго слова и ДипСика с ЛеЧатом для Wildberries (репрайсер) Программирование, PHP, Wildberries, Нейронные сети, ChatGPT, Фриланс, Проект, Длиннопост

Задание диапазонов прайсов по времени

Итоги года- недопрограмммиста, что можно натворить с помощью доброго слова и ДипСика с ЛеЧатом для Wildberries (репрайсер) Программирование, PHP, Wildberries, Нейронные сети, ChatGPT, Фриланс, Проект, Длиннопост

Таблица юнит-экономики

Итоги года- недопрограмммиста, что можно натворить с помощью доброго слова и ДипСика с ЛеЧатом для Wildberries (репрайсер) Программирование, PHP, Wildberries, Нейронные сети, ChatGPT, Фриланс, Проект, Длиннопост

Вывод логов- что делал репрайсер.

Показать полностью 7
10

Про новую сверх-модель Qwen 2.5 ( не хуже chatgpt в программировании)- как поставить дома

Это будет очень краткая инструкция, с краткими выводами.
Уже ранее писал про другие подобные LLM которые можно на домашний комп поставить, так вот- эта просто очень крута, не уровне chatGPT, и при этом денег платить не надо, обьёмы тоже может выдавать больше.. но компьютер пожалуй нужен не слабый. Поставил на комп где видеокарта nvidia 4080, с 16GB, модель 32B работает не быстро. 14B и 7B уже неплохо, 7B работает очень быстро.
Если кратко как ставить: ставим сначала pinokio ( точка computer), в нем внутри находим open webui и ставим его, по сути pinokio это такой браузер, в котором куча разных готовых вариантов нейросетей ( и дипфейки, и всё на свете). Можно конечно и на сайте это делать, но в приложении удобно. Благодаря этому можно и боты, и сервера, и языковые модели ( нейросети)- по сути иметь на одном компьютере.. К тому же, потом если на компьютере его запустить- там все эти нейросети и прочие имеют свои ярлыки для запуска, что удобно. А то поставить можно кучу разных и потом искать..

Про  новую сверх-модель Qwen 2.5 ( не хуже chatgpt в программировании)- как поставить дома Программирование, Нейронные сети, ChatGPT, Чат-бот, Гайд, Тестирование, Длиннопост

Пинокио это такое буратино..

Про  новую сверх-модель Qwen 2.5 ( не хуже chatgpt в программировании)- как поставить дома Программирование, Нейронные сети, ChatGPT, Чат-бот, Гайд, Тестирование, Длиннопост

Это после установки.

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

После установки Open WebUI когда он конкретно запустится, и поставите Ollama, можно уже выбирать нужный нам Qwen 2.5

Про  новую сверх-модель Qwen 2.5 ( не хуже chatgpt в программировании)- как поставить дома Программирование, Нейронные сети, ChatGPT, Чат-бот, Гайд, Тестирование, Длиннопост

Делается это очень просто.

на сайте Ollama заходим в Models там будет такой скриншот

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

Про  новую сверх-модель Qwen 2.5 ( не хуже chatgpt в программировании)- как поставить дома Программирование, Нейронные сети, ChatGPT, Чат-бот, Гайд, Тестирование, Длиннопост

А уже потом заходим в open webui и выбираем нужную модель, она там должна автоматически появиться. ( после установки в ollama по команде из красного вытянутого овала)

Хотя конечно компьютер нужен не слабый, сейчас ставлю просто на мощный компьютер, где нет видеокарты по сути, интересно как будет на CPU работать. Видеокарту то загружает по полной. Причем модель 7B крайне быстро шпарит, но отвечает не сильно подробно ( Всё на русском!) 14B уже получше- но средняя скорость..а вот 34B очень подробно отвечает, но там уже и скорость еле еле.. все же A100 не будешь ставить ради программирования..

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

установка в таком порядке была на windows 10 и на windows 11

Без хорошего написания технических заданий, это лишь игрушка..

Показать полностью 4
14

Продолжение поста «Запустил дома нейросеть для программирования ( 60 языков!!)»1

Кто-то наверняка хотел увидеть чем пригодились нейросети и какого уровня код может делать..
Но перед этим скажу, что к сожалению одной сетью Сodestral восхваляемой в предыдущем посте не обошлось.. В итоге использовал по некоторым мелким вопросам ( для уточнений скорей)- Copilot, также https://chat.deepseek.com/coder ( выпустили на днях- тоже довольно хороша для программирования). И даже немного поюзал вышедший чуть ли не вчера ( тоже улучшенный- но не специально для кода)- Claude 3.5 Sonnet, модель которая превосходит GPT-4 почти на всех тестах ( в том числе в программировании)

Claude 3.5 Sonnet уже доступна бесплатно для всех пользователей. ( я регился через sms-activate) за 10р ( конечно нужен VPN)
по факту же- основной код из https://chat.deepseek.com/coder... почему так говорю- потому что уже сам не помню- дня три долбил разные сети)) наверное с 15й попытки сделал рабочий вариант. Штука в том, что пару раз наблюдал за тем, как разные сети начинали глючить..то код не допишут, то еще чего. Я в программировании почти ноль ( на php знаю 2-3 команды и то со словарём..). Хотя кое-какие задачи для себя решаю, пишу технические задания.. И вот ниже тех.задание которое я запихивал в нейросеть- нужное для моих целей.

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

Итак- вот такое было тех.задание:

Напиши программу на php, которая обрабатывает файл prices.csv, при запуске проверяет существование файлов ostatki.txt и pusto.txt, если эти файлы не существуют, создаёт их. Если файлы существуют, очищает их содержимое. Также если не существует, то создается база sqlite ostatki.db с с двумя таблицами: таблица ostatki с полями artikul ( число), tovar (текстовое), qty ( числовое)  и таблица pusto с полями artikul (число), tovar (числовое), qty (текстовое) . Также добавь вывод ошибок php в начале файла.

Если скрипт запускается первый раз ( это можно проверить по отсутствию базы ostatki.db)- если файла базы нет ostatki.db, она создается как написано выше и запуск считается первым, в этом случае идет обработка файла prices.csv по таким правилам:
файл prices.csv содержит разделители ; ( точка с запятой)

обработка файла prices.csv начинается со второй строки.

2ая колонка в prices.csv это переменная artikul (артикул товара), 3я колонка это name (название товара), 14ая колонка это qty ( количество), считываем все данные из prices.csv построчно, для ускорения процесса используем массив, записываем данные в базу данных ostatki.db в таблицу ostatki по соответствующим названиям полей и переменных ( artikul в artikul и так далее, при условии что в 14й колонке содержится любое число, если в 14й  колонке пусто, тогда данные artikul, tovar записываются в таблицу pusto, а в поле qty этой таблицы pusto записывается текстовое значение zero.

Происходит запись лог файлов ostatki.txt и pusto.txt по таким правилам:

в файл ostatki.txt идет построчная запись товаров с нулевыми остатками, то есть из таблицы ostatki берется товар где qty=0 и в этом случае формируется запись: Товар artikul name закончился, проверьте остатки! И так до тех пор, пока будут проверены все нулевые значения таблицы ostatki в поле qty в базе ostatki.db

в файл pusto.txt построчно записываются значения из таблицы pusto в таком формате Товар artikul name не был заведён по каким-то причинам. После первого запуска идет отправка данных с помощью функции

maillogfile, ее описание в конце текста. И после запуска этой функции maillogfile идет остановка программы, она считается завершенной.
.

При повторном запуске программы ( повторным считается запуск если существует база ostatki.db)

идет проверка на изменение данных в базе данных при сравнении с файлом prices.csv по таким правилам ( начиная со второй строки):

Если в файле prices.csv где 2ая колонка в prices.csv это переменная artikul (артикул товара), 3я колонка это name (название товара), 14ая колонка это qty ( количество), считываем все данные из prices.csv построчно ( ускоряем процесс с помощью массива), если определяется что qty=0 нужно проверить совпадение в базе данных ostatki.db в таблице ostatki по артикулу ( artikul), если в таблице также в qty находится 0, то ничего не делаем, и запись в лог файл ostatki.txt  не производим. Если в таблице prices.csv qty=0 ( это 14ая колонка), а в базе данных ostatki.db в таблице ostatki значение qty больше нуля, тогда делаем запись в лог файл ostatki.txt в формате Товар artikul name закончился, проверьте остатки!

Если при сравнении prices.csv и таблицы ostatki в базе данных ostatki.db при совпадении artikul число qty отличается от нуля ( не пустая строка и не отсутствие значения), и qty в prices.csv отличается от qty в таблице ostatki то делаем перезапись значения qty в базе данных.. Если artikul в prices.csv не находится в ostatki.db в таблице ostatki, при втором  и последующих запусках программы, значит данного товара еще не было и создается новая строка с данными  artikul, tovar, qty и также идёт запись в ostatki.txt такого вида: Добавлен товар artikul name с остатком qty.

Также проверяем проходя 2, 3, 14 колонку файла prices.csv и таблицу pusto в базе данных, если artikul содержит qty от 0 и выше, и при этом данный artikul содержится в таблице pusto, то удаляем эту строку из базы данных из таблицы pusto.

Также идёт проверка таблицы pusto, если в файле prices.csv есть пустые значения в qty ( 14ая колонка), то есть это не 0 и не число, и такое же точно значение уже есть в таблице pusto по значению artikul, и в qty находится zero, то в файл pusto.txt ничего не пишем и проверяем дальше. В итоге после всех проверок

Запускается функция для отправки  maillogfile, ее описание ниже.

Функция maillogfile содержит отправку по заданному адресу с другого заданного адреса  с использованием библиотеки Phpmailer ( она находится в папке PHPMailer/src/, адрес куда отправлять берет из файла email.txt, откуда отправлять и другие настройки берет из файла email.cfg в формате json, пример содержимого email.cfg с соответствующими настройками, чтобы ты знал как создать функцию maillogfile с использованием данных файлов в виде настроек приведены ниже в кавычках {}

{

"smtp_host": "smtp.mail.ru",

"smtp_auth": true,

"smtp_username": "de--@Mail.ru",

"smtp_password": "H--—9H",

"smtp_secure": "ssl",

"smtp_port": 465
“Name”: ”Dimitriy”

}

Здесь Name это имя отправителя, все остальные данные совпадают с переменными..

Эта функция при запуске отправляет во вложении файлы ostatki.txt и pusto.txt, также тексты добавляются из файлов в тело письма, , при условии что в данных файлах содержится текст, если файлы пустые, не содержат текст,  то письмо не отправляется.

Также в данной функции должна проводиться проверка на отправку почты, если по причине технической ошибки отправка не произошла выводится текст на экран: Ошибка, почта не была отправлена. В случае успеха- на экран выводится: Почта с нулевыми остатками отправлена.


Если лог файлы ostatki.txt и pusto.txt пустые- выводится - Ничего не изменилось, поэтому письмо не отправлено. Также проследи чтобы не было проблем с кодировкой при отправке писем, чтобы заголовки и сам текст был в одной кодировке. Также учти чтобы при чтении файла prices.csv не было проблем с кодировкой ( текст внутри этого файла prices.csv в кодировке  windows-1251), следует при записи в базу данных и обработке делать преобразование в utf-8 текстовых данных.

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

Также проверь время выполнения файла и выведи в конце подробную информацию- сколько времени было выполнение файла.

А вот такой вышел код: ( реально рабочий- через Cron на хостинге запускаю каждые полчаса- но как говорится и в этом есть нюансы)- но в итоге работает.

<?php

ini_set('display_errors', 1);

ini_set('display_startup_errors', 1);

error_reporting(E_ALL);

function maillogfile($to, $from, $fromName, $smtpSettings) {

require 'PHPMailer/src/PHPMailer.php';

require 'PHPMailer/src/SMTP.php';

require 'PHPMailer/src/Exception.php';

$mail = new PHPMailer\PHPMailer\PHPMailer();

$mail->isSMTP();

$mail->Host = $smtpSettings['smtp_host'];

$mail->SMTPAuth = $smtpSettings['smtp_auth'];

$mail->Username = $smtpSettings['smtp_username'];

$mail->Password = $smtpSettings['smtp_password'];

$mail->SMTPSecure = $smtpSettings['smtp_secure'];

$mail->Port = $smtpSettings['smtp_port'];

$mail->CharSet = 'UTF-8';

$mail->setFrom($from, $fromName);

$mail->addAddress($to);

$mail->Subject = 'Остатки товаров';

$ostatkiContent = file_get_contents('ostatki.txt');

$pustoContent = file_get_contents('pusto.txt');

if (empty($ostatkiContent) && empty($pustoContent)) {

echo "Ничего не изменилось, поэтому письмо не отправлено.";

return;

}

if (!empty($ostatkiContent)) {

$mail->addAttachment('ostatki.txt');

$mail->Body .= $ostatkiContent;

}

if (!empty($pustoContent)) {

$mail->addAttachment('pusto.txt');

$mail->Body .= $pustoContent;

}

if (!$mail->send()) {

echo 'Ошибка, почта не была отправлена.';

echo 'Mailer Error: ' . $mail->ErrorInfo;

} else {

echo 'Почта с нулевыми остатками отправлена.';

}

}

$startTime = microtime(true);

$dbFile = 'ostatki.db';

$csvFile = 'prices.csv';

$ostatkiFile = 'ostatki.txt';

$pustoFile = 'pusto.txt';

$emailFile = 'email.txt';

$emailConfigFile = 'email.cfg';

if (!file_exists($ostatkiFile)) {

file_put_contents($ostatkiFile, '');

} else {

file_put_contents($ostatkiFile, '');

}

if (!file_exists($pustoFile)) {

file_put_contents($pustoFile, '');

} else {

file_put_contents($pustoFile, '');

}

$ostatkiBuffer = '';

$pustoBuffer = '';

if (!file_exists($dbFile)) {

$db = new SQLite3($dbFile);

$db->exec("CREATE TABLE ostatki (artikul INTEGER, tovar TEXT, qty INTEGER)");

$db->exec("CREATE TABLE pusto (artikul INTEGER, tovar TEXT, qty TEXT)");

$db->exec("CREATE INDEX idx_ostatki_artikul ON ostatki (artikul)");

$db->exec("CREATE INDEX idx_pusto_artikul ON pusto (artikul)");

$insertOstatki = $db->prepare("INSERT INTO ostatki (artikul, tovar, qty) VALUES (:artikul, :tovar, :qty)");

$insertPusto = $db->prepare("INSERT INTO pusto (artikul, tovar, qty) VALUES (:artikul, :tovar, 'zero')");

$csvData = [];

if (($handle = fopen($csvFile, "r")) !== FALSE) {

fgetcsv($handle, 0, ";"); // Skip header

while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {

$csvData[] = $data;

}

fclose($handle);

}

$db->exec("BEGIN TRANSACTION");

foreach ($csvData as $data) {

$artikul = $data[1];

$tovar = mb_convert_encoding($data[2], 'UTF-8', 'Windows-1251');

$qty = $data[13];

if (is_numeric($qty)) {

$insertOstatki->bindValue(':artikul', $artikul, SQLITE3_INTEGER);

$insertOstatki->bindValue(':tovar', $tovar, SQLITE3_TEXT);

$insertOstatki->bindValue(':qty', $qty, SQLITE3_INTEGER);

$insertOstatki->execute();

} else {

$insertPusto->bindValue(':artikul', $artikul, SQLITE3_INTEGER);

$insertPusto->bindValue(':tovar', $tovar, SQLITE3_TEXT);

$insertPusto->execute();

}

}

$db->exec("COMMIT");

$ostatkiBuffer = '';

$pustoBuffer = '';

$result = $db->query("SELECT * FROM ostatki WHERE qty = 0");

while ($row = $result->fetchArray()) {

$ostatkiBuffer .= "Товар {$row['artikul']} {$row['tovar']} закончился, проверьте остатки!\n";

}

$result = $db->query("SELECT * FROM pusto");

while ($row = $result->fetchArray()) {

$pustoBuffer .= "Товар {$row['artikul']} {$row['tovar']} не был заведён по каким-то причинам.\n";

}

file_put_contents($ostatkiFile, $ostatkiBuffer);

file_put_contents($pustoFile, $pustoBuffer);

$email = file_get_contents($emailFile);

$emailConfig = json_decode(file_get_contents($emailConfigFile), true);

maillogfile($email, $emailConfig['smtp_username'], $emailConfig['Name'], $emailConfig);

} else {

$db = new SQLite3($dbFile);

$updateOstatki = $db->prepare("UPDATE ostatki SET qty = :qty WHERE artikul = :artikul");

$insertOstatki = $db->prepare("INSERT INTO ostatki (artikul, tovar, qty) VALUES (:artikul, :tovar, :qty)");

$deletePusto = $db->prepare("DELETE FROM pusto WHERE artikul = :artikul");

$insertPusto = $db->prepare("INSERT INTO pusto (artikul, tovar, qty) VALUES (:artikul, :tovar, 'zero')");

$csvData = [];

if (($handle = fopen($csvFile, "r")) !== FALSE) {

fgetcsv($handle, 0, ";"); // Skip header

while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {

$csvData[] = $data;

}

fclose($handle);

}

$db->exec("BEGIN TRANSACTION");

foreach ($csvData as $data) {

$artikul = $data[1];

$tovar = mb_convert_encoding($data[2], 'UTF-8', 'Windows-1251');

$qty = $data[13];

if (is_numeric($qty)) {

$result = $db->querySingle("SELECT qty FROM ostatki WHERE artikul = '$artikul'", true);

if ($result) {

if ($result['qty'] != $qty) {

$updateOstatki->bindValue(':qty', $qty, SQLITE3_INTEGER);

$updateOstatki->bindValue(':artikul', $artikul, SQLITE3_INTEGER);

$updateOstatki->execute();

}

if ($qty == 0 && $result['qty'] > 0) {

$ostatkiBuffer .= "Товар {$artikul} {$tovar} закончился, проверьте остатки!\n";

}

} else {

$insertOstatki->bindValue(':artikul', $artikul, SQLITE3_INTEGER);

$insertOstatki->bindValue(':tovar', $tovar, SQLITE3_TEXT);

$insertOstatki->bindValue(':qty', $qty, SQLITE3_INTEGER);

$insertOstatki->execute();

$ostatkiBuffer .= "Добавлен товар {$artikul} {$tovar} с остатком {$qty}.\n";

}

$deletePusto->bindValue(':artikul', $artikul, SQLITE3_INTEGER);

$deletePusto->execute();

} else {

$result = $db->querySingle("SELECT qty FROM pusto WHERE artikul = '$artikul'", true);

if (!$result) {

$insertPusto->bindValue(':artikul', $artikul, SQLITE3_INTEGER);

$insertPusto->bindValue(':tovar', $tovar, SQLITE3_TEXT);

$insertPusto->execute();

}

}

}

$db->exec("COMMIT");

file_put_contents($ostatkiFile, $ostatkiBuffer);

file_put_contents($pustoFile, $pustoBuffer);

$email = file_get_contents($emailFile);

$emailConfig = json_decode(file_get_contents($emailConfigFile), true);

maillogfile($email, $emailConfig['smtp_username'], $emailConfig['Name'], $emailConfig);

}

$endTime = microtime(true);

$executionTime = $endTime - $startTime;

echo "Время выполнения скрипта: " . round($executionTime, 2) . " секунд";

?>

Сам бы я такое на написал даже после обучение в полгода-год как мне кажется.. по сути тут работы с нейросетью мне на полдня ( хотя в итоге было три попытки- часа по два каждый раз)
Еще стоит учесть что и тех.задание переписывал ( это уже вторая версия глобально). В первый раз почти все получилось- но что-то пошло не так..и на второй день уже снова делал с нуля..и новое тех.задание ( другими словами). Первые запуски были тормозные- секунд по 20.. было переформулировано- сделай быстрей... Нейросеть давала советы- как сделать лучше- переписывала код.. В итоге обработка файла где 1000 товаров- происходит примерно за секунду.
Так то можно даже чему-то научиться если читать советы:-)
Вот и смотрите теперь- как вам такое? Может ли быть полезно? Всякие обработки эксель файлов на ура с кучей условий ( мне практические такое требуется). В итоге конечно на практических примерах лучше тренироваться- тогда можно научиться чему-то.. а если теоретически- даже и не знаю что у этого железного мозга спрашивать:-)
Были нюансы- на хостинге через планировщик не запускалось- были ошибки- спросил в чем дело- оно тоже дало совет, варианты из-за чего могла быть проблема.. так что пользы много))

Показать полностью
5

Писал тут как-то про домашние нейросети для программирования - все проще и интересней

Как-то писал про то, что чудеса, можно дома поставить нейросеть для программирования и т.д
Так вот, суета это всё.. предыдущий пост был удалён, так как были ссылки на эти сети, теперь их не будет ( посчитали рекламой, ха ха...серьезно?) Итак:

После того как есть китайский кит(deepseek) и Codestral (AI Mistral), которые программируют просто офигенно.. мной ( НЕ ПРОГРАММИСТОМ, а лишь сочуствующим), был доработан репрайсер для wildberries, был выполнен мини проект по синхронизации прайс с озона на wb, еще кое-какие доработки по API как wildberries, так к хостингу доступ через планировщик по API Одна из программ на python вообще просто чудовищна, интерфейс на QT ( скрин прилагается).
К чему это я? да к тому, что если есть практические задачи..и сопутствующий опыт ( хоть я не программист, но сайты конструировал, так что самый минимум понимаю), то процесс программирование будет идти очень офигенно. А иначе курсы учить не переучить((
И даже на kwork было выполнено задание и получен хороший отзыв.
А вообще, не планирую на этом зарабатывать ( хоть и получается), просто была детская мечта стать программистом, не для того чтобы работать, а для того чтобы программировать..и теперь да, в 48 лет мечта исполнилась. могу.
И не спрашивайте что делает программа на скрине, очень специализированная штука, скачивает отчеты по продажам с WB, преобразует в определенный текстовый формат, делает накладную в очень странном формате... сам почти не верю- что такое возможно, а всего лишь- надо было иметь опыт написания 100 тех.заданий за последние 20 лет, в таком не спешном режиме..
Если бы заказывал такую программу, думаю стоило бы не менее 20 000р, а тут 3-4 дня по нескольку часов в день- и вот пожалуйста..

Писал тут как-то про домашние нейросети для программирования - все проще и интересней Программирование, Питон, Python, Нейронные сети, Достижение, Мечта

Поскольку создана серия постой, то возможно напишу о чем-то еще в будущем.. Пока что 40 человек подписано на репрайсер и платят аб.плату по 3000р в месяц, вовсе кстати не благодаря навыкам в программировании, но про это не будем.. Тут же о программинге:-)

Показать полностью 1
374

Запустил дома нейросеть для программирования ( 60 языков!!)1

Буквально неделю назад вышла открытая нейросеть- модель именно заточенная под программирование ( поддерживает 60 языков). В этом видео на 2 минуты буквально показываю как банально устанавливается ( но нужен мощный компьютер, от 16GB оперативка как на основном процессоре, так и на графическом)
Отвечает пока на английском, хотя и все правильно, но понимает запросы ( задачи для программирования) на русском. Чудеса, иначе не сказать.
В интернете эта же сеть https://chat.mistral.ai/chat отвечает и на русском. Может на русском тоже пойму потом как сделать, но пока не понял. С другой стороны для начинающих программистов английский полезно изучать:)
Установка через эту программу https://lmstudio.ai/ и дальше грузится модель и всё.. по сути в два клика, не надо мучаться с пайтоном, вчера полдня пробовал по инструкции сделать, то одних библиотек не хватает, то других. Инструкция для пайтонистов вот тут https://huggingface.co/mistralai/Codestral-22B-v0.1

Для тех, кто адски ленив и невнимателен, и не хочет 2 минуты видео смотреть, посмотрите на последнюю ссылку, и выбирайте Codestral последний размером 15GB или 22GB, в видео это видно.

UPD:

На эту тему конечно разгорелись почти что жаркие споры в комментариях, но я то думал довольно очевидно, что если человек использует нейросеть для программирования он какие-то элементарные основы знает: что такое хостинг, ftp хотя бы на бейсике или турбо паскале в школе институте программировал ( как я).
Поэтому да, если вы совсем с нуля- то нужно какие-то основы получить, тогда может быть будет смысл для простых программ. У меня уровень крайне простой, программировать не умею, но основы знаю, поэтому например смог обновить на своих сайтах картинки, предварительно спарсив их из источника оригиналов и совместив артикулы, воспользовавшись определенным форматом экселя..
Звучит страшно и непонятно? Если да, то как бы не очень будет вам полезно..
Но научиться я думаю можно быстрей с помощью нейросетей. И плюс ошибаются они, некоторые программки я с 7й попытки писал, то есть делает- ошибка..я ей говорю- ошибка, она такая- исправляю..и так далее. Так что делайте выводы.

И кстати, был невнимателен, по ссылке в тексте где эта нейросеть запускается на сайте- по умолчанию стоит общая сеть, поэтому и отвечает на русском. Очень быстро. Если же там поставить Codestral ( посмотрите внимательно)- также по английски будет отвечать. Так что все как и было задумано:-)
Ах да, пришлось просить исправить скрипт на php написанный Codestral - потому что он начал тупить, хоть по кругу.. Copilot все исправил и всё заработало. Так что гибкость и хитрость тоже нужна. Всем успехов!

Показать полностью
Отличная работа, все прочитано!